diff --git a/.gitattributes b/.gitattributes index 6313b56c5..d3877a538 100644 --- a/.gitattributes +++ b/.gitattributes @@ -1 +1,2 @@ * text=auto eol=lf +*.svg binary diff --git a/.github/FUNDING.yml b/.github/FUNDING.yml new file mode 100644 index 000000000..490051876 --- /dev/null +++ b/.github/FUNDING.yml @@ -0,0 +1 @@ +github: iliakan diff --git a/.gitignore b/.gitignore index 6f90fd190..1a71fb7c8 100644 --- a/.gitignore +++ b/.gitignore @@ -21,3 +21,4 @@ sftp-config.json Thumbs.db +/svgs \ No newline at end of file diff --git a/1-js/01-getting-started/1-intro/article.md b/1-js/01-getting-started/1-intro/article.md index 727cf4ac3..8af048b43 100644 --- a/1-js/01-getting-started/1-intro/article.md +++ b/1-js/01-getting-started/1-intro/article.md @@ -1,12 +1,18 @@ # En introduksjon til JavaScript -Let's see what's so special about JavaScript, what we can achieve with it, and which other technologies play well with it. +Let's see what's so special about JavaScript, what we can achieve with it, and what other technologies play well with it. La oss se litt nærmere på hva som er så spesielt med JavaScript, hva vi kan oppnå ved å bruke det, og hvilke andre teknologier som passer godt sammen med det. +<<<<<<< HEAD ## Hva er JavaScript? *JavaScript* var egentlig ment for å *"gi hjemmesider mer liv"*. +======= +*JavaScript* was initially created to "make web pages alive". + +The programs in this language are called *scripts*. They can be written right in a web page's HTML and run automatically as the page loads. +>>>>>>> 540d753e90789205fc6e75c502f68382c87dea9b Programmer skrevet i JavaScript kalles for *scripts*. De kan skrives rett inn i en nettsides's HTML og kjører automatisk så fort siden blir lastet. @@ -14,8 +20,13 @@ Scripts er utdelt og kjørt som ren tekst. De trenger altså ingen forberedelser Med dette øyemed, er JavaScript veldig annerledes fra et annet språk kalt [Java](https://en.wikipedia.org/wiki/Java_(programming_language)). +<<<<<<< HEAD ```smart header="Why <u>Java</u>Script?" Når JavaScript ble skapt, hadde det i utgangspunktet navnet: "LiveScript". Men Java var veldig populært på den tiden, så det ble bestemt at å presentere et nytt programmeringsspråk som en "lillebror" til Java ville være en god ide. +======= +```smart header="Why is it called <u>Java</u>Script?" +When JavaScript was created, it initially had another name: "LiveScript". But Java was very popular at that time, so it was decided that positioning a new language as a "younger brother" of Java would help. +>>>>>>> 540d753e90789205fc6e75c502f68382c87dea9b Men etterhvert som det utviklet seg ble JavaScript et helt uavhengig programmeringsspårk med sitt eget sett med spesifikasjoner kalt [ECMAScript](http://en.wikipedia.org/wiki/ECMAScript), og nå har det ingenting med Java å gjøre i det hele tatt. ``` @@ -27,27 +38,47 @@ Nettleseren har en innebygget motor som noenganger blir kalt for en "JavaScript Different engines have different "codenames". For example: Det finnes flere forskjellige motorer som har skilles fra hverandre med forskjellige "kodenavn". For eksempel: +<<<<<<< HEAD - [V8](https://en.wikipedia.org/wiki/V8_(JavaScript_engine)) -- i Chrome og Opera. - [SpiderMonkey](https://en.wikipedia.org/wiki/SpiderMonkey) -- i Firefox. - ...Det er også andre kodenavn som "Trident" og "Chakra" for forskjellige versjoner av IE, "ChakraCore" for Microsoft Edge, "Nitro" og "SquirrelFish" for Safari, osv. Begrepene ovenfor er gode å huske fordi de ofte brukt i artikler skrevet av utviklere på nettet. Vi vil bruke de også. For eksempel, hvis "en funksjon x er støttet av v8", vil den sannsynlig fungere i Chrome og Opera. +======= +- [V8](https://en.wikipedia.org/wiki/V8_(JavaScript_engine)) -- in Chrome, Opera and Edge. +- [SpiderMonkey](https://en.wikipedia.org/wiki/SpiderMonkey) -- in Firefox. +- ...There are other codenames like "Chakra" for IE, "JavaScriptCore", "Nitro" and "SquirrelFish" for Safari, etc. + +The terms above are good to remember because they are used in developer articles on the internet. We'll use them too. For instance, if "a feature X is supported by V8", then it probably works in Chrome, Opera and Edge. +>>>>>>> 540d753e90789205fc6e75c502f68382c87dea9b ```smart header="How do engines work?" Motorer er kompliserte. Men det grunnleggende er ganske lett. +<<<<<<< HEAD 1. Motoren (Innebygd hvis det er en nettleser) leser ("parser") scriptet. 2. Så konverterer den ("kompilerer") scriptet til maskin språk 3. Og så kjører maskin koden, veldig raskt. Motoren tar ibruk optimaliseringer til hver eneste steg i prosessen. Passer til og med på det kompilerte scriptet imens det kjører, analyserer data som flyter gjennom det, og legger så til optimaliseringer til maskin koden basert på denne kunnskapen. Når dette gjøres, kjører scripts rimelig fort. +======= +1. The engine (embedded if it's a browser) reads ("parses") the script. +2. Then it converts ("compiles") the script to machine code. +3. And then the machine code runs, pretty fast. + +The engine applies optimizations at each step of the process. It even watches the compiled script as it runs, analyzes the data that flows through it, and further optimizes the machine code based on that knowledge. +>>>>>>> 540d753e90789205fc6e75c502f68382c87dea9b ``` ## Hva kan JavaScript gjøre i nettleseren? +<<<<<<< HEAD Moderne JavaScript er et "trygt" programmeringsspråk. Det gir ikke lavniå tilgang til minne eller CPU, fordi det i utgangspunktet var laget for nettlesere som ikke krever det. +======= +Modern JavaScript is a "safe" programming language. It does not provide low-level access to memory or the CPU, because it was initially created for browsers which do not require it. +>>>>>>> 540d753e90789205fc6e75c502f68382c87dea9b JavaScript's evber er sterkt avhengig av miljøet det kjører i. For eksempel, [Node.js](https://wikipedia.org/wiki/Node.js) støtter funksjoner som lar JavaScript lese/skrive vilkårlig, gjennomføre nettverksforespørsler, osv. @@ -63,14 +94,23 @@ For eksempel, i-nettleser JavaScript er i stand til å: ## Hva KAN IKKE JavaScript gjøre i nettleseren? +<<<<<<< HEAD JavaScript's egenskaper i nettleseren er begrensede på vegne av brukeren trygghet. Dette er ment for å hindre nettsider med onde hensikter fra å aksessere informasjon eller ramme brukerens data på noen som helst måte. +======= +JavaScript's abilities in the browser are limited to protect the user's safety. The aim is to prevent an evil webpage from accessing private information or harming the user's data. +>>>>>>> 540d753e90789205fc6e75c502f68382c87dea9b Eksempler på slike begrensninger inkluderer: +<<<<<<< HEAD - JavaScript på en nettside kan ikke lese/skrive vilkårlige filer på en harddisk, kopiere eller kjøre programmer. Det har ingen direkte tilgang til funksjoner som er tilknyttet operativsystemet (OS). +======= +- JavaScript on a webpage may not read/write arbitrary files on the hard disk, copy them or execute programs. It has no direct access to OS functions. +>>>>>>> 540d753e90789205fc6e75c502f68382c87dea9b Moderne nettlesere tillater det til å behandle filer, men denne adgangen er begrenset og kun gitt hvis brukeren gjennomfører utvalgte hendelser, som å "slippe" en fil over et nettleservindu eller velger det via en `<input>` tag. +<<<<<<< HEAD Det finnes måter å interragere med kamera og mikrofon og andre enheter, men disse krever at brukeren gir eksplisitt tillatelse. Så en JavaScript-akrivert side kan ikke på en lumsk måte aktivere webkameraet, se seg rundt og sende informasjonen om dette til [PST](https://no.wikipedia.org/wiki/Politiets_sikkerhetstjeneste). - Forskjellige paneler/vinduer i en nettleser vet i utgangspunktet ingenting om hverandre. Noenganger gjør de det, for eksempel når et vindu bruker JavaScript til å åpne et annet vindu. Men selv i dette tilfellet, JavaScript fra en side til en kan ikke aksessere et annet vindu hvis det kommer fra forskjellige sider (fra et annet domene, protokoll eller port). @@ -80,6 +120,19 @@ Eksempler på slike begrensninger inkluderer: Denne begrensningen er, igjen satt på plass med brukerens trygghet i tankene. En side fra `http://hvilkensomhelstside.no` som en bruker har åpnet kan overhodet ikke være i stand til å aksessere et annet panel med URL'en `http://gmail.com` og stjele informasjon derfra. - JavaScript kan med letthet kommunisere med en tjener over nettet hvor den nåværende siden kom fra. Men dets egenskap til å motta data fra andre sider/domener er veldig tungvint, men det er mulig, dette krever eksplisitt tillatelse (uttrykt via HTTP headere) fra den eksterne siden. Igjen, dette er sikkerhetsbegrensning. +======= + There are ways to interact with the camera/microphone and other devices, but they require a user's explicit permission. So a JavaScript-enabled page may not sneakily enable a web-camera, observe the surroundings and send the information to the [NSA](https://en.wikipedia.org/wiki/National_Security_Agency). +- Different tabs/windows generally do not know about each other. Sometimes they do, for example when one window uses JavaScript to open the other one. But even in this case, JavaScript from one page may not access the other page if they come from different sites (from a different domain, protocol or port). + + This is called the "Same Origin Policy". To work around that, *both pages* must agree for data exchange and must contain special JavaScript code that handles it. We'll cover that in the tutorial. + + This limitation is, again, for the user's safety. A page from `http://anysite.com` which a user has opened must not be able to access another browser tab with the URL `http://gmail.com`, for example, and steal information from there. +- JavaScript can easily communicate over the net to the server where the current page came from. But its ability to receive data from other sites/domains is crippled. Though possible, it requires explicit agreement (expressed in HTTP headers) from the remote side. Once again, that's a safety limitation. + + + +Such limitations do not exist if JavaScript is used outside of the browser, for example on a server. Modern browsers also allow plugins/extensions which may ask for extended permissions. +>>>>>>> 540d753e90789205fc6e75c502f68382c87dea9b  @@ -90,17 +143,27 @@ Slike begrensninger eksisterer ikke hvis JavaScript brukes på utsiden av nettle Dette er de *tre* minst gode ting om JavaScript: ```compare +<<<<<<< HEAD + Full integrasjon med HTML/CSS. + Enkle ting kan gjøres på en enkel måte. + Støttet av alle de største nettleserne og er påslått som standard. +======= ++ Full integration with HTML/CSS. ++ Simple things are done simply. ++ Supported by all major browsers and enabled by default. +>>>>>>> 540d753e90789205fc6e75c502f68382c87dea9b ``` JavaScript er den eneste nettleser teknologien som kombinerer disse tre tingene. Dette er det som gjør JavaScript unikt. Dette er grunnen til at JavaScript er det mest utstrakte verktøyet for utvikling av grensesnitt i nettleseren. +<<<<<<< HEAD Imens du har planer om å lære deg en teknologi, er det gunstig å sjekke dens perspektiver. Så la oss fortsette til de moderne trendene som påvirker den, inkluderende nye språk og ny nettleser-funksjonalitet. ## Språk "via" JavaScript +======= +That said, JavaScript can be used to create servers, mobile applications, etc. +>>>>>>> 540d753e90789205fc6e75c502f68382c87dea9b JavaScript's syntax er tilpasset alle sitt behov. Forskjellige folk trenger forskjellige funksjoner. @@ -108,7 +171,11 @@ Dette er ikke overraskende, siden forskjellige prosjekter har forskjellige krav. En haug av nye språk har nylig dukket opp, som er *transpilert* (konvertert) til JavaScript før de kjører i nettleseren. +<<<<<<< HEAD Moderne verktøy gjør transpileringen veldig rask og forutsigbar, faktisk så lar dette utviklere å skrive kode på et annet språk som blir automatisk konvertert "under panseret". +======= +So, recently a plethora of new languages appeared, which are *transpiled* (converted) to JavaScript before they run in the browser. +>>>>>>> 540d753e90789205fc6e75c502f68382c87dea9b Dette er eksempler på slike språk: @@ -116,11 +183,28 @@ Dette er eksempler på slike språk: - [TypeScript](http://www.typescriptlang.org/) er konsentrert rundt å legge til "streng datatyping" for å gjøre utvikling og drifting av komplekse systemer lettere. TypeScript er utviklet av Microsoft. - [Dart](https://www.dartlang.org/) er et selvstendig språk som har sin egen motor som kjører ukjente miljøer for nettleseren (som mobilapplikasjoner). Det var i utgangspunktet lagt frem av Google som en erstatter for JavaScript, men foreløpig krever nettlesere at Dart transpileres til JavaScript akkurat som de andre nevnt ovenfor. +<<<<<<< HEAD Det finnes flere selvfølgelig. Men selv om vi bruker noen av disse språkene, er det lurt av oss å kjenne JavaScript for å vite hva vi egentlig driver med. +======= +- [CoffeeScript](https://coffeescript.org/) is "syntactic sugar" for JavaScript. It introduces shorter syntax, allowing us to write clearer and more precise code. Usually, Ruby devs like it. +- [TypeScript](https://www.typescriptlang.org/) is concentrated on adding "strict data typing" to simplify the development and support of complex systems. It is developed by Microsoft. +- [Flow](https://flow.org/) also adds data typing, but in a different way. Developed by Facebook. +- [Dart](https://www.dartlang.org/) is a standalone language that has its own engine that runs in non-browser environments (like mobile apps), but also can be transpiled to JavaScript. Developed by Google. +- [Brython](https://brython.info/) is a Python transpiler to JavaScript that enables the writing of applications in pure Python without JavaScript. +- [Kotlin](https://kotlinlang.org/docs/reference/js-overview.html) is a modern, concise and safe programming language that can target the browser or Node. + +There are more. Of course, even if we use one of these transpiled languages, we should also know JavaScript to really understand what we're doing. +>>>>>>> 540d753e90789205fc6e75c502f68382c87dea9b ## Summary ## Oppsummering +<<<<<<< HEAD - JavaScript var i utgangspunktet skapt som et kun-nettleser språk, men finnes også i mange andre miljøer i tillegg. - Idag, har JavaScript en unik position som det mest brukt nettleser språket med full integrasjon mot HTML/CSS. - Det finnes mange språk som blir "transpilert" til JavaScript og som gir utvalgte funksjoner. Det er anbefalt å ta en kikk på de, ihvertfall ganske kort, etter at du mestrer JavaScript. +======= +- JavaScript was initially created as a browser-only language, but it is now used in many other environments as well. +- Today, JavaScript has a unique position as the most widely-adopted browser language, fully integrated with HTML/CSS. +- There are many languages that get "transpiled" to JavaScript and provide certain features. It is recommended to take a look at them, at least briefly, after mastering JavaScript. +>>>>>>> 540d753e90789205fc6e75c502f68382c87dea9b diff --git a/1-js/01-getting-started/2-manuals-specifications/article.md b/1-js/01-getting-started/2-manuals-specifications/article.md new file mode 100644 index 000000000..3fa243336 --- /dev/null +++ b/1-js/01-getting-started/2-manuals-specifications/article.md @@ -0,0 +1,37 @@ + +# Manuals and specifications + +This book is a *tutorial*. It aims to help you gradually learn the language. But once you're familiar with the basics, you'll need other resources. + +## Specification + +[The ECMA-262 specification](https://www.ecma-international.org/publications/standards/Ecma-262.htm) contains the most in-depth, detailed and formalized information about JavaScript. It defines the language. + +But being that formalized, it's difficult to understand at first. So if you need the most trustworthy source of information about the language details, the specification is the right place. But it's not for everyday use. + +A new specification version is released every year. Between these releases, the latest specification draft is at <https://tc39.es/ecma262/>. + +To read about new bleeding-edge features, including those that are "almost standard" (so-called "stage 3"), see proposals at <https://github.com/tc39/proposals>. + +Also, if you're developing for the browser, then there are other specifications covered in the [second part](info:browser-environment) of the tutorial. + +## Manuals + +- **MDN (Mozilla) JavaScript Reference** is the main manual with examples and other information. It's great to get in-depth information about individual language functions, methods etc. + + You can find it at <https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference>. + +Although, it's often best to use an internet search instead. Just use "MDN [term]" in the query, e.g. <https://google.com/search?q=MDN+parseInt> to search for the `parseInt` function. + +## Compatibility tables + +JavaScript is a developing language, new features get added regularly. + +To see their support among browser-based and other engines, see: + +- <https://caniuse.com> - per-feature tables of support, e.g. to see which engines support modern cryptography functions: <https://caniuse.com/#feat=cryptography>. +- <https://kangax.github.io/compat-table> - a table with language features and engines that support those or don't support. + +All these resources are useful in real-life development, as they contain valuable information about language details, their support, etc. + +Please remember them (or this page) for the cases when you need in-depth information about a particular feature. diff --git a/1-js/01-getting-started/2-code-editors/article.md b/1-js/01-getting-started/3-code-editors/article.md similarity index 60% rename from 1-js/01-getting-started/2-code-editors/article.md rename to 1-js/01-getting-started/3-code-editors/article.md index d36561bc6..ca6194741 100644 --- a/1-js/01-getting-started/2-code-editors/article.md +++ b/1-js/01-getting-started/3-code-editors/article.md @@ -12,14 +12,12 @@ An IDE loads the project (which can be many files), allows navigation between fi If you haven't selected an IDE yet, consider the following options: -- [WebStorm](http://www.jetbrains.com/webstorm/) for frontend development. The same company offers other editors for other languages (paid). -- [Netbeans](http://netbeans.org/) (free). +- [Visual Studio Code](https://code.visualstudio.com/) (cross-platform, free). +- [WebStorm](https://www.jetbrains.com/webstorm/) (cross-platform, paid). -All of these IDEs are cross-platform. +For Windows, there's also "Visual Studio", not to be confused with "Visual Studio Code". "Visual Studio" is a paid and mighty Windows-only editor, well-suited for the .NET platform. It's also good at JavaScript. There's also a free version [Visual Studio Community](https://www.visualstudio.com/vs/community/). -For Windows, there's also "Visual Studio", not to be confused with "Visual Studio Code." "Visual Studio" is a paid and mighty Windows-only editor, well-suited for the .NET platform. A free version of it is called [Visual Studio Community](https://www.visualstudio.com/vs/community/). - -Many IDEs are paid but have a trial period. Their cost is usually negligible compared to a qualified developer's salary, so just choose the best one for you. +Many IDEs are paid, but have a trial period. Their cost is usually negligible compared to a qualified developer's salary, so just choose the best one for you. ## Lightweight editors @@ -31,22 +29,11 @@ The main difference between a "lightweight editor" and an "IDE" is that an IDE w In practice, lightweight editors may have a lot of plugins including directory-level syntax analyzers and autocompleters, so there's no strict border between a lightweight editor and an IDE. -The following options deserve your attention: +There are many options, for instance: -- [Visual Studio Code](https://code.visualstudio.com/) (cross-platform, free) also has many IDE-like features. -- [Atom](https://atom.io/) (cross-platform, free). -- [Sublime Text](http://www.sublimetext.com) (cross-platform, shareware). +- [Sublime Text](https://www.sublimetext.com/) (cross-platform, shareware). - [Notepad++](https://notepad-plus-plus.org/) (Windows, free). -- [Vim](http://www.vim.org/) and [Emacs](https://www.gnu.org/software/emacs/) are also cool if you know how to use them. - -## My favorites - -The personal preference of the author is to have both an IDE for projects and a lightweight editor for quick and easy file editing. - -I'm using: - -- As an IDE for JS -- [WebStorm](http://www.jetbrains.com/webstorm/) (I switch to one of the other JetBrains offerings when using other languages) -- As a lightweight editor -- [Sublime Text](http://www.sublimetext.com) or [Atom](https://atom.io/). +- [Vim](https://www.vim.org/) and [Emacs](https://www.gnu.org/software/emacs/) are also cool if you know how to use them. ## Let's not argue @@ -55,3 +42,8 @@ The editors in the lists above are those that either I or my friends whom I cons There are other great editors in our big world. Please choose the one you like the most. The choice of an editor, like any other tool, is individual and depends on your projects, habits, and personal preferences. + +The author's personal opinion: + +- I'd use [Visual Studio Code](https://code.visualstudio.com/) if I develop mostly frontend. +- Otherwise, if it's mostly another language/platform and partially frontend, then consider other editors, such as XCode (Mac), Visual Studio (Windows) or Jetbrains family (Webstorm, PHPStorm, RubyMine etc, depending on the language). diff --git a/1-js/01-getting-started/3-devtools/chrome.png b/1-js/01-getting-started/3-devtools/chrome.png deleted file mode 100644 index 4cb3ea2f4..000000000 Binary files a/1-js/01-getting-started/3-devtools/chrome.png and /dev/null differ diff --git a/1-js/01-getting-started/3-devtools/chrome@2x.png b/1-js/01-getting-started/3-devtools/chrome@2x.png deleted file mode 100644 index b87404a8f..000000000 Binary files a/1-js/01-getting-started/3-devtools/chrome@2x.png and /dev/null differ diff --git a/1-js/01-getting-started/3-devtools/safari.png b/1-js/01-getting-started/3-devtools/safari.png deleted file mode 100644 index 37598a261..000000000 Binary files a/1-js/01-getting-started/3-devtools/safari.png and /dev/null differ diff --git a/1-js/01-getting-started/3-devtools/safari@2x.png b/1-js/01-getting-started/3-devtools/safari@2x.png deleted file mode 100644 index c59cebef2..000000000 Binary files a/1-js/01-getting-started/3-devtools/safari@2x.png and /dev/null differ diff --git a/1-js/01-getting-started/3-devtools/article.md b/1-js/01-getting-started/4-devtools/article.md similarity index 91% rename from 1-js/01-getting-started/3-devtools/article.md rename to 1-js/01-getting-started/4-devtools/article.md index ae5b3845d..bbe8af920 100644 --- a/1-js/01-getting-started/3-devtools/article.md +++ b/1-js/01-getting-started/4-devtools/article.md @@ -22,17 +22,22 @@ The developer tools will open on the Console tab by default. It looks somewhat like this: - + The exact look of developer tools depends on your version of Chrome. It changes from time to time but should be similar. - Here we can see the red-colored error message. In this case, the script contains an unknown "lalala" command. - On the right, there is a clickable link to the source `bug.html:12` with the line number where the error has occurred. -Below the error message, there is a blue `>` symbol. It marks a "command line" where we can type JavaScript commands. Press `key:Enter` to run them (`key:Shift+Enter` to input multi-line commands). +Below the error message, there is a blue `>` symbol. It marks a "command line" where we can type JavaScript commands. Press `key:Enter` to run them. Now we can see errors, and that's enough for a start. We'll come back to developer tools later and cover debugging more in-depth in the chapter <info:debugging-chrome>. +```smart header="Multi-line input" +Usually, when we put a line of code into the console, and then press `key:Enter`, it executes. + +To insert multiple lines, press `key:Shift+Enter`. This way one can enter long fragments of JavaScript code. +``` ## Firefox, Edge, and others @@ -44,18 +49,12 @@ The look & feel of them is quite similar. Once you know how to use one of these Safari (Mac browser, not supported by Windows/Linux) is a little bit special here. We need to enable the "Develop menu" first. -Open Preferences and go to the "Advanced" pane. There's a checkbox at the bottom: +Open Settings and go to the "Advanced" pane. There's a checkbox at the bottom:  Now `key:Cmd+Opt+C` can toggle the console. Also, note that the new top menu item named "Develop" has appeared. It has many commands and options. -## Multi-line input - -Usually, when we put a line of code into the console, and then press `key:Enter`, it executes. - -To insert multiple lines, press `key:Shift+Enter`. - ## Summary - Developer tools allow us to see errors, run commands, examine variables, and much more. diff --git a/1-js/01-getting-started/3-devtools/bug.html b/1-js/01-getting-started/4-devtools/bug.html similarity index 100% rename from 1-js/01-getting-started/3-devtools/bug.html rename to 1-js/01-getting-started/4-devtools/bug.html diff --git a/1-js/01-getting-started/4-devtools/chrome.webp b/1-js/01-getting-started/4-devtools/chrome.webp new file mode 100644 index 000000000..bdf067079 Binary files /dev/null and b/1-js/01-getting-started/4-devtools/chrome.webp differ diff --git a/1-js/01-getting-started/4-devtools/chrome@2.webp b/1-js/01-getting-started/4-devtools/chrome@2.webp new file mode 100644 index 000000000..2aeca5898 Binary files /dev/null and b/1-js/01-getting-started/4-devtools/chrome@2.webp differ diff --git a/1-js/01-getting-started/4-devtools/safari.png b/1-js/01-getting-started/4-devtools/safari.png new file mode 100644 index 000000000..4538827eb Binary files /dev/null and b/1-js/01-getting-started/4-devtools/safari.png differ diff --git a/1-js/01-getting-started/4-devtools/safari@2x.png b/1-js/01-getting-started/4-devtools/safari@2x.png new file mode 100644 index 000000000..1561b2bd9 Binary files /dev/null and b/1-js/01-getting-started/4-devtools/safari@2x.png differ diff --git a/1-js/02-first-steps/01-hello-world/1-hello-alert/index.html b/1-js/02-first-steps/01-hello-world/1-hello-alert/index.html new file mode 100644 index 000000000..ff1d871b0 --- /dev/null +++ b/1-js/02-first-steps/01-hello-world/1-hello-alert/index.html @@ -0,0 +1,12 @@ +<!DOCTYPE html> +<html> + +<body> + + <script> + alert( "I'm JavaScript!" ); + </script> + +</body> + +</html> diff --git a/1-js/02-first-steps/01-hello-world/1-hello-alert/solution.md b/1-js/02-first-steps/01-hello-world/1-hello-alert/solution.md index e69de29bb..81552913b 100644 --- a/1-js/02-first-steps/01-hello-world/1-hello-alert/solution.md +++ b/1-js/02-first-steps/01-hello-world/1-hello-alert/solution.md @@ -0,0 +1,2 @@ + +[html src="index.html"] diff --git a/1-js/02-first-steps/01-hello-world/article.md b/1-js/02-first-steps/01-hello-world/article.md index d96ffd76f..35f82bf5d 100644 --- a/1-js/02-first-steps/01-hello-world/article.md +++ b/1-js/02-first-steps/01-hello-world/article.md @@ -1,6 +1,6 @@ # Hello, world! -The tutorial that you're reading is about core JavaScript, which is platform-independent. Later on, you'll learn about Node.js and other platforms that use it. +This part of the tutorial is about core JavaScript, the language itself. But we need a working environment to run our scripts and, since this book is online, the browser is a good choice. We'll keep the amount of browser-specific commands (like `alert`) to a minimum so that you don't spend time on them if you plan to concentrate on another environment (like Node.js). We'll focus on JavaScript in the browser in the [next part](/ui) of the tutorial. @@ -9,7 +9,7 @@ So first, let's see how we attach a script to a webpage. For server-side environ ## The "script" tag -JavaScript programs can be inserted into any part of an HTML document with the help of the `<script>` tag. +JavaScript programs can be inserted almost anywhere into an HTML document using the `<script>` tag. For instance: @@ -46,7 +46,7 @@ The `<script>` tag contains JavaScript code which is automatically executed when The `<script>` tag has a few attributes that are rarely used nowadays but can still be found in old code: The `type` attribute: <code><script <u>type</u>=...></code> -: The old HTML standard, HTML4, required a script to have a `type`. Usually it was `type="text/javascript"`. It's not required anymore. Also, the modern HTML standard, HTML5, totally changed the meaning of this attribute. Now, it can be used for JavaScript modules. But that's an advanced topic; we'll talk about modules in another part of the tutorial. +: The old HTML standard, HTML4, required a script to have a `type`. Usually it was `type="text/javascript"`. It's not required anymore. Also, the modern HTML standard totally changed the meaning of this attribute. Now, it can be used for JavaScript modules. But that's an advanced topic, we'll talk about modules in another part of the tutorial. The `language` attribute: <code><script <u>language</u>=...></code> : This attribute was meant to show the language of the script. This attribute no longer makes sense because JavaScript is the default language. There is no need to use it. @@ -60,7 +60,7 @@ Comments before and after scripts. //--></script> ``` - This trick isn't used in modern JavaScript. These comments hid JavaScript code from old browsers that didn't know how to process the `<script>` tag. Since browsers released in the last 15 years don't have this issue, this kind of comment can help you identify really old code. + This trick isn't used in modern JavaScript. These comments hide JavaScript code from old browsers that didn't know how to process the `<script>` tag. Since browsers released in the last 15 years don't have this issue, this kind of comment can help you identify really old code. ## External scripts @@ -73,14 +73,12 @@ Script files are attached to HTML with the `src` attribute: <script src="/path/to/script.js"></script> ``` -Here, `/path/to/script.js` is an absolute path to the script file (from the site root). - -You can also provide a relative path from the current page. For instance, `src="script.js"` would mean a file `"script.js"` in the current folder. +Here, `/path/to/script.js` is an absolute path to the script from the site root. One can also provide a relative path from the current page. For instance, `src="script.js"`, just like `src="./script.js"`, would mean a file `"script.js"` in the current folder. We can give a full URL as well. For instance: ```html -<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/3.2.0/lodash.js"></script> +<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.11/lodash.js"></script> ``` To attach several scripts, use multiple tags: diff --git a/1-js/02-first-steps/02-structure/article.md b/1-js/02-first-steps/02-structure/article.md index b18aab19e..e81fd343d 100644 --- a/1-js/02-first-steps/02-structure/article.md +++ b/1-js/02-first-steps/02-structure/article.md @@ -46,7 +46,7 @@ alert(3 + + 2); ``` -The code outputs `6` because JavaScript does not insert semicolons here. It is intuitively obvious that if the line ends with a plus `"+"`, then it is an "incomplete expression", so the semicolon is not required. And in this case that works as intended. +The code outputs `6` because JavaScript does not insert semicolons here. It is intuitively obvious that if the line ends with a plus `"+"`, then it is an "incomplete expression", so a semicolon there would be incorrect. And in this case, that works as intended. **But there are situations where JavaScript "fails" to assume a semicolon where it is really needed.** @@ -56,45 +56,41 @@ Errors which occur in such cases are quite hard to find and fix. If you're curious to see a concrete example of such an error, check this code out: ```js run -[1, 2].forEach(alert) +alert("Hello"); + +[1, 2].forEach(alert); ``` -No need to think about the meaning of the brackets `[]` and `forEach` yet. We'll study them later. For now, just remember the result of the code: it shows `1` then `2`. +No need to think about the meaning of the brackets `[]` and `forEach` yet. We'll study them later. For now, just remember the result of running the code: it shows `Hello`, then `1`, then `2`. -Now, let's add an `alert` before the code and *not* finish it with a semicolon: +Now let's remove the semicolon after the `alert`: ```js run no-beautify -alert("There will be an error") +alert("Hello") -[1, 2].forEach(alert) +[1, 2].forEach(alert); ``` -Now if we run the code, only the first `alert` is shown and then we have an error! - -But everything is fine again if we add a semicolon after `alert`: -```js run -alert("All fine now"); +The difference compared to the code above is only one character: the semicolon at the end of the first line is gone. -[1, 2].forEach(alert) -``` +If we run this code, only the first `Hello` shows (and there's an error, you may need to open the console to see it). There are no numbers any more. -Now we have the "All fine now" message followed by `1` and `2`. +That's because JavaScript does not assume a semicolon before square brackets `[...]`. So, the code in the last example is treated as a single statement. - -The error in the no-semicolon variant occurs because JavaScript does not assume a semicolon before square brackets `[...]`. - -So, because the semicolon is not auto-inserted, the code in the first example is treated as a single statement. Here's how the engine sees it: +Here's how the engine sees it: ```js run no-beautify -alert("There will be an error")[1, 2].forEach(alert) +alert("Hello")[1, 2].forEach(alert); ``` -But it should be two separate statements, not one. Such a merging in this case is just wrong, hence the error. This can happen in other situations. +Looks weird, right? Such merging in this case is just wrong. We need to put a semicolon after `alert` for the code to work correctly. + +This can happen in other situations also. ```` We recommend putting semicolons between statements even if they are separated by newlines. This rule is widely adopted by the community. Let's note once again -- *it is possible* to leave out semicolons most of the time. But it's safer -- especially for a beginner -- to use them. -## Comments +## Comments [#code-comments] As time goes on, programs become more and more complex. It becomes necessary to add *comments* which describe what the code does and why. @@ -136,7 +132,7 @@ alert('World'); ``` ```smart header="Use hotkeys!" -In most editors, a line of code can be commented out by pressing the `key:Ctrl+/` hotkey for a single-line comment and something like `key:Ctrl+Shift+/` -- for multiline comments (select a piece of code and press the hotkey). For Mac, try `key:Cmd` instead of `key:Ctrl`. +In most editors, a line of code can be commented out by pressing the `key:Ctrl+/` hotkey for a single-line comment and something like `key:Ctrl+Shift+/` -- for multiline comments (select a piece of code and press the hotkey). For Mac, try `key:Cmd` instead of `key:Ctrl` and `key:Option` instead of `key:Shift`. ``` ````warn header="Nested comments are not supported!" diff --git a/1-js/02-first-steps/03-strict-mode/article.md b/1-js/02-first-steps/03-strict-mode/article.md index 0aab06893..9586733cc 100644 --- a/1-js/02-first-steps/03-strict-mode/article.md +++ b/1-js/02-first-steps/03-strict-mode/article.md @@ -4,7 +4,7 @@ For a long time, JavaScript evolved without compatibility issues. New features w That had the benefit of never breaking existing code. But the downside was that any mistake or an imperfect decision made by JavaScript's creators got stuck in the language forever. -This was the case until 2009 when ECMAScript 5 (ES5) appeared. It added new features to the language and modified some of the existing ones. To keep the old code working, most modifications are off by default. You need to explicitly enable them with a special directive: `"use strict"`. +This was the case until 2009 when ECMAScript 5 (ES5) appeared. It added new features to the language and modified some of the existing ones. To keep the old code working, most such modifications are off by default. You need to explicitly enable them with a special directive: `"use strict"`. ## "use strict" @@ -19,10 +19,7 @@ For example: ... ``` -We will learn functions (a way to group commands) soon. - -Looking ahead, let's just note that `"use strict"` can be put at the start of most kinds of functions instead of the whole script. Doing that enables strict mode in that function only. But usually, people use it for the whole script. - +Quite soon we're going to learn functions (a way to group commands), so let's note in advance that `"use strict"` can be put at the beginning of a function. Doing that enables strict mode in that function only. But usually people use it for the whole script. ````warn header="Ensure that \"use strict\" is at the top" Please make sure that `"use strict"` is at the top of your scripts, otherwise strict mode may not be enabled. @@ -44,36 +41,49 @@ Only comments may appear above `"use strict"`. ```warn header="There's no way to cancel `use strict`" There is no directive like `"no use strict"` that reverts the engine to old behavior. -Once we enter strict mode, there's no return. +Once we enter strict mode, there's no going back. ``` ## Browser console -For the future, when you use a browser console to test features, please note that it doesn't `use strict` by default. +When you use a [developer console](info:devtools) to run code, please note that it doesn't `use strict` by default. Sometimes, when `use strict` makes a difference, you'll get incorrect results. -Even if we press `key:Shift+Enter` to input multiple lines, and put `use strict` on top, it doesn't work. That's because of how the console executes the code internally. +So, how to actually `use strict` in the console? + +First, you can try to press `key:Shift+Enter` to input multiple lines, and put `use strict` on top, like this: + +```js +'use strict'; <Shift+Enter for a newline> +// ...your code +<Enter to run> +``` + +It works in most browsers, namely Firefox and Chrome. -The reliable way to ensure `use strict` would be to input the code into console like this: +If it doesn't, e.g. in an old browser, there's an ugly, but reliable way to ensure `use strict`. Put it inside this kind of wrapper: ```js (function() { 'use strict'; - // ...your code... + // ...your code here... })() ``` -## Always "use strict" +## Should we "use strict"? + +The question may sound obvious, but it's not so. + +One could recommend to start scripts with `"use strict"`... But you know what's cool? + +Modern JavaScript supports "classes" and "modules" - advanced language structures (we'll surely get to them), that enable `use strict` automatically. So we don't need to add the `"use strict"` directive, if we use them. -We have yet to cover the differences between strict mode and the "default" mode. +**So, for now `"use strict";` is a welcome guest at the top of your scripts. Later, when your code is all in classes and modules, you may omit it.** -In the next chapters, as we learn language features, we'll note the differences between the strict and default modes. Luckily, there aren't many and they actually make our lives better. +As of now, we've got to know about `use strict` in general. -For now, it's enough to know about it in general: +In the next chapters, as we learn language features, we'll see the differences between the strict and old modes. Luckily, there aren't many and they actually make our lives better. -1. The `"use strict"` directive switches the engine to the "modern" mode, changing the behavior of some built-in features. We'll see the details later in the tutorial. -2. Strict mode is enabled by placing `"use strict"` at the top of a script or function. Several language features, like "classes" and "modules", enable strict mode automatically. -3. Strict mode is supported by all modern browsers. -4. We recommended always starting scripts with `"use strict"`. All examples in this tutorial assume strict mode unless (very rarely) specified otherwise. +All examples in this tutorial assume strict mode unless (very rarely) specified otherwise. diff --git a/1-js/02-first-steps/04-variables/2-declare-variables/solution.md b/1-js/02-first-steps/04-variables/2-declare-variables/solution.md index 9ffc3efca..392f4e26f 100644 --- a/1-js/02-first-steps/04-variables/2-declare-variables/solution.md +++ b/1-js/02-first-steps/04-variables/2-declare-variables/solution.md @@ -1,4 +1,4 @@ -First, the variable for the name of our planet. +## The variable for our planet That's simple: @@ -6,9 +6,9 @@ That's simple: let ourPlanetName = "Earth"; ``` -Note, we could use a shorter name `planet`, but it might be not obvious what planet it refers to. It's nice to be more verbose. At least until the variable isNotTooLong. +Note, we could use a shorter name `planet`, but it might not be obvious what planet it refers to. It's nice to be more verbose. At least until the variable isNotTooLong. -Second, the name of the current visitor: +## The name of the current visitor ```js let currentUserName = "John"; diff --git a/1-js/02-first-steps/04-variables/3-uppercast-constant/solution.md b/1-js/02-first-steps/04-variables/3-uppercast-constant/solution.md index f3a96c692..acd643fde 100644 --- a/1-js/02-first-steps/04-variables/3-uppercast-constant/solution.md +++ b/1-js/02-first-steps/04-variables/3-uppercast-constant/solution.md @@ -2,4 +2,4 @@ We generally use upper case for constants that are "hard-coded". Or, in other wo In this code, `birthday` is exactly like that. So we could use the upper case for it. -In contrast, `age` is evaluated in run-time. Today we have one age, a year after we'll have another one. It is constant in a sense that it does not change through the code execution. But it is a bit "less of a constant" than `birthday`, it is calculated, so we should keep the lower case for it. \ No newline at end of file +In contrast, `age` is evaluated in run-time. Today we have one age, a year after we'll have another one. It is constant in a sense that it does not change through the code execution. But it is a bit "less of a constant" than `birthday`: it is calculated, so we should keep the lower case for it. diff --git a/1-js/02-first-steps/04-variables/3-uppercast-constant/task.md b/1-js/02-first-steps/04-variables/3-uppercast-constant/task.md index 5fd18f90a..f3c208a74 100644 --- a/1-js/02-first-steps/04-variables/3-uppercast-constant/task.md +++ b/1-js/02-first-steps/04-variables/3-uppercast-constant/task.md @@ -12,13 +12,14 @@ const birthday = '18.04.1982'; const age = someCode(birthday); ``` -Here we have a constant `birthday` date and the `age` is calculated from `birthday` with the help of some code (it is not provided for shortness, and because details don't matter here). +Here we have a constant `birthday` for the date, and also the `age` constant. + +The `age` is calculated from `birthday` using `someCode()`, which means a function call that we didn't explain yet (we will soon!), but the details don't matter here, the point is that `age` is calculated somehow based on the `birthday`. Would it be right to use upper case for `birthday`? For `age`? Or even for both? ```js -const BIRTHDAY = '18.04.1982'; // make uppercase? +const BIRTHDAY = '18.04.1982'; // make birthday uppercase? -const AGE = someCode(BIRTHDAY); // make uppercase? +const AGE = someCode(BIRTHDAY); // make age uppercase? ``` - diff --git a/1-js/02-first-steps/04-variables/article.md b/1-js/02-first-steps/04-variables/article.md index ab6c47281..e91d0ea7e 100644 --- a/1-js/02-first-steps/04-variables/article.md +++ b/1-js/02-first-steps/04-variables/article.md @@ -12,7 +12,7 @@ A [variable](https://en.wikipedia.org/wiki/Variable_(computer_science)) is a "na To create a variable in JavaScript, use the `let` keyword. -The statement below creates (in other words: *declares* or *defines*) a variable with the name "message": +The statement below creates (in other words: *declares*) a variable with the name "message": ```js let message; @@ -24,7 +24,7 @@ Now, we can put some data into it by using the assignment operator `=`: let message; *!* -message = 'Hello'; // store the string +message = 'Hello'; // store the string 'Hello' in the variable named message */!* ``` @@ -64,6 +64,7 @@ let message = 'Hello'; ``` Some people also define multiple variables in this multiline style: + ```js no-beautify let user = 'John', age = 25, @@ -80,7 +81,6 @@ let user = 'John' Technically, all these variants do the same thing. So, it's a matter of personal taste and aesthetics. - ````smart header="`var` instead of `let`" In older scripts, you may also find another keyword: `var` instead of `let`: @@ -88,22 +88,23 @@ In older scripts, you may also find another keyword: `var` instead of `let`: *!*var*/!* message = 'Hello'; ``` -The `var` keyword is *almost* the same as `let`. It also declares a variable, but in a slightly different, "old-school" way. +The `var` keyword is *almost* the same as `let`. It also declares a variable but in a slightly different, "old-school" way. -There are subtle differences between `let` and `var`, but they do not matter for us yet. We'll cover them in detail in the chapter <info:var>. +There are subtle differences between `let` and `var`, but they do not matter to us yet. We'll cover them in detail in the chapter <info:var>. ```` ## A real-life analogy We can easily grasp the concept of a "variable" if we imagine it as a "box" for data, with a uniquely-named sticker on it. -For instance, the variable `message` can be imagined as a box labeled `"message"` with the value `"Hello!"` in it: +For instance, the variable `message` can be imagined as a box labelled `"message"` with the value `"Hello!"` in it:  We can put any value in the box. We can also change it as many times as we want: + ```js run let message; @@ -135,12 +136,26 @@ alert(hello); // Hello world! alert(message); // Hello world! ``` +````warn header="Declaring twice triggers an error" +A variable should be declared only once. + +A repeated declaration of the same variable is an error: + +```js run +let message = "This"; + +// repeated 'let' leads to an error +let message = "That"; // SyntaxError: 'message' has already been declared +``` +So, we should declare a variable once and then refer to it without `let`. +```` + ```smart header="Functional languages" -It's interesting to note that [functional](https://en.wikipedia.org/wiki/Functional_programming) programming languages, like [Scala](http://www.scala-lang.org/) or [Erlang](http://www.erlang.org/), forbid changing variable values. +It's interesting to note that there exist so-called [pure functional](https://en.wikipedia.org/wiki/Purely_functional_programming) programming languages, such as [Haskell](https://en.wikipedia.org/wiki/Haskell), that forbid changing variable values. In such languages, once the value is stored "in the box", it's there forever. If we need to store something else, the language forces us to create a new box (declare a new variable). We can't reuse the old one. -Though it may seem a little odd at first sight, these languages are quite capable of serious development. More than that, there are areas like parallel computations where this limitation confers certain benefits. Studying such a language (even if you're not planning to use it soon) is recommended to broaden the mind. +Though it may seem a little odd at first sight, these languages are quite capable of serious development. More than that, there are areas like parallel computations where this limitation confers certain benefits. ``` ## Variable naming [#variable-naming] @@ -179,18 +194,18 @@ let my-name; // hyphens '-' aren't allowed in the name ``` ```smart header="Case matters" -Variables named `apple` and `AppLE` are two different variables. +Variables named `apple` and `APPLE` are two different variables. ``` -````smart header="Non-English letters are allowed, but not recommended" -It is possible to use any language, including cyrillic letters or even hieroglyphs, like this: +````smart header="Non-Latin letters are allowed, but not recommended" +It is possible to use any language, including Cyrillic letters, Chinese logograms and so on, like this: ```js let имя = '...'; let 我 = '...'; ``` -Technically, there is no error here, such names are allowed, but there is an international tradition to use English in variable names. Even if we're writing a small script, it may have a long life ahead. People from other countries may need to read it some time. +Technically, there is no error here. Such names are allowed, but there is an international convention to use English in variable names. Even if we're writing a small script, it may have a long life ahead. People from other countries may need to read it sometime. ```` ````warn header="Reserved names" @@ -237,7 +252,7 @@ To declare a constant (unchanging) variable, use `const` instead of `let`: const myBirthday = '18.04.1982'; ``` -Variables declared using `const` are called "constants". They cannot be changed. An attempt to do so would cause an error: +Variables declared using `const` are called "constants". They cannot be reassigned. An attempt to do so would cause an error: ```js run const myBirthday = '18.04.1982'; @@ -245,16 +260,15 @@ const myBirthday = '18.04.1982'; myBirthday = '01.01.2001'; // error, can't reassign the constant! ``` -When a programmer is sure that a variable will never change, they can declare it with `const` to guarantee and clearly communicate that fact to everyone. - +When a programmer is sure that a variable will never change, they can declare it with `const` to guarantee and communicate that fact to everyone. ### Uppercase constants -There is a widespread practice to use constants as aliases for difficult-to-remember values that are known prior to execution. +There is a widespread practice to use constants as aliases for difficult-to-remember values that are known before execution. Such constants are named using capital letters and underscores. -Like this: +For instance, let's make constants for colors in so-called "web" (hexadecimal) format: ```js run const COLOR_RED = "#F00"; @@ -275,35 +289,36 @@ Benefits: When should we use capitals for a constant and when should we name it normally? Let's make that clear. -Being a "constant" just means that a variable's value never changes. But there are constants that are known prior to execution (like a hexadecimal value for red) and there are constants that are *calculated* in run-time, during the execution, but do not change after their initial assignment. +Being a "constant" just means that a variable's value never changes. But some constants are known before execution (like a hexadecimal value for red) and some constants are *calculated* in run-time, during the execution, but do not change after their initial assignment. For instance: + ```js const pageLoadTime = /* time taken by a webpage to load */; ``` -The value of `pageLoadTime` is not known prior to the page load, so it's named normally. But it's still a constant because it doesn't change after assignment. +The value of `pageLoadTime` is not known before the page load, so it's named normally. But it's still a constant because it doesn't change after the assignment. -In other words, capital-named constants are only used as aliases for "hard-coded" values. +In other words, capital-named constants are only used as aliases for "hard-coded" values. ## Name things right Talking about variables, there's one more extremely important thing. -Please name your variables sensibly. Take time to think about this. +A variable name should have a clean, obvious meaning, describing the data that it stores. -Variable naming is one of the most important and complex skills in programming. A quick glance at variable names can reveal which code was written by a beginner versus an experienced developer. +Variable naming is one of the most important and complex skills in programming. A glance at variable names can reveal which code was written by a beginner versus an experienced developer. -In a real project, most of the time is spent modifying and extending an existing code base rather than writing something completely separate from scratch. When we return to some code after doing something else for a while, it's much easier to find information that is well-labeled. Or, in other words, when the variables have good names. +In a real project, most of the time is spent modifying and extending an existing code base rather than writing something completely separate from scratch. When we return to some code after doing something else for a while, it's much easier to find information that is well-labelled. Or, in other words, when the variables have good names. Please spend time thinking about the right name for a variable before declaring it. Doing so will repay you handsomely. Some good-to-follow rules are: - Use human-readable names like `userName` or `shoppingCart`. -- Stay away from abbreviations or short names like `a`, `b`, `c`, unless you really know what you're doing. +- Stay away from abbreviations or short names like `a`, `b`, and `c`, unless you know what you're doing. - Make names maximally descriptive and concise. Examples of bad names are `data` and `value`. Such names say nothing. It's only okay to use them if the context of the code makes it exceptionally obvious which data or value the variable is referencing. -- Agree on terms within your team and in your own mind. If a site visitor is called a "user" then we should name related variables `currentUser` or `newUser` instead of `currentVisitor` or `newManInTown`. +- Agree on terms within your team and in your mind. If a site visitor is called a "user" then we should name related variables `currentUser` or `newUser` instead of `currentVisitor` or `newManInTown`. Sounds simple? Indeed it is, but creating descriptive and concise variable names in practice is not. Go for it. @@ -323,7 +338,7 @@ Modern JavaScript minifiers and browsers optimize code well enough, so it won't We can declare variables to store data by using the `var`, `let`, or `const` keywords. -- `let` -- is a modern variable declaration. The code must be in strict mode to use `let` in Chrome (V8). +- `let` -- is a modern variable declaration. - `var` -- is an old-school variable declaration. Normally we don't use it at all, but we'll cover subtle differences from `let` in the chapter <info:var>, just in case you need them. - `const` -- is like `let`, but the value of the variable can't be changed. diff --git a/1-js/02-first-steps/05-types/article.md b/1-js/02-first-steps/05-types/article.md index 0c9954ecf..04e8b2450 100644 --- a/1-js/02-first-steps/05-types/article.md +++ b/1-js/02-first-steps/05-types/article.md @@ -1,6 +1,10 @@ # Data types -A variable in JavaScript can contain any data. A variable can at one moment be a string and at another be a number: +A value in JavaScript is always of a certain type. For example, a string or a number. + +There are eight basic data types in JavaScript. Here, we'll cover them in general and in the next chapters we'll talk about each of them in detail. + +We can put any type in a variable. For example, a variable can at one moment be a string and then store a number: ```js // no error @@ -8,11 +12,9 @@ let message = "hello"; message = 123456; ``` -Programming languages that allow such things are called "dynamically typed", meaning that there are data types, but variables are not bound to any of them. +Programming languages that allow such things, such as JavaScript, are called "dynamically typed", meaning that there exist data types, but variables are not bound to any of them. -There are seven basic data types in JavaScript. Here, we'll cover them in general and in the next chapters we'll talk about each of them in detail. - -## A number +## Number ```js let n = 123; @@ -44,13 +46,15 @@ Besides regular numbers, there are so-called "special numeric values" which also alert( "not a number" / 2 ); // NaN, such division is erroneous ``` - `NaN` is sticky. Any further operation on `NaN` returns `NaN`: + `NaN` is sticky. Any further mathematical operation on `NaN` returns `NaN`: ```js run - alert( "not a number" / 2 + 5 ); // NaN + alert( NaN + 1 ); // NaN + alert( 3 * NaN ); // NaN + alert( "not a number" / 2 - 1 ); // NaN ``` - So, if there's a `NaN` somewhere in a mathematical expression, it propagates to the whole result. + So, if there's a `NaN` somewhere in a mathematical expression, it propagates to the whole result (there's only one exception to that: `NaN ** 0` is `1`). ```smart header="Mathematical operations are safe" Doing maths is "safe" in JavaScript. We can do anything: divide by zero, treat non-numeric strings as numbers, etc. @@ -62,14 +66,42 @@ Special numeric values formally belong to the "number" type. Of course they are We'll see more about working with numbers in the chapter <info:number>. -## A string +## BigInt [#bigint-type] + +In JavaScript, the "number" type cannot safely represent integer values larger than <code>(2<sup>53</sup>-1)</code> (that's `9007199254740991`), or less than <code>-(2<sup>53</sup>-1)</code> for negatives. + +To be really precise, the "number" type can store larger integers (up to <code>1.7976931348623157 * 10<sup>308</sup></code>), but outside of the safe integer range <code>±(2<sup>53</sup>-1)</code> there'll be a precision error, because not all digits fit into the fixed 64-bit storage. So an "approximate" value may be stored. + +For example, these two numbers (right above the safe range) are the same: + +```js +console.log(9007199254740991 + 1); // 9007199254740992 +console.log(9007199254740991 + 2); // 9007199254740992 +``` + +So to say, all odd integers greater than <code>(2<sup>53</sup>-1)</code> can't be stored at all in the "number" type. + +For most purposes <code>±(2<sup>53</sup>-1)</code> range is quite enough, but sometimes we need the entire range of really big integers, e.g. for cryptography or microsecond-precision timestamps. + +`BigInt` type was recently added to the language to represent integers of arbitrary length. + +A `BigInt` value is created by appending `n` to the end of an integer: + +```js +// the "n" at the end means it's a BigInt +const bigInt = 1234567890123456789012345678901234567890n; +``` + +As `BigInt` numbers are rarely needed, we don't cover them here, but devoted them a separate chapter <info:bigint>. Read it when you need such big numbers. + +## String A string in JavaScript must be surrounded by quotes. ```js let str = "Hello"; let str2 = 'Single quotes are ok too'; -let phrase = `can embed ${str}`; +let phrase = `can embed another ${str}`; ``` In JavaScript, there are 3 types of quotes. @@ -78,7 +110,7 @@ In JavaScript, there are 3 types of quotes. 2. Single quotes: `'Hello'`. 3. Backticks: <code>`Hello`</code>. -Double and single quotes are "simple" quotes. There's no difference between them in JavaScript. +Double and single quotes are "simple" quotes. There's practically no difference between them in JavaScript. Backticks are "extended functionality" quotes. They allow us to embed variables and expressions into a string by wrapping them in `${…}`, for example: @@ -102,12 +134,12 @@ alert( "the result is ${1 + 2}" ); // the result is ${1 + 2} (double quotes do n We'll cover strings more thoroughly in the chapter <info:string>. ```smart header="There is no *character* type." -In some languages, there is a special "character" type for a single character. For example, in the C language and in Java it is `char`. +In some languages, there is a special "character" type for a single character. For example, in the C language and in Java it is called "char". -In JavaScript, there is no such type. There's only one type: `string`. A string may consist of only one character or many of them. +In JavaScript, there is no such type. There's only one type: `string`. A string may consist of zero characters (be empty), one character or many of them. ``` -## A boolean (logical type) +## Boolean (logical type) The boolean type has only two values: `true` and `false`. @@ -144,7 +176,7 @@ In JavaScript, `null` is not a "reference to a non-existing object" or a "null p It's just a special value which represents "nothing", "empty" or "value unknown". -The code above states that `age` is unknown or empty for some reason. +The code above states that `age` is unknown. ## The "undefined" value @@ -155,49 +187,47 @@ The meaning of `undefined` is "value is not assigned". If a variable is declared, but not assigned, then its value is `undefined`: ```js run -let x; +let age; -alert(x); // shows "undefined" +alert(age); // shows "undefined" ``` -Technically, it is possible to assign `undefined` to any variable: +Technically, it is possible to explicitly assign `undefined` to a variable: ```js run -let x = 123; +let age = 100; -x = undefined; +// change the value to undefined +age = undefined; -alert(x); // "undefined" +alert(age); // "undefined" ``` -...But we don't recommend doing that. Normally, we use `null` to assign an "empty" or "unknown" value to a variable, and we use `undefined` for checks like seeing if a variable has been assigned. +...But we don't recommend doing that. Normally, one uses `null` to assign an "empty" or "unknown" value to a variable, while `undefined` is reserved as a default initial value for unassigned things. ## Objects and Symbols The `object` type is special. -All other types are called "primitive" because their values can contain only a single thing (be it a string or a number or whatever). In contrast, objects are used to store collections of data and more complex entities. We'll deal with them later in the chapter <info:object> after we learn more about primitives. - -The `symbol` type is used to create unique identifiers for objects. We have to mention it here for completeness, but it's better to study this type after objects. - -## The typeof operator [#type-typeof] +All other types are called "primitive" because their values can contain only a single thing (be it a string or a number or whatever). In contrast, objects are used to store collections of data and more complex entities. -The `typeof` operator returns the type of the argument. It's useful when we want to process values of different types differently or just want to do a quick check. +Being that important, objects deserve a special treatment. We'll deal with them later in the chapter <info:object>, after we learn more about primitives. -It supports two forms of syntax: +The `symbol` type is used to create unique identifiers for objects. We have to mention it here for the sake of completeness, but also postpone the details till we know objects. -1. As an operator: `typeof x`. -2. As a function: `typeof(x)`. +## The typeof operator [#type-typeof] -In other words, it works with parentheses or without them. The result is the same. +The `typeof` operator returns the type of the operand. It's useful when we want to process values of different types differently or just want to do a quick check. -The call to `typeof x` returns a string with the type name: +A call to `typeof x` returns a string with the type name: ```js typeof undefined // "undefined" typeof 0 // "number" +typeof 10n // "bigint" + typeof true // "boolean" typeof "foo" // "string" @@ -220,25 +250,37 @@ typeof alert // "function" (3) The last three lines may need additional explanation: 1. `Math` is a built-in object that provides mathematical operations. We will learn it in the chapter <info:number>. Here, it serves just as an example of an object. -2. The result of `typeof null` is `"object"`. That's wrong. It is an officially recognized error in `typeof`, kept for compatibility. Of course, `null` is not an object. It is a special value with a separate type of its own. So, again, this is an error in the language. -3. The result of `typeof alert` is `"function"`, because `alert` is a function of the language. We'll study functions in the next chapters where we'll see that there's no special "function" type in JavaScript. Functions belong to the object type. But `typeof` treats them differently. Formally, it's incorrect, but very convenient in practice. +2. The result of `typeof null` is `"object"`. That's an officially recognized error in `typeof`, coming from very early days of JavaScript and kept for compatibility. Definitely, `null` is not an object. It is a special value with a separate type of its own. The behavior of `typeof` is wrong here. +3. The result of `typeof alert` is `"function"`, because `alert` is a function. We'll study functions in the next chapters where we'll also see that there's no special "function" type in JavaScript. Functions belong to the object type. But `typeof` treats them differently, returning `"function"`. That also comes from the early days of JavaScript. Technically, such behavior isn't correct, but can be convenient in practice. + +```smart header="The `typeof(x)` syntax" +You may also come across another syntax: `typeof(x)`. It's the same as `typeof x`. +To put it clear: `typeof` is an operator, not a function. The parentheses here aren't a part of `typeof`. It's the kind of parentheses used for mathematical grouping. + +Usually, such parentheses contain a mathematical expression, such as `(2 + 2)`, but here they contain only one argument `(x)`. Syntactically, they allow to avoid a space between the `typeof` operator and its argument, and some people like it. + +Some people prefer `typeof(x)`, although the `typeof x` syntax is much more common. +``` ## Summary -There are 7 basic data types in JavaScript. +There are 8 basic data types in JavaScript. -- `number` for numbers of any kind: integer or floating-point. -- `string` for strings. A string may have one or more characters, there's no separate single-character type. -- `boolean` for `true`/`false`. -- `null` for unknown values -- a standalone type that has a single value `null`. -- `undefined` for unassigned values -- a standalone type that has a single value `undefined`. -- `object` for more complex data structures. -- `symbol` for unique identifiers. +- Seven primitive data types: + - `number` for numbers of any kind: integer or floating-point, integers are limited by <code>±(2<sup>53</sup>-1)</code>. + - `bigint` for integer numbers of arbitrary length. + - `string` for strings. A string may have zero or more characters, there's no separate single-character type. + - `boolean` for `true`/`false`. + - `null` for unknown values -- a standalone type that has a single value `null`. + - `undefined` for unassigned values -- a standalone type that has a single value `undefined`. + - `symbol` for unique identifiers. +- And one non-primitive data type: + - `object` for more complex data structures. The `typeof` operator allows us to see which type is stored in a variable. -- Two forms: `typeof x` or `typeof(x)`. +- Usually used as `typeof x`, but `typeof(x)` is also possible. - Returns a string with the name of the type, like `"string"`. - For `null` returns `"object"` -- this is an error in the language, it's not actually an object. diff --git a/1-js/02-first-steps/09-alert-prompt-confirm/1-simple-page/solution.md b/1-js/02-first-steps/06-alert-prompt-confirm/1-simple-page/solution.md similarity index 100% rename from 1-js/02-first-steps/09-alert-prompt-confirm/1-simple-page/solution.md rename to 1-js/02-first-steps/06-alert-prompt-confirm/1-simple-page/solution.md diff --git a/1-js/02-first-steps/09-alert-prompt-confirm/1-simple-page/task.md b/1-js/02-first-steps/06-alert-prompt-confirm/1-simple-page/task.md similarity index 100% rename from 1-js/02-first-steps/09-alert-prompt-confirm/1-simple-page/task.md rename to 1-js/02-first-steps/06-alert-prompt-confirm/1-simple-page/task.md diff --git a/1-js/02-first-steps/09-alert-prompt-confirm/article.md b/1-js/02-first-steps/06-alert-prompt-confirm/article.md similarity index 71% rename from 1-js/02-first-steps/09-alert-prompt-confirm/article.md rename to 1-js/02-first-steps/06-alert-prompt-confirm/article.md index f69c2d233..ef0f333cb 100644 --- a/1-js/02-first-steps/09-alert-prompt-confirm/article.md +++ b/1-js/02-first-steps/06-alert-prompt-confirm/article.md @@ -1,18 +1,10 @@ # Interaction: alert, prompt, confirm -This part of the tutorial aims to cover JavaScript "as is", without environment-specific tweaks. - -But we'll still be using the browser as our demo environment, so we should know at least a few of its user-interface functions. In this chapter, we'll get familiar with the browser functions `alert`, `prompt` and `confirm`. +As we'll be using the browser as our demo environment, let's see a couple of functions to interact with the user: `alert`, `prompt` and `confirm`. ## alert -Syntax: - -```js -alert(message); -``` - -This shows a message and pauses script execution until the user presses "OK". +This one we've seen already. It shows a message and waits for the user to press "OK". For example: @@ -20,7 +12,7 @@ For example: alert("Hello"); ``` -The mini-window with the message is called a *modal window*. The word "modal" means that the visitor can't interact with the rest of the page, press other buttons, etc. until they have dealt with the window. In this case -- until they press "OK". +The mini-window with the message is called a *modal window*. The word "modal" means that the visitor can't interact with the rest of the page, press other buttons, etc, until they have dealt with the window. In this case -- until they press "OK". ## prompt @@ -30,7 +22,7 @@ The function `prompt` accepts two arguments: result = prompt(title, [default]); ``` -It shows a modal window with a text message, an input field for the visitor, and the buttons OK/CANCEL. +It shows a modal window with a text message, an input field for the visitor, and the buttons OK/Cancel. `title` : The text to show the visitor. @@ -38,7 +30,11 @@ It shows a modal window with a text message, an input field for the visitor, and `default` : An optional second parameter, the initial value for the input field. -The visitor may type something in the prompt input field and press OK. Or they can cancel the input by pressing CANCEL or hitting the `key:Esc` key. +```smart header="The square brackets in syntax `[...]`" +The square brackets around `default` in the syntax above denote that the parameter is optional, not required. +``` + +The visitor can type something in the prompt input field and press OK. Then we get that text in the `result`. Or they can cancel the input by pressing Cancel or hitting the `key:Esc` key, then we get `null` as the `result`. The call to `prompt` returns the text from the input field or `null` if the input was canceled. @@ -74,7 +70,7 @@ The syntax: result = confirm(question); ``` -The function `confirm` shows a modal window with a `question` and two buttons: OK and CANCEL. +The function `confirm` shows a modal window with a `question` and two buttons: OK and Cancel. The result is `true` if OK is pressed and `false` otherwise. @@ -94,10 +90,10 @@ We covered 3 browser-specific functions to interact with visitors: : shows a message. `prompt` -: shows a message asking the user to input text. It returns the text or, if CANCEL or `key:Esc` is clicked, `null`. +: shows a message asking the user to input text. It returns the text or, if Cancel button or `key:Esc` is clicked, `null`. `confirm` -: shows a message and waits for the user to press "OK" or "CANCEL". It returns `true` for OK and `false` for CANCEL/`key:Esc`. +: shows a message and waits for the user to press "OK" or "Cancel". It returns `true` for OK and `false` for Cancel/`key:Esc`. All these methods are modal: they pause script execution and don't allow the visitor to interact with the rest of the page until the window has been dismissed. diff --git a/1-js/02-first-steps/06-type-conversions/article.md b/1-js/02-first-steps/07-type-conversions/article.md similarity index 70% rename from 1-js/02-first-steps/06-type-conversions/article.md rename to 1-js/02-first-steps/07-type-conversions/article.md index 6ac695e84..329556141 100644 --- a/1-js/02-first-steps/06-type-conversions/article.md +++ b/1-js/02-first-steps/07-type-conversions/article.md @@ -1,16 +1,18 @@ # Type Conversions -Most of the time, operators and functions automatically convert the values given to them to the right type. +Most of the time, operators and functions automatically convert the values given to them to the right type. For example, `alert` automatically converts any value to a string to show it. Mathematical operations convert values to numbers. There are also cases when we need to explicitly convert a value to the expected type. ```smart header="Not talking about objects yet" -In this chapter, we won't cover objects. Instead, we'll study primitives first. Later, after we learn about objects, we'll see how object conversion works in the chapter <info:object-toprimitive>. +In this chapter, we won't cover objects. For now, we'll just be talking about primitives. + +Later, after we learn about objects, in the chapter <info:object-toprimitive> we'll see how objects fit in. ``` -## ToString +## String Conversion String conversion happens when we need the string form of a value. @@ -30,9 +32,9 @@ alert(typeof value); // string String conversion is mostly obvious. A `false` becomes `"false"`, `null` becomes `"null"`, etc. -## ToNumber +## Numeric Conversion -Numeric conversion happens in mathematical functions and expressions automatically. +Numeric conversion in mathematical functions and expressions happens automatically. For example, when division `/` is applied to non-numbers: @@ -68,7 +70,7 @@ Numeric conversion rules: |`undefined`|`NaN`| |`null`|`0`| |<code>true and false</code> | `1` and `0` | -| `string` | Whitespaces from the start and end are removed. If the remaining string is empty, the result is `0`. Otherwise, the number is "read" from the string. An error gives `NaN`. | +| `string` | Whitespaces (includes spaces, tabs `\t`, newlines `\n` etc.) from the start and end are removed. If the remaining string is empty, the result is `0`. Otherwise, the number is "read" from the string. An error gives `NaN`. | Examples: @@ -81,20 +83,9 @@ alert( Number(false) ); // 0 Please note that `null` and `undefined` behave differently here: `null` becomes zero while `undefined` becomes `NaN`. -````smart header="Addition '+' concatenates strings" -Almost all mathematical operations convert values to numbers. A notable exception is addition `+`. If one of the added values is a string, the other one is also converted to a string. - -Then, it concatenates (joins) them: - -```js run -alert( 1 + '2' ); // '12' (string to the right) -alert( '1' + 2 ); // '12' (string to the left) -``` - -This only happens when at least one of the arguments is a string. Otherwise, values are converted to numbers. -```` +Most mathematical operators also perform such conversion, we'll see that in the next chapter. -## ToBoolean +## Boolean Conversion Boolean conversion is the simplest one. @@ -124,14 +115,13 @@ alert( Boolean(" ") ); // spaces, also true (any non-empty string is true) ``` ```` - ## Summary The three most widely used type conversions are to string, to number, and to boolean. -**`ToString`** -- Occurs when we output something. Can be performed with `String(value)`. The conversion to string is usually obvious for primitive values. +**`String Conversion`** -- Occurs when we output something. Can be performed with `String(value)`. The conversion to string is usually obvious for primitive values. -**`ToNumber`** -- Occurs in math operations. Can be performed with `Number(value)`. +**`Numeric Conversion`** -- Occurs in math operations. Can be performed with `Number(value)`. The conversion follows the rules: @@ -140,9 +130,9 @@ The conversion follows the rules: |`undefined`|`NaN`| |`null`|`0`| |<code>true / false</code> | `1 / 0` | -| `string` | The string is read "as is", whitespaces from both sides are ignored. An empty string becomes `0`. An error gives `NaN`. | +| `string` | The string is read "as is", whitespaces (includes spaces, tabs `\t`, newlines `\n` etc.) from both sides are ignored. An empty string becomes `0`. An error gives `NaN`. | -**`ToBoolean`** -- Occurs in logical operations. Can be performed with `Boolean(value)`. +**`Boolean Conversion`** -- Occurs in logical operations. Can be performed with `Boolean(value)`. Follows the rules: diff --git a/1-js/02-first-steps/08-comparison/1-comparison-questions/solution.md b/1-js/02-first-steps/08-comparison/1-comparison-questions/solution.md deleted file mode 100644 index 5c8bd2bc4..000000000 --- a/1-js/02-first-steps/08-comparison/1-comparison-questions/solution.md +++ /dev/null @@ -1,21 +0,0 @@ - - -```js no-beautify -5 > 4 → true -"apple" > "pineapple" → false -"2" > "12" → true -undefined == null → true -undefined === null → false -null == "\n0\n" → false -null === +"\n0\n" → false -``` - -Some of the reasons: - -1. Obviously, true. -2. Dictionary comparison, hence false. -3. Again, dictionary comparison, first char of `"2"` is greater than the first char of `"1"`. -4. Values `null` and `undefined` equal each other only. -5. Strict equality is strict. Different types from both sides lead to false. -6. See (4). -7. Strict equality of different types. diff --git a/1-js/02-first-steps/07-operators/1-increment-order/solution.md b/1-js/02-first-steps/08-operators/1-increment-order/solution.md similarity index 100% rename from 1-js/02-first-steps/07-operators/1-increment-order/solution.md rename to 1-js/02-first-steps/08-operators/1-increment-order/solution.md diff --git a/1-js/02-first-steps/07-operators/1-increment-order/task.md b/1-js/02-first-steps/08-operators/1-increment-order/task.md similarity index 100% rename from 1-js/02-first-steps/07-operators/1-increment-order/task.md rename to 1-js/02-first-steps/08-operators/1-increment-order/task.md diff --git a/1-js/02-first-steps/07-operators/2-assignment-result/solution.md b/1-js/02-first-steps/08-operators/2-assignment-result/solution.md similarity index 100% rename from 1-js/02-first-steps/07-operators/2-assignment-result/solution.md rename to 1-js/02-first-steps/08-operators/2-assignment-result/solution.md diff --git a/1-js/02-first-steps/07-operators/2-assignment-result/task.md b/1-js/02-first-steps/08-operators/2-assignment-result/task.md similarity index 100% rename from 1-js/02-first-steps/07-operators/2-assignment-result/task.md rename to 1-js/02-first-steps/08-operators/2-assignment-result/task.md diff --git a/1-js/02-first-steps/06-type-conversions/1-primitive-conversions-questions/solution.md b/1-js/02-first-steps/08-operators/3-primitive-conversions-questions/solution.md similarity index 69% rename from 1-js/02-first-steps/06-type-conversions/1-primitive-conversions-questions/solution.md rename to 1-js/02-first-steps/08-operators/3-primitive-conversions-questions/solution.md index 7dd0d61c2..7370b66af 100644 --- a/1-js/02-first-steps/06-type-conversions/1-primitive-conversions-questions/solution.md +++ b/1-js/02-first-steps/08-operators/3-primitive-conversions-questions/solution.md @@ -9,11 +9,11 @@ true + false = 1 "$" + 4 + 5 = "$45" "4" - 2 = 2 "4px" - 2 = NaN -7 / 0 = Infinity -" -9 " + 5 = " -9 5" // (3) -" -9 " - 5 = -14 // (4) +" -9 " + 5 = " -9 5" // (3) +" -9 " - 5 = -14 // (4) null + 1 = 1 // (5) undefined + 1 = NaN // (6) +" \t \n" - 2 = -2 // (7) ``` 1. The addition with a string `"" + 1` converts `1` to a string: `"" + 1 = "1"`, and then we have `"1" + 0`, the same rule is applied. @@ -22,3 +22,4 @@ undefined + 1 = NaN // (6) 4. The subtraction always converts to numbers, so it makes `" -9 "` a number `-9` (ignoring spaces around it). 5. `null` becomes `0` after the numeric conversion. 6. `undefined` becomes `NaN` after the numeric conversion. +7. Space characters are trimmed off string start and end when a string is converted to a number. Here the whole string consists of space characters, such as `\t`, `\n` and a "regular" space between them. So, similarly to an empty string, it becomes `0`. diff --git a/1-js/02-first-steps/06-type-conversions/1-primitive-conversions-questions/task.md b/1-js/02-first-steps/08-operators/3-primitive-conversions-questions/task.md similarity index 95% rename from 1-js/02-first-steps/06-type-conversions/1-primitive-conversions-questions/task.md rename to 1-js/02-first-steps/08-operators/3-primitive-conversions-questions/task.md index f17e870de..068420c7d 100644 --- a/1-js/02-first-steps/06-type-conversions/1-primitive-conversions-questions/task.md +++ b/1-js/02-first-steps/08-operators/3-primitive-conversions-questions/task.md @@ -16,11 +16,11 @@ true + false "$" + 4 + 5 "4" - 2 "4px" - 2 -7 / 0 " -9 " + 5 " -9 " - 5 null + 1 undefined + 1 +" \t \n" - 2 ``` Think well, write down and then compare with the answer. diff --git a/1-js/02-first-steps/08-operators/4-fix-prompt/solution.md b/1-js/02-first-steps/08-operators/4-fix-prompt/solution.md new file mode 100644 index 000000000..209a0702c --- /dev/null +++ b/1-js/02-first-steps/08-operators/4-fix-prompt/solution.md @@ -0,0 +1,32 @@ +The reason is that prompt returns user input as a string. + +So variables have values `"1"` and `"2"` respectively. + +```js run +let a = "1"; // prompt("First number?", 1); +let b = "2"; // prompt("Second number?", 2); + +alert(a + b); // 12 +``` + +What we should do is to convert strings to numbers before `+`. For example, using `Number()` or prepending them with `+`. + +For example, right before `prompt`: + +```js run +let a = +prompt("First number?", 1); +let b = +prompt("Second number?", 2); + +alert(a + b); // 3 +``` + +Or in the `alert`: + +```js run +let a = prompt("First number?", 1); +let b = prompt("Second number?", 2); + +alert(+a + +b); // 3 +``` + +Using both unary and binary `+` in the latest code. Looks funny, doesn't it? diff --git a/1-js/02-first-steps/08-operators/4-fix-prompt/task.md b/1-js/02-first-steps/08-operators/4-fix-prompt/task.md new file mode 100644 index 000000000..b3ea4a3a3 --- /dev/null +++ b/1-js/02-first-steps/08-operators/4-fix-prompt/task.md @@ -0,0 +1,18 @@ +importance: 5 + +--- + +# Fix the addition + +Here's a code that asks the user for two numbers and shows their sum. + +It works incorrectly. The output in the example below is `12` (for default prompt values). + +Why? Fix it. The result should be `3`. + +```js run +let a = prompt("First number?", 1); +let b = prompt("Second number?", 2); + +alert(a + b); // 12 +``` diff --git a/1-js/02-first-steps/07-operators/article.md b/1-js/02-first-steps/08-operators/article.md similarity index 67% rename from 1-js/02-first-steps/07-operators/article.md rename to 1-js/02-first-steps/08-operators/article.md index 74b27e871..d52c37a17 100644 --- a/1-js/02-first-steps/07-operators/article.md +++ b/1-js/02-first-steps/08-operators/article.md @@ -1,8 +1,8 @@ -# Operators +# Basic operators, maths We know many operators from school. They are things like addition `+`, multiplication `*`, subtraction `-`, and so on. -In this chapter, we'll concentrate on aspects of operators that are not covered by school arithmetic. +In this chapter, we’ll start with simple operators, then concentrate on JavaScript-specific aspects, not covered by school arithmetic. ## Terms: "unary", "binary", "operand" @@ -26,11 +26,62 @@ Before we move on, let's grasp some common terminology. alert( y - x ); // 2, binary minus subtracts values ``` - Formally, we're talking about two different operators here: the unary negation (single operand: reverses the sign) and the binary subtraction (two operands: subtracts). + Formally, in the examples above we have two different operators that share the same symbol: the negation operator, a unary operator that reverses the sign, and the subtraction operator, a binary operator that subtracts one number from another. -## String concatenation, binary + +## Maths -Now, let's see special features of JavaScript operators that are beyond school arithmetics. +The following math operations are supported: + +- Addition `+`, +- Subtraction `-`, +- Multiplication `*`, +- Division `/`, +- Remainder `%`, +- Exponentiation `**`. + +The first four are straightforward, while `%` and `**` need a few words about them. + +### Remainder % + +The remainder operator `%`, despite its appearance, is not related to percents. + +The result of `a % b` is the [remainder](https://en.wikipedia.org/wiki/Remainder) of the integer division of `a` by `b`. + +For instance: + +```js run +alert( 5 % 2 ); // 1, the remainder of 5 divided by 2 +alert( 8 % 3 ); // 2, the remainder of 8 divided by 3 +alert( 8 % 4 ); // 0, the remainder of 8 divided by 4 +``` + +### Exponentiation ** + +The exponentiation operator `a ** b` raises `a` to the power of `b`. + +In school maths, we write that as a<sup>b</sup>. + +For instance: + +```js run +alert( 2 ** 2 ); // 2² = 4 +alert( 2 ** 3 ); // 2³ = 8 +alert( 2 ** 4 ); // 2⁴ = 16 +``` + +Just like in maths, the exponentiation operator is defined for non-integer numbers as well. + +For example, a square root is an exponentiation by ½: + +```js run +alert( 4 ** (1/2) ); // 2 (power of 1/2 is the same as a square root) +alert( 8 ** (1/3) ); // 2 (power of 1/3 is the same as a cubic root) +``` + + +## String concatenation with binary + + +Let's meet the features of JavaScript operators that are beyond school arithmetics. Usually, the plus operator `+` sums numbers. @@ -41,7 +92,7 @@ let s = "my" + "string"; alert(s); // mystring ``` -Note that if one of the operands is a string, the other one is converted to a string too. +Note that if any of the operands is a string, then the other one is converted to a string too. For example: @@ -50,22 +101,28 @@ alert( '1' + 2 ); // "12" alert( 2 + '1' ); // "21" ``` -See, it doesn't matter whether the first operand is a string or the second one. The rule is simple: if either operand is a string, the other one is converted into a string as well. - -However, note that operations run from left to right. If there are two numbers followed by a string, the numbers will be added before being converted to a string: +See, it doesn't matter whether the first operand is a string or the second one. +Here's a more complex example: ```js run alert(2 + 2 + '1' ); // "41" and not "221" ``` -String concatenation and conversion is a special feature of the binary plus `+`. Other arithmetic operators work only with numbers and always convert their operands to numbers. +Here, operators work one after another. The first `+` sums two numbers, so it returns `4`, then the next `+` adds the string `1` to it, so it's like `4 + '1' = '41'`. -For instance, subtraction and division: +```js run +alert('1' + 2 + 2); // "122" and not "14" +``` +Here, the first operand is a string, the compiler treats the other two operands as strings too. The `2` gets concatenated to `'1'`, so it's like `'1' + 2 = "12"` and `"12" + 2 = "122"`. + +The binary `+` is the only operator that supports strings in such a way. Other arithmetic operators work only with numbers and always convert their operands to numbers. + +Here's the demo for subtraction and division: ```js run -alert( 2 - '1' ); // 1 -alert( '6' / '2' ); // 3 +alert( 6 - '2' ); // 4, converts '2' to a number +alert( '6' / '2' ); // 3, converts both operands to numbers ``` ## Numeric conversion, unary + @@ -93,9 +150,7 @@ alert( +"" ); // 0 It actually does the same thing as `Number(...)`, but is shorter. -The need to convert strings to numbers arises very often. For example, if we are getting values from HTML form fields, they are usually strings. - -What if we want to sum them? +The need to convert strings to numbers arises very often. For example, if we are getting values from HTML form fields, they are usually strings. What if we want to sum them? The binary plus would add them as strings: @@ -127,34 +182,35 @@ Why are unary pluses applied to values before the binary ones? As we're going to ## Operator precedence -If an expression has more than one operator, the execution order is defined by their *precedence*, or, in other words, the implicit priority order of operators. +If an expression has more than one operator, the execution order is defined by their *precedence*, or, in other words, the default priority order of operators. From school, we all know that the multiplication in the expression `1 + 2 * 2` should be calculated before the addition. That's exactly the precedence thing. The multiplication is said to have *a higher precedence* than the addition. -Parentheses override any precedence, so if we're not satisfied with the implicit order, we can use them to change it. For example: `(1 + 2) * 2`. +Parentheses override any precedence, so if we're not satisfied with the default order, we can use them to change it. For example, write `(1 + 2) * 2`. There are many operators in JavaScript. Every operator has a corresponding precedence number. The one with the larger number executes first. If the precedence is the same, the execution order is from left to right. -Here's an extract from the [precedence table](https://developer.mozilla.org/en/JavaScript/Reference/operators/operator_precedence) (you don't need to remember this, but note that unary operators are higher than corresponding binary ones): +Here's an extract from the [precedence table](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Operator_Precedence) (you don't need to remember this, but note that unary operators are higher than corresponding binary ones): | Precedence | Name | Sign | |------------|------|------| | ... | ... | ... | -| 16 | unary plus | `+` | -| 16 | unary negation | `-` | -| 14 | multiplication | `*` | -| 14 | division | `/` | -| 13 | addition | `+` | -| 13 | subtraction | `-` | +| 14 | unary plus | `+` | +| 14 | unary negation | `-` | +| 13 | exponentiation | `**` | +| 12 | multiplication | `*` | +| 12 | division | `/` | +| 11 | addition | `+` | +| 11 | subtraction | `-` | | ... | ... | ... | -| 3 | assignment | `=` | +| 2 | assignment | `=` | | ... | ... | ... | -As we can see, the "unary plus" has a priority of `16` which is higher than the `13` of "addition" (binary plus). That's why, in the expression `"+apples + +oranges"`, unary pluses work before the addition. +As we can see, the "unary plus" has a priority of `14` which is higher than the `11` of "addition" (binary plus). That's why, in the expression `"+apples + +oranges"`, unary pluses work before the addition. ## Assignment -Let's note that an assignment `=` is also an operator. It is listed in the precedence table with the very low priority of `3`. +Let's note that an assignment `=` is also an operator. It is listed in the precedence table with the very low priority of `2`. That's why, when we assign a variable, like `x = 2 * 2 + 1`, the calculations are done first and then the `=` is evaluated, storing the result in `x`. @@ -164,24 +220,11 @@ let x = 2 * 2 + 1; alert( x ); // 5 ``` -It is possible to chain assignments: - -```js run -let a, b, c; - -*!* -a = b = c = 2 + 2; -*/!* - -alert( a ); // 4 -alert( b ); // 4 -alert( c ); // 4 -``` +### Assignment = returns a value -Chained assignments evaluate from right to left. First, the rightmost expression `2 + 2` is evaluated and then assigned to the variables on the left: `c`, `b` and `a`. At the end, all the variables share a single value. +The fact of `=` being an operator, not a "magical" language construct has an interesting implication. -````smart header="The assignment operator `\"=\"` returns a value" -An operator always returns a value. That's obvious for most of them like addition `+` or multiplication `*`. But the assignment operator follows this rule too. +All operators in JavaScript return a value. That's obvious for `+` and `-`, but also true for `=`. The call `x = value` writes the `value` into `x` *and then returns it*. @@ -199,51 +242,76 @@ alert( a ); // 3 alert( c ); // 0 ``` -In the example above, the result of `(a = b + 1)` is the value which is assigned to `a` (that is `3`). It is then used to subtract from `3`. - -Funny code, isn't it? We should understand how it works, because sometimes we see it in 3rd-party libraries, but shouldn't write anything like that ourselves. Such tricks definitely don't make code clearer or readable. -```` +In the example above, the result of expression `(a = b + 1)` is the value which was assigned to `a` (that is `3`). It is then used for further evaluations. -## Remainder % +Funny code, isn't it? We should understand how it works, because sometimes we see it in JavaScript libraries. -The remainder operator `%`, despite its appearance, is not related to percents. +Although, please don't write the code like that. Such tricks definitely don't make code clearer or readable. -The result of `a % b` is the remainder of the integer division of `a` by `b`. +### Chaining assignments -For instance: +Another interesting feature is the ability to chain assignments: ```js run -alert( 5 % 2 ); // 1 is a remainder of 5 divided by 2 -alert( 8 % 3 ); // 2 is a remainder of 8 divided by 3 -alert( 6 % 3 ); // 0 is a remainder of 6 divided by 3 +let a, b, c; + +*!* +a = b = c = 2 + 2; +*/!* + +alert( a ); // 4 +alert( b ); // 4 +alert( c ); // 4 ``` -## Exponentiation ** +Chained assignments evaluate from right to left. First, the rightmost expression `2 + 2` is evaluated and then assigned to the variables on the left: `c`, `b` and `a`. At the end, all the variables share a single value. -The exponentiation operator `**` is a recent addition to the language. +Once again, for the purposes of readability it's better to split such code into few lines: -For a natural number `b`, the result of `a ** b` is `a` multiplied by itself `b` times. +```js +c = 2 + 2; +b = c; +a = c; +``` +That's easier to read, especially when eye-scanning the code fast. -For instance: +## Modify-in-place + +We often need to apply an operator to a variable and store the new result in that same variable. + +For example: + +```js +let n = 2; +n = n + 5; +n = n * 2; +``` + +This notation can be shortened using the operators `+=` and `*=`: ```js run -alert( 2 ** 2 ); // 4 (2 * 2) -alert( 2 ** 3 ); // 8 (2 * 2 * 2) -alert( 2 ** 4 ); // 16 (2 * 2 * 2 * 2) +let n = 2; +n += 5; // now n = 7 (same as n = n + 5) +n *= 2; // now n = 14 (same as n = n * 2) + +alert( n ); // 14 ``` -The operator works for non-integer numbers as well. +Short "modify-and-assign" operators exist for all arithmetical and bitwise operators: `/=`, `-=`, etc. -For instance: +Such operators have the same precedence as a normal assignment, so they run after most other calculations: ```js run -alert( 4 ** (1/2) ); // 2 (power of 1/2 is the same as a square root, that's maths) -alert( 8 ** (1/3) ); // 2 (power of 1/3 is the same as a cubic root) +let n = 2; + +n *= 3 + 5; // right part evaluated first, same as n *= 8 + +alert( n ); // 16 ``` ## Increment/decrement -<!-- Can't use -- in title, because built-in parse turns it into – --> +<!-- Can't use -- in title, because the built-in parser turns it into a 'long dash' – --> Increasing or decreasing a number by one is among the most common numerical operations. @@ -253,14 +321,14 @@ So, there are special operators for it: ```js run no-beautify let counter = 2; - counter++; // works the same as counter = counter + 1, but is shorter + counter++; // works the same as counter = counter + 1, but is shorter alert( counter ); // 3 ``` - **Decrement** `--` decreases a variable by 1: ```js run no-beautify let counter = 2; - counter--; // works the same as counter = counter - 1, but is shorter + counter--; // works the same as counter = counter - 1, but is shorter alert( counter ); // 1 ``` @@ -370,41 +438,7 @@ The list of operators: - RIGHT SHIFT ( `>>` ) - ZERO-FILL RIGHT SHIFT ( `>>>` ) -These operators are used very rarely. To understand them, we need to delve into low-level number representation and it would not be optimal to do that right now, especially since we won't need them any time soon. If you're curious, you can read the [Bitwise Operators](https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Operators/Bitwise_Operators) article on MDN. It would be more practical to do that when a real need arises. - -## Modify-in-place - -We often need to apply an operator to a variable and store the new result in that same variable. - -For example: - -```js -let n = 2; -n = n + 5; -n = n * 2; -``` - -This notation can be shortened using the operators `+=` and `*=`: - -```js run -let n = 2; -n += 5; // now n = 7 (same as n = n + 5) -n *= 2; // now n = 14 (same as n = n * 2) - -alert( n ); // 14 -``` - -Short "modify-and-assign" operators exist for all arithmetical and bitwise operators: `/=`, `-=`, etc. - -Such operators have the same precedence as a normal assignment, so they run after most other calculations: - -```js run -let n = 2; - -n *= 3 + 5; - -alert( n ); // 16 (right part evaluated first, same as n *= 8) -``` +These operators are used very rarely, when we need to fiddle with numbers on the very lowest (bitwise) level. We won't need these operators any time soon, as web development has little use of them, but in some special areas, such as cryptography, they are useful. You can read the [Bitwise Operators](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Expressions_and_Operators#bitwise_operators) chapter on MDN when a need arises. ## Comma @@ -427,10 +461,10 @@ Here, the first expression `1 + 2` is evaluated and its result is thrown away. T ```smart header="Comma has a very low precedence" Please note that the comma operator has very low precedence, lower than `=`, so parentheses are important in the example above. -Without them: `a = 1 + 2, 3 + 4` evaluates `+` first, summing the numbers into `a = 3, 7`, then the assignment operator `=` assigns `a = 3`, and finally the number after the comma, `7`, is not processed so it's ignored. +Without them: `a = 1 + 2, 3 + 4` evaluates `+` first, summing the numbers into `a = 3, 7`, then the assignment operator `=` assigns `a = 3`, and the rest is ignored. It's like `(a = 1 + 2), 3 + 4`. ``` -Why do we need an operator that throws away everything except the last part? +Why do we need an operator that throws away everything except the last expression? Sometimes, people use it in more complex constructs to put several actions in one line. @@ -443,4 +477,4 @@ for (*!*a = 1, b = 3, c = a * b*/!*; a < 10; a++) { } ``` -Such tricks are used in many JavaScript frameworks. That's why we're mentioning them. But, usually, they don't improve code readability so we should think well before using them. +Such tricks are used in many JavaScript frameworks. That's why we're mentioning them. But usually they don't improve code readability so we should think well before using them. diff --git a/1-js/02-first-steps/09-comparison/1-comparison-questions/solution.md b/1-js/02-first-steps/09-comparison/1-comparison-questions/solution.md new file mode 100644 index 000000000..632b1cf4e --- /dev/null +++ b/1-js/02-first-steps/09-comparison/1-comparison-questions/solution.md @@ -0,0 +1,21 @@ + + +```js no-beautify +5 > 4 → true +"apple" > "pineapple" → false +"2" > "12" → true +undefined == null → true +undefined === null → false +null == "\n0\n" → false +null === +"\n0\n" → false +``` + +Some of the reasons: + +1. Obviously, true. +2. Dictionary comparison, hence false. `"a"` is smaller than `"p"`. +3. Again, dictionary comparison, first char `"2"` is greater than the first char `"1"`. +4. Values `null` and `undefined` equal each other only. +5. Strict equality is strict. Different types from both sides lead to false. +6. Similar to `(4)`, `null` only equals `undefined`. +7. Strict equality of different types. diff --git a/1-js/02-first-steps/08-comparison/1-comparison-questions/task.md b/1-js/02-first-steps/09-comparison/1-comparison-questions/task.md similarity index 100% rename from 1-js/02-first-steps/08-comparison/1-comparison-questions/task.md rename to 1-js/02-first-steps/09-comparison/1-comparison-questions/task.md diff --git a/1-js/02-first-steps/08-comparison/article.md b/1-js/02-first-steps/09-comparison/article.md similarity index 84% rename from 1-js/02-first-steps/08-comparison/article.md rename to 1-js/02-first-steps/09-comparison/article.md index 3d5cc1729..a69317fee 100644 --- a/1-js/02-first-steps/08-comparison/article.md +++ b/1-js/02-first-steps/09-comparison/article.md @@ -1,15 +1,21 @@ # Comparisons -We know many comparison operators from maths: +We know many comparison operators from maths. + +In JavaScript they are written like this: - Greater/less than: <code>a > b</code>, <code>a < b</code>. - Greater/less than or equals: <code>a >= b</code>, <code>a <= b</code>. -- Equals: `a == b` (please note the double equals sign `=`. A single symbol `a = b` would mean an assignment). -- Not equals. In maths the notation is <code>≠</code>, but in JavaScript it's written as an assignment with an exclamation sign before it: <code>a != b</code>. +- Equals: `a == b`, please note the double equality sign `==` means the equality test, while a single one `a = b` means an assignment. +- Not equals: In maths the notation is <code>≠</code>, but in JavaScript it's written as <code>a != b</code>. + +In this article we'll learn more about different types of comparisons, how JavaScript makes them, including important peculiarities. + +At the end you'll find a good recipe to avoid "JavaScript quirks"-related issues. ## Boolean is the result -Like all other operators, a comparison returns a value. In this case, the value is a boolean. +All comparison operators return a boolean value: - `true` -- means "yes", "correct" or "the truth". - `false` -- means "no", "wrong" or "not the truth". @@ -51,7 +57,9 @@ The algorithm to compare two strings is simple: 4. Repeat until the end of either string. 5. If both strings end at the same length, then they are equal. Otherwise, the longer string is greater. -In the examples above, the comparison `'Z' > 'A'` gets to a result at the first step while the strings `"Glow"` and `"Glee"` are compared character-by-character: +In the first example above, the comparison `'Z' > 'A'` gets to a result at the first step. + +The second comparison `'Glow'` and `'Glee'` needs more steps as strings are compared character-by-character: 1. `G` is the same as `G`. 2. `l` is the same as `l`. @@ -74,7 +82,7 @@ alert( '2' > 1 ); // true, string '2' becomes a number 2 alert( '01' == 1 ); // true, string '01' becomes a number 1 ``` -For boolean values, `true` becomes `1` and `false` becomes `0`. +For boolean values, `true` becomes `1` and `false` becomes `0`. For example: @@ -138,11 +146,8 @@ The strict equality operator is a bit longer to write, but makes it obvious what ## Comparison with null and undefined -Let's see more edge cases. - There's a non-intuitive behavior when `null` or `undefined` are compared to other values. - For a strict equality check `===` : These values are different, because each of them is a different type. @@ -193,15 +198,14 @@ Why does it dislike zero so much? Always false! We get these results because: - Comparisons `(1)` and `(2)` return `false` because `undefined` gets converted to `NaN` and `NaN` is a special numeric value which returns `false` for all comparisons. -- The equality check `(3)` returns `false` because `undefined` only equals `null` and no other value. - -### Evade problems +- The equality check `(3)` returns `false` because `undefined` only equals `null`, `undefined`, and no other value. -Why did we go over these examples? Should we remember these peculiarities all the time? Well, not really. Actually, these tricky things will gradually become familiar over time, but there's a solid way to evade problems with them: +### Avoid problems -Just treat any comparison with `undefined/null` except the strict equality `===` with exceptional care. +Why did we go over these examples? Should we remember these peculiarities all the time? Well, not really. Actually, these tricky things will gradually become familiar over time, but there's a solid way to avoid problems with them: -Don't use comparisons `>= > < <=` with a variable which may be `null/undefined`, unless you're really sure of what you're doing. If a variable can have these values, check for them separately. +- Treat any comparison with `undefined/null` except the strict equality `===` with exceptional care. +- Don't use comparisons `>= > < <=` with a variable which may be `null/undefined`, unless you're really sure of what you're doing. If a variable can have these values, check for them separately. ## Summary diff --git a/1-js/02-first-steps/10-ifelse/2-check-standard/task.md b/1-js/02-first-steps/10-ifelse/2-check-standard/task.md index 418ef4a6d..f29db4b24 100644 --- a/1-js/02-first-steps/10-ifelse/2-check-standard/task.md +++ b/1-js/02-first-steps/10-ifelse/2-check-standard/task.md @@ -6,7 +6,11 @@ viktighet: 2 Ved å bruke `if..else` skal du skrive kode som spør: 'Hva er det "offisielle" navnet til JavaScript' +<<<<<<< HEAD Hvis brukeren skriver inn "ECMAScript", skal tilbakemeldingen være "Korrekt!". Ellers skal den være: "Visste du det ikke? ECMAScript!" +======= +If the visitor enters "ECMAScript", then output "Right!", otherwise -- output: "You don't know? ECMAScript!" +>>>>>>> 540d753e90789205fc6e75c502f68382c87dea9b  diff --git a/1-js/02-first-steps/10-ifelse/5-rewrite-if-question/solution.md b/1-js/02-first-steps/10-ifelse/5-rewrite-if-question/solution.md index 6b8d9bd67..b7c628174 100644 --- a/1-js/02-first-steps/10-ifelse/5-rewrite-if-question/solution.md +++ b/1-js/02-first-steps/10-ifelse/5-rewrite-if-question/solution.md @@ -1,3 +1,7 @@ ```js +<<<<<<< HEAD result = a + b < 4 ? "Below" : "Over"; +======= +let result = (a + b < 4) ? 'Below' : 'Over'; +>>>>>>> 540d753e90789205fc6e75c502f68382c87dea9b ``` diff --git a/1-js/02-first-steps/10-ifelse/5-rewrite-if-question/task.md b/1-js/02-first-steps/10-ifelse/5-rewrite-if-question/task.md index 421c7110f..2a666870b 100644 --- a/1-js/02-first-steps/10-ifelse/5-rewrite-if-question/task.md +++ b/1-js/02-first-steps/10-ifelse/5-rewrite-if-question/task.md @@ -4,9 +4,15 @@ importance: 5 # Gjør om 'if' til '?' +<<<<<<< HEAD Gjør om denne `if` påstanden ved bruk av ternary operatøren`'?'`: +======= +Rewrite this `if` using the conditional operator `'?'`: +>>>>>>> 540d753e90789205fc6e75c502f68382c87dea9b ```js +let result; + if (a + b < 4) { result = "Below"; } else { diff --git a/1-js/02-first-steps/10-ifelse/article.md b/1-js/02-first-steps/10-ifelse/article.md index 0b90d6364..0edca8a6a 100644 --- a/1-js/02-first-steps/10-ifelse/article.md +++ b/1-js/02-first-steps/10-ifelse/article.md @@ -1,12 +1,24 @@ +<<<<<<< HEAD # Operant betinging: if, '?' +======= +# Conditional branching: if, '?' +>>>>>>> 540d753e90789205fc6e75c502f68382c87dea9b Ofte i koden vår ønsker vi å utføre forskjellige operasjoner basert på ulike betingelser. +<<<<<<< HEAD For å bestemme hvilken kode som skal bli kjørt basert disse ulike betingelsene, bruker vi noe som kalles for "if" påstand (eng: if-statement). Man kan også benytte seg av en (ternary) operator, som vi vil skrive mer om etterpå. +======= +To do that, we can use the `if` statement and the conditional operator `?`, that's also called a "question mark" operator. +>>>>>>> 540d753e90789205fc6e75c502f68382c87dea9b ## "if" påstand +<<<<<<< HEAD Oppgaven til en `if` påstand er å evaluere en betingelse (condition). Om resultatet er sant (`true`) kjøres koden. +======= +The `if(...)` statement evaluates a condition in parentheses and, if the result is `true`, executes a block of code. +>>>>>>> 540d753e90789205fc6e75c502f68382c87dea9b Eksempel: @@ -66,9 +78,13 @@ if (cond) { ## Else "leddsetningen" +<<<<<<< HEAD Det hender at man ofte vil kjøre én spesifikk kode hvis betingelsen i "if" påstanden stemmer, og ellers en annen kode hvis den ikke stemmer. For å gjøre dette bruker man noe som kalles for en "else statement". Denne kjøres uansett hvis "if" påstanden er false. Eksempel: +======= +The `if` statement may contain an optional `else` block. It executes when the condition is falsy. +>>>>>>> 540d753e90789205fc6e75c502f68382c87dea9b ```js run let year = prompt( @@ -108,7 +124,11 @@ Fremgangsmåten til JavaScript er å først sjekke om `alder == 18)`. Hvis det e Merk: Det kan være flere `else if` påstander, men bare en `else` påstand. +<<<<<<< HEAD ## Ternary operatør '?' +======= +## Conditional operator '?' +>>>>>>> 540d753e90789205fc6e75c502f68382c87dea9b Det hender at man ønsker å sette en variabel basert på en betingelse. @@ -129,11 +149,17 @@ if (age > 18) { alert(accessAllowed); ``` +<<<<<<< HEAD For å gjøre dette på en enklere måte, kan vi bruke noe som heter "ternary operator". Noen kaller denne også for "question mark operator". Dettte er fordi denne operatøren brukes med et `?`-tegn. "Ternary" betyr at operatøren har tre "operander", som er tegnene som brukes i uttrykket. Denne er faktisk den eneste operatøren i JavaScript som har tre operander. Syntaksen er som følger: +======= +The so-called "conditional" or "question mark" operator lets us do that in a shorter and simpler way. + +The operator is represented by a question mark `?`. Sometimes it's called "ternary", because the operator has three operands. It is actually the one and only operator in JavaScript which has that many. +>>>>>>> 540d753e90789205fc6e75c502f68382c87dea9b ```js let result = condition ? value1 : value2; @@ -147,7 +173,11 @@ For eksempel: let accessAllowed = age > 18 ? true : false; ``` +<<<<<<< HEAD Teknisk sett kan vi sette paranteser rundt `alder > 18`. Men spørsmålstegnet i en ternary operatør har en lav rang, og vil dermed bli kjørt etter `>`-sjekken. +======= +Technically, we can omit the parentheses around `age > 18`. The question mark operator has a low precedence, so it executes after the comparison `>`. +>>>>>>> 540d753e90789205fc6e75c502f68382c87dea9b Dette eksemplet vil fungere likt som det forrige: @@ -191,10 +221,17 @@ alert(message); Det kan vøre uvant å forstå hva som foregår her med en gang. Tar vi en nærmere kikk derimot, ser vi at det bare er flere sekvenser med betingelser: +<<<<<<< HEAD 1. Det første spørsmålstegnet sjekker om `age < 3`. 2. Om det er "true" returnerer den `'Hi, baby!'`. Hvis den ikke er "true", går den til neste verdien etter kolontegenet '":"', som er `age < 18`. 3. Om det "true", returner den `'Hello!'`. Hvis den ikke er "true", går den til neste verdien etter kolontegenet '":"', som er `age < 100`. 4. Om det "true", returner den `'Greetings!'`. Hvis den ikke er "true", går den til neste verdien etter kolontegenet '":"', som er `'What an unusual age!'`. +======= +1. The first question mark checks whether `age < 3`. +2. If true -- it returns `'Hi, baby!'`. Otherwise, it continues to the expression after the colon ":", checking `age < 18`. +3. If that's true -- it returns `'Hello!'`. Otherwise, it continues to the expression after the next colon ":", checking `age < 100`. +4. If that's true -- it returns `'Greetings!'`. Otherwise, it continues to the expression after the last colon ":", returning `'What an unusual age!'`. +>>>>>>> 540d753e90789205fc6e75c502f68382c87dea9b Her kan du se hvordan det ville sett ut med `if..else`: @@ -227,7 +264,11 @@ Avhengig om påstanden `selskap == 'Netscape` stemmer eller ikke, vil enten den Her satt vi ikke resultatet til en variabel, men kjørte forskjellig kode avhengig av påstanden. +<<<<<<< HEAD **Vi anbefaler ikke at man bruker spørsmålstegnet på denne måten.** +======= +**It's not recommended to use the question mark operator in this way.** +>>>>>>> 540d753e90789205fc6e75c502f68382c87dea9b Å skrive det på denne måten er kortere enn en `if` påstand, som kan være attraktivt for mange programmerere. Men det er vanskeligere å lese, og sees dermed på som dårlig vane. diff --git a/1-js/02-first-steps/11-logical-operators/2-alert-or/solution.md b/1-js/02-first-steps/11-logical-operators/2-alert-or/solution.md index 8f4d664e8..f85b56366 100644 --- a/1-js/02-first-steps/11-logical-operators/2-alert-or/solution.md +++ b/1-js/02-first-steps/11-logical-operators/2-alert-or/solution.md @@ -6,7 +6,7 @@ alert( alert(1) || 2 || alert(3) ); The call to `alert` does not return a value. Or, in other words, it returns `undefined`. -1. The first OR `||` evaluates it's left operand `alert(1)`. That shows the first message with `1`. +1. The first OR `||` evaluates its left operand `alert(1)`. That shows the first message with `1`. 2. The `alert` returns `undefined`, so OR goes on to the second operand searching for a truthy value. 3. The second operand `2` is truthy, so the execution is halted, `2` is returned and then shown by the outer alert. diff --git a/1-js/02-first-steps/11-logical-operators/3-alert-1-null-2/solution.md b/1-js/02-first-steps/11-logical-operators/3-alert-1-null-2/solution.md index 5c2455ef4..368b59409 100644 --- a/1-js/02-first-steps/11-logical-operators/3-alert-1-null-2/solution.md +++ b/1-js/02-first-steps/11-logical-operators/3-alert-1-null-2/solution.md @@ -1,6 +1,6 @@ The answer: `null`, because it's the first falsy value from the list. ```js run -alert( 1 && null && 2 ); +alert(1 && null && 2); ``` diff --git a/1-js/02-first-steps/11-logical-operators/6-check-if-in-range/task.md b/1-js/02-first-steps/11-logical-operators/6-check-if-in-range/task.md index cc00ca9fc..fc9e336c1 100644 --- a/1-js/02-first-steps/11-logical-operators/6-check-if-in-range/task.md +++ b/1-js/02-first-steps/11-logical-operators/6-check-if-in-range/task.md @@ -4,6 +4,6 @@ importance: 3 # Check the range between -Write an "if" condition to check that `age` is between `14` and `90` inclusively. +Write an `if` condition to check that `age` is between `14` and `90` inclusively. "Inclusively" means that `age` can reach the edges `14` or `90`. diff --git a/1-js/02-first-steps/11-logical-operators/7-check-if-out-range/task.md b/1-js/02-first-steps/11-logical-operators/7-check-if-out-range/task.md index 7c22d6ad1..9b947d00f 100644 --- a/1-js/02-first-steps/11-logical-operators/7-check-if-out-range/task.md +++ b/1-js/02-first-steps/11-logical-operators/7-check-if-out-range/task.md @@ -4,6 +4,6 @@ importance: 3 # Check the range outside -Write an `if` condition to check that `age` is NOT between 14 and 90 inclusively. +Write an `if` condition to check that `age` is NOT between `14` and `90` inclusively. Create two variants: the first one using NOT `!`, the second one -- without it. diff --git a/1-js/02-first-steps/11-logical-operators/9-check-login/solution.md b/1-js/02-first-steps/11-logical-operators/9-check-login/solution.md index b535650ec..604606259 100644 --- a/1-js/02-first-steps/11-logical-operators/9-check-login/solution.md +++ b/1-js/02-first-steps/11-logical-operators/9-check-login/solution.md @@ -3,19 +3,19 @@ ```js run demo let userName = prompt("Who's there?", ''); -if (userName == 'Admin') { +if (userName === 'Admin') { let pass = prompt('Password?', ''); - if (pass == 'TheMaster') { + if (pass === 'TheMaster') { alert( 'Welcome!' ); - } else if (pass == '' || pass == null) { - alert( 'Canceled.' ); + } else if (pass === '' || pass === null) { + alert( 'Canceled' ); } else { alert( 'Wrong password' ); } -} else if (userName == '' || userName == null) { +} else if (userName === '' || userName === null) { alert( 'Canceled' ); } else { alert( "I don't know you" ); diff --git a/1-js/02-first-steps/11-logical-operators/9-check-login/task.md b/1-js/02-first-steps/11-logical-operators/9-check-login/task.md index 0728efad1..290a52642 100644 --- a/1-js/02-first-steps/11-logical-operators/9-check-login/task.md +++ b/1-js/02-first-steps/11-logical-operators/9-check-login/task.md @@ -6,13 +6,13 @@ importance: 3 Write the code which asks for a login with `prompt`. -If the visitor enters `"Admin"`, then `prompt` for a password, if the input is an empty line or `key:Esc` -- show "Canceled.", if it's another string -- then show "I don't know you". +If the visitor enters `"Admin"`, then `prompt` for a password, if the input is an empty line or `key:Esc` -- show "Canceled", if it's another string -- then show "I don't know you". The password is checked as follows: - If it equals "TheMaster", then show "Welcome!", - Another string -- show "Wrong password", -- For an empty string or cancelled input, show "Canceled." +- For an empty string or cancelled input, show "Canceled" The schema: diff --git a/1-js/02-first-steps/11-logical-operators/article.md b/1-js/02-first-steps/11-logical-operators/article.md index 4932020ae..78c4fd2f1 100644 --- a/1-js/02-first-steps/11-logical-operators/article.md +++ b/1-js/02-first-steps/11-logical-operators/article.md @@ -1,6 +1,6 @@ # Logical operators -There are three logical operators in JavaScript: `||` (OR), `&&` (AND), `!` (NOT). +There are four logical operators in JavaScript: `||` (OR), `&&` (AND), `!` (NOT), `??` (Nullish Coalescing). Here we cover the first three, the `??` operator is in the next article. Although they are called "logical", they can be applied to values of any type, not only boolean. Their result can also be of any type. @@ -64,7 +64,7 @@ if (hour < 10 || hour > 18 || isWeekend) { } ``` -## OR finds the first truthy value +## OR "||" finds the first truthy value [#or-finds-the-first-truthy-value] The logic described above is somewhat classical. Now, let's bring in the "extra" features of JavaScript. @@ -84,16 +84,16 @@ The OR `||` operator does the following: A value is returned in its original form, without the conversion. -In other words, a chain of OR `"||"` returns the first truthy value or the last one if no such value is found. +In other words, a chain of OR `||` returns the first truthy value or the last one if no truthy value is found. For instance: ```js run alert( 1 || 0 ); // 1 (1 is truthy) -alert( true || 'no matter what' ); // (true is truthy) alert( null || 1 ); // 1 (1 is the first truthy value) alert( null || 0 || 1 ); // 1 (the first truthy value) + alert( undefined || null || 0 ); // 0 (all falsy, returns the last value) ``` @@ -101,53 +101,40 @@ This leads to some interesting usage compared to a "pure, classical, boolean-onl 1. **Getting the first truthy value from a list of variables or expressions.** - Imagine we have several variables which can either contain data or be `null/undefined`. How can we find the first one with data? + For instance, we have `firstName`, `lastName` and `nickName` variables, all optional (i.e. can be undefined or have falsy values). - We can use OR `||`: + Let's use OR `||` to choose the one that has the data and show it (or `"Anonymous"` if nothing set): ```js run - let currentUser = null; - let defaultUser = "John"; + let firstName = ""; + let lastName = ""; + let nickName = "SuperCoder"; *!* - let name = currentUser || defaultUser || "unnamed"; + alert( firstName || lastName || nickName || "Anonymous"); // SuperCoder */!* - - alert( name ); // selects "John" – the first truthy value ``` - If both `currentUser` and `defaultUser` were falsy, `"unnamed"` would be the result. -2. **Short-circuit evaluation.** - - Operands can be not only values, but arbitrary expressions. OR evaluates and tests them from left to right. The evaluation stops when a truthy value is reached, and the value is returned. This process is called "a short-circuit evaluation" because it goes as short as possible from left to right. + If all variables were falsy, `"Anonymous"` would show up. - This is clearly seen when the expression given as the second argument has a side effect like a variable assignment. +2. **Short-circuit evaluation.** - In the example below, `x` does not get assigned: + Another feature of OR `||` operator is the so-called "short-circuit" evaluation. - ```js run no-beautify - let x; + It means that `||` processes its arguments until the first truthy value is reached, and then the value is returned immediately, without even touching the other argument. - *!*true*/!* || (x = 1); + The importance of this feature becomes obvious if an operand isn't just a value, but an expression with a side effect, such as a variable assignment or a function call. - alert(x); // undefined, because (x = 1) not evaluated - ``` - - If, instead, the first argument is `false`, `||` evaluates the second one, thus running the assignment: + In the example below, only the second message is printed: ```js run no-beautify - let x; - - *!*false*/!* || (x = 1); - - alert(x); // 1 + *!*true*/!* || alert("not printed"); + *!*false*/!* || alert("printed"); ``` - An assignment is a simple case. Other side effects can also be involved. + In the first line, the OR `||` operator stops the evaluation immediately upon seeing `true`, so the `alert` isn't run. - As we can see, such a use case is a "shorter way of doing `if`". The first operand is converted to boolean. If it's false, the second one is evaluated. - - Most of time, it's better to use a "regular" `if` to keep the code easy to understand, but sometimes this can be handy. + Sometimes, people use this feature to execute commands only if the condition on the left part is falsy. ## && (AND) @@ -186,7 +173,7 @@ if (1 && 0) { // evaluated as true && false ``` -## AND finds the first falsy value +## AND "&&" finds the first falsy value Given multiple AND'ed values: @@ -236,7 +223,8 @@ The precedence of AND `&&` operator is higher than OR `||`. So the code `a && b || c && d` is essentially the same as if the `&&` expressions were in parentheses: `(a && b) || (c && d)`. ```` -Just like OR, the AND `&&` operator can sometimes replace `if`. +````warn header="Don't replace `if` with `||` or `&&`" +Sometimes, people use the AND `&&` operator as a "shorter way to write `if`". For instance: @@ -253,14 +241,12 @@ So we basically have an analogue for: ```js run let x = 1; -if (x > 0) { - alert( 'Greater than zero!' ); -} +if (x > 0) alert( 'Greater than zero!' ); ``` -The variant with `&&` appears shorter. But `if` is more obvious and tends to be a little bit more readable. +Although, the variant with `&&` appears shorter, `if` is more obvious and tends to be a little bit more readable. So we recommend using every construct for its purpose: use `if` if we want `if` and use `&&` if we want AND. +```` -So we recommend using every construct for its purpose: use `if` if we want if and use `&&` if we want AND. ## ! (NOT) diff --git a/1-js/02-first-steps/12-nullish-coalescing-operator/article.md b/1-js/02-first-steps/12-nullish-coalescing-operator/article.md new file mode 100644 index 000000000..0b2f092ab --- /dev/null +++ b/1-js/02-first-steps/12-nullish-coalescing-operator/article.md @@ -0,0 +1,169 @@ +# Nullish coalescing operator '??' + +[recent browser="new"] + +The nullish coalescing operator is written as two question marks `??`. + +As it treats `null` and `undefined` similarly, we'll use a special term here, in this article. For brevity, we'll say that a value is "defined" when it's neither `null` nor `undefined`. + +The result of `a ?? b` is: +- if `a` is defined, then `a`, +- if `a` isn't defined, then `b`. + +In other words, `??` returns the first argument if it's not `null/undefined`. Otherwise, the second one. + +The nullish coalescing operator isn't anything completely new. It's just a nice syntax to get the first "defined" value of the two. + +We can rewrite `result = a ?? b` using the operators that we already know, like this: + +```js +result = (a !== null && a !== undefined) ? a : b; +``` + +Now it should be absolutely clear what `??` does. Let's see where it helps. + +The common use case for `??` is to provide a default value. + +For example, here we show `user` if its value isn't `null/undefined`, otherwise `Anonymous`: + +```js run +let user; + +alert(user ?? "Anonymous"); // Anonymous (user is undefined) +``` + +Here's the example with `user` assigned to a name: + +```js run +let user = "John"; + +alert(user ?? "Anonymous"); // John (user is not null/undefined) +``` + +We can also use a sequence of `??` to select the first value from a list that isn't `null/undefined`. + +Let's say we have a user's data in variables `firstName`, `lastName` or `nickName`. All of them may be not defined, if the user decided not to fill in the corresponding values. + +We'd like to display the user name using one of these variables, or show "Anonymous" if all of them are `null/undefined`. + +Let's use the `??` operator for that: + +```js run +let firstName = null; +let lastName = null; +let nickName = "Supercoder"; + +// shows the first defined value: +*!* +alert(firstName ?? lastName ?? nickName ?? "Anonymous"); // Supercoder +*/!* +``` + +## Comparison with || + +The OR `||` operator can be used in the same way as `??`, as it was described in the [previous chapter](info:logical-operators#or-finds-the-first-truthy-value). + +For example, in the code above we could replace `??` with `||` and still get the same result: + +```js run +let firstName = null; +let lastName = null; +let nickName = "Supercoder"; + +// shows the first truthy value: +*!* +alert(firstName || lastName || nickName || "Anonymous"); // Supercoder +*/!* +``` + +Historically, the OR `||` operator was there first. It's been there since the beginning of JavaScript, so developers were using it for such purposes for a long time. + +On the other hand, the nullish coalescing operator `??` was added to JavaScript only recently, and the reason for that was that people weren't quite happy with `||`. + +The important difference between them is that: +- `||` returns the first *truthy* value. +- `??` returns the first *defined* value. + +In other words, `||` doesn't distinguish between `false`, `0`, an empty string `""` and `null/undefined`. They are all the same -- falsy values. If any of these is the first argument of `||`, then we'll get the second argument as the result. + +In practice though, we may want to use default value only when the variable is `null/undefined`. That is, when the value is really unknown/not set. + +For example, consider this: + +```js run +let height = 0; + +alert(height || 100); // 100 +alert(height ?? 100); // 0 +``` + +- The `height || 100` checks `height` for being a falsy value, and it's `0`, falsy indeed. + - so the result of `||` is the second argument, `100`. +- The `height ?? 100` checks `height` for being `null/undefined`, and it's not, + - so the result is `height` "as is", that is `0`. + +In practice, the zero height is often a valid value, that shouldn't be replaced with the default. So `??` does just the right thing. + +## Precedence + +The precedence of the `??` operator is the same as `||`. They both equal `3` in the [MDN table](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Operator_Precedence#Table). + +That means that, just like `||`, the nullish coalescing operator `??` is evaluated before `=` and `?`, but after most other operations, such as `+`, `*`. + +So we may need to add parentheses in expressions like this: + +```js run +let height = null; +let width = null; + +// important: use parentheses +let area = (height ?? 100) * (width ?? 50); + +alert(area); // 5000 +``` + +Otherwise, if we omit parentheses, then as `*` has the higher precedence than `??`, it would execute first, leading to incorrect results. + +```js +// without parentheses +let area = height ?? 100 * width ?? 50; + +// ...works this way (not what we want): +let area = height ?? (100 * width) ?? 50; +``` + +### Using ?? with && or || + +Due to safety reasons, JavaScript forbids using `??` together with `&&` and `||` operators, unless the precedence is explicitly specified with parentheses. + +The code below triggers a syntax error: + +```js run +let x = 1 && 2 ?? 3; // Syntax error +``` + +The limitation is surely debatable, it was added to the language specification with the purpose to avoid programming mistakes, when people start to switch from `||` to `??`. + +Use explicit parentheses to work around it: + +```js run +*!* +let x = (1 && 2) ?? 3; // Works +*/!* + +alert(x); // 2 +``` + +## Summary + +- The nullish coalescing operator `??` provides a short way to choose the first "defined" value from a list. + + It's used to assign default values to variables: + + ```js + // set height=100, if height is null or undefined + height = height ?? 100; + ``` + +- The operator `??` has a very low precedence, only a bit higher than `?` and `=`, so consider adding parentheses when using it in an expression. +- It's forbidden to use it with `||` or `&&` without explicit parentheses. diff --git a/1-js/02-first-steps/12-while-for/1-loop-last-value/solution.md b/1-js/02-first-steps/13-while-for/1-loop-last-value/solution.md similarity index 100% rename from 1-js/02-first-steps/12-while-for/1-loop-last-value/solution.md rename to 1-js/02-first-steps/13-while-for/1-loop-last-value/solution.md diff --git a/1-js/02-first-steps/12-while-for/1-loop-last-value/task.md b/1-js/02-first-steps/13-while-for/1-loop-last-value/task.md similarity index 100% rename from 1-js/02-first-steps/12-while-for/1-loop-last-value/task.md rename to 1-js/02-first-steps/13-while-for/1-loop-last-value/task.md diff --git a/1-js/02-first-steps/12-while-for/2-which-value-while/solution.md b/1-js/02-first-steps/13-while-for/2-which-value-while/solution.md similarity index 100% rename from 1-js/02-first-steps/12-while-for/2-which-value-while/solution.md rename to 1-js/02-first-steps/13-while-for/2-which-value-while/solution.md diff --git a/1-js/02-first-steps/12-while-for/2-which-value-while/task.md b/1-js/02-first-steps/13-while-for/2-which-value-while/task.md similarity index 100% rename from 1-js/02-first-steps/12-while-for/2-which-value-while/task.md rename to 1-js/02-first-steps/13-while-for/2-which-value-while/task.md diff --git a/1-js/02-first-steps/12-while-for/3-which-value-for/solution.md b/1-js/02-first-steps/13-while-for/3-which-value-for/solution.md similarity index 100% rename from 1-js/02-first-steps/12-while-for/3-which-value-for/solution.md rename to 1-js/02-first-steps/13-while-for/3-which-value-for/solution.md diff --git a/1-js/02-first-steps/12-while-for/3-which-value-for/task.md b/1-js/02-first-steps/13-while-for/3-which-value-for/task.md similarity index 100% rename from 1-js/02-first-steps/12-while-for/3-which-value-for/task.md rename to 1-js/02-first-steps/13-while-for/3-which-value-for/task.md diff --git a/1-js/02-first-steps/12-while-for/4-for-even/solution.md b/1-js/02-first-steps/13-while-for/4-for-even/solution.md similarity index 100% rename from 1-js/02-first-steps/12-while-for/4-for-even/solution.md rename to 1-js/02-first-steps/13-while-for/4-for-even/solution.md diff --git a/1-js/02-first-steps/12-while-for/4-for-even/task.md b/1-js/02-first-steps/13-while-for/4-for-even/task.md similarity index 100% rename from 1-js/02-first-steps/12-while-for/4-for-even/task.md rename to 1-js/02-first-steps/13-while-for/4-for-even/task.md diff --git a/1-js/02-first-steps/12-while-for/5-replace-for-while/solution.md b/1-js/02-first-steps/13-while-for/5-replace-for-while/solution.md similarity index 100% rename from 1-js/02-first-steps/12-while-for/5-replace-for-while/solution.md rename to 1-js/02-first-steps/13-while-for/5-replace-for-while/solution.md diff --git a/1-js/02-first-steps/12-while-for/5-replace-for-while/task.md b/1-js/02-first-steps/13-while-for/5-replace-for-while/task.md similarity index 100% rename from 1-js/02-first-steps/12-while-for/5-replace-for-while/task.md rename to 1-js/02-first-steps/13-while-for/5-replace-for-while/task.md diff --git a/1-js/02-first-steps/12-while-for/6-repeat-until-correct/solution.md b/1-js/02-first-steps/13-while-for/6-repeat-until-correct/solution.md similarity index 80% rename from 1-js/02-first-steps/12-while-for/6-repeat-until-correct/solution.md rename to 1-js/02-first-steps/13-while-for/6-repeat-until-correct/solution.md index 2e04a78c4..c7de5f09b 100644 --- a/1-js/02-first-steps/12-while-for/6-repeat-until-correct/solution.md +++ b/1-js/02-first-steps/13-while-for/6-repeat-until-correct/solution.md @@ -10,6 +10,6 @@ do { The loop `do..while` repeats while both checks are truthy: 1. The check for `num <= 100` -- that is, the entered value is still not greater than `100`. -2. The check `&& num` is false when `num` is `null` or a empty string. Then the `while` loop stops too. +2. The check `&& num` is false when `num` is `null` or an empty string. Then the `while` loop stops too. P.S. If `num` is `null` then `num <= 100` is `true`, so without the 2nd check the loop wouldn't stop if the user clicks CANCEL. Both checks are required. diff --git a/1-js/02-first-steps/12-while-for/6-repeat-until-correct/task.md b/1-js/02-first-steps/13-while-for/6-repeat-until-correct/task.md similarity index 100% rename from 1-js/02-first-steps/12-while-for/6-repeat-until-correct/task.md rename to 1-js/02-first-steps/13-while-for/6-repeat-until-correct/task.md diff --git a/1-js/02-first-steps/12-while-for/7-list-primes/solution.md b/1-js/02-first-steps/13-while-for/7-list-primes/solution.md similarity index 53% rename from 1-js/02-first-steps/12-while-for/7-list-primes/solution.md rename to 1-js/02-first-steps/13-while-for/7-list-primes/solution.md index 9ff0663d7..b4b64b6fa 100644 --- a/1-js/02-first-steps/12-while-for/7-list-primes/solution.md +++ b/1-js/02-first-steps/13-while-for/7-list-primes/solution.md @@ -26,4 +26,4 @@ for (let i = 2; i <= n; i++) { // for each i... } ``` -There's a lot of space to opimize it. For instance, we could look for the divisors from `2` to square root of `i`. But anyway, if we want to be really efficient for large intervals, we need to change the approach and rely on advanced maths and complex algorithms like [Quadratic sieve](https://en.wikipedia.org/wiki/Quadratic_sieve), [General number field sieve](https://en.wikipedia.org/wiki/General_number_field_sieve) etc. +There's a lot of space to optimize it. For instance, we could look for the divisors from `2` to square root of `i`. But anyway, if we want to be really efficient for large intervals, we need to change the approach and rely on advanced maths and complex algorithms like [Quadratic sieve](https://en.wikipedia.org/wiki/Quadratic_sieve), [General number field sieve](https://en.wikipedia.org/wiki/General_number_field_sieve) etc. diff --git a/1-js/02-first-steps/12-while-for/7-list-primes/task.md b/1-js/02-first-steps/13-while-for/7-list-primes/task.md similarity index 100% rename from 1-js/02-first-steps/12-while-for/7-list-primes/task.md rename to 1-js/02-first-steps/13-while-for/7-list-primes/task.md diff --git a/1-js/02-first-steps/12-while-for/article.md b/1-js/02-first-steps/13-while-for/article.md similarity index 83% rename from 1-js/02-first-steps/12-while-for/article.md rename to 1-js/02-first-steps/13-while-for/article.md index 992c21af6..d1b749888 100644 --- a/1-js/02-first-steps/12-while-for/article.md +++ b/1-js/02-first-steps/13-while-for/article.md @@ -6,6 +6,19 @@ For example, outputting goods from a list one after another or just running the *Loops* are a way to repeat the same code multiple times. +```smart header="The for..of and for..in loops" +A small announcement for advanced readers. + +This article covers only basic loops: `while`, `do..while` and `for(..;..;..)`. + +If you came to this article searching for other types of loops, here are the pointers: + +- See [for..in](info:object#forin) to loop over object properties. +- See [for..of](info:array#loops) and [iterables](info:iterable) for looping over arrays and iterable objects. + +Otherwise, please read on. +``` + ## The "while" loop The `while` loop has the following syntax: @@ -17,7 +30,7 @@ while (condition) { } ``` -While the `condition` is `true`, the `code` from the loop body is executed. +While the `condition` is truthy, the `code` from the loop body is executed. For instance, the loop below outputs `i` while `i < 3`: @@ -47,8 +60,8 @@ while (i) { // when i becomes 0, the condition becomes falsy, and the loop stops } ``` -````smart header="Brackets are not required for a single-line body" -If the loop body has a single statement, we can omit the brackets `{…}`: +````smart header="Curly braces are not required for a single-line body" +If the loop body has a single statement, we can omit the curly braces `{…}`: ```js run let i = 3; @@ -84,7 +97,7 @@ This form of syntax should only be used when you want the body of the loop to ex ## The "for" loop -The `for` loop is the most commonly used loop. +The `for` loop is more complex, but it's also the most commonly used loop. It looks like this: @@ -106,13 +119,13 @@ Let's examine the `for` statement part-by-part: | part | | | |-------|----------|----------------------------------------------------------------------------| -| begin | `i = 0` | Executes once upon entering the loop. | +| begin | `let i = 0` | Executes once upon entering the loop. | | condition | `i < 3`| Checked before every loop iteration. If false, the loop stops. | -| step| `i++` | Executes after the body on each iteration but before the condition check. | | body | `alert(i)`| Runs again and again while the condition is truthy. | - +| step| `i++` | Executes after the body on each iteration. | The general loop algorithm works like this: + ``` Run begin → (if condition → run body and run step) @@ -121,6 +134,8 @@ Run begin → ... ``` +That is, `begin` executes once, and then it iterates: after each `condition` test, `body` and `step` are executed. + If you are new to loops, it could help to go back to the example and reproduce how it runs step-by-step on a piece of paper. Here's exactly what happens in our case: @@ -160,10 +175,8 @@ for (i = 0; i < 3; i++) { // use an existing variable alert(i); // 3, visible, because declared outside of the loop ``` - ```` - ### Skipping parts Any part of `for` can be skipped. @@ -210,7 +223,7 @@ But we can force the exit at any time using the special `break` directive. For example, the loop below asks the user for a series of numbers, "breaking" when no number is entered: -```js +```js run let sum = 0; while (true) { @@ -254,7 +267,7 @@ For even values of `i`, the `continue` directive stops executing the body and pa ````smart header="The `continue` directive helps decrease nesting" A loop that shows odd values could look like this: -```js +```js run for (let i = 0; i < 10; i++) { if (i % 2) { @@ -266,7 +279,7 @@ for (let i = 0; i < 10; i++) { From a technical point of view, this is identical to the example above. Surely, we can just wrap the code in an `if` block instead of using `continue`. -But as a side-effect, this created one more level of nesting (the `alert` call inside the curly braces). If the code inside of`if` is longer than a few lines, that may decrease the overall readability. +But as a side effect, this created one more level of nesting (the `alert` call inside the curly braces). If the code inside of `if` is longer than a few lines, that may decrease the overall readability. ```` ````warn header="No `break/continue` to the right side of '?'" @@ -284,13 +297,11 @@ if (i > 5) { ...and rewrite it using a question mark: - ```js no-beautify (i > 5) ? alert(i) : *!*continue*/!*; // continue isn't allowed here ``` -...it stops working. Code like this will give a syntax error: - +...it stops working: there's a syntax error. This is just another reason not to use the question mark operator `?` instead of `if`. ```` @@ -299,7 +310,7 @@ This is just another reason not to use the question mark operator `?` instead of Sometimes we need to break out from multiple nested loops at once. -For example, in the code below we loop over `i` and `j`, prompting for the coordinates `(i, j)` from `(0,0)` to `(3,3)`: +For example, in the code below we loop over `i` and `j`, prompting for the coordinates `(i, j)` from `(0,0)` to `(2,2)`: ```js run no-beautify for (let i = 0; i < 3; i++) { @@ -308,8 +319,7 @@ for (let i = 0; i < 3; i++) { let input = prompt(`Value at coords (${i},${j})`, ''); - // what if I want to exit from here to Done (below)? - + // what if we want to exit from here to Done (below)? } } @@ -318,9 +328,10 @@ alert('Done!'); We need a way to stop the process if the user cancels the input. -The ordinary `break` after `input` would only break the inner loop. That's not sufficient--labels, come to the rescue! +The ordinary `break` after `input` would only break the inner loop. That's not sufficient -- labels, come to the rescue! A *label* is an identifier with a colon before a loop: + ```js labelName: for (...) { ... @@ -342,6 +353,7 @@ The `break <labelName>` statement in the loop below breaks out to the label: // do something with the value... } } + alert('Done!'); ``` @@ -358,17 +370,30 @@ for (let i = 0; i < 3; i++) { ... } The `continue` directive can also be used with a label. In this case, code execution jumps to the next iteration of the labeled loop. -````warn header="Labels are not a \"goto\"" +````warn header="Labels do not allow to \"jump\" anywhere" Labels do not allow us to jump into an arbitrary place in the code. For example, it is impossible to do this: + ```js -break label; // jumps to label? No. +break label; // jump to the label below (doesn't work) label: for (...) ``` -A call to `break/continue` is only possible from inside a loop and the label must be somewhere above the directive. +A `break` directive must be inside a code block. Technically, any labelled code block will do, e.g.: + +```js +label: { + // ... + break label; // works + // ... +} +``` + +...Although, 99.9% of the time `break` is used inside loops, as we've seen in the examples above. + +A `continue` is only possible from inside a loop. ```` ## Summary diff --git a/1-js/02-first-steps/14-function-basics/1-if-else-required/solution.md b/1-js/02-first-steps/14-function-basics/1-if-else-required/solution.md deleted file mode 100644 index e41c80418..000000000 --- a/1-js/02-first-steps/14-function-basics/1-if-else-required/solution.md +++ /dev/null @@ -1 +0,0 @@ -No difference. \ No newline at end of file diff --git a/1-js/02-first-steps/14-function-basics/function_basics.png b/1-js/02-first-steps/14-function-basics/function_basics.png deleted file mode 100644 index f5e6f9418..000000000 Binary files a/1-js/02-first-steps/14-function-basics/function_basics.png and /dev/null differ diff --git a/1-js/02-first-steps/14-function-basics/function_basics@2x.png b/1-js/02-first-steps/14-function-basics/function_basics@2x.png deleted file mode 100644 index c31b2636a..000000000 Binary files a/1-js/02-first-steps/14-function-basics/function_basics@2x.png and /dev/null differ diff --git a/1-js/02-first-steps/13-switch/1-rewrite-switch-if-else/solution.md b/1-js/02-first-steps/14-switch/1-rewrite-switch-if-else/solution.md similarity index 100% rename from 1-js/02-first-steps/13-switch/1-rewrite-switch-if-else/solution.md rename to 1-js/02-first-steps/14-switch/1-rewrite-switch-if-else/solution.md diff --git a/1-js/02-first-steps/13-switch/1-rewrite-switch-if-else/task.md b/1-js/02-first-steps/14-switch/1-rewrite-switch-if-else/task.md similarity index 100% rename from 1-js/02-first-steps/13-switch/1-rewrite-switch-if-else/task.md rename to 1-js/02-first-steps/14-switch/1-rewrite-switch-if-else/task.md diff --git a/1-js/02-first-steps/13-switch/2-rewrite-if-switch/solution.md b/1-js/02-first-steps/14-switch/2-rewrite-if-switch/solution.md similarity index 100% rename from 1-js/02-first-steps/13-switch/2-rewrite-if-switch/solution.md rename to 1-js/02-first-steps/14-switch/2-rewrite-if-switch/solution.md diff --git a/1-js/02-first-steps/13-switch/2-rewrite-if-switch/task.md b/1-js/02-first-steps/14-switch/2-rewrite-if-switch/task.md similarity index 100% rename from 1-js/02-first-steps/13-switch/2-rewrite-if-switch/task.md rename to 1-js/02-first-steps/14-switch/2-rewrite-if-switch/task.md diff --git a/1-js/02-first-steps/13-switch/article.md b/1-js/02-first-steps/14-switch/article.md similarity index 95% rename from 1-js/02-first-steps/13-switch/article.md rename to 1-js/02-first-steps/14-switch/article.md index 258f24068..d86babcec 100644 --- a/1-js/02-first-steps/13-switch/article.md +++ b/1-js/02-first-steps/14-switch/article.md @@ -47,7 +47,7 @@ switch (a) { break; */!* case 5: - alert( 'Too large' ); + alert( 'Too big' ); break; default: alert( "I don't know such values" ); @@ -117,7 +117,7 @@ Several variants of `case` which share the same code can be grouped. For example, if we want the same code to run for `case 3` and `case 5`: ```js run no-beautify -let a = 2 + 2; +let a = 3; switch (a) { case 4: @@ -125,7 +125,7 @@ switch (a) { break; *!* - case 3: // (*) grouped two cases + case 3: // (*) grouped two cases case 5: alert('Wrong!'); alert("Why don't you take a math class?"); @@ -139,7 +139,7 @@ switch (a) { Now both `3` and `5` show the same message. -The ability to "group" cases is a side-effect of how `switch/case` works without `break`. Here the execution of `case 3` starts from the line `(*)` and goes through `case 5`, because there's no `break`. +The ability to "group" cases is a side effect of how `switch/case` works without `break`. Here the execution of `case 3` starts from the line `(*)` and goes through `case 5`, because there's no `break`. ## Type matters diff --git a/1-js/02-first-steps/15-function-basics/1-if-else-required/solution.md b/1-js/02-first-steps/15-function-basics/1-if-else-required/solution.md new file mode 100644 index 000000000..e3a0df77c --- /dev/null +++ b/1-js/02-first-steps/15-function-basics/1-if-else-required/solution.md @@ -0,0 +1,3 @@ +No difference! + +In both cases, `return confirm('Did parents allow you?')` executes exactly when the `if` condition is falsy. \ No newline at end of file diff --git a/1-js/02-first-steps/14-function-basics/1-if-else-required/task.md b/1-js/02-first-steps/15-function-basics/1-if-else-required/task.md similarity index 100% rename from 1-js/02-first-steps/14-function-basics/1-if-else-required/task.md rename to 1-js/02-first-steps/15-function-basics/1-if-else-required/task.md diff --git a/1-js/02-first-steps/14-function-basics/2-rewrite-function-question-or/solution.md b/1-js/02-first-steps/15-function-basics/2-rewrite-function-question-or/solution.md similarity index 89% rename from 1-js/02-first-steps/14-function-basics/2-rewrite-function-question-or/solution.md rename to 1-js/02-first-steps/15-function-basics/2-rewrite-function-question-or/solution.md index c8ee9618f..e48502642 100644 --- a/1-js/02-first-steps/14-function-basics/2-rewrite-function-question-or/solution.md +++ b/1-js/02-first-steps/15-function-basics/2-rewrite-function-question-or/solution.md @@ -14,4 +14,4 @@ function checkAge(age) { } ``` -Note that the parentheses around `age > 18` are not required here. They exist for better readabilty. +Note that the parentheses around `age > 18` are not required here. They exist for better readability. diff --git a/1-js/02-first-steps/14-function-basics/2-rewrite-function-question-or/task.md b/1-js/02-first-steps/15-function-basics/2-rewrite-function-question-or/task.md similarity index 85% rename from 1-js/02-first-steps/14-function-basics/2-rewrite-function-question-or/task.md rename to 1-js/02-first-steps/15-function-basics/2-rewrite-function-question-or/task.md index 523bb127a..46da079c0 100644 --- a/1-js/02-first-steps/14-function-basics/2-rewrite-function-question-or/task.md +++ b/1-js/02-first-steps/15-function-basics/2-rewrite-function-question-or/task.md @@ -13,7 +13,7 @@ function checkAge(age) { if (age > 18) { return true; } else { - return confirm('Do you have your parents permission to access this page?'); + return confirm('Did parents allow you?'); } } ``` diff --git a/1-js/02-first-steps/14-function-basics/3-min/solution.md b/1-js/02-first-steps/15-function-basics/3-min/solution.md similarity index 100% rename from 1-js/02-first-steps/14-function-basics/3-min/solution.md rename to 1-js/02-first-steps/15-function-basics/3-min/solution.md diff --git a/1-js/02-first-steps/14-function-basics/3-min/task.md b/1-js/02-first-steps/15-function-basics/3-min/task.md similarity index 100% rename from 1-js/02-first-steps/14-function-basics/3-min/task.md rename to 1-js/02-first-steps/15-function-basics/3-min/task.md diff --git a/1-js/02-first-steps/14-function-basics/4-pow/solution.md b/1-js/02-first-steps/15-function-basics/4-pow/solution.md similarity index 75% rename from 1-js/02-first-steps/14-function-basics/4-pow/solution.md rename to 1-js/02-first-steps/15-function-basics/4-pow/solution.md index 5ef20c386..19fe9011f 100644 --- a/1-js/02-first-steps/14-function-basics/4-pow/solution.md +++ b/1-js/02-first-steps/15-function-basics/4-pow/solution.md @@ -14,10 +14,8 @@ let x = prompt("x?", ''); let n = prompt("n?", ''); if (n < 1) { - alert(`Power ${n} is not supported, - use an integer greater than 0`); + alert(`Power ${n} is not supported, use a positive integer`); } else { alert( pow(x, n) ); } ``` - diff --git a/1-js/02-first-steps/14-function-basics/4-pow/task.md b/1-js/02-first-steps/15-function-basics/4-pow/task.md similarity index 100% rename from 1-js/02-first-steps/14-function-basics/4-pow/task.md rename to 1-js/02-first-steps/15-function-basics/4-pow/task.md diff --git a/1-js/02-first-steps/14-function-basics/article.md b/1-js/02-first-steps/15-function-basics/article.md similarity index 71% rename from 1-js/02-first-steps/14-function-basics/article.md rename to 1-js/02-first-steps/15-function-basics/article.md index 18833cbf1..415fed3e0 100644 --- a/1-js/02-first-steps/14-function-basics/article.md +++ b/1-js/02-first-steps/15-function-basics/article.md @@ -20,9 +20,13 @@ function showMessage() { } ``` -The `function` keyword goes first, then goes the *name of the function*, then a list of *parameters* between the parentheses (empty in the example above) and finally the code of the function, also named "the function body", between curly braces. +The `function` keyword goes first, then goes the *name of the function*, then a list of *parameters* between the parentheses (comma-separated, empty in the example above, we'll see examples later) and finally the code of the function, also named "the function body", between curly braces. - +```js +function name(parameter1, parameter2, ... parameterN) { + // body +} +``` Our new function can be called by its name: `showMessage()`. @@ -101,7 +105,7 @@ showMessage(); alert( userName ); // *!*Bob*/!*, the value was modified by the function ``` -The outer variable is only used if there's no local one. So an occasional modification may happen if we forget `let`. +The outer variable is only used if there's no local one. If a same-named variable is declared inside the function then it *shadows* the outer one. For instance, in the code below the function uses the local `userName`. The outer one is ignored: @@ -128,31 +132,28 @@ Variables declared outside of any function, such as the outer `userName` in the Global variables are visible from any function (unless shadowed by locals). -Usually, a function declares all variables specific to its task. Global variables only store project-level data, and it's important that these variables are accessible from anywhere. Modern code has few or no globals. Most variables reside in their functions. +It's a good practice to minimize the use of global variables. Modern code has few or no globals. Most variables reside in their functions. Sometimes though, they can be useful to store project-level data. ``` ## Parameters -We can pass arbitrary data to functions using parameters (also called *function arguments*) . +We can pass arbitrary data to functions using parameters. In the example below, the function has two parameters: `from` and `text`. ```js run -function showMessage(*!*from, text*/!*) { // arguments: from, text +function showMessage(*!*from, text*/!*) { // parameters: from, text alert(from + ': ' + text); } -*!* -showMessage('Ann', 'Hello!'); // Ann: Hello! (*) -showMessage('Ann', "What's up?"); // Ann: What's up? (**) -*/!* +*!*showMessage('Ann', 'Hello!');*/!* // Ann: Hello! (*) +*!*showMessage('Ann', "What's up?");*/!* // Ann: What's up? (**) ``` When the function is called in lines `(*)` and `(**)`, the given values are copied to local variables `from` and `text`. Then the function uses them. Here's one more example: we have a variable `from` and pass it to the function. Please note: the function changes `from`, but the change is not seen outside, because a function always gets a copy of the value: - ```js run function showMessage(from, text) { @@ -171,9 +172,21 @@ showMessage(from, "Hello"); // *Ann*: Hello alert( from ); // Ann ``` +When a value is passed as a function parameter, it's also called an *argument*. + +In other words, to put these terms straight: + +- A parameter is the variable listed inside the parentheses in the function declaration (it's a declaration time term). +- An argument is the value that is passed to the function when it is called (it's a call time term). + +We declare functions listing their parameters, then call them passing arguments. + +In the example above, one might say: "the function `showMessage` is declared with two parameters, then called with two arguments: `from` and `"Hello"`". + + ## Default values -If a parameter is not provided, then its value becomes `undefined`. +If a function is called, but an argument is not provided, then the corresponding value becomes `undefined`. For instance, the aforementioned function `showMessage(from, text)` can be called with a single argument: @@ -181,9 +194,9 @@ For instance, the aforementioned function `showMessage(from, text)` can be calle showMessage("Ann"); ``` -That's not an error. Such a call would output `"Ann: undefined"`. There's no `text`, so it's assumed that `text === undefined`. +That's not an error. Such a call would output `"*Ann*: undefined"`. As the value for `text` isn't passed, it becomes `undefined`. -If we want to use a "default" `text` in this case, then we can specify it after `=`: +We can specify the so-called "default" (to use if omitted) value for a parameter in the function declaration, using `=`: ```js run function showMessage(from, *!*text = "no text given"*/!*) { @@ -193,7 +206,13 @@ function showMessage(from, *!*text = "no text given"*/!*) { showMessage("Ann"); // Ann: no text given ``` -Now if the `text` parameter is not passed, it will get the value `"no text given"` +Now if the `text` parameter is not passed, it will get the value `"no text given"`. + +The default value also jumps in if the parameter exists, but strictly equals `undefined`, like this: + +```js +showMessage("Ann", undefined); // Ann: no text given +``` Here `"no text given"` is a string, but it can be a more complex expression, which is only evaluated and assigned if the parameter is missing. So, this is also possible: @@ -205,16 +224,19 @@ function showMessage(from, text = anotherFunction()) { ``` ```smart header="Evaluation of default parameters" +In JavaScript, a default parameter is evaluated every time the function is called without the respective parameter. -In JavaScript, a default parameter is evaluated every time the function is called without the respective parameter. In the example above, `anotherFunction()` is called every time `showMessage()` is called without the `text` parameter. This is in contrast to some other languages like Python, where any default parameters are evaluated only once during the initial interpretation. +In the example above, `anotherFunction()` isn't called at all, if the `text` parameter is provided. +On the other hand, it's independently called every time when `text` is missing. ``` +````smart header="Default parameters in old JavaScript code" +Several years ago, JavaScript didn't support the syntax for default parameters. So people used other ways to specify them. -````smart header="Default parameters old-style" -Old editions of JavaScript did not support default parameters. So there are alternative ways to support them, that you can find mostly in the old scripts. +Nowadays, we can come across them in old scripts. -For instance, an explicit check for being `undefined`: +For example, an explicit check for `undefined`: ```js function showMessage(from, text) { @@ -228,19 +250,63 @@ function showMessage(from, text) { } ``` -...Or the `||` operator: +...Or using the `||` operator: ```js function showMessage(from, text) { - // if text is falsy then text gets the "default" value + // If the value of text is falsy, assign the default value + // this assumes that text == "" is the same as no text at all text = text || 'no text given'; ... } ``` +```` -```` +### Alternative default parameters +Sometimes it makes sense to assign default values for parameters at a later stage after the function declaration. + +We can check if the parameter is passed during the function execution, by comparing it with `undefined`: + +```js run +function showMessage(text) { + // ... + +*!* + if (text === undefined) { // if the parameter is missing + text = 'empty message'; + } +*/!* + + alert(text); +} + +showMessage(); // empty message +``` + +...Or we could use the `||` operator: + +```js +function showMessage(text) { + // if text is undefined or otherwise falsy, set it to 'empty' + text = text || 'empty'; + ... +} +``` + +Modern JavaScript engines support the [nullish coalescing operator](info:nullish-coalescing-operator) `??`, it's better when most falsy values, such as `0`, should be considered "normal": + +```js run +function showCount(count) { + // if count is undefined or null, show "unknown" + alert(count ?? "unknown"); +} + +showCount(0); // 0 +showCount(null); // unknown +showCount(); // unknown +``` ## Returning a value @@ -263,7 +329,7 @@ There may be many occurrences of `return` in a single function. For instance: ```js run function checkAge(age) { - if (age > 18) { + if (age >= 18) { *!* return true; */!* @@ -335,7 +401,19 @@ That doesn't work, because JavaScript assumes a semicolon after `return`. That'l return*!*;*/!* (some + long + expression + or + whatever * f(a) + f(b)) ``` -So, it effectively becomes an empty return. We should put the value on the same line instead. + +So, it effectively becomes an empty return. + +If we want the returned expression to wrap across multiple lines, we should start it at the same line as `return`. Or at least put the opening parentheses there as follows: + +```js +return ( + some + long + expression + + or + + whatever * f(a) + f(b) + ) +``` +And it will work just as we expect it to. ```` ## Naming a function [#function-naming] @@ -376,15 +454,15 @@ A few examples of breaking this rule: - `createForm` -- would be bad if it modifies the document, adding a form to it (should only create it and return). - `checkPermission` -- would be bad if it displays the `access granted/denied` message (should only perform the check and return the result). -These examples assume common meanings of prefixes. What they mean for you is determined by you and your team. Maybe it's pretty normal for your code to behave differently. But you should have a firm understanding of what a prefix means, what a prefixed function can and cannot do. All same-prefixed functions should obey the rules. And the team should share the knowledge. +These examples assume common meanings of prefixes. You and your team are free to agree on other meanings, but usually they're not much different. In any case, you should have a firm understanding of what a prefix means, what a prefixed function can and cannot do. All same-prefixed functions should obey the rules. And the team should share the knowledge. ``` ```smart header="Ultrashort function names" Functions that are used *very often* sometimes have ultrashort names. -For example, the [jQuery](http://jquery.com) framework defines a function with `$`. The [Lodash](http://lodash.com/) library has its core function named `_`. +For example, the [jQuery](https://jquery.com/) framework defines a function with `$`. The [Lodash](https://lodash.com/) library has its core function named `_`. -These are exceptions. Generally functions names should be concise and descriptive. +These are exceptions. Generally function names should be concise and descriptive. ``` ## Functions == Comments @@ -450,7 +528,7 @@ function name(parameters, delimited, by, comma) { To make the code clean and easy to understand, it's recommended to use mainly local variables and parameters in the function, not outer variables. -It is always easier to understand a function which gets parameters, works with them and returns a result than a function which gets no parameters, but modifies outer variables as a side-effect. +It is always easier to understand a function which gets parameters, works with them and returns a result than a function which gets no parameters, but modifies outer variables as a side effect. Function naming: diff --git a/1-js/02-first-steps/15-function-expressions-arrows/article.md b/1-js/02-first-steps/16-function-expressions/article.md similarity index 54% rename from 1-js/02-first-steps/15-function-expressions-arrows/article.md rename to 1-js/02-first-steps/16-function-expressions/article.md index b4ea19bac..c6dd891bd 100644 --- a/1-js/02-first-steps/15-function-expressions-arrows/article.md +++ b/1-js/02-first-steps/16-function-expressions/article.md @@ -1,4 +1,4 @@ -# Function expressions and arrows +# Function expressions In JavaScript, a function is not a "magical language structure", but a special kind of value. @@ -12,7 +12,9 @@ function sayHi() { There is another syntax for creating a function that is called a *Function Expression*. -It looks like this: +It allows us to create a new function in the middle of any expression. + +For example: ```js let sayHi = function() { @@ -20,10 +22,19 @@ let sayHi = function() { }; ``` -Here, the function is created and assigned to the variable explicitly, like any other value. No matter how the function is defined, it's just a value stored in the variable `sayHi`. +Here we can see a variable `sayHi` getting a value, the new function, created as `function() { alert("Hello"); }`. + +As the function creation happens in the context of the assignment expression (to the right side of `=`), this is a *Function Expression*. + +Please note, there's no name after the `function` keyword. Omitting a name is allowed for Function Expressions. + +Here we immediately assign it to the variable, so the meaning of these code samples is the same: "create a function and put it into the variable `sayHi`". + +In more advanced situations, that we'll come across later, a function may be created and immediately called or scheduled for a later execution, not stored anywhere, thus remaining anonymous. +## Function is a value -The meaning of these code samples is the same: "create a function and put it into the variable `sayHi`". +Let's reiterate: no matter how the function is created, a function is a value. Both examples above store a function in the `sayHi` variable. We can even print out that value using `alert`: @@ -41,7 +52,7 @@ Please note that the last line does not run the function, because there are no p In JavaScript, a function is a value, so we can deal with it as a value. The code above shows its string representation, which is the source code. -It is a special value of course, in the sense that we can call it like `sayHi()`. +Surely, a function is a special value, in the sense that we can call it like `sayHi()`. But it's still a value. So we can work with it like with other kinds of values. @@ -61,25 +72,25 @@ sayHi(); // Hello // this still works too (why wouldn't it) Here's what happens above in detail: 1. The Function Declaration `(1)` creates the function and puts it into the variable named `sayHi`. -2. Line `(2)` copies it into the variable `func`. - - Please note again: there are no parentheses after `sayHi`. If there were, then `func = sayHi()` would write *the result of the call* `sayHi()` into `func`, not *the function* `sayHi` itself. +2. Line `(2)` copies it into the variable `func`. Please note again: there are no parentheses after `sayHi`. If there were, then `func = sayHi()` would write *the result of the call* `sayHi()` into `func`, not *the function* `sayHi` itself. 3. Now the function can be called as both `sayHi()` and `func()`. -Note that we could also have used a Function Expression to declare `sayHi`, in the first line: +We could also have used a Function Expression to declare `sayHi`, in the first line: ```js -let sayHi = function() { ... }; +let sayHi = function() { // (1) create + alert( "Hello" ); +}; -let func = sayHi; +let func = sayHi; //(2) // ... ``` -Everything would work the same. Even more obvious what's going on, right? +Everything would work the same. ````smart header="Why is there a semicolon at the end?" -You might wonder, why does Function Expression have a semicolon `;` at the end, but Function Declaration does not: +You might wonder, why do Function Expressions have a semicolon `;` at the end, but Function Declarations do not: ```js function sayHi() { @@ -91,9 +102,9 @@ let sayHi = function() { }*!*;*/!* ``` -The answer is simple: -- There's no need for `;` at the end of code blocks and syntax structures that use them like `if { ... }`, `for { }`, `function f { }` etc. -- A Function Expression is used inside the statement: `let sayHi = ...;`, as a value. It's not a code block. The semicolon `;` is recommended at the end of statements, no matter what is the value. So the semicolon here is not related to the Function Expression itself in any way, it just terminates the statement. +The answer is simple: a Function Expression is created here as `function(…) {…}` inside the assignment statement: `let sayHi = …;`. The semicolon `;` is recommended at the end of the statement, it's not a part of the function syntax. + +The semicolon would be there for a simpler assignment, such as `let sayHi = 5;`, and it's also there for a function assignment. ```` ## Callback functions @@ -133,13 +144,13 @@ function showCancel() { ask("Do you agree?", showOk, showCancel); ``` -Before we explore how we can write it in a much shorter way, let's note that in the browser (and on the server-side in some cases) such functions are quite popular. The major difference between a real-life implementation and the example above is that real-life functions use more complex ways to interact with the user than a simple `confirm`. In the browser, such a function usually draws a nice-looking question window. But that's another story. +In practice, such functions are quite useful. The major difference between a real-life `ask` and the example above is that real-life functions use more complex ways to interact with the user than a simple `confirm`. In the browser, such functions usually draw a nice-looking question window. But that's another story. -**The arguments of `ask` are called *callback functions* or just *callbacks*.** +**The arguments `showOk` and `showCancel` of `ask` are called *callback functions* or just *callbacks*.** -The idea is that we pass a function and expect it to be "called back" later if necessary. In our case, `showOk` becomes the callback for the "yes" answer, and `showCancel` for the "no" answer. +The idea is that we pass a function and expect it to be "called back" later if necessary. In our case, `showOk` becomes the callback for "yes" answer, and `showCancel` for "no" answer. -We can use Function Expressions to write the same function much shorter: +We can use Function Expressions to write an equivalent, shorter function: ```js run no-beautify function ask(question, yes, no) { @@ -156,12 +167,10 @@ ask( */!* ``` - Here, functions are declared right inside the `ask(...)` call. They have no name, and so are called *anonymous*. Such functions are not accessible outside of `ask` (because they are not assigned to variables), but that's just what we want here. Such code appears in our scripts very naturally, it's in the spirit of JavaScript. - ```smart header="A function is a value representing an \"action\"" Regular values like strings or numbers represent the *data*. @@ -175,9 +184,9 @@ We can pass it between variables and run when we want. Let's formulate the key differences between Function Declarations and Expressions. -First, the syntax: how to see what is what in the code. +First, the syntax: how to differentiate between them in the code. -- *Function Declaration:* a function, declared as a separate statement, in the main code flow. +- *Function Declaration:* a function, declared as a separate statement, in the main code flow: ```js // Function Declaration @@ -185,8 +194,8 @@ First, the syntax: how to see what is what in the code. return a + b; } ``` -- *Function Expression:* a function, created inside an expression or inside another syntax construct. Here, the function is created at the right side of the "assignment expression" `=`: - +- *Function Expression:* a function, created inside an expression or inside another syntax construct. Here, the function is created on the right side of the "assignment expression" `=`: + ```js // Function Expression let sum = function(a, b) { @@ -196,19 +205,19 @@ First, the syntax: how to see what is what in the code. The more subtle difference is *when* a function is created by the JavaScript engine. -**A Function Expression is created when the execution reaches it and is usable from then on.** +**A Function Expression is created when the execution reaches it and is usable only from that moment.** Once the execution flow passes to the right side of the assignment `let sum = function…` -- here we go, the function is created and can be used (assigned, called, etc. ) from now on. Function Declarations are different. -**A Function Declaration is usable in the whole script/code block.** +**A Function Declaration can be called earlier than it is defined.** -In other words, when JavaScript *prepares* to run the script or a code block, it first looks for Function Declarations in it and creates the functions. We can think of it as an "initialization stage". +For example, a global Function Declaration is visible in the whole script, no matter where it is. -And after all of the Function Declarations are processed, the execution goes on. +That's due to internal algorithms. When JavaScript prepares to run the script, it first looks for global Function Declarations in it and creates the functions. We can think of it as an "initialization stage". -As a result, a function declared as a Function Declaration can be called earlier than it is defined. +And after all Function Declarations are processed, the code is executed. So it has access to these functions. For example, this works: @@ -224,7 +233,7 @@ function sayHi(name) { The Function Declaration `sayHi` is created when JavaScript is preparing to start the script and is visible everywhere in it. -...If it was a Function Expression, then it wouldn't work: +...If it were a Function Expression, then it wouldn't work: ```js run refresh untrusted *!* @@ -238,13 +247,13 @@ let sayHi = function(name) { // (*) no magic any more Function Expressions are created when the execution reaches them. That would happen only in the line `(*)`. Too late. -**When a Function Declaration is made within a code block, it is visible everywhere inside that block. But not outside of it.** +Another special feature of Function Declarations is their block scope. -Sometimes that's handy to declare a local function only needed in that block alone. But that feature may also cause problems. +**In strict mode, when a Function Declaration is within a code block, it's visible everywhere inside that block. But not outside of it.** For instance, let's imagine that we need to declare a function `welcome()` depending on the `age` variable that we get during runtime. And then we plan to use it some time later. -The code below doesn't work: +If we use Function Declaration, it won't work as intended: ```js run let age = prompt("What is your age?", 18); @@ -282,7 +291,7 @@ if (age < 18) { welcome(); // \ (runs) */!* // | - function welcome() { // | + function welcome() { // | alert("Hello!"); // | Function Declaration is available } // | everywhere in the block where it's declared // | @@ -292,7 +301,7 @@ if (age < 18) { } else { - function welcome() { // for age = 16, this "welcome" is never created + function welcome() { alert("Greetings!"); } } @@ -309,7 +318,7 @@ What can we do to make `welcome` visible outside of `if`? The correct approach would be to use a Function Expression and assign `welcome` to the variable that is declared outside of `if` and has the proper visibility. -Now it works as intended: +This code works as intended: ```js run let age = prompt("What is your age?", 18); @@ -350,113 +359,12 @@ welcome(); // ok now ``` -```smart header="When should you choose Function Declaration versus Function Expression?" -As a rule of thumb, when we need to declare a function, the first to consider is Function Declaration syntax, the one we used before. It gives more freedom in how to organize our code, because we can call such functions before they are declared. - -It's also a little bit easier to look up `function f(…) {…}` in the code than `let f = function(…) {…}`. Function Declarations are more "eye-catching". - -...But if a Function Declaration does not suit us for some reason (we've seen an example above), then Function Expression should be used. -``` - - -## Arrow functions [#arrow-functions] +```smart header="When to choose Function Declaration versus Function Expression?" +As a rule of thumb, when we need to declare a function, the first thing to consider is Function Declaration syntax. It gives more freedom in how to organize our code, because we can call such functions before they are declared. -There's one more very simple and concise syntax for creating functions, that's often better than Function Expressions. It's called "arrow functions", because it looks like this: +That's also better for readability, as it's easier to look up `function f(…) {…}` in the code than `let f = function(…) {…};`. Function Declarations are more "eye-catching". - -```js -let func = (arg1, arg2, ...argN) => expression -``` - -...This creates a function `func` that has arguments `arg1..argN`, evaluates the `expression` on the right side with their use and returns its result. - -In other words, it's roughly the same as: - -```js -let func = function(arg1, arg2, ...argN) { - return expression; -}; -``` - -...But much more concise. - -Let's see an example: - -```js run -let sum = (a, b) => a + b; - -/* The arrow function is a shorter form of: - -let sum = function(a, b) { - return a + b; -}; -*/ - -alert( sum(1, 2) ); // 3 - -``` - -If we have only one argument, then parentheses can be omitted, making that even shorter: - -```js run -// same as -// let double = function(n) { return n * 2 } -*!* -let double = n => n * 2; -*/!* - -alert( double(3) ); // 6 -``` - -If there are no arguments, parentheses should be empty (but they should be present): - -```js run -let sayHi = () => alert("Hello!"); - -sayHi(); -``` - -Arrow functions can be used in the same way as Function Expressions. - -For instance, here's the rewritten example with `welcome()`: - -```js run -let age = prompt("What is your age?", 18); - -let welcome = (age < 18) ? - () => alert('Hello') : - () => alert("Greetings!"); - -welcome(); // ok now -``` - -Arrow functions may appear unfamiliar and not very readable at first, but that quickly changes as the eyes get used to the structure. - -They are very convenient for simple one-line actions, when we're just too lazy to write many words. - -```smart header="Multiline arrow functions" - -The examples above took arguments from the left of `=>` and evaluated the right-side expression with them. - -Sometimes we need something a little bit more complex, like multiple expressions or statements. It is also possible, but we should enclose them in curly braces. Then use a normal `return` within them. - -Like this: - -```js run -let sum = (a, b) => { // the curly brace opens a multiline function - let result = a + b; -*!* - return result; // if we use curly braces, use return to get results -*/!* -}; - -alert( sum(1, 2) ); // 3 -``` - -```smart header="More to come" -Here we praised arrow functions for brevity. But that's not all! Arrow functions have other interesting features. We'll return to them later in the chapter <info:arrow-functions>. - -For now, we can already use them for one-line actions and callbacks. +...But if a Function Declaration does not suit us for some reason, or we need a conditional declaration (we've just seen an example), then Function Expression should be used. ``` ## Summary @@ -467,12 +375,6 @@ For now, we can already use them for one-line actions and callbacks. - Function Declarations are processed before the code block is executed. They are visible everywhere in the block. - Function Expressions are created when the execution flow reaches them. - In most cases when we need to declare a function, a Function Declaration is preferable, because it is visible prior to the declaration itself. That gives us more flexibility in code organization, and is usually more readable. So we should use a Function Expression only when a Function Declaration is not fit for the task. We've seen a couple of examples of that in this chapter, and will see more in the future. - -Arrow functions are handy for one-liners. They come in two flavors: - -1. Without curly braces: `(...args) => expression` -- the right side is an expression: the function evaluates it and returns the result. -2. With curly braces: `(...args) => { body }` -- brackets allow us to write multiple statements inside the function, but we need an explicit `return` to return something. diff --git a/1-js/02-first-steps/15-function-expressions-arrows/1-rewrite-arrow/solution.md b/1-js/02-first-steps/17-arrow-functions-basics/1-rewrite-arrow/solution.md similarity index 86% rename from 1-js/02-first-steps/15-function-expressions-arrows/1-rewrite-arrow/solution.md rename to 1-js/02-first-steps/17-arrow-functions-basics/1-rewrite-arrow/solution.md index 3ea112473..041db18bc 100644 --- a/1-js/02-first-steps/15-function-expressions-arrows/1-rewrite-arrow/solution.md +++ b/1-js/02-first-steps/17-arrow-functions-basics/1-rewrite-arrow/solution.md @@ -1,7 +1,7 @@ ```js run function ask(question, yes, no) { - if (confirm(question)) yes() + if (confirm(question)) yes(); else no(); } diff --git a/1-js/02-first-steps/15-function-expressions-arrows/1-rewrite-arrow/task.md b/1-js/02-first-steps/17-arrow-functions-basics/1-rewrite-arrow/task.md similarity index 68% rename from 1-js/02-first-steps/15-function-expressions-arrows/1-rewrite-arrow/task.md rename to 1-js/02-first-steps/17-arrow-functions-basics/1-rewrite-arrow/task.md index a888ac157..e18c08a83 100644 --- a/1-js/02-first-steps/15-function-expressions-arrows/1-rewrite-arrow/task.md +++ b/1-js/02-first-steps/17-arrow-functions-basics/1-rewrite-arrow/task.md @@ -1,11 +1,11 @@ # Rewrite with arrow functions -Replace Function Expressions with arrow functions in the code: +Replace Function Expressions with arrow functions in the code below: ```js run function ask(question, yes, no) { - if (confirm(question)) yes() + if (confirm(question)) yes(); else no(); } diff --git a/1-js/02-first-steps/17-arrow-functions-basics/article.md b/1-js/02-first-steps/17-arrow-functions-basics/article.md new file mode 100644 index 000000000..50c0d475d --- /dev/null +++ b/1-js/02-first-steps/17-arrow-functions-basics/article.md @@ -0,0 +1,111 @@ +# Arrow functions, the basics + +There's another very simple and concise syntax for creating functions, that's often better than Function Expressions. + +It's called "arrow functions", because it looks like this: + +```js +let func = (arg1, arg2, ..., argN) => expression; +``` + +This creates a function `func` that accepts arguments `arg1..argN`, then evaluates the `expression` on the right side with their use and returns its result. + +In other words, it's the shorter version of: + +```js +let func = function(arg1, arg2, ..., argN) { + return expression; +}; +``` + +Let's see a concrete example: + +```js run +let sum = (a, b) => a + b; + +/* This arrow function is a shorter form of: + +let sum = function(a, b) { + return a + b; +}; +*/ + +alert( sum(1, 2) ); // 3 +``` + +As you can see, `(a, b) => a + b` means a function that accepts two arguments named `a` and `b`. Upon the execution, it evaluates the expression `a + b` and returns the result. + +- If we have only one argument, then parentheses around parameters can be omitted, making that even shorter. + + For example: + + ```js run + *!* + let double = n => n * 2; + // roughly the same as: let double = function(n) { return n * 2 } + */!* + + alert( double(3) ); // 6 + ``` + +- If there are no arguments, parentheses are empty, but they must be present: + + ```js run + let sayHi = () => alert("Hello!"); + + sayHi(); + ``` + +Arrow functions can be used in the same way as Function Expressions. + +For instance, to dynamically create a function: + +```js run +let age = prompt("What is your age?", 18); + +let welcome = (age < 18) ? + () => alert('Hello!') : + () => alert("Greetings!"); + +welcome(); +``` + +Arrow functions may appear unfamiliar and not very readable at first, but that quickly changes as the eyes get used to the structure. + +They are very convenient for simple one-line actions, when we're just too lazy to write many words. + +## Multiline arrow functions + +The arrow functions that we've seen so far were very simple. They took arguments from the left of `=>`, evaluated and returned the right-side expression with them. + +Sometimes we need a more complex function, with multiple expressions and statements. In that case, we can enclose them in curly braces. The major difference is that curly braces require a `return` within them to return a value (just like a regular function does). + +Like this: + +```js run +let sum = (a, b) => { // the curly brace opens a multiline function + let result = a + b; +*!* + return result; // if we use curly braces, then we need an explicit "return" +*/!* +}; + +alert( sum(1, 2) ); // 3 +``` + +```smart header="More to come" +Here we praised arrow functions for brevity. But that's not all! + +Arrow functions have other interesting features. + +To study them in-depth, we first need to get to know some other aspects of JavaScript, so we'll return to arrow functions later in the chapter <info:arrow-functions>. + +For now, we can already use arrow functions for one-line actions and callbacks. +``` + +## Summary + +Arrow functions are handy for simple actions, especially for one-liners. They come in two flavors: + +1. Without curly braces: `(...args) => expression` -- the right side is an expression: the function evaluates it and returns the result. Parentheses can be omitted, if there's only a single argument, e.g. `n => n*2`. +2. With curly braces: `(...args) => { body }` -- brackets allow us to write multiple statements inside the function, but we need an explicit `return` to return something. diff --git a/1-js/02-first-steps/16-javascript-specials/article.md b/1-js/02-first-steps/18-javascript-specials/article.md similarity index 83% rename from 1-js/02-first-steps/16-javascript-specials/article.md rename to 1-js/02-first-steps/18-javascript-specials/article.md index 9de1d6251..e7ddacac4 100644 --- a/1-js/02-first-steps/16-javascript-specials/article.md +++ b/1-js/02-first-steps/18-javascript-specials/article.md @@ -53,9 +53,9 @@ To fully enable all features of modern JavaScript, we should start scripts with ... ``` -The directive must be at the top of a script or at the beginning of a function. +The directive must be at the top of a script or at the beginning of a function body. -Without `"use strict"`, everything still works, but some features behave in the old-fashion, "compatible" way. We'd generally prefer the modern behavior. +Without `"use strict"`, everything still works, but some features behave in the old-fashioned, "compatible" way. We'd generally prefer the modern behavior. Some modern features of the language (like classes that we'll study in the future) enable strict mode implicitly. @@ -81,9 +81,10 @@ let x = 5; x = "John"; ``` -There are 7 data types: +There are 8 data types: - `number` for both floating-point and integer numbers, +- `bigint` for integer numbers of arbitrary length, - `string` for strings, - `boolean` for logical values: `true/false`, - `null` -- a type with a single value `null`, meaning "empty" or "does not exist", @@ -102,13 +103,13 @@ More in: <info:variables> and <info:types>. We're using a browser as a working environment, so basic UI functions will be: -[`prompt(question, [default])`](mdn:api/Window/prompt) +[`prompt(question, [default])`](https://developer.mozilla.org/en-US/docs/Web/API/Window/prompt) : Ask a `question`, and return either what the visitor entered or `null` if they clicked "cancel". -[`confirm(question)`](mdn:api/Window/confirm) +[`confirm(question)`](https://developer.mozilla.org/en-US/docs/Web/API/Window/confirm) : Ask a `question` and suggest to choose between Ok and Cancel. The choice is returned as `true/false`. -[`alert(message)`](mdn:api/Window/alert) +[`alert(message)`](https://developer.mozilla.org/en-US/docs/Web/API/Window/alert) : Output a `message`. All these functions are *modal*, they pause the code execution and prevent the visitor from interacting with the page until they answer. @@ -143,13 +144,16 @@ Assignments : There is a simple assignment: `a = b` and combined ones like `a *= 2`. Bitwise -: Bitwise operators work with integers on bit-level: see the [docs](mdn:/JavaScript/Reference/Operators/Bitwise_Operators) when they are needed. +: Bitwise operators work with 32-bit integers at the lowest, bit-level: see the [docs](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Expressions_and_Operators#bitwise_operators) when they are needed. -Ternary +Conditional : The only operator with three parameters: `cond ? resultA : resultB`. If `cond` is truthy, returns `resultA`, otherwise `resultB`. Logical operators -: Logical AND `&&` and OR `||` perform short-circuit evaluation and then return the value where it stopped. Logical NOT `!` converts the operand to boolean type and returns the inverse value. +: Logical AND `&&` and OR `||` perform short-circuit evaluation and then return the value where it stopped (not necessary `true`/`false`). Logical NOT `!` converts the operand to boolean type and returns the inverse value. + +Nullish coalescing operator +: The `??` operator provides a way to choose a defined value from a list of variables. The result of `a ?? b` is `a` unless it's `null/undefined`, then `b`. Comparisons : Equality check `==` for values of different types converts them to a number (except `null` and `undefined` that equal each other and nothing else), so these are equal: @@ -161,7 +165,7 @@ Comparisons Other comparisons convert to a number as well. - The strict equality operator `===` doesn't do the conversion: different types always mean different values for it, so: + The strict equality operator `===` doesn't do the conversion: different types always mean different values for it. Values `null` and `undefined` are special: they equal `==` each other and don't equal anything else. @@ -170,7 +174,7 @@ Comparisons Other operators : There are few others, like a comma operator. -More in: <info:operators>, <info:comparison>, <info:logical-operators>. +More in: <info:operators>, <info:comparison>, <info:logical-operators>, <info:nullish-coalescing-operator>. ## Loops @@ -212,6 +216,7 @@ let age = prompt('Your age?', 18); switch (age) { case 18: alert("Won't work"); // the result of prompt is a string, not a number + break; case "18": alert("This works!"); @@ -245,15 +250,13 @@ We covered three ways to create a function in JavaScript: let result = a + b; return result; - } + }; ``` - Function expressions can have a name, like `sum = function name(a, b)`, but that `name` is only visible inside that function. - 3. Arrow functions: ```js - // expression at the right side + // expression on the right side let sum = (a, b) => a + b; // or multi-line syntax with { ... }, need return here: @@ -270,17 +273,11 @@ We covered three ways to create a function in JavaScript: ``` -- Functions may have local variables: those declared inside its body. Such variables are only visible inside the function. +- Functions may have local variables: those declared inside its body or its parameter list. Such variables are only visible inside the function. - Parameters can have default values: `function sum(a = 1, b = 2) {...}`. - Functions always return something. If there's no `return` statement, then the result is `undefined`. - -| Function Declaration | Function Expression | -|----------------------|---------------------| -| visible in the whole code block | created when the execution reaches it | -| - | can have a name, visible only inside the function | - -More: see <info:function-basics>, <info:function-expressions-arrows>. +Details: see <info:function-basics>, <info:arrow-functions-basics>. ## More to come diff --git a/1-js/03-code-quality/01-debugging-chrome/article.md b/1-js/03-code-quality/01-debugging-chrome/article.md index 6d5bbbed3..4f50fb428 100644 --- a/1-js/03-code-quality/01-debugging-chrome/article.md +++ b/1-js/03-code-quality/01-debugging-chrome/article.md @@ -1,44 +1,44 @@ -# Debugging in Chrome +# Debugging in the browser Before writing more complex code, let's talk about debugging. -All modern browsers and most other environments support "debugging" -- a special UI in developer tools that makes finding and fixing errors much easier. +[Debugging](https://en.wikipedia.org/wiki/Debugging) is the process of finding and fixing errors within a script. All modern browsers and most other environments support debugging tools -- a special UI in developer tools that makes debugging much easier. It also allows to trace the code step by step to see what exactly is going on. -We'll be using Chrome here, because it's probably the most feature-rich in this aspect. +We'll be using Chrome here, because it has enough features, most other browsers have a similar process. -## The "sources" pane +## The "Sources" panel Your Chrome version may look a little bit different, but it still should be obvious what's there. - Open the [example page](debugging/index.html) in Chrome. - Turn on developer tools with `key:F12` (Mac: `key:Cmd+Opt+I`). -- Select the `sources` pane. +- Select the `Sources` panel. Here's what you should see if you are doing it for the first time:  -The toggler button <span class="devtools" style="background-position:-168px -76px"></span> opens the tab with files. +The toggler button <span class="devtools" style="background-position:-172px -98px"></span> opens the tab with files. -Let's click it and select `index.html` and then `hello.js` in the tree view. Here's what should show up: +Let's click it and select `hello.js` in the tree view. Here's what should show up:  -Here we can see three zones: +The Sources panel has 3 parts: -1. The **Resources zone** lists HTML, JavaScript, CSS and other files, including images that are attached to the page. Chrome extensions may appear here too. -2. The **Source zone** shows the source code. -3. The **Information and control zone** is for debugging, we'll explore it soon. +1. The **File Navigator** pane lists HTML, JavaScript, CSS and other files, including images that are attached to the page. Chrome extensions may appear here too. +2. The **Code Editor** pane shows the source code. +3. The **JavaScript Debugging** pane is for debugging, we'll explore it soon. -Now you could click the same toggler <span class="devtools" style="background-position:-200px -76px"></span> again to hide the resources list and give the code some space. +Now you could click the same toggler <span class="devtools" style="background-position:-172px -122px"></span> again to hide the resources list and give the code some space. ## Console -If we press `Esc`, then a console opens below. We can type commands there and press `key:Enter` to execute. +If we press `key:Esc`, then a console opens below. We can type commands there and press `key:Enter` to execute. After a statement is executed, its result is shown below. -For example, here `1+2` results in `3`, and `hello("debugger")` returns nothing, so the result is `undefined`: +For example, here `1+2` results in `3`, while the function call `hello("debugger")` returns nothing, so the result is `undefined`:  @@ -56,21 +56,21 @@ A *breakpoint* is a point of code where the debugger will automatically pause th While the code is paused, we can examine current variables, execute commands in the console etc. In other words, we can debug it. -We can always find a list of breakpoints in the right pane. That's useful when we have many breakpoints in various files. It allows us to: -- Quickly jump to the breakpoint in the code (by clicking on it in the right pane). +We can always find a list of breakpoints in the right panel. That's useful when we have many breakpoints in various files. It allows us to: +- Quickly jump to the breakpoint in the code (by clicking on it in the right panel). - Temporarily disable the breakpoint by unchecking it. - Remove the breakpoint by right-clicking and selecting Remove. - ...And so on. ```smart header="Conditional breakpoints" -*Right click* on the line number allows to create a *conditional* breakpoint. It only triggers when the given expression is truthy. +*Right click* on the line number allows to create a *conditional* breakpoint. It only triggers when the given expression, that you should provide when you create it, is truthy. That's handy when we need to stop only for a certain variable value or for certain function parameters. ``` -## Debugger command +## The command "debugger" -We can also pause the code by using the `debugger` command, like this: +We can also pause the code by using the `debugger` command in it, like this: ```js function hello(name) { @@ -84,12 +84,11 @@ function hello(name) { } ``` -That's very convenient when we are in a code editor and don't want to switch to the browser and look up the script in developer tools to set the breakpoint. - +Such command works only when the development tools are open, otherwise the browser ignores it. ## Pause and look around -In our example, `hello()` is called during the page load, so the easiest way to activate the debugger is to reload the page. So let's press `key:F5` (Windows, Linux) or `key:Cmd+R` (Mac). +In our example, `hello()` is called during the page load, so the easiest way to activate the debugger (after we've set the breakpoints) is to reload the page. So let's press `key:F5` (Windows, Linux) or `key:Cmd+R` (Mac). As the breakpoint is set, the execution pauses at the 4th line: @@ -99,13 +98,13 @@ Please open the informational dropdowns to the right (labeled with arrows). They 1. **`Watch` -- shows current values for any expressions.** - You can click the plus `+` and input an expression. The debugger will show its value at any moment, automatically recalculating it in the process of execution. + You can click the plus `+` and input an expression. The debugger will show its value, automatically recalculating it in the process of execution. 2. **`Call Stack` -- shows the nested calls chain.** At the current moment the debugger is inside `hello()` call, called by a script in `index.html` (no function there, so it's called "anonymous"). - If you click on a stack item, the debugger jumps to the corresponding code, and all its variables can be examined as well. + If you click on a stack item (e.g. "anonymous"), the debugger jumps to the corresponding code, and all its variables can be examined as well. 3. **`Scope` -- current variables.** `Local` shows local function variables. You can also see their values highlighted right over the source. @@ -118,52 +117,65 @@ Please open the informational dropdowns to the right (labeled with arrows). They Now it's time to *trace* the script. -There are buttons for it at the top of the right pane. Let's engage them. - -<span class="devtools" style="background-position:-7px -76px"></span> -- continue the execution, hotkey `key:F8`. +There are buttons for it at the top of the right panel. Let's engage them. +<!-- https://github.com/ChromeDevTools/devtools-frontend/blob/master/front_end/Images/src/largeIcons.svg --> +<span class="devtools" style="background-position:-146px -168px"></span> -- "Resume": continue the execution, hotkey `key:F8`. : Resumes the execution. If there are no additional breakpoints, then the execution just continues and the debugger loses control. Here's what we can see after a click on it:  - The execution has resumed, reached another breakpoint inside `say()` and paused there. Take a look at the "Call stack" at the right. It has increased by one more call. We're inside `say()` now. + The execution has resumed, reached another breakpoint inside `say()` and paused there. Take a look at the "Call Stack" at the right. It has increased by one more call. We're inside `say()` now. + +<span class="devtools" style="background-position:-200px -190px"></span> -- "Step": run the next command, hotkey `key:F9`. +: Run the next statement. If we click it now, `alert` will be shown. + + Clicking this again and again will step through all script statements one by one. + +<span class="devtools" style="background-position:-62px -192px"></span> -- "Step over": run the next command, but *don't go into a function*, hotkey `key:F10`. +: Similar to the previous "Step" command, but behaves differently if the next statement is a function call (not a built-in, like `alert`, but a function of our own). + + If we compare them, the "Step" command goes into a nested function call and pauses the execution at its first line, while "Step over" executes the nested function call invisibly to us, skipping the function internals. + + The execution is then paused immediately after that function call. + + That's good if we're not interested to see what happens inside the function call. -<span class="devtools" style="background-position:-137px -76px"></span> -- make a step (run the next command), but *don't go into the function*, hotkey `key:F10`. -: If we click it now, `alert` will be shown. The important thing is that `alert` can be any function, the execution "steps over it", skipping the function internals. +<span class="devtools" style="background-position:-4px -194px"></span> -- "Step into", hotkey `key:F11`. +: That's similar to "Step", but behaves differently in case of asynchronous function calls. If you're only starting to learn JavaScript, then you can ignore the difference, as we don't have asynchronous calls yet. -<span class="devtools" style="background-position:-72px -76px"></span> -- make a step, hotkey `key:F11`. -: The same as the previous one, but "steps into" nested functions. Clicking this will step through all script actions one by one. + For the future, just note that "Step" command ignores async actions, such as `setTimeout` (scheduled function call), that execute later. The "Step into" goes into their code, waiting for them if necessary. See [DevTools manual](https://developers.google.com/web/updates/2018/01/devtools#async) for more details. -<span class="devtools" style="background-position:-104px -76px"></span> -- continue the execution till the end of the current function, hotkey `key:Shift+F11`. -: The execution would stop at the very last line of the current function. That's handy when we accidentally entered a nested call using <span class="devtools" style="background-position:-72px -76px"></span>, but it does not interest us, and we want to continue to its end as soon as possible. +<span class="devtools" style="background-position:-32px -194px"></span> -- "Step out": continue the execution till the end of the current function, hotkey `key:Shift+F11`. +: Continue the execution and stop it at the very last line of the current function. That's handy when we accidentally entered a nested call using <span class="devtools" style="background-position:-200px -190px"></span>, but it does not interest us, and we want to continue to its end as soon as possible. -<span class="devtools" style="background-position:-7px -28px"></span> -- enable/disable all breakpoints. +<span class="devtools" style="background-position:-61px -74px"></span> -- enable/disable all breakpoints. : That button does not move the execution. Just a mass on/off for breakpoints. -<span class="devtools" style="background-position:-264px -4px"></span> -- enable/disable automatic pause in case of an error. -: When enabled, and the developer tools is open, a script error automatically pauses the execution. Then we can analyze variables to see what went wrong. So if our script dies with an error, we can open debugger, enable this option and reload the page to see where it dies and what's the context at that moment. +<span class="devtools" style="background-position:-90px -146px"></span> -- enable/disable automatic pause in case of an error. +: When enabled, if the developer tools is open, an error during the script execution automatically pauses it. Then we can analyze variables in the debugger to see what went wrong. So if our script dies with an error, we can open debugger, enable this option and reload the page to see where it dies and what's the context at that moment. ```smart header="Continue to here" Right click on a line of code opens the context menu with a great option called "Continue to here". -That's handy when we want to move multiple steps forward, but we're too lazy to set a breakpoint. +That's handy when we want to move multiple steps forward to the line, but we're too lazy to set a breakpoint. ``` ## Logging -To output something to console, there's `console.log` function. +To output something to console from our code, there's `console.log` function. For instance, this outputs values from `0` to `4` to console: ```js run // open console to see for (let i = 0; i < 5; i++) { - console.log("value", i); + console.log("value,", i); } ``` -Regular users don't see that output, it is in the console. To see it, either open the Console tab of developer tools or press `key:Esc` while in another tab: that opens the console at the bottom. +Regular users don't see that output, it is in the console. To see it, either open the Console panel of developer tools or press `key:Esc` while in another panel: that opens the console at the bottom. If we have enough logging in our code, then we can see what's going on from the records, without the debugger. @@ -172,12 +184,12 @@ If we have enough logging in our code, then we can see what's going on from the As we can see, there are three main ways to pause a script: 1. A breakpoint. 2. The `debugger` statements. -3. An error (if dev tools are open and the button <span class="devtools" style="background-position:-264px -4px"></span> is "on"). +3. An error (if dev tools are open and the button <span class="devtools" style="background-position:-90px -146px"></span> is "on"). -Then we can examine variables and step on to see where the execution goes wrong. +When paused, we can debug: examine variables and trace the code to see where the execution goes wrong. There are many more options in developer tools than covered here. The full manual is at <https://developers.google.com/web/tools/chrome-devtools>. The information from this chapter is enough to begin debugging, but later, especially if you do a lot of browser stuff, please go there and look through more advanced capabilities of developer tools. -Oh, and also you can click at various places of dev tools and just see what's showing up. That's probably the fastest route to learn dev tools. Don't forget about the right click as well! +Oh, and also you can click at various places of dev tools and just see what's showing up. That's probably the fastest route to learn dev tools. Don't forget about the right click and context menus! diff --git a/1-js/03-code-quality/01-debugging-chrome/chrome-open-sources.svg b/1-js/03-code-quality/01-debugging-chrome/chrome-open-sources.svg index a3c7db6ec..a647276e8 100644 --- a/1-js/03-code-quality/01-debugging-chrome/chrome-open-sources.svg +++ b/1-js/03-code-quality/01-debugging-chrome/chrome-open-sources.svg @@ -1 +1,5 @@ -<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="697" height="228" viewBox="0 0 697 228"><defs><style>@import url(https://fonts.googleapis.com/css?family=Open+Sans:bold,italic,bolditalic%7CPT+Mono);@font-face{font-family:'PT Mono';font-weight:700;font-style:normal;src:local('PT MonoBold'),url(/font/PTMonoBold.woff2) format('woff2'),url(/font/PTMonoBold.woff) format('woff'),url(/font/PTMonoBold.ttf) format('truetype')}</style></defs><defs><path id="rect-1" d="M0 0h698v228H0z"/></defs><g id="debugging" fill="none" fill-rule="evenodd" stroke="none" stroke-width="1"><g id="chrome-open-sources.svg"><g id="Bitmap"><image width="698" height="228" xlink:href="data:image/png;base64,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EpCABCQgAQlIQAItQEAL3RY4SWZRAhKQgAQkIAEJSEACEpCABCQgAQlIQAISkAAEuseNGycJCUhAAhKQgAQkIAEJSEACEpCABCQgAQlIQAISaAEC3XPmzGmBbJpFCUhAAhKQgAQkIAEJSEACEpCABCQgAQlIQAIS6BHB0Ajccccdafr06Wny5MlDS6DGXuPHj0+TJk1KTEciTJ06NUt24sSJI5G8aUpAAhKQgAQkIAEJSEACEpCABCQgAQmMEQF1nzECP8qH1YfuEIFffPHFDRdzyUoIxUPMlrtJQAISkIAEJCABCUhAAhKQgAQkIAEJSEACbUxAC90hnlyEV8LRRx89xBTKdzv88MMzoRgrXYMEJCABCUhAAhKQgAQkIAEJSEACEpCABCQggTyB7krILzsvAQlIQAISkIAEJCABCUhAAhKQgAQkIAEJSEACTUqgZ/bs2Q3PWqPdEYQ/2f3226/heTVBCUhAAhKQgAQkIAEJSEACEpCABCQgAQlIYGQIhE6IvhffjhqZI3VOqg13uXDqqadmfmAbiTDcG1ABdEXQSLKmJQEJSEACEpCABCQgAQlIQAISkIAEJCCBkSEQYi6po++Fxqe+NzzePV1dXam3t3d4qeT2jhOjb9kcFGfrInDJJZekwViMv/a1r03zzjtvuuGGG9LDDz+cVl555TRx4sS6jmWkziDwwgsvpGnTpqXp06dnU+rJUkstlZZffvm0ySabpLXXXrszQFRKeemll6ZZs2alDTfcMC277LIdU+5aBX300UfThRdemO6888507733Zm3JiiuumFZfffX0hje8IS244IK1dnV9mxKYM2dO9WOniy22WNpiiy36Lek999yT+ILw/PPPn7bbbrt+47bzRq6h22+/PS288MJp6623bueiVsvWX3+FfvWSSy6Zlltuuexew/JoBfpD1MmnnnoqrbHGGol+kkECQyWQr+fcG/kNFOh3XX755dVo6623XnYdVFc407YE4p5IAbG8mzBhQtOU9cknn0xXX311lp8YP7Lw97//PT3//PNN1zeuld+mAWpGJDAEApMnT55rL9a1mqCLASt5Di8CcxWqxgp0UkTtRnsdaLigWyP/rpZAvwQYSP/617/uN05x45ZbbpmJMH/+85/TXXfdlQ0kO1XQRaj729/+liHabLPN0uKLL17E1XHLd999d/re976XnnnmmT5lnzFjRjbgReBEwNt3333TSiut1CdOOy786le/yoq16KKLdrSgywNMbsS/+MUv5jrN1157bbbulFNOSZ/4xCfSzjvvPFccV7QvgZdeein99re/rRZwoYUWSuuuu251uTjDQJB2ZL755hu2oEu7dP3112eHaLWOLfk+99xzEyJ4Jwi6g+mvLL300ulDH/pQXUJYsX4Ndvl3v/td9pAq9kNcUdANGk6HQiDfL3/Vq16VjjrqqAGTQTTLt6O0jzxEN7Q/AfpVYdiF4cBXvvKVpik0Bh1RL7faaqts/Ejmfvazn2V5HIu+cX9jt1r5bRqgZkQCDSIwWFG0QYcdcjLhjYApwmy9+adtZB9C7DvkTBR27GmkdW4hbRclMCQC88wzT2bdMtDO48aNGyhKx2x/8cUX05lnnpmVd4UVVuh4Qfeyyy7rI9gtscQSac0110yweeyxx7Kn9M8991y677770je+8Y105JFHJgbehvYn8JOf/KRaN5ZZZpnMGpfB5tNPP51uvPHGzLLo2WefTbxlwoBko402an8olrCUAB2ur3/965lgWxqhgSt5ABVt+I477phG06qzgcXouKSK/RX61FjHcn8hINQfc8wx6Wtf+1riPjRSAatIrD4IHGfjjTfOLKZH6nim23kEHnzwwcQPYbe/gFWvofMI8NZTiLmUHkGSh0q8PWkoJ+DYrZzLYNeec8452S5vectbSncdaHvpTq4cEQL0b4tWuvUKoiOSoUEmyrgg386FMDtQGfJiLoeM5UZZ6iroDvJEGn3kCbz61a9O733ve0f+QB6hLQncf//9VcGuu7s7HXDAAXOJctSvP/3pT+m8885LWOUde+yxmYDXlkAsVJUAQssZZ5yRLW+++eaZyILblgh77LFHuvnmm9NBBx2Urfr2t79dtd6IOE47hwDW/Vg97rnnnp1TaEs6KAK1+iu0Nb/85S8TVv9Y9P7mN7/J7kWDSnwQkXErxHEIBx54YFp11VUHsbdRJVAfAR6Wv/vd764Z+ZFHHslcGNWM4Ia2JRBvCfKQi0DfGuFm7733buoyf/CDH8zazrXWWqup8skbhHvttVf2cJe3hQzlBBBrQ7AlRlHUHWh7eaquHSkC8QZaiLoIvLFupI7ZyHTJKyJuPgwk6oZ4m9+H+UaWW5cLRbqFZU4CHeWoeIXN6fDDD++zCoWeEzSQUt9nJxckIIGGEQjXAiR42GGHlQ5sEXp32223xODjmmuuyayoEIKx4DW0L4EpU6ZUC/eBD3yg+spddWVlhlfs999//3TyySdn1iX4MeNVckNnEkDA2GabbUbllfnOJNyepV5kkUXShz/84eweRBuCj+GRDPm37fDda5BAIwnQZ+KBAW5m3vWud9V8g4D2khDxG5kH02peArQ/ce55yEVdYfnKK69M73vf+1KIvM1YAu7vzRj4jgMsDfUTCGG3KOpGCgNtj3hOR5YAOlkjxcyRzW3f1NH3sKqtV9StJeYOxlVD3xyUL2mhW86lupZX2DgZ9YYQgBV06yU2svHoVJx//vnpv//9b+KV1p6enrTOOuuk9ddfP2277bZ9OqUXXXRR9oE1XrHGPy++eW+55ZbstSFezd5ggw3SO97xjqyjygcf8BOG2E+IV7dr+Q9ENPznP/+Z1SVeseHDEnwogg/p5J+8YhF20kknZWliWcrx2e+2225LvFLJcV7zmteknXbaKcs7rzjxCjl+mCLw2i6DSSx0yC+BAeUFF1yQ/v3vf2fzrCMOLPgAVLsImZyPW2+9leIlLDAHslLaZZddMkGX+HQ8d999d2argXPMueO6xuIKtwxc29tvv/1cH3vgQzR/+ctfMnchWCRQ7/hATbQfvHaGiFzmk/O6667LXpfl41y8qovPuTjXnO8y9yL4jeZBE+kjTMc5x4dyrXpYLVhhhtfiyC8fkHviiSey+kD9pKPbTr7vHnrooWrJ+3ulnXJjvc1HGmFTFHSpZ3/961+z6xOhBkZ8YI/9ih/HwpXDd7/73ey4CDxlPPHZ+8ADDyTqY3yI67jjjsuu1X322SdzocL5oS7yymtYGZModeCqq65KN910U6I9IH3OHYPuslcdKRP1lLRoFxdYYIHsmHwkEH+bDMTzgfpAJ5g2j/pJ4BhcX3Sa29X/NOcC5txDEPe/+tWvZvePPJuB5utp9/E/Sz8DzhGoL9RPrn1cxHBuuU985CMfiSjZlPocvqCJG3UnIjGgJg8hLsZ66gD3A+4vtCPcW6grtG2Uu+iDnWuBhyG0K9Rx/AbTtnFfwl1Nf4E6SR65R9GOUZ/xVdgJgWsJVz+cA+4f1KX89TWYdpc2gjR4iwB+nAOuX9p+zh3TCMcff3xWV7lPcT+IMJh7BvXxtNNOy3b9v//7v8QDT8Q8jrnaaqtlIk2+r8KbDVdccUVVuOZjSG9+85uzD7PhdgIfy9Qh0g3f1G9/+9vnckMBI+67tGvUb+6HiEG0wZRl11137fMg7vTTT0+PP/54etvb3pbF41riXsw69uEjoLSF3FOLgXpP3SY+54Lrgo/ZsQ/XQVk95RzQN6Tu02ZzrdDekjf6U+0a8DlKXxRmtEf0oYsBUS8+hkY78Y9//KMYpbo8GI4j2TcfTB8Pl0y0m/SX3/Oe92RtIPde1lMHKBNt3Ec/+tHSewXtLdcBgW83FNvZKpwWnKFOhJsZ+kBcx9x/4npmvFUM+GemXaGu8BAKtndWPrDJeAV3V7QhjE+KD6ioV//617+yfghtzB//+MfqR4+55tmP43FO6gnf//73M2ti+jO01/nAOaNO0+fjXkzbhcuRN77xjVk7kY/LPO66sFTmWqGt43qh/WIf2mPu04R6xm6wCR/WjAeLH+odTN0dzvgky3AT/4V4G2JtTGN9TGN9TGN9ExfNrDUpgXpFXcbnReGXIjVazCXNHv5aIeDPcCxCiDGDOTYd0VZ98jCYcjZ7XG6YDGwQQCLwChCvQPKjE4YlXgg7dCS46THwpJNP5ywCAwt+IZwymMoHbrwMLBBk8+ee4yG+MKDLB47Dj3S+8IUvVEVd4rOecOGFF1Y7f7EveeAVYAYfdAjpQEX8iENeCHQkCAz0+DBBLGcrK390mhAx6ZB+9rOfzQZpsa1Vp3S+IjDwGyggRp1wwglzDbRhxflEaM0HfILxozNJZyB/DDp7nAs6fAhA8YGt2J/BNCIdr3fRgY2AAB++D2Mdx0c8w9qYesoAIeopcaifdGLzgfOJyMKP+sYNY/75589HKZ2nnlGn8oFj82NbLSvnfPxWmc+/UsdN9otf/GImnBfzz806PpRR3Hb22WdnLjry6xHC+SGUvulNb0of//jHq+zjtUPi13Ilg89Brtu8v17ERAYHDFhwCRL1KR6+cO0j/HGO8iHygksRPmDDICICwgrC5H/+859YlQkflIkfDxzIe4hOtDcf+9jH+ohF7BjHoGPMYIgBVLsFBobvf//7009/+tMqo3hANlBZB9Pu054U2/B4KAVXhKjYTlvOg54IiGuxDTGlKOhSN0gff6oRSIP7IuvzgfaJH4Nl7ouIWhE4Bj/aSwaY+ftf3jI04seUY+A7Ngb6tGNlIlnEb8cp1zCBayquK5YH2+5y/SOOcP5ou+I+j8uYqAOkS+D6JPCQKcJg7xk8iIp0OSa+5qnXBATkfF/lD3/4Q9U6L46HwIvoyUMIxOh8/4O+FfdQ7m3Uj7hPUZd+9KMfZaJxpMOUY9F20SYiHNFnivsh1wD9LsQNhBQYReCeiBgTx8nzp1/IR1MRfvOB49CHp45zHF57jkD/gvzly8J9n2PwwzVLu36Ebqmllsr6iPST4Vwm6FJf4lqHQy1Bd7AcR6JvPpQ+HgI+ZaRecQ+l7xiBdjr6+fTBNt1009hUncbDBh6wtZOYSwGjD4v/7niQzD0UVmwrE3RpI+hj0NfkGs4Hrk9+CKNFt2mMfzgPtC/xkCH25XrmPPCjL/bWt7612lZEnOKU9oGQfxhPW0SfiHYzH8gn7esPf/jD7H5LPzsC2+hzUeZ8oP0izz//+c+z8r7zne+sa+xGetEG87ApwlDq7lDHJ3HMZp+GOBtibUxjfUxjfUxjfbOXz/w1H4GBRF1yPFpiLsfq4WlivqFgpUECY0mAm1++w1yWFyxty6wW83F/8IMfVMVcbuo8rWVwReeCGzgDJAanRZElBkM77LBDZnXBjR0LIzoedPIJWGpyU2ZwzSCYGzUDCW4SeUEX0S06eVg48PoMeefYWB1wk2WgVPYlWJ7kYz3HcRhIM8jnCXYMhrgR8eSaQQQ3/hD46EgzCMHShMD64Ilgg2hEmeh0so18I1p86UtfyuK38l8Mchm4lVlClpWtONAmDv4OQ8yFMfUnzjXiJzw519SDojUs54LzyzlD8EXAYJlBIqz5ym4IunQ+oyNMJxgLYQZODCoZJNMJZMDKACisf6hPca558k/94MbCPoh4dILZB/+NiP79BQbHIeZyfOoUHXKugbPOOisbSFM/R/qDPv3lsZHbEMiwLmOASP3Hcgtrd65NLKcRS0MoKDsuIgTiKgFO+NpdY401MnEM8Z1BHtctoj7iVSMCogP1AOsM6lpYeNNRCDGXtgpLFuoOVvi///3vM+HniCOOyOpBiMCcxxBzDznkkEy0o01EiMbimHrFIAwrSgLXAWIO4ROf+ES1PaQ+w4F9GdTia7gdA+01VolY59D2Uk+4rgcKcKy33ccymuuYgRtcCVh/UQ95k4O6RFtAoM7m7y8MiCNgKU67HvUXQS5EW944IbCdhwDcdwgIvdwvENS4J1J3uf8yWOUhevFDkTwApH0jcB3RZtQSJmiLqW+kRxt76KGHZtdKtnOH/HHtxDnKC/HDaXe5V3MOYBof+sT6iw98xivP3BOoU7RNhOHeM77zne9k55G6SBuat/olfY5Lu8H9i74HdYlrgHNPP4yw8847ZyIXdRALV7hQDvIWQgoWvty7CNzveEDBvW3mzJlZm0ZfC/GHshavw/gQF/cw9uV+SPtI28l9FuEnXl/mPkybFQ/tsZqLhx60n+SDOHzMjnaOa4q4PJBlPf0y7h2rrLJK1i/kXsk1RT+R+32klRWkjf64z5xRMVCgHXr++eerQnwUMfrH1AEsLMvCcDg2sm8+nD4exiJhnU45qQe0oxhHUOcR94uCLm/mhXAIx3YKnNNo5+AQgeuNewrXLOOnoqVtxIt7CvcpftyPsOanX8L1xkMU7iX0b/KBbfTFuQ/RvpA+fTvaHh4scGzWFfvo+TRqzXOvCzGXto2+PG0OfQEeaHBv5SHSxIkTq1a39LlDzIUDfTXGIZSfMSJ5or/Pg2HyNdDYrVbehlN3YV3v+KTW8Zt1fYizIdbGNNbHNNbHNNY3a7nMV/MS6E/ULcv1SFjmxnF6aBDHIoRqHYMToDRzqNdCuOhTt5nL1Kx546l+rSf7kWeESV6JqxXYP8S9T33qU31eo+Emy82VThcDEQYhxdfx+OhD1E2OgXCDOEKgM4/4Gftwk2fAwM2BGzYdDLZxw0e0JXDDyFtzMijiR6eQeAh2eWsa9mFARr1jEEVgAI0wg0UcgY4LAx46DggrdGIIdCRD/GOZp9gEjpdnRqebQSHiDwMkOpz5D0RlO7XYHxYUhFoiQz3FoeMZ9Y926dOf/nT14QEuHBBguM45zzwQ4NVzRPp84Fxh2RriCuxpaxF16VDRAcZKIyzx2BdrQPYj0Nmjo8irrgwQEAA4pzx8o9NIoH7QyQ2Lt8gbA1DSRXzktbAQ87Kdcn/kBytkAsLRZz7zmWp+GaBgoYeFUuS7XuvE3CGabpbzBB8sc2NwxTUa1ymiKeIC1iQM8vMPjWAf4gRiLq5Ogj31hHqA9SvCAqI9rwAXRYehAEGQYEDyuc99LhNNSIM6iohAwIIXsYxrmYAVMm0cgi0BcQKBh0FICIa0O9SvCLiTYbCEIEHeecjFoAp3AATaGMoTgQEUbBBFEGTaoe2IshWndMDiOoAbFjjBuhiX5aG0+wzw48EPabAcbQfLCKsIVJyP/H0p335wnSJ4RRtCmxGB80tAnA4xl3sB99EItFE89ETEIvCA4uCDD47N2ZS2i/sf7VIcp0+EVxZwb/Stb30ra7u4F/IGCPebdgycF+7FETgPiOmcCyxKI8SrtsNtdzkHtPVYzkf7wzEQVELQ5Vhh9dqIewYiBW0A7h7iXpd3EUIf5ctf/nL1mLQPiG8hzsaDs2BBf4o3AWBB+xYh4nP/o45F4B5Ge/bJT34yW8Wbc2VtK+1gvIVBfabe8yCKQD8oBF3aRO7BBB6evO51r8vm+cPyFHbcq+nPIeCQFvd68lvsl1FW+gRHHnlkdu3TD2xXQRchnwcKcEAgz3ND4I2H4LRftcJwOTaibz7cPh59MgIfrIo6xTJ9B+7/XItFwZsHqXAjRFuQLbTBH/eVCHlL3BB02QYXrrVagX4MhhMReFhFPybuR4xTcFlVDFybXPfRV+O+xBiI65G2EoMFROL+7tnFNDlP9IMIiLmM/WIcRl+ZB7v0l4nHWCHOZ9xzuS7yZeWBG8en/8A+3IPpbw00divmi+Xh1l3SgFE94xPitloIcTbE2pjG+pjG+pjG+lYrb6vmlwcb3GMZO/HL92tbrUzkn3FC6Jq18j+SYi7H7M4PGmplYiTWAyB8SwAhfqwbipuDkcijabYuATqbBETSok8k1jPAIHBzjbjZisofA1C+upgP3JAjYF0ZYm6syw9uo7OHpQeBAQCv/hQDnY4Q22jYiuH1r399tRMR2xhwR8ckBuaxrdY0BtIMsOh4UeYIdLw///nPZ7/oEMW2VpzGIC0Gs0MpA1YWEfCFW+SCEMvAlsCAr+xjN9SvYtsaVrnsF4NhBoMRGOggDkRg4MyDA85PDJwQDuikEhDp8gN61lE3GGREwMqgVmAgHbz4aEUxv3Q44zpADGyXgBiLMMuDEUTKvOUcD0awxGQwwEfT4hqm7Fw/IT4gSBTZU094NTACD4waFagDDCwi5NPGhUe0CbEdK3wEEITZ2C8s2LBIzou5sU/UGxhE+gyWCAhFWF/l3+YhHR4I8CteI5FmO0y5DuJhBmItlsz9hagzQ233y9IOC1tEqWi/eXjFvYZ7UbhHCCsp0sCKjsA9MB7UxYMqRNn8A8YsYuUPi04eTBB44BHHyla88kebmL/f5bcxz3Xy9a9/Pcsbg2AGw3EPKsZth2U4Ud74ffOb38wsnLFCjb4A7TzXC6ER7W5RzO2PYyPuGTxQwJosxNzi8RBiivdc+vgR8m5fWMe1ERacPAyKQN2jTc6LIbEt398J11exjSl1MsTcWM8DuljHQ/cI0b5RP+kDFQN5QGxBnIpzGA/DGPiHuBP70f7Fm15hjRjb2mlKOxLtQ1jjRvny/SYEr1phOBwb1TfP53WofTzqR17MpbzRT2M+fwyWo+1lPBL3ZNa3Q4i+Bddg3piCdiPGOMWxR77ctAcIusXA/SjubfHGSzEOfddi/4O+WYjD9HFpAwcTeIgT/WzSKV7vjAE+9KEPZe1DfKeDNw8Y59F2lLUp8aYT+Shrv+rNX75eDbXu1js+qTdPzRaPNjov0CLahnBLXgfa3mzlabf8hJhLudD70D/iTdVWLWuIurXyP9JiLsftqXXw0V4fIm4o3NEZDNU+lkc7Xx5v9AnQYcw3xmU54IbaXwjrXOoVr8n1F+iA5wMdkKK4xXZEEwa4MRDJ70OHpBgiXQYEYVVbjMOrW4QQivLbywbN5ItOLUJi2WA7v3/M0/GMgT5+QbHCY5CDqIM1CtaYZeWN/VtpiviCNVF+8DbY/EfdoRNXy21DdDJJG2GlaF2dF2rj+PlOYZw76lpY31FXsfzFVQbWuPwQ8PP1LSyQSTPvbzWOwRSBkgEDHPLx83GYj/rJPFYMRVGQ9bhvIGCNjNBX/ChDtrFF/7DeCgsuOttYySPGIehSVuoBlh+87oelSNQLilt85TgQYFmGCIqolecb24cyZaBTFI+xqCdwHecF6Xz6fHAoH8gTAStPLLv7CzEA4jVGeBAQuTn/iBy0G1ih0Ua1S9vRHw/6IVj1wR2/etyj8tdlft8470Nt9/NpxTyCLq+P0m7wAInzTn0l0PZQPxFwsXCMh4dh7ZgXV+J6pl2pJc7RrsTgmeuCOh2Bew/WiLUCbQ5W29G+0Q6F659a+7TrelhxbWK1xwA/rpOoH5R7KO0u955ie9Afw/w9YKj3DNqB/kLZ/S4eItA3Kusfla0LsRBxBCtvrJy55miPYoxQKx+1xggLL7xwtkv+YVSIK7RhcV7y6SJOI2BHoD8RdZqHW3HtxXamWGRGIM/56ybWt8MUcR5RibaEXxg7hMBL+0Dd5x5aDMPl2Ki+edzLh9PHiwc0+TJyzrkW6M8jYNL3JlA3os7EQ/L8fq08T7+Cdp9A/4D7ZD7E9cf9ECvloisK4tIPK4qykQZtQjycxBAiLxjzYLLMUp99OQ5vmRCwasWytt5A/Ai17nfkK9or4tKOYIRD4CEVb8/QhtHeIxDn08wiDfGvEXW3rL0uG58MMYvuJoF+CZQZsLEu9L5+d3ZjTQJjJuhy4spOauQ0Om8KvEGkc6Z0AKKTOJRSMxiIp6sIUSFm1korOiO1tg91fQye2X+gPER+88fK32Dz6wc7T4eE1xd5RTw61HQu+SFOYLGINSKD/FYPCLB0nhC8GcDV6iTmy4m/SOoAHT4sg0Jkh0utwAOFEPjLOmoMaOoNWOHS8cRFAoNGLJGw5giLDl63Z3DJADnyRtr95Q+xiTKV5S3yla+fMdiIbWVTLB3aSdDNlxHhhR+vzmH9xmul/Ag8AMH1CdaZEfoTqegsM8gpe0gT+w9mWmbdGJ36WmJuMX3qVeQHMSNE2mK8WA4Lcly6YM3MR7QYoDBIz7uoQFiEV/4BR6TRTlMGa3zcKfyM89HDWu6V8tfVUNr9Mm60a/GQBkEe7pE24nq42EH44lyTB+59hHj9m/si7SKBB1+1Ql6ops7nhal66hvHj7aRekpdw79zuwbE2rDOrKeM+foxlHZ3sH2jRtwzBnvMPIeyB4X57fl5LNdwHYW1DvUoH6JO5dfl50M4yq8rm8/3D/trx/P75u+jvEWTf5MmHy/mR6pPGemP5RSrSfo/9AcQt3GBAJ94yMj1UCs0C8e4JvrrQw3Ux6vVFvLw47TTTsseRoQAmX9rI9rjWoxabX1+HM89Ke5LZeUgbpmg2991mLdmpu+SF3T7O3/5h175vltZvorr8vV0MOMwxld5/7bFdBux3Ii6O5jxSSPyPNppDNYit2ixO9r59Xgpc7vQyhzQLEOvLCsH20baSreHzk0rhLzAyxPOWk/jW6Es5nFkCTD4xvqDJ8KIK/lX3cuOXCaYlMUb7Do6Hjyd5ebJazj9hZEWyhjw83ErBiJYbjGQxN8TjOiEINjgo3O1isVdK4e8+IAVyUDnHl+H8fQ/XHNEB67MwiTY8AQ+Bpz5DmdsH8yU+sFr8/jQ5cNI0SkO0Q63CXwUhlfoI2+kT/5q1RviE/Kd2mxF7i/fMWZQ1l9gMJ2P31/cZt7Ga3II5pS3lgiD5SIfk+PVUF6nxi8g98m8YNAf+3g1uL9BSpFRCG3F9SyXpYNlCqG//bIIr/xx/hj8cK1jsZl/NTQfL+ax2o+AYIiAyWAKFrQfWB+RFiIvvjB//OMfZ5bJsU87Tmlb6PgzWEAcD4u0YllHqt1HXEdMp73ilcn4+jVtO+ICdYL6QF8p/KbTT4o2In9f7K9ti7aDchXbj3raAKyF8XWI+I3og+9DRIx821xk1knLeYZDaXfz+9fDrRH3jOHe4+rJJ3HwMRn3Y+oLFnD04RCUWeZDk3HfrTfNYjyugxCH620/8+Wn7awl5sWxuAbaOWB5ygeruA/QFoXvZtqgMnc+waJZOMY10V872F8fj/EFdags8PYOb8LRt8ZalTcm4uE8Lhpq7VeWVrOv46FhuNCASdHtSuQfC2V4cF+i31AUYumH1wp5y/c4bxG3zBAmtsUDTZbzfbfY3t80+lfEqdcwhHzidice5vDmDJbHPIzFspy8ln38ur98lG0LBkOtu2VpttM6xdzmP5toePkHQeS4lTW9gcTcOCMjLepmH0WjgzMWoeyk9pcP4muS3R8htwUBOv+IqQwEatUZBuV0MkZqoIlQjCCEQFQrDwisDKCLA+coRyOmlBNBCha83s+AhB/WMHTKeZWXgHDY6oIuA0AEBMKf/vSnAQVdrGIjhIUyHTBEVYQ5OoVlT7N5FTQCnbWhBs49Vhx0IBkkkofIB4IuX6RHFCE/5CVvKcXrXEVXD+SDgUi8Utrfw4r8NgYhZUIBHW2sG+isl3EYarnHaj8GlFjPYjFTS9CNvGGxzfVLxxkRIc8LK3CEzmKAffhUDt9q+Tj5135jPQMBBjm1QpmVeQiuPJjhOi57fZ66g+DKoAIhBMsqvsrMK4p8LK8sUK8pA9cAgWXaDuo49ZNXCvkh4v7hD3/I3FEQj4F9+NtluV0Dg3PaDK6JM888s3qt5ss7Uu0+bhcQdDk29Y/2INoNjk9bgOBOnQ3Lz7y7BeJgmYuFaDwgZ10x5Lfl2xviDSRGkB/qBn1KLJpxv0A48cQTM4F3rPqaWSaa5C/fjgyl3S1rD/orWv4cDvWeMdB57+/49W6jnQ0xl7rOQ7V8faEdGq6YG3nhIRl9r/x9PLYx5drirQz6h1iXx6vzbKNdL3tQTNse6Q0k+JJOKwfeZKHvCCfamxAsWZ8/Z8Uy5vvaY8lxuH28/q4H7sUItzzww1czLirC3VHRl3SRT6st8/2RuCZ5U6esP0qZcLVwwgknZMVD/C8auESfqaz8wY5txesK8ZQ+aplgyz0yQr7exbr+ptH/IQ7jp7JxEW+e4DuY880HIemjh5iLgUaxjYgH/f0dt55tw6279RyjVeMo5rbGmQs9JETdVtb2aom5WOMSila7Iynqdg+2czhW1aWVT/hYMevk48YrqAgYeYujYEIngS/S8wGTGETEtkZNo3PDk1k6NMWAkHNkxS8lecD1QaMCA58IHINyMjiBRT7QEcHhf3ROozOSj9Nq8wgW8ZVdOlA///nPM0GqrBxsx4chAcESwYsQ5415OghlIb6Ay7bhPFlkUMS54cl+MSCi5X0X0nHNdywRlMrCeeedV+1k92ctgygY5558lAXcUVA/B/JDXbZvM64LsRwfoTEILcsnA9XwI4ooxn0y74PtjDPOKNste104LCfiWHl/32HNkt/5/PPPzy/WNR91lWOFdVR+R9o3Hmgg7MUr9PGq51lnnVUdeOT3QfzlIxtYVyIM0nawzOCk6BeP64WP8oX1Z3+CdP4YrT7P9bL//vtnxWAgG35q8+WK9qPR7T4CSFgO8VonIY7FfDxgwCVDDGaLvp7jvsjDTgagxUB9uvDCC7PViF6DfYiDW5gQdHjjIT4axMOpodTzYv7aYXm0291G3jNGkj/CSQTa3KhHsa6R/bRggsVg/vXqOBYDTdbTR0CA57oPIZ4H4Pk+VuzDfZd7Jb926EtFucqmWFgGQ6yqw9I5L3yX7dcsHPPt5kj08eINGOoPDz4JPFgZzsP/Mp5jvS4EGe5L/fU1cclEn4HAB3aL1w8PV8ruR/TD4oO8GKNEGvly1/pIaX592cP1fBrF+byP2Xw6EY+H3vSvOL/0gWircHcUgbdpiiH/MbPitlgucon1+elI1938sVppXjG3lc5WyozcGPvyC4G3tUrw8gfdioItZQjXCmgDIezmy8Y+ecOJ/LbhzHfH07XhJDLUfes5iQi5rXzCh8qmk/ejM4ylw0A/rCdqhV122aUqViFoxs2WGyaD3bgI6WCW+XSqle5g1vPaXTjsp9MbPlJJg8ECrylHGfhwynBCvqODiIOIjSDDK1B0hAiIAPEqLsuwQKiJNqC/DhnxWyXstttu1XOPhcR3vvOdzFKRThiBKeeCV4Kj7Ig08REXOp9x3hA38OkXX6VFVMWnaFji0IYNx7o6BBbEH3y2cs4iYLkbQhrCCmI1lgjhjxKfdQitWPASyCNfVg+LawYQ/dVtOqIhGCMKIlLTgSaQJumEMBQiebaxhf/4wFiIkPhAhXlx8M01gvuRcHkRg1SEWawOCYi9fFgszx7LcD6gRkA8xcqMwIOTGMgxuJsyZUp27VH3GBAde+yxWbzB/CGUxYAa6xDEaSzE+CEa5wX4ENW4LqLsn/zkJ6tWQ+SDMmPRSyAOeaftiFeHEfbjFX/isA91pihes63dA4O9uG7KyjrUdj/fhuMOh7oVbVYcJwaKcT+LhwZsj3MVviwRoIptEy4juOcR+FAn9TgGkezHK6FxT8p/FCrbYQh/e+yxR1WEpu6XiWdDSLaldxntdreR94yRBJ93LcN9O+65tDVYAmLlHYH75XACbWEEHqbG/Zz2jGPHA06EqnjzINxjYCFPWxl+xrlGeYgS+9A+FF8pj2O103SHV3zlRntBn6loQVlW3mbgONJ9PPpe0YekPhFC5C1j0qrroj0fyDKbe070h7h26QMVA/cj+i7xFhO+YnETF31SHiCXBfroGMREPK5h+nXxlgp5yz9UL0ujuI6+dnzwjIfbjJ0ife69+bFb9K9inEVaIUIzz348RMdiO0K+/crf9/Njt4hbnI503S0erxWWFXNb4Sy1Vx77s8zNG3mNpqib+dAtPglvL+yWptUIcAPlN1A44ogjqkJJMS5+hvjQFx8CQ7Ch0x4DWQYIEfbZZ59BWyHFvvVMSZ9OCZ1ePpTAD3EuOgekgVg2XDGVTkGkiyUUPwQfhCk+9IUIyTF5BZa4DPLgEizo8EQHpp5yNXMcXqtHrEUoo4yIVYi6BAZoYU0SZUCcoZOUD/ha/da3vpXFxfKGX3FfRDosnIcTeB0e6wEGlIhy/DgXnJd8pw8hJgKiJIJPWNl96lOfmitv1AUsLQcKpIX1OB3z+NhV1KPYFwtP4rVDYKBFW4A/YkJckwzAERT4InyIlGzn2smXfffdd88GHVi788odP+pBiL/sw6AWwTQfELaoj7jCOPDAA6v+bCM+12Q+jfy+ZfNYDHPeP/OZz2T5jQ90IRbl8/+JT3yi2kbSJh522GHZtYEFL3U8BN78Pl/4wheqbSIPOvigIvlGzIYT5aPuxT60M3y4r5MCghAWN8WHAcFgKO1+WFKTBoNbAi4e8q+nMijOW2SHiEtc6i/nONqNEH/ZFoHtvMrOA03amFNOOSUbnFKfQpghLoPUsPiNfYcypS2hDsUDBl0vvExxtNtdjteoe8ZQ6kE9+9Cu0L5g7c896eCDD87qczw0o/8W9yYG8Ag+vEEwlMCxwh82/QEezpF+9IciTfIQ/UYs4+ir8ZCVtxk++9nPZn2p/HVD3DKLnEivnaZY/yOcBbMd+vkYWr7czcJxpPt4O+20Uzoj9yZPO98j46F3/jwX5zFaibei+Ohh/t5FXOoRhi8E+kP564r+OR93rhUwPuBX7KNzT8zfP2vtX7Ye39AIz9xPefDOr5gv3kKJsvNwNdoQ3p5DZGY5xhv5e/MxxxyTjU9pT0gz2rXi2K0sX6wb6bpb67itsJ52PT9eKuZ5oO3F+C5LoEigXjE39gtRNwwJYz3LYc0b64Yz7cZ6aCwDFrj9BRpRGn+DBIoEiu5CisvcLD//+c9XfeTSYYjOJzf6gw46qPrUmLSL+xePV+9yDACIz1N6BCQ6L7E+xFxu5G9/+9vTXnvtVU06n4fBXpvc5PNPouN44UMTMYtAR4lBU7Cgo4QAWuaHqpqxFpvBzxTWZnSi6eRFiM4Vy/jVYlBW9uQfkY5BHmyCY+xL5wsr2S9+8Yt9PgKRP3dxvIGm7IP4hxVBHIcBbIgyDHCpH3mLQI6P6MYgnXlC5I006PxS58JCpJiHfD7Z/8iK2w/aYeojIeon8wg7iIBxHNa1ethoo40yiwuuvQhcD4icIVIiZsHlgAMOiCjZFA68Uou/OEQBQgixiKOck9NPPz2Fj9ssQuVv1113rVr3si5cFHAcPkgYr/NG/Pw0f77y69mXY+UHipF/6i9vthQHMww+2CceYBA/9mGgzYMP2s0IWBojRIe7BvKNmBH78EADsS7f7sS+rTiNa3CgvNM2h7V2WdzBtvukQXtE/YnrkHXFewCuNmI7A0QsifIhP0guE3SJy3rqdrxWyn0gBs+cRx4E5e9J+fRrzUcdjWk+HnmKvHCt5C2V8vE6aX447W4Z44HYcbzh3DOK9ZDj5fNRtn2gPMX2fDo8pIrXo6mXIebSPlJn8212PEyJY+fTibT7m9Im82AvPtQV/SH2of3kYXhY50Y64YKGa48Q1w3za621VsY4+lmsa4dQq03kjaa8EUBYYNZT5sFyHOy5rZWHfFmG0serlW7Zetq8OB79yFofDCvbt5XWcW1GX6i/fOOyKvoJ+F3O9zN5GMD1GLziuqLvzkN0vgFQFngISh8t0s33g3HbctRRR1W3sX++HsWx8unmt/NNCfrR1OuIG/limbdAwzCANLgXk8/IC+WL/HD+GU9Ev4u2Jraxb62xWz4/kQfiD6Xu5tMijXYKIdLGtFi2WB/T4naXJTAYAmWa5EDCbIi6xeOUpVWMU+9yV+XV7N5GWuiGpRCDyXoChUG0zQcKzi+/fqx86A62PIONny8388Pdv5hecTlemx2uRWgx3WZf5jUeBpO8Hkfno/gq6mjkn1dbsXTjVT1u/ojKjbz26ikDAyT8PvFqPwzIR7gaqGf/Vo2Dq4Q7K69KUX7EXgZdg+lgYw3Ej32jw9ZoFrxiyjGoHwzA6VCWfaiseFzKRt2mPuVf+yrGq2cZVx18NIkycp3EYLmefVsxDtcB1yRlRqTkeqBu1MuR+oS1KvHrGdQwIODDRJxrLFs5z40ItG9YF/MggDpaT/vGPvitpE2kzAPtQ93A1x3MEEEobye0HcM9P83Q7tcqAwNL6g2DTwbmjaqPtY7n+nICo93uNvKeUV6i4a1FrKWt4eEF4kX+PsQ9kvzz0KRRIgX1H5cjiCb19g1oB9mHPCIsDaY/MTw67bV3s3BsdB+P+hvjuUMPPTQT/NvrzA2/NBiS8HYY7ih4G4r7EX1Z+jFc97X62r/+9a+zD5Jx3WG4QaAfxzmkD1dPX2ywuSdtzinp86s1duN+TzweftNPIo/5uPS56DcV1w82P/n4ja67+bSdb30Czaj7hPYXel89Llib6UxgXRt+cAcSc/P5zlv31hJ58/EHM99DByZ8qA1mx0bF5STmhVvSzb+yFNti2monvVGcTGd4BOj4h0XS8FIa+t7c1LmJ8xurQAepVidprPI0GsfF+ng4rxBHJ24k88qgFSu9wX6Rl7JhHdSIgKg3kLDXiOM0SxoMwmkXhto2cC2FH+R6ysTgv2j1Vc9+A8WhfatlkV1rX/ZBVK43dFrdqJfLQPGaod2vlUf6f/1Zh9faz/WNJTDa11Yj7xmNJfFyagghYTlbTH8k7sU8yMh/9LJ4zLJl7h0j0ZaXHaud1zULx0bXK1xYEegjNKp/1s71gLJxPxpsPyaYIOKOhJAb6ddbP7jf95eXofY1Ix9l03rzVrav6yQw2gRCzOW4CJwhjLaSvodOiahLnhFm6w0h4sIgr3XWu39/8TJBN5yQ9xex3m1Y0iK+xpPJ4n4DWe7mCxgnN8TcmMb6YtouS0ACEpCABCQgAQlIQAISkIAERosAb/pgcYwV5iWXXJIdllfzDRKQgAQk8DKB0PLyPFjXatpeXq/Ml2Wg+RB1B4o32O09g91hoPickLziPlB8tocITCGLSnec4KgAMY319aRvHAlIQAISkIAEJCABCUhAAhKQQKMJ8ME8PmwVgW8gbL/99rHoVAISkIAESggUtb+SKK4agEBPI61z41hDVa1r7RfibYi5cZzRnNayOB7NPHgsCUhAAhKQgAQkIAEJSEACEmgeAgi4uA3AnRHuOPj4W97/c/PktDlywgcz+fAZfqsHE/hwIu6idBc0GGrGlUBzEAgjznxuFHTzNIY233AL3aFkA8F2IP9VIeqSfn5+KMdzHwlIQAISkIAEJCABCUhAAhKQwHAJ8HEvfob6CPAhtKGEbbbZJvEzSEACrUcgNLww0kTgjXWtV5rmyXFX5cvevSNhpds8RRxeTvJfshteSvXvzZOKWtbK9adSHrMZv3ZYnlPXSkACEpCABCQgAQlIQAISkIAEJCABCQyGgLrPYGi1btzuOXPmtG7uRyHnPDUYTVNwjuWTilE4sR5CAhKQgAQkIAEJSEACEpCABCQgAQlIQAItSKDr6aef7q2EFsy6WZaABCQgAQlIQAISkIAEJCABCUhAAhKQgAQk0FkEujuruJZWAhKQgAQkIAEJSEACEpCABCQgAQlIQAISkEDrElDQbd1zZ84lIAEJSEACEpCABCQgAQlIQAISkIAEJCCBDiPQXQkdVmSLKwEJSEACEpCABCQgAQlIQAISkIAEJCABCUigNQl0z549uzVzbq4lIAEJSEACEpCABCQgAQlIQAISkIAEJCABCXQYAc1zO+yEW1wJSEACEpCABCQgAQlIQAISkIAEJCABCUigdQl0d3V1tW7uzbkEJCABCUhAAhKQgAQkIAEJSEACEpCABCQggQ4ioKDbQSfbokpAAhKQgAQkIAEJSEACEpCABCQgAQlIQAKtTaC7t7e3tUtg7iUgAQlIQAISkIAEJCABCUhAAhKQgAQkIAEJdAiBHgXdDjnTFlMCEpBAkxPY6ahHmzyHZm8sCVx0xFJjeXiPLQEJSEACEpCABCQgAQlIoGkI9EyfPj299NJLTZMhMyIBCUhAAp1KYOlOLbjlroPA1KlT64hlFAlIQAISkIAEJCABCUhAAu1PQJcL7X+OLaEEJCABCUhAAhKQgAQkIAEJSEACEpCABCTQJgS6nnrqKZ3otsnJtBgSkIAEJCABCUhAAhKQgAQ6kcC0adOyYk+YMKETi2+ZJSABCUigwwh0jxs3rsOKbHElIAEJSEACEpCABCQgAQlIQAISkIAEJCABCbQmge45c+a0Zs7NtQQkIAEJSEACEpCABCQgAQlIQAISkIAEJCCBDiPQ3dXV1WFFtrgSkIAEJCABCUhAAhKQgAQkIAEJSEACEpCABFqTQHdrZttcS0ACEpCABCQgAQlIQAISkIAEJCABCUhAAhLoPAIKup13zi2xBCQgAQlIQAISkIAEJCABCUhAAhKQgAQk0KIEunt7e1s062ZbAhKQgAQkIAEJSEACEpCABCQgAQlIQAISkEBnEfCjaJ11vi2tBCQgAQlIQAISkIAEJCABCUhAAhKQgAQk0MIEuseNG9fC2TfrEpCABCQgAQlIQAISkIAEJCABCUhAAhKQgAQ6h4AWup1zri2pBCQgAQlIQAISkIAEJCABCUhAAhKQgAT6EDj11FPTxRdf3GedC81NoAcful1dXc2dS3MnAQlIQAISkIAEJCABCUhAAhKQgAQkIIEWITB16tQspxMnTmzqHCPk3nHHHdmPjE6aNKmp82vmXibQ3dPTIwsJSEACEpCABCQgAQlIQAISkIAEJCABCUiggwgg5E6ePLlaYua11K3iaOqZnlmzZmmh29SnyMxJQAISkIAEJCABCUhAAhKQgAQkIAEJSKCxBMrE29VXX72xBxmB1Mh3Xoiu5xA77rhjW1kfd1dCPeU2jgQkIAEJSEACEpCABCQgAQlIQAISkIAEJNAGBMLVQr4oiJ7jx4/Pr2q6+aGIuRSi3ayPexB0Z8+ePeQTdPjhhw953+HsePTRRw9nd/eVgAQkIAEJSEACEpCABCQggQIBx3cFIC52BIFaln6IW+0UeL2e0OyCXTsxb9ayFF0tRL1odv+5QxVz4zzEtd7s5Yz89jfVgW5/dNwmAQlIQAISkIAEJCABCUhAAhKQgARanED+o1cURVG3xU/oMLOPMFoMzS5yDlfMjfK2i6jbMxzr3IDBtJbFbDzhrbU9n0Y985FePXGNIwEJSEACEpCABCQgAQlIQAKDJ9Do8Vut9BzfDf7cjOUeTzzxRHb4xRdffCyz4bEHSeDaa69Nce7YFXH38ccfT5tuuukgU2qO6ORfQXro5wJhFIb50OyuFhol5kaZ20HU1UI3zqZTCUhAAhKQgAQkIAEJSEACEpCABDICIfgg/OXFwDwehF0+oKTAm6fSXPNFMTdyxzllWyuKulE3FXXjbNY/hV2ImbEXHJvZOrfRYm6UOzg0c9kjr2XTnnHjxg3Lh25Zoq6TgAQkIAEJSEACEpCABCQgAQm0G4FaFsWDtUCuFb8ZeCH0TZ8+vaaIm89jiIKsQxRSYMvTGdv5/LmplRPiIGoh6raaKI8wucQSS7Rcvmudi3rW12p/+tuXa3K//farRkEcLYYQNGF66qmn9tnMvmN5XY+UmBuFbGVRt3vOnDlRDqcSkIAEJCABCUhAAhKQgAQkIAEJdCgBBJ1aFp0DIRnOvgOl7fbBEahHzM2nONRznk9jLOZbNd+jySrEWo6JOMp1mg95VwtlYi8Cb3Gf/P4jOT/SYm7kHVG3rOyxvVmnY+ZygQoxlip/s54Q8yUBCUhAAhKQgAQkIAEJSKDZCDh+a7Yz0tj8DFYArHX0SIexvuP9WpRGdj3X6lAEOMTRVjxv5BtRcqBA3Ww1K+SByjTQ9rxYS50Ia9TYj/Mdgm+Z2BvxEHXH4q2CYn4jPzEt5qlowTzQ9kiHKccKFvn1zTzfPVaZo0K0ogI+Vrw8rgQkIAEJSEACEpCABCQggbEi4PhtrMiP/HFDhK3nSAhi9YhiiEekaxhdAkMVcyOXw90/0hntKaJurRBCJnEQ7VjuhJAXaylvmf4WAmYw6o8L9wBDcxEYMwtdMMTFRCXy6V1zVQxzIwEJSEACEpCABCQgAQlIIE/A8VueRvvM4y+3VmCcXstPKYItH0yrJZDVazlZ69gjsZ681spv2fGo88UAk2bVL2rlrawclKsey9Zi+UdjuVZ+ax07HkoUP/BGHSw+WIjz36znsFYZB7s+xFr2K7O+zVvv1iPWwo14eX+8g82T8RtLoLsSGpviIFOLSlH2tGCQSRldAhKQgAQkIAEJSEACEpCABEaQgOO3EYQ7BkmXCV5kAytcxDFEr1oWuaxne38f1CL9Zgq1BM968zjc/es9jvEGTwDhNsRa9ma5KOZGqsSrtS3itPI0L9ZS1qJATj0OwbceMTdYkJbaXdAY+2n37Nmzxz4XlRxQwahI+QuwKTJmJiQgAQlIQAISkIAEJCABCUigDwHHb31wtORCLVFrIJG2WNi8+FvcVhTZitvHYjnKN9hjh8A92P2MP3oEqNOhKWE93l8YaHt/+zb7thBryWeZABtWtmWWuwOVjba/LM2B9nN74wmMrXluoTxceIi6g3lCUEjCRQlIQAISkIAEJCABCUhAAhIYBQKO30YB8ggdopbQGla3QzlsLevVvMg2lHRHYp8QoetNuz8r5HrTMF5zEcCVSDuGEGspW5nRZGznuixa7tbLQ1G3XlIjG6+7q6trZI8whNSpWHydjqlBAhKQgAQkIAEJSEACEpCABJqXgOO35j03tXJW5jd3sCJnWdqIuvUE6sxYv/JOeXk1nWmtUE+cWvu6fvQJ5B8q1FsXRz+XI3fEfPm5xoqaWn67VrYjdx5GK+UeBN3e3t7ROt6gjsNNphMvwkFBMrIEJCABCUhAAhKQgAQkIIEmIOD4rQlOQh1ZQEgtE1NXX331mnuHOBTiJ3FjvrgTY/iikJRfjvlmsZDE+rbMlzDlY5uhNQhwvor6UVldpDSsr1V/W6O05bnMu1ooe/M9rHOH4mohf0QehOSPld/m/OgR6GlGMdfKMXoVwCNJQAISkIAEJCABCUhAAhIYDgHHb8OhN/r71rLOLRO4EH7zHzYLIZh1nPeyEKJaCLcRJ7/MscqOF3FHe4pwS/4ij5QhyjHaefF4qWbdCjZFVwHUpTLxnXPIg4Oo88zza6a6F2Ua7pTrMepsf2IudbzIbzDH5hiKuYMhNnJxm07QtTMwcifblCUgAQlIQAISkIAEJCABCTSSgOO3RtIc+bQGa50bQlhZzhCGQkCK7aTPx6ZCGI31xWl/1sDFuKO1nC9Lfn60ju9xhk6gTMyN1GqJvbG9HaZ5kZVrr3j95cXe4bha4Dhh5dsO3Fq9DE3jcsGOQKtXJfMvAQlIQAISkIAEJCABCXQKAcdvrXmmEVuLAcFrKBaLeUG3aMlbPEZ+eajHy6cxUvPtKuRyvbZr6E/MbdcyF8sVFrNck0Xr3LzYOxxXC4q5RepjIIB8SQAAQABJREFUv9zdDC4X7AyMfUUwBxKQgAQkIAEJSEACEpCABOoh4PitHkrNGafsdfP+rGXDxUJZafIiMPMIa/l1Zfuwrr/j1drH9RIoI1BvnSvbt13WIbTGg4gy69u82DscVwta5jZfjekZyyzZERhL+h5bAhKQgAQkIAEJSEACEpBA/QQcv9XPqlljhvBK/hBrcanQnwiLUFR8fbtW2SJt4tfahzj9Ha9W2qOxPvId+evvw2+jkZ9GH6PdykfdjHPVaFatlF4IrWXWt7TZ/Ym99ZYzjlFv/EbFI//9idCHH354v4caaHt+Z47VaqFn3Lhxafbs2aOebypEVKxRP7gHlIAEJCABCUhAAhKQgAQkIIG6CTh+qxtVy0REDBvodfX+BN1alrbsw48PpxUtfLEQbrZQdBcRee7vw2/NVob+8tOO5Ys61l+5O2FbiJCI9UXhE0ZhnYsbhloPWQbiNJZtf+S/WLaB8jzY7XCMYw1237GM3zNnzpwxOT6VyyABCUhAAhKQgAQkIAEJSEACzU/A8dvL5+joo48e1MkabPxBJT5KkRF94+NoiIP1imnsR3z2DZG0GetRlK0MJyJYM+a5LK+11rVj+Vr9nNQ6VwOtr9We9OdqgTTHysJ2oPLUsz2E1pESdVtVzIVd03wUrZ4TaRwJSEACEpCABCQgAQlIQAISkIAERo9APZa8tXIT+yKMln2QrdZ+zbK+HQTd/li2e/n6K3u7bBvI1UI7lHOkRN1WFnM5r2PqQ7cdKpZlkIAEJCABCUhAAhKQgAQkIAEJSKA2gXqtemunMHJbwnq47Ajt4KO13ctXdt46ZR2CfNFylWstBNB24hBlKpZ3qGVsdTGXcncPtfDuJwEJSEACEpCABCQgAQlIQAISkIAEWplAu7++3+7la+W6N9y8D+RqYbjpN9v+iLoIscMN7SDmwqCnt7d3uCyy/Qf6etxA2xuSCRORgAQkIAEJSEACEpCABCQggWETaPT4rdHpDbuAJiCBVwggeGLpWBZqffitLG6zrmv38jUr95HOVye4WihjOFxL3XYRc2GTfRStq6urjJPrJCABCUhAAhKQgAQkIAEJSEACEpBAWxMY6offWgVKu5evVc5Do/LZSa4WypgNVdRtJzEXLl3PPPNM75w5c8oYuU4CEpCABCQgAQlIQAISkIAEJND0BKZNm5blccKECU2fVzMoAQl0BoGpU6dmBZ04cWJDC4x1btGX7H777Zd0r9FQzE2fWLdibtOfIzMoAQlIQAISkIAEJCABCUhAAhKQgAQkIIHso2d5X7LMK+Z2XsXIfOjqcqHzTrwlloAEJCABCUhAAhKQgAQkIAEJSEACEhgZAo22zM3nMtwO4H4h5vPbnW9/Aj2VkGbPnt3+JbWEEpCABCQgAQlIQAISkIAEJCABCUhAAhJoAwIKuW1wEodRhO5Zs2YNY3d3lYAEJCABCUhAAhKQgAQkIAEJSEACEpCABCQggdEi0F0Jo3UsjyMBCUhAAhKQgAQkIAEJSEACEpCABCQgAQlIQALDIKCgOwx47ioBCUhAAhKQgAQkIAEJSEACEpCABCQgAQlIYDQJaJ47mrQ9lgQkIAEJSEACEpCABCQgAQlIQAISkIAEJCCBYRDo9oNow6DnrhKQgAQkIAEJSEACEpCABCQgAQlIQAISkIAERpGAFrqjCNtDSUACEpCABCQgAQlIQAISkIAEJCABCUhAAhIYDoHucePGDWd/95WABCQgAQlIQAISkIAEJCABCUhAAhKQgAQkIIFRItA9Z86cUTqUh5GABCQgAQlIQAISkIAEJCABCUhAAhKQgAQkIIHhEOi6/vrre1966aXhpOG+EpCABCQgAQlIQAISkIAEJCCBMSPQ09MzZsf2wBKQgAQkIIHRJqAP3dEm7vEkIAEJSEACEpCABCQgAQlIQAISkIAEJCABCQyRQM+8886burvVdYfIz90kIAEJSEACEpCABCQgAQlIYIwJzJ49O8vBhAkTxjgnHl4CEpCABCQw8gQqWq5i7shj9ggSkIAEJCABCUhAAhKQgAQkIAEJSEACEpCABIZPoDueZA4/KVOQgAQkIAEJSEACEpCABCQgAQlIQAISkIAEJCCBkSTQ3dXVNZLpm7YEJCABCUhAAhKQgAQkIAEJSEACEpCABCQgAQk0iID+FhoE0mQkIAEJSEACEpCABCQgAQlIQAISkIAEJCABCYw0AS10R5qw6UtAAhKQgAQkIAEJSEACEpCABCQgAQlIQAISaBCB7t7e3gYlZTISkIAEJCABCUhAAhKQgAQkIAEJSEACEpCABCQwkgQUdEeSrmlLQAISkIAEJCABCUhAAhKQgAQkIAEJSEACEmggge5KaGByJiUBCUhAAhKQgAQkIAEJSEACEpCABCQgAQlIQAIjRaB7zpw5I5W26UpAAhKQgAQkIAEJSEACEpCABCQgAQlIQAISkEADCfR0dXU1MDmTkoAEJCABCUhAAhKQgAQkIAEJdDaBq66+Nj362GNpscUWTdtuvWUpjIceejhd+58bsm0TJoxPa60xoTTerbdPS9Om3ZFt22nSDmmenp7SeKO58rK//zM988wzae2Ja6bxq606mof2WBKQgAQkUCHQo8sF64EEJCABCUhAAhKQgAQkIAEJSKBxBP564cXp4ksvzxKcfN4f0rhx4+ZK/PyLL0k/PuMX2frttt0qHX3k4XPFYcVPf3Fmuvwf/0xLLL5Y2uUNO5XGGWjl1FtvT9PvvCstvdSSaYvNNhko+oDbTz7tp+mee+9Lhxy0v4LugLSMIAEJSKDxBHS50HimpigBCUhAAhKQgAQkIAEJSEACHUxg0403rJb+zrvuqc7nZ7DijfD3K/6VZs2aHYvVKS4S/33tf7Ll7bbdurp+sDOX/f2K9I1vH5d+/ds/DHZX40tAAhKQQBMS6NblQhOeFbMkAQlIQAISkIAEJCABCUhAAi1LYMMN16/m/cabp1TnY+bpp59J/72p7/pbbr0tNleniMHPPvdctrz5phtX1zsjAQlIQAKdTaC7s4tv6SUgAQlIQAISkIAEJCABCUig0wmceuqpDUWw8oorZC4SSPSGG2+eK+0bbnp5HW4UJqy+Wrb9ulf86eYj58XgjTZYL7/JeQlIQAIS6GACY+9NvYPhW3QJSEACEpCABCQgAQlIQAISGHsCd9xxR0LUnTRpUho/fvywM8SbsFttsVn664WTqy4T8olee9312eJrt9s2LbLIwmna9DvTVddclz7wvnfno6Xr/3tTtozou8QSi1e34RP37D+fl26ackt6+OEZ2fpll106bbPlFmn33XZNyy6zdLbuL3+9MDv+rbdPz5ZvnjI1fflrx2TzH/rg+9OKKyyfzfN34823VPz+XpaIc8vU29LKK62YVh+/atrtLW9KeRcS1R1emZky9db0m9/9Mf3n+v+mx594MhOot9ly8/SBPfdI8883XzG6yxKQgAQk0AACPb29vQ1IxiQkIAEJSEACEpCABCQgAQlIQAKtSyBE3R133DETdodbko032iATdBE573/gwbTC8q+qJvmPf16VzW+2yUaZoPvzX/22Ysl7U+ZeYcEFFsi2MVa/4pV4iMMRzrvg4swfbizHFPcM/C665LJ04ve/nX0ADZE1Ps5GPNw3xPIe73x7tivHOfOss9OPTj4tksqmfPSM398uvyK9Y7e3pI8f9OE+21mY/LfL03E/OrnPesTpEKjJR9kH4frs4IIEJCABCQyagILuoJG5gwQkIAEJSEACEpCABCQgAQm0K4HJkycnxN3hWuvmXSRMueXWqqD70EMPZwIv/DapiL7z5axY/1txzxDi7T333f8//7mbvOw/95EZM6pi7gbrrZPe/Mad08S11sxOxQUXX5J+debvE3GuvOqatOsur09vffMb0xabb5qw1EXcxep2r4rlLOFVyy2bTS//x5VVMRdL4D33eGdaddWV0623TUvnVvbD1+9Zfzwnrbfu2mnSDq/J9om/8AN8yEH7p/XXXyc98sijmeXwv67+d7r19mmJtHd47asjulMJSEACEmgQge5KaFBSJiMBCUhAAhKQgAQkIAEJSEACEmh9AmGte/HFFw+5MFjkLrP0y64P8n50r60Iq4S1J66ZFl10kYqgO29VxL3uPy9vY/tNuY+mrbfuRFZVrHj/9yG1b33tyLTLG3bK3CLgGuGA/T6YpUk8xFTCBuuvm14/aYe0/jov77/csstky6xbbLFF0+zZs9PJp/00i4uY+/3vfCNNet1r0xqrj09vqqT99a98MYXF8OSKO4aygBUubh7WWmNCevU2W6Yjv/CZajRcNxgkIAEJSKDxBLp1udB4qKYoAQlIQAISkIAEJCABCUhAAq1PAGtdfOsi8A4lbLXlptlu/37FZy4L11z7n2zdtlttkU3527JiRUv451VXZ1P+wn8u/mvnn3/+bP1qq6yc/u9jH0lf+vynq0Jr7PD888+nmTOfyhZnvTQrVvc7vX36HZlbBSLt9b490kILLdgn/iILL5wJtO999+5pjQmr99nGwrZbb5nWmbhWn/UIwK/bfrts3SOPPtpnmwsSkIAEJNAYArpcaAxHU5GABCQgAQlIQAISkIAEJCCBNiQQ1rr77bffoD+YtunGG6U/n3tBJpo++eTMzF9u+MXdtOI/NwKuFwj4wH30scfTUksukblNYF2IvcxjRcuP8PAjM9JtlY+d3X3PvWn6nXelv1fcG+AjdzDhgQcfqkbfYrNNqvP5GVxAhBuI/HrmJ645obgqW15s0UWz6axZ9QnLpYm4UgISkIAEahLowUE5r1kYJCABCUhAAhKQgAQkIAEJSEACEignMH369EELuhtW/MpGuLniR3fppZasiq55y9bxFZcJSyy+WOIDav+54ca07tprZfPsG2JvpHPpZf9Ip//sl5n4G+uGOs0LukXr3HrSXHSRRUqj9SY/vl4KxpUSkIAEGkSgRzG3QSRNRgISkIAEJCABCUhAAhKQgATa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9v5wDg8BMB4InsmTJxffPI6JzzBmjMVuUX3vw9N/WOtGdK72eXOfBEiABEiABEiABEiABEiABOwEvOBFRSMBEiABEiCB0AhAoEVSKySnwgsPAyFUwZPTnbCFUA3wnk2pvDUh2qEeEnXhFRmD2Bger8vIXCs2tYW3KxKc4e8+BFR4TGP5Ju4tzuG+OHvSPmn+uBd4oS94cON9gX7Q35MM7wfjpQ2vV7xHMDa8ryD6uzJ45LrzyrXXj6jXNq4b2nvL7i1sv96THlBEZK72/rlPAiRAAiRAAlFJIKMKyYCkZ7B41AeiEjX7JgESIAGPEQhfMDqPXZYdkQAJkAAJxEQC4RVkIWQhjigt+hCAgAsh3pMGITi8YrD9+hCAwyIC29vE1P24NNeYeo84bhIgARKIawQQm/fTIR/FtWlzviRAAiQQownEN7GGYvQsOHgSIAESIAESIAESIAESIAESIAESIAESIAESIAESiAMEGEM3DtxkTpEESIAESIAEPEEgvgrR0Padt3RXBfPn9USX7IMESIAESIAESIAESIAESIAESCCcBBhDN5zAWJ0ESIAESIAE4iqBBCquXqs3m+jpI3SAu5iycZUP500CJEACJEACJEACJEACJEACT4OAF2Lp0UiABEiABEiABEjgSQQQExnJ7mBm+6Q2PE8CJEACJEACJEACJEACJEACJOBZAkyK5lme7I0ESIAESIAEYi0BCLrnz5+PtfPjxEiABEiABEiABEiABEiABEggJhCIHxMGyTGSAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmIUNDlu4AESIAESIAESIAESIAESIAESIAESIAESIAESIAEYgiB+MpiyFA5TBIgARIgARIgARIgARIgARIgARIgARIgARIgARKI2wS8Hj58GLcJcPYkQAIkQAIkQAIkQAIkQAIkQAKxgsDRo0djxTw4CRIgARIgARIIjUD8ePHihXae50iABEiABEiABEiABEiABEiABEiABEiABEiABEiABKIJAa9oMg4OgwRIgARIgARIgARIgARIgARIgAQiRcDX1zdS7dmYBEiABEiABGICAXroxoS7xDGSAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQgCIQ//HjxwRBAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiQQAwhQ0I0BN4lDJAESIAESIAESIAESIAESIAESIAESIAESIAESIAEQiK+MJEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABGIAgfiPHj2KAcPkEEmABEiABEiABEiABEiABEiABEiABEiABEiABEiABJgUje8BEiABEiABEiABEiABEiABEiABEiABEiABEiABEoghBBhyIYbcKA6TBEiABEiABEiABEiABEiABEiABEiABEiABEiABBhyge8BEiABEiABEiABEiABEiABEiABEiABEiABEiABEoghBBhyIYbcKA6TBEiABEiABEiABEiABEiABEiABEiABEiABEiABLyIgARIgARIgARIgARIgARIgARIgARIwLMErl27Lhs3b3Xdabx4kiBBAkmRPJlkzpRJfHxyifK2cl33GZfu3L1Xzp+/ILm8c0rhQgWe8WhCXv7qtWuyafM2faJm9aqSKFGikJVYQgIkQAKxjAAF3Vh2QzkdEiABEiABEiABEiABEiABEiCBZ0/gpJ+fjBg9LkwDyZkju4wcNlCyZ8sapvpPs9LPc+fLpi1/S9PGDaKloHv+/EWLc6WK5SIt6G7csk0gxufP6yu+eXI/TdS8FgmQAAmEmYDX48ePw1yZFUmABEiABEiABEiABEiABEiABEiABMJHIHeunJIqZSqr0ePHj+T2nTty9NgJXeZ3+ox07NZbpk0aKxnSp7PqcefpE5j5w0/yz6Ej0u7dVhR0nz5+XpEESCCMBCjohhEUq5EACZAACZAACZAACZAACZAACZBARAh0eb+dPF/yuRBNIepOnfGdzFu4RK5cvSablXdovVdeDFGPBe4J5MyZXT4e0EfiqX8pkid3X5FnSIAESCAWEYivLBZNh1MhARIgARIgARIgARIgARIgARIggfARmDZtWvgaeKh2sqRJpVOHtlZv23bssva5EzYCyZMlk2pVKskLVSoK9Y2wMWMtEiCBmE+AHrox/x5yBiRAAiRAAiRAAiRAAiRAAiRAApEgcPz4cYGoW7NmTZWgzCcSPYW/KZKjIYYuwi4kTZLE6gAeu+Mnfq2P+/fpIWfOnZeVq9bKlr93SMH8eaVrx/b63I2bN2Xu/EWyb/9BOXDwkHh755DSyhu4QvmyUrRwQas/s/Po0SMdE3fx0mVy4uQpOav6TZsmtWTNmkWqVq4gjerXC3Mc2j379suC337XXWfI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9BUGMRAiI+LJvt6jm4wf9Y3gOGEoR1x+u9mPwV6enPNI/mqs49Nt5R0Vs9j0Cf01Yi76DK/l9996zVTX045PP6lDHrgURi8gsdiwQf10uAUTQ9fOrIPa34C+vSV9eoeXb1pf53lK6LHjvPX79APrWrGLuY0a1JPRI4ZYx2Xvq69tn6Yc+/70w3d1SA5z7iC8GzEX57jPx+/FGgrEtMMpCZBAyiOQZteuXbfcH7Ypr5vsEQmQAAmQAAmQAAmQAAmQAAmQAAl4JmBGnhYv7hQhPde8+6WXLl3WYQsQszQosIgE5M+nE3gltWcILXAqPFwQGzVrlixeN4fEWRCCM2bMoLeNS4BEWIYTJ04KtsmvBFwjbmJnOAcIxwCv5BwqCWtKMIR/iIg4I+ERESIqEkQOJeb658ktSQ09eU7F3j2qmOVQSXz98+ZRyWadYnJyHjdGMSG0RLp06SR/vrwu4nxC93P9+g0VSiJc80ivBOpcOXOoRLk5EtoM65MACaQQAml27959K7HZrFPIMbAbJEACJEACJEACJEACJEACJEAC/2ECqUnQ/Q+fJh46CZAACZBAMhHwuZUMAcuTqS9shgRIgARIgARIgARIgARIgARIgARIgARIgARIgARIIA4CFHTjgMNVJEACJEACJEACJEACJEACJEACJEACJEACJEACJJCSCPjCQ9cMT0lJHWNfSIAESIAESIAESIAESIAESIAESIAESIAESIAESIAEXAnQQ9eVB5dIgARIgARIgARIgARIgARIgARIgARIgARIgARIIMUS8A0MDEyxnWPHSIAESIAESIAESIAESIAESIAESCA+AgcOHIivCteTAAmQAAmQwD1DwCdt2rT3zMHwQEiABEiABEiABEiABEiABEiABEiABEiABEiABEjgXibgc/PmzXv5+HhsJEACJEACJEACJEACJEACJEACJEACJEACJEACJHDPEPBJkybNPXMwPBASIAESIAESIAESIAESIAESIIH/t3cf4FFUXRiAD5vQlN47hABKL9KRYkCkKF2K9CKoKKCgP0VQQaRIRyx0UaxYsKFIUZDeQaQmhF5DCT0J8N/vhjtMsptkN0BINt99ns3OTr/vzOLj2TPnUoACFKAABShAAW8WcHhz59g3ClCAAhSgAAUoQAEKUIACFKAABShAAQpQgALeJMCArjddTfaFAhSgAAUo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"/><use stroke="#7E7C7B" xlink:href="#rect-1"/></g><text id="open-sources" fill="#C06334" font-family="OpenSans-Bold, Open Sans" font-size="18" font-weight="bold"><tspan x="28" y="123">open sources</tspan></text><path id="Line-2" fill="#C06334" fill-rule="nonzero" d="M28.662 53.632l19.852 7.56-5.89 5.413 32.98 35.88 1.015 1.104-2.208 2.03-1.015-1.104-32.981-35.88-5.89 5.414-5.863-20.417z"/></g></g></svg> \ No newline at end of file +<<<<<<< HEAD +<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="697" height="228" viewBox="0 0 697 228"><defs><style>@import url(https://fonts.googleapis.com/css?family=Open+Sans:bold,italic,bolditalic%7CPT+Mono);@font-face{font-family:'PT Mono';font-weight:700;font-style:normal;src:local('PT MonoBold'),url(/font/PTMonoBold.woff2) format('woff2'),url(/font/PTMonoBold.woff) format('woff'),url(/font/PTMonoBold.ttf) format('truetype')}</style></defs><defs><path id="rect-1" d="M0 0h698v228H0z"/></defs><g id="debugging" fill="none" fill-rule="evenodd" stroke="none" stroke-width="1"><g id="chrome-open-sources.svg"><g id="Bitmap"><image width="698" height="228" xlink:href="data:image/png;base64,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EpCABCQgAQlIQAItQEAL3RY4SWZRAhKQgAQkIAEJSEACEpCABCQgAQlIQAISkAAEuseNGycJCUhAAhKQgAQkIAEJSEACEpCABCQgAQlIQAISaAEC3XPmzGmBbJpFCUhAAhKQgAQkIAEJSEACEpCABCQgAQlIQAIS6BHB0Ajccccdafr06Wny5MlDS6DGXuPHj0+TJk1KTEciTJ06NUt24sSJI5G8aUpAAhKQgAQkIAEJSEACEpCABCQgAQmMEQF1nzECP8qH1YfuEIFffPHFDRdzyUoIxUPMlrtJQAISkIAEJCABCUhAAhKQgAQkIAEJSEACbUxAC90hnlyEV8LRRx89xBTKdzv88MMzoRgrXYMEJCABCUhAAhKQgAQkIAEJSEACEpCABCQggTyB7krILzsvAQlIQAISkIAEJCABCUhAAhKQgAQkIAEJSEACTUqgZ/bs2Q3PWqPdEYQ/2f3226/heTVBCUhAAhKQgAQkIAEJSEACEpCABCQgAQlIYGQIhE6IvhffjhqZI3VOqg13uXDqqadmfmAbiTDcG1ABdEXQSLKmJQEJSEACEpCABCQgAQlIQAISkIAEJCCBkSEQYi6po++Fxqe+NzzePV1dXam3t3d4qeT2jhOjb9kcFGfrInDJJZekwViMv/a1r03zzjtvuuGGG9LDDz+cVl555TRx4sS6jmWkziDwwgsvpGnTpqXp06dnU+rJUkstlZZffvm0ySabpLXXXrszQFRKeemll6ZZs2alDTfcMC277LIdU+5aBX300UfThRdemO6888507733Zm3JiiuumFZfffX0hje8IS244IK1dnV9mxKYM2dO9WOniy22WNpiiy36Lek999yT+ILw/PPPn7bbbrt+47bzRq6h22+/PS288MJp6623bueiVsvWX3+FfvWSSy6Zlltuuexew/JoBfpD1MmnnnoqrbHGGol+kkECQyWQr+fcG/kNFOh3XX755dVo6623XnYdVFc407YE4p5IAbG8mzBhQtOU9cknn0xXX311lp8YP7Lw97//PT3//PNN1zeuld+mAWpGJDAEApMnT55rL9a1mqCLASt5Di8CcxWqxgp0UkTtRnsdaLigWyP/rpZAvwQYSP/617/uN05x45ZbbpmJMH/+85/TXXfdlQ0kO1XQRaj729/+liHabLPN0uKLL17E1XHLd999d/re976Xnnnm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ueXWqqD70EMPZwIv/DapiL7z5axY/1txzxDi7T333f8//7mbvOw/95EZM6pi7gbrrZPe/Mad08S11sxOxQUXX5J+debvE3GuvOqatOsur09vffMb0xabb5qw1EXcxep2r4rlLOFVyy2bTS//x5VVMRdL4D33eGdaddWV0623TUvnVvbD1+9Zfzwnrbfu2mnSDq/J9om/8AN8yEH7p/XXXyc98sijmeXwv67+d7r19mmJtHd47asjulMJSEACEmgQge5KaFBSJiMBCUhAAhKQgAQkIAEJSEACEmh9AmGte/HFFw+5MFjkLrP0y64P8n50r60Iq4S1J66ZFl10kYqgO29VxL3uPy9vY/tNuY+mrbfuRFZVrHj/9yG1b33tyLTLG3bK3CLgGuGA/T6YpUk8xFTCBuuvm14/aYe0/jov77/csstky6xbbLFF0+zZs9PJp/00i4uY+/3vfCNNet1r0xqrj09vqqT99a98MYXF8OSKO4aygBUubh7WWmNCevU2W6Yjv/CZajRcNxgkIAEJSKDxBLp1udB4qKYoAQlIQAISkIAEJCABCUhAAq1PAGtdfOsi8A4lbLXlptlu/37FZy4L11z7n2zdtlttkU3527JiRUv451VXZ1P+wn8u/mvnn3/+bP1qq6yc/u9jH0lf+vynq0Jr7PD888+nmTOfyhZnvTQrVvc7vX36HZlbBSLt9b490kILLdgn/iILL5wJtO999+5pjQmr99nGwrZbb5nWmbhWn/UIwK/bfrts3SOPPtpnmwsSkIAEJNAYArpcaAxHU5GABCQgAQlIQAISkIAEJCCBNiQQ1rr77bffoD+YtunGG6U/n3tBJpo++eTMzF9u+MXdtOI/NwKuFwj4wH30scfTUksukblNYF2IvcxjRcuP8PAjM9JtlY+d3X3PvWn6nXelv1fcG+AjdzDhgQcfqkbfYrNNqvP5GVxAhBuI/HrmJ645obgqW15s0UWz6axZ9QnLpYm4UgISkIAEahLowUE5r1kYJCABCUhAAhKQgAQkIAEJSEACEignMH369EELuhtW/MpGuLniR3fppZasiq55y9bxFZcJSyy+WOIDav+54ca07tprZfPsG2JvpHPpZf9Ip//sl5n4G+uGOs0LukXr3HrSXHSRRUqj9SY/vl4KxpUSkIAEGkSgRzG3QSRNRgISkIAEJCABCUhAAhKQgATa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9v5wDg8BMB4InsmTJxffPI6JzzBmjMVuUX3vw9N/WOtGdK72eXOfBEiABEiABEiABEiABEiABOwEvOBFRSMBEiABEiCB0AhAoEVSKySnwgsPAyFUwZPTnbCFUA3wnk2pvDUh2qEeEnXhFRmD2Bger8vIXCs2tYW3KxKc4e8+BFR4TGP5Ju4tzuG+OHvSPmn+uBd4oS94cON9gX7Q35MM7wfjpQ2vV7xHMDa8ryD6uzJ45LrzyrXXj6jXNq4b2nvL7i1sv96THlBEZK72/rlPAiRAAiRAAlFJIKMKyYCkZ7B41AeiEjX7JgESIAGPEQhfMDqPXZYdkQAJkAAJxEQC4RVkIWQhjigt+hCAgAsh3pMGITi8YrD9+hCAwyIC29vE1P24NNeYeo84bhIgARKIawQQm/fTIR/FtWlzviRAAiQQownEN7GGYvQsOHgSIAESIAESIAESIAESIAESIAESIAESIAESIAESiAMEGEM3DtxkTpEESIAESIAEPEEgvgrR0Padt3RXBfPn9USX7IMESIAESIAESIAESIAESIAESCCcBBhDN5zAWJ0ESIAESIAE4iqBBCquXqs3m+jpI3SAu5iycZUP500CJEACJEACJEACJEACJEACT4OAF2Lp0UiABEiABEiABEjgSQQQExnJ7mBm+6Q2PE8CJEACJEACJEACJEACJEACJOBZAkyK5lme7I0ESIAESIAEYi0BCLrnz5+PtfPjxEiABEiABEiABEiABEiABEggJhCIHxMGyTGSAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmIUNDlu4AESIAESIAESIAESIAESIAESIAESIAESIAESIAEYgiB+MpiyFA5TBIgARIgARIgARIgARIgARIgARIgARIgARIgARKI2wS8Hj58GLcJcPYkQAIkQAIkQAIkQAIkQAIkQAKxgsDRo0djxTw4CRIgARIgARIIjUD8ePHihXae50iABEiABEiABEiABEiABEiABEiABEiABEiABEiABKIJAa9oMg4OgwRIgARIgARIgARIgARIgARIgAQiRcDX1zdS7dmYBEiABEiABGICAXroxoS7xDGSAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQgCIQ//HjxwRBAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiQQAwhQ0I0BN4lDJAESIAESIAESIAESIAESIAESIAESIAESIAESIAEQiK+MJEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABGIAgfiPHj2KAcPkEEmABEiABEiABEiABEiABEiABEiABEiABEiABEiABJgUje8BEiABEiABEiABEiABEiABEiABEiABEiABEiABEoghBBhyIYbcKA6TBEiABEiABEiABEiABEiABEiABEiABEiABEiABBhyge8BEiABEiABEiABEiABEiABEiABEiABEiABEiABEoghBBhyIYbcKA6TBEiABEiABEiABEiABEiABEiABEiABEiABEiABLyIgARIgARIgARIgARIgARIgARIgARIwLMErl27Lhs3b3Xdabx4kiBBAkmRPJlkzpRJfHxyifK2cl33GZfu3L1Xzp+/ILm8c0rhQgWe8WhCXv7qtWuyafM2faJm9aqSKFGikJVYQgIkQAKxjAAF3Vh2QzkdEiABEiABEiABEiABEiABEiCBZ0/gpJ+fjBg9LkwDyZkju4wcNlCyZ8sapvpPs9LPc+fLpi1/S9PGDaKloHv+/EWLc6WK5SIt6G7csk0gxufP6yu+eXI/TdS8FgmQAAmEmYDX48ePw1yZFUmABEiABEiABEiABEiABEiABEiABMJHIHeunJIqZSqr0ePHj+T2nTty9NgJXeZ3+ox07NZbpk0aKxnSp7PqcefpE5j5w0/yz6Ej0u7dVhR0nz5+XpEESCCMBCjohhEUq5EACZAACZAACZAACZAACZAACZBARAh0eb+dPF/yuRBNIepOnfGdzFu4RK5cvSablXdovVdeDFGPBe4J5MyZXT4e0EfiqX8pkid3X5FnSIAESCAWEYivLBZNh1MhARIgARIgARIgARIgARIgARIggfARmDZtWvgaeKh2sqRJpVOHtlZv23bssva5EzYCyZMlk2pVKskLVSoK9Y2wMWMtEiCBmE+AHrox/x5yBiRAAiRAAiRAAiRAAiRAAiRAApEgcPz4cYGoW7NmTZWgzCcSPYW/KZKjIYYuwi4kTZLE6gAeu+Mnfq2P+/fpIWfOnZeVq9bKlr93SMH8eaVrx/b63I2bN2Xu/EWyb/9BOXDwkHh755DSyhu4QvmyUrRwQas/s/Po0SMdE3fx0mVy4uQpOav6TZsmtWTNmkWqVq4gjerXC3Mc2j379suC337XXWfI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9BUGMRAiI+LJvt6jm4wf9Y3gOGEoR1x+u9mPwV6enPNI/mqs49Nt5R0Vs9j0Cf01Yi76DK/l9996zVTX045PP6lDHrgURi8gsdiwQf10uAUTQ9fOrIPa34C+vSV9eoeXb1pf53lK6LHjvPX79APrWrGLuY0a1JPRI4ZYx2Xvq69tn6Yc+/70w3d1SA5z7iC8GzEX57jPx+/FGgrEtMMpCZBAyiOQZteuXbfcH7Ypr5vsEQmQAAmQAAmQAAmQAAmQAAmQAAl4JmBGnhYv7hQhPde8+6WXLl3WYQsQszQosIgE5M+nE3gltWcILXAqPFwQGzVrlixeN4fEWRCCM2bMoLeNS4BEWIYTJ04KtsmvBFwjbmJnOAcIxwCv5BwqCWtKMIR/iIg4I+ERESIqEkQOJeb658ktSQ09eU7F3j2qmOVQSXz98+ZRyWadYnJyHjdGMSG0RLp06SR/vrwu4nxC93P9+g0VSiJc80ivBOpcOXOoRLk5EtoM65MACaQQAml27959K7HZrFPIMbAbJEACJEACJEACJEACJEACJEAC/2ECqUnQ/Q+fJh46CZAACZBAMhHwuZUMAcuTqS9shgRIgARIgARIgARIgARIgARIgARIgARIgARIgARIIA4CFHTjgMNVJEACJEACJEACJEACJEACJEACJEACJEACJEACJJCSCPjCQ9cMT0lJHWNfSIAESIAESIAESIAESIAESIAESIAESIAESIAESIAEXAnQQ9eVB5dIgARIgARIgARIgARIgARIgARIgARIgARIgARIIMUS8A0MDEyxnWPHSIAESIAESIAESIAESIAESIAESCA+AgcOHIivCteTAAmQAAmQwD1DwCdt2rT3zMHwQEiABEiABEiABEiABEiABEiABEiABEiABEiABEjgXibgc/PmzXv5+HhsJEACJEACJEACJEACJEACJEACJEACJEACJEACJHDPEPBJkybNPXMwPBASIAESIAESIAESIAESIAESIIH/t3cf4FFUXRiAD5vQlN47hABKL9KRYkCkKF2K9CKoKKCgP0VQQaRIRyx0UaxYsKFIUZDeQaQmhF5DCT0J8N/vhjtMsptkN0BINt99ns3OTr/vzOLj2TPnUoACFKAABShAAW8WcHhz59g3ClCAAhSgAAUoQAEKUIACFKAABShAAQpQgALeJMCArjddTfaFAhSgAAUo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"/><use stroke="#7E7C7B" xlink:href="#rect-1"/></g><text id="open-sources" fill="#C06334" font-family="OpenSans-Bold, Open Sans" font-size="18" font-weight="bold"><tspan x="28" y="123">open sources</tspan></text><path id="Line-2" fill="#C06334" fill-rule="nonzero" d="M28.662 53.632l19.852 7.56-5.89 5.413 32.98 35.88 1.015 1.104-2.208 2.03-1.015-1.104-32.981-35.88-5.89 5.414-5.863-20.417z"/></g></g></svg> +======= +<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="697" height="228" viewBox="0 0 697 228"><defs><style>@import url(https://fonts.googleapis.com/css?family=Open+Sans:bold,italic,bolditalic%7CPT+Mono);@font-face{font-family:'PT Mono';font-weight:700;font-style:normal;src:local('PT MonoBold'),url(/font/PTMonoBold.woff2) format('woff2'),url(/font/PTMonoBold.woff) format('woff'),url(/font/PTMonoBold.ttf) format('truetype')}</style></defs><defs><path id="rect-1" d="M0 0h698v228H0z"/></defs><g id="debugging" fill="none" fill-rule="evenodd" stroke="none" stroke-width="1"><g id="chrome-open-sources.svg"><g id="Bitmap"><image width="698" height="228" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABXQAAAHICAYAAADusmLfAAAAAXNSR0IArs4c6QAAAERlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAA6ABAAMAAAABAAEAAKACAAQAAAABAAAFdKADAAQAAAABAAAByAAAAACim4fpAABAAElEQVR4AeydB5wkRdmHa/eWnLNkjgMOBImSBZEDFUFBUFFRDGBC+fxQTCCKIiIgooAKigTF+IkioohEQQTJIHAccEdOx5GOLHe33zx9vENv07M7uzu7O+Gp32+mU3V11dPV1VX/fvvtrpkzZ/Z2dXUlgwQkIAEJSEACEpCABCQgAQlIQAISkIAEJCABCTQ3ge6enp7mzqG5k4AEJCABCUhAAhKQgAQkIAEJSEACEpCABCQggYxA96xZs0QhAQlIQAISkIAEJCABCUhAAhKQgAQkIAEJSEACLUCguxJaIJtmUQISkIAEJCABCUhAAhKQgAQkIAEJSEACEpCABBR0rQMSkIAEJCABCUhAAhKQgAQkIAEJSEACEpCABFqEgOa5LXKizKYEJCABCUhAAhKQgAQkIAEJSEACEpCABCQgge7Zs2dLQQISkIAEJCABCUhAAhKQgAQkIAEJSEACEpCABFqAgBa6LXCSzKIEJCABCUhAAhKQgAQkIAEJSEACEpCABCQgAQh0jxs3ThISkIAEJCABCUhAAhKQgAQkIAEJSEACEpCABCTQAgS658yZ0wLZNIsSkIAEJCABCUhAAhKQgAQkIAEJSEACEpCABCTQI4KhEbjrrrvStGnT0kUXXTS0BGrsNX78+DRp0qTEdCTClClTsmQnTpw4EsmbpgQkIAEJSEACEpCABCQgAQlIQAISkMAYEVD3GSPwo3xYfegOEfiFF17YcDGXrIRQPMRsuZsEJCABCUhAAhKQgAQkIAEJSEACEpCABCTQxgS00B3iyUV4JRx++OFDTKF8t4MPPjgTirHSNUhAAhKQgAQkIAEJSEACEpCABCQgAQlIQAISyBPoroT8svMSkIAEJCABCUhAAhKQgAQkIAEJSEACEpCABCTQpAR6Zs+e3fCsNdodQfiT3XfffRueVxOUgAQkIAEJSEACEpCABCQgAQlIQAISkIAERoZA6IToe/HtqJE5Uuek2nCXCyeffHLmB7aRCMO9ARVAVwSNJGtaEpCABCQgAQlIQAISkIAEJCABCUhAAhIYGQIh5pI6+l5ofOp7w+Pd09XVlXp7e4eXSm7vODH6ls1BcbYuAhdffHEajMX4tttum+add9500003penTp6eVV145TZw4sa5jGakzCLz44otp6tSpadq0admUerLUUkul5ZdfPm200UZp7bXX7gwQlVJecskladasWWn99ddPyy67bMeUu1ZBH3vssXT++eenu+++O91///1ZW7Liiium1VdfPb3lLW9JCy64YK1dXd+mBObMmVP92Oliiy2WNt10035Let999yW+IDz//POnN7zhDf3GbeeNXEN33nlnWnjhhdMWW2zRzkWtlq2//gr96iWXXDItt9xy2b2G5dEK9Ieok08//XRaY401Ev0kgwSGSiBfz7k38hso0O+67LLLqtHWXXfd7DqornCmbQnEPZECYnk3YcKEpinrU089la6++uosPzF+ZOGf//xneuGFF5qub1wrv00D1IxIYAgELrroolftxbpWE3QxYCXP4UXgVYWqsQKdFFG70V4HGi7o1si/qyXQLwEG0r/5zW/6jVPcuNlmm2UizDnnnJPuueeebCDZqYIuQt0//vGPDNEmm2ySFl988SKujlu+99570/e///307LPP9in7jBkzsgEvAicC3kc/+tG00kor9YnTjgu//vWvs2ItuuiiHS3o8gCTG/Evf/nLV53m6667Llv305/+NB1wwAFpxx13fFUcV7QvgZdeein93//9X7WACy20UHrta19bXS7OMBCkHZlvvvmGLejSLt14443ZIVqtY0u+//rXvyZE8E4QdAfTX1l66aXTPvvsU5cQVqxfg13+/e9/nz2kiv0QVxR0g4bToRDI98tf85rXpG984xsDJoNolm9HaR95iG5ofwL0q8KwC8OBww47rGkKjUFH1MvNN988Gz+SuV/84hdZHseib9zf2K1WfpsGqBmRQIMIDFYUbdBhh5xMeCNgijBbb/5pG9mHEPsOOROFHXsaaZ1bSNtFCQyJwDzzzJNZtwy087hx4waK0jHb//vf/6bf/e53WXlXWGGFjhd0L7300j6C3RJLLJHWXHPNBJvHH388e0r//PPPpwceeCB95zvfSYceemhi4G1ofwKnn356tW4ss8wymTUug81nnnkm3XzzzZll0XPPPZd4y4QByQYbbND+UCxhKQE6XEcccUQm2JZGaOBKHkBF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SEACEpCABCQgAQlIQAJjTGD27NlZDiZMmDDGOfHwEpCABCQggZEnUNFyFXNHHrNHkIAEJCABCUhAAhKQgAQkIAEJSEACEpCABCQwfALd8SRz+EmZggQkIAEJSEACEpCABCQgAQlIQAISkIAEJCABCYwkge6urq6RTN+0JSABCUhAAhKQgAQkIAEJSEACEpCABCQgAQlIoEEE9LfQIJAmIwEJSEACEpCABCQgAQlIQAISkIAEJCABCUhgpAlooTvShE1fAhKQgAQkIAEJSEACEpCABCQgAQlIQAISkECDCHT39vY2KCmTkYAEJCABCUhAAhKQgAQkIAEJSEACEpCABCQggZEkoKA7knRNWwISkIAEJCABCUhAAhKQgAQkIAEJSEACEpBAAwl0V0IDkzMpCUhAAhKQgAQkIAEJSEACEpCABCQgAQlIQAISGCkC3XPmzBmptE1XAhKQgAQkIAEJSEACEpCABCQgAQlIQAISkIAEGkigp6urq4HJmZQEJCABCUhAAhKQgAQkIAEJSKCzCVx19XXpsccfT4sttmjaaovNSmE88sj0dN0NN2XbJkwYn9ZaY0JpvNvvnJqmTr0r27bDpO3SPD09pfFGc+Wl/7wiPfvss2ntiWum8autOpqH9lgSkIAEJFAh0KPLBeuBBCQgAQlIQAISkIAEJCABCUigcQTOPf+idMEll2UJXnLuH9K4ceNelfjfLrw4nXzar7L122y1efr2oQe9Kg4rTv/l/6VLL78iLbn4Ymmnt+xQGmeglVNuvzNNvfuetMxSS6ZNN9looOgDbj/plF+ke+9/IB2w38cUdAekZQQJSEACjSegy4XGMzVFCUhAAhKQgAQkIAEJSEACEuhgApts+Lpq6e++577qfH7mqquvry5e9q9/p1mzZleXYwYXidded0O2+IattojVg57+45//Skd897j06/87a9D7uoMEJCABCTQfgW5dLjTfSTFHEpCABCQgAQlIQAISkIAEJNC6BNZff71q5v9z6+TqfMw888yz6aZb+q6/7fY7YnN1ihj87PPPZ8ubbrxBdb0zEpCABCTQ2QS6O7v4ll4CEpCABCQgAQlIQAISkIAEOp3AySef3FAEK6+4QuYigURvurmvcMu6G2+5lUkWZ43VV8vmw59utvDyX14M3uB16+Y3OS8BCUhAAh1MYOy9qXcwfIsuAQlIQAIS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Gs3WhGiHfijUhceNBMTGmGRd3six7qZ9ke2KAmf4uw8BFRnTmL6J1xbb8Lp4Z9Je7/rxWuCBsZDBjfcFxsF41wu8H2yWNrJe8R7BueF9BdHfVyAj119Wrrt/bLO2cdyo3lvubGH38a53gyI21+oen8skQAIkQAIkEJ8EsqglA4qeIRJRH4hP1BybBEiABOKMQMzM6OLssByIBEiABEjgTiQQU0EWQhZ8RBm3DwEIuBDi4zIgBMdUDHYfHwJwdERg9z536nJCutY79TXieZMACZBAQiMAb94P3nkjoV02r5cESIAE7mgCia3X0B19FTx5EiABEiABEiABEiABEiABEiABEiABEiABEiABEkgABOihmwBeZF4iCZAACZAACcQFgcRq0fD8c0+boYoVLhgXQ3IMEiABEiABEiABEiABEiABEiCBGBKgh24MgbE7CZAACZAACSRUAknUV+/Zpx43lw/rAH+esgmVD6+bBEiABEiABEiABEiABEiABG4GgQB46TFIgARIgARIgARI4HoE4ImMYncI+3y9fbidBEiABEiABEiABEiABEiABEggbgmwKFrc8uRoJEACJEACJHDXEoCge/Dgwbv2+nhhJEACJEACJEACJEACJEACJHAnEEh8J5wkz5EESIAESIAESIAESIAESIAESIAESIAESIAESIAESECEgi7fBSRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRwhxBIrHGHnCpPkwRIgARIgARIgARIgARIgARIgARIgARIgARIgAQSNoGAK1euJGwCvHoSIAESIAESIAESIAESIAESIIG7gsDOnTvviuvgRZAACZAACZBAVAQSJ0qUKKrt3EYCJEACJEACJEACJEACJEACJEACJEACJEACJEACJHCbEAi4Tc6Dp0ECJEACJEACJEACJEACJEACJEACN0QgKCjohvbnziRAAiRAAiRwJxBghu6d8CrxHEmABEiABEiABEiABEiABEiABEiABEiABEiABEhACSS+du0aQZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACdwBBCjo3gEvEk+RBEiABEiABEiABEiABEiABEiABEiABEiABEiABEAgsQZJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJ3AEEEl+9evUOOE2eIgmQAAmQAAmQAAmQAAmQ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"/><use stroke="#7E7C7B" xlink:href="#rect-1"/></g><text id="open-sources" fill="#C06334" font-family="OpenSans-Bold, Open Sans" font-size="18" font-weight="bold"><tspan x="28" y="123">open sources</tspan></text><path id="Line-2" fill="#C06334" fill-rule="nonzero" d="M28.662 53.632l19.852 7.56-5.89 5.413 32.98 35.88 1.015 1.104-2.208 2.03-1.015-1.104-32.981-35.88-5.89 5.414-5.863-20.417z"/></g></g></svg> +>>>>>>> 540d753e90789205fc6e75c502f68382c87dea9b diff --git a/1-js/03-code-quality/01-debugging-chrome/chrome-sources-breakpoint.svg b/1-js/03-code-quality/01-debugging-chrome/chrome-sources-breakpoint.svg index 6e7b60f85..d7aaabf02 100644 --- a/1-js/03-code-quality/01-debugging-chrome/chrome-sources-breakpoint.svg +++ b/1-js/03-code-quality/01-debugging-chrome/chrome-sources-breakpoint.svg @@ -1 +1,5 @@ -<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="697" height="244" viewBox="0 0 697 244"><defs><style>@import url(https://fonts.googleapis.com/css?family=Open+Sans:bold,italic,bolditalic%7CPT+Mono);@font-face{font-family:'PT Mono';font-weight:700;font-style:normal;src:local('PT MonoBold'),url(/font/PTMonoBold.woff2) format('woff2'),url(/font/PTMonoBold.woff) format('woff'),url(/font/PTMonoBold.ttf) format('truetype')}</style></defs><defs><path id="rect-1" d="M0 0h697v244H0z"/></defs><g id="debugging" fill="none" fill-rule="evenodd" stroke="none" stroke-width="1"><g id="chrome-sources-breakpoint.svg"><g id="Bitmap"><image width="697" height="244" xlink:href="data:image/png;base64,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IAIiIAIiIAIiIAIiIAIiIAIiIAIiUOYEJOSW+QlS8URABERABERABERABERABERABERABERABERABERAQq7agAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiUOQEJuWV+glQ8ERABERABERABERABERABERABERABERABERABEWgtBPkRePfdd93MmTPdU089ld+B9cTu27ev23PPPR2/pQjTpk3zyQ4aNKgUyStNERABERABERABERABERABERABERABERCBJiIg3aeJwDdytrLIzRP4k08+WXQRlyKYQJxncRRdBERABERABERABERABERABERABERABERABESgGRCQRW6eJxnBlXDppZfmeWT26BdeeKEXiLHKVRABERABERABERABERABERABERABERABERABERCBkIAsckMaWhYBERABERABERABERABERABERABERABERABERCBMiRQVIvcYrsdMH+xJ510UhmiU5FEQAREQAREQAREQAREQAREQAREQAREQAREQASSCJhOiL5n34ZKiqdtuRMompB70003eT+vuWddf0xzY8CJl8uB+nkphgiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAg0NQETcSkH+p5pfNL3CjszRRNy7YTId2xhJ6Q5Hv3000+7VatW5Vz1XXbZxa277rpu8uTJ7tNPP3WbbrqpGzRoUM7HK2L1E1i+fLmbMWOGmzlzpv+lnXTp0sVtvPHGbuTIkW7w4MHVD2FtDZ955hm3cuVKN3z4cLfRRhs1m3pnqui8efPc2LFj3axZs9yHH37o+5JNNtnE9evXz+2zzz5u/fXXz3SotlcpgdWrV0cfMe3UqZPbbrvtstb0gw8+cHwRuG3btm7nnXfOGread3INvfPOO659+/Zu1KhR1VzVqG7ZxistWrRwG264oevevbu/17DeWIHxEG1y4cKFbsCAAY5xkoIINJRA2M65N/JXX2Dc9eyzz0bRtthiC38dRBu0ULUE7J5IBbG069+/f9nUdf78+W7ixIm+PDZ/ZOW5555zy5YtK7uxcabylg1QFUQEGkDgqaeeqnMU2ypNyMVwlTKb14A6lcqwAZ0UMbvYXgaKJuRmKLc2i0BWAkyg77rrrqxx4ju33357L778+9//du+9956fQDZXIReB7j//+Y9HtM0227gNNtggjqvZrb///vvud7/7nVu8eHGtus+dO9dPdBE2Ee5OPPFE16tXr1pxqnHlzjvv9NXq2LFjsxZy16xZ47gB//3vf69zml955RW/7cYbb3Rnnnmm23vvvevE0YbqJbBixQr3j3/8I6pgu3bt3NChQ6P1+AITQPqRNm3aFCzk0i9NmjTJZ1FpA1rK/cgjjzjE7+Yg5OYzXunatav73ve+l5MAFm9f+a7/85//9A+n7DhEFQm5RkO/DSEQjst79OjhLrnkknqTQSwL+1H6Rx6eK1Q/AcZVZtCFwcD/+3//r2wqjSGHtcsddtjBzx8p3G233ebL2BRj42xzt0zlLRugKogIFIlAvmJokbJtcDLmfYBfBNlcy0/fyDEEO7bBhYgdKCE3BkSrTUdgnXXW8dYs9ZWgVatW9UVpNvu/+uord8899/j69uzZs9kLuf/9739rCXWdO3d2m2++uYPN559/7p/KL1261H300Ufusssuc2PGjHFMuBWqn8Bf//rXqG1069bNW98yyVy0aJF74403vCXRkiVLHG+VMBEZMWJE9UNRDRMJMND69a9/7YXaxAhF3MiDJ+vD99hjD9eYVpxFrEazSyo+XuFBEdaw3F8ICPSXX365+9WvfuW4D5UqYAWJlQeBfLbaaitvIV2q/JRu8yMwe/Zsxx+CbraAFa9C8yPAW04m4lJ7hEgeJvG2pEIyAc3dkrnku/Vf//qXP+TAAw9MPLS+/YkHaWNJCDC+jVvl5iqElqRAeSbKvCDs50yQra8OoYhLlrZeLMtcCbl5nkhFLx2BnXbayR111FGly0ApVzWBjz/+OBLqWrZs6U499dQ6Yhzt66GHHnKPPvqowwrv6quv9sJdVYNR5bzAcuutt3oS2267rRdXcM9i4cgjj3RvvfWWO/300/2mK664IrLWsDj6bT4EsObHyvGYY45pPpVWTfMikGm8gph7xx13OKz8seC9++67/b0or8TziIz7IPIhnHbaaa537955HK2oIpAbAR6Sf+tb38oY+bPPPvOuijJG0I6qJWBvBfJwi8DYGsHm+OOPL+s6n3DCCb7vHDhwYFmVkzcGjzvuOP9Ql7eDFJIJINKaUEuMuJhb3/7kVLW1VATsjTMTcxF2bVup8ixmupQV8TYM9Ym5JtqGx7BczHpLyI3TXbsOfAbI1uDi0S688MJam1DkOTH1KfO1DtKKCIhA0QiYCwESPP/88xMntAi8hxxyiGPS8dJLL3mrKQRgLHYVqpfAlClTosode+yx0at10cbUAq/Sn3LKKe6GG27w1iT4KeOVcYXmSQDhYscdd2yUV+ObJ+HqrHWHDh3cySef7O9B9CH4EC5lwBLYAr55FUSgmAQYM/GgAHcy3/zmNzO+MUB/SbD4xSyD0ipfAvQ/du55uEVbYX3ChAnu6KOPdibulmMNuL+XY+A7DbBUyJ2ACbpxMddSqG+/xdNvaQmgkxVTxCxtaWunjr6HFW2uYm4mETcflwy1S5C8JiE3mYt/VY2TkGsw4VdCbq7EShuPwcTjjz/uXn/9dcerq61bt3ZDhgxxw4YNc6NHj641GB03bpz/cBqvUuN/F9+7U6dO9a8H8Qr2lltu6Q4//HA/QOVDDvgBQ+Qn2CvamfwDIhb+73//86b0vErDByP4AAQfyAmftGIB9uc//9mniSUp+XPc22+/7Xh1kny+9rWvub322suXnVeZeFUcP0sWeD2XSSQWOZSXwETyiSeecC+//LJfZhtxYMGHnapFwOR8TJ8+neo5LC7rs0r6xje+4YVc4jPgPOyww1iMAueYc8d1jYUV7he4tnfdddc6H3HgAzMPP/ywdwuCBQLtjg/PWP/B62WIx0k+N1999VXf1/DRLV7JxaecnWvOd5IbEfxC84CJ9BGk7ZzjIzlTO4wqFlvg9TfKy4fhvvzyS98eaJ8McKvJt92cOXOimmd7dZ16Y63NxxdhExdyaWePPfaYvz4RaGDEh/M4Lv7RK1w2XHXVVT5fhJ0knvjk/eSTTxzt0T6w9fvf/95fq9/97ne9qxTOD22RV1vNqphEaQMvvviie/PNNx39Aelz7phsJ73SSJ1op6RFv7jeeuv5PPn4H/40mYCHgfbA4Jc+j/ZJIA+uLwbL1epfmnMBc+4hiPq//OUv/f0jZFPfci79Pv5leSUezhZoL7RPrn1cwXBuuU98//vftyj+l/Zsvp6Ja23HIjGRpgwmKtp22gD3A+4v9CPcW2gr9G3UO+5jnWuBhyD0K7Rx/ALTt3Ffwi1NtkCbpIzco+jHaM/4ImwOgWsJlz6cA+4ftKXw+sqn36WPIA3eGoAf54Drl76fc8evhWuuuca3Ve5T3A8s5HPPoD3efPPN/tCf/OQnjgediHjk2adPHy/OhGMV3mQYP358JFjzkaP999/ff3AN9xL4UKYNka75nj700EPruJuAEfdd+jXaN/dDRCD6YOpywAEH1HoAd8stt7gvvvjCHXzwwT4e1xL3YrZxDB/3pC/knhoPtHvaNvE5F1wXfKSOY7gOktop54CxIW2fPptrhf6WsjGeqtaAT1HGojCjP2IMHQ+IefaRM/qJ559/Ph4lWs+HYynH5vmM8XC9RL/JePnb3/627wO597KdNkCd6ON+8IMfJN4r6G+5Dgh8myHez0ZwKnCBNmHuZBgDcR1z/7HrmflWPOB/mX6FtsLDJ9jOSn04k/kKbq3oQ5ifxB9M0a5eeOEFPw6hj3nggQeijxlzzXMc+XFOcgnXXnuttx5mPEN/HQbOGW2aMR/3YvouXIvsu+++vp8I47KMWy4sk7lW6Ou4Xui/OIb+mPs0IZe5G2zMRzXzwfgHePNpu4XMT3yBy/g/E21NpLVf226/tt1+bXsZV01FK1MCuYq5zM/jgi9VKraIS5plL+Tir7Apgokw+eTNALRSnzTkU89yj8uNkgkNwocFXvXhVUf+GHxheWeCDgMIbnZMOBncMyizwISCPxNMmUSFgRsuEwqE2PDckx+iCxO5MJAPf6Rz0UUXRWIu8dlOGDt2bDTos2MpA6/6MulgIMjAyeJbHMpCYABBYILHBwds3W9M/cdgCfGSgeh5553nJ2e2r1J/GXRZYMJXX0CE+tOf/lRngg0rzicCaxjw+cUfg0gGAWEeDPI4Fwz0EH7sw1l2PJNoxDle42LgagHh3Xwb2jbyRzTDuph2ysTA2ilxaJ8MXsPA+URc4Y/2xo2ibdu2YZTEZdoZbSoM5M0f+zJZNYfxK2U5fHWOm+vPf/5zL5jHy89N2j6AEd/34IMPelcc4XYEcP4QSPfbbz/3ox/9KGJvrxcSP5PLGHwKct2G/ngREZkUMFHB9Ye1J3vowrWP4Mc5CoOVBdchfJiGyYMFBBUEyddee802ecGDOvHHgwbKbmIT/c0Pf/jDWiIRB1oeDIiZBDFxqrbAhPA73/mO+9vf/hYxsgdj9dU1n36f/iTeh9vDKLgiQNl++nIe8FhAVLN9iChxIZe2Qfr4S7VAGtwX2R4G+if+mCRzX0TMskAe/NFfMrEM73+hJajFt1/ywDesTfDpx5LEMYtfjb9cwwSuKbuuWM+33+X6RxTh/NF32X0e1zDWBkiXwPVJ4OGShXzvGTyAsnTJE1/ytGsCwnE4Vrn//vsjazzLD2EXsZOHD4jQ4fiDsRX3UO5ttA+7T9GW/vjHP3qx2NLhl7zou+gTEYwYM9n9kGuAcReiBgIKjCxwT0SEsXxC/owL+Rgqgm8YyIcxPG2cfHi92QLjC8oX1oX7PnnwhwuWav24XJcuXfwYkXEynJOEXNqLXetwyCTk5suxFGPzhozxEO6pI+2KeyhjRwv00zbOZwy29dZb267o1x4y8GCtmkRcKmhjWPxz2wNk7qGwYl+SkEsfwRiDsSbXcBi4PvlDEI27R2P+w3mgf7GHC3Ys1zPngT/GYgcddFDUV1ic+C/9AyF8CE9fxJiIfjMMlJP+9Q9/+IO/3zLOtsA+xlzUOQz0X5T59ttv9/U94ogjcpq7kZ71wTxkstCQttvQ+YnlWe6/JsqaSGu/tt1+bbv92vZyr5/KV34E6hNzKXFjibjkVfZCLoVUaB4EuOmFA+WkWmNZm2SlGMa97rrrIhGXmzlPZ5lUMajgxs3EiElpXFyxSdBuu+3mrSy4oWNRxICDwT0By0xuxkyqmfxyg2YCwc0hFHIR22xwh0UDr8lQdvLGyoCbKxOkpC+78uQeaznyYQLN5J4n1jYJ4gbEk2omD9zwTdhjAM3kA8sSAtuNJ0INYhF1YrDJPsqNWPF///d/Pn4l/2eTWyZsSZaPSXWLT7CJgz9DE3FhTPuxc43oCU/ONe0gbv3KueD8cs4QehEuWGdyCGu+mmtCLoNOGwAz+MUimAkTk0kmxwz+mKgy8TFrH9qTnWue9NM+uKFwDOIdg1+OwT8jYn+2wKTYRFzyp00xEOcauPfee/0EmvZZ6g/1ZCtjMfchjGFNxsSQ9o+lFtbtXJtYSiOSmkCQlC/iA6IqAU740h0wYIAXxRDdmdxx3SLmI1oVIyA20A6wxqCtmUU3AwQTcemrsFyh7WB1f99993nB5+KLL/btwMRfzqOJuD/+8Y+9WEefiACNhTHtiskXVpMErgNEHMKZZ54Z9Ye0ZzhwLJNZfAlXY6C/xgoRaxz6XtoJ13V9AY659vtYQnMdM2GDKwFrL9ohb27QlugLCLTZ8P7CRNgCluH069Z+EeJMrOUNEwL7Ef+57xAQeLlfIKRxT6Ttcv9lksrD8/gHIHnwR/9G4Dqiz8gkSNAX095Ijz727LPP9teKP7iZ/Me1Y+coFOAL6Xe5V3MOYGof8MTaiw932qvN3BNoU/RNhELvGVdeeaU/j7RF+tDQypf0yZd+g/sXYw/aEtcA555xGGHvvff24hZtEItWuFAPymYCCha93LsI3O94MMG9bcGCBb5PY6yF6ENd49ehfWCLexjHcj+kf6Tv5D6L4GOvKXMfps+yh/VYydnDDvpPykEcPlJHP8c1RVwexLKdcRn3js0228yPC7lXck0xTuR+b2n5ilTRf9xnbk0ZJtAPLVu2LBLgrYo2PqYNYFGZFArhWMyxeSFjPIxEzBqdetIO6EcxiqDNI+rHhVzexDPBEI7VFDin1s/BwQLXG/cUrlnmT3HLWotn9xTuU/xxP8J6n3EJ1xsPT7iXML4JA/sYi3Mfon8hfcZ29D08UCBvtsXH6GEamZa515mIS9/GWJ4+h7EADzK4t/LwaNCgQZGVLWNuE3HhwFiNeQj1Z45ImRjv80CYctU3d8tUtkLaLqxznZ9kyr9ct5soayKt/dp2+7Xt9mvby7VeKlf5Esgm5iaVuhSWuJZPowu5plLbpAQY5RxytQiO+8wt5zqVa9l4ip/pSb6VGUGSV98yBY43Ue+nP/1prddluLlyU2WwxQSEyUf8tTs+5mBtkzwQbBBFCAziET3tGG7uTBS4KXCjZmDBPm70iLUEbhSh9SaTIf4YDBIPoS60nuEYJmK0OyZPBCbOCDJYwBEYsDDRYcCAoMLghcAA0kQ/1nlqTSC/kBmDbSaDiD5MjBhohh9+8gdV2H9YTBAyiQu5VIcBp7U/+qVzzjknemiAqwaEF65zzjMPAnjFHHE+DJwrLFlNVIE9g07EXAZSDHyxyjDLO47F+o/jCAzyGCDySisTAyb+nFOeyjNYJNA+GNyahZuVjYkn6SI68vqXiXj+oOA/yoPVMQHB6Nxzz43Ky8QEizwskqzcuVojBlmU3SLnCT5Y4tqkimvUrlPEUkQFrEeY3IcPi2BvogQiLi5NjD3thHaAtSuCAmI9r/rGxYaGAEGIYCLys5/9zIslpEEbRTwgYLGLSMa1TMDqmD4OoZaAKIGww+TDhEL6HdqXBdzGMElCiKDsPNxiMsVr/wT6GOpjgYkTbBBDEGKqoe+wusV/GXjZdQA3LG6MdTwu6w3p95nY2wMf0mDd+g7WEVQRpjgf4X0p7D+4ThG6rA+hz7DA+SUgSpuIy72A+6gF+igediJeEXgwccYZZ9hu/0vfxf2PfsnyqRVh7QpujH7729/6vot7IW98cL+pxsB54V5sgfOAiM65wILUgr1SW2i/yzmgr8dS3vof8kBIMSGXvMzKtRj3DMQJ+gDcOti9LnQFwhjlF7/4RZQn/QOim4my9sDMWDCewvIfFvRvFiw+9z/amAXuYfRnZ511lt/Em3JJfSv9oL11QXum3fMAisA4yIRc+kTuwQQemuy+++5+mf+wNIUd92rGcwg3pMW9nvLGx2XUlTHBmDFj/LXPOLBahVwEfB4kwAFhPOSGsGsPv+m/MoVCORZjbF7oGI8xGYEPUVmbYp2xA/d/rsW40M0DVLgRrC/wK1XwH/cVC6HlrQm57IML11qmwDgGgwkLPKRiHGP3I+YpuKaKB65Nrnsbq3FfYg7E9UhfiaEC4nC2e3Y8Tc4T4yACIi5zP5uHMVbmgS7jZeIxV7DzafdcrouwrjxoI3/GDxzDPZjxVn1zt3i5WC+07ZIGjHKZnxC30oKJsibS2q9tt1/bbr+2vdLqW6nl5YEG91jmTvyF49pKqxPlZ55gumam8pdSxCXP9AwwU+4l2E7FzXcElbc/tjXEnUEJiqgkK5gAg0wC4mjc5xHbmVgQuKlaXL8h9R8TT76iGAZuxBawpjQR17aFk1ob5GHZQWDgzys+8cBgw0Q2OrR4+PrXvx4NHmwfE20bkNiE3PZl+rUJNBMrBlzU2QID7gsuuMD/2UDI9lXir03ObBLbkDpgVWEBX7dxLgiwTGgJTPSSPmJD+wqFGOKaFS7LNglmEmiBCQ6igAUmzDww4PzYhAnBgMEpAXEunMizjbbB5MICVgWZAhNo48XHKOLlZaBp1wEiYLUERFgEWR6IIE6GlnI8EMHykkkAH0Oza5i6c/2Y6IAQEWdPO+EVQAs8KCpWoA0wobAQpo2rDusTbD9W9wgfCLJ2nFmsYYEcirh2jLUbGFj6TJIICERYW4Wv95EODwL4i18jlmY1/HId2EMMRFosl7MFazMN7feT0jaLWsQo6795aMW9hnuRuUEwqyjSwGqOwD3QHtDZAyrE2PDBoo+Y+g8LTh5IEHjQYXn5DWv/o08M73fhPpa5Tn7961/7sjH5ZRJs96B43GpYhxP1tb/f/OY33qIZq1MbC9DPc70QitHvxkXcbByLcc/gQQLWYybixvNDgInfcxnjWwjdu7CNa8MsNnkIZIG2R58ciiC2LxzvmIsr28cvbdJEXNvOgznbxsN2C9a/0T4ZA8UDZUBkQZSyc2gPwZjwm6hjx9H/2ZtdZn1o+6rpl37E+gezvrX6heMmhK5MoRCOxRqbh2Vt6BiP9hGKuNTXxmksh3mwbn0v8xG7J7O9GoKNLbgGQyMK+g2b48TnHmG96Q8QcuOB+5Hd2+wNl3gcxq7x8QdjMxOFGePSB+YTeHhj42zSiV/vzAG+973v+f7BvsPBmwbM8+g7kvoUe7OJciT1X7mWL2xXDW27uc5Pci1TucWjjw6FWcRaE2wpa337y60+1VYeE3GpF3of+oe9mVqpdTUxN1P5Sy3ikm/rTJk31nYTb03RtkGgqfS23ljlUT5NR4CBYtgJJ5WEG2m2YNa4tCteh8sWGHiHgYFHXNRiP2IJE1ubgITHMBCJB0uXiYBZ0cbj8IoWwQSicH/SZJlyMZhFQEyaZIfH2zIDTpvg4/cTqzsmN4g5WJ9gfZlUXzu+kn4RXbAeCidt+Zbf2g6Dt0zuGWxwSdoIKnFr6lCgtfzDwaCdO9qaWdvRVrH0xSUG1rf8IdyH7c0sjkkz9KdqefCLMMlEAQ5h/DAOy9Y+WcZqIS4Gsh03DQSsjxH44h9b8Dsr9D+stcxii0E2VvGIcAi51JV2gKUHr/VhGWLtgurGXy02BFiSIX4iZoV8bX9DfpngxEVjLOgJXMehEB2mz4eEwkCZCFh1YsmdLdjEh9cV4UFA3Ob8I27Qb2B1Rh9VLX1HNh6MQ7Digzt+87hHhddleKyd94b2+2FatoyQy2ui9Bs8OOK8014J9D20T4RbLBrtoaFZN4aiil3P9CuZRDn6FZs0c13Qpi1w78H6MFOgz8FK2/o3+iFz8ZPpmGrdDiuuTaz0mNjbdWLtg3o3pN/l3hPvD7IxDO8BDb1n0A9kC0n3O3t4wNgoaXyUtM1EQkQRrLqxauaaoz+yOUKmcmSaI7Rv394fEj6EMlGFPszOS5guojTCtQXGE9ameahl157t5xcLTAuUObxubHs1/CLKIybRl/BnRg4m7NI/0Pa5h8ZDoRyLNTa3e3khYzx7MBPWkXPOtcB4HuGSsTeBtmFtxh6Oh8dV8jLjCvp9AuMD7pNhsOuP+yFWyXGXE8RlHBYXYy0N+gR7KIkBRCgU80AyyTKfY8mHt0oIWLFiSZtrIL6FTPc7ymX9FXHpRzC+IfBwirdl6MPo7xGGwzR9pAb+V4y2m9RfJ81PGlhEHSYCWQkkGa6xzfS+rAdrZ0YCjS7kcsKSTqaV0AZtEnaNSPP55cZvg8OG1JpJgD1NRYAyETNTWjYIybS/odtt0szx9ZXByhvmFd5Yw+35LjMQ4TVFXgW3gTSDSv4QJbBQxPqQyX2lB4RXBk0I3UzcMg0Ow3riD5I2wEAPSyAT1+GSKfAgwYT9pAEaE5lcA1a3DDhxhcBkEcsjrDfMgoPX6plUMjG2spF2tvIhMlGnpLJZucL2aZMM25f0i2VDNQm5YR0RXPjjFTms3Xh9lD8CDz5wcYI1poVs4hSDZCY3SQ9n7Ph8fpOsGW0wn0nEjadPu7LyIGKYOBuPZ+tmMY7rFqyX+TgWExMm56ErCgRFeIUPNiyNavplksZHm8yPOB8zzORGKbyuGtLvJ3GjX7OHMwjxcLe0EdXNlQ6CF+eaMnDvI9hr3twX6RcJPPDKFEKBmjYfClK5tDfyt76Rdkpbw39ztQZEWrPGzKWOYftoSL+b79ioGPeMfPMMOSQ9IAz3h8tYquEiCusc2lEYrE2F28JlE4zCbUnL4fgwWz8eHhveR3lrJnxzJoxny6UaU1r6TfmLlSTjH8YDiNq4OoCPPVzkesgUyoWjXRPZxlD1jfEy9YU89Lj55pv9QwgTHsO3NKw/zsSo0raH83juSXZfSqoHcZOE3GzXYWi9zNglFHKznb/wYVc4dksqV3xb2E7zmYcxvwr918bTLcZ6MdpuPvOTYpS5sdPI1wI3bqHb2OVVfs67V6hkDmiWplcm1YN9pbbKbXQhN6mi2baFwi5PNDM9fc+WhvY1DwJMurH24Akwokr4SnsSgSShJClevtsYcPA0lpsmr9tkC6UWyJjo89EqJiBYajGBxJ8TjBh8INTgg7NPysKukkMoOmA1Ut+5x5ehPe03Fxw2cEuyKDE2PHG3iWY40LT9+fzSPng9Hh+5fPDIBsMm1uEegY+98Kq8lY30KV+mdkN8QjiY9RuC/8IBMZOxbIFJdBg/W9xy3sfrcAjl1DeT+IKlIh+J4xVQXpvG7x+T/1AoyMbeXgHONjmJMzKBLb6d9aR0sEQhZDvOR1j7H+ePSQ/XOhaa4SugYTxbxkrfAkIhwiWTKFjQf2BtRFqIu/i6/Mtf/uItke2Yavylb2HAzyQBUdws0OJ1LVW/j6iOiE5/xauR9jVr+nZEBdoE7YGxkvlFZ5xkfUR4X8zWt1nfQb3i/UcufQDWwfgyRPRG7MG3IeJF2DfHmTWn9ZBhQ/rd8PhcuBXjnlHoPS6XchIHH5J2P6a9YPHGGA4hmXU+IGn33VzTjMfjOjBRONf+M6w/fWcmEc/y4hqo5oClKR+i4j5AX2S+memDktz2GIty4WjXRLZ+MNsYj/kFbSgp8LYOb74xtsY6lTck7KE8rhgyHZeUVrlv42GhucqASdy9ipUfi2R4cF9i3BAXYBmHZwqhpbudN4ubZABj++xBJuvh2M32Z/u18RVxcjUIoZy417GHOLwpg6UxD2GxJKesSR+1zlaOpH3GoKFtNynNatomEbf8zyYaXvgAiBJXsqZXn4hrZ6TUYm6TCLlJJ9MqnPRLfJleJ5HRtjgBBv2IqEwAMrUZJuMMLko1wUQgRghCGMpUBoRVJs7xCXO8PoWsU0+EKFjwGj8TEf6wfmEwziu7BATDShdymfghHBAeeuiheoVcrGAtmEUyAy/EVAQ5BoNJT6955dMCg7SGBs49VhsMHJkcUgYrB0IuX5hHDKE8lCW0jOK1rbhLB8rBBMReHc32kCLcx+QjSSBggI01A4P0JA4NrXdTHcdEEmtZLGQyCblWNiy0uX4ZMCMehLyw+kbgjAfYm89k850Wxglf77XtTACY3GQKSVblJrTyQIbrOOk1edoOQiuTCQQQLKn4yjKvIvIRvKRAu6YOXAME1uk7aOO0T14d5A/x9v777/duJ4jHhN786bJerYFJOX0G18Q999wTXathfUvV7+NeASGXvGl/9AfWb5A/fQFCO23WLD1DtwrEwRIXi1B7MM62eAj3hf0N8eoTISgPbcMsmHGzQLj++uu9sMv25h7CfqQh/W5Sf5CNaXgOG3rPqO+8Z8s/1330sybi0tZ5mBa2F/qhQkVcKwsPxxh7hfdx28cv1xZvYTA+xJrcXpFnH/160gNi+nZLrz6hl3QqOfDmCmNHONHfmFDJ9vCcxesYjrWbkmOhY7xs1wP3YgRbHvThixlXFObWKO4rOs6n0tb5vohdk7yZkzQepU64VPjTn/7kq4foHzdssTFTUv2NHfvi1xWiKWPUJKGWe6SFsN3Ztmy/Nv4hDvOnpHkRb5rgG5jzzYceGaObiIthRryPsAf82fLNZV+hbTeXPCo1jkTcyjhzpoeYmFvJ2l4mERfrW0LcSreUYm7yo8UyahOVfKLLCGOzKYq9aopwEVoYGQAGB3xhng+T2OTB9hXr1wY1PIllIBMPCDhjxozxZcDFQbECEx4L5EE9mZTAIgwMQHDkb4NSG4SEcSptGaHCvprLwOn222/3QlRSPdiPj0ICQiVCF8HOG8sMDJKCfdGWfYU8SWQyxLnhSX48IJ6FvgkZsIYDSoSkpPDoo49Gg+ts1jGIgXbuKUdSwO0E10h9fqaTji3HbSaS4wPUJp9J5WSCan5CEcMQT0Ifa7feemvSYf61YLOUsLxCf95mvRIeHH7ZPtyebdnaKnmZNVQYn/6NBxkIevaqvL3See+990YTjvAYRF8+noE1JYIgfQfrTErifu+4XvjYnll7ZhOiwzwqfZnr5ZRTTvHVYAJrfmjDeln/Uex+H+HDLIV4fZNgebFsDxZwvWCT2LgvZ7sv8pCTiWc80J7Gjh3rNyN25fvwBvcvJuTwhoN9DIiHUg1p5/HyVcN6Y/e7xbxnlJI/gokF+lxrR7atmOM0Y4KFYPgateXFBJPtjBEQ3rnuTYDnwXc4xrJjuO9yr+SvGsZSVq+kXywqjSFW1GbZHAreSceVC8ew3yzFGM/eeKH98MCTwAOVQh76J/Fs6m0mxHBfyjbWxPUSYwYCH86NXz88VEm6HzEOsw/tYoRiaYT1zvTx0XB70kP1MI34cuhDNkzH4vGwm/EV55cxEH0Vbo0s8PZMPIQfKYvvs/U4F9se/pa67YZ5VdKyRNxKOlvOG7cx9+XPhN3KqkH6Q21xoZY6mAsFtAETdMO6cUxoMBHuK2S5SYTcXE4eAm4ln+hCTkpzPZZBMJYN9f1hLZEpfOMb34hEKoRMu8lyo2SSaxcfA8skn02Z0s1nO6/XmSN+BrvmA5U0mCTwOrLVgQ+iFBLCAQ7iDeI1QgyvOjEAIjD5t1duWYcFAo09Uc82ECN+pYRDDjkkOvdYRFx55ZXeMpHBF4FfzgWv/lrdEWfs4ywMOu28IWrgs8++MouYis9Qs7yhDyvEmtqEFUQffLJyzixgqWsCGoIKIjWWB+ZvEp90CKxY7BIoI19KNwtrJg7Z2jYDUBOKEQMRpxk4E0iTdEwQMnHc76zg//hwmImP+DiFeXzSzTWCmxFzbWGTUwRZ/KQSEHn5YFjIHktwPoxGQDTFqozAAxObwDGpmzJlir/2aHtMhK6++mofL5//EMhsIo01CKI0FmH8IRaHwruJaVwXVvezzjorshKiHNQZC14CcSg7fYe9Ioygb6/yE4djaDNx0Zp91R6Y5Nl1k1TXhvb7YR+O2xvalvVZlo9NEO1+Zg8L2G/nynxVIjzF+yZcQ3DPI/ABTtqxTR45jlc/7Z4UfuzJH9CA/4488shIfKbtJ4lmDUi2og9p7H63mPeMUoIPXchw37Z7Ln0Nln9YdVvgfllIoC+0wENUu5/Tn5G3PdhEoLI3DcwNBhbx9JXmR5xrlIcndgz9Q/zVccurmn532203Xx3rLxgzxS0mk+pbDhxLPcZj7GVjSNoTwcTdJCaVus368/ossbnn2HiIa5cxUDxwP2LsYm8t4QsWd3A2JuXBcVJgjI4hjMXjGmZcZ2+lULbwYXpSGvFtjLXtQ2Y81GbuZOlz7w3nbja+snkWaZn4zDLH8fAcC20LYf8V3vfDuZvFjf+Wuu3G86uEdYm4lXCWqquM2SxxQ+OuxhRzm8S1QnWdVtWmWAS4cfJXX7j44osjgSQeFz9CfMCLD3wh1DBYtwksEwML3/3ud/O2OrJjc/klfQYjDHb5AAJ/iHI2KCANRLJCRVQGA5Yulk/8IfQgSPEBL8RH8uRVV+IyuYOLsWCgYwOXXOpVznF4fR6RFoGMOiJSIeYSmJiZ9YjVAVGGwVEY8KX629/+1sfF0oa/+LGIc1g0FxJ47R1rASaSiHH8cS44L+FgDwHGAmIkQo9Z1f30pz+tUzbaApaV9QXSwlqcAbl9xMrakR2LRSfxqiEwwaIvwN8wwa5JJt4ICXzh3cRJ9nPthHU/7LDD/GQD63ZereOPdmCiL8cwmUUoDQOCFu0RlxennXZa5K/W4nNNhmmExyYtYyHMeT/33HN9ee3DW4hEYfnPPPPMqI+kTzz//PP9tYHFLm3chN3wmIsuuijqE3nAwYcSKTciNpyoH23PjqGf4YN8zSkgBGFhE38IYAwa0u+b5TRpMKkl4MohfA2VyXBogW3iLXFpv5xj6zdM9GWfBfbzyjoPMuljbrzxRj8ppT2ZIENcJqdm4WvHNuSXvoQ2ZA8W5GIhTbGx+13yK9Y9oyHtIJdj6FfoX7Du5550xhln+PZsD8sYv9m9iYk7Qg9vDDQkkJf5u2Y8wEM50rfxkKVJGWzciCUcYzUervL2wnnnnefHUuF1Q9wkCxxLr5p+sfZHMDNmu60VduurY7lwLPUYb6+99nK3Bm/uVPM90h52Zzv3GKvYW1B8zDC8d3Ec7QiDFwLjofC6YnzOR5szBYwO+IuP0bknhvfPTMcnbcf3M4Iz91MeuPMXLxdvnVjdeahqfQhvyyEus27zjfDefPnll/v5Kf0JaVq/Fp+7JZWLbaVuu5nyrYTt9OvhfCle5vr2x+NrXQTiBHIVce04E3PNgNC2s27Wu7atkN8mscilwFjcZgt0nnT6CiIQJxD3FRdf5yZ5wQUXRD5wGSjYoJMb/Omnnx49JSbt+PHx/HJdt4E/8Xkqj3DEoMW2m4jLDfzQQw91xx13XJR0WAYs+fIJ3NzDJ8+Wn/nIRMQiMEBismQsGCAhfCb5mcon/3KKix8prMsYPDO4s2CDKtbxm8VkLOlJP+IckzvYGEc7lkEXVrE///nPa33cITx3ll99vxyD6IfVgOXDxNXEGCa2tI/QApD8EduYnLNMsLKRBoNe2pxZhMTLEJaT48ek3HvQD9MeCdY+WUbQQfyzfNhW6WHEiBHewoJrzwLXA+KmiZOIWHA59dRTLYr/hQOvzuIPDjGAYAIsoijn5JZbbnHmw9ZHSP13wAEHRNa8bDNXBOTDhwbttV2LH/6G5yvczrHkFU4Qrfy0X95kiU9imHRwjD24IL4dwwSbBx70mxawLEaANrcMlBsRw47hQQYiXdjv2LGV+GvXYH1lp2826+ykuPn2+6RBf0T7seuQbfF7AC41bD8TQyyHwhBOjpOEXOKynbZtr49yH7BJM+eRB0DhPSlMP9OytVH7DeNRJisL10pomRTGa07LhfS7SYzrY0d+hdwz4u2Q/MJyJO2vr0y2P0yHh1P2GjTt0kRc+kfabNhn20MUyztMx9LO9kufzAM9+wCXjYc4hv6Th+BmjWvpmKsZrj2CXTcsDxw40DO2cRbbqiFk6hN5gyl8+G8Wl7nUOV+O+Z7bTGUI69KQMV6mdJO20+dZfowjM30ILOnYStrGtWljoWzlxjWVjRPwqxyOM3kIwPVovOy6YuzOw3N8/CcFHn4yRrN0w3Ew7lkuueSSaB/Hh+3I8grTDffzzQjG0bRri2vlYp23Ps0ggDS4F1NOKwv1s/Jw/plP2LiLvsb2cWymuVtYHisD8RvSdsO0SKOagomz9huvm2233/h+rYtAPgSSNMn6BFkTc+P5JKUVj5PreovUgKnGsWauRyXEM8sgJpG5BCqBWBsGKsxfuL2pfOTmW59844f1ZrnQ4+Ppxdft9dhCLUDj6Zb7Oq/rMInkNTgGHfFXThuj/LzCimUbr+Rx00dMjvuBK3U5mBjh14lX+GFAOcylQKnzbsr0cYkwK/VKFPVH5GWylc/AGusf/jjWBmrFrg+vkpIH7YOJNwPJpA+QxfOlbrRt2lP4elc8Xi7ruOTgY0jUkevEJsm5HFuJcbgOuCapM+Ik1wNtI1eOtCesU4mfy2SGiQAfHOJcY8nKeS5GoH/DmpgHALTRXPo3jsEvJX0ida7vGNoGvuxghvhBfZtD31Ho+SmHfj9THZhQ0m6YdDIhL1Z7zJSfticTaOx+t5j3jOQaFbYVkZa+hocWiBbhfYh7JOXnYUmxxAnaP65FEEtyHRvQD3IMZURQymc8URid6jq6XDgWe4xH+7X53Nlnn+2F/uo6c4XXBgMS3gbD7QRvP3E/YizLOIbrPtNY+6677vIfGuO6w2CDwDiOc8gYLpexWL6lJ23OKenzl2nuxv2eeDz0ZpxEGcO4jLkYN8W351ueMH6x226YtpYrn0A56j6m/Znel4ur1XI6E1jTmp/b+kTcsNyhNW8mcTeMn89y63wiFzMuJy8UbEk7fDXJ9tlvpZ3sYrJSWg0nwIDfLJAankphR3Iz5+bNX1MFBkaZBkdNVabGyBdr40JeFbbBWynLymQVq7x8v7BL3bAGKkZAzKtP0CtGPuWSBpNv+oWG9g1cS+bnOJc6MemPW3nlclx9cejfMllgZzqWYxCTcw3NrW3kyqW+eOXQ72cqI8JVNmvwTMdpe3EJNPa1Vcx7RnFJpFNDADFL2Xj6pbgX8wAj/JhlPM+kde4dpejLk/Kq5m3lwrHY7QpXVQTGCMUan1VzO6Bu3I/yHccYE8TbUgi4ln6u7YP7fbayNHSsaeVI+s21bEnHapsINDYBE3HJF2HTBNFK0vfQKRFzKTOCbK7BxFsYhFpnrsdni1c0IRfLWURXexIZz7Q+S92wYnZSTcS1X9seT1vrIiACIiACIiACIiACIiACIiACItBYBHizBwtjrC6ffvppny2v4CuIgAiIgAikCZiWF/JgW6Vpe6FeGdalvmUTc+uLl+/+ogm5nIhQYc+lICb+Urm4sm0n1k68/dr2XNJXHBEQAREQAREQAREQAREQAREQAREoNgE+hMcHqyzwjYNdd93VVvUrAiIgAiKQQCCu/SVE0aZ6CBRNyCWfhqrUmY4z0dZE3HrqUpLdmSyMS5KZEhUBERABERABERABERABERABESh7Agi3uAfAbRFuN/ioW+jfuewr0MgF5EOYfNAMv9T5BD6IiFsouQXKh5riikB5EDDjzbA0EnJDGg1bLqqQm28REGrr809lYi5ph8v55qX4IiACIiACIiACIiACIiACIiACIlAMAny0iz+F3AjwgbOGhB133NHxpyACIlB5BEzDM+NMhF3bVnm1KZ8St0h9fXtN+RSnfEoSfpmusUrFk4lM1smFlqEcv15YaJ10vAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgHPSfZpHK2jZPKqZfy15StCYJt/kpScT+Z8nHSECIiACIiACIiACIiACIiACIiACIiACIiACzYGALHKbw1lWHUVABERABERABERABERABERABERABERABERABCqagCxyK/r0qfAiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIALNgYCE3OZwllVHERABERABERABERABERABERABERABERABERCBiiYgIbeiT58KLwIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIi0BwISMhtDmdZdRQBERABERABERABERABERABERABERABERABEahoAhJyK/r0qfAiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIALNgYCE3OZwllVHERABERABERABERABERABERABERABERABERCBiiYgIbeiT58KLwIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIi0BwISMhtDmdZdRQBERABERABERABERABERABERABERABERABEahoAq0ruvQqvAiIgAiIQMUT2OuSeRVfB1WgdATGXdyldIkrZREQAREQAREQAREQAREQARGoIAKtp02bVkHFVVFFQAREQASqj0DX6quSalQ0AhqnFA2lEhIBERABERABERABERABEahwAnKtUOEnUMUXAREQAREQAREQAREQAREQAREQAREQAREQARGofgItFi5cuKb6q6kaioAIiIAIiIAIiIAIiIAIiIAIVBuBGTNm+Cr179+/2qqm+oiACIiACIhAHQKyyK2DRBtEQAREQAREQAREQAREQAREQAREQAREQAREQAREoLwISMgtr/Oh0oiACIiACIiACIiACIiACIiACIiACIiACIiACIhAHQIScusg0QYREAEREAEREAEREAEREAEREAEREAEREAEREAERKC8CEnLL63yoNCIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiJQh4CE3DpItEEEREAEREAEREAEREAEREAEREAEREAEREAEREAEyouAhNzyOh8qjQiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAjUISAhtw4SbRABERABERABERABERABERABERABERABERABERCB8iIgIbe8zodKIwIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAJ1CEjIrYNEG0RABERABERABERABERABERABERABERABESgugncdNNN7sknn6zuSlZZ7VpXWX1UHREQAREQAREQAREQAREQAREQAREQAREQARFoEgLTpk3z+Q4aNKhJ8s81UwTcd9991/9xzJ577pnroYrXhARkkduE8JW1CIiACIiACIiACIiACIiACIiACIiACIiACDQmAQTcp556KsqSZVnmRjjKekEWuWV9elQ4ERABERABERABERABERABERABERABERABESgegSTRtl+/fsXLoEQpUe5QgM4lmz322KOqrI1lkZvLWVccERABERABERABERABERABERABERABERABEahwAuZSIawGYmffvn3DTWW33BARl0pUm7Vxgy1yL7zwwiY5qZdeemmT5KtMRUAEREAEREAEREAEREAERKBaCWh+V61nVvXKRiCTZR+iVjUFXqMnlLtQV03My7UucZcK1i7K3T9uQ0VcOw92rZd7Pa282X4bLORmS1T7REAEREAEREAEREAEREAEREAEREAEREAEmpZA+DErSiIxt2nPR1PnjiAaD+UubhYq4lp9q0XMLVjIzWQha090M+03kLn+Wnq5xi92vE8++cS99tprrk2bNq7UT+fGjh3rVq5c6bbeemvXvXt3X5VXX33VzZ492/Xu3dsNHTq02NWL0nvmmWfc0qVLa+Ud7dSCCIiACIiACIiACIiACIhAVRMo9vwtU3pNPb+r6pNYgsp9+eWXPtUNNtigBKkryVIReOWVV5ydO/JA1P3iiy/8fL9UeZYyXcovIbrhhBFEYRiGcnepUCwR1+pcDWJuwUKuwaj237ffftv95je/8dUstZBrg51f/epXkZB79913uwkTJrgjjzyypELumDFjfB3DvKv93Kp+IiACIiACIiACIiACIiACIiACaQIm9CD4hSJgyAdBlw8jSdgNqZTXclzEtdJxTtmH4VilBWubEnPzP3OwMxHTjoZjOVvjFlvEtXobh3Kuu5U16VdCbhIVbWt0Ak888YTP8+tf/3rWvHONlzUR7RQBERABERABERABERABERCBPAhksiA2I5x4UvnGjx/fFOsIfDNnzswo3oZlMjGQbYhBEtZCOk27HJ6bTCUhDmIWYm6lifEIkp07d664cmc6F7lsz9SfZDuWa/Kkk06KoiCKxoMJmTC96aabau3m2Ka8rksl4lolK1nMlZBrZ1G/nsAvfvELt2bNGjdkyJBGI4I4awItmWYSc3ON12gFV0YiIAIiIAIiIAIiIAIiIAIiUAUEEHL4a0jgOKx3ZaHbEHrFPSYXETfM0SxzK03MrdRyh+xLvWwiLfkgisav79ClQpLIi7DbVGJuqUVcY1+pYm6jC7k0nqZU9e2E6TeZwC677JK8o4Rb58+fH6Vugm5czI2LuOEx0cFaEAEREAEREAEREAEREAERKCoBzd+KirPsEstX+MtUAUuHub7m+5kolXY712pcrMslR0TRSjxvlDsXt5e0zUoTqnM5b9nihCItbcIESzuG821Cb5LIa/EQczO9dWBxSvEbL288j3iZ4hbL9e0P0yMvYxFuL+flRhdyaQg0qkoDFZ7E5cuXu/vuu889/fTT7sMPP/S7hg8f7o455hi35ZZbhlGj5RdeeMHHf/PNN92iRYvcyJEj/R8s2rVrF8VryMKCBQvc/fff76ZMmeKmTZvmWrdu7YYNG+Yo0wEHHODWWWednJO98sor3eLFi70v3kGDBkXHTZw40T388MNu+vTp7uOPP3bdunVzffr08daz1KFVq1ZR3HwXRo0a5agD5SfExdy4iIu1MMcoiIAIiIAIiIAIiIAIiIAIlJZANczfSkuoclM38TWXGpgQxjHZAqJRc3vtPRuPxtrXUBHXymcCcKWJ8GaZa/UIf+NMKlGsDuuT63Io0nJMkrWt6XEwqk80NcvcXPNXvNITaHQhlyrRUGgwNJ5K6ygo/9lnn+3eeOMNFqPAh8j4wzVBaNW6YsUK98c//tELrVHk1AIM+EMcveKKK1z79u3D3TkvT5482V188cX+VZbwIERm/h5//HG/f+ONNw53Z1z+17/+5ffttddeUZzbbrvN/eUvf4nWWfjss8/8HwLvq6++6s455xzXokWLWnFyXdl0000jdwpxMZc0TNhlGREXa12OURABERABERABERABERABESg9gUqfv5WeUGXmgD/cTIF5eiZBFjEXVwom/sXTyNVSMn5cKdfjol59edHm46GchcBMZUuqB/XCGKscQ6byZiqrPYyIf7iNNhh/6GDttRI1qEz1T9puIi37kqxtOffGAJG2vgA3ibn1UWrc/S0bN7ua3KwxJD0dqIlVnkuIuNttt527/PLL3Y033ui+973vufXXX98XlvUw3HXXXZGI+81vftOLujfccEPkdHrq1Knu/PPPDw/Jefnzzz93P/rRjyIR99RTT3Wkfd1117lDDjnEp0P6F110kVu9enXO6YYRycNE3B122MFde+21jjpdc801jnXCI4884rA0LiSYmBv65k2yxJWIWwhlHSsCIiACIiACIiACIiACDSNQyfO3htW4uo9KErqoMZa3iGIIPWaFGyfBdvZn+1AW6ZdToLwmXjWkXIUe35A8dUxuBBBsTaTlCNbjIq6lRLxM+yxOJf+GIi11jQvjtGMTenMRcY0FaVWidmflr7bfJrHIDSHSsGgUlWSdO3r0aPfLX/7StWyZ1sE333xz/4Gwm2++2X3wwQdu4cKFrkOHDm7OnDmRCIrgethhh0VVHzhwoOPv3HPP9da9iMO4Q8gn3HrrrVF0rH6HDh0arZNW79693e9//3s3Y8YMN3bsWLfPPvtE+3NdMAtZ4p9yyimuf//+/tAePXr4/BCneRo7adKkvMsfL4OJuWwP82VdlrhQUBABERABERABERABERCBpiVQifO3piVWfrlnErPyFStN9CU9/sJg4loh4mmYXjGWKQtWxvmKzNkE62KUS2kUTsDaH+cYfSJbYH+mhxTZjquEfSbSUtYk4ZWPl9k+Y+Y35PCficJhHjkcpiglINBkFrlhXWhAPA3I54lAk6pnewAAQABJREFUeHxjL59wwgmRiGt5h+4UsGIl4GqBwM3CLGT9hrX/bb/99v4pJquPPfZYuKve5TVr1riHHnrIx9t///1ribh28EEHHeT92LI+btw425zXL2KwBYRqXCpYwBfv9ddf72655ZYGicSWTviLmNuxY8dwk19mm9wp1MGiDSIgAiIgAiIgAiIgAiLQ6AQq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AREQAREQgdwJVOr8LfcaNr+YiGD1vZaeTcjNZFnLMfzhaiFu0cvct9xC3C2ElTnbB93KrQ7ZylON9bM2lq3ezWGfiY+I9HHBE0ZmjYu7hUwPV+rj1JR9v5U/Xrf6ypzvfjhaXvke25TxG6ZOFlBiGlUlhtGjR7tnnnkmY9FxK5Bpf8eOHb2bA1wefPrpp/7jYVjlbrjhhq5ly7reLZLSueyyyzLmzYfO+MMSlw+Qrbvuuq5nz55ehE06iMZqF37S/vg2PnR28skne9F57ty5vvxt2rTx5S/HG3K8/FoXAREQAREQAREQAREQARFoGIFKnb81rLaZj7r00ksz70zYk2/8hCSafBNir330DFEwVxGN44jPsSaOlmM7srolgUb8KscyJ5U107ZqrF+ln5NM56q+7Zn6k2wuFUizqSxq66tPLvtNYC2VmFupIi7sGl3IzeWEVWucFi1auO7du/u/UtQRcbV///4NTnrBggXRsXxMLR6wSu7Ro4f/i+/TugiIgAiIgAiIgAiIgAiIgAiIQPUQyMVyN1Nt7VgE0aQPrWU6rly2V4OQm41ltdcvW92rZV99LhWqoZ6lEnMrWcTlvErIrYbWXYQ6vPDCC+7pp5+OUho8eHC0rAUREAEREAEREAEREAEREAEREAERyJdArla8+aZbjPhmLZyUVjX4YK32+iWdt+ayDSE+bqnKtWbCZzVxsDrF69vQOla6iEu9677X31AaOq6iCVxyySXuscce83XA322HDh0quj4qvAiIgAiIgAiIgAiIgAiIgAiIgAhkIlDtr+lXe/0yndfmsL0+lwrVxgAxFwG20FANIi4MCrbIre9rcPXtL/RE6PjiENh9993dqlWr3K677uq22Wab4iSqVERABERABERABERABERABCqKQLHnb8VOr6JgqrBlTQChE8vGpJDpg25Jcct1W7XXr1y5l7pczcGlQhLDQi1zq0XEhU3BQm4SYG2rPALnnHNO5RVaJRYBERABERABERABERABERABERCBBhJo6AfdGphdox9W7fVrdKBNnGFzcqmQhLqhYm41ibhwabFw4cI1SYC0TQREQAREQAREQAREQAREQAREQATKmcCMGTN88Qr56HM5109lEwERqDwC06ZN84UeNGhQUQuPNW7cV+xJJ53k5EajqJjLPjH5yC37U6QCioAIiIAIiIAIiIAIiIAIiIAIiIAIiIAINGcCcV+xWJpKxG1+LUKuFZrfOVeNRUAEREAEREAEREAEREAEREAEREAEREAESkCg2Ja4YRHNvQBuFmw53K/l6icgIbf6z7FqKAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiUAUEJOBWwUksoApyrVAAPB0qAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAo1BQEJuY1BWHiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiJQAAEJuQXA06EiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIi0BgEJOQ2BmXlIQIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIFEJCQWwA8HSoCIiACIiACIiACIiACIiACIiACIiACIiACIiACjUFAQm5jUFYeIiACIiACIiACIiACIiACIiACIiACIiACIiACIlAAAQm5BcDToSIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiLQGARaN0YmTZHHXpfMa4pslWeZEhh3cZcyLZmKJQIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAL1E2g9bdq0+mNVZIyuFVlqFbo0BKq3nZeGl1IVAREQAREQAREQAREQgUog0Lp12jZpxowZlVBclVEEREAEREAECiIg1woF4dPBIiACIiACIiACIiACIiACIiACIiACIiACIiACIlB6Ai3WpELpsymfHCZNmuQLM2LEiPIplEoiAiIgAiIgAiIgAiIgAiIgAiKQNwGb3/Xv3z/vY3WACIiACIiACFQaAVnkVtoZU3lFQAREQAREQAREQAREQAREQAREQAREQAREQASaHQEJuc3ulKvCIiACIiACIiACIiACIiACIiACIiACIiACIiAClUZAQm6lnTGVVwREQAREQAREQAREQAREQAREQAREQAREQAREoNkRkJDb7E65KiwCIiACIiACIiACIiACIiACIiACIiACIiACIlBpBCTkVtoZU3lFQAREQAREQAREQAREQAREQAREQAREQAREQASaHQEJuc3ulKvCIiACIiACIiACIiACIiACIiACIiACIiACIiAClUZAQm6lnTGVVwREQAREQAREQAREQAREQAREQAREQAREQAREoNkRkJDb7E65KiwCIiACIiACIiACIiACIiACIiACIiACIiACIlBpBFpXWoFVXhEQgdIT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RRdy11mnpcNyuDFDPufphRdecFtssYXDpUJjiLhwwIUFfr7xTfzuu+/6v1122aUxESkvERABERABERABERCBCiCApWzfPr0TS4qoi8uEhoauXbs4/hREQAREQATKl4Ascsv33KhkIiACzZAAH1pbuHCht6JoE/sicTPEoSqLgAiIgAiIgAiIQFYCzc0iNysM7RQBERABEah6ArLIrfpTrAqKgAhUEoGWKcfAnTo1rsVyJfFRWUVABERABERABERABERABERABESguRIIPkvUXBGo3iIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiJQ3gQk5Jb3+VHpREAEREAEREAEREAEREAEREAEREAEREAEREAERMBJyFUjEAEREAEREAEREAEREAEREAEREAEREAEREAEREIEyJyAfuWV+glQ8ERABESgXAsvnfuZWfPG5W7Fooes4eAvXKvXV5GoOy2Z/4pbN/tit26Wra9N1o6qvbzWfS9VNBERABERABERABERABERABKqBgITcMjqLq75aVac0LVu3dC1atqizXRtEoKkJLH7vXffK6d/1xdhizGVuw+1GNXWRauW/+quvaq2z0qJ169T1lPlFhDUrV7g1q9fUOq5Fq9Q12Kp5d5XzJ7/q3hhzvlvw5usRm53uf8J1HDosWq/GhQ/vu8u9/fvLo6r12Gd/t+WvrnKt23eIthVrodyvp2LVU+mIgAiIgAiIgAiIgAiIgAiIgAg0nECLNanQ8MMb98jVq1e76dOnu9n/n73zgKuqfOP4I0sEBBUBQREQFdx7j5yZZVqampWlZmaOrMyybPp3lJWaqaWVKy2zYWpmuffee7KRISh7yPD/Pu/1HO7EC4Jw8ff0OZz3vPt8L5e8v/uc54mOpps3b5K9vT15eHhQYGAgOTo6mrWZU6dOyX5NmjQxq/+D6pSdkUUrms4zWK77/H7k06O2QX1ZrTh0JJaeHvwvVXW1p9NHBpXV2ywz9xX+60o6+9E70mOx04bt8mzq5lKuXqbM2BiydalEzg0aGXRLCw+l9PAwshJenpWbtTRoL0hFTno6bW7qbzCk+YIl5NHjMYN6peLgkH506/gR5VKefYeNonrvfaJTZ6kXd3Ky6d/6NanVj79Q1Y6PmH0bu3t1pNSQILJxdCKvvv3F6+xGNYcMlV6qZk9igR1vHjlIcXt2UErQVYrZ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pKTocL98+TKtWrVKrQsMDFTLKIAACIAACIAACIAACIAACIAACIAACIAACIAACIBAWSCQf4rMUnSHkZGRFBoaSv/++y/ZiMyejo6OIlNlKmVnZ6u77NOnj6xXK1AAARAAARAAARAAARAAARAAARAAARAAARAAARAAgTJAwGI8cps2bUrly5eXyFm8TUxMVEVcZ2dnevHFF6lz585l4CXBLYAACIAACIAACIAACIAACIAACIAACIAACIAACICALgGL8cgdNGgQ8cHJzFjETUtLowoVKpCrqytVrFhR965wBQIgAAIgAAIgAAIgAAIgAAIgAAIgAAIgAAIgAAJliIDFCLkKc05mhoRmCg2cQQAEQAAEQAAEQAAEQAAEQAAEQAAEQAAEQAAEHgYCFhNa4WF4MXCPIAACIAACIAACIAACIAACIAACIAACIAACIAACIGCMAIRcY1RQBwIgAAIgAAIgAAIgAAIgAAIgAAIgAAIgAAIgAAKliACE3FL0YmArIAACIAACIAACIAACIAACIAACIAACIAACIAACIGCMAIRcY1RQBwIgAAIgAAIgAAIgAAIgAAIgAAIgAAIgAAIgAAKliIBBsrMn34kvRdsrjq3UkJMOiUmj5x51KI4FMCcIgAAIgAAIgAAIgAAIgAAIgMADJHDt2rUHuBqWAgEQAAEQAIGSIfDQeuT+sjW9ZIiXoVVzc3MpJyeH+AwrHgJ37tyRjJkzDARAAARAAARAAARAAARAAARAAARAAARA4OElYOCRq6CoXc1RKZa5c+TNDEq/nUM/b4ZX7v28uGPHjqXNmzfTZ599RgMHDryfqTDWBIFTp07RgAEDyM/Pj/777z+ytrY20RPVIAACIAACIAACIAACIPDwEvD39394bx53DgIgAAIg8NAQsHiP3E5NralrSxvqKM7mWhUnW9kVXrnmEjPsd/jwYSniOjo60uOPP27YoZA1h47EkletFdS41ZpCzlC2hjVt2pQCAwMpODiYfv3117J1c7gbEAABEAABEAABEAABEAABEAABEAABEAABswlYtJD7eAcb6t/Nlvp21pzNvesKdtbEB9uZa1nmDkM/LQIzZ86UVy+88AKxmFtUlp2tCdOQkYFQAgrTkSNHyiJ7PqelpSnVOIMACIAACIAACIAACIAACIAACIAACIAACDxEBCxWyK1UsRz1aG0yMsQ9X0J4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SnV83759ac6cOeo1CiAAAiAAAiAAAiAAAiAAAiAAAsVPQPl85+/vX/yLYQUQAAEQAAEQKGECphXPEt6Yucvb2dnRk08+SatWrZJDYmNjycvLy9zhBeoXERFB7JXLxnF5J02aRD4+PuTo6FigedAZBEAABEAABEAABEAABEAABEAABEAABEAABEAABApCwOKFXL5ZbeGW4+ZqXxcExr36btmyRe0yd+5cqlGjhnqNAgiAAAiAAAiAAAiAAAiAAAiAAAiAAAiAAAiAAAgUFwGLTHamDyMtLU2tqlChglou6kJkZKScsnHjxhBxixou5gMBEAABEAABEAABEAABEAABEAABEAABEAABEDBJoEwIuceOHVNvsDi9ZHNycuQ6derUUddDAQRAAARAAARAAARAAARAAARAAARAAARAAARAAASKm4DFCLkcA3f//v3Eyc0Uy83NpR07dtDBgwdlFYu4Tk5OSjPOIAACIAACIAACIAACIAACIAACIAACIAACIAACIFAmCFhMjNxr164RZyT966+/qHz58vJISkpSXwQrKysaOnSoel0cheTkZDmttbV1cUyPOUEABEAABEAABEAABEAABEAABApBgD8vwkAABEAABECgrBOwGCHXz8+Pzpw5I1+PzMxM4kOxwMBAGjBgALm4uChVRX5OT0+nAwcOyHl9fHyKfH5MCAIgAAIgAAIgAAIgAAIgAAIgAAIgAAIgAAIgAAKmCFiMkMvettnZ2RQbG0vsiXvnzh0p3Lq7u5ONTfHdxtdff03Hjx+nEydOUGpqquTYoUMHUzxRDwIgAAIgAAIgAAIgAAIgAAIg8IAJ+Pv7P+AVsRwIgAAIgAAIPHgCxaeAFsO9sGDr5eUlj2KY3uiUhw4dIj7YGjRoQKNGjaJGjRoZ7YtKEAABEAABEAABEAABEAABEAABEAABEAABEAABECgOAhYl5BYHgHvNuXjxYtkFSdTuRQrtIAACIAACIAACIAACIAACIAACIAACIAACIAACxUUAQu49yELAvQcgNIMACIAACIAACIAACIAACIAACIAACIAACIAACBQ7AatiXwELgAAIgAAIgAAIgAAIgAAIgAAIgAAIgAAIgAAIgAAI3BcBCLn3hQ+DQQAEQAAEQAAEQAAEQAAEQAAEQAAEQAAEQAAEQKD4CUDILX7GWAEEQAAEQAAEQAAEQAAEQAAEQAAEQAAEQAAEQAAE7osAhNz7wofBIAACIAACIAACIAACIAACIAACIAACIAACIAACIFD8BCDkFj9jrAACIAACIAACIAACIAACIAACIAACIAACIAACIAAC90XA5r5Gl9Dg27dvU1hYGIWGhtKtW7fIxcWFfH19yd/fn6ysoE2X0MuCZUEABEAABEAABEAABEAABEAABEAABEAABEAABIqJgMUJuSEhIbR48WLKzs42QNK5c2fq06ePQT0qQAAEQAAEQAAEQAAEQAAEQAAEQOBBEEhMTKL9Bw8bX6pcObK2tiYnRwfycHcnPz8fshJ1pdFOnDpD0dEx5FPTm+rXCyh1W0xITKQDB4/IfXXv2pns7OxK3R6xIRAAARAoagIWJeReuHCBli5dKhmw5623tzd5eHhQQkICXb16lXJzc4uaD+YDARAAARAAARAAARAAARAAARAAAbMJhIaH02dfzTOrv3eN6vT5tI+oupenWf0fZKdff19LBw4dpcHPPFUqhdzo6FiVc4f2be5byN1/6AixCF+3tj/51/J9kKixFgiAAAiYTcCihNy1a9fKG3NwcKDx48eTq6ureqMcbiE5OVm9RgEEQAAEQAAEQAAEQAAEQAAEQAAESpKAr483OVd0Vrdw504upaWn07WgEFkXHhFJY994h3749muq6lpF7YfCgyewfOVqunjpCo0a8SKE3AePHyuCAAiYScBihNzLly9Lz1u+r1GjRumIuFzHj1FoC7tcBwMBEAABEAABEAABEAABEAABEACBkiLw+phR1KJZE4PlWcz9fskK+nPdRrqVkEgHhTdon8d7GfRDhWkC3t7V6dMP36Vy4j8nR0fTHdECAiAAAmWIgMVkBjt27JjEzqEUvLy8ytBLgFsBARAAARAAARAAARAAARAAARB4mAg4VKhA40aPVG/5yPGTahkF8wg4iid1u3TqQI90ao+k5+YhQy8QAIEyQMBiPHJv3bolcdetW5c44dnRo0eJvXQdxTdv1atXp27dulGVKngUpQz8TuIWQAAEQAAEQAAEQAAEQAAEQKDME+CkZxwjl8MrVLC3V++XPXS/WbhYXk959y2KjIqm7Tt206Gjxymwbm2aMPZV2ZackkK/r91AZ89doPMXLlHNmjWopfD+bde2NTWsH6jOpxQ4pwzHvP1702YKCQ2j62LeypVcyNOzGnXu2I4G9OtjdpzZ02fP0V/r/5FTV63qSmNGjaDgkFD66ec1su6dia/T+o3/0omTZ+jCxUtUQQjXDRvUo1bNm1LP7l2onIkEb7y/fQcO0XkxJioqRoY4qBdQlx7t0ZXq1K6l3Io8R16Poh+XrZTlt98cRyyOp6Sk0ux5C2XdxDfG0rlzF2nnnn3EidsSBNfa/rXosUe70eO9eqh7+HLuAkpLS6OwsAg5bvO2HSL0RbBMSsf82bKysmireA3+3bKdQgW7zMzb4ongKhQgXo8nhSd108YNZT/8AAEQAIHiJmAxQi4nNGOLi4ujhQs1f5j5musjIyOlsDt06FBq0KABV8NAAARAAARAAARAAARAAARAAARAwCiBH374gYKDg422mapk56Hu3bubai5wfVxcvBRxeWCrls3V8SzQbtu5R16/IuK1vv7WZBl+gSvqCCGSjYXbj/73Od0Qn48V4/iufKxc/Tt99N7b1L1rZ6WJ7ty5Q1/MmU///LdVreMCi8Z88HzHT5ymz6d/TFYmRFZl4LHjp+ityR/KSxaiXx05TJYTRKIwZd+xN+LojBCYFeM1WDjevHWHFKQnCeHVvnx5pZkyMjNp4aIltO7vTWodF3gOPtb8uY4miDAV/Z/qo7YnJ+dxemP8aFnPgquyh8DAurTgux/V/lxgAZqPkJAwGjv6Zdm2TQi0HOpCsZDQcCF0h8tLFnJ5zg+nzpQiuNKHz2lCgGcRfuv2XTT57QnU+9Gi+93QXgdlEAABENAmYDFCbor4nxnbhQsX5GMTTz31lPjGsSbFxMTQn3/+Kb4Ry6TVq1fThx9+aPa3iNogUAYBEAABEAABEAABEAABEAABEHg4CLAgy2JuQawwIm6mSMrNIqVid3LvUGJSEl25FkQ/LP1JVrNXLHuqGrMpn0z/P3vnAdfU2YXxRzayZTnZTly4B27tUKvWveqqVWtrW2u1rbbVblurdmhrl+uzWvfWuq11771lKKggDhAQmd973nAvSQgQMCjoOf7Cfe+77z8RkifnniOFVhJMa1avhsYN6yNOJPke88EnUnwsK7xphw8dCB/6bBwdjdnzF0ox97Ovv4OzkxPq1tHE5/33v72qiPuc8Iht2qQhAvx8ERd3H/MXLpYi5UHh8RshhEmvCuUNbUXW7d1/EB9+8oUsV6lcEd9+MRFOTlnJ3JSBJL7S3gYP6At/Xx+5t1VrN+LAoSNS+Czl7KwKqTSGEo0pIm7N6oHo36c7PNzdECIE119+myMF6x+El7K7hxuaNWmkLJPrkURcyefVgdLz+dyFi1gqBGESaUkY7tGts1zjk/FjQeL59B9/kUxbNm+Kpo0bwtxME4ly7/5Dqojbs1sXPN+ulfT+vRIaJsVnEqgnf/cD2rRsxlpErs8INzIBJmAKAsVGyNW+2G7duqF+/fqyiuLlUkiFmTNnSjGXYuk2btxYuzuXmQATYAJMgAkwASbABJgAE2ACTIAJqAR8fX1leL7t27erdbkVyBu3IPbhx5/nOkwRQx0dHQz2uxIShoH9emFAv96wsDCXfX6Y+asUHEkA/uPn70W4wZKy3se7AuoJQfjt98ZLL9a/l61Uhdyjx0/KPiSSKuECZEU54OMP3kP7l3vL08sipEBOQu7OXXsw8YtvZD9a5/OJH0pBU1bo/SAB9ecfpsjQDdTk7+eDhvXr4vPJU7Hj3906QuqNm1FYuHi5nCFYCMyfffyBDGtAFb4+3mhQLwiDh70lxVzy2m3UoB4sLfKWMojP7zOnw95ekwiN9lC+XFnJh+amayWxuHHDenSK5avWShG8UoA/SOxW7PTZ87JIoRtGDhushmSga/QSAvuAoW/I9guXrqCGCB/BxgSYABMoTAKar5gKcwUTzU2xcBWrVq2aUpRHb29vlBSBzsnIQ5eNCTABJsAEmAATYAJMgAkwASbABJhAbgTy42Gbn765ranfRqEQFi1dgQQRo9WQVataGUMG9lNFXOrzz2aN+Dx0UH9VxFXGUtzd4cIDlYw8bG9GRcsyefK+8+ZwDBvyijzX/hFz+7Z6mpqappa1Cxs3b1NFXPJYnfz5xzmKuDSuf58eqoirzEN7GzZ4gHIqY+HSyZ59B9W6N4a9qoq4SqWDvb1IDPeqPCXv10tCMDXG+vXuoYq4Sv+aNQLVfd+5fUepzvXo5+Ml2yn8wpz/LcKDB0lqf2+vCpj7+wzM/e0n+Hpr+qmNXGACTIAJFAKBvL/GKoRFCzKlg4MDYmNj4SxuwdAWdZW5nMRtIxSgnGLosjEBJsAEmAATYAJMgAkwASbABJgAE8iLwNChQ/MMsVBQb1xae8K40TLJl/Y+KOZqTMwdbN/1H9Zt2IxFS1ZI0ZW8a80yb+dX+r/cqYNSlMfbd+6q8VzXi3i3J06f1WmnE22hkRJ4lfb0UL1O00Ws3FCRrCskNBzXrkXIEA+79x7INod2xdr1m9Q1qZ48Wy0tLbW7ZCuT960hK1u2NMhzmMIbXIu4LrtQnFkyCh9B7YasTlBNtTpCJDkjgTsvo33qG8X/dRaeuiTKpqWl6zcbPCcPYPLGpTEUAoIedH0U6qJ2rRoiAV1FHaHd4CRcyQSYABMwEYFiI+SSUBsRESFi+MSBsm3q/4GjGLlkimeuifjwNEyACTABJsAEmAATYAJMgAkwASbwlBKgEAv0yCnx2aMmOHN1LSXjtOrjI09Oil/r4eYm49pSCIVjJ06hbpAmpq3Sn27f1zYKQ6AYJSijR252T3x+JktJTcXiZavw16KlOqIstSkiJZUNmZIITOn359y/0LRRQynoGupPdRTWICfzcHeXQu71GzdkF4rtS1amtKc8GvrhKBy7lPVvCK9cY4w8eU1hLi7OmP/nTPww83f8t2efnJJi/dKDjK6VvKM7tn9envMPJsAEmEBhEig2Qm7NmjVx5swZKeKGh4fLP7YKmAfim7E7dzS3RXh4eCjVfGQCTIAJMAEmwASYABNgAkyACTABJpArgYIkPst1wnw0tmoRLIVcGnJVeMjqC7n6gqj2+eBX+sBTeNvmZkrMVkrktf6fLbIrxcltHtxYesaWK1MGpUt7oMPLfbIJvNrzjh41AvXrBqHvoOGympJ7/fLjdzl6oiYkJCKnuL/xCQlyDidHTZI0uvuWjJK45WTJImmcIihTErfHbe5CcP9CxASm6zp+8rSIQXxWJEA7JAXpu/diMeX7mTAToSPaP9/2cW+N12MCTOAZI1BshNwaNWpg8eLFUsjdsmULhgwZIv5oWMjzVatWqU9bYGCgWuYCE2ACTIAJMAEmwASYABNgAkyACTCB3Ajk5JX7qN64ua2ptKWnZyhFWFlZqWWlQHFltY3CJChGoQOaNW2snKrHtLQ0GTqBKiiZF8XfVUTcHl074Y3hr6oJu6gPhVtQRFI617fOHV9El5fay+o3RwzFjFl/4OLlK1i4ZBkG9O2l312eX7ocoiZa0+6QlJSkehGXLVtGNlUoX1YeKV5wkrjT1sbaWnuILIeGXVXrKGHZ47So6FuSj6uLixSnmzZuAHqMGDpIelG/M3aC3M7GTdtYyH2cTwyvxQSeUQLFJtkZibYdO3aUT9Ply5fx6aefYsaMGZg0aRKOHTsm64OCglBGfKPIxgSYABNgAkyACTABJsAEmAATYAJMwFgCFCtX3worwZn2Ous3blZP/Xy91XJOBRJ269WpLZspVEKGEGH1bfW6fzB05DvyERsbh3ARj1YxEn5LiDix2nbs2Ent02xlG5ssYbVr5w5qfFoKsUAhIQzZ38tWGtzb1u3/qt2rV60iyzUCq6l1y1auVcvahTn/W6ieBvj7quXCKOgT/fzr7zDotTdForOsPSjrBokYuW1aNpOn2knjlHY+MgEmwARMTaDYCLl04cHBwejVq5f0xKWYuFevXgV9o0dGf2SpjY0JMAEmwASYABNgAkyACTABJsAEmEB+CWgnNdMu53ce7f6UyIsSi2k/SPyk+KpfT/keS1aslt0paVZlkTTLGHt1YD/Z7dSZc/j0qym4e/eePKfwA0eOnsDvs+fLc0rIVaqUCyhOr2Jbtu2U8XLpnHLP7Nq9Dx99+pXSjPh4TdgDtUKvQELy++++pdZ++e00dT61UhQOHj6KL76ZhnsiYTkZxejdtvM/GYKAzilZGcUIJiMxtEG9OrJMeyeBmvqT3Y+PxzdTfxRhDA7L81cH9YOTkyYkg6ww4Q8rS41HNHkGx9y+I9em6evUrilXWbF6vbwG8nhW7HJIKI4e1wjh2gnZlHY+MgEmwARMTaDYhFZQLrxu3bqgx7179xAVFSVubXAExcXVv+VE6c9HJsAEmAATYAJMgAkwASbABJgAE2ACeREg5yBKekYPU3njTv9pVl7LymRo40a/CTM9T9mcBpII2qdnVyxasgI7/t0tHxQ7l2K1KkaJwd55UxPP1tPDHZUC/GU4hLUbNmHbjl3iM7SbjO9K/akvxYC9FRMjEnr9iuhbt2TYAGUu/aOPdwW8NmSAFIxJlF749zIM7N9bpxvNSd639FDmVjpQG8Xc1Tba63sfTsR1kcjs599mywcleqNzxUhQ7dm1s3Jq8qOXVzmcPH1GJjRTkpr9u3kNOonQEhtE2ATi85kQzr8T+y9TxlMkYo+XdbQRuiYKQcHGBJgAEyhsAsXKI1cbhrOzMypXrixDKbCIq02Gy0yACTABJsAEmAATYAJMgAkwASZQEAIk4JrKGze39Un4Iy/cIQP6Ys6vP6JcZrxY/TEWejFylXaKz0rJtyqULyertEVcSqD268xpUiBW+n/12QQ0blhPnlI83LDMcAsUpmHObz/htcH9la6qh69SQWEO9a1395dBMXrJZs9fiIjI67Ks/Jgx/RuQRzAZCaCKNWnUAP+b/YsUlpU6OtL1/znrBymGEhsyRcQlIZiud+rkz2BjYyPb6Ie2DmBupoklbG6hOeq3q4NyKfTv3UMNW6HdzU14NP/43Vd4rm0rWU38SMBWrou4/jj162zXpD0Hl5kAE2ACpiJQQsTU0Q8BY6q5i+Q8J06ckPuqVUtzG0eR3CRvigkwASbABJgAE2ACTIAJMAEmwATyJKB8vvP398+z79PagcINXhUhHCwtLVFGJEPTFjv1r5lCHUTfipF9K5QrJ8IWZgmfFE4gLu4+vL3K64ik+nPkdH7sxCkoib+2rFsmk7fRfCTI2tragJKUaYuvOc1D9TExt3Hr9m05xsHePreuj7WNWEeLvdF1Odjbwc3VFXZ2JR/rHngxJsAEnm0C2b9ae7Z58NUzASbABJgAE2ACTIAJMAEmwASYABMoNgRIuKXQCcaYs5MT6GHIyPOUHqY0R0cHEQ7RId9Turm5gh5FzYi1V6YXdFHbG++HCTCBZ4NAsQ2t8Gw8PXyVTIAJMAEmwASYABNgAkyACTABJsAEmAATYAJMgAkwAYCFXH4VMAEmwASYABNgAkyACTABJsAEmAATYAJMgAkwASbABIo4AQ6tUMSfIN4eE2ACTIAJMAEmwASYABNgAkyACTCBok7AXYRCoGRmZCXM2GesqD9fvD8mwASKJwEWcovn88a7fkYJpKWlySs3E2+MSpQo8YxSKNzLVhgTX+L8OC0uLk4kdohBrEhCUU4kn/Dw8Hicy/NaTIAJMAEmwASYABNgAkygwAQomdnXn31U4PE8kAkwASbABPIm8HhVirz3wz2YABPIgUBiYiIaN26MSpUqITQ0NIdeXP2oBGbPni0ZT5w48VGnMnr8bZGRd/jw4QgKCkK7du3QvXt3/PPPP0aP545MgAkwASbABJgAE2ACTIAJMAEmwASYwNNPoNh45F6+fBkPHz7M8xkpXbo0XF0LL7vljQPXcPLXA7h94RaSbifK/dR5uylqv94oz709TR3CNl/C3k+3wrWyO56f3f1purQiey1z5swBCX7BwcHw8/Mz2T5/+uUUvp5yDN1f9sOPU4NNNm9xnahLly6YPHkyFi5ciH79+qFKlSqFfikzZszA1q1b5TodOnSAt7c3atasWejr8gJMgAkwASbABJgAE2ACTIAJMAEmwASYQPEhUGyE3Hnz5hkl5JI3Gz0Kw26fjcLGgUvUqS3trGTZ3NJcrStOhfAtlxCy/jxcAz1R8zVNLCNj95/6IEUK2Q8yxWxjx3G/ghEgAXfatGly8KBBgwo2SQ6jUlIyZMvDh5qwDTl0e2aq3d3d0a1bNyxfvhzfffcd/vjjj0K/9r1798o13nnnHYwaNarQ1+MFmAATYAJMgAkwASbABJgAE2ACTIAJMIHiR6DYCLkUL5LiRhqy+Ph4VeT19/c31MUkdef/PinnKSW8UFv/+BIcvV1MMu+TmuRe6B2E/nMRaQUQ8KydbEAcXCq6PantP1PrrlixQl5vhQoV0Lx582fq2p/ExZJYTkLujh07EBYWBh8fn0LdBt1xQFa1atVCXYcnZwJMgAkwASbABJgAE2ACTIAJMAEmwASKL4FiI+SOGDEiR8qLFy/GkSNHULJkSZPecq6/YFzYXVnl80KlYi/i6l9bfs8rtPQDPdgKnwAl35o7d65c6LXXXoO5efH0AC98UqZboVq1aqhfvz4OHTqEJUuWYNy4caabPJeZbG1tc2nlJibABJgAE2ACTIAJMAEmwASYABNgAkzgWSZQbITcnJ6k5ORkHDt2TDY3adIkp24Fqxd3nN84eA3I0Nx6Hn8jTs6THJeEG/uvqnPal3OCQwUn9fyOiJ+bEp8MBy9nlHS3U+upEB8Zh4Sb92FTyhZOvqXUtvsRsYgXDxvXknD2d8XdSzGIOhKJh/eSUKqKO8q38IWZee656Wjde5dvI1Z42lrYWMLRxwXlg31gbpP1NN+9GIOkO5rYvnGhGmE6MSZB53poU+61ysDC1lLdHxUSbyUg/rqGgdJgWdIyT6/clIRkRB+/Dlo7LSUNzn6ucK9ZGiU97JVp1GNy3ENQCAszEa7Cs245EPOow5GIFSK6k/CALt/SF9aONmp/UxRuxSRh1+7riIhMQHJyGtzcbFG1sjPq1nGHpUV25ikp6Th0JBqXr4i9RSfCwcEKlQKcEFitFDw9dIW4hMRUHDsRI7dZL8gdNjbZRdikpDQcPnZL9qld0xX2drrcw8PDcfPmTdnepk2bXC/5+MkYxCekyv2YmZXAvgNRuHDxLgL8nVC/rgfKldV9PepPlp6eIfrfw4HD0bh79yECq7qgdavysDAvod9Vnl+/kYCQsPso5WyNaqJvorjeA4eicPR4DJwcrRDctAyqVHLWGRt5PUHyu349Uew1BX6+jqiYyS+ndWiC/D5PNIau5+Tp2/Karl6Lh1cFB9QSjPX3RH31jWLVkpC7bdu2xybk6u+Bz5kAE2ACTIAJMAEmwASYABNgAkyACTABJqAQyFL4lJpidiQRNz09Xe66YcOGJt09iY7aMXGVyU/POQJ6KFb7jcaoMypLRN73+XYhPkagycS2qNKnltJNHs8tOo5TfxxCQOdqaP7Ni2rbldVncfSnvfAV3r7WLrY4v+iE2kaFck280XbWyzC3yi4EUpzavZO2gmLe6hvF8e24qA9cKmlCIBz5YQ+ubtPcxq30jTl1ExsHLVVO5bHzilfgWs1Dpy5k3Xkc/GanTh2FV+iyeoBOnfZJzJkobHtjtRSvteup3HJqB/h10E0kdftctNwL7bvpZ+2wc8x6nWF2pR3Qfn5PKZLrNBTwZMXqELw5erfB0SR8rl76gk7b4aO30Kn7Rp067ZOfpgWjW5csT+VUIfr27LdZdpkxPRhdO2e1KeM2bbmG19/eJU/PHeutVKvHkJAQtezhofucqA2ZhTEf7MO583cxbEg1LFx8SQql2n1+/7kFOrzgrV2lU54w8SDm/XVBp655cBnM/6M1rAy89lavC8PnXx9By+Zl8fprgej1yhadsXSyZtmLqCdEcbLXRv6L9f+Ey7L+j+DGpfHzj83h5ppdqM/v80RzR0U/wOhxe7Bz13X9pTByeCDefzcIlpbZhXqlMyUcI6OwB6mpqbCwKJxflzQ3GxNgAkyACTABJsAEmMCjEYiOjn60CXg0E2ACTIAJMIFiQKBwlInHeOG7d2tEOC8vLzg5ZXnFmmIL5AFbb0wz4ZGrme30vCMywZdXmwB4CI9VxTzrlFWKj3ykmLVklbpVh31ZR1xYekqKoJF7wxG68YIUgLUXSU1KwZpuC1ShtHLPmjJ5mfQaPnANkbvD8DA2SR1CArKyd5qTPIvJm7hyj5pqHyrYeWb3lvWoXQa1RzaS/W6fjca1nVkCo87gzJOkOw/k3uiUPI2r9Q+SnsIhG86DxGMSaa2dbVCuqU/miKwDefFSe5lGXlLEprWijkbK6zzx6wEEf/l8VucClmJjk/HBRwfk6LrCW7ZNq3LSY/VaRALWrA/NJoJSx7i4ZNm/ahUXtGlZDj7eDkhJTcf2nZHYsi0Co97dLb14O3X0kf2cnKzQq7s/Fi+7gr+XXDYo5C5aqhHgu7/sJ17DmgR6cnDmjytXrshSlSpVYGaWs/CoPea32Wfl6ehR4vVQygbLVoaAvHVJSN20piNqVM/yBlfGrd2gEVh79whA+XL2+Ovvi7hxM1F4K98QPMJB+8vJyIv31RE7ZXOnDj6oUMFexJa9L0XbJK0YzFcj7ss+NFeVyi5ybxGR8fj1j7PYve8muvT8B/9u7izCR2R5ABfkeSJP6HYd1iLmdpL0cB4ysIrwxrXH6TN3MHfBBfz86xlYCa/vce/WzumSQL9TFLt69WqhhW05efKksowMD6OecIEJMAEmwASYABNgAkyACTABJsAEmAATYAJaBIq1kBsVFQV6kDVt2lTrskxTLCHEpJqvNVAnI5E1SXi/ercNQMWXA9V6UxeaTBKevL01nry1RjTC5teWg0TXMLE+CbHaduqPw6qI23FxX1WkpT60d/K+tXUrqQ7xea6iWs4QCjUJuS4Bbqg5LOs61Q56BY+gsqAH2WXhQZyXkHtmrsZrmbxrOy3rB/syjnJsVeGl/M+QZVKYPfbjXoNCLnUkb90WU9qjhAgRQPs7/st+HBUexReXn0bwF0LIzdL65Lz5/bFk+RUp1lIog4Xz2sLBPiukAQmgV0KyJ9erVNFZx8NUWXNgv8ro3OMfGTJgzv/OQxFyqb13j4pSyCWhUnN7f5ZITmEGSCjV9AuQR/0fly5phN78JvLT9oTt0zMAXXr9g1On72DWH2cw83vxBYUBm/x5IwzoV0m2vP1GDfQbvFXub+2GsFyFXBJ8KUTCljkd4e3loM58JSQO9lpcx46ujfp1PLIJ1g3qeUhv3pDQOOw/GIWmwjtXsYI8T7/8dloVcbdueEmKuMp8FFph9Li9+H7GSfHcBOi0KX3oWLas5rVOZfKK9vPLWcimPgUxuptg5cqV6tD8PsfqQC4wASbABJgAE2ACTOAZJ1CqVHZHhWccCV8+E2ACTIAJPIUEjHPvK6IXvmfPHrkz8lKsUaNGEd1l/rZFomel7lnXQmIyJVcj049PS3Wn5xymgxRtFU9bWZH5g7yHtWPxarcVdvnyGo1XKInSiohLa1LM3hqv1ZfLR5+4oQrR+vsh8ZZEXMV82mWJ0A9FnOJHNQut2+r1Y+GWEMtSXFl9K1/OTg0ToN/WtYuvrCLxUttIpCSRk2z5Kl0v5lVrQmU9iZ+NGnjKsv6Pixcvavpk3uqv327ovEmj0jr7tLW1wJABVWXXlWLN1LRMN3OtwSRo9+mVJSaTV2zHFzXhBSh+cF729WcNdURc6u/v56gTN7itiLdryOu4sdivEhuY4u5qW36fJwppPe1HjZfrJ+PrZhNqX+7kq661d78m9rD2ekrZysoKpUtrBGXt8BZK+6Mcx44di9dffx2tW7fGwoUL4erqip9++gmOjprXyaPMzWOZABNgAkyACTABJsAEmAATYAJMgAkwgaeTQLH1yE1LEwmiDmtEzKAgcct+IcWvfNxPe6mqHjDTS7BlK8ISkFFSMm0j72AKQUDmJbyEi5Klp6WrAi0lLdM3j9pZ3o4JUfGg2Lf6pi9AU3gGxZJFuAhrp+yxVJV2Y47tn6uACRMPSK/czj03onf3AJngrLLwurW2zh6LWJnzwYNUKcgeFAnBrkXE4+69h7Lp/v0UeaTb+bWNRGHycp30xWEsWHQR5OlKichIcFzwt8bbtl/virJOe5xStrHRXCcl9jPWGjXwyNa1Tm1NnGRqiBZJ2sqW0U18FljNJVtyN3eR+I3s1q0H8pjTDxJhm4nEZsbY2XN3QV62oeFxMsFcmnitkFHiMzKFozwRP/L7PEVFJSpD8e2045jzP92Yv9SorHXuwl21r6FCSopmT8pzYKhPQepWrFihDrOzs5OibqtWrdQ6LjABJsAEmAATYAJMgAnkj4Czs26C3fyN5t5MgAkwASbABIoHgWIr5FJcSSVJUJMmTYoHbSN2WVIrDILSvYSI1WvI4iKybv23NyCEGhrzuOqSYrLENG0BVllfW4RNuCHipmrFHKY+5Jmsn9iNvJMVyyAV9BHN07Mk3h8ThG+mHpMhB06dPihnJFFy1MjqGNi/MhwddGPWXroci259Nsnb9rWXpzGKOKhdr5Rf7uQnhVwKQbDvgCZ0wNHjtxB+NTNmrFaCNGWMcqxcuTKOHDmC0NBQpSrPo6urRoDV7qjtCUv70BdyPdyzjzG3yGKuPZd+2dc3uxCv34fOJ35xCL/PPqfTpHjiKpUklGtbfp+n8Gvx6nAS1fWFdbVRFB5qxe/VrqdyYmIibt++Lat9fX31mx/p/MCBA3L+EydOYMKECfjiiy+wadMmLFq0CCVI+WdjAkyACTABJsAEmAATYAJMgAkwASbABJiAHoFiK+QqSc4owVmFChX0LqvonmZkeh+aYocW1llPX9pDXfHLFPM/yhxmIpGUYhkpaUpRPWakZwmx+oKt2ukxFMg7luLHLhUeovtEbFZKWkaC7NdTjmHdxnCZGEx7G2+/t0cKgxQK4atPG6BhfU+RoErzPOzeewM9+2/R7q6W3d1sQEnA1qwPw9IVV2QM2OUiARlZuzblxS38Wd7G6qDMQsWKmpASSogF/XZD56kpGi9X7TZt5pZaYSW0+xS07OJsnedQYquIuCOHBUqhnMRkJbGZEmPY0ET5eZ6srbO++Ni742WZkM7QnHnVXbt2Te1i6vi4bm4a72hKqHbv3j1MmjQJhw4dAiVV885HCA11g1xgAkyACTABJsAEmAATYAJMgAkwASbABJ56AlmKRzG6VPKSU0SWouiNa2GlETFTk7KLq4nRuuERHgW7Q4WsGK73tbxzH2VOU421ccny7jR0zQ+0wkQYCqtgqn0YMw95or4xojoWzG6DEwd7YtiQanIYJQa7fCXL65lu2T9+Mka2zZgejFYtyqkiLlVei8h6bg05DJNgTEZhBWiuZZlCbt+eWbF/ZQe9H4o3KL3mFS90vS7ZTqNE6AR9uxWTFfKhtPBGNqVRqIi8bOv2CNmldcty+OiDuqhQ3l4Vcanh3HlNmIMsiV93RmOfJ1/vrDizuXnj6s6e/Uz5HUMtZcoYFzYi+yx517Rt21btpCRvVCu4wASYABNgAkyACTABJsAEmAATYAJMgAkwgUwCxVLI3bdvn/oE1q9fXy0XlYJNZniEeD1xNT01Hdf3XzXZNin8gCLmnlt0It/zWtlrvCj1Y+/meyJDA4SuV6qyu2wJ33Y5W49rO7OSftmXNe62/GyTFEIFec5+8F6QOvPho7fUcnxCljBfUiQP07cly7Nfp3af4CZlUCbT83bEW7uk5y+FFSBhMzfz9/dXm8lj0xhb/89VGYNXu++OXZHqqZvro8UXVifKR+F+vCberF2mB7P20D37buYamkK7L5Vze54ohIRyfZTYraB2+bLm+axZs6aIX1x4vyq1RWIlJm9B98zjmAATYAJMgAkwASbABJgAE2ACTIAJMIGnl0DhqROFxCw9PR0UX5IsICAA9vb2hbRSwad19HKRgy+tOoPbZ6M0Ewk3wxOzDoASlJnS6r4TLKcL33IJJ38/CO3b51MfpODgN//i1smbBpe0L6vxXIw5dRMkrKYbCIFgcKCRlVX71ZY9Q9afR8SuLEEt7uo9HP1pr2zz71gV1s5Z3rtGTm2SbstXhUivWP2YrJu2ZN1SX71aKXWt8uWykoNRkrK0NI3vKHnfzph1GgcORat9DRUohMCAfpVlk9J3QP9KyCvMQdmyZUFiItmaNWvkMa8fFHv3z7lZsWhDw+LUsAbkfWyMB21ea+S33c9X83pbuyFcJolTxoeF38f7H+1XTrMd8/s80QQTJ9ST88yZf14mptOelJ6v/SKMxhvv/IfYWMMJ5Oj3zN9//y2HtW/fXns4l5kAE2ACTIAJMAEmwASYABNgAkyACTABJvBECGR3K3wi2zB+0XPnzokERQ/lgKIYVoE2FtCpKo7N2IuUhGSs7roArtU8kZqYjNiwuzKJF9WbyvzaV0HIuvO4uuMKDk/9D+f+Og7Xqh5IESIuCbS0llfrLI9O7XXLNKoACmuQcPM+toxYKffmUF4TrqHV9x3h5JslYkafuIFDQhRWLP56nCzeuXAL6/tqBC+qcK9VGg3ebynbAroE4vTsw/K6Nw9bAc865WBhY4HIveGynX7UHtlILT/uwukzd/Drn2fx1higSaPS0luWPHCVBGQUCqF6YBYDa2tzIcRWwvy/LoIEwrXrw+S402fvICQ0TnqB5nUrf4+ufjK5mnKt3XJJcqb0oeOAAQPw3nvvYfbs2Rg+fDhsbfMWvz/5/BBWrA6Fs7MVdu66LqcjD+ChA6toT/3Yyi938sWU6cfleg2br5DsbGzMZVxiqswpYVx+nyeai9ZavTYMW3dEYNS7uzH9p5OoXMlZJjc7eeq2mgDtk/H1kBWghEZqjGJwK6EVunbtqlQX2tHOzg4JCQmIj89K1FZoi/HETIAJMAEmwASYABNgAkyACTABJsAEmECxJFDsPHL379d47llYWKBaNU0s08dFvoTwqCTLK6u8g5czmn/zorot8spNvJWAhuNboWpfjZdqCf2YokqmeuWojhbr6ffVaoPYUpuZndFkUlspxJIoS6LuDRHCQYq4bQLgKPZjyCxsLNF+QS9UH1wPNq4lZX8SZumRlqyboCw5NglRRyPVB62jmHb9vSt3lGpQErOXlvYDed2SUT9FxCVxu9vGwXDyyxJKqU9u16rD3QAnGp8fq13TDZUqamS8vftvSs9NbRH3o/frZpvu4w/ryeRo1ECiLSUvIxG3V3d/zP61ldo/p+1Rcq+G9T1kP1q/amWN97Y6MIfCCy+8AFdXVyn2bdiwIYdeWdWfflRfrkMxfRURl65187qO8NSLj6vsVYdv5lRmSmPW1DolxbNXOeo06p34eDtg0by2angJYk4J0CjcxKolL6BRA085Qn+ugjxPNMfc31vhq88aSoGYnqONm67K9eh5ozVHDK0GRwdLvV1qTufOnSsLvXv3ltwNdjJhpRI+Y+9ejae6CafmqZgAE2ACTIAJMAEmwASYABNgAkyACTCBp4RAiQxhT8m1GHUZJ05oYsnWqlXLqP6P0omE1NiQOzATgqZzgCvMzAtfN0+MjgclPjO3NJfxc59U2AJ9bqlJKZJFWko6nHxcYO1ko9/liZ2TsHfjRiLuxyfDxdka5crawdHRKtf90BgSfa3Fc0uennmFR1AmozAOtRoslfFgp05uoorCSntux5UrV0qvXAop8s8//xj8QqFN+7UyadgP3zVFj67+oARnFFbBSyQWK50Znze3NR5HW4p4DVA4hTt3H4LEXU+PvL2LaV8FeZ6U66Hkclcj4mVICRJxy5S2E/yUVt3jlStX8Nxzz8lKElY9PTUCs24v057NnDkT06ZNk5NScjsfHx+88soraNGihWkX4tmYABNgAkyACTABJvCUEXicn++eMnR8OUyACTABJlAMCRS70ArFiTElI3OrUfqxbrmkhz3oUdSMvH/JC7coGiXGUpJjGbu/goyhuf9eellN6tXhRS9jl5P9OnXqhI0bN+LmzZsIDQ2Fn59fnuMpKRg9ipKR6F0xwFBAg9x3WVDmNCt5Iet7Iue0GsXgDgwMBIVUeBwiLu1jyJAhSExMxKpVq+RzS89v8+bNc9oi1zMBJsAEmAATYAJMgAkwASbABJgAE2ACzyABFnKfwSedL/nxErhxMxEUl3X3vptqArJhQ+i2/ty9fvV3aW5ujt9++02/ms9NTKBv376gx+M0ink8duxY+aBEa/fv34eNTdES4B8nD16LCTABJsAEmAATYAJMgAkwASbABJgAE8hOgIXc7Ey4hgmYlMAeIeC+NWa3OiclVnt/jCZWslrJBSaQScDMzAxOTvn3WGaATIAJMAEmwASYABNgAkyACTABJsAEmMDTTYCF3Kf7+eWrKwIEKMnYyOGBsLWxQFAtNzRu6Alb28L5r9e7ewCibiXKuL1F4NJ5C0yACTABJsAEmAATYAJM4KkgEHUvAztOp+HwlXSERKUh7kFGjjkX9C+YstI42paAn6c56vmboVV1c3g655CwQX8wnzMBJsAEmAAT0CLAyc60YHCRCTABJsAEmAATYAJMgAkwASbABIoPgceR7OxUeBoW7U7F0dA0WAp/DHEDFfIrw1KGcRFBCympQB1fc/QJtkANb/PiA5p3ygSYABNgAkWCQDa3wJfG3S4SGyu8TZSXU/cRWez7Pley8JbhmZkAE2ACTIAJMAEmwASYABNgAkygWBMgT1wScU9cTYO1SHGRXwFXuXgaZy4EYDMxB82F3YCHk1mBPHOTkh5i87YdcuoWwU1EWC5HZRmTHzdu2irE51TUrxuEMqU1yasvXQ7BuQsXRc4Pe7RsHmzyNZUJj584hasRkfD18UKNwGpKdaEf09KE5/XR47ArWRLVA6sW+nq8ABNgAkwgPwSyCbn5GVyc+y7a+oCF3GL0BNIfUzJK+MWWfwIpcXFIvn0LKbH3YFuuPKzdNW/C8j8Tj9AncP/SeaQnJ8Pa1R1Wrm4ws7TU7/JMnfP/1Wfq6eaLZQJMgAkwASbw1BOgcArkiVsQEZe8cPWNBF0L8ZGG5qS5ewvP3PxaYmIiPv3yWzls4dxfC1XI/ejTr+Q607/9UhVyDxw6guk//YKKAX6FKuTO+d8i7N67H/379HysQi6t+8tvs1FSCLn/bV2X36eH+zMBJsAECpVAjn81AkrbFerCT3LyyDtJeJCchoWbi79Xbqr4dpSy3GsbiZ1Pk+B59uxZvPTSS3B1dcX+/fvFrUziq2w9y0hNwaFX++FhTDTKd+sN3yEj9Ho8m6fJt2Nw+uOxiNq2SQVQ7eMv4d1/sHrOhUcjcPazj3Dn4F51koCRo1Hx7bHqeXEsFPT/U7IQtKtW1Xgt7Ny5ExUqVCiOl897ZgJMgAkwASbABJiASoBi4lI4BRJg82Mk4maka5xRMjLSRTxdM5QwMwfV01w0J83du/AcWvOzXe6bSeDM2fNSxGUgTIAJMIGiSiC7IlZUd5q5LyvxB+/5xhZ4tbMV3u5jhVfaW6Jxjfx5aZay13jMkVducbe+fftK4YTEE+UxefLk4n5ZOvv/6ivNt8CDBw82KOJS5xIWlqgy7mPEX76I8998hjuH9uvM8TScHB4+AJd+/C5fl3L55+mqiFvmxU7wH/EWnGrUytcchjofOBSNsn7zUbP+EkPNz1Rd+W694Dt0JFzq1JfXTcxv799drBkU9P+TlZUVXn31VXntU6ZMKdYMePNMgAkwASbABJgAEyAClNjMgB9JrnAUETctLR2NK6Xjm/42IslZuirs0mCak+Zmy5nA4Ff64JsvJ6JTh+dz7mTClgcPkvDhJ5+bcEaeigkwASZgegLFSshtKLJ7fvWmDV4QQm51ke3Tp4wZ6lQxR892lvhypDU8Shn3PamtlTnoQXbqSorpqT7GGQMDA9G4cWP5sLPTeFFnUFrUImS0n7feegujRo3CtWvX8rWzf//9F/v27ZNjevXqletYx8AaqPfrfNnn2NvDRCiBmFz7F7fG9KQkcQv/w3xt+/b+PbJ/xbfeQ+3vZ6HS6A/gXKtOvuYw1Dk1VeMFnpTEbz7LdemBKmM/QqOFq+BQWeONeu/oYUPYilVdQf8/9evXT17n+vXroSQfKVYXzptlAkyACTABJsAEmIAWgbgHGfnyxlU+iZEXbhmnNIx5yQnVKlijeyMbkLCrGH1ypbnZciZQu1YNtG3VAv5+vjl3MmHL9zNnIfL6DQRWrWzCWXkqJsAEmIBpCQj/1uJhJNL2es5S/SN6734GIm9lwL+8GWysgJI2JfBWLyt8POshjNExySs38o7IPiq8cmv4F9+YlhMnTlSfwI8//hgLFy5Uz4tKgYRcEnXIhg8fnq/brefNmyfH9e7dG6VKlZLl3H64t2yLap98ibOfTcDJD95BXSHslsjvV+i5LfAE2jLSUhGz9z88iLwmPI8tEL1jC+x8/ORD3KOV647IQ5nMsWr1XPtxowkIiOfCqXot3L9wDknRN00w4ZOfoiD/n7y9vdG2bVts3boVCxYsQK1aj+4B/uRJ8A6YABNgAkyACTCBZ5VAHm+3DWKhkAoU/u7tl2xhlflRc/X+ONFXfHDVsoLMrTVcLW7eugMrVq/DmXMXZF3liv7o2P55dO74ovi4kP3zQkhoOJavWotTp88gNPwaatUIlMnM2rRqjvLlyqrzFqRA+RJWrtmAYydOivnP4u69WNSpXRPVhDjao2tnlHJxNnrav5euxMlTZ9C0SUN0eKGdOo72v2T5Khw5dhxUpjnLlS2Ltq2bo5O4ZkcHB7Xv/fh4TP7uB+ENnQEvr/IYMXSQ2qZdoFi8y1asgZ+vN0aNHIYRo8ZoN3OZCTABJlBkCBQbIbdVPQtVxN12MBXrROZQxd57xQrl3M1gZ1sCXqXNEH4j65tOpY/+Udsjl7xyi7OYq39tT8v51atXQR65ZAMGDDD6srz7DRaJp9yQfPeuTO5l5ZK3AEyTx546DnPbkrAPqGT0WgmhV5ASFwvnmkEivkP2N0lGT2SgIwm4YfP/RNjc35B084bskXgtHDG7d8qyhZ09Wu/R7NnAcJ0qcxtbnXM+KRwC5iIhAlnaw/x5ThdkNwV57T28FSW+EIiQr3EL+6w3uLmtX5D/TxQGhYTcFStWYPz48XBxccltCW5jAkyACTABJsAEmMBTQYD8a0nETRPv49vVKoEa3pr34PvO3cfGQ4lwcDL9x+8p02cI0fSUDj86p0dIaBjefWukTtuqtRvw+de64dr2HTgEevwxdwHm/PojAvz9dMYYe3IzKhrjJ36BEydP6wwhkVQjlK7GV599LEVjnQ45nNCeaJy7u5sq5FKitZF6+Sju3L0Hepw6cxbrNm7G7z9/Dwd7ezlrXNx9/LN5myzXqlndoJBLYz/85AvZ54uJ45H0MDmHHXE1E2ACTODJEzD9X5JCuqZy7lki2Y7Durdz7z+Vhm6tNVEiAoSHrjFCLm2TxFxKelZUvHJTUlJw9OhRXLlyBVFRUXAQ3yRWrFhRxr718PAwOdnbt2/j5MmTuHDhgvymtkqVKqhXrx6UEA2GFjxw4ID8drlGjRqwF38cQ0JCsHfvXtwVoqmfnx/atGkDGxsbUCZV5bZq7WRsx44dw/3799Wpycu2cmXDt67QWmSUMCmnPupEeoXSL7ykV5P36d7u7eFcuy4aL16bd+fMHue+mohbu7bjueNXhAhsWrH08s8/4PKMqXKlcl174fbeXbD3r4hS9RsjeudW3Dt+BBniG+9HtbDw+4i4ngBPd1vxDbwdDh6OFt9ux8DdzQZBtdxQPTBvITxSjD9wKEq8WYyDr4+juAWqvMieq+txoOwzPiEFx0/ehpn4L92kUWmkpmWIb9pvY+9+jRdrrRquCG5SRkcXj4tLxv6DUbh6LR4xt5NQtowdKlV0knuzt8vZo/7hwzRs3xmJsKv3ce9eskiYZw0fLwc0Fus6ZMbKVvalfQwNi8Pps3dx8dI94Qlug2pVXFCvjrtIIpj1e0i7/5MoF+S1d33NCpz/9nM0mLMYrk2aGb3t/P5/atiwofw9kpCQgMOHD6NduywPipwWPXjwoLibQnN7YZkyZYTHhFdOXbmeCTABJsAEmAATYAJFjoASJIFCKjiVzMCwdpovspMepuOrJVGwtLKT+T5M/W6SBNtyZcvgLeFF6u1VAWfOnsNfi5dJT9W//l6Gfr26w9NT81mS+ioibtPGDdC/T0/x/rgUzl+4hO9/+kWKoYOHv4WVi+fBTSSazo+lC4/XceMnql7BXTt3RHvhRVvS1gaHjhzH9Mz5ydN1w6rF8PRwz8/0at9vpv4gy3TNY95+Q4jOvkgQnz3XCwF3waKluHQ5BMtXrsUgEV/XGKP3n19Onio/v74+bAgqV6qIE8ILmI0JMAEmUFQJFBshNyQiHRU8NWKt+FuAhKQspOSJq9j58Ly9cZW+SngF8sh90l65JOD26NFD2Vq249SpU9GlS5ds9QWtWLlyJd57771sw0k0nTlzJij2riGj5GpkFMJh1qxZ2LVrl0635s2bY86cOQgNDUX//v112uhk0qRJOnXPPfccfvnlF5065eTSpUuyGBAQoFQ9M8cMcStW2Jxf5fVWensc/Ee+g4MDe8pb9/1ffxv0iL9ySXoQ5wQlpf6nVwAAQABJREFUI9W4+M/zFlzAr3+exfPtKogvEB4IkTVGZ8o3RlTHh+8FiTeeWf/PtDusXhuG19/WfR2UKV0Sy/9+Xoqm2n2pfPFSLHr22yyrj+3rjnYd10lxVrvfhHF1QOuSzZ53Hh99elC7WS3TOnN+a4Wa1bO/0Tx34S569d+SbW5l8IWTfbKJucnii51vpx3Hz79lf/PWsnlZ/Dg1WLypFb+A8rA08WbyWTa6hc/f319+UXT58uU8hVy6Ba9Pn6w325QwjTx52ZgAE2ACTIAJMAEmUNQIKIKtoX1pvHHTMaq9DUpaa3p8v+oG7sZbCicdK+GooPk8a2hsQesorMBfc39VPVArBvgJR5jyGPbGaDnlxctXpJBL77e++naarGvVIhhTvvpUOvNQhb+vDxrUq4OuvQdKQZO8Wgf1z3pvJgfl8WPL9h2qiDt61AgpEitDSBytG1QL/YeMkFW//D4HkyaMU5qNPsbGxiH8aoTs379PD7Ro1kQdW2nU6+J9/x3pfXvwyFFVyHV3c8XsX3+S/RQvXXWQKKwWHso7/9sj4+IO6t9bu4nLTIAJMIEiSaDYCLnbhRdui7qa7b7c0hJ/rk6G+NIPdiI2btOamsRlSclAZLTxQq6S9KwoeOUqXqrkFduyZUvpjZaamipDC2zbtg1jxoyBpaUlOnTo8MgvpP/973+qoBocHCzjWSYnJ2PJkiUg0YUEle3bt8PNzS3Htb788kucOXNGCr5169aV/f777z+QBx6Zp6cnxo4dK8v0Led332lu36FESGVF/CLFfH19lWK2oyLkkqevqe3Ee2/AoUogfAYMhZmVYc9RCplw6YdvYe3mIYXT8AVzEHfuNCq/+yGsROgGQ0bhEK4u+h9i9uxE3Z/nFjjcQqqI5ZSaEC+XcKnfyNBS0jvXYENm5b1TJ9Rm5ZZ/tcJAYdMWTSK6Pj0DUFN4xe7bH4U168Mwc9ZplPEsiSEDq2QbRd61JOIGNy6N5s3KYsu2CPGNezRu3EzEjzNPYdo3WW+usg0WFcPe3CWFVhJJyev19p0k8W36VXE7U5an8Y0ojSjaumU5EV/LXXgc2CE27iEWLr4kReEXOq3H/n+7wquC5vYpZZ1Pvzws5/YWHrgdXvRC5YrOuBWTJG7PuoGdu64jXXgC69vrb/+HjZuuymriQOtFRT/ArN/PyDGvjtgpPBSez1HUVsJ4xPy3Q3pLlzDX/G7SXye/5wV57cWePiG8b79AtY8+V5OwGVr3ltjrpR+moN7vC6Ds31C//NZpC7n5Hcv9mQATYAJMgAkwASZQFAko7x7T01JE2L90pKWbiTu2zNStUjKzJpUz0LiyJtzW8SsJWHvgAewcnIRHrpV4D2ma94bqgqIweEA/VcRV6oNq1URJEfKL7pIkcZMsNCxceulS+Y3hr6oiLp2TkeA5WHixzvz1TyxZtirfQu7mLTvkPOQp27tHV1nW/lG1SiX06t4Fi8Xca9f/g48/GCPY5Y8H3bFKwjWFQvh76QohvlZBYLWszyhj33kTQwb0lZ+blbWtBHeKAWzIrkVE4nPhjUs26aMPYCHykbAxASbABIo6gWLzmyouIQObD4hYQw0sUM3PDN+9Y4P4xAw42Gm8BOmP6sodxnkgaj8p2l652vWPu0xep0uXLkWdOnV0libhs2fPnjhy5AhIgH1UIffOnTuYMmWKXIMSj5HYqgTAJ2/bF198EdeuXcMPP/yAzz//XGcv2ick4r7//vt47bXX1PH0Le/x48dlNxKBR4zQfONKoRUUIZeupXp1jael9nyGyrQGmY+Pjzya6kdS1E1Eb9+C62tXImLpQgRO/FrnNnPyhr2+ainOfvGxFFNLVvCG37A3EbHib8SdOYWbG9ei8tgJqNCzn86W7h45iDOffiiTXVFDQlgI7Hz9dfoYe2Lp6AiKgUtibqTYi0udesYOlf3kNaxepo6x86uolnMraHvCDuxXGS7O1pj31wV8P+MkXulbSbwpynqjqszT+SUfzJzeTIqbbwovWupLXq1/L72MqZObiNeH0jP7kUTfJQvayVAKSuukCfVx/YbmCwGqe0F4CvfrXTGbd2/vHgGoUutvOWzZyhAR/6umMgVOnr6NXbs1cYV/mhYswyIojSOHBeJKSBzs9EIr/Lfnhirizv+ztQwPoYzp3NEHzdqukiL12vXhoGs2ZA6Vq8lqet5IzKVkYaawgrz2bm5ajzsH92J3pzbwGTQMAW+8q7OVB9cjQOEZorZslPW39+xCmY6m8/pXvqQ5f/68zrp8wgSYABNgAkyACTCB4kyAvG67NzLHwFZO2HYqEdPWPBTvg81E+DmRgNs6DW+0d5KXlyw+mn626AasRQ4OEnFLFIKISwuRB66+0Z10Ls5OUshNS9U4SIRdvaZ2o1i45mLP+hYWflVWRUXfkmNJDDbWLl0JkV2bNW2UoyDaqEF9KeRSR4qnS6Jvfoyuq2uXl/DHnP9Jz9wBQ0fKORo3rAeKf1uvThD8/XJ2FNJeiz67fvzp17JqtPDmpSRnbEyACTCB4kAg+2/vIrzrXUfScOmaxuOWxCFFxKUtz1+XgoNnsrz4jL0MxSuX+i/c/ORuhy5XTngb6om4yjV07txZFike7aPaunXrpNesq4h59O6776oiLM1rK2K80i3NZJs2bZLHnH6QF+6wYcN0xtM3qop3bk7jjK2PjY0FxfAlo3APpjQbz9Jouf0AfMUffhJbDw7uhWNvD5dLxF+6gP19OuPkh5pbkap+OAnB63aAPCsbL16HwEmTZb8zkz7Enpefx/2L5+T5yfffwv6+XaSI691/sExCVlARV7lW31c1QnjEskXY3qwObu/fjQc3rsvkakof/ePJD97B0Tdfxa7nmgrP4PnSczjoh19BwrAxNvCVyjrdhg/VCJMUl1Y/5ILS8a3Xa+h4qLZ/PutNUGzsQ6WbwePoUTV1RFzqRLF1qwrvXMXqBrlnE3GpzVHcnvZSe81a1yLuK93l0dIi61ebIfHZ308I5XrxbmfP1wiOnTr46Ii4NCH1f/F5Lzn3tp0R8mjoh0fr56RoSm2Hhw/Avl4v4fi7r+PqwrmGuhtdV5DXXuX3JqDeH39Jb1xKmLezZT3c3LxBrhnyx0zsbNVAirhuwS0RvHqrSUVcWkSJcUtCLr1RzsvoyywSf+nh7u6eV3duZwJMgAkwASbABJjAEyFAXrcNAzQ5GtrUKClF3dSUVJngbFg7G7jYmct9zVp/A9GxlrC2tpZeu7n4NjzSdTg62Bs1PiLyutqPkn+t/2dLtseZcxfUPnfvxarlvAp0B2bkdY0ThUcu7+PKlPZUp7p5M0ot56cwYuggfDJ+rPTMpXG07jIRE5dE2Rc798R7H34iReK85pz/12KZHI2E8E4dXxCfkRPVR3y8xqmEPJqVeooBzMYEmAATKAoEio1HbinHEnh/oDWsxN9M+hUadj0dsfEZKOtuBg+XEhjY0RLBEeaYsUTEV8inKV65p0NT8znStN0fPHiA1atXy+RAERERMoEYrRAvbrMnU4RNeVLAHxQ6gYzmUgRi7anu3buntlMfEnwNmaGxhvoVtI5ugVGMwj6Y2iydXVBl7Efw7jcIl36aisgVi+US5ElJScT8h4+SQq+lo+YbdWo0E6EtvPoMQNlOXRE+7w9cFGEXFCPvxzIvdkLF0e/Dztu4b4GVsTkd/Ue8hXRx7Vdm/Yjk2zGy2/U1y0EP10bBIJHZoYpGaFXmiFy5RClKj166DvcWxnmF1q/rAf3EYT7eDrKOQihcvy6+6NBE0VDXoAKJnNrmJpKkKXZPJClzFl69OVnHTCE2p3alnsIbUCiF8yLu7bWIBCQ+0Hjfyz2JTvdidV8jJAT7+TrK5GuvDNkmYmRVQcP6HqghErc5Oma9tpT56Xj+gua1T+EkLl3J/sb1mki0RkbevjlZCeHZ4NV3oHzeSLyl1xI9NPWDchqWZ31BX3vuzVrBrUlz3NiwGhe++1LuhRaLEd63joE1UGXcx/K1lOcGCtBB+/+t4vWf0zT0JVBeXx7lNJbrmQATYAJMgAkwASbweAmkY+qqu5g5orT8bDq4jSMu3bgtPXLb1Sopt3Lh2gMs3pWAkoUYUiG/1+zqkuUokVd8Wnrv6iqSUhtr9F5PCXkQnxlqz9DY2Lg4tdrJSfczhNqQR4HW6tzxRXTq8IK4yy4UR4+flI8t23bKkTv+3S3Cr10Rd/3NFkm4c/4ccvqMxiGHkqO1el7jOGVo6ebtOsrq+X/8rBPGwVBfrmMCTIAJPA4CxUbI7feipfxDSVB+W5GM82Eaz1w6f6m5BVrXs4B/eTN53H44f4Isxcglo4RnT8pIYKXQBvpirZ2dnfSgNdW+tL1687rlmb6BzEnILV++vKm2ZHAe8g4mT1wK83D1quYWH4MdH7HS2tUdTtVqqEIuTUchDRyrVYeFvYPB2andoWqg9HZVBFbqSMKYjUdpg2MKUlnC3AKVRn8An4Gv4fa+3SLe6WdIuqn5ppu8c3d3botGi1aLsAv11elb7zmBtMQExJ48jtOfjJO3zpMXZqMFK/KM1+vhbqvOo13w8LBFfGgKIrXCHSjtJPxaWWm8DpQ6c62kaBl5fHNN8W7zsjXrwjDirV3ZutHaJDCTPdSKqat0nDihHsa8v1fGyf3ue03ID2rr36cSKASEdkzdlNR0cXtWllfvufN3lWmyHR+KzMM52YPIa9Ibmtqda9dF5THjUdLLR7ym8r7OnObUri/Ia4+8yR0qVRX78FVfPzSnY9XqIvRHgPb0Ji2Hh4fL+YKCKFFeloe0SRfhyZgAE2ACTIAJMAEm8AQIXIxMwYT54ZjyqubusPHdXPDgocZjk0IsfLrwOqysbcX7ZItCC6mQ38v28fFShzRt0kj1aFUrRSHu/n3cuHFT7NsqVxFUe4xS9vX1EbFrj+Pc+YtKVbbjhYsapyJqKC/uSM2vPXz4EBHCA9dMiLm+Pt4I8PeTj57dumD82NH4ZtqPMtkZeemeOXsOdevUznEJG8qgng9Lz8j5M0A+puGuTIAJMIFHJlBsPl17eWq2SrGGtEVcIrB2l7iVJfP3alCV/F/Sg2TN4D5tDQtZj0zZiAkoVi2JuCRezpkzB6dOncKVK1dk1neKjWsqs7HR/MHq2rWrnJ/WyOmRW0gDCjRf2Fa5cmW5RFhYmMmXyhC3et9Ytwr/PtdExML9CHY+fjprUKiFvd1fxO0De3TqybuSQi8cGSG8LpOSpOhLHWg8eTzubNMQEcv/Fomu8vdlgs4ieidWpVxRpkNnsYa/jNXbePFa2AdUkr3OTPpAp7e1m7sUDinWaaUxH8q2u4cPIPGqRlTT6ax3kpyS++3v2uEK9IYW+JTCI+Rm9+49VEVcSna2eW1HhF/oj+shA3DxVB+MebtWjsPbtS6Pg/91k3F6u3XxU72NFyy6iEYtVog3mllhH7TF5+nfNpXz0xqGHvt2vpzjmlFb/1Hbak/7GaUaNIZN6TKwcCiYx4E6mSgU5LX34HqkDBNCcXIpXq6SpI/2RCE7djSvIz3LU7S8I7TXfJRyaGioHK78P36UuXgsE2ACTIAJMAEmwASKAoESYhPmwtnC2toGe86k4+d1N+W27G3N4O6scW6Ys/kmrt6yAAmF1JfGFAXz9/WRCdBoL4uXrTS4pc++moK+g4Zj3IRJBttzq6yfKZruO3AIJ06eztaVQhTM/d9CWR9YtXK+hWIaeOLUGfTsNwTd+w4WSYx175JzdHTAqwP7q+vmFRrii4njxWeFLQYff/7yg5yHYgQrfapXq6rOzQUmwASYwJMkkH/V8wntVvwNlBZ5y/A3YcoXZA4l8/en8k58MhSP3L7PaW6FedyXGBUVJQVbWnf69Olo3ry5+keW6ijMgmIUfygnU25fTsjldhaKQ0kWHR2d0zSFWp/b/vUXVgQgEppNaQ9jokV82+dwfMxI6aFY5f1PZBxcWoO8KFvuPCS9YCmx2cEBPWSsUxJ+j78zQsY8vXv0ECr06o8W2/bDpW4DubUmyzaI+LlfS3H31Ph38V/7liDvTFMbPce0R79XX5dT379wDmkiJIch82z9vFqdFK15k6lWGChERGYlGFOa6eUWEqq5Baps2cf//+O/vZlvjoX37e8zW6C6CI2gHfM2LFzjRZtTzCobG3P06RkASnh24mAP/PBdU+XSxLf1V9UyJU5Q4vLeijHMU+2cS+FBpOb/qlON2rAtVyGXnvlrKshrL3zBHBEHt770Nnep11C8xrerr5uaX3+PBnMWyy8grvz8vYyfe0skZzOlXbyo8cZQfufkNfetW7dE+I7r8qGEeMlrDLczASbABJgAE2ACTKCwCeh//DITScusbaxgW9IG87fEYf2hLEExPDoJ87bFi3ZrmeCM+uZm+nPn1vdR20iUHDpII3RSsrDZ8/5CUpLGsYE8cZcsXwUKS0D2UvsX8r1cn57d1M+wb777AfbsOwjls1+4SLT2+ltjhCOFJpTZOyK5mGIkyDZr21E+3hRh6nKz6tWqqM2ffvktom9pws9RJYX1Wr1Okw+CzgMz++Y0P32uovBehh4UWkIxpV35rK3U85EJMAEm8KQIWDyphfO7Ljk4WojdUqxcfaOQCtRGlpikOeb355P0xtUWXimkgL6tWCFuizfCPD09Za99+/bl2FsRR3fv3i0Fk7Jly+bY11QNdFu1EiIiPwJNxYoV5RZIEKI3Aab642nl4ooS4gVDXq5V3p8ISn6mbRQXt+r4T1G+ay+c+fRDkJcr3Z5OXowUPiFw4tdwrlVHe4iYj+LnDoRnu/a4OO1r3D1yENaPEmZBXG/ag0SYlzR8S37aw7xf6DZlsp7bjBRNCAKdTeudUDiByOsJIvNr1pqHj2YJ/t4VCt8LW29LIj501r4t9UI4kLfupi3Gi+W2thbo0dUfS5dfwe59N7H/YBT69tK8xmjdWjVcxa1gd0WyhCt4/bVA8aYu++8a/f3pn1MWYzL7ihpvcv32gp4X5LVnW7ac9MCtNv4z+VoX/4EQsytLrHVt0gzBa7cjbP4fIDGXQkCYylLE602Jx+3v72/UtD169JChVKhzmzZt8Ntvvxk1jjsxASbABJgAE2ACTKAwCTjalkCayNKi/c6wRAkz4XFbEunittDJizXxcf1L2+CLv2/BzMJWtNnmGVJB+EuA5n6c1qv7y/hvzz4cO3EKM3/9Uz48PdwRFX1L3UatmtXRq3sX9dzYgr29Hb76dALeGTsBFKLvrTEfSGHXxtpKFXBprkH9+6BO7ZrqtCTAUn+yxBwcVJTOJEa/OWIoZsz6A+T5S8nNvL3Ky1AQFOtWsQ4vtIOSWC0/8yvj+cgEmAATKMoEsr5qKsq7FHu7dY/+1ImM9vYl0CE4S3+2EF9ydm0lMqBl2rmw3G8PV/opxzuZQtGT8salfZTTig+0ePFiNcM7iZezZs3CoUOHlO3melREWooru3TpUpCYom8dOnSQWeGpfty4cSBvYG0joXX27NmYP3++dvUjl318fOQcCxcuFHGXbhg1X7NmzWQ/Cjmxd+9eo8YY04lE2UZ/rULtab9kE3G1x1MisYZ/rUS1j7+U1ZXe/RBNlm7IJuJqjyHRt8ZX09B01RaZHE27LT/llNh72B4chEs/TEFSVJY3bYYIukW32IfN/V1O596yLcwNiP/5WUu772dfHQbFiyVLTEzFV98eleUa1UtJb1h58hh/ULI1MoqFu2FjuLpygtjb2PH71Ri5akNm4fjJGMycdVq8KdX1rqU4uCTiktWu6ZbZW3MY9Xp1Wbh4KRaff31EeCjo/i65EhIH4rMnc7zO4EI+Kchrz6P1c2i57QAozAaJuIbMTMQ/8xs6EhRb2VRJ+mgdJXEZfYFTv35WDGdDe+A6JsAEmAATYAJMgAkUZQJ+nuYykZn2HsnT1tzcDLZ2JWFhaYcvF97F4KmRiLhtDlsZUsFMR/jVHquUKZYuzV0Qs1C8mMRg8hg11ij5168zpgmnhcFqjFxtEXfQK33EHWxfidAR1tmm1F7HUiSBJrPKPCqdmzVtjFVL/oemjTV3LZJAq3jh+vl6y7lHjXxN6Z7tqH1d2RozKwYP6IuPPhgjnE/KyJrwqxFQRFxKuPb6sCGYOGGcweHGzG9wIFcyASbABIoQgSxFtAhtytBW5q5LxgcDraUe0baBBZoHWciA8vYilIL4GyotMSkDG3YbH5uUwiqQPUlvXFqf/lBSojMSOUlAXb9+PRo1aoSzZ8+C4kxSwjH9JGg0Tt9atWqFKlWqgJKYffDBB/JBYytVqoQFCxbI7hS4/ssvv5TrkedukyZN0LBhQ7iILKYkAJ85c0b2GzBggP70j3Tep08ffPTRR9i8ebN8UPxdEnmaNm2K8ePHG5zb2dkZ3bp1w/LlyzFv3jzZ12DHAlQaK37SbTXmmXGFSfQy1oydP7f5UhPicfnn6fJBSa7onJKchfw+Uw4jL83qkybnNoWM4UvjUuOzEnnlNmDthnCcPH0HlSo64djxGJkojPq//25QbsMKra1ukJvcC4mrlPBs2k8nUNHfGQcORcm9ubnaqHvU3kS0EHC/FCI0PUiw9fVxQGjYfZDAS+bn64hX+lbSHiL6OIo3hXXxxeQj+G32WaxYHSLHCocLkRE3Tg0xUSfIXWec9klqZqxZ7duxtNsLWi7oa8/Y16Gx/Yzd/59//im70v97Q3cZGJrH0BdPhvpxHRNgAkyACTABJsAEHieBev5mOH0NMBMfBbS/GicxV7ljzEyKqRkynIKl+MyQZ0gFcQEp4mMrzV0Qo3iwR/Zuz3XommV/GWwnQXbo4Ffk4969WEREXoezsxM8PTxECLPs8oChdchjNyev3Qrly+HHqZOF+J2OaxGRwjkiCT7eXgbFYdogCbKG1jC4+czKlzt1QOeO7XH7zh3EiNAMGeJfKfF51sPdLVuS3YLMX6tGYL73lNt+uY0JMAEmYEoC2X9Tm3J2E84VfScDM5cm45X2ltIr10p8CWhlmfWnNCQyHfPWpahJz4xZWvHGNaZvYff58MMPkZqaiiVLlkjRlsRcMhIye/fuDbrtmCy38AL0R5nE4MmTJ2PXrl24efOmnOvu3btyrPKDhNsdO3bg448/BoVYOHDggNIkjy1atEDbtm116vRPctuHfl8679mzJ5ycnDB37lwcOXJEvYVa8dQ1NIbqBg0aJIXcbdu2gZKe5dU/p3mMqSdPWiuXUsZ0Vft4D3gVns+1F2/sxAvShGbp7ILgNdsQvW0T7hzej7jzZwEhyJK5NW0O7/5D4N6itQj5kPt/YTu/AMSeOo6YfbvlPnPbYs9u/nAQycf+nHsO5LlKZi9i0876qTko0Zi2UUzZnIyET8UMvU60Qk4p3XI8WolwCnN/a43R4/YI8TYaJOjSg/b15aQGSE5Jx6dfHhahVbQWFbNVKG+PhvU95BgSbxUBlxYKblwan35cXyfWrrKBkcMCUVOEWPjgo/1SuN26I0Jpkmu2f8EL1asZfo1QrGIlOZ4pvVvVDegVCvLacwtuieoi8Zqdf0W92Ux3euzYMTXmd79+/YyamO4EoN9Xiine+Mo5H5kAE2ACTIAJMAEm8KQItKpujpPh5jhxNQ10N6j2u2AqW1pZi/eiFiIUXLr4rGZmlIibKm78quNrDpr7SRoJuPQoDKPwet5eFR5p6qjMvC4UnkHf6POIu5urfOi38TkTYAJM4GkmUELcvq+JWZB5lS+N0wRrDyidFSezqAFwdigBnzJmcBRbjBICb/jNdGTGaTd6q+SNqwi5a791NXpcYXckz9urV6/KbywpRqxy20phrUvfkJJAGic8CUuVKgWKmUuxh4qSUQgI8sodMmQIJkyYUJS29lj3sr/fy3AJqofK7xnP4IrIuHrx+2/kPu18/FBSPLz7DYJ789bq3kkI/fXPs+JbdX9M/7apDKlw7sJdODtZgzxZcxNt1UkKuUC/pSIi43H9RqL4pt1GfKvvmFO0AJ2dUEiGaxHxuHcvWWTGNUfZMnbC2yB7HGqdQZknsbHJCAmLE1+wpIs3iLYydrB2ojVlzKWfpuLesUMi5MVR6TVN9U2Wb4RT9VpKl2fqOHr0aKxZswZDhw4FfUFljG3duhXDhw+XXekugv/++y9Hrw1j5uM+TIAJMAEmwASYwLND4MSJE/Jia9UqvPdep8LTsEjc+Xk0NA3ktEqOCdqCrjG06UM3hVMgT1wScfuIcIE1vJ+skGvMvp9En7PnL+DAwSMyFi6tTx6+SriGJ7EfXpMJMAEmUJQI5O7OV5R2qrWXe/czcPy+bvxKrWajioqI+6TDKuhvlkQMejwusxFhAygcQ1G2d999V4aLOHXqlLxFh77dfRatRB5Zbw0x8Rk0DKmJCbi+ZjkSwkLkw71ZK0Nd1bqSJS1QN5fwAWrHx1goId4pk5ctPfJj5LlbtbJLfoaofZ2crBBUSzeOrtqoVbhzcB/uHNwraygZnt+rI59ZEVf5YigoKAgjR47UopR7UTsG9nvvvccibu64uJUJMAEmwASYABN4zARIcPVwMsOO02k4fCUdIVFpiHtAyZiN2wg5JVBis4plzGU4BfLE9XQ2crBxSzxVveYt+Btbt/8rr4mcjBrW1000/VRdLF8ME2ACTCCfBIqlkJvPa8zWXYmNSw1PMslZto1xhUECpUuXlh5+BhuftUpj3y1mcqHYp5XHjJcPSpRGsXLNrW2eNWqFer11f5kj57ew1yRmK9TFivjk9MXQypUr873LPXv2yDEUO7tr1675Hs8DmAATYAJMgAkwASZQ2ARIeO0tvGh7Bxf2Sjx/UK2aEkKTRg3QqnmwDF3BVJgAE2ACTEBD4JkUcpUnv6h54yr74iMTMESg+qeTYW5b8LAXlIDL0rFwYmAZ2u+zUscC7qM/0ytWrEBamrhVUWQ+5mzCj86TZ2ACTIAJMAEmwASYQHEm0LvHy6AHGxNgAkyACWQnkKOQe/lmQvbeT1kNe+M+ZU/oU345lLisMKyJSP5lblECtWrkHUagMNbnOZmAnV3RjcnOzw4TYAJMgAkwASbABJgAE2ACTIAJMIGiQiBHIbeobLCw9sHeuIVFluctbgTatS4PerAxASbABJgAE2ACTIAJMAEmwASYABNgAkyACRRdAtmE3LXfPr5EW08Cy+PIavokrovXZAJMgAkwASbABJgAE2ACTIAJMAEmwASYABNgAkzg6SWQTch9ei+1YFd28eJFJCcnw83NDa6urjKGY8Fm4lFMgAkwASbABJgAE2ACTIAJMAEmwASYABNgAkyACTCBghFgITcPbpMmTcKBAwfUXm+++SZGjx6tnnOBCTABJsAEmAATYAJMgAkwASbABJgAE2ACTIAJMAEmUNgEip2Qm5iYiAsXLuD69etIT0+Hl5cXfHx84OTkVCisevTogZo1a+Lo0aM4cuQIZsyYgUaNGqFx48aFsh5PygSYABNgAkyACTABJsAEmAATYAJMgAkwASbABJgAE9AnUKyE3DNnzuCvv/5Camqq/nWgb9++qF27drb6R614+eWX5RQZGRno2LEjzp8/L0VdFnIflSyPZwJMgAkwASbABJgAE2ACTIAJMAEmwASYABNgAkzAWAJmxnZ80v3u3r2LefPmSRHXwsICzZo1Q9u2bVGqVCm5tYULF+L06dOFts0SJUqgRo0acv6bN28W2jo8MRNgAkyACTABJsAEmAATYAJMgAkwASbABJgAE2ACTECfQLHxyN2wYYO693HjxsHZ2Vmet27dGt999x3u3LmD7du3o3r16mo/UxdsbW3llA8fPjT11DwfE2ACTIAJMAEmwASYABNgAkyACTABJsAEmAATYAJMIEcCxcYjNywsTF5ErVq1VBGXKsg7NygoSLZFRESAPHfZmAATYAJMgAkwASbABJgAE2ACTIAJMIGiRyAtLQ30YCs8Asy48NjyzEzgSRMoNkJubGysZFW6dOlszAIDA9W6kJAQtVxYhQcPHhTW1DwvE2ACTIAJMAEmwASYABNgAkyACTCBp5LAhYuX0KBZO7zQqYdIXp7xVF5jUbio0eMmSM6btm4vCtvhPTABJmBCAsVGyDX2mu/fv29s13z3U+Lx/vvvv/wNYr7p8QAmwASYABNgAkyACTABJsAEmAATeJYJTP9plrz8vr26w8yshMlQvDn6fdRt0hqr1qw32ZzFeaJuXTrJ7X83fQaSkjg0ZHF+LnnvTECfQLERcp2cnOTeo6Ki9K8BZ8+eVesKU8itUqWKXCchIQG7du1S1+QCE2ACTIAJMAEmwASYABNgAkyACTABJpAzgT37DuLQkWOyQ5dO7XPuWICWpKQkOSo1lUM2EIjgJg3h6eGOO3fvYdnK1QUgykOYABMoqgSKjZDr5eUlGZ48eRJKmAWqoNgvR48eVfnGxcWpZVMX2rRpgyFDhshphw4diu7du+Ptt9/GggULTL0Uz8cEmAATYAJMgAkwASbABJgAE2ACTOCpIbB42Qp5LV07d4RLZvLyp+biitiFmJubY0C/3nJXCxcv5zuKi9jzw9thAo9CoNgIue3ba76xS09PxzfffIN169Zh06ZNmDJlCu7cuaMysLS0VMumLpiZmaFfv37o37+/nPrYsWNyH0eOHDH1UjwfE2ACTIAJMAEmwASYABNgAkyACTCBp4JAROR1kEcuWa/uXZ6KayrqF9HhxXZyi1HRt7DvwKGivl3eHxNgAkYSsDCy3xPv5urqKgXUhQsXIjU1VSe0QbVq1RATE4Po6Gi4uLgU2l4jIiJAXrlkQUFBGDt2LLy9vWFnZ1doa/LETIAJMAEmwASYABNgAkyACTABJsAEciNwJTQMp06dwU0h2lkIb0w311KoHlgVAf5+Bofdj4/H0WMncf3GDXn7vaeHB/x8vVGlUgBKliypMyYqKhpXIyJhZWWFWjWyEo1rd4q5fRuhYVdF3Fsz1A2qpd0ky0eOnZDHcmXL5Lgn6iDvuD1+UvaltW6KtY+K81u3YlClckXUrlUDDvb2sj2nH8nJyTh77gKOnzwNCwtz1KgemOO+aY5Ll0NwTyRXr1C+HEp7eghHsbs4dPQYQkLCULq0J1oEN0GpUlk6Q0ZGBi5dCcH5C5eEBnFLbsNXsAvw84W3V4WctiXr8/s80SCKcXvm7DlcFvuhu5P9/HxQU1yTh7tbrmsRpzYtm2Pbzl04ePioCLfQKNf+1Egs4jLzDpW0tUXVKpXyHMMdmAATeLwEio2QS1hq1qwpfmn54cKFC7h+/br8Q0Iibvny5TFx4kRJrjCF3C1btqjPzvfffy/XVSu4wASYABNgAkyACTABJsAEmAATYAJM4DETmDL9J/y9dKXBVV8bMgAjhg7SaaO+NMaQUVzVqZM/1xHwQsOv4o13xsnua5cvRNkypbMN/X32fBGLdS0Cq1bG/D9/ydYeIoRmMl8fb3nM6Ud8fAJGjBojm4e/OhC//jlPpyvtb8b0b6XorNOQeUIC9dDX38YZIeRq2zAxF81nyH765TfpLTxq5GtITUnFL7/P0en2BaZi/7+bYWlpgQcPktCpe18pfut0yjzp36cHRr3+mhCQs0st+X2eaMozZ8/jw08+R+T1G9mW+2LieLz4fNts9doVXl7l5enlkFDt6hzLU3+YqcYxrhjgh7/n/5FjX25gAkzgyRDI/tvlyezD6FXtxbdKdevWlQ9l0LVr18S3VEny1N3dXak2+TEyMlLOSYIyicdsTIAJMAEmwASYABNgAkyACTABJsAEnhSBE8LrVBFx27Zugdo1q8NWeFKSd+yK1evw8OHDbFsj71aypo0boEZgNemFGnc/HqvWrkdIaDj6DxmBNcv+AnnPkjWoV0cmzqJb9Ddu2opXB2lCDcpG8YM8RknEJev2cid51P9xRXiTkvl45+6xKjtl/iAR11sIkV1e6iDvyl20ZDloDwNfewNb1i2HjY21dndZnjFLIzwO6t8HKakpWLlmAxITE/GbmKvDC+1QvlzZbGOUii3bdkovWxKLG/2fvfOAj6Jow/gbeu+9916kSO9FuiC9SZOOgIKKisKnIiqICgqIgCAioCDSUZAqHSkB6b33qnRIvnnmMsvmcpfchQspPK+/y+7OzszO/ncTvGfffaZMaUmaNKnOhN3hv1sCAwN0NWQMYwKxVClTyAu1qusM3Pjx48ve/QdkztwFMn3mbLmrmL/zxmumW70Mz3VCxm+Hrr11e1yLZk0a6beB/1q/UdZt2CTvfTBcvZGcQo812MFsG9myOnSL3f/ss5VylQRIIDoTiHZCrivYJlM2efLk2urAVR1flOGPNiJv3ry+6I59kAAJkAAJkAAJkAAJkAAJkAAJkEC4CUydPlO3LVumlHw2bGiwfvr06CKXLl8JVoaNalUrykuNG4QQNRs3rCdVX2ik6y/5fbkgmxcBuwSIiOO++15+nbdQOndop8r89D78WLNuvbVeq3pVa92+cuDgIb2Z1YuEKIilk78dY02MBuG0cYv2WphduuxPeenFBvZDWOvIIkU2KaJr55elwUttdJu16zZK21bNrHrOKxBOIYYPHfyWwFbABIRck2EL8XjUpx9qmwJThnpghwncdGayEnT79+kRrA9vrxPsG0YEZU2XKvmcjPn8E0u4bv5SIxk6TM0btOQPGfHFGJkzY6q+Rma89qURriFm37hxU5InT2bfzXUSIIFoSCDaTHYGtuvXr5crynvHxJ07dwSeufv379dFtWqF/lqBacclCZAACZAACZAACZAACZAACZAACUR3AnHjxNWnYJb284GnrcmqtZcjC9cIfPbyJEkSayETZWfOnbfvkob1XtDbyIjd4e/wsDUVFi7+Q682aVRfZYwG99fFDniuIosVkSWzI8tXb4Txo1XzlywR19E2kzRqUFe3Wr5ytcvWEGKNiIsKyVRWbeUgb1iMPaxAJq1dxEX9EsqXF2I2AuJttSqVLGFXFwb9qFW9irUJn117mOtjlvZ9rq7TwUOHBVm8iEED+1kirmnXrnVzvXri5Gk5pfyL3YXdBuOkmvMnrEB9ZEHj4+oeCas995MACUQ8gWiVkbtixQqZP3++4NWF2MrAHU+VTBQsWFBKly5tNiNk+W+Q6TeOzSABEiABEiABEiABEiABEiABEiCByCRQ54UaejIrvGr/xjtDpHrVylKkUAE9cZcRH12ND5OTzVO2A5i065wSbe8EWRWev+AQO/+9+W+wZunVJGBVKpUXZLUuVJmgZkIzTIS2cfNWXfdFlZXqKuLFjWcV37//wFoPa6VokUIhqmACtIWLf5fTp8+G2IcCTDjmHGnSpNJFN27edN4VbBsicIoUyYOVudoICAiUDZs2y+q16/VkbBfUpOvOcevWrWBF3l4nCLQmBg8dZlZdLmGH4W6StQcPHvOOF9ch+rvsJKhwyLtvhrab+0iABKIAgWgl5GbKlEkOHjwYzOcHT8SqVq0qderUiVCcyP7duHGjPkb27Nkj9FjsnARIgARIgARIgARIgARIgARIgATCIlCpfFmdRfvnyjWyas06/UEbZOL27vGK1FbipHMi0rI/V+kJtJz7TpQokZUsde/+fefd2qtWC7lKSH3ztVd19u3vy1fqesjgLOZCeMVO2BFgPJiw6/QZ1wJsiIOpglQpU4YoTpo0iS5DXxBU7RYP2OFKiDUWCAFBVokhOg0qyKL0hrDittIFXn19kJUta+qDnT3u3gvOz9vrZM+yPXT4qL3rEOuurpWpZJ8kLWuQX67ZxyUJkED0JBCthNyuXbvKf2oWykuXLsl99Q9L+vTp1R/qFBFKfvTo0bJ9+3bZsWOHmKdqFStWjNBjsnMSIAESIAESIAESIAESIAESIAESCIsA3laFNy7Evt+Xr5Ctf2+XPfsOaNEUmZyHDh2Rvr27Wd3cVJm27wz5SG9jsrM+SuzNlTOnxI3rkAYwwRgmBnMVqA/fWtgkrFy9VhrWryPzFy3RVZs1eVH8/B775jq3z5s7lx7TyVOnnXe53X748GHIfYGPi1wdzk/cj+FxS9drRiR2vddROnnqdEvEff/tgToDOlmypPrcMbFchequs5K9vU6ojwDv5YvnOg4ejp8mcxkTuDlbRoSjOzYhARKIAgSilZALXkmSJNGfp8Vu8+bNgg+icOHC0r17dylatOjTOjyPQwIkQAIkQAIkQAIkQAIkQAIkQAKhEoAvrPGGPXb8hIz86hvZvGWbLFi8VPr0fMXyeN2ihF4EMkhHfPxBCO9VI/wFBAaEOB4yW5s2biiTlJj528IlkiNHNjEWAPVeqBmivr0gT+6csvqv9XL8xEl7cajrsH9wjstXruoiZACHJhw7t/No2wMNePmK1bqrfr27SxOnydbOK5uJsMLT64TzQ0A0x6TrzlnVYR3H7De+uPnz5TFFoS7hZ3z79h1dB9Yc6dKmCbU+d5IACTx9AtFqsrOnj0fku+++E39/fzly5IgsWLBAGjZsGBnD4DFJgARIgARIgARIgARIgARIgARIIEwCOXNkl26dO+h6EALtr+n/Z/NuNVm4pkNk60JsDS2QhYvARFxffv2tXq9ZrYqkShXSBkHvDPqRM2cOvXbk6DEJDLSl1epS1z/g++sca9dv0EU5I8nu8Nr1G/r4iRIldB6awLLCmwjtOmGfiVVr15lVr5eHFW9Ebhfewa46G/vtJGnwUmv9qde4pasqLCMBEohkAhRyw7gATzsDOIzhcDcJkAAJkAAJkAAJkAAJkAAJkAAJaAITv58mm7duU36xjzNo4R37R5B3LV7NT58unUUra5bMeh0Th69YtdYqh/frsE9HWR651g6nFbR/vlQJXQoxF/Fiw7p6GdqP8mUcE5NDWDZZwaHVx745vy0U/917rGoQmZFljHipcQOr/GmuFCyQTx9unspIvnv3nnXoTVv+lm8nTbW2nVe8vU5ZMmdSnsT1dTdfjB4ne/buD9blfTWJ2R9/rpRPRn4ZrNy+ce78BYtXtcq0h7Sz4ToJRGcC0c5aITrD5thJgARIgARIgARIgARIgARIgARIwFcEViivWgiIEGwhMiZMmFA2bNpqCbKv9+sVzD6hqJqQLFfO7HL02AntlTtxyjRBdusO/136NX7jgRva+GCvsHXbDl0F9csFibShtUmePJk0alBXFqqJ0mbNnitlny8VWnVrX5cefaVUyecEE5Xt8N+ty4sWLiQV1SRvkRHNmjSUbdt3yv4Dh6RijXoCgfTajRs6Qxl2CMZqwnls3l4ntId/8cbNW+XCxUvSoWtvKVwwv2TMmEGuKHuJA8r7GGK8sWBwPh62f523UBfDzqFI4YKuqoQoe/jwUYgyFpAACUQtAszIjVrXg6MhARIgARIgARIgARIgARIgARIgAY8IQNA04uv6jVvkz5VrtMAHD1wIgXVr1wrWT7y4ceWLz4ZJieKOeV8g6EJkvHvvvrw1oJ90bN9G148TO3awdvaNqpUrWJsvNqwn8M71JNq0eElXW7tuo3gy6dnnn3yozw3CqRFxa9WoKuPGjAzhjxsraLx+sUIa3ZoJ0Ewd57H6+TlkkVhBS+f99u06tWrIgH69rSJkCSMzGeLyhG8eZ8fGchqHt9cJB4BdxZwZU6RV8yb6eJjEDtcXLCDiFsifV9q0bGaNxb5y585d+XnOPF3UsV1r+65Q1/fse5z5C8sMBgmQQNQj4Kf8aTwzqIl6Yw/XiOB3iyhevHi42rMRCZAACZAACZAACZAACZAACZBA1CDA73eiPWcx0RYmB3vw4KGkVgJghvTpJH78+G4vEmQAvHqPbE/Uh2WCp5OH7d6zVzp1e1X3/evMqZIjeza3x3He8b+PR+is3HatmwcTRE29GzduSo16DuFy/uzpAosBePzCkgGZxEnV5OdRIWBFcfLkaXnw8IHkypFDEidOFOawwNzb62Q6xYRnZ8+dl4uXLksSdSzYZaRIkdzsDrGct2CxfKSsMiD2/jj5WzXZXUiB27nRtevXpVb9plbxL9Mne+ytazXiCgmQQIQT8OzRWYQPgwcgARIgARIgARIgARIgARIgARIgARLwlgAE2IwZ0uuPp23RJpN6TR8fb+OH6bN0E2T1eiPiolGvbp3l0OEjsldll8LL1xOBESIzPlEpEikLC4ik3kR4rpPpP7bKOPaGw+49+/T43nztVY8Y4zg7djqsK7Bev05tirgAwSCBKEiAQm4UvCgcEgmQAAmQAAmQAAmQAAmQAAmQAAlEFQIHlfh67LiyYVi5VlatWaeH1b5tS6+Hlz5dWvlpygSv27GBdwTef+cN7xqo2vBJNtGty8tmlUsSIIEoRiBKCLkXL16Uf//9V7/KkTNnzjBf6bh69aocPXpUmXxfkSxZsgjawAOIQQIkQAIkQAIkQAIkQAIkQAIkQAIk4FsCs36ZK/MXLbU67aS8dDHRFyPmEHi1Z1fp/kpHgVewJ1YRMefMeSYkEL0IRKqQe+zYMVm6dKkcP37cojZs2DCJFy+ete28Mm/ePNmwYYNzsXTo0EGKFCkSopwFJEACJEACJEACJEACJEACJEACJEAC4SdQoVwZ7cmaPFkyeU5ZKhQvWjj8nYXSEr6+Hds7JudKljRpKDW5y9cEwD40X2VfH4/9kQAJhI9ApEx2dv78eZk5c6acO3cuxKhDE3IXLVoka9eu1W3Sp08v2bJlkz179ugZG1H4yiuvSP78+UP0aS+gGb6dBtdJgARIgARIgARIgARIgARIIPoS4Pe76HvtOHISIAESIAHvCcTyvsmTt4AtghFxM2fOLMWLFw+z0/v378u6dQ4vnnz58snAgQOlRYsWMmjQIEmQIIFu/8cff4TZDyuQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQQHQjECnWCphxMUeOHFK/fn293LZtm5gnqe4A7ty5U81qGaB3N2/e3Kr233//yd27d/X26dOn5dq1a5IyZUprP1dIgARIgARIgARIgARIgARIgARIgARIgARIgARIILoTiBQht2zZsoKPNwELBUSSJEmUN08KqyksGuyxb98+qVChgr2I6yRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiQQrQlEirVCeIjdvHlTN8uaNavVfMuWLYIs3GTKcD1WLMepmHpWJa6QAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQQDQnEG2E3H///VejTpQokV7eunVL5s2bp9fbtm0rpvzGjRvR/JJw+CRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiQQnEC0EXLhhYswgu3cuXPl4cOHUqpUKcmVK5ckTJhQ7zeCr97gDxIgARIgARIgARIgARIgARIgARIgARIgARIgARKIAQSijZBrrBMePXokhw8flt27d0v8+PGlSZMm+jKYidAwkRqDBEiABEiABEiABEiABEiABEiABEiABEiABEiABGISgWgj5GKSM8T169dlxowZer1Vq1ZazMXGnTt3dBn8chkkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkEJMIxIkuJ5M0aVIt4u7du1cPOV++fFKkSBFr+Hfv3tXrFHItJFwhARIgARIgARIgARIgARIggWeCABJ+GCRAAiRAAiQQ0wlEm4zcVKlSWdcCNgstW7a0ti9cuCDGWsFez6rAFRIgARIgARIgARIgARIgARIgARIgARIgARIgARKIxgSiTUZuiRIlxN/fX6OuUaOG2DNv//nnH+sSFCpUyFrnCgmQAAmQAAmQAAmQAAmQAAmQQMwnkCJFiph/kjxDEiABEiCBZ55ApGXk3r9/X27fvq0/xt8WV+PWrVtWOSY2M1GgQAHLD3fLli1y7949vQvZuMuXL9frBQsWlIQJE5omXJIACZAACZAACZAACZAACZAACZAACZAACZAACZBAjCDgF6giMs7k66+/llOnToV66GbNmknZsmWtOtu2bZOff/7Z2sZTV+OFFCdOHOnfv7+kT5/e2u9qxWT1Fi9e3NVulpEACZAACZAACZAACZAACZAACUQTAvx+F00uFIdJAiRAAiTgEwKRZq3g5+fn9QmUKlVK4I87e/ZsefjwoSXiJk+eXLp16ybp0qXzuk82IAESIAESIAESIAESIAESIAESIAESIAESIAESIIGoTiDSMnKfFMyVK1cEn8yZM0vixIk97o5PbD1GxYokQAIkQAIkQAIkQAIkQAIkEKUJ8PtdlL48HBwJkAAJkICPCURaRu6Tnkfq1KkFHwYJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJxHQCkTbZWUwHy/MjARIgARIgARIgARIgARIgARIgARIgARIgARIgAV8RoJDrK5LshwRIgARIgARIgARIgARIgARIgARIgARIgARIgAQiiACF3AgCy25JgARIgARIgARIgARIgARIgARIgARIgARIgARIwFcEKOT6iiT7IQESIAESIAESIAESIAESIAESIAESIAESIAESIIEIIkAhN4LAslsSIAESIAESIAESIAESIAESIAESIAESIAESIAES8BUBCrm+Isl+SIAESIAESIAESIAESIAESIAESIAESIAESIAESCCCCMSJoH7ZLQmQAAmQAAmQAAmQAAmQAAmQAAnECAIXrgfKqn8eyd9HAuTohUdy806g+Pl5dmqBgSLJEvpJrvSxpXTuWFK9SGxJn8LDxp4dgrVIgARIgASeEQIUcp+RC83TJAESIAESIAESIAESIAESIAES8J7A7hOPZOa6h7L92COJq75Bx1LvtSZJ6F0/jyRQDpx7KP+cEtl1Ira0qRRHimaP7V0nrE0CJEACJPDME6CQ+8zfAgRAAiRAAiRAAiRAAiRAAiRAAiTgigAycSHi+p98JPHjiYQ3jxbtYisBOJbqA33JOpF0yWOFKzP37t17smzFKj3cqpUqSPLkyVwN3SdlS//4Ux48fCjPlyohGTOk130eOnxU9h04KMmSJpFqVSr55DiuOtnpv1tOnj4jOXNkk6KFC7mq4rMyMD1z9qxcu35DnyfONRYUewYJkAAJRDECFHKj2AXhcEiABEiABEiABEiABEiABEiABKIGAdgpIBM3PCKuclQIERB0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NJI2bVrV19PNmA52gtwgARIgATcEfPeX2s0BWEwCJEACJEACJEACJEACJEACJEAC0ZFA9SKxZdeJ2OJ/8pHEUfqsXdrDetx48QWZnoGBAQLLBU9E3IePRErmjC3oOzIDAi4+EREQVJHx+iRx4eJF3Rz2DM4BkTVtmtT647wvPNvIOEaWr8n0DU8fbEMCJEACT4MAhdynQZnHIAESIAESIAESIAESIAESIAESiHYE0qfwkzbIml0nsv3YI0HSKpI+jaCLpZ/OwA1dlEUWLuwUHjx0iLjoE30zQhLYu/+AbN6yzbJMKFa0SMhKLCEBEiCBZ5QAhdxn9MLztEmABEiABEiABEiABEiABEiABMImUDR7bEmXPJas+ueR/H0kQI5eeCQ376gJ0DzUYWFmiInN8maMLaVzx9KZuBRx3XP/Yfos+XPlGl0BE5yVfb6k+8rcQwIkQALPGAEKuc/YBefpkgAJkAAJkAAJkAAJkAAJkAAJeEcAwiv8bFtX8q4da3tPoETxYrpRhXJlpHqVStq6wvte2IIESIAEYiYBCrkx87ryrEiABEiABEiABEiABEiABEiABEgg2hFo3eIlwYdBAiRAAiQQkkD4pnQM2Q9LSIAESIAESIAESIAESIAESIAESIAESIAESIAESIAEIogAhdwIAstuSYAESIAESIAESIAESIAESIAESIAESIAESIAESMBXBCjk+ook+yEBEiABEiABEiABEiABEiABEiABEiABEiABEiCBCCJAITeCwLJbEiABEiABEiABEiABEiABEiABEiABEiABEiABEvAVAQq5viLJfkiABEiABEiABEiABEiABEiABEiABEiABEiABEgggghQyI0gsOyWBEiABEiABEiABEiABEiABEiABEiABEiABEiABHxFgEKur0iyHxIgARIgARIgARIgARIgARIgARIgARIgARIgARKIIAIUciMILLslARIgARIgARIgARIgARIgARIgARIgARIgARIgAV8RoJDrK5LshwRIgARIgARIgARIgARIgARIgARIgARIgARIgAQiiECcCOqX3ZIACZAACZAACZAACZAACZAACZAACZBApBAICAiUwMAA8fOLJbFi+UXKGKLzQR89eiRXrl6Ta9euyYMHD6VI4YLR+XSi1Nhv3both48ek+TJkkqqVCklWdKkUWp8T3swAQEB6nc1kL+rHoJnRq6HoFiNBEiABEiABEiABEiABEiABEiABKI7AQgm9x88CPGJ7uflPP63Bg+VMpVry8Ilvzvvsrb/XLlGWrTrLB1e6SVXr123yp/1lUVLl0ndF1tIvcYtpW2nHtKxW59nHYlPz3//wUPSpUdfadamk1Sv01jade4hh48c9ekxIqOz8P4+/TRrjv5d/WzUV5Ex7Gh3TAq50e6SccAkQAIkQAIkQAIkQAIkQAIkQAIkED4CW/7eLuWr1gnxuXY95giZ23fuklVr1kmiRImkdo2qbkHVqFZF8uXNI3v2HZAhH34iyAyMSeG/e4+UqlBDbt++7fFpnb9wUYZ+9KkWtrNnyyJtWzWTvr26edw+tIqvvj5Ij2fegsWhVYvx+zJlzCDdunSQJo3q63t0/4FDMnxk9Bcxw/v7VL9OLX3N5/y2UA4djv6CdkTfwBRyI5ow+ycBEiABEiABEiABEiABEiABEiCBKEIgebJk8nypEvpTuGB+a1QqUTdKBYTYQe99IFOnz/R6XF99PV63adm0sRbK3HUAy4Wh774pJYoXlY2bt8oP02e5qxoty40wDZsJT2Pf/oNW1WmTxsvA/n2k08ttrLInWbl7965u/vDhoyfpJtq3zZghvfTs2knef+cN+WjoO/p8/Hf9Iw8fPozW5xbe36fUqVNJowZ19bl/8+2kaM3gaQyeQu7ToMxjkAAJkAAJkAAJkAAJkAAJkAAJkEAUIFAgf1759utR+jNy+AdRYESuh3D8xEnBq9oQuLyJf/bs0xm2aNPspUZhNo0XL56M+vQjyZwpo0BE2um/O8w20aECMmvXbdikh7p85Wp9XvBmDSsuXrqsq+TNk0uSJEkcVnXuf0ICeXPnsnq4cuWqtR5dV8L7+9SmxUv6lHHPnjx1Orqe/lMZNyc7eyqYeRASIAESIAESIAESIAESIAESIAESIIGIJjB3/iJ9iFrKUgGvsHsSyZMnk/FjPldZuX/L7Tt3PGmi61y+ckXOnb8guXLkkMSJE3nU7u7de3LoyBFJlzatpE+X1qM23lQ6ePiITJ46XYvgpt2wT0eZVXm9b09p36alte28EhDgyJaFLQUj4gkkiB/fOgi8qyMywnvvwXokYYIEkitndo+GF57fp/z58urM+B3qQcr8hUulb2/f2Hl4NOBoVolCbjS7YBwuCZAACZAACZAACZAACZAACZAACRgCyLzcqbJWL6glvFCzZcsqOXNkk/zK+zV27Nimmk+WeEV/34GDcuToMTlz9pxkUVmshZQ9Q+5cOd32j3GdPH1GIO7ky5Nb7ty5Kzv8d8lulTmbLGkSKVO6pNUeEz5du35D93UiKCsPWYpbt+0I1n+RQgUlYcIEwcrMxl/rN+rVGtUqmyKPlsjIbe5BBq+9s6V/rJCvvvlWxo0eKWWfL2Xf5XYd59ip26vStfPL0qtbZ7f1wrMDrF7p2V/fBxDd4P/7+7IVSrztJadOn5YlaryGb3j6N20ePXok8CFGFC9aWHAPYvuSyuZFxvdzyqoiaZIkprrL5f3792WvEghx78aJE1uKFims+3JZWRXCO/X6jRuSNUtmyZA+nVy9ek22bt8hR48elwzKqqBqpQqSKlVKqzkm9TukWMN/9uLFS7o8p2KSR92r2dXvSGhx5Nhx2a38hc+rdnHU71Aa9ep/kcIFJY8te9a5PUTSPXv3yWE1nhtqnLly5ZBi6pzSpU3jXDXStsN772EywKKFC8nUid94PPbw/D69UKu6+tuwW9au3+CRkIv7Dn+HTDxXrIjP/+aZvqPSkkJuVLoaHAsJkAAJkAAJkAAJkAAJkAAJkAAJeEjgrXf/JytWr3VZGz64wz98X1KlTOFyv7eFyD7937AR2kvWuW3H9q2VKNlF4sYNKTEsW7Fai53lyz4vL7dtKb37v+ncXL6f8LUW8cZ/N0VW/7U+2H5kA/bsOzBY2YypEwQZfM5x48ZNPUkXyrNkzuy8O8Zvr1m3wZrY7IeJY+XAoSNayG3auIH2Cn69b2+5cjX01/fv3bsfJqf//rtlXZMer3SUCZN/CNYGmcbffDnCbQbnv//9J1179bcsMEzj7qov9Ocqvh7/nazfuEULfA8fPJTxE6cEqzZMRsmmNcv0PYiHBS82b2vdC8Eqqo32bVroCdzixAl5v4788muZNfs35yZ6GxOUwdvWOfbs3S/vDPkomKho6gwb+q7UC5rMy5S5W967d8/drmeiPEvmTPo8jx47of2CXV0fO4jFS5fJuO++t4pWLp2nHxhZBTF0JeRdG0NPlKdFAiRAAiRAAiRAAiRAAiRAAiRAAjGJwJlzjmy0BnVr62zBlCmS61f9f5w5W2exdu3VT+bMmCqxYj3Z9DiwG2jToZsWxvDKfWvlZ5lZ2RbsP3hYZs+drycJi6tEsV7du7jFe1RlOb7xzlC9v3bNaqp9RpUlekYL0cjORNSvV1tlZhbS65u2/K3PAZl9TRs31GXmR1plS+Aqjp88ZRUjW9iXAUF59NgJ8uZrrwr8Y93Fhk1b5FslMo4Z9anEixdXCddvqcnCWku1KpXcNRH4AX/+1ViBIA4BPrxx5ozjfihV8jmXk7wlSBBfewGH1v+Wbdv17iQeWkVAxM2eLYs0adRAi28zf/lVLqhM1o7d+sjyRb8KjukcZkKrTu3byIOHD+S3BUu0AP2d6gv3shH0nNthe7l6MIAsW4jF5cqUlqRJk+pMWGRyBgYG6CbIGL567bp+iIEsT2TgxlcWBnv3H5A5cxfIdPX7cVeJpu+88VqwQ8CP2Yi4sOZAhmfChAnl2PGTAssOV0IrxtKha2/dD+7VZk0aKZuNxILMcPi9vvfBcEmpHqZgrK4iqcpKN7Fz155Qs35NPU+WyM4Pz703+H8f68z5Nq2aSby4cV0e6ua//+p7PHWqVPJKp/Yu64Sn0H7dkWkbVuZ0eI4RE9pQyI0JV5HnQAIkQAIkQAIkQAIkQAIkQAIk8MwRwKv5xdSr7cmUmGWP4kqAQubriZOn9SvvpZWw9yQx7aefLRF31rSJwcRAWCt88PEImaR8WV9sWC/YPvsxIe5B8Pv6i+DtTyjx1fjL1qxWxWqCV+NhqZBbvaLe6eU2VnloK+gLAbEZVg6+jJWr1sq27TuldYeu0q51c0F2pj3glTtq9FhZtWadLt60dZskTpRQWUjslYFvD5GK5cvIG0oEtgcE8u9/+EmmTJuhizNnyvBEQm7WLI6MRozTsLAfL6z102fOyuYt23S1QgULhFVd70fG9+Rvx0jKFI7MbwinjVu018Ls0mV/yksvNnDZz6xpkyxBHDYTDV5qo9usXbdR2ioR0V1AOIXIOnTwW5JIiawmIOSaDE6Ix6M+/VAqVShnlaFeY3V/YpwTv5+mBd3+fXoE62Pq9Jm6u7JlSslnwxwPHUz/fXp0kUuXr5hNvcQ9OkJl8CIgno/5/BNLuIZNx9Bhn8miJX/IiC/GuH2ggsnBYIOBLNTfFa9G9V/QorPu9Al+bNvh7/W9B+EU/GHHMX/REhk0sH8wyxBYqyxeqs7ny2/0tYJw3blD2yd+UGROExYZJo6fOEUh18BwWlLIdQLCTRIgARIgARIgARIgARIgARIgARKIDgQgVLkKCLcQM5GVBx/JJwmIVRC+EJgoC+KNPeq+UFNGBgk7fysB0Xm/vS6EIef9vsy6Q2YrImf20D1Q7WPydB2TL5UqWVzGjPtOfpo1R2eR5s6ZQzf/4adZlgAKC4l+fbrrrEbsnDNjioydMFkLvOs3dhDsRyBbc+68hVogh8DdT4mK8Hl9kqii2idKNF5f96atO1qs4flauGBBJbj5hege41iqhDuIlBCAEdUqVwxVTLV30qr5S5aIi3JkVTZqUFcWLv5dlq9c7VLIhRBrz2rGg4jK6l7+48+VOpvX3r+rdWTS2kVc1CmhfHlNQNB1lwFdq3oV636Gz26izI/F4LhxHBmoZmn6wxKCq/O9e/DQYUEWL2LQwH6WiKsL1A8I/hBy8UAF2efu7vX/DR4k//v4M+0P27BpG+3Hi99f/L6lSZ3adOfVsnLF8l7fe35+frLo1xkCQRsPb/AwCNcKgXuoS4++WhzG2Ab06609pZ80299+UsgARqY1Hvrgd7lq5dB/H5DpjN8dE772BDf9RrUlhdyodkU4HhIgARIgARIgARIgARIgARIgARLwkMDBw0e0WAShCFmheK0cAREXAT/TJwl7FuJ45Uf5y6/zQnRnjoXJlNwFxB9PJwRz10dY5RDbEPcfPAirarj2VyhXRr8i/8fylfL1+Ila1EJHyGLFJF+vvdozREZtzhzZ5fNPPhR/NXkWrBk2bt6qj43MUmSzvv/OGyoLs45PJmnCZF/fffOFDPnoE53haSaCwuRq4P9Kx3bSVomL9lfmIZghA9MERFxkyDpneZv9zktjhWEvxwRoEHJPnz5rL7bWMeGYc6RJk0oX3bh503lXsG0IiymUhUhYgezRDZs2y+q16/XDjAsXQz7QuHUr+O9GnRdqaKsPiNtvvDNEqletLEUKFdATrLkSLCHQmhg8dJhZdblExq07IRf3TkdlM/GDElBRD1mxiG7qOoRXyEX78Nx7yGRHpnLLZk209zGuIwK/48guRwZuh3atPL4/dGMvfjwI+t2FFUZYAcsVZ9uVsNrEhP0UcmPCVeQ5kAAJkAAJkAAJkAAJkAAJkAAJPHME8Cr/jJ9/DXbeEOzscffeXfum1+tGDERD+I7i4y6M162r/dmyRvzkYzlzZNOHPnT4qEDIc5WB6mps3pRB0MuTO5dkyZI5WPZoATX5mjuhDv1nVfULKsHOZHCiLJ3KPsybJ7dPRFz0hyhYIJ/8/ONk2bf/oCxU2aDwMEZAiIP4vH2nv3w18hOLTfOXGkud2jXl4qXL6l6ao0Xd1WrCuW+/HhVClNYdOf1IlTKlU4ko31qH7yvuHVfXwZUQa2wRAoIeRIToNKggSyaHfYS7/SiHZcWrrw8KxhrlIX837qPYikrly+oM1D9XrtEZ1MYmA5m4vXu8IrWViGzP+sTDExO450KLe0E+0K7q4Pf45zmOBySv9+2lbTiSJEkiqZUw74sIz72HY+OeNkIuxgF+KEuS+LGvry/GZ/rAdTN/X3JEQFa9OU50X1LIje5XkOMnARIgARIgARIgARIgARIgARJ45gis37jFEnGRIdeiaWPJkD6d5VfZpWe/EEJWeCCZLFe0nffLj1qQDE8/vvasdTWGHMrj08SVq1clbZrwvZZu+nBewqbi20lTLXELGbUQnvA6+LyFS/Snq5r8qX3blpJUCXEIiFMzldg+TmUzI8yr42irJ8p6pZdg8rc+SiiE4OaLgNhcWGWSIjMZQu7i32bJkt+Xa4sH3DfIOK1Sqbw+FPxk8QGrD99/W2eDQvRdrOp7MvHaw4cPQw458HGRels/RPiJi8IQtVwXGJHY9V5H6WTl12wE8/ffHqgza5MlSyqwDsCEZRWq13PZHFmg8MaFKPv78hWy9e/tgknuIEgj4/bQoSMCiw0TJmsU13L54rmm2KslhG4j4jZpVF/at2nhVfvQKofn3gsICJBlakK5MSp73Pha2zOPB733gc4+h+D8pN7bzmM/qzibCO2hiKnzrC5jPasnzvMmARIgARIgARIgARIgARIgARIggehK4K/1jtevMYkWXoXOlDGDJeLinKwMQZuo5nyufkrwM3FHCY6uwkyghX0mW85VvbDKYvk9PlZYdcO7P1vWx0LuGTVxly8DYluDl1prERd+rL9Mn6xeMW+tD4GJt8aNHqn9OjHpW/0mrdVr/Vu052nj5u20iAsB98sRH8tnHzsm0WrapJH89vM07Zm7XAlnTVq+rCc+8+WYTV/JVIYsJoyD4IjYf+Cg2RVsiWzT+nVq6rKz584H2+du4/KV4BOAod7lK1d1dfiXQjz1aXjQHXgi+vXuLk3UZGt4iGDG4YlnNPx7+/bqJtMmj9c+s5j8DLFg8VKVYRyg1/HD+LPi98JYmlg7PVy5fuOGVbOGbbI/qzCcK5j8zdt774q6bm07ddeiNURcePT+/KPjAUTRwoXUA4GZ2jsZDyB6vDpA+r/xbjAe4Ryq1ey0TchNny6dVe5uBaI8rqf5hPcauOs/qpZH/F/SqHrmHBcJkAAJkAAJkAAJkAAJkAAJkAAJRFMCt245PHATJnw8WZM5FUw6ZnxrTZmrZcoUDmEP+/AqvquAV6oRAP9QWYpPK5IkSawPBXHJ00iYMIHOeEX94ydPedrMo3rIdgaHjz94TyaO+0pyO/m8wv93lrI0gHiIwKRfeCX/7r370uOVjjJ31jSdBWvPRs2WNYt88+Vn2kMXQm+GDGGLV6ENNrRrbhcgjajpqq8c2bPpYpeZti4aILvXOdau36CLcmbP7rzrqWxfu+4QRxMlCvm7sezPVV6NAT6z3Tp30G0g2NrtFLDPxKq168yqV8tAmzDsS/uR8Nx7mDwMYn6dWjVk6fxfVHZwS4kb9/GL/PhbMLB/H5k5baIUL1ZE+femCvbwyKsTd1H5+PGTurRwwfyW9YeLalYRLEDwcMV8DqjJ556FoJD7LFxlniMJkAAJkAAJkAAJkAAJkAAJkECMImCyAeHnac+ehNA0fMQXHp0rRBpkHyJ+Ua/gn3Ajfr7er5eug6zUJX8s1+vmR2BgoPJd3SWD//ex3Pz3X1P8xMuMGdLrPvBqO8TCBw9cvMLv4ij16tTSpQuCJmlyUSVcRVUrV5CFv86UurVrWNmdzh1hErGO7VvL8kW/CkTadGnT6PXuSsiFfYG7qF61kratqFvbMXZ39cIqnzD5B+naq7/APsGenQhhc8q0GVZGNSZt81XM+W2hnsjN9AdxDZO/IV5q3MAUP9UlfIIRsLu4e/eedexNW/7W1hhWgdPKxO+nyeat24JlmcL6AJPbISDk2zNFIdbDDgHxxehxsmfvfr1ufsDa4o8/V8onI780RU9tGZ57D5Yck8ePkeEfvqfvXXeDzad8nSeNGy1vDejrrorX5eA8d/4i3a52zepet3+WGjyW1p+ls+a5kgAJkAAJkAAJkAAJkAAJkAAJkEA0JlBHCYrjJ07RZ9CoWVspVfI5SRA/nhbxUIiJiULL0DSn3rNrJxn49hDZprJ4m7buaGXffqD8Uo3gB4Hxj+WrtKD6/gefyKQpP0qunDkEk5shk9dYLuBVbF9F6ZIlLD9ZvMKN88mcKYPuHj6m7jw0IaxN/XGm9kjdu/+AFCqQ31dDClWMtR/ELtra1+11nNftXsTO+7zZxiv1Owa+rZuYyb1eVPYOJnC94Z/rLhImSKB3Xb/uflI757ZdevTV9x8mKsPxEXgVv6KaPCwyolmThvp+hgVAxRr1pFrlinJNWRjANxcPQOyer/bxrVi9Vgu9EGwhBiPbfcOmrdbvER5oOF9PeBtv3LxV+8l26NpbkE2aUdmcIJP8gPLUxe+geehiP5ZZv6X2m7BPpGbKnmTpPFZ3fdnvPU/bYCJB4xHsrl9vyjdt2aq9iNGmQb0XPGpqf1jhUYMYUokZuTHkQvI0SIAESIAESIAESIAESIAESIAEnh0CmBhr7FcjLCsBCLHIxMQr+pPHj5aSzxXTMJBlF1pUq1JJRn36oRbeUA+iLD72DFiINvB3ffuN/lpQhRC2as06fTzUxTHxGrar2ezNa/zow5uAoAQLA/QLYQ2CGHx/8bl//4HbrsAFGa4IM4mU28pPuKNcmdLynppMy/6KfVhdZs6cUbdBhq+vo3uXjtqDt0Hd2jrT2gj54Ne188t60rNuXRw2Ae6OnTZtWr0L1/jc+Qvuqlnln3/yob4+uP+MiFurRlUZN2ZkiMzlWOq1fYSfi3vBWE6YOtYBglb8gjyWPfFahjXAgH69rS6QJQwRF+LyhG8eZ8c635MQnsEK9zR+l5DtDoYQxCHYusqYTpUqpfbRbdW8iT4eMsjRDizQtkD+vNKmZTNrLM4r23b4W0XIoo3ICO+9N+TdN6Vzh7YROTSZNXuu7v8l5WmMa+BJHDh4xKqGNrly5LC2Y/KKn3oNIjAmn6Dzufn7O35Jihcv7ryL2yRAAiRAAiRAAiRAAiRAAiRAAtGIAL/fiRZcT585I9dv3BRMTJYmdeoIv4KXLl8RzDAfK3YsSZcmjaRTQq4RbCP84B4cABYRyC5G/L5gtqRNE/FMPBjWU68CcbW7mpRqzbKFYjyHwxoE7DEavNRGi5Coi0xv8Pv4f4OtpjfUvVajnkO4nD97uvYDhqUHBNBcObNL0iRJrLqRuXJbTeB3UgnSDx4+0CJf4sSJwhwOJDJMnoVJ3PAwI7USauGP7En2KTJEYXNy8dJl9VAjkXrAkU5SpEge4phHj52Qsd9OkvMXL6qJ5w7p/VUqldcPS0JUfgYKjp84Kc3adNJn6s3va4t2nQUsEe++9bo0UxMIPgtBa4Vn4SrzHEmABEiABEiABEiABEiABEiABGIkAfjcepMR6gsIEPaisjgK2wVYCCATc/tOfz15ky/OO9r14efn9ZAxodWYUZ9o2w7YZkAMRtiFXFedIhMan6gUiZQ1AjJivQk8kIA/s/Fo9qYtrBE84XBN2Vbg3kQg27d+nZoqYzr0TGlvxhHd6v693V9fp4bKUsHTvytXr16zRFy8EdCoQd3odtrhHi+F3HCjY0MSIAESIAESIAESIAESIAESIAESIIGoSAAWAmHZCETFcftyTCZL2iw97btE8aLy3TeOCfMwWRi8kBm+I/BcsSKyYslvOks6ThzKcs1faiT4eBP+u/dY1Xt16yzx4sa1tmP6Cu+YmH6FeX4kQAIkQAIkQAIkQAIkQAIkQAIkQALPHIH8efPItMnj1aRdjgnMwgMAXsWeToAVnv6fxTbI3HVlufAssgjvOVeuWE5WL1ugmydOlDi83UTLdnGMp1C0HP0TDPpZPe8nQMamJEACJEACJEACJEACJEACJEACJEAC0YQAPGELF8zv89HCL7Zj+9a6X1gxMEjgaRNAJnNU8WJ+2ufut3PnzmdqsrOnDZjHIwESIAESIAESIAESIAESIAESiFgCnMw6YvmydxIgARIggahBIE7u3Lmjxkg4ChIgARIgARIgARIgARIgARIgARLwgsCRI0e8qM2qJEACJEACJBC9CcSK3sPn6EmABEiABEiABEiABEiABEiABEiABEiABEiABEgg5hOgkBvzrzHPkARIgARIgARIgARIgARIgARIgARIgARIgARIIJoToJAbzS8gh08CJEACJEACJEACJEACJEACJEACJEACJEACJBDzCVDIjfnXmGdIAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiQQzQlQyI3mF5DDJwESIAESIAESIAESIAESIAESIAESIAESIAESiPkEKOTG/GvMMyQBEiABEiABEiABEiABEiABEiABEiABEiABEojmBCjkRvMLyOGTAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAnEfAJxYv4p8gxJgARIgARIgARIgARIgARIgARiMgF/f/+YfHo8NxIgARIgARLQBJiRyxuBBEiABEiABEiABEiABEiABEiABEiABEiABEiABKI4AWbkRvELxOGRAAmQAAmQAAmQAAmQAAmQAAmETiB3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"/><use stroke="#7E7C7B" xlink:href="#rect-1"/></g><text id="here's-the-list" fill="#C06334" font-family="OpenSans-Bold, Open Sans" font-size="18" font-weight="bold"><tspan x="310" y="106">here's the list</tspan></text><text id="breakpoints" fill="#C06334" font-family="OpenSans-Bold, Open Sans" font-size="18" font-weight="bold"><tspan x="127" y="130">breakpoints</tspan></text><path id="Line-2" fill="#C06334" fill-rule="nonzero" d="M421.013 114.435l1.276.79 39.263 24.271 4.207-6.804 11.166 18.07-21.156-1.91 4.205-6.804-39.263-24.272-1.276-.789 1.578-2.552zM119.02 129.64l.84 2.88-1.44.42-61.239 17.828 2.237 7.682-20.898-3.81 15.587-14.433 2.236 7.681 61.238-17.828 1.44-.42z"/><path id="Line-2-Copy" fill="#C06334" fill-rule="nonzero" d="M58.797 100.63l-1.299 7.894 60.746 9.996 1.48.243-.487 2.96-1.48-.243-60.747-9.996-1.298 7.894-17.205-12.46 20.29-6.288z"/></g></g></svg> \ No newline at end of file +<<<<<<< HEAD +<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="697" height="244" viewBox="0 0 697 244"><defs><style>@import url(https://fonts.googleapis.com/css?family=Open+Sans:bold,italic,bolditalic%7CPT+Mono);@font-face{font-family:'PT Mono';font-weight:700;font-style:normal;src:local('PT MonoBold'),url(/font/PTMonoBold.woff2) format('woff2'),url(/font/PTMonoBold.woff) format('woff'),url(/font/PTMonoBold.ttf) format('truetype')}</style></defs><defs><path id="rect-1" d="M0 0h697v244H0z"/></defs><g id="debugging" fill="none" fill-rule="evenodd" stroke="none" stroke-width="1"><g id="chrome-sources-breakpoint.svg"><g id="Bitmap"><image width="697" height="244" xlink:href="data:image/png;base64,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IAIiIAIiIAIiIAIiIAIiIAIiIAIiUOYEJOSW+QlS8URABERABERABERABERABERABERABERABERABERAQq7agAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiUOQEJuWV+glQ8ERABERABERABERABERABERABERABERABERABEWgtBPkRePfdd93MmTPdU089ld+B9cTu27ev23PPPR2/pQjTpk3zyQ4aNKgUyStNERABERABERABERABERABERABERABERCBJiIg3aeJwDdytrLIzRP4k08+WXQRlyKYQJxncRRdBERABERABERABERABERABERABERABERABESgGRCQRW6eJxnBlXDppZfmeWT26BdeeKEXiLHKVRABERABERABERABERABERABERABERABERABERCBkIAsckMaWhYBERABERABERABERABERABERABERABERABERCBMiRQVIvcYrsdMH+xJ510UhmiU5FEQAREQAREQAREQAREQAREQAREQAREQAREQASSCJhOiL5n34ZKiqdtuRMompB70003eT+vuWddf0xzY8CJl8uB+nkphgiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAg0NQETcSkH+p5pfNL3CjszRRNy7YTId2xhJ6Q5Hv3000+7VatW5Vz1XXbZxa277rpu8uTJ7tNPP3WbbrqpGzRoUM7HK2L1E1i+fLmbMWOGmzlzpv+lnXTp0sVtvPHGbuTIkW7w4MHVD2FtDZ955hm3cuVKN3z4cLfRRhs1m3pnqui8efPc2LFj3axZs9yHH37o+5JNNtnE9evXz+2zzz5u/fXXz3SotlcpgdWrV0cfMe3UqZPbbrvtstb0gw8+cHwRuG3btm7nnXfOGread3INvfPOO659+/Zu1KhR1VzVqG7ZxistWrRwG264oevevbu/17DeWIHxEG1y4cKFbsCAAY5xkoIINJRA2M65N/JXX2Dc9eyzz0bRtthiC38dRBu0ULUE7J5IBbG069+/f9nUdf78+W7ixIm+PDZ/ZOW5555zy5YtK7uxcabylg1QFUQEGkDgqaeeqnMU2ypNyMVwlTKb14A6lcqwAZ0UMbvYXgaKJuRmKLc2i0BWAkyg77rrrqxx4ju33357L778+9//du+9956fQDZXIReB7j//+Y9HtM0227gNNtggjqvZrb///vvud7/7nVu8eHGtus+dO9dPdBE2Ee5OPPFE16tXr1pxqnHlzjvv9NXq2LFjsxZy16xZ47gB//3vf69zml955RW/7cYbb3Rnnnmm23vvvevE0YbqJbBixQr3j3/8I6pgu3bt3NChQ6P1+AITQPqRNm3aFCzk0i9NmjTJZ1FpA1rK/cgjjzjE7+Yg5OYzXunatav73ve+l5MAFm9f+a7/85//9A+n7DhEFQm5RkO/DSEQjst79OjhLrnkknqTQSwL+1H6Rx6eK1Q/AcZVZtCFwcD/+3//r2wqjSGHtcsddtjBzx8p3G233ebL2BRj42xzt0zlLRugKogIFIlAvmJokbJtcDLmfYBfBNlcy0/fyDEEO7bBhYgdKCE3BkSrTUdgnXXW8dYs9ZWgVatW9UVpNvu/+uord8899/j69uzZs9kLuf/9739rCXWdO3d2m2++uYPN559/7p/KL1261H300Ufusssuc2PGjHFMuBWqn8Bf//rXqG1069bNW98yyVy0aJF74403vCXRkiVLHG+VMBEZMWJE9UNRDRMJMND69a9/7YXaxAhF3MiDJ+vD99hjD9eYVpxFrEazSyo+XuFBEdaw3F8ICPSXX365+9WvfuW4D5UqYAWJlQeBfLbaaitvIV2q/JRu8yMwe/Zsxx+CbraAFa9C8yPAW04m4lJ7hEgeJvG2pEIyAc3dkrnku/Vf//qXP+TAAw9MPLS+/YkHaWNJCDC+jVvl5iqElqRAeSbKvCDs50yQra8OoYhLlrZeLMtcCbl5nkhFLx2BnXbayR111FGly0ApVzWBjz/+OBLqWrZs6U499dQ6Yhzt66GHHnKPPvqowwrv6quv9sJdVYNR5bzAcuutt3oS2267rRdXcM9i4cgjj3RvvfWWO/300/2mK664IrLWsDj6bT4EsObHyvGYY45pPpVWTfMikGm8gph7xx13OKz8seC9++67/b0or8TziIz7IPIhnHbaaa537955HK2oIpAbAR6Sf+tb38oY+bPPPvOuijJG0I6qJWBvBfJwi8DYGsHm+OOPL+s6n3DCCb7vHDhwYFmVkzcGjzvuOP9Ql7eDFJIJINKaUEuMuJhb3/7kVLW1VATsjTMTcxF2bVup8ixmupQV8TYM9Ym5JtqGx7BczHpLyI3TXbsOfAbI1uDi0S688MJam1DkOTH1KfO1DtKKCIhA0QiYCwESPP/88xMntAi8hxxyiGPS8dJLL3mrKQRgLHYVqpfAlClTosode+yx0at10cbUAq/Sn3LKKe6GG27w1iT4KeOVcYXmSQDhYscdd2yUV+ObJ+HqrHWHDh3cySef7O9B9CH4EC5lwBLYAr55FUSgmAQYM/GgAHcy3/zmNzO+MUB/SbD4xSyD0ipfAvQ/du55uEVbYX3ChAnu6KOPdibulmMNuL+XY+A7DbBUyJ2ACbpxMddSqG+/xdNvaQmgkxVTxCxtaWunjr6HFW2uYm4mETcflwy1S5C8JiE3mYt/VY2TkGsw4VdCbq7EShuPwcTjjz/uXn/9dcerq61bt3ZDhgxxw4YNc6NHj641GB03bpz/cBqvUuN/F9+7U6dO9a8H8Qr2lltu6Q4//HA/QOVDDvgBQ+Qn2CvamfwDIhb+73//86b0vErDByP4AAQfyAmftGIB9uc//9mniSUp+XPc22+/7Xh1kny+9rWvub322suXnVeZeFUcP0sWeD2XSSQWOZSXwETyiSeecC+//LJfZhtxYMGHnapFwOR8TJ8+neo5LC7rs0r6xje+4YVc4jPgPOyww1iMAueYc8d1jYUV7he4tnfdddc6H3HgAzMPP/ywdwuCBQLtjg/PWP/B62WIx0k+N1999VXf1/DRLV7JxaecnWvOd5IbEfxC84CJ9BGk7ZzjIzlTO4wqFlvg9TfKy4fhvvzyS98eaJ8McKvJt92cOXOimmd7dZ16Y63NxxdhExdyaWePPfaYvz4RaGDEh/M4Lv7RK1w2XHXVVT5fhJ0knvjk/eSTTxzt0T6w9fvf/95fq9/97ne9qxTOD22RV1vNqphEaQMvvviie/PNNx39Aelz7phsJ73SSJ1op6RFv7jeeuv5PPn4H/40mYCHgfbA4Jc+j/ZJIA+uLwbL1epfmnMBc+4hiPq//OUv/f0jZFPfci79Pv5leSUezhZoL7RPrn1cwXBuuU98//vftyj+l/Zsvp6Ja23HIjGRpgwmKtp22gD3A+4v9CPcW2gr9G3UO+5jnWuBhyD0K7Rx/ALTt3Ffwi1NtkCbpIzco+jHaM/4ImwOgWsJlz6cA+4ftKXw+sqn36WPIA3eGoAf54Drl76fc8evhWuuuca3Ve5T3A8s5HPPoD3efPPN/tCf/OQnjgediHjk2adPHy/OhGMV3mQYP358JFjzkaP999/ff3AN9xL4UKYNka75nj700EPruJuAEfdd+jXaN/dDRCD6YOpywAEH1HoAd8stt7gvvvjCHXzwwT4e1xL3YrZxDB/3pC/knhoPtHvaNvE5F1wXfKSOY7gOktop54CxIW2fPptrhf6WsjGeqtaAT1HGojCjP2IMHQ+IefaRM/qJ559/Ph4lWs+HYynH5vmM8XC9RL/JePnb3/627wO597KdNkCd6ON+8IMfJN4r6G+5Dgh8myHez0ZwKnCBNmHuZBgDcR1z/7HrmflWPOB/mX6FtsLDJ9jOSn04k/kKbq3oQ5ifxB9M0a5eeOEFPw6hj3nggQeijxlzzXMc+XFOcgnXXnuttx5mPEN/HQbOGW2aMR/3YvouXIvsu+++vp8I47KMWy4sk7lW6Ou4Xui/OIb+mPs0IZe5G2zMRzXzwfgHePNpu4XMT3yBy/g/E21NpLVf226/tt1+bXsZV01FK1MCuYq5zM/jgi9VKraIS5plL+Tir7Apgokw+eTNALRSnzTkU89yj8uNkgkNwocFXvXhVUf+GHxheWeCDgMIbnZMOBncMyizwISCPxNMmUSFgRsuEwqE2PDckx+iCxO5MJAPf6Rz0UUXRWIu8dlOGDt2bDTos2MpA6/6MulgIMjAyeJbHMpCYABBYILHBwds3W9M/cdgCfGSgeh5553nJ2e2r1J/GXRZYMJXX0CE+tOf/lRngg0rzicCaxjw+cUfg0gGAWEeDPI4Fwz0EH7sw1l2PJNoxDle42LgagHh3Xwb2jbyRzTDuph2ysTA2ilxaJ8MXsPA+URc4Y/2xo2ibdu2YZTEZdoZbSoM5M0f+zJZNYfxK2U5fHWOm+vPf/5zL5jHy89N2j6AEd/34IMPelcc4XYEcP4QSPfbbz/3ox/9KGJvrxcSP5PLGHwKct2G/ngREZkUMFHB9Ye1J3vowrWP4Mc5CoOVBdchfJiGyYMFBBUEyddee802ecGDOvHHgwbKbmIT/c0Pf/jDWiIRB1oeDIiZBDFxqrbAhPA73/mO+9vf/hYxsgdj9dU1n36f/iTeh9vDKLgiQNl++nIe8FhAVLN9iChxIZe2Qfr4S7VAGtwX2R4G+if+mCRzX0TMskAe/NFfMrEM73+hJajFt1/ywDesTfDpx5LEMYtfjb9cwwSuKbuuWM+33+X6RxTh/NF32X0e1zDWBkiXwPVJ4OGShXzvGTyAsnTJE1/ytGsCwnE4Vrn//vsjazzLD2EXsZOHD4jQ4fiDsRX3UO5ttA+7T9GW/vjHP3qx2NLhl7zou+gTEYwYM9n9kGuAcReiBgIKjCxwT0SEsXxC/owL+Rgqgm8YyIcxPG2cfHi92QLjC8oX1oX7PnnwhwuWav24XJcuXfwYkXEynJOEXNqLXetwyCTk5suxFGPzhozxEO6pI+2KeyhjRwv00zbOZwy29dZb267o1x4y8GCtmkRcKmhjWPxz2wNk7qGwYl+SkEsfwRiDsSbXcBi4PvlDEI27R2P+w3mgf7GHC3Ys1zPngT/GYgcddFDUV1ic+C/9AyF8CE9fxJiIfjMMlJP+9Q9/+IO/3zLOtsA+xlzUOQz0X5T59ttv9/U94ogjcpq7kZ71wTxkstCQttvQ+YnlWe6/JsqaSGu/tt1+bbv92vZyr5/KV34E6hNzKXFjibjkVfZCLoVUaB4EuOmFA+WkWmNZm2SlGMa97rrrIhGXmzlPZ5lUMajgxs3EiElpXFyxSdBuu+3mrSy4oWNRxICDwT0By0xuxkyqmfxyg2YCwc0hFHIR22xwh0UDr8lQdvLGyoCbKxOkpC+78uQeaznyYQLN5J4n1jYJ4gbEk2omD9zwTdhjAM3kA8sSAtuNJ0INYhF1YrDJPsqNWPF///d/Pn4l/2eTWyZsSZaPSXWLT7CJgz9DE3FhTPuxc43oCU/ONe0gbv3KueD8cs4QehEuWGdyCGu+mmtCLoNOGwAz+MUimAkTk0kmxwz+mKgy8TFrH9qTnWue9NM+uKFwDOIdg1+OwT8jYn+2wKTYRFzyp00xEOcauPfee/0EmvZZ6g/1ZCtjMfchjGFNxsSQ9o+lFtbtXJtYSiOSmkCQlC/iA6IqAU740h0wYIAXxRDdmdxx3SLmI1oVIyA20A6wxqCtmUU3AwQTcemrsFyh7WB1f99993nB5+KLL/btwMRfzqOJuD/+8Y+9WEefiACNhTHtiskXVpMErgNEHMKZZ54Z9Ye0ZzhwLJNZfAlXY6C/xgoRaxz6XtoJ13V9AY659vtYQnMdM2GDKwFrL9ohb27QlugLCLTZ8P7CRNgCluH069Z+EeJMrOUNEwL7Ef+57xAQeLlfIKRxT6Ttcv9lksrD8/gHIHnwR/9G4Dqiz8gkSNAX095Ijz727LPP9teKP7iZ/Me1Y+coFOAL6Xe5V3MOYGof8MTaiw932qvN3BNoU/RNhELvGVdeeaU/j7RF+tDQypf0yZd+g/sXYw/aEtcA555xGGHvvff24hZtEItWuFAPymYCCha93LsI3O94MMG9bcGCBb5PY6yF6ENd49ehfWCLexjHcj+kf6Tv5D6L4GOvKXMfps+yh/VYydnDDvpPykEcPlJHP8c1RVwexLKdcRn3js0228yPC7lXck0xTuR+b2n5ilTRf9xnbk0ZJtAPLVu2LBLgrYo2PqYNYFGZFArhWMyxeSFjPIxEzBqdetIO6EcxiqDNI+rHhVzexDPBEI7VFDin1s/BwQLXG/cUrlnmT3HLWotn9xTuU/xxP8J6n3EJ1xsPT7iXML4JA/sYi3Mfon8hfcZ29D08UCBvtsXH6GEamZa515mIS9/GWJ4+h7EADzK4t/LwaNCgQZGVLWNuE3HhwFiNeQj1Z45ImRjv80CYctU3d8tUtkLaLqxznZ9kyr9ct5soayKt/dp2+7Xt9mvby7VeKlf5Esgm5iaVuhSWuJZPowu5plLbpAQY5RxytQiO+8wt5zqVa9l4ip/pSb6VGUGSV98yBY43Ue+nP/1prddluLlyU2WwxQSEyUf8tTs+5mBtkzwQbBBFCAziET3tGG7uTBS4KXCjZmDBPm70iLUEbhSh9SaTIf4YDBIPoS60nuEYJmK0OyZPBCbOCDJYwBEYsDDRYcCAoMLghcAA0kQ/1nlqTSC/kBmDbSaDiD5MjBhohh9+8gdV2H9YTBAyiQu5VIcBp7U/+qVzzjknemiAqwaEF65zzjMPAnjFHHE+DJwrLFlNVIE9g07EXAZSDHyxyjDLO47F+o/jCAzyGCDySisTAyb+nFOeyjNYJNA+GNyahZuVjYkn6SI68vqXiXj+oOA/yoPVMQHB6Nxzz43Ky8QEizwskqzcuVojBlmU3SLnCT5Y4tqkimvUrlPEUkQFrEeY3IcPi2BvogQiLi5NjD3thHaAtSuCAmI9r/rGxYaGAEGIYCLys5/9zIslpEEbRTwgYLGLSMa1TMDqmD4OoZaAKIGww+TDhEL6HdqXBdzGMElCiKDsPNxiMsVr/wT6GOpjgYkTbBBDEGKqoe+wusV/GXjZdQA3LG6MdTwu6w3p95nY2wMf0mDd+g7WEVQRpjgf4X0p7D+4ThG6rA+hz7DA+SUgSpuIy72A+6gF+igediJeEXgwccYZZ9hu/0vfxf2PfsnyqRVh7QpujH7729/6vot7IW98cL+pxsB54V5sgfOAiM65wILUgr1SW2i/yzmgr8dS3vof8kBIMSGXvMzKtRj3DMQJ+gDcOti9LnQFwhjlF7/4RZQn/QOim4my9sDMWDCewvIfFvRvFiw+9z/amAXuYfRnZ511lt/Em3JJfSv9oL11QXum3fMAisA4yIRc+kTuwQQemuy+++5+mf+wNIUd92rGcwg3pMW9nvLGx2XUlTHBmDFj/LXPOLBahVwEfB4kwAFhPOSGsGsPv+m/MoVCORZjbF7oGI8xGYEPUVmbYp2xA/d/rsW40M0DVLgRrC/wK1XwH/cVC6HlrQm57IML11qmwDgGgwkLPKRiHGP3I+YpuKaKB65Nrnsbq3FfYg7E9UhfiaEC4nC2e3Y8Tc4T4yACIi5zP5uHMVbmgS7jZeIxV7DzafdcrouwrjxoI3/GDxzDPZjxVn1zt3i5WC+07ZIGjHKZnxC30oKJsibS2q9tt1/bbr+2vdLqW6nl5YEG91jmTvyF49pKqxPlZ55gumam8pdSxCXP9AwwU+4l2E7FzXcElbc/tjXEnUEJiqgkK5gAg0wC4mjc5xHbmVgQuKlaXL8h9R8TT76iGAZuxBawpjQR17aFk1ob5GHZQWDgzys+8cBgw0Q2OrR4+PrXvx4NHmwfE20bkNiE3PZl+rUJNBMrBlzU2QID7gsuuMD/2UDI9lXir03ObBLbkDpgVWEBX7dxLgiwTGgJTPSSPmJD+wqFGOKaFS7LNglmEmiBCQ6igAUmzDww4PzYhAnBgMEpAXEunMizjbbB5MICVgWZAhNo48XHKOLlZaBp1wEiYLUERFgEWR6IIE6GlnI8EMHykkkAH0Oza5i6c/2Y6IAQEWdPO+EVQAs8KCpWoA0wobAQpo2rDusTbD9W9wgfCLJ2nFmsYYEcirh2jLUbGFj6TJIICERYW4Wv95EODwL4i18jlmY1/HId2EMMRFosl7MFazMN7feT0jaLWsQo6795aMW9hnuRuUEwqyjSwGqOwD3QHtDZAyrE2PDBoo+Y+g8LTh5IEHjQYXn5DWv/o08M73fhPpa5Tn7961/7sjH5ZRJs96B43GpYhxP1tb/f/OY33qIZq1MbC9DPc70QitHvxkXcbByLcc/gQQLWYybixvNDgInfcxnjWwjdu7CNa8MsNnkIZIG2R58ciiC2LxzvmIsr28cvbdJEXNvOgznbxsN2C9a/0T4ZA8UDZUBkQZSyc2gPwZjwm6hjx9H/2ZtdZn1o+6rpl37E+gezvrX6heMmhK5MoRCOxRqbh2Vt6BiP9hGKuNTXxmksh3mwbn0v8xG7J7O9GoKNLbgGQyMK+g2b48TnHmG96Q8QcuOB+5Hd2+wNl3gcxq7x8QdjMxOFGePSB+YTeHhj42zSiV/vzAG+973v+f7BvsPBmwbM8+g7kvoUe7OJciT1X7mWL2xXDW27uc5Pci1TucWjjw6FWcRaE2wpa337y60+1VYeE3GpF3of+oe9mVqpdTUxN1P5Sy3ikm/rTJk31nYTb03RtkGgqfS23ljlUT5NR4CBYtgJJ5WEG2m2YNa4tCteh8sWGHiHgYFHXNRiP2IJE1ubgITHMBCJB0uXiYBZ0cbj8IoWwQSicH/SZJlyMZhFQEyaZIfH2zIDTpvg4/cTqzsmN4g5WJ9gfZlUXzu+kn4RXbAeCidt+Zbf2g6Dt0zuGWxwSdoIKnFr6lCgtfzDwaCdO9qaWdvRVrH0xSUG1rf8IdyH7c0sjkkz9KdqefCLMMlEAQ5h/DAOy9Y+WcZqIS4Gsh03DQSsjxH44h9b8Dsr9D+stcxii0E2VvGIcAi51JV2gKUHr/VhGWLtgurGXy02BFiSIX4iZoV8bX9DfpngxEVjLOgJXMehEB2mz4eEwkCZCFh1YsmdLdjEh9cV4UFA3Ob8I27Qb2B1Rh9VLX1HNh6MQ7Digzt+87hHhddleKyd94b2+2FatoyQy2ui9Bs8OOK8014J9D20T4RbLBrtoaFZN4aiil3P9CuZRDn6FZs0c13Qpi1w78H6MFOgz8FK2/o3+iFz8ZPpmGrdDiuuTaz0mNjbdWLtg3o3pN/l3hPvD7IxDO8BDb1n0A9kC0n3O3t4wNgoaXyUtM1EQkQRrLqxauaaoz+yOUKmcmSaI7Rv394fEj6EMlGFPszOS5guojTCtQXGE9ameahl157t5xcLTAuUObxubHs1/CLKIybRl/BnRg4m7NI/0Pa5h8ZDoRyLNTa3e3khYzx7MBPWkXPOtcB4HuGSsTeBtmFtxh6Oh8dV8jLjCvp9AuMD7pNhsOuP+yFWyXGXE8RlHBYXYy0N+gR7KIkBRCgU80AyyTKfY8mHt0oIWLFiSZtrIL6FTPc7ymX9FXHpRzC+IfBwirdl6MPo7xGGwzR9pAb+V4y2m9RfJ81PGlhEHSYCWQkkGa6xzfS+rAdrZ0YCjS7kcsKSTqaV0AZtEnaNSPP55cZvg8OG1JpJgD1NRYAyETNTWjYIybS/odtt0szx9ZXByhvmFd5Yw+35LjMQ4TVFXgW3gTSDSv4QJbBQxPqQyX2lB4RXBk0I3UzcMg0Ow3riD5I2wEAPSyAT1+GSKfAgwYT9pAEaE5lcA1a3DDhxhcBkEcsjrDfMgoPX6plUMjG2spF2tvIhMlGnpLJZucL2aZMM25f0i2VDNQm5YR0RXPjjFTms3Xh9lD8CDz5wcYI1poVs4hSDZCY3SQ9n7Ph8fpOsGW0wn0nEjadPu7LyIGKYOBuPZ+tmMY7rFqyX+TgWExMm56ErCgRFeIUPNiyNavplksZHm8yPOB8zzORGKbyuGtLvJ3GjX7OHMwjxcLe0EdXNlQ6CF+eaMnDvI9hr3twX6RcJPPDKFEKBmjYfClK5tDfyt76Rdkpbw39ztQZEWrPGzKWOYftoSL+b79ioGPeMfPMMOSQ9IAz3h8tYquEiCusc2lEYrE2F28JlE4zCbUnL4fgwWz8eHhveR3lrJnxzJoxny6UaU1r6TfmLlSTjH8YDiNq4OoCPPVzkesgUyoWjXRPZxlD1jfEy9YU89Lj55pv9QwgTHsO3NKw/zsSo0raH83juSXZfSqoHcZOE3GzXYWi9zNglFHKznb/wYVc4dksqV3xb2E7zmYcxvwr918bTLcZ6MdpuPvOTYpS5sdPI1wI3bqHb2OVVfs67V6hkDmiWplcm1YN9pbbKbXQhN6mi2baFwi5PNDM9fc+WhvY1DwJMurH24Akwokr4SnsSgSShJClevtsYcPA0lpsmr9tkC6UWyJjo89EqJiBYajGBxJ8TjBh8INTgg7NPysKukkMoOmA1Ut+5x5ehPe03Fxw2cEuyKDE2PHG3iWY40LT9+fzSPng9Hh+5fPDIBsMm1uEegY+98Kq8lY30KV+mdkN8QjiY9RuC/8IBMZOxbIFJdBg/W9xy3sfrcAjl1DeT+IKlIh+J4xVQXpvG7x+T/1AoyMbeXgHONjmJMzKBLb6d9aR0sEQhZDvOR1j7H+ePSQ/XOhaa4SugYTxbxkrfAkIhwiWTKFjQf2BtRFqIu/i6/Mtf/uItke2Yavylb2HAzyQBUdws0OJ1LVW/j6iOiE5/xauR9jVr+nZEBdoE7YGxkvlFZ5xkfUR4X8zWt1nfQb3i/UcufQDWwfgyRPRG7MG3IeJF2DfHmTWn9ZBhQ/rd8PhcuBXjnlHoPS6XchIHH5J2P6a9YPHGGA4hmXU+IGn33VzTjMfjOjBRONf+M6w/fWcmEc/y4hqo5oClKR+i4j5AX2S+memDktz2GIty4WjXRLZ+MNsYj/kFbSgp8LYOb74xtsY6lTck7KE8rhgyHZeUVrlv42GhucqASdy9ipUfi2R4cF9i3BAXYBmHZwqhpbudN4ubZABj++xBJuvh2M32Z/u18RVxcjUIoZy417GHOLwpg6UxD2GxJKesSR+1zlaOpH3GoKFtNynNatomEbf8zyYaXvgAiBJXsqZXn4hrZ6TUYm6TCLlJJ9MqnPRLfJleJ5HRtjgBBv2IqEwAMrUZJuMMLko1wUQgRghCGMpUBoRVJs7xCXO8PoWsU0+EKFjwGj8TEf6wfmEwziu7BATDShdymfghHBAeeuiheoVcrGAtmEUyAy/EVAQ5BoNJT6955dMCg7SGBs49VhsMHJkcUgYrB0IuX5hHDKE8lCW0jOK1rbhLB8rBBMReHc32kCLcx+QjSSBggI01A4P0JA4NrXdTHcdEEmtZLGQyCblWNiy0uX4ZMCMehLyw+kbgjAfYm89k850Wxglf77XtTACY3GQKSVblJrTyQIbrOOk1edoOQiuTCQQQLKn4yjKvIvIRvKRAu6YOXAME1uk7aOO0T14d5A/x9v777/duJ4jHhN786bJerYFJOX0G18Q999wTXathfUvV7+NeASGXvGl/9AfWb5A/fQFCO23WLD1DtwrEwRIXi1B7MM62eAj3hf0N8eoTISgPbcMsmHGzQLj++uu9sMv25h7CfqQh/W5Sf5CNaXgOG3rPqO+8Z8s/1330sybi0tZ5mBa2F/qhQkVcKwsPxxh7hfdx28cv1xZvYTA+xJrcXpFnH/160gNi+nZLrz6hl3QqOfDmCmNHONHfmFDJ9vCcxesYjrWbkmOhY7xs1wP3YgRbHvThixlXFObWKO4rOs6n0tb5vohdk7yZkzQepU64VPjTn/7kq4foHzdssTFTUv2NHfvi1xWiKWPUJKGWe6SFsN3Ztmy/Nv4hDvOnpHkRb5rgG5jzzYceGaObiIthRryPsAf82fLNZV+hbTeXPCo1jkTcyjhzpoeYmFvJ2l4mERfrW0LcSreUYm7yo8UyahOVfKLLCGOzKYq9aopwEVoYGQAGB3xhng+T2OTB9hXr1wY1PIllIBMPCDhjxozxZcDFQbECEx4L5EE9mZTAIgwMQHDkb4NSG4SEcSptGaHCvprLwOn222/3QlRSPdiPj0ICQiVCF8HOG8sMDJKCfdGWfYU8SWQyxLnhSX48IJ6FvgkZsIYDSoSkpPDoo49Gg+ts1jGIgXbuKUdSwO0E10h9fqaTji3HbSaS4wPUJp9J5WSCan5CEcMQT0Ifa7feemvSYf61YLOUsLxCf95mvRIeHH7ZPtyebdnaKnmZNVQYn/6NBxkIevaqvL3See+990YTjvAYRF8+noE1JYIgfQfrTErifu+4XvjYnll7ZhOiwzwqfZnr5ZRTTvHVYAJrfmjDeln/Uex+H+HDLIV4fZNgebFsDxZwvWCT2LgvZ7sv8pCTiWc80J7Gjh3rNyN25fvwBvcvJuTwhoN9DIiHUg1p5/HyVcN6Y/e7xbxnlJI/gokF+lxrR7atmOM0Y4KFYPgateXFBJPtjBEQ3rnuTYDnwXc4xrJjuO9yr+SvGsZSVq+kXywqjSFW1GbZHAreSceVC8ew3yzFGM/eeKH98MCTwAOVQh76J/Fs6m0mxHBfyjbWxPUSYwYCH86NXz88VEm6HzEOsw/tYoRiaYT1zvTx0XB70kP1MI34cuhDNkzH4vGwm/EV55cxEH0Vbo0s8PZMPIQfKYvvs/U4F9se/pa67YZ5VdKyRNxKOlvOG7cx9+XPhN3KqkH6Q21xoZY6mAsFtAETdMO6cUxoMBHuK2S5SYTcXE4eAm4ln+hCTkpzPZZBMJYN9f1hLZEpfOMb34hEKoRMu8lyo2SSaxcfA8skn02Z0s1nO6/XmSN+BrvmA5U0mCTwOrLVgQ+iFBLCAQ7iDeI1QgyvOjEAIjD5t1duWYcFAo09Uc82ECN+pYRDDjkkOvdYRFx55ZXeMpHBF4FfzgWv/lrdEWfs4ywMOu28IWrgs8++MouYis9Qs7yhDyvEmtqEFUQffLJyzixgqWsCGoIKIjWWB+ZvEp90CKxY7BIoI19KNwtrJg7Z2jYDUBOKEQMRpxk4E0iTdEwQMnHc76zg//hwmImP+DiFeXzSzTWCmxFzbWGTUwRZ/KQSEHn5YFjIHktwPoxGQDTFqozAAxObwDGpmzJlir/2aHtMhK6++mofL5//EMhsIo01CKI0FmH8IRaHwruJaVwXVvezzjorshKiHNQZC14CcSg7fYe9Ioygb6/yE4djaDNx0Zp91R6Y5Nl1k1TXhvb7YR+O2xvalvVZlo9NEO1+Zg8L2G/nynxVIjzF+yZcQ3DPI/ABTtqxTR45jlc/7Z4UfuzJH9CA/4488shIfKbtJ4lmDUi2og9p7H63mPeMUoIPXchw37Z7Ln0Nln9YdVvgfllIoC+0wENUu5/Tn5G3PdhEoLI3DcwNBhbx9JXmR5xrlIcndgz9Q/zVccurmn532203Xx3rLxgzxS0mk+pbDhxLPcZj7GVjSNoTwcTdJCaVus368/ossbnn2HiIa5cxUDxwP2LsYm8t4QsWd3A2JuXBcVJgjI4hjMXjGmZcZ2+lULbwYXpSGvFtjLXtQ2Y81GbuZOlz7w3nbja+snkWaZn4zDLH8fAcC20LYf8V3vfDuZvFjf+Wuu3G86uEdYm4lXCWqquM2SxxQ+OuxhRzm8S1QnWdVtWmWAS4cfJXX7j44osjgSQeFz9CfMCLD3wh1DBYtwksEwML3/3ud/O2OrJjc/klfQYjDHb5AAJ/iHI2KCANRLJCRVQGA5Yulk/8IfQgSPEBL8RH8uRVV+IyuYOLsWCgYwOXXOpVznF4fR6RFoGMOiJSIeYSmJiZ9YjVAVGGwVEY8KX629/+1sfF0oa/+LGIc1g0FxJ47R1rASaSiHH8cS44L+FgDwHGAmIkQo9Z1f30pz+tUzbaApaV9QXSwlqcAbl9xMrakR2LRSfxqiEwwaIvwN8wwa5JJt4ICXzh3cRJ9nPthHU/7LDD/GQD63ZereOPdmCiL8cwmUUoDQOCFu0RlxennXZa5K/W4nNNhmmExyYtYyHMeT/33HN9ee3DW4hEYfnPPPPMqI+kTzz//PP9tYHFLm3chN3wmIsuuijqE3nAwYcSKTciNpyoH23PjqGf4YN8zSkgBGFhE38IYAwa0u+b5TRpMKkl4MohfA2VyXBogW3iLXFpv5xj6zdM9GWfBfbzyjoPMuljbrzxRj8ppT2ZIENcJqdm4WvHNuSXvoQ2ZA8W5GIhTbGx+13yK9Y9oyHtIJdj6FfoX7Du5550xhln+PZsD8sYv9m9iYk7Qg9vDDQkkJf5u2Y8wEM50rfxkKVJGWzciCUcYzUervL2wnnnnefHUuF1Q9wkCxxLr5p+sfZHMDNmu60VduurY7lwLPUYb6+99nK3Bm/uVPM90h52Zzv3GKvYW1B8zDC8d3Ec7QiDFwLjofC6YnzOR5szBYwO+IuP0bknhvfPTMcnbcf3M4Iz91MeuPMXLxdvnVjdeahqfQhvyyEus27zjfDefPnll/v5Kf0JaVq/Fp+7JZWLbaVuu5nyrYTt9OvhfCle5vr2x+NrXQTiBHIVce04E3PNgNC2s27Wu7atkN8mscilwFjcZgt0nnT6CiIQJxD3FRdf5yZ5wQUXRD5wGSjYoJMb/Omnnx49JSbt+PHx/HJdt4E/8Xkqj3DEoMW2m4jLDfzQQw91xx13XJR0WAYs+fIJ3NzDJ8+Wn/nIRMQiMEBismQsGCAhfCb5mcon/3KKix8prMsYPDO4s2CDKtbxm8VkLOlJP+IckzvYGEc7lkEXVrE///nPa33cITx3ll99vxyD6IfVgOXDxNXEGCa2tI/QApD8EduYnLNMsLKRBoNe2pxZhMTLEJaT48ek3HvQD9MeCdY+WUbQQfyzfNhW6WHEiBHewoJrzwLXA+KmiZOIWHA59dRTLYr/hQOvzuIPDjGAYAIsoijn5JZbbnHmw9ZHSP13wAEHRNa8bDNXBOTDhwbttV2LH/6G5yvczrHkFU4Qrfy0X95kiU9imHRwjD24IL4dwwSbBx70mxawLEaANrcMlBsRw47hQQYiXdjv2LGV+GvXYH1lp2826+ykuPn2+6RBf0T7seuQbfF7AC41bD8TQyyHwhBOjpOEXOKynbZtr49yH7BJM+eRB0DhPSlMP9OytVH7DeNRJisL10pomRTGa07LhfS7SYzrY0d+hdwz4u2Q/MJyJO2vr0y2P0yHh1P2GjTt0kRc+kfabNhn20MUyztMx9LO9kufzAM9+wCXjYc4hv6Th+BmjWvpmKsZrj2CXTcsDxw40DO2cRbbqiFk6hN5gyl8+G8Wl7nUOV+O+Z7bTGUI69KQMV6mdJO20+dZfowjM30ILOnYStrGtWljoWzlxjWVjRPwqxyOM3kIwPVovOy6YuzOw3N8/CcFHn4yRrN0w3Ew7lkuueSSaB/Hh+3I8grTDffzzQjG0bRri2vlYp23Ps0ggDS4F1NOKwv1s/Jw/plP2LiLvsb2cWymuVtYHisD8RvSdsO0SKOagomz9huvm2233/h+rYtAPgSSNMn6BFkTc+P5JKUVj5PreovUgKnGsWauRyXEM8sgJpG5BCqBWBsGKsxfuL2pfOTmW59844f1ZrnQ4+Ppxdft9dhCLUDj6Zb7Oq/rMInkNTgGHfFXThuj/LzCimUbr+Rx00dMjvuBK3U5mBjh14lX+GFAOcylQKnzbsr0cYkwK/VKFPVH5GWylc/AGusf/jjWBmrFrg+vkpIH7YOJNwPJpA+QxfOlbrRt2lP4elc8Xi7ruOTgY0jUkevEJsm5HFuJcbgOuCapM+Ik1wNtI1eOtCesU4mfy2SGiQAfHOJcY8nKeS5GoH/DmpgHALTRXPo3jsEvJX0ida7vGNoGvuxghvhBfZtD31Ho+SmHfj9THZhQ0m6YdDIhL1Z7zJSfticTaOx+t5j3jOQaFbYVkZa+hocWiBbhfYh7JOXnYUmxxAnaP65FEEtyHRvQD3IMZURQymc8URid6jq6XDgWe4xH+7X53Nlnn+2F/uo6c4XXBgMS3gbD7QRvP3E/YizLOIbrPtNY+6677vIfGuO6w2CDwDiOc8gYLpexWL6lJ23OKenzl2nuxv2eeDz0ZpxEGcO4jLkYN8W351ueMH6x226YtpYrn0A56j6m/Znel4ur1XI6E1jTmp/b+kTcsNyhNW8mcTeMn89y63wiFzMuJy8UbEk7fDXJ9tlvpZ3sYrJSWg0nwIDfLJAankphR3Iz5+bNX1MFBkaZBkdNVabGyBdr40JeFbbBWynLymQVq7x8v7BL3bAGKkZAzKtP0CtGPuWSBpNv+oWG9g1cS+bnOJc6MemPW3nlclx9cejfMllgZzqWYxCTcw3NrW3kyqW+eOXQ72cqI8JVNmvwTMdpe3EJNPa1Vcx7RnFJpFNDADFL2Xj6pbgX8wAj/JhlPM+kde4dpejLk/Kq5m3lwrHY7QpXVQTGCMUan1VzO6Bu3I/yHccYE8TbUgi4ln6u7YP7fbayNHSsaeVI+s21bEnHapsINDYBE3HJF2HTBNFK0vfQKRFzKTOCbK7BxFsYhFpnrsdni1c0IRfLWURXexIZz7Q+S92wYnZSTcS1X9seT1vrIiACIiACIiACIiACIiACIiACItBYBHizBwtjrC6ffvppny2v4CuIgAiIgAikCZiWF/JgW6Vpe6FeGdalvmUTc+uLl+/+ogm5nIhQYc+lICb+Urm4sm0n1k68/dr2XNJXHBEQAREQAREQAREQAREQAREQAREoNgE+hMcHqyzwjYNdd93VVvUrAiIgAiKQQCCu/SVE0aZ6CBRNyCWfhqrUmY4z0dZE3HrqUpLdmSyMS5KZEhUBERABERABERABERABERABESh7Agi3uAfAbRFuN/ioW+jfuewr0MgF5EOYfNAMv9T5BD6IiFsouQXKh5riikB5EDDjzbA0EnJDGg1bLqqQm28REGrr809lYi5ph8v55qX4IiACIiACIiACIiACIiACIiACIlAMAny0iz+F3AjwgbOGhB133NHxpyACIlB5BEzDM+NMhF3bVnm1KZ8St0h9fXtN+RSnfEoSfpmusUrFk4lM1smFlqEcv15YaJ10vAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgHPSfZpHK2jZPKqZfy15StCYJt/kpScT+Z8nHSECIiACIiACIiACIiACIiACIiACIiACIiACzYGALHKbw1lWHUVABERABERABERABERABERABERABERABERABCqagCxyK/r0qfAiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIALNgYCE3OZwllVHERABERABERABERABERABERABERABERABERCBiiYgIbeiT58KLwIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIi0BwISMhtDmdZdRQBERABERABERABERABERABERABERABERABEahoAhJyK/r0qfAiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIALNgYCE3OZwllVHERABERABERABERABERABERABERABERABERCBiiYgIbeiT58KLwIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIi0BwISMhtDmdZdRQBERABERABERABERABERABERABERABERABEahoAq0ruvQqvAiIgAiIQMUT2OuSeRVfB1WgdATGXdyldIkrZREQAREQAREQAREQAREQARGoIAKtp02bVkHFVVFFQAREQASqj0DX6quSalQ0AhqnFA2lEhIBERABERABERABERABEahwAnKtUOEnUMUXAREQAREQAREQAREQAREQAREQAREQAREQARGofgItFi5cuKb6q6kaioAIiIAIiIAIiIAIiIAIiIAIVBuBGTNm+Cr179+/2qqm+oiACIiACIhAHQKyyK2DRBtEQAREQAREQAREQAREQAREQAREQAREQAREQAREoLwISMgtr/Oh0oiACIiACIiACIiACIiACIiACIiACIiACIiACIhAHQIScusg0QYREAEREAEREAEREAEREAEREAEREAEREAEREAERKC8CEnLL63yoNCIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiJQh4CE3DpItEEEREAEREAEREAEREAEREAEREAEREAEREAEREAEyouAhNzyOh8qjQiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAjUISAhtw4SbRABERABERABERABERABERABERABERABERABERCB8iIgIbe8zodKIwIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAJ1CEjIrYNEG0RABERABERABERABERABERABERABERABESgugncdNNN7sknn6zuSlZZ7VpXWX1UHREQAREQAREQAREQAREQAREQAREQAREQARFoEgLTpk3z+Q4aNKhJ8s81UwTcd9991/9xzJ577pnroYrXhARkkduE8JW1CIiACIiACIiACIiACIiACIiACIiACIiACDQmAQTcp556KsqSZVnmRjjKekEWuWV9elQ4ERABERABERABERABERABERABERABERABESgegSTRtl+/fsXLoEQpUe5QgM4lmz322KOqrI1lkZvLWVccERABERABERABERABERABERABERABERABEahwAuZSIawGYmffvn3DTWW33BARl0pUm7Vxgy1yL7zwwiY5qZdeemmT5KtMRUAEREAEREAEREAEREAERKBaCWh+V61nVvXKRiCTZR+iVjUFXqMnlLtQV03My7UucZcK1i7K3T9uQ0VcOw92rZd7Pa282X4bLORmS1T7REAEREAEREAEREAEREAEREAEREAEREAEmpZA+DErSiIxt2nPR1PnjiAaD+UubhYq4lp9q0XMLVjIzWQha090M+03kLn+Wnq5xi92vE8++cS99tprrk2bNq7UT+fGjh3rVq5c6bbeemvXvXt3X5VXX33VzZ492/Xu3dsNHTq02NWL0nvmmWfc0qVLa+Ud7dSCCIiACIiACIiACIiACIhAVRMo9vwtU3pNPb+r6pNYgsp9+eWXPtUNNtigBKkryVIReOWVV5ydO/JA1P3iiy/8fL9UeZYyXcovIbrhhBFEYRiGcnepUCwR1+pcDWJuwUKuwaj237ffftv95je/8dUstZBrg51f/epXkZB79913uwkTJrgjjzyypELumDFjfB3DvKv93Kp+IiACIiACIiACIiACIiACIiACaQIm9CD4hSJgyAdBlw8jSdgNqZTXclzEtdJxTtmH4VilBWubEnPzP3OwMxHTjoZjOVvjFlvEtXobh3Kuu5U16VdCbhIVbWt0Ak888YTP8+tf/3rWvHONlzUR7RQBERABERABERABERABERCBPAhksiA2I5x4UvnGjx/fFOsIfDNnzswo3oZlMjGQbYhBEtZCOk27HJ6bTCUhDmIWYm6lifEIkp07d664cmc6F7lsz9SfZDuWa/Kkk06KoiCKxoMJmTC96aabau3m2Ka8rksl4lolK1nMlZBrZ1G/nsAvfvELt2bNGjdkyJBGI4I4awItmWYSc3ON12gFV0YiIAIiIAIiIAIiIAIiIAIiUAUEEHL4a0jgOKx3ZaHbEHrFPSYXETfM0SxzK03MrdRyh+xLvWwiLfkgisav79ClQpLIi7DbVGJuqUVcY1+pYm6jC7k0nqZU9e2E6TeZwC677JK8o4Rb58+fH6Vugm5czI2LuOEx0cFaEAEREAEREAEREAEREAERKCoBzd+KirPsEstX+MtUAUuHub7m+5kolXY712pcrMslR0TRSjxvlDsXt5e0zUoTqnM5b9nihCItbcIESzuG821Cb5LIa/EQczO9dWBxSvEbL288j3iZ4hbL9e0P0yMvYxFuL+flRhdyaQg0qkoDFZ7E5cuXu/vuu889/fTT7sMPP/S7hg8f7o455hi35ZZbhlGj5RdeeMHHf/PNN92iRYvcyJEj/R8s2rVrF8VryMKCBQvc/fff76ZMmeKmTZvmWrdu7YYNG+Yo0wEHHODWWWednJO98sor3eLFi70v3kGDBkXHTZw40T388MNu+vTp7uOPP3bdunVzffr08daz1KFVq1ZR3HwXRo0a5agD5SfExdy4iIu1MMcoiIAIiIAIiIAIiIAIiIAIlJZANczfSkuoclM38TWXGpgQxjHZAqJRc3vtPRuPxtrXUBHXymcCcKWJ8GaZa/UIf+NMKlGsDuuT63Io0nJMkrWt6XEwqk80NcvcXPNXvNITaHQhlyrRUGgwNJ5K6ygo/9lnn+3eeOMNFqPAh8j4wzVBaNW6YsUK98c//tELrVHk1AIM+EMcveKKK1z79u3D3TkvT5482V188cX+VZbwIERm/h5//HG/f+ONNw53Z1z+17/+5ffttddeUZzbbrvN/eUvf4nWWfjss8/8HwLvq6++6s455xzXokWLWnFyXdl0000jdwpxMZc0TNhlGREXa12OURABERABERABERABERABESg9gUqfv5WeUGXmgD/cTIF5eiZBFjEXVwom/sXTyNVSMn5cKdfjol59edHm46GchcBMZUuqB/XCGKscQ6byZiqrPYyIf7iNNhh/6GDttRI1qEz1T9puIi37kqxtOffGAJG2vgA3ibn1UWrc/S0bN7ua3KwxJD0dqIlVnkuIuNttt527/PLL3Y033ui+973vufXXX98XlvUw3HXXXZGI+81vftOLujfccEPkdHrq1Knu/PPPDw/Jefnzzz93P/rRjyIR99RTT3Wkfd1117lDDjnEp0P6F110kVu9enXO6YYRycNE3B122MFde+21jjpdc801jnXCI4884rA0LiSYmBv65k2yxJWIWwhlHSsCIiACIiACIiACIiACDSNQyfO3htW4uo9KErqoMZa3iGIIPWaFGyfBdvZn+1AW6ZdToLwmXjWkXIUe35A8dUxuBBBsTaTlCNbjIq6lRLxM+yxOJf+GIi11jQvjtGMTenMRcY0FaVWidmflr7bfJrHIDSHSsGgUlWSdO3r0aPfLX/7StWyZ1sE333xz/4Gwm2++2X3wwQdu4cKFrkOHDm7OnDmRCIrgethhh0VVHzhwoOPv3HPP9da9iMO4Q8gn3HrrrVF0rH6HDh0arZNW79693e9//3s3Y8YMN3bsWLfPPvtE+3NdMAtZ4p9yyimuf//+/tAePXr4/BCneRo7adKkvMsfL4OJuWwP82VdlrhQUBABERABERABERABERCBpiVQifO3piVWfrlnErPyFStN9CU9/sJg4loh4mmYXjGWKQtWxvmKzNkE62KUS2kUTsDaH+cYfSJbYH+mhxTZjquEfSbSUtYk4ZWPl9k+Y+Y35PCficJhHjkcpiglINBkFrlhXWhAPA3I54lAk6pnewAAQABJREFUeHxjL59wwgmRiGt5h+4UsGIl4GqBwM3CLGT9hrX/bb/99v4pJquPPfZYuKve5TVr1riHHnrIx9t///1ribh28EEHHeT92LI+btw425zXL2KwBYRqXCpYwBfv9ddf72655ZYGicSWTviLmNuxY8dwk19mm9wp1MGiDSIgAiIgAiIgAiIgAiLQ6AQq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AREQAREQgdwJVOr8LfcaNr+YiGD1vZaeTcjNZFnLMfzhaiFu0cvct9xC3C2ElTnbB93KrQ7ZylON9bM2lq3ezWGfiY+I9HHBE0ZmjYu7hUwPV+rj1JR9v5U/Xrf6ypzvfjhaXvke25TxG6ZOFlBiGlUlhtGjR7tnnnkmY9FxK5Bpf8eOHb2bA1wefPrpp/7jYVjlbrjhhq5ly7reLZLSueyyyzLmzYfO+MMSlw+Qrbvuuq5nz55ehE06iMZqF37S/vg2PnR28skne9F57ty5vvxt2rTx5S/HG3K8/FoXAREQAREQAREQAREQARFoGIFKnb81rLaZj7r00ksz70zYk2/8hCSafBNir330DFEwVxGN44jPsSaOlmM7srolgUb8KscyJ5U107ZqrF+ln5NM56q+7Zn6k2wuFUizqSxq66tPLvtNYC2VmFupIi7sGl3IzeWEVWucFi1auO7du/u/UtQRcbV///4NTnrBggXRsXxMLR6wSu7Ro4f/i+/TugiIgAiIgAiIgAiIgAiIgAiIQPUQyMVyN1Nt7VgE0aQPrWU6rly2V4OQm41ltdcvW92rZV99LhWqoZ6lEnMrWcTlvErIrYbWXYQ6vPDCC+7pp5+OUho8eHC0rAUREAEREAEREAEREAEREAEREAERyJdArla8+aZbjPhmLZyUVjX4YK32+iWdt+ayDSE+bqnKtWbCZzVxsDrF69vQOla6iEu9677X31AaOq6iCVxyySXuscce83XA322HDh0quj4qvAiIgAiIgAiIgAiIgAiIgAiIgAhkIlDtr+lXe/0yndfmsL0+lwrVxgAxFwG20FANIi4MCrbIre9rcPXtL/RE6PjiENh9993dqlWr3K677uq22Wab4iSqVERABERABERABERABERABCqKQLHnb8VOr6JgqrBlTQChE8vGpJDpg25Jcct1W7XXr1y5l7pczcGlQhLDQi1zq0XEhU3BQm4SYG2rPALnnHNO5RVaJRYBERABERABERABERABERABERCBBhJo6AfdGphdox9W7fVrdKBNnGFzcqmQhLqhYm41ibhwabFw4cI1SYC0TQREQAREQAREQAREQAREQAREQATKmcCMGTN88Qr56HM5109lEwERqDwC06ZN84UeNGhQUQuPNW7cV+xJJ53k5EajqJjLPjH5yC37U6QCioAIiIAIiIAIiIAIiIAIiIAIiIAIiIAINGcCcV+xWJpKxG1+LUKuFZrfOVeNRUAEREAEREAEREAEREAEREAEREAEREAESkCg2Ja4YRHNvQBuFmw53K/l6icgIbf6z7FqKAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiUAUEJOBWwUksoApyrVAAPB0qAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAo1BQEJuY1BWHiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiJQAAEJuQXA06EiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIi0BgEJOQ2BmXlIQIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIFEJCQWwA8HSoCIiACIiACIiACIiACIiACIiACIiACIiACIiACjUFAQm5jUFYeIiACIiACIiACIiACIiACIiACIiACIiACIiACIlAAAQm5BcDToSIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiLQGARaN0YmTZHHXpfMa4pslWeZEhh3cZcyLZmKJQIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAL1E2g9bdq0+mNVZIyuFVlqFbo0BKq3nZeGl1IVAREQAREQAREQAREQgUog0Lp12jZpxowZlVBclVEEREAEREAECiIg1woF4dPBIiACIiACIiACIiACIiACIiACIiACIiACIiACIlB6Ai3WpELpsymfHCZNmuQLM2LEiPIplEoiAiIgAiIgAiIgAiIgAiIgAiKQNwGb3/Xv3z/vY3WACIiACIiACFQaAVnkVtoZU3lFQAREQAREQAREQAREQAREQAREQAREQAREQASaHQEJuc3ulKvCIiACIiACIiACIiACIiACIiACIiACIiACIiAClUZAQm6lnTGVVwREQAREQAREQAREQAREQAREQAREQAREQAREoNkRkJDb7E65KiwCIiACIiACIiACIiACIiACIiACIiACIiACIlBpBCTkVtoZU3lFQAREQAREQAREQAREQAREQAREQAREQAREQASaHQEJuc3ulKvCIiACIiACIiACIiACIiACIiACIiACIiACIiAClUZAQm6lnTGVVwREQAREQAREQAREQAREQAREQAREQAREQAREoNkRkJDb7E65KiwCIiACIiACIiACIiACIiACIiACIiACIiACIlBpBFpXWoFVXhEQgdIT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RRdy11mnpcNyuDFDPufphRdecFtssYXDpUJjiLhwwIUFfr7xTfzuu+/6v1122aUxESkvERABERABERABERCBCiCApWzfPr0TS4qoi8uEhoauXbs4/hREQAREQATKl4Ascsv33KhkIiACzZAAH1pbuHCht6JoE/sicTPEoSqLgAiIgAiIgAiIQFYCzc0iNysM7RQBERABEah6ArLIrfpTrAqKgAhUEoGWKcfAnTo1rsVyJfFRWUVABERABERABERABERABERABESguRIIPkvUXBGo3iIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiJQ3gQk5Jb3+VHpREAEREAEREAEREAEREAEREAEREAEREAEREAERMBJyFUjEAEREAEREAEREAEREAEREAEREAEREAEREAEREIEyJyAfuWV+glQ8ERABESgXAsvnfuZWfPG5W7Fooes4eAvXKvXV5GoOy2Z/4pbN/tit26Wra9N1o6qvbzWfS9VNBERABERABERABERABERABKqBgITcMjqLq75aVac0LVu3dC1atqizXRtEoKkJLH7vXffK6d/1xdhizGVuw+1GNXWRauW/+quvaq2z0qJ169T1lPlFhDUrV7g1q9fUOq5Fq9Q12Kp5d5XzJ7/q3hhzvlvw5usRm53uf8J1HDosWq/GhQ/vu8u9/fvLo6r12Gd/t+WvrnKt23eIthVrodyvp2LVU+mIgAiIgAiIgAiIgAiIgAiIgAg0nECLNanQ8MMb98jVq1e76dOnu9n/n73zgKuqfOP4I0sEBBUBQREQFdx7j5yZZVqampWlZmaOrMyybPp3lJWaqaWVKy2zYWpmuffee7KRISh7yPD/Pu/1HO7EC4Jw8ff0OZz3vPt8L5e8v/uc54mOpps3b5K9vT15eHhQYGAgOTo6mrWZU6dOyX5NmjQxq/+D6pSdkUUrms4zWK77/H7k06O2QX1ZrTh0JJaeHvwvVXW1p9NHBpXV2ywz9xX+60o6+9E70mOx04bt8mzq5lKuXqbM2BiydalEzg0aGXRLCw+l9PAwshJenpWbtTRoL0hFTno6bW7qbzCk+YIl5NHjMYN6peLgkH506/gR5VKefYeNonrvfaJTZ6kXd3Ky6d/6NanVj79Q1Y6PmH0bu3t1pNSQILJxdCKvvv3F6+xGNYcMlV6qZk9igR1vHjlIcXt2UErQVYrZ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pKTocL98+TKtWrVKrQsMDFTLKIAACIAACIAACIAACIAACIAACIAACIAACIAACIBAWSCQf4rMUnSHkZGRFBoaSv/++y/ZiMyejo6OIlNlKmVnZ6u77NOnj6xXK1AAARAAARAAARAAARAAARAAARAAARAAARAAARAAgTJAwGI8cps2bUrly5eXyFm8TUxMVEVcZ2dnevHFF6lz585l4CXBLYAACIAACIAACIAACIAACIAACIAACIAACIAACICALgGL8cgdNGgQ8cHJzFjETUtLowoVKpCrqytVrFhR965wBQIgAAIgAAIgAAIgAAIgAAIgAAIgAAIgAAIgAAJliIDFCLkKc05mhoRmCg2cQQAEQAAEQAAEQAAEQAAEQAAEQAAEQAAEQAAEHgYCFhNa4WF4MXCPIAACIAACIAACIAACIAACIAACIAACIAACIAACIGCMAIRcY1RQBwIgAAIgAAIgAAIgAAIgAAIgAAIgAAIgAAIgAAKliACE3FL0YmArIAACIAACIAACIAACIAACIAACIAACIAACIAACIGCMAIRcY1RQBwIgAAIgAAIgAAIgAAIgAAIgAAIgAAIgAAIgAAKliIBBsrMn34kvRdsrjq3UkJMOiUmj5x51KI4FMCcIgAAIgAAIgAAIgAAIgAAIgMADJHDt2rUHuBqWAgEQAAEQAIGSIfDQeuT+sjW9ZIiXoVVzc3MpJyeH+AwrHgJ37tyRjJkzDARAAARAAARAAARAAARAAARAAARAAARA4OElYOCRq6CoXc1RKZa5c+TNDEq/nUM/b4ZX7v28uGPHjqXNmzfTZ599RgMHDryfqTDWBIFTp07RgAEDyM/Pj/777z+ytrY20RPVIAACIAACIAACIAACIPDwEvD39394bx53DgIgAAIg8NAQsHiP3E5NralrSxvqKM7mWhUnW9kVXrnmEjPsd/jwYSniOjo60uOPP27YoZA1h47EkletFdS41ZpCzlC2hjVt2pQCAwMpODiYfv3117J1c7gbEAABEAABEAABEAABEAABEAABEAABEAABswlYtJD7eAcb6t/Nlvp21pzNvesKdtbEB9uZa1nmDkM/LQIzZ86UVy+88AKxmFtUlp2tCdOQkYFQAgrTkSNHyiJ7PqelpSnVOIMACIAACIAACIAACIAACIAACIAACIAACDxEBCxWyK1UsRz1aG0yMsQ9X0J4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SnV83759ac6cOeo1CiAAAiAAAiAAAiAAAiAAAiAAAsVPQPl85+/vX/yLYQUQAAEQAAEQKGECphXPEt6Yucvb2dnRk08+SatWrZJDYmNjycvLy9zhBeoXERFB7JXLxnF5J02aRD4+PuTo6FigedAZBEAABEAABEAABEAABEAABEAABEAABEAABEAABApCwOKFXL5ZbeGW4+ZqXxcExr36btmyRe0yd+5cqlGjhnqNAgiAAAiAAAiAAAiAAAiAAAiAAAiAAAiAAAiAAAgUFwGLTHamDyMtLU2tqlChglou6kJkZKScsnHjxhBxixou5gMBEAABEAABEAABEAABEAABEAABEAABEAABEDBJoEwIuceOHVNvsDi9ZHNycuQ6derUUddDAQRAAARAAARAAARAAARAAARAAARAAARAAARAAASKm4DFCLkcA3f//v3Eyc0Uy83NpR07dtDBgwdlFYu4Tk5OSjPOIAACIAACIAACIAACIAACIAACIAACIAACIAACIFAmCFhMjNxr164RZyT966+/qHz58vJISkpSXwQrKysaOnSoel0cheTkZDmttbV1cUyPOUEABEAABEAABEAABEAABEAABApBgD8vwkAABEAABECgrBOwGCHXz8+Pzpw5I1+PzMxM4kOxwMBAGjBgALm4uChVRX5OT0+nAwcOyHl9fHyKfH5MCAIgAAIgAAIgAAIgAAIgAAIgAAIgAAIgAAIgAAKmCFiMkMvettnZ2RQbG0vsiXvnzh0p3Lq7u5ONTfHdxtdff03Hjx+nEydOUGpqquTYoUMHUzxRDwIgAAIgAAIgAAIgAAIgAAIg8IAJ+Pv7P+AVsRwIgAAIgAAIPHgCxaeAFsO9sGDr5eUlj2KY3uiUhw4dIj7YGjRoQKNGjaJGjRoZ7YtKEAABEAABEAABEAABEAABEAABEAABEAABEAABECgOAhYl5BYHgHvNuXjxYtkFSdTuRQrtIAACIAACIAACIAACIAACIAACIAACIAACIAACxUUAQu49yELAvQcgNIMACIAACIAACIAACIAACIAACIAACIAACIAACBQ7AatiXwELgAAIgAAIgAAIgAAIgAAIgAAIgAAIgAAIgAAIgAAI3BcBCLn3hQ+DQQAEQAAEQAAEQAAEQAAEQAAEQAAEQAAEQAAEQKD4CUDILX7GWAEEQAAEQAAEQAAEQAAEQAAEQAAEQAAEQAAEQAAE7osAhNz7wofBIAACIAACIAACIAACIAACIAACIAACIAACIAACIFD8BCDkFj9jrAACIAACIAACIAACIAACIAACIAACIAACIAACIAAC90XA5r5Gl9Dg27dvU1hYGIWGhtKtW7fIxcWFfH19yd/fn6ysoE2X0MuCZUEABEAABEAABEAABEAABEAABEAABEAABEAABIqJgMUJuSEhIbR48WLKzs42QNK5c2fq06ePQT0qQAAEQAAEQAAEQAAEQAAEQAAEQOBBEEhMTKL9Bw8bX6pcObK2tiYnRwfycHcnPz8fshJ1pdFOnDpD0dEx5FPTm+rXCyh1W0xITKQDB4/IfXXv2pns7OxK3R6xIRAAARAoagIWJeReuHCBli5dKhmw5623tzd5eHhQQkICXb16lXJzc4uaD+YDARAAARAAARAAARAAARAAARAAAbMJhIaH02dfzTOrv3eN6vT5tI+oupenWf0fZKdff19LBw4dpcHPPFUqhdzo6FiVc4f2be5byN1/6AixCF+3tj/51/J9kKixFgiAAAiYTcCihNy1a9fKG3NwcKDx48eTq6ureqMcbiE5OVm9RgEEQAAEQAAEQAAEQAAEQAAEQAAESpKAr483OVd0Vrdw504upaWn07WgEFkXHhFJY994h3749muq6lpF7YfCgyewfOVqunjpCo0a8SKE3AePHyuCAAiYScBihNzLly9Lz1u+r1GjRumIuFzHj1FoC7tcBwMBEAABEAABEAABEAABEAABEACBkiLw+phR1KJZE4PlWcz9fskK+nPdRrqVkEgHhTdon8d7GfRDhWkC3t7V6dMP36Vy4j8nR0fTHdECAiAAAmWIgMVkBjt27JjEzqEUvLy8ytBLgFsBARAAARAAARAAARAAARAAARB4mAg4VKhA40aPVG/5yPGTahkF8wg4iid1u3TqQI90ao+k5+YhQy8QAIEyQMBiPHJv3bolcdetW5c44dnRo0eJvXQdxTdv1atXp27dulGVKngUpQz8TuIWQAAEQAAEQAAEQAAEQAAEQKDME+CkZxwjl8MrVLC3V++XPXS/WbhYXk959y2KjIqm7Tt206Gjxymwbm2aMPZV2ZackkK/r91AZ89doPMXLlHNmjWopfD+bde2NTWsH6jOpxQ4pwzHvP1702YKCQ2j62LeypVcyNOzGnXu2I4G9OtjdpzZ02fP0V/r/5FTV63qSmNGjaDgkFD66ec1su6dia/T+o3/0omTZ+jCxUtUQQjXDRvUo1bNm1LP7l2onIkEb7y/fQcO0XkxJioqRoY4qBdQlx7t0ZXq1K6l3Io8R16Poh+XrZTlt98cRyyOp6Sk0ux5C2XdxDfG0rlzF2nnnn3EidsSBNfa/rXosUe70eO9eqh7+HLuAkpLS6OwsAg5bvO2HSL0RbBMSsf82bKysmireA3+3bKdQgW7zMzb4ongKhQgXo8nhSd108YNZT/8AAEQAIHiJmAxQi4nNGOLi4ujhQs1f5j5musjIyOlsDt06FBq0KABV8NAAARAAARAAARAAARAAARAAARAwCiBH374gYKDg422mapk56Hu3bubai5wfVxcvBRxeWCrls3V8SzQbtu5R16/IuK1vv7WZBl+gSvqCCGSjYXbj/73Od0Qn48V4/iufKxc/Tt99N7b1L1rZ6WJ7ty5Q1/MmU///LdVreMCi8Z88HzHT5ymz6d/TFYmRFZl4LHjp+ityR/KSxaiXx05TJYTRKIwZd+xN+LojBCYFeM1WDjevHWHFKQnCeHVvnx5pZkyMjNp4aIltO7vTWodF3gOPtb8uY4miDAV/Z/qo7YnJ+dxemP8aFnPgquyh8DAurTgux/V/lxgAZqPkJAwGjv6Zdm2TQi0HOpCsZDQcCF0h8tLFnJ5zg+nzpQiuNKHz2lCgGcRfuv2XTT57QnU+9Gi+93QXgdlEAABENAmYDFCbor4nxnbhQsX5GMTTz31lPjGsSbFxMTQn3/+Kb4Ry6TVq1fThx9+aPa3iNogUAYBEAABEAABEAABEAABEAABEHg4CLAgy2JuQawwIm6mSMrNIqVid3LvUGJSEl25FkQ/LP1JVrNXLHuqGrMpn0z/P3vnAdfU2YXxRzayZTnZTly4B27tUKvWveqqVWtrW2u1rbbVblurdmhrl+uzWvfWuq11771lKKggDhAQmd973nAvSQgQMCjoOf7Cfe+77z8RkifnniOFVhJMa1avhsYN6yNOJPke88EnUnwsK7xphw8dCB/6bBwdjdnzF0ox97Ovv4OzkxPq1tHE5/33v72qiPuc8Iht2qQhAvx8ERd3H/MXLpYi5UHh8RshhEmvCuUNbUXW7d1/EB9+8oUsV6lcEd9+MRFOTlnJ3JSBJL7S3gYP6At/Xx+5t1VrN+LAoSNS+Czl7KwKqTSGEo0pIm7N6oHo36c7PNzdECIE119+myMF6x+El7K7hxuaNWmkLJPrkURcyefVgdLz+dyFi1gqBGESaUkY7tGts1zjk/FjQeL59B9/kUxbNm+Kpo0bwtxME4ly7/5Dqojbs1sXPN+ulfT+vRIaJsVnEqgnf/cD2rRsxlpErs8INzIBJmAKAsVGyNW+2G7duqF+/fqyiuLlUkiFmTNnSjGXYuk2btxYuzuXmQATYAJMgAkwASbABJgAE2ACTIAJqAR8fX1leL7t27erdbkVyBu3IPbhx5/nOkwRQx0dHQz2uxIShoH9emFAv96wsDCXfX6Y+asUHEkA/uPn70W4wZKy3se7AuoJQfjt98ZLL9a/l61Uhdyjx0/KPiSSKuECZEU54OMP3kP7l3vL08sipEBOQu7OXXsw8YtvZD9a5/OJH0pBU1bo/SAB9ecfpsjQDdTk7+eDhvXr4vPJU7Hj3906QuqNm1FYuHi5nCFYCMyfffyBDGtAFb4+3mhQLwiDh70lxVzy2m3UoB4sLfKWMojP7zOnw95ekwiN9lC+XFnJh+amayWxuHHDenSK5avWShG8UoA/SOxW7PTZ87JIoRtGDhushmSga/QSAvuAoW/I9guXrqCGCB/BxgSYABMoTAKar5gKcwUTzU2xcBWrVq2aUpRHb29vlBSBzsnIQ5eNCTABJsAEmAATYAJMgAkwASbABJhAbgTy42Gbn765ranfRqEQFi1dgQQRo9WQVataGUMG9lNFXOrzz2aN+Dx0UH9VxFXGUtzd4cIDlYw8bG9GRcsyefK+8+ZwDBvyijzX/hFz+7Z6mpqappa1Cxs3b1NFXPJYnfz5xzmKuDSuf58eqoirzEN7GzZ4gHIqY+HSyZ59B9W6N4a9qoq4SqWDvb1IDPeqPCXv10tCMDXG+vXuoYq4Sv+aNQLVfd+5fUepzvXo5+Ml2yn8wpz/LcKDB0lqf2+vCpj7+wzM/e0n+Hpr+qmNXGACTIAJFAKBvL/GKoRFCzKlg4MDYmNj4SxuwdAWdZW5nMRtIxSgnGLosjEBJsAEmAATYAJMgAkwASbABJgAE8iLwNChQ/MMsVBQb1xae8K40TLJl/Y+KOZqTMwdbN/1H9Zt2IxFS1ZI0ZW8a80yb+dX+r/cqYNSlMfbd+6q8VzXi3i3J06f1WmnE22hkRJ4lfb0UL1O00Ws3FCRrCskNBzXrkXIEA+79x7INod2xdr1m9Q1qZ48Wy0tLbW7ZCuT960hK1u2NMhzmMIbXIu4LrtQnFkyCh9B7YasTlBNtTpCJDkjgTsvo33qG8X/dRaeuiTKpqWl6zcbPCcPYPLGpTEUAoIedH0U6qJ2rRoiAV1FHaHd4CRcyQSYABMwEYFiI+SSUBsRESFi+MSBsm3q/4GjGLlkimeuifjwNEyACTABJsAEmAATYAJMgAkwASbwlBKgEAv0yCnx2aMmOHN1LSXjtOrjI09Oil/r4eYm49pSCIVjJ06hbpAmpq3Sn27f1zYKQ6AYJSijR252T3x+JktJTcXiZavw16KlOqIstSkiJZUNmZIITOn359y/0LRRQynoGupPdRTWICfzcHeXQu71GzdkF4rtS1amtKc8GvrhKBy7lPVvCK9cY4w8eU1hLi7OmP/nTPww83f8t2efnJJi/dKDjK6VvKM7tn9envMPJsAEmEBhEig2Qm7NmjVx5swZKeKGh4fLP7YKmAfim7E7dzS3RXh4eCjVfGQCTIAJMAEmwASYABNgAkyACTABJpArgYIkPst1wnw0tmoRLIVcGnJVeMjqC7n6gqj2+eBX+sBTeNvmZkrMVkrktf6fLbIrxcltHtxYesaWK1MGpUt7oMPLfbIJvNrzjh41AvXrBqHvoOGympJ7/fLjdzl6oiYkJCKnuL/xCQlyDidHTZI0uvuWjJK45WTJImmcIihTErfHbe5CcP9CxASm6zp+8rSIQXxWJEA7JAXpu/diMeX7mTAToSPaP9/2cW+N12MCTOAZI1BshNwaNWpg8eLFUsjdsmULhgwZIv5oWMjzVatWqU9bYGCgWuYCE2ACTIAJMAEmwASYABNgAkyACTCB3Ajk5JX7qN64ua2ptKWnZyhFWFlZqWWlQHFltY3CJChGoQOaNW2snKrHtLQ0GTqBKiiZF8XfVUTcHl074Y3hr6oJu6gPhVtQRFI617fOHV9El5fay+o3RwzFjFl/4OLlK1i4ZBkG9O2l312eX7ocoiZa0+6QlJSkehGXLVtGNlUoX1YeKV5wkrjT1sbaWnuILIeGXVXrKGHZ47So6FuSj6uLixSnmzZuAHqMGDpIelG/M3aC3M7GTdtYyH2cTwyvxQSeUQLFJtkZibYdO3aUT9Ply5fx6aefYsaMGZg0aRKOHTsm64OCglBGfKPIxgSYABNgAkyACTABJsAEmAATYAJMwFgCFCtX3worwZn2Ous3blZP/Xy91XJOBRJ269WpLZspVEKGEGH1bfW6fzB05DvyERsbh3ARj1YxEn5LiDix2nbs2Ent02xlG5ssYbVr5w5qfFoKsUAhIQzZ38tWGtzb1u3/qt2rV60iyzUCq6l1y1auVcvahTn/W6ieBvj7quXCKOgT/fzr7zDotTdForOsPSjrBokYuW1aNpOn2knjlHY+MgEmwARMTaDYCLl04cHBwejVq5f0xKWYuFevXgV9o0dGf2SpjY0JMAEmwASYABNgAkyACTABJsAEmEB+CWgnNdMu53ce7f6UyIsSi2k/SPyk+KpfT/keS1aslt0paVZlkTTLGHt1YD/Z7dSZc/j0qym4e/eePKfwA0eOnsDvs+fLc0rIVaqUCyhOr2Jbtu2U8XLpnHLP7Nq9Dx99+pXSjPh4TdgDtUKvQELy++++pdZ++e00dT61UhQOHj6KL76ZhnsiYTkZxejdtvM/GYKAzilZGcUIJiMxtEG9OrJMeyeBmvqT3Y+PxzdTfxRhDA7L81cH9YOTkyYkg6ww4Q8rS41HNHkGx9y+I9em6evUrilXWbF6vbwG8nhW7HJIKI4e1wjh2gnZlHY+MgEmwARMTaDYhFZQLrxu3bqgx7179xAVFSVubXAExcXVv+VE6c9HJsAEmAATYAJMgAkwASbABJgAE2ACeREg5yBKekYPU3njTv9pVl7LymRo40a/CTM9T9mcBpII2qdnVyxasgI7/t0tHxQ7l2K1KkaJwd55UxPP1tPDHZUC/GU4hLUbNmHbjl3iM7SbjO9K/akvxYC9FRMjEnr9iuhbt2TYAGUu/aOPdwW8NmSAFIxJlF749zIM7N9bpxvNSd639FDmVjpQG8Xc1Tba63sfTsR1kcjs599mywcleqNzxUhQ7dm1s3Jq8qOXVzmcPH1GJjRTkpr9u3kNOonQEhtE2ATi85kQzr8T+y9TxlMkYo+XdbQRuiYKQcHGBJgAEyhsAsXKI1cbhrOzMypXrixDKbCIq02Gy0yACTABJsAEmAATYAJMgAkwASZQEAIk4JrKGze39Un4Iy/cIQP6Ys6vP6JcZrxY/TEWejFylXaKz0rJtyqULyertEVcSqD268xpUiBW+n/12QQ0blhPnlI83LDMcAsUpmHObz/htcH9la6qh69SQWEO9a1395dBMXrJZs9fiIjI67Ks/Jgx/RuQRzAZCaCKNWnUAP+b/YsUlpU6OtL1/znrBymGEhsyRcQlIZiud+rkz2BjYyPb6Ie2DmBupoklbG6hOeq3q4NyKfTv3UMNW6HdzU14NP/43Vd4rm0rWU38SMBWrou4/jj162zXpD0Hl5kAE2ACpiJQQsTU0Q8BY6q5i+Q8J06ckPuqVUtzG0eR3CRvigkwASbABJgAE2ACTIAJMAEmwATyJKB8vvP398+z79PagcINXhUhHCwtLVFGJEPTFjv1r5lCHUTfipF9K5QrJ8IWZgmfFE4gLu4+vL3K64ik+nPkdH7sxCkoib+2rFsmk7fRfCTI2tragJKUaYuvOc1D9TExt3Hr9m05xsHePreuj7WNWEeLvdF1Odjbwc3VFXZ2JR/rHngxJsAEnm0C2b9ae7Z58NUzASbABJgAE2ACTIAJMAEmwASYABMoNgRIuKXQCcaYs5MT6GHIyPOUHqY0R0cHEQ7RId9Turm5gh5FzYi1V6YXdFHbG++HCTCBZ4NAsQ2t8Gw8PXyVTIAJMAEmwASYABNgAkyACTABJsAEmAATYAJMgAkwAYCFXH4VMAEmwASYABNgAkyACTABJsAEmAATYAJMgAkwASbABIo4AQ6tUMSfIN4eE2ACTIAJMAEmwASYABNgAkyACTCBok7AXYRCoGRmZCXM2GesqD9fvD8mwASKJwEWcovn88a7fkYJpKWlySs3E2+MSpQo8YxSKNzLVhgTX+L8OC0uLk4kdohBrEhCUU4kn/Dw8Hicy/NaTIAJMAEmwASYABNgAkygwAQomdnXn31U4PE8kAkwASbABPIm8HhVirz3wz2YABPIgUBiYiIaN26MSpUqITQ0NIdeXP2oBGbPni0ZT5w48VGnMnr8bZGRd/jw4QgKCkK7du3QvXt3/PPPP0aP545MgAkwASbABJgAE2ACTIAJMAEmwASYwNNPoNh45F6+fBkPHz7M8xkpXbo0XF0LL7vljQPXcPLXA7h94RaSbifK/dR5uylqv94oz709TR3CNl/C3k+3wrWyO56f3f1purQiey1z5swBCX7BwcHw8/Mz2T5/+uUUvp5yDN1f9sOPU4NNNm9xnahLly6YPHkyFi5ciH79+qFKlSqFfikzZszA1q1b5TodOnSAt7c3atasWejr8gJMgAkwASbABJgAE2ACTIAJMAEmwASYQPEhUGyE3Hnz5hkl5JI3Gz0Kw26fjcLGgUvUqS3trGTZ3NJcrStOhfAtlxCy/jxcAz1R8zVNLCNj95/6IEUK2Q8yxWxjx3G/ghEgAXfatGly8KBBgwo2SQ6jUlIyZMvDh5qwDTl0e2aq3d3d0a1bNyxfvhzfffcd/vjjj0K/9r1798o13nnnHYwaNarQ1+MFmAATYAJMgAkwASbABJgAE2ACTIAJMIHiR6DYCLkUL5LiRhqy+Ph4VeT19/c31MUkdef/PinnKSW8UFv/+BIcvV1MMu+TmuRe6B2E/nMRaQUQ8KydbEAcXCq6PantP1PrrlixQl5vhQoV0Lx582fq2p/ExZJYTkLujh07EBYWBh8fn0LdBt1xQFa1atVCXYcnZwJMgAkwASbABJgAE2ACTIAJMAEmwASKL4FiI+SOGDEiR8qLFy/GkSNHULJkSZPecq6/YFzYXVnl80KlYi/i6l9bfs8rtPQDPdgKnwAl35o7d65c6LXXXoO5efH0AC98UqZboVq1aqhfvz4OHTqEJUuWYNy4caabPJeZbG1tc2nlJibABJgAE2ACTIAJMAEmwASYABNgAkzgWSZQbITcnJ6k5ORkHDt2TDY3adIkp24Fqxd3nN84eA3I0Nx6Hn8jTs6THJeEG/uvqnPal3OCQwUn9fyOiJ+bEp8MBy9nlHS3U+upEB8Zh4Sb92FTyhZOvqXUtvsRsYgXDxvXknD2d8XdSzGIOhKJh/eSUKqKO8q38IWZee656Wjde5dvI1Z42lrYWMLRxwXlg31gbpP1NN+9GIOkO5rYvnGhGmE6MSZB53poU+61ysDC1lLdHxUSbyUg/rqGgdJgWdIyT6/clIRkRB+/Dlo7LSUNzn6ucK9ZGiU97JVp1GNy3ENQCAszEa7Cs245EPOow5GIFSK6k/CALt/SF9aONmp/UxRuxSRh1+7riIhMQHJyGtzcbFG1sjPq1nGHpUV25ikp6Th0JBqXr4i9RSfCwcEKlQKcEFitFDw9dIW4hMRUHDsRI7dZL8gdNjbZRdikpDQcPnZL9qld0xX2drrcw8PDcfPmTdnepk2bXC/5+MkYxCekyv2YmZXAvgNRuHDxLgL8nVC/rgfKldV9PepPlp6eIfrfw4HD0bh79yECq7qgdavysDAvod9Vnl+/kYCQsPso5WyNaqJvorjeA4eicPR4DJwcrRDctAyqVHLWGRt5PUHyu349Uew1BX6+jqiYyS+ndWiC/D5PNIau5+Tp2/Karl6Lh1cFB9QSjPX3RH31jWLVkpC7bdu2xybk6u+Bz5kAE2ACTIAJMAEmwASYABNgAkyACTABJqAQyFL4lJpidiQRNz09Xe66YcOGJt09iY7aMXGVyU/POQJ6KFb7jcaoMypLRN73+XYhPkagycS2qNKnltJNHs8tOo5TfxxCQOdqaP7Ni2rbldVncfSnvfAV3r7WLrY4v+iE2kaFck280XbWyzC3yi4EUpzavZO2gmLe6hvF8e24qA9cKmlCIBz5YQ+ubtPcxq30jTl1ExsHLVVO5bHzilfgWs1Dpy5k3Xkc/GanTh2FV+iyeoBOnfZJzJkobHtjtRSvteup3HJqB/h10E0kdftctNwL7bvpZ+2wc8x6nWF2pR3Qfn5PKZLrNBTwZMXqELw5erfB0SR8rl76gk7b4aO30Kn7Rp067ZOfpgWjW5csT+VUIfr27LdZdpkxPRhdO2e1KeM2bbmG19/eJU/PHeutVKvHkJAQtezhofucqA2ZhTEf7MO583cxbEg1LFx8SQql2n1+/7kFOrzgrV2lU54w8SDm/XVBp655cBnM/6M1rAy89lavC8PnXx9By+Zl8fprgej1yhadsXSyZtmLqCdEcbLXRv6L9f+Ey7L+j+DGpfHzj83h5ppdqM/v80RzR0U/wOhxe7Bz13X9pTByeCDefzcIlpbZhXqlMyUcI6OwB6mpqbCwKJxflzQ3GxNgAkyACTABJsAEmMCjEYiOjn60CXg0E2ACTIAJMIFiQKBwlInHeOG7d2tEOC8vLzg5ZXnFmmIL5AFbb0wz4ZGrme30vCMywZdXmwB4CI9VxTzrlFWKj3ykmLVklbpVh31ZR1xYekqKoJF7wxG68YIUgLUXSU1KwZpuC1ShtHLPmjJ5mfQaPnANkbvD8DA2SR1CArKyd5qTPIvJm7hyj5pqHyrYeWb3lvWoXQa1RzaS/W6fjca1nVkCo87gzJOkOw/k3uiUPI2r9Q+SnsIhG86DxGMSaa2dbVCuqU/miKwDefFSe5lGXlLEprWijkbK6zzx6wEEf/l8VucClmJjk/HBRwfk6LrCW7ZNq3LSY/VaRALWrA/NJoJSx7i4ZNm/ahUXtGlZDj7eDkhJTcf2nZHYsi0Co97dLb14O3X0kf2cnKzQq7s/Fi+7gr+XXDYo5C5aqhHgu7/sJ17DmgR6cnDmjytXrshSlSpVYGaWs/CoPea32Wfl6ehR4vVQygbLVoaAvHVJSN20piNqVM/yBlfGrd2gEVh79whA+XL2+Ovvi7hxM1F4K98QPMJB+8vJyIv31RE7ZXOnDj6oUMFexJa9L0XbJK0YzFcj7ss+NFeVyi5ybxGR8fj1j7PYve8muvT8B/9u7izCR2R5ABfkeSJP6HYd1iLmdpL0cB4ysIrwxrXH6TN3MHfBBfz86xlYCa/vce/WzumSQL9TFLt69WqhhW05efKksowMD6OecIEJMAEmwASYABNgAkyACTABJsAEmAATYAJaBIq1kBsVFQV6kDVt2lTrskxTLCHEpJqvNVAnI5E1SXi/ercNQMWXA9V6UxeaTBKevL01nry1RjTC5teWg0TXMLE+CbHaduqPw6qI23FxX1WkpT60d/K+tXUrqQ7xea6iWs4QCjUJuS4Bbqg5LOs61Q56BY+gsqAH2WXhQZyXkHtmrsZrmbxrOy3rB/syjnJsVeGl/M+QZVKYPfbjXoNCLnUkb90WU9qjhAgRQPs7/st+HBUexReXn0bwF0LIzdL65Lz5/bFk+RUp1lIog4Xz2sLBPiukAQmgV0KyJ9erVNFZx8NUWXNgv8ro3OMfGTJgzv/OQxFyqb13j4pSyCWhUnN7f5ZITmEGSCjV9AuQR/0fly5phN78JvLT9oTt0zMAXXr9g1On72DWH2cw83vxBYUBm/x5IwzoV0m2vP1GDfQbvFXub+2GsFyFXBJ8KUTCljkd4e3loM58JSQO9lpcx46ujfp1PLIJ1g3qeUhv3pDQOOw/GIWmwjtXsYI8T7/8dloVcbdueEmKuMp8FFph9Li9+H7GSfHcBOi0KX3oWLas5rVOZfKK9vPLWcimPgUxuptg5cqV6tD8PsfqQC4wASbABJgAE2ACTOAZJ1CqVHZHhWccCV8+E2ACTIAJPIUEjHPvK6IXvmfPHrkz8lKsUaNGEd1l/rZFomel7lnXQmIyJVcj049PS3Wn5xymgxRtFU9bWZH5g7yHtWPxarcVdvnyGo1XKInSiohLa1LM3hqv1ZfLR5+4oQrR+vsh8ZZEXMV82mWJ0A9FnOJHNQut2+r1Y+GWEMtSXFl9K1/OTg0ToN/WtYuvrCLxUttIpCSRk2z5Kl0v5lVrQmU9iZ+NGnjKsv6Pixcvavpk3uqv327ovEmj0jr7tLW1wJABVWXXlWLN1LRMN3OtwSRo9+mVJSaTV2zHFzXhBSh+cF729WcNdURc6u/v56gTN7itiLdryOu4sdivEhuY4u5qW36fJwppPe1HjZfrJ+PrZhNqX+7kq661d78m9rD2ekrZysoKpUtrBGXt8BZK+6Mcx44di9dffx2tW7fGwoUL4erqip9++gmOjprXyaPMzWOZABNgAkyACTABJsAEmAATYAJMgAkwgaeTQLH1yE1LEwmiDmtEzKAgcct+IcWvfNxPe6mqHjDTS7BlK8ISkFFSMm0j72AKQUDmJbyEi5Klp6WrAi0lLdM3j9pZ3o4JUfGg2Lf6pi9AU3gGxZJFuAhrp+yxVJV2Y47tn6uACRMPSK/czj03onf3AJngrLLwurW2zh6LWJnzwYNUKcgeFAnBrkXE4+69h7Lp/v0UeaTb+bWNRGHycp30xWEsWHQR5OlKichIcFzwt8bbtl/virJOe5xStrHRXCcl9jPWGjXwyNa1Tm1NnGRqiBZJ2sqW0U18FljNJVtyN3eR+I3s1q0H8pjTDxJhm4nEZsbY2XN3QV62oeFxMsFcmnitkFHiMzKFozwRP/L7PEVFJSpD8e2045jzP92Yv9SorHXuwl21r6FCSopmT8pzYKhPQepWrFihDrOzs5OibqtWrdQ6LjABJsAEmAATYAJMgAnkj4Czs26C3fyN5t5MgAkwASbABIoHgWIr5FJcSSVJUJMmTYoHbSN2WVIrDILSvYSI1WvI4iKybv23NyCEGhrzuOqSYrLENG0BVllfW4RNuCHipmrFHKY+5Jmsn9iNvJMVyyAV9BHN07Mk3h8ThG+mHpMhB06dPihnJFFy1MjqGNi/MhwddGPWXroci259Nsnb9rWXpzGKOKhdr5Rf7uQnhVwKQbDvgCZ0wNHjtxB+NTNmrFaCNGWMcqxcuTKOHDmC0NBQpSrPo6urRoDV7qjtCUv70BdyPdyzjzG3yGKuPZd+2dc3uxCv34fOJ35xCL/PPqfTpHjiKpUklGtbfp+n8Gvx6nAS1fWFdbVRFB5qxe/VrqdyYmIibt++Lat9fX31mx/p/MCBA3L+EydOYMKECfjiiy+wadMmLFq0CCVI+WdjAkyACTABJsAEmAATYAJMgAkwASbABJiAHoFiK+QqSc4owVmFChX0LqvonmZkeh+aYocW1llPX9pDXfHLFPM/yhxmIpGUYhkpaUpRPWakZwmx+oKt2ukxFMg7luLHLhUeovtEbFZKWkaC7NdTjmHdxnCZGEx7G2+/t0cKgxQK4atPG6BhfU+RoErzPOzeewM9+2/R7q6W3d1sQEnA1qwPw9IVV2QM2OUiARlZuzblxS38Wd7G6qDMQsWKmpASSogF/XZD56kpGi9X7TZt5pZaYSW0+xS07OJsnedQYquIuCOHBUqhnMRkJbGZEmPY0ET5eZ6srbO++Ni742WZkM7QnHnVXbt2Te1i6vi4bm4a72hKqHbv3j1MmjQJhw4dAiVV885HCA11g1xgAkyACTABJsAEmAATYAJMgAkwASbABJ56AlmKRzG6VPKSU0SWouiNa2GlETFTk7KLq4nRuuERHgW7Q4WsGK73tbxzH2VOU421ccny7jR0zQ+0wkQYCqtgqn0YMw95or4xojoWzG6DEwd7YtiQanIYJQa7fCXL65lu2T9+Mka2zZgejFYtyqkiLlVei8h6bg05DJNgTEZhBWiuZZlCbt+eWbF/ZQe9H4o3KL3mFS90vS7ZTqNE6AR9uxWTFfKhtPBGNqVRqIi8bOv2CNmldcty+OiDuqhQ3l4Vcanh3HlNmIMsiV93RmOfJ1/vrDizuXnj6s6e/Uz5HUMtZcoYFzYi+yx517Rt21btpCRvVCu4wASYABNgAkyACTABJsAEmAATYAJMgAkwgUwCxVLI3bdvn/oE1q9fXy0XlYJNZniEeD1xNT01Hdf3XzXZNin8gCLmnlt0It/zWtlrvCj1Y+/meyJDA4SuV6qyu2wJ33Y5W49rO7OSftmXNe62/GyTFEIFec5+8F6QOvPho7fUcnxCljBfUiQP07cly7Nfp3af4CZlUCbT83bEW7uk5y+FFSBhMzfz9/dXm8lj0xhb/89VGYNXu++OXZHqqZvro8UXVifKR+F+vCberF2mB7P20D37buYamkK7L5Vze54ohIRyfZTYraB2+bLm+axZs6aIX1x4vyq1RWIlJm9B98zjmAATYAJMgAkwASbABJgAE2ACTIAJMIGnl0DhqROFxCw9PR0UX5IsICAA9vb2hbRSwad19HKRgy+tOoPbZ6M0Ewk3wxOzDoASlJnS6r4TLKcL33IJJ38/CO3b51MfpODgN//i1smbBpe0L6vxXIw5dRMkrKYbCIFgcKCRlVX71ZY9Q9afR8SuLEEt7uo9HP1pr2zz71gV1s5Z3rtGTm2SbstXhUivWP2YrJu2ZN1SX71aKXWt8uWykoNRkrK0NI3vKHnfzph1GgcORat9DRUohMCAfpVlk9J3QP9KyCvMQdmyZUFiItmaNWvkMa8fFHv3z7lZsWhDw+LUsAbkfWyMB21ea+S33c9X83pbuyFcJolTxoeF38f7H+1XTrMd8/s80QQTJ9ST88yZf14mptOelJ6v/SKMxhvv/IfYWMMJ5Oj3zN9//y2HtW/fXns4l5kAE2ACTIAJMAEmwASYABNgAkyACTABJvBECGR3K3wi2zB+0XPnzokERQ/lgKIYVoE2FtCpKo7N2IuUhGSs7roArtU8kZqYjNiwuzKJF9WbyvzaV0HIuvO4uuMKDk/9D+f+Og7Xqh5IESIuCbS0llfrLI9O7XXLNKoACmuQcPM+toxYKffmUF4TrqHV9x3h5JslYkafuIFDQhRWLP56nCzeuXAL6/tqBC+qcK9VGg3ebynbAroE4vTsw/K6Nw9bAc865WBhY4HIveGynX7UHtlILT/uwukzd/Drn2fx1higSaPS0luWPHCVBGQUCqF6YBYDa2tzIcRWwvy/LoIEwrXrw+S402fvICQ0TnqB5nUrf4+ufjK5mnKt3XJJcqb0oeOAAQPw3nvvYfbs2Rg+fDhsbfMWvz/5/BBWrA6Fs7MVdu66LqcjD+ChA6toT/3Yyi938sWU6cfleg2br5DsbGzMZVxiqswpYVx+nyeai9ZavTYMW3dEYNS7uzH9p5OoXMlZJjc7eeq2mgDtk/H1kBWghEZqjGJwK6EVunbtqlQX2tHOzg4JCQmIj89K1FZoi/HETIAJMAEmwASYABNgAkyACTABJsAEmECxJFDsPHL379d47llYWKBaNU0s08dFvoTwqCTLK6u8g5czmn/zorot8spNvJWAhuNboWpfjZdqCf2YokqmeuWojhbr6ffVaoPYUpuZndFkUlspxJIoS6LuDRHCQYq4bQLgKPZjyCxsLNF+QS9UH1wPNq4lZX8SZumRlqyboCw5NglRRyPVB62jmHb9vSt3lGpQErOXlvYDed2SUT9FxCVxu9vGwXDyyxJKqU9u16rD3QAnGp8fq13TDZUqamS8vftvSs9NbRH3o/frZpvu4w/ryeRo1ECiLSUvIxG3V3d/zP61ldo/p+1Rcq+G9T1kP1q/amWN97Y6MIfCCy+8AFdXVyn2bdiwIYdeWdWfflRfrkMxfRURl65187qO8NSLj6vsVYdv5lRmSmPW1DolxbNXOeo06p34eDtg0by2angJYk4J0CjcxKolL6BRA085Qn+ugjxPNMfc31vhq88aSoGYnqONm67K9eh5ozVHDK0GRwdLvV1qTufOnSsLvXv3ltwNdjJhpRI+Y+9ejae6CafmqZgAE2ACTIAJMAEmwASYABNgAkyACTCBp4RAiQxhT8m1GHUZJ05oYsnWqlXLqP6P0omE1NiQOzATgqZzgCvMzAtfN0+MjgclPjO3NJfxc59U2AJ9bqlJKZJFWko6nHxcYO1ko9/liZ2TsHfjRiLuxyfDxdka5crawdHRKtf90BgSfa3Fc0uennmFR1AmozAOtRoslfFgp05uoorCSntux5UrV0qvXAop8s8//xj8QqFN+7UyadgP3zVFj67+oARnFFbBSyQWK50Znze3NR5HW4p4DVA4hTt3H4LEXU+PvL2LaV8FeZ6U66Hkclcj4mVICRJxy5S2E/yUVt3jlStX8Nxzz8lKElY9PTUCs24v057NnDkT06ZNk5NScjsfHx+88soraNGihWkX4tmYABNgAkyACTABJvCUEXicn++eMnR8OUyACTABJlAMCRS70ArFiTElI3OrUfqxbrmkhz3oUdSMvH/JC7coGiXGUpJjGbu/goyhuf9eellN6tXhRS9jl5P9OnXqhI0bN+LmzZsIDQ2Fn59fnuMpKRg9ipKR6F0xwFBAg9x3WVDmNCt5Iet7Iue0GsXgDgwMBIVUeBwiLu1jyJAhSExMxKpVq+RzS89v8+bNc9oi1zMBJsAEmAATYAJMgAkwASbABJgAE2ACzyABFnKfwSedL/nxErhxMxEUl3X3vptqArJhQ+i2/ty9fvV3aW5ujt9++02/ms9NTKBv376gx+M0ink8duxY+aBEa/fv34eNTdES4B8nD16LCTABJsAEmAATYAJMgAkwASbABJgAE8hOgIXc7Ey4hgmYlMAeIeC+NWa3OiclVnt/jCZWslrJBSaQScDMzAxOTvn3WGaATIAJMAEmwASYABNgAkyACTABJsAEmMDTTYCF3Kf7+eWrKwIEKMnYyOGBsLWxQFAtNzRu6Alb28L5r9e7ewCibiXKuL1F4NJ5C0yACTABJsAEmAATYAJM4KkgEHUvAztOp+HwlXSERKUh7kFGjjkX9C+YstI42paAn6c56vmboVV1c3g655CwQX8wnzMBJsAEmAAT0CLAyc60YHCRCTABJsAEmAATYAJMgAkwASbABIoPgceR7OxUeBoW7U7F0dA0WAp/DHEDFfIrw1KGcRFBCympQB1fc/QJtkANb/PiA5p3ygSYABNgAkWCQDa3wJfG3S4SGyu8TZSXU/cRWez7Pley8JbhmZkAE2ACTIAJMAEmwASYABNgAkygWBMgT1wScU9cTYO1SHGRXwFXuXgaZy4EYDMxB82F3YCHk1mBPHOTkh5i87YdcuoWwU1EWC5HZRmTHzdu2irE51TUrxuEMqU1yasvXQ7BuQsXRc4Pe7RsHmzyNZUJj584hasRkfD18UKNwGpKdaEf09KE5/XR47ArWRLVA6sW+nq8ABNgAkwgPwSyCbn5GVyc+y7a+oCF3GL0BNIfUzJK+MWWfwIpcXFIvn0LKbH3YFuuPKzdNW/C8j8Tj9AncP/SeaQnJ8Pa1R1Wrm4ws7TU7/JMnfP/1Wfq6eaLZQJMgAkwASbw1BOgcArkiVsQEZe8cPWNBF0L8ZGG5qS5ewvP3PxaYmIiPv3yWzls4dxfC1XI/ejTr+Q607/9UhVyDxw6guk//YKKAX6FKuTO+d8i7N67H/379HysQi6t+8tvs1FSCLn/bV2X36eH+zMBJsAECpVAjn81AkrbFerCT3LyyDtJeJCchoWbi79Xbqr4dpSy3GsbiZ1Pk+B59uxZvPTSS3B1dcX+/fvFrUziq2w9y0hNwaFX++FhTDTKd+sN3yEj9Ho8m6fJt2Nw+uOxiNq2SQVQ7eMv4d1/sHrOhUcjcPazj3Dn4F51koCRo1Hx7bHqeXEsFPT/U7IQtKtW1Xgt7Ny5ExUqVCiOl897ZgJMgAkwASbABJiASoBi4lI4BRJg82Mk4maka5xRMjLSRTxdM5QwMwfV01w0J83du/AcWvOzXe6bSeDM2fNSxGUgTIAJMIGiSiC7IlZUd5q5LyvxB+/5xhZ4tbMV3u5jhVfaW6Jxjfx5aZay13jMkVducbe+fftK4YTEE+UxefLk4n5ZOvv/6ivNt8CDBw82KOJS5xIWlqgy7mPEX76I8998hjuH9uvM8TScHB4+AJd+/C5fl3L55+mqiFvmxU7wH/EWnGrUytcchjofOBSNsn7zUbP+EkPNz1Rd+W694Dt0JFzq1JfXTcxv799drBkU9P+TlZUVXn31VXntU6ZMKdYMePNMgAkwASbABJgAEyAClNjMgB9JrnAUETctLR2NK6Xjm/42IslZuirs0mCak+Zmy5nA4Ff64JsvJ6JTh+dz7mTClgcPkvDhJ5+bcEaeigkwASZgegLFSshtKLJ7fvWmDV4QQm51ke3Tp4wZ6lQxR892lvhypDU8Shn3PamtlTnoQXbqSorpqT7GGQMDA9G4cWP5sLPTeFFnUFrUImS0n7feegujRo3CtWvX8rWzf//9F/v27ZNjevXqletYx8AaqPfrfNnn2NvDRCiBmFz7F7fG9KQkcQv/w3xt+/b+PbJ/xbfeQ+3vZ6HS6A/gXKtOvuYw1Dk1VeMFnpTEbz7LdemBKmM/QqOFq+BQWeONeu/oYUPYilVdQf8/9evXT17n+vXroSQfKVYXzptlAkyACTABJsAEmIAWgbgHGfnyxlU+iZEXbhmnNIx5yQnVKlijeyMbkLCrGH1ypbnZciZQu1YNtG3VAv5+vjl3MmHL9zNnIfL6DQRWrWzCWXkqJsAEmIBpCQj/1uJhJNL2es5S/SN6734GIm9lwL+8GWysgJI2JfBWLyt8POshjNExySs38o7IPiq8cmv4F9+YlhMnTlSfwI8//hgLFy5Uz4tKgYRcEnXIhg8fnq/brefNmyfH9e7dG6VKlZLl3H64t2yLap98ibOfTcDJD95BXSHslsjvV+i5LfAE2jLSUhGz9z88iLwmPI8tEL1jC+x8/ORD3KOV647IQ5nMsWr1XPtxowkIiOfCqXot3L9wDknRN00w4ZOfoiD/n7y9vdG2bVts3boVCxYsQK1aj+4B/uRJ8A6YABNgAkyACTCBZ5VAHm+3DWKhkAoU/u7tl2xhlflRc/X+ONFXfHDVsoLMrTVcLW7eugMrVq/DmXMXZF3liv7o2P55dO74ovi4kP3zQkhoOJavWotTp88gNPwaatUIlMnM2rRqjvLlyqrzFqRA+RJWrtmAYydOivnP4u69WNSpXRPVhDjao2tnlHJxNnrav5euxMlTZ9C0SUN0eKGdOo72v2T5Khw5dhxUpjnLlS2Ltq2bo5O4ZkcHB7Xv/fh4TP7uB+ENnQEvr/IYMXSQ2qZdoFi8y1asgZ+vN0aNHIYRo8ZoN3OZCTABJlBkCBQbIbdVPQtVxN12MBXrROZQxd57xQrl3M1gZ1sCXqXNEH4j65tOpY/+Udsjl7xyi7OYq39tT8v51atXQR65ZAMGDDD6srz7DRaJp9yQfPeuTO5l5ZK3AEyTx546DnPbkrAPqGT0WgmhV5ASFwvnmkEivkP2N0lGT2SgIwm4YfP/RNjc35B084bskXgtHDG7d8qyhZ09Wu/R7NnAcJ0qcxtbnXM+KRwC5iIhAlnaw/x5ThdkNwV57T28FSW+EIiQr3EL+6w3uLmtX5D/TxQGhYTcFStWYPz48XBxccltCW5jAkyACTABJsAEmMBTQYD8a0nETRPv49vVKoEa3pr34PvO3cfGQ4lwcDL9x+8p02cI0fSUDj86p0dIaBjefWukTtuqtRvw+de64dr2HTgEevwxdwHm/PojAvz9dMYYe3IzKhrjJ36BEydP6wwhkVQjlK7GV599LEVjnQ45nNCeaJy7u5sq5FKitZF6+Sju3L0Hepw6cxbrNm7G7z9/Dwd7ezlrXNx9/LN5myzXqlndoJBLYz/85AvZ54uJ45H0MDmHHXE1E2ACTODJEzD9X5JCuqZy7lki2Y7Durdz7z+Vhm6tNVEiAoSHrjFCLm2TxFxKelZUvHJTUlJw9OhRXLlyBVFRUXAQ3yRWrFhRxr718PAwOdnbt2/j5MmTuHDhgvymtkqVKqhXrx6UEA2GFjxw4ID8drlGjRqwF38cQ0JCsHfvXtwVoqmfnx/atGkDGxsbUCZV5bZq7WRsx44dw/3799Wpycu2cmXDt67QWmSUMCmnPupEeoXSL7ykV5P36d7u7eFcuy4aL16bd+fMHue+mohbu7bjueNXhAhsWrH08s8/4PKMqXKlcl174fbeXbD3r4hS9RsjeudW3Dt+BBniG+9HtbDw+4i4ngBPd1vxDbwdDh6OFt9ux8DdzQZBtdxQPTBvITxSjD9wKEq8WYyDr4+juAWqvMieq+txoOwzPiEFx0/ehpn4L92kUWmkpmWIb9pvY+9+jRdrrRquCG5SRkcXj4tLxv6DUbh6LR4xt5NQtowdKlV0knuzt8vZo/7hwzRs3xmJsKv3ce9eskiYZw0fLwc0Fus6ZMbKVvalfQwNi8Pps3dx8dI94Qlug2pVXFCvjrtIIpj1e0i7/5MoF+S1d33NCpz/9nM0mLMYrk2aGb3t/P5/atiwofw9kpCQgMOHD6NduywPipwWPXjwoLibQnN7YZkyZYTHhFdOXbmeCTABJsAEmAATYAJFjoASJIFCKjiVzMCwdpovspMepuOrJVGwtLKT+T5M/W6SBNtyZcvgLeFF6u1VAWfOnsNfi5dJT9W//l6Gfr26w9NT81mS+ioibtPGDdC/T0/x/rgUzl+4hO9/+kWKoYOHv4WVi+fBTSSazo+lC4/XceMnql7BXTt3RHvhRVvS1gaHjhzH9Mz5ydN1w6rF8PRwz8/0at9vpv4gy3TNY95+Q4jOvkgQnz3XCwF3waKluHQ5BMtXrsUgEV/XGKP3n19Onio/v74+bAgqV6qIE8ILmI0JMAEmUFQJFBshNyQiHRU8NWKt+FuAhKQspOSJq9j58Ly9cZW+SngF8sh90l65JOD26NFD2Vq249SpU9GlS5ds9QWtWLlyJd57771sw0k0nTlzJij2riGj5GpkFMJh1qxZ2LVrl0635s2bY86cOQgNDUX//v112uhk0qRJOnXPPfccfvnlF5065eTSpUuyGBAQoFQ9M8cMcStW2Jxf5fVWensc/Ee+g4MDe8pb9/1ffxv0iL9ySXoQ5wQlpf6nVwAAQABJREFUI9W4+M/zFlzAr3+exfPtKogvEB4IkTVGZ8o3RlTHh+8FiTeeWf/PtDusXhuG19/WfR2UKV0Sy/9+Xoqm2n2pfPFSLHr22yyrj+3rjnYd10lxVrvfhHF1QOuSzZ53Hh99elC7WS3TOnN+a4Wa1bO/0Tx34S569d+SbW5l8IWTfbKJucnii51vpx3Hz79lf/PWsnlZ/Dg1WLypFb+A8rA08WbyWTa6hc/f319+UXT58uU8hVy6Ba9Pn6w325QwjTx52ZgAE2ACTIAJMAEmUNQIKIKtoX1pvHHTMaq9DUpaa3p8v+oG7sZbCicdK+GooPk8a2hsQesorMBfc39VPVArBvgJR5jyGPbGaDnlxctXpJBL77e++naarGvVIhhTvvpUOvNQhb+vDxrUq4OuvQdKQZO8Wgf1z3pvJgfl8WPL9h2qiDt61AgpEitDSBytG1QL/YeMkFW//D4HkyaMU5qNPsbGxiH8aoTs379PD7Ro1kQdW2nU6+J9/x3pfXvwyFFVyHV3c8XsX3+S/RQvXXWQKKwWHso7/9sj4+IO6t9bu4nLTIAJMIEiSaDYCLnbhRdui7qa7b7c0hJ/rk6G+NIPdiI2btOamsRlSclAZLTxQq6S9KwoeOUqXqrkFduyZUvpjZaamipDC2zbtg1jxoyBpaUlOnTo8MgvpP/973+qoBocHCzjWSYnJ2PJkiUg0YUEle3bt8PNzS3Htb788kucOXNGCr5169aV/f777z+QBx6Zp6cnxo4dK8v0Led332lu36FESGVF/CLFfH19lWK2oyLkkqevqe3Ee2/AoUogfAYMhZmVYc9RCplw6YdvYe3mIYXT8AVzEHfuNCq/+yGsROgGQ0bhEK4u+h9i9uxE3Z/nFjjcQqqI5ZSaEC+XcKnfyNBS0jvXYENm5b1TJ9Rm5ZZ/tcJAYdMWTSK6Pj0DUFN4xe7bH4U168Mwc9ZplPEsiSEDq2QbRd61JOIGNy6N5s3KYsu2CPGNezRu3EzEjzNPYdo3WW+usg0WFcPe3CWFVhJJyev19p0k8W36VXE7U5an8Y0ojSjaumU5EV/LXXgc2CE27iEWLr4kReEXOq3H/n+7wquC5vYpZZ1Pvzws5/YWHrgdXvRC5YrOuBWTJG7PuoGdu64jXXgC69vrb/+HjZuuymriQOtFRT/ArN/PyDGvjtgpPBSez1HUVsJ4xPy3Q3pLlzDX/G7SXye/5wV57cWePiG8b79AtY8+V5OwGVr3ltjrpR+moN7vC6Ds31C//NZpC7n5Hcv9mQATYAJMgAkwASZQFAko7x7T01JE2L90pKWbiTu2zNStUjKzJpUz0LiyJtzW8SsJWHvgAewcnIRHrpV4D2ma94bqgqIweEA/VcRV6oNq1URJEfKL7pIkcZMsNCxceulS+Y3hr6oiLp2TkeA5WHixzvz1TyxZtirfQu7mLTvkPOQp27tHV1nW/lG1SiX06t4Fi8Xca9f/g48/GCPY5Y8H3bFKwjWFQvh76QohvlZBYLWszyhj33kTQwb0lZ+blbWtBHeKAWzIrkVE4nPhjUs26aMPYCHykbAxASbABIo6gWLzmyouIQObD4hYQw0sUM3PDN+9Y4P4xAw42Gm8BOmP6sodxnkgaj8p2l652vWPu0xep0uXLkWdOnV0libhs2fPnjhy5AhIgH1UIffOnTuYMmWKXIMSj5HYqgTAJ2/bF198EdeuXcMPP/yAzz//XGcv2ick4r7//vt47bXX1PH0Le/x48dlNxKBR4zQfONKoRUUIZeupXp1jael9nyGyrQGmY+Pjzya6kdS1E1Eb9+C62tXImLpQgRO/FrnNnPyhr2+ainOfvGxFFNLVvCG37A3EbHib8SdOYWbG9ei8tgJqNCzn86W7h45iDOffiiTXVFDQlgI7Hz9dfoYe2Lp6AiKgUtibqTYi0udesYOlf3kNaxepo6x86uolnMraHvCDuxXGS7O1pj31wV8P+MkXulbSbwpynqjqszT+SUfzJzeTIqbbwovWupLXq1/L72MqZObiNeH0jP7kUTfJQvayVAKSuukCfVx/YbmCwGqe0F4CvfrXTGbd2/vHgGoUutvOWzZyhAR/6umMgVOnr6NXbs1cYV/mhYswyIojSOHBeJKSBzs9EIr/Lfnhirizv+ztQwPoYzp3NEHzdqukiL12vXhoGs2ZA6Vq8lqet5IzKVkYaawgrz2bm5ajzsH92J3pzbwGTQMAW+8q7OVB9cjQOEZorZslPW39+xCmY6m8/pXvqQ5f/68zrp8wgSYABNgAkyACTCB4kyAvG67NzLHwFZO2HYqEdPWPBTvg81E+DmRgNs6DW+0d5KXlyw+mn626AasRQ4OEnFLFIKISwuRB66+0Z10Ls5OUshNS9U4SIRdvaZ2o1i45mLP+hYWflVWRUXfkmNJDDbWLl0JkV2bNW2UoyDaqEF9KeRSR4qnS6Jvfoyuq2uXl/DHnP9Jz9wBQ0fKORo3rAeKf1uvThD8/XJ2FNJeiz67fvzp17JqtPDmpSRnbEyACTCB4kAg+2/vIrzrXUfScOmaxuOWxCFFxKUtz1+XgoNnsrz4jL0MxSuX+i/c/ORuhy5XTngb6om4yjV07txZFike7aPaunXrpNesq4h59O6776oiLM1rK2K80i3NZJs2bZLHnH6QF+6wYcN0xtM3qop3bk7jjK2PjY0FxfAlo3APpjQbz9Jouf0AfMUffhJbDw7uhWNvD5dLxF+6gP19OuPkh5pbkap+OAnB63aAPCsbL16HwEmTZb8zkz7Enpefx/2L5+T5yfffwv6+XaSI691/sExCVlARV7lW31c1QnjEskXY3qwObu/fjQc3rsvkakof/ePJD97B0Tdfxa7nmgrP4PnSczjoh19BwrAxNvCVyjrdhg/VCJMUl1Y/5ILS8a3Xa+h4qLZ/PutNUGzsQ6WbwePoUTV1RFzqRLF1qwrvXMXqBrlnE3GpzVHcnvZSe81a1yLuK93l0dIi61ebIfHZ308I5XrxbmfP1wiOnTr46Ii4NCH1f/F5Lzn3tp0R8mjoh0fr56RoSm2Hhw/Avl4v4fi7r+PqwrmGuhtdV5DXXuX3JqDeH39Jb1xKmLezZT3c3LxBrhnyx0zsbNVAirhuwS0RvHqrSUVcWkSJcUtCLr1RzsvoyywSf+nh7u6eV3duZwJMgAkwASbABJjAEyFAXrcNAzQ5GtrUKClF3dSUVJngbFg7G7jYmct9zVp/A9GxlrC2tpZeu7n4NjzSdTg62Bs1PiLyutqPkn+t/2dLtseZcxfUPnfvxarlvAp0B2bkdY0ThUcu7+PKlPZUp7p5M0ot56cwYuggfDJ+rPTMpXG07jIRE5dE2Rc798R7H34iReK85pz/12KZHI2E8E4dXxCfkRPVR3y8xqmEPJqVeooBzMYEmAATKAoEio1HbinHEnh/oDWsxN9M+hUadj0dsfEZKOtuBg+XEhjY0RLBEeaYsUTEV8inKV65p0NT8znStN0fPHiA1atXy+RAERERMoEYrRAvbrMnU4RNeVLAHxQ6gYzmUgRi7anu3buntlMfEnwNmaGxhvoVtI5ugVGMwj6Y2iydXVBl7Efw7jcIl36aisgVi+US5ElJScT8h4+SQq+lo+YbdWo0E6EtvPoMQNlOXRE+7w9cFGEXFCPvxzIvdkLF0e/Dztu4b4GVsTkd/Ue8hXRx7Vdm/Yjk2zGy2/U1y0EP10bBIJHZoYpGaFXmiFy5RClKj166DvcWxnmF1q/rAf3EYT7eDrKOQihcvy6+6NBE0VDXoAKJnNrmJpKkKXZPJClzFl69OVnHTCE2p3alnsIbUCiF8yLu7bWIBCQ+0Hjfyz2JTvdidV8jJAT7+TrK5GuvDNkmYmRVQcP6HqghErc5Oma9tpT56Xj+gua1T+EkLl3J/sb1mki0RkbevjlZCeHZ4NV3oHzeSLyl1xI9NPWDchqWZ31BX3vuzVrBrUlz3NiwGhe++1LuhRaLEd63joE1UGXcx/K1lOcGCtBB+/+t4vWf0zT0JVBeXx7lNJbrmQATYAJMgAkwASbweAmkY+qqu5g5orT8bDq4jSMu3bgtPXLb1Sopt3Lh2gMs3pWAkoUYUiG/1+zqkuUokVd8Wnrv6iqSUhtr9F5PCXkQnxlqz9DY2Lg4tdrJSfczhNqQR4HW6tzxRXTq8IK4yy4UR4+flI8t23bKkTv+3S3Cr10Rd/3NFkm4c/4ccvqMxiGHkqO1el7jOGVo6ebtOsrq+X/8rBPGwVBfrmMCTIAJPA4CxUbI7feipfxDSVB+W5GM82Eaz1w6f6m5BVrXs4B/eTN53H44f4Isxcglo4RnT8pIYKXQBvpirZ2dnfSgNdW+tL1687rlmb6BzEnILV++vKm2ZHAe8g4mT1wK83D1quYWH4MdH7HS2tUdTtVqqEIuTUchDRyrVYeFvYPB2andoWqg9HZVBFbqSMKYjUdpg2MKUlnC3AKVRn8An4Gv4fa+3SLe6WdIuqn5ppu8c3d3botGi1aLsAv11elb7zmBtMQExJ48jtOfjJO3zpMXZqMFK/KM1+vhbqvOo13w8LBFfGgKIrXCHSjtJPxaWWm8DpQ6c62kaBl5fHNN8W7zsjXrwjDirV3ZutHaJDCTPdSKqat0nDihHsa8v1fGyf3ue03ID2rr36cSKASEdkzdlNR0cXtWllfvufN3lWmyHR+KzMM52YPIa9Ibmtqda9dF5THjUdLLR7ym8r7OnObUri/Ia4+8yR0qVRX78FVfPzSnY9XqIvRHgPb0Ji2Hh4fL+YKCKFFeloe0SRfhyZgAE2ACTIAJMAEm8AQIXIxMwYT54ZjyqubusPHdXPDgocZjk0IsfLrwOqysbcX7ZItCC6mQ38v28fFShzRt0kj1aFUrRSHu/n3cuHFT7NsqVxFUe4xS9vX1EbFrj+Pc+YtKVbbjhYsapyJqKC/uSM2vPXz4EBHCA9dMiLm+Pt4I8PeTj57dumD82NH4ZtqPMtkZeemeOXsOdevUznEJG8qgng9Lz8j5M0A+puGuTIAJMIFHJlBsPl17eWq2SrGGtEVcIrB2l7iVJfP3alCV/F/Sg2TN4D5tDQtZj0zZiAkoVi2JuCRezpkzB6dOncKVK1dk1neKjWsqs7HR/MHq2rWrnJ/WyOmRW0gDCjRf2Fa5cmW5RFhYmMmXyhC3et9Ytwr/PtdExML9CHY+fjprUKiFvd1fxO0De3TqybuSQi8cGSG8LpOSpOhLHWg8eTzubNMQEcv/Fomu8vdlgs4ieidWpVxRpkNnsYa/jNXbePFa2AdUkr3OTPpAp7e1m7sUDinWaaUxH8q2u4cPIPGqRlTT6ax3kpyS++3v2uEK9IYW+JTCI+Rm9+49VEVcSna2eW1HhF/oj+shA3DxVB+MebtWjsPbtS6Pg/91k3F6u3XxU72NFyy6iEYtVog3mllhH7TF5+nfNpXz0xqGHvt2vpzjmlFb/1Hbak/7GaUaNIZN6TKwcCiYx4E6mSgU5LX34HqkDBNCcXIpXq6SpI/2RCE7djSvIz3LU7S8I7TXfJRyaGioHK78P36UuXgsE2ACTIAJMAEmwASKAoESYhPmwtnC2toGe86k4+d1N+W27G3N4O6scW6Ys/kmrt6yAAmF1JfGFAXz9/WRCdBoL4uXrTS4pc++moK+g4Zj3IRJBttzq6yfKZruO3AIJ06eztaVQhTM/d9CWR9YtXK+hWIaeOLUGfTsNwTd+w4WSYx175JzdHTAqwP7q+vmFRrii4njxWeFLQYff/7yg5yHYgQrfapXq6rOzQUmwASYwJMkkH/V8wntVvwNlBZ5y/A3YcoXZA4l8/en8k58MhSP3L7PaW6FedyXGBUVJQVbWnf69Olo3ry5+keW6ijMgmIUfygnU25fTsjldhaKQ0kWHR2d0zSFWp/b/vUXVgQgEppNaQ9jokV82+dwfMxI6aFY5f1PZBxcWoO8KFvuPCS9YCmx2cEBPWSsUxJ+j78zQsY8vXv0ECr06o8W2/bDpW4DubUmyzaI+LlfS3H31Ph38V/7liDvTFMbPce0R79XX5dT379wDmkiJIch82z9vFqdFK15k6lWGChERGYlGFOa6eUWEqq5Baps2cf//+O/vZlvjoX37e8zW6C6CI2gHfM2LFzjRZtTzCobG3P06RkASnh24mAP/PBdU+XSxLf1V9UyJU5Q4vLeijHMU+2cS+FBpOb/qlON2rAtVyGXnvlrKshrL3zBHBEHt770Nnep11C8xrerr5uaX3+PBnMWyy8grvz8vYyfe0skZzOlXbyo8cZQfufkNfetW7dE+I7r8qGEeMlrDLczASbABJgAE2ACTKCwCeh//DITScusbaxgW9IG87fEYf2hLEExPDoJ87bFi3ZrmeCM+uZm+nPn1vdR20iUHDpII3RSsrDZ8/5CUpLGsYE8cZcsXwUKS0D2UvsX8r1cn57d1M+wb777AfbsOwjls1+4SLT2+ltjhCOFJpTZOyK5mGIkyDZr21E+3hRh6nKz6tWqqM2ffvktom9pws9RJYX1Wr1Okw+CzgMz++Y0P32uovBehh4UWkIxpV35rK3U85EJMAEm8KQIWDyphfO7Ljk4WojdUqxcfaOQCtRGlpikOeb355P0xtUWXimkgL6tWCFuizfCPD09Za99+/bl2FsRR3fv3i0Fk7Jly+bY11QNdFu1EiIiPwJNxYoV5RZIEKI3Aab642nl4ooS4gVDXq5V3p8ISn6mbRQXt+r4T1G+ay+c+fRDkJcr3Z5OXowUPiFw4tdwrlVHe4iYj+LnDoRnu/a4OO1r3D1yENaPEmZBXG/ag0SYlzR8S37aw7xf6DZlsp7bjBRNCAKdTeudUDiByOsJIvNr1pqHj2YJ/t4VCt8LW29LIj501r4t9UI4kLfupi3Gi+W2thbo0dUfS5dfwe59N7H/YBT69tK8xmjdWjVcxa1gd0WyhCt4/bVA8aYu++8a/f3pn1MWYzL7ihpvcv32gp4X5LVnW7ac9MCtNv4z+VoX/4EQsytLrHVt0gzBa7cjbP4fIDGXQkCYylLE602Jx+3v72/UtD169JChVKhzmzZt8Ntvvxk1jjsxASbABJgAE2ACTKAwCTjalkCayNKi/c6wRAkz4XFbEunittDJizXxcf1L2+CLv2/BzMJWtNnmGVJB+EuA5n6c1qv7y/hvzz4cO3EKM3/9Uz48PdwRFX1L3UatmtXRq3sX9dzYgr29Hb76dALeGTsBFKLvrTEfSGHXxtpKFXBprkH9+6BO7ZrqtCTAUn+yxBwcVJTOJEa/OWIoZsz6A+T5S8nNvL3Ky1AQFOtWsQ4vtIOSWC0/8yvj+cgEmAATKMoEsr5qKsq7FHu7dY/+1ImM9vYl0CE4S3+2EF9ydm0lMqBl2rmw3G8PV/opxzuZQtGT8salfZTTig+0ePFiNcM7iZezZs3CoUOHlO3melREWooru3TpUpCYom8dOnSQWeGpfty4cSBvYG0joXX27NmYP3++dvUjl318fOQcCxcuFHGXbhg1X7NmzWQ/Cjmxd+9eo8YY04lE2UZ/rULtab9kE3G1x1MisYZ/rUS1j7+U1ZXe/RBNlm7IJuJqjyHRt8ZX09B01RaZHE27LT/llNh72B4chEs/TEFSVJY3bYYIukW32IfN/V1O596yLcwNiP/5WUu772dfHQbFiyVLTEzFV98eleUa1UtJb1h58hh/ULI1MoqFu2FjuLpygtjb2PH71Ri5akNm4fjJGMycdVq8KdX1rqU4uCTiktWu6ZbZW3MY9Xp1Wbh4KRaff31EeCjo/i65EhIH4rMnc7zO4EI+Kchrz6P1c2i57QAozAaJuIbMTMQ/8xs6EhRb2VRJ+mgdJXEZfYFTv35WDGdDe+A6JsAEmAATYAJMgAkUZQJ+nuYykZn2HsnT1tzcDLZ2JWFhaYcvF97F4KmRiLhtDlsZUsFMR/jVHquUKZYuzV0Qs1C8mMRg8hg11ij5168zpgmnhcFqjFxtEXfQK33EHWxfidAR1tmm1F7HUiSBJrPKPCqdmzVtjFVL/oemjTV3LZJAq3jh+vl6y7lHjXxN6Z7tqH1d2RozKwYP6IuPPhgjnE/KyJrwqxFQRFxKuPb6sCGYOGGcweHGzG9wIFcyASbABIoQgSxFtAhtytBW5q5LxgcDraUe0baBBZoHWciA8vYilIL4GyotMSkDG3YbH5uUwiqQPUlvXFqf/lBSojMSOUlAXb9+PRo1aoSzZ8+C4kxSwjH9JGg0Tt9atWqFKlWqgJKYffDBB/JBYytVqoQFCxbI7hS4/ssvv5TrkedukyZN0LBhQ7iILKYkAJ85c0b2GzBggP70j3Tep08ffPTRR9i8ebN8UPxdEnmaNm2K8ePHG5zb2dkZ3bp1w/LlyzFv3jzZ12DHAlQaK37SbTXmmXGFSfQy1oydP7f5UhPicfnn6fJBSa7onJKchfw+Uw4jL83qkybnNoWM4UvjUuOzEnnlNmDthnCcPH0HlSo64djxGJkojPq//25QbsMKra1ukJvcC4mrlPBs2k8nUNHfGQcORcm9ubnaqHvU3kS0EHC/FCI0PUiw9fVxQGjYfZDAS+bn64hX+lbSHiL6OIo3hXXxxeQj+G32WaxYHSLHCocLkRE3Tg0xUSfIXWec9klqZqxZ7duxtNsLWi7oa8/Y16Gx/Yzd/59//im70v97Q3cZGJrH0BdPhvpxHRNgAkyACTABJsAEHieBev5mOH0NMBMfBbS/GicxV7ljzEyKqRkynIKl+MyQZ0gFcQEp4mMrzV0Qo3iwR/Zuz3XommV/GWwnQXbo4Ffk4969WEREXoezsxM8PTxECLPs8oChdchjNyev3Qrly+HHqZOF+J2OaxGRwjkiCT7eXgbFYdogCbKG1jC4+czKlzt1QOeO7XH7zh3EiNAMGeJfKfF51sPdLVuS3YLMX6tGYL73lNt+uY0JMAEmYEoC2X9Tm3J2E84VfScDM5cm45X2ltIr10p8CWhlmfWnNCQyHfPWpahJz4xZWvHGNaZvYff58MMPkZqaiiVLlkjRlsRcMhIye/fuDbrtmCy38AL0R5nE4MmTJ2PXrl24efOmnOvu3btyrPKDhNsdO3bg448/BoVYOHDggNIkjy1atEDbtm116vRPctuHfl8679mzJ5ycnDB37lwcOXJEvYVa8dQ1NIbqBg0aJIXcbdu2gZKe5dU/p3mMqSdPWiuXUsZ0Vft4D3gVns+1F2/sxAvShGbp7ILgNdsQvW0T7hzej7jzZwEhyJK5NW0O7/5D4N6itQj5kPt/YTu/AMSeOo6YfbvlPnPbYs9u/nAQycf+nHsO5LlKZi9i0876qTko0Zi2UUzZnIyET8UMvU60Qk4p3XI8WolwCnN/a43R4/YI8TYaJOjSg/b15aQGSE5Jx6dfHhahVbQWFbNVKG+PhvU95BgSbxUBlxYKblwan35cXyfWrrKBkcMCUVOEWPjgo/1SuN26I0Jpkmu2f8EL1asZfo1QrGIlOZ4pvVvVDegVCvLacwtuieoi8Zqdf0W92Ux3euzYMTXmd79+/YyamO4EoN9Xiine+Mo5H5kAE2ACTIAJMAEm8KQItKpujpPh5jhxNQ10N6j2u2AqW1pZi/eiFiIUXLr4rGZmlIibKm78quNrDpr7SRoJuPQoDKPwet5eFR5p6qjMvC4UnkHf6POIu5urfOi38TkTYAJM4GkmUELcvq+JWZB5lS+N0wRrDyidFSezqAFwdigBnzJmcBRbjBICb/jNdGTGaTd6q+SNqwi5a791NXpcYXckz9urV6/KbywpRqxy20phrUvfkJJAGic8CUuVKgWKmUuxh4qSUQgI8sodMmQIJkyYUJS29lj3sr/fy3AJqofK7xnP4IrIuHrx+2/kPu18/FBSPLz7DYJ789bq3kkI/fXPs+JbdX9M/7apDKlw7sJdODtZgzxZcxNt1UkKuUC/pSIi43H9RqL4pt1GfKvvmFO0AJ2dUEiGaxHxuHcvWWTGNUfZMnbC2yB7HGqdQZknsbHJCAmLE1+wpIs3iLYydrB2ojVlzKWfpuLesUMi5MVR6TVN9U2Wb4RT9VpKl2fqOHr0aKxZswZDhw4FfUFljG3duhXDhw+XXekugv/++y9Hrw1j5uM+TIAJMAEmwASYwLND4MSJE/Jia9UqvPdep8LTsEjc+Xk0NA3ktEqOCdqCrjG06UM3hVMgT1wScfuIcIE1vJ+skGvMvp9En7PnL+DAwSMyFi6tTx6+SriGJ7EfXpMJMAEmUJQI5O7OV5R2qrWXe/czcPy+bvxKrWajioqI+6TDKuhvlkQMejwusxFhAygcQ1G2d999V4aLOHXqlLxFh77dfRatRB5Zbw0x8Rk0DKmJCbi+ZjkSwkLkw71ZK0Nd1bqSJS1QN5fwAWrHx1goId4pk5ctPfJj5LlbtbJLfoaofZ2crBBUSzeOrtqoVbhzcB/uHNwraygZnt+rI59ZEVf5YigoKAgjR47UopR7UTsG9nvvvccibu64uJUJMAEmwASYABN4zARIcPVwMsOO02k4fCUdIVFpiHtAyZiN2wg5JVBis4plzGU4BfLE9XQ2crBxSzxVveYt+Btbt/8rr4mcjBrW1000/VRdLF8ME2ACTCCfBIqlkJvPa8zWXYmNSw1PMslZto1xhUECpUuXlh5+BhuftUpj3y1mcqHYp5XHjJcPSpRGsXLNrW2eNWqFer11f5kj57ew1yRmK9TFivjk9MXQypUr873LPXv2yDEUO7tr1675Hs8DmAATYAJMgAkwASZQ2ARIeO0tvGh7Bxf2Sjx/UK2aEkKTRg3QqnmwDF3BVJgAE2ACTEBD4JkUcpUnv6h54yr74iMTMESg+qeTYW5b8LAXlIDL0rFwYmAZ2u+zUscC7qM/0ytWrEBamrhVUWQ+5mzCj86TZ2ACTIAJMAEmwASYQHEm0LvHy6AHGxNgAkyACWQnkKOQe/lmQvbeT1kNe+M+ZU/oU345lLisMKyJSP5lblECtWrkHUagMNbnOZmAnV3RjcnOzw4TYAJMgAkwASbABJgAE2ACTIAJMIGiQiBHIbeobLCw9sHeuIVFluctbgTatS4PerAxASbABJgAE2ACTIAJMAEmwASYABNgAkyACRRdAtmE3LXfPr5EW08Cy+PIavokrovXZAJMgAkwASbABJgAE2ACTIAJMAEmwASYABNgAkzg6SWQTch9ei+1YFd28eJFJCcnw83NDa6urjKGY8Fm4lFMgAkwASbABJgAE2ACTIAJMAEmwASYABNgAkyACTCBghFgITcPbpMmTcKBAwfUXm+++SZGjx6tnnOBCTABJsAEmAATYAJMgAkwASbABJgAE2ACTIAJMAEmUNgEip2Qm5iYiAsXLuD69etIT0+Hl5cXfHx84OTkVCisevTogZo1a+Lo0aM4cuQIZsyYgUaNGqFx48aFsh5PygSYABNgAkyACTABJsAEmAATYAJMgAkwASbABJgAE9AnUKyE3DNnzuCvv/5Camqq/nWgb9++qF27drb6R614+eWX5RQZGRno2LEjzp8/L0VdFnIflSyPZwJMgAkwASbABJgAE2ACTIAJMAEmwASYABNgAkzAWAJmxnZ80v3u3r2LefPmSRHXwsICzZo1Q9u2bVGqVCm5tYULF+L06dOFts0SJUqgRo0acv6bN28W2jo8MRNgAkyACTABJsAEmAATYAJMgAkwASbABJgAE2ACTECfQLHxyN2wYYO693HjxsHZ2Vmet27dGt999x3u3LmD7du3o3r16mo/UxdsbW3llA8fPjT11DwfE2ACTIAJMAEmwASYABNgAkyACTABJsAEmAATYAJMIEcCxcYjNywsTF5ErVq1VBGXKsg7NygoSLZFRESAPHfZmAATYAJMgAkwASbABJgAE2ACTIAJMIGiRyAtLQ30YCs8Asy48NjyzEzgSRMoNkJubGysZFW6dOlszAIDA9W6kJAQtVxYhQcPHhTW1DwvE2ACTIAJMAEmwASYABNgAkyACTCBp5LAhYuX0KBZO7zQqYdIXp7xVF5jUbio0eMmSM6btm4vCtvhPTABJmBCAsVGyDX2mu/fv29s13z3U+Lx/vvvv/wNYr7p8QAmwASYABNgAkyACTABJsAEmAATeJYJTP9plrz8vr26w8yshMlQvDn6fdRt0hqr1qw32ZzFeaJuXTrJ7X83fQaSkjg0ZHF+LnnvTECfQLERcp2cnOTeo6Ki9K8BZ8+eVesKU8itUqWKXCchIQG7du1S1+QCE2ACTIAJMAEmwASYABNgAkyACTABJpAzgT37DuLQkWOyQ5dO7XPuWICWpKQkOSo1lUM2EIjgJg3h6eGOO3fvYdnK1QUgykOYABMoqgSKjZDr5eUlGZ48eRJKmAWqoNgvR48eVfnGxcWpZVMX2rRpgyFDhshphw4diu7du+Ptt9/GggULTL0Uz8cEmAATYAJMgAkwASbABJgAE2ACTOCpIbB42Qp5LV07d4RLZvLyp+biitiFmJubY0C/3nJXCxcv5zuKi9jzw9thAo9CoNgIue3ba76xS09PxzfffIN169Zh06ZNmDJlCu7cuaMysLS0VMumLpiZmaFfv37o37+/nPrYsWNyH0eOHDH1UjwfE2ACTIAJMAEmwASYABNgAkyACTCBp4JAROR1kEcuWa/uXZ6KayrqF9HhxXZyi1HRt7DvwKGivl3eHxNgAkYSsDCy3xPv5urqKgXUhQsXIjU1VSe0QbVq1RATE4Po6Gi4uLgU2l4jIiJAXrlkQUFBGDt2LLy9vWFnZ1doa/LETIAJMAEmwASYABNgAkyACTABJsAEciNwJTQMp06dwU0h2lkIb0w311KoHlgVAf5+Bofdj4/H0WMncf3GDXn7vaeHB/x8vVGlUgBKliypMyYqKhpXIyJhZWWFWjWyEo1rd4q5fRuhYVdF3Fsz1A2qpd0ky0eOnZDHcmXL5Lgn6iDvuD1+UvaltW6KtY+K81u3YlClckXUrlUDDvb2sj2nH8nJyTh77gKOnzwNCwtz1KgemOO+aY5Ll0NwTyRXr1C+HEp7eghHsbs4dPQYQkLCULq0J1oEN0GpUlk6Q0ZGBi5dCcH5C5eEBnFLbsNXsAvw84W3V4WctiXr8/s80SCKcXvm7DlcFvuhu5P9/HxQU1yTh7tbrmsRpzYtm2Pbzl04ePioCLfQKNf+1Egs4jLzDpW0tUXVKpXyHMMdmAATeLwEio2QS1hq1qwpfmn54cKFC7h+/br8Q0Iibvny5TFx4kRJrjCF3C1btqjPzvfffy/XVSu4wASYABNgAkyACTABJsAEmAATYAJM4DETmDL9J/y9dKXBVV8bMgAjhg7SaaO+NMaQUVzVqZM/1xHwQsOv4o13xsnua5cvRNkypbMN/X32fBGLdS0Cq1bG/D9/ydYeIoRmMl8fb3nM6Ud8fAJGjBojm4e/OhC//jlPpyvtb8b0b6XorNOQeUIC9dDX38YZIeRq2zAxF81nyH765TfpLTxq5GtITUnFL7/P0en2BaZi/7+bYWlpgQcPktCpe18pfut0yjzp36cHRr3+mhCQs0st+X2eaMozZ8/jw08+R+T1G9mW+2LieLz4fNts9doVXl7l5enlkFDt6hzLU3+YqcYxrhjgh7/n/5FjX25gAkzgyRDI/tvlyezD6FXtxbdKdevWlQ9l0LVr18S3VEny1N3dXak2+TEyMlLOSYIyicdsTIAJMAEmwASYABNgAkyACTABJsAEnhSBE8LrVBFx27Zugdo1q8NWeFKSd+yK1evw8OHDbFsj71aypo0boEZgNemFGnc/HqvWrkdIaDj6DxmBNcv+AnnPkjWoV0cmzqJb9Ddu2opXB2lCDcpG8YM8RknEJev2cid51P9xRXiTkvl45+6xKjtl/iAR11sIkV1e6iDvyl20ZDloDwNfewNb1i2HjY21dndZnjFLIzwO6t8HKakpWLlmAxITE/GbmKvDC+1QvlzZbGOUii3bdkovWxKLG/2fvfOAj6Jow/gbeu+9916kSO9FuiC9SZOOgIKKisKnIiqICgqIgCAioCDSUZAqHSkB6b33qnRIvnnmMsvmcpfchQspPK+/y+7OzszO/ncTvGfffaZMaUmaNKnOhN3hv1sCAwN0NWQMYwKxVClTyAu1qusM3Pjx48ve/QdkztwFMn3mbLmrmL/zxmumW70Mz3VCxm+Hrr11e1yLZk0a6beB/1q/UdZt2CTvfTBcvZGcQo812MFsG9myOnSL3f/ss5VylQRIIDoTiHZCrivYJlM2efLk2urAVR1flOGPNiJv3ry+6I59kAAJkAAJkAAJkAAJkAAJkAAJkEC4CUydPlO3LVumlHw2bGiwfvr06CKXLl8JVoaNalUrykuNG4QQNRs3rCdVX2ik6y/5fbkgmxcBuwSIiOO++15+nbdQOndop8r89D78WLNuvbVeq3pVa92+cuDgIb2Z1YuEKIilk78dY02MBuG0cYv2WphduuxPeenFBvZDWOvIIkU2KaJr55elwUttdJu16zZK21bNrHrOKxBOIYYPHfyWwFbABIRck2EL8XjUpx9qmwJThnpghwncdGayEnT79+kRrA9vrxPsG0YEZU2XKvmcjPn8E0u4bv5SIxk6TM0btOQPGfHFGJkzY6q+Rma89qURriFm37hxU5InT2bfzXUSIIFoSCDaTHYGtuvXr5crynvHxJ07dwSeufv379dFtWqF/lqBacclCZAACZAACZAACZAACZAACZAACUR3AnHjxNWnYJb284GnrcmqtZcjC9cIfPbyJEkSayETZWfOnbfvkob1XtDbyIjd4e/wsDUVFi7+Q682aVRfZYwG99fFDniuIosVkSWzI8tXb4Txo1XzlywR19E2kzRqUFe3Wr5ytcvWEGKNiIsKyVRWbeUgb1iMPaxAJq1dxEX9EsqXF2I2AuJttSqVLGFXFwb9qFW9irUJn117mOtjlvZ9rq7TwUOHBVm8iEED+1kirmnXrnVzvXri5Gk5pfyL3YXdBuOkmvMnrEB9ZEHj4+oeCas995MACUQ8gWiVkbtixQqZP3++4NWF2MrAHU+VTBQsWFBKly5tNiNk+W+Q6TeOzSABEiABEiABEiABEiABEiABEiCByCRQ54UaejIrvGr/xjtDpHrVylKkUAE9cZcRH12ND5OTzVO2A5i065wSbe8EWRWev+AQO/+9+W+wZunVJGBVKpUXZLUuVJmgZkIzTIS2cfNWXfdFlZXqKuLFjWcV37//wFoPa6VokUIhqmACtIWLf5fTp8+G2IcCTDjmHGnSpNJFN27edN4VbBsicIoUyYOVudoICAiUDZs2y+q16/VkbBfUpOvOcevWrWBF3l4nCLQmBg8dZlZdLmGH4W6StQcPHvOOF9ch+rvsJKhwyLtvhrab+0iABKIAgWgl5GbKlEkOHjwYzOcHT8SqVq0qderUiVCcyP7duHGjPkb27Nkj9FjsnARIgARIgARIgARIgARIgARIgATCIlCpfFmdRfvnyjWyas06/UEbZOL27vGK1FbipHMi0rI/V+kJtJz7TpQokZUsde/+fefd2qtWC7lKSH3ztVd19u3vy1fqesjgLOZCeMVO2BFgPJiw6/QZ1wJsiIOpglQpU4YoTpo0iS5DXxBU7RYP2OFKiDUWCAFBVokhOg0qyKL0hrDittIFXn19kJUta+qDnT3u3gvOz9vrZM+yPXT4qL3rEOuurpWpZJ8kLWuQX67ZxyUJkED0JBCthNyuXbvKf2oWykuXLsl99Q9L+vTp1R/qFBFKfvTo0bJ9+3bZsWOHmKdqFStWjNBjsnMSIAESIAESIAESIAESIAESIAESCIsA3laFNy7Evt+Xr5Ctf2+XPfsOaNEUmZyHDh2Rvr27Wd3cVJm27wz5SG9jsrM+SuzNlTOnxI3rkAYwwRgmBnMVqA/fWtgkrFy9VhrWryPzFy3RVZs1eVH8/B775jq3z5s7lx7TyVOnnXe53X748GHIfYGPi1wdzk/cj+FxS9drRiR2vddROnnqdEvEff/tgToDOlmypPrcMbFchequs5K9vU6ojwDv5YvnOg4ejp8mcxkTuDlbRoSjOzYhARKIAgSilZALXkmSJNGfp8Vu8+bNgg+icOHC0r17dylatOjTOjyPQwIkQAIkQAIkQAIkQAIkQAIkQAKhEoAvrPGGPXb8hIz86hvZvGWbLFi8VPr0fMXyeN2ihF4EMkhHfPxBCO9VI/wFBAaEOB4yW5s2biiTlJj528IlkiNHNjEWAPVeqBmivr0gT+6csvqv9XL8xEl7cajrsH9wjstXruoiZACHJhw7t/No2wMNePmK1bqrfr27SxOnydbOK5uJsMLT64TzQ0A0x6TrzlnVYR3H7De+uPnz5TFFoS7hZ3z79h1dB9Yc6dKmCbU+d5IACTx9AtFqsrOnj0fku+++E39/fzly5IgsWLBAGjZsGBnD4DFJgARIgARIgARIgARIgARIgARIIEwCOXNkl26dO+h6EALtr+n/Z/NuNVm4pkNk60JsDS2QhYvARFxffv2tXq9ZrYqkShXSBkHvDPqRM2cOvXbk6DEJDLSl1epS1z/g++sca9dv0EU5I8nu8Nr1G/r4iRIldB6awLLCmwjtOmGfiVVr15lVr5eHFW9Ebhfewa46G/vtJGnwUmv9qde4pasqLCMBEohkAhRyw7gATzsDOIzhcDcJkAAJkAAJkAAJkAAJkAAJkAAJaAITv58mm7duU36xjzNo4R37R5B3LV7NT58unUUra5bMeh0Th69YtdYqh/frsE9HWR651g6nFbR/vlQJXQoxF/Fiw7p6GdqP8mUcE5NDWDZZwaHVx745vy0U/917rGoQmZFljHipcQOr/GmuFCyQTx9unspIvnv3nnXoTVv+lm8nTbW2nVe8vU5ZMmdSnsT1dTdfjB4ne/buD9blfTWJ2R9/rpRPRn4ZrNy+ce78BYtXtcq0h7Sz4ToJRGcC0c5aITrD5thJgARIgARIgARIgARIgARIgARIwFcEViivWgiIEGwhMiZMmFA2bNpqCbKv9+sVzD6hqJqQLFfO7HL02AntlTtxyjRBdusO/136NX7jgRva+GCvsHXbDl0F9csFibShtUmePJk0alBXFqqJ0mbNnitlny8VWnVrX5cefaVUyecEE5Xt8N+ty4sWLiQV1SRvkRHNmjSUbdt3yv4Dh6RijXoCgfTajRs6Qxl2CMZqwnls3l4ntId/8cbNW+XCxUvSoWtvKVwwv2TMmEGuKHuJA8r7GGK8sWBwPh62f523UBfDzqFI4YKuqoQoe/jwUYgyFpAACUQtAszIjVrXg6MhARIgARIgARIgARIgARIgARIgAY8IQNA04uv6jVvkz5VrtMAHD1wIgXVr1wrWT7y4ceWLz4ZJieKOeV8g6EJkvHvvvrw1oJ90bN9G148TO3awdvaNqpUrWJsvNqwn8M71JNq0eElXW7tuo3gy6dnnn3yozw3CqRFxa9WoKuPGjAzhjxsraLx+sUIa3ZoJ0Ewd57H6+TlkkVhBS+f99u06tWrIgH69rSJkCSMzGeLyhG8eZ8fGchqHt9cJB4BdxZwZU6RV8yb6eJjEDtcXLCDiFsifV9q0bGaNxb5y585d+XnOPF3UsV1r+65Q1/fse5z5C8sMBgmQQNQj4Kf8aTwzqIl6Yw/XiOB3iyhevHi42rMRCZAACZAACZAACZAACZAACZBA1CDA73eiPWcx0RYmB3vw4KGkVgJghvTpJH78+G4vEmQAvHqPbE/Uh2WCp5OH7d6zVzp1e1X3/evMqZIjeza3x3He8b+PR+is3HatmwcTRE29GzduSo16DuFy/uzpAosBePzCkgGZxEnV5OdRIWBFcfLkaXnw8IHkypFDEidOFOawwNzb62Q6xYRnZ8+dl4uXLksSdSzYZaRIkdzsDrGct2CxfKSsMiD2/jj5WzXZXUiB27nRtevXpVb9plbxL9Mne+ytazXiCgmQQIQT8OzRWYQPgwcgARIgARIgARIgARIgARIgARIgARLwlgAE2IwZ0uuPp23RJpN6TR8fb+OH6bN0E2T1eiPiolGvbp3l0OEjsldll8LL1xOBESIzPlEpEikLC4ik3kR4rpPpP7bKOPaGw+49+/T43nztVY8Y4zg7djqsK7Bev05tirgAwSCBKEiAQm4UvCgcEgmQAAmQAAmQAAmQAAmQAAmQAAlEFQIHlfh67LiyYVi5VlatWaeH1b5tS6+Hlz5dWvlpygSv27GBdwTef+cN7xqo2vBJNtGty8tmlUsSIIEoRiBKCLkXL16Uf//9V7/KkTNnzjBf6bh69aocPXpUmXxfkSxZsgjawAOIQQIkQAIkQAIkQAIkQAIkQAIkQAIk4FsCs36ZK/MXLbU67aS8dDHRFyPmEHi1Z1fp/kpHgVewJ1YRMefMeSYkEL0IRKqQe+zYMVm6dKkcP37cojZs2DCJFy+ete28Mm/ePNmwYYNzsXTo0EGKFCkSopwFJEACJEACJEACJEACJEACJEACJEAC4SdQoVwZ7cmaPFkyeU5ZKhQvWjj8nYXSEr6+Hds7JudKljRpKDW5y9cEwD40X2VfH4/9kQAJhI9ApEx2dv78eZk5c6acO3cuxKhDE3IXLVoka9eu1W3Sp08v2bJlkz179ugZG1H4yiuvSP78+UP0aS+gGb6dBtdJgARIgARIgARIgARIgARIIPoS4Pe76HvtOHISIAESIAHvCcTyvsmTt4AtghFxM2fOLMWLFw+z0/v378u6dQ4vnnz58snAgQOlRYsWMmjQIEmQIIFu/8cff4TZDyuQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQQHQjECnWCphxMUeOHFK/fn293LZtm5gnqe4A7ty5U81qGaB3N2/e3Kr233//yd27d/X26dOn5dq1a5IyZUprP1dIgARIgARIgARIgARIgARIgARIgARIgARIgARIILoTiBQht2zZsoKPNwELBUSSJEmUN08KqyksGuyxb98+qVChgr2I6yRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiQQrQlEirVCeIjdvHlTN8uaNavVfMuWLYIs3GTKcD1WLMepmHpWJa6QAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQQDQnEG2E3H///VejTpQokV7eunVL5s2bp9fbtm0rpvzGjRvR/JJw+CRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiQQnEC0EXLhhYswgu3cuXPl4cOHUqpUKcmVK5ckTJhQ7zeCr97gDxIgARIgARIgARIgARIgARIgARIgARIgARIgARKIAQSijZBrrBMePXokhw8flt27d0v8+PGlSZMm+jKYidAwkRqDBEiABEiABEiABEiABEiABEiABEiABEiABEiABGISgWgj5GKSM8T169dlxowZer1Vq1ZazMXGnTt3dBn8chkkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkEJMIxIkuJ5M0aVIt4u7du1cPOV++fFKkSBFr+Hfv3tXrFHItJFwhARIgARIgARIgARIgARIggWeCABJ+GCRAAiRAAiQQ0wlEm4zcVKlSWdcCNgstW7a0ti9cuCDGWsFez6rAFRIgARIgARIgARIgARIgARIgARIgARIgARIgARKIxgSiTUZuiRIlxN/fX6OuUaOG2DNv//nnH+sSFCpUyFrnCgmQAAmQAAmQAAmQAAmQAAmQQMwnkCJFiph/kjxDEiABEiCBZ55ApGXk3r9/X27fvq0/xt8WV+PWrVtWOSY2M1GgQAHLD3fLli1y7949vQvZuMuXL9frBQsWlIQJE5omXJIACZAACZAACZAACZAACZAACZAACZAACZAACZBAjCDgF6giMs7k66+/llOnToV66GbNmknZsmWtOtu2bZOff/7Z2sZTV+OFFCdOHOnfv7+kT5/e2u9qxWT1Fi9e3NVulpEACZAACZAACZAACZAACZAACUQTAvx+F00uFIdJAiRAAiTgEwKRZq3g5+fn9QmUKlVK4I87e/ZsefjwoSXiJk+eXLp16ybp0qXzuk82IAESIAESIAESIAESIAESIAESIAESIAESIAESIIGoTiDSMnKfFMyVK1cEn8yZM0vixIk97o5PbD1GxYokQAIkQAIkQAIkQAIkQAIkEKUJ8PtdlL48HBwJkAAJkICPCURaRu6Tnkfq1KkFHwYJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJxHQCkTbZWUwHy/MjARIgARIgARIgARIgARIgARIgARIgARIgARIgAV8RoJDrK5LshwRIgARIgARIgARIgARIgARIgARIgARIgARIgAQiiACF3AgCy25JgARIgARIgARIgARIgARIgARIgARIgARIgARIwFcEKOT6iiT7IQESIAESIAESIAESIAESIAESIAESIAESIAESIIEIIkAhN4LAslsSIAESIAESIAESIAESIAESIAESIAESIAESIAES8BUBCrm+Isl+SIAESIAESIAESIAESIAESIAESIAESIAESIAESCCCCMSJoH7ZLQmQAAmQAAmQAAmQAAmQAAmQAAnECAIXrgfKqn8eyd9HAuTohUdy806g+Pl5dmqBgSLJEvpJrvSxpXTuWFK9SGxJn8LDxp4dgrVIgARIgASeEQIUcp+RC83TJAESIAESIAESIAESIAESIAES8J7A7hOPZOa6h7L92COJq75Bx1LvtSZJ6F0/jyRQDpx7KP+cEtl1Ira0qRRHimaP7V0nrE0CJEACJPDME6CQ+8zfAgRAAiRAAiRAAiRAAiRAAiRAAiTgigAycSHi+p98JPHjiYQ3jxbtYisBOJbqA33JOpF0yWOFKzP37t17smzFKj3cqpUqSPLkyVwN3SdlS//4Ux48fCjPlyohGTOk130eOnxU9h04KMmSJpFqVSr55DiuOtnpv1tOnj4jOXNkk6KFC7mq4rMyMD1z9qxcu35DnyfONRYUewYJkAAJRDECFHKj2AXhcEiABEiABEiABEiABEiABEiABKIGAdgpIBM3PCKuclQIERB0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NJI2bVrV19PNmA52gtwgARIgATcEfPeX2s0BWEwCJEACJEACJEACJEACJEACJEAC0ZFA9SKxZdeJ2OJ/8pHEUfqsXdrDetx48QWZnoGBAQLLBU9E3IePRErmjC3oOzIDAi4+EREQVJHx+iRx4eJF3Rz2DM4BkTVtmtT647wvPNvIOEaWr8n0DU8fbEMCJEACT4MAhdynQZnHIAESIAESIAESIAESIAESIAESiHYE0qfwkzbIml0nsv3YI0HSKpI+jaCLpZ/OwA1dlEUWLuwUHjx0iLjoE30zQhLYu/+AbN6yzbJMKFa0SMhKLCEBEiCBZ5QAhdxn9MLztEmABEiABEiABEiABEiABEiABMImUDR7bEmXPJas+ueR/H0kQI5eeCQ376gJ0DzUYWFmiInN8maMLaVzx9KZuBRx3XP/Yfos+XPlGl0BE5yVfb6k+8rcQwIkQALPGAEKuc/YBefpkgAJkAAJkAAJkAAJkAAJkAAJeEcAwiv8bFtX8q4da3tPoETxYrpRhXJlpHqVStq6wvte2IIESIAEYiYBCrkx87ryrEiABEiABEiABEiABEiABEiABEgg2hFo3eIlwYdBAiRAAiQQkkD4pnQM2Q9LSIAESIAESIAESIAESIAESIAESIAESIAESIAESIAEIogAhdwIAstuSYAESIAESIAESIAESIAESIAESIAESIAESIAESMBXBCjk+ook+yEBEiABEiABEiABEiABEiABEiABEiABEiABEiCBCCJAITeCwLJbEiABEiABEiABEiABEiABEiABEiABEiABEiABEvAVAQq5viLJfkiABEiABEiABEiABEiABEiABEiABEiABEiABEgggghQyI0gsOyWBEiABEiABEiABEiABEiABEiABEiABEiABEiABHxFgEKur0iyHxIgARIgARIgARIgARIgARIgARIgARIgARIgARKIIAIUciMILLslARIgARIgARIgARIgARIgARIgARIgARIgARIgAV8RoJDrK5LshwRIgARIgARIgARIgARIgARIgARIgARIgARIgAQiiECcCOqX3ZIACZAACZAACZAACZAACZAACZAACZBApBAICAiUwMAA8fOLJbFi+UXKGKLzQR89eiRXrl6Ta9euyYMHD6VI4YLR+XSi1Nhv3both48ek+TJkkqqVCklWdKkUWp8T3swAQEB6nc1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PgtBa4Vn4SrzHEmABEiABEiABEiABEiABEiABGIkAfjcepMR6gsIEPaisjgK2wVYCCATc/tOfz15ky/OO9r14efn9ZAxodWYUZ9o2w7YZkAMRtiFXFedIhMan6gUiZQ1AjJivQk8kIA/s/Fo9qYtrBE84XBN2Vbg3kQg27d+nZoqYzr0TGlvxhHd6v693V9fp4bKUsHTvytXr16zRFy8EdCoQd3odtrhHi+F3HCjY0MSIAESIAESIAESIAESIAESIAESIIGoSAAWAmHZCETFcftyTCZL2iw97btE8aLy3TeOCfMwWRi8kBm+I/BcsSKyYslvOks6ThzKcs1faiT4eBP+u/dY1Xt16yzx4sa1tmP6Cu+YmH6FeX4kQAIkQAIkQAIkQAIkQAIkQAIkQALPHIH8efPItMnj1aRdjgnMwgMAXsWeToAVnv6fxTbI3HVlufAssgjvOVeuWE5WL1ugmydOlDi83UTLdnGMp1C0HP0TDPpZPe8nQMamJEACJEACJEACJEACJEACJEACJEAC0YQAPGELF8zv89HCL7Zj+9a6X1gxMEjgaRNAJnNU8WJ+2ufut3PnzmdqsrOnDZjHIwESIAESIAESIAESIAESIAESiFgCnMw6YvmydxIgARIggahBIE7u3Lmjxkg4ChIgARIgARIgARIgARIgARIgARLwgsCRI0e8qM2qJEACJEACJBC9CcSK3sPn6EmABEiABEiABEiABEiABEiABEiABEiABEiABEgg5hOgkBvzrzHPkARIgARIgARIgARIgARIgARIgARIgARIgARIIJoToJAbzS8gh08CJEACJEACJEACJEACJEACJEACJEACJEACJBDzCVDIjfnXmGdIAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiQQzQlQyI3mF5DDJwESIAESIAESIAESIAESIAESIAESIAESIAESiPkEKOTG/GvMMyQBEiABEiABEiABEiABEiABEiABEiABEiABEojmBCjkRvMLyOGTAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAnEfAJxYv4p8gxJgARIgARIgARIgARIgARIgARiMgF/f/+YfHo8NxIgARIgARLQBJiRyxuBBEiABEiABEiABEiABEiABEiABEiABEiABEiABKI4AWbkRvELxOGRAAmQAAmQAAmQAAmQAAmQAAmETiB3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"/><use stroke="#7E7C7B" xlink:href="#rect-1"/></g><text id="here's-the-list" fill="#C06334" font-family="OpenSans-Bold, Open Sans" font-size="18" font-weight="bold"><tspan x="310" y="106">here's the list</tspan></text><text id="breakpoints" fill="#C06334" font-family="OpenSans-Bold, Open Sans" font-size="18" font-weight="bold"><tspan x="127" y="130">breakpoints</tspan></text><path id="Line-2" fill="#C06334" fill-rule="nonzero" d="M421.013 114.435l1.276.79 39.263 24.271 4.207-6.804 11.166 18.07-21.156-1.91 4.205-6.804-39.263-24.272-1.276-.789 1.578-2.552zM119.02 129.64l.84 2.88-1.44.42-61.239 17.828 2.237 7.682-20.898-3.81 15.587-14.433 2.236 7.681 61.238-17.828 1.44-.42z"/><path id="Line-2-Copy" fill="#C06334" fill-rule="nonzero" d="M58.797 100.63l-1.299 7.894 60.746 9.996 1.48.243-.487 2.96-1.48-.243-60.747-9.996-1.298 7.894-17.205-12.46 20.29-6.288z"/></g></g></svg> +======= +<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="697" height="244" viewBox="0 0 697 244"><defs><style>@import url(https://fonts.googleapis.com/css?family=Open+Sans:bold,italic,bolditalic%7CPT+Mono);@font-face{font-family:'PT Mono';font-weight:700;font-style:normal;src:local('PT MonoBold'),url(/font/PTMonoBold.woff2) format('woff2'),url(/font/PTMonoBold.woff) format('woff'),url(/font/PTMonoBold.ttf) format('truetype')}</style></defs><defs><path id="rect-1" d="M0 0h697v244H0z"/></defs><g id="debugging" fill="none" fill-rule="evenodd" stroke="none" stroke-width="1"><g id="chrome-sources-breakpoint.svg"><g id="Bitmap"><image width="697" height="244" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABXIAAAHoCAYAAADkABeuAAAAAXNSR0IArs4c6QAAAERlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAA6ABAAMAAAABAAEAAKACAAQAAAABAAAFcqADAAQAAAABAAAB6AAAAADEbh/lAABAAElEQVR4AeydB7wVxb3Hh95EmoAi0rsICoItsbdYEluC0dhiiRpNYowllqfmaWKsz2iMMbY8je3FFo0loFixYMNGLyIiIKh0EJG33738z527d8+5p99zzv0Nn8vZMjvlu7OzM7/9738bLV++fINTEAEREAEREAEREAEREAEREAEREAEREAEREAEREAERKFkCjUu2ZCqYCIiACIiACIiACIiACIiACIiACIiACIiACIiACIhASEBCrhqCCIiACIiACIiACIiACIiACIiACIiACIiACIiACJQ4AQm5JX6CVDwREAEREAEREAEREAEREAEREAEREAEREAEREAERkJCrNiACIiACIiACIiACIiACIiACIiACIiACIiACIiACJU5AQm6JnyAVTwREQAREQAREQAREQAREQAREQAREQAREQAREQAQk5KoNiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiECJE5CQW+InSMUTAREQAREQAREQAREQAREQAREQAREQAREQAREQAQm5agMiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiUOIEJOSW+AlS8URABERABERABERABERABERABERABERABERABESgqRBkRmD27Nlu1qxZ7rnnnsvswDpi9+7d2+21116O30KEqVOnhskOHDiwEMkrTREQAREQAREQAREQAREQAREQAREQAREQgXoiIN2nnsAXOVtZ5GYI/Nlnn827iEsRTCDOsDiKLgIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIi0AAIyCI3w5OM4Eq44oorMjwydfQLL7wwFIixylUQAREQAREQAREQAREQAREQAREQAREQAREQAREQAZ+ALHJ9GloWAREQAREQAREQAREQAREQAREQAREQAREQAREQgRIkkFeL3Hy7HTB/sSeddFIJolORREAEREAEREAEREAEREAEREAEREAEREAEREAE4giYToi+Z9+GiounbekTyJuQe9ttt4V+XtPPuu6Y5saAEy+XA3Xz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d9v109Zy+RMoRd3HtD/T+9JxtVpKZwJrWvNzW5eI65fbt+ZNJu768TNZbppJ5HzG5eT5gi1p+68m2T77LbeTnU9WSit7Agz4zQIp+1RyO5KbOTdv/uorMDBKNjiqrzIVI1+sjXN5VdgGb4UsK5NVrPIy/cIudcMaKB8BMa8uQS8f+ZRKGky+6Rey7Ru4lszPcTp1YtIftfJK57i64tC/JbPATnYsxyAmpxsaWttIl0td8Uqh309WRoSrVNbgyY7T9vwSKPa1lc97Rn5JVKWGAGKWstH0C3Ev5gGG/zHLaJ5x69w7CtGXx+VVydtKhWO+2xWuqgiMEfI1PqvkdkDduB9lOo4xJoi3hRBwLf102wf3+1RlyXasaeWI+023bHHHapsIFJuAibjki7Bpgmg56XvolIi5lBlBNt1g4i0MfK0z3eNTxcubkIvlLKKrPYmMZlqXpa5fMTupJuLar22Ppq11ERABERABERABERABERABERABESgWAd7swcIYq8vx48eH2fIKvoIIiIAIiEAVAdPyfB5sKzdtz9cr/brUtWxibl3xMt2fNyGXE+Er7OkUxMRfKhdVtu3E2om3X9ueTvqKIwIiIAIiIAIiIAIiIAIiIAIiIAL5JsCH8PhglQW+cbDbbrvZqn5FQAREQARiCES1v5go2lQHgbwJueSTrUqd7DgTbU3EraMuBdmdzMK4IJkpUREQAREQAREQAREQAREQAREQgZIngHCLewDcFuF2g4+6+f6dS74CRS4gH8Lkg2b4pc4k8EFE3ELJLVAm1BRXBEqDgBlv+qWRkOvTyG45r0JupkVAqK3LP5WJuaTtL2eal+KLgAiIgAiIgAiIgAiIgAiIgAiIQD4I8NEu/hTSI8AHzrIJO+20k+NPQQREoPwImIZnxpkIu7at/GpTOiVuFHx9e0PpFKd0SuJ/ma5YpeLJRDLr5FzLUIpfL8y1TjpeBERABERABERABERABERABERABERABETAOek+DaMVNG4Y1cy8ljwlKKbJN3npyUTm50lHiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiEBDICCL3IZwllVHERABERABERABERABERABERABERABERABERCBsiYgi9yyPn0qvAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIQEMgICG3IZxl1VEEREAEREAEREAEREAEREAEREAEREAEREAERKCsCUjILevTp8KLgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAg0BAISchvCWVYdRUAEREAEREAEREAEREAEREAEREAEREAEREAEypqAhNyyPn0qvAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIQEMgICG3IZxl1VEEREAEREAEREAEREAEREAEREAEREAEREAERKCsCUjILevTp8KLgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAg0BAISchvCWVYdRUAEREAEREAEREAEREAEREAEREAEREAEREAEyppA07IuvQovAiIgAiJQ9gQGXbqy7OugChSOwJRL2xQucaUsAiIgAiIgAiIgAiIgAiIgAmVEoOnUqVPLqLgqqgiIgAiIQOUR6F55VVKN8kZA45S8oVRCIiACIiACIiACIiACIiACZU5ArhXK/ASq+CIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgApVPoNHy5cs3VH41VUMREAEREAEREAEREAEREAEREIFKIzBz5sywSn379q20qqk+IiACIiACIlCLgCxyayHRBhEQAREQAREQAREQAREQAREQAREQAREQAREQAREoLQISckvrfKg0IiACIiACIiACIiACIiACIiACIiACIiACIiACIlCLgITcWki0QQREQAREQAREQAREQAREQAREQAREQAREQAREQARKi4CE3NI6HyqNCIiACIiACIiACIiACIiACIiACIiACIiACIiACNQiICG3FhJtEAEREAEREAEREAEREAEREAEREAEREAEREAEREIHSIiAht7TOh0ojAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgArUISMithUQbREAEREAEREAEREAEREAEREAEREAEREAEREAERKC0CEjILa3zodKIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIQC0CEnJrIdEGERABERABERABERABERABERABERABERABEahsArfddpt79tlnK7uSFVa7phVWH1VHBERABERABERABERABERABERABERABERABOqFwNSpU8N8Bw4cWC/5p5spAu7s2bPDP47Za6+90j1U8eqRgCxy6xG+shYBERABERABERABERABERABERABERABERCBYhJAwH3uuecSWbIsy9wEjpJekEVuSZ8eFU4EREAEREAEREAEREAEREAEREAEREAEREAE8kcgTrTt06dP/jIoUEqU2xeg08lmzz33rChrY1nkpnPWFUcEREAEREAEREAEREAEREAEREAEREAEREAEypyAuVTwq4HY2bt3b39TyS1nI+JSiUqzNs7aIvfCCy+sl5N6xRVX1Eu+ylQEREAEREAEREAEREAEREAEKpWA5neVemZVr1QEkln2IWpVUuA1ekKpC3WVxLxU6xJ1qWDtotT942Yr4tp5sGu91Otp5U31m7WQmypR7RMBERABERABERABERABERABERABERABEahfAv7HrCiJxNz6PR/1nTuCaDSUuriZq4hr9a0UMTdnITeZhaw90U2230Cm+2vppRs/3/E+++wz9+6777oWLVq4Qj+dGzt2rPvmm2/ciBEjXNeuXcOqvPPOO27BggWuZ8+ebsiQIfmuXiK9559/3q1evbpG3omdWhABERABERABERABERABEahoAvmevyVLr77ndxV9EgtQua+++ipMtX379gVIXUkWisDbb7/t7NyRB6Lul19+Gc73C5VnIdOl/BKisyeMIApDP5S6S4V8ibhW50oQc3MWcg1Gpf9Onz7d/fGPfwyrWWgh1wY7v//97xNC7gMPPOBee+01N2bMmIIKuZdeemlYRz/vSj+3qp8IiIAIiIAIiIAIiIAIiIAIiEAVARN6EPx8EdDng6DLh5Ek7PpUSms5KuJa6Tin7MNwrNyCtU2JuZmfOdiZiGlHw7GUrXHzLeJavY1DKdfdyhr3KyE3joq2FZ3Af/7znzDPfffdN2Xe6cZLmYh2ioAIiIAIiIAIiIAIiIAIiEAGBJJZEJsRTjSpTONHj6+PdQS+WbNmJRVv/TKZGMg2xCAJaz6d+l32z02ykhAHMQsxt9zEeATJDh06lF25k52LdLYn609SHcs1edJJJyWiIIpGgwmZML3ttttq7ObY+ryuCyXiWiXLWcyVkGtnUb8hgd/97nduw4YNbvDgwUUjgjhrAi2ZJhNz041XtIIrIxEQAREQAREQAREQAREQARGoAAIIOfxlEzgO611Z6GZDL7/HpCPi+jmaZW65ibnlWm6ffaGXTaQlH0TR6PXtu1SIE3kRdutLzC20iGvsy1XMLbqQS+OpT1XfTph+4wnsuuuu8TsKuHXp0qWJ1E3QjYq5URHXPyZxsBZEQAREQAREQAREQAREQATySkDzt7ziLLnEMhX+klXA0mGur/l+MkqF3c61GhXr0skRUbQczxvlTsftJW2z3ITqdM5bqji+SEubMMHSjuF8m9AbJ/JaPMTcZG8dWJxC/EbLG80jWqaoxXJd+/30yMtY+NtLebnoQi4NgUZVbqD8k7h27Vr38MMPu/Hjx7t58+aFu4YNG+aOPvpot8022/hRE8uvv/56GP/DDz90K1ascNttt134B4s2bdok4mWzsGzZMvfII4+4yZMnu6lTp7qmTZu6oUOHOsp00EEHuWbNmqWd7LXXXutWrlwZ+uIdOHBg4riJEye6f//7327atGlu/vz5rnPnzq5Xr16h9Sx1aNKkSSJupgs77rijow6UnxAVc6MiLtbCHKMgAiIgAiIgAiIgAiIgAiJQWAKVMH8rLKHyTd3E13RqYEIYx6QKiEYN7bX3VDyKtS9bEdfKZwJwuYnwZplr9fB/o0zKUaz265Pusi/Sckycta3pcTCqSzQ1y9x081e8whMoupBLlWgoNBgaT7l1FJT/7LPPdh988AGLicCHyPjDNYFv1bpu3Tp38803h0JrInKwAAP+EEevueYat8kmm/i7015+77333CWXXBK+yuIfhMjM3zPPPBPu32KLLfzdSZcff/zxcN/ee++diHP33Xe722+/PbHOwueffx7+IfC+88477pxzznGNGjWqESfdla222irhTiEq5pKGCbssI+JircsxCiIgAiIgAiIgAiIgAiIgAoUnUO7zt8ITKs8c8IebLDBPTybIIubiSsHEv2ga6VpKRo8r5HpU1KsrL9p8NJSyEJisbHH1oF4YY5ViSFbeZGW1hxHRD7fRBqMPHay9lqMGlaz+cdtNpGVfnLUt594YINLWFeAmMbcuSsXd37i42VXnZo0h7ulAdazSXELEHTVqlLv66qvd3/72N3fiiSe61q1bh4Vl3Q/3339/QsT94Q9/GIq6t956a8Lp9JQpU9z555/vH5L28hdffOF+8YtfJETcU0891ZH2TTfd5A455JAwHdK/6KKL3Lfffpt2un5E8jARd4cddnA33nijo05/+tOfHOuEJ5980mFpnEswMdf3zRtniSsRNxfKOlYEREAEREAEREAEREAEsiNQzvO37Gpc2UfFCV3UGMtbRDGEHrPCjZJgO/tTfSiL9EspUF4Tr7IpV67HZ5OnjkmPAIKtibQcwXpUxLWUiJdsn8Up519fpKWuUWGcdmxCbzoirrEgrXLU7qz8lfZbLxa5PkQaFo2inKxzd955Z3f55Ze7xo2rdPD+/fuHHwi744473CeffOKWL1/u2rZt6xYuXJgQQRFcDzvssETVBwwY4Pg799xzQ+texGHcIWQS7rrrrkR0rH6HDBmSWCetnj17uhtuuMHNnDnTjR071u23336J/ekumIUs8U855RTXt2/f8NDNN988zA9xmqexkyZNyrj80TKYmMt2P1/WZYkLBQUREAEREAEREAEREAERqF8C5Th/q19ipZd7MjErU7HSRF/S488PJq7lIp766eVjmbJgZZypyJxKsM5HuZRG7gSs/XGO0SdSBfYne0iR6rhy2GciLWWNE175eJntM2bhhjT+M1HYzyONwxSlAATqzSLXrwsNtluLrgAAQABJREFUiKcBmTwR8I8v9vLxxx+fEHEtb9+dAlasBFwtELhZmIVsuGHjf6NHjw6fYrL69NNP+7vqXN6wYYP717/+FcY78MADa4i4dvD3v//90I8t6+PGjbPNGf0iBltAqMalggV88d5yyy3uzjvvzEoktnT8X8TcTTfd1N8ULrNN7hRqYdEGERABERABERABERABESg6gXKbvxUdUAlnaAJrtIhmZRvdns56MgGYdpKpWJROfrnEMfE53TQk4qZLqnzioc9UYjCRlrqhrUWvPdvPdhNlM+XAcXECcabpKH5uBOrdItcvPg2Kr83RwErpyZ1fRpZ9cdP2+T5u169fH26eM2dO+MsTnyuvvNKi1vjFgpcwY8aMGtvrWlmyZEkiirk4SGzYuMAHyNhHOaws0Th1rXfv3j0UiT/66CP3yiuvhH+DBg0KBWg+psbH3bp27VpXMmnvx50CH4aLBra1a9cu4Us3ul/rIiACIiACIiACIiACIiACxSVQLvO34lIp7dzi/OJmKm7G1ZD5e1Q4iotHnGS+d+PiF2Ib9eUV9GTuJcgzH0wKUXalGU/Af5iQbluMT6k8t/r15xqLXov+fgmx5XmO/VKXlJBrBePmQkMr1dCiRYu0ijZv3rxEPP+DXYmN3oIvzHqbky4uXrw4sW+zzTZLLEcXcIFAwJKWD681a9YsGqXO9euuu87hxgEL4FWrVjn87vJ37733hseOGTMm9BPcvHnzOtNKFSHOJy7xzc2CMcRProIIiIAIiIAI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imWl1y9V3StlX10uFSqhnoUSc8tZxOW8SsithNadhzq8/vrrbvz48YmUBg0alFjWggiIgAiIgAiIgAiIgAiIgAiIgAhkSiBdK95M081HfLMWjkurEnywVnr94s5bQ9mGEB+1VOVaM+GzkjhYnaL1zbaO5S7iUu/a7/VnS0PHlTWByy67zD399NNhHfB327Zt27KujwovAiIgAiIgAiIgAiIgAiIgAiIgAskIVPpr+pVev2TntSFsr8ulQqUxQMxFgM01VIKIC4OcLXLr+hpcXftzPRE6Pj8E9thjD7d+/Xq32267uZEjR+YnUaUiAiIgAiIgAiIgAiIgAiJQVgTyPX/Ld3plBVOFLWkCCJ1YNsaFZB90i4tbqtsqvX6lyr3Q5WoILhXiGOZqmVspIi5schZy4wBrW/kROOecc8qv0CqxCIiACIiACIiACIiACIiACIiACGRJINsPumWZXdEPq/T6FR1oPWfYkFwqxKHOVsytJBEXLo2WL1++IQ6QtomACIiACIiACIiACIiACIiACIhAKROYOXNmWLxcPvpcyvVT2URABMqPwNSpU8NCDxw4MK+Fxxo36iv2pJNOcnKjkVfMJZ+YfOSW/ClSAUVABERABERABERABERABERABERABERABBoygaivWCxNJeI2vBYh1woN75yrxiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAgUgkG9LXL+I5l4ANwu27O/XcuUTkJBb+edYNRQBERABERABERABERABERABERABERABEagAAhJwK+Ak5lAFuVbIAZ4OFQEREAEREAEREAEREAEREAEREAEREAEREAEREIFiEJCQWwzKykMEREAEREAEREAEREAEREAEREAEREAEREAEREAEciAgITcHeDpUBERABERABERABERABERABERABERABERABERABIpBQEJuMSgrDxEQAREQAREQAREQAREQAREQAREQAREQAREQARHIgYCE3Bzg6VAREAEREAEREAEREAEREAEREAEREAEREAEREAERKAYBCbnFoKw8REAEREAEREAEREAEREAEREAEREAEREAEREAERCAHAhJyc4CnQ0VABERABERABERABERABERABERABERABERABESgGASaFiOT+shj0KUr6yNb5VmiBKZc2qZES6ZiiYAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiEDdBJpOnTq17lhlGaN7WZZahS4Mgcpt54XhpVRFQAREQAREQAREQAREoBwING1aZZs0c+bMciiuyigCIiACIiACORGQa4Wc8OlgERABERABERABERABERABERABERABERABERABESg8gUYbglD4bEonh0mTJoWFGT58eOkUSiURAREQAREQAREQAREQAREQARHImIDN7/r27ZvxsTpABERABERABMqNgCxyy+2MqbwiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAINjoCE3AZ3ylVhERABERABERABERABERABERABERABERABERCBciMgIbfczpjKKwIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIi0OAISMhtcKdcFRYBERABERABERABERABERABERABERABERABESg3AhJyy+2MqbwiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAINjoCE3AZ3ylVhERABERABERABERABERABERABERABERABERCBciMgIbfczpjKKwIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIi0OAISMhtcKdcFRYBERABERABERABERABERABERABERABERABESg3Ak3LrcAqrwiIQOEJbNiwwX377bdhRk2aNCl8hiWUw/r168PSNGrUyDVuXNxnXcuWLXOLFy92S5cudVtuuaXr0qVLCZFRUURABERABERABERABERABERABERABOqTQHFVivqsqfIWgXoksO6bb93XX6+v8ffN+g0pS7Q+2B89hnSKEe655x43YMAAd9555xUju5LK44477gjrfskllxStXEuWLHE/+9nP3Hbbbef22Wcfd8QRR7inn366aPkrIxEQAREQAREQAREQgfwQeGPi2+6pZ8a5Ca+9kTTBhQsXhXGIN23GzKTx2Ecc/tZ9803SeMXc8eLLr4blmT3n42Jmq7xEQAREQAQ2Eihbi9zly5e7RYsWhdXo1q2ba9WqVVFO6pJXP3VTb5zovnj/c7dmzqowz2G/39kNOHNUUfIvlUw+e3qme+uc51zHbTq7ne89pFSKlVE5jjr2RffCs5+5q68d7Y46sndGx2Ya+YgxL7g3X6tqr3bsyacOcpdePNxWa/1e/6eP3PXXfFBje//B7dzz4/avsS3fK1iDXn311WGyP/7xj/OdfMmnd8ghh7grr7zS3Xvv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vN11+y7uiiu3dwiPs6cvc8888UkoRi5ZtMZtvmVr97PTB7lN2yZ/RoJf2Icf3MON+UnfMD5pc+ySL1IL/BddMMydf+Fw139w1fkMjwmO+5Yvm20M/fu1dS++dKAbum3HcMsLgV/aN19bFC5jrfvk43sHPrSSf8iAjxyceuqpYfzbb7898bGFjcknfuCQLDTyehXjSNxePdu4e+/fPVHnV19aGHKD2SOP7e122KlLmKSftnk0qP6tnW+TjWXxz2Ou5+muu+4Ky3LkkUe6Tp06hcuF/K9v375h8hMmTChkNkpbBERABERABERABEQgQsBcKfBbiDB6+2rxdvSIKl+4cfmM2q56H6JuNJx43NHu8B8ckNiMaLsyeDO1R/ct3Z+uvtz998XnJfZ9FnxgzcIeu37HHbjf3uHH02xbk40fW+vQvp27/S/Xux8ddnBiP+4dCHxs7eennOAuPu8sOyz8bd68ylhFH0ergUUrIiACIlA0Ao02BKFouZVARpMmTQpLMXx4laBayCJhhbty5peuUSCcbdK/o2u8UTgsZJ5rgw+LrfpkWSCiNnatewQ2oSXitmD9mnUhi/XrNrhNerd3zdpVveJTSBbFSBt/tXMDNwEIh1ts3jL4a+1idOFiFKVWHl999bWbOXuFa96ssevXdxPXKrCGTifgDwsXC1ik3nLLLW6fffZJ57C04+BKAncKXwTuIRB3u270O5x2AllEzOQ84R/YXEwgrHbtWmXFkEW2aR/y5z//2V133XVhfCYRvXr1csccc4zbbbfd0k5DEUVABERABERABESgIRKw+Z09GK90BqsC8XbhwkXu63XrAhG3ezDGr3ZTtzr44NncT+a5nj26B2++VW9Pl8nixUvcos8Xu86dO4XGDPKLmy45xRMBERCB4hFIT9kpXnkqKic+RtZuWOFFIB9ai65tHH+lFrD+3XTrKovLUitbLuXp2rVVIPRVfbwsl3QKcWz79s3dyO2qLHMzSZ+v3l5yySXu+uuvd2+++WbehdxmgbCM5XAxQybn6fXXX3dbb721w6VCMURcOODCAj/f+CaePXt2+LfrrvJFVsw2orxEQAREQAREQAREoBwItA4sZXv36hlbVERdXCZkGzbbrJPjT0EEREAERKB0Ccgit3TPjUomAiLQAAnwobXly5eHVhQtIl8kboA4VGUREAEREAEREAERSEng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y6+/1RuooQTnLz/+IM++77/7Djzy9EuIOBaJaTO+U3kGequnq8rXk5eXliCvTgIkQAKlR6B0AxGW3r65cgUg0KWLLx5+NAS9euSTQKgC3AO3SAKlRUC8XOu+8Q7qvq5izdatX1qXsV1XicaS3MzR09O2nbUKS8BJee14qtdTDofzCQUr7M1w4yRAAiRAAiRwCQgsWZIT6qqkLp+Wlo5Pp83QywXVr4svp76fRwyVTnc3N7zywlOQEARif/y1ANmXOIVNcnIK9h44qPdzy0032t139erV8OIzj+kx8mOvivtLIwESIAESKBsC9MgtG85X5FX69vKHHDQSIAESIAESIAESIAESIAESKI8Eli5dCjnkKZfevXuXyBb/WrAIp+IT9Fr33XMHqlZ1z3ddCaUgguk7H0zVc8LC9uGqkKbmeBFJ5/75L3btCUNs7End7utbE52v7oAhap6vT01zbEkUTpyMM5ephPyzQIc0bawF6KTkZERGRes570/+TCW4TkFExDFdX7jkPxw8FA5HRwe8/PxT5ropKl6w9C1euhJR0TGIVTH/xfu3SeNG6N+3J/r06GaOtS4sVonXNm7aip27wxAXd0olXvND86tCMPSWgRCv58LavL/+xbbQnXr41e1a4/r+fQo7leNIgARI4JIToJB7yV8CboAESIAESIAESIAESIAESIAESOBSEhAxV6wkxNxt23fptXxr1kT3Lp10uaAfN6jQBP1794A44zoo0dOwvxcu0QKvUTfOh48cVbFqj2LxshUq9MH7JRrWoG6dnKcp58z9E+3btLIRlo09ODo64qvPPjSq+rxE7cc6OZqxT+k0hNykpGQ8+sxLOKAEXmsT4Xvdxs36EHF3+O23mt2pqWcxaepnWLBkudkmBVlDjrl//oPxrzyHnt262vTbq8z6/mf8b+Zs3dWjWxf07tnd3jC2kQAJkEC5JUAht9y+NNwYCZAACZAACZAACZAACZAACZBAWREQMffw4cNazA0KkjSvxTPxQhVrqRKbieBZGMs97oTyUhUvXbGWzUIw4Lo+aNqksa4vWLIM3//8u/ZkXbthEwZe30+3l8QP2ceQwTdgzry/tYfwQ48/hw5tW6Nr56vRolkwGgQGwsnJ/j299tIzSExKwkdTv9CCbs/uXfU8J6vwT199850p4o646zbF6CoE1PZXyd8i8dEn07R37+wf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Qm5uyPKPwLfffoudO3fqLnk0xsvLK/cws278Q08h10TCAgmQAAmQAAmQAAmQAAmQAAlUSALG57uKIORWSMDcNAmQAAmQQLkiUOFCK+SmJ9/QDR5sifkjfQcOHMg9hHUSIAESIAESIAESIAESIAESIAESIAESIAESIAESqNAEKryQK/SrVq1qvgjx8fFmmQUSIAESIAESIAESIAESIAESIAESIAESIAESIAESuBwIXBZC7v79+83Xolq1amaZBRIgARIgARIgARIgARIgARIgARIgARIgARIgARK4HAhUGCH3008/xdKlS5GUlGTDfd++fZg9e7bZFhwcbJZZIAESIAESIAESIAESIAESIAESIAESIAESIAESIIHLgUDBKTLL0R1GRkbiyJEj+Pfff+GkMnu6u7urTJXJyMzMNHc5YMAA3W42sEACJEACJEACJEACJEACJEACJEACJEACJEACJEAClwGBCuOR27p1a1SuXFkjF/E2ISHBFHE9PT1xzz33oHv37pfBS8JbIAESIAESIAESIAESIAESIAESIAESIAESIAESIAFbAhXGI/e2226DHJLMTETclJQUVKlSBd7e3vDw8LC9K9ZIgARIgARIgARIgARIgARIgARIgARIgARIgARI4DIiUGGEXIO5JDNjQjODBs8kQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAJXAoEKE1rhSngxeI8kQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkYI8AhVx7VNhGAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAuWIAIXccvRicCskQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkYI8AhVx7VNhGAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAuWIQJ5kZ72eSS5H2yuNrTTSi46IycA9/ZxL4wJckwRIgARIgARIgARIgARIgARIoAwJHDx4sAyvxkuRAAmQAAmQwKUhcMV65M5cmH5piF9GV83OzkZWVhbkTCsdAufOndOMhTONBEiABEiABEiABEiABEiABEiABEiABEjgyiWQxyPXQBHi724UL7vzkbizSEnPwqyF9Mq9mBd37NixWLhwId59910MHTr0Ypbi3HwIhIaGYsiQIQgKCsKCBQvg6OiYz0g2kwAJkAAJkAAJkAAJkMCVS6Bhw4ZX7s3z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Xbvmx5PtJEACJEACJEACJEACJEACJEACZUygYcOGZXxFXo4ESIAESIAEyp5A6SmgpXAvItjWrl1bH6WwvN0l169fDznEmjVrhlGjRqFFixZ2x7KRBEiABEiABEiABEiABEiABEiABEiABEiABEiABEqDQIUScksDwIXWnDZtmh7CJGoXIsV+EiABEiABEiABEiABEiABEiABEiABEiABEiCB0iJAIfcCZCngXgAQu0mABEiABEiABEiABEiABEiABEiABEiABEiABEqdgEOpX4EXIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESuCgCFHIvCh8nkwAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkEDpE6CQW/qMeQUSIAESIAESIAESIAESIAESIAESIAESIAESIAESuCgCFHIvCh8nkwAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkEDpE6CQW/qMeQUSIAESIAESIAESIAESIAESIAESIAESIAESIAESuCgCThc1+xJNTk9PR0REBI4cOYLTp0/Dy8sLgYGBaNiwIRwcqE1fopeFlyUBEiABEiABEiABEiABEiABEiABEiABEiABEiglAhVOyA0PD8e0adOQmZmZB0n37t0xYMCAPO1sIAESIAESIAESIAESIAESIAESIIGyIJCQkIg16zbYvdS5SpXg6OgID3c3+Pn6IiioPhxUW3m0raE7EB0dg/r16uKqkKblbovxCQlYu26j3lfvnt3h4uJS7vbIDZEACZBASROoUELunj17MGPGDM1APG/r1q0LPz8/xMfH48CBA8jOzi5pPlyPBEiABEiABEiABEiABEiABEiABApN4MjRo/g/e+cBV1X5xvGfCMgQQUAQEFmKe+De5i7NNDVnmprmSBumpZVppeW/TEszzcpR5sqtDXfm3nuLDEEBQUGGyPL/Pu/lHO693AsXBAV9ns/ncN7znned773Avb/znOf54pu5JrWvWMEDX02bDA93N5PaP85GK9dswIHDx9C3V7ciKeRGRESpnJs3a/zIQu7+w0dBInyVSn7w8/V+nKh5LibABJiAyQSKlZC7fv16eWE2NjYYO3YsnJyc1AulcAvx8fHqMReYABNgAkyACTABJsAEmAATYAJMgAk8SQI+Xp4oY1dGXcLDhxlIun8f164Hy7rQsHCMfucD/DL/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2hTUfjwQsN6+BTUGXpcEoiGQJ9YK0QyAbUmABEiABEiABEiABEiABEiABEiABEiABEiABEiABMIToJAbng+PkgAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkECBE6C1QoF/BBwACZAACZAACZAACZAACZAACZAACZAACRQuAlXvqCRN4htJlcoVCtfAOBoS+AkTYLGzn/CHz1snARIgARIgARIgARIgARIggR8zARY7+zF/ehw7CZAACZBAtARorRAtMbYnARIgARIgARIgARIgARIgARIgARIgARIgARIggXwmQCE3n4HzciRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiQQLYEiGtGew/YkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAL5SKDINddcIxRz85E4L0UCJEACJEACJEACJEACJEACJEACJEACJEACJEACURIosmvXLrl06VKUp7E5CZAACZAACZAACZAACZAACZAACZAACZAACZAACZBAfhAwybjnzp2TvXv3mushM/fy5cv5cW1egwRIgARIgARIgARIgARIgARIgARIgARIgARIgARIIAwBaLUQcRH/D3poZiFAJ4frAAAAAElFTkSuQmCC"/><use stroke="#7E7C7B" xlink:href="#rect-1"/></g><text id="here's-the-list" fill="#C06334" font-family="OpenSans-Bold, Open Sans" font-size="18" font-weight="bold"><tspan x="310" y="106">here's the list</tspan></text><text id="breakpoints" fill="#C06334" font-family="OpenSans-Bold, Open Sans" font-size="18" font-weight="bold"><tspan x="127" y="130">breakpoints</tspan></text><path id="Line-2" fill="#C06334" fill-rule="nonzero" d="M421.013 114.435l1.276.79 39.263 24.271 4.207-6.804 11.166 18.07-21.156-1.91 4.205-6.804-39.263-24.272-1.276-.789 1.578-2.552zM119.02 129.64l.84 2.88-1.44.42-61.239 17.828 2.237 7.682-20.898-3.81 15.587-14.433 2.236 7.681 61.238-17.828 1.44-.42z"/><path id="Line-2-Copy" fill="#C06334" fill-rule="nonzero" d="M58.797 100.63l-1.299 7.894 60.746 9.996 1.48.243-.487 2.96-1.48-.243-60.747-9.996-1.298 7.894-17.205-12.46 20.29-6.288z"/></g></g></svg> +>>>>>>> 540d753e90789205fc6e75c502f68382c87dea9b diff --git a/1-js/03-code-quality/01-debugging-chrome/chrome-sources-console.svg b/1-js/03-code-quality/01-debugging-chrome/chrome-sources-console.svg index d5d2a0b93..36e7a2be6 100644 --- a/1-js/03-code-quality/01-debugging-chrome/chrome-sources-console.svg +++ b/1-js/03-code-quality/01-debugging-chrome/chrome-sources-console.svg @@ -1 +1,5 @@ -<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="693" height="156" viewBox="0 0 693 156"><defs><style>@import url(https://fonts.googleapis.com/css?family=Open+Sans:bold,italic,bolditalic%7CPT+Mono);@font-face{font-family:'PT Mono';font-weight:700;font-style:normal;src:local('PT MonoBold'),url(/font/PTMonoBold.woff2) format('woff2'),url(/font/PTMonoBold.woff) format('woff'),url(/font/PTMonoBold.ttf) format('truetype')}</style></defs><defs><path id="rect-1" d="M0 0h693v156H0z"/></defs><g id="debugging" fill="none" fill-rule="evenodd" stroke="none" stroke-width="1"><g id="chrome-sources-console.svg"><g id="Bitmap"><image width="693" height="156" xlink:href="data:image/png;base64,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sL6W8yI3kCqLlPD2tK/7IG2wo4MOOiing7XBc2EZAQQQQAABBBBAAAEEEEAAAQQQQAABBHJfQMFaTTBVwLU6RcFaxUAV4E2m5EVudlWmfKV1XZQ3NVa56aabYm1mGwIIIIAAAggggAACCCCAAAIIIIAAAgggUG8F8rPpzKoblc6msTMWBBBAAAEEEEAAAQQQQAABBBBAAAEEEECgpgL5mZhNq8EqzUG4EKgNi7COAAIIIIAAAggggAACCCCAAAIIIIAAAluDQMZm1CqvQzBYS37areGfG+eIAAIIIIAAAggggAACCCCAAAIIIIAAArEEMpajNtZg2IYAAggggAACCCCAAAIIIIAAAggggAACCGyNAvmlpaVb43lzzggggAACCCCAAAIIIIAAAggggAACCCCAQNYIZCz1QdYIMBAEEEAAAQQQQAABBBBAAAEEEEAAAQQQQCDDAgRqM/wC0D0CCCCAAAIIIIAAAggggAACCCCAAAIIIECgln8DCCCAAAIIIIAAAggggAACCCCAAAIIIIBAhgXyIyXDQ6B7BBBAAAEEEEAAAQQQQAABBBBAAAEEEEBg6xbILykp2boFOHsEEEAAAQQQQAABBBBAAAEEEEAAAQQQQCDDAkynzfALQPcIIIAAAggggAACCCCAAAIIIIAAAggggEB+Xl4eCggggAACCCCAAAIIIIAAAggggAACCCCAAAIZFCBQm0F8ukYAAQQQQAABBBBAAAEEEEAAAQQQQAABBCSQX1ZWhgQCCCCAAAIIIIAAAggggAACCCCAAAIIIIBABgUK63ug9pC/LMsgL11nWuC969pkegj0jwACCCCAAAIIIIAAAggggAACCCCAQJUChTNmzLDNmzdXWTF3K7TN3aEz8loLTJ06tdZt0AACCCCAAAIIIIAAAggggAACCCCAAALpFiD1QbqFaR8BBBBAAAEEEEAAAQQQQAABBBBAAAEEEKhCIG/NmjUkqa0Cid0IIIAAAggggAACCCCAAAIIIIAAAggggEA6BfILCgrS2T5tI4AAAggggAACCCCAAAIIIIAAAggggAACCFQhkF9aWlpFFXYjgAACCCCAAAIIIIAAAggggAACCCCAAAIIpFMgPy8vL53t0zYCCCCAAAIIIIAAAggggAACCCCAAAIIIIBAFQL5VexnNwIIIIAAAggggAACCCCAAAIIIIAAAggg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+gV3x10uKiqyWbNmmZ7VZ/fu3V0/sdJPKCetLxq/yvr16y24vX379taxY0dfzT0rOL5kyZIK2xo3bmw9evSosM2vLFy40HQ+LVq0cOPR+OSwdu1a69atmwv0xhqfP74656RjlIdWdnpdNKN7hx12MAWgKQgggAACCCCAAAIIIIAAAggggAACCGytAmkL1I4dO9ZWrFjhXBWQa9WqVdpm1m7evNmef/5519dZZ51lPXv2rPB6/uc//zHlaN13333t4IMPju5TzlcFagcMGGDfffedC+b6nV999ZULoJ588sl+U/R51KhR7gZdfoOCjrphV7xAqOppjBqHgsHB8sUXX9i2225r55xzToUgsuoHc9L6Y2Sphy8KJofH+Mknn9i4ceN8Ffes9Ad/+tOfKmzzKzqfiRMnWtu2ba1JkyY2d+5cv8ttV3sXX3yxNWjQILpdC9U9Jx2j4O/DDz9sa9as0aorslZAmIIAAggggAACCCCAAAIIIIAAAggggMDWKpBfVlaW8nMPBmnVuGbUZnP6A81Q1YxVzaLVWH3eXgVgFyxYUMFHM00VlFXRLNXBgwe7GaFy1EzUeGX48OHRIK1m8O61116mWbjqa/Xq1fbII49Y8LXQrN5dd93VBZEVSPYzWuWodf+INZO3b9++tuOOO7pHdXLTLl261AVpNfNY7foblSmoqmBtuFT3nHT8o48+Gg3Sapx77LGHm1ms4LC/mVi4H9YRQAABBBBAAAEEEEAAAQQQQAABBBCo7wIpz1EbK0ib7rQHqXiRdIOuXr16uaY06/Puu+92gdMvv/zSfvrTn0a7eOedd9yy0iv89re/jaZZUOoFP6s3WvnHhfHjx5vSEagceeSRFXLGzps3zx577DGX0kAzW/fbbz9XT4HZ4447zi3rPwoQa1awAqgHHXRQdHusBc2y9WkbRowYYf5GZLHqhrftueeedvjhh7vNCpz+9a9/dYFVBbMPPPDAaPWanJNSTaxatcq1ccghh9g+++zjlg877DC77777ovuinbCAAAIIIIAAAggggAACCCCAAAIIIIDAViKQn6rzVCAyV4O0uuTfB2nl0bx5c5cGQMv+Jl5aVqDUB1wV0Azmwt15552tWbNmqlapjBw50m1r165dhSCtNnbt2jU629jn2a3UQB1t0OzeYGoIBYv79+/veleKiGCpyTkp6K2imbp77713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gAABAgQIECBAgACBrgoMJDm7unXmTYAAAQIECBAgQIAAAQIECBAgQIDAqghI1K7KTloHAQIECBAgQIAAAQIECBAgQIAAAQKdFVCjtrNbZ+IECBAgQIAAAQIECBAgQIAAAQIECKyKgETtquykdRAgQIAAAQIECBAgQIAAAQIECBAg0FmBQVVVnZ28iRMgQIAAAQIECBAgQIAAAQIECBAgQGAVBLLUqP3y9dsq2FgDAQIECBAgQIAAAQIECBAgQIAAAQIE5iLQeumDv/7+p/jjz+sirhoBAgQIECBAgAABAgQIECBAgAABAgQIvC5QjkajqizL13vW6BEnaSNJm9qvv/xUfPywkW6zXNPclXDIwisoAQIECBAgQIAAAQIECBAgQIAAAQJzEGj1RG0kZt+/ezud9mzidvqGFwQIECBAgAABAgQIECBAgAABAgQIECAwFWi9Ru3vv/0sWTvl9YIAAQIECBAgQIAAAQIECBAgQIAAAQKvC5TjkgHV692a94gatZ8+3z35YJRBiFO3bTalD9rUFIsAAQIECBAgQIAAAQIECBAgQIAAgUUIDDLlaYvZk7WxuKhfG+UQNAIECBAgQIAAAQIECBAgQIAAAQIECBD4LtBqjdrvYf97JVk7K+KeAAECBAgQIECAAAECBAgQIECAAAEC/xdovUbt7BBtlzqYje+eAAECBAgQIECAAAECBAgQIECAAAECXRcYRumDVOe17cXMq05t2/MWjwABAgQIECBAgAABAgQIECBAgAABAvMUGOYabDZJGydr37972/qPieWav7gECBAgQIAAAQIECBAgQIAAAQIECBCYl8Awx2na55K0Hz9szGtNxiFAgAABAgQIECBAgAABAgQIECBAgECnBFr/MTFJ2k7tv8kSIECAAAECBAgQIECAAAECBAgQILAEAq0mar98/VZ8+nw3XVaUO3CSdsrhBQECBAgQIECAAAECBAgQIECAAAECBJ4VaDVRm+rQxkhRj1aS9llzDwkQIECAAAECBAgQIECAAAECBAgQIPBEoKzG7cmTFm7iZG0kbefRUo3dDMuYx/SNQYAAAQIECBAgQIAAAQIECBAgQIAAgSJLonaerhK189Q2FgECBAgQIECAAAECBAgQIECAAAECOQQGo9EoR1wxCRAgQIAAAQIECBAgQIAAAQIECBAgQKCmwGDcanbVjQABAgQIECBAgAABAgQIECBAgAABAgRyCAzUds3BKiYBAgQIECBAgAABAgQIECBAgAABAgTqC3Q+URuJZsnm+huuJwECBAgQIECAAAECBAgQIECAAAECyyfQ+R8TWz5SMyJAgAABAgQIECBAgAABAgQIECBAgEAzAT8m1sxLbwIECBAgQIAAAQIECBAgQIAAAQIECLQu4ERt66QCEiBAgAABAgQIECBAgAABAgQIECBAoJnAoFl3vQkQIECAAAECBAgQIECAAAECBAgQIECgbQGJ2rZFxSNAgAABAgQIECBAgAABAgQIECBAgEBDATVqG4LpToAAAQIECBAgQIAAAQIECBAgQIAAgbYFBmVZth1TPAIECBAgQIAAAQIECBAgQIAAAQIECBBoICBR2wBLVwIECBAgQIAAAQIECBAgQIAAAQIECOQQUKM2h6qYBAgQIECAAAECBAgQIECAAAECBAgQaCAgUdsAS1cCBAgQIECAAAECBAgQIECAAAECBAjkEBhUVZUjrpgECBAgQIAAAQIECBAgQIAAAQIECBAgUFNAjdqaULoRIECAAAECBAgQIECAAAECBAgQIEAgl4DSB7lkxSVAgAABAgQIECBAgAABAgQIECBAgEBNAaUPakLpRoAAAQIECBAgQIAAAQIECBAgQIAAgVwCTtTmkhWXAAECBAgQIECAAAECBAgQIECAAAECNQXUqK0JpRsBAgQIECBAgAABAgQIECBAgAABAgRyCThRm0tWXAIECBAgQIAAAQIECBAgQIAAAQIECNQUUKO2JpRuBAgQIECAAAECBAgQIECAAAECBAgQyCXgRG0uWXEJECBAgAABAgQIECBAgAABAgQIECBQU0CN2ppQuhEgQIAAAQIECBAgQIAAAQIECBAgQCCXgNIHuWTFJUCAAAECBAgQIECAAAECBAgQIECAQE0BpQ9qQulGgAABAgQIECBAgAABAgQIECBAgACBXAJKH+SSFZcAAQIECBAgQIAAAQIECBAgQIAAAQI1Bf4FqiX2aQJ80xUAAAAASUVORK5CYII="/><use stroke="#7E7C7B" xlink:href="#rect-1"/></g><g id="Line-Copy-5-+-Line-Copy-4-+-Line-Copy-3" stroke="#C06334" stroke-linecap="square" stroke-width="3" transform="translate(172 59)"><path id="Line-Copy-5" d="M.5.5S25 .5 25 42.75.5 85 .5 85"/></g></g></g></svg> \ No newline at end of file +<<<<<<< HEAD +<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="693" height="156" viewBox="0 0 693 156"><defs><style>@import url(https://fonts.googleapis.com/css?family=Open+Sans:bold,italic,bolditalic%7CPT+Mono);@font-face{font-family:'PT Mono';font-weight:700;font-style:normal;src:local('PT MonoBold'),url(/font/PTMonoBold.woff2) format('woff2'),url(/font/PTMonoBold.woff) format('woff'),url(/font/PTMonoBold.ttf) format('truetype')}</style></defs><defs><path id="rect-1" d="M0 0h693v156H0z"/></defs><g id="debugging" fill="none" fill-rule="evenodd" stroke="none" stroke-width="1"><g id="chrome-sources-console.svg"><g id="Bitmap"><image width="693" height="156" xlink:href="data:image/png;base64,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sL6W8yI3kCqLlPD2tK/7IG2wo4MOOiing7XBc2EZAQQQQAABBBBAAAEEEEAAAQQQQAABBHJfQMFaTTBVwLU6RcFaxUAV4E2m5EVudlWmfKV1XZQ3NVa56aabYm1mGwIIIIAAAggggAACCCCAAAIIIIAAAgggUG8F8rPpzKoblc6msTMWBBBAAAEEEEAAAQQQQAABBBBAAAEEEECgpgL5mZhNq8EqzUG4EKgNi7COAAIIIIAAAggggAACCCCAAAIIIIAAAluDQMZm1CqvQzBYS37areGfG+eIAAIIIIAAAggggAACCCCAAAIIIIAAArEEMpajNtZg2IYAAggggAACCCCAAAIIIIAAAggggAACCGyNAvmlpaVb43lzzggggAACCCCAAAIIIIAAAggggAACCCCAQNYIZCz1QdYIMBAEEEAAAQQQQAABBBBAAAEEEEAAAQQQQCDDAgRqM/wC0D0CCCCAAAIIIIAAAggggAACCCCAAAIIIECgln8DCCCAAAIIIIAAAggggAACCCCAAAIIIIBAhgXyIyXDQ6B7BBBAAAEEEEAAAQQQQAABBBBAAAEEEEBg6xbILykp2boFOHsEEEAAAQQQQAABBBBAAAEEEEAAAQQQQCDDAkynzfALQPcIIIAAAggggAACCCCAAAIIIIAAAggggEB+Xl4eCggggAACCCCAAAIIIIAAAggggAACCCCAAAIZFCBQm0F8ukYAAQQQQAABBBBAAAEEEEAAAQQQQAABBCSQX1ZWhgQCCCCAAAIIIIAAAggggAACCCCAAAIIIIBABgUK63ug9pC/LMsgL11nWuC969pkegj0jwACCCCAAAIIIIAAAggggAACCCCAQJUChTNmzLDNmzdXWTF3K7TN3aEz8loLTJ06tdZt0AACCCCAAAIIIIAAAggggAACCCCAAALpFiD1QbqFaR8BBBBAAAEEEEAAAQQQQAABBBBAAAEEEKhCIG/NmjUkqa0Cid0IIIAAAggggAACCCCAAAIIIIAAAggggEA6BfILCgrS2T5tI4AAAggggAACCCCAAAIIIIAAAggggAACCFQhkF9aWlpFFXYjgAACCCCAAAIIIIAAAggggAACCCCAAAIIpFMgPy8vL53t0zYCCCCAAAIIIIAAAggggAACCCCAAAIIIIBAFQL5VexnNwIIIIAAAggggAACCCCAAAIIIIAAAggg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+gV3x10uKiqyWbNmmZ7VZ/fu3V0/sdJPKCetLxq/yvr16y24vX379taxY0dfzT0rOL5kyZIK2xo3bmw9evSosM2vLFy40HQ+LVq0cOPR+OSwdu1a69atmwv0xhqfP74656RjlIdWdnpdNKN7hx12MAWgKQgggAACCCCAAAIIIIAAAggggAACCGytAmkL1I4dO9ZWrFjhXBWQa9WqVdpm1m7evNmef/5519dZZ51lPXv2rPB6/uc//zHlaN13333t4IMPju5TzlcFagcMGGDfffedC+b6nV999ZULoJ588sl+U/R51KhR7gZdfoOCjrphV7xAqOppjBqHgsHB8sUXX9i2225r55xzToUgsuoHc9L6Y2Sphy8KJofH+Mknn9i4ceN8Ffes9Ad/+tOfKmzzKzqfiRMnWtu2ba1JkyY2d+5cv8ttV3sXX3yxNWjQILpdC9U9Jx2j4O/DDz9sa9as0aorslZAmIIAAggggAACCCCAAAIIIIAAAggggMDWKpBfVlaW8nMPBmnVuGbUZnP6A81Q1YxVzaLVWH3eXgVgFyxYUMFHM00VlFXRLNXBgwe7GaFy1EzUeGX48OHRIK1m8O61116mWbjqa/Xq1fbII49Y8LXQrN5dd93VBZEVSPYzWuWodf+INZO3b9++tuOOO7pHdXLTLl261AVpNfNY7foblSmoqmBtuFT3nHT8o48+Gg3Sapx77LGHm1ms4LC/mVi4H9YRQAABBBBAAAEEEEAAAQQQQAABBBCo7wIpz1EbK0ib7rQHqXiRdIOuXr16uaY06/Puu+92gdMvv/zSfvrTn0a7eOedd9yy0iv89re/jaZZUOoFP6s3WvnHhfHjx5vSEagceeSRFXLGzps3zx577DGX0kAzW/fbbz9XT4HZ4447zi3rPwoQa1awAqgHHXRQdHusBc2y9WkbRowYYf5GZLHqhrftueeedvjhh7vNCpz+9a9/dYFVBbMPPPDAaPWanJNSTaxatcq1ccghh9g+++zjlg877DC77777ovuinbCAAAIIIIAAAggggAACCCCAAAIIIIDAViKQn6rzVCAyV4O0uuTfB2nl0bx5c5cGQMv+Jl5aVqDUB1wV0Azmwt15552tWbNmqlapjBw50m1r165dhSCtNnbt2jU629jn2a3UQB1t0OzeYGoIBYv79+/veleKiGCpyTkp6K2imbp77713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gAABAgQIECBAgACBrgoMJDm7unXmTYAAAQIECBAgQIAAAQIECBAgQIDAqghI1K7KTloHAQIECBAgQIAAAQIECBAgQIAAAQKdFVCjtrNbZ+IECBAgQIAAAQIECBAgQIAAAQIECKyKgETtquykdRAgQIAAAQIECBAgQIAAAQIECBAg0FmBQVVVnZ28iRMgQIAAAQIECBAgQIAAAQIECBAgQGAVBLLUqP3y9dsq2FgDAQIECBAgQIAAAQIECBAgQIAAAQIE5iLQeumDv/7+p/jjz+sirhoBAgQIECBAgAABAgQIECBAgAABAgQIvC5QjkajqizL13vW6BEnaSNJm9qvv/xUfPywkW6zXNPclXDIwisoAQIECBAgQIAAAQIECBAgQIAAAQJzEGj1RG0kZt+/ezud9mzidvqGFwQIECBAgAABAgQIECBAgAABAgQIECAwFWi9Ru3vv/0sWTvl9YIAAQIECBAgQIAAAQIECBAgQIAAAQKvC5TjkgHV692a94gatZ8+3z35YJRBiFO3bTalD9rUFIsAAQIECBAgQIAAAQIECBAgQIAAgUUIDDLlaYvZk7WxuKhfG+UQNAIECBAgQIAAAQIECBAgQIAAAQIECBD4LtBqjdrvYf97JVk7K+KeAAECBAgQIECAAAECBAgQIECAAAEC/xdovUbt7BBtlzqYje+eAAECBAgQIECAAAECBAgQIECAAAECXRcYRumDVOe17cXMq05t2/MWjwABAgQIECBAgAABAgQIECBAgAABAvMUGOYabDZJGydr37972/qPieWav7gECBAgQIAAAQIECBAgQIAAAQIECBCYl8Awx2na55K0Hz9szGtNxiFAgAABAgQIECBAgAABAgQIECBAgECnBFr/MTFJ2k7tv8kSIECAAAECBAgQIECAAAECBAgQILAEAq0mar98/VZ8+nw3XVaUO3CSdsrhBQECBAgQIECAAAECBAgQIECAAAECBJ4VaDVRm+rQxkhRj1aS9llzDwkQIECAAAECBAgQIECAAAECBAgQIPBEoKzG7cmTFm7iZG0kbefRUo3dDMuYx/SNQYAAAQIECBAgQIAAAQIECBAgQIAAgSJLonaerhK189Q2FgECBAgQIECAAAECBAgQIECAAAECOQQGo9EoR1wxCRAgQIAAAQIECBAgQIAAAQIECBAgQKCmwGDcanbVjQABAgQIECBAgAABAgQIECBAgAABAgRyCAzUds3BKiYBAgQIECBAgAABAgQIECBAgAABAgTqC3Q+URuJZsnm+huuJwECBAgQIECAAAECBAgQIECAAAECyyfQ+R8TWz5SMyJAgAABAgQIECBAgAABAgQIECBAgEAzAT8m1sxLbwIECBAgQIAAAQIECBAgQIAAAQIECLQu4ERt66QCEiBAgAABAgQIECBAgAABAgQIECBAoJnAoFl3vQkQIECAAAECBAgQIECAAAECBAgQIECgbQGJ2rZFxSNAgAABAgQIECBAgAABAgQIECBAgEBDATVqG4LpToAAAQIECBAgQIAAAQIECBAgQIAAgbYFBmVZth1TPAIECBAgQIAAAQIECBAgQIAAAQIECBBoICBR2wBLVwIECBAgQIAAAQIECBAgQIAAAQIECOQQUKM2h6qYBAgQIECAAAECBAgQIECAAAECBAgQaCAgUdsAS1cCBAgQIECAAAECBAgQIECAAAECBAjkEBhUVZUjrpgECBAgQIAAAQIECBAgQIAAAQIECBAgUFNAjdqaULoRIECAAAECBAgQIECAAAECBAgQIEAgl4DSB7lkxSVAgAABAgQIECBAgAABAgQIECBAgEBNAaUPakLpRoAAAQIECBAgQIAAAQIECBAgQIAAgVwCTtTmkhWXAAECBAgQIECAAAECBAgQIECAAAECNQXUqK0JpRsBAgQIECBAgAABAgQIECBAgAABAgRyCThRm0tWXAIECBAgQIAAAQIECBAgQIAAAQIECNQUUKO2JpRuBAgQIECAAAECBAgQIECAAAECBAgQyCXgRG0uWXEJECBAgAABAgQIECBAgAABAgQIECBQU0CN2ppQuhEgQIAAAQIECBAgQIAAAQIECBAgQCCXgNIHuWTFJUCAAAECBAgQIECAAAECBAgQIECAQE0BpQ9qQulGgAABAgQIECBAgAABAgQIECBAgACBXAJKH+SSFZcAAQIECBAgQIAAAQIECBAgQIAAAQI1Bf4FqiX2aQJ80xUAAAAASUVORK5CYII="/><use stroke="#7E7C7B" xlink:href="#rect-1"/></g><g id="Line-Copy-5-+-Line-Copy-4-+-Line-Copy-3" stroke="#C06334" stroke-linecap="square" stroke-width="3" transform="translate(172 59)"><path id="Line-Copy-5" d="M.5.5S25 .5 25 42.75.5 85 .5 85"/></g></g></g></svg> +======= +<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="693" height="156" viewBox="0 0 693 156"><defs><style>@import url(https://fonts.googleapis.com/css?family=Open+Sans:bold,italic,bolditalic%7CPT+Mono);@font-face{font-family:'PT Mono';font-weight:700;font-style:normal;src:local('PT MonoBold'),url(/font/PTMonoBold.woff2) format('woff2'),url(/font/PTMonoBold.woff) format('woff'),url(/font/PTMonoBold.ttf) format('truetype')}</style></defs><defs><path id="rect-1" d="M0 0h693v156H0z"/></defs><g id="debugging" fill="none" fill-rule="evenodd" stroke="none" stroke-width="1"><g id="chrome-sources-console.svg"><g id="Bitmap"><image width="693" height="156" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABWoAAAE4CAYAAADCR8qdAAAAAXNSR0IArs4c6QAAAERlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAA6ABAAMAAAABAAEAAKACAAQAAAABAAAFaqADAAQAAAABAAABOAAAAAC82rZfAABAAElEQVR4AezdB5wbxdnH8efkcy+4925jmmnGxnSI6b1DKKETOiTkJSGB0IIJBAIE01sIgZCEYnpCjcFAIKYa3HCvuODe7Suv/nPMem9P0unupNPp/JvPR+zu7Ozs7ldG0j43+2zBihUrSgsKCoyCAAIIIIAAAggggAACCCCAAAIIIIAAAgggkBuBWGFhYW72zF4RQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEnECsqKgICgQQQAABBBBAAAEEEEAAAQQQQAABBBBAAIEcCsTiJYe7Z9cIIIAAAggggAACCCCAAAIIIIAAAggggAACBGr5N4AAAggggAACCCCAAAIIIIAAAggggAACCORYgOG0OX4D2D0CCCCAAAIIIIAAAggggAACCCCAAAIIIBArLi5GAQEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQCCHAoyozSE+u0YAAQQQQAABBBBAAAEEEEAAAQQQQAABBCQQa9CgARIIIIAAAggggAACCCCAAAIIIIAAAggggAACORSIlZSU5HD37BoBBBBAAAEEEEAAAQQQQAABBBBAAAEEEECA1Af8G0AAAQQQQAABBBBAAAEEEEAAAQQQQAABBHIsQKA2x28Au0cAAQQQQAABBBBAAAEEEEAAAQQQQAABBAjU8m8AAQQQQAABBBBAAAEEEEAAAQQQQAABBBDIsUAsXnJ8COweAQQQQAABBBBAAAEEEEAAAQQQQAABBBDYvAUKi4uLcybwzjvv2Lvvvmt9+vRxr/333z9nx8KOEUAAAQQQQAABBBBAAAEEEEAAAQQQQACBXAkU5mrHPkir/U+fPt29NE+wVgoUBBBAAAEEEEAAAQQQQAABBBBAAAEEENicBAoLCgqstLS01s9ZI2mjRXX5Fqhdv369ffvttzZ58mSbOHGizZkzxzp37mw9evSwIUOG2MCBA6OnWW+X33rrLSsqKrJBgwZZp06d6u15cmIIIIAAAggggAACCCCAAAIIIIAAApuPwKOPPupilsoKUJWiwakarHreeeeltVnB6tWrS0tKStJqnMlG11xzTYXudLLpHniFjXNQMWPGDPvtb39rs2fPTrr3wYMH2xVXXOECt0kb1ZMV++23nzuTW265xfbYY496clacBgIIIIAAAggggAACCCCAAAIIIIDA5iqgIK0CriqKW6YbrNU22lYl3ZhnLBejaXWAw4YN06RcSfdEy22UowVFw88666wgSDtgwAA74YQT7Morr7QzzjjDunbt6o7s008/tcsvv9wWLVqUoyNltwgggAACCCCAAAIIIIAAAggggAACCCBQVYFwkFbbRpeT9RcO0qpNdDnZdjkL1CrFQThYq/l8SXswd+5c+93vfudMmzVrZnfeeac9/PDDdumll9pRRx1l55xzjv31r3+1iy66yLVZunSpXX/99cneA+oRQAABBBBAAAEEEEAAAQQQQAABBBBAoI4JJIpVVhasTRaUTdRX9HRzlqNWB6IDTOcgowed62U/bFnHcd999yUc8tygQQM7+eSTbcGCBfbCCy/Y+PHjXf7a7t275/rw2T8CCCCAAAIIIIAAAggggAACCCCAAAIIVCLgUxaEY4HaRMuJ0iAkC9Imapto14W5Sn2Q6GDyoU4PDfvPf/7jDvXYY49NGKQNn4faKFCr8sEHH9iPf/zj8Gr7+OOP7cMPP3SB3O+++8769u1r22yzjR100EG25ZZblmurYO9zzz1nHTt2tJ/+9Kf26quvmlIr6KWyww472GmnnWbbb799ue20MGbMGHvttdfcg8/mzZtnHTp0sN69e7v9aDSzAsvRMm3aNPv3v//tHpI2ZcoU69Kli2299da2++6721577RVtnnJZ+XxfeeUVGzdunM2aNcu2224799CxfffdN0gTkbIDViKAAAIIIIAAAggggAACCCCAAAIIIFDLAukGa2sapNVpFaxcubK0ls8vr3f34osv2t133+3O4W9/+1taQcbi4mJTQDwWi7mXNl63bp3df//99vLLLyf1UG7b4447Llj//vvv23XXXeceTLbLLruYjiVRuemmm2yfffYJVikNw2OPPRYsR2cOO+wwu+qqq6ygoCBY9dJLL9ldd90VLEdntI2Or0mTJsGqZA8TU4D49ttvD9qFZ5Q64t5773UB6nA98wgggAACCCCAAAIIIIAAAggggAACCNQVgVSBWB1jdNSt6tIdSau2KoUaSalAIiU9gdmzZ7uGCjD6B4ZVtmWi0apPPvlkEKT1I2E1UlZv+gMPPOAePnbPPfe40bPR0as6Br2GDBliJ510krVu3dqNzH3mmWdszZo19sgjjwSB2iVLlgRB2qFDh9rpp5/uRtMuXLjQnn76afvkk0/s9ddfNwVeBw4c6E5FdT5I26ZNG7v44outf//+pm20jy+//NJt07x5c7vkkktSnv7YsWODIK32r3QQbdu2dSN7dZ7K36vcvgomt2vXLmVfrEQAAQQQQAABBBBAAAEEEEAAAQQQQCAXAqlG1iY6nqoGadVHYUlJSaK+aqXunXfesXfffdelD9DJ5kO+Wt22r9KzZ89qGynFgUbjquy5556mEbA+mCsHBWD1QLJFixa5UbcKcDZs2LDc/vbYYw+7+eabgxG6SpOgUbuPP/64C+LGR0pby5YtbcKECcF2SpfQr18/t9y5c2fbdttt7cQTT3TB0q+++soFahW01whXFQVp//KXv1irVq3cso5t8ODBbr9K//Dss8/a0Ucfbcny7qovPWhNZe+993bn6UftKu3CoEGD7IwzznDB5TfeeMNOPfVU15b/IIAAAggggAACCCCAAAIIIIAAAgggUNcEkgVro8dZnSCt+oj5wFm0w2wv+yCt9qNRpArYqq6uF41QVdGI2uoW5aT1RSNSfZDW1ynA6keqKp+s8uJGy1lnnRUEaf26cLoDf5y9evXyq10QV8FfXwoLC+3BBx+0P//5z3bwwQe76qlTp7pArxY0ktYHaf02OtYLL7zQL9ro0aOD+ejMzJkzTblpVfQPNPpvrX379kFwduTIka4d/0EAAQQQQAABBBBAAAEEEEAAAQQQQKCuCvhgbbLjq26QVv0VJus02/UKzEaL6ur6qFqlO1Awc/78+dHDT3t5zpw5rm2PHj2Spk/QaFNf5s6d60a/+mVNwwFYX9+iRQs/G6Sz0GhXjZzVg8gUINZLDwRT/0q5oAePderUKdhOgWFflAc3UVF7jcyVgz+XRO18mgitU2oD5eiNFj9CWQFkpW2oSQA82jfLCCCAAAIIIIAAAggggAACCCCAAAII5ItAzgK1iYAUka7rRcFVFQU0dWt/dDRsouPXg7QWL15s22yzjZ155plBkFfpB5IVjWRV0FLBy3Dw1Ldv3Lixn610qvQDTzzxhMuJq/4mTpzoXj79gvLGnnvuudaoUSOXh9Z3qFyyyYocwqNvE7VTgNmXt99+288mnS5fvpxAbVIdViCAAAIIIIAAAggggAACCCCAAAII5Fog2UPF/HHpoWLVHVVbqLymuSjDhg1z6Q7C+86HQG34AWIanRpONxA+Fz+vXLGvvfaaW9xuu+3c1KcT0LpkZcOGDS5Iq/V6WFhNSpMmTVy6Av0j0cha5aP94osv7PPPP3fd/uMf/3B5an/zm99YeFRuqhGuPrVCqmBueN3VV1+d8hSUFkE5cSkIIIAAAggggAACCCCAAAIIIIAAAgjURYHKgrT+mKsbrHUPE4vmDvWdZnPqUxz4FAgK3Pq6bO63pn3vtttuQRcakVpZoDacj3annXZy2/pRuRrZum7dOlMgNVr0xvuS7GFdfn2q6YoVK0xB1aZNm7oUB0p3oNdPfvITl7bg2muvdXlk33zzTbvyyiutW7duQXfTpk1zDxgLKn6YURB5ypQpbilRCgbfPvzANT0QLVEgVsFqpZHQaN5EDr4vpggggAACCCCAAAIIIIAAAggggAACCORKIFmQVgMjVRScDZfqBGtj6dy6H95JJucVmB0+fLh75UOQVueuB2CdcsopjkGB1kceecRKSkoSsnz//fd2zz33uHUKUm611VZufuDAgUH7559/PpgPz+gBX77079/fz1Z5+sILL5gePPZ///d/FbZVAPj4448P6letWmV9+/YNlpUuIVF58cUXg9G+fpRwona9e/cOUhkke1jYH/7wBzv//PPt+uuvT9QFdQgggAACCCCAAAIIIIAAAggggAACCORUIFWQVhkCkj1gTMHa8GDMyk4ilizIWNmGm/N65XT1D716+umn7aabbrIJEyaYRpqqaKqRtApAKn2AynXXXedGjWp+5513tiFDhmjWBXqVemDjxo1uWSNMFbz8+OOP3bJyx26xxRZuvjr/0cPCVPRgr4cfftjWrl0bdLN06VJ755133HKHDh1cELply5Z2wQUXuLpPP/3UbrnlFvMpGoqKikyB3/vvv9+t1wjhXXfdNegvOiMjjdxVefLJJ+2pp55yI4i1rD4VvB09erQW7ZBDDnFT/oMAAggggAACCCCAAAIIIIAAAggggEBdEagsSOuPMxPB2oL4rfGluUh94E8iX6d6UJaCr3qgVrgoh2304V8K2J522mnhZqbtr7rqqnJto9sOGjTIBUp9SoD333/f7VMdjRo1qlx/WtAI3hNOOMHVP/744250rB54ds011wSBX63USFfVK3jri47l8MMPd4vr1683pUQYM2aMX23RY1Ng949//KOF0xvst99+rr2Cu3vssYebV2qHX/7ylzZ27NigL227aNGiYFkjjNVXVR6QFmzMDAIIIIAAAggggAACCCCAAAIIIIAAAlkQSDdIG951dbbx28cKCwv9PNMqCCiX63333WcnnXSSC2L6TcNBWuWCfeyxxyoEadVW22v481FHHRWMzvXbKpCpUa133HFHubyt1XmvlNpCaQUUKPajgGfMmBEEaQcMGGA33HBDEKTVsSlgetttt9mll15qOhYVf2zqQwFdpWYIB2ldox/+E06noSDzXXfdZeecc06QozYcpD311FPt1ltvJUgbBmQeAQQQQAABBBBAAAEEEEAAAQQQQCDnAv5O9PCBKCetRs8mK8lG1ibqK9pHTkfU6gD1MDGdgF75kqc2iqhl3cqvh2/p4V0afaqXHuCVbtFoWAUwlTdW6QeyUZS6QPvRw8UUjG3btm0QPE21P53bnDlzXGoEH7hN1T7VuuXLl7ugr9I5qK+GDRumas46BBBAAAEEEEAAAQQQQAABBBBAAAEEciYQzjNbWZA2fJDhkbXJgrfh9poviD9AqjReovVZX/ZB2vCOhg0bltfB2vC5MI8AAggggAACCCCAAAIIIIAAAggggAAC+S+gYK0GmCrgWpWiYK1ioArwplMK4g+7KlW+0touypuaqAwfPjxRNXUIIIAAAggggAACCCCAAAIIIIAAAggggEC9FYjVpTOralS6Lh07x4IAAggggAACCCCAAAIIIIAAAggggAACCFRXIJaL0bQ6WKU5iBYCtVERlhFAAAEEEEAAAQQQQAABBBBAAAEEEEBgcxDI2Yha5XUIB2vJT7s5/HPjHBFAAAEEEEAAAQQQQAABBBBAAAEEEEAgkUDOctQmOhjqEEAAAQQQQAABBBBAAAEEEEAAAQQQQACBzVEgVlJSsjmeN+eMAAIIIIAAAggggAACCCCAAAIIIIAAAgjUGYGcpT6oMwIcCAIIIIAAAggggAACCCCAAAIIIIAAAgggkGMBArU5fgPYPQIIIIAAAggggAACCCCAAAIIIIAAAgggQKCWfwMIIIAAAggggAACCCCAAAIIIIAAAggggECOBWLxkuNDYPcIIIAAAggggAACCCCAAAIIIIAA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RX/c8tdmF110kfXq1asm3bEtAggggAACCFRTQNeA2S763vexwvC+cpb6QBe3iQ4ofHB1dV7H7gOr0WP09akCrjpv5eyNBgzS2Ta6P5YRQACBmgroS8h//qTblz7H8i04Gf3MDZ9roj+y+e8o/we2ZAFbH6zV577fJtx3vs4rl2DDhg1THn7Tpk1Trk+0ctasWW4UmtYRqE0kRB0CCNRlgYKCApenVqNot956a3viiSdccFXTn//85zU6dAWBfQmP5PV1TOuHwObyu6t+vFucBQIIbI4Cur7TK9vFX4NH44c5C9TqgjnRhXG2ITLRf2WR9WTY0X3r4r8uPhwtepyplh944AFbu3atG0mldv/9739dXqtYLGY/+9nPym2q3Fa6pVb/4PVwhPbt27ugxr777utGYYUbKzfW888/76ouueQS+/e//+1urZ07d67pQQ4KhijR/3777Ze1BzmEj4d5BOqzgL4Y/OdWuucZ/TJJd7tctPOB1GT7Tue7SJ85+sxOdnHl96E29SVYe9hhh9mOO+6YjK1c/YEHHui+B7p161aungUEEECgPgvsvvvu7o4C/T6dOHGiG2kbfQiVfvvq97G+J5Q6QSNvt9tuO9trr71cahj5zJgxw5RaYNGiRQHXPffc437z6neyT6ug9W+++abpjgXdxaDRt40bN3YPHDv44IOD1DPqRA8je+2111wfl19+edCvn1m3bp09+OCDro+f/OQn1qFDB7+q3LQqv/XLbZjGQjo2ynP71FNPud4OPfRQ22abbSr0rNQ7Pr/sSSed5NLw+Ebp7MO3TTb94osv3Pe/7jrRdY/M5aUcxXoplWBVSn3/3VUVC9oigAACdVGgsphf+Jh17aeXvt990fb63k+nJGqXs0CtDliBAR2Uvqzy5cJWxxuF1LFH63zQo7JghgIEvq03qWybdN7s2mqj21f9LVrapwKw+mEYLsq39ec//9n0Iydc9MNLr08++cSOPPJIO+KII4LVypPo+7n55ptdO79St5gpH6JeeirvxRdf7H4w+fVMEUCg6gLRz6JUPahtvnxm6zxSfdHqPMKfufos1y0o/nPZr/fnq7Z+XSIj7UvB2s2tbLvttpvbKXO+CCCAgBPQb1gFPFUUMPSBWv1e1ShbBQrDRb9v9Ro1apRde+21Llir7fzvXt926tSpblajdlUUzL3tttvK/e5WvX5n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TrsJgzkEEEAAAQQQQAABBBBAAAEEEEAAAQQQQCAXAgRqc6HOPhFAAAEEEEAAAQQQQAABBBBAAAEEEEAAgZAAqQ9CGMwigAACCCCAAAIIIIAAAggggAACCCCAAAK5EOBhYrlQZ58IIIAAAggggAACCCCAAAIIIIAAAggggEBIgBG1IQxmEUAAAQQQQAABBBBAAAEEEEAAAQQQQACBXAjEcrFT9okAAggggAACCCCAAAIIIIAAAggggAACCCCwSaBw0yxzNRV47733bNSoUdasWTO76qqratpdhe3Hjh1rb7/9tq1evdpKSkrc+oEDB9rxxx9foa2v+Oijj+ydd96x5s2b25VXXumr6+R0+PDhVlRUZEcddZTtvPPOdfIYOSgEEEAAAQQQQAABBBBAAAEEEEAAAQSyIVCogF8sxsDaTOAWFxe7bvw0E336PqZMmWIjR470i1ZQUODmGzRoENQlmtmwYYML6q5fvz7R6jpV54PP2fCrUyfKwSCAAAIIIIAAAggggAACCCCAAAIIIBARKPQBv0g9i3VMQKN1VRo1amRnnHGGdevWLa0j1EhabdO6deu02tMIAQQQQAABBBBAAAEEEEAAAQQQQAABBGpfIOuB2iVLlljbtm1r/8zq2R6XLVvmzmjAgAFpB2m1wZAhQ9yrnnFwOggggAACCCCAAAIIIIAAAggggAACCNQrgazmqJ06dapNmzbN+vbta/369csq3Pjx413/2k/jxo3L7UvHsG7dOuvatWu5kaU6PuV71ejUli1bmtILTJo0yZROYMstt7RtttmmXD/hhYULF9qECRNswYIFbvvtttsuvDrp/Ny5c23GjBmmqfbZs2dPt59E6SeUk9YXHb/KmjVrLFzfsWNH69y5s2/mpgqOL1q0qFxdkyZNrFevXuXq/ML8+fNN57PFFlu449HxyWHVqlXWo0cPF+hNdHx++6qck7ZRHlrZ6X3RiO6tttrKFICmIIAAAggggAACCCCAAAIIIIAAAgggsLkKZC1Q++mnn9rSpUudqwJybdq0ydrI2o0bN9qzzz7r9nXmmWda7969y72f//znP005Wvfaay/bf//9g3XK+apA7Q477GDffvutC+b6lV988YULoJ500km+Kph+8MEH7gFdvkJBRz2wK1kgVO10jDoOBYPD5X//+5+1atXKzj777HJBZLUP56T128hSL18U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1zr2W4PrBAgQIECAAAECBAgQIECAAAECBNZBoBpmhg5KBcbihWIRpI1M0dIZtfXDiADo27dvU2RvHjt2rL5c5BglFt69e5eOHz8+mq/pJBFEjrIJnz59Gt135MiR1O12m96+lP1m3VMEqKOmbwRnI0BdB2mXcnMWRYAAAQIECBAgQIAAAQIECBAgQKCwQDXMZhyUnCMyaSdfwlVyLmMTIECAAAECBAgQIECAAAECBAgQIEBgFQWKB2pXEcWaCRAgQIAAAQIECBAgQIAAAQIECBAgME+B/QuQznMV5iJAgAABAgQIECBAgAABAgQIECBAgECLBQRqW/zwbZ0AAQIECBAgQIAAAQIECBAgQIAAgeUQEKhdjudgFQQIECBAgAABAgQIECBAgAABAgQItFhAoLbFD9/WCRAgQIAAAQIECBAgQIAAAQIECBBYDoFOv99fjpVYBQECBAgQIECAAAECBAgQIECAAAECBFoq0N3Z2Um9Xq+l27dtAgQIECBAgAABAgQIECBAgAABAgQILF5ARu3in4EVECBAgAABAgQIECBAgAABAgQIECDQcoFqmE076HSUqm3578D2CRAgQIAAAQIECBAgQIAAAQIECBBYoEA1GLYFzm9qAgQIECBAgAABAgQIECBAgAABAgQItF5A6YPW/wQAECBAgAABAgQIECBAgAABAgQIECCwaAEZtYt+AuYnQIAAAQIECBAgQIAAAQIECBAgQKD1AorTtv4nAIAAAQIECBAgQIAAAQIECBAgQIAAgUULCNQu+gmYnwABAgQIECBAgAABAgQIECBAgACB1gusfI3aqqpS/GkECBAgQIAAAQIECBAgQIAAAQIECBBYVYGOIOeqPjrrJkCAAAECBAgQIECAAAECBAgQIEBgXQQEatflSdoHAQIECBAgQIAAAQIECBAgQIAAAQIrK6BG7co+OgsnQIAAAQIECBAgQIAAAQIECBAgQGBdBARq1+VJ2gcBAgQIECBAgAABAgQIECBAgAABAisr0BkMBiu7eAsnQIAAAQIECBAgQIAAAQIECBAgQIDAOggUqVH755veOtjYAwECBAgQIECAAAECBAgQIECAAAECBOYikL30wZPfP6afn2ynOGoECBAgQIAAAQIECBAgQIAAAQIECBAg8HWBqt/vD6qq+nrPBj0ikzaCtHXbOr2RHtw8WJ8WOdZrV8KhCK9BCRAgQIAAAQIECBAgQIAAAQIECBCYg0DWjNoLpw6kOxc3x8v+469/0i+//T0+94EAAQIECBAgQIAAAQIECBAgQIAAAQIEvhTIXqP21o+bgrVfOrtCgAABAgQIECBAgAABAgQIECBAgACBfQWqYcmAwb7f/o8vokbto2e769T+euv7FFm3OZvSBzk1jUWAAAECBAgQIECAAAECBAgQIECAwCIEOoXitGk6szY2F/Vro46tRoAAAQIECBAgQIAAAQIECBAgQIAAAQKfBbLWqP087H+fBGunRZwTIECAAAECBAgQIECAAAECBAgQIEDgS4HsNWqnp7hwqjt9yTkBAgQIECBAgAABAgQIECBAgAABAgQITAh0o/RBXed14nqWj/OqU5tlsQYhQIAAAQIECBAgQIAAAQIECBAgQIDAggSKpbtOB2m3Tm+kn374LvvLxBbkZloCBAgQIECAAAECBAgQIECAAAECBAhkE+iWyKbdK0j74ObBbIs2EAECBAgQIECAAAECBAgQIECAAAECBNZJIPvLxARp1+nnYS8ECBAgQIAAAQIECBAgQIAAAQIECMxDIGug9s83vfTo2cfxuqPcgUzaMYcPBAgQIECAAAECBAgQIECAAAECBAgQ2FMga6D2wqkD6c7FzdFEcRSk3dPcRQIECBAgQIAAAQIECBAgQIAAAQIECOwSqAbDtutKhpPIrI2g7TxaXWO3wDbmsXxzECBAgAABAgQIECBAgAABAgQIECBAIBUJ1M7TVaB2ntrmIkCAAAECBAgQIECAAAECBAgQIECghECn3++XGNeYBAgQIECAAAECBAgQIECAAAECBAgQINBQoDNsDbvqRoAAAQIECBAgQIAAAQIECBAgQIAAAQIlBDpqu5ZgNSYBAgQIECBAgAABAgQIECBAgAABAgSaC6x8oDYCzYLNzR+4ngQIECBAgAABAgQIECBAgAABAgQILJ/Ayr9MbPlIrYgAAQIECBAgQIAAAQIECBAgQIAAAQKzCXiZ2GxeehMgQIAAAQIECBAgQIAAAQIECBAgQCC7gIza7KQGJECAAAECBAgQIECAAAECBAgQIECAwGwCndm6602AAAECBAgQIECAAAECBAgQIECAAAECuQUEanOLGo8AAQIECBAgQIAAAQIECBAgQIAAAQIzCqhROyOY7gQIECBAgAABAgQIECBAgAABAgQIEMgt0KmqKveYxiNAgAABAgQIECBAgAABAgQIECBAgACBGQQEamfA0pUAAQIECBAgQIAAAQIECBAgQIAAAQIlBNSoLaFqTAIECBAgQIAAAQIECBAgQIAAAQIECMwgIFA7A5auBAgQIECAAAECBAgQIECAAAECBAgQKCHQGQwGJcY1JgECBAgQIECAAAECBAgQIECAAAECBAg0FFCjtiGUbgQIECBAgAABAgQIECBAgAABAgQIECgloPRBKVnjEiBAgAABAgQIECBAgAABAgQIECBAoKGA0gcNoXQjQIAAAQIECBAgQIAAAQIECBAgQIBAKQEZtaVkjUuAAAECBAgQIECAAAECBAgQIECAAIGGAmrUNoTSjQABAgQIECBAgAABAgQIECBAgAABAqUEZNSWkjUuAQIECBAgQIAAAQIECBAgQIAAAQIEGgqoUdsQSjcCBAgQIECAAAECBAgQIECAAAECBAiUEpBRW0rWuAQIECBAgAABAgQIECBAgAABAgQIEGgooEZtQyjdCBAgQIAAAQIECBAgQIAAAQIECBAgUEpA6YNSssYlQIAAAQIECBAgQIAAAQIECBAgQIBAQwGlDxpC6UaAAAECBAgQIECAAAECBAgQIECAAIFSAkoflJI1LgECBAgQIECAAAECBAgQIECAAAECBBoK/AvRjwGwcXLUZQAAAABJRU5ErkJggg=="/><use stroke="#7E7C7B" xlink:href="#rect-1"/></g><g id="Line-Copy-5-+-Line-Copy-4-+-Line-Copy-3" stroke="#C06334" stroke-linecap="square" stroke-width="3" transform="translate(172 59)"><path id="Line-Copy-5" d="M.5.5S25 .5 25 42.75.5 85 .5 85"/></g></g></g></svg> +>>>>>>> 540d753e90789205fc6e75c502f68382c87dea9b diff --git a/1-js/03-code-quality/01-debugging-chrome/chrome-sources-debugger-pause.svg b/1-js/03-code-quality/01-debugging-chrome/chrome-sources-debugger-pause.svg index 83468fddb..3720509e7 100644 --- a/1-js/03-code-quality/01-debugging-chrome/chrome-sources-debugger-pause.svg +++ b/1-js/03-code-quality/01-debugging-chrome/chrome-sources-debugger-pause.svg @@ -1 +1,5 @@ -<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="700" height="304" viewBox="0 0 700 304"><defs><style>@import url(https://fonts.googleapis.com/css?family=Open+Sans:bold,italic,bolditalic%7CPT+Mono);@font-face{font-family:'PT Mono';font-weight:700;font-style:normal;src:local('PT MonoBold'),url(/font/PTMonoBold.woff2) format('woff2'),url(/font/PTMonoBold.woff) format('woff'),url(/font/PTMonoBold.ttf) format('truetype')}</style></defs><defs><filter id="filter-3" width="163.2%" height="127.9%" x="-31.6%" y="-14%" filterUnits="objectBoundingBox"><feMorphology in="SourceAlpha" operator="dilate" radius="1.5" result="shadowSpreadOuter1"/><feOffset in="shadowSpreadOuter1" result="shadowOffsetOuter1"/><feGaussianBlur in="shadowOffsetOuter1" result="shadowBlurOuter1" stdDeviation="1.5"/><feColorMatrix in="shadowBlurOuter1" values="0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 1 0"/></filter><filter id="filter-5" width="163.2%" height="127.9%" x="-31.6%" y="-14%" filterUnits="objectBoundingBox"><feMorphology in="SourceAlpha" operator="dilate" radius="1.5" result="shadowSpreadOuter1"/><feOffset in="shadowSpreadOuter1" result="shadowOffsetOuter1"/><feGaussianBlur in="shadowOffsetOuter1" result="shadowBlurOuter1" stdDeviation="1.5"/><feColorMatrix in="shadowBlurOuter1" values="0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 1 0"/></filter><filter id="filter-7" width="163.2%" height="127.9%" x="-31.6%" y="-14%" filterUnits="objectBoundingBox"><feMorphology in="SourceAlpha" operator="dilate" radius="1.5" result="shadowSpreadOuter1"/><feOffset in="shadowSpreadOuter1" result="shadowOffsetOuter1"/><feGaussianBlur in="shadowOffsetOuter1" result="shadowBlurOuter1" stdDeviation="1.5"/><feColorMatrix in="shadowBlurOuter1" values="0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 1 0"/></filter><text id="text-2" font-family="OpenSans-Bold, Open Sans" font-size="32" font-weight="bold"><tspan x="591" y="148">2</tspan></text><text id="text-4" font-family="OpenSans-Bold, Open Sans" font-size="32" font-weight="bold"><tspan x="591" y="100">1</tspan></text><text id="text-6" font-family="OpenSans-Bold, Open Sans" font-size="32" font-weight="bold"><tspan x="591" y="215">3</tspan></text><path id="rect-1" d="M0 0h700v304H0z"/></defs><g id="debugging" fill="none" fill-rule="evenodd" stroke="none" stroke-width="1"><g id="chrome-sources-debugger-pause.svg"><g id="Bitmap"><image width="700" height="304" xlink:href="data:image/png;base64,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QAREYN26da6iqqpKJERABERABERABERABERABERABERABERABERABERABEqMQNOmTWXBW2LnTMUVAREQAREQAREQAREQAREQAREQAREQAREQAREQgZBAaMGLyqsgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiJQWgTWrl3rKvhPQQREQAREQAREQAREQAREQAREQAREQAREQAREQAREoLQIYMFbWVpFLp7SfvbZZ27q1KnulVdeyWuhNt98c7f//vs7fgsRJk2aFGY7YMCAQmSvPEVABERABERABERABERABERABERABERABBqIgHSfBgLfgIeVD946wH/55ZfzLu5SHBOO61A0JRUBERABERABERABERABERABERABERABERABEWgEBPDOIAveHE80Qizhl7/8ZY45xCe78sorQ+EYK14FERABERABERABERABERABERABERABERABERABEUhGoKKiwgV/Fcn2a7sIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiECREggteKuqqvJevHy7LzB/tD/84Q/zXlZlKAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiUBgCphOi79m3pwpzpMaZa0FcNNx9992hH9l8IjV3CDQIuS7IJ1nlJQIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAKFIWDiLrmj75nGJ30vf7zxzlDZpEkTt27durzlaidKvmnzhrTRZDRq1CiXjUX5Xnvt5Zo3b+7ef/99N2/ePLfpppu6AQMGNBpeqmh6AqtWrXJTpkxxU6dODX9pJ507d3Y9e/Z022+/vRs4cGD6TMokxquvvurWrFnjBg8e7Lp161Ymtcq9GgsWLHAjRoxw06ZNczNnzgz7ko033tj17dvXHXTQQW6jjTbKPXOlLEkCPPV+5ZVXwrK3b9/eDRs2LGU9ZsyY4fhCccuWLd0ee+yRMm457+Qamjx5smvTpo3bZZddyrmqibqlGq8wru7UqZPr3r17eK9hvb4C4yHa5NKlS90WW2zhGCcpiECuBPx2zr2Rv3SBcdd//vOfRLStt946vA4SG7RQtgTsnkgFsczr169f0dR18eLFbty4cWF5bP7Iyn//+1/39ddfF93YOFl5iwaoCiICORCwMbaflG2lJvBi0EqZzcuAX59Uy+ikiNyF9EpQEIE3VaW0TwSSEWBi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IiACIiACIiACIiACIiACIiAC9UWAN4GwSMZKc9SoUeFheZVfQQREQAREoJqAaXk+D7aVmrbn65V+XdItm8ibLl5d9vOwrLIuGcSl5QT5inxcnOg2E4WpdFQJtxNuDcJ+bXs0L62LgAiIgAiIgAiIgAiIgAiIgAiIQH0Q4AN8fCjLAt9Q2HvvvW1VvyIgAiIgAjEEotpfTBRtyoIAnhkq82m9a8fOVdVOls7EXBN37Tj1+ZvMIrk+y6BjiYAIiIAIiIAIiIAIiIAIiIAIFA8BBF0sp3B/hPsOPibn+48unpIWR0n4ACcfUsPvdTaBDzHiXkruhbKhprgiUBwEzKjTL40EXp9G3Ze5B+XdgjeXYiHgpvN/ZSIv+fvLuRxPaURABERABERABERABERABERABESgrgT4WBh/CpkR4MNquYRdd93V8acgAiJQegRMwzOjTQRf21Z6tSnOEmPB2yT4cvi6QljxFmeVsy+V/6W87FPnloInGcmsmXPLcUOqYvya4obSaUkEREAEREAEREAEREAEREAEREAEREAERCBXAtJ9ciVXuun42GPF2rVrS7cG9VBynirUp+k4x9KTjHo4sTqECIiACIiACIiACIiACIiACIiACIiACIiACJQ4gdCCd9myZcHvuhKvioovAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAo2LAD54KxpXlVVbERABERABERABERABERABERABERABERABERABESgPAnhnkMBbHudStRABERABERABERABERABERABERABERABERABEWhkBCoqKlzwJ423kZ13VVcEREAEREAEREAEREAEREAEREAEREAEREAERKAMCIQWvFVVVWVQFVVBBERABERABERABERABERABERABERABERABERABBoXAbloaFznW7UVAREQAREQAREQAREQAREQAREQAREQAREQAREoIwKhi4YmTZqUUZVUFREQAREQAREQAREQAREQAREQAREQAREQAREQARFoHAQk8DaO86xaioAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIlCEB3O9WrFu3rgyrpiqJgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIQPkTqJTAW/4nWTUUAREQgVIgMPy6BaVQTJWxgQiMvKZzAx1ZhxUBERABERABERABERABERCB4iZQOXXqVLd69eriLqVKJwIiIAIi0AgIdGkEdVQVcyUwadKkXJMqnQiIgAiIgAiIgAiIgAiIgAiULYFmzZrJRUPZnl1VTAREQAREQAREQAREQAREQAREQAREQAREQAREoOwJNFm6dKmc8Jb9aVYFRUAEREAEREAEREAEREAERKB8CUyZMiWsXL9+/cq3kqqZCIiACIiACMQQaNKkiato2rRpzC5tEgEREAEREAEREAEREAEREAEREAEREAEREAEREAERKGYCocC7du3aYi6jyiYCIiACIiACIiACIiACIiACIiACIiACIiACIiACIpCEQAUqr4IIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiEBpEaiqqnIVpVVklVYEREAEREAEREAEREAEREAEREAEREAEREAEREAERAACFRUVEnjVFERABERABERABERABERABERABERABERABERABESgFAmEAu+6detKsewqswiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAg0agJ8X61CH1lr1G1AlRcBERABERABERABERABERABERABERABERABEShhAhVNmzYt4eKr6CIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiLQOAngnUEWvI3z3KvWIiACIiACIiACIiACIiACIiACIiACIiACIuDuvvtu9/LLL4tEiRLAB28lKm+TJk1KtAoqtgiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAgUF4FJkyaFBRowYEBxFSxSGoTdzz77LPxj1/777x+JodViJxD64K2srCz2cqp8IiACIiACIiACIiACIiACIiACIiACIiACIiACeSSAsPvKK68kcmRZlrwJHCW1ULlmzRpZ8JbUKVNhRUAEREAEREAEREAEREAEREAEREAEREAERKBuBOLE3L59+9Yt03pITbl9YTqTQ+63335la52M8W7gpqEiEw6KIwIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiUAYEzDWDXxVE0M0339zfVHTLuYi7VKKcrZMx3q1E4K2qqsr5hF155ZU5p61Lwl/+8pd1Sa60IiACIiACIiACIiACIiACIiACEQLZWkRFkue8iqigIAINRSCZrlFuuoNZa8rHakO1tOI5btQ1AyVD2C32tpGruGvk7R5X7PW08mb6G35kLdPIiicCIiACIiACIiACIiACIiACIiACIiACIlB6BKLCWLkJXKV3Rhq2xCb2+6Uo9jYRbcN+2bNZLkeRd926da6yLta7PsBkT7bsSViy/X4emSxbfpnELUScL774wr333nuuRYsWrtBPmUeMGOEwsx46dKjr3r17WJ13333XzZkzx/Xu3dsNGjSoEFUM83z11VfdypUraxy7YAdTxiIgAiIgAiIgAiIgAiIgAkVFIF9zHZtIJ8vP9hdV5b3CDL9ugbe2YXHkNZ03rARLF/9tiTt571ZuSJ9mNbaX2wpWf4Rif4W73LjXtT533323s3NHXlx3rP/whz+sa9YNkh6hr9jFyAYBk+FB4ee3B5LRRxfzdZ0vcdcQ2b2nXNpR06ZNXaVVTr+ZEfj000/djTfeGEZONkjJLKf0sUwU/9WvfpUQeB955BE3ZswYd8IJJxRU4L322mvDAvrHTl9ixRABERABERABERABERABERCBxkdg/LTV7uLgD5H35H02KgsACCoEhKCoGGQVtFe6i1kYsrI21t+ouGscOKfsK0WRt9zEOTsn9fHLeTd+djy7jm292H7zLe5a/YxDOYi8oQUvKm++rHgNkn5FIFcCL730Upj0wAMPTJlFpvFSZqKdIiACIiACIiACIiACIiACIpBHAn9/baUbP31NSVvzIgDFWfjFYTKRkH0YQJWDUBJXz1Lc5p+bZOUnDm9JI/KWmkiPONe3b9+SK3eyc5HJ9lzeaOe8+iK+Pbjxj2fXbVybaei2UShx1+pfLiLv2rVrXSX/KYhAlMDPf/5zxxOArbbaKrqrYOuItibccpBkIm+m8QpWUGUsAiIgAiIgAiIgAiIgAiIgAkkIlLI1b13EFIQSBCLEolITC5OcypLdHCfUpaqMWfKW2nkr1XKnOhf53mfiLfnGPbjxXTPEib8Nybgu/VE2HMtB5A0teLOpdD7j0uGUWueRz/oXe1577bVXvRdx8eLFiWOa0BsVeaPirp8mkVgLIiACIiACIiACIiACIiACeSWwaNEi16FDh7zmWe6ZlZI1b7aCYLJzZ/nImjcZocJvz1UUQ8grxfNGuc29ZSq6jVGD8sVb6m9CpnFCkzMBOE78tXiZMrb4+fqNljeab/S8Ry2c0+338+NYxsLfXirLDeqDt1Q7D//krlq1yj3++ONu1KhRbubMmeGuwYMHu5NOOsltu+22ftTE8tixY8P4H330kVu2bJnbfvvtwz8uvNatWyfi5bKwZMkS98QTT7gJEya4SZMmucrKSrfNNts4ynT44Ye7Zs0yd/h/8803u+XLl4e+fgcMGJAozrhx49yzzz7rPvnkEzd79mzXtWtX16dPn9DaljrQqHINu+yyi6MOlJ8QFXmj4i7WxaRREAEREAEREAEREAEREAERKCyBd955JzTQkZFOdpzNmpePrxXrR9hMlM2kZnb+SZMqIJY0ttfnU/Gor325irtWPhPUSk3oQl/y3RBYffiNMilFEduvT6bLvnhrHKJp7TzHib/RuKkYR+Nqvf4JhC4a6v+wG45I50FDolHZjWLD3uJfuvjii92HH35Yo6B8AI0/XBz4VrCrV692f/zjH0MB1k8AA/4QTX/729+6Nm3a+LszXn7//ffdNddc47766qsaaRCf+XvxxRfD/T179qyxP9nK008/He4aPnx4Isr999/v/vrXvybWWfjyyy/DP4Tfd999111yySWuSZMmNeJkurLpppsm3DJERV7yMMGXZcRdrHtJoyACIiACIiACIiACIiACIlB4AszdmG8g3MmaNzveJvQW40fYEMCSBcSwZEIt7WHq1Km1rAItr4ay+rPjx/1Gxb64OP62qEUg+4pZIERbMdEuXT3YH7Vw9NM05HIc91TloS3GCZBsY58fSlXE9uuQybLfDmj3UQ60Y9Ph4JQuJGOcLp321w+BiooKF/xV1M/RkhzFGkmqm0qSpA2+GXF32LBh7qabbnJ33XWXO/30091GG1V/MZV1Pzz88MMJcfdb3/pWKPbeeeediadMEydOdJdffrmfJOPlhQsXuh//+McJcffss8925H3HHXe4o48+OsyH/K+66iqXq89ljmHi7s477+x+//vfO+p0++23O9YJzz33nMMyuS7BRF7f92+c5a7E3bpQVloREAEREAEREAEREAERyI0Arhqw5o2KBbnl1vhS4bbh4r8tcQi+xRDiBDDKhfCDRWQqYyyzEEz1cxugzgAAQABJREFUEaZMhKP65EB9ELZyDcUs7uZap3JJR5/k60qsJ+unzNiwXOoerYcv3sLARG2LZ9cu69lco1HGlp9+G55AaMFbVVXV8CUJSmAXWKobSFEU1CvEbrvt5q6//npU8nDrlltuGX6Y7J577nEzZsxwS5cudW3btnVz585NiKMIsccee2wil/79+zv+Lr30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rm1lQWDs2LFu1KhRiboMHDgwsawFERABERABERABERABERABEWhMBEZe0zmj6hbSHQMCjgkcGRWmCCMVc/lTCc/lIJKVe/2KsLnXW5E4t1HRkzZbzNdbrnCsTtH65ppfOYm7MMArQG2/ALnSUbqyIHDddde5F154IazLPvvsU+OjbGVRQVVCBERABERABERABERABERABEqEAOJuvgSNEqlyvRcToaecQ7nXr5zPXbq60T9Egwmh0e3lsE7d8tGeyaPcOCHwVuIPNh8h3dfp0u3PRxmUR90J7Lvvvg7T7r333tvtsMMOdc9QOYiACIiACIiACIiACIiACJQcgXyLivnOr+SA5lBgibs5QMshCUJPsvZZDiJQudcvh1NeFknoH6LW2QiX5WB1nuoE2TWZ7JpNlZZ95SjuUi++rxZ+ZA2fsAoiAIFLLrlEIERABERABERABERABERABERABBqQgMTd+oWf64fk6reUuR+t3OuXO5nSTNmYXDPEnaFcRd5yFXeNUZPly5evQ+lVEAEREAEREAEREAEREAEREAEREIFSJDBlypSw2HX52HSx1DtO3P3lL39ZLMVTOURABDIkMGnSpDDmgAEDMkyRWbS4PgIRv9ytdzOj03hjVUjcbbwnXzUXAREQAREQAREQAREQAREQAREoHgJxwk3xlE4lEQERKAYCWLBijWqhMbhmsLrqN55AwgevXDTEA9JWERABERABERABERABERABERABEagPAhJ364OyjiEC9Ucg35a7fsnNTQHuGmzZ36/lxkUg9MFbWVkZflSrcVVdtRUBERABERABERABERABERABERCB4iAgcbc4zoNKIQKlREDCbimdrcKXtWLNmjWFP4qOIAIiIAIiIAIiIAIiIAIiIAIiIAIiUIuAxN1aSLRBBERABEQgCwIY7wZuGiqySKKoIiACIiACIiACIiACIiACIiACIiAC+SAgcTcfFJWHCIiACDRuAhjvNlmxYsW6qqqqxk1CtRcBERABERABERABERABERABEShZAlOmTAnL3q9fv5KtgwouAiIgAiIgArkQwHhX5ru5kFMaERABERABERABERABERABERABERABERABERABEWhgAuvWrXMVst5t4LOgw4uACIiACIiACIiACIiACIiACIiACIiACIiACIhADgSaNm0qC94cuCmJCIiACIiACIiACIiACIiACIiACIiACIiACIiACDQ4gdCCF5VXQQREQAREQAREQAREQAREQAREQAREQAREQAREQAREoLQIrF271lXyXzmH4dctKOfqqW5ZEhh5TecsUyi6CIiACIiACIiACIiACIiACIiACIiACIiACBQnASx4K/na6OrVq4uzhHkpVZe85KJMyoPApEmTyqMiqoUIiIAIiIAIiIAIiIAIiECCQGVlZbj85ptvJrZpQQREQAREQAQaA4GWLVvKB29jONGqowiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIQPkRwDtDk8CMd135VS19jcaPHx9GGjJkSPrIiiECIiACIiACIiACIiACIiACIlC0BBLzu627F20ZVTAREAEREAERKAiBikpZ8BYErDIVAREQAREQAREQAREQAREQAREQAREQAREQAREQgUITCCx4KxqpAW+h0Sp/ERABERABERABERABERABERABERABERABERABESgogSoE3oIeQZmLgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAgUhEBFRYWraNKkSUEyV6YiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAKFI9AEgbdw2StnERABERABERABERABERABERABERABERABERABERCBQhFYJx+8hUKrfEVABERABERABERABERABERABERABERABERABESg8ARkwVt4xjqCCIiACIiACIiACIiACIiACIiACIiACIiACIiACBSEQKV88BaEqzIVAREQgaInUDXv46IvowooAtkSaNptULZJFF8EREAEREAEREAEREAEREAESppA5bp165xE3pI+hyq8CBSMAP3D2sCXC6Fp06YFO04xZlxVVRUWi/6RL1LWZ1iyZImbP3++W7x4sdt4441dt27d6vPwOpYIiIAIiIAIiIAIiIAIiIAIiIAIiEAJEahf1aKEwKioIlAIAqvXrHXffFNV429N1bqUh6oK9kfTkE99hAceeMD179/fXXbZZfVxuKI6xj333BPW/Zprrqm3ci1YsMCdddZZbvvtt3cHHHCAO/74490LL7xQb8fXgURABERABERABERABERABERABERABEqLQGCX5kreRcPSpUvdvHnzQvK9evVyrVq1qpez8MXYGe79v4x1CyZ96b5esCI85tALdnfbnbNLvRy/WA4y7aVP3ejrRrrOA7q6g+45vliKlVU5vnvqSPfq67Pdb3+9q/vuCVtmlTbbyMef+JIb93Z1e7W0Z/5gkLv2qh1ttdbvrb8f7265/f0a2/tv2d69+uJRNbblewXr0ZtuuinM9sQTT8x39kWf39FHH+1uuOEG9+CDD7qTTjrJDRw4sOBlvuOOO9zIkSPD4xx22GGud+/ebvDgwQU/rg5QnASuv/0+N2vOfLdF743dxWdVX4OLlixzP7vhz2GBjzxwD3fIPvH3HNLN/2pRrYq1bN7cDei3Wa3t2W5Ys6bKffucq8Jkt/38Qrdpz8JZmf/z2VHulTfeDo/1u+t+4lo0qwyXr7n5bjdvwSI3MKjPBad/O9sqKL4IiIAIiIAIiIAIiIAIiIAIlAmBJq56llSC1Vm4cKEbMWKEe/vt6kkfVTjllFPc1ltvXfDaLPh4rnv+lEcTx2nWunm43LRZab7CPn3Ep27qsxNd5627u8Fn7JSoVyYLa1auDgXuletF7kzSFFuclSvXhEWqD6vYbbfp5Fo0rzacf+/9BW7Z8tVuXfAvVdh0k7Zuj117hFFmz1nhpn62JFX0vO2788473fLly8NraocddshbvqWSUdeuXd1xxx3nHnvsMffb3/7W3X333QUv+ujRo8Nj/OQnP3Hnn39+wY+nAxQ3gTnzFri5Xy5wHdq1ThR0TeA6hG2EpcuWJ7ZHF5595Q33wqgx0c2uc8f27q7fXF5re7Yb/H7L3Lhkm0em8ZcsXZaoswvcxlhA3IVF5w5tbZN+RUAEREAEREAEREAEREAERKBREig5gXfVqlXu4Ycfdh999FGDnbCJD1dbU3YKrFb3u/0I1653xwYrSz4OvOizhe6zFz5xVauqfY5mk2eL9i0dHDpu2SWbZI027vXXbBDQL796jPv7Pz5Jy+KE4/s5/ghPPj3NnXPB62nT1DXCypUr3f333x9mc8YZZ9Q1u5JNf+qpp4YC76hRo9y0adNcnz59ClqXyZMnh/lvtdVWBT2OMi9/Aj26dnYDt+idqOgXgVi8OLD+VRABERABERABERABERABERABESgvAhjdlJzAy8eHTNxt06aN22mnndwrr7xSr2dmybSvwuP1Obh/yYu7dQW36T59HX8K5UUAv69Y73bu3NkddNBB5VW5LGozaNAgN2zYMDdu3Dj36KOPuksvvTSL1LlHrS9XM7mXUCmLncCRB+zh+LPw6DMvu4efHGmr+hUBERABERABERABERABERABESgTAhWBE96SE3j5mn379u3dwQcf7IYOHeoQfAsu8AZvhH7x5gxnr4Yu+6L6FflvlnztvhjzeaI5tNm4vWu7afvE+sLAP+/qZd+4tpt1cBt13fCKLRGWzVrils9Z6lp2auXab94pkWbpzMVuWfDXsvNGrkO/zu6rT+e7uW/PcqsWfe06DezqNtl7c1fRtPoV/0SiyALHXTQ5sNYKLHMrWzZz7fp0dJvs0cc1bbnhdH/1yXz39cIVYcoln1UL1ivmL69RH3Z2HdLTVbZqVuMIK75c7pbNrukmoNlGzdJa8a5e/o2b995sx7GrVle5Dn07u66De7iNurWpkT8r3yxZ5XCFURG4vei+w8YO5nPfmuUWB+J6+8BiepN9Nnct2rWsla6uG1YFVszjP1jg3nxrnqusrHA7Du0a/iXLd+3ade79Dxe4SZ8scp/PWOY227StGzI4sJzr3yFZknrdPnfuCvfOe/Pd5KmLXfPmTd2ggR3d0O27utYbbWgLcQV64403ws2Iu80Dn53JwpIl37j3P1romjercDvt2M3Nmr3cjR03N3QjsXmfdm74vpsE12t8euLij3j27BWhq4q+m7dzW27R3m09qJOrbBp4CPfCxIDv/AVfuy2COGPC/Je6PXbrER4T/vhQ5jiHH9Lbde5Uu13U5TzhCxeB9+WXX643gderetEszp3/lZs3f6Fr366N26Rndzdj1hw3YfK0wE3ACtdn055u6LYDXNOgf44GXqifPnOOmzJ9llv41eJw9ya9urnNevVwG/eobfn/cZBnVeDftVePru7N9z5236xe43YaMtD16NbFvfPBRDd52kzXM1jefdjg2OOt+ma1m/zZTDd99pywbJv16u76Bz5aO3doFy2a1iMEqgL3B5OnznDTgnO7eMlS171LZ9e3d6+M/OsuX/G1mzhlWnB+ZrkO7du6wVv1cz0DK+JomDrji+Dh0Yrg3Hdzbdq0clOC80k7atq00g3su1le/ANHj6l1ERABERABERABERABERABEShrAsFcPLXKU4S1x6LwyiuvrNeSIUb6Pnft4B/e+7bjz8J2P9rVDT1/N1t1//vFK4EoOdPtds1wN/DEIYntLEx46D33wd3j3BZHDXJ73XhIYt+UJz927/x+tNs8sA5u0bGV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QQIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkcBMJKA/e9I7f89mY9IrySX4FNY/BUQlyd1fffDInToMESIAESIAESIAESIAESIAESIAESIAESIAESOBWIYAYvB5QeW9lm7ro4q08fbeb++XLlwUvWvYIJMfFyYWD++Xc5g1y6XRU9jphK6cEzu/bLbE7tkriyRNyJTnZaZ1bKZOf1VvpbHOuJEACJEACJEACJEACJEACJEACN4uACtGQWQzeKuWK3Kzx5fpxj51JlItJl2XKAvf34k1JSRGcUKtBwccrv9jOnTulZ8+e4u/vL6tXrxYsQuVoV1OSZd1/hsil6FNSoe8gqTR8hGOVW3I/KSZatv/fMxL193xz/rX+738Scs8wc5+J6yOw842X5czalWYnVUY+JVVHPWPuu2Miu5+npKQkqVnTFiZk6dKlEhwc7I7T55hJgARIgARIgARIgARIgARIgARIIM8TgD6WViHL88O2DbCQET24Wwsv+U/vQjJqcCG5t3tBaVHHNTGzVNGCqrP84MV79913K0EFoop+vfvuu25yNrM2zLfffltVHDZsmFNxF4UFvApKjWf/T+Ij9sru996QM+tWZ61zN6q1/uGhsu+zD10accSXH5vibuDtvSRsxBPiV6eeS304q7xm3SkpX/kHqdtkmrPiWyqvQt+BUumBkVKyYRM1bzCPWb3crRlk9/NUqFAh+c9//qPm/sEHH7g1Aw6eBEiABEiABEiABEiABEiABEiABPIyAeXBixANmXnx5rVJNKvtKf07FxRPizwdGijSsIan9GjjJZ/+nCSnzmQeesKnkKfgBS/ebfuTpU6YTfDNa/PNynjCw8MFogps69atcuHCBclr4TcwnlGjRqlxPfvssy559f3zzz+yatUqNb+BAweqbXpvxcPrSONvfhAIoZtGPSRt5i6WQv6l06vudvlXEhPlStIll8Yds3qFql/1idFS5dH/utQ2o8opKTav8cREhs0IurO/DZVxnS/v3VnO79kl5zauF//mrTNCmOfLsvt5GjJkiHz//ffyxx9/KLG3Xr3rv6GQ52FxgCRAAiRAAiRAAjedwKlTp276GDgAEiABEiABEriRBKDrWiTSG3no7B8roFQBGdg1Vdw9d/6q7DhwRRKTbH36eheQJwYWMkTrrB0jv3jxvvrqqzJ58mT16t27d9Ymf4NrQeCF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FyutMUiABEiABEiABEiABEiABEiABEiABEiABEiABEiABLyLADJ4fejB610fGmdLAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiDg4+NDD14+CiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiTgjQRUBi8tGrzxo+OcSYAESIAESIAESIAESIAESIAESIAESIAESIAEHnUCSuB91CHw/kmABEiABEiABEiABEiABEiABEiABEiABEiABEjAGwnAfpcevN74yXHOJEACJEACJEACJEACJEACJEACJEACJEACJEACjzwBevA+8o8AAZAACZAACZAACZAACZAACZAACZAACZAACZAACXgrAXrweusnx3mTAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQgEHAhxRIgARIgARIgARIgARIgARIgARIgARIgARIgARIgAS8k4AvjHgZJEACJEACJEACJEACJEACJEACJEACyUPg6LHjsmrtBjlx4pREnz4tWbNkkZw5g6V0yeJSo1plgX8igwRIgARIgASSSsD3zp07QpE3qfjYjgRIgARIgARIgARIgARIgARIgAScE7hy9ap898Ov8u/mrU4rzJ2/SELy5JY3XuknRQqFOq3DQhIgARIgARJIiAB0Xd+EKvAaCZAACZAACZAACZAACZAACZAACZCA+wRu3LgpX37zo2zbsUs1LlqkkNSsVkUCArLIuXPnZcOmLXLw0GGJjDohn3zxjXzzfx9JYGBW9wdiCxIgARIggUeeAC0aHvlHgABIgARIgARIgARIgARIgARIgAQ8TWD7zl2muNu5wxPSrXN7uyE6tW8j8xYslt9HjZXzFy7I1Bmzpc/TT9nV4QkJkAAJkAAJJEYAGbw0+kmMEq+TAAmQAAmQAAmQAAmQAAmQAAmQgJsE9u47YLbo2LaVeWw9aPn4Y1KxQllVtGvPfuslHpMACZAACZCAywRo0eAyKlYkARIgARIgARIgARIgARIgARIgAdcInIyOMSsaS9/EGw3q1paoqJMSGxsrN27cED8/P7u6q9asl63bd8re/Qfl7LlzkjM4WEoWLyqtWzSTvCG57erqk01btsm1pDncAABAAElEQVS/m7bKvgOH5FR0tBQskF+KGRYRDevVlkKhBXU1tT92PEJlD+Pkpb7PysLFy2Tnrj2y/2CY+Punl5Il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Iq27kc0QWrG5GxCQXRWRdd/QFoJzZFebLuOeBEiABEgg+QngCzYfCrzJD5ojkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkICnCSiB19Odsj8SIAESIAESIAESIAESIAESIAESIAESIAESIAESIIHkJwCB1zf5h+EIJEACJEACJEACJEACJEACJEACJEACqZFAdmMxNyyihuAbvqnxE+KcSIAESCBhAmnTphVfqLz8I54wKF4lARIgARIgARIgARIgARIgARIggYeRALx9333rtYfx1nhPJEACJPBIELh9+zY9eB+JT5o3SQIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIk8NAR8PHxEZ+H7q54QyRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiTwCBBQGbywaGCQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAl4FwEl8HrXlDlbEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEMDaaj5cYI0PAwmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAl4HwF68HrfZ8YZkwAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkIAiAIsGX3jwMouXTwQJkAAJkAAJkAAJkAAJkAAJkIC3E7h165a33wLnTwIkQAIkQAJuE/BxuwUbkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJpAoCvszeTRWfAydBAiRAAiRAAiRAAiRAAiRAAiRwnwQKFy58nz2wOQmQAAmQAAl4FwG4M/jgB4MESIAESIAESIAESIAESIAESIAESIAESIAESIAESMD7CNCiwfs+M86YBEiABEiABEiABEiABEiABEiABEiABEiABEiABNTaaj60aOCTQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQALeSYAZvN75uXHWJEACJEACJEACJEACJEACJEACJEACJEACJEACJCAUePkQkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkIAXErh9+zYFXi/83DhlEiABEiABEiABEiABEiABEiABEiABEiABEiABEhAfHx8KvHwOSIAESIAESIAESIAESIAESIAESIAESIAESIAESMBbCdCiwVs/Oc6bBEiABEiABEiABEiABEiABEiABEiABEiABEjgkSfgA58GBgmQ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wVvfvn1dn374oG/QkWDBf1OkyoYNG/akpqZSQzUBEl0IIIAAAggggAACCCCAAAIVX8BndYWDBRVh1AoKaEb4pk2bmiYMKo0Eq7S0NJfVpgCwvtbcoEGDAt16ZmamzZkzx/SsCeKqV6+e63E6t8oyaHI2BX2bNWuW675sQAABBCqDgAKn+kbG5s2bbf/9909YizzRfRb1PTnRuQrat3v3bqsSHewe/5WPgh7IfggggAACCCCAAAIIIIAAAghUFIGKGuCtKD6MAwEEEECg8gqoDFDE13qovLfJnSGAAAIIIIAAAggggAACCCCAAAIIIIAAApVPQLHdyKZNm1wtnj179lS+O+SOEEAAAQQQQAABBBBAAAEEEEAAAQQQQACBSiigeK6L7ao2hFJ5S6MWUCV045YQQAABBBBAAAEEEEAAAQQQQAABBBBAAIFyF1B99K1bt1pEhdQXLlxofta1ch8ZA0AAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBIKOArMSxZssRq1Khhkfr161tGRoZNnz7dHeB3SHg0nQgggAACCCCAAAIIIIAAAggggAACCCCAAALlJqD47eTJk132bu3atS1SrVo1U5B38+bNNmPGDKtSpYp7ULKh3F4jLowAAggggAACCCCAAAIIIIAAAggggAACCMQIqAKDgrvfffedrVu3zho3bmy1atWy/w+ftbYg4wOl4gAAAABJRU5ErkJggg=="/><use stroke="#7E7C7B" xlink:href="#rect-1"/></g><g id="2" fill="#C06334" fill-rule="nonzero"><use filter="url(#filter-3)" xlink:href="#text-2"/><use xlink:href="#text-2"/><use xlink:href="#text-2"/></g><g id="1" fill="#C06334" fill-rule="nonzero"><use filter="url(#filter-5)" xlink:href="#text-4"/><use xlink:href="#text-4"/><use xlink:href="#text-4"/></g><g id="3" fill="#C06334" fill-rule="nonzero"><use filter="url(#filter-7)" xlink:href="#text-6"/><use xlink:href="#text-6"/><use xlink:href="#text-6"/></g><text id="see-the-outer-call-d" fill="#C06334" font-family="OpenSans-Bold, Open Sans" font-size="18" font-weight="bold"><tspan x="183" y="189">see the outer call details</tspan></text><text id="watch-expressions" fill="#C06334" font-family="OpenSans-Bold, Open Sans" font-size="18" font-weight="bold"><tspan x="238" y="99">watch expressions</tspan></text><text id="current-variables" fill="#C06334" font-family="OpenSans-Bold, Open Sans" font-size="18" font-weight="bold"><tspan x="249" y="214">current variables</tspan></text><path id="Line-2" fill="#C06334" fill-rule="nonzero" d="M452.5 84l19 9.5-19 9.5v-8H412v-3h40.5v-8z"/><path id="Line-2-Copy" fill="#C06334" fill-rule="nonzero" d="M452.5 175l19 9.5-19 9.5v-8H412v-3h40.5v-8z"/><path id="Line-2-Copy-2" fill="#C06334" fill-rule="nonzero" d="M452.5 199l19 9.5-19 9.5v-8H412v-3h40.5v-8z"/></g></g></svg> \ No newline at end of file +<<<<<<< HEAD +<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="700" height="304" viewBox="0 0 700 304"><defs><style>@import url(https://fonts.googleapis.com/css?family=Open+Sans:bold,italic,bolditalic%7CPT+Mono);@font-face{font-family:'PT Mono';font-weight:700;font-style:normal;src:local('PT MonoBold'),url(/font/PTMonoBold.woff2) format('woff2'),url(/font/PTMonoBold.woff) format('woff'),url(/font/PTMonoBold.ttf) format('truetype')}</style></defs><defs><filter id="filter-3" width="163.2%" height="127.9%" x="-31.6%" y="-14%" filterUnits="objectBoundingBox"><feMorphology in="SourceAlpha" operator="dilate" radius="1.5" result="shadowSpreadOuter1"/><feOffset in="shadowSpreadOuter1" result="shadowOffsetOuter1"/><feGaussianBlur in="shadowOffsetOuter1" result="shadowBlurOuter1" stdDeviation="1.5"/><feColorMatrix in="shadowBlurOuter1" values="0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 1 0"/></filter><filter id="filter-5" width="163.2%" height="127.9%" x="-31.6%" y="-14%" filterUnits="objectBoundingBox"><feMorphology in="SourceAlpha" operator="dilate" radius="1.5" result="shadowSpreadOuter1"/><feOffset in="shadowSpreadOuter1" result="shadowOffsetOuter1"/><feGaussianBlur in="shadowOffsetOuter1" result="shadowBlurOuter1" stdDeviation="1.5"/><feColorMatrix in="shadowBlurOuter1" values="0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 1 0"/></filter><filter id="filter-7" width="163.2%" height="127.9%" x="-31.6%" y="-14%" filterUnits="objectBoundingBox"><feMorphology in="SourceAlpha" operator="dilate" radius="1.5" result="shadowSpreadOuter1"/><feOffset in="shadowSpreadOuter1" result="shadowOffsetOuter1"/><feGaussianBlur in="shadowOffsetOuter1" result="shadowBlurOuter1" stdDeviation="1.5"/><feColorMatrix in="shadowBlurOuter1" values="0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 1 0"/></filter><text id="text-2" font-family="OpenSans-Bold, Open Sans" font-size="32" font-weight="bold"><tspan x="591" y="148">2</tspan></text><text id="text-4" font-family="OpenSans-Bold, Open Sans" font-size="32" font-weight="bold"><tspan x="591" y="100">1</tspan></text><text id="text-6" font-family="OpenSans-Bold, Open Sans" font-size="32" font-weight="bold"><tspan x="591" y="215">3</tspan></text><path id="rect-1" d="M0 0h700v304H0z"/></defs><g id="debugging" fill="none" fill-rule="evenodd" stroke="none" stroke-width="1"><g id="chrome-sources-debugger-pause.svg"><g id="Bitmap"><image width="700" height="304" xlink:href="data:image/png;base64,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QAREYN26da6iqqpKJERABERABERABERABERABERABERABERABERABERABEqMQNOmTWXBW2LnTMUVAREQAREQAREQAREQAREQAREQAREQAREQAREQgZBAaMGLyqsgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiJQWgTWrl3rKvhPQQREQAREQAREQAREQAREQAREQAREQAREQAREQAREoLQIYMFbWVpFLp7SfvbZZ27q1KnulVdeyWuhNt98c7f//vs7fgsRJk2aFGY7YMCAQmSvPEVABERABERABERABERABERABERABERABBqIgHSfBgLfgIeVD946wH/55ZfzLu5SHBOO61A0JRUBERABERABERABERABERABERABERABERABEWgEBPDOIAveHE80Qizhl7/8ZY45xCe78sorQ+EYK14FERABERABERABERABERABERABERABERABERABEUhGoKKiwgV/Fcn2a7sIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiECREggteKuqqvJevHy7LzB/tD/84Q/zXlZlKAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiUBgCphOi79m3pwpzpMaZa0FcNNx9992hH9l8IjV3CDQIuS7IJ1nlJQIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAKFIWDiLrmj75nGJ30vf7zxzlDZpEkTt27durzlaidKvmnzhrTRZDRq1CiXjUX5Xnvt5Zo3b+7ef/99N2/ePLfpppu6AQMGNBpeqmh6AqtWrXJTpkxxU6dODX9pJ507d3Y9e/Z022+/vRs4cGD6TMokxquvvurWrFnjBg8e7Lp161Ymtcq9GgsWLHAjRoxw06ZNczNnzgz7ko033tj17dvXHXTQQW6jjTbKPXOlLEkCPPV+5ZVXwrK3b9/eDRs2LGU9ZsyY4fhCccuWLd0ee+yRMm457+Qamjx5smvTpo3bZZddyrmqibqlGq8wru7UqZPr3r17eK9hvb4C4yHa5NKlS90WW2zhGCcpiECuBPx2zr2Rv3SBcdd//vOfRLStt946vA4SG7RQtgTsnkgFsczr169f0dR18eLFbty4cWF5bP7Iyn//+1/39ddfF93YOFl5iwaoCiICORCwMbaflG2lJvBi0EqZzcuAX59Uy+ikiNyF9EpQEIE3VaW0TwSSEWBi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IiACIiACIiACIiACIiACIiAC9UWAN4GwSMZKc9SoUeFheZVfQQREQAREoJqAaXk+D7aVmrbn65V+XdItm8ibLl5d9vOwrLIuGcSl5QT5inxcnOg2E4WpdFQJtxNuDcJ+bXs0L62LgAiIgAiIgAiIgAiIgAiIgAiIQH0Q4AN8fCjLAt9Q2HvvvW1VvyIgAiIgAjEEotpfTBRtyoIAnhkq82m9a8fOVdVOls7EXBN37Tj1+ZvMIrk+y6BjiYAIiIAIiIAIiIAIiIAIiIAIFA8BBF0sp3B/hPsOPibn+48unpIWR0n4ACcfUsPvdTaBDzHiXkruhbKhprgiUBwEzKjTL40EXp9G3Ze5B+XdgjeXYiHgpvN/ZSIv+fvLuRxPaURABERABERABERABERABERABESgrgT4WBh/CpkR4MNquYRdd93V8acgAiJQegRMwzOjTQRf21Z6tSnOEmPB2yT4cvi6QljxFmeVsy+V/6W87FPnloInGcmsmXPLcUOqYvya4obSaUkEREAEREAEREAEREAEREAEREAEREAERCBXAtJ9ciVXuun42GPF2rVrS7cG9VBynirUp+k4x9KTjHo4sTqECIiACIiACIiACIiACIiACIiACIiACIiACJQ4gdCCd9myZcHvuhKvioovAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAo2LAD54KxpXlVVbERABERABERABERABERABERABERABERABERABESgPAnhnkMBbHudStRABERABERABERABERABERABERABERABERABEWhkBCoqKlzwJ423kZ13VVcEREAEREAEREAEREAEREAEREAEREAEREAERKAMCIQWvFVVVWVQFVVBBERABERABERABERABERABERABERABERABERABBoXAbloaFznW7UVAREQAREQAREQAREQAREQAREQAREQAREQAREoIwKhi4YmTZqUUZVUFREQAREQAREQAREQAREQAREQAREQAREQAREQARFoHAQk8DaO86xaioAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIlCEB3O9WrFu3rgyrpiqJgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIQPkTqJTAW/4nWTUUAREQgVIgMPy6BaVQTJWxgQiMvKZzAx1ZhxUBERABERABERABERABERCB4iZQOXXqVLd69eriLqVKJwIiIAIi0AgIdGkEdVQVcyUwadKkXJMqnQiIgAiIgAiIgAiIgAiIgAiULYFmzZrJRUPZnl1VTAREQAREQAREQAREQAREQAREQAREQAREQAREoOwJNFm6dKmc8Jb9aVYFRUAEREAEREAEREAEREAERKB8CUyZMiWsXL9+/cq3kqqZCIiACIiACMQQaNKkiato2rRpzC5tEgEREAEREAEREAEREAEREAEREAEREAEREAEREAERKGYCocC7du3aYi6jyiYCIiACIiACIiACIiACIiACIiACIiACIiACIiACIpCEQAUqr4IIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiEBpEaiqqnIVpVVklVYEREAEREAEREAEREAEREAEREAEREAEREAEREAERAACFRUVEnjVFERABERABERABERABERABERABERABERABERABESgFAmEAu+6detKsewqswiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAg0agJ8X61CH1lr1G1AlRcBERABERABERABERABERABERABERABERABEShhAhVNmzYt4eKr6CIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiLQOAngnUEWvI3z3KvWIiACIiACIiACIiACIiACIiACIiACIiACIuDuvvtu9/LLL4tEiRLAB28lKm+TJk1KtAoqtgiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAgUF4FJkyaFBRowYEBxFSxSGoTdzz77LPxj1/777x+JodViJxD64K2srCz2cqp8IiACIiACIiACIiACIiACIiACIiACIiACIiACeSSAsPvKK68kcmRZlrwJHCW1ULlmzRpZ8JbUKVNhRUAEREAEREAEREAEREAEREAEREAEREAERKBuBOLE3L59+9Yt03pITbl9YTqTQ+63335la52M8W7gpqEiEw6KIwIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiUAYEzDWDXxVE0M0339zfVHTLuYi7VKKcrZMx3q1E4K2qqsr5hF155ZU5p61Lwl/+8pd1Sa60IiACIiACIiACIiACIiACIiACEQLZWkRFkue8iqigIAINRSCZrlFuuoNZa8rHakO1tOI5btQ1AyVD2C32tpGruGvk7R5X7PW08mb6G35kLdPIiicCIiACIiACIiACIiACIiACIiACIiACIlB6BKLCWLkJXKV3Rhq2xCb2+6Uo9jYRbcN+2bNZLkeRd926da6yLta7PsBkT7bsSViy/X4emSxbfpnELUScL774wr333nuuRYsWrtBPmUeMGOEwsx46dKjr3r17WJ13333XzZkzx/Xu3dsNGjSoEFUM83z11VfdypUraxy7YAdTxiIgAiIgAiIgAiIgAiIgAkVFIF9zHZtIJ8vP9hdV5b3CDL9ugbe2YXHkNZ03rARLF/9tiTt571ZuSJ9mNbaX2wpWf4Rif4W73LjXtT533323s3NHXlx3rP/whz+sa9YNkh6hr9jFyAYBk+FB4ee3B5LRRxfzdZ0vcdcQ2b2nXNpR06ZNXaVVTr+ZEfj000/djTfeGEZONkjJLKf0sUwU/9WvfpUQeB955BE3ZswYd8IJJxRU4L322mvDAvrHTl9ixRABERABERABERABERABERCBxkdg/LTV7uLgD5H35H02KgsACCoEhKCoGGQVtFe6i1kYsrI21t+ouGscOKfsK0WRt9zEOTsn9fHLeTd+djy7jm292H7zLe5a/YxDOYi8oQUvKm++rHgNkn5FIFcCL730Upj0wAMPTJlFpvFSZqKdIiACIiACIiACIiACIiACIpBHAn9/baUbP31NSVvzIgDFWfjFYTKRkH0YQJWDUBJXz1Lc5p+bZOUnDm9JI/KWmkiPONe3b9+SK3eyc5HJ9lzeaOe8+iK+Pbjxj2fXbVybaei2UShx1+pfLiLv2rVrXSX/KYhAlMDPf/5zxxOArbbaKrqrYOuItibccpBkIm+m8QpWUGUsAiIgAiIgAiIgAiIgAiIgAkkIlLI1b13EFIQSBCLEolITC5OcypLdHCfUpaqMWfKW2nkr1XKnOhf53mfiLfnGPbjxXTPEib8Nybgu/VE2HMtB5A0teLOpdD7j0uGUWueRz/oXe1577bVXvRdx8eLFiWOa0BsVeaPirp8mkVgLIiACIiACIiACIiACIiACeSWwaNEi16FDh7zmWe6ZlZI1b7aCYLJzZ/nImjcZocJvz1UUQ8grxfNGuc29ZSq6jVGD8sVb6m9CpnFCkzMBOE78tXiZMrb4+fqNljeab/S8Ry2c0+338+NYxsLfXirLDeqDt1Q7D//krlq1yj3++ONu1KhRbubMmeGuwYMHu5NOOsltu+22ftTE8tixY8P4H330kVu2bJnbfvvtwz8uvNatWyfi5bKwZMkS98QTT7gJEya4SZMmucrKSrfNNts4ynT44Ye7Zs0yd/h/8803u+XLl4e+fgcMGJAozrhx49yzzz7rPvnkEzd79mzXtWtX16dPn9DaljrQqHINu+yyi6MOlJ8QFXmj4i7WxaRREAEREAEREAEREAEREAERKCyBd955JzTQkZFOdpzNmpePrxXrR9hMlM2kZnb+SZMqIJY0ttfnU/Gor325irtWPhPUSk3oQl/y3RBYffiNMilFEduvT6bLvnhrHKJp7TzHib/RuKkYR+Nqvf4JhC4a6v+wG45I50FDolHZjWLD3uJfuvjii92HH35Yo6B8AI0/XBz4VrCrV692f/zjH0MB1k8AA/4QTX/729+6Nm3a+LszXn7//ffdNddc47766qsaaRCf+XvxxRfD/T179qyxP9nK008/He4aPnx4Isr999/v/vrXvybWWfjyyy/DP4Tfd999111yySWuSZMmNeJkurLpppsm3DJERV7yMMGXZcRdrHtJoyACIiACIiACIiACIiACIlB4AszdmG8g3MmaNzveJvQW40fYEMCSBcSwZEIt7WHq1Km1rAItr4ay+rPjx/1Gxb64OP62qEUg+4pZIERbMdEuXT3YH7Vw9NM05HIc91TloS3GCZBsY58fSlXE9uuQybLfDmj3UQ60Y9Ph4JQuJGOcLp321w+BiooKF/xV1M/RkhzFGkmqm0qSpA2+GXF32LBh7qabbnJ33XWXO/30091GG1V/MZV1Pzz88MMJcfdb3/pWKPbeeeediadMEydOdJdffrmfJOPlhQsXuh//+McJcffss8925H3HHXe4o48+OsyH/K+66iqXq89ljmHi7s477+x+//vfO+p0++23O9YJzz33nMMyuS7BRF7f92+c5a7E3bpQVloREAEREAEREAEREAERyI0Arhqw5o2KBbnl1vhS4bbh4r8tcQi+xRDiBDDKhfCDRWQqYyyzEEz1cxugzgAAQABJREFUEaZMhKP65EB9ELZyDcUs7uZap3JJR5/k60qsJ+unzNiwXOoerYcv3sLARG2LZ9cu69lco1HGlp9+G55AaMFbVVXV8CUJSmAXWKobSFEU1CvEbrvt5q6//npU8nDrlltuGX6Y7J577nEzZsxwS5cudW3btnVz585NiKMIsccee2wil/79+zv+Lr300tAaGNEYtwrZhPvuuy8RHSvhQYMGJdbJq3fv3u62225zU6ZMcSNGjHAHHXRQYn+mC2ZRS/wzzzzT9evXL0zao0eP8HiI1jzNHz9+fNblj5bBRF62+8dlXZa7UFAQAREQAREQAREQAREQgYYlwERf1ry5nYNiseaNs+qjRtmKmCYGk19USDJByLcmzI1a/lJRFqySsxG2OHoqITt/pVNOdSFg7Y9zjHV5qsB+2m45Bv9680Vvq6u5s0jWB1i8uF+fcdx+bWsYAgi8DWu+G6k3nT+dbLYdbSSbels99dRTE+KuHdR3y4DVKwGXDYSOHTsmLGrDDev/22mnndzQoUPDtRdeeMHflXaZL+U99dRTYbzDDjushrhriY888sjQTy7rI0eOtM1Z/SISW0DAxjWDBXz9/vnPf3b33ntvTuKx5eP/IvK2a9fO3xQus01uGWph0QYREAEREAEREAEREAERqHcCZs2LRa9C9gQa0pqXubcJNX7Jfcs+f3smy4hKiMPRwHHiRKZovPpcN1E602NK3M2UVOnEQ+Qvx2DiLXVDW+Na94PtT9YH+HGTLRfjNZ2srI1lO4anlfhLRSQspkBDw+dKsXeivuhp/HwfumYdPW3atHA3T7hvuOEGi1rjF4tfwuTJk2tsT7eyYMGCRBRzlZDYsH6BD5+xj3JYWaJx0q1vsskmoXj88ccfuzfeeCP8GzhwYChM8xE3PirXvXv3dNlkvB+3DHyQLhrY1r59+4Sv3uh+rYuACIiACIiACIiACIiACNQvAYReJvwYrcg3b3bsseYd37vS8RG2+gxxgmu2omdceRF544TjaFyOn8y3bzRuodapLz5o40QwO2Y+mFhe+i08Ad/6PNO2WPhS1d8RaK/8EdDVouKuvz+uD6i/kupI+SZQtAKvVbTYTeZbtGhhRU35O3PmzMR+/0NhiY3egi/YepuTLs6fPz+xr0uXLonl6AKuFAhY3vLBt2bNsh9A3HLLLQ53EFgMr1ixwuHXl78HH3wwzPuEE04I/RA3b948XM/1vzifu+Rl7hqMIX54FURABERABERABERABERABIqDAAYtEngzPxcN9cG1OOGHUvuvdUdrgRiEcGviEXFtORoXkS0q8vrrtlwsFpQYlsWJvNTPrB2jddR68RHgfEXbcFxbpORsT9Z+i69mmZfIr3/cm/HWnrmeo+Jv5kfJ3o1LNnkrbm4EMDCtLDbrXariP3XJrWrFlapz585hgbp27RoKoKlK17p161S7a+3z4y9fvrzWftuwZMmScJGPwOUi7pK4ZcuWjg+40SlgyYu/3XfffTf8yAL7H3nkkdAP1xVXXMFqTiFO3PWFXIm8OWFVIhEQAREQAREQAREQAREoGAGEknIUSwoFDGtdxN36ttq1+sRZ7iU7h4hAvlBkohDbsH6NCyYymZBrcfz1ZMezuPX9yxzXRGyOXW6aRH3zrOvxkrUty5c3vv1AezLx0t9OW+RBgrV54jW05bhfvnwu+6K1f83aMYwP17B/Ldr+TH9haNd4pmkUr34IFJ3AW44dqblyQCA9+OCDY88slrW82pTtE2+zzCXTTz/91A0bNiw2/0mTJoXbc31KikCMT+FWrVqFrhhwy8Df97//fYeF8lVXXRW6f0Cgveiii0IxOLYgKTYmE3fN564JvRJ5U0DULhEQAREQAREQAREQARGoRwLFJtTVY9VzOlRDWe1aYRF3TKS1bfwmE2xMGPPj2jL7ounImzdx0wlI0XSWZ0P++mXylxuyTDp2ZgRMvIyLnUz8jYtbqtt80TXuGvfF31TXdLr6NwaW6RgU8/6i8cFbjsKunXj80xLws/v222+7HXbYwXaFvytXrnRnnnlmaP16/PHHu/POO6/G/lQrWOMitL7//vvugQcecEcccYRr27ZtjSQIoqNHjw63DRkypMa+TFcef/zx0D0DYuv9999fIxn+eY877jh38803h9uXLVuWk8C7ePHiRL5bbbVV6GfXxF12sBwVef00icRaEAEREAEREAEREAEREAERKCgBCbvZ4W1oYddKi/gaDbmeS0RcE0IRleKsBqPHYj3X48Xlle9tVp9859vQ+aWziG3o8tXl+KnE3brkW0pprd3GXYdcb7YfcZc4uQTyEetcyNVPGr6vVlEMLhrKWdzlVG6zzTYJy9qrr746/ECZfYBtzpw57o477gjFXeLCItuA2wQCfnEvvvhiN3369HCdcztu3DhnLhNwz/Cd73wn3Md/3JAPPfTQ8A9xOFXwReo777zTIUpbwNeWPQXCDUUqX8CWJu53l112cQi7ceKuxTeR1+KRRkEEREAEREAEREAEREAERKD+CBSzQFd/FDI/UrGIu5Q47vV0E3/iapRKDKIdWDDxx99m+6K/qY4Xjat1EUhFAMExkzaXKo9S30f9jYHpMn6d7HrjWk5nWe+niy5L3I0SKb71yoYsUrkLuz7b888/311wwQWhkGv+YhBDcc1g4cQTT3SDBg2y1Yx/SXPqqaeGFraffPKJO+WUU1zHjh3dqlWrQtHXMvrZz35Ww7oXkRlRmMCH11KF7bbbziGmjhkzJvyoGh9W69OnjyMPLJMtUI5cg4m3pPctd6P5ZRovmk7rIiACIiACIiACIiACIiACuRPwhYTcc2k8KYtJ2DXqnEMTahB8EIRMHLI4/i9z9kxFIcubPJOlKeY2ZOU2HghjtuwzKdXlcqsfbbOczk+u7cquZ85v9IGMz4j9uQY7Rq7pc02Xrv8xbS1Z/un2++k4VqmHiqZNmzZIHWgg9iShQQqQ40ErK3PTxDfbbDP3t7/9LXQxgCUtwcRdxFj81p5xxhmxpYo7R9FtCKs33XST69evX5gHVrUm3u64446hW4U999yzRv5+Hv5yjUjrV9h/zTXXuJNOOslZ+adNm5YQd/v37++uvfZad9hhh8Ulz3gb4m0qcdcyyjSexdevCIiACIiACIiACIiACIhA7gSGDh0qMSVDfHw87eZT2rmT96me92WYrN6jIY6lE25SzdmT7WM7LgHixLe4bfVe8cgBEcUQgkyUZp2/TF1ORLIrutVyrB9iXLL2V3QnoIAFMlGSc2zt1w7HtWaMaMvEySXQRzTUdUv5rY65lD3TNOXQnnDRULl27dpM65zXeA3VQOpaid122829+uqrSbPBPUGy/e3atQvdJeA6Yd68eeFHy7Di7dSpk6uoqKiVZ1w+N9xwQ614toEPrPGH5S4fPmvevLnr1auXSybe0oizuVj4wBoi9Gmnnebmz58flr9FixZh+RGpFURABERABERABERABERABMqTQLYfgy5PCulrVYxWu+lLnToGAo9Z/yESZSqGkI74vmWhCU6pj1i/e61ucUdlXzGWOa6sybaVY/1K/ZwkO1fptifzpRx3jn1G6R7kpDtuQ+63ekQF7HyVKdP+LF/HK2Q+RfORtUJWstjyRlnv3r17+FeIsiG6miVvLvkvWbIkkYyPuEUDVsw9evQI/6L7tC4CIiACIiACIiACIiACIiACjY1AOQq7dg4xzspVILK0CFC5WhBaORriF1HJBKaGOH6hj1nu9Ss0v2LIP+7aQrQsVaPKOKZ2DeZb5C0ncRf3qbn5G4gjrm1lQWDs2LFu1KhRiboMHDgwsawFERABERABERABERABERABEWhMBEZe0zmj6hbSHQMCjgkcGRWmCCMVc/lTCc/lIJKVe/2KsLnXW5E4t1HRkzZbzNdbrnCsTtH65ppfOYm7MMArQG2/ALnSUbqyIHDddde5F154IazLPvvsU+OjbGVRQVVCBERABERABERABERABERABEqEAOJuvgSNEqlyvRcToaecQ7nXr5zPXbq60T9Egwmh0e3lsE7d8tGeyaPcOCHwVuIPNh8h3dfp0u3PRxmUR90J7Lvvvg7T7r333tvtsMMOdc9QOYiACIiACIiACIiACIiACJQcgXyLivnOr+SA5lBgibs5QMshCUJPsvZZDiJQudcvh1NeFknoH6LW2QiX5WB1nuoE2TWZ7JpNlZZ95SjuUi++rxZ+ZA2fsAoiAIFLLrlEIERABERABERABERABERABERABBqQgMTd+oWf64fk6reUuR+t3OuXO5nSTNmYXDPEnaFcRd5yFXeNUZPly5evQ+lVEAEREAEREAEREAEREAEREAEREIFSJDBlypSw2HX52HSx1DtO3P3lL39ZLMVTOURABDIkMGnSpDDmgAEDMkyRWbS4PgIRv9ytdzOj03hjVUjcbbwnXzUXAREQAREQAREQAREQAREQAREoHgJxwk3xlE4lEQERKAYCWLBijWqhMbhmsLrqN55AwgevXDTEA9JWERABERABERABERABERABERABEagPAhJ364OyjiEC9Ucg35a7fsnNTQHuGmzZ36/lxkUg9MFbWVkZflSrcVVdtRUBERABERABERABERABERABERCB4iAgcbc4zoNKIQKlREDCbimdrcKXtWLNmjWFP4qOIAIiIAIiIAIiIAIiIAIiIAIiIAIiUIuAxN1aSLRBBERABEQgCwIY7wZuGiqySKKoIiACIiACIiACIiACIiACIiACIiAC+SAgcTcfFJWHCIiACDRuAhjvNlmxYsW6qqqqxk1CtRcBERABERABERABERABERABEShZAlOmTAnL3q9fv5KtgwouAiIgAiIgArkQwHhX5ru5kFMaERABERABERABERABERABERABERABERABERABEWhgAuvWrXMVst5t4LOgw4uACIiACIiACIiACIiACIiACIiACIiACIiACIhADgSaNm0qC94cuCmJCIiACIiACIiACIiACIiACIiACIiACIiACIiACDQ4gdCCF5VXQQREQAREQAREQAREQAREQAREQAREQAREQAREQAREoLQIrF271lXyXzmH4dctKOfqqW5ZEhh5TecsUyi6CIiACIiACIiACIiACIiACIiACIiACIiACBQnASx4K/na6OrVq4uzhHkpVZe85KJMyoPApEmTyqMiqoUIiIAIiIAIiIAIiIAIiECCQGVlZbj85ptvJrZpQQREQAREQAQaA4GWLVvKB29jONGqowiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIQPkRwDtDk8CMd135VS19jcaPHx9GGjJkSPrIiiECIiACIiACIiACIiACIiACIlC0BBLzu627F20ZVTAREAEREAERKAiBikpZ8BYErDIVAREQAREQAREQAREQAREQAREQAREQAREQAREQgUITCCx4KxqpAW+h0Sp/ERABERABERABERABERABERABERABERABERABESgogSoE3oIeQZmLgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAgUhEBFRYWraNKkSUEyV6YiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAKFI9AEgbdw2StnERABERABERABERABERABERABERABERABERABERCBQhFYJx+8hUKrfEVABERABERABERABERABERABERABERABERABESg8ARkwVt4xjqCCIiACIiACIiACIiACIiACIiACIiACIiACIiACBSEQKV88BaEqzIVAREQgaInUDXv46IvowooAtkSaNptULZJFF8EREAEREAEREAEREAEREAESppA5bp165xE3pI+hyq8CBSMAP3D2sCXC6Fp06YFO04xZlxVVRUWi/6RL1LWZ1iyZImbP3++W7x4sdt4441dt27d6vPwOpYIiIAIiIAIiIAIiIAIiIAIiIAIiEAJEahf1aKEwKioIlAIAqvXrHXffFNV429N1bqUh6oK9kfTkE99hAceeMD179/fXXbZZfVxuKI6xj333BPW/Zprrqm3ci1YsMCdddZZbvvtt3cHHHCAO/74490LL7xQb8fXgURABERABERABERABERABERABERABEqLQGCX5kreRcPSpUvdvHnzQvK9evVyrVq1qpez8MXYGe79v4x1CyZ96b5esCI85tALdnfbnbNLvRy/WA4y7aVP3ejrRrrOA7q6g+45vliKlVU5vnvqSPfq67Pdb3+9q/vuCVtmlTbbyMef+JIb93Z1e7W0Z/5gkLv2qh1ttdbvrb8f7265/f0a2/tv2d69+uJRNbblewXr0ZtuuinM9sQTT8x39kWf39FHH+1uuOEG9+CDD7qTTjrJDRw4sOBlvuOOO9zIkSPD4xx22GGud+/ebvDgwQU/rg5QnASuv/0+N2vOfLdF743dxWdVX4OLlixzP7vhz2GBjzxwD3fIPvH3HNLN/2pRrYq1bN7cDei3Wa3t2W5Ys6bKffucq8Jkt/38Qrdpz8JZmf/z2VHulTfeDo/1u+t+4lo0qwyXr7n5bjdvwSI3MKjPBad/O9sqKL4IiIAIiIAIiIAIiIAIiIAIlAmBJq56llSC1Vm4cKEbMWKEe/vt6kkfVTjllFPc1ltvXfDaLPh4rnv+lEcTx2nWunm43LRZab7CPn3Ep27qsxNd5627u8Fn7JSoVyYLa1auDgXuletF7kzSFFuclSvXhEWqD6vYbbfp5Fo0rzacf+/9BW7Z8tVuXfAvVdh0k7Zuj117hFFmz1nhpn62JFX0vO2788473fLly8NraocddshbvqWSUdeuXd1xxx3nHnvsMffb3/7W3X333QUv+ujRo8Nj/OQnP3Hnn39+wY+nAxQ3gTnzFri5Xy5wHdq1ThR0TeA6hG2EpcuWJ7ZHF5595Q33wqgx0c2uc8f27q7fXF5re7Yb/H7L3Lhkm0em8ZcsXZaoswvcxlhA3IVF5w5tbZN+RUAEREAEREAEREAEREAERKBREig5gXfVqlXu4Ycfdh999FGDnbCJD1dbU3YKrFb3u/0I1653xwYrSz4OvOizhe6zFz5xVauqfY5mk2eL9i0dHDpu2SWbZI027vXXbBDQL796jPv7Pz5Jy+KE4/s5/ghPPj3NnXPB62nT1DXCypUr3f333x9mc8YZZ9Q1u5JNf+qpp4YC76hRo9y0adNcnz59ClqXyZMnh/lvtdVWBT2OMi9/Aj26dnYDt+idqOgXgVi8OLD+VRABERABERABERABERABERABESgvAhjdlJzAy8eHTNxt06aN22mnndwrr7xSr2dmybSvwuP1Obh/yYu7dQW36T59HX8K5UUAv69Y73bu3NkddNBB5VW5LGozaNAgN2zYMDdu3Dj36KOPuksvvTSL1LlHrS9XM7mXUCmLncCRB+zh+LPw6DMvu4efHGmr+hUBERABERABERABERABERABESgTAhWBE96SE3j5mn379u3dwQcf7IYOHeoQfAsu8AZvhH7x5gxnr4Yu+6L6FflvlnztvhjzeaI5tNm4vWu7afvE+sLAP+/qZd+4tpt1cBt13fCKLRGWzVrils9Z6lp2auXab94pkWbpzMVuWfDXsvNGrkO/zu6rT+e7uW/PcqsWfe06DezqNtl7c1fRtPoV/0SiyALHXTQ5sNYKLHMrWzZz7fp0dJvs0cc1bbnhdH/1yXz39cIVYcoln1UL1ivmL69RH3Z2HdLTVbZqVuMIK75c7pbNrukmoNlGzdJa8a5e/o2b995sx7GrVle5Dn07u66De7iNurWpkT8r3yxZ5XCFURG4vei+w8YO5nPfmuUWB+J6+8BiepN9Nnct2rWsla6uG1YFVszjP1jg3nxrnqusrHA7Du0a/iXLd+3ade79Dxe4SZ8scp/PWOY227StGzI4sJzr3yFZknrdPnfuCvfOe/Pd5KmLXfPmTd2ggR3d0O27utYbbWgLcQV64403ws2Iu80Dn53JwpIl37j3P1romjercDvt2M3Nmr3cjR03N3QjsXmfdm74vpsE12t8euLij3j27BWhq4q+m7dzW27R3m09qJOrbBp4CPfCxIDv/AVfuy2COGPC/Je6PXbrER4T/vhQ5jiHH9Lbde5Uu13U5TzhCxeB9+WXX643gderetEszp3/lZs3f6Fr366N26Rndzdj1hw3YfK0wE3ACtdn055u6LYDXNOgf44GXqifPnOOmzJ9llv41eJw9ya9urnNevVwG/eobfn/cZBnVeDftVePru7N9z5236xe43YaMtD16NbFvfPBRDd52kzXM1jefdjg2OOt+ma1m/zZTDd99pywbJv16u76Bz5aO3doFy2a1iMEqgL3B5OnznDTgnO7eMlS171LZ9e3d6+M/OsuX/G1mzhlWnB+ZrkO7du6wVv1cz0DK+JomDrji+Dh0Yrg3Hdzbdq0clOC80k7atq00g3su1le/ANHj6l1ERABERABERABERABERABEShrAsFcPLXKU4S1x6LwyiuvrNeSIUb6Pnft4B/e+7bjz8J2P9rVDT1/N1t1//vFK4EoOdPtds1wN/DEIYntLEx46D33wd3j3BZHDXJ73XhIYt+UJz927/x+tNs8sA5u0bGVm/jQ+MQ+Fjberbcb/udjXNNArIsG/OCOvnakw6duNOAn+PCHTnQd+1cLKm/f9ob7/OXq18Et7vwP5rjnT/2nrYa/Rz3+fdd5ULca26Y+M9G9eeOrNbbhpuHoJ0+usc1fmf/RXPfyj54MRW1/O8v73HyY63tYzQ9YLZgwLywL5d795we4Vy9+tkay1j3aukP//u1QPK+xow4riJXHnPCie+/9+TVyufiCIY6/aJg7b6W78NI3QnExuu/cs7Z2l120vWsWCJ8NFR7791R3/kX/rXX43pu1dXfesbfDH3CyMGHChHBXOpcEHwTi7rdPesm1ad3M3fSrXWu5j+jZYyP32MMHuT7BMf1wxrmvuWdfmO5vSizjb/iPt+/lunTeINTe/LvxteL/9nfOnf3DQe7Pd3+cSHvv3ye6kc8dWUMgrut54kNnBNwnrFmzJhD+C9Ntkncxh9fGvBNagO6247aubZvW7sVXx9Qo7pCtt3RXnHeya+bxQWw9+2e/Seoa4MgD93TfP/bgQNzbcJ1cdeNfwnxbtWzhVn69Klx+9KmRbq+dt3MvvjY2ccxPP5vhTv/OEYl1Fj4NxMJb7nx4g79Wb+9PfnhCmIe3SYsegUWBn9vb/vqoG/9R7fvHMYfs7b571IE1zpOX1H0+a667Ivjwm50v23flj09xO2xbs2+/56Gn3MefTnMnHXuQG/vOR6Fgb/H5PeHI/d0JRwz3N2lZBERABERABERABERABERABEQgFQFcNOCnAatYheQEsJjd8eI9Awve6jgf/u3t8MNim+2/hesWWLha6D60ly3W+RefuIT+x23j2vRq5yb984NQHJ01err77PlJoTDsH2TN16vdU8c9kBBQB3x7cPjRtNDKeOwMN+u/09yqxV8nkiAsW9nJE0tkrI8HfGtwIg4LrbvXtq7ttl1Pt9251V9uX/DxPDfj1ak10kRXvl64Miwb27FMHvS97UPL4qnPTXSIyoi3LTq0dBvv3iea1GH1y/6eu2wWitsca+47s8J6jv/LWLfHL/PnPuDXN70bHv9HZ2/jVn+z1j34yKehZenNt413xx3Tt4ZIuXzFGnfAYU+HVqWImz84ZWBgvdvGfRgInvc9MMn98S8fBVatTd2lF21Xq071sWHUa7MS4u52g7u4o4/s41YEZb7nbxPd9M+XuoOOfMZ9+PYJrlPHFrWKUxV8xGnixInhdhM3a0WKbOBjcfgGRpzda89ebsTLM0Pr3C+Cj8Ld/ocP3C03bnjwQdLPZy4Nczg+4DpwQMfQ6nbmrGXuL4FY+9//zXFHf/sF99pLRwWCUk1LXhJxfp55bnpYD8Td/lu2d/vtvXEo9H7y6WL3QWDRu/2Q6gcZ+ThPm222WVhW/vv8889d3759E+v5XHj//fcT2W200UaJ5WJbGP3WB2GR9t9jR9e1cwc34vVxbkFgmYswyL69d9k+UeQ1a6tCcRer3z0Ci1uscpsHAvDkwJoXgfipl/7jEIHPOumoRBpb2KhVS3fIvru650f9LxQOEXeHDdnKIfy+PvY99+zLo90pxx8aCO7VD7umfD7bXfbLP4TJuweWowfttZNr1aqFe+v9ie7t4O93dz/i2rVt47YbtIUdIuvfDyZOcSP+My7jdKd+6zDXqQ4fAIMBoWVQZwsVTTbcr5tX1ny7wuJk+8ut7Ve3/y0hth4VCO/dunZyH02aGp7TJ55/zVVWNHUnHn1AbNa33vWw69U96GcO3ju4tue4N96qbst3P/SM227r/rGW1v94/MUwL8TjNYHF9siAKwLxI0+9HLShoa5HcHwLzZvH17Nli+rtrdZzsvj6FQEREAEREAEREAEREAEREIHGRqBS4m76U94kEJkGn7FTIiLi69eBtWzv4Vu4LY/ZOrE93wu7XRtY/n6n2nJ0yNm7uJfOeMwhxk4Ljo9A64cP7n4rIe4e/sh3E+ItcSg71rqtumwQjfocuGUiOV9DR+DtuEUXN/jMDfVMRIgsdNu+l+OPMDmwOE4n8H50X7WVM9a4R/7rJNemZ/Wr0lsFVs0v/OBfoWD77u2jYwVejoF17943HeqaVATnISjfe38a494JLJA/eexDt8f1gcBbWwMkWU7h5eeOcFsFbgwIF54/2A3b47FQ5B0xcqY74wcbPnz1pzs/TIi7I4M0iLsWcNFw4aWj3e/ueN9951tb1NhncQr5y0fmb7q12vJ752Hd3MN/P8C1aFEtgh1/TD+338FPhXW6+94JsQL0jBkzEsXzxc3ExiQLRx3Rx/3h1j2DB0ZN3HmBCEv9f3PLe+7hf052N9+wm2vinadLLtzODRvarZb7Btw8nPD9EaGLhzFvznW7B4KxHy768WD3059s5/bavWcYj3333bmf69O7bXg+/vXEVPfRxwsTAm8+zlOvXtVtnWNNnTq1IAIvD9qeeOIJDhGGfv362WJR/p71vaPdQXvvHJbtuMP2c9ffdm+swNuyWXN32Y++73YMrDh9K13E4fZtW7tHn345FHpPOf4Q17JFTVce5512vBuy1RahgEs8ROKfBRbChPETJofC8RdfLgjdByBQ/jWwDCVsPaCvu+rHp7oW60VByvn7e//lRo1+29394JPutl9c5Jr6jTFMldl/c75c6P77Zs23KlKlPOGI/YPdNa3XU8WP7vvNlT+KbgoF48fv+nWt7XXZ8N6HnyTEXd/q9pB9dnF/7/KC+/cLr7l/PvuKO2z47q5dmw33ETsmgvqNV/3ItW5ZLUgfvN+u7urf/CW0pJ4WuGTo13tji1rj99ZrLnC9N6m+xr99+P7uzMtuCEXet8ZPcIcHx7KAlTd/0UB6BREQAREQAREoFIEJn7ztPp74VjC2fMs1WRuMP95/0x17zFkO11/bbjPMDdk2/bwpXdmmTfvUTZ1c/eZcXNymTZu6Hj03dRtv0idwbSR3Uz6j2bOmu4kTNozLttt+V9epc1c/SlEvz5s72334wVuJMg7ZbhfXuUu3xHqpLbw97r9u8eKFYbFbtWrtdt2dcXBxhjdefykwMvk6LFzXrj3dtkOGFWdBVSoRyILAukAIquS/JjlOdrM4lqJmSQAxtP/x2yZSITLzUTcE3qj/WyJ9eG/1zQEx1yxzE4mDBayNGypMfurj8NCI1SbusgGfwNueMczNPWeWmzc+8MsY+CTG9UI0IOoi7lroc8CWocDL+qrAD3KL9tWigu3P9feIQ3snxF3ywKfr/vtt7J58epr7Ys7yRLYIqLfcXm2h9n9X7FBLwD3myM3d1deNC0XU0WPmBPvrl/3sL5Yn3Eyce9Y2CXGXCmyycWv3vRO3DK1dn3jqs1iB97PPPkvUdZNNNkksp1v48TnbhuKuxTv0oN6hwMv64sWrXIcOG6wQ8c0bF3bdpUfo7gGLYOoRDbiXIPTq2Tqxa9NNqsV1E9mXLFkd7svXecIHcY8ePdycOXNCgTdx4DwsXHLJJW7ZsmUOlxgI67igufbaa127dsU7gMeCdvgeGwZBiKW7Dt0mFHjnLfiqBhVE3Z23q/kwyiLsusM2ocDL+qIly2pYbLKte5dqC86unar9WeNL10LPbp1DgXfFymoXDp8FIuLEydPD3Wd896iEuGvxjwg+NobAO3vufDdn7oJY378WN9XvNgP7ugvP+E6qKDX2dSoRv79jA1/HBITYqEuFow7cIxR42f9+IKxjiR0NRwZxTNxl39Zb9gktrbHIXbhoaZBvNIVzuPowcZe9rTdq6XYYPDAU0LEIVxABERABERCBhiIwafI77sln73ITA0G3SdU615QnyUHoFBhMvPrc3W7VmrXuqSf+4jbdfHv3ve/+KDAsyF3o/eC9se6F5/5VfYA0//fstZk74+zLXPce8Q9O0yQvu92fTPrQPfboPYl6devWs6QE3mmffVqj/G3atC9pgfeZpx50iNaEZs2aFbXA++ADf0y0my37b50XgfejD9528+ZV15/M993/iMQxtCAC9UGgCT54JfDWB+rsj9Fpq26uIvjIlx9aBe4NCHwMzQ9YE+PKgLBZYFVcTGFt1dqEZTEfS4uGbtttsI5cPndZrMDrf4SO9Lh5sPBN4HYiXwLvgP4dLdvEb/eu1cf6alG1kMQOPlxmAQvVe++fZKuJXwRKwoRJNQWvRIQCLuAWwcKOwQfVomHnYd1DgRdXDVUMWiNuEPyPqq1eXV2PaB5x6/361hQlu3TZILwvCvwb+wIv6T+e8JV79LEp7rPpS9zMWcuDsgSmEUEwdkuX1j52y/UfCmzVqmkYl/+s/GalbOnzeZ6MQ8v1FoqJg9dx4fHHH0/k0Lp1a3fOOee4fffdN7GtGBc2Dz6o5lvjUsYO7aqFd4TaaAiMXNy7HwZ+u9+b4L5csCh05xCNs2K9r11/e/NgYEhosd6y17fwtW3m8/WLuV8mkt5610OJ5biFmV/MzVng5aNhcR8OiztOKW2bG3w8j4D1czS0D9xabBqI6zNmzw2s5BdFd4frmwUf3YuGLoEwT5rlK1ZGd1Wn2bh2mo7Bx9kIS4OPsCmIgAiIgAiIQEMQePbFu9yTT93lqgLXZpXVQ9OwGAMGbewmfTwrXG4RzNH4WzrnA/eL6053hxxxhjvjtB8XvLhfzP7c/fz/fuQuvvTXru8WG94sLPiBdQAREIG0BF4e+ZSb5FmU77Pf4TKkTEtNEfJJgLeC5aIhn0TzmNdGnjsFy7aJ9yEi28bvkpkbrJ3axFjA+nHre/nr+Rsm6r4wa+XwxdnlXwR+WT2fxsTBkjn6QTmsmS3wgCJfoVOnDRamlmdls+pjIYRamD5jg4g1f8HXoWsA2xf9XbWqKrqp4OuzZ294AIAVcjR09j5eNn/+Ste9+wbBnLi+j1msStu3bx/NotY6foibRz7819Szul6HyueFa64f5+66Z4K3xYWWu/6GlStrf3Ss+fqP1pnAyHEtVK5/ILI6sKog5Os8rVixwi1YsCDMc/PNNw9/8/Xf2LFjA9/IK9z48ePDj0def/317sUXX3QPPfRQ0Q4IOqwX4XwGJrL721j+etU37ue/uydhXWv7sQL2w+rAD280mG/dput9xDdrVpmIYtu4iRG+CKxyLUwPfMCmCt+srt2uUsVvDPvmzKsWeDsEbjDiQueO7UOxdt7C+AdWbVq3qpWs+frzVbX+HEUjtAs+1BcNvIZKqIr0F9F4WhcBERABERCBQhB4fsTd7ul/3xlY01S5DaYEzh1+7InuyONuDg955kkbjFPY0KVtM/fsk3c6piRn/qDuIi+Wjx06VH9LoqpqjVu0aGHgEqLmfOK+v/7OXferPwVjxZrGQIVgojxFoBwJbDVou+CarZ6f9h+4bTlWUXVqhARQrvSRtQY68evWWyvm4/CVLTYIH1Wriku8qAg+NGZh3eqagxO2+8JfVMi1dPX1m6mnkhYtNgymRo86JvT/Wl9lzOQ4vtCKTrKhtNWp16wXQFnz41reuCOwwEfFttlmG1vNy+8rr85KiLvnnrm1O+V7A0KXCyYSHvWtF8IPtKU6WCbnKl/nyfdJ7IvfqcqX6b4uXaoH8Pg6XrRoUeieYdy4ceHH3DL9wF2mx2qIeP96dlRC3D33lOPcztsPCoT8jUK32asCofXEc69OX6wNz3OSxrWPcOGn996br0war647Jkye5l4f817G2Zxw1HDXIbCALYaQ6lmYibF87CwurF5TfV8xq+pacTI4R9E0OSSJZqF1ERABERABEcgbgU+nvhO4XbjTrQ3E3WgwcTe63da7BQYVjzz0R7f9djsF35jYxTbn9Dtsp33cSads8MG/bt1a99ab/3X3/fWWRH4LFsx106dPcX36bPimSmJnsGDCVX25YaSM2YrNuZQxlzQ+l1TLudTBz68QH67PtUzp0qXb79fLlgvJ3o4R/c2lnOSRSbrzfnJt9HBp1wtxjtMeVBFEIAsCTYKPmcuCNwtg2UatXG/RuObr2qLrinkbrCyzzTcav+2mGywslwbWvG03q/ZZGY3XEOstO26w7Iqr80rP3USc/92GKHO6Y27eu10iCha8fOArl9Bk/dfhli2rbb2YLD8TNuPcF1iaXr02WOTO/3Jl4D92wzpx5s7d8Mp0x441LSnZz2Bw++23d++++66bNm0am/IaRr4yM8xvv302dlddvkOtvCdMrLYSrGnzWyta2g35Ok++wNuzZ8+0x801wvDhw0OBl/Rz58515SDwvvHWByGOk487JPDbu2MNNMle968RKcOVXt2rhfLFgYsILEbNwjfD5BlHm/nFl+7F18ZmHJ8PhRWLwLt0WfXbFHFWuj26dgotdBcsWhJbt/kLq98S6dq5thub2ATaKAIiIAIiIAIlRuClUfe6quW152xU46nHLnYDBx3gJn48Immtunds7u7+6+/rLPBGD4BwOmznvdy4sa+6jz58J7H7i1mfJwReLHzfHveGe/2159ysGdPcqlXVH4+qqGjqevba1O24055u/wOOClxsVRsFrVi+3N315xsSeQ0OhOmov9CHHvhTwp9q5y7d3fdOOS8Rf/bs6e6VEU+798ePdcuXBW9gBoFjde7cze2253C31z6HupYtN8wBLeHy5cvcc08/5D795CP3xewZ4eZNN+vr8IF64MHHudZtas+pEBZfGfm0e/ftN9z0aZMTaahPXcKa4OH1888+4iZ89J6bPWuawx1b+3ad3Mab9XZ77HmQG7J9TaE+ymz4QceE5X3m3/9wkz/9KEzfqtVGbpttd3QnfPdM12qj3B7wv/PWG+7lEU+6WTM/C/PE3/K+w49we+51cI3qjno54P/em+G2Nm3budPPvMT99/UX3fPPPBoYjSxw2wwe5s45r9roAWHylcB9wAfj33QzPp8ato9u3XuF3Pfe99DgA36b18iblWzbVK0MIhv4mNzLLz2Z2MpbWyefdkEw55kdtImHE9tP+cGFbvQbI4KHGq+7uXNmBa7aWro+fQe4YcP2dLvuMTwRL7owZvQr7s2xr7mZM6aGbZJ0G2/ax207eCc3/MCjg/ZZ0+Tpjt9dG7gHrH6Y0y9wd3L4Ud8Ns7z/3tvdwoXVrt8GDhridtv9APfPR+52n0x83y1dujhs5337DXDf+d45rmfw8UPCM08+6KYEH0qc/OnH4br9d9vNV4UPPnbZbT+386772mb9ikDBCKwL+rXqXr5gh2jcGbdc72ZhmedCASJrAwvK2WM+zxsc3Bgg8i6dsdhNeGi867Vb76zybt6mWuSL+vbNKpNkkQMzrU4DurqFk75001+e7DY/dECNmDNenZpYb9Or9k09sbOIFnB70CVwc4C4y4fKdhxa289tJsU14XX0mLmZRA/jmDsF/OziY9bW/Qw22XjDgGLkqJnBR9X6+7vd8y9Vt72tBiYXawYMGBAKvFOmTKmRNh8rS9cL2q03qt39vPG/OQkfvHU9Vr7O0+TJ1YPJwYMH1xoc1LWMfnpfPDafv/7+UlxesnRZWOyWLWu7CnnjrfF5q9ImPbsl8nrz3Y8dH3ArRBi4RW931veOzjjrOHcWGSfOIeKsOfMDf8htwg+WRZPPWu+nuEvn2g8Ae64XyMe886H74YlH1BDIPw/86M79ckGYXfcuyfuM6PG0LgIiIAIiIAKlQmDyZ++6j99N/gD3mccfcvylCm1aVbqZ0951b749xu20Q01xMFW6TPe1a1fzHrxiRbWxEELlH267zn0yqfqhup8fIt2smdPCv7fe/I/76eU3Bm/vtXBr1nxTI3779jXzJo933xmdEG87rP9wFtsRZ2+/5f/Zuw7wKKouekkjpPcGaSSQQICEFnrvSBdBQBQRESs2bKCiPyqKiqhYEMECiijSe5HeO6QQQkiFJKSQ3uF/923e7GxLNpUs3Ms3zJvX35mZze6ZO+e+pyEbgWPdunUTNv77Oxw+sAvenPcFWFoqf5OEXz4Hy3/8VCKfsS+0uNirfDt2dC+89uZC9tumqaKA/V9cXATLvvsEIsJV357CNit++hwcHKr3GyyWtf/hmwWcsJMGY4ms7AzIupwBOFckap+c8SqYM9IWTR0zDGZ0lQV5w3ULKyjIh1OMmAwPPwcLFi7nWIsyffZIOIsgZaI+kpxrVv0AlxiZ+9xL74lsiGMB2sQ5R3IdCXkkeIWVlBTzZNqtZPjum/9xslSU4R7Hwe3YkX0w45k5KoR2da4ped/q6UimS/s9w1tu059+HWzYdRcZcVFaB5Z/9flcfh2JuviwAnVtccNr77FpL3CSVZTnZN+GH9k1cj1GNSYOtouJjuTb4QM74dmX5kmELLaVX1Po8Sss7PIZ6brIzEiD/9jDBSR2heH5RiJ3wfsvwptzPwcvb3+4fPEUC5Z9XVSR9jhfNKxDRgjUBwL4uaT6KKM+Rq2FMfBDB3UrxSa6LCgokPIaAkFi46X4Y3l1Qxikh5eTeMwt8cIPJwADo9WmdXy5J+8ubvdVuPjTSRXpg9KCEjj56QG4dVG7NqWVh8IjNe1SMiDhekeLlEJN5tpqSghvHrM1EhIPKj/8suNvw9lvjvIyvxGtoLGd5pPemoxbl23fn6vwRlz5WySs26AkqXFMfBX6+MkUeP7lQ5CVpfjjqm0urQIURAsGO1vzdzR7Sqv846KtPuY191V6D3/9/WXIzCzSqOrAvHLHjlI8iV38zUWIZf0LQ8J309ZYfvjUE4EiW2M/ePBgnrdhwwa2BuUfNY2K1cgQa9i8LQ4SEhUEIHYTG5fDvgwer0aPupvU9DzhE+81axRPlYcPH657ICrRikBzb8WX9L2HT0ORTGf3fHg0rNm4R2ub6mSiB+qAnp150xV/bYGrsYkq3aDEwOFTF+HHVRtU8qt64MmI5CF9uui9WTYxr+oQNap/MTIaXnj3Czh+LkwKWogdhl2NhQthV3nffl7KH05isAHl3tXoAb128z6Rzc/ZyrVb+THq8Ia01v4qqNSAEoQAIUAIEAKEgAEiEBN7HsqKNb+HY2C1ZatvqGyYp8tsmPPCaUbw1rYVFhYAekDKzd1d4T2I3o+C6MNyJPtQXzSkQzcVIgyJ3kg1olTen77p31Z8pUJqtm7THtp37K7ifYsSEpvW/y51iSTj0q8/UCF3cZ5yQ0/gTz58GXCtwjatX6VCxGG+vJ3wtBT19dkj8ff1F++qkHbq/eIx4r1m9Q86u0TCUU7uyiviWo4ervr3XHVyV94nem8fO7JXniWlcR5yclcUYP7iRXM1yF1Rjnuss+z7hSrep7V5TSEZ+s3i9+VDwtOz3oKOnRXchUoBO8CHBLrsxPH/YI/MCxjrrfjpCw1yV36NYB28Hr/54n323bgUD/U2nIuc3FVviJ67aLZ2joDe2+qGebjZOzipF9ExIVAnCOAbDwapwbtv3z7Ys0fzQ3Pt2rUSUKgb+vjjj0vH9yLhP6oVnPv2KJTkFcPGcavAsbUrlOYXQ1ZsJg8ehvm1Zc2HB0LMlkiI/+8anP7iEESsPg+OrVyghJG7SNziWF79/bQO597VE1AeIS85B3bPWs/nZt1MIfvQ76sRYOvrILVLvXATTjGyWFjuDcUrveihu3WyggjDMudgNwh9sy+v5j8mCC6vOM3XvWvmv+DaoSmYmJtA0tE4Xo7/hTxX+0+6pc7rIIEE6sbNsYCE6YuvHgYkUgNa2rEvLmVw8VK6FHjtvXc6gQJJzUkM6NcM0IsWJQleffMo39AzOJD1s3a1gmBVb+XsZM4COLSGZSvCAcll3LAN2qE9Y1hANDOefvmFdty7GD19u/ddD317e0Aee+3s1JlUXo4k6/ixzXla2389e/Zk0g5ukJycDOvWrYPp06drq1atPMRu0WLFk/guvf+F7l3d2GtcxoDavGgYOC03r6Rafas3qul5Onz4MHsim8C7HTdunHr3tX5saWnJzlMe5OYqie9aH6QeO0QyNOxKDFyLS4JJz78HoSGtITs3j+vyoqzCjZS0WpvNlHGD4XxYFKRnZsGbHy0Ff59m4MI8Tm9n5cD1hJtQUFgEQsqh1gZtgB0hSfvZd6v4zBAD/EOP+Asb2lfzsxaJayTI9x4+BX9v2QvoyYukedT1BObNorgWHxs3FETgO9EX7QkBQoAQIAQIgfsFgTtFmgTvlfAkwKBqr89bAS1bDa10qdaM4D11VrcncKUdsAqJiTGAr5ujlbEH1OnpqYws3K1BNHn5KH7XoWeu3N7/31JwcnbjWefPHleRYkBvyXYhXeTVq5QuZB6qclIVpRWef0lB3qG37VuvPSGRuOgBPIm9xo72y8+LpXGQfEOPUZwHel/u2PYPHPhP8TAZHbT279sKQ4ePZ9+Fs1n+NqkdJqZOewlCu/ZlpOQd2LZlDexkbatq/65dIc0R2yJB/eRTr4MF+w6O8gX4Wj164qKhN27PPkPBv0Vrfqz+X7fuA2Ds+GmQkZkG/6z5SYUkRa/Ovv0fUm9S6fGwhybAsBETuMMQEq07tyvX+Dcbo2v3fjr1jjFAX9vgUO6p6ubuybFFuQZhQx96BIaPmMivqzNMCmLVr9+IIhZccBW8Mudjflxb1xR6Si9hZLrcUDYC5SMqMpRLGDRkHFsnsOthG/z79wqp+o6ta6H/wFHsO6kJ4PUtf7iBEhsvz1kAKD+B1xZ6LsczrWo09M7esfVveGjUJKkvfRIeTb1h5nNvgZlpY9i1Yx2/PkU7MfazL87jWV8zIhuJf2GLvlrNpQ/FMe0JgbpGoBGTPjGqL/H1ul6Mev91ua5GxuzThlllY6AWbu9Ph0lTQy/e/Ft50OWdftBqssKrtZGRoi+pEn6SoYm94kiRpV5XVoZyrgOWjobu8wdyghbJWiR7bzIpCE7uDvAHGx3avCbmpjB81URo82QnMHe04PWRsMWtrLhMPgoUZxVCytkkacNxhMnzb1/LENmAwdNG/j0F0EsXDesJchdJ74e3Pwm2zZUkMtbRwAUzy00Fdy04iXr67o2NFY7s7GbQaCLGEgHARAUjdi5++akffPxhF05IxlzPhu074zlJidIN7kz3dtaM1mDDIuvqMuzz3z+HwKQJ/rw+1sO26Vq8cuV9zHu7I7w9pz20bKGgjrENbndkkedb+NtywrdtGwWu+w/ekMhdJD23bRiuNcCaGAd1kWbNmsUPf/75Z0mjSJSLPeKgy+SBfQWOWBc1i//8daC05qPHkzluiNmGtUOha6gr71Let5BNEnliLx9b5MnPI+bV5Dz98ssvfIhHH32U6Yo5yoerk7Sfn+LL+tGjR+uk/5p0KjSjxV7el67AGj07t4MnJyq/3J48H87J3QA/L/jw9ZnKLmT3XhNzhWSMOI9iLx9XXE/yqw+1br/+8BUY3r877zeaefEeZRrA4VdjObnrx7yJURP3frY2Ac2hT9f20hIRA0Hu4voXzXuBfV41kcrliVmPj4Up44bwrAQmy3DqQgQndzFw3bzZT7J+FX+zRBvV86H7ZSDZqeVN8dUhbmIvOmR7Ude4gs8VWXVKEgKEACFACBACtYLA9h0/1Uo/2Im9FgmyqnSOhNTvv3zNtz9WfccJPnUvQiQBrawUb/UNHjYOxk98im/TZ7wmkbs4ppzcw2MkYWti4rV/0Qe+gr6OEaaoe2pqagZz5y/hMgsotTD71Q95NSTa5K/Po3Yu6tvidzl8RX/8xOlcZ1X0uauc0Ay7dEbFQ7Z332GM3OzPPHiNOLk3asxj4OnpK5rpvUfSVhgSorOen8vJXcxDPeDpT88RxXx/+oSyvrwANV4nP/4c91zGeUyYJPteyyrevq38LSxvV1Hax7cl14JFrWQkMEeNVV0jeh/LCXZ5X+gp+u4HS7kW7/CRj0KHTj3g8P6dUpWmzXxg5OgpXIfZjM29W48BENSmg1SOnrbCe7Y2rikk679Y+JbKOcTAZpWRu0im4/WN60ccBgwaxa4X5UMJLtnA9HDRTp74T5o/Jp6bPY+Tu5i2trFj1+D/MCnZiWP7pbS+iekzXwdnZ3fmpesAjzz6NLvOlb/tcY1V9QrWd1yqRwhUCwH04BU/lKvVwT1qhK+Pi1fI78UURjGyUl/zH90avAf6Q1ZMBhgxotPO3xGMygnFTq/10ugGPVl1ebM26+0L0yNf02gjMpAUDXw0mG/5qbmAAdeMTY25Pm9l8gfosRv6Zh++if607Subg7Y2mGdm3Rj6fD4ceiwYxLEoY3IEtj720NhW4X2q3s6tczOda8W+KsJBva/Kjv/5Y7DOKnPf6AC4aTMkD6c9FsA31MONZ3IDmIdEpbubpURWaGsr8tDj9ouFCkJK5FW2N2HE8IvPtuVbRXX9mtvAzk0j2BeMIrjGCGgzdi34+9mwV0VMKmomlU2cOBGQ3EUPVvSaHzRokFQmEt26uMKNGO2e8jbWZjrL+vTygOMHxnFZhgxGaCPp6+qiIJ5++7m/6F7a//htH/hROgLutaw+7jNPtQbc1K265wn1hw8cOMC7e+mll9S7rZNjDLR28eJFWLVqFRw5cgR8fHxg6tSp0KdPnzoZryqdPjKiP+CmzTq0aQn//vSJtiIYObAnDOoVCknMW7e0tAw8PVzAopzE1dZm9TfzVfrp0j5Io++5Lz6hUkccIDmMGrJIKqemZzKPimx2vZuDE5MXsLGyENXu2z164s5+agLMenwce+hzm3lL5/Ivxy5OdmDLCPBGFazcmP3QenhYXxgzpDckp6ZDFvO0Rs1dBztbre3Qm1fb+RNDIJmszf73+tPasnneVOYljBsZIUAIEAKEACFQnwg092kPl5KP1cqQqMFbl9az9xAYyggwYXiMhuRcdFQ4J1zxVf+EuBjutSjq1cYeSTNHR1f+yrvoD4N34Yaeud4+/lwaAgNToUcsWmJiLN+L/w4f3MECwql6HSNpJwzTSJyh9qzcOnfR/C7cuWs/rdqn8nbyNHogy8dqF9JVCjwn6rUKCuFrQekCtARGXmszL28/Xk+UeTT1UmlXUK6RLMr12SPpqm5dewyEBOa5K+xmUjw/B+JY7IeNYM4oTi7ikH3nLlU5/xjU7t23VL+DqZPQKTcTOZlZW9eUwBAnhcSoPlq0Xdg5Vbeu3frDBZlGdmpKEienE+NjpaoYoK+ZZ3PpGBOon4xe5kILF6UaUG9Xl2OKSmN2gNe0u7unSjaOIX9ggd7e4mGLSkU6IATuBQLs7Qb9mJ57Mbn7aEwMgubUVvGqTH0ty8LFCnBraIbewui1e78ZBjvTFvCsIazTzq4xdGzvXOWpmJmZwfvvvw+LFy+G06dPayV4q9yprIGpqRGgp3F9WlXO04kTJyAoKAhQmsHVtX6uWZTCQG1x1D6+fv0633r37l2fENXJWOaNzcDPy6NO+tbWqTHz7q9Qf+YAAEAASURBVHB3duSbtvL7Pa+xqQk0dXOCpuBU5aUidk3dnFnbqn9mVHkwakAIEAKEACFACDQABFA6rrZs8pTna9QVkkpNLJQPpU2MTMHFzZ15l/pxrdvmfoEq/SNp9dN3C6tEdKp0UMWDV+Z8xF99v5EUp9ISyTwkvnDDQGsicNfNG/Eq9ZAQExIIKgWyg+ysTEhLS5HlMM9oe83vNFaM1KuKpaUlq1S3YYS1uqHzm7WVrUSOCq9W9Xo2toq3JEU+koZ43lB/t7pmryVonPocU1Nvau2+ZUAblfzUVFWCHM+PLu9f0TDrdiZP1sU1haT96t++hZnPviWG07q303KeHZ1Uf4ehpjNaJpPGEKaLZFXHNDMjHRwc9fuOK78PxTiopysneEU+7QmBhoDAHfTgbQgToTkQAoRAw0SgX79+gNuDaJMnTwbc6tOaNGkCc+bM4Rvqi+Xk5DB9YvP6nAKNRQgQAoQAIUAIEAKEwAOFgJ9PCFxofAS06fBWBYic/FK4U5UGWuqit+KUJ/QjiZG0W/TxGyr6vCgdEMiCrHl4eHG5BpR7qMwKZIHNRN0C5nCgzZDgmvv+EqZtGg0Xz5/kQdBQVgLnIgzTGLjriyV/gK2NIui4KHN1awrubG4VGZKsduyVeLnl5WVrBKsqLqma5ISlpULWQvRbokOyorBIuXZdxKGQEBN91cY+P0+THJZ7HOMY6niKca2tVclqGzXc0cO1RUtVEli0FXs7dm5r65rCPvFhhfy6uHDuOLtmTlSoA11QkCemI+2L1K5P9MxFkxPqJcXFUn15Il/Nkxq90PU1I7neoL6NqB4hcA8RMGIymyYYgMUQZRruIW40NCFACBACdY4AaozZ2tavh3OdL4oGIAQIAUKAECAECAFCoIEh0JwRvCaNjaFYS6C1qkw1mxG8oR27VqVJjeomJlxXIXdbMWL3uZfe5cQadpykJo8gBjMxMRNJvo+7HqVyjAHO5MScKERv1sT46/wQ43UMGf4I14xFOYDLF0/DH6uWqniwxly7Ah6ePqI534d26cskJh5RyStmsgy5Ms9X9LB0c2umUgfJZPVX8CPCzqvUqewAyWk56RgRrgyIJdqivIWcVFUfU9Sriz3qDqtLUYSHnVUZys1DVTJAFKIkndyQmEZZBPScRUNi/elZb8qrsHN8B25nKoOwoSZyda8plY7LD15942OIvX4F/vlrhVSMAfcWLPxZkvCQCsoTEeHnoWPnnirZV65cUjl2c1NggA8xhPwCeifn5mSDlbWSxEc5hmtXw6S2SHLLNXSlgjpKEM9WR8BSt7oRYPc0e/ik+mGguzaVEAKEACFACBAChAAhQAgQAoQAIUAIEAL3DwL+vu0hMLgzNDIzqtGimjEt3/okeFFXVW5BbTtI5C7mn9IRIEzo44q2GMRN/tr55vWrRJHK/kZiHCz/8TO+/fjdJ3DpwklejgGxQjp0hZ69FHrAopE5ezPN1dVDhVTbtWMdpKeliiqcgPxkwavw7ttP823xond4WcvAtlIdTGC75OREKS/mWiTTZT0uHeubQJ1gYShFcPTQbnHIA2b98ftS6RgT6vNQKazlAwwAJz8PMdERcPb0EZVRXNWIb5VCtQM//9ZSTkx0JIRdViWL//j9Owl3xB89iKt7TUkDlSeQSPVtHgB9+4/gur6iHMnz1b9/Kw419ieO/ce9w0UBnqPdO/4Vh3zv27wl37cMbKeS/9efPzKN3btS3o5t/6jIgfi3CJLK6iMRq/bgpD7GpDEecASYgxhJNDzg1wAtnxAgBAgBQoAQIAQIAUKAECAECIEHGYGhA56CiLDTUJKhfNU7oHVTGDnuf9Cy1VAJGjwGeBeuhKtqnN7MKIL3Zr8o1auPhLuaN+fWTWuYtJcl25pAJPOEPHxol8o0imWSBM7O7jwwm6jw+cI3ORFXUlLMAjQrvTpFOe5R+kFuK5d/Cejx6skCjqG38O6d6+XF4OPbghPOEyfPglW/fsPLkOB7752Z4MKIX0dHF7gSeUnFW3jkmMd4PSdnNwhu30UKroWeqB/Nn83m0I4RsXfgSoSm963K4DoOpjz+PCyY/5JUupoRuodY4Dcc7+qVyyoe0YhRj54Dpbr1kcDzgJ7YSFRGqq2xb/+HAMl0fe3Rx2bB/LnPStW/+/pDQC9WP79WzPP1sgr52Tm0N6AHb02uKWkgWQK1iafPfA0+/eh1Kff82WPs4cApaMseqqgbeo5j3YBWweiJqHF9tAsO5ecK2w0aMg7279sieY0jGR4bE8WJ5RtM+1mu/4ye2xMefVp9uFo9trRUjX/0xadvcbz7Dxil4bVeqwNTZ4SAQACDrJHruECD9oQAIUAIPFgIGLson+w/WCun1dYmAmWp4bXZXY37amjzqfGCqANCgBC45wjQ38t7fgrqfALoxTti+AzYsI55ARYo9GQVJO67bGzcdFvy7SIYMWYmdGZerPVpTZv5MK1aR4mQxeBlgkjVNo+c7NtS9uCh45gnpaq3qjygmPz1ftEI9X3Hjp8G6//5hWchGbd542pRrLIf98iTkjdxtx4DuPbqxXKPX6yIxDBucgtu35VJFPSSsh5+5CmIvhouEXg4Xvjlc1J5dRKo/ytfA/aBGsK4yQ3X//SzbzApy5p5dcv7rCwt5CNQpkDdmjDd2VFjp6pnV3iMBPX4idNVJBIwCJz8PGAHDiy42/hHZ/C+anJN6ZqMl7c/dOsxEI4d2SNVWbn8C/jo0+XSsXpCG4GPGIx/9CmpKj9Hs96Cr798T3pIgFIN2oLJTZ76HNjZO0pt6yKBpLS6xzXiXVlQwbqYC/X5YCJQhhIND+bSadWEACFACBAC1UWgKI3pXF29ApnnTkNZQUF1uzGYdoXJN+H2+TOQnxD3QKzXYE4MTZQQIAQIAUKAEKhFBIYNmsFItJnQyNxY6hVJXm0bVigovgPxaYUwcswz8MxTs6U2VUkYm5hWpbpKXWNjE3h5zgJAUk7dkAx75rm3uQehKLseEymS0L3XIBg97nHpWCSQxH3p1Q9B/nq/KMP9wMFj4Inpr6i8di8vt7VxgEmMTBswaLQ8G555/h3eDuelbjjmyNFTmEasKqHq6OQC73/4HQsOpvlqvRfzGn72xXkqXemLJa7hzbmfcy9ilQ7KDzp27gWfLFrJcPWVijF4UW0b6hjL7YWX39d6LgMZcfjBRz8C4iTMxFRVR1nkq+/7Me/RitaKQf3emvcliGByNbmmsK0uGz9husr80ZN73d+/aFSf/Nhz3HNbvQDlHuYv+IF5fbuqFOG1gURxUJsOKvniAK+Tdz/8lhHMA0SWxt5Edg9WtAaNhmoZPXoOgv4DR6lIkqhVoUNCoE4RwBg+jZgHr1KopE6Ha1idX7igeK0jODi4YU2MzaasuExjTkYm7GSpiadrVKIMQuAeIJAXdx3OPvckHzlo/kJw6Fy/3guVLfmOlqiqjdjrTY3YB6Auu1taAnfvqH40NjJm92AFX1x09XU/5WddPAeX578F2WHKYAc91u8Cm9YVR+U1dAyiv1sMV5cskpbhNuQhaPvxl2DCXnOrbWvo95O29ZLHrDZUKK+hIYCf6BgISN1MK3ndtURLG/wBSF/J1JG8v4/Jg9cwzq/0+y5IlQSq6uwjr56BTduWQ+TFk3C37C6Yqn4lhKLSO5Bfcgc8mdfv1MnPQ3v22vi9NtQqTUtNBiQ5nZxcwdbOQa9A6ijbgN6reSywGhLFKFWgr2GAroz0VC5rYMmCetnbOwGSspVZXl4u3EiK49VsbOzA2cVN8vbV1RY/vxPio1kgvCJA0q6Jherr8LraVZaP0g83b8RBYWEB92R1ZNjd6xhFSH4msQB6RezcoPer+qv/la1JV7lYa0F+Hif+XVw8wExGGqu3q+41pd5PRccnjx+AX1cslqrgw4PQrn0Ar8vE+BgwYn+jmzGiXR9pCgwadyuVOWVkpvFga64sGJs+7aTBaymB9Fo+w7iIXVM4vpW1Lbu+df/urKVhqRtCANgNY5gEL968UVFRTGg9mbngZzCdIXMm4O4KgYGB7APQUq9TK30BaGAEb2lhCfwW8rXGGgZ8Oxq8B/pr5N+vGSdOpcLYiUwPydEcLp6acL8u875ZV8Jfq+Dye2+AmaMT9Nq8j+91LS43OgqKUlPA1NYObIJUAyhgG/SSLEiIByMWmMG+fSdd3eiVj96lu0L8NOp2WLoCXAcq9dTUKxyfNBoyz55SyfaZNhNavT1fJc9QD+6WlcKO1l7Q+ec/walnH72XcXBIT8iLjQETpjHlMWocO8/O4DVpKjTW48u83oM0wIoZp45D2qH/IDcmGlJ2b+czbPHia+D/wmt6zzY7/DKU3M6Exs4uYNUioMJ2VbmfKuyongrrmuBdt30/rP53J/Tp1gFmT3+knlZFw1QVgb+3/gf7jpzhzb764GVobKrw5Hn/i+WQmn4bAv28YPZTqn/PI6PjoIj9uHZzdgRXJ3uNIa/F34DcvHxwtLeFZm7OGuVVybgQEQ0ffPmzRpOVi+eBrZX2745FxSUw6fn3NNq8+fxU6BJi2BI3SclpkJapfF1bLNLczAwC2LmqqZWWlsGEZxXedUs+fAU83SsnfWo6pmgfk3ATcnLzwN7WBrw8tI97Pjwafly1gTd5mV2XYs1rNu2BA8cVr0d/ywI/GZf/KCeCV6DbsPfS77saErxilRFRZyAi8jR7/fsu/LPuB2gV2AmKGbHbKqAjtG3TGYLbhoqqtCcECIFqIKCL4K1GV9SEEHjgEbjLBBoMToP32LFjsHnzZq1eGPhkZPjw4dC7d2+DPbnoVejeVfnF+ubxeMVa6tDROm73VYjZGgmO7MtQu6cbxheVUvZkHK2wUNObWQEI/d+QEPCc+BgnZmN+WgoX3ngJOv20SqeHbMzP30PSv3+Bfacu0HX1eo1l3Ni0Dq5+/TkniQccvahRXpWMRuzVJ8euPaUm6ccPK9KV3E9IPBuZNeZ1sy6dh1LmacCiHUj93C+Ju0zLTF8rTk/j5C7W7/jDL+AQ2l3fpgZfD73ShWd6xCfzIfaXZZB+4hgjePVfWuSnHwJefx6jHobgRYpAI7paV+V+0tXH/ZRfVqa4TtHzhKzhIpCdkwspt8oD88g+L5HcxXxHO02P90+/XwVZ2bnw6OiBMGGE5uuTK9dshvCrsTCgZyd4/omHa7R4K0sLaBuoeOBXUFgE0bGJiv5kc1UfwIi56Yo2WHYp8lqlbdT7aKjHW/cdgR3/aUagRzL9p8/eqvG074LybyY6ZtSn/bp2Kz9Xfbq213ioIOZRUFgoXa8FRcqgWng9iuuYv8lDTlcCsgdy36plR8ANbfyYWQ8kBrRoQoAQIAQIAcNBQOFeYTjzhZiYGIncdXd3Bzc3N0hKSoLU1FT2dPUObNmyBWxsbCAkJMSAVqWcqrGZMQz7Remh9Peg5ZCTkKWsUAep29cz4PqOKCgr0p/sqYNpUJcGjkDLV9+GgsQEuLl9E1xf/h00n1kF9quO1m7EPJFCf10r9X5gYDdOREsZOhKt5y2QSsKYJEH8n79Jx4aeKGVi/7f27+XLSDtykL3JYQpW/i2hsUvFrzMWpiRLS7du2UpKP2gJIUdReFM1enZt49AQ76faXiP1RwjUJwJ+Xh7wwWsz+JBpmVkw842FlQ6P8g2iDVZ+9p3PJfKv0sYNvAJ6TQf6e0uzvJmazsl2KYMShAAhQAgQAoQAIUAIEAIGhYDJvdaYqSpa1tbW0KtXL+jXrx8TA1dq79y6dQsWLVJoJG7YsMFgCd6q4kH1CYGGggB6n7f9ZDE4duvJtGqNG8q0aB7lCKAH7rVl33LvUwEKeqLihubSfxB0/P5XUaS5l3m5GVWg16XZ8P7KMTZvwhdUyrS16tLofqpLdKlvQoAQGDWoJ+AmbO2WvbBm4x5xSHtCgBAgBAgBQqDOEfBv0ZoH3xMD4TEZIUAIVB8Bg5NoGDVqlNbVOjs7cw3eyMhIJmqdDwVMe7MJ0/B80Cw7LhPSI27B7eg0MLe3AIcAJ3Bp35QRbo1UoMiMSoPCjHyel309k+/z0/JAkoQor+0c7A4mTaof3RW7iY3LgcQbeeDq3ASaNbWEk6dT4cy5NHB2MmdBCZygTZBD+Wi6d0ms/YlTKRBzPRt8fWxgYL9mYGurPXpobl4JnL+YzgOgdO/qBqUsOMLFS+lw9LjCAzG4rSP07O7OBPSV42VnF8PxkykQn5ALaemF4OFuCS1b2PK5WVnqXn8R83retz8JYuNz4PbtYhbZszH4eFlDNzautZXudtdjs+FyeCZEXb3NBP3NoXWgPXTq4AzGaudJOUPDSBmzew5fL69LQ13drEvnICfqCtM0zeB6pnYhncDcVf+gEHU5v9yrVyA74jL3FG7MNGqtAlqBXbv295b0ZuTs2ZeehszTJ7j0RdOxE7iXtdfkaUxP1xJubP4XithDstqwy2EZcJvdTy2a24CdXWO4wO49vOdNWKBIvMZx02YlTNPu1JlUiL6WDSmp+WBtbQYt/W0hqLUDuLqofpbn55fC2QssgIKlCfucN4FdexLY50kTGDLQE0zNjGDn7gT+udMl1BV6dtN+XeB9fv5iGkReuQ34UdCK3YOhnZk+bgX3u7Z512VeVe+nGzduQEJCgjSlTp06sc+UhvWwBV+Lx9fjPT0wiAlA2JVYiL+RDE2Zvip6Ezo72Enz15bA2IcJSckQER3LNDbzwcfTHTq0DZB0MtXboKfmzZQ09nlsCT7N3FjAkhIIj7oOUdfjwcqiCbRt5c80OlW9129l3AbUhk3PyOJz9XBzYvqvLuyz3V3nODjubSZRcCEsGm6lZ0IJ0x+1s7UCr6ZuENjci50H7e9543pi4hIhLikFUtMy2d9Je/D3aaYxJ/V10bECgSyGOV5TceyaaMT+eTdzh1bsOmpirpDYuZc4lbHP3egY9lnE5paVncM0hh2hubdHvWrR1vb6a7KmvPxCiLwWy85XErs3rKFdKz9wZ17E6ob6uXlMd7kpu+esrJrANXZ+8X7HwHZ4LwmtXPV2dEwIEAKEACFgeAg4sN9KoY59DG/iNGNCoIEiYHASDRXh6OPjA0jwotW33ldF86qPsrLiMji75Ahc+lk1MBSO3bSnD/T5dBiYO1pIUznD6sbvjZaOMZF2KRm2T/tbJW/0v1PBsbX2ABUqFSs4+HXVFfjx53AYMsgTUlIKOKkir/78rDbw9uvtWXRJGeMqq7Bxcyw8O/ugLAfA3c0C1q0ZwslUlQJ2EHU1CyZM2cWzzx0bD4NGbOGkrbze3Dc6AI6LtuLXSJj3wUl5sZTGcVYu6wft2mj+CIm4kgkTH9ut0bdofOXiJA2St5idp8++PA/fLQsT1aR9394e8PUXPXlgOSmTEioIZF08B+dffU6rzELw59+Cx8hxKvXr8+AO0weN+vITuL7iB41hnXr2heDPvubkqkZhPWTkXrvKyV0cqv2SZWDfoRMneNFr17lXP2j5yluQd71cW1LHfMpYNFt97N0PT7KHManw9pz2sH1ngsb9/trsYMBNbqfP3oJR4xXBy+T5Iv3Nlz3h4THNxSHEsQcq4h6XMlkipJ0TJ30PH1PKSSxb2gdGDFO+hoz1/1kfAy+9dljelKe92cOZZd/2YYFTKn/odIfpN3JdZvmTIo0e6zdj/fr18OWXX0qDnjlzhpHsFROmUuV6Siz9dR3EJSbDSOY5uOfQKU6gyoee8+wU6NZB8dkszxfpn/7YCDv3HxeHfB8c1ALeeeFxwNfp1e3IqYvw69/bICSoJYwe0ktrkK1P3npWIo0W/bAajp25rN4NP0Yt1ldnPgq21sq3h0TFgyfOw1fL/xKHKnskrj9+c5ZKHh5kZuXANyv/gfNhURplY4b2gcmjB7EHIw2LoNeY6D3MOHD8HCz5WSnBI6biykjD12dNBpRkuFeGZD/O7ULYVY0pjB2G53awTtJfo0EDyajJmuLZA4x3Fv6gcb/PfekJ6Ng2UGWFK/7cxHWXp4wbAifOhim1kstrTRw1ACaOHKjShg4IAUKAECAECAFCgBB40BHAn6UGJ9FQ0UmLjY3lxSjdYMm80h4k2//aVsBgaWgtx7cF53ZuUHArDy6tOA1Jh2Nh74ubYPiqiSzwlYJE9R/dGlyYdy5a0tE47rlr7WkLAY+043niP0tXzR+yoqyqe/SqQ5s0wR/aMS/aY8dTYNPWWFj6w2Vwd7WA6U+ofsnHuuiNi+QueuH17uUBu/cmci+/m8n58PXSS/Dlp92xmk6b+cJBTsAieYpesukZhbB1ezwUyvSGb6YoPJn7920KHUKcoamHJfO2KYI//rrKyeKho7bC8QPjwMtTFYsPPjrN+0ZS6KFhzKukhR3cSiuEw0dvwv6DN+AO8xxWt2dnH2KkVzzPRhxwvJTUAvjhpzDe5qlZ+2H9X0N0kt3q/Wk73rLgKSjKy9ZWpJHnGdwDQh99WSO/PjLKCvK1ErXFGeVBetQmkR12CY4+8hDPtfD0Bs9HpzLvUytI3b+HacrugQuvvwBm9o7g1PPePAWO/uZzidx1HzYK7Dt3gYKEeLi+8kdIO7wfzjz3JHT7a7PaqurnsCBRcc3haHbBHTQGRUkN1OGtyDJPKUk11DauzD5ZdI5XwQcpJcV3+P2E9/MXSy7Aw2ObqzycQQ96NPSiHcDuQx9va+YBeYd7x+M9/+Krhxl5ZwSjRvjwevL/0Evf388GflsdJZHJTz4eCOfOp/Hjtf9cUyF4V/5+Bea+f4J30bunO3vw5AX44OXPtYr7/eFJO+HIf2P5GwbycUTatJwwxcB7OdFXwLqF5ueWqEt73Qhs3q0g2B9hgbVsrC3hwLGznMhZ9P1qWPTui1rJuaOnL/EOMeCWs6Md7D54CtKZhy6SaFiGAZV0WcKNFPjsu1W8uEenduDCPGWTmeYokrnFsuBt6EWL1qdbB/Bu6srndosFCdu06xAP2jT30x9hyf9eBWMZsY+eiT+u2sDboXdhB0ZYoSdyanoGHDl1SYPUwoqFRcXw6odfc81T9DYdPqA78/B0gJj4JB74asOOA2DK7stJYwbxfqvzX8btHPjl7616Nx3Uq7NKQDG9G5ZXNDPT/taKeWNFfpMm5jq7RG/slLQMjXL0uNZm2xnJ/9PqjbwICf7QkNZQUlIKew+fBjzX7y1aBks/fh3stJDx2vqrzTz8y//x179KxOTowb3Y9ebAvNVj+HW6fvsBMDGq2bmtzfnq01dN17T4pzXg4eoE+OAinj3gOXL6Ih92+Z9b+MMXYybxpG6r/93Js5AQL2Ue8eKB0F+b9rJ7vQO4MUxrYibMI1iYiczDXlzHeF8amoydWA/tCQFCgBAgBAgBQuBBRKARKL/dGPj6kdwV3rv4WuqDZDcYQSvI3UE/jAXPvs2l5fsOD4B1w1ZCytkkuL79CjR/SEFG+AxuIdXBSMcozWDv7wTtZoZK+XWRkHvOPjElAOzZK9y/rr4CX317EaZObgmmpppf8keP9IGli3tx0vMFRhZhXfSCXfN3NHyxsLuK1IL6nPGV77WrBnFJBlE2f25nuHFTqZ85lHkWT3m0hQrhhHUffcQfAoPX8Gbo8ffqS0ry++LldDh4+CYvQ+9C+Wvnz80Mgmsx2WCpJtFw6MhNidz97ef+XGaCd8D+G82Iq14DN3DyevPWOMA1V9diTu5m5HKpfs0Z4X+vCF4kbDHomV7GXnUNXzCPV3UI7Q6dlv0O+Po6mtekx+HiWy9D0vq1EP6/udBr24F6l0NAUvraj9/w+TR/+nkIeH0uT+N/Dl26w5lZT8Dt82cY0XvgnhDQFl4+0nxublkPHqMflo71SSCZeXOHgpy279BZb3z3bhvJSVsc45UX20Hnnuv4Q5vdexLh6emtpKFbsocjm/4ZpnIfYSF+Rox+ZAe/L1b+HqmV4P1teX+wsDCBiMjbvN7E8X7w0fxQfg/iPYXSK8LwAc8nn53lh0g8vzOng/T58Tj7/Ok/bDP3Dv5iyXlY+L+uopnK3srXXzq+sXEdBLz2DkidSCWU0AcBuefsQEbazvvsR7gWlwSbGZn68oyJWrt45rExMKRPF1728EP9YcGSlXoRvEgEI8H05fsvcSJVdJ6UnAYWTZSv8z86eiAE+vmApYUqGYleuB98+TPcYHIPEUzioU2A8u/sf0fPcBIXCaF3X54OFjJ5ACSwbyTfEsNJ+w07D0rk7pfvz2Zzsi8v6wR+3s1g6S//wN9b90F/houyTGquVyKfeZkfPnlBr7pYqR2Tq2ird23NilPHDQXc1G0xW19ltnXvUcBNH8vKzYNV63bwqkj+PcbGFO//4LXx8vwlPBDaX0xPFq+X+rbzl6MkclfuoTqsb1f4zWkHIHmP5/ahgT3Axkr5ZlV9z7Mq49V0TehV/em858HSXHFfDe3fDd5l93vKrXSIZZIMft5NtU4Hrx1vJq2CNoHdSzPfXMjvtdMXImAEw68m1jk4EP796RONLp6c8BDgRkYIEAKEACFACBAChIChIXBfELzFxcXw22+/cezxddQhQ4YY2nmo0XzDV5/n7X2HBaiQu5hp6+sA3oNacAI48eB1ieCt0YA1aPzE1ACV1s/MaM0JXqGH2bmjphzES8+2VfFoHT7EmxO82FFWVhHX+VTpVHaApBLq7coNtXvl+r0d22vXBLVhGqAjh3vD5m1xkJCYI++CexOKDG2ktB/TH1W3Fb9F8qxRD/mokLuYifWHDfHiBPDe/Yk1IngHzv4cSosK1YfXemzvoSQptFao40z0wFU3JBPVLTsiDDLPnuLZQe99JJG7op7vtJmc4M2LjYH8+Fiw9PUTRfWyTz96SBrHd/osKY0Jl36DwJrp8OZciYCUPdvvDcHr0xyQGM84eRQuvv0KXC8PrJYfex3udOkB2jxyEcerXy+CkpwcQO9dPC+4jqD5C1XWp+sA7x30yBWG99yA/k0BJVduJisfsGA5anPjps3GjfHlxC0+NFE3J0dzTu5ivreXFa+HGt1oHu4K4gS9hjE+HDpc4th4jO3eeDVEhZdFLd+ZT7Xm3r3bdsTrJHgbu7hCu0+XQPiHcyHmp6WQsns7x8WMaYgFvf8xH1vbf8ZM7xXNuJzg0FanpnmOjo7g6+srddPQ9HelibFEECNI5VqajZn35zBG+nzLJAtQ7uDF6Y9o6N0igTqwZ2epG/SiRTkH9OBNZbq3ldnTU0arkLtYvynT15Wb+uviogwJXRwf9YPTmDav3IxlMgrqmCPxiPrCckNvyLWb9/KsJx4ZrkHg9u4SDCvWbOZjXY68Bq6M5K2OOdrZwCtPP6p3U3/fZnrXrYuKiK+6Id7qdvjkRY6NrY0VlzoQ5C7Ww+to1OCe3Lv3+Lmwe0LwnjgfzqeMpKX69TSazQ0JXrSLEdHQs7PywTHPbKD/1XRNeE4EuYtLDGrhI91P6Gnu56258O6d2krkLpbiQ5eO7QL5Qwt8YFORmTdWvGUivHErqktlhAAhQAgQAoQAIUAI3A8IoEytwRO8uIiVK1dCbm4uIwGN4Mknn2xwQWXq+mLJjFJ4B6GHblZMhsZwOYmKL8JpYUpPNo1K9ZCB5K16ACN8FRvzkHS5cYNJJXTUnIg6WerEgrMJw2BOGMhJl41gJJM+hjIJKMkQyXR1ExLzIL9A8VoonxPr4HaW4hVy0RcSV819bXjQt6nT98K0qYHQhQVoassCxtnYaH99HYM5oaEsxdVrmj9OEliANzT0Dq6JtR4woSbN662tfacu0HX1eo3xopd+yYjFz1XykbgVdv6150RS6z43OqreCd6CG4l8LkiAmjk4aszLsVsvTvDmM8mGe2GN2GdjyOLvIWz+W5yQRLIZDb2icWs2fhLX4W3spCSiSm5nsuBryvODa2vx4us8qJ0+awhoaa9RzdVZQbpm3tYkbQoKSmHdhhgekC0hMRdEnZwcxb2ID4HUTX6voRcvWhNzxd7MzFiqjn1j+dXo8s9C1hdKr6jb7fJ54Vi4IRGszVz6D4bC5JsQtXgh4LWJGz6sqIjgNbVTvE5samunrctayXv00UcBN0OwoJZKIlrMtyULoCQM9Wmd7G3FId/7soBq6sHK7GysedntbMXnp0oD2QGSh8HMQ1Ufi2WvkKNXLko4IHF8ByOhMRNkY16B6rXYJSSIE4pYPu/TH6Bfj44QwNbiySQezLToAmfcVj6s+HPjbtj+3zGNaYmxMHhYdQ3X3Cs0uLrN67Udek6jh6a6oVd3+NVYlezEm6n8OIud89cXfKNShge5eQVSOQZh06aZrNGoFjOE1AQ+xFA3nAsGGEQZiTQm/WEoVtM1ebm7aizVicmYIA55+YrzpV7Bi90/6mbPgrOh5bAgbBWZdblntJWl4sFaRXWpjBAgBAgBQoAQIAQIgfsBASPm/KL4JWzAq1mzZg1cu6YIDjRt2jRwd1f11jTgpek19TtMpzInQUkWZlxRkL3aGpcV6fnavrbGtZDn4qz9i7aLSxPIvV4CSTLZBDEckr9yogbzjZmsgLC75T+8xbH6HvV0K7NNW2Jh1ksHNaoJ4hkLimSavaLi+3M7wWtvHuVE0OdfKbyoseyxSS0BpSTkmr2oJ4qBoYRFRGaKpMa+qOiORt6DnpEfd12CQJCTUoZa4k6RJnmoVqXWDwtuJPE+zV21f/4I4lS+jlqfRCUd4hw6fPsz5MfFwq3D/3EPVNEk8Z8/IfW/3dBr636mY6wgIm2C2kL/Q+egJOs28zzeAVFffQpnX3iKkbyvgf8Lr4mmOvcODpoPXkxMFfdumZo+NRKvqH2rTuLK70FtA5mYKD8LBPFnambEqxobK8tKyxT31LUY5WdlRfcgdpCfzz4vHTVHvcvkT048No4T9maOTpzUtQ1qx7zKFeS1ZgtFjqmNgqysS4JX19gNMR+9L9XNqtzLGfPTM7M1CF67cnJH3k5+nuX56mmUZ9DHVvy1BbbsOaJSVd2zFN8akpuDnTVMHjMY/tiwi0tMoMwEGrYbN7wvDO3XVcV7UZBlWAdJStx0GerKkqkiIJe8wIB9FVlhUQkjeCuqUftlyamKB+12Wq5xHM2RPbhAYjM1Q/f3gNqfVc16rOmatBGtZqaKnyBlzFFDm9lYaX5/Ex7yZZV897Ms/yyRf6ZoG4PyCAFCgBAgBAgBQoAQuG8QYE5dBk3wbty4Ec6fVxBrEydOhMDAwPvm3Oi7EBE0Dev3+mQotBgbpG/Teq9XXFJW4ZgYRKm2DWUWKjL02BPkLgZZe+u19hDQ0k7SAsaAULhps0H9m8HJQw/D+k3X4ejxZMAgcuiJvOrPKL5dPjMRHOwVJJeclF78WQ9AndC6st1fvQJFuUoPsYrG8WjTBTqMmVlRlQZRZlT+WjsSagOOXmwQc5JPwqix4jzfUSN+RJ275UGcjC0qJgFF/brcW3j7gFezqZzg7fj9L0y+4C6cZQHgitPTIGbZtxD45nt8+EYsAA3KEeBm1SIAsiMuQ/JOFszxj1/1InhREkFfm/36EU7uYsDCjz8IZd7wrpL0AgYtnPDY7kq70mc883Lv3gkP+8FXi6qn35gTGcHJXZxQq7feB7chIyqdG1bwnjwNXPoMAAsml0EGUMaCJqmb8JTFfHnQI/V61Tm20kPr9CzTThXk7pghfTgx6+hgKwVUe4d550ZGx2kdfvxD/WAgC1KGnr9hTKP37KUr3OMXA0UdZ4HcFs17QWon9+rFQGDuTJ+0Lgy9mv/atEfvrjFIHWoNN3QTr933694RXnxyfIObriAuMTCYNispVZD2Zqam2orvWR5K2eiyGq+pCn8PxByq0UQ05fduh7YBXHdbyqQEIUAIEAKEACFACBAC9zMCKNGAEgcobWBotmvXLjhyROFlM3LkSOjYsaOhLaFK8y1lrxhrMyR4HQKcAT13C27laavSYPISkzTnhz8oYq4ryEgPj/onvw4dVXj/oKfgT0v7AOpwyi02LocfyokHebm5OYuEPcGfb/ga+JbtcYBkFdqOXfEweWILnjZi5wllHdBr8Faa9tcRecVa+C9i3zq9g6wVFeQYBMFrWU6KIQmJHpRIPtbEygoqfr1TtW/Fz0xt2sCiXhOPpjxZkJQgslT2hamK68yimZdKvji4yz6H8ZV/YWZMS9zYQtN7SZTX1r4RIxhcevWDpmMncA1jDASny5DIRIKXn4PSEmhkUjvkREpKPpy/mMaH/XZxT1DXxEbJFGFCS1ccV3XfsoUt7PkvEZLZmNW1whSlx6Bz34F6d4PEOm51aYUsqFZGhlKmx9XVtcFKFqHuprrdZq/TC0Mvx9q0RlIYLt29nr4YwQuRGHp8/FCNisJbFAOTajP02Bw7tA/fcC3rtx+AzbsPc6/eJBZoTWjxursovYmzs/PqjODNZa++7zxwQttUteb5+TQzCILXk73uf+ZiJGRk6fcgU9tiG8meCFXHyxfb6DI3ZwfuoZsuk+KQ1xUazs6O9vJsKV3EvLazZfeCA9NSNq6H7+k5uYrPRW2exzVdk7S4ekrgQ5O6enBST0ugYQgBQoAQIAQIAUKAEKgyAiaGSO4eOnQI9uxReKUMHDgQevXqVeWFG0oDq6a2XIIh9fwN8BvVSuu0ndq4coI3elM4tH0KI9xXze/BzErhfZifpiRStA5Uw0wkN5Nu5IFcNuH0WYWWHnbt7VnP71GyMXNzlT/STGWanTgf9O5Fr1x9DcnhR8b5wd/rrsHhY8lw/GSKRPBiH8FtHTnB+8/6a/Ds00GMeKnaedJ3Hr2eeo8FWdOPRHbwaqlvt/e0npWfgijHSaBcgL5ek+qTbtLUE/IT4iDz3BnwGPWwerHWY3NXN56fceKo1nLMtPBUeL1h36gBbOWvxPUuI0OTd23jbS10BH8rYqTh/n6dpf5bvT0ffFjguNqyMkb8GbHXYXUR42UF5ddLBSSCINlxTncYAWFcSwRvbp7y4ZWF2gMWHGvtumjc1YoFBigIlYOHb2p8Fuk7wJ0Sxev56E0uZBf0bVvX9fDv4uzZs6VhNmzYAG3btpWOG1Li2NnLMJWRqPJPwXOXr0hTtGFapfVtBQUKeRcRoEk+/uUrMZIGrzxfV9qOzX/y2CGc4MU66PkrCF4MFoUSFSjNcOjkBZVgc7r6q04+6pU+89gYvZsagvcuLsa7mStfEwbXu5VxG5yZlmtVzVb2+v+12CSNQHe6+nNxtIOUW+lwJSYO+nQN0VrNvVwO5Di7xmdMGqlCzsYzaQZsj+bqpJ3gPcWCtH257E+p70VzXwA/H8VDRCmzmomk5DRAAhevQXVLSrnFs5zYGtWtpmtS74+OCQFCgBAgBAgBQoAQIARqFwF8M9cI/zMkO336NGzevJlPOSQkBHr06AF5eXkaG3om3w/m2MqZL+P6zii4eTxe65LazQzl+bej0+HkogNQVqgkTLAg63oGnPz0ANw8oZ2stPKw4e3TLiVDwv4YRt5of62QV6rhfx9+fBpQjxYNNS4//uwsT7dt4wBtWICy+jYM8oaG0grbmPetsDw2tznvHOf5Ik++R4/DpT9cBgzOJjfU2UVyFy2kndJLC49ffLYN7iDqahb875MzUFioivO1mGxAfI6Ut+eVq/Ff+9EzoPOEF/Xa/LoOqcYI9d/EwsuHBwLDkSM+fh+yLp5TmQRKI9zcupEHEVMpUDuwaaWQMEneuQXSjx9WK9V+iMHF0JC8TVy3ht0fyocCooVTz76AhB9axCfzQSJM2fHVb77gXq9Y1mzcRNzVu6UfPQgHh/SChLWroSxf+SAH9YqRME/eofhMdR1Q/9dDs6ZKT+VVa66C0OfFP03fsnvsxCnlQ6CaAjfqIW8eHBH7eWXOEUDvYbllZhbBshXhsOLXSHl2jdMl2VmwPcBD2mrc4X3QAZJc2/Yq3nbA5dxMTZPkEcYO6wMyqfV6W63Q6T16+hILrnZbGvcmm+sPv6+XjtUTB46fhwPHz0FRsepnAxJ1wny9VQm6aY88xIu27TvK2p4X1fgev5WFXY2Fr5b/xQJQqQZ0U6lYyYFlE3MY0qeL3lszN8X3jUq6vefF3Tu1lV69/3blP6DuDY4BuDbvOQxb9x3TOVcTE2NGFCse3m3ffwyQ+NTHfL08eLVjTHbjUuQ1rU0G9OzE85HAX7t5n1QHr4+Va7fyY/RQD2mtfHApVarjxMXIaHjh3S/g+Lkw9lmr/J6M1xsS5mh+XqrXKuY15DXh/OSG98y4p9+WNnkZpQkBQoAQIAQIAUKAELhfEcDA6iZI8MpfVWvoixWyDDhP1N8VGrzq8545cyb4+/urZxvccdATHeHySkYGpufD9ml/g6mlGRgzHclWk4Kh/Qvd+XpsvO2h85zecGrRQQj75Qxc2xwBzm3d+HlFcjcrNpPXcwnRHgDKvasnWLpZQ15yDuyetZ6PYd3Mlrfp99UIsPWtPeJ187Y4uHg5A/BV6XPn06SgSm++2v6enJuO7Z34XJB0RS3eL7+5AC387BiphBGuC8HJ0Vyao3yCqYzY/YiR07ghkevrYw3XY3OkV82b+9rA1MlKL05s6+tjA/Pe6ggLFp7hJNK/G2N420ZMIQXJXSFV0aG9YfzIluNRH+mWr7wFaYf3cymDo4wcsW0bAuiRW5SWCjkRYYASCnIvU21zQq/Y6yt/5ITryScmgImlFaC+r9ekJ3jwMG1tnJluKpK8GNzt0juv8g3JXOsWgRD661rexMjMjOuxXpjzIp/j/gFdwC64PeTHKzx6sZLnhCkg90SWj3X3rvKHtjy/NtNIUF9+dw7fzN0UnwVnn58uDeHcuz/4PP6UdKyeMG6iDJKIWMuP1etW5bhxY2N4fEpL+G11FKz8LRI2b42F7l3d4HJ4Br8ndN2DVRlD1MWAjZ991BXGT97FH8S07/YPH8verjHEJ+bAJfbZhPbk44Giica+NDeX5xlVRT+znh6klpZre2pMuoFm/LxmCyc3rSwt4HxYFJ8lBiZ7qH+PezLjnl2C4c+Nu/nYs976FIICmkNjM1Oup4uZOLeCQoWXr3yC1xNuwKZdh2DJz2t5GydG3kVei5c8NQf07AzNPVX//vbqEgKHT13gUgNLfv4L/t6yFzybugIGVcMgbSLw2hOPDAdL0PS2lI//oKVNTUzg2anj4N3Pl3GSdcacjznuNkxnOTUtk+OHmAzvr/iOpAufR0cPgk+X/g5hzDv7RUZ6isB/Lz35CLRvo/r3W/QxclAPfq7x/Lz/xXJ+TaAm8NC+XWDiSIVki6e7CyNEO8Pew6f4eUVPXpQ4iLqeIJ3Xx8YNBSSZtVldOyjg3D/7bhUf2p/JcuDvABEYEDOH9u2qMa2arkmjwzrMMDTHlTqEgromBAgBQoAQIAQIgQcIgXL5XcYuGZDpS0brW6+hLx2J17FbpkGz3r6ceC3JK+ZkL+7lhtIMw355BGx97Hk5euLG/3eNk7tICrcYEwQOrVzkTaS0ibkpDF81Edo82QnMHS0A+0ZNX9zKilW9TKVG1UhgYKOnprUC9HLdvTeRE6eofbtqxQDAAGdyQ81aXYaEqDBt57mCt8xFM2mPhM8vy/qzoE4KbJDo3bojjnvXfjQ/FJ6fpfC6NVELAOfZzEpqg968GGhN6Ij27ObG9XxNTWUTLR/xuZlBsHb1YO5FiAQy6oEiFkjuIhaIUZvWtUeoSwttQAl8soTWyEj7j1v2ZIKXqxNojZ2code2A+D92JO8POvSee55mnn6BCd3bYLags8TM3iZrv+Q2Oy15T9AMhPJXSQqUVO2jO11WSNjY+iy6l/uQSyIUWxTnKl4zVa0Q8mHTj/+xj15sTx1324u14DlAa/PhaAPPhVVNfZIHsvNsVsv+WGN0859+kPob38zfJ4G+w6doTRHqX/alHkVd/9nG3T6aVWFuroYbE1YxkndnnHGxorzayTTuBTtxP2qLk/y7tuduI411sP7YhMjefGewGCEK37sJ5qLS4NdPIosMRYeiT4rGhfrIXl8dP9Y6N1TQbhhgES85wW5i59FQwd5YlVNY0RI+rGDPF8XWa/ZiOVowUJrvRpmRkQoryNHR8cG/ZBz+sQR0LqFD0THJkrkrqeHK3z+3ovgYKd4s0LAIfRzxV7k476R/A+CvKA8La65iv6miGao2fneK0+B0P9F4g+DpeHxR28+A61b+vKqRmpjIkmGc0fDNujNK17DR6JPm54v/ol7+4UnYOaU0ZwkvJGSBifOhvHxkIDDMUcP7gUWzAv3fjYT9vmKpus8ir8X0k1fDkZQgC989/EcCA5SeMEi7uhVK4hK1FHuHKJd1qq8C+gS0hrefH6qJJGBuONWWqb7e4+jnS189cErgP0Lwh/bFBSqfieb9fhYmDJO8UZEApNlOHUhgveNJPK82U/qlHfAucUmKN4CwjTWb+ah/bsbllfV2rCHFhhMTxjefwIzP+ZljsEArSyVD/NEPdxXdU3y+1XX+cV+1T8epXOu5cucqCsPXIt9yE3c8/I8ShMChAAhQAgQAoQAIXC/I4A/kRuVsfdhDVGHt6Yn58KFC7yL4ODgmnbV4NoXZRdCduxtuMMiODdxsgQrd2umv6mDTKuH2X/w0Wn48edwTtYs/qwHl2aIuJIJdraNAT1f9fnhXdfTRAe7xKRcuHEzH1yczcHH20bjR4e2OaC0Q0JiLtPrLQYMuObhbgmuLtp/HKm3z8oqhpjYbChlkhXOTk24NrE2Uli9HR0DD7RWkJgIhSk3wcTKGszdPcDMvoEQ4+xiwoBpGHANPX0tvLx1at+Kcxn56YdwfcUP/NB92CgI+UqRFuW1vUeZiZ1tvDmpi2S3voZez0LaAj2ozRnp22ruh9yTWt8+KqqH5C4+AGrMHrwEtLSDur4fUCblOrsHs7KLwcHeHJoyuQhLCxONKaKEReL6vyHv2lUu1YEValsnWWPQamQMGTIEoqMVmsULFiyASZMmVaOXqjcpS1VKEVTW+pUPlgAGK3tp+gTo2609YDCym4zcdHFyAEcWTKohWCn725mclgHZuYoAaKhlq49lsbWkZWZDIdPyRZIMtUxRJkEfQ5mBVDYmkluO9jac4MUvaWSVI4BByZLZNZRbUAjoxYuavNp0lCvvqfZrlDG5sOTUdMhi1xJq7jowgriy8yruEZzNM1PHwpDeobU+McQsjcmQZLM3EoxZ0FIXJzuwZbrRlc0NJ1KdNdX6Au5Bh8Yure/BqDRkVRGQft8FKR9KV7UPqk8IEAKEACFACBgkAsamYJBB1gwS7HqcdGMbc3Bup9CWq8dh9R7KghEoHRuYDAF6haBXLm5VMfS6bVUeuKkq7bCura0ZtA9W6LZWte2DXh+DhVl4+/CtwWHBLiYknHHT19KOHJCq+r/4mpSuq4Twgqpq/20//gKiFi+EtKOHAD2os1gH/i+8VmsEL8ox4FZfhg9lWgXaVzpcbkw03Nq/h9dDL26viVPBa8qTlbarzwppaWkSuevm5gYPP/xwfQ5f7bEwGBluDcnw1XmFHm3V5HKQIMOtOoZey+qey9Xp50Fs05gFkBR6ug1t/caMsMfgek1Bv2spOzefPwDBdaAXd//uHepkSYhZUzcnNq+qfwep6prqZAHUKSFACBAChAAhQAgQAoSACgJ3mVyfpquSShU6IAQIAUKAEKhLBIoz0rm+L46BcglVevW/uhOrJsOLmsfBny/lo94tK4WS7GwwtVHodVd3KobQznf6s0waZDr3FpdeH25gEz97VhGwEqf16quvghnThSYjBAgBw0IgIjpWmvCkMYMA9YbJCAFCoOoIXAhLqXojakEIEAKEACFACBgwAqYsRgx9czTgE0hTJwQIAcNHoKwgH7ynTudChL5MI7c+DPWPUXfXwrt5tYdDL+oGI4tR7VXo19CYBeLDrSFb//794dy5c3yKVlbV8yJtyOujuRECDwICKC3x0IAeTJ7GREUr90FYO62RECAECAFCgBAgBAgBQqD6CGCgWZPySGvV74VaEgKVINCdBR0zNmkEwW2r/ipgJV1TMSFg8AigV2zreQvqdx3Mgxc1dMnuHwRMmKefjU3D0LCtCNUBPTpBRlYOC0pWe4GjKhqPyggBQ0IguJU/4EZGCBACNUPAz8+vZh1Qa0KAECAECAFCwMAQwN+DJhRt1sDOmgFOd1D/ZoAbGSFACBAChMCDjcCIgT0ebABo9YQAIUAIEAKEACFACBAChAAhQAjUMgLcg5cI3lpGlbojBAgBQoAQIAQeIAQouvwDdLJpqYQAIUAIEAKEACFACBAChAAh0OAQ4OoMDW5WNCFCgBAgBAgBQoAQIAQIAUKAECAECAFCgBAgBAgBQoAQIAQIgUoRQA9eo0prUQVCgBAgBAgBQoAQIAQIAUKAECAECAFCgBAgBAgBQoAQIAQIgQaHgLGxMZggy2toMg1ZWVkQGxsLKSkpkJOTA+YsurmzszMEBgYaRJCZBncl0IQIAUKAECAECAFCgBAgBAgBQoAQIAQIAUKAECAECAFCwOAQQIkGgwuyduTIEdi4caNOsAcOHAiDBw/WWU4FhAAhQAgQAoQAIUAIEAKEACFACBAChAAhQAgQAoQAIUAI3A8IGBkZgYmhLaSsrIxP2cLCAry8vMDW1hYSExMhKSmJ5+/Zswesra2hW7duhrY0mi8hQAgQAoQAIUAIEAKEACFACBAChAAhQAgQAoQAIUAI3KcIXL9+na/M19e31lbIPXgNTaIhKCgIAgICwNXVVQWI/Px8WLBgAZSWlsLu3buJ4FVBhw4IAUKAECAECAFCgBAgBAgBQoAQIAQIAUKAECAECAFCoDYQ2Lt3L+8GCVt10nbAgAGgjcDFesuXL4cZM2bUxhSkPjjBKx0ZSMLR0VHrTNGjt3PnznDs2DHIzc2F4uJiMDMz01qXMgkBQoAQIAQIAUKAECAECAFCgBAgBAgBQoAQIAQIAUKAEKgKAkjs7tu3T2sTQfQiiYvWv39/aN68OSd7BbmrtWENM7lEg6EFWKtozSjNgGZiYgKmpqYVVaUyQoAQIAQIAUKAECAECAFCgBAgBAgBQqBOEDh56iykZ2QwSUEb6N41VOsYKSmpcPb8RV7m5+cLLf39tNaLir4G164pXukdOKAvmLLfu/faDh4+Bnl5eRAY0AJ8fbzv9XRofEKAEGjACMgJUSQ80bvVEE2+Dn3nj0QwbrhuXaSwvn1VVM8gNXi1LQhlGaKiogD1d9GCg4PhfiKuta2Z8ggBQoAQIAQIAUKAECAECAFCgBAgBBomAjt274W9+w/xye3bvh6MjY01Jrpz73/w8y+reX7P7l3go/lzNepgxm+r18KhI8fA3s4Whg0ZqLVOZZlXoqIhJjYOnBwdoHPH9pVVr7R82YrfICExCWY/N5MI3krRogqEACFg6AhUh9yVr7kuyV0cB+OVmRiaBq8ACGUYfvnlFygpKYGbN2+KbLCxsYHBgwdLx5QgBAgBQoAQIAQIAUKAECAECAFCgBAgBOoTgQ4h7SSCNzYuAfya+2gMj16+wg4fPcHiybAf6CaqRDDqKp45e55X69m9q6he5f3Bw0dh1Zp/oFOHkFoheKs8AWpACBAChICBIoDSCroIWrkEAy5PSDQgISzS9bXse/9uRzVXWlRUBPHx8SqtUZrhhRdeADs7O5V8OiAECAFCgBAgBAgBQoAQIAQIAUKAECAE6guBdu3aSENdDo/QIHhzc/PgUliEVAcTkVFXoU3rQJU8JIfzCwp4HpKzZIQAIUAIEAL1h4Au3VxdUhMisBoGUaup129VV2lkqFIGtra2MGXKFJg0aRIMGTIEHBwc2BPPUli4cCGcOHGiqjhQfUKAECAECAFCgBAgBAgBQoAQIAQIAUKgVhDwbOrBJRWws4uXwzX6vBimyEPZBeHde65cj1deGclhYcFtg0SS9oQAIUAIEAL1gACStOqmi9yV16vI61der7bSyO0arEQDeuui1q4wBPj3338WV2KTAABAAElEQVSHy5cvw7p16yAwMJAJ2tuKYtoTAoQAIUAIEAKEACFACBAChAAhQAgQAvWCAP7Y7tK5I+zYvU+SWJAPfPbcBX7Yu2d3sLa2gmsxsXDy9DmYOnmCvBpcuBTGj5EEtrdXvqmKmrobt2yHsIhISE1N43VcXJygW2hnGDdmBLg4O/G8rTt28/GjomP4cXjEFfjw40U8/dS0x6CphztP43+XwyOZrMRBwDqRV66CZ7Om0NzXG8aMHA4oOaHLIq5EwV//bIDzFy5B5u0sTlh3C+0EU6dMBPPGjXU1o3xCgBAgBBo0AkjSqsss6EvuLl++vN7XZrASDepI4R/Q0aNHc4IXy6Kjo6Fjx47q1eiYECAECAFCgBAgBAgBQoAQIAQIAUKAEOAI4I9w9R/wlUGjzw987CMkuC0neJH0vHEzGTzc3aSujxw7ydMd2wdzgnfVn38zT98wLsdg0aQJL8N4OUfL6yFZLGz7rr2w8PMl4lDao5wDbnv+Owg/fPM5D6iGpKsI9oYVUe5BHE8cP5a3xXHWrtsI3y1bIfWFCQyihtuBQ0fh4TEj4aXnnlYpx4N9Bw7Bku+WqeQjWS0Ia5yHtgBzKg3ogBAgBAgBA0AA5RcGDBhQ4Uzx78m9IHdxUiaGKtGgDVErKysp+/bt21KaEoQAIUAIEAKEACFACBAChAAhQAgQAoSAOgL4Y72qP8Yr+4EvxpBLKkRERkkEb0pKKid8sV57RgI3lnm5XmJyDoLMTUi6odTfba/Q372VliaRu22DWsFDQwdBQMsWfMhde/+DP9f+C1jn+MnTMGLYYBj10FDo3KkDoCcvkr3olfs486xFc3N14ftDR45L5C56Ck+ZOB68vT0h6uo12MbaoVbwug2bIYjpAw/o24u3Ef8JHeHZz82ENm1awa1b6dyz+MSpMxAVfQ2w7769e4jqtCcECAFCwGAQUJdnEPq6FS0A63z00UcVVamTMi7RUCc936NOr169Ko1MgdYkKChBCBAChAAhQAgQAoQAIUAIEAKEACGgBQH8MY4euboipKs3wbr6GnrsOjs5ccIVdXgH9OvNm55lRCtaYEALsLGx5mkkdZEUPXf+kkTwhsmCsAW1DuD1Ll5WavJ+9vF8EN6+WDhrxjQ4x/pGeQUkV9HatmnNt7i4eE7wuro4w+ABfXkZ/ldWVgbLVvzGj5Hc/eaLhWBpacGP/Zv7Qq8eXWHClKc40byPyTeoE7xYEb10WwW05G1a+vtB+5C2MGy0gkTGuRDBy6Gh/wiB+xYBdSJUfaHytyQwXVl9fR+iqY9T18fNmzev6yFq1L/BSTQsXboUWrVqBaGhoSD32I2KioLVq1dLYKAGLxkhQAgQAoQAIUAIEAKEACFACBAChAAhUBECSCboS/BWlXjoEtoBtmzbBWfKNXdxHqfPnufT6d6lszStUOZliwTvsZOnYNbT03i+0N9F/Vtzc3Oe5+PlCS+/8Awjhm1UyF0sLCwshOzsHF6vtKSU7yv7LzrmOpdhwHqPT54okbuinTV7S3b+vDc4cSz3NBbl3buGSuSuyEPSuV+fnvDfgcNwKz1dZNOeECAE7lME9P38xOUjwSsnfLVBUtXPWW191Eae+jz18eCtjXGr0wc+rDM4gjcpKQni4uJgx44dgIHWLC0tIS8vD0pLlX/ARowYwfOrAwq1IQQIAUKAECAECAFCgBAgBAgBQoAQeLAQmDFjRqVSDVXx3hXodQgJ5gQvatlmZWVzvV2hq9uB6e8KQ6kGNNTQTc/IBEcHey6zgHlI/gpDL1vc0FJvpcFVFjwtPiERYmLj4DCTQ0CN3arYzeQUqXrnju2ltDyB3sVCNkKej+mAFn7qWfzYlhHQaPLf6TyD/iMECAFC4AFFYO7cuSorr00pByMjI8MjeENCQuDSpUtQVFTE/1hkZWVJAOFTzDFjxjDtnzZSHiUIAUKAECAECAFCgBAgBAgBQoAQIAQIgYoQQM8s3NQ9tkQbfQOrifpi347p0goLZzq8To4OEgkrZA2w3NfXG+ztbAEDsp2/eBlaB7bkaSwT5C+m0fYfPAIrf/+Dk8GKnOr/Lyd4hTRDVXqzsVZITKi3uQt31bPomBAgBO5TBCp7+CX32hWftYYAhfrfBFwH5lXH1P+2VLcfXWMbJME7YcIEwA2DqCG5m5+fD03YKyCOjo7saaj2Py66AKB8QoAQIAQIAUKAECAECAFCgBAgBAgBQgARwNeCqxpwrTLkUIMXtXhv3ExmwcrCwc5W4dnaq0c39kaqsdTcqFEj6BraCbbv2gtnmIQDvm6LhnIHLfyVuo+79u6Hjz79kpdhv0MH9Qd/v+ZsDFdo6uEOixZ/C1hHX7MwbyJVxTGNjZVzkgooQQgQAoRABQhUJqmAmruC4ERis7L6FQxVr0XqBG9MTEy1CV5sW5d2584dMMH/kOk1NMMgahRIzdDOGs2XECAECAFCgBAgBAgBQoAQIAQIgYaJAP6YV/9BjzOtrveuWGXX0I7w78atXMfWikkMonXtrJRdEPVQIgEJ3qPHT0Ijo0Y8O5TVk5Ou6zZs5vmtWwXA4s8WgHnjxqI531dVoqFZUw+pPcpDCPkHKZMltmzfBZu37QRTJpH49ZcLAcloMkKAECAEHjQEUGu4uuS0ILgFZtXtR7TXtmfcruGRu9oWQnmEACFACBAChAAhQAgQAoQAIUAIEAKEQE0QQC1edavpD/GQdgp93fCIK3Dy9FnefXsWOE3dgtsppAZRpgEDs6HJdXHv3L0LkVeu8vxuXTppkLvY7uy5i7xc3/+8vT2lqhu3bJfSIlFcXAzLV/7Ox8U3ZoncFcjQnhAgBO53BLR99qM3clVN7sFc1bb61r/L/j4Y4X9khAAhQAgQAoQAIUAIEAKEACFACBAChAAhoPDYFThUpi0p6lW0b9emtUoxSiugnIK6oT6vj4xwxXK5/i6Sqyj5gHbo8HHIzs7hafwvKvoavPHOfEnfNzsnVyrDhJmZGT+Oi0+EGzeSISc3l8tA4JjjxozgZUjw/rr6Lyhk8W7QrsXEwtff/SRpAQ/s34fn03+EACFACDwoCKj/DUAv3qqQvFgX28hNvC0iz6tpmmvwIsHb6AF+xWLkG+k1xZHaEwKEACFACBAChAAhQAgQAoQAIUAI3EMEFkypvcHRawtfp8VNmwdXVUeyt7fjxC1KIKB1Zd63uqx711ApeBqSuepE8KABfeCPv9ZxQnfk+Cm839TUNInYRYIYxzl05Bg8O3sOfL9kER/Kw8ON72+lpcGkaTN5etm3X0JAS394fPJEOHX6HCQkJsGKX1fzTQR8E/Ps27sHDOjbSxzSnhAgBAiBBwIB/BugTtCK48r+PmgjdxG0ytpVB1iuwUsSDdWBjtoQAoQAIUAIEAKEACFACBAChAAhQAjcrwjgD/DaDIoT2qmjRNx27hCiE7ZO7UM4gYsVunftrFFv+hNToLCwkGv6YqEgjT2bNYXXZj8HDoxMfnzG87zdTRbYTVjf3j25fMP+g0ckMti4PMgbkrnLv/+KSzFs3b6bl6PcAxoGeZs2dRKMG/2Q6IrvzcxM+V6uD6xSgQ4IAUKAELhPEEAvXkHqiiXhMT4ERG/c5s2bS8HXMA//dqjXF+1QBgjb1IU1YpEy72ojeR8Uz9ZRPZvAyB7KyKF1AbI+fR6/XKJPtXtWp2sbxR/wezYBGpgQIAQIAUKAECAECAFCgBAgBAgBHQikJCq0Z/38/HTUuL+yMZhaSkoqFJeUgFezZtCkibm0wIKCQohPSARvr2Zgbq7MlypUkkhLS4fUW2ng7OwIjo6OpLtbCV5UTAgQAhUjIPdkrWnQyopHqrtS+RqqO0pdrt2EBcE00UbuVneyhthu0+GCBkHwGiJ2Ys7oCo4bXksP+vUkMKntPUqpsIcxXE6FnpLXNrrUHyFACBAChAAhQAgQAoQAIWBYCKBnra+Pt9ZJI9mL0gvVNScnR8CNjBAgBAgBQkCBAL7VgZ66y5cvrxYkdUnu4oRKS0uhESOOtEZZEx68/m6W1Zq8ITRKyiiEguIyaAhevIbswfvOG8/Bgf274O15n8CIUY8Ywqk3uDmGh12Ap598GDy9fGHVmu2AT2fICAFCgBAgBAgBQoAQIAQIAUJAgcCD5sFL550QIAQIAUKg/hFACQb05sW9PlbXxK6YAzpb3jcsUa8QY0Z6NYKS0rtw+HyZWGOFewcrU0jKKAPy4q0QpgoLz587ycldC0sr6D9gWIV1q1J49lwqzJi5ExwczGHPTiKNWwcFg59/AFyLvgJbNv0NY8ZNqgqcVJcQIAQIAUKAECAECAFCgBAgBAgBQoAQIAQIAUKgBgigfi7q6AqCF8leNHGM5UJjty6CqemaOvrumohX63VVMoT84T1MYFAXBVeN7sj6ErxNzIwBN/TivRJfCgFe9w3fXW+n7dslC/lY4x6eAkjy1pbduaNwLC8q0o+sr61xG3I/kx+bAf+bPweWfvMpDBk2mulsWTTk6dLcCAFCgBAgBAgBQoAQIAQIAUKAECAECAFCgBC47xAQJC6SvQ3BUMrTqFGjRg1hLtWeg511IxgYWn1iFr140TYdzq/2HB7UhigbEBGuCGZAHqV1fxX0Yx7SSKLn5+XCf3u31/2ANAIhQAgQAoQAIUAIEAKEACFACBAChAAhQAgQAoRAg0YAPXgNnuB9eowZCzwFoF1JuHL80YMXLSqhlHvxVt6CaggENq5fw5NIPLp7NBPZtK8jBBo3NofJU57ivf+z9rc6GoW6JQQIAUKAECAECAFCgBAgBAgBQoAQIAQIAUKAEDAUBFCdofqurw1glV3bGIOHcyMoLgW4lnAHWvkaVWtWQqYBvXjnTLapVh+13ai0pAgiLh2C9NR45rGZBVbWDuDo4gl+AaFg3kRTCgHZ+puJVyAxLhyyMlP4dFw9/MCtaQtwcfPVmF5M1Gm4U1YKLqyOja2zRjlmxEafA5yHk6sPO/LELBU7cngfP+7bb4hKvvpBQmIOJCfngZNjE3B3t4Rz51Ph0uU0cHRoAkFBjhAY4KDeROMY26Mub3x8Nnh6WkPvXs3A2tpMox5m5OWVQHhEOhgZNYKOHVxZNME7EHklA06dSub1W7d2hNDO7vzBgOggJ7cEzp5NgaSkHMi8XQSurhbQ3McWAtjcLC0VXt6irnxfzOQ9Dh9JgsSkXMjOLgJ7e3No1tSajesCVlba54ft4xNyICoqA65du83b+PvbQ3A7ZzA2rtijvnffwbB82RK4EhkGtzMzwM6+YuzymLdv1JUwacp+/oFgY2MrHVOCEPg/e+cBH0XVtfFDEiAJJUAgEEJIIPTQe+9FkaJ0RFF4LYgFfcXuZ3/tYsOGSlEERemKUgREeu81lNADCZAQQkgCfPPc5U5mN5uyIYFseA6/3blz29z7n9ll88yZc0mABEiABEiABEiABEiABEiABEiABEjAfQmoGLzuOvzChubWt5NNeJu5OFnCw2yeuNmZj15sTXvx3uxYvCeO7pWvPxwu8XExTqfzvy/W2Ym8SZcuyv+e65Ju/Xbd7pc7+j1tiIepev7vv34okfu3SPN2/aX/fW+kOc7ZmBPy+dt3q/yHnv7O2NoLvLGx5+TsGdv4gipUTNPemvHrr3tk8pRd0r5dsJyOvig7dkRbi+X++2rLYyPrK0HWruDazvwFh+SFl/61KwoI8DWEzm6GmJpW7D54KFYefmShqj//z34yeMjvcuZMol37Jx5roI6LzJ9/2S3vf7jOrlzv4Dgff9heatb011nmNsIQZ0eMXJimb11h2ZKBaUTe5OQr8sVXm+WHH1NFV12/ZYvy8sZrrdTCcjrPcRsYGGRmHT58MFOBN2LvLnlsxBCzzXsffiOt23Yy95kgARIgARIgARIgARIgARIgARIgARIgARJwXwKIwesFldcd4/AO61VIvAxN9/TZq7J6++XrEniti63lBS/eOb+8p8Ra/zLBUrdxV+WFez4uWvbtXC17ti+Xq4brtdWuXElR9YsW95f6TW9XHrsFCxaWI4d2yMolU+Wf+RMlOemS9L33FbNZi/YDlcC7+p9fpdeg56VwYfsFuzat+V3VRZ9VazY32+nE4cgDOinlgzIWeHXFpf8cUck7e1dRgun69Sdl4aJImThpuwSU8ZFBA2voquYW3rgQd5s0LifNmwXKv8uPyeYtp+TUqQT5fvw2efX/Wph1nSWee36ZEmAhnsJL9uzZRFm85LBcSkpleOr0RdW0VasgqVO7tASWKyJx55Nk5qwIOXDgnAwZOk/mzrpLghzE5DEfr1d9V6hQTDp1rChhYSXkTMxFWWt4Cq9cddxp2BDMBceHgUPt8NISbbT5cfJO1Wb0s/8YwnXXdMVuxOAtWcpfieuRh/ZL3XqNVF98IwESIAESIAESIAESIAESIAESIAESIAESuPUIqBAN7ijuVg/xELyuGuds/JykHDlzVi/eHOkwm50cNUTZvTtWqtZ3P/iehFZpYPbU4bb/yKmTB6WwTxEzD4mChXxk2GNjpWa9dnZeuk3b9DVCO5SUBXO+VEJvjwGjTSG3buNu8vP3L6p+tm9cJI1a9DL7hOgP4RfWquPdhthoKOkOpgVeCI5+fiUcStPftXrO9u9bTUr4rZFfp++V7wyxtp+x7+WVNsxGt66h8r83WyvRc9j9tVXdLw0v2NlzIuSVl1vYhVpwPDLE4K+/7GKEZChnFo3+b2M5GZW6qF6H9sHS566qabyBe/eqIm3b2+IM//HnAXnogbpmH7uMEBCr15xQ+2++3kqFV9CFQ+8Nl8jIOPHxSfWYRtmatSdMcfezTzpKa0NQ1tatS6jc1W+2Eq8hemPO6VloaBUl8B46GJFeFeaTAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAncAgQ8PDwkrZqWxyeOBdXu62ELzbBl72U5GQOZ9/pNe/Gip7krbB6d19+r6z14eqWKgp5eaWO/Ip6uo+CK0Au1G3ayE3f1kSHkaouPTQ2NAI/dlh0Gq6I1/07XVdQ2cv9miTlt87Zt3DJV+LVWirzmwRsSUtmanWm6f7/qdnXuuaeW2kcIhe0OoRt0xeHD6th5tHY0BFlt5w1P24zswf/UsRN3URexe6tWSRWl4bXrLNRDUSP2budOIar7Y0aMXat5FUwVvQs6EaVDQoqnEat/mbZHddGlc4iduItM1O/YweYJvWLlMeuh0qQrhthiKh88sC9NmWNGYW8fCa5YyXz5FrG/OeBYn/skQAIkQAIkQAIkQAIkQAIkQAIkQAIkQALuQ0B58LpbiIYBXQqKT+ECxsJZIj/9lZyjtLUX7+7IZOnZyidH+85qZ4EVqkuZcqFy+uQh+e6TEcqDtnK1RhJUsZb4+BZLt5urV42FxIxF2bZv+lsQP/fcGZt3qbVBYuIF6640bdNHefbu371WLebmH2ATGDesmqvqVQtvKaVKV7Bro3cKFSqskklG6IesWv16AWkWLAs2whtgETOEYoiyeNVa+ww1xE+rlTIWZ9OGUArFi6e/mFkXwzM2K4YwCQjJsG/fWTlhLOh28aJxgRkWFWVj5igkQyAOqVhcIo1F3554arEM6F9dGjYoqxZlK1Y0rTCPvhCzFwYP3UOHbIxVxrW34ydsx9q564w1O006KckmahcqbDsHaSpYMmrUrC0//7bQksMkCZAACZAACZAACZAACeRfAqdOncq/k+PMSIAESIAESMAJAURnSHUXdVIhr2WV8y8gzWrbPCdnLk1WIm9OjvFi0mXVHRZbu5nWa+Bz8suEl1Vc3fmzPjeH0rzdAOl0x4NpRNdLlxLk2zEPysF9G826SBT2tvfWTE6yX2gsOLS2BAZXlxNH9siG1b9L114jJcmos2HVHNVP87b97fqz7oSGhqnd/RF7BHcK4A6emZUunSrMWuuW9ve5JvDaC9CoA/G3YEH7vj09DTfua3blSsYe3OWMeLqZ2YKFh+T5F/9NU00LzyhIunZtWCv996nG8vqbK1Uc3q+/2WIW9e1TTe4fGm4Xszcl5aocPXrerLMvwib2mhmWhLNjWYpFh8eoHGbvDW2twzQJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkED+JwBNzsudYvBWD/EULe3d1aGg4KXNWDBOGco/GOUtCND7+reXJP5ixgKgbo/txWsLb/Vq7VyItNbNzXSteu3l5fcXycY1fwi8a+GVe8nwvl39zzT1euOzlVKkaElzCIvmfm2KuwPuf9MI19BZfIv4qcXzIOo+PyI1jq/Z6FqiZYdBMv2H11XM3c49HpZdW5aqY0EcDq/fwbG6uV/REprhzJloKV06wCxLL5GZcOnpaS/kptePK/kIs5CRxcUlmeIuFll79JH6UsVYLE3HAv5m3Bb55tutTrto0zpI/pjTR/7866Bs2BglWEQOnsjTZ+xVr8ULB0iJEjYvW6v+/fqrLaVnD5tA7rTjTDIPXou9GxLqWniMTLplMQmQAAmQAAmQAAmQAAm4PYHKlfkb2e1PIidAAiRAAiTgMoGcV9RcHkL2GngZgq71pYVf9KbyDd9kSzjbTA9yJj7JEHhtHrw3KzyDdZAFC3lLM2ORNCy09tony2XwA++axds3/m2mkdiy7i+136P/aGnWtp8h/pZQ4i4yzzoJ1aAqX3tr0KS7SsWePWmIyetk7fKZah/9eBVMPwRAcMXQaz2IHD962ExnlDhxwj6OLeoa67mpMAdIly3ri80NtbXrTqjjwVv3g3fbSo3qpUxxFwVHr8XeTc9TuHBhT7mzdxXBQmsL/+onbxhbbUuWpnLx8Chgxv2Njs5+jOfYc2cl4YKNY0hI5iIxvKujTh43XwkJab2k9Xi5JQESIAESIAESIAESIAESIAESIAESIAEScC8CCL/rgTd3sXU7L8s3M5Kcvg6fvKKmgdnoOrHxrs/tZnvvOjsXhQyxt3HL3lKlZnNVvH/vOrtq8edtMVsLGQunOdrmtX86Ztnt+xQpLk1a3aXy5s/+3Ijju0ylm7a25dlVtuz4+PhKmYByKkcvuGYpdppEWIKTRnxbq23Zmhojq4IRj/dGW3x8ahxn7bWrxwDvXnjlZtW8vb2kR/fK0qSxjcumzalzQx+1apVWXf3x50G5fNn1axONDx8+qPrAW3BwiJlOLxF9Okr69GprvubOnpZeVeaTAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAm4IQG38uBNSLwquw8Zi4k5ecVZdENd7op2feaa0HezvXePHNwmi+d9J3Gxp+0up5jTRyRi12qVVzG0jl1ZhdBwtb/2399UDF1duGfHCrHG8NX5jtumhqcwTMfwrRBSS7DYW2Z22+13qirzfp+eWVWzfMwnG4zYyTZxEwuZff7FJlVWo0Yp5T1rVrxBCSzyBkNohcVLUj1uExKS5a23V6t8Z0PZsSNaJk7aLliczWqIs7tu/UmVVaumv7VIht1fW+0fOHBOPvl0g1y6ZPMY15UiI+PkY4PP+g1ROivN9q95Ng/rFi3bGZ7aN14QTzMgZpAACZAACZAACZAACZAACZAACZAACZAACdxUAm4Vgze3SCE8AywveO9C2P3jt4/UK7hSHSlTNkROR0UKhF9YmXKh0qL9QJXWby3aDVSxeo9G7pQXjHi7tRt0kgvxZ5Vgi/qnTx7SVZ1uK1VtqPrV9RCeISvWs3d/+XHS17J1ywbZvXOb1KhlLzw762PR35Gye88ZqVzJT7YbIumZM4mq2qMj6jurnut5deuWkcqVSwhEVyy0Nu67bWpsGzdFqbGVKuVtjtE6mOiYRPls7Cb1Cg8vLRWDi8nhI+cFwi8spGJx6de3mrWJqvPkEw3lk882yk9Td8mf8w8KRGCEb4C4G3k4TtXHmJxZbOw5mTVjqiq6q+8QZ1XS5F2+bC8ip6nADBIgARIgARIgARIgARIgARIgARIgARIgAbcm4FYhGjIifT2hJrT3bkb936iyUqWDpHK1RupwEHU3rv7dFHcRouG+kZ+Ip5f9wmENmnWX3oOeN4eIRdngjRsSVk9GPjvJzC9QwLnDNhbaa9i8p1mvftPuZjqjRFCFEGnXvquq8tuvP2ZUVZX1uKOyDB5UQ+Dluuzfo0o4Rezbzz/pKFjgzGrWmMrWfKQLGIKoNmPoacxJVpo6OqNgQQ/5+KP20qCBbZE4CL0QoeFd+9wzTeX++2xet55e9uzKly9qtoGoi4XWtLiLEA3vv9fOLpavPt7Qe8Plm6+6KAEY4vbyFccUC4i7YAFG1aqlLqCn22H7x5xf1W5QUEVp1qKttSjd9IH9e+3KGjdpabfPHRIgARIgARIgARIgARIgARIgARIgARIgAfcmUMBYhOkqBD5H6/lsjMqqUq6IY1G+2of3rhZ4v32u1E2b2+rtqbFgMYhLiRfkTPQxY0GtWClYqLCUKBUoxf2ce3bqQV+6lKC8dS+nJEvZ8mHi7VNUF2W6HTfmQdmzfbk0atFLLezm2KB5bXtRWZcfjjwgg/vbRN7Z81ZK6dI2oVSXYzvm4/Uyecou6dkjTF5/taUgNEPE/nNSvFghI45sMeXBaq1/M9II54FF4E5GJRhz8BGEbnDysUgzNIR2OGHEFY49d0kQg7dsOV8p7e+Tpp6zjPPnk4yYuuclOeWy+BttAo3PmmMcYN3u8uUU6X1HK2PRvBh5/6Nx0qpNR12U4fazj/8nv0ydoOp07Nxd3nz7swzrs5AESIAESIAESIAESIAE3JFA1NGtatj16tVzx+FzzCRAAiRAAiRwXQRu+RANWtzNC+EZrGeysHcRIw6u/SP+1nJn6cLGImuIn+uqHTu8S4m7aNe0TR+XmlcMqSwPPDRK/l22SDZvXCudu/bItL2Pj5fUqW1bcCzTyjeoAsRceOXi5YrB67ZKWAlXmph1ixkCd3i4fZxes9AhsXfPTgkwFrVr2qxNlsVddLFyxVKzJ5wnGgmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQQP4i4JW/puPabHTsXbS62YuruTby66+dnJQoe3eukpPH9smyhT+oDgODq0tY9aYudz7sgccFL1ruEahZq66M/2G2SweAt++RwwdVm+49+kpIaJhL7VmZBEiABEiABEiABEiABEiABEiABEiABEgg7xO4pQVefXrymveuHldubrGY2/jPRpqHKFrcX+5/9DMjLEHacB1mJSbcikCJkqVk/uJNasze3t5uNXYOlgRIgARIgARIgARIgARIgARIgARIgARIIHMCRvhdyVTgjTDii+Z3u9W8d3E+fX39pMPt/zEEXQ8pH1xDqtZsJhB5c8OaNAk0FobzkPBaudN/bow5P/QJsb5o0WL5YSqcAwmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQgBMCHh4emQu8Ttrlq6xb0XsXJ9CnSHHp0X/0DTmXbVoHCV40EiABEiABEiABEiABEiABEiABEiABEiABEiCBnCVQ4KphOdule/S2ZcsWNdCXf6rgHgPmKEmABEiABEiABEiABEiABEiABJwSeGvIUZVfr149p+XMJAESIAESIIH8TMALcRrgykvLmMCluP1y9XKyeHqXEq/CJaWAR8GMG7CUBEiABEiABEiABEiABEiABEiABEiABEiABEiABHKZgNetLu7OfT9rcWHvvvtxWbNmjXk6HnvsMXnqqafMfSZIgARIgARIgARIgARIgARIgARuDoEtW2wevDfn6DwqCZAACZAACdw8AgjO4IU3LMbkLpacnCx79+7NcLhhYWHi7e2dYR1XC/v37y9169aVjRs3yoYNG2Ts2LHSvHlzadGihatdsT4JkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJXDcB6LpuJ/CePXtWJk2alOHkR44cKaGhoRnWcbXwrrvuUk0giPfo0UN2796txF4KvK6SZH0SIAESIAESIAESIAESIAESIAESSCWwevVquXTpknh6ekrr1q1TC5ykjh8/Lvv27VMlcLoqXLiwk1rMshI4duyYREREKEe4Zs2aWYuYvokE4uLiZNOmTWoETZo0EV9f35s4Gh7anQkg/K5bh2goUaKE+g/A8STktPeutX+o4nXq1FEC78mTJ61FTJMACZAACZAACZAACZAACZAACZAACbhAAMLuP//8Y7YoVaqU1KpVy9x3TKxatUqJlchv06aNY3G+2AcTvTA8WBQtWvS65rVy5Uo5cOCAEhAp8F4XyhxtvGPHDsHNDRidB3MU7S3XmfLgdedF1kaNGiVFihS54SfOx8dHHRNfujQSIAESIAESIAESIAESIAESIAESIIHsEYiMjLRruGLFigwFXu1oBdEzv64pBG/bJUuWKC41atSw45OdHc0sMDAwO83ZJpcIHD58WPUMJ8VChQrl0lHY7a1AQAm8+fUL8VY4gZwjCZAACZAACZAACZAACZAACZAACbgzAUeB98yZM3L69GkpU6ZMmmkhZOKFCxdUfn4WKw8dOqTm6OXlJcWLF0/DwZWMlJQUSUhIUE1yOpSlK+Ng3bQEGjVqpMKL+vv7py1kDgm4QADfjR4u1GdVBwIXL150yOEuCZAACZAACZAACZAACZAACZAACZBAVgkcOXJEVUX8XW3WkA06D1t4okLIgFWsWFFt8+Mb4gzDEK7ieu3o0aNmF5UrVzbTTNx8AlWqVBGEzMCWRgLXQ0B58F5PBze77bhx49TdO4RMwN27Bg0aSM2aNXN9WPpLFv/pXL582Wkc4FwfBA9AAiRAAiRAAiRAAiRAAiRAAiRAAm5OAB67sODgYElOThYsCIZ4sQiJ6LiAmn6kHfUdvVETExNVPFN4BEdHR6u/1bVW0K1bNylWrBiaZWq//fabxMbGKm2hZcuWdvWXLl0q+/fvV3n9+/e3866FNvDTTz+pOUCwa9eunaqHcS1fvlx27dolSKvFkAzPXHhtYkE5Le7B0/aHH35QAjYWl4eBzffff69i8A4cOFDl4S0qKko2bNggEG8xVhjmWq9ePcGYrWK59pBGHkJczps3T7U7d+6cQBQCR7QJCgpS/WTlDXP4999/FYuYmBjVBCEzILp37dpVChYsaHZz8OBBWbx4sdoHEz1fXWHWrFmCPjCWvn37qvM0ceJExaFnz55qETJcD+fPn1fzgkdz06ZN1Vx1H3r7+++/KzYNGzZUY/nrr7/UTQGwvf/++6Vs2bKydetW2bZtm6qHfHCDt/htt90mWOfJ0bCgH+aKc4L6mBvqt2/fXl2z1vrwlF62bJns3btXnWvMCeEX6tatq2LsWsMwnDhxQp0LtB88eHCaBdbWrVunPgeol5SUpEI4lCxZUjp16iQVKlSwHlalJ02apMbXuXNngTPixo0b1RzRFte+HoP12nBlvGkOyIw8RQA3vjxfeeWV13DRuYvhcQwECIfFx8erL33k4U7e5s2b1X8GuHAzmxO+EGHlypVTW1fesNIhvjjwnw++QCtVquRKc9YlARIgARIgARIgARIgARIgARLIQQLX8/ddDg6DXblIAOIkhCwYFjPHa/v27WofIqLj39pYkApCG0JNdunSRdXDG/SACRMmCARg6ARoC8Pf7Ki/fv16CQkJsRNkVQUnb4sWLRL8zQ/BFtqCNohmM2fOVOEOIIxVq1ZN/Pz8dLGsWbNGsGgWylq1aqXEQhwbjmkQrTEW7X2M8UHHgOgLBzIIhhBiwQLttaEe9qFv4HF+2KZNm2TGjBlKvINgjD7xQv/whoYgCec3bRCXIY5CyFy7dq3AOxjtYGiHMYI52liFWd3ecQu+48ePV+IuxqaPD0H+1KlTSniuXbu2Kc7juBDGURflEF+1QYDVzMLDw5WoDtEaLFEf4jC46PWPwAPnATGKEcbD0cFv9uzZiiuEUAjZuL7QBvxwvYAbGOD8Ih8GbqgHQRQCsHboQ9nff/+tXhiLro8teEIkhkivQ4mgT5xr8IUQDNPnBXPavXu3mrvWqnAeIQRjPhC+dT72Idbu3LlTIMLjOoRhC/Y4Lq5/3BDRBhYQoTFOzEXPUbeFyItrA9ecFthdHa8+Frd5kwCuH8/XDNMXUt4cpv2ocMFCyMUdJnxp4ssB3ru4WHHx4sLGxZ7ZowfX8wMA/8ngg4EP5Jw5c9QHCYHgcdfJ+h+A/ci5RwIkQAIkQAIkQAIkQAIkQAIkkBsErufvu9wYD/vMGoE9e/YosQ6127Ztq0SrLVu2KI9FiIEtWrSw6wgLj0GsgqelFjyhBcBzVotZEF6hFUBkRF0ImDB43uJx+MxMC44QO/Ux0AZP8OrQCdiHUKZjp0LIg+cvxlC6dGnp2LEjqsh3331nipNwDoP3Jfr09fVVXrSoA6Gtfv36yjsV3p4Q+KB7wDAPCNNoC9ESYi3EUhh0DwjiqANhEt6+EELRFsIz8mAQKTEuCJnYQs9o06aNYPE26Cc4HsYfEBCgXqpROm8QLr/66itzfNWrV1fipNZB0B+OgbHUqlVL9YI4wtBK4FWNY0GUxfzhSYv5wKpWrSrdu3dXaQiYOKcwzAd1oftABIWoqcVy9Fm+fHnFBXVxTHg1w+D1ijmhLeaJcUIA1bGNIcp26NBBeQLjWsLxUB+CMq4RaGQQcSEYw1D/9ttvV+OAFy6uTdTHNaW9vFFXeyLDMxv9Y3zQjiDMQlTHNaW9bzF3nHt4JDdp0kQdB/MFX9SHQetq3ry5GieuDcwLhvHi3GsPd4jBGDsMfWKMaIex4VrQPDEn/Rlwdbyqc77laQJe7iTugiQ+WIYmbQcVd3rwAXr//ffVxbxgwQJpb7jL44skNwxfpEOGDFH/WUyePFkJvRB7kX/PPffkxiHZJwmQAAmQAAmQAAmQAAmQAAmQAAnkKwI6fAAmpRdNgzAFL1oIkhD7IGTB4DmphS9rOAE8XQuxDdpGnz59TA9FtIEIC6cseMpC+IQwByEzI4MgBqFSe7miLkRLOJpZDWKlNugBEJNhCAcBgxishVqELbB61UJ8hVcnPI7hcQmD0AexFjcrcHyId9A5tOF4+mlmCHhDhw41BWbUgS7yxRdfqOoQMsENc9DjQgFCHmjhFft4ohlepzCIf5kZwg/o/hBOQXuDol2oEeoB5wDewBA+cb6gkcAgduIcwOAc17hxY4H3LgxjwHnTZg3DAVF72LBhpmcxBF4I1Hqe8PTVzn3WawnXA0IVaIEeAifGDoNYbPX+huAKnQneveCFsWNe2GobMGCACpOBfdSHcDt37lzlqatFWi3+Q5DHeYRhbhC/x44dq4RejBHXNwznGGZ9qhzXveYL0VffKEA99Ivj4nrG/CCQ6+vDygw3GKBLafEX50Vfa7pv9OfqeNGGlrcJ2D5teXuMWRodvuDwZaUNX9y5Zfhw4M4bxF18SU+ZMkV9Sb3xxhu5dUj2SwIkQAIkQAIkQAIkQAIkQAIkQAL5ioAWmRC/VYuB+BtbxwnVgiYmjTAM2iBawSAAQ2CDwQPYKjiqTOOtffv2OqnEU3MnnYSOwwqBWRtCPEDkxbggxMKsAq/2RIVYpz00EfcUIiNe8NC1Gjxh4dEKg5ep1bSXpqMQvXDhQiXsoS4ER+09rNuCIYRFeKxCDIRpj1WkISxaxV3kIXyCtsxiFMO7FBxg6McZa8TG1QaPWm3oWwuxCFUwdepUNRewhPOc1bSWA4e94cOHm+KuroN56nOgvbNRZhU5IXxqcRdlCNcAwzis4q7KNN7gQayvOS28WnlA/IUnrjbUh8CNF8YD0ywh4uowI7o+4jWjLnQkGFjiBdOLBeI6hvc4DNeQVdxVmcYbvJ+hfcH0OJHWnw0ws4q7KINpsVe3RZ4r40V9Wt4mgBsquePiepPmjbsZ2nDXy7qv83Niiy9WbZ988on5Ba7zuCUBEiABEiABEiABEiABEiABEiABEsiYgBZnrV6MEHrhfQqPWcQghXiFcquApwVMCLwwCFtWcdF6VC0GIs8q0lnrWNM6BquOo4oyxP6FQXyGwxfGrQVeiHI6jYW6tEEghMiI8SO2LsRIzAeeshA/4YUJs3ojW72UrTFWUU+LtfDQtLZBmTbt0an3NTN41upQAroMW4Q70JaZfgLhUo8Z/SLmsaNZRXHMF2PVBsESi6WhD7CF6IiFz6xPXluFT7Czlul+sIXHLc6BM49UiJjagxZ1IcyDOwznydm4UYZ6MC1Mw1MY1w6OA9EdXri4sQDG4O8ocCPsBbx6Mb8//vhDLSyHOeC6hMe2DpmBY+iQCUijTxg8nDVfLQSrAoc3CLOYt77mrNeMNfaxtZkWg603BVwZr7UvpvMmAXxveuECcrcwDenh1I8/oFzfjUiv7vXk6y9BuNrru3PX0x/bkgAJkAAJkAAJkAAJkAAJkAAJkMCtRABOWVrQ0l6Mev4Q6HRIBMS+HThwoBmzFnFMtdekFuMg+GoPYN2H3mpxD/sQBjMzhAWAYWwQz7AQFh7dh24CcW/WrFmqXAtsGB8Mop9VxMNiZ3ic3ioUq4oObxAStWmtAfta+NNlOmQE4slm1SBGwyC0OltATYvGYKfnnV7f2ksU5QiVocNlpFff8XgQa8FQn3N4tTrqNlbhU4cycNa/vjFgXeROh5hw5KPFTfSDc6E9hJ31izzt5Qom8CCGaKvDNYAXXvCu7tevn/II1v3AqxlewPAW1gIsPLvhhY4QFQhLoU2Hk8AxtOiq44hD+Lbe8NBt9FbrXvpGhPaCR7kOZ6Lr6q0OA2K9aeDKeHU/3OZtAm4XgzcjnDqgNurkpvCq7+zALZ9GAiRAAiRAAiRAAiRAAiRAAiRAAiTgGgEIZdocBV4IuBCjIPihHkQtLTBqQQxttciakTgZERGhD5OhcKYraeEM+xAxdexWCIcQ37QoCcEVfWth0eq9C1F45syZqkuImhCWoVGgb4itCM+AeKswHboAaS38IW310oVAp4XRrIjUaA/TArhV2LOV2N61oGqds7XcmtbCKIRbq1hprWNN65jKyINn7sSJE805IA9xi61zRB7ONQxCKRYVc2YQafW8dBgL680CLLJnNX3dIM9x0T5rPZ1GiAttON8QcnGOETsYoRegB4EFFtAbOXKkGf4AbXCN4AVvXAi7OM+4SYCF7sBAexZr4d0qUOs5WUND6HHoLW5WaC9pfTNBXzO4zqzMdRvMX187jjcNsjpe3Re3eZuA24VowOqYuMOFLxR9ZwUfGNw1049N4ItT39HL2/g5OhIgARIgARIgARIgARIgARIgARK49QhYwwdoscpKATF18fc/DJ6QOryCM7FSC1jW9jq9atUqlYR+UKRIEZ2d7tYa0gFCrY7zCi9MmFXgXbx4scqDcGYNR7BlyxaVD69VhCGwitIo0KIx4u9qXQP5mgnGafVIhtCoTTuc6X29hScnQgmgT8RqhSis6+qQFrqu3sbExKiko9Cqy61bzRjzx7lxZhA+cUwIxnrM0GsmTZqkvKAxJ4iQ8FTeuXOnikmreaI/LXxa5+54HCyspueFecK0MIy0480CHesWZfDAdtY3WOEmArjj/IML9iHAYh+iKwR8xFPG4nAIywEvXSx0hrAd4A6BVTsaYlx4YZ6//PKLEmXXrl1rCrzOuKM9THNWOw5vS5YsMXO0WKuvGYxR92FWMhIHDx40d3GeIZC7Ol6zAybyNAG3C9EA13h8WeKxCHxh4KXd80EaH9Z77703V6HrO3Q6CHeuHoydkwAJkAAJkAAJkAAJkAAJkAAJkEA+I6A9K62CqnWKEMtQhr/34e2pzSpWwrEL5QiHAPHN0SDA6kfa27Vr51ic7j68VOEpqcMvQDTU49SCJEQyHX6hW7dudn3px+YhXDuKuyjT5Y5xb7WXrOMj+vBmhdYBsRTeoY6LpUGghBiOcgjNEBe1ZycGZmWmB4o2evxaLNRlzrbasxR6CJg6Lg6HkBrz589XTbGQWcOGDVX6559/NkVyeMNC/P3666+VkAnBsnv37ubhtPAJ9vB+tYrmqARPXb3wHrhq72ftiQxOVsEcbax94DqB16rVcJzx48er8aA/hI6YNm2auq7ABeFBtEGw79GjhxKnIcTCoxYCKhZhg8GjV3PCPgTVevXqqcXpdLxg3KjQXrjW8wJvZHwm4MnrjC+0MNxwgGGc2ms9vWtGVTTetACMzwquIfTjynh1P9zmbQK46eGRt4eYdnTW+DS4E2MVd+FK/8ILL5gXetrW15+DR0D0HUDrh/H6e2YPJEACJEACJEACJEACJEACJEACJJD/CUBY1MKrs8fKNQFnj9RbPXjDw8NVVegCCImghTPs//nnn2pxM1SAGKkFR913RlstXmoBFAuEaXMsw2JbJUqU0MVqq8MLQMiFgAhDX1gUbvLkyWofb45CrvY2BRuItXofdTUnhIXQ4SlRZ/fu3fLjjz+q+qinwwBogReCp/amRbk2q2dnVgReeKrCIGzCI1eLsRgjxN0FCxaocjjC1a9fX6URj1aLr2AIPQdesdpjGCEPdGxhCMeaNxpPnTrVDMWAY8DR74cffjDnaRWG9c0CR57oB3PTi7Uhnq4O2QF2SE+ZMsX0mtWL1OnQD/AM1gv5oS+0wU0D7WULoVXPBeW//vqrGbID+zj3ur0Ox6DPC8qtmhLWeIKhb5xPCPAwzH39+vUyffp0tQ8vXX1DAaKx5ufouawqG2+ajb5+XB2v7ofbvE0A4r3bxeCFdy4+9LhLgS9tXPz4oOADqD+0uYH9008/lY0bN6o7h/rREP3FmRvHY58kQAIkQAIkQAIkQAIkQAIkQAIkkB8JaNEPc0tPmEIZRC/EL9XCn6OHZps2bZSAhli58G4cM2aM0gV0ffQBz1tXn/KFF6YW2OABag0hoT140Tesa9eutoTlHev1rFu3TukV33//vYopq8MKWKoJHtuHjtGsWTOVrb104R38wQcfqJABjz32mCqD5+i4ceNUn4jfCy4wLTYiDcFbx5DVXsJarES51bTQCAFYC9LWcsc0GGBe8IKFFoMYtBi7lTXExz59+ihPUTjGaXETHsVNmjQxu4Q3tRZWly5dqsIf6PGgEjhA5P7222/THANlOIb2foboqjUaZ9cSBGeIyxCgcQ4glKIPcLOyw6JuWgRt2bKl8nRFOURqhGXAXHEDQbeBqA/BGn3peNFY0O3LL780F7TTNxwwJ+1Brj1q0Z+jty84wUMbnsHwcnbki/0BAwaY3uTWzxGEbEeDOKwFYC0m4waFK+N17JP7eZMAPntu58ELlLio8WHGFxc+AEgjLzcNcV503B98aULwTW+FwtwcB/smARIgARIgARIgARIgARIgARIgAXcmgNik2rTwpPetW4hneMRdm6OHJkSNhx9+WOkCSMO04AivVfztjnJX1+ixeuS2b99e9avftAcv9qFJWEU6XQfxeq1PH2txF2OCQBd6TYyDBybmqA3Cop4H8qwLqmFMw4YNM8U9q0CJkBIYJ0RgbRBhYTourM7XW+3ZmZ4ArOtZtxBW4eWqw1Vq1qiDsd5zzz0qfMCBAwfMOMMQyHv16mXtRgmMOuQF4thCpNUCL+LgIpSDDrWgj4Fj4vwPHz5cwsLCzP50iAJkaK5m4bUEvI8RekEL2TieFmpxPuENrAVYNIHQe9ddd5nXDerjXKENzg8WcsO50OcO5xR5+txB2NXiLq6PO++8U12j6Ftzd7awHTjh2nHkC70Lnre4lq0e7PpzhHE4hgLBsXQ50lY2rowXbWl5n4C6No0L9aq+CPP+kHNuhDroufU/i4x6xx1BmKv/MWTUJ8tIgARIgARIgARIgARIgARIgASun4Crf99d/xHZQ14kgEfi4XkLMUyLeTdznPAshQAJAQ6ioRYtMSZ42EL4hQBr1WQgJlr1By0iWucBsRHxaCEiQkDVYqm1Tm6nISBDrIQgizE4CwPhyhjgnYwF7SDeQuCFwSMW3qyIN4tj5ITBqxWLuYErROnMNB6EjsC40A5Pj0OYTc/BEGI0YuiCDUR3iK6Z9Z/enHBcnGOMUYd3SK9udvNzcrzZHQPb5QwBCrwGx6wKvDmDnL2QAAmQAAmQAAmQAAmQAAmQAAnkNAEKvDlNlP2RwI0lgJAUELfhSYtwCTQSIIGsE4DA62G9U5T1pqxJAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAtdHAJ7XEHdhzuLoXl/vbE0CtwYBD6i8NBIgARIgARIgARIgARIgARIgARIgARIgARK40QQOHTpkHtIxzrJZwAQJkECGBHJ3ZbIMD81CEiABEiABEiABEiABEiABEiABEiABEiCBW5kAnizHInKItess5vCtzIZzJ4GsEMBnyIshGrKCinVIgARIgARIgARIgARIgARIgARIgARIgARymkCjRo0ELxoJkED2CXhkvylbkgAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJ3EwCbh2iISkpSQ4fPiyRkZFy9uxZ8fPzk9DQUAkLC6Nb/828qnhsEiABEiABEiABEiABEiABEiABEiABEiABEiCBXCeARQrdVuBFEO5x48ZJSkpKGlBt27aVHj16pMlnBgmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAnkFwKIXe2WAu+uXbtkwoQJ6jxgEsHBwVK2bFk5d+6cRERECJRrGgmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAnkdwJuKfDOnDlTnRdfX195/PHHxd/f3zxPCNtw/vx5c58JEiABEiABEiABEiABEiABEiABEiABEiABEiABEsivBDzczdt17969ylMXJ+Shhx6yE3eRV6hQoTR5yKeRAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQQH4jYEQ48HCrOW3YsEGNFyEZypcv71Zj52BJgARIgARIgARIgARIgARIgARIgARIgARIgARIIKcIXL16VbzwVqBAgZzqM9f7OXv2rDpGtWrVBAutrV+/XuDVW6RIEQkKCpKOHTtKqVKlcn0cPAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJ3EwC0HXdTuDFQmqw6Oho+fLLL01+yD927JgSfO+9914JDw83y5ggARIgARIgARIgARIgARIgARIgARIgARIgARIggfxGAOF33S5EQ3x8vDoPu3btwuClT58+8uSTT8rgwYOlcOHCgkn9/PPPgsXWaCRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiSQXwnAg9ftFlmznoy+fftK8+bNVSzeBg0ayAMPPKCKL126JDpWr7U+0yRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiSQXwgogdfdFllDrF1ttWrV0km1DQkJEV9fX5WOioqyK+MOCZAACZAACZAACZAACZAACZAACZAACZAACZAACeQnAmqRNXebULFixSQ2NlZKlCihFlZzHL+fn58kJCSoGL2OZdwnARIgARIgARIgARIgARIgARLIvwS2bNmSfyfHmZEACZAACZCAEwIFCxYUDyf5eToLAi4sLi5Oxdt1HCzCM8C0J69jOfdJgARIgARIgARIgARIgARIgARIgARIgARIgARIID8QUB6811Zac5v51K1bV3bs2KHE3cjISKlUqZI59osXL8qZM2fUfkBAgJnPBAmQAAmQAAmQAAmQAAmQAAmQQP4nEBYWlv8nyRmSAAmQAAmQgIWAl5eXeCAQrztZnTp1RMcNXrhwoaSkpKjhQ6ieNWuWOZXw8HAzzQQJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJ5DcCyoPX3QReqNI9evSQOXPmSEREhLz++utStmxZOXXqlCQmJqpz1KBBAwkMDMxv54vzIQESIAESIAESIAESIAESIAESIAESIAESIAESIAGTAJxevcw9N0q0bt1afHx8ZPr06YKYu4cPHzZH36lTJ+nSpYu5zwQJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJ5EcCyoPXXSfWqFEjVtC1jgAAQABJREFUwevcuXMSFRUlxYsXF8Td9fT0dNcpcdwkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkkGUC0EK9oPK6W5gG6wxLlCgheNFIgARIgARIgARIgARIgARIgARIgARIgARIgARI4FYigBANbrfI2q10gjhXEiABEiABEiABEiABEiABEiABEiABEiABEiABEkiPgIeHh3ikV8h8EiABEiABEiABEiABEiABEiABEiABEiABEiABEiCBvEtAefAiRAONBEiABEiABEiABEiABEiABEiABEiABEiABEiABEjAvQgogde9hszRkgAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJgABCNHi58wJrPI0kQAIkQAIkQAIkQAIkQAIkQAIk4A4E4uLOy649e2Xvvv2ye+8+iY2Nk+AKQVIhqLx06tBWypUNyJFpnIuNlVWr16m+0G+hQoVUeuHipZKSnCIN69eVsi4cK/HSJVmy9F9j7Pvk2PETcsnYDwwsp8Z9W+cOLvWVIxN0oZPsztmFQ7AqCZAACdx0AhB4CxghGm7JGA1btmxRJ6BevXo3/URwACTgKoHLly+rJupDXKCAq81ZPwsENGPcBAPnG2lxcXESHR1t/OiPlaCgIAkIyJkf+zdyDjwWCZAACZAACZAACdxIAvrvu7CwsBt52Cwf69+Vq+Xt9z6WhIsX023Ts3s3GfnwcPH18Um3TlYKdhtC7MOPP62qzp3+kxQvVkyl23XtpbbvvPGytGzeNCtdydJlK+S9jz7LcNwD+vSWR4xxGyu42/W5cs06JWJXqxImYZVD7cpu1E525nyjxsbjkAAJkEBOEvCCvksv3pxEyr5IIHcJJCQkSPv27SUmJkYWLlwolStXzt0D3qK9jx8/Xt599125++675c0337whFHBOX3zxRVm0aJF5vFdffVWGDh1q7jNBAiRAAiRAAiRAAiTgPgQQF/GrbyfKtOmzzEHDg7ZO7VpSsoSfHDl6XP6cv0gJqHPnzZeoU6flbUOALejlZda/WYl1GzbJq2+9Zx6+d4/bJaxSqFy5ekUORh6W2XP/VGXTZswWP7/ics/g/mZdJCZN/lkgNj80fOhNE3jtBsQdEiABEsjHBG7+/xouwo2IiFCPhGTWrFy5cuLv759ZtWyXn1hzRLZ+s0Zi9pyWxJgE1U/DUa2k/iPNs92nOzY8tGCfrHx9kfhXLyPdxvdzxym43ZgnTJigxN3WrVvnqLj7+Vfb5J0PNkm/uyrLZx+1djsuOT3gO++8Uwm8U6ZMkSFDhkiNGjVy+hBp+hs7dqwp7t5xxx0SEhIidevWTVOPGSRAAiRAAiRAAiRAAu5BYNHif0xxF+EYPnzn9TShGP5z/xB5f8znylt27fqN8uNPv8jw+4bc9AmO+/4HNQYI0V9//lGacQ+7Z7A8/vQLhkh9TL6d8KPc1rWTlPYvddPHzQGQAAmQwK1IwO1i8E6aNClLAm+XLl0Er9ywmJ1R8ud908yuCxaxxTTyLOhp5rlTInLhPjnwx27xDy8rdR/M2qM6en4pF5OVwH3xmsit87nNHQLw8BwzZozq/P7778/RgyQn26K1XLpkC/+Qo527YWdlypSRvn37yvTp0+XDDz+U7777LtdnsXLlSnWMJ598Uh5//PFcPx4PQAIkQAIkQAIkQAIkkHsELl1Kki/HjVcHCA0Jli8+fl+KFi2S5oBFfH3l5eefluPHT8reiP0y54+/5P6hd6cJeZCmYS5mXLiQoMaCQ/S5s0cacRf5JUuWkOdHj5JHn3wWu7Jnb4SUbuHa35OqId9IgARIgASuiwAiM7hdiAbEo0RcSmcWHx9vir+5GXtp989b1eFLGV6rHT/rKcVDSjobjtvknTt4Rg7+tVcuZ0PYK+znLeBQsmppt5mvOw90xowZavjBwcHStm1bd56KW4wdIjoE3iVLlsihQ4ckNDQ0V8eNJxRgNWvWzNXjsHMSIAESIAESIAESIIHcJzBv/kI5e872t+swQ7B1Ju7qUSAkA4TUdz/8VLXZvXuv1KpZXRcr8XT273/Kjl275dSpaJUfEFBaWjRtotoFlMnZv8dOR8eYxy4g9rF1zQIjUbN6VUGM3fgLF+T4iZOq6MNPvhCElTt8+KjaX/D3Etl/4KB4enrKS8/912yOeMQL/14qixYvkxMno+S0sQYFvIWrVa0i3bp0lE7t25h1rYm/jQXf1hmeztt37jaebDxjLPhWVmrXqin9+vSSioaXdFYNQvrmLdtU9SaNGsjt3TpntSnrkQAJkECeI+B2IRpGjBiRLsRffvlFNmzYIL7GHdDcjEsad+isGkPobdXcXtxNF2YWC4LbVxa8aLlPAIt+TZw4UR3owQcfVD+Qcv+ot/YRatWqJU2aNJF169bJtGnT5Nlnbd4JuU3F5zoX1sjt8bF/EiABEiABEiABEsgvBPCU1sGDB12aTseOhvjYqVOmbTZv3a7qlCldWtq0zDyU3+1GiIOundoLlkH38PQw+/9zwd9K+DUzriUORR4RvBYtWWaEUPgwR8MjBFcobx5u+qy50qhBPTvBWRdCtP32y4/1rtr+bYzHupicHicKtcAbH39Bnhj9giH8HlJt9BsE8TXrNqgXRN97BqWGAbx4MVHGfPalLDBEYauhD7wggL/+f89J+zatrMVO0z9OmSbfTZysytq1aSmdOtB5xikoZpIACbgNAbcL0ZAe2aSkJNm0aZMqbtmyZXrVspdv/Ad7Yu0RUf/TGj3En4hT/STFJcqJ1YfNPosG+UmxYD9z/4wRnzc5PkmKVSwhvmXsH8WJPxYnF06eF+9SPuJXKTVO0fmjsRJvvLz9faVEmL+c3RctURuOyaVziVKqRhmp0K6S3X/25sEsCRz3XESMxBqeuV7eBaV4aEmp0DpUPL1T9fyze6Ml8UyCahV30CZYJ0RfsJsPCsvUCxQvn4KW3kUSTl+Q+OM2BrqgoG/BTL14ky8kyanNxwXHvpx8WUpU9pcydcuJb0BR3Y25TYq7JAiF4WGEvSjbKEgxj1p/TGINcd3P8Jiu0L6SFC7ubdbPicTp6ERZtvy4HD12QZKSLkvp0j7GHekS0qhhGWORg9QfWPpYyclXZN2GUxKxP85YDCFBihUrZNy99pPwWqWkbID9yrcXElJk0xbbnfbGDcqIt7en7sbcJiZelvWbTqv9+nX9pWgRe+6RkZFy8qTtrnhmPyg3b4027qKnqPF4eBSQVWuijLv+Z6VKmJ80aRQgQeXtr0dzENcSV65cNeqfkzXrT8nZs5ckvGZJ6dihgnh5Or97f/zEBTlw6LyUKlHY+OFX0rhjn2L8KIuSjZujxa94IWndKlBqVCthd5hjxy8ofsePJxhjTZbKlYpL1Wv80jsOOnD1PKEN5rN1e4ya0+Ej8VIxuJjUMxg7jgl1HQ2xcCHw/v333zdM4HUcA/dJgARIgARIgARIgARyhwB+V7saiiuz3+J6pFq8rFu7ZpadMyCYWg1erfDqhdUJryl33NZFqlerqvbhGTt12gzl+bp67XrpcXtXlZ8TbxhHn953yIzZfyiP4kdGPSONG9aXVi2aSe3wGlLZeLLNy8t+rPq4r7z4jJw3nq79+LOvlNDbvm0r1c7TI/Vvqu8nTTbF3fuGDFSLzgWVD1TxfD8Z+43yBv5p6q8yZGBfc1F4xPnV4i76hJevf6mSsnHTVpk+63fF4dU335Opk8ZJ+cByejhptt+O/0Em//ybyu/ZvZs89fiILJ+fNJ0xgwRIgATyAAEVoiEPjCNHhgBxFyuUwpo1a5YjfepOIEZaY+7q/O0TNghe2uo/2kIaPp4qLq96c7FErT8qLV/tLDUG19PV1HbX1M2y7bt1UqV3LWn73u1m2f7ZO2Xj5yulkuEdXLikj+yeusUsQyKoZYh0/vou8SyU9j9TxMFd+doiQUxdR0Oc4B5TB0vJarZHdzZ8ukIO/217HFzXjd52Uv68/1e9q7a9Z9wr/rUC7PIO/L5b1r631C4PYRrunD3ULs+6E70jSv5+dLYSta35SLf/6A6pfEcNu+yYXafUWDDuVm90kaVP/2FXXqRcMen+wwAlntsVZHNnxuwD8thTy522hiA6+9fb7MrWbzwtvfrZVo21K7i28/mY1tL3zspmUYohBg8YskDtj/24tfFjKbVMV5q/8Ig8MmqZ2t21aZDONrcHDhww0wEB9ufELLiWePr5VbJr91ljxdpaMuWXfUpAtdb59st2xo/DEGuWXfqlV9fKpJ/22OW1bR0oP3zXUQo5ufZm/35I3nxng7RvW14eeTBcBt670K4tdub8drvxo7CMyn9w5D/yx1+Raeogo3WLcvLlZ20ND4S0Ar6r5wn9RZ26KE89u8JYtOI4du1s5MPh8tx/G0jBgqk/Nu0qGDtY6AyG8AkpKSnGD9nUGyWqIIfe0DeNBEiABEiABEiABEjgxhKoVKmSwCN38eLFWTow6mbF8PQdFh+DBWYgNmbW19btu8wq77/9mvhanvQa8cD9hhPJNtm9Z58ZL9esnAOJx0Y8IMnJKTJ33nzV2/qNmwUvbS2aNZbmTRsr79diRVOddpAPg+cvxoYQDvBMttrqtba/o4cboSvuuyf1bx8Is089NkKeeek1JQ4jBEPp0v4SFXVK9Yc+IHKPfuoxM0ZxdSOkQ80a1WTU6BfVIVauXmcsHN3TejiVvmK4Rn/5zffy64w5ah/ewQ8Mu9cUkNM0YAYJkAAJuBGB3FEqbgKA5ctt4lzFihXFzy/VizYnhoLHYxo/bcT/MTx5YdsnbVALi1XsVEUCDA9XbWUbltfJ694iJi6sWt/aUrR8cdnz6zYljh5bGSkH/9yjhGHrQVISk2VO38mmgFp9QF21aJryMl5zRI4tPySXYhPNJhCW9djRJzyR4X1cvX9dsw4SRcqm/ketCwLqB0r9kc3VbszOU3JkaarwqOtYt4lnLqqxIQ+eybXuaaA8iw/M2y0QlSHeFi7hLUGtQq3NVBpevygPbF5Rids4VtTGY2qeW75ZI63/1y1NG1czYmOT5PmX16hmjQzv2k4dgpSH65GjF4wFDg6mEUdRMS4uSdWvWaOkERsqSEJDiklyyhVZvPSYEUfqqDz+3+XK67dXj1BVz8+vkAzsFya//LZffp4W4VTgnfqrTZjvd1dl4xq2LdynGl97279/v0rVqFFDPCx3v611HNPjxu9UWU89blwPpbzlt5kHBN69EFjnz+lh3ClP9R7XbefOswmvg/pXkQpBReWnn/caMbESDO/mEwaPSOPHUmVdNc0WXr//GbFU5fe6I1SCg4sasWvPKzE30RLj+fDR86oO+qpRvaQa29Fj8fLNdztl+aqTcueAv+SfBb2NO+kFzGNk5zzBc7rLHXMlOiZReUQPv6+G4b1bVLbvOCMTJ+8xfuDtkEKGl/iz/61vHscxge8UbYcPH8618C9bt27Vh1FhZswdJkiABEiABEiABEiABHKVADxysyrwZtV794IRg1abj3daxwVdltk2tGKwPPnYw1K8eHE7cRftEhMTjb9LbL+rUwwhNqcNXryjn3xUBg/oI/MXLjaeClxvJyRjH69vvpskw+67Wwb06Z2lIVw1hNYhhrianJwszZo0StPm1GnbU40oSL7mBLFsxWqz3rChg01xV2fWr1tbRj36sKBt8eLFdLa5heA+5tMvTbEa4nV/I2YvjQRIgATyAwF8x+ULgTcqKsq4oxelzkmrVpnH23H15BUwRKa6DzY1m0F8TTS8ZUM6V5Gqd4Wb+TmdaPma4fk7yOb5W29Ec1nw4HSBGHvIOD4EWqtt+269Ke72+OVuU7xFHYwd3ro+pX3NJqFdbY/1IOOq8Q8Cb8kqpaXuQ6nzNCs7JAIalBe8YBGGx3FmAu+Oiba7s/DG7fXbECkaWFy1rWl4Nf81/Dcl2G76bKVTgRcV4d3b7oPuUsAINYDxbf5qtWw0PJD3Tt8urd8yBN5UDVD16+rbtOn7lYiLkAhTJnWWYkVTQyNAGN1/wLYwgrXfalVL2Hmk6rL7hlSX3v3/UqEHJvy4W7TAi/JB/asqgRcCpi1MQKp4jnAFEFBt9aqorePbvn02AdjVBQStnrODB1SROwf+Jdu2n5Gvv9shX3zifOGCd99sLkOHVFNDGPVoHRkybJEa39x5hzIUeCEEI9TCwgk9JKRi6g+r/QfijEUlUrk+81R9adIwII2Q3bRxgPL+PXAwTlavjTIe5SpnYsjOefpq3HZT3F00r6cSd3WHCNHw1LMr5ZOxW41zU8WuTNfBtnx527WONLyocyO+N54+mDlzJg6hzNVzrNtxSwIkQAIkQAIkQAIkkD0CDzzwQKahGrLqvYsRWD1aT52Ozt6gjFZhlUPVCx2gn30RB4y/JY4a4dEiZbkhelpj3Wb7IJk0ROiE4fcNUS+EXti7d79s3bFTEGsXXsoYwxdff2+Irh5OPWcdu8ejxDqcBEIt7ty9VyIjD0uksSjbjl17jNBqOxybGCEbbH8rwRsYMY2dGUJKpGcfGeKuXvAOdapVDUuvKvNJgARIwO0IwAkwXwi8K1asUPAxoTp16rjdiXA2YIih1fqlzgUiMxZ1g8DrGP8W7bdPWK+6gZirPXOt/cLb+GZZxBybFynEai3uYiyICVznwSYS9cgxObXlhBKoEXrB0SDqQtzVFtqlqhJ4sX/JiINc2C/7d8TRh5fl8XzHWLvGbw8Vtxb1rFYhqIjh3VrEmmWm+9xZSQm8EDWtBvES4ifEy+mzDhixnlK9pWfNOaiqQhRt3rSstZmZ3rt3r63OtZABZkEGiZbNy5lhEVDNx8dLhg+tqUIWzDSO+elHrdPE1YXQPXhg6vUCL9oet4cogRfxiTOzd95oZifuon5YZZuor9t2NuL5OrMWxnhxfMTkRVxfq7l6nrA4xZjPbF6xr7zYKI2Ae1evSvJ/r69Tx1q5+qRRnjpn63ELFSok5cqVU/GPrWEyrHWym37mmWck3viRvGvXLjly5Ij4+/vLa6+9pjw0stsn25EACZAACZAACZAACbhOAKEa8EpvwTWIu1n13sXRIWJCjNwbsV+OHbeJk5mN6lxsrBlv947bu5oLsy1dtkIm/DhFLaiWWR+5XQ7hulHDeuo17N7BRhi0FfLeR58pkffzr75VcXuz8rRhzJmzMmnyz2phtKyM+djxk6paQIBzcTezPqziLuoirvGEbz4z1ka5vr8lMzsuy0mABEjgRhDIFwIv3JDXr7eJmw0aGI/+e3ndCHa5foxSNQPEw2FhLx8jvAEMi6FZDd7ECGUAq2h4Feclu3L5iulZjMXSHC2gfqp35IWoeHEm8FoXoUN7hHnQlmSEnbhegbd712B56dU1SujrPeBPGdSvilpYrbrhpVu4cNpYx/rYFy+mKKF2rbEQ2ZGj8cYd4Uuq6Pz5ZLVFWACrQSyGV+xrb62XyVP3Go8Q1TFCLRRQa/dN/tnmnTtkUFWVZ22n0/rHB+5yZ9WaNw1IU7Vh/dQfRaeMxeHKB9oL1eG1SqZZVK6MseAc7PTpi2n6s2ZAnG1jLKiWFdu566zAK/dgZJxa2O6yca3AIO7CNEe1Y7y5ep6iohJ0U3l/zGbjR/Eec18n9LF27Tmrs5xu8fgYTJ8Dp5WykTljxgyzVZEiReSRRx6RDh06mHlMkAAJkAAJkAAJkAAJ3DgCEHBdXXAto9FVrFhBCbyIWxsdHaNiyWZUf9fufSrkAercbSwuBlvw91L533tjVBrxaW8zFharElbZ+A1f1ggrFygffDzWXHhMVcqht0+/HCdLlv5rxLatLu+88XK6vWKxs0OG9+2EH6eqOpGGd3GlkNQQZ84aIrTEMy++ai6y1rljO2nUoJ7hQBNozKm8ILzFvcMfsWvq42MTYhMSMv57xK6RZQexiz9453VjfY7T8sbbH6hF3MaN/1GeGPmgpRaTJEACJOCeBPBUsBfesnKHLa9OEXEr9eJELVu2zKvDdHlcvpZwCrpxASMWsDOLO5oaQqCoEw9YZ21uVF5idKrIZhVm9fGt4uyFE0b8KEtMY9SBJ7PjgnLwZtaG+E3Xa2XL+spzTzcw7jxvUqELtm1fq7qEWPn4yNpG0P/qUryYfUzcfRGx0nfwfPX4v/X42vvUmmdN39WrshJ4Ecpg1RpbCIKNm08bjyPZYmf1syzMZm2HdPXq1WXDhg3pehU41se+v79NmLWWWeP7YhyOAm9AmbRtPL1SmVv7ckxXqpTWA9uxDvZffWudfDs+dcEI5IGd1SCgW83V8xR5JN5sDrHdUXA3C43EJUt8YGs+0gnGD8yYmBiVDa+OnLQ1a9ao/rds2SIvvfSSvPXWWzJ//nyZOnUqF3vISdDsiwRIgARIgARIgASyQCA9L15XvXf1oSB+Llr8j9qdMecPYwHkobrI6XbpsuVmfo1qVVUaC5XBatWsLh+//5Z4Fy6s9vVbboVo8C9ZUoU0WLl6rYqVW7Cg/W91fXxsg4NTn867eNHeycVaT6e3bttpirtvvvKCtG3dQhep7RnDu9fRQq4dA4u2paQYsSa90jrijPnsK9mzL0LqhteSR0f8x64LLMpWu1YN9cI5wbzAFsdG/F4aCZAACbg7AUPbdS4ausvE9OJqWFgtODjYXYYtV695K+bEgL0Kp3otX75kL4rlRP/X04eHsYCVtqvJl3XS3F69kirQOgq5ZqUbkIA37eY1/eWlZxtKR2PRNBi8O9/5YJP0H7IgzQhGjV6hBEOEVPhpQieJ2H63HD8wVPZuGyzTJndJU19nlCntLVh8DPbrDNuiadONhc9gXTpVMEIBpHonq0zLW9Wqth95OlSDpSjdZEqyzSvWWsHKvKAlPIW1TnbTJUvY/+B01g8WotPi7siHwmXNsj5yZN+9ih34NWmU1utY9+PKeSpcOPW7beWSu9T5wTly9kLM4fQMoRO05XT83dJG/DAs4tazZ09BuAbYunXrBIu50UiABEiABEiABEiABG48AcTidTRXQjNY27Zu0UyFaUDeTz//Jv+uXG0ttkuv27BJ/jIWMoN1aNdaECbsiuHMAkET1qJZ4zTiLsIObNyUulCvqphDb9WrpT4ZCk/XjGz1WtsTtaiDsBSOlvoXn61k/6FDZpWWzZuaaZ1wximsss3RAoL2P8tX6qrmdv+BQyrcA3iVcRLGwcc79e+Up0eNNBese+vdMZIVUdo8EBMkQAIkkAcJwPnRIyc8IG/W3OBVp8WXvOi961XIJm6mJKYVXRNO2YdZuB6GxYL9zObnLd68ZuZNTHiXTPUGdTbni5ZwE87CM9zIocNz9dERtWXy+E6yZe0A4w57LXV4LEgWsT/VSxqP/m/eGq3Kxn7c2vgBFiS+vqki+5GjqefWmYMxFjqDITwB+vrtmsB79wCbgKsKnbxp71Fc89pr3Uk1u6woIwSDo52OTr2rXs7wXs5JQ8iJzGzR4qOqCoT0l59vJMEVigri/Grbtdt2x97xh6Auz+p5qhSSGvc3I+9d3W96W/0dg/LAwKyFn0ivr4zyO3fubBbrRSPNDCZIgARIgARIgARIgARuGAHrYmrWtKsDQBzeEQ/cbzZ7+bW3VdzZyMNHBE/Swi5cSJCp02bI6BdeVfsIJTBq5EMq7WG01wuK/bt8tcTF2Z76QyFi+z774mvmImtx51OfXlONr/MNXq11wmuqXqZNn6Vi1mLcVsOib2O//k4WLFqishFqwcviWVuooO0pSIiu0TFnBAu0wQIsi6QtXLxU5eEt8dIlJYQjNq+2+Hjb31atWzaT0BCbQxdCLKxYtVYQrhGvDZu2GAsnf6ObSOvmzcy0s0Rp/1JmaIbT0dEybsIPzqoxjwRIgATchoCKwQuBF//xuKOtWrXKHHaTJk3MdF5JeF8LsxDvILpeSbkix1fnnIcewhhA5D1/JFZ2Td0i5VuGuISgUFHb3UzH2L4udZJeZePSKlW9jJzZY4Qh+DtCKnWvblfzyNID5n7R8ll7vN9skIsJeNo+P7qBjBu/Ux1l/cbT5mJr8RdSBXtfY9EyR5s2PcIxy26/dctACTQ8dREeYcQTy5SnMMITaM9hu8qWnbCw1Lvh8PDMijfpH38dlpeea2R8xlM7WrLsmLlT2v/GLypwPt4Wz7aIRRTXA1qx6qQZg1fnZbTN6DwhFAXmB3EXC8o1blgmo67SLYuIsJ3PunXr5mo4G6t4rGP+pjsoFpAACZAACZAACZAACeQaAXjsYrE1vLLrvasHhwXJPjRiv77yxrtKjB3/wxTBC0Iu1mCAwKgNeW+88ryULFlCZxlP+bWTKb9MV4Juz35DlMh56lS0KexC9DwUeUT+XbFKHhn1jHz16Qdm2+tJICTDG//3vDz02NNqjH8u+FvwwhgDjfi/cXHxdmOvWztcRo961O6QFSsGydbtO9TYMD7YPwvmSL064aofeONisbPvJ/4kBQt6qbi4qBNcIchY48T2N8sTT79g/F02Stq1aSnPPPW4PGMI4Wj34qtvoarZj9ox3v77+CNSvnw5vZvu9raunWTxP8tl7fqNMmPW79KulRGqoV6ddOuzgARIgATyMoFr4Xc98vIY0x0bBo/4lbAqVapIUWM1z7xmxSuWVEPaN2uHxOyMsg3PcEvc8vUawcJoOWmNnmytuotcuE+2frtWrI/hp1xMlrXv/SOnt550esii5W2ejtHbTgoE1ytOQik4bZjFzJpD6quaB/7YLUeXHTRbxR0+Jxs/tz1eE9ajphQukerta1a6AYnpsw4oL1rHmK/zF6beoa5dq5Q5kgpBqYuSYXG0y5eNk2oYvHXHfr1d1qw7ZdZ1loC36tAhNqFb1x16TzXjR03Gn8XyxoIDEBlhc+bMcdZ1mjzE9v1+Ymqs24OH4szwCPBWzorHbZpOrzOjciXb9TZ3XqRanE53dyjyvDz3cvqPrbl6ntDvqy81Vt1P+GG3WhBPHwtbnK/Va6Pk0Sf/ldhY5wvX4Xvm559tHgTdu3e3NmeaBEiABEiABEiABEggHxOAsHs93rtWNE0aNZBJ330hiMkLgRQGkdIq7nbv1lmmTPzGCFfWwNpUht83RPr0vsPMg5iLthBBP/ngf0qE1YUnTtj+3vP0tD1JinxPj9S0rmct13nOtqVKlTTGPVYeeXCY3bgRDkGPHQu/PTbiAfng7VdFL4Sm+7pnUH/DycL2t6DOw7Z0aX95961XTI9c9HX82th797hdvvvyY7njti6qCeaKFwwxdCd+O1aFq1AZxpsuwzj+99pL0rvn7brIbus4Zzi5IVSDtrfe+1h5A+t9bkmABEjA3Qi47SJru3btMhZGuqR458XwDBhYlV41ZdPYlZJ8IUlm95ks/rXKSkpCksQeOqsWD0N+Tlnl7jXkwO+75fCS/bL+o39l10+bxb9mgCQb4i6EWxyrYsdUD1DrcQObBwvCI1w4eV4Wjpipxlasgi3sQ4dPeohfpVRx89SWE7LOEIu1xR+PU0l46P5xt00IQ0aZeuWk6XPtVVmVO8Nl+/j1at4LHpohZRsGiZe3lxxbGanK8VZ/ZPoxUM1KuZTYvuOMfPP9TnniaZGWzcsp71p47OqFzxBSoXZ4KoPChT0Ngbaa/PDTXoFwOPePQ6rd9p1n5MDBONNrNKPh9u9TWS3qpuv0zWBxNV0H26FDh8ro0aNl/Pjx8vDDDxs/ojIXxV95c53MmH1QSpQoJEuXHVfdwWP4gftqWLu+Yem7elUyVvvdrI7XrO0Mxc7b21MQmxeW3kJ1rp4n9IVjzZ57SBYtOSqP/3e5fPz5VqlerYRaVG3rthhz4bVXXmwsqYFO0NJmiPGtQzT06dNHZ+faFl4cFy5ckPhrj6/l2oHYMQmQAAmQAAmQAAmQQIYE9IJrGVZyoTCgTGl5/eXnVAsImgcORhphGq5KUBCe7isrBb3SPhmIysgf9ejD8qCxQFtU1ClJSk6WihUq2Impf82eJoePHJWQihVU/1WrVFaesmrH8gbvWVetiK+vDOp/l/Tv08sQdWPkpDGGc0bs3xJ+xaWMMadAQ1hFKAlnhnl99O4bzoqUF+/EcWMFYR5ijEXVSpbwk7JlA8y+nv3v4zKg751SuHAhKWfkaysbUEbeffMVJcaeOBmlQlzgOMWLO38aNKM5o9+MyvUxuSUBEiCBvE7Ay/i/wstdF1lbvXq14otJ1KpV64ayLnAtXmhmoS2KVSwhbd+7XZY996caH7x4EU6h2Ysd5OLpC8rTtoBjzFL9n6PeWmaWpq6lTIz/Uzt90Vv2TNsq6z5YpsRaCLbaKnaqIsWN8TgzL++C0n3yQCUKR8zZqbyLIdjCLifZL4yWFJsoURtTH/G39mfNL1jUFm8J5Vg8reevQ2TV63/L/t932bWH6N3+o+52IjLaZDRXO+5OOKG9K1a/bmmpVtVP9u6LNVZTtd311u0h7r5shDhwtP97obGxmuwVI15WhBIJ5xgiL2xgvzAZMqia9OpnO+fpDa98YBFp1iRAefvi+DWr27y9VScZvN12223yzjvvCOJPz5s3T/r27ZtBbTF+RDaRefMj7byKMdeJ4zoaP6B87drqsdrxvVYjvR9tugPtCay3Ot/ZNjSkmEyd1Fn++9xKFaZCM0fYiq8+aytjv9quBFnHvrJzntDHxG87yA9T9srb721UAjxEeG04Zu8eoVK8WEGdZbedOHGi2h80aJD4+/vbleXGDsJwbN26VVauXCndunXLjUOwTxIgARIgARIgARIggZtMAHF1dWzdrA4Fnr+VQkOcVofnrHVRNKeVrjMTHrAQRK1i63V2qUJFQrDFy5npmLvOyjCeCkHlnRUxjwRIgARuOQJYp6mAEYPX9nz5LTb9LVu2qBnXq1cv12cO79nYA2fEwxA6S1TxFw/PjB/Fz4kBJZyKFyy45lnQU8XnvVnhDxznkpKYrFhcNsRRv9CSUtjP27HKTdtHrNYTJxKM4P9Jxh3kwhJUvohxJzhVqHY2MLSBp29h49zCMzSzMAu6D4SDqNf0VxVv9qN3W4peeE2XZ7SdOXOm8uJFaJK//vrLaQztTt3nChYr+/TDVsbd9jDjbnuiIDxDRWNBs3KGqJkXDAI5wjKcOXvJeDyrmPHDLnNvZIw7O+dJzxeL2h0+Gq9CU0DcDSxXxC4+sa6H7f79+6Vr164qC4Jr2bJlrcW5kv7iiy9kzJgxqm94jYSGhsq9994r7dq1y5XjsVMSIAESIAESIAESyC8E9N931nUr8svcOA8SIAESIAESyIiAWmQtowosyxkC8NotXSfzQO85czRbL74BRQWvvGbwFobXbl40LMjl6qJj2WmDuf/8a4S5mNgdt1d0CUevXr3kzz//lJMnT6qFH7Ky2BoWI8MrLxnE8KpVnAVGyHiU2WWOXuG17Oi5nN7REOM7PDxcEJrhRoi7GMfw4cMlISFBZs2aZS7s0bZt2/SGyHwSIAESIAESIAESIAESIAESIAESIIFbnAB8d902Bu8tfu44fTckcOJkgiDu6/JVJ82Fzx4aXssID5Cxl7DjVPE40rhx4xyzuZ/DBO6++27B60YaYio/88wz6oUF3s6fPy/e3nlLmL+RPHgsEiABEiABEiABEiABEiABEiABEiCBjAlAJ/JyFm8z42YsJQESyA6BFYaw+8TTy82mWNDtuafTriprVmDiliaARyz8/Fz3cL6loXHyJEACJEACJEACJEACJEACJEACJHCLEVAevBR4b7GzzuneNAJY3Gzkw+Hi4+0lDeqVlhbNyhqr3zpfLfd6BzmoXxWJOp2g4gJfb19sTwIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkkDcJ4Ang3FGX8uZ8OSoSuKkE6tb2F7xuhD04vOaNOAyPQQIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkcBMJKA/e9I7f89mY9IrySX4FNY/BUQlyd1fffDInToMESIAESIAESIAESIAESIAESIAESIAESIAESOBWIYAYvB5QeW9lm7ro4q08fbeb++XLlwUvWvYIJMfFyYWD++Xc5g1y6XRU9jphK6cEzu/bLbE7tkriyRNyJTnZaZ1bKZOf1VvpbHOuJEACJEACJEACJEACJEACJEACN4uACtGQWQzeKuWK3Kzx5fpxj51JlItJl2XKAvf34k1JSRGcUKtBwccrv9jOnTulZ8+e4u/vL6tXrxYsQuVoV1OSZd1/hsil6FNSoe8gqTR8hGOVW3I/KSZatv/fMxL193xz/rX+738Scs8wc5+J6yOw842X5czalWYnVUY+JVVHPWPuu2Miu5+npKQkqVnTFiZk6dKlEhwc7I7T55hJgARIgARIgARIgARIgARIgARIIM8TgD6WViHL88O2DbCQET24Wwsv+U/vQjJqcCG5t3tBaVHHNTGzVNGCqrP84MV79913K0EFoop+vfvuu25yNrM2zLfffltVHDZsmFNxF4UFvApKjWf/T+Ij9sru996QM+tWZ61zN6q1/uGhsu+zD10accSXH5vibuDtvSRsxBPiV6eeS304q7xm3SkpX/kHqdtkmrPiWyqvQt+BUumBkVKyYRM1bzCPWb3crRlk9/NUqFAh+c9//qPm/sEHH7g1Aw6eBEiABEiABEiABEiABEiABEiABPIyAeXBixANmXnx5rVJNKvtKf07FxRPizwdGijSsIan9GjjJZ/+nCSnzmQeesKnkKfgBS/ebfuTpU6YTfDNa/PNynjCw8MFogps69atcuHCBclr4TcwnlGjRqlxPfvssy559f3zzz+yatUqNb+BAweqbXpvxcPrSONvfhAIoZtGPSRt5i6WQv6l06vudvlXEhPlStIll8Yds3qFql/1idFS5dH/utQ2o8opKTav8cREhs0IurO/DZVxnS/v3VnO79kl5zauF//mrTNCmOfLsvt5GjJkiHz//ffyxx9/KLG3Xr3rv6GQ52FxgCRAAiRAAiRAAjedwKlTp276GDgAEiABEiABEriRBKDrWiTSG3no7B8roFQBGdg1Vdw9d/6q7DhwRRKTbH36eheQJwYWMkTrrB0jv3jxvvrqqzJ58mT16t27d9Ymf4NrQeCF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FyutMUiABEiABEiABEiABEiABEiABEiABEiABEiABEiABLyLADJ4fejB610fGmdLAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiDg4+NDD14+CiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiTgjQRUBi8tGrzxo+OcSYAESIAESIAESIAESIAESIAESIAESIAESIAEHnUCSuB91CHw/kmABEiABEiABEiABEiABEiABEiABEiABEiABEjAGwnAfpcevN74yXHOJEACJEACJEACJEACJEACJEACJEACJEACJEACjzwBevA+8o8AAZAACZAACZAACZAACZAACZAACZAACZAACZAACXgrAXrweusnx3mTAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQgEHAhxRIgARIgARIgARIgARIgARIgARIgARIgARIgARIgAS8k4AvjHgZJEACJEACJEACJEACJEACJEACJEACyUPg6LHjsmrtBjlx4pREnz4tWbNkkZw5g6V0yeJSo1plgX8igwRIgARIgASSSsD3zp07QpE3qfjYjgRIgARIgARIgARIgARIgARIgAScE7hy9ap898Ov8u/mrU4rzJ2/SELy5JY3XuknRQqFOq3DQhIgARIgARJIiAB0Xd+EKvAaCZAACZAACZAACZAACZAACZAACZCA+wRu3LgpX37zo2zbsUs1LlqkkNSsVkUCArLIuXPnZcOmLXLw0GGJjDohn3zxjXzzfx9JYGBW9wdiCxIgARIggUeeAC0aHvlHgABIgARIgARIgARIgARIgARIgAQ8TWD7zl2muNu5wxPSrXN7uyE6tW8j8xYslt9HjZXzFy7I1Bmzpc/TT9nV4QkJkAAJkAAJJEYAGbw0+kmMEq+TAAmQAAmQAAmQAAmQAAmQAAmQgJsE9u47YLbo2LaVeWw9aPn4Y1KxQllVtGvPfuslHpMACZAACZCAywRo0eAyKlYkARIgARIgARIgARIgARIgARIgAdcInIyOMSsaS9/EGw3q1paoqJMSGxsrN27cED8/P7u6q9asl63bd8re/Qfl7LlzkjM4WEoWLyqtWzSTvCG57erqk01btsm1pDncAABAAElEQVS/m7bKvgOH5FR0tBQskF+KGRYRDevVlkKhBXU1tT92PEJlD+Pkpb7PysLFy2Tnrj2y/2CY+Punl5IliknFcmWkft1a8a7fs3nrdlmz7l81x8uXr0i5sqWkbOmSUrdWDcmYMYPdeDwhARIgARLwLIFbt25JGmORtQT+U+PZAVNTb9u2bVPTqVChQmqaFudCAiRAAiRAAiRAAiRAAiRAAiTgJgH977vAwEC3Wk6ePFnCw8PdalOrVi3BlljMnrdQ/vhzgqqGTN2e3bpI+vTpEmtmXo+NvSa/jBgty1etNcscD956/SWpVaOqWXzt2nUZNXaiLPhnqVnmeNDn6R7S8vEmZjHE3P98MlSdQ8y1Zh6blYyDenVqyovPP2N3D/AZHj1uorKasNbVx/Ad/u97b0qmjBl1EfckQAIkQAIeJpA2bVpJO8QID/frFd2dPHlSzTN3buffeHrFTXCSJEACJEACJEACJEACJEACJEACov995+/v7xaNrFmzyq5dtkXQXG3YpUsXl6oGZMksS1eskps3b8oBYzG1f5askJjTZ+TW7duSKUMGIzs24bmOHjdZFi1ZrsaqXbOaEoifaP245M6VUyIiouTq1ViVNduwfh3JnCmTqjdhyjSZ8/cidVy6ZHHp91wv6dC2teB4/8FDqs3mrTskNLSA5AvJo+qdMjKNl65YrY4xv1w5g5UXcNdObaVypfJy5cpViTpxUo4dD5fr169LpQrlVF38mD5rrkybNU+dt2nZTJ7t2U2aN20swTmyyw5DOD5z9pzsMawqHmtYz2zDAxIgARIgAc8SoMBr8KTA69mHir2RAAmQAAmQAAmQAAmQAAmQwIMmkFSBNyAgQE3V1SxeZO7mz5/fpdvLkjmzlCtdSlklXLt2TbAdOBQmsFyYOXe+LFu5RqJjYpTQC0HUGtExp+XrYcNVUZNG9eXVF59XdgzZggKllJFlW6RwqCxdvkpdhyBbvFgROXkqWr767idVVr1qJXn/7QGqTdasAVIgfz5p3LCurDCygSEMHzQE5+ZNG4mPj49h4XBP4EVfX3z8gZQoVlQCDfE7b57cUsewWYiMPCHHwyNkv2H58JgxH9guYI6ff/WdGg9ZwV06tJXs2bNJkDFHCMqYE8aDaFyhfFnJYVxjkAAJkAAJeJ6AWmTttvHtIYMESIAESIAESIAESIAESIAESIAEHkUCrtgtaC7u1EUbiJy///S1DHy1v9SpWV0yZLiXtQtBFjYO7w/5TD748HMl0Opx1v+7SR/Kk53axfG+LVOqhMqybd+mpWQxMoUR8NzV8fRTXSVtWvs11ZHl+4yRYYvA2GGHj+rq5r5ju9aS9a7orQvRT4+uHfWpMc4Wdbxpy3a1R31k7ToGMn3LlSmlirUY7ViH5yRAAiRAAp4h4Itv7BgkQAIkQAIkQAIkQAIkQAIkQAIk8KgSgO0C/HgTCnfFXd0XXp2tU6u62pBgFRF1Qg4aC5hturswGert3rtfhnz6pfzfx4MlICCLnDh5SjUvXKigZM8WpLuy28PX1xqRRr+IECPrFjYOzqJ82dJmcZQxBgRoa1SuWN56ah6jv/z5Qows3kiJNBaEQ4RHRKj9+QsXZNjwEerY8Yee0+Gjxxwv8ZwESIAESMBDBLC8mi9+IJWXQQIkQAIkQAIkQAIkQAIkQAIkQAKPIoF8+fIJtvisGiDuJlXgtfJEglX+vCFqa9Sgrlx45qL8+MtI+XfzVpVVu2rterUA2omT0aqZO7YGsExA5MyZQ+2d/cicOZPKIoZNw8m7IrK1nmP2rvUa7Bcg8GrxOdLw5dWx3LCbSCjOGl68DBIgARIggeQhgP+2UOBNHrbslQRIgARIgARIgARIgARIgARIwIsI1K5dO9EsXldvBxYI7wz+RFV/642XlCets7bI1n395X7S49n+6vKevQeUwOvvn16dQ4h1NSDeIi5duhxvkxs3bigPXlTQ/sPWyleuXhF4BzsLLLaGwOJxiGyBgWqPDOPuXTqo4/h+wLOXQQIkQAIkkDwE8HYILRqShy17JQESIAESIAESIAESIAESIAES8CIC8WXxJiV7N1tQkMC6ALFn34F4BV5chy8vFjeDKHw11ibo5g3Jg0tyMOyw3Lp1y/DTTavOrT9+GTFGDh0+ohZdg7curBkQWEDt2rXrkj59Omt1dXzsuM1WASchuXPFuX748DEpX+6ejYOugAXisMAaQts/5M1rm2P69OkF2cjO4vSZs3LB4OBMTHZWn2UkQAIkQAJJI+DDRdaSBo6tSIAESIAESIAESIAESIAESIAEHi4C8OJ1jKRYM/j5+Zr+ttNmzjFtDRz7xnmUYXUAcRehFyULLZhfnSODd+36jerY+uPoseOy4J+lSszNkT27ulSqeFGzypz5i8xj68HEqTPM09DQAuaxPpgx92+BjaNjrFi9ziwqUcw2TqnixVQZfHa379htXtcHsbHX5M13h8hAY5s5Z74u5p4ESIAESMDDBPAloGHTwEXWPMyV3ZEACZAACZAACZAACZAACZAACXgpAaugaz1293Y6tWujmkCkHfzRF7J0+SqBRYIOZOZu2bZD3vvvZ7pIKlUop46rV6msFjXDydfDhsu/m7YYmby31bZ952757Y+xZptqVSqq47JlSknFCmXV8biJU2XW3Ply8+ZNdX7p8mXl9btpyzZ13s2wVNBWC6rg7o+t23bKtz/+amTdXlQlaL9qzXr5+bdR6hyLsukM35Ilipnj/d83w2TDRtscUfFUdIyMHDPezGKuaywyxyABEiABEkgeAvjvSRrj27m4X88lz3ipqtdt22z/YatQoUKqmhcnQwIkQAIkQAIkQAIkQAIkQAIk4B4B/e+7wLu+sO61jlt78uTJasG1AQMGxL3oRsn0WfPkzwlT7FrAjiFdOj+1YJn1wqCBr0iNqpXNor37D8rHX/zP9MzFBdg5WH15+z7bS5o3bWS2iTpxSj76/CszIxgXtP2DroQs4ffees2wcLD5/O7ctUf+88lQddnaP7x1YbGgA9c+HvyOFC5UUBdJRGSUfPDhF6aQiwuO7dq3aSk9u3c22/CABEiABEjAswR8fX0l7RAjPNutd/R28qRtxc/cuW0+Rd4xa86SBEiABEiABEiABEiABEiABEjAkYD+952/v7/jpSSdZ82aVfnG5s9vs0pIUidGo1JGliuycs+eO6+sGNDP5ctXzAxZnNerU1Ne7PuMVChr732bI3s2aVCnlkQaFg6wcUDojFyItq+80Eca1KulyvWPLMZCa481rKfGgHUC6mM8BITXTu3bSL/neomfn59uorJtl65Yrc6//PQ/Eh1zWo1nFZKrVa4og98daPr86sYBWbJIk0b15cy5c0Y/0Wo83S5rQIA807OrtH+ipaRJk0Y34Z4ESIAESCAZCKQx0njvPIo2DfobXmbwJsNTxS5JgARIgARIgARIgARIgARI4AES0P++81QGb3JMHTYJMTFnDAE1RnWfPVs2yZkzh2TOlCnR4WDPAAH1ypWrqk2WzJkTbYMKZ4wM3NNnz0oeY0G1+MaxZvBOGvOrEn8vXrokJ09Gi79/eqNtbmORt8StHfFycMzpM0rMzmGIyUFBgRR2XfqUWIkESIAE7o8AvrTz5Tdp9weRrUmABEiABEiABEiABEiABEiABEggMQIQWLHpBdQSq2+9DoEVIq27kc0QWrG5GxCQXRWRdd/QFoJzZFebLuOeBEiABEgg+QngCzYfCrzJD5ojkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkICnCSiB19Odsj8SIAESIAESIAESIAESIAESIAESIAESIAESIAESIIHkJwCB1zf5h+EIJEACJEACJEACJEACJEACJEACJEACqZFAdmMxNyyihuAbvqnxE+KcSIAESCBhAmnTphVfqLz8I54wKF4lARIgARIgARIgARIgARIgARIggYeRALx9333rtYfx1nhPJEACJPBIELh9+zY9eB+JT5o3SQIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIk8NAR8PHxEZ+H7q54QyRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiTwCBBQGbywaGCQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAl4FwEl8HrXlDlbEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEMDaaj5cYI0PAwmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAl4HwF68HrfZ8YZkwAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkIAiAIsGX3jwMouXTwQJkAAJkAAJkAAJkAAJkAAJkIC3E7h165a33wLnTwIkQAIkQAJuE/BxuwUbkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJpAoCvszeTRWfAydBAiRAAiRAAiRAAiRAAiRAAiRwnwQKFy58nz2wOQmQAAmQAAl4FwG4M/jgB4MESIAESIAESIAESIAESIAESIAESIAESIAESIAESMD7CNCiwfs+M86YBEiABEiABEiABEiABEiABEiABEiABEiABEiABNTaaj60aOCTQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQALeSYAZvN75uXHWJEACJEACJEACJEACJEACJEACJEACJEACJEACJCAUePkQkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkIAXErh9+zYFXi/83DhlEiABEiABEiABEiABEiABEiABEiABEiABEiABEhAfHx8KvHwOSIAESIAESIAESIAESIAESIAESIAESIAESIAESMBbCdCiwVs/Oc6bBEiABEiABEiABEiABEiABEiABEiABEiABEjgkSfgA58GBgmQ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wVvfvn1dn374oG/QkWDBf1OkyoYNG/akpqZSQzUBEl0IIIAAAggggAACCCCAAAIVX8BndYWDBRVh1AoKaEb4pk2bmiYMKo0Eq7S0NJfVpgCwvtbcoEGDAt16ZmamzZkzx/SsCeKqV6+e63E6t8oyaHI2BX2bNWuW675sQAABBCqDgAKn+kbG5s2bbf/9909YizzRfRb1PTnRuQrat3v3bqsSHewe/5WPgh7IfggggAACCCCAAAIIIIAAAghUFIGKGuCtKD6MAwEEEECg8gqoDFDE13qovLfJnSGAAAIIIIAAAggggAACCCCAAAIIIIAAApVPQLHdyKZNm1wtnj179lS+O+SOEEAAAQQQQAABBBBAAAEEEEAAAQQQQACBSiigeK6L7ao2hFJ5S6MWUCV045YQQAABBBBAAAEEEEAAAQQQQAABBBBAAIFyF1B99K1bt1pEhdQXLlxofta1ch8ZA0AAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBIKOArMSxZssRq1Khhkfr161tGRoZNnz7dHeB3SHg0nQgggAACCCCAAAIIIIAAAggggAACCCCAAALlJqD47eTJk132bu3atS1SrVo1U5B38+bNNmPGDKtSpYp7ULKh3F4jLowAAggggAACCCCAAAIIIIAAAggggAACCMQIqAKDgrvfffedrVu3zho3bmy1atWy/w+ftbYg4wOl4gAAAABJRU5ErkJggg=="/><use stroke="#7E7C7B" xlink:href="#rect-1"/></g><g id="2" fill="#C06334" fill-rule="nonzero"><use filter="url(#filter-3)" xlink:href="#text-2"/><use xlink:href="#text-2"/><use xlink:href="#text-2"/></g><g id="1" fill="#C06334" fill-rule="nonzero"><use filter="url(#filter-5)" xlink:href="#text-4"/><use xlink:href="#text-4"/><use xlink:href="#text-4"/></g><g id="3" fill="#C06334" fill-rule="nonzero"><use filter="url(#filter-7)" xlink:href="#text-6"/><use xlink:href="#text-6"/><use xlink:href="#text-6"/></g><text id="see-the-outer-call-d" fill="#C06334" font-family="OpenSans-Bold, Open Sans" font-size="18" font-weight="bold"><tspan x="183" y="189">see the outer call details</tspan></text><text id="watch-expressions" fill="#C06334" font-family="OpenSans-Bold, Open Sans" font-size="18" font-weight="bold"><tspan x="238" y="99">watch expressions</tspan></text><text id="current-variables" fill="#C06334" font-family="OpenSans-Bold, Open Sans" font-size="18" font-weight="bold"><tspan x="249" y="214">current variables</tspan></text><path id="Line-2" fill="#C06334" fill-rule="nonzero" d="M452.5 84l19 9.5-19 9.5v-8H412v-3h40.5v-8z"/><path id="Line-2-Copy" fill="#C06334" fill-rule="nonzero" d="M452.5 175l19 9.5-19 9.5v-8H412v-3h40.5v-8z"/><path id="Line-2-Copy-2" fill="#C06334" fill-rule="nonzero" d="M452.5 199l19 9.5-19 9.5v-8H412v-3h40.5v-8z"/></g></g></svg> +======= +<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="700" height="304" viewBox="0 0 700 304"><defs><style>@import url(https://fonts.googleapis.com/css?family=Open+Sans:bold,italic,bolditalic%7CPT+Mono);@font-face{font-family:'PT Mono';font-weight:700;font-style:normal;src:local('PT MonoBold'),url(/font/PTMonoBold.woff2) format('woff2'),url(/font/PTMonoBold.woff) format('woff'),url(/font/PTMonoBold.ttf) format('truetype')}</style></defs><defs><filter id="filter-3" width="163.2%" height="127.9%" x="-31.6%" y="-14%" filterUnits="objectBoundingBox"><feMorphology in="SourceAlpha" operator="dilate" radius="1.5" result="shadowSpreadOuter1"/><feOffset in="shadowSpreadOuter1" result="shadowOffsetOuter1"/><feGaussianBlur in="shadowOffsetOuter1" result="shadowBlurOuter1" stdDeviation="1.5"/><feColorMatrix in="shadowBlurOuter1" values="0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 1 0"/></filter><filter id="filter-5" width="163.2%" height="127.9%" x="-31.6%" y="-14%" filterUnits="objectBoundingBox"><feMorphology in="SourceAlpha" operator="dilate" radius="1.5" result="shadowSpreadOuter1"/><feOffset in="shadowSpreadOuter1" result="shadowOffsetOuter1"/><feGaussianBlur in="shadowOffsetOuter1" result="shadowBlurOuter1" stdDeviation="1.5"/><feColorMatrix in="shadowBlurOuter1" values="0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 1 0"/></filter><filter id="filter-7" width="163.2%" height="127.9%" x="-31.6%" y="-14%" filterUnits="objectBoundingBox"><feMorphology in="SourceAlpha" operator="dilate" radius="1.5" result="shadowSpreadOuter1"/><feOffset in="shadowSpreadOuter1" result="shadowOffsetOuter1"/><feGaussianBlur in="shadowOffsetOuter1" result="shadowBlurOuter1" stdDeviation="1.5"/><feColorMatrix in="shadowBlurOuter1" values="0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 1 0"/></filter><text id="text-2" font-family="OpenSans-Bold, Open Sans" font-size="32" font-weight="bold"><tspan x="591" y="148">2</tspan></text><text id="text-4" font-family="OpenSans-Bold, Open Sans" font-size="32" font-weight="bold"><tspan x="591" y="100">1</tspan></text><text id="text-6" font-family="OpenSans-Bold, Open Sans" font-size="32" font-weight="bold"><tspan x="591" y="215">3</tspan></text><path id="rect-1" d="M0 0h700v304H0z"/></defs><g id="debugging" fill="none" fill-rule="evenodd" stroke="none" stroke-width="1"><g id="chrome-sources-debugger-pause.svg"><g id="Bitmap"><image width="700" height="304" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABXgAAAJgCAYAAAAwKQtPAAAAAXNSR0IArs4c6QAAAERlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAA6ABAAMAAAABAAEAAKACAAQAAAABAAAFeKADAAQAAAABAAACYAAAAADxQElBAABAAElEQVR4AeydB5wdVdn/T3Y3jfReCCkE0ggEAglN6b1IVUBEQAUBQQUEkSJRwRcJ6IvyFwSkCNJeAQEpIZAACgKhE0hCKpBOAumFZJP/fGfz3D07O/fuvXfv3b337u/ks7lTzpzynTNnzvnNM880W7FixeZmzZo5BREQAREQAREQAREQAREQAREQAREQAREQAREQAREQgeIiUFZRUVFcJVZpRUAEREAEREAEREAEREAEREAEREAEREAEREAEREAEQgJlGzduFAoREAEREAEREAEREAEREAEREAEREAEREAEREAEREIEiI4DxblkQiqzYKq4IiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiADGuxJ41Q5EQAREQAREQAREQAREQAREQAREQAREQAREQAREoAgJYLwr890iPHEqsgiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAhs3rzZlVVWVoqECIiACIiACIiACIiACIiACIiACIiACIiACIiACIhAkREoLy+XBW+RnTMVVwREQAREQAREQAREQAREQAREQAREQAREQAREQARCAqEFLyqvggiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIQHER2LRpkyvjPwUREAEREAEREAEREAEREAEREAEREAEREAEREAEREIHiIoAFb0VxFblwSjt79mw3a9YsN2HChJwWasCAAe7AAw90/OYjTJs2LUx28ODB+UheaYqACIiACIiACIiACIiACIiACIiACIiACDQSAek+jQS+EbOVD956wH/hhRdyLu5SHBOO61E0HSoCIiACIiACIiACIiACIiACIiACIiACIiACItAECOCdQRa8WZ5ohFjCtddem2UK8YddccUVoXCMFa+CCIiACIiACIiACIiACIiACIiACIiACIiACIiACCQjUFZW5oK/smT7tV0EREAEREAEREAEREAEREAEREAEREAEREAEREAERKBACYQWvJWVlTkvXq7dF5g/2h/84Ac5L6sSFAEREAER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ivc4PvZYtmnTpuKtQQOUnKcKDWk6Tl56ktEAJ1ZZiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiECREwgteFetWhX8bi7yqqj4IiACIiACIiACIiACIiACIiACIiACIiACIiACItC0COCDt6xpVVm1FQEREAEREAEREAEREAEREAEREAEREAEREAEREIHSIIB3Bgm8pXEuVQsREAEREAEREAEREAEREAEREAEREAEREAEREIEmRqCsrMwFf9J4m9h5V3VFQAREQAREQAREQAREQAREQAREQAREQAREQARKgEBowVtZWVkCVVEVREAEREAEREAEREAEREAEREAEREAEREAEREAERKBpEZCLhqZ1vlVbERABERABERABERABERABERABERABERABERCBEiIQumho1qxZCVVJVREBERABERABERABERABERABERABERABERABERCBpkFAAm/TOM+qpQiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIQAkSwP1u2ebNm0uwaqqSCIiACIiACIiACIiACIiACIiACIiACIiACIiACJQ+gQoJvKV/klVDERABESgGAkPGrC6GYqqMjURg6pg2jZSzshUBERABERABERABERABERCBwiZQMWvWLLdhw4bCLqVKJwIiIAIi0AQI9GkCdVQVsyUwbdq0bA/VcSIgAiIgAiIgAiIgAiIgAiJQsgSaN28uFw0le3ZVMREQAREQAREQAREQAREQAREQAREQAREQAREQgZIn0GzlypVywlvyp1kVFAEREAEREAEREAEREAEREIHSJTBz5sywcgMHDizdSqpmIiACIiACIhBDoFmzZq6svLw8Zpc2iYAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIFDKBUODdtGlTIZdRZRMBERABERABERABERABERABERABERABERABERABEUhCoAyVV0EEREAEREAEREAEREAEREAEREAEREAEREAEREAERKC4CFRWVrqy4iqySisCIiACIiACIiACIiACIiACIiACIiACIiACIiACIgCBsrIyCbxqCiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiJQjARCgXfz5s3FWHaVWQREQAREQAREQAREQAREQAREQAREQAREQAREQASaNAG+r1amj6w16TagyouACIiACIiACIiACIiACIiACIiACIiACIiACBQxgbLy8vIiLr6KLgIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAJNkwDeGWTB2zTPvWotAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAu6OO+5wL7zwgkgUKQF88Fag8jZr1qxIq6Bii4AIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiEBhEZg2bVpYoMGDBxdWwSKlQdidPXt2+MeuAw88MBJDq4VOIPTBW1FRUejlVPlEQAREQAREQAREQAREQAREQAREQAREQAREQARySABhd8KECYkUWZYlbwJHUS1UbNy4URa8RXXKVFgREAEREAEREAEREAEREAEREAEREAEREAERqB+BODF32223rV+iDXA05faF6XSyPOCAA0rWOhnj3cBNQ1k6HBRHBERABERABERABERABERABERABERABERABESgBAiYawa/KoigAwYM8DcV3HI24i6VKGXrZIx3KxB4Kysrsz5hV1xxRdbH1ufAa6+9tj6H61gREAEREAEREAEREAEREAEREIEIgUwtoiKHZ72KqKAgAo1FIJmuUWq6g1lrysdqY7W0wsk36pqBkiHsFnrbyFbcNfJ2jyv0elp50/0NP7KWbmTFEwEREAEREAEREAEREAEREAEREAEREAERKD4CUWGs1ASu4jsjjVtiE/v9UhR6m4i2Yb/smSyXosi7efNmV1Ef610fYLInW/YkLNl+P410li29dOLmI86CBQvcu+++61q2bOny/ZR5/PjxDjPrkSNHuh49eoTVeeedd9zChQtdv3793LBhw/JRxTDNF1980a1du7ZG3nnLTAmLgAiIgAiIgAiIgAiIgAgUFIFczXVsIp0sPdtfUJX3CjNkzGpvrXpx6pg21SvB0tn3rHfn7Nvcjexf2i4QsfojFPor3GEh9V+CwB133OHs3LGR6471H/zgB4k4xbSA0FfoYmQh84Sf3x4oK310IV/XuRJ37bzYvadU2lF5ebmrsMrpNz0C06dPd7/73e/CyMkGKemlVHcsE8V/+9vfJgTehx56yL322mvupJNOyqvAO2bMmLCAft51l1gxREAEREAEREAEREAEREAERKDpEXh59kbH38X7tXBn7de8JAAgqBAQgqJikFXQXukuZGHIytpUf6PirnHgnLKvGEXeUhPn7Jw0xC/n3fhZfnYd23qh/eZa3LX6GYdS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CIiACIhAMRKYOXNmWOz6fGy6UOodJ+5ee+21hVI8lUMERCBNAtOmTQtjDh48OM0j0osW10cg4pe69W56dJpurDKJu0335KvmIiACIiACIiACIiACIiACIiAChUMgTrgpnNKpJCIgAoVAAAtWrFEtNAXXDFZX/cYTSPjglYuGeEDaKgIiIAIiIAIiIAIiIAIiIAIiIAINQUDibkNQVh4i0HAEcm2565fc3BTgrsGW/f1abloEQh+8FRUV4Ue1mlbVVVsREAEREAEREAEREAEREAEREAERKAwCEncL4zyoFCJQTAQk7BbT2cp/Wcs2btyY/1yUgwiIgAiIgAiIgAiIgAiIgAiIgAiIQC0CEndrIdEGERABERCBDAhgvBu4aSjL4BBFFQEREAEREAEREAEREAEREAEREAERyAUBibu5oKg0REAERKBpE8B4t9maNWs2V1ZWNm0Sqr0IiIAIiIAIiIAIiIAIiIAIiEDREpg5c2ZY9oEDBxZtHVRwERABERABEciGAMa7Mt/NhpyOEQEREAEREAEREAEREAEREAEREAEREAEREAEREIFGJrB582ZXJuvdRj4Lyl4EREAEREAEREAEREAEREAEREAEREAEREAEREAEsiBQXl4uC94suOkQERABERABERABERABERABERABERABERABERABEWh0AqEFLyqvggiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIQHER2LRpk6vgv1IOQ8asLuXqqW4ZEpg6pk2GRyi6CIiACIiACIiACIiACIiACIiACIiACIiACBQmASx4K/ja6IYNGwqzhDkpVZ+cpKJESoPAtGnTSqMiqoUIiIAIiIAIiIAIiIAIiECCQEVFRbj8xhtvJLZpQQREQAREQASaAoFWrVrJB29TONGqowiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIQOkRwDtDs8CMd3PpVa3uGr333nthpBEjRtQdWTFEQAREQAREQAREQAREQAREQAQKlkBifrdDt4ItowomAiIgAiIgAnkhUFYhC968gFWiIiACIiACIiACIiACIiACIiACIiACIiACIiACIpBvAoEFb1kTNeDNN1qlLwIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAJ5JYCLhrK85qDERUAEREAEREAEREAEREAEREAEREAEREAEREAEREAE8kKgrKzMlTVr1iwviStRERABERABERABERABERABERABERABERABERABERCBPBJA4M1j8kpaBERABERABERABERABERABERABERABERABERABEQgXwTkgzdfZJWuCIiACIiACIiACIiACIiACIiACIiACIiACIiACOSfgCx4889YOYiACIiACIiACIiACIiACIiACIiACIiACIiACIhAXghUyAdvXrgqUREQAREofAKLPij8MqqEIpApgR47ZnqE4ouACIiACIiACIiACIiACIhAUROo2Lx5s5PIW9TnUIUXgbwRoH/YFPhyIZSXl+ctn0JMuLKyMiwW/SNfpGzIsGLFCrdkyRK3fPlyt/XWW7vu3bs3ZPbKSwREQAREQAREQAREQAREQAREQAREoIgINKxqUURgVFQRyAeBDRs3ua++qqzxt7Fyc8qsKoP90WNIpyHCfffd5wYNGuR+/vOfN0R2BZXHnXfeGdb96quvbrByLV261P3whz90u+yyizv44IPdiSee6J599tkGy18ZiYAIiIAIiIAIiIAIiIAIiIAIiIAIFBmBZs4VvYuGlStXusWLF4fke/fu7Vq3bt0gZ2Hpf+e5aX+a5L744HO3bs6aMM+dfruXG3TBqAbJv1AyWfDsTPfWJRNc5x27ub3uP7ZQipVROb793ZfdSy8scGNvHO2+ffKAjI7NNPKJJ73k3nytqr3asWedM8SNuWqErdb6/cMfP3J/uGFyje3bD+3gXnz+sBrbcr2C9ejYsWPDZE855ZRcJ1/w6R177LHuuuuuc/fff7879dRT3ZAhQ/Je5ptvvtk9//zzYT5HHnmk69evn9tpp53ynq8yKEwCv/7T39zchUvd9v16u0vOPiks5LKVq92l190WLh97yN7uiH1HxxZ+3qKlbsmXy2rta9WihRu87Ta1tme6oTJ4yHT8eb8MD7v51z9x2/TslmkSacd/+OmX3POvvB3G/9OvfuxaVlS9TXDV7+90i5Yud0MHbuMu/N6JaaeniCIgAiIgAiIgAiIgAiIgAiJQWgSauYpirdAXX3zhxo8f7956661EFU4//XS3ww47JNbztbDiw8Vu4iH/SCTfvGuLcLm8eXG+wr5w3Ew39/GPXccdu7vtzt01Ua90FirXbAgF7nU9q0TudI4ptDhr124Mi/RVA1jFDt+xk2vZIni0EoT33vnCrVq5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2N26zXX9hkrN8Np5as/KJEACJEACJEACJEACJEACJEACJEACJEACRZ/AFS3wmstT1Lx3zbwK84jN3Ka+d7c1RDn/QBnzwIcqLEEu4hJYrZgoygQqVqosvy5yPKrm7e1dlKfKuZEACZAACZAACZAACZAACZAACZAACZAACeSDgAq/KzkKvFEHHbF489G/xzS50rx3cWF8fStK92vvUoJuSake2kjqqg3c/PwDCuWatW0bLKW8SkqTxpULpX926p4AtPpy5XIfh9l9L8wlARIgARIgARIgARIgARIgARIgARIgARIoqgRKliyZs8BbVCdfUPO6Er13wc7bz1+uG/Z4QWHMtp+uXasKXjQSIAESIAESIAESIAESIAESIAESIAESIAESIIGCJVDivLKC7dIzeouMdDy6/siXdT1jwpwlCZAACZAACZAACZAACZAACZCAWwJvj47W+REREW7LmUkCJEACJEACxZmAF+I0wJWXlj2B9JPqC8PZdCnhXVlKlaksJUqWzr4BS0mABEiABEiABEiABEiABEiABEiABEiABEiABEigkAl4Xeni7qK3/HKF+KabXpeVK1dadceOHSuPPPKIdc4ECZAACZAACZAACZAACZAACZDA5SFw4QHNyzM4RyUBEiABEiCBy0gAwRm88FYCuzF5iKWnp8v27duznW2dOnXE29s72zp5LRw2bJg0b95c1q1bJ2vXrpUPPvhAOnToIB07dsxrV6xPAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAhdNALquxwm8R48elalTp2a7+Pvvv1/Cw8OzrZPXwkGDBukmEMT79esnW7du1WIvBd68kmR9EiABEiABEiABEiABEiABEiABEsggsGLFCjl9+rSUKlVKunTpklHgJnXgwAHZsWOHLoHTVdmyZd3UYpadwP79+yU6Olo7wrVv395exPRlJHDixAlZv369nkHbtm3F19f3Ms6GQ3syAYTf9egQDRUrVtR/AFwvQkF779r7hyrerFkzLfAeOnTIXsQ0CZAACZAACZAACZAACZAACZAACZBAHghA2P3jjz+sFpUrV5bGjRtb566J5cuXa7ES+V27dnUtLhbnYGI2hgeLcuXKXdS6li1bJrt27dICIgXei0JZoI03b94suLkBo/NggaK94jrTHryevMnaQw89JH5+uYuhW5BX18fHR3eH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SeucCRIgVKNIyQAAQABJREFUARIgARIgARIgARIgARIgARIgARIgARIgARIorgRKepq36/bt27WnLi7I3Xff7STuIq9MmTKZ8pBPIwESIAESIAESIAESIAESIAESIAESIAESIAESIIHiRkBFOCjpUWtau3atni9CMlSvXt2j5s7JkgAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkEBBETh//rx44a1EiRIF1Weh93P06FE9Rv369QUbra1Zs0bg1evn5ychISHSq1cvqVy5cqHPgwOQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQwOUkAF3X4wRebKQGS0hIkAkTJlj8kL9//34t+I4ePVqaNGlilTFBAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAsWNAMLvelyIhqSkJH0doqKiMHkZPHiwPPzww3LjjTdK2bJlBYv65ptvBJut0UiABEiABEiABEiABEiABEiABEiABEiABEiABEiguBKAB6/HbbJmvxhDhgyRDh066Fi8LVu2lDvvvFMXnz59WkysXnt9pkmABEiABEiABEiABEiABEiABEiABEiABEiABEiguBDQAq+nbbKGWLvGGjdubJL6WLNmTfH19dXpuLg4pzKekAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkEBxIqA3WfO0BZUvX16OHz8uFStW1Buruc6/QoUKkpKSomP0upbxnARIgARIgARIgARIgARIgARIoPgSiIyMLL6L48pIgARIgARIwA2B0qVLS0k3+UU6CwIu7MSJEzrerutkEZ4BZjx5Xct5TgIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQALFgYD24L2w05rHrKd58+ayefNmLe7GxMRIrVq1rLmfOnVKjhw5os+DgoKsfCZIgARIgARIgARIgARIgARIgASKP4E6deoU/0VyhSRAAiRAAiRgI+Dl5SUlEYjXk6xZs2Zi4gYvXLhQzpw5o6cPoXrOnDnWUpo0aWKlmSABEiABEiABEiABEiABEiABEiABEiABEiABEiCB4kZAe/B6msALVbpfv34yd+5ciY6OlhdeeEGCg4MlPj5eUlNT9TVq2bKlVKtWrbhdL66HBEiABEiABEiABEiABEiABEiABEiABEiABEiABCwCcHr1ss48KNGlSxfx8fGRmTNnCmLu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gAAIgAAIgAAIgAAIZC2BNm3aZO2Aj+lodraWvZve+6Aya3m3PLZMyK7gDd04+OkBAgRAAARAAARAAARAAARAAARAAARAAARAAARAAARyi4AdWzTYWuzYsUPz3+C180567Ml74sQJeSutWrWytVvCekEABEAABEAABEAABEAABEAABEAABEAABEAABEDAagI2adGwYcMGWrZsGRUqVIjy589PN2/e1G7cz8+P6tSpo51nR+H69etyWJ4bAQIgAAIgAAIgAAIgAAIgAAIgAAIgAAIgAAIgAAK5QYDdGext0aLBw8ODTp06RXfu3NG4sclys2bNqG3btlpddhQ4W3jXrl1y6Oy0gciOtWNMEAABEAABEAABEAABEAABEAABEAABEAABEACBx4uATWbwvvzyy3Tjxg2KiYmhu3fvkpubG7m4uGTrO/PDDz/QgQMH6ODBg5SYmCjnatSoUbbOicFBAARAAARAAARAAARAAARAAARAAARAAARAAARAID0CNinw8g05OjrKV3o3l5XX9uzZQ/ziqF69Og0ZMoRq1KiRlVNgLBAAARAAARAAARAAARAAARAAARAAARAAARAAARCwmMCDBw/IZgVei+8yixr+9ttvciQWlhEgAAIgAAIgAAIgAAIgAAIgAAIgAAIgAAIgAAIgkNsE7OzsIPBa+iZA2LWUFNqBAAiAAAiAAAiAAAiAAAiAAAiAAAiAAAiAAAjkFAFk8OYUacwDAiAAAiAAAiAAAiAAAiAAAiCQrQTi4+OzdXwMDgIgAAIgAAJ5jQBn8NqxTwMCBEAABEAABEAABEAABEAABEAABEAABEAABEAABEDAtgg8fPiQ7FnlRYAACIAACIAACIAACIAACIAACICArRNwcXGx9VvA+kEABEAABEDAKgIs8NrxDwQIgAAIgAAIgAAIgAAIgAAIgAAIgAAIgAAIgAAIgIBtEciXLx8EXtt6y7BaEAABEAABEAABEAABEAABEAABEAABEAABEAABEDAQYPvdPGXRcPnyZbp+/Tqx8uzj4yOP6b1ZV65codDQUIqLiyMvLy/Zp0iRIul1wTUQAAEQAAEQAAEQAAEQAAEQAAEQAAEQAAEQAAEQeCwIsI5qzypvbvvwnjt3jv79918KCwvTwH7++edUsGBB7dy0sHTpUtq5c6dpNQ0YMID8/f1T1aMCBEAABEAABEAABEAA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"/><use stroke="#7E7C7B" xlink:href="#rect-1"/></g><g id="2" fill="#C06334" fill-rule="nonzero"><use filter="url(#filter-3)" xlink:href="#text-2"/><use xlink:href="#text-2"/><use xlink:href="#text-2"/></g><g id="1" fill="#C06334" fill-rule="nonzero"><use filter="url(#filter-5)" xlink:href="#text-4"/><use xlink:href="#text-4"/><use xlink:href="#text-4"/></g><g id="3" fill="#C06334" fill-rule="nonzero"><use filter="url(#filter-7)" xlink:href="#text-6"/><use xlink:href="#text-6"/><use xlink:href="#text-6"/></g><text id="see-the-outer-call-d" fill="#C06334" font-family="OpenSans-Bold, Open Sans" font-size="18" font-weight="bold"><tspan x="183" y="189">see the outer call details</tspan></text><text id="watch-expressions" fill="#C06334" font-family="OpenSans-Bold, Open Sans" font-size="18" font-weight="bold"><tspan x="238" y="99">watch expressions</tspan></text><text id="current-variables" fill="#C06334" font-family="OpenSans-Bold, Open Sans" font-size="18" font-weight="bold"><tspan x="249" y="214">current variables</tspan></text><path id="Line-2" fill="#C06334" fill-rule="nonzero" d="M452.5 84l19 9.5-19 9.5v-8H412v-3h40.5v-8z"/><path id="Line-2-Copy" fill="#C06334" fill-rule="nonzero" d="M452.5 175l19 9.5-19 9.5v-8H412v-3h40.5v-8z"/><path id="Line-2-Copy-2" fill="#C06334" fill-rule="nonzero" d="M452.5 199l19 9.5-19 9.5v-8H412v-3h40.5v-8z"/></g></g></svg> +>>>>>>> 540d753e90789205fc6e75c502f68382c87dea9b diff --git a/1-js/03-code-quality/01-debugging-chrome/chrome-sources-debugger-trace-1.svg b/1-js/03-code-quality/01-debugging-chrome/chrome-sources-debugger-trace-1.svg index 23937e0d6..757a2578b 100644 --- a/1-js/03-code-quality/01-debugging-chrome/chrome-sources-debugger-trace-1.svg +++ b/1-js/03-code-quality/01-debugging-chrome/chrome-sources-debugger-trace-1.svg @@ -1 +1,5 @@ -<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="698" height="310" viewBox="0 0 698 310"><defs><style>@import url(https://fonts.googleapis.com/css?family=Open+Sans:bold,italic,bolditalic%7CPT+Mono);@font-face{font-family:'PT Mono';font-weight:700;font-style:normal;src:local('PT MonoBold'),url(/font/PTMonoBold.woff2) format('woff2'),url(/font/PTMonoBold.woff) format('woff'),url(/font/PTMonoBold.ttf) format('truetype')}</style></defs><defs><path id="rect-1" d="M0 0h698v310H0z"/></defs><g id="debugging" fill="none" fill-rule="evenodd" stroke="none" stroke-width="1"><g id="chrome-sources-debugger-trace-1.svg"><g id="Bitmap"><image width="698" height="310" xlink:href="data:image/png;base64,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CIiACIiACIiACIiACIiACJQIAQm6JXKilE0REAEREAEREAEREAEREAEREAEREAEREAEREAERkKCrOiACIiACIiACIiACIiACIiACIiACIiACIiACIiACJUJAgm6JnChlUwREQAREQAREQAREQAREQAREQAREQAREQAREQATqC0FmBL744gs3ffp0N3LkyMwCpvC99dZbu/3228+xzIebMmVKEG23bt3yEb3iFAEREAEREAEREAEREAEREAEREAEREAERqCEC0n1qCHwNJSsL3QzBv/HGGzkXc8mCCcUZZkfeRUAEREAEREAEREAEREAEREAEREAEREAEREAEahEBWehmeLIRXnF/+ctfMgyZ3PtVV10VCMVY6cqJgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIQBQBWehGUdE+ERABERABERABERABERABERABERABERABERABEShCAjm10M31dAQ2n+yvfvWrIkSnLImACIiACIiACIiACIiACIiACIiACIiACIiACEQRMJ0Qfc++HRXlT/syJ5AzQfe+++4L5oHNPAuJQ9j0BlQATUWQmJOOiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiECxEDAxl/yg75nGJ30vN2coZ4KunRjNLZubE1ObYhk1apRbs2ZN2kXea6+93EYbbeQmTJjgvvnmG7flllu6bt26pR1eHsufwMqVK93nn3/upk+fHiypJ61atXLt27d3ffr0cd27dy9/COtL+Oabb7rVq1e7Xr16uc0226zWlDtRQRcsWOCGDx/uZsyY4WbNmhW0JZtvvrnr3LmzO/DAA93GG2+cKKj2lymBtWvXxj922rx5c9evX7+kJf3qq68cXxBu1KiR22OPPZL6LeeDXEPTpk1zTZs2dbvttls5FzVetmT9lTp16riWLVu6tm3bBvcatgvl6A9RJ5csWeK22WYbRz9JTgSyJeDXc+6N/FI5+l3/93//F/e23XbbBddBfIdWypaA3RMpIJZ3Xbp0KZqyLlq0yI0ZMybIj40f2Xj77bfdDz/8UHR940T5LRqgyogIZEFg5MiRVUKxr9QEXQxYybPNIlClUAl2oJMiaudr1oGcCboJ8q/dIpCUAAPpYcOGJfUTPrjLLrsEIsyLL77oZs6cGQwka6ugi1D31ltvBYh22mknt+mmm4Zx1brtL7/80t1yyy1u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7733tk0tRUAEREAEIgiEtb8IL9qVJoGcCbqkl61qnSicibcm5qZZppx6S2RxnNNEFJkIiIAIiIAIiIAIiIAIiIAIiEDJEEDAZdoApjNiOg4+/ubP/1wyBSlQRvlgJh8+Y97qTBwfTmS6KE0XlAk1+RWB4iBgRpx+biTo+jSqt55TQTfTrCDYppq/ykRd4vbXM01L/kVABERABERABERABERABERABEQgFwT4uBc/ufQI8CG0bNzuu+/u+MmJgAiUHgHT8MxIE4HX9pVeaYovx3ViX+teV3zZqvkc+V+yK1RueFKRyFq5unkoxq8dVrdMCi8CIiACIiACIiACIiACIiACIiACIiACIuCcdJ/aVQvq1q7ipl9anhoU0hSctPSkIv3zI58iIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiUBsJyEK3Np51lVkEREAEREAEREAEREAEREAEREAEREAEREAERKAkCchCtyRPmzItAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiJQGwlI0K2NZ11lFgEREAEREAEREAEREAEREAEREAEREAEREAERKEkCEnRL8rQp0yIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgArWRgATd2njWVWYREAEREAEREAEREAEREAEREAEREAEREAEREIGSJCBBtyRPmzItAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiJQGwlI0K2NZ11lFgEREAEREAEREAEREAEREAEREAEREAEREAERKEkCEnRL8rQp0yIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgArWRgATd2njWVWYREAEREAEREAEREAEREAEREAEREAEREAEREIGSJFC/JHOtTIuACIiACJQNgYHXLCibsqgguScwYlCr3EeqGEVABERABERABERABERABESghAnUnzJlSglnX1kXAREQAREofQKtS78IKkHeCKifkje0ilgEREAEREAEREAEREAERKBECWjKhRI9ccq2CIiACIiACIiACIiACIiACIiACIiACIiACIhA7SNQZ8mSJetqX7FVYhEQAREQAREQAREQAREQAREQgVIn8PnnnwdF6NKlS6kXRfkXAREQAREQgbQJyEI3bVTyKAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAI1S0CCbs3yV+oiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIikDYBCbppo5JHERABERABERABERABERABERABERABERABERABEahZAhJ0a5a/UhcBERABERABERABERABERABERABERABERABERCBtAlI0E0blTyKgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIQM0SkKBbs/yVugiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAikTUCCbtqo5FEEREAEREAEREAEREAEREAEREAEREAEREAEREAEapaABN2a5a/URUAEREAEREAEREAEREAEREAEREAEREAEREAERCBtAhJ000YljyIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiJQHgTuu+8+98Ybb5RHYWpZKerXsvKquCIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiKQFwJTpkwJ4u3WrVte4s9VpAi5X3zxRfAjzv322y9XUSueAhCQhW4BICsJERABERABERABERABERABERABERABERABESgGAgi5I0eOjGeFdVnqxnGUxIosdEviNCmTIiACIiACIiACIiACIiACIiACIiACIiACIlB9AlHibefOnasfcZ5jIN++EJ1Ocvvuu29ZWh/LQjedsy8/IiACIiACIiACIiACIiACIiACIiACIiACIlDiBGyqBb8YiJ5bb721v6vo1rMRcylEuVofZ22he9VVV9XIyf3LX/5SI+kqUREQAREQAREQAREQAREQAREoVwKZWjzligMigpwI1BSBRLpGuekOZo2pOVJrqqYVT7rhqRbIGUJusdeNbMVcI2/3uGIvp+U3nWXWgm46kcuPCIiACIiACIiACIiACIiACIiACIiACIhAzRAIC2HlJGjVDNHSTtXEfb8UxV4nwnXYz3sm6+Um6lZb0E305MqedCU6ngl0/Fp8mYbLlf+vv/7affTRR65hw4Yu30+Rhw8f7lavXu369u3r2rZtGxRh3Lhxbu7cua5jx46uZ8+euSpWlXjefPNNt2LFikppV/GkHSIgAiIgAiIgAiIgAiIgAmVJIFdjHRs4J4rPjhcrxIHXLIjM2ohBrSrtv+Shxe7kvRu73p0aVNpfbhtY9eGK/ZXscuNe3fLcd999zs4dcXHdsf2rX/2qulHXSHiEvWIXH2sETJqJws+vDwSjjS7m6zpXYq4hsntPOdSjagu6BqXcl1OnTnXXX399UMxEnZJcMTAR/K9//Wtc0H388cfdu+++644//vi8CrqDBw8OiuGnnatyKR4REAEREAEREAEREAEREAERKCcC42escpfEfoi6Jw/YuCyKhoCCQ/gJiz9WQHtFu5iFIMtrbV2GxVzjwDnlWCmKuuUkxtn5KNSS8278LE27jm272Ja5FnOtfMah1EVdCbp2RrWsUQKvv/56kP4BBxyQNB/p+ksaiQ6KgAiIgAiIgAiIgAiIgAiIQA4J/OutFW78zNUlba2L4BNlwReFyURBjmHwVOrCSFQZS3Wff24SlQE/vAWNqFtqojxiXOfOnUsu34nORTr7s3ljnfPqi/b2oMZPz67bqDpT03UjX2Kulb8cRF0JunY2tQwI/OlPf3Lr1q1zPXr0KBgRRFoTakk0kaibrr+CZVwJiYAIiIAIiIAIiIAIiIAIiMB6AqVsrVsd8QRhBEEIcajUxMFyq7xRwlyyMpqlbqmdt1LNd7JzketjJtYSb9SDGn+qhSixtyYZV6c9yoRjqYu6BRd0aWBKrbHIpEKUut+99tqr4EVYtGhRPE0TdsOibljM9cPEA2tFBERABERABERABERABEQgpwS+//57t+mmm+Y0znKPrJSsdTMVABOdO4tH1rqJCOV/f7YiGMJdKZ438m3TVSajWxs1KF+spfwmXBonNDkTfKPEXvOXLmPzn6tlOL/heMPnPWzBnOq4Hx9pGQt/fymsF1zQLdXGwj+ZK1eudE8//bQbNWqUmzVrVnCoV69e7qSTTnI77LCD7zW+/t577wX+P/30U7d06VLXp0+f4MeF1qRJk7i/bFYWL17snnnmGTdp0iQ3ZcoUV79+fbf99ts78nTYYYe5Bg3Sn6B/yJAhbtmyZcFcvd26dYtnZ8yYMe6ll15yn332mZszZ45r06aN69SpU2BNSxnq1asX95vpym677eYoA/nHhUXdsJiL9TBh5ERABERABERABERABERABPJL4MMPPwwMcmSUkxlns9blY2nF+tE0E2HTKZmdf8Ikc4gjte11+GQ8CnUsWzHX8mcCWqkJW+hL/rQCVh6WYSalKFr75Ul33RdrjUM4rJ3nKLE37DcZ47BfbReWQMEFXYpHY0HFoRLZjaGwxa5eapdccon75JNPKkXCB8v4MWWBb+W6atUqd+eddwaCqx8ABvwQSW+88UbXtGlT/3Da6xMmTHCDBg1y3333XaUwiM38XnvtteB4+/btKx1PtPHCCy8EhwYOHBj38vDDD7v7778/vs3Kt99+G/wQeseNG+cuvfRSV6dOnUp+0t3Ycsst49MshEVd4jCBl3XEXKx3CSMnAiIgAiIgAiIgAiIgAiKQfwKM3RhvINTJWjcz3ibsFuNH0xC8EjnEr0TCLPVh+vTpVaz+LK6asuqz9KOWYXEvyo+/L2zxx7FiFgTRVkykS1UOjoctGP0wNbkexT1ZfqiLUYIj+zjmu1IVrf0ypLPu1wPqfZgD9dh0ODilcokYpwqn4/knUDf/SUSnYJUi2U0kOmTN70XM7devn7vhhhvcvffe68444wy38cYVXzRl23fDhg2Li7k//elPA3H3nnvuiT9Fmjx5srviiiv8IGmvL1y40F1wwQVxMffss892xH3HHXe4o446KoiH+K+++mq3du3atOP1PZKGibm77rqru/322x1luu222xzbuJdfftlheVwdZ6KuP3dvlGWuxNzqUFZYERABERABERABERABEciOAFMvYK0bFgeyi632hWIahkseWuwQeIvBRQle5AuhB4vHZMZXZgGY7KNJ6QhFheRAeRCysnXFLOZmW6ZyCUeb5OtKbCdqp8y4sFzKHi6HL9bCwERs82fXLtuZXKNhxhafljVLoEYsdP0i2wWV7Ibh+y+G9f79+7trr73W1a1boYdvu+22wYfEhg4d6r766iu3ZMkSt8kmm7h58+bFxVCE12OOOSae/a5duzp+l112WWDti0jMNAmZuAcffDDuHSvgnj17xreJq2PHju7WW291n3/+uRs+fLg78MAD48fTXTGLWfyfddZZrkuXLkHQdu3aBekhUvO0fvz48RnnP5wHE3XZ76fLtixzoSAnAiIgAiIgAiIgAiIgAjVLgIG9rHWzOwfFYq0bZbVHiTIVLU38Jb6wcGQCkG8tmB213IUiL1gdZyJkkXoy4Tp3uVNM1SFg9Y9zjPV4Msdxxcm+FwAAQABJREFU6m45Ov9680VuK6tNT5GoDTB/UUufcdRx7Ss8gRqz0PWLSmNPo5ppw+rHUcj1U089NS7mWrr+NAtYteKYggHXokWLuMVssGP9v1122cX17ds32Hr11Vf9QynX161b555//vnA36GHHlpJzLXARxxxRDDPLdsjRoyw3RktEYXNIVgz1YI55uq9++673QMPPJCVWGzx+EtE3WbNmvm7gnX2aZqFKli0QwREQAREQAREQAREQAQKTsCsdbHYlcucQE1a6zL2NmHGz7lvuefvT2cdEQkxOOxIJ0pUCvsr5LaJ0OmmKTE3XVKl4w9RvxydibWUDW2Na913djxRG+D7TbRejNd0orzWhv01bqHrQ6ZiMWdKsTeavshp+ffnwF2zZk2we8aMGcGSJ9jXXXedea20xKIXN23atEr7U20sWLAg7sWmPojvWL/Ch8o4Rj4sL2E/qba32GKLQCyeOHGie+edd4Jf9+7dAyGaj67xEbi2bdumiibt40yzwAfkwo59zZs3j8+1Gz6ubREQAREQAREQAREQAREQgcISQNhlgI+RiubWzYw91rrjO9Z3fDStkC5KYM1U5IzKL6JulFAc9kv6iebmDfvN1zblZQ7ZKNHL0swFE4tLy/wT8K3L062L+c9V4VKgvvLDoauFxVz/eFQbULicKqVcEigqQdcKVuwm8A0bNrSsJl3OmjUrftz/sFd8p7fiC7Te7oSr8+fPjx9r3bp1fD28wtQIOCxr+UBbgwaZdxhuuukmx/QOWAQvX77cMS8vv0cffTSI+/jjjw/mEd5oo42C7Wz/Rc2ZS1w2/YIxZB5dOREQAREQAREQAREQAREQgeIggAGLBN30z0VNfSAtSugh1/5r2uFSIP4g1JpYhF9bD/tFVAuLuv62rReLhSSGZFGiLuUza8ZwGbVdfAQ4X+E6HFUXyTn7E9Xf4itZ+jnyyx/15rvVZ67nsNibfiqZT8uSSdzymzmBohJ0/acqmRel+EK0atUqyFSbNm0CwTNZDps0aZLscJVjvv9ly5ZVOW47Fi9eHKzy0bZsxFwCN2rUyPHBNRoBLHWZL3fcuHHBRxE4/vjjjwfzaF155ZVsZuWixFxfuJWomxVWBRIBERABERABERABERCBvBFAGClHcSRfwLDGRcwttFWulSfKMi/ROUT08YUhE4HYh3VrlDNRyYRb8+NvJ0rP/BZ6yRjXRGvSLjdNotA8q5teorpl8fJGt++oTyZW+vupizw4sDqPv5q2DPfzl8t1X6T2r1lLw/hwDfvXoh1PdwlDu8bTDSN/+SVQNIJuOTacNjUDguhBBx0UeSaxnOVVpUyfaJvlLZFOnTrV9evXLzL+KVOmBPuzfQqKIMycwI0bNw6mVmCaBX6//OUvHRbIV199dTCdA4LsxRdfHIi/kRlJsjORmGtz5pqwK1E3CUQdEgEREAEREAEREAEREIECEig2Ya6ARc8qqZqyyrXMIuaYKGv7WCYSaEwI8/3aOsfC4YibN21TCUbhcBZnTS79PPnrNZknpZ0eARMro3wnEnuj/JbqPl9kjbrGfbE32TWdqvy1gWUqBsV4vMYF3XIUcu1EM78sjnlyx44d63baaSc7FCxXrFjhzjrrrMC69bjjjnPnnXdepePJNrC2RVidMGGCe+SRR9zhhx/uNtlkk0pBEEBHjx4d7Ovdu3elY+luPP3008F0C4irDz/8cKVgzK977LHHuiFDhgT7ly5dmpWgu2jRoni8PXr0CObJNTGXA6yHRV0/TDywVkRABERABERABERABERABPJKQEJuZnhrWsi13CK2hl225xLR1oRPRKQoq8BwWmxnm15UXLneZ+XJdbw1HV8qi9eazl910k8m5lYn3lIKa/U26jrkerPjiLn4ycYRj1hnQy7/YermP4nEKZSzmEupt99++7jl7B/+8Ifgg2L2wbS5c+e6O+64IxBz8QuLTB3TIOCY1/aSSy5xM2fODLbXrVvnxowZ42wKBKZbOOGEE4Jj/OMGfMghhwQ/xOBkzhel77nnHocIbY65suwpD9NKJJvL18JELXfbbTeHkBsl5pp/E3XNH2HkREAEREAEREAEREAEREAECkegmAW5wlFIP6ViEXPJcdTr5ib2RJUomfhDPTBnYo+/z46Fl8nSC/vVtggkI4DAmE6dSxZHqR+j/MbAdBm/THa9cS2nspz3w4XXJeaGiRTPdo1Y6Ja7kOuf3vPPP9/99re/DYRbm+8F8ZOpFsydeOKJrmfPnraZ9pIwp556amBB+9lnn7lTTjnFtWjRwq1cuTIQeS2i3//+95WsdxGVEYFxfCgtmdtxxx0d4um7774bfASND6F16tTJEQeWx+bIR7bOxFrC+5a54fjS9RcOp20REAEREAEREAEREAEREIHsCfjCQfax1J6QxSTkGnXOoQkzCDwIQCYGmR9/yZg9XRHI4ibORGGKuQ5Zvo0HQpit+0xKdb3cykfdLKfzk229suuZ8xt+AOMz4ni2ztLINny24VK1P6atJYo/1XE/HGmVqiu4hS4Vwp4UlBK0+vWz07632mor99BDDwVTBmApizMxF/GVeWfPPPPMSBT16tWrsj+8DyH1hhtucF26dAn8YjVrYu3OO+8cTJOw5557VorHj8Nfr+Rp/QbHBw0a5E466SRn+Z8xY0ZczO3atasbPHiwO/TQQ6OCp70PsTaZmGsRpevP/GspAiIgAiIgAiIgAiIgAiKQPYG+fftKPEkTHx87G3JKM3fygIpxX5rBCu4NMSyVUJNszJ7oGPt5xT9KbIvaV/CChxJEBEP4MRGabX7pTiERiq7oNsuxfIhviepf0Z2APGbIREjOsdVfS45rzRhRl/GTjaONqKnrlvxbGbPJe7phSr0+ZadSpksnwl9NVYiIrGS0q3///u7NN99MGIbpBhIdb9asWTD9AVMhfPPNN8FHxrDSbdmypatbt6qmHhXPddddlzBtPojGD8tcPlS20UYbuQ4dOrhEYi2VNpOLgw+iITqfdtppbv78+UH+GzZsGOQfUVpOBERABERABERABERABESgPAlk+vHm8qSQulTFaJWbOtfJfSDomHUfolC64gfh8O9bDprAlDzFwh61skWlyrFizHNUXhPtK8fylfo5SXSuUu1PNBdy1Dn2GaV6cJMq3Zo8buUIC9a5ylO67Vmu0stHPAUXdPNRiFKJs06dOq5t27bBLx95RmQ1S91s4l+8eHE8GB9dCzuslNu1axf8wse0LQIiIAIiIAIiIAIiIAIiIAK1jUA5Crl2DjHGylYQsrAITtlaCFo+amKJiGSCUk2kn+80y718+eZXDPFHXVuIlKVqRBnF1K7BXIu65SDmwkuCblStqYX73nvvPTdq1Kh4ybt37x5f14oIiIAIiIAIiIAIiIAIiIAI1CYCIwa1Squ4+ZxeAcHGBI20MlOEnoo5/8mE5nIQxcq9fEVY3QuWJc5tWOSkzhbz9ZYtHCtTuLzZxlcuYi7lr/q+f7ZUFK6kCVxzzTXu1VdfDcowYMCASh9RK+mCKfMiIAIiIAIiIAIiIAIiIAIiUGIEEHNzJWCUWNELll2EnXJ25V6+cj53qcpG+xB2JnyG95fDNmXLRX0mjnLiVG0L3VRfj0t1vBwqVzmUYZ999nFr1qxxe++9t9tpp53KoUgqgwiIgAiIgAiIgAiIgAiIQIYEci0i5jq+DItTkt4l5hbmtCHsJKqf5SD6lHv5ClNLii8V2oew9TVCZTlYlSejbddkoms2WViOlZuYS5mqLegSiVzpE7j00ktLvxAqgQiIgAiIgAiIgAiIgAiIgAiUMAGJuYU9edl++K2wucw+tXIvX/ZkSjNkbZpqIeoMZSvqlqOYC586S5YsWRcFSvtEQAREQAREQAREQAREQAREQAREoJgJfP7550H2qvNx6GIpX5SYm+jr9sWSZ+VDBESgKoEpU6YEO7t161b1YDX2RLURiPblbp1bDWRlHVRz6Jb16VXhREAEREAEREAEREAEREAEREAEip1AlFBT7HlW/kRABApLAAtVrE3N1YapFqysWlYloCkXqjLRHhEQAREQAREQAREQAREQAREQAREoCAGJuQXBrEREoGAEcm2Z62fcph1g+gVb949rvfYQkKBbe861SioCIiACIiACIiACIiACIiACIlBEBCTmFtHJUFZEoEQISMgtkROV52xqyoU8A1b0IiACIiACIiACIiACIiACIiACIhAmIDE3TETbIiACIiAC6RKQoJsuKfkTAREQAREQAREQAREQAREQAREQgRwQkJibA4iKQgREQARqMYE6S5YsWVeLy6+ii4AIiIAIiIAIiIAIiIAIiIAIlCiBzz//PMh5ly5dSrQEyrYIiIAIiIAIZE5AFrqZM1MIERABERABERABERABERABERABERABERABERABEagRAhJ0awS7EhUBERABERABERABERABERABERABERABERABERCBzAlI0M2cmUKIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIQI0QkKBbI9iVqAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAhkTqB+5kFKI8TAaxaURkaVy4IQGDGoVUHSUSIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIikE8C9adMmZLP+Gsw7tY1mLaSLjYC5VvPi4208iMCIiACIiACIiACIiAChSNQv36FjdL7779fuESVkgiIgAiIgAjUMAFNuVDDJ0DJi4AIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiEC6BOqsi7l0PZeDv/HjxwfF6N27dzkUR2UQAREQAREQAREQAREQAREQgVpLID6+265trWWggouACIiACNQ+ArLQrX3nXCUWAREQAREQAREQAREQAREQAREQAREQAREQAREoUQISdEv0xCnbIiACIiACIiACIiACIiACIiACIiACIiACIiACtY+ABN3ad85VYhEQAREQAREQAREQAREQAREQAREQAREQAREQgRIlIEG3RE+csi0CIiACIiACIiACIiACIiACIiACIiACIiACIlD7CEjQrX3nXCUWAREQAREQAREQAREQAREQAREQAREQAREQAREoUQISdEv0xCnbIiACIiACIiACIiACIiACIiACIiACIiACIiACtY+ABN3ad85VYhEQAREQAREQAREQAREQAREQAREQAREQAREQgRIlIEG3RE+csi0CIiACIiACIiACIiACIiACIiACIiACIiACIlD7CNSvfUVWiUVABFIRWLdunVu7dm3grV69eqm8l9XxNWvWBOWpU6eOq1u3sM+8Fi9e7ObPn+8WLVrkNt98c7fZZpuVFVsVRgREQAREQAREQAREQAREQAREQAREoPoECqtWVD+/ikEESpLAqtVr3Y8/rqn0W71mXdKyrIkdD4chnkK4Rx55xHXt2tVdfvnlhUiuqNIYOnRoUPZBgwYVLF8LFixwv/71r12fPn3c/vvv74477jj36quvFix9JSQCIiACIiACIiACIiACIiACIiACIlA6BErWQnfJkiXum2++CUh36NDBNW7cuCDUv37vKzfhn++5BVO+dT8sWB6k2fe3P3E7nrNbQdIvlkRmvD7Vjb5mhGvVrY07cOhxxZKtjPLx81NHuDf/O8fd+Lfd3c+P3zajsJl6Pu7E192YsRX11cKedXpPN/jqnW2zyvLm28e7m26bUGl/122buzdfO7LSvlxvYB16ww03BNGeeOKJuY6+6OM76qij3HXXXeceffRRd9JJJ7nu3bvnPc933HGHGzFiRJDOoYce6jp27Oh69eqV93SVgAiIgAiIgAiIgAiIgAiIgAiIgAiIQOkRKDlBd+HChW748OFu7NixcdqnnHKK22677eLb+VpZMHGee+WUJ+LRN2iyUbBer0FpvpI+c/hUN/2lya7Vdm1drzN3iZcrnZXVK1YFgvaK9aJ2OmGKzc+KFauDLBXC6nWH7Vu6hhtVGMR/NGGBW7pslVsX+0vmttxiE7fH7u0CL3PmLnfTv1iczHvOjt1zzz1u2bJlwTW100475SzeUomoTZs27thjj3VPPfWUu/HGG919992X96yPHj06SOPCCy90559/ft7TUwIiIAIiIAIiIAIiIAIiIAIiIAIiIAKlS6BkBN2VK1e6YcOGuU8//bTGaE8eVmEt2TJmlbrvbYe7Zh1b1FhecpHw918s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QAIkQAIkQAIkQAIkQAIkQAIkQAIkUIgJFEtB11yPwuada8aVn/sTJ07I2LFjrS5CQ0Pl3XffVWEGvIgzYNViojATqFSpkmzYsEEPsUwZ78JAFOb5cGwkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIZBDIVdPccTcooVURTxc07F5cxODhYC7ol1QpijRo1Eiy4BlE3P6yzWiTMr1QJadHMu/AC+TGG4tgmxHlcZxoJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkEDRI5DpomhFb6rOM4J3bnEUdJ0p8IgESIAESIAESIAESIAESIAEfJcAF0Xz3WvHkZMACZAACeSegJuH7uxJ+eOtmfsh5m1N/oOftzzZGgmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQQMERcBN0C65r3+gJi4elp6dLWFiYDk3g7+/vGwPnKEmABEiABEiABEiABEiABEiABEiABEiABEiABIocAQq62VzSCRMmyKpVq6xSjz76qPz5z3+2jpkgARIgARIgARIgARIgARIgARIgARIgARIgARIggYIi4DOC7oULFwTesllZVFSUBAYGZlUkx+eGDh0qzZs3l/Xr18u6detk8uTJ0rFjR72YWI4bYwUSIAESIAESIAESIAESIAESIAESIAESIAESIAESuAYCPiPonj59Wj755JMsp/rII49IRERElmVyevK2227TVa5cuSIDBw6UnTt3anG3U6dOOW2K5UmABEiABEiABEiABEiABEiABEiABK4SWLlypaSlpYmfn5907do1Sy6HDx+W3bt36zJwsipdunSW5XlS5NChQ7Jnzx7t+NahQwciKSQEzp49Kxs2bNCjadeunQQFBRWSkXEYvkTAZwRdO9QKFSroL3x7HtJ57Z1rb79EiRLSrFkzLegePXrUfoppEiABEiABEiABEiABEiABEiABEiCBHBCAkLto0SKrRqVKlaRx48bWsWtixYoVWpxEfrdu3VxPF4ljMDELuYNFuXLlrmley5cvl9jYWC0YUtC9JpR5Wnnbtm2ChxkwOgvmKdpi1ZhPCrrjxo2TsmXLFviFKlOmjO4TX7I0EiABEiABEiABEiABEiABEiABEiCB3BHYv3+/U8Vly5ZlKegaxyqInCVLlnSqW1QO4E37+++/6+k0bNjwmqdlmFWrVu2a22IDeUfgwIEDujE4JQYEBORd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MAEmwATuNgJ2syhaaGio9MTFCXjqqadMxFzklSlTJlse8tmYABNgAkyACTABJsAEmAATYAJMgAkwASbABJgAE2ACdwsBuxF09+3bJ5kjxIKvr+/dwp+PgwkwASbABJgAE2ACTIAJMAEmwASYABNgAkyACTABJmA1AbsJuXD58mV5ULVr1yYsjLZ3716C166Liwv5+flRly5dqHLlylYfOFdkAkyACTABJsAEmAATYAJMgAkwASbABJgAE2ACTIAJ2BsBuxF0sfAZLCEhgb7//nuNM/Kjo6OlwDty5EgKCQnRyjjBBJgAE2ACTIAJMAEmwASYABNgAkyACTABJsAEmAATuJsI2E3IhZSUFMn9xIkTVLp0aRo4cCC98MIL9Mgjj1DZsmUpKyuL5s2bR1gcjY0JMAEmwASYABNgAkyACTABJsAEmAATYAJMgAkwASZwNxKwG0FXD3/QoEHUunVrGUu3adOmNHbsWFl88+ZNUrF29fU5zQSYABNgAkyACTABJsAEmAATYAJMgAkwASbABJgAE7gbCNiNoItYucrq16+vknIbGBhIzs7OMh0XF2dSxjtMgAkwASbABJgAE2ACTIAJMAEmwASYABNgAkyACTCBu4WA3cTQrVixIl29epXc3NzkQmjmJ8DV1ZWuX78uY+yal/E+E2ACTIAJMAEmwASYABNgAkyACdy9BA4dOnT3HhwfGRNgAkyACTABMwJ246ELwRaWlJQk4+WaHQch3AJMeeqal/M+E2ACTIAJMAEmwASYABNgAkyACTABJsAEmAATYAJMwN4J2I2HbqNGjejYsWNSzI2MjKTq1atr7G/cuEGJiYly38vLS8vnBBNgAkyACTABJsAEmAATYAJMgAnc/QRq1qx59x8kHyETYAJMgAkwgdsE7MZDt2HDhlS6tGG6a9eupYyMDHkIWVlZtHjxYu2EhoSEaGlOMAEmwASYABNgAkyACTABJsAEmAATYAJMgAkwASbABO4mAnbjoevo6Ei9e/empUuXUlhYGH3wwQfk7e1N8fHxlJqaKs9J06ZNycfH5246P3wsTIAJMAEmwASYABNgAkyACTABJsAEmAATYAJMgAkwAY2A3Qi6mHH79u2pfPnytGDBAhkz99y5c9qBdO3albp3767tc4IJMAEmwASYABNgAkyACTABJsAEmAATYAJMgAkwASZwtxGwK0EX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WMegEwIIIIBA6gnkP4OReufFGSGAAAIIIIAAAggggAACCCBQKQQaNGhgypgtacvKynJBXAVyi2q1atUKsoGL6st6BBBAAIHUFijecyGpfQ2cHQIIIIAAAggggAACCCCAAAIIIIAAAgggUCkECOhWitvMRSKAAAIIIIAAAggggAACCCCAAAIIIIBAOggQ0E2Hu8g1IIAAAggggAACCCCAAAIIIIAAAggggEClECCgWyluMxeJAAIIIIAAAggggAACCCCAAAIIIIAAAukgQEA3He4i14AAAggggAACCCCAAAIIIIAAAggggAAClUKAgG6luM1cJAIIIIAAAggggAACCCCAAAIIIIAAAgikgwAB3XS4i1wDAggggAACCCCAAAIIIIAAAggggAACCFQKAQK6leI2c5EIIIAAAggggAACCCCAAAIIIIAAAgggkA4CBHTT4S5yDQgggAACCCCAAAIIIIAAAggggAACCCBQKQQI6FaK28xFIoAAAggggAACCCCAAAIIIIAAAggggEA6CFRJh4vgGhBAAAEEEEAAAQQQQAABBBBAAAEEEgvsyMmxHXl5UR0ysrJMX4najrxc25GTG7U6IzPTMqoQTopCYQaBchbgX2A5g3M4BBBAAAEEEEAAAQQQQAABBMpaYPjFb9qsz+fZqfcMsAN+1bWsD1fp97927Vo77bTTnMMFF1xgF110kZseO3as3XXXXW76oYcesu7duwdW21ausA2zZ1pGRoY1Pqi3RSaCdZrIXr/O1v04zS1r1OMAy6xePWp9SWe+vvR8WzNpYtRmbc+/yPb7w5+iloVnZj7xiOkr3Oq062B9/zM6vKjCTedlZ9vq7ybEPe+67Tta9SZN464rycJZzzxuPz38gLU8+TTr8bf7SrJpqfrmbNxga6dNcfto2L2nZdWoGXd/F198sc2ZM8e6detmQ4cOdX1WrFhhZ599tpu+5JJLbNCgQXG3ZeHuFyCgu/vvAWeAAAIIIIAAAggggAACCCCAQFIFsrfkuP3l5kRnZCb1IOwsEMiOBAgXLlzo5tesWRMs37RpU7B869atwXJNrPj6C/vhjj+6ZSdM+J9lVq0atX79Tz/af397gVt21LtjrNZeraLWl3Sm/r77W2a1am6zddMmW07k3GzHjkJ3U6tlK2t88KGuz9ZlS23T/LmF9q8oK7evXRPYxp5zj3vut5YnnRq7uMTzyohWy9u2rcTblmaD9TN/Cq6t34gPrXabtnF3t2DBAvez2aRJk2B9TuSc/c+xPqSgpa4AAd3UvTecGQIIIIAAAggggAACCCCAAAIIIJAUgf1vviPYz9R7/mzzX/93MJ9oYq+BZ5i+1Ja8/659f8v1ibpWqOUKbDeMZD37ptISaydP8rO8IpDyAgR0U/4WcYIIIIAAAggggAACCCCAAAIIIIAAAskSqFa/gR32/CvB7lSCYfRB+wXzTCCQ6gIEdFP9DnF+CCCAAAIIIIAAAggggAAClVYgLzfP5n2zyF1/614tbN3PG2z+hEW2ftlGa75/M9v7gJZWo17htVVztuXY4inLbMHExZZZJdNa9Wxh2leitmz6Ctu0Zos13ruB1W9Rzzau3Gxzxy+w5TNXWYMWdW2foztYnSa1gs311P6yn1bYz9OW2bqlG93yPTo0tj06NbYmbRsF/eJNaJ8Lv1/irkvnVrdpbdure3Nrts/Ox8Bjt8vekm2LJi+15TNW2ua1W22Pjo3dNdVrVie2a9T8N998E6kwkF9ioHnz5ta6deuo9RVtRgOcrftxqm2YNdO2LF4YKcnQ2urv18XqduiUEpeydcVyWztlkm2cO8eVeqjXqbM16NrDqtTa+bOTEidagpPY1WvSvdowa4arYbw9UspAFnsc2a/AgHTZG9bb+kjd5IxI+Y1GPQ+0LUuXRGr9futKXdRu3cZtU7Ve/RKcMV3TVYCAbrreWa4LAQQQQAABBBBAAAEEEECgwgts3bDNnh/8uruOo645zMYO/SrqmurtWdcueO5MaxoJoMZrW9dvtWd+/aotjgRAw+2oqw817S9e+/D+z23mp3Pt2JuOtNzsPBsz5Mvobrd/ZHf+7zrLqppl2yPB1QePeto2rdoc3eeXucMuPiCynz6WFQnWxrb37h5j44d/H7vYzff7/aHW/9qC56dA7uvXvWtrFq4rsN1ZD5xo3QbuW2C5FuTm5tq5554brNOAT7fddlswX9EmNKDaD3++2VZ89XmBU29/4WXW6XfXF6jJW6BjGS5YPOptm3TbHwocQXWAe933sKmeb0Vrpbmmaf+4y+a/9nLUJTfpfbgdNPTJoK6xVq6f/j8bf/lgq1K7tnW9428FSlzUaLanHfr0S1arVcX+MCIKgpldEiCgu0tsbIQAAggggAACCCCAAAIIIIBA+QoomNu4bUM74FddLS8SaP162He2fukGe/Ksl+2PX19hVWtGD6qls/v4gS/cSR55+cGR4GyuTXxtim3btN3GPvy1dT9tP2vUukHCi5j63gyXdaugcYcj9raa9WvYoh+W2vxvF9mOvPxM17zIoGsK5tZuXMu6nrRP5PwaWdUaVWzJlKX2zcs/2FfPTrScrTl28l3HRB1H2cI+mLv/CZ2sdSTTuHqtqrZi9mr79pXIgF2RbWKbMoCfPPMlt7hhq/p20HndrXqdavbTmDk2Y9wce+PG96xWo5qRc20Tu2mZz2dlZQXHqF59Z8Z0lSo7wy7h6aDzLxObFy0sEIDVIGTxWs7mzfbZr06x7atXucBfm/MGW60We9m6SDBw/msv2eznn3IZnvtEgrq7o6348rMgmNtg/27W4oSTLXfLFpv77+Gm6/zivNPs2HHfWLUGDXfH6e3SMUtzTT9/NNods9VpZ1nN5i1twX9eNd3bleO/tJ8/fM9annxagXPSgHWqV6wB6ZpGAr/LPhvrsnu13axnHrNuf7m3wDYlXVC3bl23Se1I8Ni3zMydH7yEf479el5TR2DnO0vqnBNnggACCCCAAAIIIIAAAggggAACMQIKml76ynlWOxK0VOsSCaAOOfoZF6Cd/M6PdsA53WK2yJ/93cjB1qxzUzfT93e97Z99n3Lb/DRmth164c6BoWI3VgBVwdbT/3G8VYsEW31TQDezSn4AU0Hk8x491Tod1S4qC7fXWV0iwdVaNu6Rr11gd8DNfaP28fmTE9zu2h++t50z9BS/a/d69PWH24YVm6KWqVLCqLvHumVtD2ll5z91ehDAVmD3Pze/b5P+M81G/XWMXT36IsvMyojavqxnGjVqZLNnzy5wmOOPPz7u8tiOn55+XOyihPNzhj0VBHOPfO1dq9VyL9e3VeR7/f272uQ7b7FZTz1qrU47O1iXcGfJXhG5UTMefcjttVGvA+2Qx563zF8C3C1PPtU+O+skU7By7kvP2+4KOJf4kpNwTV1u+6vtffZ57tAdLrvSvrnqkvyAbiTYGy+gq44tjj/Zevz9AcuIBFnbX/xbd09/+teDtnDEG9btzr+bZZTuZ/ytt94qQNGsWbNi/bwW2JAF5S6wM/Re7ofmgAgggAACCCCAAAIIIIAAAgggUFyBQwb1DIK52kbZtT3PyH90feroGXF3o4CsD+aqg7JsFXxVW/9LvVs3k+DbKZHM2nAwV932PnCvIGCqUgr7HtshKpjrd7X/8TtruW5cGR2gzaqaH45Q2YbYVqV6FWu4V3Sd0KU/Lnc1gNX3pDuPDoK5ftvDLsoPTK+au8ZWL1jjF0e9duzY0dq2beu+mjbND3BHddiNM3rEPvYr7ulEgoszn3jErdr3hlsKBGxbnnCK2486rJowPu4uynLhlmU/29ppk90h2l94eRDM1QJlp7Y+M7/sxZLRI8vyNJK679Jek+5r69PPDs4pIzPLmh97vJvf8vOSYHnshIK4Cub6tufRA/ykZa9fH0zHTmSFMsQzq1eLXc18mgiQoZsmN5LLQAABBBBAAAEEEEAAAQQQSG+BVj2bF7hADW72fSQzdfWCtQXWaUGzTgUHF9PAY2qbIwOfFdYUDK7VMD8buLB+Kr8w87O59uPHs23dkvVugLPY/ts2bo9a1O2Ufe1/H8x0pRL+/bt3bL9IULhl9z0jQeqGQbA4vIECtb69fsMoPxn3dUVkoLXYwdhUEuGDDz6I2z8VFh47bkKBkgsKyI6/bFDU6WlQLt9++tcQm/9qfgkKv0yvyoBV2zDzJ/dant/CZSIadO9Z4NDK2p0z/BlXemFHXm4kYFkwoF9go928oLTXVG+ffS0jVHpDl1O9cf6/y60rVyS8ujpt8j948R2qNdpZJzt7/TqrWj/6Qw/fr0rden7SqtTJL6sQLGAibQQI6KbNreRCEEAAAQQQQAABBBBAAAEE0lmgTqSEQWyrEcm4VdMgYQqsZmRGP4YdLyCb+csAZXm/1MGN3aefb9QqcX1d32f75mwbfvGbQfasX169dnRmYHZMTdyOfdu6cg7TIpnFP344031pW9XGPeaGI9y6zKyd2Ymr5u8MWC+bnjgIpn3kbM/VS1o21aD1TTV09ZWo5W3flmhVmS3fsvTnYN9VQ4FFv7Baw0Z+0ratWmU1mu4RzKfqRGmvqXrjgtngGVmFh+OU1ZtZLfrfUDhbd8eOvIRcYfcqtesk7MeKii1Q+E9Qxb42zh4BBBBAAAEEEEAAAQQQQACBtBHIjQxAVqDlj02WvzheTc14ywrsJP6CGvV2Du4Vv4fZp4+OD4K5p94zwPYd0CFS1qGmK++pIO7dXfPrqcZur4HTVDtXwdnJ7063OV8vsMWTl7rA9OvXj7KlP66wY286MthM/dVUR/jm8VcGyyvbRPgR+n4jP7barfZOKYKoIKQKH8e0HTk7g+1RfWP6lftsXpx/W7+cRNR5VoBrqlqvnh3yxDBXriEcBC53Uw5YpgIEdMuUl50jgAACCCCAAAIIIIAAAgggkByB2IHCtFe/rHHbhqUdI6ngSUYn+xZcH1ky9b38x/oH/LGPHfCrrlF91v2cuM6n76j6vsf+MmDbitmr7b27x9jsL+fbd29OtaMjmbp+cDNdn9qmVZstLzcvsnxn9q7fV1Gv8+fPtx2/BOTqRx5Xb9gwf59FbZdK68MBXGXnhudLdJ6/BPpzNueXZyjWtn6bTRsTdq/ZrHmwbtuqlVZjj2bBvCa2rlgWzFerHz8DfFukDEFeTrbrl1WzliXqF+woCRPZG3b+rMYeLxnXlIRTLPYuVMaiySGHFbs/HSumQMnfASvmdXLWCCCAAAIIIIAAAggggAACCFRogRlj5xQ4/5/GzHbLmrbfWV+zQKcyXLB5dX4d3tiB03TIqaNKVsO1aftG1u/3vd3ZKnAbHtxM63z78aNZfrLYr7m5uXbUUUdZ//793dejjz5a7G1TqWPVevXN11JdMvrdXT41H2gtycBpNZrmB2dVUzZcyzd8EjVbtAxml38+Npj2E0vHfOQm63Xq7BcVeP3qwnNszPF93dfkP99cYH1pFqz54bu4m29etCBYXj0mCJ2Mawp2zgQCSRIgoJskSHaDAAIIIIAAAggggAACCCCAQFkKTPj3D7bguyXBIaZ/PMtls2rBgedEZ8cGncp4okWX/CDfxNenWvaW/KxKHXLWF/NszENfJTz6uEe+ttlfzY9k2+58LF81gKe8mx8EVmmF+nvuHNCpUesG1uvs/Gscfc84WxQpzxBuqps7JVK6YeSfPw4vTsvp/W681V3XvFdesMWj3o6+xkgG8uqJE+z7W28wDZyVqNXtsI9bpZq8C0e8YXnZO+9dom1q790mWDX7mcdt+7qddY39imoNGlqLE05xszOf/JdtXrgzULr883H284fvuXVtzh3kNynX168uOMcm3X6ThQc6y9221WY/92RwHrVatgqmNZHq1xR1spGZ6Q/dZ6N6dHRfc198LnY182kiQMmFNLmRXAYCCCCAAAIIIIAAAggggED6Czx9zr+t7SGtXCB0/reL3AW36tHcOvZtt1su/sBzu9nc/y60n6cts7u7DbXOx3SwzWu2uLq6KpOwau6auOc17YOZLuCrwK2CwsrwnfXZPNu2abvrf/yt/axqzapR22qwtFmfz7P1SzfYk2e+ZC277WkNWtazjSs2R2ruLnfb+tIMURum2YwCpkvef9cUIJ102x9MgdO67TtabmQQtHX/mxoMlOYDv/Euf48+/UxZsutnTLfJf7nVfSnzt26HTtb7yeHxNrHqjZtY2/MvMgUJFUzWl88W7jfiA1P2sFrHy39nS0aPdEHTsaccbU0PO9JyNm+2NZMmuvW1925rLU8+zU3H+1ac4HK87Yq7bPG7I0xf7nrbdbB1P061nE35pSc6XnG1aUCy2Fbaa4rdX1nO74hko/sWnvbLeE0PATJ00+M+chUIIIAAAggggAACCCCAAAJpLnDevwa6QcEUQPXB3P1P6GQXDDu7QP1cX3s2I7NgIdyMX2qhZsZZJ0K/Pt62scRdT+5sx/+pX7BYWcMLJi42BZkvfvFXwfLYfXXq29Zdi0orzPx0rk0bPcMFZKvXrmYK3HY7peAj+XWa1LKr37/QDhnU0+1Xg6hpO1koENx8/2Z26AW9gmMWNpGVlVXY6nJZFx6wyptHHThzZ8gmqm9k+YEPPWFd/vQXF3zcNH+uLR3zoa344lMXzK3RbE9rN/gSq1KnTtTuwjOqs9r76Ret1elnm/qrqSZv9tr4AXi/7b7X32z7XH2j1YkEQv022s7XJtayOm3bW78RH1r9ffd3fVZ89XkQzFUw+oiX3rSogcZcr/xv2evWRWXPKhiczLbfH/4Ude6rvv1vEMztdOW11uGi38Y93C5d0y//zgr844wcIe791pFD9zz2RMI/A/H26fsXt5/vz2vFFMiI/KPb+XxDxbyGEp31Dz/84Pp37969RNvRGQEEEEAAAQQQQAABBBBAILUEKsPfd5vXbrF/HJRf7/W6Ty4xlR5YPX+tbYwEQvfo0Nhq1KueEjdl++bsSDbuasvJznPnVb1OtSLPS9GIdUvWu4HdcrNzTQHb+s3rWdUaRT9MrIHR1i5ab+uXbTQdq37zularYc0ij5mOHVTPdsvihaYgreq/1lSA1gcTd/MFK0CrgHNG1aqRQG87y6pR+D1a9ukY+/ba/KCqMmiPHv2pZVZP/s+4Bl7bunyp5W7Z6jKPazZvUezjlPSadvMt4PBpKlD0u2SaXjiXhQACCCCAAAIIIIAAAggggEBFFGi0dwPTVyo1lUxQhmxJmmKOKpmgr5K2zKxMZ5BqDiW9jmT0r9F0D9NXKraq9etbg249in1qqyMZs751jmQCl0UwV/uv3qSp+/LHKslrSa+pJPumLwLFFdiZv1/cLeiHAAIIIIAAAggggAACCCCAAAIIIIBAkgWWf/mZ22OtvVrZXqecnuS9szsE0keADN30uZdcCQIIIIAAAggggAACCCCAAAIIIFAhBXbkRcp1HN7HmvQ+zJr1PdoyqhCyqpA3kpMuFwH+dZQLMwdBAAEEEEAAAQQQQAABBBBAoOQCVatXsSMuO8htWLN+jZLvgC0QqCACGsxr3xtvrSBny2kisHsFCOjuXn+OjgACCCCAAAIIIIAAAggggEBCgao1q9qAP/ZJuJ4VCCCAAAKVT4AaupXvnnPFCCCAAAIIIIAAAggggAACCCCAAAIIIFBBBQjoVtAbx2kjgAACCCCAAAIIIIAAAggggAACCCCAQOUTIKBb+e45V4wAAggggAACCCCAAAIIIIAAAggggAACFVSAgG4FvXGcNgIIIIAAAggggAACCCCAAAIIIIAAAghUPgECupXvnnPFCCCAAAIIIIAAAggggAACCCCAAAIIIFBBBQjoVtAbx2kjgAACCCCAAAIIIIAAAggggAACCCCAQOUTIKBb+e45V4wAAggggAACCCCAAAIIIIAAAggggAACFVSAgG4FvXGcNgIIIIAAAggggAACCCCAAAIIIIAAAghUPgECupXvnnPFCCCAAAIIIIAAAggggAACCCCAAAIIIFBBBQjoVtAbx2kjgAACCCCAAAIIIIAAAgggkEhg+MVv2p87PmATX5uSqEuRy9f9vMH+r/dj7mvrhm1F9k+lDnPmzLEvv/zSpk6dWuRpLViwwPWdNGlSwr4DBw60gw46yPVL2CnJK2677TZr166dDRkyJMl7ZncIIFDRBQjoVvQ7yPkjgAACCCCAAAIIIIAAAghUCoEfP5xpr14z0j5/8psirzd7S47rk5uTV2TfRB3yIttuWrXZfe3I25GoW0ouf+edd2zQoEH2xz/+scjzGz58uOt7zz33JOz7888/26pVq2zbtvILbG/fvt2dj39NeHKsQACBSidQpdJdMReMAAIIIIAAAggggAACCCCAQAUUWDFntU0bPcNytuWWy9lXqZ5lzTo3dcfKrFKx8sHatGnjznv69OlFWi1evNj1ad++fcK+Xbt2taVLl1rdunUT9mEFAgggUF4CBHTLS5rjIIAAAggggAACCCCAAAIIVAqB2bNnW2HBwYqCUHePOva7kYMryulGnefee+8dzK9fv97q1asXzMdOzJ8/3y1SeYNE7dlnn020iuUIIIBAuQsQ0C13cg6IAAIIIIAAAggggAACCCCQzgKPPvqoDRgwwI477rhSX+ayn1baptWb3X5WzV3jXjeu3GRzvl4Qte+9ejS3ajWrRi3zMznbcmzxlGW2YOJiU6Ztq54trHWvFn511Gv2lmxbGjlmbGvZdU/LzMqIXRzM74hUZJj3zUJbPnOVbVi20arXrWb196xrbQ5pZfWa1Qn6xU4sWbLEFi5cGCw+8MADLSsrK5jf1YnWrVsHmyqztrCArj9+27Ztg200MXnyZMvNjc6GVqA+3r52RADGjx/vtu/Ro4epTMJ3333n9tG0aVM7/PDDLRxkjjpQZGbatGmmGr4q69CzZ0+TQ1Ft06ZN7hg//fSTZWdnuw8Runfvbs2aNQs2XbNmjSlLuUaNGm6/wYo4EzrniRMnujUHH3xwUu5DnMOwCAEEkiBAQDcJiOwCAQQQQAABBBBAAAEEEEAAgbDAhx9+aMrUVVC3NNm6nwz50qZ/PCu8a1s8eak9P/j1qGVXvj3Imu+3R9QyzWxdv9We+fWrbpvwyqOuPtSOuuaw8CI3rYDsU2e/XGD5rd/+zmrWr1FguRYoCPzs+a8VOIbvfMGws6z9YTszZv1yvb711lv2wAMPBIsUUGzYsGEwv6sTjRs3ttq1a5uCnqp/26lTJxc0veyyy9wub7jhBjvrrLNs48aNro8WxgZcTzvttAKHf/rpp61///4Fliug+pvf/MYtf+ihh+xPf/pTsF/f+ZlnnrGjjjrKz7pXBYzvu+8+e/LJJ6OWd+vWzRQITtQ02Nvll1/uykDE9tHxTznlFLd47ty5wXkp8Fu1avygvzpPmTIlqm8yAuux58Y8AggkR4CAbnIc2QsCCCCAAAIIIIAAAggggAACUQIK6JY2W7fHaftZq0j2rdrsL+e7zNyGrerbged0izpWoizYjx/4wvU78vKDLTc71ya+NsW2bdpuYx/+2rpH9t2odYPo/exZx/r9rrdbtnnNFvvm5R+i1seb+XrYd0Ew96DzuluLLs0sZ3uuLZmy1L7/z7Ryq/kbe24K4n7//fdB0FMZsMrWVfv6669dQNfPa1mrVq30ErTrrrsuyNB9+OGHg+VFTVx77bWmbN/TTz/dFEQdNWqU2+Suu+6yPn36RGW+qpSDD+aedNJJ1rt3bxdYfe211xIeZvXq1TZw4EC3XoHrCy64wGrWrGkjR450GcE6foMGDezII4+0/fbbL9jPjBkzbP/99w/mYyd++CH/Xh966KGFBn5jt2MeAQTKX4CAbvmbc0QEEEAAAQQQQAABBBBAAIFKJFCabN39jusYSOmxfpVa2KNjEzvytwcHy4uaUB1cP7hZ30iw9p99n3JB3Z/GzLZDLzwganPVze1/3eFu2ZqF64oM6Obl7jAfND7mxiOszxWHRO1vwM19LWM3jafWoUMHF9BVhq6aD1hqWgFdtWXLlrnXPffc0wVF3cwv36655ppg9uWXX3blEIIFhUyo3MOIESOCAdQGDRpk5557ri1YsMB+/PFH69Kli9t6y5YtNnToUDc9ePBg+8tf/hLsVfu4//77g/nwhDJ91ZSB/Pbbb1uLFvnlM5QhrGMpy3nIkCEuoKtSCwcccIBbpgzcwgK6Cn6rHXJI9D10C/mGAAIpJbCb3lZTyoCTQQABBBBAAAEEEEAAAQQQQKBMBXy27gcffFCmx4nd+f4ndAqCuVqnsgmdjmrnuq1fujG2+y7M77Dqtau57apUL5gzVrtRTavVoGbC/TZq1MhlsyqjVV9VqhTcR8KNi1jha+IuXrzY9fzmm2/cq8oZKDNX9Wp9sFfZvMlql1xySRDM1T5Vj1bBVzUfQNa0AqgqCaGmbcJNgdlETWUq1BTA9cFczSt4e8UVV2gyKjNZGbd+mZuIfFOw+Ne//rV99NFHflFQA1gBYBoCCKS2AAHd1L4/nB0CCCCAAAIIIIAAAggggEAaCShbV2UYyqs169SkwKHqNs0PLqqkQmlbZlam9Twz/zH+9/8+zkb9dYyr+bthefGCxeedd5598sknwVfdunVLe0rB9j6gq8zYdevWuQzZgw46yPr16+f6qA6tBmVTUzZvslrHjjuzqv0+feBV5+GbP7bKJsSWe5CDBkeLbaq568tExBs4rVevXsEmPljtl3377bdunfYxbNgwF8B955133DIFmhXgVlPAm4YAAqktQEA3te8PZ4cAAggggAACCCCAAAIIIJBmAsrWvfHGG92gaWV9abUaFsyOzaySHwrIy9uRlMMffH4Pa75/M7ev/77wvb185dt23+FP2LAL37AFE/OzY5NyoBLuxA9yNmfOHDcgmjZXQLdHjx5uT5MnTzafveuDvyU8RNzuql8b26pXr+4W5eXlBat8QFdZyvHaHnsUHORuxYoVQVcFgmNb/fr1g0U+oNu9e3e3TAOkKaCs0gs+M3jcuHGuTrCC22qdO3eOyi52C/mGAAIpJ0BAN+VuCSeEAAIIIIAAAggggAACCCBQGQRmzZpV9peZkVHmx2jStpFd8db5dv5Tp9vBv+lh9fbMz7LVIG5Pn/uKzRg3p8zPId4BVIdWTZmnPjtV5QR8gFMlDxYuXOj6tGnTxr0m41tGMc01kJlaTk5O3MNu3769wPJq1fLLWyTaLhww9n0bNmxoPmtYgduvvvrK7ff88893gV3VFlZwW+2www5zr3xDAIHUFkhecZrUvk7ODgEEEEAAAQQQQAABBBBAAIGUEBgwYIAdd9xxKXEuyToJxTA79Wvnvk76c3+b/+1ie/WakbZp1Wab/M50tzzesZQxumbNmmCVsmqLGxANNkowUatWLVMWqwK6o0aNcr1UTkABTmXkTpgwIchGjS15kGCXSV3cvHlzt7/ly5ebBryLvW6fYRs+qM7dt3A9Xr9s5cqVftL8/rVAdXRnzpzpArdjx441DQJ36aWX2osvvmhffPFFVMA72AETCCCQsgJk6KbsreHEEEAAAQQQQAABBBBAAAEE0k2gNMHcGnXzH9vfuDJ/IK1UtcnIzLA2B+9lvQfn13Od/dX8hKeqgGL//v2Dr7Vr1ybsuysr9t13X7eZgpnK2PVlCpSJqrIDvh5ty5Ytd2X3pdrGl4TQeUyaNClqX4sWLbLp06dHLdOMgr4qi6AWHtDMLYh8Uz1i33zdXs37gc4+/vhjmzhxop144onOQ4Ht999/377++mu3Wby6vX5/vCKAQOoIENBNnXvBmSCAAAIIIIAAAggggAACCKSpgAK5DzzwQKkycxu0rOd0Fk9e6soY5Gbn7nat7Zuz7f17x9myn3Zmhuqkcrbl2OSRP7rza9WzxW47z/bt2wfH7t27dzAdDlwqqJmVlRWsK6+JLl26mL7U7rvvPtu8ebObVgmGv//972463rfBgwe7xSNHjjTVwPVt/vz5NmTIEDc7cOBAl4ns14XLTGhZ37593SplivvAsbJ29UVDAIHUF6DkQurfI84QAQQQQAABBBBAAAEEEECgAguUJis3fNltD2nl6tOuX7rBXrzsLateu5o1aJU/CNY5Q0821bItTcvekm3DLnoz2MW2TTtruA6/+E3Lqpof9FSW6CX/Psf1y9meY189O9F9NW7b0Pbs3NS2bdxusz6fF+zn+Fvyg4fBgnKclWZ4QgAAIexJREFUaNeuXXC0Aw88MJj2A6Npgc/iDVZGJm655ZaoQetUtkHtr3/9qz322GNuWt/uuece69SpUzBfkgk53nDDDXbxxRfb+PHjXZBV5zVt2rQgczje/s444wx76qmnTIOcaVtl36oer0on+Hb11Vf7Sffqs5P9dXgLBXYff/xx1+eII46I2oYZBBBIXQECuql7bzgzBBBAAAEEEEAAAQQQQACBCiyg7NCrrroqaVdQtWZVF0j95sVJNmnE/1x92mXTV7j9526LztbNzIoUtY00lT+Ibb5Wa2bMurzcHbZg4uLY7m5eWcHxWpXqVazzMR1s+sezbNXcNe7L92sYCTYrmNto7wZ+UYHXzMzoB4dj5wtsUMIFbdq0CbbwWapaoOW1a9d2ZRfCQV/fWVmrfqAwv0yvCxYscF9+mcolqHlTTZfkGvr162fPPvusKQCrYKsvmaD6tio/8cYbb2iXUU2DnY0YMcLuuOMOe+edd1wJBd9BGb/K0o13TYcffrjrf/TRR7sAsLbp1Su/LIamfZBX0zQEEEhtgYxInZYdqX2KnB0CCCCAAAIIIIAAAggggAACiQXCgbrEvcpvzY033mjJysotv7Mu3ZFyc/JszcK1kSDzFhdErtesTiSbuI5lZkUHbEt3lPTdOi8vz+bNm2caJG6fffYxDehWnLZlyxaXSZydne0GemvQIHHwvDj7ow8CCFQMAQK6FeM+cZYIIIAAAggggAACCCCAAAIJBFItoDt79mwL125NcNosRgABBBBAYJcEMjZs2ECG7i7RsRECCCCAAAIIIIAAAggggMDuFFDgVC3VArq704RjI4AAAgikvwDPPqT/PeYKEUAAAQQQQAABBBBAAAEEEEAAAQQQQCBNBAjopsmN5DIQQAABBBBAAAEEEEAAAQQQQAABBBBAIP0FCOim/z3mChFAAAEEEEAAAQQQQAABBBBAAAEEEEAgTQQI6KbJjeQyEEAAAQQQQAABBBBAAAEEEEAAAQQQQCD9BQjopv895goRQAABBBBAAAEEEEAAAQQQQAABBBBAIE0ECOimyY3kMhBAAAEEEEAAAQQQQAABBBBAAAEEEEAg/QUI6Kb/PeYKEUAAAQQQQAABBBBAAAEEEEAAAQQQQCBNBAjopsmN5DIQQAABBBBAAAEEEEAAAQQQQAABBBBAIP0FCOim/z3mChFAAAEEEEAAAQQQQAABBBBAAAEEEEAgTQQI6KbJjeQyEEAAAQQQQAABBBBAAAEEEEAAAQQQQCD9BQjopv895goRQAABBBBAAAEEEEAAAQQQQAABBBBAIE0ECOimyY3kMhBAAAEEEEAAAQQQQAABBBBAAAEEEEAg/QUI6Kb/PeYKEUAAAQQQQAABBBBAAAEEEEAAAQQQQCBNBKqU5XV88sknNnfuXPel4/Tv39+OPvrouIdU3zFjxrh1bdu2da/q66fjbsRCBBBAAAEEEEAAAQQQQAABBBBAAAEEEECgEgmUSYaugri33XabC9Bq2jcfsPXz4dfwOh8Efvrpp4NgcLgv0wgggAACCCCAAAIIIIAAAggggAACCCCAQGUUKJMMXWXbxjZl5xbWtN4HcsP9FNS95557wot2+/T69evtm2++cedx4IEHWoMGDYo8p3Xr1tmECRNcvz59+li1atWK3GZ3dNiwYYMtXbrUsrOzrXnz5tawYcMyO41t27bZ7Nmzbc6cOe51+fLl1rhxY3fcnj17WufOnZN27Irin7QLDu1o48aNtmjRIqtSpYrtscceVq9evdBaJhFAAAEEEEAAAQQQQAABBBBAAAEEKpJA0gO6sUFZlUy49NJLizTxpRi0vS/V4DfSvF/vl+3O14ULF9rrr7/uTqFp06bFCugqWOm3OeSQQ1IuoLtgwQJ76aWXbN68eVG01atXt/POO88OPfTQqOWlndHxhgwZYps2bYra1cqVK+2nn36ycePGWcuWLe3iiy+2vfbaK6rPrsykuv+uXFNR28yYMcOefPJJU5A+3Jo1a+bu6b777htezDQCCCCAAAIIIIAAAggggAACCCCAQAUQKJOSC+HrLmkNXPVPpeBt+FrSdXrJkiV27733BsHcqlWrWmZm/o+Gsmiff/55Gz16dNIu/7PPPnNZ1z6Yqyzggw8+2E477TRT9nLNmjXdsRYvXmz/+Mc/TEFeWskEvv/+e3vggQeCYK7uqW/Lli1zwfRZs2b5RbwigAACCCCAAAIIIIAAAggggAACCFQQgaRn6Orx+XBr165deLbSTivbdPDgwZaRkWG1a9dOKYdhw4ZZXl6eOydlxCqDWPPK8FQwd82aNTZixAjr27ev1apVq1TnruCxMoHVFDS+4oorrHv37lH7VEbwO++844LIKv3w4IMPplzZjagTTrGZnJwce+GFF9xZ6Wft+uuvt1atWtnmzZtNgd7hw4e7dc899xyuKXbvOB0EEEAAAQQQQAABBBBAAAEEEECgKIEyz9At6gQqy3oFQg8//HA77LDDguzXVLj2HTt2mMofqOn8FMxVU7BVNWwHDRrk5vXN9wsW7MLEv//972CrW265pUAwVyt1bGXrqj6xmjJ0FQimFU9g5syZQSmLK6+80gVztaX/GTzuuOPcjuSq4C8NAQQQQAABBBBAAAEEEEAAAQQQQKDiCCQ9Q7fiXHr5nqkCkq+88oo7qLJSfaarsiSVAXvqqaeaHotXvWDVkNWy+vXrW7du3ezss8821bKNbaqN+u6775oCeD///LOr5bv//vvbAQccYMWtj6pMXJ+dG28AtKysrOCw27dvD6Z3ZULZ28r6VVOwdu+99y50NyeccIJ9++23rs/48ePtjDPOiOqvQea0XnWXZdGkSRNTyQ5lErdv3z6qb6IZ769SDz6AHO6rWr7fffed25/ukdrHH39skydPdsFolYrQPZg+fbqpTq9qKnft2tXOPPNMF5j+/PPP3WB4PnNd6xVQ7d27d3AYlZ544okn3Lx+NrSvr7/+2t1XlbzQNkceeaQdc8wxLsM72DDBhA+862emY8eOBXppYDTfNFicBqKjIYAAAggggAACCCCAAAIIIIAAAghUDIGkB3QVXKMVFFDQToFatdzc3KDDlClTXDalgpOffvppEFxVBwXbFBCcOnWq/f3vf4/K7FXQ79FHHzUF/HxbvXq1669tfvOb37h6tH5dolcFbBUE1X2bNGmSnXzyyVFBQwU0fVPGbmmaztk3HaeopsHQHnvsMWfia/pqG12zArEqHxBuCqjq67///a+dcsop7lrC6+NNe/9OnTrFW+3ume6bD3qr07zIwHFapuxW1RYODzqm+rT68pmvYT9tq8C+zl0/D75WtMpK+J+Njz76yN577z11DZr298Ybb5gG41NJjKKayiuceOKJFi9Ar21/+OEHt4u6desSzC0Kk/UIIIAAAggggAACCJSRgJ6W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"/><use stroke="#7E7C7B" xlink:href="#rect-1"/></g><text id="nested-calls" fill="#C06334" font-family="OpenSans-Bold, Open Sans" font-size="18" font-weight="bold"><tspan x="337" y="94">nested calls</tspan></text><path id="Line-2" fill="#C06334" fill-rule="nonzero" d="M412.013 99.435l1.276.79 39.263 24.271 4.207-6.804 11.166 18.07-21.156-1.91 4.205-6.804-39.263-24.272-1.276-.789 1.578-2.552z"/></g></g></svg> \ No newline at end of file +<<<<<<< HEAD +<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="698" height="310" viewBox="0 0 698 310"><defs><style>@import url(https://fonts.googleapis.com/css?family=Open+Sans:bold,italic,bolditalic%7CPT+Mono);@font-face{font-family:'PT Mono';font-weight:700;font-style:normal;src:local('PT MonoBold'),url(/font/PTMonoBold.woff2) format('woff2'),url(/font/PTMonoBold.woff) format('woff'),url(/font/PTMonoBold.ttf) format('truetype')}</style></defs><defs><path id="rect-1" d="M0 0h698v310H0z"/></defs><g id="debugging" fill="none" fill-rule="evenodd" stroke="none" stroke-width="1"><g id="chrome-sources-debugger-trace-1.svg"><g id="Bitmap"><image width="698" height="310" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABXQAAAJsCAYAAABd1yu6AAAMSWlDQ1BJQ0MgUHJvZmlsZQAASImVVwdUU8kanltSSWiBCEgJvYlSpEsJoUUQkCrYCEkgocSYEETsyqKCaxcRsKGrIoquBRA79rIodtfyUBaVlXWxYEPlTQro6nnvnfefM3e+/PPP95fMnTsDgE41TyrNRXUByJPky+IjQljjUtNYpA5AACZAG7gCLx5fLmXHxUUDKAP9P+XtLYAo++suSq4fx/+r6AmEcj4ASBzEGQI5Pw/iAwDgxXypLB8Aog/UW0/LlyrxBIgNZDBAiKVKnKXGxUqcocYVKpvEeA7EuwAg03g8WRYA2k1QzyrgZ0Ee7TsQu0oEYgkAOmSIA/kingDiSIiH5eVNUWJoBxwyvuHJ+gdnxiAnj5c1iNW5qIQcKpZLc3nT/89y/G/Jy1UM+LCDjSaSRcYrc4Z1u5MzJUqJaRB3SzJiYiHWh/i9WKCyhxilihSRSWp71JQv58CaASbErgJeaBTEphCHS3JjojX6jExxOBdiuELQQnE+N1Ezd5FQHpag4ayWTYmPHcCZMg5bM7eeJ1P5VdqfVuQksTX8d0RC7gD/myJRYoo6ZoxaIE6OgVgbYqY8JyFKbYPZFIk4MQM2MkW8Mn4biP2EkogQNT82KVMWHq+xl+XJB/LFFonE3BgNrswXJUZqeHbxear4jSBuEkrYSQM8Qvm46IFcBMLQMHXu2FWhJEmTL9YuzQ+J18x9Jc2N09jjVGFuhFJvBbGpvCBBMxcPzIcLUs2Px0jz4xLVceIZ2bzRcep48EIQDTggFLCAArYMMAVkA3Frd2M3/KUeCQc8IANZQAhcNJqBGSmqEQl8JoAi8BdEQiAfnBeiGhWCAqj/PKhVP11Apmq0QDUjBzyBOA9EgVz4W6GaJRn0lgz+gBrxD975MNZc2JRjP+rYUBOt0SgGeFk6A5bEMGIoMZIYTnTETfBA3B+Phs9g2NxxH9x3INqv9oQnhDbCY8JNQjvh7mTxfNl3+bDAGNAOPYRrcs74NmfcDrJ64iF4AOSH3DgTNwEu+EjoiY0HQd+eUMvRRK7M/nvuf+TwTdU1dhRXCkoZQgmmOHw/U9tJ23OQRVnTbyukjjVjsK6cwZHv/XO+qbQA9lHfW2KLsP3YOewkdgE7gjUCFnYca8IuY0eVeHAV/aFaRQPe4lXx5EAe8Q/+eBqfykrKXetcu1w/qcfyhYXK/RFwpkiny8RZonwWG+78QhZXwh8+jOXu6uYLgPI7ot6mXjNV3weEefGrbsEGAAIO9Pf3H/6qi2oGYH8ZANTbX3X2s+B2cBKA81V8haxArcOVDwKgAh34RhkDc2ANHGA+7sAL+INgEAZGg1iQCFLBJFhlEVzPMjANzATzQAkoA8vBGlAJNoItYAfYDfaBRnAEnARnwSVwFdwE9+Dq6QTPQQ94C/oQBCEhdISBGCMWiC3ijLgjPkggEoZEI/FIKpKOZCESRIHMRBYgZchKpBLZjNQivyKHkJPIBaQNuYs8QrqQV8hHFENpqAFqhtqhI1AflI1GoYnoRDQLnYoWocXoUrQCrUF3oQ3oSfQSehNtR5+jvRjAtDAmZom5YD4YB4vF0rBMTIbNxkqxcqwGq8ea4f98HWvHurEPOBFn4CzcBa7gSDwJ5+NT8dn4ErwS34E34Kfx6/gjvAf/QqATTAnOBD8ClzCOkEWYRighlBO2EQ4SzsC3qZPwlkgkMon2RG/4NqYSs4kziEuI64l7iCeIbcQOYi+JRDImOZMCSLEkHimfVEJaR9pFOk66RuokvSdrkS3I7uRwchpZQp5PLifvJB8jXyM/JfdRdCm2FD9KLEVAmU5ZRtlKaaZcoXRS+qh6VHtqADWRmk2dR62g1lPPUO9TX2tpaVlp+WqN1RJrzdWq0NqrdV7rkdYHmj7NicahTaApaEtp22knaHdpr+l0uh09mJ5Gz6cvpdfST9Ef0t9rM7SHa3O1BdpztKu0G7Svab/QoejY6rB1JukU6ZTr7Ne5otOtS9G10+Xo8nRn61bpHtK9rdurx9Bz04vVy9NbordT74LeM32Svp1+mL5Av1h/i/4p/Q4GxrBmcBh8xgLGVsYZRqcB0cDegGuQbVBmsNug1aDHUN9wpGGyYaFhleFRw3YmxrRjcpm5zGXMfcxbzI9DzIawhwiHLB5SP+TakHdGQ42CjYRGpUZ7jG4afTRmGYcZ5xivMG40fmCCmziZjDWZZrLB5IxJ91CDof5D+UNLh+4b+rspaupkGm86w3SL6WXTXjNzswgzqdk6s1Nm3eZM82DzbPPV5sfMuywYFoEWYovVFsct/mQZstisXFYF6zSrx9LUMtJSYbnZstWyz8reKslqvtUeqwfWVGsf60zr1dYt1j02FjZjbGba1Nn8bkux9bEV2a61PWf7zs7eLsVuoV2j3TN7I3uufZF9nf19B7pDkMNUhxqHG45ERx/HHMf1jledUCdPJ5FTldMVZ9TZy1nsvN65bRhhmO8wybCaYbddaC5slwKXOpdHw5nDo4fPH944/MUImxFpI1aMODfii6una67rVtd7bvpuo93muzW7vXJ3cue7V7nf8KB7hHvM8WjyeDnSeaRw5IaRdzwZnmM8F3q2eH728vaSedV7dXnbeKd7V3vf9jHwifNZ4nPel+Ab4jvH94jvBz8vv3y/fX5/+7v45/jv9H82yn6UcNTWUR0BVgG8gM0B7YGswPTATYHtQZZBvKCaoMfB1sGC4G3BT9mO7Gz2LvaLENcQWcjBkHccP84szolQLDQitDS0NUw/LCmsMuxhuFV4VnhdeE+EZ8SMiBORhMioyBWRt7lmXD63ltsz2nv0rNGno2hRCVGVUY+jnaJl0c1j0DGjx6wacz/GNkYS0xgLYrmxq2IfxNnHTY07PJY4Nm5s1dgn8W7xM+PPJTASJifsTHibGJK4LPFekkOSIqklWSd5QnJt8ruU0JSVKe3jRoybNe5SqkmqOLUpjZSWnLYtrXd82Pg14zsneE4omXBrov3EwokXJplMyp10dLLOZN7k/emE9JT0nemfeLG8Gl5vBjejOqOHz+Gv5T8XBAtWC7qEAcKVwqeZAZkrM59lBWStyuoSBYnKRd1ijrhS/DI7Mntj9ruc2JztOf25Kbl78sh56XmHJPqSHMnpKeZTCqe0SZ2lJdL2qX5T10ztkUXJtskR+UR5U74BPLBfVjgoflI8KggsqCp4Py152v5CvUJJ4eXpTtMXT39aFF70ywx8Bn9Gy0zLmfNmPprFnrV5NjI7Y3bLHOs5xXM650bM3TGPOi9n3m/zXeevnP9mQcqC5mKz4rnFHT9F/FRXol0iK7m90H/hxkX4IvGi1sUei9ct/lIqKL1Y5lpWXvZpCX/JxZ/dfq74uX9p5tLWZV7LNiwnLpcsv7UiaMWOlXori1Z2rBqzqmE1a3Xp6jdrJq+5UD6yfONa6lrF2vaK6IqmdTbrlq/7VCmqvFkVUrWn2rR6cfW79YL11zYEb6jfaLaxbOPHTeJNdzZHbG6osasp30LcUrDlydbkred+8fmldpvJtrJtn7dLtrfviN9xuta7tnan6c5ldWidoq5r14RdV3eH7m6qd6nfvIe5p2wv2KvY++ev6b/e2he1r2W/z/76A7YHqg8yDpY2IA3TG3oaRY3tTalNbYdGH2pp9m8+eHj44e1HLI9UHTU8uuwY9Vjxsf7jRcd7T0hPdJ/MOtnRMrnl3qlxp26cHnu69UzUmfNnw8+eOsc+d/x8wPkjF/wuHLroc7Hxktelhsuelw/+5vnbwVav1oYr3learvpebW4b1XbsWtC1k9dDr5+9wb1x6WbMzbZbSbfu3J5wu/2O4M6zu7l3X/5e8Hvfvbn3CfdLH+g+KH9o+rDmX47/2tPu1X70Ueijy48THt/r4Hc8/0P+x6fO4if0J+VPLZ7WPnN/dqQrvOvqn+P/7Hwufd7XXfKX3l/VLxxeHPg7+O/LPeN6Ol/KXva/WvLa+PX2NyPftPTG9T58m/e2713pe+P3Oz74fDj3MeXj075pn0ifKj47fm7+EvXlfn9ef7+UJ+OpjgIYbGhmJgCvtgNATwWAcRWeH8ar73kqQdR3UxUC/wmr74Iq8QKgHnbK4zrnBAB7YbMLhtywVx7VE4MB6uEx2DQiz/RwV3PR4I2H8L6//7UZACR4nvks6+/vW9/f/3krDPYuACemqu+XSiHCu8GmYCW6aTSpGnwn/wZ3TIEEcU5bKwAAADhlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAAqACAAQAAAABAAAFdKADAAQAAAABAAACbAAAAACCYO4rAABAAElEQVR4AeydB7wU1dmHD01AEKRJsYCgNBUExUIsqNh7SdSYWKNRo8YSS9QETEyiUexRY0GNRlFj74Kg+ZSoiAgqRRBBAUEBpYu0b5+5vMu5c2fr3d27u/d/7m/vtFOfOXPmnP+8c6bOkiVL1jk5ERABERABERABERABERABERABERABERABERABERCBoidQt+hzqAyKgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAgEBCToqiKIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIQIkQkKBbIidK2RQBERABERABERABERABERABERABERABERABERABCbqqAyIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiJQIgQk6JbIiVI2RUAEREAEREAEREAEREAEREAEREAEREAEREAERECCruqACIiACIiACIiACIiACIiACIiACIiACIiACIiACJQIAQm6JXKilE0REAEREAEREAEREAEREAEREAEREAEREAEREAERkKCrOiACIiACIiACIiACIiACIiACIiACIiACIiACIiACJUJAgm6JnChlUwREQAREQAREQAREQAREQAREQAREQAREQAREQATqC0FmBL744gs3ffp0N3LkyMwCpvC99dZbu/3228+xzIebMmVKEG23bt3yEb3iFAEREAEREAEREAEREAEREAEREAEREAERqCEC0n1qCHwNJSsL3QzBv/HGGzkXc8mCCcUZZkfeRUAEREAEREAEREAEREAEREAEREAEREAEREAEahEBWehmeLIRXnF/+ctfMgyZ3PtVV10VCMVY6cqJgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIQBQBWehGUdE+ERABERABERABERABERABERABERABERABERABEShCAjm10M31dAQ2n+yvfvWrIkSnLImACIiACIiACIiACIiACIiACIiACIiACIiACEQRMJ0Qfc++HRXlT/syJ5AzQfe+++4L5oHNPAuJQ9j0BlQATUWQmJOOiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiECxEDAxl/yg75nGJ30vN2coZ4KunRjNLZubE1ObYhk1apRbs2ZN2kXea6+93EYbbeQmTJjgvvnmG7flllu6bt26pR1eHsufwMqVK93nn3/upk+fHiypJ61atXLt27d3ffr0cd27dy9/COtL+Oabb7rVq1e7Xr16uc0226zWlDtRQRcsWOCGDx/uZsyY4WbNmhW0JZtvvrnr3LmzO/DAA93GG2+cKKj2lymBtWvXxj922rx5c9evX7+kJf3qq68cXxBu1KiR22OPPZL6LeeDXEPTpk1zTZs2dbvttls5FzVetmT9lTp16riWLVu6tm3bBvcatgvl6A9RJ5csWeK22WYbRz9JTgSyJeDXc+6N/FI5+l3/93//F/e23XbbBddBfIdWypaA3RMpIJZ3Xbp0KZqyLlq0yI0ZMybIj40f2Xj77bfdDz/8UHR940T5LRqgyogIZEFg5MiRVUKxr9QEXQxYybPNIlClUAl2oJMiaudr1oGcCboJ8q/dIpCUAAPpYcOGJfUTPrjLLrsEIsyLL77oZs6cGQwka6ugi1D31ltvBYh22mknt+mmm4Zx1brtL7/80t1yyy1u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7733tk0tRUAEREAEIgiEtb8IL9qVJoGcCbqkl61qnSicibcm5qZZppx6S2RxnNNEFJkIiIAIiIAIiIAIiIAIiIAIiEDJEEDAZdoApjNiOg4+/ubP/1wyBSlQRvlgJh8+Y97qTBwfTmS6KE0XlAk1+RWB4iBgRpx+biTo+jSqt55TQTfTrCDYppq/ykRd4vbXM01L/kVABERABERABERABERABERABEQgFwT4uBc/ufQI8CG0bNzuu+/u+MmJgAiUHgHT8MxIE4HX9pVeaYovx3ViX+teV3zZqvkc+V+yK1RueFKRyFq5unkoxq8dVrdMCi8CIiACIiACIiACIiACIiACIiACIiACIuCcdJ/aVQvq1q7ipl9anhoU0hSctPSkIv3zI58iIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiUBsJyEK3Np51lVkEREAEREAEREAEREAEREAEREAEREAEREAERKAkCchCtyRPmzItAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiJQGwlI0K2NZ11lFgEREAEREAEREAEREAEREAEREAEREAEREAERKEkCEnRL8rQp0yIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgArWRgATd2njWVWYREAEREAEREAEREAEREAEREAEREAEREAEREIGSJCBBtyRPmzItAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiJQGwlI0K2NZ11lFgEREAEREAEREAEREAEREAEREAEREAEREAERKEkCEnRL8rQp0yIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgArWRgATd2njWVWYREAEREAEREAEREAEREAEREAEREAEREAEREIGSJFC/JHOtTIuACIiACJQNgYHXLCibsqgguScwYlCr3EeqGEVABERABERABERABERABESghAnUnzJlSglnX1kXAREQAREofQKtS78IKkHeCKifkje0ilgEREAEREAEREAEREAERKBECWjKhRI9ccq2CIiACIiACIiACIiACIiACIiACIiACIiACIhA7SNQZ8mSJetqX7FVYhEQAREQAREQAREQAREQAREQgVIn8PnnnwdF6NKlS6kXRfkXAREQAREQgbQJyEI3bVTyKAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAI1S0CCbs3yV+oiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIikDYBCbppo5JHERABERABERABERABERABERABERABERABERABEahZAhJ0a5a/UhcBERABERABERABERABERABERABERABERABERCBtAlI0E0blTyKgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIQM0SkKBbs/yVugiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAikTUCCbtqo5FEEREAEREAEREAEREAEREAEREAEREAEREAEREAEapaABN2a5a/URUAEREAEREAEREAEREAEREAEREAEREAEREAERCBtAhJ000YljyIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiJQHgTuu+8+98Ybb5RHYWpZKerXsvKquCIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiKQFwJTpkwJ4u3WrVte4s9VpAi5X3zxRfAjzv322y9XUSueAhCQhW4BICsJERABERABERABERABERABERABERABERABESgGAgi5I0eOjGeFdVnqxnGUxIosdEviNCmTIiACIiACIiACIiACIiACIiACIiACIiACIlB9AlHibefOnasfcZ5jIN++EJ1Ocvvuu29ZWh/LQjedsy8/IiACIiACIiACIiACIiACIiACIiACIiACIlDiBGyqBb8YiJ5bb721v6vo1rMRcylEuVofZ22he9VVV9XIyf3LX/5SI+kqUREQAREQAREQAREQAREQAREoVwKZWjzligMigpwI1BSBRLpGuekOZo2pOVJrqqYVT7rhqRbIGUJusdeNbMVcI2/3uGIvp+U3nWXWgm46kcuPCIiACIiACIiACIiACIiACIiACIiACIhAzRAIC2HlJGjVDNHSTtXEfb8UxV4nwnXYz3sm6+Um6lZb0E305MqedCU6ngl0/Fp8mYbLlf+vv/7affTRR65hw4Yu30+Rhw8f7lavXu369u3r2rZtGxRh3Lhxbu7cua5jx46uZ8+euSpWlXjefPNNt2LFikppV/GkHSIgAiIgAiIgAiIgAiIgAmVJIFdjHRs4J4rPjhcrxIHXLIjM2ohBrSrtv+Shxe7kvRu73p0aVNpfbhtY9eGK/ZXscuNe3fLcd999zs4dcXHdsf2rX/2qulHXSHiEvWIXH2sETJqJws+vDwSjjS7m6zpXYq4hsntPOdSjagu6BqXcl1OnTnXXX399UMxEnZJcMTAR/K9//Wtc0H388cfdu+++644//vi8CrqDBw8OiuGnnatyKR4REAEREAEREAEREAEREAERKCcC42escpfEfoi6Jw/YuCyKhoCCQ/gJiz9WQHtFu5iFIMtrbV2GxVzjwDnlWCmKuuUkxtn5KNSS8278LE27jm272Ja5FnOtfMah1EVdCbp2RrWsUQKvv/56kP4BBxyQNB/p+ksaiQ6KgAiIgAiIgAiIgAiIgAiIQA4J/OutFW78zNUlba2L4BNlwReFyURBjmHwVOrCSFQZS3Wff24SlQE/vAWNqFtqojxiXOfOnUsu34nORTr7s3ljnfPqi/b2oMZPz67bqDpT03UjX2Kulb8cRF0JunY2tQwI/OlPf3Lr1q1zPXr0KBgRRFoTakk0kaibrr+CZVwJiYAIiIAIiIAIiIAIiIAIiMB6AqVsrVsd8QRhBEEIcajUxMFyq7xRwlyyMpqlbqmdt1LNd7JzketjJtYSb9SDGn+qhSixtyYZV6c9yoRjqYu6BRd0aWBKrbHIpEKUut+99tqr4EVYtGhRPE0TdsOibljM9cPEA2tFBERABERABERABERABEQgpwS+//57t+mmm+Y0znKPrJSsdTMVABOdO4tH1rqJCOV/f7YiGMJdKZ438m3TVSajWxs1KF+spfwmXBonNDkTfKPEXvOXLmPzn6tlOL/heMPnPWzBnOq4Hx9pGQt/fymsF1zQLdXGwj+ZK1eudE8//bQbNWqUmzVrVnCoV69e7qSTTnI77LCD7zW+/t577wX+P/30U7d06VLXp0+f4MeF1qRJk7i/bFYWL17snnnmGTdp0iQ3ZcoUV79+fbf99ts78nTYYYe5Bg3Sn6B/yJAhbtmyZcFcvd26dYtnZ8yYMe6ll15yn332mZszZ45r06aN69SpU2BNSxnq1asX95vpym677eYoA/nHhUXdsJiL9TBh5ERABERABERABERABERABPJL4MMPPwwMcmSUkxlns9blY2nF+tE0E2HTKZmdf8Ikc4gjte11+GQ8CnUsWzHX8mcCWqkJW+hL/rQCVh6WYSalKFr75Ul33RdrjUM4rJ3nKLE37DcZ47BfbReWQMEFXYpHY0HFoRLZjaGwxa5eapdccon75JNPKkXCB8v4MWWBb+W6atUqd+eddwaCqx8ABvwQSW+88UbXtGlT/3Da6xMmTHCDBg1y3333XaUwiM38XnvtteB4+/btKx1PtPHCCy8EhwYOHBj38vDDD7v7778/vs3Kt99+G/wQeseNG+cuvfRSV6dOnUp+0t3Ycsst49MshEVd4jCBl3XEXKx3CSMnAiIgAiIgAiIgAiIgAiKQfwKM3RhvINTJWjcz3ibsFuNH0xC8EjnEr0TCLPVh+vTpVaz+LK6asuqz9KOWYXEvyo+/L2zxx7FiFgTRVkykS1UOjoctGP0wNbkexT1ZfqiLUYIj+zjmu1IVrf0ypLPu1wPqfZgD9dh0ODilcokYpwqn4/knUDf/SUSnYJUi2U0kOmTN70XM7devn7vhhhvcvffe68444wy38cYVXzRl23fDhg2Li7k//elPA3H3nnvuiT9Fmjx5srviiiv8IGmvL1y40F1wwQVxMffss892xH3HHXe4o446KoiH+K+++mq3du3atOP1PZKGibm77rqru/322x1luu222xzbuJdfftlheVwdZ6KuP3dvlGWuxNzqUFZYERABERABERABERABEciOAFMvYK0bFgeyi632hWIahkseWuwQeIvBRQle5AuhB4vHZMZXZgGY7KNJ6QhFheRAeRCysnXFLOZmW6ZyCUeb5OtKbCdqp8y4sFzKHi6HL9bCwERs82fXLtuZXKNhxhafljVLoEYsdP0i2wWV7Ibh+y+G9f79+7trr73W1a1boYdvu+22wYfEhg4d6r766iu3ZMkSt8kmm7h58+bFxVCE12OOOSae/a5duzp+l112WWDti0jMNAmZuAcffDDuHSvgnj17xreJq2PHju7WW291n3/+uRs+fLg78MAD48fTXTGLWfyfddZZrkuXLkHQdu3aBekhUvO0fvz48RnnP5wHE3XZ76fLtixzoSAnAiIgAiIgAiIgAiIgAjVLgIG9rHWzOwfFYq0bZbVHiTIVLU38Jb6wcGQCkG8tmB213IUiL1gdZyJkkXoy4Tp3uVNM1SFg9Y9zjPV4Msdxxcm+FwAAQABJREFU6m45Ov9680VuK6tNT5GoDTB/UUufcdRx7Ss8gRqz0PWLSmNPo5ppw+rHUcj1U089NS7mWrr+NAtYteKYggHXokWLuMVssGP9v1122cX17ds32Hr11Vf9QynX161b555//vnA36GHHlpJzLXARxxxRDDPLdsjRoyw3RktEYXNIVgz1YI55uq9++67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gAiIgAiIgAiUMAGJuYU9edl++K2wucw+tXIvX/ZkSjNkbZpqIeoMZSvqlqOYC586S5YsWRcFSvtEQAREQAREQAREQAREQAREQAREoJgJfP7550H2qvNx6GIpX5SYm+jr9sWSZ+VDBESgKoEpU6YEO7t161b1YDX2RLURiPblbp1bDWRlHVRz6Jb16VXhREAEREAEREAEREAEREAEREAEip1AlFBT7HlW/kRABApLAAtVrE3N1YapFqysWlYloCkXqjLRHhEQAREQAREQAREQAREQAREQAREoCAGJuQXBrEREoGAEcm2Z62fcph1g+gVb949rvfYQkKBbe861SioCIiACIiACIiACIiACIiACIlBEBCTmFtHJUFZEoEQISMgtkROV52xqyoU8A1b0IiACIiACIiACIiACIiACIiACIhAmIDE3TETbIiACIiAC6RKQoJsuKfkTAREQAREQAREQAREQAREQAREQgRwQkJibA4iKQgREQARqMYE6S5YsWVeLy6+ii4AIiIAIiIAIiIAIiIAIiIAIlCiBzz//PMh5ly5dSrQEyrYIiIAIiIAIZE5AFrqZM1MIERABERABERABERABERABERABERABERABERABEagRAhJ0awS7EhUBERABERABERABERABERABERABERABERABERCBzAlI0M2cmUKIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIQI0QkKBbI9iVqAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAhkTqB+5kFKI8TAaxaURkaVy4IQGDGoVUHSUSIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIikE8C9adMmZLP+Gsw7tY1mLaSLjYC5VvPi4208iMCIiACIiACIiACIiAChSNQv36FjdL7779fuESVkgiIgAiIgAjUMAFNuVDDJ0DJi4AIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiEC6BOqsi7l0PZeDv/HjxwfF6N27dzkUR2UQAREQAREQAREQAREQAREQgVpLID6+265trWWggouACIiACNQ+ArLQrX3nXCUWAREQAREQAREQAREQAREQAREQAREQAREQAREoUQISdEv0xCnbIiACIiACIiACIiACIiACIiACIiACIiACIiACtY+ABN3ad85VYhEQAREQAREQAREQAREQAREQAREQAREQAREQgRIlIEG3RE+csi0CIiACIiACIiACIiACIiACIiACIiACIiACIlD7CEjQrX3nXCUWAREQAREQAREQAREQAREQAREQAREQAREQAREoUQISdEv0xCnbIiACIiACIiACIiACIiACIiACIiACIiACIiACtY+ABN3ad85VYhEQAREQAREQAREQAREQAREQAREQAREQAREQgRIlIEG3RE+csi0CIiACIiACIiACIiACIiACIiACIiACIiACIlD7CNSvfUVWiUVABFIRWLdunVu7dm3grV69eqm8l9XxNWvWBOWpU6eOq1u3sM+8Fi9e7ObPn+8WLVrkNt98c7fZZpuVFVsVRgREQAREQAREQAREQAREQAREQAREoPoECqtWVD+/ikEESpLAqtVr3Y8/rqn0W71mXdKyrIkdD4chnkK4Rx55xHXt2tVdfvnlhUiuqNIYOnRoUPZBgwYVLF8LFixwv/71r12fPn3c/vvv74477jj36quvFix9JSQCIiACIiACIiACIiACIiACIiACIlA6BErWQnfJkiXum2++CUh36NDBNW7cuCDUv37vKzfhn++5BVO+dT8sWB6k2fe3P3E7nrNbQdIvlkRmvD7Vjb5mhGvVrY07cOhxxZKtjPLx81NHuDf/O8fd+Lfd3c+P3zajsJl6Pu7E192YsRX11cKedXpPN/jqnW2zyvLm28e7m26bUGl/122buzdfO7LSvlxvYB16ww03BNGeeOKJuY6+6OM76qij3HXXXeceffRRd9JJJ7nu3bvnPc933HGHGzFiRJDOoYce6jp27Oh69eqV93SVgAiIgAiIgAiIgAiIgAiIgAiIgAiIQOkRKDlBd+HChW748OFu7NixcdqnnHKK22677eLb+VpZMHGee+WUJ+LRN2iyUbBer0FpvpI+c/hUN/2lya7Vdm1drzN3iZcrnZXVK1YFgvaK9aJ2OmGKzc+KFauDLBXC6nWH7Vu6hhtVGMR/NGGBW7pslVsX+0vmttxiE7fH7u0CL3PmLnfTv1iczHvOjt1zzz1u2bJlwTW100475SzeUomoTZs27thjj3VPPfWUu/HGG919992X96yPHj06SOPCCy90559/ft7TUwIiIAIiIAIiIAIiIAIiIAIiIAIiIAKlS6BkBN2VK1e6YcOGuU8//bTGaE8eVmEt2TJmlbrvbYe7Zh1b1FhecpHw918s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QAIkQAIkQAIkQAIkQAIkQAIkQAIkUIgJFEtB11yPwuada8aVn/sTJ07I2LFjrS5CQ0Pl3XffVWEGvIgzYNViojATqFSpkmzYsEEPsUwZ78JAFOb5cGwkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIZBDIVdPccTcooVURTxc07F5cxODhYC7ol1QpijRo1Eiy4BlE3P6yzWiTMr1QJadHMu/AC+TGG4tgmxHlcZxoJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkEDRI5DpomhFb6rOM4J3bnEUdJ0p8IgESIAESIAESIAESIAESIAEfJcAF0Xz3WvHkZMACZAACeSegJuH7uxJ+eOtmfsh5m1N/oOftzzZGgmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQQMERcBN0C65r3+gJi4elp6dLWFiYDk3g7+/vGwPnKEmABEiABEiABEiABEiABEiABEiABEiABEiABIocAQq62VzSCRMmyKpVq6xSjz76qPz5z3+2jpkgARIgARIgARIgARIgARIgARIgARIgARIgARIggYIi4DOC7oULFwTesllZVFSUBAYGZlUkx+eGDh0qzZs3l/Xr18u6detk8uTJ0rFjR72YWI4bYwUSIAESIAESIAESIAESIAESIAESIAESIAESIAESuAYCPiPonj59Wj755JMsp/rII49IRERElmVyevK2227TVa5cuSIDBw6UnTt3anG3U6dOOW2K5UmABEiABEiABEiABEiABEiABEiABK4SWLlypaSlpYmfn5907do1Sy6HDx+W3bt36zJwsipdunSW5XlS5NChQ7Jnzx7t+NahQwciKSQEzp49Kxs2bNCjadeunQQFBRWSkXEYvkTAZwRdO9QKFSroL3x7HtJ57Z1rb79EiRLSrFkzLegePXrUfoppEiABEiABEiABEiABEiABEiABEiCBHBCAkLto0SKrRqVKlaRx48bWsWtixYoVWpxEfrdu3VxPF4ljMDELuYNFuXLlrmley5cvl9jYWC0YUtC9JpR5Wnnbtm2ChxkwOgvmKdpi1ZhPCrrjxo2TsmXLFviFKlOmjO4TX7I0EiABEiABEiABEiABEiABEiABEiCB3BHYv3+/U8Vly5ZlKegaxyqInCVLlnSqW1QO4E37+++/6+k0bNjwmqdlmFWrVu2a22IDeUfgwIEDujE4JQYEBORd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MAEmwATuNgJ2syhaaGio9MTFCXjqqadMxFzklSlTJlse8tmYABNgAkyACTABJsAEmAATYAJMgAkwASbABJgAE2ACdwsBuxF09+3bJ5kjxIKvr+/dwp+PgwkwASbABJgAE2ACTIAJMAEmwASYABNgAkyACTABJmA1AbsJuXD58mV5ULVr1yYsjLZ3716C166Liwv5+flRly5dqHLlylYfOFdkAkyACTABJsAEmAATYAJMgAkwASbABJgAE2ACTIAJ2BsBuxF0sfAZLCEhgb7//nuNM/Kjo6OlwDty5EgKCQnRyjjBBJgAE2ACTIAJMAEmwASYABNgAkyACTABJsAEmAATuJsI2E3IhZSUFMn9xIkTVLp0aRo4cCC98MIL9Mgjj1DZsmUpKyuL5s2bR1gcjY0JMAEmwASYABNgAkyACTABJsAEmAATYAJMgAkwASZwNxKwG0FXD3/QoEHUunVrGUu3adOmNHbsWFl88+ZNUrF29fU5zQSYABNgAkyACTABJsAEmAATYAJMgAkwASbABJgAE7gbCNiNoItYucrq16+vknIbGBhIzs7OMh0XF2dSxjtMgAkwASbABJgAE2ACTIAJMAEmwASYABNgAkyACTCBu4WA3cTQrVixIl29epXc3NzkQmjmJ8DV1ZWuX78uY+yal/E+E2ACTIAJMAEmwASYABNgAkyACdy9BA4dOnT3HhwfGRNgAkyACTABMwJ246ELwRaWlJQk4+WaHQch3AJMeeqal/M+E2ACTIAJMAEmwASYABNgAkyACTABJsAEmAATYAJMwN4J2I2HbqNGjejYsWNSzI2MjKTq1atr7G/cuEGJiYly38vLS8vnBBNgAkyACTABJsAEmAATYAJMgAnc/QRq1qx59x8kHyETYAJMgAkwgdsE7MZDt2HDhlS6tGG6a9eupYyMDHkIWVlZtHjxYu2EhoSEaGlOMAEmwASYABNgAkyACTABJsAEmAATYAJMgAkwASbABO4mAnbjoevo6Ei9e/empUuXUlhYGH3wwQfk7e1N8fHxlJqaKs9J06ZNycfH5246P3wsTIAJMAEmwASYABNgAkyACTABJsAEmAATYAJMgAkwAY2A3Qi6mHH79u2pfPnytGDBAhkz99y5c9qBdO3albp3767tc4IJMAEmwASYABNgAkyACTABJsAEmAATYAJMgAkwASZwtxGwK0EX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WMegEwIIIIBA6gnkP4OReufFGSGAAAIIIIAAAggggAACCCBQKQQaNGhgypgtacvKynJBXAVyi2q1atUKsoGL6st6BBBAAIHUFijecyGpfQ2cHQIIIIAAAggggAACCCCAAAIIIIAAAgggUCkECOhWitvMRSKAAAIIIIAAAggggAACCCCAAAIIIIBAOggQ0E2Hu8g1IIAAAggggAACCCCAAAIIIIAAAggggEClECCgWyluMxeJAAIIIIAAAggggAACCCCAAAIIIIAAAukgQEA3He4i14AAAggggAACCCCAAAIIIIAAAggggAAClUKAgG6luM1cJAIIIIAAAggggAACCCCAAAIIIIAAAgikgwAB3XS4i1wDAggggAACCCCAAAIIIIAAAggggAACCFQKAQK6leI2c5EIIIAAAggggAACCCCAAAIIIIAAAgggkA4CBHTT4S5yDQgggAACCCCAAAIIIIAAAggggAACCCBQKQQI6FaK28xFIoAAAggggAACCCCAAAIIIIAAAggggEA6CFRJh4vgGhBAAAEEEEAAAQQQQAABBBBAAAEEEgvsyMmxHXl5UR0ysrJMX4najrxc25GTG7U6IzPTMqoQTopCYQaBchbgX2A5g3M4BBBAAAEEEEAAAQQQQAABBMpaYPjFb9qsz+fZqfcMsAN+1bWsD1fp97927Vo77bTTnMMFF1xgF110kZseO3as3XXXXW76oYcesu7duwdW21ausA2zZ1pGRoY1Pqi3RSaCdZrIXr/O1v04zS1r1OMAy6xePWp9SWe+vvR8WzNpYtRmbc+/yPb7w5+iloVnZj7xiOkr3Oq062B9/zM6vKjCTedlZ9vq7ybEPe+67Tta9SZN464rycJZzzxuPz38gLU8+TTr8bf7SrJpqfrmbNxga6dNcfto2L2nZdWoGXd/F198sc2ZM8e6detmQ4cOdX1WrFhhZ599tpu+5JJLbNCgQXG3ZeHuFyCgu/vvAWeAAAIIIIAAAggggAACCCCAQFIFsrfkuP3l5kRnZCb1IOwsEMiOBAgXLlzo5tesWRMs37RpU7B869atwXJNrPj6C/vhjj+6ZSdM+J9lVq0atX79Tz/af397gVt21LtjrNZeraLWl3Sm/r77W2a1am6zddMmW07k3GzHjkJ3U6tlK2t88KGuz9ZlS23T/LmF9q8oK7evXRPYxp5zj3vut5Yn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AggggAACCFQQgaRn6Orx+XBr165deLbSTivbdPDgwZaRkWG1a9dOKYdhw4ZZXl6eOydlxCqDWPPK8FQwd82aNTZixAjr27ev1apVq1TnruCxMoHVFDS+4oorrHv37lH7VEbwO++844LIKv3w4IMPplzZjagTTrGZnJwce+GFF9xZ6Wft+uuvt1atWtnmzZtNgd7hw4e7dc899xyuKXbvOB0EEEAAAQQQQAABBBBAAAEEEECgKIEyz9At6gQqy3oFQg8//HA77LDDguzXVLj2HTt2mMofqOn8FMxVU7BVNWwHDRrk5vXN9wsW7MLEv//972CrW265pUAwVyt1bGXrqj6xmjJ0FQimFU9g5syZQSmLK6+80gVztaX/GTzuuOPcjuSq4C8NAQQQQAABBBBAAAEEEEAAAQQQQKDiCCQ9Q7fiXHr5nqkCkq+88oo7qLJSfaarsiSVAXvqqaeaHotXvWDVkNWy+vXrW7du3ezss8821bKNbaqN+u6775oCeD///LOr5bv//vvbAQccYMWtj6pMXJ+dG28AtKysrOCw27dvD6Z3ZULZ28r6VVOwdu+99y50NyeccIJ9++23rs/48ePtjDPOiOqvQea0XnWXZdGkSRNTyQ5lErdv3z6qb6IZ769SDz6AHO6rWr7fffed25/ukdrHH39skydPdsFolYrQPZg+fbqpTq9qKnft2tXOPPNMF5j+/PPP3WB4PnNd6xVQ7d27d3AYlZ544okn3Lx+NrSvr7/+2t1XlbzQNkceeaQdc8wxLsM72DDBhA+862emY8eOBXppYDTfNFicBqKjIYAAAggggAACCCCAAAIIIIAAAghUDIGkB3QVXKMVFFDQToFatdzc3KDDlClTXDalgpOffvppEFxVBwXbFBCcOnWq/f3vf4/K7FXQ79FHHzUF/HxbvXq1669tfvOb37h6tH5dolcFbBUE1X2bNGmSnXzyyVFBQwU0fVPGbmmaztk3HaeopsHQHnvsMWfia/pqG12zArEqHxBuCqjq67///a+dcsop7lrC6+NNe/9OnTrFW+3ume6bD3qr07zIwHFapuxW1RYODzqm+rT68pmvYT9tq8C+zl0/D75WtMpK+J+Njz76yN577z11DZr298Ybb5gG41NJjKKayiuceOKJFi9Ar21/+OEHt4u6desSzC0Kk/UIIIAAAggggAACCJSRgJ6W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"/><use stroke="#7E7C7B" xlink:href="#rect-1"/></g><text id="nested-calls" fill="#C06334" font-family="OpenSans-Bold, Open Sans" font-size="18" font-weight="bold"><tspan x="337" y="94">nested calls</tspan></text><path id="Line-2" fill="#C06334" fill-rule="nonzero" d="M412.013 99.435l1.276.79 39.263 24.271 4.207-6.804 11.166 18.07-21.156-1.91 4.205-6.804-39.263-24.272-1.276-.789 1.578-2.552z"/></g></g></svg> +======= +<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="698" height="310" viewBox="0 0 698 310"><defs><style>@import url(https://fonts.googleapis.com/css?family=Open+Sans:bold,italic,bolditalic%7CPT+Mono);@font-face{font-family:'PT Mono';font-weight:700;font-style:normal;src:local('PT MonoBold'),url(/font/PTMonoBold.woff2) format('woff2'),url(/font/PTMonoBold.woff) format('woff'),url(/font/PTMonoBold.ttf) format('truetype')}</style></defs><defs><path id="rect-1" d="M0 0h698v310H0z"/></defs><g id="debugging" fill="none" fill-rule="evenodd" stroke="none" stroke-width="1"><g id="chrome-sources-debugger-trace-1.svg"><g id="Bitmap"><image width="698" height="310" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABXQAAAJsCAYAAABd1yu6AAAAAXNSR0IArs4c6QAAAERlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAA6ABAAMAAAABAAEAAKACAAQAAAABAAAFdKADAAQAAAABAAACbAAAAAChqMwRAABAAElEQVR4AeydB7wU1fm/XzqIiIJUEbABIjYUW4y9l1gTNcaoMRo1aqLGEkvERBNjiTH6V6PGEo3tF3tFFNTYsYvSiw1RQaWDtP8+c3mXc+fO7t3du/fe3b3fcz97Z+bMmVOeOXPmnO+8c6bZnDlzlpucCIiACIiACIiACIiACIiACIiACIiACIiACIiACIhAyRNoXvI5VAZFQAREQAREQAREQAREQAREQAREQAREQAREQAREQAQiAhJ0VRFEQAREQAREQAREQAREQAREQAREQAREQAREQAREoEwISNAtkxOlbIqACIiACIiACIiACIiACIiACIiACIiACIiACIiABF3VAREQAREQAREQAREQAREQAREQAREQAREQAREQAREoEwISdMvkRCmbIiACIiACIiACIiACIiACIiACIiACIiACIiACIiBBV3VABERABERABERABERABERABERABERABERABERABMqEgATdMjlRyqYIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAISNBVHRABERABERABERABERABERABERABERABERABERCBMiEgQbdMTpSyKQIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIthSA/AlOmTLHJkyfbiBEj8juwltDrrLOO7brrrsayPty4ceOiaPv3718f0StOERABERABERABERABERABERABERABERCBRiIg3aeRwDdSsrLQzRP8c889V3Qxlyy4UJxndhRcBERABERABERABERABERABERABERABERABESgCRGQhW6eJxvhFXfppZfmeWT24Oeff34kFGOlKycCIiACIiACIiACIiACIiACIiACIiACIiACIiACSQRkoZtERX4iIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiUIIEimqhW+zpCHw+2V/+8pcliE5ZEgEREAEREAEREAEREAEREAEREAEREAEREAERSCLgOiH6nn87Kimc/PInUDRB95Zbbonmgc0/C5mP8OkNqACaiiAzJ+0RAREQAREQAREQAREQAREQAREQAREQAREQgVIh4GIu+UHfc41P+l5xzlDRBF0/MZpbtjgnpinFMnLkSFu6dGnORd5hhx2sdevW9v7779tXX31la6+9tvXv3z/n4xWw8gksWrTIJk2aZJMnT46W1JPOnTtbjx49bPPNN7cBAwZUPoQVJXz++edtyZIltskmm1jXrl2bTLkzFXTmzJk2fPhwmzp1qn322WdRW7LWWmvZuuuua3vuuaetssoqmQ6Vf4USWLZsWfpjpx07drQhQ4ZkLemnn35qfEG4bdu2tv3222cNW8k7uYYmTpxoq666qm2zzTaVXNR02bL1V5o1a2adOnWybt26RfcathvK0R+iTs6ZM8fWX399o58kJwKFEgjrOfdGfrU5+l3/+9//0sE22mij6DpIe2ilYgn4PZECYnm33nrrlUxZZ82aZaNGjYry4+NHNl566SVbuHBhyfWNM+W3ZIAqIyJQAIERI0bUOAq/chN0MWAlzz6LQI1CZfBAJ0XUrq9ZB4om6GbIv7xFICsBBtL33ntv1jDxnVtttVUkwjz++OP28ccfRwPJpiroItS98MILEaItttjCVl999TiuJrf9ySef2N///nebN29etbLPmDEjGvAicCLg/eIXv7BevXpVC1OJG/fcc09UrNVWW61JC7rLly83bsT/+c9/apzmt99+O/K7+eab7fTTT7fdd9+9Rhh5VC6BxYsX2//93/+lC9i+fXsbOHBgeju+wkCQdqRNmzZ1FnRpl957770oiXLr2JLvJ5980hDBm4Kgm09/Zc0117TjjjsuJyEsXr/y3f7vf/8bPaTy4xBXJOg6DS0LIRD2y7t3724XX3xxrdEgmoXtKO0jD9HlKp8A/So37MJw4E9/+lPJFBqDDq+XW2+9dTR+JHN33nlnlMfG6BtnG7tlym/JAFVGRKBIBPIVRYuUbMHR+GwELBFmc80/bSPH4PzYgjOR4UAJuhnAyLvhCbRq1Sqybqkt5RYtWtQWpMns//777+3++++PytuzZ88mL+i++OKL1QS7NdZYwzbYYAODzTfffBM9pV+wYIF9/vnndtlll9nQoUONgbdc5RO444470nWjS5cukTUug825c+fa6NGjI8ui+fPnG2+ZMCDZdNNNKx+KSphIgA7XX/7yl0iwTQxQRE8eQHkbvssuu1hDWnUWsRhN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QAREQAREQAREQAREQATKkoAE3bI8bcq0CIiACIiACIiACIiACIiACIiACIiACIiACIhAUyQgQbcpnnWVWQREQAREQAREQAREQAREQAREQAREQAREQAREoCwJSNAty9OmTIuACIiACIiACIiACIiACIiACIiACIiACIiACDRFAhJ0m+JZV5lFQAREQAREQAREQAREQAREQAREQAREQAREQATKkoAE3bI8bcq0CIiACIiACIiACIiACIiACIiACIiACIiACIhAUyQgQbcpnnWVWQREQAREQAREQAREQAREQAREQAREQAREQAREoCwJtCzLXCvTIiACIiACFUNgwNB5FVMWFaT4BMYObV/8SBWjCIiACIiACIiACIiACIiACJQxgZbjxo0r4+wr6yIgAiIgAuVPoFf5F0ElqDcC6qfUG1pFLAIiIAIiIAIiIAIiIAIiUKYENOVCmZ44ZVsEREAEREAEREAEREAEREAEREAEREAEREAERKDpEWg2Z86c5U2v2CqxCIiACIiACIiACIiACIiACIhAuROYNGlSVIT11luv3Iui/IuACIiACIhAzgRkoZszKgUUAREQAREQAREQAREQAREQAREQAREQAREQAREQgcYlIEG3cfkrdREQAREQAREQAREQAREQAREQAREQAREQAREQARHImYAE3ZxRKaAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAINC4BCbqNy1+pi4AIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiEDOBCTo5oxKAUVABERABERABERABERABERABERABERABERABESgcQlI0G1c/kpdBERABERABERABERABERABERABERABERABERABHImIEE3Z1QKKAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAKNS0CCbuPyV+oiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIikDMBCbo5o1JAERABERABERABERABERABERABERABERABEagMArfccos999xzlVGYJlaKlk2svCquCIiACIiACIiACIiACIiACIiACIiACIiACNQLgXHjxkXx9u/fv17iL1akCLlTpkyJfsS56667FitqxdMABGSh2wCQlYQIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIlAIBhNwRI0aks8K6LHXTOMpiRRa6ZXGalEkREAEREAEREAEREAEREAEREAEREAEREAERqDuBJPF23XXXrXvE9RwD+Q6F6FyS22WXXSrS+lgWurmcfYURAREQAREQAREQAREQAREQAREQAREQAREQgTIn4FMthMVA9FxnnXVCr5JbL0TMpRCVan1csIXu+eef3ygn99JLL22UdJWoCIiACIiACIiACIiACIiACFQqgXwtnorFARFBTgQai0AmXaPSdAe3xtQcqY1V00on3fhUC+QMIbfU60ahYq6T93tcqZfT85vLsmBBN5fIFUYEREAEREAEREAEREAEREAEREAEREAERKBxCMSFsEoStBqHaHmn6uJ+WIpSrxPxOhzmPZ/1ShN16yzoZnpy5U+6Mu3PBzphPb58jytW+C+++MLeffdda9OmjdX3U+Thw4fbkiVLbPDgwdatW7eoCO+8845Nnz7d+vTpYwMHDixWsWrE8/zzz9uCBQuqpV0jkDxEQAREQAREQAREQAREQAQqkkCxxjo+cM4Un+8vVYgDhs5LzNrYoe2r+Z9wxyI7ccdWNrhvZc9miFUfrtRfya52crRht9xyi/m5AwfXHdu//OUvy5IOwl6pi4+lDBZ+YX0gr7TRpXxdF0vM9fPi955KqEd1FnQdSqUvJ0yYYH/961+jYmbqlBSLgYvgf/7zn9OC7n333WevvfaaHXbYYfUq6A4dOjQqRph2scqleERABERABERABERABERABESgkgi8OGWJ8Ttzp9Z2/E6tKqJoCCg4hJ+4+OMF9Fe0S1kI8rw21WVczHUOnFP2laOoW0linJ+Phlpy3p2fp+nXsW+X2rLYYq6XzzmUu6grQdfPqJaNSuCZZ56J0t9jjz2y5iPXcFkj0U4REAEREAEREAEREAEREAERKCKBq57/3kZ9vKysrXURfJIs+JIwuSjIPgyeyl0YSSpjufqF5yZTGQjDW9CIuuUmyiPGrbvuumWX70znIhf/Qt5Y57yGor0/qAnT8+s2qc40dt2oLzHXy18Joq4EXT+bWkYE/vjHP9ry5cttww03bDAiiLQu1JJoJlE313ANlnElJAIiIAIiIAIiIAIiIAIiIAIrCJSztW5dxBOEEQQhxKFyEwcrrfImCXPZyuiWuuV23so139nORbH3uVhLvEkPasKpFpLE3sZkXJf2KB+O5S7qNrigSwNTbo1FPhWi3MPusMMODV6EWbNm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IiACIiACIlCmBCZNmhTlfL311ivTEijbIiACIiACIpA/AVno5s9MR4iACIiACIiACIiACIiACIiACIiACIiACIiACIhAoxCQoNso2JWoCIiACIiACIiACIiACIiACIiACIiACIiACIiACORPQIJu/sx0hAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAg0CgEJuo2CXYmKgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIQP4EWuZ/SHkcMWDovPLIqHLZIATGDm3fIOkoEREQAREQAREQAREQAREQAREQAREQAREQARGoTwItx40bV5/xN2LcvRoxbSVdagQqt56XGmnlRwREQAREQAREQAREQAQajkDLllU2Sm+88UbDJaqUREAEREAERKCRCWjKhUY+AUpeBERABERABERABERABERABERABERABERABERABHIl0Gx5yuUauBLCvffee1ExNt1000oojsogAiIgAiIgAiIgAiIgAiIgAk2WQHp8t1GXJstABRcBERABEWh6BGSh2/TOuUosAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiJQpgQk6JbpiVO2RUAEREAEREAEREAEREAEREAEREAEREAEREAEmh4BCbpN75yrxCIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAmVKQIJumZ44ZVsEREAEREAEREAEREAEREAEREAEREAEREAERKDpEZCg2/TOuUosAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiJQpgQk6JbpiVO2RUAEREAEREAEREAEREAEREAEREAEREAEREAEmh4BCbpN75yrxCIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAmVKQIJumZ44ZVsEREAEREAEREAEREAEREAEREAEREAEREAERKDpEWjZ9IqsEouACNRGYPny5bZs2bIoWIsWLWoLXlH7ly5dGpWnWbNm1rx5wz7zmj17ts2YMcNmzZpla621lnXt2rWi2KowIiACIiACIiACIiACIiACIiACIiACdSfQsGpF3fOrGESgLAksXrLMvv9+abXfkqXLs5ZlaWp//BjiaQh31113Wb9+/eycc85piORKKo1bb701KvtFF13UYPmaOXOm/epXv7LNN9/cdt99dzv00EPt6aefbrD0lZAIiIAIiIAIiIAIiIAIiIAIiIAI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xMewjx5NNYTPzPD4aYA/++yz8luK2bNn00svvSS9e/kD2bRpUxo+fPjTdI22IAACIAACIAACIAACIAACIAACeUQgt8Rcvj17ezvhkesmN0tu11WsIcObucionwVLlssmfXp2g5hrDh7OgQAISAKcSauyaXMaCQurT7uQmLI9ZdsD02CxlYVX3nIi+IsxtmrgLb9HWhr5dMY9evSQgi6r+99++y21atVKelocO3aM2NxYBftcWCv4gzhs2DCZxj137lzisXnj8xB0rUUd/YIACIAACIAACIAACIAACICAdQkMa+Nk3QFyqfew8DMiA86RNm/bSUeDT8pRhwzom0ujYxgQAAEQyDkC58+fp7CwMM1Kwc/PL+c6LwA92Yygy2nOLJrOnz+f2Mx4586dGv46deqI11XiZYp4TqnyWue6Aq9sx1m6HA0bNqSJEydS5cqVqUSJErpaKIIACIAACIAACIAACIAACIAACIBA7hP4cfpsueiaGnnIgP5UydtLHWIPAiAAAjZDYNu2bdL+gCfMmbj+/v42M/fcmKjNCLoMo379+sSK/OnTp+nq1avSe4PFXG9vb/rXv/4leVlT0GUPXRXff/+9HFcdYw8CIAACIAACIAACIAACIAACIAACeUnAy9NdeuaWLlmCenTrTK+MGZGX08HYIAACIJBtAmy9ylG9enXihdbMWS5ku/MC0NCmBF3mXbJkSWrcuLHcFP/Lly/T/fv35WH58uXV6RzfX7lyRfbJwjKLyAgQAAEQAAEQAAEQAAEQAAEQAAEQyC8EPpr4NvGGAAEQAAFbJ9ClSxdbvwWrzt/eqr3nUucqc5ZXs2MLBGsFL8DGwd8OIEAABEAABEAABEAABEAABEAABEAABEAABEAABEAgtwnYlKC7Z88ezT+DQfFKd+ypGx4eLrl16tQpt/lhPBAAARAAARAAARAAARAAARAAARAAARAAARAAARDINQI2ZbmwdetWWrlyJRUtWpQcHBzo7t27GqjatWtTkyZNtGNrFG7fvi275bERIAACIAACIAACIAACIAACIAACIAACIAACIAACIJDbBGxK0PX09KQzZ87QgwcPNE5sityuXTvq2rWrds4aBc4G3rdvn+zamrYO1pg7+gQBEAABEAABEAABEAABEAABEAABEAABEAABECgYBGxK0H3ppZfozp07FBcXRw8fPiR3d3dycXGx6pP44Ycf6OjRo3Ts2DFKSkqSY7Vu3dqqY6JzEAABEAABEAABEAABEAABEAABEAABEAABEAABEDBHwKYEXb6BkiVLys3czVjj3IEDB4g3jrp169LYsWOpXr161hgKfYIACIAACIAACIAACIAACIAACIAACIAACIAACIBAhgRsTtDN8G6scPHXX3+VvbKQjAABEAABEAABEAABEAABEAABEAABEAABEAABEACBvCQAQTcT+hByMwGEyyAAAiAAAiAAAiAAAiAAAiAAAiAAAiAAAiAAArlGAIJurqHGQCAAAiAAAiAAAiAAAiAAAiAAAtYgkJiYaI1u0ScIgAAIgAAI5EsC9vlyVpgUCIAACIAACIAACIAACIAACIAACIAACIAACIAACIBAGgLI0E2DBCdAAARAAARAAARAAARAAARAAARsiYCLi4stTRdzBQEQAAEQAIGnIoAM3afCh8YgAAIgAAIgAAIgAAIgAAIgAAIgAAIgAAIgAAIgkHsEIOjmHmuMBAIgAAIgAAIgAAIgAAIgAAIgAAIgAAIgAAIgAAJPRSBfWC7ExsbS7du3yc7Ojnx9feU+o7u6fv06RUREUEJCAnl7e8s2xYsXz6gJroEACIAACIAACIAACIAACIAACIAACIAACIAACICAzRPIU0H3woULtH79eoqMjNRAfvnll+Tk5KQdmxZWrFhBe/fuNT1NI0aMIH9//zTncQIEQAAEQAAEQAAEQAAEQAAEQAAEQAAEQAAEQAAECgqBPBF0Y2JiaMGCBRQdHZ0ljmvWrNHEXHd3d/Lx8aGQkBC6e/cuzZkzh8aMGUM1a9bMUp+oDAIgAAIgAAIgAAIgAAIgAAIgAAIgAAIgAAIgAAK2QiBPPHTZLkGJuV5eXhQQEJApr4cPH9Lu3btlvRo1atC7775LAwYMoA8++ICcnZ3l+Y0bN2baDyqAAAiAAAiAAAiAAAiAAAiAAAiAAAiAAAiAAAiAgK0SyJMMXQcHB6pSpQr16NFD7o8cOULBwcEZMjx+/Dg9fvxY1gkMDNTq3rlzh+7fvy+Po6Ki6MaNG+Tq6qpdRwEEQAAEQAAEQAAEQAAEQAAEQAAEQAAEQAAEQAAECgqBPBF0mzdvTrxlJdhagaNkyZLk4uKiNWXrBn2EhYVRq1at9KdQBgEQAAEQAAEQAAEQAAEQAAEQAAEQAAEQAAEQAIECQSBPLBeyQ+7WrVuyWaVKlbTmBw8eJM7KLV26NNnbG25F1dMqoQACIAACIAACIAACIAACIAACIAACIAACIAACIAACBYRAnmToZofd7du3ZbPixYvLfVJSEq1YsUKWhw4dSnPnziW2X7h582Z2ukcbEAABEAABEAABEAABEAABEAABELAageCTIRR56TJ5e1akxg0zX0cmuxO5kZhIO/fsl827d+5ITk5Osrx+4xZ6+OgRNWvckCp6uGe3e7QDARDIJwRiY2OJ31Ln3/GWLVtadVZ79uyhR+LvR506dah8+fJyLH6TPj4+njw9Pal69epWGz88PJyuXbtm9XFMb+Dvv/+m0NBQKlasGFWrVs30cp4f24ygy2IthxJ0ly1bJj9MjRs3Jj8/PwmY6yjhN8/JYgIgAAIgAAIgAAIgAAIgAAIgAAIgkEJg45bttGDJMurQtrVVBd2r0ddo0r//I0flsZSg+9FnX8tzP0z+EoIuPpUgUAAIXLx4kfbvN3x5Y21Bd/fu3ZIY26AqQXfXrl0yqdLX19eqgu727dtzZRzTj8TatWulYG5nZ0fvv/++6eU8P7YZywVlqcAK+blz5+jkyZNUtGhR6tu3r4SoFkzjBdcQIAACIAACIAACIAACIAACIAACIAACIAACIAACIJBVAqw7cvZzfg6bydDlbwESxasjvM2fP18yHTRokBR1+eDevXvyHPvpIkAABEAABEAABEAABEAABEAABEAABEAABEAABGybQPv27WWGLls75EY8ePCAVq5cmRtDPdUYNiPolipVSoq57F/BUaNGDfL399du/v79+7IMQVdDggIIgAAIgAAIgAAIgAAIgAAIgAAIgAAIgAAI2CyBWrVq5erc//rrL2nx6uzsTEprzNUJWDiYzQi6ZcuWpcuXL8vbYvuFgQMHarfI5sjKcoHrIUAABEAABEAABEAABEAABEAABEAgvxKIi0+g3/5cSLv27KOoq9FyobSGDerTay+/SB7uFdJMm60Hl61aRwcPHaVjwSfkGjItWzShZo0aUsf2z5C9vV2aNlk5cfPmLVq0dAWdCj1NoWHh5OjoSPXr1aVGDepR/+d6iWObkQ6yctuoCwIFhsDDhw9p8+bNdPbsWeIyByc8cnZreoJoVFQUsQ8uL67GWamcSOnj40NNmjQhd/enWziR/2ax9y37/N64cYP4mOfj4eFB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RfGT6125coU4i1fdi3bRTIHnq0RktTdTzaJTLGirUM9OHau9/jw/8/wSBok8v8wG8wABEAABEAABEAABEAABEAABEACBAkhAvZ7s7eVldHdVq1ShD999XWbJmr7Ke+/efUoUHrAcj5JTX8tWHXD9QSkZueoc77t17iAP2R9XxY7dBn9NPn7njXGamKuusxD77huvykO2bAg/c0Zd0vavjB6hibnqJNssqOCsWI7GDRtIL18ub9i8lXda7BDiK4ebq4vwvm2qnVeFl0YN18Rcda5WzWqqSN27PKuVueAkMgXrCG9djgcPDAuMsfim/Ip5ATq9mCsrih8D+vWWPrZ8rDKG1bWs7pUYu2X7TtoStMMo47ZHl04yC5ozofl1cxV6f+P4+AR1Gvt8QKBz586amKum07BhQ1XUsjTZA1ZlV7ds2VITc1VFzrzlLF9zofxwmzRpoom5qh5/TngOHGxNoLcFGDx4sPY5YquH/fv3y3qc8coWDVkNzjx+9lnj3ynuo04dwxcg2REwK4rscyXmqvnoj3lBOtPg+XMonqbX9celxN8q9hfmLb2sWn39jMoq8zqjOvprlsxPX9+aZWToWpMu+gYBEAABEAABEAABEAABEAABEAABQSA23iB2enmletoyGPZVVd6q14QXa/iZc3Th4iU6HxGpZZ6mB5CtCVjQNI0yQvAwjYuXrshTnAHr7eVpelkeN2vSSDt/KepKGiGUs2VNg4VgFUrs4AzeASJT9bsfp9PajUHCJ3e89PbkeuuFHzBHHyG0suBlGixwmwb7gnKwCGzufp2LGq6rdvEpwjIft2qZVjTm8yyatWrRXPrYRogM2aeJnt06SZ9f7mPiJ59LgY6zmRvUryvE7QDy862SRiD08Ehd5O5GykJTTzMHtM05AnrxUfXK9gkqlL0Be/GqUFm06ljtOTuVP2vqd4PPcyYqf+nAwZYKLAybhl5I5SxclYnKmcFsjcA+umoebH/AQm92grNPub1pmH65ZHo9o2N3d/c0l9XvMF/gBddMw9zfAtM61jhWz4H71j8j/Vj68/ovZfR18qKc9q9nXswCY4IACIAACIAACIAACIAACIAACIBAASXAogH7qHKUEd6cpsFZndNm/SHFRdNrGR27lilj9rISevQXo2MMr057pni36q+pcunSpaQYyXO9csV4sSGuw6+Vm4ZeENFf69m1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EAABEAABEAABEChQBCDoFqjHiZsBARAAARAAARAAARAAARAAARAAARAAARAAARAoyAQg6Bbkp4t7AwEQAAEQAAEQAAEQAAEQAAEQAAEQAAEQAAEQKFAEIOgWqMeJmwEBEAABEAABEAABEAABEAABEAABEAABEAABECjIBCDoFuSni3sDARAAARAAARAAARAAARAAARAAARAAARAAARAoUAQg6Baox4mbAQEQAAEQAAEQAAEQAAEQAAEQAAEQAAEQAAEQKMgEIOgW5KeLewMBEAABEAABEAABEAABEAABEAABEAABEAABEChQBIoUqLvBzYAACIAACIAACIAACIAACIAACIBAPiFwPiKStu7YRVeuxtC12DhyKVOGKnq4U/16tald65Zkb48cq3zyqDANEAABELApAhB0bepxYbIgAAIgAAIgAAIgAAIgAAIgAAL5nUDS3bv0xTff0Z79B81O9a8Vq8nH24v++Y93qGb1ambr4CQIgAAIgAAIpEcAgm56ZHAeBEAABEAABEAABEAABEAABEAABLJIIDk5mT79/Fs6dPS4bFm7ZnV6pnULcnEpQ9ev36Dd+w5S2OmzdCnqCr3/8ef027QfqGxZ1yyOguogAAIgAAKFmQAE3cL89HHvIAACIAACIAACIAACIAACIAACOUrg8NFgTcx9cdhAGjNymFH/I4YOpKUr19L3P/1K1xNv0pwFi+mt8a8Y1cEBCIAACIAACGREAIY9GdHBNRAAARAAARAAARAAARAAARAAARDIAoGTIaFa7eGDB2hlfeH5Pj2peZNG8lTwydT6+joogwAIgAAIgEB6BJChmx4ZnAcBEAABEAABEAABEAABEAABEACBLBKIjonVWjyhJ1rZtND52XYUdeUq3bt3nx4+fEhOTk5GVbZs30WHDh+jU6HhlJBwnSpWdCf/OrVpQP/e0n/XqHLKwb4Dh6WlQ2j4aYqOvkZV/aoQWz507dSBqlfzM2pyIfIizZm/RJ774N3XaeXaDXTs+CkKE22LFStG/nVrU7NGAdT52fZkZ2dn1FYdHDh0hIJ27JFzvHPnDjVqUJ8aNqhHz7ZrSyVKFFfVsAcBEAABEMhhAnZPRORwn/m6u+DgYDm/gICAfD1PTA4EQAAEQOD/27sPOCmKtI/jD+ySc85IEDAQBEXFgIpnVsxnDmc69czoqYeenh533qmviAnz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LmGjJG/o37+/tWvXzgYOHJjknukOAQTKugAB3bJ+Bzl/BBBAAAEEEEAAAQQQQACBciEw48MZNvyqD2zME2Pzvd5tm7Jdm+ys7fm2TdRgR2TfDYs2uteOoneTqPsSrR82bJhdcMEF9uc//znf47zwwguu7YABAxK2XbRoka1YscK2bCm9wPbWrVvd+fj3hCfHBgQQKHcCmeXuirlgBBBAAAEEEEAAAQQQQAABBMqgwIoZq2zS69Mse0u29byq5C8go0qGNenRyB2oYmaFkj9gEo/Qpk0b19uUKVPy7XXBggWuTfv27RO27dKliy1evNhq1aqVsA0bEEAAgdISIKBbWtIcBwEEEEAAAQQQQAABBBBAoFwIzJgxw/IKDpYVhBpNatjFH59TVk436jx32223YH3t2rVWu3btYD12Yc6cOa5K6Q0Sleeeey7RJuoRQACBUhcgoFvq5BwQAQQQQAABBBBAAAEEEEAgnQUef/xxO/roo+2YY44p9mUun7LSNq3c6PpZNXO1e1+/dKPN+3Z+VN9NuzexStUqRdX5lewtWbZ4wjJbOGahVcysaM32bWbN923qN0e9Z23aZssix4wtTbo2tooZiUfp7thhtuD7Bbb815W2YckGq1yrktVuVstaHNjCajatEdtdsL5w4UKbN29esL7ffvtZRkZGsF7UhdatWwe7amRtXgFdf/y2bdsG+2hhwoQJlp2dk7rCb1CgPl5fOyIAo0aNcs322WcfU5qEH3/80fXRqFEjO/jggy0cZPb9+fdffvnFlMNXaR26d+9ucsivbNiwwR3j119/tW3btrkvEbp162ZNmjQJdl21apVplHLVqlVdv8GGOAs657Fjc9J57L///km5D3EOQxUCCCRBgIBuEhDpAgEEEEAAAQQQQAABBBBAAIGwwMcff2waqaugbnFG6379wHf269AZ4a5twajF9nLft6LqLvnyXGu0d8OoOq1sWbPZ/nf6W26f8Mbe/Q+0XjfuH65yyyumrrIXjno1V/31M/5oVetUyVWvCgWBXznz7VzH8I3PeedUa31wK78a9f7222/bgw8+GNQpoFivXr1gvagLDRo0sBo1apiCnsp/27FjR1PQ9PLLL3dd3nTTTXbGGWfY+vXrXRtVxgZcTznllFyHf+aZZ6xPnz656hVQPe+881z9ww8/bH/5y1+Cfn3jZ5991o444gi/6t4VML7//vvtqaeeiqrv2rWrKRCcqGiytyuuuMKlgYhto+OfdNJJrnrWrFnBeSnwW6lS/KC/Gv/8889RbZMRWI89N9YRQCA5AgR0k+NILwgggAACCCCAAAIIIIAAAghECSigW9zRup1P39Na9MgZTTt75Dyb+elcq9ehjnW/oHPUsRKNgh1x17eu3cH9elr2tmwbN2SibV6z1UYOGGV7ndbJ6uxWJ1c/vW8/wNVtWrnJxjw5IWp7vJUfnxsfBHP3u6KraTRvViTP75IJSyLHm2RZm6NHucbroyTqFMT96aefgqCnRsBqtK7Kd9995wK6fl11rVpFB51vuOGGYITuI488oiYFKtdff71ptO+pp55qCqK+9957br+//e1v1rt376iRr0rl4IO5J5xwgh144IEusPraa68lPNbKlSutb9++brsC1xdddJFVq1bNhg8f7kYE6/h169a1Qw891Pbaa6+gn6lTp9ree+8drMcujB8/3lX16tUrz8Bv7H6sI4BA6QsQ0C19c46IAAIIIIAAAggggAACCCBQjgSKM1p39+N25nXVY/0K6Dbes4H1vHrfAgte9tW51mDPnNG7B1zf057s8bwL6s78dJZ1v3SfqH6UN7dXv5yA7tq5a/MN6G7P3mE+aHzE3w6y/f8UThXQxXr3P8SsYtQhSm1l9913dwFdjdBV8QFLLSugq7JkyRL33rRpUxcUdSu//bjuuuuC1ZdfftmlQwgq8lhQuoehQ4cGE6hdcMEFdvbZZ9vcuXNt8uTJ1rlzTjB+06ZNNmjQINfTfBNo6QAAKBBJREFUhRdeaHfffXfQq/p44IEHgvXwgkb6qmgE8jvvvGPNmzd36xohrGNplPPAgQNdQFepFvbdd19XpxG4eQV0FfxWOeCAnPvvVviBAAIpKbCLPlZT0oKTQgABBBBAAAEEEEAAAQQQQKBEBPxo3Y8++qhE+k/U6V5ndgiCuWqjtAm7H5eTK3bdog2JditE/Y5In5Vd+8wquceMVatf1arVrZqwv/r167vRrBrRqldmZu4+Eu6czwafE3fBggWu5ejRo9270hloZK7y1fpgr0bzJqtceumlQTBXfSofrYKvKj6ArGUFUJUSQkX7hIsCs4mK0lSoKIDrg7laV/D2yiuv1GLUyGSNuPV1biHyQ8Hic8891z755BNfFeQAVgCYggACqS1AQDe17w9nhwACCCCAAAIIIIAAAgggkEYCGq2rNAylVRrtkTuvbs3GOcHFTas2Ffs0KmZUtK7n5zzW/8ltI+3zv460mR/PdBOjFaTzc845xz777LPgVatWrYLsVqA2PqCrkbFr1qxxI2R79uxphx9+uNtfeWg1KZuKRvMmq3To0CFXVz7wqvPwxR9baRNi0z3IQZOjxRbl3PVpIuJNnNajR49gFx+s9nU//PCD26Y+hgwZ4gK4w4YNc3UKNCvAraKANwUBBFJbgIBuat8fzg4BBBBAAAEEEEAAAQQQQCDNBDRat1+/fm7StJK+tGr1co+OrVgpJxSwffuOpBx+n4u6WLOeTVxfYx4fZ6+f+649uvez9sa579jCH3LSHSTlQIXsxE9yNnPmTDchmnZXQHeffXLSTEyYMMH86F0f/C3kIeI2V/7a2FKlSs6Ectu3bw82+YCuRinHK40bN85VvWzZsqBOgeDYUqfOzpzIPqDbrVs310wTpCmgrNQLfmTwF1984fIEK7itsscee0SNLnaV/EAAgZQTIKCbcreEE0IAAQQQQAABBBBAAAEEECgPAtOnTy/5y6xYocSPUa9dPbvg/bPs96/1tf2u7Ga1d8sZZTvj4zn24rGv26zPZ5f4OcQ7gPLQqmjkqR+dqnQCPsCplAfz5s1zbdq0aePek/GjQoWCmWsiM5WsrKy4h926dWuu+sqVc9JbJNovHDD2bevVq2d+1LACt99++63r9/zzz3eBXeUWVnBb5aCDDnLv/EAAgdQWIKCb2veHs0MAAQQQQAABBBBAAAEEEEgzgaOPPtoefPBBO+aYY9LmyhTDbNunjR3598PsyjEX2/nvnWE1mlV31zf57akJr1MjRmfPnh28NPFbskr16tXNj2J97733XLdKJ6AAp0bkjhkzxh1XG2JTHiTrHPLqp1mzZm7z0qVLLd51+xG24T507r6E8/H6uuXLl/tF8/2rwufRVeB2xIgRpkngLrvsMtf266+/jgp4Bx2wgAACKStAQDdlbw0nhgACCCCAAAIIIIAAAgggkG4CCuYWNZBbpVbOY/vrl25MaZYKkVHBLQ5obj2vyMkBO/OLuQnP97///a/16dMneK1evTph26Js2HPPPd1u06ZNM43Y9QFejURV2gGfj7ZFixZF6b5Y+/iUEDqPcePGRfU1f/58mzJlSlSdVjT6V2kRVMITmrmKyA/lI/bF5+3Vup/o7NNPP7WxY8fa8ccf7zwU2P7www/tu+++c7vFy9vr++MdAQRSR4CAburcC84EAQQQQAABBBBAAAEEEEAgTQWSMSq3dsucVAYLRi12aQyyt2Xvcq1tG7fZl/d+bcunrIw6l+wtWfbLWzkByZYH5IxEjWpQSivt27cPjnTggQcGy+HApYKaGRkZwbbSWujcubPppXL//ffbxo05gXqlYPjHP/6R8DQuvPBCt2348OGmHLi+zJkzxwYOHOhW+/bt60Yi+23hNBOqO+yww9wmfbngA8catasXBQEEUl8gM/VPkTNEAAEEEEAAAQQQQAABBBBAoOwKFGdUbviqW/Vq4fLTrp2zzl77/TCrWqey1WmfMwnWyYOPNeWyLU7J2rQtMqHZsKCLLRt25nB947x3LKNSTtBTI3DPfvM01y5ra7aNevhH92qwVz1rsndD27puq03/cE7QzxF3HBIsl/ZCu3btgkPut99+wbKfGE0VfhRvsDGycNttt0VNWqc8vCr33HOPPfHEE25ZPwYMGGAdO3YM1guzoNG2N910k11yySU2atQoF2TVef3yyy/ByOF4/Z122mn29NNPmyY5074afat8vEqd4Mu1117rF927H53sr8NbKLA7ePBg1+aQQ3bdfYo6WVYQQCBfAQK6+RLRAAEEEEAAAQQQQAABBBBAAIHCC2h06NVXX134HRPskVmtkp079HQbP+Rnm/DqZNuwaKNt/nGZa719S/Ro3YoZORNzKfgaWypYTl3FmG3bs3fY3K8WxDZ36xoVHK9kVsmwTqe0t1+HzrAVk1a5l29Xr0MdO/KuQ6xOm5ygs68Pv1esGP3gcOx6uG1Rltu0aRPs5kepqkL1NWrUcGkXwkFf31ijVv1EYb5O73PnznUvX6d0CSrhidAKcw2HH364Pffcc6YArIKtPmWC8tsq/cQbb7zhDxW8a7KzoUOH2p133mnDhg1zKRT8Ro341SjdeNd08MEHu/ZHHnmkCwBrnx49evhdzQd5gwoWEEAgZQUqRPK0JC/jeMpeJieGAAIIIIAAAggggAACCCCQrgLhQF0qXGO/fv0sWaNyU+F6CnIO2Vnbbe3cNbZxxWZTELlmkxpWs1kNq5gRHbAtSF/lsc327dvdBG2aJK5Tp06mCd0KUjZt2uRGEm/bts1N9Fa3bt2C7EYbBBAo4wIEdMv4DeT0EUAAAQQQQAABBBBAAIHyLpBqAd0ZM2ZYOHdreb8/XD8CCCCAQHIFKqxbt44Rusk1pTcEEEAAAQQQQAABBBBAAIFSEFDgVCXVArqlcOkcAgEEEECgHAvw7EM5vvlcOgIIIIAAAggggAACCCCAAAIIIIAAAgiULQECumXrfnG2CCCAAAIIIIAAAggggAACCCCAAAIIIFCOBQjoluObz6UjgAACCCCAAAIIIIAAAggggAACCCCAQNkSIKBbtu4XZ4sAAggggAACCCCAAAIIIIAAAggggAAC5ViAgG45vvlcOgIIIIAAAggggAACCCCAAAIIIIAAAgiULQECumXrfnG2CCCAAAIIIIAAAggggAACCCCAAAIIIFCOBQjoluObz6UjgAACCCCAAAIIIIAAAggggAACCCCAQNkSIKBbtu4XZ4sAAggggAACCCCAAAIIIIAAAggggAAC5ViAgG45vvlcOgIIIIAAAggggAACCCCAAAIIIIAAAgiULQECumXrfnG2CCCAAAIIIIAAAggggAACCCCAAAIIIFCOBQjoluObz6UjgAACCCCAAAIIIIAAAggggAACCCCAQNkSIKBbtu4XZ4sAAggggAACCCCAAAIIIIAAAggggAAC5ViAgG45vvlcOgIIIIAAAggggAACCCCAAAIIIIAAAgiULYHMkjzdzz77zGbNmuVeOk6fPn3syCOPjHtItf3888/dtrZt27p3tfXLcXeiEgEEEEAAAQQQQAABBBBAAAEEEEAAAQQQKEcCJTJCV0Hc/v37uwCtln3xAVu/Hn4Pb/NB4GeeeSYIBofbsowAAggggAACCCCAAAIIIIAAAggggAACCJRHgRIZoavRtrFFo3PzKtruA7nhdgrqDhgwIFy1y5fXrl1ro0ePduex3377Wd26dfM9pzVr1tiYMWNcu969e1vlypXz3WdXNFi3bp0tXrzYtm3bZs2aNbN69eqV2Gls2bLFZsyYYTNnznTvS5cutQYNGrjjdu/e3fbYY4+kHbus+CftgkMdrV+/3ubPn2+ZmZnWuHFjq127dmgriwgggAACCCCAAAIIIIAAAggggAACZUkg6QHd2KCsUiZcdtll+Zr4VAza36dq8Dtp3W/3dbvyfd68efb666+7U2jUqFGBAroKVvp9DjjggJQL6M6dO9deeuklmz17dhRtlSpV7JxzzrFevXpF1Rd3RccbOHCgbdiwIaqr5cuX26+//mpffPGFtWjRwi655BJr2bJlVJuirKS6f1GuKb99pk6dak899ZQpSB8uTZo0cfd0zz33DFezjAACCCCAAAIIIIAAAggggAACCCBQBgRKJOVC+LoLmwNX7VMpeBu+lnRdXrhwof3zn/8MgrmVKlWyihVzfjU0ivY///mPffDBB0m7/JEjR7pR1z6Yq1HA+++/v51yyimm0cvVqlVzx1qwYIHdd999piAvpXACP/30kz344INBMFf31JclS5a4YPr06dN9Fe8IIIAAAggggAACCCCAAAIIIIAAAmVEIOkjdPX4fLi0a9cuvFpulzXa9MILL7QKFSpYjRo1UsphyJAhtn37dndOGhGrEcRa1whPBXNXrVplQ4cOtcMOO8yqV69erHNX8FgjgVUUNL7yyiutW7duUX1qRPCwYcNcEFmpHx566KGUS7sRdcIptpKVlWUvvviiOyv9rt14443WqlUr27hxoynQ+8ILL7htzz//PK4pdu84HQQQQAABBBBAAAEEEEAAAQQQQCA/gRIfoZvfCZSX7QqEHnzwwXbQQQcFo19T4dp37NhhSn+govNTMFdFwVblsL3gggvcun74dkFFERb+97//BXvddtttuYK52qhja7Su8hOraISuAsGUgglMmzYtSGVx1VVXuWCu9vS/g8ccc4zrSK4K/lIQQAABBBBAAAEEEEAAAQQQQAABBMqOQNJH6JadSy/dM1VA8pVXXnEH1ahUP9JVoyQ1Avbkk082PRavfMHKIau6OnXqWNeuXe3MM8805bKNLcqN+u6775oCeIsWLXK5fPfee2/bd999raD5UTUS14/OjTcBWkZGRnDYrVu3BstFWdDobY36VVGwdrfddsuzm+OOO85++OEH12bUqFF22mmnRbXXJHParrzLsmjYsKEpZYdGErdv3z6qbaIV769UDz6AHG6rXL4//vij60/3SOXTTz+1CRMmuGC0UkXoHkyZMsWUp1c5lbt06WKnn366C0x/9dVXbjI8P3Jd2xVQPfDAA4PDKPXEk08+6db1u6G+vvvuO3dflfJC+xx66KH2u9/9zo3wDnZMsOAD7/qd6dChQ65WmhjNF00Wp4noKAgggAACCCCAAAIIIIAAAggggAACZUMg6QFdBdcouQUUtFOgViU7Ozto8PPPP7vRlApOfvnll0FwVQ0U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"/><use stroke="#7E7C7B" xlink:href="#rect-1"/></g><text id="nested-calls" fill="#C06334" font-family="OpenSans-Bold, Open Sans" font-size="18" font-weight="bold"><tspan x="337" y="94">nested calls</tspan></text><path id="Line-2" fill="#C06334" fill-rule="nonzero" d="M412.013 99.435l1.276.79 39.263 24.271 4.207-6.804 11.166 18.07-21.156-1.91 4.205-6.804-39.263-24.272-1.276-.789 1.578-2.552z"/></g></g></svg> +>>>>>>> 540d753e90789205fc6e75c502f68382c87dea9b diff --git a/1-js/03-code-quality/01-debugging-chrome/chrome-tabs.svg b/1-js/03-code-quality/01-debugging-chrome/chrome-tabs.svg index 41a3d8784..f0e9afd01 100644 --- a/1-js/03-code-quality/01-debugging-chrome/chrome-tabs.svg +++ b/1-js/03-code-quality/01-debugging-chrome/chrome-tabs.svg @@ -1 +1,5 @@ -<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="694" height="225" viewBox="0 0 694 225"><defs><style>@import url(https://fonts.googleapis.com/css?family=Open+Sans:bold,italic,bolditalic%7CPT+Mono);@font-face{font-family:'PT Mono';font-weight:700;font-style:normal;src:local('PT MonoBold'),url(/font/PTMonoBold.woff2) format('woff2'),url(/font/PTMonoBold.woff) format('woff'),url(/font/PTMonoBold.ttf) format('truetype')}</style></defs><defs><filter id="filter-3" width="134.3%" height="114.6%" x="-17.1%" y="-7.3%" filterUnits="objectBoundingBox"><feMorphology in="SourceAlpha" operator="dilate" radius="1.5" result="shadowSpreadOuter1"/><feOffset in="shadowSpreadOuter1" result="shadowOffsetOuter1"/><feGaussianBlur in="shadowOffsetOuter1" result="shadowBlurOuter1" stdDeviation="1.5"/><feColorMatrix in="shadowBlurOuter1" values="0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 1 0"/></filter><filter id="filter-5" width="134.3%" height="114.6%" x="-17.1%" y="-7.3%" filterUnits="objectBoundingBox"><feMorphology in="SourceAlpha" operator="dilate" radius="1.5" result="shadowSpreadOuter1"/><feOffset in="shadowSpreadOuter1" result="shadowOffsetOuter1"/><feGaussianBlur in="shadowOffsetOuter1" result="shadowBlurOuter1" stdDeviation="1.5"/><feColorMatrix in="shadowBlurOuter1" values="0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 1 0"/></filter><filter id="filter-7" width="134.3%" height="114.6%" x="-17.1%" y="-7.3%" filterUnits="objectBoundingBox"><feMorphology in="SourceAlpha" operator="dilate" radius="1.5" result="shadowSpreadOuter1"/><feOffset in="shadowSpreadOuter1" result="shadowOffsetOuter1"/><feGaussianBlur in="shadowOffsetOuter1" result="shadowBlurOuter1" stdDeviation="1.5"/><feColorMatrix in="shadowBlurOuter1" values="0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 1 0"/></filter><text id="text-2" font-family="OpenSans-Bold, Open Sans" font-size="60" font-weight="bold"><tspan x="337" y="206">2</tspan></text><text id="text-4" font-family="OpenSans-Bold, Open Sans" font-size="60" font-weight="bold"><tspan x="69" y="206">1</tspan></text><text id="text-6" font-family="OpenSans-Bold, Open Sans" font-size="60" font-weight="bold"><tspan x="570" y="207">3</tspan></text><path id="rect-1" d="M0 0h694v225H0z"/></defs><g id="debugging" fill="none" fill-rule="evenodd" stroke="none" stroke-width="1"><g id="chrome-tabs.svg"><g id="Bitmap"><image width="694" height="225" xlink:href="data:image/png;base64,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mOBefPHF7Dxk6apr165um222cRxLIWPHjvXB9uzZsxTBK0whIASEgBAQAkJACAgBISAEhIAQEAJCQAgIgSZCQLxPEwFf4milYZslwEOGDCk6WUvURgRnmQw5EwJCQAgIASEgBISAEBACQkAICAEhIASEgBAQAkKghhGQhm2WLxdiFbn88suz9JGdswsuuMATwWjZSoSAEBACQkAICAEhIASEgBAQAkJACAgBISAEhIAQaN4ISMO2eb9/5V4ICAEhIASEgBAQAkJACAgBISAEhIAQEAJCQAgIgQpCoCgatsU2F2D2XI855pgKgkpJEQJCQAgIASEgBISAEBACQkAICAEhIASEgBAQAkIgHQLGE8Lv2d5N6dzrWWMECiZs77zzTm+HtXHQ+d8x8wO8YJkKyB9H+RQCQkAICAEhIASEgBAQAkJACAgBISAEhIAQEALlQsDIWuKD3zOOT/xebm+gYMLWgJdt19yAl2vnhg4d6ubOnZs1FJtvvrlr1aqV+/DDD923337rVlxxRdezZ8+s/cth7SMwe/Zs98knn7gJEyb4I+Wkffv2brnllnNrr722W3XVVWsfhPk5fOmll9ycOXNc7969XYcOHZpNvlNldOrUqW7QoEFu4sSJ7osvvvB1yfLLL+9WXnllt/3227vFFlsslVfdr1EEfv/99+Rmom3atHHrrbde2px+/vnnjh14F1lkEbfpppumdVvLD/mGxo8f71q3bu023HDDWs5qMm/p+istWrRw7dq1cx07dvRtDdflEvpDlMnp06e77t27O/pJEiGQLwJhOadt5JdJ6He98sorSWerr766/w6SN3RSswhYm0gG0Zzr1q1bxeT1p59+csOHD/fpsfEjF6+++qqbNWtWxfWNU6W3YgBVQoRAHgi8+OKLjXxxr9oIWxRUSbNZAWiUqRQ34EkhrQu1GlAwYZsifbotBNIiwED5wQcfTOsm+nD99df3JMtTTz3lJk2a5AeKzZWwhYj73//+5yHq27evW2qppaJwNbvrzz77zP397393P//8c4O8T5kyxQ9oITAh6I466ii3wgorNHBTixcPPPCAz9aSSy7ZrAnbefPmORraf//7341e87vvvuvv3XHHHe7000932223XSM3ulG7CPz222/uP//5TzKDiy++uOvVq1fyOnrCQI96ZOGFFy6YsKVe+uCDD3wU1dZxJd3P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bZaCBWozW/nnCta/nKraxKWZhvzfl3wKASEgBISAEBACQkAICAEhIASEgBAQAkJACAiBWkJAGra19DaVFyEgBISAEBACQkAICAEhIASEgBAQAkJACAgBISAEqhoBadhW9etT4oWAEBACQkAICAEhIASEgBAQAkJACAgBISAEhIAQqCUERNjW0ttUXoSAEBACQkAICAEhIASEgBAQAkJACAgBISAEhIAQqGoERNhW9etT4oWAEBACQkAICAEhIASEgBAQAkJACAgBISAEhIAQqCUERNjW0ttUXoSAEBACQkAICAEhIASEgBAQAkJACAgBISAEhIAQqGoERNhW9etT4oWAEBACQkAICAEhIASEgBAQAkJACAgBISAEhIAQqCUERNjW0ttUXoSAEBACQkAICAEhIASEgBAQAkJACAgBISAEhIAQqGoERNhW9etT4oWAEBACQkAICAEhIASEgBAQAkJACAgBISAEhIAQqCUERNjW0ttUXoSAEBACQkAICAEhIASEgBAQAkJACAgBISAEhIAQqGoEWlZ16pV4ISAEhIAQqFoEtr1katWmXQkvPQKDL25f+kgUgxAQAkJACAgBISAEhIAQEAJCoAIRaDl27NgKTJaSJASEgBAQArWPwNK1n0XlMG8E1D/JGzp5FAJCQAgIASEgBISAEBACQqDKEZBJhCp/gUq+EBACQkAICAEhIASEgBAQAkJACAgBISAEhIAQEAK1g0CL6dOnz6ud7CgnQkAICAEhIATiEfjkk0/8g27dusU70F0hIASEgBAQAkKgahBQu141r0oJFQJCQAgIgTwQkIZtHqDJixAQAkJACAgBISAEhIAQEAJCQAgIASEgBISAEBACQqAUCIiwLQWqClMICAEhIASEgBAQAkJACAgBISAEhIAQEAJCQAgIASGQBwIibPMATV6EgBAQAkJACAgBISAEhIAQEAJCQAgIASEgBISAEBACpUBAhG0pUFWYQkAICAEhIASEgBAQAkJACAgBISAEhIAQEAJCQAgIgTwQEGGbB2jyIgSEgBAQAkJACAgBISAEhIAQEAJCQAgIASEgBISAECgFAiJsS4GqwhQCQkAICAEhIASEgBAQAkJACAgBISAEhIAQEAJCQAjkgYAI2zxAkxchIASEgBAQAkJACAgBISAEhIAQEAJCQAgIASEgBIRAKRAQYVsKVBWmEBAC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EBACQqD4CKDgle/GasVPTfFDrPX8FR+xyg6xOZlCiHsT0fFknJu4e9U+7mwxffr0eXEZ0z0hIASEgBAQArWEgHaTrqW3qbwIASEgBIRAc0dA7XpzLwHKvxCoPATGjh3rE9WzZ8+iJi7cxNkCxlRoLa1atHzpWI/AAvWnOhMCQkAICAEhIASEgBAQAkJACAgBISAEhIAQEAJCoFIQQMMUbVETzkXWGhq1e6xakwi1+0qUMyEgBISAEBACQkAICAEhIASEgBAQAkJACAiBakKg2Jq1Yd7NLADmEew8fK7z2kNAhG3tvVPlSAgIASEgBISAEBACQkAICAEhIASEgBAQAkKghhAQUVtDLzOLrMgkQhYgyYkQEAJCQAgIASEgBISAEBACQkAICAEhIASEgBAQAkKgHAiIsC0HyopDCAgBISAEhIAQEAJCQAgIASEgBISAEBACQkAICAEhkAUCImyzAElOhIAQEAJCQAgIASEgBISAEBACQkAICAEhIASEgBAQAuVAQIRtOVBWHEJACAgBISAEhIAQEAJCQAgIASEgBISAEBACQkAICIEsEBBhmwVIciIEhIAQEAJCQAgIASEgBISAEBACQkAICAEhIASEgBAoBwIibMuBsuIQAkJACAgBISAEhIAQEAJCQAgIASEgBISAEBACQkAIZIGACNssQJITISAEhIAQEAJCQAgIASEgBISAEBACQkAICAEhIASEQDkQaLntJVPLEU+zj2Pwxe2bPQYCQAgIASEgBEqPgNr10mNcTTGo/1FNb0tpFQJCQAgIASEgBISAEBACdQi0FBDlQWDs2LHliUixCAEhIASEQCwCLVvWNXm1Xx8vHZt/3WyeCNR+eW+e71W5FgJCwDlr1z/55BPBIQSEgBAQAkKg5hCQSYSae6XKkBAQAkJACAgBISAEhIAQEAJCQAgIASEgBISAEBAC1YpAi+nTp8+r1sQr3UJACAgBISAEskXANHD69OmTrZeacvfBBx/4/DTX/NfUy1RmhIAQEAJCwFm71q1bN6EhBISAEBACQqDmEJCGbc29UmVICAgBISAEhIAQEAJCQAgIASEgBISAEBACQkAICIFqRUCEbbW+OaVbCAgBISAEhIAQEAJCQAgIASEgBISAEBACQkAICIGaQ0CEbc29UmVICAgBISAEhIAQEAJCQAgIASEgBISAEBACQkAICIFqRUCEbbW+OaVbCAgBISAEhIAQEAJCQAgIASEgBISAEBACQkAICIGaQ0CEbc29UmVICAgBISAEhIAQEAJCQAgIASEgBISAEBACQkAICIFqRUCEbbW+OaVbCAgBISAEhIAQEAJCQAgIASEgBISAEBACQkAICIGaQ0CEbc29UmVICAgBISAEhIAQEAJCQAgIASEgBISAEBACQkAICIFqRUCEbbW+OaVbCAgBISAEhIAQEAJCQAgIASEgBISAEBACQkAICIGaQ6BlzeVIGRICQkAICAEhIASEgBAQAnkgMG/ePPf77797nwsuuGAeIVSvl7lz5/rEt2jRwi2wQHl1OqZNm+amTJnifvrpJ7f88su7Dh06VC+QSrkQEAJCQAgIASEgBIqAQHl7Y0VIsIIQAkJACAgBISAEhIAQqA4Efpvzu/v117kNfnPmzkub+LmJ51E/hFMOue+++1yPHj3cueeeW47oKiqOAQMG+LxffPHFZUvX1KlT3fHHH+/WXnttt91227l99tnHPffcc2WLXxEJgWIi8Nbwd92zzw92w954K2Wwkyd/693gbtz4T1K64xlu+P02Z05Kd+V88PKrr/v0fDpxUjmjVVxCQAgIgWaLgDRsm+2rV8aFgBAQAkKgGhGYPn26+/bbb33SO3Xq5BZddNGyZOPrNz93H97+pps69js3a+ovPs51Tt3ErXXihmWJv1IimfjCx27YJYNd+57LuO0H7FMpycopHQcdMdi99PJX7torN3IH7b9KTn5zdbzPgS+44e/UlVfze9xRvVy/C9e1y0bHv930gbv+xg8b3O+xShv30vO7N7hX7Au0O6+55hof7IEHHljs4Cs+vD322MNdddVV7v7773cHH3ywW3XVVUue5ptvvtkNHjzYx7Pzzju7zp07u969e5c8XkUgBEqBwHODhrghL73ig37x2UddnJb+80OGun/e/W/vZtONN3CX97sgNin/+vfD7pXXXndtl2rjdtx+21g3mW6OHTfeTUiQq0u3b+fW67t2JucZn/cf8C/3+RdfulNPOs517dI5o3s5EAJCQAgIgcIQqAjC9vHHH3f8SiW777674ycRAkJACAgBIVCtCHz//fdu0KBB7p133klm4fDDD3err7568rpUJ1M/muyePfzhZPALLd7Kny+4UHUuGZ806GM34ekxrv3qHV3vY9dP5iubkzkzf/OE9cz5pHU2firNzcyZddpa5dBaXXONdm7hVnULut7/cKqb8fNvbl7iL52suMISbtONlvVOvvrmFzfh02npnBftWf/+/d3PP//sv6m+ffsWLdxqCWiZZZZxe++9txs4cKC79tpr3Z133lnypA8bNszHcdppp7mTTz655PEpAiFQSgTWWat3krCdOOlz123lLo2iQwvX5NVhb7o5c+a6li0btqWYZXnn3fe9s003zn9S9OVXh7n7HvyvW3edtYpC2Fq6dRQCQkAICIHyINDkhG2pyVpgNDJYpG15CpViEQJCQAgIgeIhMHv2bPfggw+6UaNGFS/QHEMa82CdtmO7hFbp1jfu6pbs3DbHECrL+Y+ffu8+fW6cmzu7zmZnLqlbuM0iDhzarrJ0Lt6ardvLLq4nxM/78xvuX/8elxGL/ffp5vghjz850Z146ssZ/RTqYObMme7ee+/1wRx77LGFBle1/o844ghP2A4dOtRNnDjRdenSpaR5GT9+vA9/tdVWK2k8ClwIlAOB3r3XSEYz8qPRjQjbGTN+diNGjU664WTMuI/dGr0aarND9v6SqJMQyFaJEBACQkAINE8EmtyGrZGppYa/XPGUOh8KXwgIASEgBJoXAmzGY2Rt69at3dZbb112AKZN/MHH2WWHHlVP1hYK3opbruz2ePwwt8W1OxUalPxXEALYTUW7tn379m777bevoJSVNym9evVy6623no/04YfrtepLnYpymXYpdT4UfnUhUGwt8hWX7+RNGIDChyM/agTGh6Pq7mHmwLRv33u/ofkXPEH2mvRZs/SraCwuHYWAEBACQqCyEGhyDdvKgqNxal5/c7j78cefXI9Vuicb1saudEcICAEhIASEQGkQYLf2Nm3auB122MGts846DgL3xRdfLE1kFmpixfrXb33u3Ly6peszvq5bkv7rtFnu6zc+M1eu9fJt3BIrtklef5+wb/vbjF/dEist5RZbZvHkfU5mfDnN/fzNdLdIu0Vdm67tks+mf/GTm5H4LdJ+MbdUt/buh4+nuMnvfOlm/zjLtVt1GbfCFl3dAgumn18m3h/HT3U/JTRnWy6ykFuyS1u3wqZd3IKL1Hdzfhg3xc36/hcf77RP6wjoX6b83CA/PFymz3Ku5aILJdPHyS/f/exmfFWHgT1YaLGFMmrZ/vbzr+7b979yxD33t7luqZXbu2V6L+sW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iRIlLLEWDci2LVWqlD4WEBAgyMRlkAAJkAAJkAAJkAAJkAAJkAAJxH4CFGxj/2vIFZAACZAACcRhAoGBgXp1WbNmDbHKokWLWm3Hjh2ztqNq486dO1E1NMclARIgARIgARIgARIgARIgARJ4SoCCLd8KJEACJEACJBAHCNy4cSPKVmH8cv/77z959OhRlF2HA5MACZAACZAACZAACZAACZAACYhQsOW7gARIgARIgARiMAFPT089u/Pnz4eY5f79+622qBRsCxUqpK9z69YtWb16tXVNbpAACZAACZAACZAACZAACZAACbifAAVb9zPliCRAAiRAAiTgNgJeXl56rN27d4uxR0ADMl23b99uXef69evWtrs36tSpI23bttXDtm/fXpo0aSLdunWTWbNmuftSHI8ESIAESIAESIAESIAESIAE4j0Bj3hPgABIgARIgARIIAYTaNCggezZs0ceP34sI0eOlMqVK0vixIllx44dcuXKFWvmaIuqSJgwobRs2VLu37+vRVpcGw+0t2rVKqouy3FJgARIgARIgARIgARIgARIIF4SoGAbL192LpoESIAESCC2EMiQIYMWRWfPni0PHz4MZklQpEgRuXTpkly4cEHSpUsXZUsKCAgQZNkiSpUqJb169RJvb29JmTJllF2TA5MACZAACZAACZAACZAACZBAfCVAwTa+vvJcNwmQAAmQQKwhULx4ccmTJ48cOnRIzpw5I0mSJBGItTlz5pSBAwfqdUSlYLt8+XKL1bhx4/R1rQZukAAJkAAJkAAJaAKBgddl/cbNIWkkSCBplSd99mxZJEuWzJIsadKQfVy0XL9+Qw4dOSqHDh+VA4cOy+3bd6RwoQJSMH8+KVggn2RV47mKv//51yoWmi9vHsmfL4+rrlb73Xv35N9Va6z9EsV8JXv2rNa+q41jx0+oOR5xflitP4m6Eyh1qlSSK1cOyZY1i/N+MaB1+cpV8vDBQyldsrh+rWLAlIJNwe+YvxxW74dUqVNJtcoVgx3jDgmQQNwiQME2br2eXA0JkAAJkEAcJZBKfcgpU6aMfpglnjp1Su7evat3M2XKZJrd/nz69Gk9JoRjiMQMEiABEiABEiCBkAROqN/LI776OuQBh5ZCBfPLBx3bSnHfog5Hgu+uUMLp51+MCt6o9rbv3G21tXyzibRr01ISJUpktZmNYV+ONZtS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ARIgARKIdQQmTZokp06dCjHv4cOHW21vvPGGVKhQQe/DBqFRo0YyZ84cuX79uvTv31/Spk2ri5Chg4eHhzRo0MA6lxskQAIkQAIkQAIkQAIkQAIkQAKxmwAF29j9+nH2JEACJEACsYxAggQJIjzjMmXKCITbuXPnysOHDy2x1tPTU9577z3JnDlzhMfkCSRAAiRAAiRAAiRAAiRAAiRAAjGTQIIbN248iZlT46xIgARIgARIwH0E/Pz89GAlSpRw36DPYaTLly8LHjly5JCUKVOGewa7du2KE+sP94LZkQRIgARIIE4TML/X4vQiuTgSIAESIIF4S4AZtvH2pefCSYAESIAEYiOBDBkyCB4MEiABEiABEiABEiABEiABEiCBuEmAgm3cfF25KhIgARIgARIgARIgARIgARKI8wTy5s0b59fIBZIACZAACcQ/Agnj35K5YhIgARIgARIgARIgARIgARIgARIgARIgARIgARKImQQo2MbM14WzIgESIAESIAESIAESIAESIAESIAESIAESIAESiIcEKNjGwxedSyYBEiABEiABEiABEiABEiABEiABEiABEiABEoiZBCjYxszXhbMiARIgARIgARIgARIgARIgARIgARIgARIgARKIhwQo2MbDF51LJgESIAESIAESIAESIAESIAESIAESIAESIAESiJkEKNjGzNeFsyIBEiABEiABEiABEiABEiABEiABEiABEiABEoiHBCjYxsMXnUsmARIgARIgARIgARIgARIgARIgARIgARIgARKImQQo2MbM14WzIgESIAESIAESIAESIAESIAESIAESIAESIAESiIcEKNjGwxedSyYBEiABEiABEiABEiABEiABEiABEiABEiABEoiZBDxi5rQ4KxIgARIgARIgARIgARIgARIgARKIvQRu3b4tR474yYHDR+TAwcNy5cpVyZIls2RVjyoVy0uRwgWdLu5aYKBs2LhFH6tTq7okSZLEab/wNF66fEW2bN2uu774Qm1JmDBqc7aWr1wlDx88lNIli+u1hjXHbdt3yYWLFyVD+vRSvlzpsLrr43v27peA02fE2yuXS4bhGoidSIAESCAGE6BgG4NfHE6NBEiABEiABEiABEiABEiABEgg9hHYvnO39Bs4TG7fuRNs8nv2HdD7s36ZK8WKFpaPu3WW3D7ewfqcO3dBRnz1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fuHvKXa23L17d7yef+xcNY6aBEiABEggJALm91revI9FxpDqxnT5jRs3dVgBxAzNndNfsmTNrBNkRXRcePX/wqVLgtikKVOk8Lo7JKaC0Pvkk8l029AERoRNOHfuvKBNViXQGvESN0OYB4RLgFdxmtSpvb5/VFZEeIbLl6/IpcuXRZTSkUaJtRkzpJcECSLmq4b4sacUszSpUknGTBkksU0sjsz5IAEcQj8kTpxYsmbO5CC+h/U+9+8/UKEeLmkeSZUAnS5tGkmrNhoJkEDsIEDBNnasE0dJAiRAAiQQQQIUbCnYRvARYnMSIAESIAEfIhCbBFsfwsahkAAJkAAJxBICEfuaKZZMksMkARIgARIgARIgARIgARIgARIgARIgARIgARIggdhAgIJtbFgljpEESIAESIAESIAESIAESIAESIAESIAESIAESCBeEGBIhHixzJwkCZAACZCACYlAEiRAAiRAAiRAAnGHQGyIYRt3aHMmJEACJEAC0UWAHrbRRZr3IQESIAESIAESIAESIAESIAESIAESIAESIAESIAEPBBJ5uM7LJEACJEACJBCnCNATJ04tJydDAiRAAiQQTwnwzZl4uvCcNgmQAAnEEwL0sI0nC81pkgAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJ+D4BCra+v0YcIQmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQQDwhQME2niw0p0kCJEACJEACJEACJEACJEACJEACJEACJEACJOD7BCjY+v4acYQkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQALxhAAF23iy0JwmCZAACZAACZAACZAACZAACZAACZAACZAACZCA7xOgYOv7a8QRkgAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJxBMCFGzjyUJzmiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAr5PIJHvD5EjJAESIAESIAESIAESIAESIAESIAFXAoGBga6FLCEBEiABEiCBWE6AHraxfAE5fBIgARIgARIgARIgARIgARIgARIgARIgARIggbhDgB62cWctORMSIAESIAESIAESIAESIAESiFcE8ubNG6/my8mSAAmQAAnEDwL0sI0f68xZkgAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJxAICFGxjwSJxiCRAAiRAAiRAAiRA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"/><use stroke="#7E7C7B" xlink:href="#rect-1"/></g><g id="2" fill="#C06334" fill-rule="nonzero"><use filter="url(#filter-3)" xlink:href="#text-2"/><use xlink:href="#text-2"/><use xlink:href="#text-2"/></g><g id="1" fill="#C06334" fill-rule="nonzero"><use filter="url(#filter-5)" xlink:href="#text-4"/><use xlink:href="#text-4"/><use xlink:href="#text-4"/></g><g id="3" fill="#C06334" fill-rule="nonzero"><use filter="url(#filter-7)" xlink:href="#text-6"/><use xlink:href="#text-6"/><use xlink:href="#text-6"/></g></g></g></svg> \ No newline at end of file +<<<<<<< HEAD +<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="694" height="225" viewBox="0 0 694 225"><defs><style>@import url(https://fonts.googleapis.com/css?family=Open+Sans:bold,italic,bolditalic%7CPT+Mono);@font-face{font-family:'PT Mono';font-weight:700;font-style:normal;src:local('PT MonoBold'),url(/font/PTMonoBold.woff2) format('woff2'),url(/font/PTMonoBold.woff) format('woff'),url(/font/PTMonoBold.ttf) format('truetype')}</style></defs><defs><filter id="filter-3" width="134.3%" height="114.6%" x="-17.1%" y="-7.3%" filterUnits="objectBoundingBox"><feMorphology in="SourceAlpha" operator="dilate" radius="1.5" result="shadowSpreadOuter1"/><feOffset in="shadowSpreadOuter1" result="shadowOffsetOuter1"/><feGaussianBlur in="shadowOffsetOuter1" result="shadowBlurOuter1" stdDeviation="1.5"/><feColorMatrix in="shadowBlurOuter1" values="0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 1 0"/></filter><filter id="filter-5" width="134.3%" height="114.6%" x="-17.1%" y="-7.3%" filterUnits="objectBoundingBox"><feMorphology in="SourceAlpha" operator="dilate" radius="1.5" result="shadowSpreadOuter1"/><feOffset in="shadowSpreadOuter1" result="shadowOffsetOuter1"/><feGaussianBlur in="shadowOffsetOuter1" result="shadowBlurOuter1" stdDeviation="1.5"/><feColorMatrix in="shadowBlurOuter1" values="0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 1 0"/></filter><filter id="filter-7" width="134.3%" height="114.6%" x="-17.1%" y="-7.3%" filterUnits="objectBoundingBox"><feMorphology in="SourceAlpha" operator="dilate" radius="1.5" result="shadowSpreadOuter1"/><feOffset in="shadowSpreadOuter1" result="shadowOffsetOuter1"/><feGaussianBlur in="shadowOffsetOuter1" result="shadowBlurOuter1" stdDeviation="1.5"/><feColorMatrix in="shadowBlurOuter1" values="0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 1 0"/></filter><text id="text-2" font-family="OpenSans-Bold, Open Sans" font-size="60" font-weight="bold"><tspan x="337" y="206">2</tspan></text><text id="text-4" font-family="OpenSans-Bold, Open Sans" font-size="60" font-weight="bold"><tspan x="69" y="206">1</tspan></text><text id="text-6" font-family="OpenSans-Bold, Open Sans" font-size="60" font-weight="bold"><tspan x="570" y="207">3</tspan></text><path id="rect-1" d="M0 0h694v225H0z"/></defs><g id="debugging" fill="none" fill-rule="evenodd" stroke="none" stroke-width="1"><g id="chrome-tabs.svg"><g id="Bitmap"><image width="694" height="225" xlink:href="data:image/png;base64,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mOBefPHF7Dxk6apr165um222cRxLIWPHjvXB9uzZsxTBK0whIASEgBAQAkJACAgBISAEhIAQEAJCQAgIgSZCQLxPEwFf4milYZslwEOGDCk6WUvURgRnmQw5EwJCQAgIASEgBISAEBACQkAICAEhIASEgBAQAkKghhGQhm2WLxdiFbn88suz9JGdswsuuMATwWjZSoSAEBACQkAICAEhIASEgBAQAkJACAgBISAEhIAQaN4ISMO2eb9/5V4ICAEhIASEgBAQAkJACAgBISAEhIAQEAJCQAgIgQpCoCgatsU2F2D2XI855pgKgkpJEQJCQAgIASEgBISAEBACQkAICAEhIASEgBAQAkIgHQLGE8Lv2d5N6dzrWWMECiZs77zzTm+HtXHQ+d8x8wO8YJkKyB9H+RQCQkAICAEhIASEgBAQAkJACAgBISAEhIAQEALlQsDIWuKD3zOOT/xebm+gYMLWgJdt19yAl2vnhg4d6ubOnZs1FJtvvrlr1aqV+/DDD923337rVlxxRdezZ8+s/cth7SMwe/Zs98knn7gJEyb4I+Wkffv2brnllnNrr722W3XVVWsfhPk5fOmll9ycOXNc7969XYcOHZpNvlNldOrUqW7QoEFu4sSJ7osvvvB1yfLLL+9WXnllt/3227vFFlsslVfdr1EEfv/99+Rmom3atHHrrbde2px+/vnnjh14F1lkEbfpppumdVvLD/mGxo8f71q3bu023HDDWs5qMm/p+istWrRw7dq1cx07dvRtDdflEvpDlMnp06e77t27O/pJEiGQLwJhOadt5JdJ6He98sorSWerr766/w6SN3RSswhYm0gG0Zzr1q1bxeT1p59+csOHD/fpsfEjF6+++qqbNWtWxfWNU6W3YgBVQoRAHgi8+OKLjXxxr9oIWxRUSbNZAWiUqRQ34EkhrQu1GlAwYZsifbotBNIiwED5wQcfTOsm+nD99df3JMtTTz3lJk2a5AeKzZWwhYj73//+5yHq27evW2qppaJwNbvrzz77zP397393P//8c4O8T5kyxQ9oITAh6I466ii3wgorNHBTixcPPPCAz9aSSy7ZrAnbefPmORraf//7341e87vvvuvv3XHHHe7000932223XSM3ulG7CPz222/uP//5TzKDiy++uOvVq1fyOnrCQI96ZOGFFy6YsKVe+uCDD3wU1dZxJd3P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bZaCBWozW/nnCta/nKraxKWZhvzfl3wKASEgBISAEBACQkAICAEhIASEgBAQAkJACAiBWkJAGra19DaVFyEgBISAEBACQkAICAEhIASEgBAQAkJACAgBISAEqhoBadhW9etT4oWAEBACQkAICAEhIASEgBAQAkJACAgBISAEhIAQqCUERNjW0ttUXoSAEBACQkAICAEhIASEgBAQAkJACAgBISAEhIAQqGoERNhW9etT4oWAEBACQkAICAEhIASEgBAQAkJACAgBISAEhIAQqCUERNjW0ttUXoSAEBACQkAICAEhIASEgBAQAkJACAgBISAEhIAQqGoERNhW9etT4oWAEBACQkAICAEhIASEgBAQAkJACAgBISAEhIAQqCUERNjW0ttUXoSAEBACQkAICAEhIASEgBAQAkJACAgBISAEhIAQqGoERNhW9etT4oWAEBACQkAICAEhIASEgBAQAkJACAgBISAEhIAQqCUERNjW0ttUXoSAEBACQkAICAEhIASEgBAQAkJACAgBISAEhIAQqGoEWlZ16pV4ISAEhIAQqFoEtr1katWmXQkvPQKDL25f+kgUgxAQAkJACAgBISAEhIAQEAJCoAIRaDl27NgKTJaSJASEgBAQArWPwNK1n0XlMG8E1D/JGzp5FAJCQAgIASEgBISAEBACQqDKEZBJhCp/gUq+EBACQkAICAEhIASEgBAQAkJACAgBISAEhIAQEAK1g0CL6dOnz6ud7CgnQkAICAEhIATiEfjkk0/8g27dusU70F0hIASEgBAQAkKgahBQu141r0oJFQJCQAgIgTwQkIZtHqDJixAQAkJACAgBISAEhIAQEAJCQAgIASEgBISAEBACQqAUCIiwLQWqClMICAEhIASEgBAQAkJACAgBISAEhIAQEAJCQAgIASGQBwIibPMATV6EgBAQAkJACAgBISAEhIAQEAJCQAgIASEgBISAEBACpUBAhG0pUFWYQkAICAEhIASEgBAQAkJACAgBISAEhIAQEAJCQAgIgTwQEGGbB2jyIgSEgBAQAkJACAgBISAEhIAQEAJCQAgIASEgBISAECgFAiJsS4GqwhQCQkAICAEhIASEgBAQAkJACAgBISAEhIAQEAJCQAjkgYAI2zxAkxchIASEgBAQAkJACAgBISAEhIAQEAJCQAgIASEgBIRAKRAQYVsKVBWmEBAC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EBACQqD4CKDgle/GasVPTfFDrPX8FR+xyg6xOZlCiHsT0fFknJu4e9U+7mwxffr0eXEZ0z0hIASEgBAQArWEgHaTrqW3qbwIASEgBIRAc0dA7XpzLwHKvxCoPATGjh3rE9WzZ8+iJi7cxNkCxlRoLa1atHzpWI/AAvWnOhMCQkAICAEhIASEgBAQAkJACAgBISAEhIAQEAJCoFIQQMMUbVETzkXWGhq1e6xakwi1+0qUMyEgBISAEBACQkAICAEhIASEgBAQAkJACAiBakKg2Jq1Yd7NLADmEew8fK7z2kNAhG3tvVPlSAgIASEgBISAEBACQkAICAEhIASEgBAQAkKghhAQUVtDLzOLrMgkQhYgyYkQEAJCQAgIASEgBISAEBACQkAICAEhIASEgBAQAkKgHAiIsC0HyopDCAgBISAEhIAQEAJCQAgIASEgBISAEBACQkAICAEhkAUCImyzAElOhIAQEAJCQAgIASEgBISAEBACQkAICAEhIASEgBAQAuVAQIRtOVBWHEJACAgBISAEhIAQEAJCQAgIASEgBISAEBACQkAICIEsEBBhmwVIciIEhIAQEAJCQAgIASEgBISAEBACQkAICAEhIASEgBAoBwIibMuBsuIQAkJACAgBISAEhIAQEAJCQAgIASEgBISAEBACQkAIZIGACNssQJITISAEhIAQEAJCQAgIASEgBISAEBACQkAICAEhIASEQDkQaLntJVPLEU+zj2Pwxe2bPQYCQAgIASEgBEqPgNr10mNcTTGo/1FNb0tpFQJCQAgIASEgBISAEBACdQi0FBDlQWDs2LHliUixCAEhIASEQCwCLVvWNXm1Xx8vHZt/3WyeCNR+eW+e71W5FgJCwDlr1z/55BPBIQSEgBAQAkKg5hCQSYSae6XKkBAQAkJACAgBISAEhIAQEAJCQAgIASEgBISAEBAC1YpAi+nTp8+r1sQr3UJACAgBISAEskXANHD69OmTrZeacvfBBx/4/DTX/NfUy1RmhIAQEAJCwFm71q1bN6EhBISAEBACQqDmEJCGbc29UmVICAgBISAEhIAQEAJCQAgIASEgBISAEBACQkAICIFqRUCEbbW+OaVbCAgBISAEhIAQEAJCQAgIASEgBISAEBACQkAICIGaQ0CEbc29UmVICAgBISAEhIAQEAJCQAgIASEgBISAEBACQkAICIFqRUCEbbW+OaVbCAgBISAEhIAQEAJCQAgIASEgBISAEBACQkAICIGaQ0CEbc29UmVICAgBISAEhIAQEAJCQAgIASEgBISAEBACQkAICIFqRUCEbbW+OaVbCAgBISAEhIAQEAJCQAgIASEgBISAEBACQkAICIGaQ0CEbc29UmVICAgBISAEhIAQEAJCQAgIASEgBISAEBACQkAICIFqRUCEbbW+OaVbCAgBISAEhIAQEAJCQAgIASEgBISAEBACQkAICIGaQ6BlzeVIGRICQkAICAEhIASEgBAQAnkgMG/ePPf77797nwsuuGAeIVSvl7lz5/rEt2jRwi2wQHl1OqZNm+amTJnifvrpJ7f88su7Dh06VC+QSrkQEAJCQAgIASEgBIqAQHl7Y0VIsIIQAkJACAgBISAEhIAQqA4Efpvzu/v117kNfnPmzkub+LmJ51E/hFMOue+++1yPHj3cueeeW47oKiqOAQMG+LxffPHFZUvX1KlT3fHHH+/WXnttt91227l99tnHPffcc2WLXxEJgWIi8Nbwd92zzw92w954K2Wwkyd/693gbtz4T1K64xlu+P02Z05Kd+V88PKrr/v0fDpxUjmjVVxCQAgIgWaLgDRsm+2rV8aFgBAQAkKgGhGYPn26+/bbb33SO3Xq5BZddNGyZOPrNz93H97+pps69js3a+ovPs51Tt3ErXXihmWJv1IimfjCx27YJYNd+57LuO0H7FMpycopHQcdMdi99PJX7torN3IH7b9KTn5zdbzPgS+44e/UlVfze9xRvVy/C9e1y0bHv930gbv+xg8b3O+xShv30vO7N7hX7Au0O6+55hof7IEHHljs4Cs+vD322MNdddVV7v7773cHH3ywW3XVVUue5ptvvtkNHjzYx7Pzzju7zp07u969e5c8XkUgBEqBwHODhrghL73ig37x2UddnJb+80OGun/e/W/vZtONN3CX97sgNin/+vfD7pXXXndtl2rjdtx+21g3mW6OHTfeTUiQq0u3b+fW67t2JucZn/cf8C/3+RdfulNPOs517dI5o3s5EAJCQAgIgcIQqAjC9vHHH3f8SiW777674ycRAkJACAgBIVCtCHz//fdu0KBB7p133klm4fDDD3err7568rpUJ1M/muyePfzhZPALLd7Kny+4UHUuGZ806GM34ekxrv3qHV3vY9dP5iubkzkzf/OE9cz5pHU2firNzcyZddpa5dBaXXONdm7hVnULut7/cKqb8fNvbl7iL52suMISbtONlvVOvvrmFzfh02npnBftWf/+/d3PP//sv6m+ffsWLdxqCWiZZZZxe++9txs4cKC79tpr3Z133lnypA8bNszHcdppp7mTTz655PEpAiFQSgTWWat3krCdOOlz123lLo2iQwvX5NVhb7o5c+a6li0btqWYZXnn3fe9s003zn9S9OVXh7n7HvyvW3edtYpC2Fq6dRQCQkAICIHyINDkhG2pyVpgNDJYpG15CpViEQJCQAgIgeIhMHv2bPfggw+6UaNGFS/QHEMa82CdtmO7hFbp1jfu6pbs3DbHECrL+Y+ffu8+fW6cmzu7zmZnLqlbuM0iDhzarrJ0Lt6ardvLLq4nxM/78xvuX/8elxGL/ffp5vghjz850Z146ssZ/RTqYObMme7ee+/1wRx77LGFBle1/o844ghP2A4dOtRNnDjRdenSpaR5GT9+vA9/tdVWK2k8ClwIlAOB3r3XSEYz8qPRjQjbGTN+diNGjU664WTMuI/dGr0aarND9v6SqJMQyFaJEBACQkAINE8EmtyGrZGppYa/XPGUOh8KXwgIASEgBJoXAmzGY2Rt69at3dZbb112AKZN/MHH2WWHHlVP1hYK3opbruz2ePwwt8W1OxUalPxXEALYTUW7tn379m777bevoJSVNym9evVy6623no/04YfrtepLnYpymXYpdT4UfnUhUGwt8hWX7+RNGIDChyM/agTGh6Pq7mHmwLRv33u/ofkXPEH2mvRZs/SraCwuHYWAEBACQqCyEGhyDdvKgqNxal5/c7j78cefXI9Vuicb1saudEcICAEhIASEQGkQYLf2Nm3auB122MGts846DgL3xRdfLE1kFmpixfrXb33u3Ly6peszvq5bkv7rtFnu6zc+M1eu9fJt3BIrtklef5+wb/vbjF/dEist5RZbZvHkfU5mfDnN/fzNdLdIu0Vdm67tks+mf/GTm5H4LdJ+MbdUt/buh4+nuMnvfOlm/zjLtVt1GbfCFl3dAgumn18m3h/HT3U/JTRnWy6ykFuyS1u3wqZd3IKL1Hdzfhg3xc36/hcf77RP6wjoX6b83CA/PFymz3Ku5aILJdPHyS/f/exmfFWHgT1YaLGFMmrZ/vbzr+7b979yxD33t7luqZXbu2V6L+sW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iRIlLLEWDci2LVWqlD4WEBAgyMRlkAAJkAAJkAAJkAAJkAAJkAAJxH4CFGxj/2vIFZAACZAACcRhAoGBgXp1WbNmDbHKokWLWm3Hjh2ztqNq486dO1E1NMclARIgARIgARIgARIgARIgARJ4SoCCLd8KJEACJEACJBAHCNy4cSPKVmH8cv/77z959OhRlF2HA5MACZAACZAACZAACZAACZAACYhQsOW7gARIgARIgARiMAFPT089u/Pnz4eY5f79+622qBRsCxUqpK9z69YtWb16tXVNbpAACZAACZAACZAACZAACZAACbifAAVb9zPliCRAAiRAAiTgNgJeXl56rN27d4uxR0ADMl23b99uXef69evWtrs36tSpI23bttXDtm/fXpo0aSLdunWTWbNmuftSHI8ESIAESIAESIAESIAESIAE4j0Bj3hPgABIgARIgARIIAYTaNCggezZs0ceP34sI0eOlMqVK0vixIllx44dcuXKFWvmaIuqSJgwobRs2VLu37+vRVpcGw+0t2rVKqouy3FJgARIgARIgARIgARIgARIIF4SoGAbL192LpoESIAESCC2EMiQIYMWRWfPni0PHz4MZklQpEgRuXTpkly4cEHSpUsXZUsKCAgQZNkiSpUqJb169RJvb29JmTJllF2TA5MACZAACZAACZAACZAACZBAfCVAwTa+vvJcNwmQAAmQQKwhULx4ccmTJ48cOnRIzpw5I0mSJBGItTlz5pSBAwfqdUSlYLt8+XKL1bhx4/R1rQZukAAJkAAJkAAJaAKBgddl/cbNIWkkSCBplSd99mxZJEuWzJIsadKQfVy0XL9+Qw4dOSqHDh+VA4cOy+3bd6RwoQJSMH8+KVggn2RV47mKv//51yoWmi9vHsmfL4+rrlb73Xv35N9Va6z9EsV8JXv2rNa+q41jx0+oOR5xflitP4m6Eyh1qlSSK1cOyZY1i/N+MaB1+cpV8vDBQyldsrh+rWLAlIJNwe+YvxxW74dUqVNJtcoVgx3jDgmQQNwiQME2br2eXA0JkAAJkEAcJZBKfcgpU6aMfpglnjp1Su7evat3M2XKZJrd/nz69Gk9JoRjiMQMEiABEiABEiCBkAROqN/LI776OuQBh5ZCBfPLBx3bSnHfog5Hgu+uUMLp51+MCt6o9rbv3G21tXyzibRr01ISJUpktZmNYV+ONZtS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ARIgARKIdQQmTZokp06dCjHv4cOHW21vvPGGVKhQQe/DBqFRo0YyZ84cuX79uvTv31/Spk2ri5Chg4eHhzRo0MA6lxskQAIkQAIkQAIkQAIkQAIkQAKxmwAF29j9+nH2JEACJEACsYxAggQJIjzjMmXKCITbuXPnysOHDy2x1tPTU9577z3JnDlzhMfkCSRAAiRAAiRAAiRAAiRAAiRAAjGTQIIbN248iZlT46xIgARIgARIwH0E/Pz89GAlSpRw36DPYaTLly8LHjly5JCUKVOGewa7du2KE+sP94LZkQRIgARIIE4TML/X4vQiuTgSIAESIIF4S4AZtvH2pefCSYAESIAEYiOBDBkyCB4MEiABEiABEiABEiABEiABEiCBuEmAgm3cfF25KhIgARIgARIgARIgARIgARKI8wTy5s0b59fIBZIACZAACcQ/Agnj35K5YhIgARIgARIgARIgARIgARIgARIgARIgARIgARKImQQo2MbM14WzIgESIAESIAESIAESIAESIAESIAESIAESIAESiIcEKNjGwxedSyYBEiABEiABEiABEiABEiABEiABEiABEiABEoiZBCjYxszXhbMiARIgARIgARIgARIgARIgARIgARIgARIgARKIhwQo2MbDF51LJgESIAESIAESIAESIAESIAESIAESIAESIAESiJkEKNjGzNeFsyIBEiABEiABEiABEiABEiABEiABEiABEiABEoiHBCjYxsMXnUsmARIgARIgARIgARIgARIgARIgARIgARIgARKImQQo2MbM14WzIgESIAESIAESIAESIAESIAESIAESIAESIAESiIcEKNjGwxedSyYBEiABEiABEiABEiABEiABEiABEiABEiABEoiZBDxi5rQ4KxIgARIgARIgARIgARIgARIgARKIvQRu3b4tR474yYHDR+TAwcNy5cpVyZIls2RVjyoVy0uRwgWdLu5aYKBs2LhFH6tTq7okSZLEab/wNF66fEW2bN2uu774Qm1JmDBqc7aWr1wlDx88lNIli+u1hjXHbdt3yYWLFyVD+vRSvlzpsLrr43v27peA02fE2yuXS4bhGoidSIAESCAGE6BgG4NfHE6NBEiABEiABEiABEiABEiABEgg9hHYvnO39Bs4TG7fuRNs8nv2HdD7s36ZK8WKFpaPu3WW3D7ewfqcO3dBRnz1tW6rUrnCMwm2pwJOW2M9q/gbbJIudoaOGKOPDP/8s3AJtrN+nStgBRbhFWx/njNPNmzaKs2bNHomwXb9pi0SGHhdCuTLK3nz+LhYEZtJgARI4PkQoGD7fLjzqiRAAiRAAiRAAiRAAiRAAiRAAnGMwJMnT2Tu/IUyYdI0a2XIpC1Z3FeyZs6ss0lX/rdWzpw9JxBvu/f+TCaOGyXZs2e1+nMjegjMmPWrHDx0RDq0bU3BNnqQ8yokQAIRIEDBNgKw2JUESIAESIAESIAESIAESIAESIAEXBHYoLI2jVibLq2njP1yaIgM2nbvtJLFS/+SMd98J1evBUrfgUNkxuQJroZkuwOBls2byEv16oh3rpwOR7hLAiRAAnGHQNQa2MQdTlwJCZAACZAACZAACZAACZAACZBAHCEwZcoUt6/k8ePHMmnqDD0uxNpJ344JIdbiIHxkG75aX9q2aan7+p84JYeOHNXb/BE2gWK+RaRmtSpO2YZ9NnuQAAmQQOwgwAzb2PE6cZYkQAIkQAIkQAIkQAIkQAIkQAJuInD8+HGBaFunTh3JnTu3W0ZdvXaDQHxFvPt2C8mSOVOo475av55Mm/Gz7rNq9TopmD9fqP3NQfi3rtuwSfYfPCRnz57Xt/MXLlhA6tWtJfnz5THdQjw/evRYflN2DTt27lFF0A5J8uTJxVd5x5YrXVJeqFNTEiRIEOKcCxcv6Wzgzdu2y8mTAdqTN1PGjFKmVHFp+Er9Z/KQDXGxcDb89r/ftZVBxfJl9ZrNaWC/YNFS2bl7j34dIJpny5ZVi7sNXqorqVOl0l1Hj5sgt1VBOKwH8feKf8Xv2HFJlCiR9OvTQ7eZHxhz0dI/Zd+Bg7o/eKGgWo2qlYPZWNy8eUvGfD1Rn/bxRx/Ivn0HZdWadbJj1x65prKo8+XNo7KCa0uDF+s65Xzj5k2Zt2Cx7FU2GfsPHBIvr5xStlQJ+X975wFeRdGF4SNd6b0mVJHeO6IIiiAISEe6hKIgoBRBmoIgRZoICCggTf0BlSZKVZCOIAhKC4TeQendf74Js+wtyb3pN8l3nmfv7s7OzM68syHku2fPqaiS0xUpVMAMR+8nTJqqY++2bf26YI4/r1onO3bukjNnz1me2tt/3yXLVqyUgyrpHcJvYM1y5/JXvKpKteer6Lk6dMoTEiABnyNAwdbnloQDIgESIAESIAESIAESIAESIAESiGoCRrStVq2aFm4jej+IqLCnlBAK8dSTpUuXVhbOnyEQUpMmTeqputy+c0cmq9i4i5etcKiLWLjYIMZ2f6ujNKhfx+G6Oen9/mBdz5wjHAPEvJWr18nWHTul9ztdJZltHIFHgqTrO++5JE67cPGi/LRqrd7Gjx4mJYsXNV1Gyx5JyiBaZ8iQXmpIMOffd+6Wd/sOdLg/5ocNAujPq9fKp598LClSJJc169Y7zAmirBHa7YLt8p9WyaixEx363KY4YZs971uZNH6U5MkdnDDu3r17suaXDbpugQL5ZdLnXzq027N3n2ALCjouXTq3d7iG8Q0aOlLA1Rhi62Kb+81CGdSvlyBhnLGfVq7V469ds4aM+3SKTtqGa9mUOA2bPf9b+XJW8BcBukB9oG9sGPvOXXukz7tvuxWOTX3uSYAEYp4ABduYXwOOgARIgARIgARIgARIgARIgARIIIYIrF27ViDeRtTb1oh+pZT36ZNPJvNqNvB89NaQJMuItcWKFJaWzRtJpowZ5IgSAadMm6kFuQmTp0nGTBmkSqUKLt1C1IWo1055ZubNnUvOnT8vPyxdIVu3/y6r1/4q6dKkcRATB380UguD8OJs0ayxFFbJ01KnTqW9RkeP+0z3Dy/O6BZsXSamCsZ99rkuxvy6dg7QQuoN5UUL71N45EJ8BrsWzRrJoPd7CzxaIXbevHVLqj5XWSpXLC8JVagKYxBXjVhbvmxpadqovkBgP6Q8VidPm6GF4C49+sjcmZ9LelVuN4i1GEen9m3EL0d2+fvAQZ2IDs8HRPXGDevpdUObq9euSc++g/Q4dJuANpLL31+vzYzZ87VoO+TjTyRN6tRSulRx+230nE+cPKW/IKhYvozydi4gly9fscRajLtV88aSUT0j5y9ckLlfL9Rr/ePPq6W28u529tx16JwnJEACMU6Agm2MLwEHQAIkQAIkQAIkQAIkQAIkQAIkEJMEIupt+99//8nBw4F6CtmyBHs6Os/nD/V6/L37952L9Tk8WxGbNSTD6+7zv12kLz9bqbwMGdjXeq09d66cUq5MSWnXsZsWbeGFi3ABiRM5/rkPQXDyhNH6NXp0lDdPLoGoN3TEGFn3628OYiK8MSEGwj7o30dK2Lxos2fLqkIxnNXen/AOjWm7evWaNdYmSgytXLGcNaR8nXLL5StXtCANz1wIthA3YYt+WKoF0fz58kqN6lV1GT4ePHggYyYEhzeoUrmiDB3U1/JGzZ3TX0qpUAWt3nhTi6w/K0/j15s2tNriAAL39EnjtDcvzsE5R/Zs0r3X+ziVwyr8AoR22EwlykI0RpsvJo+X5Mmf0uW5cvpJGRWqAm0gtH+z8HsXwRbrg7n069VDC+louHHzNt0eHxCMcW9YlsyZZPiHBaTR62212PzHnr0UbDUZfpCA7xJw/Bfcd8fJkZEACZAACZAACZAACZAACZAACZBAlBIIr7ctPDaNpVHimzvrN+gjLc65uwYx9euvprm7pMvsQlyXju0tsdY0QHzWrupVe3jFIswBPEELKY9Yu7VU3pYQBu2GuK0d27XWgi3KEdbhtbq1JUniJNKjaydd1bmfh0qcPn/xkr527557AVpfjKaPFClT6Hkh/MGiH5ZJgWeeFsT0NdbtzQ7SUgm1iRMnNkWh7o+p2LbGW7pDu5aWWGsaZUifTgu/02fOke8WL3cRbOGNjNALditWtLD2hIU4e/nSZesSwhvAAtq2tMRacxFrA9G167t9dSiDs+fOa+HVXMf+/d7vSKpUKa2inCr2rbEZs+fpNTRe3IkSJZSpE8foZzBlysdtTH3uSYAEfIsABVvfWg+OhgRIgARIgARIgARIgARIgARIIAYJGG/bgIAArxOSpUj+WKBDoi53Bi9LiIp2u3HjRogirr2e8XbFK/bZsrn34EUoBmMnT59xEWzhTevO0B88OiFSnjh5WldB6AMItzCI0fDyPH7ipBw9dlzHQDXj0RVi+COBSpZWt3ZN+UrFlcW4Or/dS4ckKFu6pE6qVkp5B8ML2Vs7fvKkVXX2/P9JAluoBHMBLGDwRIYIazfj1Wovwxgh5KMuYhbDLqnwBabtchWmYPfev+xN9PGtW7etMiRJg6essdo1X3IQa1GOZwwCOzyff9u0VW8QsJEoDWE0ihUtJJltfZi+uCcBEvA9AhRsfW9NOCISIAESIAESIAESIAESIAESIIEYJnDkyBGvBVuIehDGkCjKiHnOw58+eZxzkcz4ap4WGl0uOBUg3iwsa5bMTlcen6ZSXpNIeAYRECELnM3Zu9Z+PVPGjFqwPX3mjFV84NBh+WLmXO3daRX66AHi8mZRbKZ9+ZUWxeFljJi1JuYvQhu8/WaAZM6U0eMMTp9+zA6xfT3Zv/9edUjWBm9nbwxhLoxBYPUUXuKfq1dNdb2HOOvOxo36SGbN/lrPHc+CSWBmQmogHi88epMkSeKuOctIgAR8hAAFWx9ZCA6DBEiABEiABEiABEiABEiABEgg5glUq1ZNJyAL60iQyAviGGKlnlOvr3vjyRh4NMir25hX2JGkKiS7e/eu5bGJJFXOduPGTRePTFPnuvL0haVOlUrv4W3bscu7+hgicK2XX1TeqgUE8Xnh5fvLho1WUi5dKYY/nlAerK+oMdaqUV2OqiRsu//cq7Z9VqiHDRs3q8RjR2XmtIkO4qq7YadNm8Yq7turu3Xs7gCes6h/66ajl627us5ldgG9XavmHp+XooULOnRhH6f9AuIhd+7QVgLatZK/9u+X3Xv26WcSzyXs24U/aFG7f5937M14TAIk4GMEKNj62IJwOCRAAiRAAiRAAiRAAiRAAiRAAjFDILxiLUZbs0Y1Wf7TKj3wOV8vkF49uoQ6CYQXwGvr3phfjmBvSgjCt+/ccSs6Qqg05s778tDhIy6Jq1D/9u3blndnNpVQDLZqzTq9x8csJXI6i893bt+xrsf0wZ07d+X02bMC8TSnv5/kyZ1Tbwjp8G63N2XCpGk66Ri8bvfvP+iQQM3d2HP6PY4Di+RtdmHV1EeYiLNnzysv1cR6LcIj2NrDGyCMAryAnQ0J0I4cPaaLTaIyUwcxbp0NCdguqSRrENnhTazDIKhQCK1ebyInT52W/h8M057UK1evk57d33L7HDn3yXMSIIGYIZAgZm7Lu5IACZAACZAACZAACZAACZAACZCAbxDInTu3IGZt9erVwz0giGPVq1bR7Zf++LMl3rrr8MbNmzJm/CR3l9yWFS1cyCpf+P1S69h+MHPOfOs0X97c1rE5+Gbh9/KfShjmbPbX/osULKAvHwo8qvclVPxXZ7H24cOHsm79RuduYux8719/S9sOXaV1QBe5aEvohQEhTESr5k2ssf2jwhc4mzORXLn8teCJet8vXuZcXZ+PHDNRAt7qIYOGjnB73ZtCCK5lSpXQVeH16m5tFi/7Sd8H90LoBU+2SI0XLHr2HeRSFSJ+o9fqWuXXrwd7VVsFPCABEvApAhRsfWo5OBgSIAESIAESIAESIAESIAESIIHoJACv2rAkGAttbJ0C2lpi36ixE5V351TtIQlPSRiSSG3d/ru0CeiqE3mF1pf9WkklnJYrU0oXTZ8xW7/Wfu/+fX0Ob8+RYz6VzVt36PP2bVsIkoY527YdO+WjkWPln3+DE5+h/ZpfNsjoR8IxklWVLlVcNzPenAcPHpbDKpSAMQiiH48eL3v27tNFSJr20I0IbOp7u0esVXiShrYdVwnF3FnBAvmtYnC4ePGSdY4wEcbrGYUFVZxhY0kSB8dwhdcy5gWOMHintm7RVB8jkdlc5S0Nr2YY6ny/ZLkgxAKspgrBEBFr36aFbo6kbh8OHy1XrvyjzzHu33fuFqw1DAnj0qVLq49D+yj2SNhH8rVpqq09aRkS3q1et143z5ghg2RIny60rniNBEgghgkwJEIMLwBvTwIkQAIkQAIkQAIkQAIkQAIkEDMEIhICwd2I8Rr6l59P0OIbhMDvFi/XG+pCJLtw8aLVLFdOP+3x+ImXnrY9unaSXv0GC17tnzxtht6yZc2iz02npUoUkyYN6plThz2ESHjTYnMeC66983Znq37liuUFXsIQUtt37q7j1l5XYiVEPxjGjji3uN6gaWuZ+tlYrxJ6WTdwOgg8EiTtOr3tVOp4iti5c2dMcSxUZxh7hzdaa3ETonTD19vp8SJcAfo1VuPFFxy8hf39s2vhGeKrEWB/XblEV3+tXm3ZtGW7vj595hzB5swMMWUb1K1jug/XHiJ58yYN5Ov/fafj7a779TcdgsFwRqeYH9beGytRvIhULF9Gi/fzvlko2LBWDx48FIi4xtq1bm4OuScBEvBRAvSw9dGF4bBIgARIgARIgARIgARIgARIgASihgCE2mHDhkUoBEJII4OI+tnYEdJGeWlCZDRmxFoIcK++8rIWOWu+VE1fhrhozB6bNGGCx3FKs6v4shCD69WpZXnxQryFQUzsrLx7x4wYIsmSJTNdSSJbnNNJ40dpT01cNGPBcaUK5WSOEkLz58uLU20Q/RDjFGOFQeyDiIh4rt27dJIZn38qmCcM5fcfefvqAvVhn4Mpi+x9okSP/c9aNmskvVXMYDMmjNeItRgzvI779uzmMISWzRpbIQkcLqgTJO4aP/ojeUN5wJoYtnZmLdT9RgwdJEmTBnvpJkz0eJ3COnes20eD+1nPil2sfeH5Z2XqpLHWvOzjTGS7pynHvQe/30fAw6wdhHUj1mKNPxzwntSu+ZJpwj0JkICPEnji2rVrziFbfHSoHBYJkAAJkAAJhJ9AYGCgbly8ePCrfuHvKXa23L17d7yef+xcNY6aBEiABEggJALm91revI9FxpDqxnT5jRs3dVgBxAzNndNfsmTNrBNkRXRcePX/wqVLgtikKVOk8Lo7JKaC0Pvkk8l029AERoRNOHfuvKBNViXQGvESN0OYB4RLgFdxmtSpvb5/VFZEeIbLl6/IpcuXRZTSkUaJtRkzpJcECSLmq4b4sacUszSpUknGTBkksU0sjsz5IAEcQj8kTpxYsmbO5CC+h/U+9+8/UKEeLmkeSZUAnS5tGkmrNhoJkEDsIEDBNnasE0dJAiRAAiQQQQIUbCnYRvARYnMSIAESIAEfIhCbBFsfwsahkAAJkAAJxBICEfuaKZZMksMkARIgARIgARIgARIgARIgARIgARIgARIgARIggdhAgIJtbFgljpEESIAESIAESIAESIAESIAESIAESIAESIAESCBeEGBIhHixzJwkCZAACZCACYlAEiRAAiRAAiRAAnGHQGyIYRt3aHMmJEACJEAC0UWAHrbRRZr3IQESIAESIAESIAESIAESIAESIAESIAESIAESIAEPBBJ5uM7LJEACJEACJBCnCNATJ04tJydDAiRAAiQQTwnwzZl4uvCcNgmQAAnEEwL0sI0nC81pkgAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJ+D4BCra+v0YcIQmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQQDwhQME2niw0p0kCJEACJEACJEACJEACJEACJEACJEACJEACJOD7BCjY+v4acYQkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQALxhAAF23iy0JwmCZAACZAACZAACZAACZAACZAACZAACZAACZCA7xOgYOv7a8QRkgAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJxBMCFGzjyUJzmiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAr5PIJHvD5EjJAESIAESIAESIAESIAESIAESIAFXAoGBga6FLCEBEiABEiCBWE6AHraxfAE5fBIgARIgARIgARIgARIgARIgARIgARIgARIggbhDgB62cWctORMSIAESIAESIAESIAESIAESiFcE8ubNG6/my8mSAAmQAAnEDwL0sI0f68xZkgAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJxAICFGxjwSJxiCRAAiRAAiRAAiRA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"/><use stroke="#7E7C7B" xlink:href="#rect-1"/></g><g id="2" fill="#C06334" fill-rule="nonzero"><use filter="url(#filter-3)" xlink:href="#text-2"/><use xlink:href="#text-2"/><use xlink:href="#text-2"/></g><g id="1" fill="#C06334" fill-rule="nonzero"><use filter="url(#filter-5)" xlink:href="#text-4"/><use xlink:href="#text-4"/><use xlink:href="#text-4"/></g><g id="3" fill="#C06334" fill-rule="nonzero"><use filter="url(#filter-7)" xlink:href="#text-6"/><use xlink:href="#text-6"/><use xlink:href="#text-6"/></g></g></g></svg> +======= +<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="694" height="225" viewBox="0 0 694 225"><defs><style>@import url(https://fonts.googleapis.com/css?family=Open+Sans:bold,italic,bolditalic%7CPT+Mono);@font-face{font-family:'PT Mono';font-weight:700;font-style:normal;src:local('PT MonoBold'),url(/font/PTMonoBold.woff2) format('woff2'),url(/font/PTMonoBold.woff) format('woff'),url(/font/PTMonoBold.ttf) format('truetype')}</style></defs><defs><filter id="filter-3" width="134.3%" height="114.6%" x="-17.1%" y="-7.3%" filterUnits="objectBoundingBox"><feMorphology in="SourceAlpha" operator="dilate" radius="1.5" result="shadowSpreadOuter1"/><feOffset in="shadowSpreadOuter1" result="shadowOffsetOuter1"/><feGaussianBlur in="shadowOffsetOuter1" result="shadowBlurOuter1" stdDeviation="1.5"/><feColorMatrix in="shadowBlurOuter1" values="0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 1 0"/></filter><filter id="filter-5" width="134.3%" height="114.6%" x="-17.1%" y="-7.3%" filterUnits="objectBoundingBox"><feMorphology in="SourceAlpha" operator="dilate" radius="1.5" result="shadowSpreadOuter1"/><feOffset in="shadowSpreadOuter1" result="shadowOffsetOuter1"/><feGaussianBlur in="shadowOffsetOuter1" result="shadowBlurOuter1" stdDeviation="1.5"/><feColorMatrix in="shadowBlurOuter1" values="0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 1 0"/></filter><filter id="filter-7" width="134.3%" height="114.6%" x="-17.1%" y="-7.3%" filterUnits="objectBoundingBox"><feMorphology in="SourceAlpha" operator="dilate" radius="1.5" result="shadowSpreadOuter1"/><feOffset in="shadowSpreadOuter1" result="shadowOffsetOuter1"/><feGaussianBlur in="shadowOffsetOuter1" result="shadowBlurOuter1" stdDeviation="1.5"/><feColorMatrix in="shadowBlurOuter1" values="0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 1 0"/></filter><text id="text-2" font-family="OpenSans-Bold, Open Sans" font-size="60" font-weight="bold"><tspan x="337" y="206">2</tspan></text><text id="text-4" font-family="OpenSans-Bold, Open Sans" font-size="60" font-weight="bold"><tspan x="69" y="206">1</tspan></text><text id="text-6" font-family="OpenSans-Bold, Open Sans" font-size="60" font-weight="bold"><tspan x="570" y="207">3</tspan></text><path id="rect-1" d="M0 0h694v225H0z"/></defs><g id="debugging" fill="none" fill-rule="evenodd" stroke="none" stroke-width="1"><g id="chrome-tabs.svg"><g id="Bitmap"><image width="694" height="225" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABWwAAAHCCAYAAAB7UIClAAAAAXNSR0IArs4c6QAAAERlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAA6ABAAMAAAABAAEAAKACAAQAAAABAAAFbKADAAQAAAABAAABwgAAAAAZakmrAABAAElEQVR4AeydB7wVxfn+B0FsKAoKikoRBDsKYu+9996NJWo09vJTE9GoMWKJ0diD+tfYEnsPKlYs2EURFEXsCBaKoIL89zuX99y5e/f0cs8593nv59zdnZ2d8uzslGfeeafN1KlT5ziJEBACQkAICAEhIASEgBAQAkJACAgBISAEhIAQEAJCQAi0OALztHgKlAAhIASEgBAQAkJACAgBISAEhIAQEAJCQAgIASEgBISAEPAIiLBVQRACQkAICAEhIASEgBAQAkJACAgBISAEhIAQEAJCQAhUCQIibKvkRSgZQkAICAEhIASEgBAQAkJACAgBISAEhIAQEAJCQAgIARG2KgNCQAgIASEgBISAEBACQkAICAEhIASEgBAQAkJACAiBKkFAhG2VvAglQwgIASEgBISAEBACQkAICAEhIASEgBAQAkJACAgBIdBOEOSGwCeffOI+/vhj9/TTT+f2QI6+evXq5TbffHPHsRwyZswYH2y/fv3KEbzCFAJCQAgIASEgBISAEBACQkAICAEhIASEgBBoIQTE+7QQ8GWOVhq2OQL81FNPlZysJWojgnNMhrwJASEgBISAEBACQkAICAEhIASEgBAQAkJACAgBIVDHCEjDNseXC7GKXHDBBTk+kZu3s846yxPBaNlKhIAQEAJCQAgIASEgBISAEBACQkAICAEhIASEgBBo3QhIw7Z1v3/lXggIASEgBISAEBACQkAICAEhIASEgBAQAkJACAiBKkKgJBq2pTYXYPZcDz/88CqCSkkRAkJACAgBISAEhIAQEAJCQAgIASEgBISAEBACQiATAsYTwu/Z3k2Z/OtecwSKJmxvvPFGb4e1edCFu5j5AV6wTAUUjqOeFAJCQAgIASEgBISAEBACQkAICAEhIASEgBAQApVCwMha4oPfM45P/F5+b6BowtaAl23X/ICXb+eGDx/uZs+enTMUG220kWvfvr1755133MSJE92yyy7r+vXrl/Pz8lj/CPz8889u3Lhx7uOPP/ZHyknnzp3dUkst5dZYYw23wgor1D8Ic3P4zDPPuFmzZrnVVlvNdenSpdXkO11GJ0+e7IYNG+bGjx/vPv/8c1+XLL300m655ZZzW2+9tVtwwQXTPSr3OkXgt99+S20m2rFjRzdo0KCMOf3ss88cO/DOP//8boMNNsjot55v8g199NFHrkOHDm6dddap56ym8papv9KmTRvXqVMn17VrV9/WcF0poT9EmZw6darr06ePo58kEQKFIhCWc9pGftmEftfzzz+f8rbyyiv77yDloJO6RcDaRDKI5lzv3r2rJq8//vijGzlypE+PjR+5eOGFF9zMmTOrrm+cLr1VA6gSIgQKQODpp59u9hRutUbYoqBKms0KQLNMpXGAJ4W0LtZqQNGEbZr0yVkIZESAgfKdd96Z0U/85lprreVJlocffth9+umnfqDYWglbiLhnn33WQzRw4EC36KKLxuFqddcTJkxwf//739306dOb5H3SpEl+QAuBCUH3u9/9zi2zzDJN/NTjxR133OGztcgii7RqwnbOnDmOhvbf//53s9f8xhtveLcbbrjBnXjiiW7LLbds5kcO9YvAr7/+6v7zn/+kMrjQQgu5lVZaKXUdP2GgRz0y33zzFU3YUi+9/fbbPopa67iS7kcffdRBcrcGwjaf/sriiy/uDjvssJyIrnj5yvf6v//9r5+EsucgT0TYGho6FoJA2C9fcskl3bnnnps1GEixsB6lfmSSXFL/CNCvMsUtFAP+8pe/VE2mUdiwcrn22mv78SOJu/XWW30aW6JvnGnsli69VQOoEiIESoRAvqRniaItOBizJsAR4jXX9FM38gxizxaaCBG2hSKn50qGwLzzzuu1U7IF2LZt22xeWs39X375xd19990+v926dWv1hO1zzz3XhJBbbLHF3PLLL+/A5rvvvvOz7DNmzHBffPGFu+iii9zgwYMdA2tJ/SNwyy23pMrGEkss4bVpGUxOmzbNjRo1ymsG/fTTT45VIgw4+vfvX/+gKIeJCNCh+utf/+oJ2UQPJXRkgsnq8M0228xVUiuzhNlodUHF+ytMCKHdSvuCQMQPGTLEXXjhhY52qFyCViNaGwjxrL766l7juVzxKdzWh8DXX3/t+EHcZhK0ciWtDwFWLRlZS+4hHJk0YvWjJBkBjd2SccnX9aGHHvKP7LjjjomPZruf+JAcy4IA/du4lm2uhGdZEpRnoIwLwnrOiNdseQjJWqK060I1bUXY5vni5L30CKy//vpu3333LX3ACrFVIPDll1+mCLl55pnHHXXUUc1IN8rXgw8+6B577DGHVt3ll1/uCbpWAVArziREys033+wRWHPNNT2JglkVk7333tu9//777phjjvFOl1xySUr7wvzo2HoQQDsfrcX999+/9WRaOc0LgXT9Feqa22+/3aG1j0buXXfd5duivALPwzNmf4gHOfroo12PHj3yeFpehUBuCDAZvtdee6X1/O2333oTQ2k96EbdImCr/JjEQuhbQ8wcfPDBVZ3nQw45xNedffv2rap0sgLwoIMO8pO3rPaRJCMAGWuELD7ipG22+8mhyrVcCNgKMiNtIXDNrVxxljJc0gpJG0o20tbI2fAZzovJtwjbGJqATEfYClbstjvrrLOaOMGw8wKyMe1NHtKFEBACJUPAlv4T4BlnnJE4cIXI3WWXXRyDi9dee81rQUH0ooErqV8ERo8encrcgQcemFoSl3KMTlgCf+SRR7rrr7/ea4dgR4yl3pLWiQAExbrrrluRJe2tE+H6zPXCCy/sjjjiCN8GUYdg47ecgmavCbZzJUKglAjQZ2JCADMwe+65Z9oVANSXiPkvZRoUVvUiQP1j755JLMoK1y+//LLbb7/9nJG41ZgD2vdqFPZRAEtJ7ggYcRsnbS2EbPfNn47lRQCerBiysrypyxw6/B5asbmStunI2nxMKSSlSIRtDBWWmAF2rmIErwjbXBErrz86DU888YR79913HUtO27Vr51ZccUW3yiqruPXWW69Jp/PJJ5/0G5ixBBr7uNjG/eCDD/yyHpZOr7rqqm733Xf3HVE2VMBOF2Q+Ykur09nvgxR86aWXfFliCQwbN7ARAxvVhDOnaHRdd911Pkw0Q4mf5z788EPHkkfi2XDDDd0WW2zh084SJJZ4YwfJhGW1DBbRsCG9CAPG//3vf+7111/357jhByzYYKleiErex9ixY8meQ4Mym5bRtttu6wlb/NOx3G233ThNCe+Yd8d3jcYUZhP4tjfeeONmmymw0csjjzzizXmgUUC5YwMYqz9YFgZJnGQT88033/TLWdn8iqW02Hyzd837TjL/gd1mJpIIH+LZ3jk2jNOVw1TGYicsWyO9bND2ww8/+PJA+aQjW0+257755ptUzjMtOSffaF+zCSLYxAlbytnjjz/uv0+I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bRIqchMCQkAICIGSIRA2sjJuXzJYFZAQEAJCQAgIASEgBISAEEiLQNjvxpNI27RQtYobjMniUu0kZjiOjKc9n+taJW1LQtj+73//c7Nnz07Eq02bNq5z586uW7dubqmllnLzzCMrDIlAFeA4fPjwtLjHg8MmCb/x48e7jz76yHXo0MGts8463tuPP/7oRo4c6c832mgj1759+/jjuhYCQkAIFIyANZBhALhVewchTG+m83Qar6axlO5+pjCT7ll4SffK6fbVV1+5t956y80333yu3Fonw4YNc7NmzXIDBgxwXbt29dl688033ddff+169OjhVlpppbJl9ZlnnnEzZsxoEnfZIlPAQkAICIEqRKDU7VW68FqqPatCyGsiST/88INP56KLLloT6VUiGxB44403nL07XCBvv//+e9/PqUWMSL8I58LfHMQnGIZS7aYQSkXWWp5tTFpLY9CiCVuI2gsvvNAwyHhkoHXyySe73r17Z/Snm9kR+O2339ydd96Z3eNcH1tssYUnbN9++2336KOPuo4dO6YI24kTJ7r//Oc/3ufaa69dV4TtpEmTHHlGaunD9AnWPyFQxwiow1U7L/fDDz90f/vb33yCy03Y2uCefoURtnfddZd7+eWX3d57711Wwnbw4ME+j2HctfOWlFIhIASEgBAQAsUjYIQOxF5I9oUhQ9yiCCQCN0Slus7jZK2ljnfKPSbGa02sbGoMkf+bAzsjK+1pcKxmfqTUZK3l23Co5rxbWjkWTdiGgS222GJu2WWXTTlBKn733Xfuyy+/9G7vv/++O+6449ytt97qtW5THnVSFALzzjuv69SpU8YwFl988Yz36/XmhAkT3N133+2zB9GAxrckNwQeeugh73HHHXdMfCDb/cSH5NgqEeDbs8bRAFBny5DQsbUjwColZKuttsoIRa7+Mgaim0JACAgBIZA3Auk0gm2SMR5gvv7jz7fENUTexx9/nJakDdNkpB9u9OfUpwvRadnz8N2kSwl+6JdD2tYa6Q7xCOdUa+lO9y5ycU9Xn2R6lm/y8MMPT3mB/IyLEZZgeuONNza5zbMt+V2Xi6y1TNq41DAw92o8lpSw3Xnnnd0hhxzSLJ9Tpkxx//rXv9wDDzzgfvrpJ3fLLbe4k046qZk/ORSGwPrrr+/23XffnB5ea621HOTtwgsvnJN/eWqdCEDGGiELAnHS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AkIgBwRE2OYAkrwIASEgBISAEBACQkAICAEhIASEgBAQAkJACAgBISAEKoGACNtKoKw4hIAQEAJCQAgIASEgBISAEBACQkAICAEhIASEgBAQAjkgIMI2B5DkRQgIASEgBISAEBACQkAICAEhIASEgBAQAkJACAgBIVAJBNqtMHh6JeJp9XF8MHihVo+BABACQkAICIHyI6B2vfwY11IM6n/U0ttSWoWAEBACQkAICAEhIASEQAMC7QREZRAYM2ZMZSJSLEJACAgBIZCIQLt2DU1e/dfHyyTmX46tE4H6L++t870q10JACDhn7fq4ceMEhxAQAkJACAiBukNAJhHq7pUqQ0JACAgBISAEhIAQEAJCQAgIASEgBISAEBACQkAI1CoCbaZOnTqnVhOvdAsBISAEhIAQyBUB08Dp379/ro/Ulb+3337b56e15r+uXqYyIwSEgBAQAs7atd69ewsNISAEhIAQEAJ1h4A0bOvulSpDQkAICAEhIASEgBAQAkJACAgBISAEhIAQEAJCQAjUKgIibGv1zSndQkAICAEhIASEgBAQAkJACAgBISAEhIAQEAJCQAjUHQIibOvulSpDQkAICAEhIASEgBAQAkJACAgBISAEhIAQEAJCQAjUKgIibGv1zSndQkAICAEhIASEgBAQAkJACAgBISAEhIAQEAJCQAjUHQIibOvulSpDQkAICAEhIASEgBAQAkJACAgBISAEhIAQEAJCQAjUKgIibGv1zSndQkAICAEhIASEgBAQAkJACAgBISAEhIAQEAJCQAjUHQIibOvulSpDQkAICAEhIASEgBAQAkJACAgBISAEhIAQEAJCQAjUKgIibGv1zSndQkAICAEhIASEgBAQAkJACAgBISAEhIAQEAJCQAjUHQLt6i5HypAQEAJCQAgIASEgBISAECgAgTlz5rjffvvNP9m2bdsCQqjdR2bPnu0T36ZNGzfPPJXV6ZgyZYqbNGmS+/HHH93SSy/tunTpUrtAKuVCQAgIASEgBISAECgBApXtjZUgwQpCCAgBISAEhIAQEAJCoDYQ+HXWb+6XX2Y3+c2aPSdj4mdH9+PPEE4l5LbbbnN9+/Z1p59+eiWiq6o4hg4d6vN+zjnnVCxdkydPdr///e/dGmus4bbccku3xx57uMcff7xi8SsiIVBKBF4d+YZ77Ikn3YiXX00b7DffTPR+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np52LHMmvsjKTgCTii37Skg6VvbeqAciQASIQPUj8NNPP4Gnpyd06NAB5B61gYGB8Mcff0gTro43KKXJ0QoRIAJEgAgQASJABIgAESACRIAIaEyABFuNUVFFIkAEiAARIAKVTyAiIgIePnwIR44cAV1dXTA2NmYZklMhOztbmsyQIUN4uVRAK0SACBABIkAEiAARIAJEgAgQASJQYwnQM+Q19tTRxIkAESACROBFINC6dWswMDDgh4oibWJioiTWmpmZwYQJE8Db2/tFQEHHSASIABEgAkSACBABIkAEiAAReCEIkIftC3Ga6SCJABEgAkSgphJ45ZVXAF+YVAzF2rS0NKhTpw5YWVmBqalpTT0smjcRIAJEgAgQASJABIgAESACRIAIFEKABNtCwFAxESACRIAIEIHqRACTilFisep0RmguRIAIEAEiQASIABEgAkSACBCBiiFAIREqhiv1SgSIABEgAkSACBABIkAEiAARIAJEgAgQASJABIgAESgxARJsS4yMGhABIkAEiAARIAJEgAgQASJABIgAESACRIAIEAEiQAQqhgAJthXDlXolAkSACBABIkAEiAARIAJEgAgQASJABIgAESACRIAIlJgACbYlRkYNiAARIAJEgAgQASJABIgAESACRIAIEAEiQASIABEgAhVDgJKOVQxX6pUIEAEiQASIABEgAkSACBABIkAEKphAcHBwBY9A3RMBIkAEiAARqHwCJNhWPnMakQgQASJABIgAEajBBHJzcyEvLw+0tLRAW5seVqqIU4l8kTOajo5ORQxBfRIBIkAEiAARIAJEgAgQgWpLgATbantqaGJEgAgQASJABIhAdSTw9ttvg4+PDyxbtgzGjBlTHadY4+fk5+cHo0aNAldXVzh69CiJtjX+jNIBEIGKI9CoUaOK65x6JgJEgAgQASJQRQTILaSKwNOwRIAIEAEiQATKQsDf3x/u3r0LAQEBZemG2paQwOXLl7lYa2xsDIMGDSph68KrX7oSB05OO6Blm/2FV3qB9rRu3Ro8PDwgNDQUduzY8QIdOR0qESACRIAIEAEiQASIABEAIMGW/hcQASJABIgAEahhBK5fvw4bN26ELVu2wKZNm2rY7Gv2dL/55ht+AG+88QagaFtelp0tPP6f8TynvLqs8f1MnTqVHwN6MqelpdX446EDIAJEgAgQASJABIgA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ARVrXk/TJBm7ffu2FQf37bfftpKP3bx5Mzbg4BxJgARIgARIgARIwGMI+ObIqhOpFS6U32PGxIGQAAnEDAIMiRAz1pGzIAESIAESiKEEEKsWZgTb+fPn60zGJUuWlJw5c8qLKvsw6hhhN4Zi4LRIgARIgARIgARIwOMIVKxQTrDRSIAESCCiCdDDNqKJsj8SIAESIAESiEACJuSBzmR87Jjs3btXZQ5OKPXr19d3QVZhGBJn0EiABEiABEiABEiABEiABEiABLyfAAVb719DzoAESIAESCAGE0CyMdjff/8tM2fO1MdNmjTRoi1O7t69q68hni2NBEiABEiABEiABEiABEiABEjA+wlQsPX+NeQMSIAESIAEYjCBpEmT6tkdOHBAhz7IkyePFCpUyJrxvXv39DEFWwsJD0iABEiABEiABEiABEiABEjAqwlQsPXq5ePgSYAESIAEYjqBlClTWlNEeITGjRtb55cuXRITEsFez6rAAxIgARIgARIgARIgARIgARIgAa8jQMHW65aMAyYBEiABEohNBIoXL25Nt2rVqmL3pN23b59VVqBAAeuYByRAAiRAAiRAAiRAAiRAAiRAAt5LgIKt964dR04CJEACJOCFBB48eCB37tzRm4k/i2ncvn3buo4EY8by5ctnxavdsmWL3L9/XxfBu3bFihX6OH/+/PLiiy+aJtyTAAmQAAmQAAmQAAmQAAmQAAl4MYF4Xjx2Dp0ESIAESIAEvI7AuHHj5MyZM0HG/c0331jXGjZsKGXLltXnCINQv359mT17tgQEBEi/fv3Ex8dHJyFDhXjx4knt2rWttjwgARIgARIgARIgARIgARIgARLwbgIUbL17/Th6EiABEiABLyPwwgsvhHnEJUuWFAi3c+bMkUePHllibfLkyaVjx46SNm3aMPfJBiRAAiRAAiRAAiRAAiRAAiRAAp5J4IVbt27965lD46hIgARIgARIIOII+Pv7686KFi0acZ1GQ0/Xrl0TbJkyZZLEiRO7PYLdu3fHiPm7PWFWJAESIAESiNEEzO+1GD1JTo4ESIAESCDWEqCHbaxdek6cBEiABEjAGwmkSpVKsNFIgARIgARIgARIgARIgARIgARiJgEKtjFzXTkrEiABEiABEiABEiABEiABEojxBHx9fWP8HDlBEiABEiCB2EcgTuybMmdMAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAp5JgIKtZ64LR0UCJEACJEACJEACJEACJEACJEACJEACJEACJBALCVCwjYWLzimTAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAl4JgEKtp65LhwVCZAACZAACZAACZAACZAACZAACZAACZAACZBALCRAwTYWLjqnTAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIk4JkEKNh65rpwVCRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAArGQAAXbWLjonDIJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkIBnEqBg65nrwlGRAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAnEQgIUbGPhonPKJEACJEACJEACJEACJEACJEACJEACJEACJEACnkkgnmcOi6MiARIgARIgARIgARIgARIgARIgAe8lcPvOHTl61F8OHDkqBw8dlevXb0i6dGklfbo08srLZaRA/rwuJ/f3zZuycdNWXVatSiVJkCCBy3ruXLx67bps3bZDV61ZvarEiRO5PlvLV/8hjx8+khLFiui5hjbG7Tt2y+UrVyRVypRSpnSJ0Krr8r37DsjZc+clW9YswTJ0qyNWIgESIAEPJkDB1oMXh0MjARIgARIgARIgARIgARIgARLwPgI7du2R3p8Pktt37zoOfv9BfT5t1lwpUjC/9PzgHcmRPZtDnYsXL8ugYSP1tQrlyz6XYHvm7Dmrr+cVfx0GGczJgMEjdMmQr/q4JdhO+2WubFeswMJdwXb67HmyYfM2adqo3nMJtus3b5WbNwMkby5f8c2ZPZgZ8TIJkAAJRA8BCrbRw513JQESIAESIAESIAESIAESIAESiGEE/v33X/nv/IUyatxka2YFlSdtsSIFJUPatHJJeZOu/nO9nLtwUfYo8bb7J/1krN9QyZgxvVWfB1FDYMr02XLw8FHp3K4lBduoQc67kAAJhIEABdswwGJVEiABEiABEiABEiABEiABEiABEgiOwEbltWnE2pQ+ycVv6IAgHrQd2rSQRb/9Lt+N/FGu/31TPv38a5n606jguuR1JwItmjSUWjWqSvYsmZ1KeEoCJEACMYdA5AawiTmcOBMSIAESIAESIAESIAESIAESIIEYQmDChAkRPpMnT57IjxOn6n4h1o4fNSyIWItCxJGt9+br0r51c133xKkzcvjoMX3Mj9AJFC5UQKpUrOCSbeitWYMESIAEvIMAPWy9Y504ShIgARIgARIgARIgARIgARIggQgicOLECYFoW61aNcmRI0eE9Lr2r40C8RXWrmUzSZc2TYj91n29ukycMkPXWbN2veTNnSvE+qZwo4rf+tfGLXLg0GG5cOGSfp0/f97cUvO1KpI7V05TLcj+8eMnMluFa9i5a59KgnZYXnzxRSmE2LElikr1apXlhRdeCNLm8pWr8utvy2XL9h1y+vRZHZM3berUUrJ4Ealfp9ZzxZANcjM3L8yet0AOHT4m5cqUlBpqzsZOKvbzf10iu/bs1esA0TxDhvRSuWJ5eaPWa5I0SRJd9Vu/MXJHJYTDfGDLV/0h/sdPSty4caRvr4/0NfOBPhcqb+j9Bw/p+uBVolhhqfxKeYcwFv/8c1uG/TBWN+vZvavs339I1qzbIDt375W/lRd1Lt+cyiu4irxR8zWXnG/984/M+d9i2afCZBw4eFiyZs0spRTj8io5XaEC+cxw9N5v9DgVe/eWtG3VTFKoOS5bsUa27dglFy5esjy1t27fKYuWrpAjKukdwm9gzXJkz6p4vSrVXq2o5hrXoU+ekAAJeB4BCraetyYcEQmQAAmQAAmQAAmQAAmQAAmQQCQTMKJt1apVtXD7vLf7a+Nm3UViJYTahcTg+k2ZMoXMnzlRIKQmTJgwuGrW9Xv378toFRt3weKl1jUcIBYuttnzf5UPu3aUBvXrOJSbk569v9D1zLkoIRFi3u8r18imbTvlkw/flUS2cUDEfPfDT4MkTrt89aosXbFabz98+7UUL1rY6jIqDnbs2quTjqVOnVJqSKBgu33Hbun+aX+H2yPcBLb9SgDFHEd+N0iSJEksq9asdZgTRHYjtNsF28XLVsiQ4Y6hKjZv2yHYps74r4zxGyI5cwQmjHv48KGs/GOdvn++fLll1I+THMaye99+wXby5Gl5r0t7hzIItP0GDBVwNYbYutim/TJPvvishyBhnLFly9fo8depVV2G//CjTtqGskxKnIZNmTlbJvw8Ux+bD/SNDWPfsXOv9ProPZfCsanPPQmQQPQToGAb/WvAEZAACZAACZAACZAACZAACZAACUQTgdWrVwvE2+f1tj15KtBjs4TyjHzxxURuzSaN8nx0136e/osl1hYtVFBaNmsoadOkFn8lAo4d/7MW5EaM+UlSp00tlcq/HKRbiLoQ9eCZmStHdrl0+bL8b9Ey2bR1u6xY/afAI9UuJvb/eqgWBnG9edNGUkglT0uePJnsUF6jQ0eM1v3DizOqBdsgE1MXho8apy9jft2UIAoh9bbyol224g+BR+4xJT5D6G6h5vF5754SoDxaRyix8/bdu1KlUgWpUK6MxFOhKoztUeKqEWtfLl1SmjaqJxDYjyqP1dHjJ2shuGv3XjJj8lhJpa7bDWItxtGlfSvJkjmTHDh8ROYoMR2iMET1xg3r6XVDm4Bbt+SjTz/X40Cbzh1aSY6sWfXaTJw6S4u2X3wzTHySJ5eSyhPabpjz6bPnBF8QlCtbSns7X79+wxJrMe5WzRpJGvWMXFbJ7qbNmqfX+rffV0od5d3t7Llr75vHJEAC0U+Agm30rwFHQAIkQAIkQAIkQAIkQAIkQAIkEI0Entfb9t9//5XDx/z1DDKmT+dyJruU0Pnw0SOXZfBsRWzW4Ayvu8+YPV8XVyxfVgb062W91p4jezYpW6q4tOn0gRZtxygv3HJlSkn8eI5/7kMQHPv9UP0aPTryzZldyipR76vBw2X1n385iIlXlDcmxEDYl30+lmI2L9pMGTOoUAwXtfcnvEOj2wICblljbdywrhZfzZje65xDrt+4oQVpeOZCsIW4CZu3YLEWRPOoMBI1q1XW1/Dx+PFj+e77wPAGlSqUk6/797K8UXNkyyoliheVFu26apF1mfI0bq6SoNkNAveE0cO1Ny+ug3OWTBmlW88+utrR4ycswXbS1JmWKD5xzAhJnPglXSd7tixSqkQxeV+1gdA+a+6CIIIt1qe8mkvvnh9oIR0N16tQGcYgGOPesPTp0so3X+aThm+31WLzzj37KNhqMvwgAc8l4PgvuOeOkyMjARIgARIgARIgARIgARIgARIggUglEF5vW8QgNeajBDtX9mn/gVqcc1UGMfWXKYFeoq7KEbPW2Hud2llirbmG+KzdurSTfsorFmEO4AlaQHnE2q2F8rZEzFO7IZZp57YttWCL6wjr0KDuG5IgfgL58L1OuqpzP0+UOH356nVd9vChawFaF0bRR5KkSbR3MMIfzFvwmyCeb/68eay7f/BOB2nZtKHEjx/fuhbSwSkV29aESOjUtrkl1po2qVOlVB7HDWX85Okyf+GSIIItvJEResFuRQoX1J6w8Oi9cS2QHcoR3gDWsU1zS6zVF9QH1gaia9ePPtOhDC5euqyFV1OOfZ+Pu0uyZEmtS9lU7FtjE5UYjDU0Xtzx4sWV8SO/kztqDEmTPmtj6nNPAiTgWQQo2HrWenA0JEACJEACJEACJEACJEACJEAC0UjAeNt26NDB7YRkSRI/E+guX7nmcvSZlZflDSUq2u327dvBirj2emfOntenWdUr9hkzBsYqtZfjGKEYjJ05fyGIYItX5F0Z+suhPDohUp45e0FXQegDCLcwiNF7lZfnqTMQMk/rGKjG+1ZXiOaPOCpZWt03asrPKq4sxtWp28c6JEHpksVVUrV8UlJ5B8ML2V07dfasVXXKzDkSxxYqwRScVixgiAsLAdRuuZ56tdqvYYwQ8iHYImYx7JoKX4Bz2OLfV8mufQf1sf3j7t171imSpMFT1hhi2NrFWlzHM1ZQCfWI27tuw2a9QcBGojSE0ShSuICks/Vh+uKeBEjA8whQsPW8NeGISIAESIAESIAESIAESIAESIAEopnA8ePH3RZsIepBGEOiKCPmOQ9/wpjhzpdk4pQZWmgMUuB0AfFmYRmCCbeAsmTKaxLxTCECXrhwCZcczNm71l6YNk0aLdievxAo2KLs8NFj8tPkGdq7017XE4/btXpb0is24ydO1a/8w8v4nIpZaxK0IbTB+++0l3Rp04Q6/PPnL1p1ENs3NLt5M8AhWRu8nd0xhLkwBoEVW0h2IyDAoThzpgwO5+bEb+gAmTz1F1mo5o9nwSQwMyE1EI+3Y5sWkiBBAtOEexIgAQ8kQMHWAxeFQyIBEiABEiABEiABEiABEiABEogeAlWrVtUJyMJ6d98c2bU4tn3XHrmkXl93x5PR/8Qpt25jXmFHkqrg7MGDB5bHZgrlIetst2/fCeKRaer8ozx9YcmTBbY7qbxtO7zbQ1+DCPx6zdeUt2peyZQ+vU6ktWbdeispl64UzR8vKA/WN9QYa9eoJidUErZde/fJ7r0HrFAPa9dvFH8VO/bn8T84iKuuhp0ihY91+bOe71vHrg7iqvui/t07jl62ruo6X7ML6O1aNlPPS8hicpGC+R26sI/TXoB4yO90bC0d27aQA4cOya49+wXxe/Fcwn6Zu1B5egdI30+625vxmARIwMMIULD1sAXhcEiABEiABEiABEiABEiABEiABKKHQHjFWoz29RpVZPGyFXrgU2fNlY+7dw1xEggvgNfW3bEsmQO9KeEtee/+fZeiI4RKY3g13tmOHjseJHEV6ty7d8/y7syoEorBlq8KjK2K4ylK5HQWnx/cu48ij7D79x/I+YsXBWEHsmXNIjlzZNMbQjr0eL+L+I3+SScdg9ftoUNHHBKouZpA9izP4sAieZtdWDX1ESbi4sXLyks1vl6L8Ai29vAGuXJmk4rKC9jZkADt+FNRP22a1A7FiHHrbEjAdk0lWXtJiezwJi6CMAhqa/V2Yzl77rz0/mKQ9qT+feUa6fnBOy6fI+c+eU4CJBA9BOJEz215VxIgARIgARIgARIgARIgARIgARLwDAI5cuQQxKytVq1auAcEYey1yhV1+1+X/G6Jt646vH3njnznN8ZVkctrRQoWsK7P+d8i69h+MGnaLOs0l28O69gczJq7QP5VCcOcbaXttf/CTxOVHfU/qasVV/FfncXaJ0+eyOq1G5y7ibbzfQcOSquO3aRFh/fkqi2hFwaEMBGtmv3HGtvfKnyBszkTyZ49qw4tgXrzFy52rq7PBw8bJe26fij9BgxxWe7ORQiupUsU01Xh9epqbRYsXqbvg3sh9EJoNnfhb5rFR59+HqQqRPxGb71pXf/nn0CvausCD0iABDyKAAVbj1oODoYESIAESIAESIAESIAESIAESCAqCcCrNiwJxkIaW5cOrS2xb8jwUcq7c5z2kISnJAxJpDZv3S6tOnSTPSqRl7sG4bRsqRK6+vhJ09Rr7Qvk4aNH+hzenoOHjZQNm7fp8w5t3hYkDXO2zdt2yIAhI+Tvm4GJz9B+5R/rZMhT4RjJqkqWKKqbGW/OI0eOyTEVSsAYBNFB3/rJ7n379SUkTXviQgQ29d3dI3EXPElD2oJLdJY/Xx7rNuBw9eqzpG8IE7F42UqrHHGGjSWIHxjD9dDhY1roBUcYvFNbNW+sj5HIbNqsOdqrGRdQZ/6vvwlCLMBq1aiq9+H96ND6bd0Uz8IXg76TGzf+1ucY9/Ydu+UntdYwJIxLmTKFPg7po+jTsAlgNW7SVP28mfpIeLdyzTp9mjZ1akmdKqUp4p4ESMADCTAkggcuCodEAiRAAiRAAiRAAiRAAiRAAiQQ+QSeJwSCq9HhNfRJP/pp8Q3hC+YtXKI31IVIdvnqVatZjmxZtMfjt2562n74Xifp8dkXglf7R4+frLdMGdLrc9NpyWJFpEmDeubUYY9YtEiihc15LCj7qFtnq/4r5coIvISRtKptl+6SNXMm+UeJldeV6AfD2E+oOLcof6tJaxk/aphbCb2sGzgdHDt+Ulp3DjleLMYwY1JQr2QIrJ3atRQI2RCl33q7nR4vwhWgX2M1X6vi4C2cNWtGLTxDfDUC7LrlC3X1BvXekA2btuny8ZOnCzZnZogp27BuHdN9uPYFlEj+duO3ZOZ//6fj7a7+8y9J6ZPc4oxOsTZYe3esWNFCUr5sKS3eT/9lnmDDWj1+/ETsgnfbVk3d6Y51SIAEopEAPWyjET5vTQIkQAIkQAIkQAIkQAIkQAIkEPUEINQOHDjwuUIgBDfqjEpEHT38G2mjvDQhMhozYi0EuLq1a2qR8/XqgR6aEBeN2WOTxo3zLE5pJhVfFmJw/TqvW168EG9hEBPfUd69wwd/KYkSJTJdSTxbnNMxfkO0pyYKzVhwXOHlMjJdCaF5cvniVFs5JfohxinGCoPYB7EWYmL3dzvJ5B+/F4jFMFx/9NTbV19QH/Y5mGsRvY8X75n/WcumjaSXihlsxoTxGrEWY4bX8Wc9ujkMoWXT/1ghCRwK1AkSd33/7QBp37q5njPK7cxaNG0oQwb0k4QJA71048Z7tk5hnfs7HdrIoM8/tZ4VI4rjnlVffUXGjx4meKacLZ7tnqYM9/6i98fSUo3PrB2EdSPW5lVrPKDvJ1KnVnXThHsSIAEPJfDCrVu3nEO2eOhQOSwSIAESIAESCD8Bf39/3bho0cBX/cLfk3e23L17d6yev3euGkdNAiRAAiQQHAHze83X95nIGFzd6L5++/YdHVYAMUNzZMsq6TOk0wmynndcePX/yrVrgtikSZMkcbs7JKY6r4TeF19MpNuGJDAibMKlS5cFbTIo0dCegAthHhAuAV7FPsmTu33/yKyI8AzXr9+Qa9eviyilw0eJtWlSp5I4cZ7PVw3xYyGO+yRLJmnSppb4NrE4IueDBHAQV+PHjy8Z0qV1EN/Dep9Hjx6rUA/XNI+ESoBOmcJHUqiNRgIk4B0EKNh6xzpxlCRAAiRAAs9JgIItBdvnfITYnARIgARIwIMIeJNg60HYOBQSIAESIAEvIfB8XzN5ySQ5TBIgARIgARIgARIgARIgARIgARIgARIgARIgARLwBgIUbL1hlThGEiABEiABEiABEiABEiABEiABEiABEiABEiCBWEGAIRFixTJzkiRAAiRAAiYkAkmQAAmQAAmQAAnEHALeEMM25tDmTEiABEiABKKKAD1so4o070MCJEACJEACJEACJEACJEACJEACJEACJEACJEACoRCIF0o5i0mABEiABEggRhGgJ06MWk5OhgRIgARIIJYS4JszsXThOW0SIAESiCUE6GEbSxaa0yQBEiABEiABEiABEiABEiABEiABEiABEiABEvB8AhRsPX+NOEISIAESIAESIAESIAESIAESIAESIAESIAESIIFYQoCCbSxZaE6TBEiABEiABEiABEiABEiABEiABEiABEiABEjA8wlQsPX8NeIISYAESIAESIAESIAESIAESIAESIAESIAESIAEYgkBCraxZKE5TRIgARIgARIgARIgARIgARIgARIgARIgARIgAc8nQMHW89eIIyQBEiABEiABEiABEiABEiABEiABEiABEiABEoglBCjYxpKF5jRJgARIgARIgARIgARIgARIgARIgARIgARIgAQ8n0A8zx8iR0gCJEACJEACJEACJEACJEACJEACQQn4+/sHvcgrJEACJEACJODlBOhh6+ULyOGTAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAnEHAL0sI05a8mZkAAJkAAJkAAJkAAJkAAJkECsIuDr6xur5svJkgAJkAAJxA4C9LCNHevMWZIACZAACZAACZAACZAACZAACZAACZAACZAACXgBAQq2XrBIHCIJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkEDsIEDBNnasM2dJAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiTgBQQYw9YLFolDJAESIAES8C4Cq1atkhMnTugNI69atapUq1bN5SRQd/Xq1bosR44ceo+65thlI14kARIgARIgARIgARIgARIgARKIsQToYRtjl5YTIwESIAESiGoCEGn79OmjBVgcGzOCrDm37+1lRuSdMGGCJfba6/KYBEiABEiABEiABEiABEiABEgg5hOgh23MX2POkARIgARIIIoIwFvW2eBdG5Kh3Ai19noQbQcOHGi/FO3HAQEBsmXLFj2OUqVKiY+PT6hjunnzpmzdulXXq1SpkiRIkCDUNtFZ4fjx43Lr1i0pVKiQxI0bN1KGcv/+ffH39xfcC/vLly9LqlSpJEOGDFK8eHHJly9f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ohNKyhQ+kkJtz2N41fzM2fPy4OEDSa/i4SPBU2QYXs9HqIJrKjxEWhWrOKUS5OI4xXWNjPtGVp9h4fa3CiN1+cpVnXMgS6ZMKvHssy8PEGIDieWQpC2sYifmhuSzVd8IjD/7/dABUkJ5xCKJGBLSIfxCtixZrC8tQmOBsBxX1JtUiI2cVIWt8hRDzobLamzglDRJYhX6I5X2FPeU8XEckUeAIREijy17JgESIAESIAESIAESIAESIAESIIFIJ4AYm5EVZzPSB+/mDSD0pU+XVm9uNgm1GkTC7DZP3FAbhLMCYsanU2PHFhMsLNwQhsAeisA+f3iSmtjD9uvPcwzv81w5w54kDEn/sHmaIccBku7RYh8BhkSIfWvOGZMACZAACZAACZAACZAACZAACZAACZAACZAACXgoAQq2HrowHBYJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkEDsI8CQCLFvzTljEiABEiABEiABEiABEiABEiABEiABEvBqAgjNUKVSBXnw4GGkxR/2akAcvFcToGDr1cvHwZMACZAACZAACZAACZAACZAACZAACZBA7CMQJ04c+arvJ7Fv4pxxrCDAkAixYpk5SRIgARIgARIgARIgARIgARIgARIgARIgARIgAW8gQMHWG1aJYyQBEiABEiABEiABEiABEiABEiABEiABEiABEogVBCjYxopl5iRJgARIgARIgARIgARIgARIgARIgARIgARIgAS8gQAFW29YJY6RBEiABEiABEiABEiABEiABEiABEiABEiABEggVhD4P8cib/mS6MvWAAAAAElFTkSuQmCC"/><use stroke="#7E7C7B" xlink:href="#rect-1"/></g><g id="2" fill="#C06334" fill-rule="nonzero"><use filter="url(#filter-3)" xlink:href="#text-2"/><use xlink:href="#text-2"/><use xlink:href="#text-2"/></g><g id="1" fill="#C06334" fill-rule="nonzero"><use filter="url(#filter-5)" xlink:href="#text-4"/><use xlink:href="#text-4"/><use xlink:href="#text-4"/></g><g id="3" fill="#C06334" fill-rule="nonzero"><use filter="url(#filter-7)" xlink:href="#text-6"/><use xlink:href="#text-6"/><use xlink:href="#text-6"/></g></g></g></svg> +>>>>>>> 540d753e90789205fc6e75c502f68382c87dea9b diff --git a/1-js/03-code-quality/01-debugging-chrome/head.html b/1-js/03-code-quality/01-debugging-chrome/head.html index f219b0af1..615326c08 100644 --- a/1-js/03-code-quality/01-debugging-chrome/head.html +++ b/1-js/03-code-quality/01-debugging-chrome/head.html @@ -1,8 +1,8 @@ <style> span.devtools { display: inline-block; - background-image: url(/article/debugging-chrome/toolbarButtonGlyphs.svg); - height:16px; - width:16px; + background-image: url(/article/debugging-chrome/largeIcons.svg); + height:18px; + width:18px; } </style> diff --git a/1-js/03-code-quality/01-debugging-chrome/largeIcons.svg b/1-js/03-code-quality/01-debugging-chrome/largeIcons.svg new file mode 100644 index 000000000..83303365b --- /dev/null +++ b/1-js/03-code-quality/01-debugging-chrome/largeIcons.svg @@ -0,0 +1,1472 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:xlink="http://www.w3.org/1999/xlink" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="224" + height="216" + id="svg2" + version="1.1" + inkscape:version="0.92.2pre0 (973e216, 2017-07-25)" + sodipodi:docname="largeIcons.svg"> + <metadata + id="metadata606"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + </cc:Work> + </rdf:RDF> + </metadata> + <defs + id="defs604" /> + <sodipodi:namedview + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1" + objecttolerance="10" + gridtolerance="10" + guidetolerance="10" + inkscape:pageopacity="0" + inkscape:pageshadow="2" + inkscape:window-width="1946" + inkscape:window-height="1546" + id="namedview602" + showgrid="true" + inkscape:zoom="4.3703705" + inkscape:cx="92.781028" + inkscape:cy="118.13064" + inkscape:window-x="1047" + inkscape:window-y="228" + inkscape:window-maximized="0" + inkscape:current-layer="svg2" + inkscape:snap-grids="true" + showguides="true" + inkscape:guide-bbox="true"> + <inkscape:grid + type="xygrid" + id="grid3583" + empspacing="5" + visible="true" + enabled="true" + snapvisiblegridlinesonly="true" + spacingx="28" + spacingy="24" + originx="0" + originy="0" /> + </sodipodi:namedview> + <g + id="g4"> + <g + transform="translate(-322,-72)" + id="g8"> + <circle + transform="translate(326,74)" + cx="15" + cy="17" + r="3" + id="circle10" + sodipodi:cx="15" + sodipodi:cy="17" + sodipodi:rx="3" + sodipodi:ry="3" + style="fill:#009802" /> + <path + d="m 329,77 h 18 v 18 h -18 z" + id="path12" + inkscape:connector-curvature="0" + style="fill:none" /> + <path + d="m 327.25,75.25 h 20 v 20 h -20 z" + id="path14" + inkscape:connector-curvature="0" + style="fill:none" /> + <path + d="m 325.12,73.125 h 20 v 20 h -20 z" + id="path16" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + </g> + <g + transform="translate(26,0)" + id="g18"> + <path + transform="translate(-32,0)" + d="M 57,12 53.5,8 H 39 v 8 h 14.5" + id="path22" + inkscape:connector-curvature="0" /> + </g> + <g + transform="translate(-2.003,24)" + id="g24"> + <path + transform="translate(-224,-120)" + d="m 240.77,127 h -1.534 v 4.233 h -4.233 v 1.534 h 4.233 V 137 h 1.534 v -4.233 h 4.233 v -1.534 H 240.77 V 127 z" + id="path28" + inkscape:connector-curvature="0" /> + </g> + <g + transform="translate(26,24)" + id="g30"> + <path + transform="translate(-96,-145)" + d="m 103,148 h 18 v 18 h -18 z" + id="path34" + inkscape:connector-curvature="0" + style="fill:none" /> + <path + transform="translate(-96,-145)" + d="m 115.42,154.7 -6.705,-6.705 -1.0575,1.0575 1.785,1.785 -3.8625,3.8625 c -0.4425,0.4425 -0.4425,1.155 0,1.59 l 4.125,4.125 c 0.2175,0.2175 0.51,0.33 0.795,0.33 0.285,0 0.5775,-0.1125 0.795,-0.33 l 4.125,-4.125 c 0.4425,-0.435 0.4425,-1.1475 0,-1.59 z m -8.5125,0.795 3.5925,-3.5925 3.5925,3.5925 h -7.185 z m 10.342,1.125 c 0,0 -1.5,1.6275 -1.5,2.625 0,0.825 0.675,1.5 1.5,1.5 0.825,0 1.5,-0.675 1.5,-1.5 0,-0.9975 -1.5,-2.625 -1.5,-2.625 z" + id="path36" + inkscape:connector-curvature="0" /> + <path + transform="translate(-96,-145)" + d="m 103,163 h 18 v 3 h -18 z" + id="path38" + inkscape:connector-curvature="0" + style="fill-opacity:0.36000001" /> + </g> + <g + transform="translate(0,48)" + id="g40"> + <path + transform="translate(7,3)" + d="M 0,0 H 18 V 18 H 0 z" + id="path44" + inkscape:connector-curvature="0" + style="fill:none" /> + <path + transform="translate(7,3)" + d="m 13,5 h 1.4936 C 15.32558,5 16,5.67154 16,6.5064 v 7.9871 c 0,0.83198 -0.67154,1.5064 -1.5064,1.5064 H 6.5065 c -0.83198,0 -1.5064,-0.67154 -1.5064,-1.5064 v -1.4936 h 6.4936 c 0.8349,0 1.5064,-0.67446 1.5064,-1.5064 V 4.9999 z" + id="path46" + inkscape:connector-curvature="0" + style="fill-opacity:0.36000001" /> + <path + transform="translate(7,3)" + d="M 3.5,2 C 2.669,2 2,2.669 2,3.5 v 8 C 2,12.331 2.669,13 3.5,13 h 8 c 0.831,0 1.5,-0.669 1.5,-1.5 v -8 C 13,2.669 12.331,2 11.5,2 h -8 z m 0,1.5 h 8 v 8 h -8 v -8 z" + id="path48" + inkscape:connector-curvature="0" + style="fill:#212121" /> + </g> + <g + transform="translate(26,48)" + id="g50"> + <path + transform="translate(-96,-24)" + d="m 107,33 h 8 v 6 h -8 z" + stroke-miterlimit="4.2" + id="path54" + inkscape:connector-curvature="0" + style="stroke:#000000;stroke-width:2;stroke-miterlimit:4.19999981" /> + <path + transform="translate(-96,-24)" + d="m 115,36 4,-4 v 8" + id="path56" + inkscape:connector-curvature="0" /> + </g> + <g + transform="translate(54,0)" + id="g58"> + <g + id="g62" + style="stroke:#000000"> + <path + transform="matrix(0.36,0,0,0.36,-2.5,7.46)" + d="m 53,14 a 3,3 0 1 1 -6,0 3,3 0 1 1 6,0 z" + id="path64" + inkscape:connector-curvature="0" + style="fill-rule:evenodd;stroke-width:2.77800012" /> + <path + transform="translate(-128,-120)" + d="m 143.48,129.5 2.5403,-2 h -1.5242 v -2 h -2 l -0.0161,2 h -1.5403 z" + id="path66" + inkscape:connector-curvature="0" /> + <path + transform="translate(-128,-120)" + d="m 146.5,132.5 2,2.5 v -1.4998 l 2,-1e-4 v -2.0002 l -2,1e-4 V 130 z" + id="path68" + inkscape:connector-curvature="0" /> + <path + transform="translate(-128,-120)" + d="m 143.5,135.5 -2.5,2 h 1.5 v 2 h 2 v -2 h 1.5 z" + id="path70" + inkscape:connector-curvature="0" /> + <path + transform="translate(-128,-120)" + d="m 140.5,132.5 -2,-2.5 v 1.4999 h -2 v 2.0002 l 2,-3e-4 V 135 z" + id="path72" + inkscape:connector-curvature="0" /> + </g> + </g> + <g + transform="translate(56,24)" + id="g74"> + <g + id="g78" + style="fill-rule:evenodd"> + <path + transform="matrix(0.9018,0,0,0.9018,4.308,4.525)" + d="M 0,0 H 18 V 18 H 0 z" + id="path80" + inkscape:connector-curvature="0" + style="fill:none" /> + <path + transform="matrix(0.9018,0,0,0.9018,4.308,4.525)" + d="M 4.174,8.343 2.76,9.757 7.003,13.999 15.488,5.514 14.074,4.1 7.003,11.171 z" + id="path82" + inkscape:connector-curvature="0" /> + </g> + </g> + <g + transform="translate(57,47)" + id="g84"> + <path + transform="translate(-68,-143)" + d="M 76.94,152 76,152.94 79.0533,156 76,159.06 l 0.94,0.94 4,-4 z" + id="path88" + inkscape:connector-curvature="0" /> + <path + transform="translate(-68,-143)" + d="M 80.94,152 80,152.94 83.0533,156 80,159.06 l 0.94,0.94 4,-4 z" + id="path90" + inkscape:connector-curvature="0" /> + </g> + <g + transform="translate(-2,72)" + id="g92"> + <path + transform="translate(-64,0)" + d="m 80.44,16.94 c -2.48,0 -4.5,-2.02 -4.5,-4.5 0,-0.88 0.26,-1.7 0.69,-2.39 l 6.2,6.2 c -0.69,0.44 -1.51,0.69 -2.39,0.69 m 4.5,-4.5 c 0,0.88 -0.26,1.7 -0.69,2.39 l -6.2,-6.2 c 0.69,-0.44 1.51,-0.69 2.39,-0.69 2.48,0 4.5,2.02 4.5,4.5 M 80.5,6 C 76.91,6 74,8.91 74,12.5 74,16.09 76.91,19 80.5,19 84.09,19 87,16.09 87,12.5 87,8.91 84.09,6 80.5,6" + id="path96" + inkscape:connector-curvature="0" /> + </g> + <g + transform="translate(28,72)" + id="g98"> + <g + id="g102" + style="fill-rule:evenodd"> + <path + transform="matrix(0.87153,0,0,0.87153,4.071,4.568)" + d="M 0,0 H 18 V 18 H 0 z" + id="path104" + inkscape:connector-curvature="0" + style="fill:none" /> + <path + transform="matrix(0.87153,0,0,0.87153,4.071,4.568)" + d="M 12,3.5 A 1.505,1.505 0 0 0 10.494,2 H 4.506 C 3.676,2 3,2.674 3,3.506 v 7.988 C 3,12.326 3.671,12.997 4.5,13 V 3.5 H 12 z M 6,6.506 C 6,5.674 6.676,5 7.506,5 h 5.988 C 14.326,5 15,5.672 15,6.506 v 7.988 C 15,15.326 14.324,16 13.494,16 H 7.506 A 1.505,1.505 0 0 1 6,14.494 V 6.506 z M 7.5,6.5 h 6 v 8 h -6 v -8 z" + id="path106" + inkscape:connector-curvature="0" /> + </g> + </g> + <g + transform="translate(54,72)" + id="g108"> + <path + transform="translate(0,-24)" + d="M 25,36 21.36,32 H 19.57 L 14,40 h 7.36 L 25,36 z" + id="path112" + inkscape:connector-curvature="0" /> + <path + transform="translate(0,-24)" + d="m 7,32 v 8 H 9.05 L 14,32 H 7 z" + id="path114" + inkscape:connector-curvature="0" /> + <path + transform="translate(0,-24)" + d="M 9.67,44.55 8.08,43.23 18.84,27.45 20.43,28.77 9.67,44.55 z" + id="path116" + inkscape:connector-curvature="0" /> + <path + transform="translate(0,-24)" + d="M 0,24 H 24 V 48 H 0 z" + id="path118" + inkscape:connector-curvature="0" + style="fill:none" /> + <path + transform="translate(0,-24)" + d="M 0,24 H 24 V 48 H 0 z m 0,0 H 24 V 48 H 0 z m 0,0 H 24 V 48 H 0 z m 0,0 H 24 V 48 H 0 z" + id="path120" + inkscape:connector-curvature="0" + style="fill:none" /> + <path + transform="translate(0,-24)" + d="M 0,24 H 24 V 48 H 0 z" + id="path122" + inkscape:connector-curvature="0" + style="fill:none" /> + <path + transform="translate(0,-24)" + d="M 0,24 H 24 V 48 H 0 z" + id="path124" + inkscape:connector-curvature="0" + style="fill:none" /> + <path + transform="translate(0,-24)" + d="M 0,24 H 24 V 48 H 0 z" + id="path126" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(82,0)" + id="g128"> + <path + transform="translate(-128,0)" + d="M 149,8.33 147.67,7 144,10.67 140.33,7 139,8.33 142.67,12 139,15.67 140.33,17 144,13.33 147.67,17 149,15.67 145.33,12 149,8.33 z" + id="path132" + inkscape:connector-curvature="0" /> + </g> + <g + transform="translate(82,24)" + id="g134"> + <path + transform="translate(-32,-24)" + d="M 53,37 H 43 v -5 h 10 v 5 z M 41,42 H 55 V 30 H 41 v 12 z" + id="path138" + inkscape:connector-curvature="0" /> + </g> + <g + transform="translate(82,48)" + id="g140"> + <path + transform="translate(-224,-48)" + d="m 238,64 h 7 v -8 h -7 z m 9,2 H 233 V 54 h 14 z" + id="path144" + inkscape:connector-curvature="0" /> + </g> + <g + transform="translate(82,72)" + id="g146"> + <path + transform="translate(-256,-48)" + d="m 274,64 h -7 v -8 h 7 v 8 z m -9,2 h 14 V 54 h -14 v 12 z" + id="path150" + inkscape:connector-curvature="0" /> + </g> + <g + transform="translate(-2,96)" + id="g152"> + <path + transform="translate(-160,0)" + d="m 169,16.089 v 2.9105 h 2.9105 L 180.1944,10.7156 177.2838,7.8051 169,16.089 z m 13.769,-7.9387 c 0.30785,-0.30785 0.30785,-0.79294 0,-1.1008 l -1.8191,-1.8191 c -0.30785,-0.30784 -0.79295,-0.30784 -1.1008,0 l -1.5206,1.5299 2.9105,2.9105 1.5299,-1.5206 z" + id="path156" + inkscape:connector-curvature="0" /> + </g> + <g + transform="translate(26,96)" + id="g158"> + <path + transform="translate(-288,-120)" + d="m 310.77,127.04 -1.816,-1.8164 c -0.30331,-0.30338 -0.79716,-0.30338 -1.1005,0 l -2.4304,2.4309 -1.4894,-1.4935 -1.1005,1.1007 1.1044,1.1046 -6.9373,6.9348 v 3.695 h 3.6942 l 6.9373,-6.9387 1.1005,1.1046 1.1005,-1.1007 -1.4932,-1.4935 2.4304,-2.4309 c 0.3072,-0.30338 0.3072,-0.79345 0,-1.0968 z m -10.721,10.4 -1.4932,-1.4935 6.2724,-6.2736 1.4932,1.4935 -6.2723,6.2736 z" + id="path162" + inkscape:connector-curvature="0" /> + </g> + <g + transform="translate(54,96)" + id="g164"> + <path + transform="translate(-32,-48)" + d="m 44,59 2,3 v 4 h 4 v -4 l 2,-3 z" + id="path168" + inkscape:connector-curvature="0" + style="opacity:0.5;fill:#424242" /> + <path + transform="translate(-32,-48)" + d="m 46.5,65.23 c 0.32,0.13 0.84,0.24 1.47,0.24 0.59,0 1.14,-0.1 1.53,-0.26 v -3.93 l 4,-4.57 v -0.19 h -11 v 0.22 l 4,4.57 v 3.93 z M 47.97,67 C 46.81,66.91 45.82,66.71 45,66.01 V 61.89 L 41,57.32 V 55 h 14 v 2.35 l -4,4.57 v 4.13 c -0.92,0.67 -2.1,0.94 -3.03,0.95" + id="path170" + inkscape:connector-curvature="0" /> + </g> + <g + transform="translate(82.001,96)" + id="g172"> + <path + transform="matrix(0.75,0,0,0.75,-74.421,-143.43)" + d="m 108.56,195.24 h 24 v 24 h -24 z" + id="path176" + inkscape:connector-curvature="0" + style="fill:none" /> + <path + transform="matrix(0.75,0,0,0.75,-74.421,-143.43)" + d="m 108.56,215.24 h 24 v 4 h -24 z" + id="path178" + inkscape:connector-curvature="0" + style="fill-opacity:0.36000001" /> + <path + transform="matrix(0.75,0,0,0.75,-74.421,-143.43)" + d="m 119.56,198.24 -5.5,14 h 2.25 l 1.12,-3 h 6.25 l 1.12,3 h 2.25 l -5.49,-14 h -2 z m -1.38,9 2.38,-6.33 2.38,6.33 h -4.76 z" + id="path180" + inkscape:connector-curvature="0" /> + </g> + <g + transform="translate(106,1)" + id="g182"> + <path + transform="matrix(0,-1,1,0,-112,-260)" + d="m -278.5,126.5 h 14 v 12 h -14 z" + id="path186" + inkscape:connector-curvature="0" + style="fill:none;stroke:#000000" /> + <path + transform="matrix(0,1,1,0,-112,-260)" + d="m 272,132.5 -5,-3.25 v 6.5" + id="path188" + inkscape:connector-curvature="0" /> + <path + transform="matrix(0,-1,1,0,-112,-260)" + d="m -275,126 h 1 v 13 h -1 z" + id="path190" + inkscape:connector-curvature="0" /> + </g> + <path + style="fill:none;stroke:#000000" + inkscape:connector-curvature="0" + id="path196" + d="m 119.5,30.5 h 14 v 12 h -14 z" /> + <path + inkscape:connector-curvature="0" + id="path198" + d="m 126,36.5 5,-3.25 v 6.5" /> + <path + inkscape:connector-curvature="0" + id="path200" + d="m 123,30 h 1 v 13 h -1 z" /> + <g + transform="translate(111,48)" + id="g202"> + <path + transform="matrix(-1,0,0,1,-192,-120)" + d="m -214.5,126.5 h 14 v 12 h -14 z" + id="path206" + inkscape:connector-curvature="0" + style="fill:none;stroke:#000000" /> + <path + transform="translate(-192,-120)" + d="m 208,132.5 -5,-3.25 v 6.5" + id="path208" + inkscape:connector-curvature="0" /> + <path + transform="matrix(-1,0,0,1,-192,-120)" + d="m -211,126 h 1 v 13 h -1 z" + id="path210" + inkscape:connector-curvature="0" /> + </g> + <g + transform="translate(106,73)" + id="g212"> + <path + transform="matrix(0,1,1,0,-88,283)" + d="m -278.5,102.5 h 14 v 12 h -14 z" + id="path216" + inkscape:connector-curvature="0" + style="fill:none;stroke:#000000" /> + <path + transform="matrix(0,-1,1,0,-88,283)" + d="m 272,108.5 -5,-3.25 v 6.5" + id="path218" + inkscape:connector-curvature="0" /> + <path + transform="matrix(0,1,1,0,-88,283)" + d="m -275,102 h 1 v 13 h -1 z" + id="path220" + inkscape:connector-curvature="0" /> + </g> + <g + transform="translate(110,96)" + id="g222"> + <path + transform="translate(-224,0)" + d="m 237,11 h -4 V 7 h 4 v 4 z" + id="path226" + inkscape:connector-curvature="0" /> + <path + transform="translate(-224,0)" + d="m 247,9 h -9 V 7 h 9 v 2 z" + id="path228" + inkscape:connector-curvature="0" /> + <path + transform="translate(-224,0)" + d="m 247,11 h -9 v -1 h 9 v 1 z" + id="path230" + inkscape:connector-curvature="0" /> + <path + transform="translate(-224,0)" + d="m 247,15 h -9 v -2 h 9 v 2 z" + id="path232" + inkscape:connector-curvature="0" /> + <path + transform="translate(-224,0)" + d="m 237,17 h -4 v -4 h 4 v 4 z" + id="path234" + inkscape:connector-curvature="0" /> + <path + transform="translate(-224,0)" + d="m 247,17 h -9 v -1 h 9 v 1 z" + id="path236" + inkscape:connector-curvature="0" /> + </g> + <g + transform="translate(-2,120)" + id="g238"> + <path + transform="translate(0,-144)" + d="m 23,157 h -2 v 2 h 2 z" + id="path242" + inkscape:connector-curvature="0" /> + <path + transform="translate(0,-144)" + d="m 23,161 h -2 v 2 c 1,0 2,-1 2,-2 z" + id="path244" + inkscape:connector-curvature="0" /> + <path + transform="translate(0,-144)" + d="m 23,153 h -2 v 2 h 2 z" + id="path246" + inkscape:connector-curvature="0" /> + <path + transform="translate(0,-144)" + d="m 21,149 v 2 h 2 c 0,-1 -1,-2 -2,-2 z" + id="path248" + inkscape:connector-curvature="0" /> + <path + transform="translate(0,-144)" + d="m 11,163 h 4 v -6 H 9 v 4 c 0,1.1 0.9,2 2,2 z" + id="path250" + inkscape:connector-curvature="0" /> + <path + transform="translate(0,-144)" + d="M 11,153 H 9 v 2 h 2 z" + id="path252" + inkscape:connector-curvature="0" /> + <path + transform="translate(0,-144)" + d="m 19,149 h -2 v 2 h 2 z" + id="path254" + inkscape:connector-curvature="0" /> + <path + transform="translate(0,-144)" + d="m 19,161 h -2 v 2 h 2 z" + id="path256" + inkscape:connector-curvature="0" /> + <path + transform="translate(0,-144)" + d="m 11,149 c -1,0 -2,1 -2,2 h 2 z" + id="path258" + inkscape:connector-curvature="0" /> + <path + transform="translate(0,-144)" + d="m 15,149 h -2 v 2 h 2 z" + id="path260" + inkscape:connector-curvature="0" /> + </g> + <g + transform="translate(26,120)" + id="g262"> + <path + transform="translate(-290,-46)" + d="m 317,69 v -5 l -5,5 h 5 z" + id="path266" + inkscape:connector-curvature="0" /> + </g> + <g + transform="translate(54,120)" + id="g268"> + <g + id="g272" + style="fill-rule:evenodd"> + <path + transform="matrix(1.4142,0,0,1.4142,-278.88,-36.772)" + d="m 209.92,31.305 a 1.0607,1.0607 0 1 1 -2.1213,0 1.0607,1.0607 0 1 1 2.1213,0 z" + id="path274" + inkscape:connector-curvature="0" /> + <path + transform="matrix(1.4142,0,0,1.4142,-278.88,-31.772)" + d="m 209.92,31.305 a 1.0607,1.0607 0 1 1 -2.1213,0 1.0607,1.0607 0 1 1 2.1213,0 z" + id="path276" + inkscape:connector-curvature="0" /> + <path + transform="matrix(1.4142,0,0,1.4142,-278.88,-26.772)" + d="m 209.92,31.305 a 1.0607,1.0607 0 1 1 -2.1213,0 1.0607,1.0607 0 1 1 2.1213,0 z" + id="path278" + inkscape:connector-curvature="0" /> + </g> + </g> + <g + transform="translate(84,120)" + id="g280"> + <path + transform="translate(-162,-144)" + d="m 166,147 h 18 v 18 h -18 z" + id="path284" + inkscape:connector-curvature="0" + style="fill:none" /> + <path + transform="translate(-162,-144)" + d="m 181.52,154.53 c -0.51,-2.58 -2.7862,-4.5262 -5.5162,-4.5262 -2.1675,0 -4.0462,1.23 -4.9875,3.0262 -2.2538,0.24375 -4.0125,2.1525 -4.0125,4.4738 0,2.4862 2.0138,4.5 4.5,4.5 h 9.75 c 2.07,0 3.75,-1.68 3.75,-3.75 0,-1.98 -1.5412,-3.585 -3.4838,-3.7238 z m -0.26625,5.9738 h -9.75 c -1.6575,0 -3,-1.3425 -3,-3 0,-1.6575 1.3425,-3 3,-3 h 0.5325 c 0.49125,-1.7288 2.0775,-3 3.9675,-3 2.28,0 4.125,1.845 4.125,4.125 v 0.375 h 1.125 c 1.2412,0 2.25,1.0088 2.25,2.25 0,1.2412 -1.0088,2.25 -2.25,2.25 z" + id="path286" + inkscape:connector-curvature="0" /> + </g> + <g + transform="translate(112,120)" + id="g288"> + <path + transform="translate(-226,-72)" + d="m 235,76 c -0.55,0 -0.99,0.45 -0.99,1 L 234,91 c 0,0.55 0.44,1 1,1 h 10 c 0.55,0 1,-0.45 1,-1 V 81 l -5,-5 h -6 z m 6,5 v -4 l 4,4 h -4 z" + id="path292" + inkscape:connector-curvature="0" /> + <path + transform="translate(-226,-72)" + d="m 231,75 h 18 v 18 h -18 z" + id="path294" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(140,0)" + id="g296"> + <path + transform="translate(-162,-24)" + d="m 169,29 h 18 v 18 h -18 z" + id="path300" + inkscape:connector-curvature="0" + style="fill:none" /> + <path + transform="translate(-162,-24)" + d="m 167.25,27.25 h 20 v 20 h -20 z" + id="path302" + inkscape:connector-curvature="0" + style="fill:none" /> + <path + transform="translate(-162,-24)" + d="m 165.12,25.125 h 20 v 20 h -20 z" + id="path304" + inkscape:connector-curvature="0" + style="fill:none" /> + <path + transform="translate(-162,-24)" + d="m 171,28 c -0.55,0 -1,0.45 -1,1 v 14 c 0,0.55 0.44,1 1,1 h 5.0938 c -0.0656,-0.32311 -0.0937,-0.65753 -0.0937,-1 0,-2.7614 2.2386,-5 5,-5 0.34247,0 0.67689,0.02816 1,0.09375 v -5.0938 l -5,-5 h -6 z m 6,1 4,4 h -4 v -4 z" + id="path306" + inkscape:connector-curvature="0" /> + </g> + <g + transform="translate(140,24)" + id="g308"> + <path + transform="translate(-66,-120)" + d="m 71,124 h 18 v 18 H 71 z" + id="path312" + inkscape:connector-curvature="0" + style="fill:none" /> + <path + transform="translate(-66,-120)" + d="m 82,129 -2,-2 h -5 c -0.55,0 -1,0.45 -1,1 v 10 c 0,0.55 0.45,1 1,1 h 12 c 0.55,0 1,-0.45 1,-1 v -8 c 0,-0.55 -0.45,-1 -1,-1 h -5 z" + id="path314" + inkscape:connector-curvature="0" /> + </g> + <g + transform="translate(140,48)" + id="g316"> + <path + transform="translate(-258,-144)" + d="m 278,150 h -10.5 c -0.8325,0 -1.5,0.675 -1.5,1.5 v 9 c 0,0.825 0.6675,1.5 1.5,1.5 H 278 c 0.825,0 1.5,-0.675 1.5,-1.5 v -9 c 0,-0.825 -0.6675,-1.5 -1.5,-1.5 z m 0,10.5 H 267.5 V 153 H 278 v 7.5 z" + id="path320" + inkscape:connector-curvature="0" + style="fill:#010101" /> + <path + transform="translate(-258,-144)" + d="m 262.97,147.07 h 18 v 18 h -18 z" + id="path322" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <g + transform="translate(140,72)" + id="g324"> + <path + transform="translate(6,3.9)" + d="M 9,1 H 3.9954 C 3.45567,1 3,1.45078 3,2.0068 v 11.986 c 0,0.5569 0.44565,1.0068 0.9954,1.0068 h 8.0092 C 12.54433,14.9996 13,14.54882 13,13.9928 V 4.9996 l -4,-4 z m 3,4 H 9 V 2 l 3,3 z M 6,7 11,9.5 6,12 V 7 z" + id="path328" + inkscape:connector-curvature="0" /> + </g> + <g + transform="translate(140,96)" + id="g330"> + <g + id="g334" + style="stroke:#000000"> + <path + transform="matrix(0.72907,0,0,0.72907,5.617,4.598)" + d="M 7.854,6.963 6.877,7.279 6.857,8.617 6.889,8.705 7.398,9.699 6.188,10.578 5.398,9.787 5.326,9.73 4.047,9.336 3.443,10.166 4.213,11.26 4.291,11.313 5.287,11.817 4.824,13.241 3.72,13.065 3.628,13.061 2.362,13.493 v 1.027 l 1.266,0.434 0.092,-0.004 1.104,-0.178 0.463,1.424 -0.996,0.506 -0.078,0.051 -0.77,1.094 0.604,0.83 1.279,-0.393 0.072,-0.059 0.789,-0.791 1.211,0.879 -0.51,0.996 -0.031,0.086 0.02,1.338 0.977,0.316 0.803,-1.068 0.025,-0.09 0.172,-1.104 h 1.498 l 0.172,1.104 0.025,0.09 0.803,1.068 0.977,-0.316 0.02,-1.338 -0.031,-0.086 -0.51,-0.996 1.211,-0.879 0.789,0.791 0.072,0.059 1.279,0.393 0.604,-0.83 -0.771,-1.094 -0.076,-0.051 -0.996,-0.506 0.461,-1.424 1.105,0.178 0.092,0.004 1.266,-0.434 v -1.027 l -1.266,-0.432 -0.092,0.004 -1.105,0.176 -0.461,-1.424 0.996,-0.504 0.076,-0.053 0.771,-1.094 L 15.159,9.336 13.88,9.731 13.808,9.788 13.019,10.579 11.808,9.7 12.318,8.706 12.349,8.618 12.329,7.28 11.352,6.964 10.549,8.034 10.524,8.122 10.352,9.227 H 8.854 L 8.682,8.121 8.656,8.03 7.854,6.963 m 1.748,3.398 a 3.621,3.645 0 0 1 3.621,3.645 3.621,3.645 0 0 1 -3.621,3.646 3.621,3.645 0 0 1 -3.619,-3.646 3.621,3.645 0 0 1 3.619,-3.645 z" + id="path336" + inkscape:connector-curvature="0" /> + <path + transform="matrix(0.72907,0,0,0.72907,5.227,3.617)" + d="M 14.885,1.563 14.178,1.957 14.365,3.24 14.396,3.279 15.14,4.04 14.553,5.03 13.529,4.736 13.479,4.729 12.262,5.172 12.25,5.98 13.455,6.459 13.506,6.453 14.537,6.189 15.1,7.191 14.332,7.932 14.301,7.971 14.08,9.248 14.771,9.662 15.787,8.859 15.807,8.811 16.1,7.787 17.242,7.803 17.502,8.834 17.52,8.883 18.514,9.715 19.219,9.32 19.03,8.04 19,7.998 18.258,7.234 18.844,6.25 19.869,6.541 19.92,6.551 21.14,6.105 21.15,5.297 19.943,4.818 19.893,4.824 18.861,5.088 18.301,4.086 19.07,3.346 19.1,3.307 19.322,2.029 18.627,1.615 17.609,2.418 17.59,2.467 17.303,3.49 16.16,3.475 15.896,2.443 15.879,2.395 14.885,1.563 z m 1.814,2.138 a 1.938,1.938 0 0 1 1.938,1.938 1.938,1.938 0 0 1 -1.938,1.937 1.938,1.938 0 0 1 -1.937,-1.937 1.938,1.938 0 0 1 1.937,-1.938 z" + id="path338" + inkscape:connector-curvature="0" + style="stroke-width:0.89899999" /> + </g> + </g> + <g + transform="translate(138,120)" + id="g340"> + <g + id="g344" + style="fill:none"> + <path + transform="translate(8,4)" + d="M 0,0 H 16 V 16 H 0 V 0 z" + id="path346" + inkscape:connector-curvature="0" + style="opacity:0.5" /> + <path + transform="translate(8,4)" + d="M 6,14 H 3.5 C 2.5,14 2,13.5 2,12.5 v -9 C 2,2.5 2.5,2 3.5,2 h 9 C 14,2 14,3.4678 14,3.5 V 6 H 13 V 3 H 3 v 10 h 3 v 1 z m 9,-5 -3,2 3,3 -1,1 -3,-3 -2,3 -2,-8 8,2 z" + id="path348" + inkscape:connector-curvature="0" + style="fill:#000000" /> + </g> + </g> + <g + transform="translate(0,144)" + id="g350"> + <path + transform="translate(-98,-120)" + d="m 110.5,127.5 h -1 l 2,-2 2,2 h -1 c 0,0 -0.0345,4.6379 -0.0345,4.0345 l 4.0345,-0.034 v -1 l 2,2 -2,2 v -1 l -4.0345,-0.034 0.0345,4.0346 h 1 l -2,2 -2,-2 h 1 l 0.0345,-4.0346 -4.0345,0.034 v 1 l -2,-2 2,-2 v 1 l 4.0345,0.034 z" + id="path354" + inkscape:connector-curvature="0" + style="stroke:#000000" /> + </g> + <g + transform="translate(26,144)" + id="g356"> + <path + transform="translate(-320,0)" + d="m 333.6,15.2 h 1.6 V 8.8 h -1.6 v 6.4 z M 336,4 c -4.42,0 -8,3.58 -8,8 0,4.42 3.58,8 8,8 4.42,0 8,-3.58 8,-8 0,-4.42 -3.58,-8 -8,-8 z m 0,14.4 c -3.528,0 -6.4,-2.872 -6.4,-6.4 0,-3.528 2.872,-6.4 6.4,-6.4 3.528,0 6.4,2.872 6.4,6.4 0,3.528 -2.872,6.4 -6.4,6.4 z m 0.8,-3.2 h 1.6 V 8.8 h -1.6 v 6.4 z" + id="path360" + inkscape:connector-curvature="0" /> + </g> + <g + transform="translate(54,144)" + id="g362"> + <path + transform="translate(-32,-72)" + d="m 47,88 h -3 v -8 h 3 v 8 z" + id="path366" + inkscape:connector-curvature="0" /> + <path + transform="translate(-32,-72)" + d="m 53,88 h -3 v -8 h 3 v 8 z" + id="path368" + inkscape:connector-curvature="0" /> + </g> + <g + transform="translate(82,144)" + id="g370"> + <path + transform="translate(-256,0)" + d="m 275,15 h -2 V 9 h 2 z m -4,0 h -2 V 9 h 2 z m 4,-10 h -6 l -4,4 v 6 l 4,4 h 6 l 4,-4.12 V 9 z" + id="path374" + inkscape:connector-curvature="0" /> + </g> + <g + transform="translate(110,144)" + id="g376"> + <g + font-weight="400" + id="g380" + style="font-weight:400;font-family:Sans"> + <path + transform="translate(-289,-96)" + d="m 300,101 v 4.0001 1.0001 l 3.3434,0.53115 -0.0156,8.0468 -1.3278,0.42183 c 0.006,0.59278 0.43931,1.0114 1,1 h 8 c 0.57896,0.002 0.98177,-0.42708 1,-1 v -14 c -0.0102,-0.53477 -0.48177,-0.99739 -1,-1 h -10 c -0.53297,0.008 -0.99716,0.45677 -1,1 z m 1,0 h 10 v 14 h -8 l 0.71845,-0.42179 0.0937,-8.4218 -2.8122,-0.1561 v -0.99993 z" + overflow="visible" + style="text-indent:0;line-height:normal;text-transform:none;block-progression:tb;overflow:visible" + id="path382" + inkscape:connector-curvature="0" /> + <path + transform="translate(-289,-96)" + d="m 297,106 v 9 c 0.006,0.59278 0.43931,1.0114 1,1 h 5 c 0.57896,0.002 0.98177,-0.42708 1,-1 v -9 c -0.0102,-0.53477 -0.48177,-0.99739 -1,-1 h -5 c -0.53297,0.008 -0.99716,0.45677 -1,1 z m 1,1.0002 h 5 v 7 h -5 z" + overflow="visible" + style="text-indent:0;line-height:normal;text-transform:none;block-progression:tb;overflow:visible" + id="path384" + inkscape:connector-curvature="0" /> + </g> + </g> + <g + transform="translate(138,144)" + id="g386"> + <path + transform="translate(-320,-48)" + d="m 328,60 c 0,4.42 3.58,8 8,8 4.42,0 8,-3.58 8,-8 0,-4.42 -3.58,-8 -8,-8 -4.42,0 -8,3.58 -8,8 z m 8,6.4 c -3.528,0 -6.4,-2.872 -6.4,-6.4 0,-3.528 2.872,-6.4 6.4,-6.4 3.528,0 6.4,2.872 6.4,6.4 0,3.528 -2.872,6.4 -6.4,6.4 z M 334.5067,63.4286 339.0781,60 334.5067,56.5714 v 6.8571 z" + id="path390" + inkscape:connector-curvature="0" /> + </g> + <g + transform="translate(-2,168)" + id="g392"> + <path + transform="translate(-96,-48)" + d="m 108,60 10,-5 v 10" + id="path396" + inkscape:connector-curvature="0" /> + </g> + <g + transform="translate(26,168)" + id="g398"> + <path + transform="translate(-64,-48)" + d="M 86,60 76,55 v 10" + id="path402" + inkscape:connector-curvature="0" /> + </g> + <g + transform="translate(54,168)" + id="g404"> + <path + transform="translate(-256,-24)" + d="m 268.01,35.99 c 0.61,0.28 1.07,0.9 1.07,1.58 0.11,0.85 -0.05,1.72 0.12,2.57 0.27,0.54 1,0.28 1.43,0.55 0.49,0.24 0.48,1.01 -0.06,1.18 -0.56,0.22 -1.18,0.08 -1.74,-0.05 -0.71,-0.2 -1.41,-0.72 -1.5,-1.5 -0.18,-0.89 0.01,-1.8 -0.16,-2.68 -0.22,-0.64 -0.94,-0.9 -1.57,-0.93 -0.58,-0.1 -0.83,-0.94 -0.35,-1.3 0.51,-0.35 1.26,-0.14 1.69,-0.66 0.44,-0.48 0.29,-1.18 0.32,-1.78 0,-0.81 -0.02,-1.77 0.65,-2.34 0.66,-0.54 1.58,-0.71 2.41,-0.63 0.63,0 0.98,0.87 0.4,1.22 -0.44,0.37 -1.2,0.06 -1.51,0.65 -0.14,0.56 -0.05,1.15 -0.07,1.73 -0.01,0.75 -0.05,1.64 -0.72,2.13 -0.12,0.1 -0.26,0.19 -0.4,0.26" + id="path408" + inkscape:connector-curvature="0" /> + <path + transform="translate(-256,-24)" + d="m 276.98,35.99 c -0.67,-0.3 -1.08,-1.02 -1.08,-1.75 -0.07,-0.76 0.03,-1.52 -0.06,-2.28 -0.24,-0.58 -0.98,-0.4 -1.46,-0.59 -0.59,-0.24 -0.48,-1.18 0.14,-1.31 0.73,-0.15 1.52,-0.01 2.18,0.32 0.56,0.28 0.95,0.86 0.99,1.48 0.13,0.83 -0.03,1.68 0.13,2.5 0.2,0.68 0.94,0.83 1.54,0.9 0.56,0.07 0.86,0.8 0.46,1.21 -0.44,0.46 -1.2,0.2 -1.65,0.66 -0.51,0.46 -0.4,1.21 -0.4,1.83 -0.03,0.78 0.06,1.69 -0.52,2.3 -0.74,0.65 -1.8,0.86 -2.75,0.68 -0.52,-0.16 -0.69,-1.01 -0.15,-1.25 0.44,-0.23 1.02,-0.08 1.41,-0.45 0.26,-0.45 0.09,-0.98 0.14,-1.47 0.01,-0.76 -0.07,-1.63 0.43,-2.26 0.18,-0.21 0.42,-0.37 0.66,-0.51" + id="path410" + inkscape:connector-curvature="0" /> + </g> + <g + transform="translate(82,168)" + id="g412"> + <g + id="g416"> + <path + d="M 0,0 H 24 V 24 H 0 z" + id="path418" + inkscape:connector-curvature="0" + style="fill:none" /> + <path + d="m 16,6 c -3.31,0 -6,2.69 -6,6 0,3.31 2.69,6 6,6 3.31,0 6,-2.69 6,-6 h -2 c 0,2.2091 -1.7909,4 -4,4 -2.2091,0 -4,-1.7909 -4,-4 0,-2.2091 1.7909,-4 4,-4 1.2756,0 2.3926,0.60127 3.125,1.5312 h 2.3438 C 20.52659,7.4496 18.4308,6 16,6 z" + id="path420" + inkscape:connector-curvature="0" /> + <path + d="M 21.091,6.88 V 9.9718 H 17.9992 z" + id="path422" + inkscape:connector-curvature="0" + style="stroke:#000000;stroke-width:1.06799996" /> + </g> + </g> + <g + transform="translate(110,168)" + id="g424"> + <path + transform="translate(8,4)" + d="M 2.5858,13.891 C 0.9959,12.4291 0,10.3315 0,8.0002 c 0,-4.42 3.58,-8 8,-8 4.42,0 8,3.58 8,8 0,4.42 -3.58,8 -8,8 v -1.6 c 3.528,0 6.4,-2.872 6.4,-6.4 0,-3.528 -2.872,-6.4 -6.4,-6.4 -3.528,0 -6.4,2.872 -6.4,6.4 0,1.9357 0.86461,3.674 2.2278,4.8487 l 1.6925,-1.4201 0.015145,4.463 -4.3925,-0.7899 1.443,-1.2108 z M 6.5066,11.4287 11.078,8.0001 6.5066,4.5715 v 6.8571 z" + id="path428" + inkscape:connector-curvature="0" /> + </g> + <g + transform="translate(138,168)" + id="g430"> + <path + transform="translate(0,-72)" + d="M 23,84 15,79 V 89" + id="path434" + inkscape:connector-curvature="0" /> + <path + transform="translate(0,-72)" + d="M 13,89 H 10 V 79 h 3 v 10 z" + id="path436" + inkscape:connector-curvature="0" /> + </g> + <g + transform="translate(166,0)" + id="g438"> + <path + transform="translate(-160,-120)" + d="m 169.2,130.15 c 0.0551,-0.1128 0.15339,-0.22 0.2313,-0.3064 0.54584,-0.6074 1.3889,-1.1974 3.0053,-1.5702 v -2.1715 c -1.2931,0.2523 -2.3146,0.6686 -3.304,1.5597 -0.33248,0.3832 -0.50543,0.6247 -0.514,1.1665 -0.007,0.443 0.17732,0.8863 0.58141,1.3219 z m 6.6309,3.1292 c -1.6164,-0.024 -3.1091,-0.2558 -4.6228,-0.764 -2.6938,-0.9037 -3.0286,-2.1697 -3.1703,-2.5931 -0.0958,1.6897 0.028,2.9573 0.0346,3.0648 0.092,1.5004 1.2918,2.6742 2.1575,3.1151 1.7796,0.9067 3.6614,1.3756 5.601,1.4151 v 2.4842 l 3.251,-4.6483 -3.251,-4.6486 v 2.5748 z m -0.32327,-5.2959 c 1.6164,0.01 3.4529,0.3384 5.2454,1.1131 0.73528,0.3177 1.3275,0.7904 1.8082,1.3048 0.33152,-0.1523 0.80672,-0.7308 0.74126,-1.2923 -0.16163,-1.3879 -1.6264,-2.1912 -1.8801,-2.3045 -1.7704,-0.7908 -3.9751,-1.0356 -5.9147,-1.0589 v -1.7442 l -2.0132,2.8787 2.0132,2.8783 v -1.775 z m 8.4236,1.8658 c -0.0824,0.6478 -0.82676,2.0349 -3.8978,2.9138 v 4.5247 c 1.1314,-0.3677 2.465,-1.2956 3.1787,-2.1988 0.2911,-0.3677 0.46906,-0.875 0.57736,-1.242 0.33216,-1.1229 0.18604,-3.3136 0.14175,-3.9977 z" + id="path442" + inkscape:connector-curvature="0" /> + </g> + <g + transform="translate(166,24)" + id="g444"> + <path + transform="translate(8,4)" + d="m 10.624,2.47 c 1.9155,0.90417 3.2862,2.7533 3.4971,4.9467 h 0.87866 C 14.70102,3.8234 11.68426,1 7.99976,1 L 7.61315,1.0175 9.84495,3.24 10.62403,2.47 z M 6.9629,2.02083 c -0.34561,-0.34417 -0.90209,-0.34417 -1.2418,0 l -3.7255,3.71 c -0.34561,0.34417 -0.34561,0.89833 0,1.2367 l 7.041,7.0117 c 0.34561,0.34417 0.90209,0.34417 1.2418,0 l 3.7255,-3.71 c 0.34561,-0.34417 0.34561,-0.89833 0,-1.2367 l -7.041,-7.0117 z m 2.6946,11.34 -7.041,-7.0117 3.7255,-3.71 7.041,7.0117 -3.7255,3.71 z M 5.3755,13.53 C 3.46,12.63167 2.0893,10.7767 1.8784,8.5833 H 0.99974 C 1.29848,12.1766 4.31524,15 7.99974,15 L 8.38635,14.9825 6.15455,12.76 5.37547,13.53 z" + id="path448" + inkscape:connector-curvature="0" /> + </g> + <g + transform="translate(166,48)" + id="g450"> + <path + transform="translate(-288,-72)" + d="m 293.96,74.013 h 20 v 20 h -20 z" + id="path454" + inkscape:connector-curvature="0" + style="fill:none" /> + <path + transform="translate(-288,-72)" + d="m 297,77 h 18 v 18 h -18 z" + id="path456" + inkscape:connector-curvature="0" + style="fill:none" /> + <path + transform="translate(-288,-72)" + d="m 295.25,75.25 h 20 v 20 h -20 z" + id="path458" + inkscape:connector-curvature="0" + style="fill:none" /> + <path + transform="translate(-288,-72)" + d="m 293.12,73.125 h 20 v 20 h -20 z" + id="path460" + inkscape:connector-curvature="0" + style="fill:none" /> + <path + transform="translate(-288,-72)" + d="m 288,72 h 24 v 24 h -24 z" + id="path462" + inkscape:connector-curvature="0" + style="fill:none" /> + <path + transform="translate(-288,-72)" + d="m 309.35,84.686 c 0.0288,-0.224 0.0504,-0.448 0.0504,-0.686 0,-0.238 -0.0216,-0.462 -0.0504,-0.686 l 1.5184,-1.155 c 0.13673,-0.105 0.17272,-0.294 0.0863,-0.448 l -1.4393,-2.422 c -0.0863,-0.154 -0.28065,-0.21 -0.43897,-0.154 l -1.7919,0.7 c -0.37422,-0.28 -0.77722,-0.511 -1.2162,-0.686 l -0.27341,-1.855 C 305.77334,77.126 305.62223,77 305.44232,77 h -2.8785 c -0.17992,0 -0.33104,0.126 -0.35263,0.294 l -0.27346,1.855 c -0.43898,0.175 -0.84198,0.413 -1.2162,0.686 l -1.7919,-0.7 c -0.16551,-0.063 -0.35262,0 -0.43898,0.154 l -1.4393,2.422 c -0.0935,0.154 -0.0504,0.343 0.0863,0.448 l 1.5184,1.155 c -0.0287,0.224 -0.0504,0.455 -0.0504,0.686 0,0.231 0.0216,0.462 0.0504,0.686 l -1.5184,1.155 c -0.13673,0.105 -0.17271,0.294 -0.0863,0.448 l 1.4393,2.422 c 0.0863,0.154 0.28067,0.21 0.43898,0.154 l 1.7919,-0.7 c 0.37421,0.28 0.77721,0.511 1.2162,0.686 l 0.27346,1.855 c 0.0216,0.168 0.17271,0.294 0.35263,0.294 h 2.8785 c 0.17991,0 0.33103,-0.126 0.35263,-0.294 l 0.27345,-1.855 c 0.43898,-0.175 0.84198,-0.413 1.2162,-0.686 l 1.7919,0.7 c 0.16552,0.063 0.35263,0 0.43898,-0.154 l 1.4393,-2.422 c 0.0863,-0.154 0.0504,-0.343 -0.0863,-0.448 l -1.5184,-1.155 z m -5.3469,1.764 c -1.3889,0 -2.5187,-1.099 -2.5187,-2.45 0,-1.351 1.1298,-2.45 2.5187,-2.45 1.3889,0 2.5187,1.099 2.5187,2.45 0,1.351 -1.1298,2.45 -2.5187,2.45 z" + id="path464" + inkscape:connector-curvature="0" /> + </g> + <g + transform="translate(162,73)" + id="g466"> + <path + transform="matrix(0,-1,1,0,-136,251)" + d="m 232.5,150.5 h 14 v 12 h -14 z" + id="path470" + inkscape:connector-curvature="0" + style="fill:none;stroke:#000000" /> + <path + transform="matrix(0,-1,1,0,-136,251)" + d="m 244,156.5 -5,-3.25 v 6.5" + id="path472" + inkscape:connector-curvature="0" /> + <path + transform="matrix(0,-1,1,0,-136,251)" + d="m 236,150 h 1 v 13 h -1 z" + id="path474" + inkscape:connector-curvature="0" /> + </g> + <g + transform="translate(166,96)" + id="g476"> + <path + transform="translate(-160,-72)" + d="m 168.5,78.5 h 14 v 12 h -14 z" + id="path480" + inkscape:connector-curvature="0" + style="fill:none;stroke:#000000" /> + <path + transform="translate(-160,-72)" + d="m 180,84.5 -5,-3.25 v 6.5" + id="path482" + inkscape:connector-curvature="0" /> + <path + transform="translate(-160,-72)" + d="m 172,78 h 1 v 13 h -1 z" + id="path484" + inkscape:connector-curvature="0" /> + </g> + <g + transform="translate(166,120)" + id="g486"> + <path + transform="matrix(-1,0,0,1,-192,-96)" + d="m -214.5,102.5 h 14 v 12 h -14 z" + id="path490" + inkscape:connector-curvature="0" + style="fill:none;stroke:#000000" /> + <path + transform="translate(-192,-96)" + d="m 203,108.5 5,-3.25 v 6.5" + id="path492" + inkscape:connector-curvature="0" /> + <path + transform="matrix(-1,0,0,1,-192,-96)" + d="m -211,102 h 1 v 13 h -1 z" + id="path494" + inkscape:connector-curvature="0" /> + </g> + <g + transform="translate(162,145)" + id="g496"> + <path + transform="matrix(0,1,1,0,-88,219)" + d="m -214.5,102.5 h 14 v 12 h -14 z" + id="path500" + inkscape:connector-curvature="0" + style="fill:none;stroke:#000000" /> + <path + transform="matrix(0,-1,1,0,-88,219)" + d="m 203,108.5 5,-3.25 v 6.5" + id="path502" + inkscape:connector-curvature="0" /> + <path + transform="matrix(0,1,1,0,-88,219)" + d="m -211,102 h 1 v 13 h -1 z" + id="path504" + inkscape:connector-curvature="0" /> + </g> + <g + transform="translate(166,168)" + id="g506"> + <path + transform="translate(-288,0)" + d="m 298,12 c 0,3.31 2.69,6 6,6 3.31,0 6,-2.69 6,-6 0,-3.31 -2.69,-6 -6,-6 -3.31,0 -6,2.69 -6,6" + id="path510" + inkscape:connector-curvature="0" /> + </g> + <g + transform="translate(-2,192)" + id="g512"> + <path + transform="translate(-64,-72)" + d="m 78.5,89 c 0,1.1 0.9,2 2,2 1.1,0 2,-0.9 2,-2 0,-1.1 -0.9,-2 -2,-2 -1.1,0 -2,0.9 -2,2" + id="path516" + inkscape:connector-curvature="0" /> + <path + transform="translate(-64,-72)" + d="m 79,78 v 4 h -3 l 4.5,4 4.5,-4 h -3 v -4 h -3 z" + id="path518" + inkscape:connector-curvature="0" /> + </g> + <g + transform="translate(26,192)" + id="g520"> + <path + transform="translate(-96,-72)" + d="m 110.5,89 c 0,1.1 0.9,2 2,2 1.1,0 2,-0.9 2,-2 0,-1.1 -0.9,-2 -2,-2 -1.1,0 -2,0.9 -2,2" + id="path524" + inkscape:connector-curvature="0" /> + <path + transform="translate(-96,-72)" + d="m 112.5,78 -4.5,4 h 3 v 4 h 3 v -4 h 3 l -4.5,-4 z" + id="path526" + inkscape:connector-curvature="0" /> + </g> + <g + transform="translate(54,192)" + id="g528"> + <path + transform="translate(-128,-72)" + d="m 142,86.5 c 0,1.1 0.9,2 2,2 1.1,0 2,-0.9 2,-2 0,-1.1 -0.9,-2 -2,-2 -1.1,0 -2,0.9 -2,2" + id="path532" + inkscape:connector-curvature="0" /> + <path + transform="translate(-128,-72)" + d="m 137.25,87.03 c 2.55,-8.43 11.4,-8.73 13.94,0" + id="path534" + inkscape:connector-curvature="0" + style="fill:none;stroke:#000000;stroke-width:2.5" /> + <path + transform="translate(-128,-72)" + d="m 151.68,89 -4.54,-2.76 6.68,-2.1" + id="path536" + inkscape:connector-curvature="0" /> + </g> + <g + transform="translate(82,192)" + id="g538"> + <path + transform="translate(-288,-24)" + d="m 295,36 c 0,4.97 4.03,9 9,9 4.97,0 9,-4.03 9,-9 0,-4.97 -4.03,-9 -9,-9 -4.97,0 -9,4.03 -9,9" + id="path542" + inkscape:connector-curvature="0" + style="fill:url(#sprite60_a)" /> + <path + transform="translate(-288,-24)" + d="m 298,36 c 0,3.31 2.69,6 6,6 3.31,0 6,-2.69 6,-6 0,-3.31 -2.69,-6 -6,-6 -3.31,0 -6,2.69 -6,6" + id="path544" + inkscape:connector-curvature="0" /> + <defs + id="defs546"> + <radialGradient + id="sprite60_b" + cx="0" + cy="0" + r="1" + gradientTransform="matrix(18,0,0,-18,680,341)" + gradientUnits="userSpaceOnUse"> + <stop + offset="0" + id="stop549" /> + <stop + stop-opacity="0" + offset="1" + id="stop551" /> + </radialGradient> + <radialGradient + id="sprite60_a" + cx="0" + cy="0" + r="1" + gradientTransform="matrix(9,0,0,9,304,36)" + gradientUnits="userSpaceOnUse" + xlink:href="#sprite60_b" /> + </defs> + </g> + <g + transform="translate(110,192)" + id="g554"> + <g + id="g558"> + <path + transform="translate(7,3)" + d="M 0,0 H 18 V 18 H 0 z" + id="path560" + inkscape:connector-curvature="0" + style="fill:none" /> + <path + transform="translate(7,3)" + d="M 15.25,8 H 16 V 6.125 5 H 5 V 6.125 8 h 0.75 c 0,-0.82843 0.67157,-1.5 1.5,-1.5 h 2.5 v 7.25 c 0,0.82843 -0.67157,1.5 -1.5,1.5 V 16 h 1.875 0.75 1.875 v -0.75 c -0.82843,0 -1.5,-0.67157 -1.5,-1.5 V 6.5 h 2.5 c 0.82843,0 1.5,0.67157 1.5,1.5 z" + id="path562" + inkscape:connector-curvature="0" + style="fill-opacity:0.36000001" /> + <path + transform="translate(7,3)" + d="M 12.25,5 H 13 V 3.125 2 H 2 V 3.125 5 h 0.75 c 0,-0.82843 0.67157,-1.5 1.5,-1.5 h 2.5 v 7.25 c 0,0.82843 -0.67157,1.5 -1.5,1.5 V 13 h 1.875 0.75 1.875 v -0.75 c -0.82843,0 -1.5,-0.67157 -1.5,-1.5 V 3.5 h 2.5 c 0.82843,0 1.5,0.67157 1.5,1.5 z" + id="path564" + inkscape:connector-curvature="0" /> + </g> + </g> + <g + transform="translate(138,192)" + id="g566"> + <path + transform="translate(-128,-24)" + d="m 139.5,33 h 9 L 147,43 h -6" + id="path570" + inkscape:connector-curvature="0" /> + <path + transform="translate(-128,-24)" + d="m 147.5,30 h -2 v -1 h -3 v 1 h -2 c -0.55,0 -1,0.48 -1,1 v 1 h 1 7 1 v -1 c 0,-0.52 -0.45,-1 -1,-1" + id="path572" + inkscape:connector-curvature="0" /> + </g> + <g + transform="translate(168,192)" + id="g574"> + <path + transform="translate(0,-48)" + d="M 10,57 H 8 v 9 h 11 v -2 h -9 z" + id="path578" + inkscape:connector-curvature="0" /> + <path + transform="translate(0,-48)" + d="m 13,56 h 7 v 5 h -7 z m -2,-2 v 9 h 11 v -9 z" + id="path580" + inkscape:connector-curvature="0" /> + </g> + <g + transform="translate(194,0)" + id="g582"> + <path + transform="translate(-96,0)" + d="m 112,6.6909 c -3.6364,0 -6.7418,2.2618 -8,5.4545 1.2582,3.1927 4.3636,5.4545 8,5.4545 3.6364,0 6.7418,-2.2618 8,-5.4545 -1.2582,-3.1927 -4.3636,-5.4545 -8,-5.4545 z m 0,9.0909 c -2.0073,0 -3.6364,-1.6291 -3.6364,-3.6364 0,-2.0073 1.6291,-3.6364 3.6364,-3.6364 2.0073,0 3.6364,1.6291 3.6364,3.6364 0,2.0073 -1.6291,3.6364 -3.6364,3.6364 z m 0,-5.8182 c -1.2073,0 -2.1818,0.97455 -2.1818,2.1818 0,1.2073 0.97455,2.1818 2.1818,2.1818 1.2073,0 2.1818,-0.97455 2.1818,-2.1818 0,-1.2073 -0.97455,-2.1818 -2.1818,-2.1818 z" + id="path586" + inkscape:connector-curvature="0" /> + </g> + <g + transform="translate(194,24)" + id="g588"> + <path + transform="translate(-128,-48)" + d="m 153,57 h -11 v -2 h 11 v 2 z" + id="path592" + inkscape:connector-curvature="0" + style="opacity:0.2" /> + <path + transform="translate(-128,-48)" + d="m 142,57 h -6 v -2 h 6 v 2 z" + id="path594" + inkscape:connector-curvature="0" /> + <path + transform="translate(-128,-48)" + d="m 145,60 h -6 v -2 h 6 v 2 z" + id="path596" + inkscape:connector-curvature="0" /> + <path + transform="translate(-128,-48)" + d="m 150,63 h -6 v -2 h 6 v 2 z" + id="path598" + inkscape:connector-curvature="0" /> + <path + transform="translate(-128,-48)" + d="m 152,66 h -6 v -2 h 6 v 2 z" + id="path600" + inkscape:connector-curvature="0" /> + </g> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;line-height:0%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#b3b3b3;fill-opacity:1;stroke:none" + x="12.355932" + y="231.55931" + id="text4355"><tspan + sodipodi:role="line" + id="tspan4357" + x="12.355932" + y="231.55931" + style="font-size:12px;line-height:1.25;font-family:sans-serif">a</tspan></text> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;line-height:0%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#b3b3b3;fill-opacity:1;stroke:none" + x="40.355934" + y="231.55931" + id="text4355-3"><tspan + sodipodi:role="line" + id="tspan4357-6" + x="40.355934" + y="231.55931" + style="font-size:12px;line-height:1.25;font-family:sans-serif">b</tspan></text> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;line-height:0%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#b3b3b3;fill-opacity:1;stroke:none" + x="68.355934" + y="231.55931" + id="text4355-7"><tspan + sodipodi:role="line" + id="tspan4357-5" + x="68.355934" + y="231.55931" + style="font-size:12px;line-height:1.25;font-family:sans-serif">c</tspan></text> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;line-height:0%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#b3b3b3;fill-opacity:1;stroke:none" + x="96.355934" + y="231.55931" + id="text4355-35"><tspan + sodipodi:role="line" + id="tspan4357-62" + x="96.355934" + y="231.55931" + style="font-size:12px;line-height:1.25;font-family:sans-serif">d</tspan></text> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;line-height:0%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#b3b3b3;fill-opacity:1;stroke:none" + x="124.35593" + y="231.55931" + id="text4355-9"><tspan + sodipodi:role="line" + id="tspan4357-1" + x="124.35593" + y="231.55931" + style="font-size:12px;line-height:1.25;font-family:sans-serif">e</tspan></text> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;line-height:0%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#b3b3b3;fill-opacity:1;stroke:none" + x="152.35593" + y="231.55931" + id="text4355-2"><tspan + sodipodi:role="line" + id="tspan4357-7" + x="152.35593" + y="231.55931" + style="font-size:12px;line-height:1.25;font-family:sans-serif">f</tspan></text> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;line-height:0%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#b3b3b3;fill-opacity:1;stroke:none" + x="180.35593" + y="231.55931" + id="text4355-0"><tspan + sodipodi:role="line" + id="tspan4357-9" + x="180.35593" + y="231.55931" + style="font-size:12px;line-height:1.25;font-family:sans-serif">g</tspan></text> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;line-height:0%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#b3b3b3;fill-opacity:1;stroke:none" + x="208.35593" + y="231.55931" + id="text4355-36"><tspan + sodipodi:role="line" + id="tspan4357-0" + x="208.35593" + y="231.55931" + style="font-size:12px;line-height:1.25;font-family:sans-serif">h</tspan></text> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;line-height:0%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#b3b3b3;fill-opacity:1;stroke:none" + x="-15.644068" + y="207.55931" + id="text4355-6"><tspan + sodipodi:role="line" + id="tspan4357-2" + x="-15.644068" + y="207.55931" + style="font-size:12px;line-height:1.25;font-family:sans-serif">1</tspan></text> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;line-height:0%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#b3b3b3;fill-opacity:1;stroke:none" + x="-15.644068" + y="183.55931" + id="text4355-61"><tspan + sodipodi:role="line" + id="tspan4357-8" + x="-15.644068" + y="183.55931" + style="font-size:12px;line-height:1.25;font-family:sans-serif">2</tspan></text> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;line-height:0%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#b3b3b3;fill-opacity:1;stroke:none" + x="-15.644068" + y="159.55931" + id="text4355-79"><tspan + sodipodi:role="line" + id="tspan4357-20" + x="-15.644068" + y="159.55931" + style="font-size:12px;line-height:1.25;font-family:sans-serif">3</tspan></text> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;line-height:0%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#b3b3b3;fill-opacity:1;stroke:none" + x="-15.644068" + y="135.55931" + id="text4355-23"><tspan + sodipodi:role="line" + id="tspan4357-75" + x="-15.644068" + y="135.55931" + style="font-size:12px;line-height:1.25;font-family:sans-serif">4</tspan></text> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;line-height:0%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#b3b3b3;fill-opacity:1;stroke:none" + x="-15.644068" + y="111.55931" + id="text4355-92"><tspan + sodipodi:role="line" + id="tspan4357-28" + x="-15.644068" + y="111.55931" + style="font-size:12px;line-height:1.25;font-family:sans-serif">5</tspan></text> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;line-height:0%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#b3b3b3;fill-opacity:1;stroke:none" + x="-15.644068" + y="87.559311" + id="text4355-97"><tspan + sodipodi:role="line" + id="tspan4357-3" + x="-15.644068" + y="87.559311" + style="font-size:12px;line-height:1.25;font-family:sans-serif">6</tspan></text> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;line-height:0%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#b3b3b3;fill-opacity:1;stroke:none" + x="-15.644068" + y="63.559311" + id="text4355-612"><tspan + sodipodi:role="line" + id="tspan4357-93" + x="-15.644068" + y="63.559311" + style="font-size:12px;line-height:1.25;font-family:sans-serif">7</tspan></text> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;line-height:0%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#b3b3b3;fill-opacity:1;stroke:none" + x="-15.644068" + y="39.559311" + id="text4355-1"><tspan + sodipodi:role="line" + id="tspan4357-94" + x="-15.644068" + y="39.559311" + style="font-size:12px;line-height:1.25;font-family:sans-serif">8</tspan></text> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;line-height:0%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#b3b3b3;fill-opacity:1;stroke:none" + x="-15.644068" + y="15.559311" + id="text4355-78"><tspan + sodipodi:role="line" + id="tspan4357-4" + x="-15.644068" + y="15.559311" + style="font-size:12px;line-height:1.25;font-family:sans-serif">9</tspan></text> + <g + id="Page-1-6" + style="fill:none;stroke:none" + transform="translate(200,50)"> + <g + id="undo"> + <rect + height="20" + width="20" + y="0" + x="0" + id="bounds" + style="fill:#ffffff;fill-opacity:0" /> + <path + id="shape" + d="M 4.3431457,9.3431458 C 5.790861,7.8954305 7.790861,7 10,7 c 3.555275,0 6.568879,2.3191676 7.610506,5.527197 L 16.155367,13 15.658589,13 C 14.834916,10.669615 12.612438,9 10,9 8.3431458,9 6.8431457,9.6715729 5.7573593,10.757359 L 8,13 2,13 2,7 l 2.3431457,2.3431458 0,0 z" + inkscape:connector-curvature="0" + style="fill:#000000" /> + </g> + </g> + <path + style="fill:#000000" + sodipodi:nodetypes="ccccccccccccc" + inkscape:connector-curvature="0" + d="m 215,82 -3,0 0,-4 -4,0 0,4 -3,0 5,6 z m -10,7 0,1 10,0 0,-1 z" + id="path4295" /> + <path + style="fill:none" + inkscape:connector-curvature="0" + d="m 196,72 h 24 v 24 h -24 z" + id="path4297" /> + <path + style="fill:#000000" + d="m 210,102 -5,6 3,0 0,4 4,0 0,-4 3,0 z m -5,11 0,1 10,0 0,-1 z" + id="path4295-3" + inkscape:connector-curvature="0" + sodipodi:nodetypes="ccccccccccccc" /> + <rect + style="fill:#000000;" + id="square-icon" + width="8" + height="8" + x="206" + y="176" /> + <g + style="fill:#000000" + id="g4456" + transform="matrix(0.78548728,0,0,0.78548728,200.6822,123.63151)"> + <path + id="path4442" + d="M 15.5,14 H 14.71 L 14.43,13.73 C 15.41,12.59 16,11.11 16,9.5 16,5.91 13.09,3 9.5,3 5.91,3 3,5.91 3,9.5 3,13.09 5.91,16 9.5,16 c 1.61,0 3.09,-0.59 4.23,-1.57 L 14,14.71 v 0.79 l 5,4.99 1.49,-1.49 z m -6,0 C 7.01,14 5,11.99 5,9.5 5,7.01 7.01,5 9.5,5 11.99,5 14,7.01 14,9.5 14,11.99 11.99,14 9.5,14 Z" + inkscape:connector-curvature="0" /> + <path + id="path4444" + d="M 0,0 H 24 V 24 H 0 Z" + inkscape:connector-curvature="0" + style="fill:none" /> + </g> + <path + inkscape:connector-curvature="0" + id="path524-5" + d="m 211.71941,203.4233 c 0,1.1 0.9,2 2,2 1.1,0 2,-0.9 2,-2 0,-1.1 -0.9,-2 -2,-2 -1.1,0 -2,0.9 -2,2" /> + <g + transform="translate(190.16772,189.5042)" + id="g520-3"> + <path + d="m 20.83228,13.9958 -4,-4.5 v 3 h -4 v 3 h 4 v 3 z" + id="path526-7" + inkscape:connector-curvature="0" + sodipodi:nodetypes="cccccccc" /> + </g> +</svg> diff --git a/1-js/03-code-quality/01-debugging-chrome/toolbarButtonGlyphs.svg b/1-js/03-code-quality/01-debugging-chrome/toolbarButtonGlyphs.svg deleted file mode 100644 index 5bdf20a83..000000000 --- a/1-js/03-code-quality/01-debugging-chrome/toolbarButtonGlyphs.svg +++ /dev/null @@ -1,1035 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg - xmlns:sketch="http://www.bohemiancoding.com/sketch/ns" - xmlns:dc="http://purl.org/dc/elements/1.1/" - xmlns:cc="http://creativecommons.org/ns#" - xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:svg="http://www.w3.org/2000/svg" - xmlns="http://www.w3.org/2000/svg" - xmlns:xlink="http://www.w3.org/1999/xlink" - xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" - xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" - height="168" - version="1.1" - width="352" - xml:space="preserve" - id="svg3395" - inkscape:version="0.48.4 r9939" - sodipodi:docname="toolbarButtonGlyphs.svg"><metadata - id="metadata3773"><rdf:RDF><cc:Work - rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type - rdf:resource="http://purl.org/dc/dcmitype/StillImage" /></cc:Work></rdf:RDF></metadata><sodipodi:namedview - showgrid="true" - id="namedview3397" - inkscape:zoom="2.8284271" - inkscape:cx="155.02536" - inkscape:cy="18.05" - inkscape:window-width="1920" - inkscape:window-height="1172" - inkscape:window-x="1920" - inkscape:window-y="0" - inkscape:window-maximized="1" - inkscape:current-layer="svg3395" - inkscape:snap-global="false" - showguides="true" - inkscape:guide-bbox="true"><inkscape:grid - dotted="false" - empspacing="2" - enabled="true" - id="grid3327" - snapvisiblegridlinesonly="true" - spacingx="32px" - spacingy="24px" - type="xygrid" - visible="true" /></sodipodi:namedview><defs - id="defs3400"><linearGradient - id="a"><stop - offset="0" - stop-color="#606eda" - id="stop3403" /><stop - offset="1" - stop-color="#021db2" - id="stop3405" /></linearGradient><linearGradient - id="b"><stop - offset="0" - stop-color="#e59290" - id="stop3408" /><stop - offset="1" - stop-color="#e99890" - id="stop3410" /></linearGradient><linearGradient - id="c"><stop - offset="0" - stop-color="#c0544f" - id="stop3413" /><stop - offset="1" - stop-color="#d08481" - id="stop3415" /></linearGradient><linearGradient - id="d"><stop - offset="0" - stop-color="#ffa801" - stop-opacity="0" - id="stop3418" /><stop - offset="1" - stop-color="#f0fb3d" - id="stop3420" /></linearGradient><linearGradient - id="e"><stop - offset="0" - stop-color="#ffbd00" - stop-opacity="0.65" - id="stop3423" /><stop - offset="1" - stop-color="#fff" - stop-opacity="0.91" - id="stop3425" /></linearGradient><linearGradient - id="f"><stop - offset="0" - stop-color="#00d600" - stop-opacity="0" - id="stop3428" /><stop - offset="1" - stop-color="#d8fc7b" - stop-opacity="0.81" - id="stop3430" /></linearGradient><linearGradient - id="g"><stop - offset="0" - stop-color="#00ba00" - id="stop3433" /><stop - offset="1" - stop-color="#fff" - stop-opacity="0.91" - id="stop3435" /></linearGradient><linearGradient - id="h"><stop - offset="0" - stop-color="#00a104" - id="stop3438" /><stop - offset="1" - stop-color="#00c605" - id="stop3440" /></linearGradient><linearGradient - id="i"><stop - offset="0" - stop-color="#f00" - stop-opacity="0" - id="stop3443" /><stop - offset="1" - stop-color="#f0cb68" - stop-opacity="0.71" - id="stop3445" /></linearGradient><linearGradient - id="j"><stop - offset="0" - stop-color="#e60000" - stop-opacity="0.65" - id="stop3448" /><stop - offset="1" - stop-color="#fff" - stop-opacity="0.91" - id="stop3450" /></linearGradient><linearGradient - id="k"><stop - offset="0" - stop-color="#a10000" - id="stop3453" /><stop - offset="1" - stop-color="#c60000" - id="stop3455" /></linearGradient><linearGradient - id="l"><stop - offset="0" - stop-color="#d7687d" - id="stop3458" /><stop - offset="1" - stop-color="#b21402" - id="stop3460" /></linearGradient><radialGradient - cx="0" - cy="0" - fx="0" - fy="0" - gradientTransform="matrix(18,0,0,-18,680,341)" - gradientUnits="userSpaceOnUse" - id="z" - r="1" - spreadMethod="pad"><stop - offset="0" - id="stop3463" /><stop - offset="1" - stop-opacity="0" - id="stop3465" /></radialGradient><radialGradient - cx="0" - cy="0" - fx="0" - fy="0" - gradientTransform="matrix(9,0,0,9,304,36)" - gradientUnits="userSpaceOnUse" - id="A" - r="1" - spreadMethod="pad" - xlink:href="#z" /><linearGradient - gradientTransform="matrix(0,-0.58333333,-0.58333333,0,118,110)" - gradientUnits="userSpaceOnUse" - id="m" - x1="0" - x2="24" - xlink:href="#l" - y1="0" - y2="0" /><linearGradient - gradientTransform="matrix(0,1,-1,0,206,0)" - gradientUnits="userSpaceOnUse" - id="n" - x1="96.5" - x2="109.5" - xlink:href="#b" - y1="103" - y2="103" /><linearGradient - gradientTransform="matrix(0,1,-1,0,207,-17)" - gradientUnits="userSpaceOnUse" - id="o" - x1="113" - x2="127" - xlink:href="#c" - y1="104" - y2="104" /><linearGradient - gradientTransform="matrix(0,-0.41666666,-0.41666666,0,218,106)" - gradientUnits="userSpaceOnUse" - id="p" - x1="0" - x2="24" - xlink:href="#l" - y1="0" - y2="0" /><linearGradient - gradientTransform="matrix(0.71428571,0,0,0.71428571,132.28571,37.714287)" - gradientUnits="userSpaceOnUse" - id="q" - x1="113" - x2="127" - xlink:href="#a" - y1="104" - y2="104" /><linearGradient - gradientTransform="matrix(0,1.3793103,-1.3008129,0,363.08462,-218.35335)" - gradientUnits="userSpaceOnUse" - id="r" - x1="227.875" - x2="235.125" - xlink:href="#k" - y1="103.15625" - y2="103.15625" /><linearGradient - gradientTransform="matrix(0,-0.62931035,0.92682926,0,133.46895,244.52849)" - gradientUnits="userSpaceOnUse" - id="s" - x1="227.875" - x2="235.125" - xlink:href="#j" - y1="103.15625" - y2="103.15625" /><linearGradient - gradientTransform="matrix(0,0.43965518,0.78048781,0,148.48744,2.1206316)" - gradientUnits="userSpaceOnUse" - id="t" - x1="227.875" - x2="235.125" - xlink:href="#i" - y1="103.15625" - y2="103.15625" /><linearGradient - gradientTransform="matrix(-0.01506784,1.3792098,-1.3007182,-0.01421029,377.66542,-216.8212)" - gradientUnits="userSpaceOnUse" - id="u" - x1="227.875" - x2="235.125" - xlink:href="#h" - y1="103.15625" - y2="103.15625" /><linearGradient - gradientTransform="matrix(0.00687469,-0.62926454,0.92676181,0.01012483,142.86511,243.44332)" - gradientUnits="userSpaceOnUse" - id="v" - x1="227.875" - x2="235.125" - xlink:href="#g" - y1="103.15625" - y2="103.15625" /><linearGradient - gradientTransform="matrix(-0.00480288,0.43962318,0.780431,0.00852617,160.60265,1.1603253)" - gradientUnits="userSpaceOnUse" - id="w" - x1="227.875" - x2="235.125" - xlink:href="#f" - y1="103.15625" - y2="103.15625" /><linearGradient - gradientTransform="matrix(0,-0.62931035,0.92682926,0,155.46895,244.52849)" - gradientUnits="userSpaceOnUse" - id="x" - x1="227.875" - x2="235.125" - xlink:href="#e" - y1="103.15625" - y2="103.15625" /><linearGradient - gradientTransform="matrix(0,0.43965518,0.78048781,0,170.44325,2.076437)" - gradientUnits="userSpaceOnUse" - id="y" - x1="227.875" - x2="235.125" - xlink:href="#d" - y1="103.15625" - y2="103.15625" /><linearGradient - inkscape:collect="always" - xlink:href="#l-0" - id="linearGradient3239" - gradientUnits="userSpaceOnUse" - gradientTransform="matrix(0,-0.41666666,-0.41666666,0,249.99999,117)" - x1="0" - y1="0" - x2="24" - y2="0" /><linearGradient - id="l-0"><stop - offset="0" - stop-color="#d7687d" - id="stop3458-8" /><stop - offset="1" - stop-color="#b21402" - id="stop3460-8" /></linearGradient></defs><path - d="M 57,12 53.5,8 39,8 l 0,8 14.5,0" - id="path3481" - inkscape:connector-curvature="0" /><path - d="M 25,36 21.36,32 19.57,32 14,40 21.36,40 25,36 z" - id="path3483" - inkscape:connector-curvature="0" /><path - d="M 7,32 7,40 9.05,40 14,32 7,32 z" - id="path3485" - inkscape:connector-curvature="0" /><path - d="M 9.67,44.55 8.08,43.23 18.84,27.45 20.43,28.77 9.67,44.55 z" - id="path3487" - inkscape:connector-curvature="0" /><path - d="m 16,5 0,2 c -2.76,0 -5,2.24 -5,5 0,2.76 2.24,5 5,5 2.76,0 5,-2.24 5,-5 l -1.84,0 c -0.04,1.72 -1.43,3.09 -3.16,3.09 -1.75,0 -3.16,-1.4 -3.16,-3.15 0,-1.75 1.41,-3.16 3.16,-3.16 L 16,11 20.5,8 16,5 z" - id="path3489" - inkscape:connector-curvature="0" /><path - d="m 53,37 -10,0 0,-5 10,0 0,5 z m -12,5 14,0 0,-12 -14,0 0,12 z" - id="path3491" - inkscape:connector-curvature="0" /><path - d="m 10,57 -2,0 0,9 11,0 0,-2 -9,0 z" - id="path3493" - inkscape:connector-curvature="0" /><path - d="m 13,56 7,0 0,5 -7,0 z m -2,-2 0,9 11,0 0,-9 z" - id="path3495" - inkscape:connector-curvature="0" /><path - d="m 80.44,16.94 c -2.48,0 -4.5,-2.02 -4.5,-4.5 0,-0.88 0.26,-1.7 0.69,-2.39 l 6.2,6.2 c -0.69,0.44 -1.51,0.69 -2.39,0.69 m 4.5,-4.5 c 0,0.88 -0.26,1.7 -0.69,2.39 l -6.2,-6.2 c 0.69,-0.44 1.51,-0.69 2.39,-0.69 2.48,0 4.5,2.02 4.5,4.5 M 80.5,6 C 76.91,6 74,8.91 74,12.5 74,16.09 76.91,19 80.5,19 84.09,19 87,16.09 87,12.5 87,8.91 84.09,6 80.5,6" - id="path3505" - inkscape:connector-curvature="0" /><path - d="m 117,65 -10,0 0,-10 10,0 0,10 z" - id="path3507" - inkscape:connector-curvature="0" /><path - d="M 149,8.33 147.67,7 144,10.67 140.33,7 139,8.33 142.67,12 139,15.67 140.33,17 144,13.33 147.67,17 149,15.67 145.33,12 149,8.33 z" - id="path3509" - inkscape:connector-curvature="0" /><path - d="m 44,59 2,3 0,4 4,0 0,-4 2,-3 z" - id="path3511" - inkscape:connector-curvature="0" - style="opacity:0.5;fill:#424242" /><path - d="m 46.5,65.23 c 0.32,0.13 0.84,0.24 1.47,0.24 0.59,0 1.14,-0.1 1.53,-0.26 l 0,-3.93 4,-4.57 0,-0.19 -11,0 0,0.22 4,4.57 0,3.93 z M 47.97,67 C 46.81,66.91 45.82,66.71 45,66.01 l 0,-4.12 -4,-4.57 0,-2.32 14,0 0,2.35 -4,4.57 0,4.13 c -0.92,0.67 -2.1,0.94 -3.03,0.95" - id="path3513" - inkscape:connector-curvature="0" /><path - d="M 86,60 76,55 76,65" - id="path3515" - inkscape:connector-curvature="0" /><path - d="m 153,57 -11,0 0,-2 11,0 0,2 z" - id="path3517" - inkscape:connector-curvature="0" - style="opacity:0.2" /><path - d="m 142,57 -6,0 0,-2 6,0 0,2 z" - id="path3519" - inkscape:connector-curvature="0" /><path - d="m 145,60 -6,0 0,-2 6,0 0,2 z" - id="path3521" - inkscape:connector-curvature="0" /><path - d="m 150,63 -6,0 0,-2 6,0 0,2 z" - id="path3523" - inkscape:connector-curvature="0" /><path - d="m 152,66 -6,0 0,-2 6,0 0,2 z" - id="path3525" - inkscape:connector-curvature="0" /><path - d="m 170,67 -2,0 0,-9 2,0 0,9 z" - id="path3527" - inkscape:connector-curvature="0" /><path - d="m 173,67 -2,0 0,-11 2,0 0,11 z" - id="path3529" - inkscape:connector-curvature="0" /><path - d="m 176,67 -2,0 0,-13 2,0 0,13 z" - id="path3531" - inkscape:connector-curvature="0" /><path - d="m 179,67 -2,0 0,-4 2,0 0,4 z" - id="path3533" - inkscape:connector-curvature="0" /><path - d="m 182,67 -2,0 0,-9 2,0 0,9 z" - id="path3535" - inkscape:connector-curvature="0" /><path - d="m 185,67 -2,0 0,-11 2,0 0,11 z" - id="path3537" - inkscape:connector-curvature="0" /><path - d="m 208,57 -10,0 0,-2 10,0 0,2 z" - id="path3539" - inkscape:connector-curvature="0" /><path - d="m 217,57 -5,0 0,-2 5,0 0,2 z" - id="path3541" - inkscape:connector-curvature="0" /><path - d="m 200,61 -2,0 0,-2 2,0 0,2 z" - id="path3543" - inkscape:connector-curvature="0" /><path - d="m 213,61 -10,0 0,-2 10,0 0,2 z" - id="path3545" - inkscape:connector-curvature="0" /><path - d="m 217,61 -2,0 0,-2 2,0 0,2 z" - id="path3547" - inkscape:connector-curvature="0" /><path - d="m 205,65 -7,0 0,-2 7,0 0,2 z" - id="path3549" - inkscape:connector-curvature="0" /><path - d="m 217,65 -8,0 0,-2 8,0 0,2 z" - id="path3551" - inkscape:connector-curvature="0" /><path - d="m 274,64 -7,0 0,-8 7,0 0,8 z m -9,2 14,0 0,-12 -14,0 0,12 z" - id="path3553" - inkscape:connector-curvature="0" /><path - d="m 298,12 c 0,3.31 2.69,6 6,6 3.31,0 6,-2.69 6,-6 0,-3.31 -2.69,-6 -6,-6 -3.31,0 -6,2.69 -6,6" - id="path3555" - inkscape:connector-curvature="0" /><path - d="m 295,36 c 0,4.97 4.03,9 9,9 l 0,0 c 4.97,0 9,-4.03 9,-9 l 0,0 c 0,-4.97 -4.03,-9 -9,-9 l 0,0 c -4.97,0 -9,4.03 -9,9" - id="path3557" - inkscape:connector-curvature="0" - style="fill:url(#A)" /><path - d="m 298,36 c 0,3.31 2.69,6 6,6 3.31,0 6,-2.69 6,-6 0,-3.31 -2.69,-6 -6,-6 -3.31,0 -6,2.69 -6,6" - id="path3559" - inkscape:connector-curvature="0" /><path - d="m 239,30 c -2.76,0 -5,2.24 -5,5 0,2.76 2.24,5 5,5 1.03,0 1.96,-0.31 2.75,-0.84 L 245.56,43 247,41.56 243.19,37.75 C 243.71,36.96 244,36.02 244,35 c 0,-2.76 -2.24,-5 -5,-5 z m 0,2 c 1.66,0 3,1.34 3,3 0,1.66 -1.34,3 -3,3 -1.66,0 -3,-1.34 -3,-3 0,-1.66 1.34,-3 3,-3 z" - id="path3561" - inkscape:connector-curvature="0" /><path - d="m 233.73,63.76 5.25,-3.23 5.32,2.23 4.95,-4.03" - stroke-miterlimit="10" - id="path3563" - inkscape:connector-curvature="0" - style="fill:none;stroke:#000000;stroke-width:1.48000002;stroke-miterlimit:10" /><path - d="m 231,67 0,-13 -1,0 0,14 21,0 0,-1 z" - id="path3565" - inkscape:connector-curvature="0" /><path - d="m 237,11 -4,0 0,-4 4,0 0,4 z" - id="path3567" - inkscape:connector-curvature="0" /><path - d="m 247,9 -9,0 0,-2 9,0 0,2 z" - id="path3569" - inkscape:connector-curvature="0" /><path - d="m 247,11 -9,0 0,-1 9,0 0,1 z" - id="path3571" - inkscape:connector-curvature="0" /><path - d="m 247,15 -9,0 0,-2 9,0 0,2 z" - id="path3573" - inkscape:connector-curvature="0" /><path - d="m 237,17 -4,0 0,-4 4,0 0,4 z" - id="path3575" - inkscape:connector-curvature="0" /><path - d="m 247,17 -9,0 0,-1 9,0 0,1 z" - id="path3577" - inkscape:connector-curvature="0" /><path - d="m 176,38.13 c -1.18,0 -2.13,-0.96 -2.13,-2.13 0,-1.18 0.96,-2.13 2.13,-2.13 1.18,0 2.13,0.96 2.13,2.13 0,1.18 -0.96,2.13 -2.13,2.13 m 8,-3.73 -2.93,-0.53 1.72,-2.39 -2.26,-2.26 -2.46,1.79 -0.47,-3 -3.2,0 -0.4,3.13 -2.53,-1.92 -2.26,2.26 1.99,2.59 -3.2,0.33 0,3.2 3.33,0.33 -2.12,2.59 2.26,2.26 2.53,-2.12 0.4,3.33 3.2,0 0.4,-3.2 2.53,1.99 2.26,-2.26 -1.79,-2.45 3,-0.47 0,-3.2 z" - id="path3579" - inkscape:connector-curvature="0" /><path - d="m 268.01,35.99 c 0.61,0.28 1.07,0.9 1.07,1.58 0.11,0.85 -0.05,1.72 0.12,2.57 0.27,0.54 1,0.28 1.43,0.55 0.49,0.24 0.48,1.01 -0.06,1.18 -0.56,0.22 -1.18,0.08 -1.74,-0.05 -0.71,-0.2 -1.41,-0.72 -1.5,-1.5 -0.18,-0.89 0.01,-1.8 -0.16,-2.68 -0.22,-0.64 -0.94,-0.9 -1.57,-0.93 -0.58,-0.1 -0.83,-0.94 -0.35,-1.3 0.51,-0.35 1.26,-0.14 1.69,-0.66 0.44,-0.48 0.29,-1.18 0.32,-1.78 0,-0.81 -0.02,-1.77 0.65,-2.34 0.66,-0.54 1.58,-0.71 2.41,-0.63 0.63,0 0.98,0.87 0.4,1.22 -0.44,0.37 -1.2,0.06 -1.51,0.65 -0.14,0.56 -0.05,1.15 -0.07,1.73 -0.01,0.75 -0.05,1.64 -0.72,2.13 -0.12,0.1 -0.26,0.19 -0.4,0.26" - id="path3581" - inkscape:connector-curvature="0" /><path - d="m 276.98,35.99 c -0.67,-0.3 -1.08,-1.02 -1.08,-1.75 -0.07,-0.76 0.03,-1.52 -0.06,-2.28 -0.24,-0.58 -0.98,-0.4 -1.46,-0.59 -0.59,-0.24 -0.48,-1.18 0.14,-1.31 0.73,-0.15 1.52,-0.01 2.18,0.32 0.56,0.28 0.95,0.86 0.99,1.48 0.13,0.83 -0.03,1.68 0.13,2.5 0.2,0.68 0.94,0.83 1.54,0.9 0.56,0.07 0.86,0.8 0.46,1.21 -0.44,0.46 -1.2,0.2 -1.65,0.66 -0.51,0.46 -0.4,1.21 -0.4,1.83 -0.03,0.78 0.06,1.69 -0.52,2.3 -0.74,0.65 -1.8,0.86 -2.75,0.68 -0.52,-0.16 -0.69,-1.01 -0.15,-1.25 0.44,-0.23 1.02,-0.08 1.41,-0.45 0.26,-0.45 0.09,-0.98 0.14,-1.47 0.01,-0.76 -0.07,-1.63 0.43,-2.26 0.18,-0.21 0.42,-0.37 0.66,-0.51" - id="path3583" - inkscape:connector-curvature="0" /><path - d="m 275,15 -2,0 0,-6 2,0 z m -4,0 -2,0 0,-6 2,0 z m 4,-10 -6,0 -4,4 0,6 4,4 6,0 4,-4.12 0,-5.88 z" - id="path3585" - inkscape:connector-curvature="0" /><path - d="m 139.5,33 9,0 -1.5,10 -6,0" - id="path3591" - inkscape:connector-curvature="0" /><path - d="m 147.5,30 -2,0 0,-1 -3,0 0,1 -2,0 c -0.55,0 -1,0.48 -1,1 l 0,1 1,0 7,0 1,0 0,-1 c 0,-0.52 -0.45,-1 -1,-1" - id="path3593" - inkscape:connector-curvature="0" /><path - d="m 317,69 0,-5 -5,5 5,0 z" - id="path3595" - inkscape:connector-curvature="0" /><path - d="m 23,84 -8,-5 0,10" - id="path3597" - inkscape:connector-curvature="0" /><path - d="m 13,89 -3,0 0,-10 3,0 0,10 z" - id="path3599" - inkscape:connector-curvature="0" /><path - d="m 47,88 -3,0 0,-8 3,0 0,8 z" - id="path3601" - inkscape:connector-curvature="0" /><path - d="m 53,88 -3,0 0,-8 3,0 0,8 z" - id="path3603" - inkscape:connector-curvature="0" /><path - d="m 78.5,89 c 0,1.1 0.9,2 2,2 1.1,0 2,-0.9 2,-2 0,-1.1 -0.9,-2 -2,-2 -1.1,0 -2,0.9 -2,2" - id="path3605" - inkscape:connector-curvature="0" /><path - d="m 79,78 0,4 -3,0 4.5,4 4.5,-4 -3,0 0,-4 -3,0 z" - id="path3607" - inkscape:connector-curvature="0" /><path - d="m 110.5,89 c 0,1.1 0.9,2 2,2 1.1,0 2,-0.9 2,-2 0,-1.1 -0.9,-2 -2,-2 -1.1,0 -2,0.9 -2,2" - id="path3609" - inkscape:connector-curvature="0" /><path - d="m 112.5,78 -4.5,4 3,0 0,4 3,0 0,-4 3,0 -4.5,-4 z" - id="path3611" - inkscape:connector-curvature="0" /><path - d="m 142,86.5 c 0,1.1 0.9,2 2,2 1.1,0 2,-0.9 2,-2 0,-1.1 -0.9,-2 -2,-2 -1.1,0 -2,0.9 -2,2" - id="path3613" - inkscape:connector-curvature="0" /><path - d="m 137.25,87.03 c 2.55,-8.43 11.4,-8.73 13.94,0" - id="path3615" - inkscape:connector-curvature="0" - style="fill:none;stroke:#000000;stroke-width:2.5" /><path - d="m 151.68,89 -4.54,-2.76 6.68,-2.1" - id="path3617" - inkscape:connector-curvature="0" /><path - d="m 12,102 -7,-4 0,8" - id="path3619" - inkscape:connector-curvature="0" /><path - d="m 24,106 4,-7 -8,0" - id="path3621" - inkscape:connector-curvature="0" /><path - d="m 8,111 4,7 -8,0" - id="path3623" - inkscape:connector-curvature="0" /><path - d="m 54,105 0,7 -10,0 0,-7 z m 1,8 0,-11 -12,0 0,11 z" - id="path3625" - inkscape:connector-curvature="0" /><rect - height="3" - ry="0" - width="12" - x="73" - y="110" - id="rect3627" - style="opacity:0.81999984" /><rect - height="12" - width="14" - x="168.5" - y="78.5" - id="rect3629" - style="fill:none;stroke:#000000" /><path - d="m 180,84.5 -5,-3.25 0,6.5" - id="path3631" - inkscape:connector-curvature="0" /><rect - height="13" - width="1" - x="172" - y="78" - id="rect3633" /><rect - height="12" - width="14" - x="200.5" - y="78.5" - id="rect3635" - style="fill:none;stroke:#000000" /><path - d="m 207,84.5 5,-3.25 0,6.5" - id="path3637" - inkscape:connector-curvature="0" /><rect - height="13" - width="1" - x="204" - y="78" - id="rect3639" /><rect - height="12" - width="14" - x="264.5" - y="78.5" - id="rect3641" - style="fill:none;stroke:#000000" /><path - d="m 272,84.5 -5,-3.25 0,6.5" - id="path3643" - inkscape:connector-curvature="0" /><rect - height="13" - width="1" - x="274" - y="78" - id="rect3645" /><rect - height="12" - width="14" - x="296.5" - y="78.5" - id="rect3647" - style="fill:none;stroke:#000000" /><path - d="m 299,84.5 5,-3.25 0,6.5" - id="path3649" - inkscape:connector-curvature="0" /><rect - height="13" - width="1" - x="306" - y="78" - id="rect3651" /><path - d="m 118,96 c -3.87,0 -7,3.13 -7,7 0,3.87 3.13,7 7,7 3.87,0 7,-3.13 7,-7 0,-3.87 -3.13,-7 -7,-7" - id="path3653" - inkscape:connector-curvature="0" - style="fill:url(#m)" /><path - d="m 111.5,103 c 0,3.59 2.91,6.5 6.5,6.5 3.59,0 6.5,-2.91 6.5,-6.5 0,-3.59 -2.91,-6.5 -6.5,-6.5 -3.59,0 -6.5,2.91 -6.5,6.5" - id="path3655" - inkscape:connector-curvature="0" - style="fill:#f27d82" /><path - d="m 121.5,100.93 -0.93,-0.93 -2.57,2.57 -2.57,-2.57 -0.93,0.93 2.57,2.57 -2.57,2.57 0.93,0.93 2.57,-2.57 2.57,2.57 0.93,-0.93 -2.57,-2.57 2.57,-2.57 z" - id="path3657" - inkscape:connector-curvature="0" - style="fill-opacity:0.36000001" /><path - d="m 121.5,100.43 -0.93,-0.93 -2.57,2.57 -2.57,-2.57 -0.93,0.93 2.57,2.57 -2.57,2.57 0.93,0.93 2.57,-2.57 2.57,2.57 0.93,-0.93 -2.57,-2.57 2.57,-2.57 z" - id="path3659" - inkscape:connector-curvature="0" - style="fill:#ffffff" /><path - d="m 138.5,100.93 -0.93,-0.93 -2.57,2.57 -2.57,-2.57 -0.93,0.93 2.57,2.57 -2.57,2.57 0.93,0.93 2.57,-2.57 2.57,2.57 0.93,-0.93 -2.57,-2.57 2.57,-2.57 z" - id="path3661" - inkscape:connector-curvature="0" - style="fill-opacity:0.23999999" /><path - d="m 138.5,100.43 -0.93,-0.93 -2.57,2.57 -2.57,-2.57 -0.93,0.93 2.57,2.57 -2.57,2.57 0.93,0.93 2.57,-2.57 2.57,2.57 0.93,-0.93 -2.57,-2.57 2.57,-2.57 z" - id="path3663" - inkscape:connector-curvature="0" - style="fill:#676767" /><path - d="m 103,110 c 3.87,0 7,-3.13 7,-7 0,-3.87 -3.13,-7 -7,-7 -3.87,0 -7,3.13 -7,7 0,3.87 3.13,7 7,7" - id="path3665" - inkscape:connector-curvature="0" - style="fill:url(#o)" /><path - d="m 103,96.5 c -3.59,0 -6.5,2.91 -6.5,6.5 0,3.59 2.91,6.5 6.5,6.5 3.59,0 6.5,-2.91 6.5,-6.5 0,-3.59 -2.91,-6.5 -6.5,-6.5" - id="path3667" - inkscape:connector-curvature="0" - style="fill:url(#n)" /><path - d="m 106.5,100.93 -0.93,-0.93 -2.57,2.57 -2.57,-2.57 -0.93,0.93 2.57,2.57 -2.57,2.57 0.93,0.93 2.57,-2.57 2.57,2.57 0.93,-0.93 -2.57,-2.57 2.57,-2.57 z" - id="path3669" - inkscape:connector-curvature="0" - style="fill:#993c35" /><path - d="m 106.5,100.43 -0.93,-0.93 -2.57,2.57 -2.57,-2.57 -0.93,0.93 2.57,2.57 -2.57,2.57 0.93,0.93 2.57,-2.57 2.57,2.57 0.93,-0.93 -2.57,-2.57 2.57,-2.57 z" - id="path3671" - inkscape:connector-curvature="0" - style="fill:#ffffff" /><path - d="m 143,102.5 c 0,3.59 2.91,6.5 6.5,6.5 3.59,0 6.5,-2.91 6.5,-6.5 0,-3.59 -2.91,-6.5 -6.5,-6.5 -3.59,0 -6.5,2.91 -6.5,6.5" - id="path3673" - inkscape:connector-curvature="0" - style="fill:#bebebe" /><path - d="m 153,100.43 -0.93,-0.93 -2.57,2.57 -2.57,-2.57 -0.93,0.93 2.57,2.57 -2.57,2.57 0.93,0.93 2.57,-2.57 2.57,2.57 0.93,-0.93 -2.57,-2.57 2.57,-2.57 z" - id="path3675" - inkscape:connector-curvature="0" - style="fill-opacity:0.37000002" /><path - d="M 153,99.93 152.07,99 149.5,101.57 146.93,99 146,99.93 l 2.57,2.57 -2.57,2.57 0.93,0.93 2.57,-2.57 2.57,2.57 0.93,-0.93 -2.57,-2.57 2.57,-2.57 z" - id="path3677" - inkscape:connector-curvature="0" - style="fill:#ffffff" /><path - d="m 160,102.5 c 0,3.59 2.91,6.5 6.5,6.5 3.59,0 6.5,-2.91 6.5,-6.5 0,-3.59 -2.91,-6.5 -6.5,-6.5 -3.59,0 -6.5,2.91 -6.5,6.5" - id="path3679" - inkscape:connector-curvature="0" - style="fill:#9f9f9f" /><path - d="m 170,100.43 -0.93,-0.93 -2.57,2.57 -2.57,-2.57 -0.93,0.93 2.57,2.57 -2.57,2.57 0.93,0.93 2.57,-2.57 2.57,2.57 0.93,-0.93 -2.57,-2.57 2.57,-2.57 z" - id="path3681" - inkscape:connector-curvature="0" - style="fill-opacity:0.36000001" /><path - d="M 170,99.93 169.07,99 166.5,101.57 163.93,99 163,99.93 l 2.57,2.57 -2.57,2.57 0.93,0.93 2.57,-2.57 2.57,2.57 0.93,-0.93 -2.57,-2.57 2.57,-2.57 z" - id="path3683" - inkscape:connector-curvature="0" - style="fill:#ffffff" /><path - d="m 184.5,100.43 -0.93,-0.93 -2.57,2.57 -2.57,-2.57 -0.93,0.93 2.57,2.57 -2.57,2.57 0.93,0.93 2.57,-2.57 2.57,2.57 0.93,-0.93 -2.57,-2.57 2.57,-2.57 z" - id="path3685" - inkscape:connector-curvature="0" - style="fill-opacity:0.23999999" /><path - d="M 184.5,99.93 183.57,99 181,101.57 178.43,99 l -0.93,0.93 2.57,2.57 -2.57,2.57 0.93,0.93 2.57,-2.57 2.57,2.57 0.93,-0.93 -2.57,-2.57 2.57,-2.57 z" - id="path3687" - inkscape:connector-curvature="0" - style="fill:#676767" /><path - d="m 131.65,116.21 -1.44,-2.03 -1.21,1.21 2.55,3.61 6.45,-7.67 -1.12,-1.33 z" - id="path3689" - inkscape:connector-curvature="0" /><path - d="m 195.75,97.75 3.5,3.25 -3.5,3.25" - id="path3691" - inkscape:connector-curvature="0" - style="fill:none;stroke:#367cf1;stroke-width:1.5" /><path - d="m 195.75,108.75 3.5,3.25 -3.5,3.25" - id="path3693" - inkscape:connector-curvature="0" - style="fill:none;stroke:#939393;stroke-width:1.5" /><path - d="m 209,101 c 0,0.55 0.45,1 1,1 0.55,0 1,-0.45 1,-1 0,-0.55 -0.45,-1 -1,-1 -0.55,0 -1,0.45 -1,1" - id="path3695" - inkscape:connector-curvature="0" - style="fill:#bababa" /><path - d="m 208.25,97.75 -3.5,3.25 3.5,3.25" - id="path3697" - inkscape:connector-curvature="0" - style="fill:none;stroke:#bababa;stroke-width:1.5" /><path - d="m 218,96 c -2.76,0 -5,2.24 -5,5 0,2.76 2.24,5 5,5 2.76,0 5,-2.24 5,-5 0,-2.76 -2.24,-5 -5,-5" - id="path3699" - inkscape:connector-curvature="0" - style="fill:url(#p)" /><path - d="m 213.36,101 c 0,2.56 2.08,4.64 4.64,4.64 2.56,0 4.64,-2.08 4.64,-4.64 0,-2.56 -2.08,-4.64 -4.64,-4.64 -2.56,0 -4.64,2.08 -4.64,4.64" - id="path3701" - inkscape:connector-curvature="0" - style="fill:#eb3941" /><path - d="m 216,99 4,4" - id="path3703" - inkscape:connector-curvature="0" - style="stroke:#ffffff" /><path - d="m 220,99 -4,4" - id="path3705" - inkscape:connector-curvature="0" - style="stroke:#ffffff" /><path - d="m 203,116 4,-8 4,8 z" - id="path3707" - inkscape:connector-curvature="0" - style="stroke:#c19600;stroke-width:2;stroke-linejoin:round" /><path - d="m 203,116 4,-8 4,8 z" - id="path3709" - inkscape:connector-curvature="0" - style="fill:#f4bd00;stroke:#f5bd00;stroke-width:1.5;stroke-linejoin:round" /><path - d="m 205.75,109.75 2.5,0 0,2.5 -0.5,1.75 -1.5,0 -0.5,-1.75 0,-2.5 m 0,5.25 2.5,0 0,1.25 -2.5,0" - id="path3711" - inkscape:connector-curvature="0" - style="fill:#ad8601" /><path - d="m 206,110 2,0 0,2.25 -0.5,1.75 -1,0 -0.5,-1.75 0,-2.25 m 0,5 2,0 0,1 -2,0" - id="path3713" - inkscape:connector-curvature="0" - style="fill:#ffffff" /><path - d="m 229,106 c -2.76,0 -5,-2.24 -5,-5 0,-2.76 2.24,-5 5,-5 2.76,0 5,2.24 5,5 0,2.76 -2.24,5 -5,5 z" - id="path3715" - inkscape:connector-curvature="0" - style="fill:url(#r)" /><path - d="m 233.5,101 c 0,2.49 -2.01,4.5 -4.5,4.5 -2.49,0 -4.5,-2.01 -4.5,-4.5 0,-2.49 2.01,-4.5 4.5,-4.5 2.49,0 4.5,2.01 4.5,4.5 z" - id="path3717" - inkscape:connector-curvature="0" - style="fill:#dd0000" /><path - d="m 229.03,96.53 c 1.97,0 3.56,1.02 3.56,2.28 0,1.26 -1.59,2.28 -3.56,2.28 -1.97,0 -3.56,-1.02 -3.56,-2.28 0,-1.26 1.59,-2.28 3.56,-2.28 z" - id="path3719" - inkscape:connector-curvature="0" - style="fill:url(#s)" /><path - d="m 229.03,105.47 c 1.66,0 3,-0.71 3,-1.59 0,-0.88 -1.34,-1.59 -3,-1.59 -1.66,0 -3,0.71 -3,1.59 0,0.88 1.34,1.59 3,1.59 z" - id="path3721" - inkscape:connector-curvature="0" - style="fill:url(#t)" /><path - d="m 239.95,106 c -2.76,-0.03 -4.98,-2.29 -4.95,-5.05 0.03,-2.76 2.29,-4.98 5.05,-4.95 2.76,0.03 4.98,2.29 4.95,5.05 -0.03,2.76 -2.29,4.98 -5.05,4.95 z" - id="path3723" - inkscape:connector-curvature="0" - style="fill:url(#u)" /><path - d="m 244.5,101.05 c -0.03,2.49 -2.06,4.48 -4.55,4.45 -2.49,-0.03 -4.48,-2.06 -4.45,-4.55 0.03,-2.49 2.06,-4.48 4.55,-4.45 2.49,0.03 4.48,2.06 4.45,4.55 z" - id="path3725" - inkscape:connector-curvature="0" - style="fill:#00be00" /><path - d="m 240.08,96.53 c 1.97,0.02 3.55,1.06 3.54,2.32 -0.01,1.26 -1.62,2.26 -3.59,2.24 -1.97,-0.02 -3.55,-1.06 -3.54,-2.32 0.01,-1.26 1.62,-2.26 3.59,-2.24 z" - id="path3727" - inkscape:connector-curvature="0" - style="fill:url(#v)" /><path - d="m 239.98,105.41 c 1.66,0.02 3.01,-0.68 3.02,-1.56 0.01,-0.88 -1.33,-1.61 -2.98,-1.63 -1.66,-0.02 -3.01,0.68 -3.02,1.56 -0.01,0.88 1.33,1.61 2.98,1.63 z" - id="path3729" - inkscape:connector-curvature="0" - style="fill:url(#w)" /><path - d="m 251,106 c -2.76,0 -5,-2.24 -5,-5 0,-2.76 2.24,-5 5,-5 2.76,0 5,2.24 5,5 0,2.76 -2.24,5 -5,5 z" - id="path3731" - inkscape:connector-curvature="0" - style="fill:#e5a600" /><path - d="m 255.5,101 c 0,2.49 -2.01,4.5 -4.5,4.5 -2.49,0 -4.5,-2.01 -4.5,-4.5 0,-2.49 2.01,-4.5 4.5,-4.5 2.49,0 4.5,2.01 4.5,4.5 z" - id="path3733" - inkscape:connector-curvature="0" - style="fill:#ffbd00" /><path - d="m 251.03,96.53 c 1.97,0 3.56,1.02 3.56,2.28 0,1.26 -1.59,2.28 -3.56,2.28 -1.97,0 -3.56,-1.02 -3.56,-2.28 0,-1.26 1.59,-2.28 3.56,-2.28 z" - id="path3735" - inkscape:connector-curvature="0" - style="fill:url(#x)" /><path - d="m 250.99,105.42 c 1.66,0 3,-0.71 3,-1.59 0,-0.88 -1.34,-1.59 -3,-1.59 -1.66,0 -3,0.71 -3,1.59 0,0.88 1.34,1.59 3,1.59 z" - id="path3737" - inkscape:connector-curvature="0" - style="fill:url(#y)" /><rect - height="12" - rx="0.25" - ry="0.25" - style="fill-opacity:0.38000016;stroke:#000000;stroke-width:2;stroke-linejoin:round;stroke-miterlimit:0" - width="8" - x="268" - y="102" - id="rect3739" /><path - d="m 218,107 c -2.76,0 -5,2.24 -5,5 0,2.76 2.24,5 5,5 2.76,0 5,-2.24 5,-5 0,-2.76 -2.24,-5 -5,-5" - id="path3741" - inkscape:connector-curvature="0" - style="fill:url(#q)" /><path - d="m 213.36,112 c 0,2.56 2.08,4.64 4.64,4.64 2.56,0 4.64,-2.08 4.64,-4.64 0,-2.56 -2.08,-4.64 -4.64,-4.64 -2.56,0 -4.64,2.08 -4.64,4.64" - id="path3743" - inkscape:connector-curvature="0" - style="fill:#2a53cd" /><path - d="m 216.93,109.14 c -0.03,-0.53 0.55,-0.97 1.06,-0.83 0.5,0.12 0.79,0.73 0.56,1.18 -0.2,0.44 -0.79,0.61 -1.2,0.36 -0.26,-0.14 -0.42,-0.42 -0.42,-0.71 z m 1.7,5.46 c 0.22,0 0.45,0 0.67,0 0,0.18 0,0.35 0,0.53 -0.96,0 -1.93,0 -2.89,0 0,-0.18 0,-0.35 0,-0.53 0.22,0 0.44,0 0.66,0 0,-1.2 0,-2.41 0,-3.61 -0.22,0 -0.44,0 -0.66,0 0,-0.18 0,-0.35 0,-0.53 0.74,0 1.48,0 2.22,0 0,1.38 0,2.76 0,4.14 z" - id="path3745" - inkscape:connector-curvature="0" - style="fill:#ffffff" /><rect - height="8" - rx="0.25" - ry="0.25" - style="fill-opacity:0.38000016;stroke:#000000;stroke-width:2;stroke-linejoin:round;stroke-miterlimit:0" - width="12" - x="298" - y="104" - id="rect3747" /><path - d="m 12.25,125 c -0.68,0 -1.25,0.57 -1.25,1.25 l 0,9.69 2,-3.31 0,-5.63 3.38,0 1.19,-2 -5.31,0 z m 8.75,3.06 -2,3.31 0,5.63 -3.38,0 -1.19,2 5.31,0 c 0.68,0 1.25,-0.57 1.25,-1.25 l 0,-9.69 z" - id="path3749" - inkscape:connector-curvature="0" - style="stroke-width:2" /><path - d="m 10.75,140.75 10.5,-17.5" - id="path3751" - inkscape:connector-curvature="0" - style="fill:none;stroke:#000000;stroke-width:2" /><path - d="m 46,128 7,0 0,8 -7,0 0,-8 z m 9,-2 -14,0 0,12 14,0 0,-12 z" - id="path3753" - inkscape:connector-curvature="0" /><rect - height="6" - width="3" - x="73" - y="129" - id="rect3755" /><rect - height="6" - width="3" - x="77" - y="129" - id="rect3757" /><rect - height="6" - width="3" - x="81" - y="129" - id="rect3759" /><rect - height="10" - rx="1" - ry="1" - width="15" - x="71" - y="127" - id="rect3761" - style="fill:none;stroke:#000000;stroke-width:2;stroke-linejoin:round" /><path - d="m 86,129 c 3,0 3,0 3,3 0,3 0,3 -3,3" - id="path3763" - inkscape:connector-curvature="0" - style="fill:none;stroke:#000000;stroke-width:2" /><path - d="m 227.25,107 c -0.7,0 -1.25,0.5 -1.25,1.25 l 0,7.5 c 0,0.7 0.5,1.25 1.25,1.25 l 3.5,0 c 0.7,0 1.25,-0.5 1.25,-1.25 l 0,-7.5 c 0,-0.7 -0.5,-1.25 -1.25,-1.25 l -3.5,0 z m -0.25,1 4,0 0,7 -4,0 0,-7 z m 2,7.25 c 0.4,0 0.75,0.3 0.75,0.75 0,0.4 -0.3,0.75 -0.75,0.75 -0.4,0 -0.75,-0.3 -0.75,-0.75 0,-0.4 0.3,-0.75 0.75,-0.75 z" - id="path3765" - inkscape:connector-curvature="0" /><path - style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" - d="m 110.49999,127.4989 -1,0 2,-2 2,2 -1,0 c 0,0 -0.0345,4.6379 -0.0345,4.0345 l 4.03448,-0.034 0,-1 2,2 -2,2 0,-1 -4.03449,-0.034 0.0345,4.0346 1,0 -2,2 -2,-2 1,0 0.0345,-4.0346 -4.03448,0.034 0,1 -2,-2 2,-2 0,1 4.03448,0.034 z" - id="path3550" - inkscape:connector-curvature="0" - sodipodi:nodetypes="ccccccccccccccccccccccccc" - inkscape:export-filename="/usr/local/google/home/caseq/aa.png" - inkscape:export-xdpi="90" - inkscape:export-ydpi="90" /><path - sodipodi:type="arc" - style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:2.77777767;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" - id="path3635" - sodipodi:cx="50" - sodipodi:cy="14" - sodipodi:rx="3" - sodipodi:ry="3" - d="m 53,14 a 3,3 0 1 1 -6,0 3,3 0 1 1 6,0 z" - transform="matrix(0.36,0,0,0.36,125.49998,127.46)" /><path - style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" - d="m 143.48385,129.5 2.54033,-2 -1.5242,0 0,-2 -2,0 -0.0161,2 -1.54033,0 z" - id="path4411-7" - inkscape:connector-curvature="0" - sodipodi:nodetypes="cccccccc" /><path - style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" - d="m 146.49998,132.5 2,2.5 0,-1.4998 2,-1e-4 0,-2.0002 -2,1e-4 0,-1.5 z" - id="path4411-7-7" - inkscape:connector-curvature="0" - sodipodi:nodetypes="cccccccc" /><path - style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" - d="m 143.49998,135.5 -2.5,2 1.5,0 0,2 2,0 0,-2 1.5,0 z" - id="path4411-7-7-3" - inkscape:connector-curvature="0" - sodipodi:nodetypes="cccccccc" /><path - style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" - d="m 140.49998,132.5 -2,-2.5 0,1.4999 -2,0 0,2.0002 2,-3e-4 0,1.5002 z" - id="path4411-7-7-3-5" - inkscape:connector-curvature="0" - sodipodi:nodetypes="cccccccc" /><path - style="fill:#000000;fill-opacity:1;stroke:none" - inkscape:connector-curvature="0" - d="m 169.19838,130.1487 c 0.0551,-0.1128 0.15339,-0.22 0.2313,-0.3064 0.54584,-0.6074 1.38893,-1.1974 3.00529,-1.5702 l 0,-2.1715 c -1.29309,0.2523 -2.31462,0.6686 -3.304,1.5597 -0.33248,0.3832 -0.50543,0.6247 -0.514,1.1665 -0.007,0.443 0.17732,0.8863 0.58141,1.3219 z m 6.63093,3.1292 c -1.61635,-0.024 -3.10906,-0.2558 -4.62277,-0.764 -2.69382,-0.9037 -3.02857,-2.1697 -3.17032,-2.5931 -0.0958,1.6897 0.028,2.9573 0.0346,3.0648 0.092,1.5004 1.29179,2.6742 2.15751,3.1151 1.7796,0.9067 3.66137,1.3756 5.60099,1.4151 l 0,2.4842 3.25098,-4.6483 -3.25098,-4.6486 0,2.5748 z m -0.32327,-5.2959 c 1.61636,0.01 3.45286,0.3384 5.2454,1.1131 0.73528,0.3177 1.32751,0.7904 1.80821,1.3048 0.33152,-0.1523 0.80672,-0.7308 0.74126,-1.2923 -0.16163,-1.3879 -1.62637,-2.1912 -1.88014,-2.3045 -1.7704,-0.7908 -3.9751,-1.0356 -5.91473,-1.0589 l 0,-1.7442 -2.01317,2.8787 2.01317,2.8783 0,-1.775 z m 8.42363,1.8658 c -0.0824,0.6478 -0.82676,2.0349 -3.89784,2.9138 l 0,4.5247 c 1.13145,-0.3677 2.46495,-1.2956 3.17873,-2.1988 0.2911,-0.3677 0.46906,-0.875 0.57736,-1.242 0.33216,-1.1229 0.18604,-3.3136 0.14175,-3.9977 z" - id="Rotate" - sketch:type="MSShapeGroup" /><path - inkscape:connector-curvature="0" - d="M 233,88.08946 V 91 h 2.91054 L 244.1944,82.71614 241.28385,79.8056 233,88.08946 z m 13.76911,-7.9387 c 0.30785,-0.30785 0.30785,-0.79294 0,-1.10079 l -1.81908,-1.81909 c -0.30785,-0.30784 -0.79295,-0.30784 -1.10078,0 l -1.52058,1.52991 2.91054,2.91054 1.5299,-1.52057 z" - id="path4" /><path - style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:1.99999976;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4.19999981;stroke-opacity:1;stroke-dasharray:none" - d="m 107,33 8,0 0,6 -8,0 z" - id="path3963" - inkscape:connector-curvature="0" - sodipodi:nodetypes="ccccc" /><g - id="g3234"><path - style="fill:url(#linearGradient3239)" - inkscape:connector-curvature="0" - id="path3699-5" - d="m 250,107 c -2.76,0 -5,2.24 -5,5 0,2.76 2.24,5 5,5 2.76,0 5,-2.24 5,-5 0,-2.76 -2.24,-5 -5,-5" /><path - id="path3701-0" - d="m 245.36,112 c 0,2.56 2.08,4.64 4.64,4.64 2.56,0 4.64,-2.08 4.64,-4.64 0,-2.56 -2.08,-4.64 -4.64,-4.64 -2.56,0 -4.64,2.08 -4.64,4.64" - inkscape:connector-curvature="0" - style="fill:#f4979b;fill-opacity:1" /><path - style="fill:#ffffff;fill-opacity:1" - id="path3689-2" - d="m 248.64912,113.55532 -1.12,-1.57887 -0.94113,0.9411 1.98332,2.80777 5.01668,-5.96555 -0.8711,-1.03445 z" - inkscape:connector-curvature="0" /></g><g - id="Animations-Toggle" - transform="translate(199.99866,124.00442)"><path - d="M 6,2 12,8 6,14 0,8" - id="path3453" - inkscape:connector-curvature="0" /><path - d="M 8.5,12.5 10,14 16,8 10,2 8.5,3.5 13,8 8.5,12.5 z" - id="path3455" - inkscape:connector-curvature="0" - style="opacity:0.5" /></g><path - inkscape:connector-curvature="0" - d="m 240.76701,127 -1.53402,0 0,4.23299 -4.23299,0 0,1.53402 4.23299,0 0,4.23299 1.53402,0 0,-4.23299 4.23299,0 0,-1.53402 -4.23299,0 0,-4.23299 z" - id="path3509-0" /><path - style="fill:none" - inkscape:connector-curvature="0" - d="m 228.56466,156.76923 h 48 v 48 h -48 z" - id="path3712" /><path - inkscape:connector-curvature="0" - d="m 310.7696,127.0439 -1.81599,-1.81636 c -0.30331,-0.30338 -0.79716,-0.30338 -1.10048,0 l -2.43038,2.43089 -1.48935,-1.49354 -1.10047,1.1007 1.10437,1.1046 L 297,135.30504 V 139 h 3.69419 l 6.9373,-6.93874 1.10048,1.1046 1.10048,-1.10072 -1.49324,-1.49353 2.43039,-2.43089 c 0.3072,-0.30338 0.3072,-0.79345 0,-1.09682 z m -10.72092,10.40033 -1.49324,-1.49354 6.27235,-6.27365 1.49323,1.49354 -6.27234,6.27365 z" - id="path3714" /><g - id="Page-1" - sketch:type="MSPage" - transform="translate(328,28)" - style="fill:none;stroke:none"><g - id="Replay" - sketch:type="MSArtboardGroup" - style="fill:#000000"><path - d="M 2.5858334,13.890843 C 0.99596482,12.428959 0,10.331325 0,8 0,3.58 3.58,0 8,0 c 4.42,0 8,3.58 8,8 0,4.42 -3.58,8 -8,8 l 0,-1.6 0,0 c 3.528,0 6.4,-2.872 6.4,-6.4 C 14.4,4.472 11.528,1.6 8,1.6 4.472,1.6 1.6,4.472 1.6,8 c 0,1.9357374 0.8646098,3.673987 2.2277938,4.848714 L 5.520254,11.428571 5.5353988,15.891545 1.1428571,15.101644 2.5858334,13.890843 z M 6.5066666,11.428571 11.078095,8 6.5066666,4.5714286 l 0,6.8571424 z" - id="Shape" - sketch:type="MSShapeGroup" - inkscape:connector-curvature="0" /></g></g><path - d="m 276,127 1,-1 0,-1 -8,0 0,1 1,1 0,5 -2,1 0,2 4,0 -0.0447,3.9835 L 273,140 l 1,-1 0,-4 4,0 0,-2 -2,-1 0,-5 z" - id="path3214" - inkscape:connector-curvature="0" - style="fill:#010101" - sodipodi:nodetypes="ccccccccccccccccccc" /><path - d="M 0,24 H 24 V 48 H 0 z" - id="path3216" - inkscape:connector-curvature="0" - style="fill:none" /><path - d="m 328,60 c 0,4.42 3.58,8 8,8 4.42,0 8,-3.58 8,-8 0,-4.42 -3.58,-8 -8,-8 -4.42,0 -8,3.58 -8,8 z m 8,6.4 c -3.528,0 -6.4,-2.872 -6.4,-6.4 0,-3.528 2.872,-6.4 6.4,-6.4 3.528,0 6.4,2.872 6.4,6.4 0,3.528 -2.872,6.4 -6.4,6.4 z M 334.50667,63.428571 339.0781,60 l -4.57143,-3.428571 0,6.857142 z" - id="Icon" - sketch:type="MSShapeGroup" - inkscape:connector-curvature="0" /><path - d="m 333.6,15.2 1.6,0 0,-6.4 -1.6,0 0,6.4 0,0 z M 336,4 c -4.42,0 -8,3.58 -8,8 0,4.42 3.58,8 8,8 4.42,0 8,-3.58 8,-8 0,-4.42 -3.58,-8 -8,-8 l 0,0 z m 0,14.4 c -3.528,0 -6.4,-2.872 -6.4,-6.4 0,-3.528 2.872,-6.4 6.4,-6.4 3.528,0 6.4,2.872 6.4,6.4 0,3.528 -2.872,6.4 -6.4,6.4 l 0,0 z m 0.8,-3.2 1.6,0 0,-6.4 -1.6,0 0,6.4 0,0 z" - id="path3448" - sketch:type="MSShapeGroup" - inkscape:connector-curvature="0" /><path - inkscape:connector-curvature="0" - id="path3871" - d="m 115,36 4,-4 0,8" /><path - d="M 0,24 H 24 V 48 H 0 z m 0,0 H 24 V 48 H 0 z m 0,0 H 24 V 48 H 0 z m 0,0 H 24 V 48 H 0 z" - id="path3510" - inkscape:connector-curvature="0" - style="fill:none" /><path - d="m 208.00365,8.385948 c 2.00818,0 3.63802,1.629832 3.63802,3.638017 0,0.472943 -0.0946,0.916781 -0.26194,1.331515 l 2.1246,2.124602 c 1.09868,-0.91678 1.96453,-2.102774 2.49568,-3.456117 -1.25875,-3.194178 -4.36562,-5.457025 -8.00364,-5.457025 -1.01864,0 -1.99363,0.181901 -2.89586,0.509322 l 1.57162,1.571624 c 0.41474,-0.167349 0.85858,-0.261938 1.33152,-0.261938 z m -7.27604,-1.986357 1.65894,1.658936 0.3347,0.334697 c -1.20782,0.938609 -2.15371,2.190087 -2.72124,3.630741 1.25875,3.19418 4.36562,5.457026 8.00364,5.457026 1.12778,0 2.20464,-0.218281 3.1869,-0.611187 l 0.30559,0.305594 2.13188,2.124602 0.92406,-0.924056 -12.90041,-12.90041 -0.92406,0.924057 z m 4.02365,4.023647 1.12779,1.127785 c -0.0364,0.152797 -0.0582,0.31287 -0.0582,0.472942 0,1.207822 0.97499,2.182811 2.18281,2.182811 0.16007,0 0.32014,-0.02183 0.47294,-0.05821 l 1.12779,1.127785 c -0.4875,0.240109 -1.02593,0.38563 -1.60073,0.38563 -2.00819,0 -3.63802,-1.629832 -3.63802,-3.638018 0,-0.574806 0.14552,-1.113233 0.38563,-1.600727 z m 3.13597,-0.567531 2.29195,2.291951 0.0145,-0.116417 c 0,-1.207821 -0.97498,-2.18281 -2.18281,-2.18281 l -0.12369,0.0073 z" - id="path3512" - inkscape:connector-curvature="0" /><path - d="M 0,24 H 24 V 48 H 0 z" - id="path3223" - inkscape:connector-curvature="0" - style="fill:none" /><path - d="m 111.99999,6.690909 c -3.63635,0 -6.74181,2.261818 -7.99999,5.454546 1.25818,3.192727 4.36364,5.454545 7.99999,5.454545 3.63636,0 6.74182,-2.261818 8,-5.454545 -1.25818,-3.192728 -4.36364,-5.454546 -8,-5.454546 z m 0,9.090909 c -2.00726,0 -3.63635,-1.629091 -3.63635,-3.636363 0,-2.007273 1.62909,-3.636364 3.63635,-3.636364 2.00727,0 3.63636,1.629091 3.63636,3.636364 0,2.007272 -1.62909,3.636363 -3.63636,3.636363 z m 0,-5.818182 c -1.20726,0 -2.18181,0.974546 -2.18181,2.181819 0,1.207272 0.97455,2.181818 2.18181,2.181818 1.20727,0 2.18182,-0.974546 2.18182,-2.181818 0,-1.207273 -0.97455,-2.181819 -2.18182,-2.181819 z" - id="path3225" - inkscape:connector-curvature="0" /><path - d="M 0,24 H 24 V 48 H 0 z" - id="path3224" - inkscape:connector-curvature="0" - style="fill:none" /><path - d="m 338.33036,76.32322 h -4.57143 v 1.52381 h 4.57143 v -1.52381 z m -3.04762,9.90477 h 1.52381 v -4.57143 h -1.52381 v 4.57143 z m 6.11809,-5.03619 1.08191,-1.08191 c -0.32762,-0.38857 -0.68572,-0.75428 -1.07429,-1.07428 l -1.0819,1.0819 c -1.18095,-0.94476 -2.66667,-1.50857 -4.28191,-1.50857 -3.78667,0 -6.85714,3.07047 -6.85714,6.85714 0,3.78667 3.06285,6.85714 6.85714,6.85714 3.79429,0 6.85715,-3.07047 6.85715,-6.85714 0,-1.61524 -0.56382,-3.10095 -1.50096,-4.27428 z m -5.35619,9.60761 c -2.94857,0 -5.33333,-2.38476 -5.33333,-5.33333 0,-2.94857 2.38476,-5.33333 5.33333,-5.33333 2.94857,0 5.33333,2.38476 5.33333,5.33333 0,2.94857 -2.38476,5.33333 -5.33333,5.33333 z" - id="path3226" - inkscape:connector-curvature="0" /><path - d="m 334,114 10,0 0,-5 -10,0 z m -6,0 5,0 0,-12 -5,0 z m 6,-12 0,6 10,0 0,-6 z" - id="path3227" - inkscape:connector-curvature="0" - sodipodi:nodetypes="ccccccccccccccc" /><path - d="M 0,24 H 24 V 48 H 0 z" - id="path3229" - inkscape:connector-curvature="0" - style="fill:none" /><path - sodipodi:type="arc" - style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none" - id="path3518" - sodipodi:cx="208.86168" - sodipodi:cy="31.304852" - sodipodi:rx="1.0606602" - sodipodi:ry="1.0606602" - d="m 209.92234,31.304852 a 1.0606602,1.0606602 0 1 1 -2.12132,0 1.0606602,1.0606602 0 1 1 2.12132,0 z" - transform="matrix(1.4142135,0,0,1.4142135,-86.874996,-12.771743)" /><path - transform="matrix(1.4142135,0,0,1.4142135,-86.874986,-7.771742)" - d="m 209.92234,31.304852 a 1.0606602,1.0606602 0 1 1 -2.12132,0 1.0606602,1.0606602 0 1 1 2.12132,0 z" - sodipodi:ry="1.0606602" - sodipodi:rx="1.0606602" - sodipodi:cy="31.304852" - sodipodi:cx="208.86168" - id="path4288" - style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none" - sodipodi:type="arc" /><path - sodipodi:type="arc" - style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none" - id="path4290" - sodipodi:cx="208.86168" - sodipodi:cy="31.304852" - sodipodi:rx="1.0606602" - sodipodi:ry="1.0606602" - d="m 209.92234,31.304852 a 1.0606602,1.0606602 0 1 1 -2.12132,0 1.0606602,1.0606602 0 1 1 2.12132,0 z" - transform="matrix(1.4142135,0,0,1.4142135,-86.874986,-2.771743)" /><path - inkscape:connector-curvature="0" - id="path3246" - d="M 86,38 83.277778,35 72,35 l 0,6 11.277778,0" /><rect - style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.94679004;stroke-miterlimit:3.5;stroke-opacity:1;stroke-dasharray:none" - id="rect4034" - width="4.0532098" - height="0.053209968" - x="85.473381" - y="32.473396" /><rect - y="30.473396" - x="87.473381" - height="4.0532098" - width="0.053209968" - id="rect4036" - style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.94679004;stroke-miterlimit:3.5;stroke-opacity:1;stroke-dasharray:none" /><path - inkscape:connector-curvature="0" - d="m 335,138 -3.66666,0 C 330.59667,138 330,137.40333 330,136.66667 l 0,-9.33334 C 330,126.59667 330.59667,126 331.33334,126 l 9.33333,0 c 0.73667,0 1.33333,0.59667 1.33333,1.33333 l 0,3.66667 -2,-0.6 0,-2.4 -8,-3.4e-4 0,8.00017 2.22223,3.4e-4 z m 5.25657,-2.70598 2.40637,-2.40638 L 334,130 l 2.88765,8.66294 2.40637,-2.40638 L 343.03746,140 344,139.03745 z" - id="inspect_element" - sketch:type="MSShapeGroup" - sodipodi:nodetypes="cssssssccccccccccccccc" /><path - inkscape:connector-curvature="0" - d="M 178.71429,5.0064 172.28571,5 C 171.57857,5 171,5.572727 171,6.272727 l 0,11.454546 c 0,0.7 0.57857,1.272727 1.28571,1.272727 l 6.42858,0 C 179.42143,19 180,18.427273 180,17.727273 l 0,-11.454546 c 0,-0.7 -0.57857,-1.266363 -1.28571,-1.266363 l 0,0 z m 0,11.448182 -6.42858,0 0,-8.909091 6.42858,0 0,8.909091 0,0 z" - id="device-mode" - sketch:type="MSShapeGroup" /><path - d="m 23,157 -2,0 0,2 2,0 z" - id="path3288" /><path - d="m 23,161 -2,0 0,2 c 1,0 2,-1 2,-2 z" - id="path3286" /><path - d="m 23,153 -2,0 0,2 2,0 z" - id="path3284" /><path - d="m 21,149 0,2 2,0 c 0,-1 -1,-2 -2,-2 z" - id="path3282" /><path - d="m 11,163 4,0 0,-6 -6,0 0,4 c 0,1.1 0.9,2 2,2 z" - id="path3280" - inkscape:connector-curvature="0" - sodipodi:nodetypes="scccss" /><path - d="m 11,153 -2,0 0,2 2,0 z" - id="path3278" /><path - d="m 19,149 -2,0 0,2 2,0 z" - id="path3276" /><path - d="m 19,161 -2,0 0,2 2,0 z" - id="path3274" /><path - d="m 11,149 c -1,0 -2,1 -2,2 l 2,0 z" - id="path3272" /><path - d="m 15,149 -2,0 0,2 2,0 z" - id="path3231" /><g - id="g4042"><path - transform="matrix(1.1939089,0,0,1.1367841,-44.307792,-20.636427)" - d="m 80.87534,155.38257 a 4.3973203,4.6182914 0 1 1 -8.794641,0 4.3973203,4.6182914 0 1 1 8.794641,0 z" - sodipodi:ry="4.6182914" - sodipodi:rx="4.3973203" - sodipodi:cy="155.38257" - sodipodi:cx="76.47802" - id="path4006" - style="fill:none;stroke:#000000;stroke-width:1.2875576;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" - sodipodi:type="arc" /><rect - ry="0" - rx="0.38569456" - y="155" - x="44" - height="2" - width="6" - id="rect4010" - style="fill:#000000;fill-opacity:1;stroke:none" /></g><path - d="M 76.94,152 76,152.94 79.05334,156 76,159.06 l 0.94,0.94 4,-4 z" - id="path3240" - inkscape:connector-curvature="0" /><path - d="M0 0h24v24H0z" - fill="none" - id="path3242" /><path - d="M 80.94,152 80,152.94 83.05334,156 80,159.06 l 0.94,0.94 4,-4 z" - id="path3240-4" - inkscape:connector-curvature="0" /></svg> \ No newline at end of file diff --git a/1-js/03-code-quality/02-coding-style/1-style-errors/solution.md b/1-js/03-code-quality/02-coding-style/1-style-errors/solution.md index 764e36c63..4facc8b29 100644 --- a/1-js/03-code-quality/02-coding-style/1-style-errors/solution.md +++ b/1-js/03-code-quality/02-coding-style/1-style-errors/solution.md @@ -12,7 +12,7 @@ function pow(x,n) // <- no space between arguments let x=prompt("x?",''), n=prompt("n?",'') // <-- technically possible, // but better make it 2 lines, also there's no spaces and missing ; -if (n<0) // <- no spaces inside (n < 0), and should be extra line above it +if (n<=0) // <- no spaces inside (n <= 0), and should be extra line above it { // <- figure bracket on a separate line // below - long lines can be split into multiple lines for improved readability alert(`Power ${n} is not supported, please enter an integer number greater than zero`); @@ -39,7 +39,7 @@ function pow(x, n) { let x = prompt("x?", ""); let n = prompt("n?", ""); -if (n < 0) { +if (n <= 0) { alert(`Power ${n} is not supported, please enter an integer number greater than zero`); } else { diff --git a/1-js/03-code-quality/02-coding-style/article.md b/1-js/03-code-quality/02-coding-style/article.md index d265da434..904f0a939 100644 --- a/1-js/03-code-quality/02-coding-style/article.md +++ b/1-js/03-code-quality/02-coding-style/article.md @@ -2,11 +2,11 @@ Our code must be as clean and easy to read as possible. -That is actually the art of programming -- to take a complex task and code it in a way that is both correct and human-readable. +That is actually the art of programming -- to take a complex task and code it in a way that is both correct and human-readable. A good code style greatly assists in that. ## Syntax -Here is a cheatsheet with some suggested rules (see below for more details): +Here is a cheat sheet with some suggested rules (see below for more details):  <!-- @@ -26,7 +26,7 @@ let n = prompt("n?", ""); if (n < 0) { alert(`Power ${n} is not supported, - please enter an integer number, greater than 0`); + please enter a non-negative integer number`); } else { alert( pow(x, n) ); } @@ -36,7 +36,7 @@ if (n < 0) { Now let's discuss the rules and reasons for them in detail. -```warn header="Irony Detected" +```warn header="There are no \"you must\" rules" Nothing is set in stone here. These are style preferences, not religious dogmas. ``` @@ -52,33 +52,57 @@ if (condition) { } ``` -A single-line construct is an important edge case. Should we use brackets at all? If yes, then where? +A single-line construct, such as `if (condition) doSomething()`, is an important edge case. Should we use braces at all? Here are the annotated variants so you can judge their readability for yourself: -<!-- -```js no-beautify -if (n < 0) {alert(`Power ${n} is not supported`);} +1. 😠 Beginners sometimes do that. Bad! Curly braces are not needed: + ```js + if (n < 0) *!*{*/!*alert(`Power ${n} is not supported`);*!*}*/!* + ``` +2. 😠 Split to a separate line without braces. Never do that, easy to make an error when adding new lines: + ```js + if (n < 0) + alert(`Power ${n} is not supported`); + ``` +3. 😏 One line without braces - acceptable, if it's short: + ```js + if (n < 0) alert(`Power ${n} is not supported`); + ``` +4. 😃 The best variant: + ```js + if (n < 0) { + alert(`Power ${n} is not supported`); + } + ``` -if (n < 0) alert(`Power ${n} is not supported`); +For a very brief code, one line is allowed, e.g. `if (cond) return null`. But a code block (the last variant) is usually more readable. -if (n < 0) - alert(`Power ${n} is not supported`); +### Line Length -if (n < 0) { - alert(`Power ${n} is not supported`); -} -``` ---> - +No one likes to read a long horizontal line of code. It's best practice to split them. -In summary: -- For very short code, one line is acceptable. For example: `if (cond) return null`. -- But a separate line for each statement in brackets is usually easier to read. +For example: +```js +// backtick quotes ` allow to split the string into multiple lines +let str = ` + ECMA International's TC39 is a group of JavaScript developers, + implementers, academics, and more, collaborating with the community + to maintain and evolve the definition of JavaScript. +`; +``` -### Line Length +And, for `if` statements: -No one likes to read a long horizontal line of code. It's best practice to split them up and limit the length of your lines. +```js +if ( + id === 123 && + moonPhase === 'Waning Gibbous' && + zodiacSign === 'Libra' +) { + letTheSorceryBegin(); +} +``` The maximum line length should be agreed upon at the team-level. It's usually 80 or 120 characters. @@ -88,11 +112,11 @@ There are two types of indents: - **Horizontal indents: 2 or 4 spaces.** - A horizontal indentation is made using either 2 or 4 spaces or the "Tab" symbol. Which one to choose is an old holy war. Spaces are more common nowadays. + A horizontal indentation is made using either 2 or 4 spaces or the horizontal tab symbol (key `key:Tab`). Which one to choose is an old holy war. Spaces are more common nowadays. - One advantage of spaces over tabs is that spaces allow more flexible configurations of indents than the "Tab" symbol. + One advantage of spaces over tabs is that spaces allow more flexible configurations of indents than the tab symbol. - For instance, we can align the arguments with the opening bracket, like this: + For instance, we can align the parameters with the opening bracket, like this: ```js no-beautify show(parameters, @@ -127,15 +151,15 @@ There are two types of indents: A semicolon should be present after each statement, even if it could possibly be skipped. -There are languages where a semicolon is truly optional and it is rarely used. In JavaScript, though, there are cases where a line break is not interpreted as a semicolon, leaving the code vulnerable to errors. +There are languages where a semicolon is truly optional and it is rarely used. In JavaScript, though, there are cases where a line break is not interpreted as a semicolon, leaving the code vulnerable to errors. See more about that in the chapter <info:structure#semicolon>. -As you become more mature as a programmer, you may choose a no-semicolon style like [StandardJS](https://standardjs.com/). Until then, it's best to use semicolons to avoid possible pitfalls. +If you're an experienced JavaScript programmer, you may choose a no-semicolon code style like [StandardJS](https://standardjs.com/). Otherwise, it's best to use semicolons to avoid possible pitfalls. The majority of developers put semicolons. ### Nesting Levels Try to avoid nesting code too many levels deep. -Sometimes it's a good idea to use the ["continue"](info:while-for#continue) directive in a loop to avoid extra nesting. +For example, in the loop, it's sometimes a good idea to use the [`continue`](info:while-for#continue) directive to avoid extra nesting. For example, instead of adding a nested `if` conditional like this: @@ -197,13 +221,13 @@ function pow(x, n) { } ``` -The second one is more readable because the "edge case" of `n < 0` is handled early on. Once the check is done we can move on to the "main" code flow without the need for additional nesting. +The second one is more readable because the "special case" of `n < 0` is handled early on. Once the check is done we can move on to the "main" code flow without the need for additional nesting. ## Function Placement If you are writing several "helper" functions and the code that uses them, there are three ways to organize the functions. -1. Functions declared above the code that uses them: +1. Declare the functions *above* the code that uses them: ```js // *!*function declarations*/!* @@ -249,39 +273,39 @@ If you are writing several "helper" functions and the code that uses them, there Most of time, the second variant is preferred. -That's because when reading code, we first want to know *what it does*. If the code goes first, then it provides that information. Then, maybe we won't need to read the functions at all, especially if their names are descriptive of what they actually do. +That's because when reading code, we first want to know *what it does*. If the code goes first, then it becomes clear from the start. Then, maybe we won't need to read the functions at all, especially if their names are descriptive of what they actually do. ## Style Guides -A style guide contains general rules about "how to write" code, e.g. which quotes to use, how many spaces to indent, where to put line breaks, etc. A lot of minor things. +A style guide contains general rules about "how to write" code, e.g. which quotes to use, how many spaces to indent, the maximal line length, etc. A lot of minor things. When all members of a team use the same style guide, the code looks uniform, regardless of which team member wrote it. -Of course, a team can always write their own style guide. Most of the time though, there's no need to. There are many existing tried and true options to choose from, so adopting one of these is usually your best bet. +Of course, a team can always write their own style guide, but usually there's no need to. There are many existing guides to choose from. Some popular choices: -- [Google JavaScript Style Guide](https://google.github.io/styleguide/javascriptguide.xml) +- [Google JavaScript Style Guide](https://google.github.io/styleguide/jsguide.html) - [Airbnb JavaScript Style Guide](https://github.com/airbnb/javascript) - [Idiomatic.JS](https://github.com/rwaldron/idiomatic.js) - [StandardJS](https://standardjs.com/) - (plus many more) -If you're a novice developer, start with the cheatsheet at the beginning of this chapter. Once you've mastered that you can browse other style guides to pick up common principles and decide which one you like best. +If you're a novice developer, start with the cheat sheet at the beginning of this chapter. Then you can browse other style guides to pick up more ideas and decide which one you like best. ## Automated Linters -Linters are tools that can automatically check the style of your code and make suggestions for refactoring. +Linters are tools that can automatically check the style of your code and make improving suggestions. -The great thing about them is that style-checking can also find some bugs, like typos in variable or function names. Because of this feature, installing a linter is recommended even if you don't want to stick to one particular "code style". +The great thing about them is that style-checking can also find some bugs, like typos in variable or function names. Because of this feature, using a linter is recommended even if you don't want to stick to one particular "code style". -Here are the most well-known linting tools: +Here are some well-known linting tools: -- [JSLint](http://www.jslint.com/) -- one of the first linters. -- [JSHint](http://www.jshint.com/) -- more settings than JSLint. -- [ESLint](http://eslint.org/) -- probably the newest one. +- [JSLint](https://www.jslint.com/) -- one of the first linters. +- [JSHint](https://jshint.com/) -- more settings than JSLint. +- [ESLint](https://eslint.org/) -- probably the newest one. -All of them can do the job. The author uses [ESLint](http://eslint.org/). +All of them can do the job. The author uses [ESLint](https://eslint.org/). Most linters are integrated with many popular editors: just enable the plugin in the editor and configure the style. @@ -304,21 +328,21 @@ Here's an example of an `.eslintrc` file: }, "rules": { "no-console": 0, - }, - "indent": 2 + "indent": 2 + } } ``` Here the directive `"extends"` denotes that the configuration is based on the "eslint:recommended" set of settings. After that, we specify our own. -It is also possible to download style rule sets from the web and extend them instead. See <http://eslint.org/docs/user-guide/getting-started> for more details about installation. +It is also possible to download style rule sets from the web and extend them instead. See <https://eslint.org/docs/user-guide/getting-started> for more details about installation. Also certain IDEs have built-in linting, which is convenient but not as customizable as ESLint. ## Summary -All syntax rules described in this chapter (and in the style guides referenced) aim to increase the readability of your code, but all of them are debatable. +All syntax rules described in this chapter (and in the style guides referenced) aim to increase the readability of your code. All of them are debatable. -When we think about writing "better" code, the questions we should ask are, "What makes the code more readable and easier to understand?" and "What can help us avoid errors?" These are the main things to keep in mind when choosing and debating code styles. +When we think about writing "better" code, the questions we should ask ourselves are: "What makes the code more readable and easier to understand?" and "What can help us avoid errors?" These are the main things to keep in mind when choosing and debating code styles. Reading popular style guides will allow you to keep up to date with the latest ideas about code style trends and best practices. diff --git a/1-js/03-code-quality/02-coding-style/code-style.svg b/1-js/03-code-quality/02-coding-style/code-style.svg index 12a755c97..0a1db56c8 100644 --- a/1-js/03-code-quality/02-coding-style/code-style.svg +++ b/1-js/03-code-quality/02-coding-style/code-style.svg @@ -1 +1,5 @@ -<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="715" height="528" viewBox="0 0 715 528"><defs><style>@import url(https://fonts.googleapis.com/css?family=Open+Sans:bold,italic,bolditalic%7CPT+Mono);@font-face{font-family:'PT Mono';font-weight:700;font-style:normal;src:local('PT MonoBold'),url(/font/PTMonoBold.woff2) format('woff2'),url(/font/PTMonoBold.woff) format('woff'),url(/font/PTMonoBold.ttf) format('truetype')}</style></defs><g id="combined" fill="none" fill-rule="evenodd" stroke="none" stroke-width="1"><g id="code-style.svg"><path fill="#FFF" d="M0 0h715v528H0z"/><image id="Bitmap" width="395" height="340" x="239" y="143" xlink:href="data:image/png;base64,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nIMACIAACIAACIAACIAACNhFAIqFXdhQCARAAARAAARAAARAAARAQE8AioWeBs5BAARAAARAAARAAARAAATsIgDFwi5sKAQCIAACIAACIAACIAACIKAnAMVCTwPnIAACIAACIAACIAACIAACdhGAYmEXNhQCARAAARAAARAAARAAARDQE4BioaeBcxAAARAAARAAARAAARAAAbsIQLGwCxsKgQAIgAAIgAAIgAAIgAAI6AlAsdDTwDkIgAAIgAAIgAAIgAAIgIBdBKBY2IUNhUAABEAABEAABEAABEAABPQEoFjoaeAcBEAABEAABEAABEAABEDALgJQLOzChkIgAAIgAAIgAAIgAAIgAAJ6AlAs9DRwDgIgAAIgAAIgAAIgAAIgYBcBKBZ2YUMhEAABEAABEAABEAABEAABPQEoFnoaOAcBEAABEAABEAABEAABELCLABQLu7ChEAiAAAiAAAiAAAiAAAiAgJ4AFAs9DZyDAAiAAAiAAAiAAAiAAAjYRQCKhV3YUAgEQAAEQAAEQAAEQAAEQEBPAIqFngbOQQAEQAAEQAAEQAAEQAAE7CIAxcIubCgEAiAAAiAAAiAAAiAAAiCgJwDFQk8D5yAAAiAAAiAAAiAAAiAAAnYRgGJhFzYUAgEQAAEQAAEQAAEQAAEQ0BOAYqGngXMQAAEQAAEQAAEQAAEQAAG7CECxsAsbCoEACIAACIAACIAACIAACOgJQLHQ08A5CIAACIAACIAACIAACICAXQSgWNiFDYVAAARAAARAAARAAARAAAT0BKBY6GngHARAAARAAARAAARAAARAwC4CUCzswoZCIAACIAACIAACIAACIAACegJQLPQ0cA4CIAACIAACIAACIAACIGAXASgWdmFDIRAAARAAARAAARAAARAAAT0BKBZ6GjgHARAAARAAARAAARAAARCwiwAUC7uwoRAIgAAIgAAIgAAIgAAIgICeABQLPQ2cgwAIgAAIgAAIgAAIgAAI2EUAioVd2FAIBEAABEAABEAABEAABEBATwCKhZ5GIzjfvOUvupCR0QieBI8AAiAAAs4nsHlLXL37nZmbm0v8gYAACIBAQyPglpOVWd7QOl1df3MKimnF3mQ6lZ5DiemGX8yRQb4UGexL1/SPoZYhftUVb9D3Nv25hU6dPk3u7u50zYTxFBAQUOl51h44Q9sT0iulc8Lt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7X/xqMwTEiABEiABEiABEgiCAE2hgoDFoiTQ3AjYN4Bj7FilgkMAmps1tyfJ8ZIACZAACZBA0yfAFYum/4w4QhI4aAJQJLAPB969sLHb7uXroBtlRRIgARIgARIgARJwIEDFwgEKs0igpRDA6gSFBEiABEiABEiABA4FAQbIOxSU2QcJkAAJkAAJkAAJkAAJtHACVCxa+APm7ZEACZAACZAACZAACZDAoSBAxeJQUGYfJEACJEACJEACJEACJNDCCVCxaOEPmLdHAiRAAiRAAiRAAiRAAoeCABWLQ0GZfZAACZAACZAACZAACZBACyfQrBULRGzOz8+XomJ6vmnh31PeHgmQAAmQAAmQAAmQQBMn0KzdzW7duk0WLvpeI4av/uTkZBk9coSKMtymiWPn8EiABEiABEiABEiABEigZRFo1isW9keBSMIFBQXyxdwvZeeuXfZLTJMACZAACZAACZAACZAACTQwgYjC/LyaBu6jwZqPio6RwqJiycrKkvXr10tJSYnuKzY2VqZNmdxg/bJhEiABEiABEiABEiABEiABTwLNesUiMjJS2rRpI6NHj5aLL75YcA4pLy+X0rIyzzvlGQmQAAmQAAmQAAmQAAmQQIMRaNaKRUV5mZQWF0llRYUG1LlzZwtUXm6elWaCBEiABEiABEiABEiABEigYQk0a8UCaKqqKqWstFiKC/OlS5cuFq3yWmXDymCCBEiABEiABEiABEiABEigwQg0e8XCg4zawG3EmEWZcx5JgARIgARIgARIgARIgAQajkCLUiyqa6otUnA/SyEBEiABEiABEiABEiABEjg0BFqUYgFvUEZKS7l527DgkQRIgARIgARIgARIgAQamkCLUiy6ZGZavLZu3WqlmSABEiABEiABEiABEiABEmhYAi1KsYiJidHRt4EMQfLmzf9atigFY9/+/Q1Lka2TAAmQAAmQAAmQAAmQwGFOoFkHyPN+dthXUVFVI998843s3LnT4/I5Z51hKR0eF3hCAiRAAiRAAiRAAiRAAiQQMoEWtWJRo7xCRUVFSX5+vgMYbuZ2gMIsEiABEiABEiABEiABEggLgeiwtNKEGnnnnXekTEXdxurFwIEDpUePHnqlIkrpFdXVVU1opBwKCZAACZAACZAACZAACbQcAi1KsSgtLdVKBR5Pnz59ZPTo0daTKikqsNJMkAAJkAAJkAAJkAAJkAAJhJdAi1Is9mRnW3Q6dOgglSr6dmVludRUV6vVCneMC6sQEyRAAiRAAiRAAiRAAiRAAmEh0KIUi8pKt6lTtNprUVZaHBZIbIQESIAESIAESIAESIAESMA/gRa1eTsqMsq6W65QWCiYIAESIAESIAESIAESIIEGJ9CiFAvxcPxU0+Dw2AEJkAAJkAAJkAAJkAAJkICLQMtSLPhUSYAESIAESIAESIAESIAEGoVAi1IsiotLLIgRnssXVj4TJEACJEACJEACJEACJEAC4SfQohSLDRs2WIRatUq20kyQAAmQAAmQAAmQAAmQAAk0LIEWoVhgo/amzVskv8AdqyIlNbVhybF1EiABEiABEiABEiABEiABi0Czdje7b99+Wbx0qeTlHZCaGvdm7Z49e0qkirztdj5r3S8TJEACJEACJEACJEACJEACDUCgWa9YYIUiNzfPQ6lo06aNjBkzRqqqqFY0wPeFTZIACZAACZAACZAACZCAI4FmvWKRnpYmnTp1kri4OElPT9dpnFdVVUqFuFcwHO+cmSRAAiRAAiRAAiRAAiRAAmEjEFGYn9dsZ+AxsXESGxfvAQP7LUqLCz1WMTwK8IQESIAESIAESIAESIAESCDsBJr1ikW1Mneqrq7SSkSNUigqKyulqrIi7JDYIAmQAAmQAAmQAAmQAAmQgH8CzVqxgMlTSVGh/zvkVRIgARIgARIgARIgARIggQYn0Kw3bzc4HXZAAiRAAiRAAiRAAiRAAiQQEAEqFgFhYiESIAESIAESIAESIAESIAF/BKhY+KPDayRAAiRAAiRAAiRAAiRAAgERoGIRECYWIgESIAESIAESIAESIAES8EeAioU/OrxGAiRAAiRAAiRAAiRAAiQQEAEqFgFhYiESIAESIAESIAESIAESIAF/BKhY+KPDayRAAiRAAiRAAiRAAiRAAgERoGIRECYWIgESIAESIAESIAESIAES8EeAioU/OrxGAiRAAiRAAiRAAiRAAiQQEAEqFgFhYiESIAESIAESIAESIAESIAF/BKhY+KPDayRAAiRAAiRAAiRAAiRAAgERoGIRECYWIgESIAESIAESIAESIAES8EeAioU/OrxGAiRAAiRAAiRAAiRAAiQQEAEqFgFhYiESIAESIAESIAESIAESIAF/BKhY+KPDayRAAiRAAiRAAiRAAiRAAgERoGIRECYWIgESIAESIAESIAESIAES8EeAioU/OrxGAiRAAiRAAiRAAiRAAiQQEAEqFgFhYiESIAESIAESIAESIAESIAF/BKhY+KPDayRAAiRAAiRAAiRAAiRAAgERoGIRECYWIgESIAESIAESIAESIAES8EeAioU/OrxGAiRAAiRAAiRAAiRAAiQQEAEqFgFhYiESIAESIAESIAESIAESIAF/BKhY+KPDayRAAiRAAiRAAiRAAiRAAgERoGIRECYWIgESIAESIAESIAESIAES8EeAioU/OrxGAiRAAiRAAiRAAiRAAiQQEAEqFgFhYiESIAESIAESIAESIAESIAF/BKhY+KPDayRAAiRAAiRAAiRAAiRAAgERoGIRECYWIgESIAESIAESIAESIAES8EeAioU/OrxGAiRAAiRAAiRAAiRAAiQQEAEqFgFhYiESIAESIAESIAESIAESIAF/BKhY+KPDayRAAiRAAiRAAiRAAiRAAgERoGIRECYWIgESIAESIAESIAESIAES8EeAioU/OrxGAiRAAiRAAiRAAiRAAiQQEAEqFgFhYiESIAESIAESIAESIAESIAF/BKhY+KPDayRAAiRAAiRAAiRAAiRAAgERoGIRECYWIgESIAESIAESIAESIAES8EeAioU/OrxGAiRAAiRAAiRAAiRAAiQQEAEqFgFhYiESIAESIAESIAESIAESIAF/BKhY+KPDayRAAiRAAiRAAiRAAiRAAgERiA6oFAuRAAkcFIGsrPXy3vvvO9adcPrpMmjQQMdrzCQBEiABEiABEiCB5kaAikWIT6y6pkY27S2U/JJyGdqtdYitsXpLI7Bj5075+JNPHW/ryCOOCFixqK5W37PNm6Qgv0COOmqIY3vMJAESIAESIAESIIHGJEDFIkT6k//xpeQWlcuo3m2pWITIsiVW79q1q0yePNm6tZ1K0Vi8eLE+j4oK/Od37tSpkpubJyNHjqBiYdFkggRIgARIgARIoCkRCHxm05RG3YTGAqUCEhHB7SpN6LE0maH0799fBg12rzAsWbLEUiwiIgP/zkCpgETye9Zkni0HQgIkQAIkQAIk4EmAioUnj4M+C2aSeNCdsGKzI1BdVSXV1dXWuGuU6Vwowu9ZKPRYlwRIgARIgARIoCEJNGvFolLZnVdWuSZt8TFRFqfC0grZkF0g7VLipX1qgnrLG2Fd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AAmQAAmQAAkETYCKRdDIWIEESIAESIAESIAESIAESMCbABULbyI8JwESIAESIAESIAESIAESCJoAFYugkbECCZAACZAACZAACZAACZCANwEqFt5EeE4CJEACJEACJEACJEACJBA0ASoWQSNjBRIgARIgARIgARIgARIgAW8CVCy8ifCcBEiABEiABEiABEiABEggaAJULIJGxgokQAIkQAIkQAIkQAIkQALeBKhYeBPhOQmQAAmQAAmQAAmQAAmQQNAEqFgEjYwVSIAESIAESIAESIAESIAEvAlQsfAmwnMSIAESIAESIAESIAESIIGgCVCxCBoZK5AACZAACZAACZAACZAACXgToGLhTYTnJEACJEACJEACJEACJEACQROgYhE0MlYgARIgARIgARIgARIgARLwJkDFwpsIz0mABEiABEiABEiABEiABIImQMUiaGSsQAIkQAIkQAIkQAIkQAIk4E2AioU3EZ6TAAmQAAmQAAmQAAmQAAkETYCKRdDIWIEESIAESIAESIAESIAESMCbABULbyI8JwESIAESIAESIAESIAESCJoAFYugkbECCZAACZAACZAACZAACZCANwEqFt5EeE4CJEACJEACJEACJEACJBA0ASoWQSNjBRIgARIgARIgARIgARIgAW8CVCy8ifCcBEiABEiABEiABEiABEggaAJULIJGxgokQAIkQAIkQAIkQAIkQALeBKhYeBPhOQmQAAmQAAmQAAmQAAmQQNAEqFgEjYwVSIAESIAESIAESIAESIAEvAlQsfAmwnMSIAESIAESIAESIAESIIGgCVCxCBoZK5AACZAACZAACZAACZAACXgToGLhTYTnJEACJEACJEACJEACJEACQROgYhE0MlYgARIgARIgARIgARIgARLwJkDFwpsIz0mABEiABEiABEiABEiABIImQMUiaGSsQAJNg8CatWtl/YaNTWMwHEWTILBm7TrJWr+hSYyFgyABEiABEjj8CESHestZu/Pl3R+2ODYzYUimDO6S7niNmSRAAgdPYOOmzfLjT8t1AzEx0dKta1fHxj5a+n+SV7RbXxvZd4r06TRSVmyeoz/I7JTRT04efIVj3VAzV275UlZv+1pSE9tJWnJH6Z95vE4H0u7SrNmydsdCXbR7+6Fy/BEXyO68DTJ3+b90XlRktJw/5kGJUH+akoQy7rKKInlr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AAmQAAmQAAmQAAm0JQJULNrS3ea1kgAJkAAJkAAJkAAJkECcCFCxiBNYZksCJEACJEACJEACJEACbYmAJwHyioqKlFmCZGdnCdxMUkiABEiABEiABEiABEiABNoWgZgVC/h6f/ud6Q61tLQ0GTViuAwePMjZxxUSIAESIAESIAESIAESIIHWTcDzqVAVFRWydPkKWb5iZesmx6sjARIgARIgARIgARIgARJwCMQex0KnPlXX1MmWLVtk3bp1UlBQ4GR+0dcukKysLGebKyRAAiRAAiRAAiRAAiRAAq2TgCcjFu3atZORI0fKpZdeKp07d3ZI7dq121nnCgmQAAmQAAmQAAmQAAmQQOslELtiUVcnZSXFUlVZIXV1tTJkyBCH1sHCQmedKyRAAiRAAiRAAiRAAiRAAq2XQOyKhbKpra2RyopyKS0ukr59+ji0qqqqnHWukAAJkAAJkAAJkAAJkAAJtF4CnigWbjwYtbBC17OWBJckQAIkQAIkQAIkQAIk0LoJeK5YVFdVuogxpoULBldJgARIgARIgARIgARIoNUS8FyxSEr2h8aorHQrGa2WIS+MBEiABEiABEiABEiABNo8Ac8Vi5SUFMnMzDRg9+zZowbddW0eMgGQAAmQAAmQAAmQAAmQQGsn4LlioZqE9O7d23DDiAWicuflbZR9+flSXV3d2nny+kiABEiABEiABEiABEigTRKIPUBeCGzJqemydOlSWbNmTcDRMaNHybBhQwP2cYMESIAESIAESIAESIAESKDlE/B+xEKZJGo07pKSknp0EhLjUly9criDBEiABEiABEiABEiABEigeQn4La09LHf27FmybfsOk2MfjWsxYsQIyc3NlbTUFAn0GuVhocyKBEiABEiABEiABEiABEjgiBGIi2KxZ+8+c0HZ2dkyefJk5+IQnZtCAiRAAiRAAiRAAiRAAiTQ+gh4rljU1GgU7sNuZjt37iy1ug2Fora21kTobn0IeUUkQAIkQAIkQAIkQAIkQAJxUCz8kbeTNaZFWWkxKZMACZAACZAACZAACZAACbRyAt5bU7uCbTOGRSt/enh5JEACJEACJEACJEACJHCYgOeKhUuvIGQSIAESIAESIAESIAESIIE2QsBzxaKNcONlkgAJkAAJkAAJkAAJkAAJuAh4rliUlpY62SdoPAsKCZAACZAACZAACZAACZBA6yfguWKx/ssNDrWcnBxnnSskQAIkQAIkQAIkQAIkQAKtl4CnisVejV+xcdNmh1anTp2cda6QAAmQAAmQAAmQAAmQAAm0XgIxu5tFfIrZc+ZKQUGBVGvMCiuZmZnSt09vqSgvs7u4JAESIAESIAESIAESIAESaKUEPFAs6mRffn4AnvT0dJk0aZIgWB6FBEiABEiABEiABEiABEig9ROIWbFISkqUXr16SVJSkrRv314QbXvgwIGGXGlxYesnyCskARIgARIgARIgARIgARKQhOLCg3WxcIDnp8zs3IAsEBivoqxURyyqA/ZzgwRIgARIgARIgARIgARIoHUSiHnEAkpE7eEpT7C3qK2tlqrKytZJi1dFAiRAAiRAAiRAAiRAAiQQkkDMigVyLSstDpk5d5IACZAACZAACZAACZAACbQNAp66m20byHiVJEACJEACJEACJEACJEACwQSoWAQT4TYJkAAJkAAJkAAJkAAJkEDUBKhYRI2MJ5AACZAACZAACZAACZAACQQToGIRTITbJEACJEACJEACJEACJEACUROgYhE1Mp5AAiRAAiRAAiRAAiRAAiQQTICKRTARbpMACZAACZAACZAACZAACURNgIpF1Mh4AgmQAAmQAAmQAAmQAAmQQDABKhbBRLhNAiRAAiRAAiRAAiRAAiQQNQEqFlEj4wkkQAIkQAIkQAIkQAIkQALBBKhYBBPhNgmQAAmQAAmQAAmQAAmQQNQEqFhEjYwnkAAJkAAJkAAJkAAJkAAJBBOgYhFMhNskQAIkQAIkQAIkQAIkQAJRE6BiETUynkACJEACJEACJEACJEACJBBMgIpFMBFukwAJkAAJkAAJkAAJkAAJRE2AikXUyHgCCZAACZAACZAACZAACZBAMAEqFsFEuE0CJEACJEACJEACJEACJBA1ASoWUSPjCSRAAiRAAiRAAiRAAiRAAsEE/h9YZ2PRWJPlqwAAAABJRU5ErkJggg=="/><path id="Line-17" stroke="#C06334" stroke-linecap="square" stroke-width="2" d="M250.5 355.5v16"/><path id="Line-18" stroke="#C06334" stroke-linecap="square" stroke-width="2" d="M247.5 360.5l3-5"/><path id="Line-10" stroke="#C06334" stroke-linecap="square" stroke-width="2" d="M250.5 372.5l3-5"/><path id="Line-11" stroke="#C06334" stroke-linecap="square" stroke-width="2" d="M253.5 360.5l-3-5"/><path id="Line-12" stroke="#C06334" stroke-linecap="square" stroke-width="2" d="M250.5 372.5l-3-5"/><text id="2" fill="#C06334" font-family="OpenSans-Regular, Open Sans" font-size="12" font-weight="normal"><tspan x="249.069" y="186">2</tspan></text><path id="Line-19" stroke="#C06334" stroke-linecap="square" stroke-width="2" d="M259 190v-9.5"/><path id="Line-5" stroke="#C06334" stroke-linecap="square" stroke-width="2" d="M245 190v-9.5"/><path id="Line-20" stroke="#C06334" stroke-linecap="square" stroke-width="2" d="M245 190.5h14"/><text id="No-space-between-the" fill="#C06334" font-family="OpenSans-Bold, Open Sans" font-size="14" font-weight="bold"><tspan x="138.785" y="46">No space</tspan> <tspan x="13.007" y="65">between the function name and parentheses</tspan> <tspan x="13.263" y="84">between the parentheses and the parameter</tspan></text><path id="Line" fill="#C06334" fill-rule="nonzero" d="M279.5 93.086l.707.707 46.1 46.1 4.243-4.242 4.95 14.849-14.85-4.95 4.243-4.243-46.1-46.1-.707-.707 1.414-1.414z"/><text id="Indentation-2-spaces" fill="#C06334" font-family="OpenSans-Bold, Open Sans" font-size="14" font-weight="bold"><tspan x="91.04" y="168">Indentation</tspan> <tspan x="103.334" y="187">2 spaces</tspan></text><path id="Line-4" fill="#C06334" fill-rule="nonzero" d="M224 170.5l14 7-14 7v-6h-46.5v-2H224v-6z"/><text id="A-space-" fill="#C06334" font-family="OpenSans-Bold, Open Sans" font-size="14" font-weight="bold"><tspan x="105.48" y="214">A space </tspan> <tspan x="67.052" y="233">after for/if/while…</tspan></text><path id="Line-6" fill="#C06334" fill-rule="nonzero" d="M224 203.5l14 7-14 7v-6h-46.5v-2H224v-6z"/><text id="}-else-{-without-a-l" fill="#C06334" font-family="OpenSans-Bold, Open Sans" font-size="14" font-weight="bold"><tspan x="507.896" y="455">} else { without a line break</tspan></text><path id="Line-14" fill="#C06334" fill-rule="nonzero" d="M430.792 430.381l-.781 5.949 66.12 8.679.99.13-.26 1.983-.991-.13-66.12-8.679-.78 5.95L416 435.5l14.792-5.119z"/><text id="Spaces-around-a-nest" fill="#C06334" font-family="OpenSans-Bold, Open Sans" font-size="14" font-weight="bold"><tspan x="255.98" y="501">Spaces around a nested call</tspan></text><path id="Line-15" fill="#C06334" fill-rule="nonzero" d="M309 457.565l14.903 4.786-4.196 4.289 15.992 15.645.715.7-1.398 1.43-.715-.7-15.993-15.645-4.195 4.29L309 457.564z"/><text id="An-empty-line" fill="#C06334" font-family="OpenSans-Bold, Open Sans" font-size="14" font-weight="bold"><tspan x="68.465" y="362">An empty line</tspan> <tspan x="38.052" y="381">between logical blocks</tspan></text><path id="Line-7" fill="#C06334" fill-rule="nonzero" d="M218 354.5l14 7-14 7v-6h-39.558v-2H218v-6z"/><text id="Lines-are-not-very-l" fill="#C06334" font-family="OpenSans-Bold, Open Sans" font-size="14" font-weight="bold"><tspan x="515.101" y="350">Lines are not very long</tspan></text><path id="Line-13" fill="#C06334" fill-rule="nonzero" d="M544.024 354.211l.706 1.872-.935.353-78.344 29.557 2.119 5.614L452 390l10.628-11.491 2.117 5.613 78.344-29.558.935-.353z"/><text id="A-semicolon-;" fill="#C06334" font-family="OpenSans-Bold, Open Sans" font-size="14" font-weight="bold"><tspan x="609" y="223">A semicolon ;</tspan> <tspan x="609" y="242">is mandatory</tspan></text><path id="Line-8" fill="#C06334" fill-rule="nonzero" d="M409 221.5v6h192v2H409v6l-14-7 14-7z"/><text id="Spaces-around-operat" fill="#C06334" font-family="OpenSans-Bold, Open Sans" font-size="14" font-weight="bold"><tspan x="597.772" y="136">Spaces</tspan> <tspan x="559.973" y="155">around operators</tspan></text><path id="Line-16" fill="#C06334" fill-rule="nonzero" d="M585.27 163.314l.416 1.956-.978.208-160.307 34.088 1.249 5.869-15.15-3.935 12.238-9.759 1.247 5.868 160.307-34.087.978-.208z"/><text id="Curly-brace-{-on-the" fill="#C06334" font-family="OpenSans-Bold, Open Sans" font-size="14" font-weight="bold"><tspan x="526.676" y="70">Curly brace {</tspan> <tspan x="464.233" y="89">on the same line, after a space</tspan></text><path id="Line-3" fill="#C06334" fill-rule="nonzero" d="M527.484 97.671l.845 1.813-.907.422-105.311 49.086 2.536 5.438L409 154l9.732-12.26 2.535 5.439 105.31-49.085.907-.423z"/><path id="Line-2" fill="#C06334" fill-rule="nonzero" d="M364.5 36v96h6l-7 14-7-14h6V36h2z"/><text id="A-space-between-argu" fill="#C06334" font-family="OpenSans-Bold, Open Sans" font-size="14" font-weight="bold"><tspan x="454.48" y="273">A space</tspan> <tspan x="450.532" y="292">between</tspan> <tspan x="442.91" y="311">arguments</tspan></text><path id="Line-9" fill="#C06334" fill-rule="nonzero" d="M434.94 285.587l1.473 1.353-.677.737-24.528 26.69 4.419 4.06L401 324l4.318-15.045 4.418 4.059 24.528-26.69.676-.737z"/><text id="A-space-between-para" fill="#C06334" font-family="OpenSans-Bold, Open Sans" font-size="14" font-weight="bold"><tspan x="270.969" y="20">A space between parameters</tspan></text><path id="Line" fill="#C06334" fill-rule="nonzero" d="M384.5 458.5l-6.869 14.065-3.645-4.767-22.879 17.496-.794.608-1.215-1.589.795-.607 22.878-17.497-3.644-4.765L384.5 458.5z"/></g></g></svg> \ No newline at end of file +<<<<<<< HEAD +<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="715" height="528" viewBox="0 0 715 528"><defs><style>@import url(https://fonts.googleapis.com/css?family=Open+Sans:bold,italic,bolditalic%7CPT+Mono);@font-face{font-family:'PT Mono';font-weight:700;font-style:normal;src:local('PT MonoBold'),url(/font/PTMonoBold.woff2) format('woff2'),url(/font/PTMonoBold.woff) format('woff'),url(/font/PTMonoBold.ttf) format('truetype')}</style></defs><g id="combined" fill="none" fill-rule="evenodd" stroke="none" stroke-width="1"><g id="code-style.svg"><path fill="#FFF" d="M0 0h715v528H0z"/><image id="Bitmap" width="395" height="340" x="239" y="143" xlink:href="data:image/png;base64,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nIMACIAACIAACIAACIAACNhFAIqFXdhQCARAAARAAARAAARAAARAQE8AioWeBs5BAARAAARAAARAAARAAATsIgDFwi5sKAQCIAACIAACIAACIAACIKAnAMVCTwPnIAACIAACIAACIAACIAACdhGAYmEXNhQCARAAARAAARAAARAAARDQE4BioaeBcxAAARAAARAAARAAARAAAbsIQLGwCxsKgQAIgAAIgAAIgAAIgAAI6AlAsdDTwDkIgAAIgAAIgAAIgAAIgIBdBKBY2IUNhUAABEAABEAABEAABEAABPQEoFjoaeAcBEAABEAABEAABEAABEDALgJQLOzChkIgAAIgAAIgAAIgAAIgAAJ6AlAs9DRwDgIgAAIgAAIgAAIgAAIgYBcBKBZ2YUMhEAABEAABEAABEAABEAABPQEoFnoaOAcBEAABEAABEAABEAABELCLABQLu7ChEAiAAAiAAAiAAAiAAAiAgJ4AFAs9DZyDAAiAAAiAAAiAAAiAAAjYRQCKhV3YUAgEQAAEQAAEQAAEQAAEQEBPAIqFngbOQQAEQAAEQAAEQAAEQAAE7CIAxcIubCgEAiAAAiAAAiAAAiAAAiCgJwDFQk8D5yAAAiAAAiAAAiAAAiAAAnYRgGJhFzYUAgEQAAEQAAEQAAEQAAEQ0BOAYqGngXMQAAEQAAEQAAEQAAEQAAG7CECxsAsbCoEACIAACIAACIAACIAACOgJQLHQ08A5CIAACIAACIAACIAACICAXQSgWNiFDYVAAARAAARAAARAAARAAAT0BKBY6GngHARAAARAAARAAARAAARAwC4CUCzswoZCIAACIAACIAACIAACIAACegJQLPQ0cA4CIAACIAACIAACIAACIGAXASgWdmFDIRAAARAAARAAARAAARAAAT0BKBZ6GjgHARAAARAAARAAARAAARCwiwAUC7uwoRAIgAAIgAAIgAAIgAAIgICeABQLPQ2cgwAIgAAIgAAIgAAIgAAI2EUAioVd2FAIBEAABEAABEAABEAABEBATwCKhZ5GIzjfvOUvupCR0QieBI8AAiAAAs4nsHlLXL37nZmbm0v8gYAACIBAQyPglpOVWd7QOl1df3MKimnF3mQ6lZ5DiemGX8yRQb4UGexL1/SPoZYhftUVb9D3Nv25hU6dPk3u7u50zYTxFBAQUOl51h44Q9sT0iulc8Lt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7X/xqMwTEiABEiABEiABEgiCAE2hgoDFoiTQ3AjYN4Bj7FilgkMAmps1tyfJ8ZIACZAACZBA0yfAFYum/4w4QhI4aAJQJLAPB969sLHb7uXroBtlRRIgARIgARIgARJwIEDFwgEKs0igpRDA6gSFBEiABEiABEiABA4FAQbIOxSU2QcJkAAJkAAJkAAJkAAJtHACVCxa+APm7ZEACZAACZAACZAACZDAoSBAxeJQUGYfJEACJEACJEACJEACJNDCCVCxaOEPmLdHAiRAAiRAAiRAAiRAAoeCABWLQ0GZfZAACZAACZAACZAACZBACyfQrBULRGzOz8+XomJ6vmnh31PeHgmQAAmQAAmQAAmQQBMn0KzdzW7duk0WLvpeI4av/uTkZBk9coSKMtymiWPn8EiABEiABEiABEiABEigZRFo1isW9keBSMIFBQXyxdwvZeeuXfZLTJMACZAACZAACZAACZAACTQwgYjC/LyaBu6jwZqPio6RwqJiycrKkvXr10tJSYnuKzY2VqZNmdxg/bJhEiABEiABEiABEiABEiABTwLNesUiMjJS2rRpI6NHj5aLL75YcA4pLy+X0rIyzzvlGQmQAAmQAAmQAAmQAAmQQIMRaNaKRUV5mZQWF0llRYUG1LlzZwtUXm6elWaCBEiABEiABEiABEiABEigYQk0a8UCaKqqKqWstFiKC/OlS5cuFq3yWmXDymCCBEiABEiABEiABEiABEigwQg0e8XCg4zawG3EmEWZcx5JgARIgARIgARIgARIgAQajkCLUiyqa6otUnA/SyEBEiABEiABEiABEiABEjg0BFqUYgFvUEZKS7l527DgkQRIgARIgARIgARIgAQamkCLUiy6ZGZavLZu3WqlmSABEiABEiABEiABEiABEmhYAi1KsYiJidHRt4EMQfLmzf9atigFY9/+/Q1Lka2TAAmQAAmQAAmQAAmQwGFOoFkHyPN+dthXUVFVI998843s3LnT4/I5Z51hKR0eF3hCAiRAAiRAAiRAAiRAAiQQMoEWtWJRo7xCRUVFSX5+vgMYbuZ2gMIsEiABEiABEiABEiABEggLgeiwtNKEGnnnnXekTEXdxurFwIEDpUePHnqlIkrpFdXVVU1opBwKCZAACZAACZAACZAACbQcAi1KsSgtLdVKBR5Pnz59ZPTo0daTKikqsNJMkAAJkAAJkAAJkAAJkAAJhJdAi1Is9mRnW3Q6dOgglSr6dmVludRUV6vVCneMC6sQEyRAAiRAAiRAAiRAAiRAAmEh0KIUi8pKt6lTtNprUVZaHBZIbIQESIAESIAESIAESIAESMA/gRa1eTsqMsq6W65QWCiYIAESIAESIAESIAESIIEGJ9CiFAvxcPxU0+Dw2AEJkAAJkAAJkAAJkAAJkICLQMtSLPhUSYAESIAESIAESIAESIAEGoVAi1IsiotLLIgRnssXVj4TJEACJEACJEACJEACJEAC4SfQohSLDRs2WIRatUq20kyQAAmQAAmQAAmQAAmQAAk0LIEWoVhgo/amzVskv8AdqyIlNbVhybF1EiABEiABEiABEiABEiABi0Czdje7b99+Wbx0qeTlHZCaGvdm7Z49e0qkirztdj5r3S8TJEACJEACJEACJEACJEACDUCgWa9YYIUiNzfPQ6lo06aNjBkzRqqqqFY0wPeFTZIACZAACZAACZAACZCAI4FmvWKRnpYmnTp1kri4OElPT9dpnFdVVUqFuFcwHO+cmSRAAiRAAiRAAiRAAiRAAmEjEFGYn9dsZ+AxsXESGxfvAQP7LUqLCz1WMTwK8IQESIAESIAESIAESIAESCDsBJr1ikW1Mneqrq7SSkSNUigqKyulqrIi7JDYIAmQAAmQAAmQAAmQAAmQgH8CzVqxgMlTSVGh/zvkVRIgARIgARIgARIgARIggQYn0Kw3bzc4HXZAAiRAAiRAAiRAAiRAAiQQEAEqFgFhYiESIAESIAESIAESIAESIAF/BKhY+KPDayRAAiRAAiRAAiRAAiRAAgERoGIRECYWIgESIAESIAESIAESIAES8EeAioU/OrxGAiRAAiRAAiRAAiRAAiQQEAEqFgFhYiESIAESIAESIAESIAESIAF/BKhY+KPDayRAAiRAAiRAAiRAAiRAAgERoGIRECYWIgESIAESIAESIAESIAES8EeAioU/OrxGAiRAAiRAAiRAAiRAAiQQEAEqFgFhYiESIAESIAESIAESIAESIAF/BKhY+KPDayRAAiRAAiRAAiRAAiRAAgERoGIRECYWIgESIAESIAESIAESIAES8EeAioU/OrxGAiRAAiRAAiRAAiRAAiQQEAEqFgFhYiESIAESIAESIAESIAESIAF/BKhY+KPDayRAAiRAAiRAAiRAAiRAAgERoGIRECYWIgESIAESIAESIAESIAES8EeAioU/OrxGAiRAAiRAAiRAAiRAAiQQEAEqFgFhYiESIAESIAESIAESIAESIAF/BKhY+KPDayRAAiRAAiRAAiRAAiRAAgERoGIRECYWIgESIAESIAESIAESIAES8EeAioU/OrxGAiRAAiRAAiRAAiRAAiQQEAEqFgFhYiESIAESIAESIAESIAESIAF/BKhY+KPDayRAAiRAAiRAAiRAAiRAAgERoGIRECYWIgESIAESIAESIAESIAES8EeAioU/OrxGAiRAAiRAAiRAAiRAAiQQEAEqFgFhYiESIAESIAESIAESIAESIAF/BKhY+KPDayRAAiRAAiRAAiRAAiRAAgERoGIRECYWIgESIAESIAESIAESIAES8EeAioU/OrxGAiRAAiRAAiRAAiRAAiQQEAEqFgFhYiESIAESIAESIAESIAESIAF/BKhY+KPDayRAAiRAAiRAAiRAAiRAAgERoGIRECYWIgESIAESIAESIAESIAES8EeAioU/OrxGAiRAAiRAAiRAAiRAAiQQEAEqFgFhYiESIAESIAESIAESIAESIAF/BKhY+KPDayRAAiRAAiRAAiRAAiRAAgERoGIRECYWIgESIAESIAESIAESIAES8EeAioU/OrxGAiRAAiRAAiRAAiRAAiQQEAEqFgFhYiESIAESIAESIAESIAESIAF/BKhY+KPDayRAAiRAAiRAAiRAAiRAAgERiA6oFAuRAAkcFIGsrPXy3vvvO9adcPrpMmjQQMdrzCQBEiABEiABEiCB5kaAikWIT6y6pkY27S2U/JJyGdqtdYitsXpLI7Bj5075+JNPHW/ryCOOCFixqK5W37PNm6Qgv0COOmqIY3vMJAESIAESIAESIIHGJEDFIkT6k//xpeQWlcuo3m2pWITIsiVW79q1q0yePNm6tZ1K0Vi8eLE+j4oK/Od37tSpkpubJyNHjqBiYdFkggRIgARIgARIoCkRCHxm05RG3YTGAqUCEhHB7SpN6LE0maH0799fBg12rzAsWbLEUiwiIgP/zkCpgETye9Zkni0HQgIkQAIkQAIk4EmAioUnj4M+C2aSeNCdsGKzI1BdVSXV1dXWuGuU6Vwowu9ZKPRYlwRIgARIgARIoCEJNGvFolLZnVdWuSZt8TFRFqfC0grZkF0g7VLipX1qgnrLG2Fd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AAmQAAmQAAkETYCKRdDIWIEESIAESIAESIAESIAESMCbABULbyI8JwESIAESIAESIAESIAESCJoAFYugkbECCZAACZAACZAACZAACZCANwEqFt5EeE4CJEACJEACJEACJEACJBA0ASoWQSNjBRIgARIgARIgARIgARIgAW8CVCy8ifCcBEiABEiABEiABEiABEggaAJULIJGxgokQAIkQAIkQAIkQAIkQALeBKhYeBPhOQmQAAmQAAmQAAmQAAmQQNAEqFgEjYwVSIAESIAESIAESIAESIAEvAlQsfAmwnMSIAESIAESIAESIAESIIGgCVCxCBoZK5AACZAACZAACZAACZAACXgToGLhTYTnJEACJEACJEACJEACJEACQROgYhE0MlYgARIgARIgARIgARIgARLwJkDFwpsIz0mABEiABEiABEiABEiABIImQMUiaGSsQAIkQAIkQAIkQAIkQAIk4E2AioU3EZ6TAAmQAAmQAAmQAAmQAAkETYCKRdDIWIEESIAESIAESIAESIAESMCbABULbyI8JwESIAESIAESIAESIAESCJoAFYugkbECCZAACZAACZAACZAACZCANwEqFt5EeE4CJEACJEACJEACJEACJBA0ASoWQSNjBRIgARIgARIgARIgARIgAW8CVCy8ifCcBEiABEiABEiABEiABEggaAJULIJGxgokQAIkQAIkQAIkQAIkQALeBKhYeBPhOQmQAAmQAAmQAAmQAAmQQNAEqFgEjYwVSIAESIAESIAESIAESIAEvAlQsfAmwnMSIAESIAESIAESIAESIIGgCVCxCBoZK5AACZAACZAACZAACZAACXgToGLhTYTnJEACJEACJEACJEACJEACQROgYhE0MlYgARIgARIgARIgARIgARLwJkDFwpsIz0mABEiABEiABEiABEiABIImQMUiaGSsQAJNg8CatWtl/YaNTWMwHEWTILBm7TrJWr+hSYyFgyABEiABEjj8CESHestZu/Pl3R+2ODYzYUimDO6S7niNmSRAAgdPYOOmzfLjT8t1AzEx0dKta1fHxj5a+n+SV7RbXxvZd4r06TRSVmyeoz/I7JTRT04efIVj3VAzV275UlZv+1pSE9tJWnJH6Z95vE4H0u7SrNmydsdCXbR7+6Fy/BEXyO68DTJ3+b90XlRktJw/5kGJUH+akoQy7rKKInlr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AAmQAAmQAAmQAAm0JQJULNrS3ea1kgAJkAAJkAAJkAAJkECcCFCxiBNYZksCJEACJEACJEACJEACbYmAJwHyioqKlFmCZGdnCdxMUkiABEiABEiABEiABEiABNoWgZgVC/h6f/ud6Q61tLQ0GTViuAwePMjZxxUSIAESIAESIAESIAESIIHWTcDzqVAVFRWydPkKWb5iZesmx6sjARIgARIgARIgARIgARJwCMQex0KnPlXX1MmWLVtk3bp1UlBQ4GR+0dcukKysLGebKyRAAiRAAiRAAiRAAiRAAq2TgCcjFu3atZORI0fKpZdeKp07d3ZI7dq121nnCgmQAAmQAAmQAAmQAAmQQOslELtiUVcnZSXFUlVZIXV1tTJkyBCH1sHCQmedKyRAAiRAAiRAAiRAAiRAAq2XQOyKhbKpra2RyopyKS0ukr59+ji0qqqqnHWukAAJkAAJkAAJkAAJkAAJtF4CnigWbjwYtbBC17OWBJckQAIkQAIkQAIkQAIk0LoJeK5YVFdVuogxpoULBldJgARIgARIgARIgARIoNUS8FyxSEr2h8aorHQrGa2WIS+MBEiABEiABEiABEiABNo8Ac8Vi5SUFMnMzDRg9+zZowbddW0eMgGQAAmQAAmQAAmQAAmQQGsn4LlioZqE9O7d23DDiAWicuflbZR9+flSXV3d2nny+kiABEiABEiABEiABEigTRKIPUBeCGzJqemydOlSWbNmTcDRMaNHybBhQwP2cYMESIAESIAESIAESIAESKDlE/B+xEKZJGo07pKSknp0EhLjUly9criDBEiABEiABEiABEiABEigeQn4La09LHf27FmybfsOk2MfjWsxYsQIyc3NlbTUFAn0GuVhocyKBEiABEiABEiABEiABEjgiBGIi2KxZ+8+c0HZ2dkyefJk5+IQnZtCAiRAAiRAAiRAAiRAAiTQ+gh4rljU1GgU7sNuZjt37iy1ug2Fora21kTobn0IeUUkQAIkQAIkQAIkQAIkQAJxUCz8kbeTNaZFWWkxKZMACZAACZAACZAACZAACbRyAt5bU7uCbTOGRSt/enh5JEACJEACJEACJEACJHCYgOeKhUuvIGQSIAESIAESIAESIAESIIE2QsBzxaKNcONlkgAJkAAJkAAJkAAJkAAJuAh4rliUlpY62SdoPAsKCZAACZAACZAACZAACZBA6yfguWKx/ssNDrWcnBxnnSskQAIkQAIkQAIkQAIkQAKtl4CnisVejV+xcdNmh1anTp2cda6QAAmQAAmQAAmQAAmQAAm0XgIxu5tFfIrZc+ZKQUGBVGvMCiuZmZnSt09vqSgvs7u4JAESIAESIAESIAESIAESaKUEPFAs6mRffn4AnvT0dJk0aZIgWB6FBEiABEiABEiABEiABEig9ROIWbFISkqUXr16SVJSkrRv314QbXvgwIGGXGlxYesnyCskARIgARIgARIgARIgARKQhOLCg3WxcIDnp8zs3IAsEBivoqxURyyqA/ZzgwRIgARIgARIgARIgARIoHUSiHnEAkpE7eEpT7C3qK2tlqrKytZJi1dFAiRAAiRAAiRAAiRAAiQQkkDMigVyLSstDpk5d5IACZAACZAACZAACZAACbQNAp66m20byHiVJEACJEACJEACJEACJEACwQSoWAQT4TYJkAAJkAAJkAAJkAAJkEDUBKhYRI2MJ5AACZAACZAACZAACZAACQQToGIRTITbJEACJEACJEACJEACJEACUROgYhE1Mp5AAiRAAiRAAiRAAiRAAiQQTICKRTARbpMACZAACZAACZAACZAACURNgIpF1Mh4AgmQAAmQAAmQAAmQAAmQQDABKhbBRLhNAiRAAiRAAiRAAiRAAiQQNQEqFlEj4wkkQAIkQAIkQAIkQAIkQALBBKhYBBPhNgmQAAmQAAmQAAmQAAmQQNQEqFhEjYwnkAAJkAAJkAAJkAAJkAAJBBOgYhFMhNskQAIkQAIkQAIkQAIkQAJRE6BiETUynkACJEACJEACJEACJEACJBBMgIpFMBFukwAJkAAJkAAJkAAJkAAJRE2AikXUyHgCCZAACZAACZAACZAACZBAMAEqFsFEuE0CJEACJEACJEACJEACJBA1ASoWUSPjCSRAAiRAAiRAAiRAAiRAAsEE/h9YZ2PRWJPlqwAAAABJRU5ErkJggg=="/><path id="Line-17" stroke="#C06334" stroke-linecap="square" stroke-width="2" d="M250.5 355.5v16"/><path id="Line-18" stroke="#C06334" stroke-linecap="square" stroke-width="2" d="M247.5 360.5l3-5"/><path id="Line-10" stroke="#C06334" stroke-linecap="square" stroke-width="2" d="M250.5 372.5l3-5"/><path id="Line-11" stroke="#C06334" stroke-linecap="square" stroke-width="2" d="M253.5 360.5l-3-5"/><path id="Line-12" stroke="#C06334" stroke-linecap="square" stroke-width="2" d="M250.5 372.5l-3-5"/><text id="2" fill="#C06334" font-family="OpenSans-Regular, Open Sans" font-size="12" font-weight="normal"><tspan x="249.069" y="186">2</tspan></text><path id="Line-19" stroke="#C06334" stroke-linecap="square" stroke-width="2" d="M259 190v-9.5"/><path id="Line-5" stroke="#C06334" stroke-linecap="square" stroke-width="2" d="M245 190v-9.5"/><path id="Line-20" stroke="#C06334" stroke-linecap="square" stroke-width="2" d="M245 190.5h14"/><text id="No-space-between-the" fill="#C06334" font-family="OpenSans-Bold, Open Sans" font-size="14" font-weight="bold"><tspan x="138.785" y="46">No space</tspan> <tspan x="13.007" y="65">between the function name and parentheses</tspan> <tspan x="13.263" y="84">between the parentheses and the parameter</tspan></text><path id="Line" fill="#C06334" fill-rule="nonzero" d="M279.5 93.086l.707.707 46.1 46.1 4.243-4.242 4.95 14.849-14.85-4.95 4.243-4.243-46.1-46.1-.707-.707 1.414-1.414z"/><text id="Indentation-2-spaces" fill="#C06334" font-family="OpenSans-Bold, Open Sans" font-size="14" font-weight="bold"><tspan x="91.04" y="168">Indentation</tspan> <tspan x="103.334" y="187">2 spaces</tspan></text><path id="Line-4" fill="#C06334" fill-rule="nonzero" d="M224 170.5l14 7-14 7v-6h-46.5v-2H224v-6z"/><text id="A-space-" fill="#C06334" font-family="OpenSans-Bold, Open Sans" font-size="14" font-weight="bold"><tspan x="105.48" y="214">A space </tspan> <tspan x="67.052" y="233">after for/if/while…</tspan></text><path id="Line-6" fill="#C06334" fill-rule="nonzero" d="M224 203.5l14 7-14 7v-6h-46.5v-2H224v-6z"/><text id="}-else-{-without-a-l" fill="#C06334" font-family="OpenSans-Bold, Open Sans" font-size="14" font-weight="bold"><tspan x="507.896" y="455">} else { without a line break</tspan></text><path id="Line-14" fill="#C06334" fill-rule="nonzero" d="M430.792 430.381l-.781 5.949 66.12 8.679.99.13-.26 1.983-.991-.13-66.12-8.679-.78 5.95L416 435.5l14.792-5.119z"/><text id="Spaces-around-a-nest" fill="#C06334" font-family="OpenSans-Bold, Open Sans" font-size="14" font-weight="bold"><tspan x="255.98" y="501">Spaces around a nested call</tspan></text><path id="Line-15" fill="#C06334" fill-rule="nonzero" d="M309 457.565l14.903 4.786-4.196 4.289 15.992 15.645.715.7-1.398 1.43-.715-.7-15.993-15.645-4.195 4.29L309 457.564z"/><text id="An-empty-line" fill="#C06334" font-family="OpenSans-Bold, Open Sans" font-size="14" font-weight="bold"><tspan x="68.465" y="362">An empty line</tspan> <tspan x="38.052" y="381">between logical blocks</tspan></text><path id="Line-7" fill="#C06334" fill-rule="nonzero" d="M218 354.5l14 7-14 7v-6h-39.558v-2H218v-6z"/><text id="Lines-are-not-very-l" fill="#C06334" font-family="OpenSans-Bold, Open Sans" font-size="14" font-weight="bold"><tspan x="515.101" y="350">Lines are not very long</tspan></text><path id="Line-13" fill="#C06334" fill-rule="nonzero" d="M544.024 354.211l.706 1.872-.935.353-78.344 29.557 2.119 5.614L452 390l10.628-11.491 2.117 5.613 78.344-29.558.935-.353z"/><text id="A-semicolon-;" fill="#C06334" font-family="OpenSans-Bold, Open Sans" font-size="14" font-weight="bold"><tspan x="609" y="223">A semicolon ;</tspan> <tspan x="609" y="242">is mandatory</tspan></text><path id="Line-8" fill="#C06334" fill-rule="nonzero" d="M409 221.5v6h192v2H409v6l-14-7 14-7z"/><text id="Spaces-around-operat" fill="#C06334" font-family="OpenSans-Bold, Open Sans" font-size="14" font-weight="bold"><tspan x="597.772" y="136">Spaces</tspan> <tspan x="559.973" y="155">around operators</tspan></text><path id="Line-16" fill="#C06334" fill-rule="nonzero" d="M585.27 163.314l.416 1.956-.978.208-160.307 34.088 1.249 5.869-15.15-3.935 12.238-9.759 1.247 5.868 160.307-34.087.978-.208z"/><text id="Curly-brace-{-on-the" fill="#C06334" font-family="OpenSans-Bold, Open Sans" font-size="14" font-weight="bold"><tspan x="526.676" y="70">Curly brace {</tspan> <tspan x="464.233" y="89">on the same line, after a space</tspan></text><path id="Line-3" fill="#C06334" fill-rule="nonzero" d="M527.484 97.671l.845 1.813-.907.422-105.311 49.086 2.536 5.438L409 154l9.732-12.26 2.535 5.439 105.31-49.085.907-.423z"/><path id="Line-2" fill="#C06334" fill-rule="nonzero" d="M364.5 36v96h6l-7 14-7-14h6V36h2z"/><text id="A-space-between-argu" fill="#C06334" font-family="OpenSans-Bold, Open Sans" font-size="14" font-weight="bold"><tspan x="454.48" y="273">A space</tspan> <tspan x="450.532" y="292">between</tspan> <tspan x="442.91" y="311">arguments</tspan></text><path id="Line-9" fill="#C06334" fill-rule="nonzero" d="M434.94 285.587l1.473 1.353-.677.737-24.528 26.69 4.419 4.06L401 324l4.318-15.045 4.418 4.059 24.528-26.69.676-.737z"/><text id="A-space-between-para" fill="#C06334" font-family="OpenSans-Bold, Open Sans" font-size="14" font-weight="bold"><tspan x="270.969" y="20">A space between parameters</tspan></text><path id="Line" fill="#C06334" fill-rule="nonzero" d="M384.5 458.5l-6.869 14.065-3.645-4.767-22.879 17.496-.794.608-1.215-1.589.795-.607 22.878-17.497-3.644-4.765L384.5 458.5z"/></g></g></svg> +======= +<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="715" height="528" viewBox="0 0 715 528"><defs><style>@import url(https://fonts.googleapis.com/css?family=Open+Sans:bold,italic,bolditalic%7CPT+Mono);@font-face{font-family:'PT Mono';font-weight:700;font-style:normal;src:local('PT MonoBold'),url(/font/PTMonoBold.woff2) format('woff2'),url(/font/PTMonoBold.woff) format('woff'),url(/font/PTMonoBold.ttf) format('truetype')}</style></defs><g id="combined" fill="none" fill-rule="evenodd" stroke="none" stroke-width="1"><g id="code-style.svg"><path fill="#FFF" d="M0 0h715v528H0z"/><image id="Bitmap" width="395" height="340" x="239" y="143" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAxYAAAKoCAYAAADqCWkWAAAAAXNSR0IArs4c6QAAAERlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAA6ABAAMAAAABAAEAAKACAAQAAAABAAADFqADAAQAAAABAAACqAAAAAAUmPlGAABAAElEQVR4AeydBXxUx/bHT9yNBBIgBAjubi2vpUKhQFuk9iq80ldX6v3XjbrLq1E3qEGhFChWHIK7J4QESYLEXf5zZjN372p2N7sh8jt8ljt37szcud+7SebMnHPGKz83u4ogIAACIAACIAACIAACIAACIFALAt61qIuqIAACIAACIAACIAACIAACICAJQLHAFwEEQAAEQAAEQAAEQAAEQKDWBKBY1BohGgABEAABEAABEAABEAABEIBige8ACIAACIAACIAACIAACIBArQlAsag1QjQAAiAAAiAAAiAAAiAAAiAAxQLfARAAARAAARAAARAAARAAgVoTgGJRa4RoAARAAARAAARAAARAAARAAIoFvgMgAAIgAAIgAAIgAAIgAAK1JgDFotYI0QAIgAAIgAAIgAAIgAAIgAAUC3wHQAAEQAAEQAAEQAAEQAAEak0AikWtEaIBEAABEAABEAABEAABEAABKBb4DoAACIAACIAACIAACIAACNSaABSLWiNEAyAAAiAAAiAAAiAAAiAAAlAs8B0AARAAARAAARAAARAAARCoNQEoFrVGiAZAAARAAARAAARAAARAAASgWOA7AAIgAAIgAAIgAAIgAAIgUGsCUCxqjRANgAAIgAAIgAAIgAAIgAAIQLHAdwAEQAAEQAAEQAAEQAAEQKDWBKBY1BohGgABEAABEAABEAABEAABEIBige8ACIAACIAACIAACIAACIBArQlAsag1QjTQlAlkZZ2k9UkbmzICm89eUlJKy1espLKycptl6vpCZWUl5eXlUXFxcV3fGvcDARAAARAAgUZPwCs/N7vK3U9ZUVlFC/Zk0K7juZR6poDOFJVTXFgAtQwLpIs6N6f+CVHuvmWDbu/XLem0cF+WZPTwhZ0oIsivQT9PU+l8Tm4uzftrAVVVVVFiYnsaNmRwU3n0Gp+zoqKCZs+ZKwbwJRQWFkrjxlxK3t5nZx6DFZv1SRvo6NGjVC76xRIZGUljLx1V43OgAAiAAAiAAAiAgOMEfB0v6ljJ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OvWiIeK33p4n9/72PlOHl158XkpLSuSxx59Q15y+aRu2cjf/+Ecya+aZZheN52kzfGF73G4f//OfBX/BMmP6NLn1J7cER5v9Ei0zP9/XOMQ8ePQqo4c5XvLiSy/L7//wiMn+3QXzZP6Cd+TZ556TzTo9xkq3bt3k9l/8XMaMGW2jArZo7D//wgvyr3//R/bt2xdwbMjgwfLDG38QcO5iVZx+/svbTbr7f3uvHHPMpIBzgnfefOttue/+B0z0I394WEardzC3RMvsF7f/Sj7+eKnJYqwaD//fQw828Iy0Y8cOufSyK5xiHnrwAZmgDfFDLb/69R3yweLFgnfojl/9Sp586in593/+G1CtCROOkp/+5CfSvXu3gHj3Tq0qVFWqnGCK3ZtvvmkOrV33tYwaGZ930l02pvRlZmab93/NmjXm0OrVayP2ErVx02b5qN5+CcrJqVNOll49e7qLYJgESIAESIAESMBFoFWPWKxetdo0ftyNete1mUbd1ddcqz2OW93RnoR37twp11x7nbz62msBSgUyR32e+stf5bobvh+6N901SrFs2XLTsAxWKpDP/Q/8Tt57byGCKqF70H3HQv93FdMgwdfrNzhxMNhGDy96mOMl7pEZKBh33X1PgFKBcqEsXP/9H5ge8eB6YITiJ7f+1LgIDlYqkBbef3Du3599zjnV3eDds3ePEx8u4M4XSk6wRMvsJzffLFAyIRiVef6FFwOyxCjKPffe58TN/uZFh4VSgQrB5TBkz5498uObb2mgVODYp59+Jj/7+S+cUS/EhZLKijLp16+fo2RDQSsuLgmV1PO4Ch2Bw2iclWiMuL9c8ZU9zVzjF3oPKSRAAiRAAiRAAuEJNOxOD5/2sDuSnJIi/fv3l+nTp6snownac9rdNOS2b98ujzzyiHym06IgGA246847PK3/3ff81mkYX3bZZTJnzhzp2LGjrFu3Tu666y75WkdT1uiUj//8979y+WVzAspOSk5x9tHAhuA6vv/978tg7XlHz+7jjz9u4p997h/a23uKmUryxBNPOI04TJe6++67TZpzzjlHZs2aZcLuf126hDeSxbQQK0cccYRUlMd3qof7ml948SVT9PHHHy/f/va31S1pojzzzDPy7rvvmvi/Pv03+d39/gY3IqGoLV3mW/AMrK677jqBQlSoU1tgdP/vf//bnPvnJ56U4ydP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"/><path id="Line-17" stroke="#C06334" stroke-linecap="square" stroke-width="2" d="M250.5 355.5v16"/><path id="Line-18" stroke="#C06334" stroke-linecap="square" stroke-width="2" d="M247.5 360.5l3-5"/><path id="Line-10" stroke="#C06334" stroke-linecap="square" stroke-width="2" d="M250.5 372.5l3-5"/><path id="Line-11" stroke="#C06334" stroke-linecap="square" stroke-width="2" d="M253.5 360.5l-3-5"/><path id="Line-12" stroke="#C06334" stroke-linecap="square" stroke-width="2" d="M250.5 372.5l-3-5"/><text id="2" fill="#C06334" font-family="OpenSans-Regular, Open Sans" font-size="12" font-weight="normal"><tspan x="249.069" y="186">2</tspan></text><path id="Line-19" stroke="#C06334" stroke-linecap="square" stroke-width="2" d="M259 190v-9.5"/><path id="Line-5" stroke="#C06334" stroke-linecap="square" stroke-width="2" d="M245 190v-9.5"/><path id="Line-20" stroke="#C06334" stroke-linecap="square" stroke-width="2" d="M245 190.5h14"/><text id="No-space-between-the" fill="#C06334" font-family="OpenSans-Bold, Open Sans" font-size="14" font-weight="bold"><tspan x="138.785" y="46">No space</tspan> <tspan x="13.007" y="65">between the function name and parentheses</tspan> <tspan x="13.263" y="84">between the parentheses and the parameter</tspan></text><path id="Line" fill="#C06334" fill-rule="nonzero" d="M279.5 93.086l.707.707 46.1 46.1 4.243-4.242 4.95 14.849-14.85-4.95 4.243-4.243-46.1-46.1-.707-.707 1.414-1.414z"/><text id="Indentation-2-spaces" fill="#C06334" font-family="OpenSans-Bold, Open Sans" font-size="14" font-weight="bold"><tspan x="91.04" y="168">Indentation</tspan> <tspan x="103.334" y="187">2 spaces</tspan></text><path id="Line-4" fill="#C06334" fill-rule="nonzero" d="M224 170.5l14 7-14 7v-6h-46.5v-2H224v-6z"/><text id="A-space-" fill="#C06334" font-family="OpenSans-Bold, Open Sans" font-size="14" font-weight="bold"><tspan x="105.48" y="214">A space </tspan> <tspan x="67.052" y="233">after for/if/while…</tspan></text><path id="Line-6" fill="#C06334" fill-rule="nonzero" d="M224 203.5l14 7-14 7v-6h-46.5v-2H224v-6z"/><text id="}-else-{-without-a-l" fill="#C06334" font-family="OpenSans-Bold, Open Sans" font-size="14" font-weight="bold"><tspan x="507.896" y="455">} else { without a line break</tspan></text><path id="Line-14" fill="#C06334" fill-rule="nonzero" d="M430.792 430.381l-.781 5.949 66.12 8.679.99.13-.26 1.983-.991-.13-66.12-8.679-.78 5.95L416 435.5l14.792-5.119z"/><text id="Spaces-around-a-nest" fill="#C06334" font-family="OpenSans-Bold, Open Sans" font-size="14" font-weight="bold"><tspan x="255.98" y="501">Spaces around a nested call</tspan></text><path id="Line-15" fill="#C06334" fill-rule="nonzero" d="M309 457.565l14.903 4.786-4.196 4.289 15.992 15.645.715.7-1.398 1.43-.715-.7-15.993-15.645-4.195 4.29L309 457.564z"/><text id="An-empty-line" fill="#C06334" font-family="OpenSans-Bold, Open Sans" font-size="14" font-weight="bold"><tspan x="68.465" y="362">An empty line</tspan> <tspan x="38.052" y="381">between logical blocks</tspan></text><path id="Line-7" fill="#C06334" fill-rule="nonzero" d="M218 354.5l14 7-14 7v-6h-39.558v-2H218v-6z"/><text id="Lines-are-not-very-l" fill="#C06334" font-family="OpenSans-Bold, Open Sans" font-size="14" font-weight="bold"><tspan x="515.101" y="350">Lines are not very long</tspan></text><path id="Line-13" fill="#C06334" fill-rule="nonzero" d="M544.024 354.211l.706 1.872-.935.353-78.344 29.557 2.119 5.614L452 390l10.628-11.491 2.117 5.613 78.344-29.558.935-.353z"/><text id="A-semicolon-;" fill="#C06334" font-family="OpenSans-Bold, Open Sans" font-size="14" font-weight="bold"><tspan x="609" y="223">A semicolon ;</tspan> <tspan x="609" y="242">is mandatory</tspan></text><path id="Line-8" fill="#C06334" fill-rule="nonzero" d="M409 221.5v6h192v2H409v6l-14-7 14-7z"/><text id="Spaces-around-operat" fill="#C06334" font-family="OpenSans-Bold, Open Sans" font-size="14" font-weight="bold"><tspan x="597.772" y="136">Spaces</tspan> <tspan x="559.973" y="155">around operators</tspan></text><path id="Line-16" fill="#C06334" fill-rule="nonzero" d="M585.27 163.314l.416 1.956-.978.208-160.307 34.088 1.249 5.869-15.15-3.935 12.238-9.759 1.247 5.868 160.307-34.087.978-.208z"/><text id="Curly-brace-{-on-the" fill="#C06334" font-family="OpenSans-Bold, Open Sans" font-size="14" font-weight="bold"><tspan x="526.676" y="70">Curly brace {</tspan> <tspan x="464.233" y="89">on the same line, after a space</tspan></text><path id="Line-3" fill="#C06334" fill-rule="nonzero" d="M527.484 97.671l.845 1.813-.907.422-105.311 49.086 2.536 5.438L409 154l9.732-12.26 2.535 5.439 105.31-49.085.907-.423z"/><path id="Line-2" fill="#C06334" fill-rule="nonzero" d="M364.5 36v96h6l-7 14-7-14h6V36h2z"/><text id="A-space-between-argu" fill="#C06334" font-family="OpenSans-Bold, Open Sans" font-size="14" font-weight="bold"><tspan x="454.48" y="273">A space</tspan> <tspan x="450.532" y="292">between</tspan> <tspan x="442.91" y="311">arguments</tspan></text><path id="Line-9" fill="#C06334" fill-rule="nonzero" d="M434.94 285.587l1.473 1.353-.677.737-24.528 26.69 4.419 4.06L401 324l4.318-15.045 4.418 4.059 24.528-26.69.676-.737z"/><text id="A-space-between-para" fill="#C06334" font-family="OpenSans-Bold, Open Sans" font-size="14" font-weight="bold"><tspan x="270.969" y="20">A space between parameters</tspan></text><path id="Line" fill="#C06334" fill-rule="nonzero" d="M384.5 458.5l-6.869 14.065-3.645-4.767-22.879 17.496-.794.608-1.215-1.589.795-.607 22.878-17.497-3.644-4.765L384.5 458.5z"/></g></g></svg> +>>>>>>> 540d753e90789205fc6e75c502f68382c87dea9b diff --git a/1-js/03-code-quality/02-coding-style/figure-bracket-style.png b/1-js/03-code-quality/02-coding-style/figure-bracket-style.png deleted file mode 100644 index b04db65c6..000000000 Binary files a/1-js/03-code-quality/02-coding-style/figure-bracket-style.png and /dev/null differ diff --git a/1-js/03-code-quality/02-coding-style/figure-bracket-style@2x.png b/1-js/03-code-quality/02-coding-style/figure-bracket-style@2x.png deleted file mode 100644 index 0e994ca4b..000000000 Binary files a/1-js/03-code-quality/02-coding-style/figure-bracket-style@2x.png and /dev/null differ diff --git a/1-js/03-code-quality/03-comments/article.md b/1-js/03-code-quality/03-comments/article.md index 930ff929f..af3a06c80 100644 --- a/1-js/03-code-quality/03-comments/article.md +++ b/1-js/03-code-quality/03-comments/article.md @@ -4,7 +4,7 @@ As we know from the chapter <info:structure>, comments can be single-line: start We normally use them to describe how and why the code works. -From the first sight, commenting might be obvious, but novices in programming usually get it wrong. +At first sight, commenting might be obvious, but novices in programming often use them wrongly. ## Bad comments @@ -18,7 +18,7 @@ complex; code; ``` -But in good code the amount of such "explanatory" comments should be minimal. Seriously, code should be easy to understand without them. +But in good code, the amount of such "explanatory" comments should be minimal. Seriously, the code should be easy to understand without them. There's a great rule about that: "if the code is so unclear that it requires a comment, then maybe it should be rewritten instead". @@ -120,30 +120,30 @@ In reality, we can't totally avoid "explanatory" comments. There are complex alg So, explanatory comments are usually bad. Which comments are good? Describe the architecture -: Provide a high-level overview of components, how they interact, what's the control flow in various situations... In short -- the bird's eye view of the code. There's a special diagram language [UML](http://wikipedia.org/wiki/Unified_Modeling_Language) for high-level architecture diagrams. Definitely worth studying. +: Provide a high-level overview of components, how they interact, what's the control flow in various situations... In short -- the bird's eye view of the code. There's a special language [UML](http://wikipedia.org/wiki/Unified_Modeling_Language) to build high-level architecture diagrams explaining the code. Definitely worth studying. -Document a function usage +Document function parameters and usage : There's a special syntax [JSDoc](http://en.wikipedia.org/wiki/JSDoc) to document a function: usage, parameters, returned value. - For instance: - ```js - /** - * Returns x raised to the n-th power. - * - * @param {number} x The number to raise. - * @param {number} n The power, must be a natural number. - * @return {number} x raised to the n-th power. - */ - function pow(x, n) { - ... - } - ``` +For instance: +```js +/** + * Returns x raised to the n-th power. + * + * @param {number} x The number to raise. + * @param {number} n The power, must be a natural number. + * @return {number} x raised to the n-th power. + */ +function pow(x, n) { + ... +} +``` - Such comments allow us to understand the purpose of the function and use it the right way without looking in its code. +Such comments allow us to understand the purpose of the function and use it the right way without looking in its code. - By the way, many editors like [WebStorm](https://www.jetbrains.com/webstorm/) can understand them as well and use them to provide autocomplete and some automatic code-checking. +By the way, many editors like [WebStorm](https://www.jetbrains.com/webstorm/) can understand them as well and use them to provide autocomplete and some automatic code-checking. - Also, there are tools like [JSDoc 3](https://github.com/jsdoc3/jsdoc) that can generate HTML-documentation from the comments. You can read more information about JSDoc at <http://usejsdoc.org/>. +Also, there are tools like [JSDoc 3](https://github.com/jsdoc/jsdoc) that can generate HTML-documentation from the comments. You can read more information about JSDoc at <https://jsdoc.app>. Why is the task solved this way? : What's written is important. But what's *not* written may be even more important to understand what's going on. Why is the task solved exactly this way? The code gives no answer. @@ -175,6 +175,6 @@ Good comments allow us to maintain the code well, come back to it after a delay **Avoid comments:** - That tell "how code works" and "what it does". -- Put them only if it's impossible to make the code so simple and self-descriptive that it doesn't require those. +- Put them in only if it's impossible to make the code so simple and self-descriptive that it doesn't require them. Comments are also used for auto-documenting tools like JSDoc3: they read them and generate HTML-docs (or docs in another format). diff --git a/1-js/03-code-quality/04-ninja-code/article.md b/1-js/03-code-quality/04-ninja-code/article.md index 9019242f2..96fdf4143 100644 --- a/1-js/03-code-quality/04-ninja-code/article.md +++ b/1-js/03-code-quality/04-ninja-code/article.md @@ -1,7 +1,7 @@ # Ninja code -```quote author="Confucius" +```quote author="Confucius (Analects)" Learning without thought is labor lost; thought without learning is perilous. ``` @@ -43,7 +43,7 @@ The Dao hides in wordlessness. Only the Dao is well begun and well completed. ``` -Another way to code faster is to use single-letter variable names everywhere. Like `a`, `b` or `c`. +Another way to code shorter is to use single-letter variable names everywhere. Like `a`, `b` or `c`. A short variable disappears in the code like a real ninja in the forest. No one will be able to find it using "search" of the editor. And even if someone does, they won't be able to "decipher" what the name `a` or `b` means. @@ -104,8 +104,8 @@ A quick read of such code becomes impossible. And when there's a typo... Ummm... ## Smart synonyms -```quote author="Confucius" -The hardest thing of all is to find a black cat in a dark room, especially if there is no cat. +```quote author="Laozi (Tao Te Ching)" +The Tao that can be told is not the eternal Tao. The name that can be named is not the eternal name. ``` Using *similar* names for *same* things makes life more interesting and shows your creativity to the public. @@ -137,7 +137,7 @@ Instead, reuse existing names. Just write new values into them. In a function try to use only variables passed as parameters. -That would make it really hard to identify what's exactly in the variable *now*. And also where it comes from. A person with weak intuition would have to analyze the code line-by-line and track the changes through every code branch. +That would make it really hard to identify what's exactly in the variable *now*. And also where it comes from. The purpose is to develop the intuition and memory of a person reading the code. A person with weak intuition would have to analyze the code line-by-line and track the changes through every code branch. **An advanced variant of the approach is to covertly (!) replace the value with something alike in the middle of a loop or a function.** @@ -155,7 +155,7 @@ function ninjaFunction(elem) { A fellow programmer who wants to work with `elem` in the second half of the function will be surprised... Only during the debugging, after examining the code they will find out that they're working with a clone! -Seen in code regularly. Deadly effective even against an experienced ninja. +Seen in code regularly. Deadly effective even against an experienced ninja. ## Underscores for fun @@ -169,8 +169,7 @@ A smart ninja puts underscores at one spot of code and evades them at other plac Let everyone see how magnificent your entities are! Names like `superElement`, `megaFrame` and `niceItem` will definitely enlighten a reader. -Indeed, from one hand, something is written: `super..`, `mega..`, `nice..` But from the other hand -- that brings no details. A reader may decide to look for a hidden meaning and meditate for an hour or two. - +Indeed, from one hand, something is written: `super..`, `mega..`, `nice..` But from the other hand -- that brings no details. A reader may decide to look for a hidden meaning and meditate for an hour or two of their paid working time. ## Overlap outer variables @@ -180,7 +179,7 @@ When in the light, can't see anything in the darkness.<br> When in the darkness, can see everything in the light. ``` -Use same names for variables inside and outside a function. As simple. No efforts required. +Use same names for variables inside and outside a function. As simple. No efforts to invent new names. ```js let *!*user*/!* = authenticateUser(); diff --git a/1-js/03-code-quality/05-testing-mocha/3-pow-test-wrong/solution.md b/1-js/03-code-quality/05-testing-mocha/3-pow-test-wrong/solution.md index 7b58f0bf1..4d0571b9d 100644 --- a/1-js/03-code-quality/05-testing-mocha/3-pow-test-wrong/solution.md +++ b/1-js/03-code-quality/05-testing-mocha/3-pow-test-wrong/solution.md @@ -4,7 +4,7 @@ What we have here is actually 3 tests, but layed out as a single function with 3 Sometimes it's easier to write this way, but if an error occurs, it's much less obvious what went wrong. -If an error happens inside a complex execution flow, then we'll have to figure out the data at that point. We'll actually have to *debug the test*. +If an error happens in the middle of a complex execution flow, then we'll have to figure out the data at that point. We'll actually have to *debug the test*. It would be much better to break the test into multiple `it` blocks with clearly written inputs and outputs. diff --git a/1-js/03-code-quality/05-testing-mocha/article.md b/1-js/03-code-quality/05-testing-mocha/article.md index c7b164b15..4c2b1aa5e 100644 --- a/1-js/03-code-quality/05-testing-mocha/article.md +++ b/1-js/03-code-quality/05-testing-mocha/article.md @@ -1,10 +1,8 @@ -# Automated testing with mocha +# Automated testing with Mocha -Automated testing will be used in further tasks. +Automated testing will be used in further tasks, and it's also widely used in real projects. -It's actually a part of the "educational minimum" of a developer. - -## Why we need tests? +## Why do we need tests? When we write a function, we can usually imagine what it should do: which parameters give which results. @@ -20,15 +18,15 @@ For instance, we're creating a function `f`. Wrote some code, testing: `f(1)` wo That's very typical. When we develop something, we keep a lot of possible use cases in mind. But it's hard to expect a programmer to check all of them manually after every change. So it becomes easy to fix one thing and break another one. -**Automated testing means that tests are written separately, in addition to the code. They can be executed easily and check all the main use cases.** +**Automated testing means that tests are written separately, in addition to the code. They run our functions in various ways and compare results with the expected.** ## Behavior Driven Development (BDD) -Let's use a technique named [Behavior Driven Development](http://en.wikipedia.org/wiki/Behavior-driven_development) or, in short, BDD. That approach is used among many projects. BDD is not just about testing. That's more. +Let's start with a technique named [Behavior Driven Development](http://en.wikipedia.org/wiki/Behavior-driven_development) or, in short, BDD. **BDD is three things in one: tests AND documentation AND examples.** -Enough words. Let's see the example. +To understand BDD, we'll examine a practical case of development. ## Development of "pow": the spec @@ -38,7 +36,7 @@ That task is just an example: there's the `**` operator in JavaScript that can d Before creating the code of `pow`, we can imagine what the function should do and describe it. -Such description is called a *specification* or, in short, a spec, and looks like this: +Such description is called a *specification* or, in short, a spec, and contains descriptions of use cases together with tests for them, like this: ```js describe("pow", function() { @@ -53,17 +51,17 @@ describe("pow", function() { A spec has three main building blocks that you can see above: `describe("title", function() { ... })` -: What functionality we're describing. Uses to group "workers" -- the `it` blocks. In our case we're describing the function `pow`. +: What functionality we're describing? In our case we're describing the function `pow`. Used to group "workers" -- the `it` blocks. -`it("title", function() { ... })` +`it("use case description", function() { ... })` : In the title of `it` we *in a human-readable way* describe the particular use case, and the second argument is a function that tests it. `assert.equal(value1, value2)` : The code inside `it` block, if the implementation is correct, should execute without errors. - Functions `assert.*` are used to check whether `pow` works as expected. Right here we're using one of them -- `assert.equal`, it compares arguments and yields an error if they are not equal. Here it checks that the result of `pow(2, 3)` equals `8`. + Functions `assert.*` are used to check whether `pow` works as expected. Right here we're using one of them -- `assert.equal`, it compares arguments and yields an error if they are not equal. Here it checks that the result of `pow(2, 3)` equals `8`. There are other types of comparisons and checks, that we'll add later. - There are other types of comparisons and checks that we'll see further. +The specification can be executed, and it will run the test specified in `it` block. We'll see that later. ## The development flow @@ -71,7 +69,7 @@ The flow of development usually looks like this: 1. An initial spec is written, with tests for the most basic functionality. 2. An initial implementation is created. -3. To check whether it works, we run the testing framework [Mocha](http://mochajs.org/) (more details soon) that runs the spec. Errors are displayed. We make corrections until everything works. +3. To check whether it works, we run the testing framework [Mocha](https://mochajs.org/) (more details soon) that runs the spec. While the functionality is not complete, errors are displayed. We make corrections until everything works. 4. Now we have a working initial implementation with tests. 5. We add more use cases to the spec, probably not yet supported by the implementations. Tests start to fail. 6. Go to 3, update the implementation till tests give no errors. @@ -79,15 +77,17 @@ The flow of development usually looks like this: So, the development is *iterative*. We write the spec, implement it, make sure tests pass, then write more tests, make sure they work etc. At the end we have both a working implementation and tests for it. -In our case, the first step is complete: we have an initial spec for `pow`. So let's make an implementation. But before that let's make a "zero" run of the spec, just to see that tests are working (they will all fail). +Let's see this development flow in our practical case. + +The first step is already complete: we have an initial spec for `pow`. Now, before making the implementation, let's use a few JavaScript libraries to run the tests, just to see that they are working (they will all fail). ## The spec in action Here in the tutorial we'll be using the following JavaScript libraries for tests: -- [Mocha](http://mochajs.org/) -- the core framework: it provides common testing functions including `describe` and `it` and the main function that runs tests. -- [Chai](http://chaijs.com) -- the library with many assertions. It allows to use a lot of different assertions, for now we need only `assert.equal`. -- [Sinon](http://sinonjs.org/) -- a library to spy over functions, emulate built-in functions and more, we'll need it much later. +- [Mocha](https://mochajs.org/) -- the core framework: it provides common testing functions including `describe` and `it` and the main function that runs tests. +- [Chai](https://www.chaijs.com/) -- the library with many assertions. It allows to use a lot of different assertions, for now we need only `assert.equal`. +- [Sinon](https://sinonjs.org/) -- a library to spy over functions, emulate built-in functions and more, we'll need it much later. These libraries are suitable for both in-browser and server-side testing. Here we'll consider the browser variant. @@ -110,7 +110,7 @@ The result: As of now, the test fails, there's an error. That's logical: we have an empty function code in `pow`, so `pow(2,3)` returns `undefined` instead of `8`. -For the future, let's note that there are advanced test-runners, like [karma](https://karma-runner.github.io/) and others. So it's generally not a problem to setup many different tests. +For the future, let's note that there are more high-level test-runners, like [karma](https://karma-runner.github.io/) and others, that make it easy to autorun many different tests. ## Initial implementation @@ -132,7 +132,7 @@ What we've done is definitely a cheat. The function does not work: an attempt to ...But the situation is quite typical, it happens in practice. Tests pass, but the function works wrong. Our spec is imperfect. We need to add more use cases to it. -Let's add one more test to see if `pow(3, 4) = 81`. +Let's add one more test to check that `pow(3, 4) = 81`. We can select one of two ways to organize the test here: @@ -159,8 +159,8 @@ We can select one of two ways to organize the test here: assert.equal(pow(2, 3), 8); }); - it("3 raised to power 3 is 27", function() { - assert.equal(pow(3, 3), 27); + it("3 raised to power 4 is 81", function() { + assert.equal(pow(3, 4), 81); }); }); @@ -182,7 +182,7 @@ The result: [iframe height=250 src="pow-2" edit border="1"] -As we could expect, the second test failed. Sure, our function always returns `8`, while the `assert` expects `27`. +As we could expect, the second test failed. Sure, our function always returns `8`, while the `assert` expects `81`. ## Improving the implementation @@ -296,7 +296,7 @@ Testing finished – after all tests (after) [edit src="beforeafter" title="Open the example in the sandbox."] -Usually, `beforeEach/afterEach` (`before/after`) are used to perform initialization, zero out counters or do something else between the tests (or test groups). +Usually, `beforeEach/afterEach` and `before/after` are used to perform initialization, zero out counters or do something else between the tests (or test groups). ```` ## Extending the spec @@ -336,17 +336,16 @@ The result with new tests: The newly added tests fail, because our implementation does not support them. That's how BDD is done: first we write failing tests, and then make an implementation for them. ```smart header="Other assertions" - Please note the assertion `assert.isNaN`: it checks for `NaN`. -There are other assertions in Chai as well, for instance: +There are other assertions in [Chai](https://www.chaijs.com/) as well, for instance: - `assert.equal(value1, value2)` -- checks the equality `value1 == value2`. - `assert.strictEqual(value1, value2)` -- checks the strict equality `value1 === value2`. - `assert.notEqual`, `assert.notStrictEqual` -- inverse checks to the ones above. - `assert.isTrue(value)` -- checks that `value === true` - `assert.isFalse(value)` -- checks that `value === false` -- ...the full list is in the [docs](http://chaijs.com/api/assert/) +- ...the full list is in the [docs](https://www.chaijs.com/api/assert/) ``` So we should add a couple of lines to `pow`: @@ -380,9 +379,9 @@ In BDD, the spec goes first, followed by implementation. At the end we have both The spec can be used in three ways: -1. **Tests** guarantee that the code works correctly. -2. **Docs** -- the titles of `describe` and `it` tell what the function does. -3. **Examples** -- the tests are actually working examples showing how a function can be used. +1. As **Tests** - they guarantee that the code works correctly. +2. As **Docs** -- the titles of `describe` and `it` tell what the function does. +3. As **Examples** -- the tests are actually working examples showing how a function can be used. With the spec, we can safely improve, change, even rewrite the function from scratch and make sure it still works right. @@ -390,23 +389,21 @@ That's especially important in large projects when a function is used in many pl Without tests, people have two ways: -1. To perform the change, no matter what. And then our users meet bugs and report them. If we can afford that. -2. Or people become afraid to modify such functions, if the punishment for errors is harsh. Then it becomes old, overgrown with cobwebs, no one wants to get into it, and that's not good. +1. To perform the change, no matter what. And then our users meet bugs, as we probably fail to check something manually. +2. Or, if the punishment for errors is harsh, as there are no tests, people become afraid to modify such functions, and then the code becomes outdated, no one wants to get into it. Not good for development. -**Automatically tested code is contrary to that!** +**Automatic testing helps to avoid these problems!** -If the project is covered with tests, there's just no such problem. We can run tests and see a lot of checks made in a matter of seconds. +If the project is covered with tests, there's just no such problem. After any changes, we can run tests and see a lot of checks made in a matter of seconds. **Besides, a well-tested code has better architecture.** -Naturally, that's because it's easier to change and improve it. But not only that. +Naturally, that's because auto-tested code is easier to modify and improve. But there's also another reason. To write tests, the code should be organized in such a way that every function has a clearly described task, well-defined input and output. That means a good architecture from the beginning. In real life that's sometimes not that easy. Sometimes it's difficult to write a spec before the actual code, because it's not yet clear how it should behave. But in general writing tests makes development faster and more stable. -## What now? - Later in the tutorial you will meet many tasks with tests baked-in. So you'll see more practical examples. Writing tests requires good JavaScript knowledge. But we're just starting to learn it. So, to settle down everything, as of now you're not required to write tests, but you should already be able to read them even if they are a little bit more complex than in this chapter. diff --git a/1-js/03-code-quality/05-testing-mocha/beforeafter.view/test.js b/1-js/03-code-quality/05-testing-mocha/beforeafter.view/test.js index cad51d3ee..d3de82546 100644 --- a/1-js/03-code-quality/05-testing-mocha/beforeafter.view/test.js +++ b/1-js/03-code-quality/05-testing-mocha/beforeafter.view/test.js @@ -1,5 +1,11 @@ describe("test", function() { + + // Mocha usually waits for the tests for 2 seconds before considering them wrong + + this.timeout(200000); // With this code we increase this - in this case to 200,000 milliseconds + // This is because of the "alert" function, because if you delay pressing the "OK" button the tests will not pass! + before(() => alert("Testing started – before all tests")); after(() => alert("Testing finished – after all tests")); diff --git a/1-js/03-code-quality/05-testing-mocha/pow-2.view/test.js b/1-js/03-code-quality/05-testing-mocha/pow-2.view/test.js index 9a2f8fde7..c803f0e61 100644 --- a/1-js/03-code-quality/05-testing-mocha/pow-2.view/test.js +++ b/1-js/03-code-quality/05-testing-mocha/pow-2.view/test.js @@ -4,8 +4,8 @@ describe("pow", function() { assert.equal(pow(2, 3), 8); }); - it("3 raised to power 3 is 27", function() { - assert.equal(pow(3, 3), 27); + it("3 raised to power 4 is 81", function() { + assert.equal(pow(3, 4), 81); }); }); diff --git a/1-js/03-code-quality/06-polyfills/article.md b/1-js/03-code-quality/06-polyfills/article.md index 907730fdc..5ca123908 100644 --- a/1-js/03-code-quality/06-polyfills/article.md +++ b/1-js/03-code-quality/06-polyfills/article.md @@ -1,57 +1,89 @@ -# Polyfills +# Polyfills and transpilers -The JavaScript language steadily evolves. New proposals to the language appear regularly, they are analyzed and, if considered worthy, are appended to the list at <https://tc39.github.io/ecma262/> and then progress to the [specification](http://www.ecma-international.org/publications/standards/Ecma-262.htm). +The JavaScript language steadily evolves. New proposals to the language appear regularly, they are analyzed and, if considered worthy, are appended to the list at <https://tc39.github.io/ecma262/> and then progress to the [specification](https://www.ecma-international.org/publications-and-standards/standards/ecma-262/). Teams behind JavaScript engines have their own ideas about what to implement first. They may decide to implement proposals that are in draft and postpone things that are already in the spec, because they are less interesting or just harder to do. -So it's quite common for an engine to implement only the part of the standard. +So it's quite common for an engine to implement only part of the standard. -A good page to see the current state of support for language features is <https://kangax.github.io/compat-table/es6/> (it's big, we have a lot to study yet). +A good page to see the current state of support for language features is <https://compat-table.github.io/compat-table/es6/> (it's big, we have a lot to study yet). -## Babel +As programmers, we'd like to use most recent features. The more good stuff - the better! -When we use modern features of the language, some engines may fail to support such code. Just as said, not all features are implemented everywhere. +On the other hand, how to make our modern code work on older engines that don't understand recent features yet? -Here Babel comes to the rescue. +There are two tools for that: -[Babel](https://babeljs.io) is a [transpiler](https://en.wikipedia.org/wiki/Source-to-source_compiler). It rewrites modern JavaScript code into the previous standard. +1. Transpilers. +2. Polyfills. -Actually, there are two parts in Babel: +Here, in this chapter, our purpose is to get the gist of how they work, and their place in web development. -1. First, the transpiler program, which rewrites the code. The developer runs it on their own computer. It rewrites the code into the older standard. And then the code is delivered to the website for users. Modern project build system like [webpack](http://webpack.github.io/) or [brunch](http://brunch.io/) provide means to run transpiler automatically on every code change, so that doesn't involve any time loss from our side. +## Transpilers -2. Second, the polyfill. +A [transpiler](https://en.wikipedia.org/wiki/Source-to-source_compiler) is a special piece of software that translates source code to another source code. It can parse ("read and understand") modern code and rewrite it using older syntax constructs, so that it'll also work in outdated engines. - The transpiler rewrites the code, so syntax features are covered. But for new functions we need to write a special script that implements them. JavaScript is a highly dynamic language, scripts may not just add new functions, but also modify built-in ones, so that they behave according to the modern standard. +E.g. JavaScript before year 2020 didn't have the "nullish coalescing operator" `??`. So, if a visitor uses an outdated browser, it may fail to understand the code like `height = height ?? 100`. - There's a term "polyfill" for scripts that "fill in" the gap and add missing implementations. +A transpiler would analyze our code and rewrite `height ?? 100` into `(height !== undefined && height !== null) ? height : 100`. - Two interesting polyfills are: - - [babel polyfill](https://babeljs.io/docs/usage/polyfill/) that supports a lot, but is big. - - [polyfill.io](http://polyfill.io) service that allows to load/construct polyfills on-demand, depending on the features we need. +```js +// before running the transpiler +height = height ?? 100; -So, we need to setup the transpiler and add the polyfill for old engines to support modern features. +// after running the transpiler +height = (height !== undefined && height !== null) ? height : 100; +``` -If we orient towards modern engines and do not use features except those supported everywhere, then we don't need to use Babel. +Now the rewritten code is suitable for older JavaScript engines. -## Examples in the tutorial +Usually, a developer runs the transpiler on their own computer, and then deploys the transpiled code to the server. +Speaking of names, [Babel](https://babeljs.io) is one of the most prominent transpilers out there. -````online -Most examples are runnable at-place, like this: +Modern project build systems, such as [webpack](https://webpack.js.org/), provide a means to run a transpiler automatically on every code change, so it's very easy to integrate into the development process. -```js run -alert('Press the "Play" button in the upper-right corner to run'); -``` +## Polyfills + +New language features may include not only syntax constructs and operators, but also built-in functions. + +For example, `Math.trunc(n)` is a function that "cuts off" the decimal part of a number, e.g `Math.trunc(1.23)` returns `1`. + +In some (very outdated) JavaScript engines, there's no `Math.trunc`, so such code will fail. + +As we're talking about new functions, not syntax changes, there's no need to transpile anything here. We just need to declare the missing function. + +A script that updates/adds new functions is called "polyfill". It "fills in" the gap and adds missing implementations. -Examples that use modern JS will work only if your browser supports it. -```` +For this particular case, the polyfill for `Math.trunc` is a script that implements it, like this: -```offline -As you're reading the offline version, examples are not runnable. But they usually work :) +```js +if (!Math.trunc) { // if no such function + // implement it + Math.trunc = function(number) { + // Math.ceil and Math.floor exist even in ancient JavaScript engines + // they are covered later in the tutorial + return number < 0 ? Math.ceil(number) : Math.floor(number); + }; +} ``` -[Chrome Canary](https://www.google.com/chrome/browser/canary.html) is good for all examples, but other modern browsers are mostly fine too. +JavaScript is a highly dynamic language. Scripts may add/modify any function, even built-in ones. + +One interesting polyfill library is [core-js](https://github.com/zloirock/core-js), which supports a wide range of features and allows you to include only the ones you need. + +## Summary + +In this chapter we'd like to motivate you to study modern and even "bleeding-edge" language features, even if they aren't yet well-supported by JavaScript engines. + +Just don't forget to use a transpiler (if using modern syntax or operators) and polyfills (to add functions that may be missing). They'll ensure that the code works. + +For example, later when you're familiar with JavaScript, you can setup a code build system based on [webpack](https://webpack.js.org/) with the [babel-loader](https://github.com/babel/babel-loader) plugin. + +Good resources that show the current state of support for various features: +- <https://compat-table.github.io/compat-table/es6/> - for pure JavaScript. +- <https://caniuse.com/> - for browser-related functions. + +P.S. Google Chrome is usually the most up-to-date with language features, try it if a tutorial demo fails. Most tutorial demos work with any modern browser though. -Note that on production we can use Babel to translate the code into suitable for less recent browsers, so there will be no such limitation, the code will run everywhere. diff --git a/1-js/04-object-basics/01-object/4-const-object/solution.md b/1-js/04-object-basics/01-object/4-const-object/solution.md deleted file mode 100644 index f73c2f92b..000000000 --- a/1-js/04-object-basics/01-object/4-const-object/solution.md +++ /dev/null @@ -1,19 +0,0 @@ -Sure, it works, no problem. - -The `const` only protects the variable itself from changing. - -In other words, `user` stores a reference to the object. And it can't be changed. But the content of the object can. - -```js run -const user = { - name: "John" -}; - -*!* -// works -user.name = "Pete"; -*/!* - -// error -user = 123; -``` diff --git a/1-js/04-object-basics/01-object/4-const-object/task.md b/1-js/04-object-basics/01-object/4-const-object/task.md deleted file mode 100644 index a9aada631..000000000 --- a/1-js/04-object-basics/01-object/4-const-object/task.md +++ /dev/null @@ -1,18 +0,0 @@ -importance: 5 - ---- - -# Constant objects? - -Is it possible to change an object declared with `const`? What do you think? - -```js -const user = { - name: "John" -}; - -*!* -// does it work? -user.name = "Pete"; -*/!* -``` diff --git a/1-js/04-object-basics/01-object/8-multiply-numeric/task.md b/1-js/04-object-basics/01-object/8-multiply-numeric/task.md index 33eb89220..6878ca088 100644 --- a/1-js/04-object-basics/01-object/8-multiply-numeric/task.md +++ b/1-js/04-object-basics/01-object/8-multiply-numeric/task.md @@ -2,9 +2,9 @@ importance: 3 --- -# Multiply numeric properties by 2 +# Multiply numeric property values by 2 -Create a function `multiplyNumeric(obj)` that multiplies all numeric properties of `obj` by `2`. +Create a function `multiplyNumeric(obj)` that multiplies all numeric property values of `obj` by `2`. For instance: diff --git a/1-js/04-object-basics/01-object/article.md b/1-js/04-object-basics/01-object/article.md index f59ec0292..f044e0563 100644 --- a/1-js/04-object-basics/01-object/article.md +++ b/1-js/04-object-basics/01-object/article.md @@ -1,7 +1,7 @@ # Objects -As we know from the chapter <info:types>, there are seven data types in JavaScript. Six of them are called "primitive", because their values contain only a single thing (be it a string or a number or whatever). +As we know from the chapter <info:types>, there are eight data types in JavaScript. Seven of them are called "primitive", because their values contain only a single thing (be it a string or a number or whatever). In contrast, objects are used to store keyed collections of various data and more complex entities. In JavaScript, objects penetrate almost every aspect of the language. So we must understand them first before going in-depth anywhere else. @@ -44,12 +44,12 @@ The resulting `user` object can be imagined as a cabinet with two signed files l  -We can add, remove and read files from it any time. +We can add, remove and read files from it at any time. Property values are accessible using the dot notation: ```js -// get fields of the object: +// get property values of the object: alert( user.name ); // John alert( user.age ); // 30 ``` @@ -62,7 +62,7 @@ user.isAdmin = true;  -To remove a property, we can use `delete` operator: +To remove a property, we can use the `delete` operator: ```js delete user.age; @@ -101,10 +101,11 @@ For multiword properties, the dot access doesn't work: user.likes birds = true ``` -That's because the dot requires the key to be a valid variable identifier. That is: no spaces and other limitations. +JavaScript doesn't understand that. It thinks that we address `user.likes`, and then gives a syntax error when comes across unexpected `birds`. -There's an alternative "square bracket notation" that works with any string: +The dot requires the key to be a valid variable identifier. That implies: contains no spaces, doesn't start with a digit and doesn't include special characters (`$` and `_` are allowed). +There's an alternative "square bracket notation" that works with any string: ```js run let user = {}; @@ -130,7 +131,7 @@ let key = "likes birds"; user[key] = true; ``` -Here, the variable `key` may be calculated at run-time or depend on the user input. And then we use it to access the property. That gives us a great deal of flexibility. The dot notation cannot be used in a similar way. +Here, the variable `key` may be calculated at run-time or depend on the user input. And then we use it to access the property. That gives us a great deal of flexibility. For instance: @@ -146,10 +147,21 @@ let key = prompt("What do you want to know about the user?", "name"); alert( user[key] ); // John (if enter "name") ``` +The dot notation cannot be used in a similar way: + +```js run +let user = { + name: "John", + age: 30 +}; + +let key = "name"; +alert( user.key ) // undefined +``` ### Computed properties -We can use square brackets in an object literal. That's called *computed properties*. +We can use square brackets in an object literal, when creating an object. That's called *computed properties*. For instance: @@ -189,49 +201,13 @@ let bag = { }; ``` -Square brackets are much more powerful than the dot notation. They allow any property names and variables. But they are also more cumbersome to write. +Square brackets are much more powerful than dot notation. They allow any property names and variables. But they are also more cumbersome to write. So most of the time, when property names are known and simple, the dot is used. And if we need something more complex, then we switch to square brackets. - - -````smart header="Reserved words are allowed as property names" -A variable cannot have a name equal to one of language-reserved words like "for", "let", "return" etc. - -But for an object property, there's no such restriction. Any name is fine: - -```js run -let obj = { - for: 1, - let: 2, - return: 3 -}; - -alert( obj.for + obj.let + obj.return ); // 6 -``` - -Basically, any name is allowed, but there's a special one: `"__proto__"` that gets special treatment for historical reasons. For instance, we can't set it to a non-object value: - -```js run -let obj = {}; -obj.__proto__ = 5; -alert(obj.__proto__); // [object Object], didn't work as intended -``` - -As we see from the code, the assignment to a primitive `5` is ignored. - -That can become a source of bugs and even vulnerabilities if we intend to store arbitrary key-value pairs in an object, and allow a visitor to specify the keys. - -In that case the visitor may choose "__proto__" as the key, and the assignment logic will be ruined (as shown above). - -There is a way to make objects treat `__proto__` as a regular property, which we'll cover later, but first we need to know more about objects. -There's also another data structure [Map](info:map-set-weakmap-weakset), that we'll learn in the chapter <info:map-set-weakmap-weakset>, which supports arbitrary keys. -```` - - ## Property value shorthand -In real code we often use existing variables as values for property names. +In real code, we often use existing variables as values for property names. For instance: @@ -239,7 +215,7 @@ For instance: function makeUser(name, age) { return { name: name, - age: age + age: age, // ...other properties }; } @@ -257,7 +233,7 @@ function makeUser(name, age) { *!* return { name, // same as name: name - age // same as age: age + age, // same as age: age // ... }; */!* @@ -273,9 +249,57 @@ let user = { }; ``` -## Existence check -A notable objects feature is that it's possible to access any property. There will be no error if the property doesn't exist! Accessing a non-existing property just returns `undefined`. It provides a very common way to test whether the property exists -- to get it and compare vs undefined: +## Property names limitations + +As we already know, a variable cannot have a name equal to one of the language-reserved words like "for", "let", "return" etc. + +But for an object property, there's no such restriction: + +```js run +// these properties are all right +let obj = { + for: 1, + let: 2, + return: 3 +}; + +alert( obj.for + obj.let + obj.return ); // 6 +``` + +In short, there are no limitations on property names. They can be any strings or symbols (a special type for identifiers, to be covered later). + +Other types are automatically converted to strings. + +For instance, a number `0` becomes a string `"0"` when used as a property key: + +```js run +let obj = { + 0: "test" // same as "0": "test" +}; + +// both alerts access the same property (the number 0 is converted to string "0") +alert( obj["0"] ); // test +alert( obj[0] ); // test (same property) +``` + +There's a minor gotcha with a special property named `__proto__`. We can't set it to a non-object value: + +```js run +let obj = {}; +obj.__proto__ = 5; // assign a number +alert(obj.__proto__); // [object Object] - the value is an object, didn't work as intended +``` + +As we see from the code, the assignment to a primitive `5` is ignored. + +We'll cover the special nature of `__proto__` in [subsequent chapters](info:prototype-inheritance), and suggest the [ways to fix](info:prototype-methods) such behavior. + +## Property existence test, "in" operator + +A notable feature of objects in JavaScript, compared to many other languages, is that it's possible to access any property. There will be no error if the property doesn't exist! + +Reading a non-existing property just returns `undefined`. So we can easily test whether the property exists: ```js run let user = {}; @@ -283,7 +307,7 @@ let user = {}; alert( user.noSuchProperty === undefined ); // true means "no such property" ``` -There also exists a special operator `"in"` to check for the existence of a property. +There's also a special operator `"in"` for that. The syntax is: ```js @@ -301,17 +325,18 @@ alert( "blabla" in user ); // false, user.blabla doesn't exist Please note that on the left side of `in` there must be a *property name*. That's usually a quoted string. -If we omit quotes, that would mean a variable containing the actual name will be tested. For instance: +If we omit quotes, that means a variable should contain the actual name to be tested. For instance: ```js run let user = { age: 30 }; let key = "age"; -alert( *!*key*/!* in user ); // true, takes the name from key and checks for such property +alert( *!*key*/!* in user ); // true, property "age" exists ``` -````smart header="Using \"in\" for properties that store `undefined`" -Usually, the strict comparison `"=== undefined"` check works fine. But there's a special case when it fails, but `"in"` works correctly. +Why does the `in` operator exist? Isn't it enough to compare against `undefined`? + +Well, most of the time the comparison with `undefined` works fine. But there's a special case when it fails, but `"in"` works correctly. It's when an object property exists, but stores `undefined`: @@ -325,14 +350,12 @@ alert( obj.test ); // it's undefined, so - no such property? alert( "test" in obj ); // true, the property does exist! ``` - In the code above, the property `obj.test` technically exists. So the `in` operator works right. -Situations like this happen very rarely, because `undefined` is usually not assigned. We mostly use `null` for "unknown" or "empty" values. So the `in` operator is an exotic guest in the code. -```` +Situations like this happen very rarely, because `undefined` should not be explicitly assigned. We mostly use `null` for "unknown" or "empty" values. So the `in` operator is an exotic guest in the code. -## The "for..in" loop +## The "for..in" loop [#forin] To walk over all keys of an object, there exists a special form of the loop: `for..in`. This is a completely different thing from the `for(;;)` construct that we studied before. @@ -365,7 +388,6 @@ Note that all "for" constructs allow us to declare the looping variable inside t Also, we could use another variable name here instead of `key`. For instance, `"for (let prop in obj)"` is also widely used. - ### Ordered like an object Are objects ordered? In other words, if we loop over an object, do we get all properties in the same order they were added? Can we rely on this? @@ -390,7 +412,7 @@ for (let code in codes) { */!* ``` -The object may be used to suggest a list of options to the user. If we're making a site mainly for German audience then we probably want `49` to be the first. +The object may be used to suggest a list of options to the user. If we're making a site mainly for a German audience then we probably want `49` to be the first. But if we run the code, we see a totally different picture: @@ -402,9 +424,10 @@ The phone codes go in the ascending sorted order, because they are integers. So ````smart header="Integer properties? What's that?" The "integer property" term here means a string that can be converted to-and-from an integer without a change. -So, "49" is an integer property name, because when it's transformed to an integer number and back, it's still the same. But "+49" and "1.2" are not: +So, `"49"` is an integer property name, because when it's transformed to an integer number and back, it's still the same. But `"+49"` and `"1.2"` are not: ```js run +// Number(...) explicitly converts to a number // Math.trunc is a built-in function that removes the decimal part alert( String(Math.trunc(Number("49"))) ); // "49", same, integer property alert( String(Math.trunc(Number("+49"))) ); // "49", not same "+49" ⇒ not integer property @@ -449,6 +472,7 @@ for (let code in codes) { Now it works as intended. +<<<<<<< HEAD ## Copying by reference One of the fundamental differences of objects vs primitives is that they are stored and copied "by reference". @@ -705,6 +729,8 @@ There's a standard algorithm for deep cloning that handles the case above and mo +======= +>>>>>>> 540d753e90789205fc6e75c502f68382c87dea9b ## Summary Objects are associative arrays with several special features. @@ -715,17 +741,13 @@ They store properties (key-value pairs), where: To access a property, we can use: - The dot notation: `obj.property`. -- Square brackets notation `obj["property"]`. Square brackets allow to take the key from a variable, like `obj[varWithKey]`. +- Square brackets notation `obj["property"]`. Square brackets allow taking the key from a variable, like `obj[varWithKey]`. Additional operators: - To delete a property: `delete obj.prop`. - To check if a property with the given key exists: `"key" in obj`. - To iterate over an object: `for (let key in obj)` loop. -Objects are assigned and copied by reference. In other words, a variable stores not the "object value", but a "reference" (address in memory) for the value. So copying such a variable or passing it as a function argument copies that reference, not the object. All operations via copied references (like adding/removing properties) are performed on the same single object. - -To make a "real copy" (a clone) we can use `Object.assign` or [_.cloneDeep(obj)](https://lodash.com/docs#cloneDeep). - What we've studied in this chapter is called a "plain object", or just `Object`. There are many other kinds of objects in JavaScript: diff --git a/1-js/04-object-basics/02-garbage-collection/memory-user-john.svg b/1-js/04-object-basics/02-garbage-collection/memory-user-john.svg deleted file mode 100644 index 45ce86ed2..000000000 --- a/1-js/04-object-basics/02-garbage-collection/memory-user-john.svg +++ /dev/null @@ -1,25 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<svg width="144px" height="150px" viewBox="0 0 144 150" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> - <!-- Generator: sketchtool 55.2 (78181) - https://sketchapp.com --> - <title>memory-user-john.svg</title> - <desc>Created with sketchtool.</desc> - <g id="garbage-collection" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd"> - <g id="memory-user-john.svg"> - <text id="user" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal" fill="#8A704D"> - <tspan x="31" y="69">user</tspan> - </text> - <rect id="Rectangle-4" stroke="#BCA68E" stroke-width="2" fill="#FFF9EB" x="16" y="95" width="118" height="48"></rect> - <text id="name:-"John"" font-family="PTMono-Regular, PT Mono" font-size="12" font-weight="normal" fill="#8A704D"> - <tspan x="32" y="132">name: "John"</tspan> - </text> - <text id="Object-3" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal" fill="#8A704D"> - <tspan x="46" y="112">Object</tspan> - </text> - <path id="Line" d="M73.5,67.5 L73.5,49.5 L75.5,49.5 L75.5,67.5 L81.5,67.5 L74.5,81.5 L67.5,67.5 L73.5,67.5 Z" fill="#EE6B47" fill-rule="nonzero"></path> - <rect id="Rectangle-1" stroke="#E8C48E" stroke-width="2" fill="#FFF9EB" x="27" y="12" width="93" height="26"></rect> - <text id="<global>" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal" fill="#8A704D"> - <tspan x="43" y="29"><global></tspan> - </text> - </g> - </g> -</svg> \ No newline at end of file diff --git a/1-js/04-object-basics/02-object-copy/article.md b/1-js/04-object-basics/02-object-copy/article.md new file mode 100644 index 000000000..e80f748ab --- /dev/null +++ b/1-js/04-object-basics/02-object-copy/article.md @@ -0,0 +1,325 @@ +# Object references and copying + +One of the fundamental differences of objects versus primitives is that objects are stored and copied "by reference", whereas primitive values: strings, numbers, booleans, etc -- are always copied "as a whole value". + +That's easy to understand if we look a bit under the hood of what happens when we copy a value. + +Let's start with a primitive, such as a string. + +Here we put a copy of `message` into `phrase`: + +```js +let message = "Hello!"; +let phrase = message; +``` + +As a result we have two independent variables, each one storing the string `"Hello!"`. + + + +Quite an obvious result, right? + +Objects are not like that. + +**A variable assigned to an object stores not the object itself, but its "address in memory" -- in other words "a reference" to it.** + +Let's look at an example of such a variable: + +```js +let user = { + name: "John" +}; +``` + +And here's how it's actually stored in memory: + + + +The object is stored somewhere in memory (at the right of the picture), while the `user` variable (at the left) has a "reference" to it. + +We may think of an object variable, such as `user`, like a sheet of paper with the address of the object on it. + +When we perform actions with the object, e.g. take a property `user.name`, the JavaScript engine looks at what's at that address and performs the operation on the actual object. + +Now here's why it's important. + +**When an object variable is copied, the reference is copied, but the object itself is not duplicated.** + +For instance: + +```js no-beautify +let user = { name: "John" }; + +let admin = user; // copy the reference +``` + +Now we have two variables, each storing a reference to the same object: + + + +As you can see, there's still one object, but now with two variables that reference it. + +We can use either variable to access the object and modify its contents: + +```js run +let user = { name: 'John' }; + +let admin = user; + +*!* +admin.name = 'Pete'; // changed by the "admin" reference +*/!* + +alert(*!*user.name*/!*); // 'Pete', changes are seen from the "user" reference +``` + +It's as if we had a cabinet with two keys and used one of them (`admin`) to get into it and make changes. Then, if we later use another key (`user`), we are still opening the same cabinet and can access the changed contents. + +## Comparison by reference + +Two objects are equal only if they are the same object. + +For instance, here `a` and `b` reference the same object, thus they are equal: + +```js run +let a = {}; +let b = a; // copy the reference + +alert( a == b ); // true, both variables reference the same object +alert( a === b ); // true +``` + +And here two independent objects are not equal, even though they look alike (both are empty): + +```js run +let a = {}; +let b = {}; // two independent objects + +alert( a == b ); // false +``` + +For comparisons like `obj1 > obj2` or for a comparison against a primitive `obj == 5`, objects are converted to primitives. We'll study how object conversions work very soon, but to tell the truth, such comparisons are needed very rarely -- usually they appear as a result of a programming mistake. + +````smart header="Const objects can be modified" +An important side effect of storing objects as references is that an object declared as `const` *can* be modified. + +For instance: + +```js run +const user = { + name: "John" +}; + +*!* +user.name = "Pete"; // (*) +*/!* + +alert(user.name); // Pete +``` + +It might seem that the line `(*)` would cause an error, but it does not. The value of `user` is constant, it must always reference the same object, but properties of that object are free to change. + +In other words, the `const user` gives an error only if we try to set `user=...` as a whole. + +That said, if we really need to make constant object properties, it's also possible, but using totally different methods. We'll mention that in the chapter <info:property-descriptors>. +```` + +## Cloning and merging, Object.assign [#cloning-and-merging-object-assign] + +So, copying an object variable creates one more reference to the same object. + +But what if we need to duplicate an object? + +We can create a new object and replicate the structure of the existing one, by iterating over its properties and copying them on the primitive level. + +Like this: + +```js run +let user = { + name: "John", + age: 30 +}; + +*!* +let clone = {}; // the new empty object + +// let's copy all user properties into it +for (let key in user) { + clone[key] = user[key]; +} +*/!* + +// now clone is a fully independent object with the same content +clone.name = "Pete"; // changed the data in it + +alert( user.name ); // still John in the original object +``` + +We can also use the method [Object.assign](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/assign). + +The syntax is: + +```js +Object.assign(dest, ...sources) +``` + +- The first argument `dest` is a target object. +- Further arguments is a list of source objects. + +It copies the properties of all source objects into the target `dest`, and then returns it as the result. + +For example, we have `user` object, let's add a couple of permissions to it: + +```js run +let user = { name: "John" }; + +let permissions1 = { canView: true }; +let permissions2 = { canEdit: true }; + +*!* +// copies all properties from permissions1 and permissions2 into user +Object.assign(user, permissions1, permissions2); +*/!* + +// now user = { name: "John", canView: true, canEdit: true } +alert(user.name); // John +alert(user.canView); // true +alert(user.canEdit); // true +``` + +If the copied property name already exists, it gets overwritten: + +```js run +let user = { name: "John" }; + +Object.assign(user, { name: "Pete" }); + +alert(user.name); // now user = { name: "Pete" } +``` + +We also can use `Object.assign` to perform a simple object cloning: + +```js run +let user = { + name: "John", + age: 30 +}; + +*!* +let clone = Object.assign({}, user); +*/!* + +alert(clone.name); // John +alert(clone.age); // 30 +``` + +Here it copies all properties of `user` into the empty object and returns it. + +There are also other methods of cloning an object, e.g. using the [spread syntax](info:rest-parameters-spread) `clone = {...user}`, covered later in the tutorial. + +## Nested cloning + +Until now we assumed that all properties of `user` are primitive. But properties can be references to other objects. + +Like this: +```js run +let user = { + name: "John", + sizes: { + height: 182, + width: 50 + } +}; + +alert( user.sizes.height ); // 182 +``` + +Now it's not enough to copy `clone.sizes = user.sizes`, because `user.sizes` is an object, and will be copied by reference, so `clone` and `user` will share the same sizes: + +```js run +let user = { + name: "John", + sizes: { + height: 182, + width: 50 + } +}; + +let clone = Object.assign({}, user); + +alert( user.sizes === clone.sizes ); // true, same object + +// user and clone share sizes +user.sizes.width = 60; // change a property from one place +alert(clone.sizes.width); // 60, get the result from the other one +``` + +To fix that and make `user` and `clone` truly separate objects, we should use a cloning loop that examines each value of `user[key]` and, if it's an object, then replicate its structure as well. That is called a "deep cloning" or "structured cloning". There's [structuredClone](https://developer.mozilla.org/en-US/docs/Web/API/structuredClone) method that implements deep cloning. + + +### structuredClone + +The call `structuredClone(object)` clones the `object` with all nested properties. + +Here's how we can use it in our example: + +```js run +let user = { + name: "John", + sizes: { + height: 182, + width: 50 + } +}; + +*!* +let clone = structuredClone(user); +*/!* + +alert( user.sizes === clone.sizes ); // false, different objects + +// user and clone are totally unrelated now +user.sizes.width = 60; // change a property from one place +alert(clone.sizes.width); // 50, not related +``` + +The `structuredClone` method can clone most data types, such as objects, arrays, primitive values. + +It also supports circular references, when an object property references the object itself (directly or via a chain or references). + +For instance: + +```js run +let user = {}; +// let's create a circular reference: +// user.me references the user itself +user.me = user; + +let clone = structuredClone(user); +alert(clone.me === clone); // true +``` + +As you can see, `clone.me` references the `clone`, not the `user`! So the circular reference was cloned correctly as well. + +Although, there are cases when `structuredClone` fails. + +For instance, when an object has a function property: + +```js run +// error +structuredClone({ + f: function() {} +}); +``` + +Function properties aren't supported. + +To handle such complex cases we may need to use a combination of cloning methods, write custom code or, to not reinvent the wheel, take an existing implementation, for instance [_.cloneDeep(obj)](https://lodash.com/docs#cloneDeep) from the JavaScript library [lodash](https://lodash.com). + +## Summary + +Objects are assigned and copied by reference. In other words, a variable stores not the "object value", but a "reference" (address in memory) for the value. So copying such a variable or passing it as a function argument copies that reference, not the object itself. + +All operations via copied references (like adding/removing properties) are performed on the same single object. + +To make a "real copy" (a clone) we can use `Object.assign` for the so-called "shallow copy" (nested objects are copied by reference) or a "deep cloning" function `structuredClone` or use a custom cloning implementation, such as [_.cloneDeep(obj)](https://lodash.com/docs#cloneDeep). diff --git a/1-js/04-object-basics/02-object-copy/variable-contains-reference.svg b/1-js/04-object-basics/02-object-copy/variable-contains-reference.svg new file mode 100644 index 000000000..267f04578 --- /dev/null +++ b/1-js/04-object-basics/02-object-copy/variable-contains-reference.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" width="370" height="249" viewBox="0 0 370 249"><defs><style>@import url(https://fonts.googleapis.com/css?family=Open+Sans:bold,italic,bolditalic%7CPT+Mono);@font-face{font-family:'PT Mono';font-weight:700;font-style:normal;src:local('PT MonoBold'),url(/font/PTMonoBold.woff2) format('woff2'),url(/font/PTMonoBold.woff) format('woff'),url(/font/PTMonoBold.ttf) format('truetype')}</style></defs><g id="combined" fill="none" fill-rule="evenodd" stroke="none" stroke-width="1"><g id="variable-contains-reference.svg"><g id="noun_1211_cc" fill="#DBAF88" transform="translate(12 119)"><path id="Shape" d="M17 28.196h112.558v42.95c0 .373-.079.862-.279 1.294-.2.433-16.574 35.56-16.574 35.56V53.64l16.854-25.444L148 0H35.44L17 28.196zM17 57V29L2 57"/><path id="Shape" d="M0 59v54.73c0 3.42 1.484 5.27 4.387 5.27h100.086c3.122 0 5.527-2.548 5.527-3.476V59H0z"/></g><text id="user" fill="#FFF" font-family="OpenSans-Bold, Open Sans" font-size="18" font-weight="bold"><tspan x="47" y="215">user</tspan></text><path id="Rectangle-4" fill="#FFF" d="M116 153h44v6h-44z"/><path id="Shape-3" fill="#C06334" d="M123.854 154.322l13.779-13.476c1.613-1.274 5.185-4.427 3.572-5.702-1.613-1.275-2.664-.472-4.275.803l-18.499 18.375c-1.613 1.275-1.613 2.845 0 4.12 0 0 21.483 20.067 22.774 20.067 3.005 0 2.677-1.821 1.064-3.096l-18.415-17.826H201.028c2.281 0 3.75.279 3.75-1.524 0-1.804-1.469-1.741-3.75-1.741h-77.174z" transform="matrix(-1 0 0 1 322 0)"/><g id="Rectangle-3-+-Shape" transform="translate(58 135)"><path id="Rectangle-3" fill="#FFF" d="M0 0h47v37H0z"/><path id="Shape" fill="#C06334" d="M44 33.772H4V4h40v29.772zM8.733 31.018h30.533L29.22 20.868l-1.902 1.889c-.824.812-2.003 1.277-3.242 1.277l-.021-.001c-1.244-.005-2.427-.48-3.246-1.304l-1.934-1.933-10.14 10.222zM6.791 8.726V29.04l10.122-10.202L6.79 8.726zm24.395 10.187L41.209 29.04V8.954l-10.023 9.96zM8.74 6.755l14.057 14.042c.304.305.766.48 1.27.482h.008c.496 0 .968-.173 1.264-.467L39.49 6.755H8.739z"/></g><path id="Rectangle-4-Copy" fill="#DBAF88" stroke="#DBAF88" stroke-width="4" d="M339.063 117l16.667 20H225.27l16.667-20h97.126z" opacity=".5"/><g id="Group-2" transform="translate(271 10)"><g id="Group"><path id="Rectangle-7" fill="#FFF" d="M0 0h32v124H0z"/><path id="Combined-Shape" fill="#DBAF88" d="M32 0v124H0V0h32zM16.5 100a7.5 7.5 0 100 15 7.5 7.5 0 000-15zM28 5H4v87h24V5z"/></g><text id="name" fill="#C06334" font-family="PTMono-Bold, PT Mono" font-size="16" font-weight="bold" transform="rotate(-90 15.5 47.5)"><tspan x="-3.7" y="52.5">name</tspan></text></g><path id="Rectangle-4" fill="#FBF2EC" stroke="#DBAF88" stroke-width="4" d="M223 131h135v50H223z"/><path id="Rectangle-8" stroke="#DBAF88" stroke-width="3" d="M278.5 151.5h25v10h-25z"/></g></g></svg> \ No newline at end of file diff --git a/1-js/04-object-basics/02-object-copy/variable-copy-reference.svg b/1-js/04-object-basics/02-object-copy/variable-copy-reference.svg new file mode 100644 index 000000000..a847fb200 --- /dev/null +++ b/1-js/04-object-basics/02-object-copy/variable-copy-reference.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" width="599" height="260" viewBox="0 0 599 260"><defs><style>@import url(https://fonts.googleapis.com/css?family=Open+Sans:bold,italic,bolditalic%7CPT+Mono);@font-face{font-family:'PT Mono';font-weight:700;font-style:normal;src:local('PT MonoBold'),url(/font/PTMonoBold.woff2) format('woff2'),url(/font/PTMonoBold.woff) format('woff'),url(/font/PTMonoBold.ttf) format('truetype')}</style></defs><g id="combined" fill="none" fill-rule="evenodd" stroke="none" stroke-width="1"><g id="variable-copy-reference.svg"><g id="Group" transform="translate(11 125)"><g id="noun_1211_cc" fill="#DBAF88"><path id="Shape" d="M17 28.196h112.558v42.95c0 .373-.079.862-.279 1.294-.2.433-16.574 35.56-16.574 35.56V53.64l16.854-25.444L148 0H35.44L17 28.196zM17 57V29L2 57"/><path id="Shape" d="M0 59v54.73c0 3.42 1.484 5.27 4.387 5.27h100.086c3.122 0 5.527-2.548 5.527-3.476V59H0z"/></g><text id="user" fill="#FFF" font-family="OpenSans-Bold, Open Sans" font-size="18" font-weight="bold"><tspan x="35" y="96">user</tspan></text><g id="Rectangle-4-+-Shape-3" transform="translate(104 15)"><path id="Rectangle-4" fill="#FFF" d="M0 19h44v6H0z"/><path id="Shape-3" fill="#C06334" d="M7.854 20.322L21.633 6.846c1.613-1.274 5.185-4.427 3.572-5.702-1.613-1.275-2.664-.472-4.275.803L2.43 20.322c-1.613 1.275-1.613 2.845 0 4.12 0 0 21.483 20.067 22.774 20.067 3.005 0 2.677-1.821 1.064-3.096L7.854 23.587H85.028c2.281 0 3.75.279 3.75-1.524 0-1.804-1.469-1.741-3.75-1.741H7.854z" transform="matrix(-1 0 0 1 90 0)"/></g><g id="Rectangle-3-+-Shape" transform="translate(46 16)"><path id="Rectangle-3" fill="#FFF" d="M0 0h47v37H0z"/><path id="Shape" fill="#C06334" d="M44 33.772H4V4h40v29.772zM8.733 31.018h30.533L29.22 20.868l-1.902 1.889c-.824.812-2.003 1.277-3.242 1.277l-.021-.001c-1.244-.005-2.427-.48-3.246-1.304l-1.934-1.933-10.14 10.222zM6.791 8.726V29.04l10.122-10.202L6.79 8.726zm24.395 10.187L41.209 29.04V8.954l-10.023 9.96zM8.74 6.755l14.057 14.042c.304.305.766.48 1.27.482h.008c.496 0 .968-.173 1.264-.467L39.49 6.755H8.739z"/></g></g><g id="noun_1211_cc" fill="#DBAF88" transform="translate(418 125)"><path id="Shape" d="M17 28.196h112.558v42.95c0 .373-.079.862-.279 1.294-.2.433-16.574 35.56-16.574 35.56V53.64l16.854-25.444L148 0H35.44L17 28.196zM17 57V29L2 57"/><path id="Shape" d="M0 59v54.73c0 3.42 1.484 5.27 4.387 5.27h100.086c3.122 0 5.527-2.548 5.527-3.476V59H0z"/></g><text id="admin" fill="#FFF" font-family="OpenSans-Bold, Open Sans" font-size="18" font-weight="bold"><tspan x="446" y="221">admin</tspan></text><g id="Rectangle-4-+-Shape-3" transform="matrix(-1 0 0 1 451 140)"><path id="Rectangle-4" fill="#FFF" d="M0 19h44v6H0z"/><path id="Shape-3" fill="#C06334" d="M7.854 20.322L21.633 6.846c1.613-1.274 5.185-4.427 3.572-5.702-1.613-1.275-2.664-.472-4.275.803L2.43 20.322c-1.613 1.275-1.613 2.845 0 4.12 0 0 21.483 20.067 22.774 20.067 3.005 0 2.677-1.821 1.064-3.096L7.854 23.587H85.028c2.281 0 3.75.279 3.75-1.524 0-1.804-1.469-1.741-3.75-1.741H7.854z" transform="matrix(-1 0 0 1 90 0)"/></g><g id="Rectangle-3-+-Shape" transform="translate(464 141)"><path id="Rectangle-3" fill="#FFF" d="M0 0h47v37H0z"/><path id="Shape" fill="#C06334" d="M44 33.772H4V4h40v29.772zM8.733 31.018h30.533L29.22 20.868l-1.902 1.889c-.824.812-2.003 1.277-3.242 1.277l-.021-.001c-1.244-.005-2.427-.48-3.246-1.304l-1.934-1.933-10.14 10.222zM6.791 8.726V29.04l10.122-10.202L6.79 8.726zm24.395 10.187L41.209 29.04V8.954l-10.023 9.96zM8.74 6.755l14.057 14.042c.304.305.766.48 1.27.482h.008c.496 0 .968-.173 1.264-.467L39.49 6.755H8.739z"/></g><path id="Rectangle-4-Copy" fill="#DBAF88" stroke="#DBAF88" stroke-width="4" d="M333.063 125l16.667 20H219.27l16.667-20h97.126z" opacity=".5"/><g id="Group-2" transform="translate(265 18)"><g id="Group"><path id="Rectangle-7" fill="#FFF" d="M0 0h32v124H0z"/><path id="Combined-Shape" fill="#DBAF88" d="M32 0v124H0V0h32zM16.5 100a7.5 7.5 0 100 15 7.5 7.5 0 000-15zM28 5H4v87h24V5z"/></g><text id="name" fill="#C06334" font-family="PTMono-Bold, PT Mono" font-size="16" font-weight="bold" transform="rotate(-90 15.5 47.5)"><tspan x="-3.7" y="52.5">name</tspan></text></g><path id="Rectangle-4" fill="#FBF2EC" stroke="#DBAF88" stroke-width="4" d="M217 139h135v50H217z"/><path id="Rectangle-8" stroke="#DBAF88" stroke-width="3" d="M272.5 159.5h25v10h-25z"/></g></g></svg> \ No newline at end of file diff --git a/1-js/04-object-basics/02-object-copy/variable-copy-value.svg b/1-js/04-object-basics/02-object-copy/variable-copy-value.svg new file mode 100644 index 000000000..0d6ca67bc --- /dev/null +++ b/1-js/04-object-basics/02-object-copy/variable-copy-value.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" width="359" height="143" viewBox="0 0 359 143"><defs><style>@import url(https://fonts.googleapis.com/css?family=Open+Sans:bold,italic,bolditalic%7CPT+Mono);@font-face{font-family:'PT Mono';font-weight:700;font-style:normal;src:local('PT MonoBold'),url(/font/PTMonoBold.woff2) format('woff2'),url(/font/PTMonoBold.woff) format('woff'),url(/font/PTMonoBold.ttf) format('truetype')}</style></defs><g id="combined" fill="none" fill-rule="evenodd" stroke="none" stroke-width="1"><g id="variable-copy-value.svg"><g id="noun_1211_cc-+-Message" transform="translate(11 6)"><g id="noun_1211_cc"><path id="Shape" fill="#DBAF88" d="M17 37.196h112.558v42.95c0 .373-.079.862-.279 1.294-.2.433-16.574 35.56-16.574 35.56V62.64l16.854-25.444L148 9H35.44L17 37.196zM17 66V38L2 66"/><g id="Rectangle-5-+-"World!"" transform="translate(15)"><path id="Rectangle-5" fill="#FBF2EC" stroke="#AF6E24" stroke-width="2" d="M18.861 1.809l53.14 56.985L55.14 74.52 1.999 17.533 18.86 1.81z"/><text id=""Hello!"" fill="#AF6E24" font-family="OpenSans-Bold, Open Sans" font-size="14" font-weight="bold" transform="rotate(47 38.202 38.946)"><tspan x="2.822" y="43.482">"Hello!"</tspan></text></g><path id="Shape" fill="#DBAF88" d="M0 68v54.73c0 3.42 1.484 5.27 4.387 5.27h100.086c3.122 0 5.527-2.548 5.527-3.476V68H0z"/></g><text id="message" fill="#FFF" font-family="OpenSans-Bold, Open Sans" font-size="18" font-weight="bold"><tspan x="17" y="105">message</tspan></text></g><g id="Group" transform="translate(210 6)"><path id="Shape" fill="#DBAF88" d="M17 37.196h113.417v42.95c0 .373-.08.862-.28 1.294-.202.433-16.702 35.56-16.702 35.56V62.64l16.983-25.444L149 9H35.582L17 37.196z"/><path id="Shape" fill="#DBAF88" d="M18 66V38L2 66"/><g id="Rectangle-5-+-"World!"" transform="translate(15)"><path id="Rectangle-5" fill="#FBF2EC" stroke="#AF6E24" stroke-width="2" d="M19.117 1.8l53.867 56.994-17.101 15.734L2.016 17.534 19.117 1.799z"/><text id=""Hello!"" fill="#AF6E24" font-family="OpenSans-Bold, Open Sans" font-size="14" font-weight="bold" transform="rotate(47 38.162 37.693)"><tspan x="2.782" y="42.23">"Hello!"</tspan></text></g><path id="Shape" fill="#DBAF88" d="M0 68v54.73c0 3.42 1.497 5.27 4.427 5.27h100.996c3.15 0 5.577-2.548 5.577-3.476V68H0z"/><text id="phrase" fill="#FFF" font-family="OpenSans-Bold, Open Sans" font-size="18" font-weight="bold"><tspan x="25" y="105">phrase</tspan></text></g></g></g></svg> \ No newline at end of file diff --git a/1-js/04-object-basics/02-garbage-collection/article.md b/1-js/04-object-basics/03-garbage-collection/article.md similarity index 66% rename from 1-js/04-object-basics/02-garbage-collection/article.md rename to 1-js/04-object-basics/03-garbage-collection/article.md index 3b385afd2..1b576d629 100644 --- a/1-js/04-object-basics/02-garbage-collection/article.md +++ b/1-js/04-object-basics/03-garbage-collection/article.md @@ -14,8 +14,8 @@ Simply put, "reachable" values are those that are accessible or usable somehow. For instance: - - Local variables and parameters of the current function. - - Variables and parameters for other functions on the current chain of nested calls. + - The currently executing function, its local variables and parameters. + - Other functions on the current chain of nested calls, their local variables and parameters. - Global variables. - (there are some other, internal ones as well) @@ -23,7 +23,7 @@ Simply put, "reachable" values are those that are accessible or usable somehow. 2. Any other value is considered reachable if it's reachable from a root by a reference or by a chain of references. - For instance, if there's an object in a local variable, and that object has a property referencing another object, that object is considered reachable. And those that it references are also reachable. Detailed examples to follow. + For instance, if there's an object in a global variable, and that object has a property referencing another object, *that* object is considered reachable. And those that it references are also reachable. Detailed examples to follow. There's a background process in the JavaScript engine that is called [garbage collector](https://en.wikipedia.org/wiki/Garbage_collection_(computer_science)). It monitors all objects and removes those that have become unreachable. @@ -74,7 +74,7 @@ Now if we do the same: user = null; ``` -...Then the object is still reachable via `admin` global variable, so it's in memory. If we overwrite `admin` too, then it can be removed. +...Then the object is still reachable via `admin` global variable, so it must stay in memory. If we overwrite `admin` too, then it can be removed. ## Interlinked objects @@ -156,7 +156,7 @@ The following "garbage collection" steps are regularly performed: - The garbage collector takes roots and "marks" (remembers) them. - Then it visits and "marks" all references from them. - Then it visits marked objects and marks *their* references. All visited objects are remembered, so as not to visit the same object twice in the future. -- ...And so on until there are unvisited references (reachable from the roots). +- ...And so on until every reachable (from the roots) references are visited. - All objects except marked ones are removed. For instance, let our object structure look like this: @@ -169,11 +169,11 @@ The first step marks the roots:  -Then their references are marked: +Then we follow their references and mark referenced objects:  -...And their references, while possible: +...And continue to follow further references, while possible:  @@ -181,17 +181,17 @@ Now the objects that could not be visited in the process are considered unreacha  -That's the concept of how garbage collection works. +We can also imagine the process as spilling a huge bucket of paint from the roots, that flows through all references and marks all reachable objects. The unmarked ones are then removed. -JavaScript engines apply many optimizations to make it run faster and not affect the execution. +That's the concept of how garbage collection works. JavaScript engines apply many optimizations to make it run faster and not introduce any delays into the code execution. Some of the optimizations: -- **Generational collection** -- objects are split into two sets: "new ones" and "old ones". Many objects appear, do their job and die fast, they can be cleaned up aggressively. Those that survive for long enough, become "old" and are examined less often. -- **Incremental collection** -- if there are many objects, and we try to walk and mark the whole object set at once, it may take some time and introduce visible delays in the execution. So the engine tries to split the garbage collection into pieces. Then the pieces are executed one by one, separately. That requires some extra bookkeeping between them to track changes, but we have many tiny delays instead of a big one. +- **Generational collection** -- objects are split into two sets: "new ones" and "old ones". In typical code, many objects have a short life span: they appear, do their job and die fast, so it makes sense to track new objects and clear the memory from them if that's the case. Those that survive for long enough, become "old" and are examined less often. +- **Incremental collection** -- if there are many objects, and we try to walk and mark the whole object set at once, it may take some time and introduce visible delays in the execution. So the engine splits the whole set of existing objects into multiple parts. And then clear these parts one after another. There are many small garbage collections instead of a total one. That requires some extra bookkeeping between them to track changes, but we get many tiny delays instead of a big one. - **Idle-time collection** -- the garbage collector tries to run only while the CPU is idle, to reduce the possible effect on the execution. -There are other optimizations and flavours of garbage collection algorithms. As much as I'd like to describe them here, I have to hold off, because different engines implement different tweaks and techniques. And, what's even more important, things change as engines develop, so going deeper "in advance", without a real need is probably not worth that. Unless, of course, it is a matter of pure interest, then there will be some links for you below. +There exist other optimizations and flavours of garbage collection algorithms. As much as I'd like to describe them here, I have to hold off, because different engines implement different tweaks and techniques. And, what's even more important, things change as engines develop, so studying deeper "in advance", without a real need is probably not worth that. Unless, of course, it is a matter of pure interest, then there will be some links for you below. ## Summary @@ -199,14 +199,14 @@ The main things to know: - Garbage collection is performed automatically. We cannot force or prevent it. - Objects are retained in memory while they are reachable. -- Being referenced is not the same as being reachable (from a root): a pack of interlinked objects can become unreachable as a whole. +- Being referenced is not the same as being reachable (from a root): a pack of interlinked objects can become unreachable as a whole, as we've seen in the example above. Modern engines implement advanced algorithms of garbage collection. A general book "The Garbage Collection Handbook: The Art of Automatic Memory Management" (R. Jones et al) covers some of them. -If you are familiar with low-level programming, the more detailed information about V8 garbage collector is in the article [A tour of V8: Garbage Collection](http://jayconrod.com/posts/55/a-tour-of-v8-garbage-collection). +If you are familiar with low-level programming, more detailed information about V8's garbage collector is in the article [A tour of V8: Garbage Collection](https://jayconrod.com/posts/55/a-tour-of-v8-garbage-collection). -[V8 blog](http://v8project.blogspot.com/) also publishes articles about changes in memory management from time to time. Naturally, to learn the garbage collection, you'd better prepare by learning about V8 internals in general and read the blog of [Vyacheslav Egorov](http://mrale.ph) who worked as one of V8 engineers. I'm saying: "V8", because it is best covered with articles in the internet. For other engines, many approaches are similar, but garbage collection differs in many aspects. +The [V8 blog](https://v8.dev/) also publishes articles about changes in memory management from time to time. Naturally, to learn more about garbage collection, you'd better prepare by learning about V8 internals in general and read the blog of [Vyacheslav Egorov](https://mrale.ph) who worked as one of the V8 engineers. I'm saying: "V8", because it is best covered by articles on the internet. For other engines, many approaches are similar, but garbage collection differs in many aspects. -In-depth knowledge of engines is good when you need low-level optimizations. It would be wise to plan that as the next step after you're familiar with the language. +In-depth knowledge of engines is good when you need low-level optimizations. It would be wise to plan that as the next step after you're familiar with the language. diff --git a/1-js/04-object-basics/02-garbage-collection/family-delete-refs.svg b/1-js/04-object-basics/03-garbage-collection/family-delete-refs.svg similarity index 55% rename from 1-js/04-object-basics/02-garbage-collection/family-delete-refs.svg rename to 1-js/04-object-basics/03-garbage-collection/family-delete-refs.svg index a67ffc3cc..1a98116e3 100644 --- a/1-js/04-object-basics/02-garbage-collection/family-delete-refs.svg +++ b/1-js/04-object-basics/03-garbage-collection/family-delete-refs.svg @@ -1,3 +1,4 @@ +<<<<<<< HEAD:1-js/04-object-basics/02-garbage-collection/family-delete-refs.svg <?xml version="1.0" encoding="UTF-8"?> <svg width="337px" height="204px" viewBox="0 0 337 204" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <!-- Generator: sketchtool 55.2 (78181) - https://sketchapp.com --> @@ -53,4 +54,7 @@ </text> </g> </g> -</svg> \ No newline at end of file +</svg> +======= +<svg xmlns="http://www.w3.org/2000/svg" width="337" height="204" viewBox="0 0 337 204"><defs><style>@import url(https://fonts.googleapis.com/css?family=Open+Sans:bold,italic,bolditalic%7CPT+Mono);@font-face{font-family:'PT Mono';font-weight:700;font-style:normal;src:local('PT MonoBold'),url(/font/PTMonoBold.woff2) format('woff2'),url(/font/PTMonoBold.woff) format('woff'),url(/font/PTMonoBold.ttf) format('truetype')}</style></defs><g id="garbage-collection" fill="none" fill-rule="evenodd" stroke="none" stroke-width="1"><g id="family-delete-refs.svg"><path id="Line" fill="#7E7C7B" fill-rule="nonzero" d="M147.5 183.5v6h46v2h-46v6l-14-7 14-7z" opacity=".6"/><path id="Rectangle-1" fill="#FBF2EC" stroke="#DBAF88" stroke-width="2" d="M88 13h151v26H88z"/><text id="<global-variable>" fill="#AF6E24" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="92" y="30"><global variable></tspan></text><path id="Rectangle-2" fill="#FBF2EC" stroke="#DBAF88" stroke-width="2" d="M123 80h78v26h-78z"/><text id="Object" fill="#AF6E24" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="139" y="96">Object</tspan></text><path id="Rectangle-3" fill="#FBF2EC" stroke="#DBAF88" stroke-width="2" d="M5 148h118v48H5z"/><text id="Object-2" fill="#AF6E24" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="39" y="165">Object</tspan></text><text id="wife" fill="#AF6E24" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="147" y="148">wife</tspan></text><text id="family" fill="#AF6E24" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="106" y="63">family</tspan></text><text id="name:-"John"" fill="#AF6E24" font-family="PTMono-Regular, PT Mono" font-size="12" font-weight="normal"><tspan x="19" y="185">name: "John"</tspan></text><path id="Rectangle-4" fill="#FBF2EC" stroke="#DBAF88" stroke-width="2" d="M214 148h118v48H214z"/><text id="name:-"Ann"" fill="#AF6E24" font-family="PTMono-Regular, PT Mono" font-size="12" font-weight="normal"><tspan x="230" y="185">name: "Ann"</tspan></text><text id="mother" fill="#AF6E24" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="242" y="127">mother</tspan></text><text id="Object-3" fill="#AF6E24" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="244" y="165">Object</tspan></text><path id="Line" fill="#C06334" fill-rule="nonzero" d="M164.5 43.5v18h6l-7 14-7-14h6v-18h2z"/><path id="Line-2" fill="#7E7C7B" fill-rule="nonzero" d="M114.75 111.108l1.142 1.642-.82.57-34.508 24.005 3.426 4.926L68.5 144.5l7.495-13.741 3.426 4.924 34.508-24.004.82-.571z" opacity=".6"/><path id="Line" fill="#C06334" fill-rule="nonzero" d="M180.5 149.5l14 7-14 7v-6h-48v-2h48v-6zM208.236 111.11l.827.563 35.427 24.121 3.377-4.96L255.5 144.5l-15.512-2.093 3.377-4.96-35.428-24.12-.826-.563 1.125-1.653z"/><path id="Line-Copy" stroke="#C06334" stroke-linecap="square" stroke-width="2" d="M100.5 118.5l-11 14"/><path id="Line-Copy-2" stroke="#C06334" stroke-linecap="square" stroke-width="2" d="M89.5 118.5l11 14"/><path id="Line-Copy-4" stroke="#C06334" stroke-linecap="square" stroke-width="2" d="M172.5 183.5l-11 14"/><path id="Line-Copy-3" stroke="#C06334" stroke-linecap="square" stroke-width="2" d="M161.5 183.5l11 14"/><text id="father" fill="#7E7C7B" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="35" y="127">father</tspan></text><text id="husband" fill="#7E7C7B" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="136" y="181">husband</tspan></text></g></g></svg> +>>>>>>> 540d753e90789205fc6e75c502f68382c87dea9b:1-js/04-object-basics/03-garbage-collection/family-delete-refs.svg diff --git a/1-js/04-object-basics/02-garbage-collection/family-no-family.svg b/1-js/04-object-basics/03-garbage-collection/family-no-family.svg similarity index 60% rename from 1-js/04-object-basics/02-garbage-collection/family-no-family.svg rename to 1-js/04-object-basics/03-garbage-collection/family-no-family.svg index df8601215..eb023f4ee 100644 --- a/1-js/04-object-basics/02-garbage-collection/family-no-family.svg +++ b/1-js/04-object-basics/03-garbage-collection/family-no-family.svg @@ -1,3 +1,4 @@ +<<<<<<< HEAD:1-js/04-object-basics/02-garbage-collection/family-no-family.svg <?xml version="1.0" encoding="UTF-8"?> <svg width="420px" height="279px" viewBox="0 0 420 279" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <!-- Generator: sketchtool 55.2 (78181) - https://sketchapp.com --> @@ -54,4 +55,7 @@ </g> </g> </g> -</svg> \ No newline at end of file +</svg> +======= +<svg xmlns="http://www.w3.org/2000/svg" width="420" height="279" viewBox="0 0 420 279"><defs><style>@import url(https://fonts.googleapis.com/css?family=Open+Sans:bold,italic,bolditalic%7CPT+Mono);@font-face{font-family:'PT Mono';font-weight:700;font-style:normal;src:local('PT MonoBold'),url(/font/PTMonoBold.woff2) format('woff2'),url(/font/PTMonoBold.woff) format('woff'),url(/font/PTMonoBold.ttf) format('truetype')}</style></defs><g id="garbage-collection" fill="none" fill-rule="evenodd" stroke="none" stroke-width="1"><g id="family-no-family.svg"><path id="Line" fill="#C06334" fill-rule="nonzero" d="M211.5 228.5v6h46v2h-46v6l-14-7 14-7z"/><path id="Rectangle-1" fill="#FBF2EC" stroke="#DBAF88" stroke-width="2" d="M153 25h153v48H153z"/><text id="<global>" fill="#AF6E24" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="199" y="43"><global></tspan></text><path id="Rectangle-2" fill="#FBF2EC" stroke="#DBAF88" stroke-width="2" d="M187 123h78v26h-78z"/><text id="Object" fill="#AF6E24" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="203" y="139">Object</tspan></text><path id="Rectangle-3" fill="#FBF2EC" stroke="#DBAF88" stroke-width="2" d="M69 193h118v48H69z"/><text id="Object-2" fill="#AF6E24" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="103" y="210">Object</tspan></text><text id="father" fill="#AF6E24" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="99" y="170">father</tspan></text><text id="wife" fill="#AF6E24" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="211" y="193">wife</tspan></text><text id="name:-"John"" fill="#AF6E24" font-family="PTMono-Regular, PT Mono" font-size="12" font-weight="normal"><tspan x="83" y="230">name: "John"</tspan></text><path id="Rectangle-4" fill="#FBF2EC" stroke="#DBAF88" stroke-width="2" d="M278 193h118v48H278z"/><text id="name:-"Ann"" fill="#AF6E24" font-family="PTMono-Regular, PT Mono" font-size="12" font-weight="normal"><tspan x="294" y="230">name: "Ann"</tspan></text><text id="mother" fill="#AF6E24" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="306" y="170">mother</tspan></text><text id="Object-3" fill="#AF6E24" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="308" y="210">Object</tspan></text><path id="Line-2" fill="#C06334" fill-rule="nonzero" d="M178.75 154.108l1.142 1.642-.82.57-34.508 24.005 3.426 4.926-15.49 2.249 7.495-13.741 3.426 4.924 34.508-24.004.82-.571z"/><path id="Line" fill="#C06334" fill-rule="nonzero" d="M244.5 194.5l14 7-14 7v-6h-48v-2h48v-6z"/><text id="husband" fill="#AF6E24" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="200" y="226">husband</tspan></text><path id="Line" fill="#C06334" fill-rule="nonzero" d="M272.236 154.11l.827.563 35.427 24.121 3.377-4.96L319.5 187.5l-15.512-2.093 3.377-4.96-35.428-24.12-.826-.563 1.125-1.653z"/><path id="Rectangle-5" stroke="#A7333A" stroke-width="2" d="M48 112h364v150H48z"/><text id="family:-null" fill="#AF6E24" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="183" y="66">family: null</tspan></text><g id="noun_48910_cc" transform="translate(8 110)"><path id="Shape" d="M17.503 1.75h-5.006a.341.341 0 00-.34.342v1.125h5.686V2.092a.341.341 0 00-.34-.341z"/><path id="Shape" fill="#A7333A" d="M28.364 3.217H19.59V2.092A2.09 2.09 0 0017.503 0h-5.006c-1.15 0-2.087.938-2.087 2.092v1.125H1.637c-.7 0-1.266.568-1.266 1.269v.09c0 .7.567 1.267 1.266 1.267h26.727c.699 0 1.266-.567 1.266-1.268v-.09c0-.7-.567-1.268-1.266-1.268zm-10.52 0h-5.687V2.092c0-.188.153-.341.34-.341h5.006a.34.34 0 01.34.34v1.126zM26.054 6.281H3.728c-1.298 0-2.35-.224-2.35 1.077L3.14 33.196c0 1.3 1.052 2.409 2.35 2.409h18.802c1.298 0 2.35-1.11 2.35-2.409l1.763-25.838c0-1.301-1.053-1.077-2.35-1.077zM9.637 32.193c-.377.012-.691-.261-.704-.612l-.694-19.917c-.012-.351.283-.647.66-.66.376-.013.69.261.703.613l.694 19.916c.013.351-.283.647-.659.66zm6.044-.63c0 .352-.306.637-.682.637-.377 0-.682-.286-.682-.637V11.634c0-.351.305-.636.682-.636.376 0 .682.285.682.636v19.93zm5.384.018c-.012.351-.327.625-.704.612-.376-.013-.672-.308-.66-.66l.695-19.916c.012-.352.326-.626.703-.613.377.014.672.309.66.66l-.694 19.917z"/></g></g></g></svg> +>>>>>>> 540d753e90789205fc6e75c502f68382c87dea9b:1-js/04-object-basics/03-garbage-collection/family-no-family.svg diff --git a/1-js/04-object-basics/02-garbage-collection/family-no-father-2.svg b/1-js/04-object-basics/03-garbage-collection/family-no-father-2.svg similarity index 52% rename from 1-js/04-object-basics/02-garbage-collection/family-no-father-2.svg rename to 1-js/04-object-basics/03-garbage-collection/family-no-father-2.svg index 502785902..742509d30 100644 --- a/1-js/04-object-basics/02-garbage-collection/family-no-father-2.svg +++ b/1-js/04-object-basics/03-garbage-collection/family-no-father-2.svg @@ -1,3 +1,4 @@ +<<<<<<< HEAD:1-js/04-object-basics/02-garbage-collection/family-no-father-2.svg <?xml version="1.0" encoding="UTF-8"?> <svg width="144px" height="225px" viewBox="0 0 144 225" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <!-- Generator: sketchtool 55.2 (78181) - https://sketchapp.com --> @@ -30,4 +31,7 @@ </text> </g> </g> -</svg> \ No newline at end of file +</svg> +======= +<svg xmlns="http://www.w3.org/2000/svg" width="144" height="225" viewBox="0 0 144 225"><defs><style>@import url(https://fonts.googleapis.com/css?family=Open+Sans:bold,italic,bolditalic%7CPT+Mono);@font-face{font-family:'PT Mono';font-weight:700;font-style:normal;src:local('PT MonoBold'),url(/font/PTMonoBold.woff2) format('woff2'),url(/font/PTMonoBold.woff) format('woff'),url(/font/PTMonoBold.ttf) format('truetype')}</style></defs><g id="garbage-collection" fill="none" fill-rule="evenodd" stroke="none" stroke-width="1"><g id="family-no-father-2.svg"><path id="Rectangle-2" fill="#FBF2EC" stroke="#DBAF88" stroke-width="2" d="M34 91h78v26H34z"/><text id="Object" fill="#AF6E24" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="50" y="107">Object</tspan></text><text id="family" fill="#AF6E24" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="15" y="67">family</tspan></text><path id="Rectangle-4" fill="#FBF2EC" stroke="#DBAF88" stroke-width="2" d="M16 166h118v48H16z"/><text id="name:-"Ann"" fill="#AF6E24" font-family="PTMono-Regular, PT Mono" font-size="12" font-weight="normal"><tspan x="34" y="203">name: "Ann"</tspan></text><text id="mother" fill="#AF6E24" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="16" y="142">mother</tspan></text><text id="Object-3" fill="#AF6E24" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="48" y="183">Object</tspan></text><path id="Line" fill="#C06334" fill-rule="nonzero" d="M75.5 47.5v18h6l-7 14-7-14h6v-18h2zM74.5 122.5v19h6l-7 14-7-14h6v-19h2z"/><path id="Rectangle-1" fill="#FBF2EC" stroke="#DBAF88" stroke-width="2" d="M27 16h93v26H27z"/><text id="<global>" fill="#AF6E24" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="43" y="33"><global></tspan></text></g></g></svg> +>>>>>>> 540d753e90789205fc6e75c502f68382c87dea9b:1-js/04-object-basics/03-garbage-collection/family-no-father-2.svg diff --git a/1-js/04-object-basics/02-garbage-collection/family-no-father.svg b/1-js/04-object-basics/03-garbage-collection/family-no-father.svg similarity index 61% rename from 1-js/04-object-basics/02-garbage-collection/family-no-father.svg rename to 1-js/04-object-basics/03-garbage-collection/family-no-father.svg index 9837ced82..ada595880 100644 --- a/1-js/04-object-basics/02-garbage-collection/family-no-father.svg +++ b/1-js/04-object-basics/03-garbage-collection/family-no-father.svg @@ -1,3 +1,4 @@ +<<<<<<< HEAD:1-js/04-object-basics/02-garbage-collection/family-no-father.svg <?xml version="1.0" encoding="UTF-8"?> <svg width="399px" height="225px" viewBox="0 0 399 225" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <!-- Generator: sketchtool 55.2 (78181) - https://sketchapp.com --> @@ -47,4 +48,7 @@ </text> </g> </g> -</svg> \ No newline at end of file +</svg> +======= +<svg xmlns="http://www.w3.org/2000/svg" width="399" height="225" viewBox="0 0 399 225"><defs><style>@import url(https://fonts.googleapis.com/css?family=Open+Sans:bold,italic,bolditalic%7CPT+Mono);@font-face{font-family:'PT Mono';font-weight:700;font-style:normal;src:local('PT MonoBold'),url(/font/PTMonoBold.woff2) format('woff2'),url(/font/PTMonoBold.woff) format('woff'),url(/font/PTMonoBold.ttf) format('truetype')}</style></defs><g id="garbage-collection" fill="none" fill-rule="evenodd" stroke="none" stroke-width="1"><g id="family-no-father.svg"><path id="Rectangle-2" fill="#FBF2EC" stroke="#DBAF88" stroke-width="2" d="M187 78h78v26h-78z"/><text id="Object" fill="#AF6E24" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="203" y="94">Object</tspan></text><path id="Rectangle-3" fill="#FBF2EC" stroke="#DBAF88" stroke-width="2" d="M69 146h118v48H69z"/><text id="Object-2" fill="#AF6E24" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="103" y="163">Object</tspan></text><text id="wife" fill="#AF6E24" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="211" y="146">wife</tspan></text><text id="family" fill="#AF6E24" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="171" y="61">family</tspan></text><text id="name:-"John"" fill="#AF6E24" font-family="PTMono-Regular, PT Mono" font-size="12" font-weight="normal"><tspan x="83" y="183">name: "John"</tspan></text><path id="Rectangle-4" fill="#FBF2EC" stroke="#DBAF88" stroke-width="2" d="M278 146h118v48H278z"/><text id="name:-"Ann"" fill="#AF6E24" font-family="PTMono-Regular, PT Mono" font-size="12" font-weight="normal"><tspan x="299" y="183">name: "Ann"</tspan></text><text id="mother" fill="#AF6E24" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="306" y="125">mother</tspan></text><text id="Object-3" fill="#AF6E24" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="308" y="163">Object</tspan></text><path id="Line" fill="#C06334" fill-rule="nonzero" d="M228.5 41.5v18h6l-7 14-7-14h6v-18h2zM244.5 147.5l14 7-14 7v-6h-48v-2h48v-6zM272.236 109.11l.827.563 35.427 24.121 3.377-4.96L319.5 142.5l-15.512-2.093 3.377-4.96-35.428-24.12-.826-.563 1.125-1.653z"/><path id="Rectangle-5" stroke="#A7333A" stroke-width="2" d="M48 117h217v99H48z"/><g id="noun_48910_cc" transform="translate(7 114)"><path id="Shape" d="M17.503 1.75h-5.006a.341.341 0 00-.34.342v1.125h5.686V2.092a.341.341 0 00-.34-.341z"/><path id="Shape" fill="#A7333A" d="M28.364 3.217H19.59V2.092A2.09 2.09 0 0017.503 0h-5.006c-1.15 0-2.087.938-2.087 2.092v1.125H1.637c-.7 0-1.266.568-1.266 1.269v.09c0 .7.567 1.267 1.266 1.267h26.727c.699 0 1.266-.567 1.266-1.268v-.09c0-.7-.567-1.268-1.266-1.268zm-10.52 0h-5.687V2.092c0-.188.153-.341.34-.341h5.006a.34.34 0 01.34.34v1.126zM26.054 6.281H3.728c-1.298 0-2.35-.224-2.35 1.077L3.14 33.196c0 1.3 1.052 2.409 2.35 2.409h18.802c1.298 0 2.35-1.11 2.35-2.409l1.763-25.838c0-1.301-1.053-1.077-2.35-1.077zM9.637 32.193c-.377.012-.691-.261-.704-.612l-.694-19.917c-.012-.351.283-.647.66-.66.376-.013.69.261.703.613l.694 19.916c.013.351-.283.647-.659.66zm6.044-.63c0 .352-.306.637-.682.637-.377 0-.682-.286-.682-.637V11.634c0-.351.305-.636.682-.636.376 0 .682.285.682.636v19.93zm5.384.018c-.012.351-.327.625-.704.612-.376-.013-.672-.308-.66-.66l.695-19.916c.012-.352.326-.626.703-.613.377.014.672.309.66.66l-.694 19.917z"/></g><path id="Rectangle-1" fill="#FBF2EC" stroke="#DBAF88" stroke-width="2" d="M181 13h93v26h-93z"/><text id="<global>" fill="#AF6E24" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="197" y="30"><global></tspan></text></g></g></svg> +>>>>>>> 540d753e90789205fc6e75c502f68382c87dea9b:1-js/04-object-basics/03-garbage-collection/family-no-father.svg diff --git a/1-js/04-object-basics/02-garbage-collection/family.svg b/1-js/04-object-basics/03-garbage-collection/family.svg similarity index 54% rename from 1-js/04-object-basics/02-garbage-collection/family.svg rename to 1-js/04-object-basics/03-garbage-collection/family.svg index 6c66e8569..8ac961be5 100644 --- a/1-js/04-object-basics/02-garbage-collection/family.svg +++ b/1-js/04-object-basics/03-garbage-collection/family.svg @@ -1,3 +1,4 @@ +<<<<<<< HEAD:1-js/04-object-basics/02-garbage-collection/family.svg <?xml version="1.0" encoding="UTF-8"?> <svg width="337px" height="204px" viewBox="0 0 337 204" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <!-- Generator: sketchtool 55.2 (78181) - https://sketchapp.com --> @@ -49,4 +50,7 @@ </text> </g> </g> -</svg> \ No newline at end of file +</svg> +======= +<svg xmlns="http://www.w3.org/2000/svg" width="337" height="204" viewBox="0 0 337 204"><defs><style>@import url(https://fonts.googleapis.com/css?family=Open+Sans:bold,italic,bolditalic%7CPT+Mono);@font-face{font-family:'PT Mono';font-weight:700;font-style:normal;src:local('PT MonoBold'),url(/font/PTMonoBold.woff2) format('woff2'),url(/font/PTMonoBold.woff) format('woff'),url(/font/PTMonoBold.ttf) format('truetype')}</style></defs><g id="garbage-collection" fill="none" fill-rule="evenodd" stroke="none" stroke-width="1"><g id="family.svg"><path id="Line" fill="#C06334" fill-rule="nonzero" d="M147.5 183.5v6h46v2h-46v6l-14-7 14-7z"/><path id="Rectangle-2" fill="#FBF2EC" stroke="#DBAF88" stroke-width="2" d="M123 80h78v26h-78z"/><text id="Object" fill="#AF6E24" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="139" y="96">Object</tspan></text><path id="Rectangle-3" fill="#FBF2EC" stroke="#DBAF88" stroke-width="2" d="M5 148h118v48H5z"/><text id="Object-2" fill="#AF6E24" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="39" y="165">Object</tspan></text><text id="father" fill="#AF6E24" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="35" y="127">father</tspan></text><text id="wife" fill="#AF6E24" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="147" y="148">wife</tspan></text><text id="family" fill="#AF6E24" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="107" y="63">family</tspan></text><text id="name:-"John"" fill="#AF6E24" font-family="PTMono-Regular, PT Mono" font-size="12" font-weight="normal"><tspan x="19" y="185">name: "John"</tspan></text><path id="Rectangle-4" fill="#FBF2EC" stroke="#DBAF88" stroke-width="2" d="M214 148h118v48H214z"/><text id="name:-"Ann"" fill="#AF6E24" font-family="PTMono-Regular, PT Mono" font-size="12" font-weight="normal"><tspan x="230" y="185">name: "Ann"</tspan></text><text id="mother" fill="#AF6E24" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="242" y="127">mother</tspan></text><text id="Object-3" fill="#AF6E24" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="244" y="165">Object</tspan></text><path id="Line" fill="#C06334" fill-rule="nonzero" d="M164.5 43.5v18h6l-7 14-7-14h6v-18h2z"/><path id="Line-2" fill="#C06334" fill-rule="nonzero" d="M114.75 111.108l1.142 1.642-.82.57-34.508 24.005 3.426 4.926L68.5 144.5l7.495-13.741 3.426 4.924 34.508-24.004.82-.571z"/><path id="Line" fill="#C06334" fill-rule="nonzero" d="M180.5 149.5l14 7-14 7v-6h-48v-2h48v-6z"/><text id="husband" fill="#AF6E24" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="136" y="181">husband</tspan></text><path id="Line" fill="#C06334" fill-rule="nonzero" d="M208.236 111.11l.827.563 35.427 24.121 3.377-4.96L255.5 144.5l-15.512-2.093 3.377-4.96-35.428-24.12-.826-.563 1.125-1.653z"/><path id="Rectangle-1" fill="#FBF2EC" stroke="#DBAF88" stroke-width="2" d="M88 13h151v26H88z"/><text id="<global-variable>" fill="#AF6E24" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="92" y="30"><global variable></tspan></text></g></g></svg> +>>>>>>> 540d753e90789205fc6e75c502f68382c87dea9b:1-js/04-object-basics/03-garbage-collection/family.svg diff --git a/1-js/04-object-basics/02-garbage-collection/garbage-collection-1.svg b/1-js/04-object-basics/03-garbage-collection/garbage-collection-1.svg similarity index 59% rename from 1-js/04-object-basics/02-garbage-collection/garbage-collection-1.svg rename to 1-js/04-object-basics/03-garbage-collection/garbage-collection-1.svg index d3bc5ce94..68e20df3b 100644 --- a/1-js/04-object-basics/02-garbage-collection/garbage-collection-1.svg +++ b/1-js/04-object-basics/03-garbage-collection/garbage-collection-1.svg @@ -1,3 +1,4 @@ +<<<<<<< HEAD:1-js/04-object-basics/02-garbage-collection/garbage-collection-1.svg <?xml version="1.0" encoding="UTF-8"?> <svg width="463px" height="204px" viewBox="0 0 463 204" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <!-- Generator: sketchtool 55.2 (78181) - https://sketchapp.com --> @@ -159,4 +160,7 @@ <path id="Line-Copy" d="M367.026599,89.8074683 L370.905564,94.6561738 L369.343826,95.9055639 L365.464862,91.0568584 L360.779649,94.8050287 L357.5,79.5 L371.711812,86.059298 L367.026599,89.8074683 Z" fill="#EE6B47" fill-rule="nonzero"></path> </g> </g> -</svg> \ No newline at end of file +</svg> +======= +<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="463" height="204" viewBox="0 0 463 204"><defs><style>@import url(https://fonts.googleapis.com/css?family=Open+Sans:bold,italic,bolditalic%7CPT+Mono);@font-face{font-family:'PT Mono';font-weight:700;font-style:normal;src:local('PT MonoBold'),url(/font/PTMonoBold.woff2) format('woff2'),url(/font/PTMonoBold.woff) format('woff'),url(/font/PTMonoBold.ttf) format('truetype')}</style></defs><defs><path id="path-1" d="M0 0h80v28H0z"/><path id="path-3" d="M0 0h40v20H0z"/><path id="path-5" d="M0 0h40v20H0z"/><path id="path-7" d="M0 0h40v20H0z"/><path id="path-9" d="M0 0h40v20H0z"/><path id="path-11" d="M0 0h40v20H0z"/><path id="path-13" d="M0 0h40v20H0z"/><path id="path-15" d="M0 0h40v20H0z"/><path id="path-17" d="M0 0h40v20H0z"/><path id="path-19" d="M0 0h40v20H0z"/><path id="path-21" d="M0 0h40v20H0z"/><path id="path-23" d="M0 0h40v20H0z"/></defs><g id="garbage-collection" fill="none" fill-rule="evenodd" stroke="none" stroke-width="1"><g id="garbage-collection-1.svg"><g id="Rectangle-1-Clipped" transform="translate(106 8)"><mask id="mask-2" fill="#fff"><use xlink:href="#path-1"/></mask><g id="Rectangle-1" fill="#FBF2EC" stroke="#DBAF88" stroke-width="4" mask="url(#mask-2)"><path id="path-1" d="M0 0h80v28H0z"/></g></g><text id="<global>" fill="#AF6E24" fill-rule="nonzero" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="115" y="26"><global></tspan></text><g id="Rectangle-2-Clipped" transform="translate(360 99)"><mask id="mask-4" fill="#fff"><use xlink:href="#path-3"/></mask><g id="Rectangle-2" fill="#FBF2EC" stroke="#DBAF88" stroke-width="4" mask="url(#mask-4)"><path id="path-3" d="M0 0h40v20H0z"/></g></g><g id="Rectangle-2-Copy-2-Clipped" transform="translate(267 99)"><mask id="mask-6" fill="#fff"><use xlink:href="#path-5"/></mask><g id="Rectangle-2-Copy-2" fill="#FBF2EC" stroke="#DBAF88" stroke-width="4" mask="url(#mask-6)"><path id="path-5" d="M0 0h40v20H0z"/></g></g><g id="Rectangle-2-Copy-2-Clipped" transform="translate(126 79)"><mask id="mask-8" fill="#fff"><use xlink:href="#path-7"/></mask><g id="Rectangle-2-Copy-2" fill="#FBF2EC" stroke="#DBAF88" stroke-width="4" mask="url(#mask-8)"><path id="path-7" d="M0 0h40v20H0z"/></g></g><g id="Rectangle-2-Copy-Clipped" transform="translate(313 53)"><mask id="mask-10" fill="#fff"><use xlink:href="#path-9"/></mask><g id="Rectangle-2-Copy" fill="#FBF2EC" stroke="#DBAF88" stroke-width="4" mask="url(#mask-10)"><path id="path-9" d="M0 0h40v20H0z"/></g></g><g id="Rectangle-2-Copy-3-Clipped" transform="translate(176 129)"><mask id="mask-12" fill="#fff"><use xlink:href="#path-11"/></mask><g id="Rectangle-2-Copy-3" fill="#FBF2EC" stroke="#DBAF88" stroke-width="4" mask="url(#mask-12)"><path id="path-11" d="M0 0h40v20H0z"/></g></g><g id="Rectangle-2-Copy-8-Clipped" transform="translate(196 69)"><mask id="mask-14" fill="#fff"><use xlink:href="#path-13"/></mask><g id="Rectangle-2-Copy-8" fill="#FBF2EC" stroke="#DBAF88" stroke-width="4" mask="url(#mask-14)"><path id="path-13" d="M0 0h40v20H0z"/></g></g><g id="Rectangle-2-Copy-4-Clipped" transform="translate(128 139)"><mask id="mask-16" fill="#fff"><use xlink:href="#path-15"/></mask><g id="Rectangle-2-Copy-4" fill="#FBF2EC" stroke="#DBAF88" stroke-width="4" mask="url(#mask-16)"><path id="path-15" d="M0 0h40v20H0z"/></g></g><g id="Rectangle-2-Copy-5-Clipped" transform="translate(76 131)"><mask id="mask-18" fill="#fff"><use xlink:href="#path-17"/></mask><g id="Rectangle-2-Copy-5" fill="#FBF2EC" stroke="#DBAF88" stroke-width="4" mask="url(#mask-18)"><path id="path-17" d="M0 0h40v20H0z"/></g></g><g id="Rectangle-2-Copy-6-Clipped" transform="translate(76 71)"><mask id="mask-20" fill="#fff"><use xlink:href="#path-19"/></mask><g id="Rectangle-2-Copy-6" fill="#FBF2EC" stroke="#DBAF88" stroke-width="4" mask="url(#mask-20)"><path id="path-19" d="M0 0h40v20H0z"/></g></g><g id="Rectangle-2-Copy-7-Clipped" transform="translate(27 57)"><mask id="mask-22" fill="#fff"><use xlink:href="#path-21"/></mask><g id="Rectangle-2-Copy-7" fill="#FBF2EC" stroke="#DBAF88" stroke-width="4" mask="url(#mask-22)"><path id="path-21" d="M0 0h40v20H0z"/></g></g><path id="Line" fill="#C06334" stroke="#C06334" stroke-width="2" d="M148.5 40.5v31"/><path id="Line-decoration-1" fill="#C06334" stroke="#C06334" stroke-width="2" d="M148.5 71.5l3-10.8h-6z"/><path id="Line-Copy" fill="#C06334" stroke="#C06334" stroke-width="2" d="M148.5 105.5v24"/><path id="Line-Copy-decoration-1" fill="#C06334" stroke="#C06334" stroke-width="2" d="M148.5 129.5l3-10.8h-6z"/><path id="Line-2" fill="#C06334" stroke="#C06334" stroke-width="2" d="M319.5 77.5l-19 16"/><path id="Line-2-decoration-1" fill="#C06334" stroke="#C06334" stroke-width="2" d="M300.5 93.5l10.193-4.662-3.864-4.59z"/><path id="Line-2" fill="#C06334" stroke="#C06334" stroke-width="2" d="M127.5 47.5l-19 16"/><path id="Line-2-decoration-1" fill="#C06334" stroke="#C06334" stroke-width="2" d="M108.5 63.5l10.193-4.662-3.864-4.59z"/><path id="Line-2-Copy-2" fill="#C06334" stroke="#C06334" stroke-width="2" d="M97.5 42.5l-23 9"/><path id="Line-2-Copy-2-decoration-1" fill="#C06334" stroke="#C06334" stroke-width="2" d="M74.5 51.5l11.15-1.142-2.186-5.587z"/><path id="Line-2-Copy" fill="#C06334" stroke="#C06334" stroke-width="2" d="M133.5 107.5l-19 16"/><path id="Line-2-Copy-decoration-1" fill="#C06334" stroke="#C06334" stroke-width="2" d="M114.5 123.5l10.193-4.662-3.864-4.59z"/><path id="Line" fill="#C06334" stroke="#C06334" stroke-width="2" d="M313.071 109.5h39.354"/><path id="Line-decoration-1" fill="#C06334" stroke="#C06334" stroke-width="2" d="M352.425 109.5l-10.8-3v6z"/><path id="Line" fill="#C06334" stroke="#C06334" stroke-width="2" d="M170.5 107.5l18 15"/><path id="Line-decoration-1" fill="#C06334" stroke="#C06334" stroke-width="2" d="M188.5 122.5l-6.376-9.219-3.841 4.61z"/><path id="Line-Copy-6" fill="#C06334" stroke="#C06334" stroke-width="2" d="M202.5 154.5l18 15"/><path id="Line-Copy-6-decoration-1" fill="#C06334" stroke="#C06334" stroke-width="2" d="M220.5 169.5l-6.376-9.219-3.841 4.61z"/><path id="Line-Copy-5" fill="#C06334" stroke="#C06334" stroke-width="2" d="M170.5 87.5l20-7"/><path id="Line-Copy-5-decoration-1" fill="#C06334" stroke="#C06334" stroke-width="2" d="M190.5 80.5l-11.185.736 1.982 5.663z"/><path id="Line-Copy-4" fill="#C06334" stroke="#C06334" stroke-width="2" d="M209.5 120.5l14-22"/><path id="Line-Copy-4-decoration-1" fill="#C06334" stroke="#C06334" stroke-width="2" d="M223.5 98.5l-8.33 7.5 5.063 3.222z"/><path id="Line-Copy-3" fill="#C06334" stroke="#C06334" stroke-width="2" d="M46.5 82.5l32 40"/><path id="Line-Copy-3-decoration-1" fill="#C06334" stroke="#C06334" stroke-width="2" d="M78.5 122.5l-4.404-10.307-4.685 3.748z"/><g id="Rectangle-2-Copy-9-Clipped" transform="translate(219 177)"><mask id="mask-24" fill="#fff"><use xlink:href="#path-23"/></mask><g id="Rectangle-2-Copy-9" fill="#FBF2EC" stroke="#DBAF88" stroke-width="4" mask="url(#mask-24)"><path id="path-25" d="M0 0h40v20H0z"/></g></g><path id="Line-Copy-2" fill="#C06334" stroke="#C06334" stroke-width="2" d="M187.5 41.5l21 21"/><path id="Line-Copy-2-decoration-1" fill="#C06334" stroke="#C06334" stroke-width="2" d="M208.5 62.5l-5.515-9.758-4.243 4.243z"/><path id="Line-Copy" fill="#C06334" fill-rule="nonzero" d="M357.5 79.5l14.212 6.56-4.686 3.747 3.255 4.068.625.781-1.562 1.25-.625-.781-3.255-4.069-4.684 3.749L357.5 79.5z"/></g></g></svg> +>>>>>>> 540d753e90789205fc6e75c502f68382c87dea9b:1-js/04-object-basics/03-garbage-collection/garbage-collection-1.svg diff --git a/1-js/04-object-basics/02-garbage-collection/garbage-collection-2.svg b/1-js/04-object-basics/03-garbage-collection/garbage-collection-2.svg similarity index 62% rename from 1-js/04-object-basics/02-garbage-collection/garbage-collection-2.svg rename to 1-js/04-object-basics/03-garbage-collection/garbage-collection-2.svg index c7311022a..aaac31b9e 100644 --- a/1-js/04-object-basics/02-garbage-collection/garbage-collection-2.svg +++ b/1-js/04-object-basics/03-garbage-collection/garbage-collection-2.svg @@ -1,3 +1,4 @@ +<<<<<<< HEAD:1-js/04-object-basics/02-garbage-collection/garbage-collection-2.svg <?xml version="1.0" encoding="UTF-8"?> <svg width="463px" height="204px" viewBox="0 0 463 204" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <!-- Generator: sketchtool 55.2 (78181) - https://sketchapp.com --> @@ -175,4 +176,7 @@ <path id="Line-Copy" d="M367.026599,89.8074683 L370.905564,94.6561738 L369.343826,95.9055639 L365.464862,91.0568584 L360.779649,94.8050287 L357.5,79.5 L371.711812,86.059298 L367.026599,89.8074683 Z" fill="#EE6B47" fill-rule="nonzero"></path> </g> </g> -</svg> \ No newline at end of file +</svg> +======= +<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="463" height="204" viewBox="0 0 463 204"><defs><style>@import url(https://fonts.googleapis.com/css?family=Open+Sans:bold,italic,bolditalic%7CPT+Mono);@font-face{font-family:'PT Mono';font-weight:700;font-style:normal;src:local('PT MonoBold'),url(/font/PTMonoBold.woff2) format('woff2'),url(/font/PTMonoBold.woff) format('woff'),url(/font/PTMonoBold.ttf) format('truetype')}</style></defs><defs><path id="path-1" d="M0 0h80v28H0z"/><path id="path-3" d="M0 0h40v20H0z"/><path id="path-5" d="M0 0h40v20H0z"/><path id="path-7" d="M0 0h40v20H0z"/><path id="path-9" d="M0 0h40v20H0z"/><path id="path-11" d="M0 0h40v20H0z"/><path id="path-13" d="M0 0h40v20H0z"/><path id="path-15" d="M0 0h40v20H0z"/><path id="path-17" d="M0 0h40v20H0z"/><path id="path-19" d="M0 0h40v20H0z"/><path id="path-21" d="M0 0h40v20H0z"/><path id="path-23" d="M0 0h40v20H0z"/></defs><g id="garbage-collection" fill="none" fill-rule="evenodd" stroke="none" stroke-width="1"><g id="garbage-collection-2.svg"><g id="Rectangle-1-Clipped" transform="translate(106 8)"><mask id="mask-2" fill="#fff"><use xlink:href="#path-1"/></mask><g id="Rectangle-1" fill="#FBF2EC" stroke="#DBAF88" stroke-width="4" mask="url(#mask-2)"><path id="path-1" d="M0 0h80v28H0z"/></g></g><text id="<global>" fill="#AF6E24" fill-rule="nonzero" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="115" y="26"><global></tspan></text><g id="Rectangle-2-Clipped" transform="translate(360 99)"><mask id="mask-4" fill="#fff"><use xlink:href="#path-3"/></mask><g id="Rectangle-2" fill="#FBF2EC" stroke="#DBAF88" stroke-width="4" mask="url(#mask-4)"><path id="path-3" d="M0 0h40v20H0z"/></g></g><g id="Rectangle-2-Copy-2-Clipped" transform="translate(267 99)"><mask id="mask-6" fill="#fff"><use xlink:href="#path-5"/></mask><g id="Rectangle-2-Copy-2" fill="#FBF2EC" stroke="#DBAF88" stroke-width="4" mask="url(#mask-6)"><path id="path-5" d="M0 0h40v20H0z"/></g></g><g id="Rectangle-2-Copy-2-Clipped" transform="translate(126 79)"><mask id="mask-8" fill="#fff"><use xlink:href="#path-7"/></mask><g id="Rectangle-2-Copy-2" fill="#FBF2EC" stroke="#DBAF88" stroke-width="4" mask="url(#mask-8)"><path id="path-7" d="M0 0h40v20H0z"/></g></g><g id="Rectangle-2-Copy-Clipped" transform="translate(313 53)"><mask id="mask-10" fill="#fff"><use xlink:href="#path-9"/></mask><g id="Rectangle-2-Copy" fill="#FBF2EC" stroke="#DBAF88" stroke-width="4" mask="url(#mask-10)"><path id="path-9" d="M0 0h40v20H0z"/></g></g><g id="Rectangle-2-Copy-3-Clipped" transform="translate(176 129)"><mask id="mask-12" fill="#fff"><use xlink:href="#path-11"/></mask><g id="Rectangle-2-Copy-3" fill="#FBF2EC" stroke="#DBAF88" stroke-width="4" mask="url(#mask-12)"><path id="path-11" d="M0 0h40v20H0z"/></g></g><g id="Rectangle-2-Copy-8-Clipped" transform="translate(196 69)"><mask id="mask-14" fill="#fff"><use xlink:href="#path-13"/></mask><g id="Rectangle-2-Copy-8" fill="#FBF2EC" stroke="#DBAF88" stroke-width="4" mask="url(#mask-14)"><path id="path-13" d="M0 0h40v20H0z"/></g></g><g id="Rectangle-2-Copy-4-Clipped" transform="translate(128 139)"><mask id="mask-16" fill="#fff"><use xlink:href="#path-15"/></mask><g id="Rectangle-2-Copy-4" fill="#FBF2EC" stroke="#DBAF88" stroke-width="4" mask="url(#mask-16)"><path id="path-15" d="M0 0h40v20H0z"/></g></g><g id="Rectangle-2-Copy-5-Clipped" transform="translate(76 131)"><mask id="mask-18" fill="#fff"><use xlink:href="#path-17"/></mask><g id="Rectangle-2-Copy-5" fill="#FBF2EC" stroke="#DBAF88" stroke-width="4" mask="url(#mask-18)"><path id="path-17" d="M0 0h40v20H0z"/></g></g><g id="Rectangle-2-Copy-6-Clipped" transform="translate(76 71)"><mask id="mask-20" fill="#fff"><use xlink:href="#path-19"/></mask><g id="Rectangle-2-Copy-6" fill="#FBF2EC" stroke="#DBAF88" stroke-width="4" mask="url(#mask-20)"><path id="path-19" d="M0 0h40v20H0z"/></g></g><g id="Rectangle-2-Copy-7-Clipped" transform="translate(27 57)"><mask id="mask-22" fill="#fff"><use xlink:href="#path-21"/></mask><g id="Rectangle-2-Copy-7" fill="#FBF2EC" stroke="#DBAF88" stroke-width="4" mask="url(#mask-22)"><path id="path-21" d="M0 0h40v20H0z"/></g></g><path id="Line" fill="#C06334" stroke="#C06334" stroke-width="2" d="M148.5 40.5v31"/><path id="Line-decoration-1" fill="#C06334" stroke="#C06334" stroke-width="2" d="M148.5 71.5l3-10.8h-6z"/><path id="Line-Copy" fill="#C06334" stroke="#C06334" stroke-width="2" d="M148.5 105.5v24"/><path id="Line-Copy-decoration-1" fill="#C06334" stroke="#C06334" stroke-width="2" d="M148.5 129.5l3-10.8h-6z"/><path id="Line-2" fill="#C06334" stroke="#C06334" stroke-width="2" d="M319.5 77.5l-19 16"/><path id="Line-2-decoration-1" fill="#C06334" stroke="#C06334" stroke-width="2" d="M300.5 93.5l10.193-4.662-3.864-4.59z"/><path id="Line-2" fill="#C06334" stroke="#C06334" stroke-width="2" d="M127.5 47.5l-19 16"/><path id="Line-2-decoration-1" fill="#C06334" stroke="#C06334" stroke-width="2" d="M108.5 63.5l10.193-4.662-3.864-4.59z"/><path id="Line-2-Copy-2" fill="#C06334" stroke="#C06334" stroke-width="2" d="M97.5 42.5l-23 9"/><path id="Line-2-Copy-2-decoration-1" fill="#C06334" stroke="#C06334" stroke-width="2" d="M74.5 51.5l11.15-1.142-2.186-5.587z"/><path id="Line-2-Copy" fill="#C06334" stroke="#C06334" stroke-width="2" d="M133.5 107.5l-19 16"/><path id="Line-2-Copy-decoration-1" fill="#C06334" stroke="#C06334" stroke-width="2" d="M114.5 123.5l10.193-4.662-3.864-4.59z"/><path id="Line" fill="#C06334" stroke="#C06334" stroke-width="2" d="M313.071 109.5h39.354"/><path id="Line-decoration-1" fill="#C06334" stroke="#C06334" stroke-width="2" d="M352.425 109.5l-10.8-3v6z"/><path id="Line" fill="#C06334" stroke="#C06334" stroke-width="2" d="M170.5 107.5l18 15"/><path id="Line-decoration-1" fill="#C06334" stroke="#C06334" stroke-width="2" d="M188.5 122.5l-6.376-9.219-3.841 4.61z"/><path id="Line-Copy-6" fill="#C06334" stroke="#C06334" stroke-width="2" d="M202.5 154.5l18 15"/><path id="Line-Copy-6-decoration-1" fill="#C06334" stroke="#C06334" stroke-width="2" d="M220.5 169.5l-6.376-9.219-3.841 4.61z"/><path id="Line-Copy-5" fill="#C06334" stroke="#C06334" stroke-width="2" d="M170.5 87.5l20-7"/><path id="Line-Copy-5-decoration-1" fill="#C06334" stroke="#C06334" stroke-width="2" d="M190.5 80.5l-11.185.736 1.982 5.663z"/><path id="Line-Copy-4" fill="#C06334" stroke="#C06334" stroke-width="2" d="M209.5 120.5l14-22"/><path id="Line-Copy-4-decoration-1" fill="#C06334" stroke="#C06334" stroke-width="2" d="M223.5 98.5l-8.33 7.5 5.063 3.222z"/><path id="Line-Copy-3" fill="#C06334" stroke="#C06334" stroke-width="2" d="M46.5 82.5l32 40"/><path id="Line-Copy-3-decoration-1" fill="#C06334" stroke="#C06334" stroke-width="2" d="M78.5 122.5l-4.404-10.307-4.685 3.748z"/><g id="Group" fill="#478964" transform="rotate(-90 81 2)"><path id="Fill-72" d="M5.5 5.511l-.866-1.01.866-1.012V1L2.505 4.497H2.5l.003.003-.003.003h.005L5.5 8V5.511"/><path id="Fill-73" d="M4.5 1.098A3.406 3.406 0 001.098 4.5 3.406 3.406 0 004.5 7.902 3.406 3.406 0 007.902 4.5 3.406 3.406 0 004.5 1.098zM4.5 9A4.505 4.505 0 010 4.5C0 2.019 2.019 0 4.5 0S9 2.019 9 4.5 6.981 9 4.5 9z"/></g><g id="Group-Copy" fill="#478964" transform="rotate(-90 49.5 19.5)"><path id="Fill-72" d="M5.5 5.511l-.866-1.01.866-1.012V1L2.505 4.497H2.5l.003.003-.003.003h.005L5.5 8V5.511"/><path id="Fill-73" d="M4.5 1.098A3.406 3.406 0 001.098 4.5 3.406 3.406 0 004.5 7.902 3.406 3.406 0 007.902 4.5 3.406 3.406 0 004.5 1.098zM4.5 9A4.505 4.505 0 010 4.5C0 2.019 2.019 0 4.5 0S9 2.019 9 4.5 6.981 9 4.5 9z"/></g><g id="Group-Copy-4" fill="#478964" transform="rotate(-90 110 -19)"><path id="Fill-72" d="M5.5 5.511l-.866-1.01.866-1.012V1L2.505 4.497H2.5l.003.003-.003.003h.005L5.5 8V5.511"/><path id="Fill-73" d="M4.5 1.098A3.406 3.406 0 001.098 4.5 3.406 3.406 0 004.5 7.902 3.406 3.406 0 007.902 4.5 3.406 3.406 0 004.5 1.098zM4.5 9A4.505 4.505 0 010 4.5C0 2.019 2.019 0 4.5 0S9 2.019 9 4.5 6.981 9 4.5 9z"/></g><g id="Rectangle-2-Copy-9-Clipped" transform="translate(219 177)"><mask id="mask-24" fill="#fff"><use xlink:href="#path-23"/></mask><g id="Rectangle-2-Copy-9" fill="#FBF2EC" stroke="#DBAF88" stroke-width="4" mask="url(#mask-24)"><path id="path-25" d="M0 0h40v20H0z"/></g></g><g id="Group-Copy-6" fill="#478964" transform="rotate(-90 140 -59)"><path id="Fill-72" d="M5.5 5.511l-.866-1.01.866-1.012V1L2.505 4.497H2.5l.003.003-.003.003h.005L5.5 8V5.511"/><path id="Fill-73" d="M4.5 1.098A3.406 3.406 0 001.098 4.5 3.406 3.406 0 004.5 7.902 3.406 3.406 0 007.902 4.5 3.406 3.406 0 004.5 1.098zM4.5 9A4.505 4.505 0 010 4.5C0 2.019 2.019 0 4.5 0S9 2.019 9 4.5 6.981 9 4.5 9z"/></g><path id="Line-Copy-2" fill="#C06334" stroke="#C06334" stroke-width="2" d="M187.5 41.5l21 21"/><path id="Line-Copy-2-decoration-1" fill="#C06334" stroke="#C06334" stroke-width="2" d="M208.5 62.5l-5.515-9.758-4.243 4.243z"/><path id="Line-Copy" fill="#C06334" fill-rule="nonzero" d="M357.5 79.5l14.212 6.56-4.686 3.747 3.255 4.068.625.781-1.562 1.25-.625-.781-3.255-4.069-4.684 3.749L357.5 79.5z"/></g></g></svg> +>>>>>>> 540d753e90789205fc6e75c502f68382c87dea9b:1-js/04-object-basics/03-garbage-collection/garbage-collection-2.svg diff --git a/1-js/04-object-basics/02-garbage-collection/garbage-collection-3.svg b/1-js/04-object-basics/03-garbage-collection/garbage-collection-3.svg similarity index 63% rename from 1-js/04-object-basics/02-garbage-collection/garbage-collection-3.svg rename to 1-js/04-object-basics/03-garbage-collection/garbage-collection-3.svg index a0ce257e3..523043c83 100644 --- a/1-js/04-object-basics/02-garbage-collection/garbage-collection-3.svg +++ b/1-js/04-object-basics/03-garbage-collection/garbage-collection-3.svg @@ -1,3 +1,4 @@ +<<<<<<< HEAD:1-js/04-object-basics/02-garbage-collection/garbage-collection-3.svg <?xml version="1.0" encoding="UTF-8"?> <svg width="463px" height="204px" viewBox="0 0 463 204" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <!-- Generator: sketchtool 55.2 (78181) - https://sketchapp.com --> @@ -187,4 +188,7 @@ <path id="Line-Copy" d="M367.026599,89.8074683 L370.905564,94.6561738 L369.343826,95.9055639 L365.464862,91.0568584 L360.779649,94.8050287 L357.5,79.5 L371.711812,86.059298 L367.026599,89.8074683 Z" fill="#EE6B47" fill-rule="nonzero"></path> </g> </g> -</svg> \ No newline at end of file +</svg> +======= +<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="463" height="204" viewBox="0 0 463 204"><defs><style>@import url(https://fonts.googleapis.com/css?family=Open+Sans:bold,italic,bolditalic%7CPT+Mono);@font-face{font-family:'PT Mono';font-weight:700;font-style:normal;src:local('PT MonoBold'),url(/font/PTMonoBold.woff2) format('woff2'),url(/font/PTMonoBold.woff) format('woff'),url(/font/PTMonoBold.ttf) format('truetype')}</style></defs><defs><path id="path-1" d="M0 0h80v28H0z"/><path id="path-3" d="M0 0h40v20H0z"/><path id="path-5" d="M0 0h40v20H0z"/><path id="path-7" d="M0 0h40v20H0z"/><path id="path-9" d="M0 0h40v20H0z"/><path id="path-11" d="M0 0h40v20H0z"/><path id="path-13" d="M0 0h40v20H0z"/><path id="path-15" d="M0 0h40v20H0z"/><path id="path-17" d="M0 0h40v20H0z"/><path id="path-19" d="M0 0h40v20H0z"/><path id="path-21" d="M0 0h40v20H0z"/><path id="path-23" d="M0 0h40v20H0z"/></defs><g id="garbage-collection" fill="none" fill-rule="evenodd" stroke="none" stroke-width="1"><g id="garbage-collection-3.svg"><g id="Rectangle-1-Clipped" transform="translate(106 8)"><mask id="mask-2" fill="#fff"><use xlink:href="#path-1"/></mask><g id="Rectangle-1" fill="#FBF2EC" stroke="#DBAF88" stroke-width="4" mask="url(#mask-2)"><path id="path-1" d="M0 0h80v28H0z"/></g></g><text id="<global>" fill="#AF6E24" fill-rule="nonzero" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="115" y="26"><global></tspan></text><g id="Rectangle-2-Clipped" transform="translate(360 99)"><mask id="mask-4" fill="#fff"><use xlink:href="#path-3"/></mask><g id="Rectangle-2" fill="#FBF2EC" stroke="#DBAF88" stroke-width="4" mask="url(#mask-4)"><path id="path-3" d="M0 0h40v20H0z"/></g></g><g id="Rectangle-2-Copy-2-Clipped" transform="translate(267 99)"><mask id="mask-6" fill="#fff"><use xlink:href="#path-5"/></mask><g id="Rectangle-2-Copy-2" fill="#FBF2EC" stroke="#DBAF88" stroke-width="4" mask="url(#mask-6)"><path id="path-5" d="M0 0h40v20H0z"/></g></g><g id="Rectangle-2-Copy-2-Clipped" transform="translate(126 79)"><mask id="mask-8" fill="#fff"><use xlink:href="#path-7"/></mask><g id="Rectangle-2-Copy-2" fill="#FBF2EC" stroke="#DBAF88" stroke-width="4" mask="url(#mask-8)"><path id="path-7" d="M0 0h40v20H0z"/></g></g><g id="Rectangle-2-Copy-Clipped" transform="translate(313 53)"><mask id="mask-10" fill="#fff"><use xlink:href="#path-9"/></mask><g id="Rectangle-2-Copy" fill="#FBF2EC" stroke="#DBAF88" stroke-width="4" mask="url(#mask-10)"><path id="path-9" d="M0 0h40v20H0z"/></g></g><g id="Rectangle-2-Copy-3-Clipped" transform="translate(176 129)"><mask id="mask-12" fill="#fff"><use xlink:href="#path-11"/></mask><g id="Rectangle-2-Copy-3" fill="#FBF2EC" stroke="#DBAF88" stroke-width="4" mask="url(#mask-12)"><path id="path-11" d="M0 0h40v20H0z"/></g></g><g id="Rectangle-2-Copy-8-Clipped" transform="translate(196 69)"><mask id="mask-14" fill="#fff"><use xlink:href="#path-13"/></mask><g id="Rectangle-2-Copy-8" fill="#FBF2EC" stroke="#DBAF88" stroke-width="4" mask="url(#mask-14)"><path id="path-13" d="M0 0h40v20H0z"/></g></g><g id="Rectangle-2-Copy-4-Clipped" transform="translate(128 139)"><mask id="mask-16" fill="#fff"><use xlink:href="#path-15"/></mask><g id="Rectangle-2-Copy-4" fill="#FBF2EC" stroke="#DBAF88" stroke-width="4" mask="url(#mask-16)"><path id="path-15" d="M0 0h40v20H0z"/></g></g><g id="Rectangle-2-Copy-5-Clipped" transform="translate(76 131)"><mask id="mask-18" fill="#fff"><use xlink:href="#path-17"/></mask><g id="Rectangle-2-Copy-5" fill="#FBF2EC" stroke="#DBAF88" stroke-width="4" mask="url(#mask-18)"><path id="path-17" d="M0 0h40v20H0z"/></g></g><g id="Rectangle-2-Copy-6-Clipped" transform="translate(76 71)"><mask id="mask-20" fill="#fff"><use xlink:href="#path-19"/></mask><g id="Rectangle-2-Copy-6" fill="#FBF2EC" stroke="#DBAF88" stroke-width="4" mask="url(#mask-20)"><path id="path-19" d="M0 0h40v20H0z"/></g></g><g id="Rectangle-2-Copy-7-Clipped" transform="translate(27 57)"><mask id="mask-22" fill="#fff"><use xlink:href="#path-21"/></mask><g id="Rectangle-2-Copy-7" fill="#FBF2EC" stroke="#DBAF88" stroke-width="4" mask="url(#mask-22)"><path id="path-21" d="M0 0h40v20H0z"/></g></g><path id="Line" fill="#C06334" stroke="#C06334" stroke-width="2" d="M148.5 40.5v31"/><path id="Line-decoration-1" fill="#C06334" stroke="#C06334" stroke-width="2" d="M148.5 71.5l3-10.8h-6z"/><path id="Line-Copy" fill="#C06334" stroke="#C06334" stroke-width="2" d="M148.5 105.5v24"/><path id="Line-Copy-decoration-1" fill="#C06334" stroke="#C06334" stroke-width="2" d="M148.5 129.5l3-10.8h-6z"/><path id="Line-2" fill="#C06334" stroke="#C06334" stroke-width="2" d="M319.5 77.5l-19 16"/><path id="Line-2-decoration-1" fill="#C06334" stroke="#C06334" stroke-width="2" d="M300.5 93.5l10.193-4.662-3.864-4.59z"/><path id="Line-2" fill="#C06334" stroke="#C06334" stroke-width="2" d="M127.5 47.5l-19 16"/><path id="Line-2-decoration-1" fill="#C06334" stroke="#C06334" stroke-width="2" d="M108.5 63.5l10.193-4.662-3.864-4.59z"/><path id="Line-2-Copy-2" fill="#C06334" stroke="#C06334" stroke-width="2" d="M97.5 42.5l-23 9"/><path id="Line-2-Copy-2-decoration-1" fill="#C06334" stroke="#C06334" stroke-width="2" d="M74.5 51.5l11.15-1.142-2.186-5.587z"/><path id="Line-2-Copy" fill="#C06334" stroke="#C06334" stroke-width="2" d="M133.5 107.5l-19 16"/><path id="Line-2-Copy-decoration-1" fill="#C06334" stroke="#C06334" stroke-width="2" d="M114.5 123.5l10.193-4.662-3.864-4.59z"/><path id="Line" fill="#C06334" stroke="#C06334" stroke-width="2" d="M313.071 109.5h39.354"/><path id="Line-decoration-1" fill="#C06334" stroke="#C06334" stroke-width="2" d="M352.425 109.5l-10.8-3v6z"/><path id="Line" fill="#C06334" stroke="#C06334" stroke-width="2" d="M170.5 107.5l18 15"/><path id="Line-decoration-1" fill="#C06334" stroke="#C06334" stroke-width="2" d="M188.5 122.5l-6.376-9.219-3.841 4.61z"/><path id="Line-Copy-6" fill="#C06334" stroke="#C06334" stroke-width="2" d="M202.5 154.5l18 15"/><path id="Line-Copy-6-decoration-1" fill="#C06334" stroke="#C06334" stroke-width="2" d="M220.5 169.5l-6.376-9.219-3.841 4.61z"/><path id="Line-Copy-5" fill="#C06334" stroke="#C06334" stroke-width="2" d="M170.5 87.5l20-7"/><path id="Line-Copy-5-decoration-1" fill="#C06334" stroke="#C06334" stroke-width="2" d="M190.5 80.5l-11.185.736 1.982 5.663z"/><path id="Line-Copy-4" fill="#C06334" stroke="#C06334" stroke-width="2" d="M209.5 120.5l14-22"/><path id="Line-Copy-4-decoration-1" fill="#C06334" stroke="#C06334" stroke-width="2" d="M223.5 98.5l-8.33 7.5 5.063 3.222z"/><path id="Line-Copy-3" fill="#C06334" stroke="#C06334" stroke-width="2" d="M46.5 82.5l32 40"/><path id="Line-Copy-3-decoration-1" fill="#C06334" stroke="#C06334" stroke-width="2" d="M78.5 122.5l-4.404-10.307-4.685 3.748z"/><g id="Group" fill="#478964" transform="rotate(-90 81 2)"><path id="Fill-72" d="M5.5 5.511l-.866-1.01.866-1.012V1L2.505 4.497H2.5l.003.003-.003.003h.005L5.5 8V5.511"/><path id="Fill-73" d="M4.5 1.098A3.406 3.406 0 001.098 4.5 3.406 3.406 0 004.5 7.902 3.406 3.406 0 007.902 4.5 3.406 3.406 0 004.5 1.098zM4.5 9A4.505 4.505 0 010 4.5C0 2.019 2.019 0 4.5 0S9 2.019 9 4.5 6.981 9 4.5 9z"/></g><g id="Group-Copy" fill="#478964" transform="rotate(-90 49.5 19.5)"><path id="Fill-72" d="M5.5 5.511l-.866-1.01.866-1.012V1L2.505 4.497H2.5l.003.003-.003.003h.005L5.5 8V5.511"/><path id="Fill-73" d="M4.5 1.098A3.406 3.406 0 001.098 4.5 3.406 3.406 0 004.5 7.902 3.406 3.406 0 007.902 4.5 3.406 3.406 0 004.5 1.098zM4.5 9A4.505 4.505 0 010 4.5C0 2.019 2.019 0 4.5 0S9 2.019 9 4.5 6.981 9 4.5 9z"/></g><g id="Group-Copy-2" fill="#478964" transform="rotate(-90 111.5 32.5)"><path id="Fill-72" d="M5.5 5.511l-.866-1.01.866-1.012V1L2.505 4.497H2.5l.003.003-.003.003h.005L5.5 8V5.511"/><path id="Fill-73" d="M4.5 1.098A3.406 3.406 0 001.098 4.5 3.406 3.406 0 004.5 7.902 3.406 3.406 0 007.902 4.5 3.406 3.406 0 004.5 1.098zM4.5 9A4.505 4.505 0 010 4.5C0 2.019 2.019 0 4.5 0S9 2.019 9 4.5 6.981 9 4.5 9z"/></g><g id="Group-Copy-3" fill="#478964" transform="rotate(-90 141 10)"><path id="Fill-72" d="M5.5 5.511l-.866-1.01.866-1.012V1L2.505 4.497H2.5l.003.003-.003.003h.005L5.5 8V5.511"/><path id="Fill-73" d="M4.5 1.098A3.406 3.406 0 001.098 4.5 3.406 3.406 0 004.5 7.902 3.406 3.406 0 007.902 4.5 3.406 3.406 0 004.5 1.098zM4.5 9A4.505 4.505 0 010 4.5C0 2.019 2.019 0 4.5 0S9 2.019 9 4.5 6.981 9 4.5 9z"/></g><g id="Group-Copy-4" fill="#478964" transform="rotate(-90 110 -19)"><path id="Fill-72" d="M5.5 5.511l-.866-1.01.866-1.012V1L2.505 4.497H2.5l.003.003-.003.003h.005L5.5 8V5.511"/><path id="Fill-73" d="M4.5 1.098A3.406 3.406 0 001.098 4.5 3.406 3.406 0 004.5 7.902 3.406 3.406 0 007.902 4.5 3.406 3.406 0 004.5 1.098zM4.5 9A4.505 4.505 0 010 4.5C0 2.019 2.019 0 4.5 0S9 2.019 9 4.5 6.981 9 4.5 9z"/></g><g id="Group-Copy-5" fill="#478964" transform="rotate(-90 160 -19)"><path id="Fill-72" d="M5.5 5.511l-.866-1.01.866-1.012V1L2.505 4.497H2.5l.003.003-.003.003h.005L5.5 8V5.511"/><path id="Fill-73" d="M4.5 1.098A3.406 3.406 0 001.098 4.5 3.406 3.406 0 004.5 7.902 3.406 3.406 0 007.902 4.5 3.406 3.406 0 004.5 1.098zM4.5 9A4.505 4.505 0 010 4.5C0 2.019 2.019 0 4.5 0S9 2.019 9 4.5 6.981 9 4.5 9z"/></g><g id="Rectangle-2-Copy-9-Clipped" transform="translate(219 177)"><mask id="mask-24" fill="#fff"><use xlink:href="#path-23"/></mask><g id="Rectangle-2-Copy-9" fill="#FBF2EC" stroke="#DBAF88" stroke-width="4" mask="url(#mask-24)"><path id="path-25" d="M0 0h40v20H0z"/></g></g><g id="Group-Copy-6" fill="#478964" transform="rotate(-90 140 -59)"><path id="Fill-72" d="M5.5 5.511l-.866-1.01.866-1.012V1L2.505 4.497H2.5l.003.003-.003.003h.005L5.5 8V5.511"/><path id="Fill-73" d="M4.5 1.098A3.406 3.406 0 001.098 4.5 3.406 3.406 0 004.5 7.902 3.406 3.406 0 007.902 4.5 3.406 3.406 0 004.5 1.098zM4.5 9A4.505 4.505 0 010 4.5C0 2.019 2.019 0 4.5 0S9 2.019 9 4.5 6.981 9 4.5 9z"/></g><path id="Line-Copy-2" fill="#C06334" stroke="#C06334" stroke-width="2" d="M187.5 41.5l21 21"/><path id="Line-Copy-2-decoration-1" fill="#C06334" stroke="#C06334" stroke-width="2" d="M208.5 62.5l-5.515-9.758-4.243 4.243z"/><path id="Line-Copy" fill="#C06334" fill-rule="nonzero" d="M357.5 79.5l14.212 6.56-4.686 3.747 3.255 4.068.625.781-1.562 1.25-.625-.781-3.255-4.069-4.684 3.749L357.5 79.5z"/></g></g></svg> +>>>>>>> 540d753e90789205fc6e75c502f68382c87dea9b:1-js/04-object-basics/03-garbage-collection/garbage-collection-3.svg diff --git a/1-js/04-object-basics/02-garbage-collection/garbage-collection-4.svg b/1-js/04-object-basics/03-garbage-collection/garbage-collection-4.svg similarity index 63% rename from 1-js/04-object-basics/02-garbage-collection/garbage-collection-4.svg rename to 1-js/04-object-basics/03-garbage-collection/garbage-collection-4.svg index bc5a035c7..201576082 100644 --- a/1-js/04-object-basics/02-garbage-collection/garbage-collection-4.svg +++ b/1-js/04-object-basics/03-garbage-collection/garbage-collection-4.svg @@ -1,3 +1,4 @@ +<<<<<<< HEAD:1-js/04-object-basics/02-garbage-collection/garbage-collection-4.svg <?xml version="1.0" encoding="UTF-8"?> <svg width="463px" height="204px" viewBox="0 0 463 204" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <!-- Generator: sketchtool 55.2 (78181) - https://sketchapp.com --> @@ -191,4 +192,7 @@ <path id="Line-Copy" d="M367.026599,89.8074683 L370.905564,94.6561738 L369.343826,95.9055639 L365.464862,91.0568584 L360.779649,94.8050287 L357.5,79.5 L371.711812,86.059298 L367.026599,89.8074683 Z" fill="#EE6B47" fill-rule="nonzero"></path> </g> </g> -</svg> \ No newline at end of file +</svg> +======= +<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="463" height="204" viewBox="0 0 463 204"><defs><style>@import url(https://fonts.googleapis.com/css?family=Open+Sans:bold,italic,bolditalic%7CPT+Mono);@font-face{font-family:'PT Mono';font-weight:700;font-style:normal;src:local('PT MonoBold'),url(/font/PTMonoBold.woff2) format('woff2'),url(/font/PTMonoBold.woff) format('woff'),url(/font/PTMonoBold.ttf) format('truetype')}</style></defs><defs><path id="path-1" d="M0 0h80v28H0z"/><path id="path-3" d="M0 0h40v20H0z"/><path id="path-5" d="M0 0h40v20H0z"/><path id="path-7" d="M0 0h40v20H0z"/><path id="path-9" d="M0 0h40v20H0z"/><path id="path-11" d="M0 0h40v20H0z"/><path id="path-13" d="M0 0h40v20H0z"/><path id="path-15" d="M0 0h40v20H0z"/><path id="path-17" d="M0 0h40v20H0z"/><path id="path-19" d="M0 0h40v20H0z"/><path id="path-21" d="M0 0h40v20H0z"/><path id="path-23" d="M0 0h40v20H0z"/></defs><g id="garbage-collection" fill="none" fill-rule="evenodd" stroke="none" stroke-width="1"><g id="garbage-collection-4.svg"><g id="Rectangle-1-Clipped" transform="translate(106 8)"><mask id="mask-2" fill="#fff"><use xlink:href="#path-1"/></mask><g id="Rectangle-1" fill="#FBF2EC" stroke="#DBAF88" stroke-width="4" mask="url(#mask-2)"><path id="path-1" d="M0 0h80v28H0z"/></g></g><text id="<global>" fill="#AF6E24" fill-rule="nonzero" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="115" y="26"><global></tspan></text><g id="Rectangle-2-Clipped" transform="translate(360 99)"><mask id="mask-4" fill="#fff"><use xlink:href="#path-3"/></mask><g id="Rectangle-2" fill="#FBF2EC" stroke="#DBAF88" stroke-width="4" mask="url(#mask-4)"><path id="path-3" d="M0 0h40v20H0z"/></g></g><g id="Rectangle-2-Copy-2-Clipped" transform="translate(267 99)"><mask id="mask-6" fill="#fff"><use xlink:href="#path-5"/></mask><g id="Rectangle-2-Copy-2" fill="#FBF2EC" stroke="#DBAF88" stroke-width="4" mask="url(#mask-6)"><path id="path-5" d="M0 0h40v20H0z"/></g></g><g id="Rectangle-2-Copy-2-Clipped" transform="translate(126 79)"><mask id="mask-8" fill="#fff"><use xlink:href="#path-7"/></mask><g id="Rectangle-2-Copy-2" fill="#FBF2EC" stroke="#DBAF88" stroke-width="4" mask="url(#mask-8)"><path id="path-7" d="M0 0h40v20H0z"/></g></g><g id="Rectangle-2-Copy-Clipped" transform="translate(313 53)"><mask id="mask-10" fill="#fff"><use xlink:href="#path-9"/></mask><g id="Rectangle-2-Copy" fill="#FBF2EC" stroke="#DBAF88" stroke-width="4" mask="url(#mask-10)"><path id="path-9" d="M0 0h40v20H0z"/></g></g><g id="Rectangle-2-Copy-3-Clipped" transform="translate(176 129)"><mask id="mask-12" fill="#fff"><use xlink:href="#path-11"/></mask><g id="Rectangle-2-Copy-3" fill="#FBF2EC" stroke="#DBAF88" stroke-width="4" mask="url(#mask-12)"><path id="path-11" d="M0 0h40v20H0z"/></g></g><g id="Rectangle-2-Copy-8-Clipped" transform="translate(196 69)"><mask id="mask-14" fill="#fff"><use xlink:href="#path-13"/></mask><g id="Rectangle-2-Copy-8" fill="#FBF2EC" stroke="#DBAF88" stroke-width="4" mask="url(#mask-14)"><path id="path-13" d="M0 0h40v20H0z"/></g></g><g id="Rectangle-2-Copy-4-Clipped" transform="translate(128 139)"><mask id="mask-16" fill="#fff"><use xlink:href="#path-15"/></mask><g id="Rectangle-2-Copy-4" fill="#FBF2EC" stroke="#DBAF88" stroke-width="4" mask="url(#mask-16)"><path id="path-15" d="M0 0h40v20H0z"/></g></g><g id="Rectangle-2-Copy-5-Clipped" transform="translate(76 131)"><mask id="mask-18" fill="#fff"><use xlink:href="#path-17"/></mask><g id="Rectangle-2-Copy-5" fill="#FBF2EC" stroke="#DBAF88" stroke-width="4" mask="url(#mask-18)"><path id="path-17" d="M0 0h40v20H0z"/></g></g><g id="Rectangle-2-Copy-6-Clipped" transform="translate(76 71)"><mask id="mask-20" fill="#fff"><use xlink:href="#path-19"/></mask><g id="Rectangle-2-Copy-6" fill="#FBF2EC" stroke="#DBAF88" stroke-width="4" mask="url(#mask-20)"><path id="path-19" d="M0 0h40v20H0z"/></g></g><g id="Rectangle-2-Copy-7-Clipped" transform="translate(27 57)"><mask id="mask-22" fill="#fff"><use xlink:href="#path-21"/></mask><g id="Rectangle-2-Copy-7" fill="#FBF2EC" stroke="#DBAF88" stroke-width="4" mask="url(#mask-22)"><path id="path-21" d="M0 0h40v20H0z"/></g></g><path id="Line" fill="#C06334" stroke="#C06334" stroke-width="2" d="M148.5 40.5v31"/><path id="Line-decoration-1" fill="#C06334" stroke="#C06334" stroke-width="2" d="M148.5 71.5l3-10.8h-6z"/><path id="Line-Copy" fill="#C06334" stroke="#C06334" stroke-width="2" d="M148.5 105.5v24"/><path id="Line-Copy-decoration-1" fill="#C06334" stroke="#C06334" stroke-width="2" d="M148.5 129.5l3-10.8h-6z"/><path id="Line-2" fill="#C06334" stroke="#C06334" stroke-width="2" d="M319.5 77.5l-19 16"/><path id="Line-2-decoration-1" fill="#C06334" stroke="#C06334" stroke-width="2" d="M300.5 93.5l10.193-4.662-3.864-4.59z"/><path id="Line-2" fill="#C06334" stroke="#C06334" stroke-width="2" d="M127.5 47.5l-19 16"/><path id="Line-2-decoration-1" fill="#C06334" stroke="#C06334" stroke-width="2" d="M108.5 63.5l10.193-4.662-3.864-4.59z"/><path id="Line-2-Copy-2" fill="#C06334" stroke="#C06334" stroke-width="2" d="M97.5 42.5l-23 9"/><path id="Line-2-Copy-2-decoration-1" fill="#C06334" stroke="#C06334" stroke-width="2" d="M74.5 51.5l11.15-1.142-2.186-5.587z"/><path id="Line-2-Copy" fill="#C06334" stroke="#C06334" stroke-width="2" d="M133.5 107.5l-19 16"/><path id="Line-2-Copy-decoration-1" fill="#C06334" stroke="#C06334" stroke-width="2" d="M114.5 123.5l10.193-4.662-3.864-4.59z"/><path id="Line" fill="#C06334" stroke="#C06334" stroke-width="2" d="M313.071 109.5h39.354"/><path id="Line-decoration-1" fill="#C06334" stroke="#C06334" stroke-width="2" d="M352.425 109.5l-10.8-3v6z"/><path id="Line" fill="#C06334" stroke="#C06334" stroke-width="2" d="M170.5 107.5l18 15"/><path id="Line-decoration-1" fill="#C06334" stroke="#C06334" stroke-width="2" d="M188.5 122.5l-6.376-9.219-3.841 4.61z"/><path id="Line-Copy-6" fill="#C06334" stroke="#C06334" stroke-width="2" d="M202.5 154.5l18 15"/><path id="Line-Copy-6-decoration-1" fill="#C06334" stroke="#C06334" stroke-width="2" d="M220.5 169.5l-6.376-9.219-3.841 4.61z"/><path id="Line-Copy-5" fill="#C06334" stroke="#C06334" stroke-width="2" d="M170.5 87.5l20-7"/><path id="Line-Copy-5-decoration-1" fill="#C06334" stroke="#C06334" stroke-width="2" d="M190.5 80.5l-11.185.736 1.982 5.663z"/><path id="Line-Copy-4" fill="#C06334" stroke="#C06334" stroke-width="2" d="M209.5 120.5l14-22"/><path id="Line-Copy-4-decoration-1" fill="#C06334" stroke="#C06334" stroke-width="2" d="M223.5 98.5l-8.33 7.5 5.063 3.222z"/><path id="Line-Copy-3" fill="#C06334" stroke="#C06334" stroke-width="2" d="M46.5 82.5l32 40"/><path id="Line-Copy-3-decoration-1" fill="#C06334" stroke="#C06334" stroke-width="2" d="M78.5 122.5l-4.404-10.307-4.685 3.748z"/><g id="Group" fill="#478964" transform="rotate(-90 81 2)"><path id="Fill-72" d="M5.5 5.511l-.866-1.01.866-1.012V1L2.505 4.497H2.5l.003.003-.003.003h.005L5.5 8V5.511"/><path id="Fill-73" d="M4.5 1.098A3.406 3.406 0 001.098 4.5 3.406 3.406 0 004.5 7.902 3.406 3.406 0 007.902 4.5 3.406 3.406 0 004.5 1.098zM4.5 9A4.505 4.505 0 010 4.5C0 2.019 2.019 0 4.5 0S9 2.019 9 4.5 6.981 9 4.5 9z"/></g><g id="Group-Copy" fill="#478964" transform="rotate(-90 49.5 19.5)"><path id="Fill-72" d="M5.5 5.511l-.866-1.01.866-1.012V1L2.505 4.497H2.5l.003.003-.003.003h.005L5.5 8V5.511"/><path id="Fill-73" d="M4.5 1.098A3.406 3.406 0 001.098 4.5 3.406 3.406 0 004.5 7.902 3.406 3.406 0 007.902 4.5 3.406 3.406 0 004.5 1.098zM4.5 9A4.505 4.505 0 010 4.5C0 2.019 2.019 0 4.5 0S9 2.019 9 4.5 6.981 9 4.5 9z"/></g><g id="Group-Copy-2" fill="#478964" transform="rotate(-90 111.5 32.5)"><path id="Fill-72" d="M5.5 5.511l-.866-1.01.866-1.012V1L2.505 4.497H2.5l.003.003-.003.003h.005L5.5 8V5.511"/><path id="Fill-73" d="M4.5 1.098A3.406 3.406 0 001.098 4.5 3.406 3.406 0 004.5 7.902 3.406 3.406 0 007.902 4.5 3.406 3.406 0 004.5 1.098zM4.5 9A4.505 4.505 0 010 4.5C0 2.019 2.019 0 4.5 0S9 2.019 9 4.5 6.981 9 4.5 9z"/></g><g id="Group-Copy-3" fill="#478964" transform="rotate(-90 141 10)"><path id="Fill-72" d="M5.5 5.511l-.866-1.01.866-1.012V1L2.505 4.497H2.5l.003.003-.003.003h.005L5.5 8V5.511"/><path id="Fill-73" d="M4.5 1.098A3.406 3.406 0 001.098 4.5 3.406 3.406 0 004.5 7.902 3.406 3.406 0 007.902 4.5 3.406 3.406 0 004.5 1.098zM4.5 9A4.505 4.505 0 010 4.5C0 2.019 2.019 0 4.5 0S9 2.019 9 4.5 6.981 9 4.5 9z"/></g><g id="Group-Copy-4" fill="#478964" transform="rotate(-90 110 -19)"><path id="Fill-72" d="M5.5 5.511l-.866-1.01.866-1.012V1L2.505 4.497H2.5l.003.003-.003.003h.005L5.5 8V5.511"/><path id="Fill-73" d="M4.5 1.098A3.406 3.406 0 001.098 4.5 3.406 3.406 0 004.5 7.902 3.406 3.406 0 007.902 4.5 3.406 3.406 0 004.5 1.098zM4.5 9A4.505 4.505 0 010 4.5C0 2.019 2.019 0 4.5 0S9 2.019 9 4.5 6.981 9 4.5 9z"/></g><g id="Group-Copy-5" fill="#478964" transform="rotate(-90 160 -19)"><path id="Fill-72" d="M5.5 5.511l-.866-1.01.866-1.012V1L2.505 4.497H2.5l.003.003-.003.003h.005L5.5 8V5.511"/><path id="Fill-73" d="M4.5 1.098A3.406 3.406 0 001.098 4.5 3.406 3.406 0 004.5 7.902 3.406 3.406 0 007.902 4.5 3.406 3.406 0 004.5 1.098zM4.5 9A4.505 4.505 0 010 4.5C0 2.019 2.019 0 4.5 0S9 2.019 9 4.5 6.981 9 4.5 9z"/></g><g id="Rectangle-2-Copy-9-Clipped" transform="translate(219 177)"><mask id="mask-24" fill="#fff"><use xlink:href="#path-23"/></mask><g id="Rectangle-2-Copy-9" fill="#FBF2EC" stroke="#DBAF88" stroke-width="4" mask="url(#mask-24)"><path id="path-25" d="M0 0h40v20H0z"/></g></g><g id="Group-Copy-7" fill="#478964" transform="rotate(-90 205.5 -16.5)"><path id="Fill-72" d="M5.5 5.511l-.866-1.01.866-1.012V1L2.505 4.497H2.5l.003.003-.003.003h.005L5.5 8V5.511"/><path id="Fill-73" d="M4.5 1.098A3.406 3.406 0 001.098 4.5 3.406 3.406 0 004.5 7.902 3.406 3.406 0 007.902 4.5 3.406 3.406 0 004.5 1.098zM4.5 9A4.505 4.505 0 010 4.5C0 2.019 2.019 0 4.5 0S9 2.019 9 4.5 6.981 9 4.5 9z"/></g><g id="Group-Copy-6" fill="#478964" transform="rotate(-90 140 -59)"><path id="Fill-72" d="M5.5 5.511l-.866-1.01.866-1.012V1L2.505 4.497H2.5l.003.003-.003.003h.005L5.5 8V5.511"/><path id="Fill-73" d="M4.5 1.098A3.406 3.406 0 001.098 4.5 3.406 3.406 0 004.5 7.902 3.406 3.406 0 007.902 4.5 3.406 3.406 0 004.5 1.098zM4.5 9A4.505 4.505 0 010 4.5C0 2.019 2.019 0 4.5 0S9 2.019 9 4.5 6.981 9 4.5 9z"/></g><path id="Line-Copy-2" fill="#C06334" stroke="#C06334" stroke-width="2" d="M187.5 41.5l21 21"/><path id="Line-Copy-2-decoration-1" fill="#C06334" stroke="#C06334" stroke-width="2" d="M208.5 62.5l-5.515-9.758-4.243 4.243z"/><path id="Line-Copy" fill="#C06334" fill-rule="nonzero" d="M357.5 79.5l14.212 6.56-4.686 3.747 3.255 4.068.625.781-1.562 1.25-.625-.781-3.255-4.069-4.684 3.749L357.5 79.5z"/></g></g></svg> +>>>>>>> 540d753e90789205fc6e75c502f68382c87dea9b:1-js/04-object-basics/03-garbage-collection/garbage-collection-4.svg diff --git a/1-js/04-object-basics/02-garbage-collection/garbage-collection-5.svg b/1-js/04-object-basics/03-garbage-collection/garbage-collection-5.svg similarity index 64% rename from 1-js/04-object-basics/02-garbage-collection/garbage-collection-5.svg rename to 1-js/04-object-basics/03-garbage-collection/garbage-collection-5.svg index 150aa9265..906235438 100644 --- a/1-js/04-object-basics/02-garbage-collection/garbage-collection-5.svg +++ b/1-js/04-object-basics/03-garbage-collection/garbage-collection-5.svg @@ -1,3 +1,4 @@ +<<<<<<< HEAD:1-js/04-object-basics/02-garbage-collection/garbage-collection-5.svg <?xml version="1.0" encoding="UTF-8"?> <svg width="463px" height="204px" viewBox="0 0 463 204" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <!-- Generator: sketchtool 55.2 (78181) - https://sketchapp.com --> @@ -209,4 +210,7 @@ <path id="Line" d="M367.026599,89.8074683 L370.905564,94.6561738 L369.343826,95.9055639 L365.464862,91.0568584 L360.779649,94.8050287 L357.5,79.5 L371.711812,86.059298 L367.026599,89.8074683 Z" fill="#EE6B47" fill-rule="nonzero"></path> </g> </g> -</svg> \ No newline at end of file +</svg> +======= +<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="463" height="204" viewBox="0 0 463 204"><defs><style>@import url(https://fonts.googleapis.com/css?family=Open+Sans:bold,italic,bolditalic%7CPT+Mono);@font-face{font-family:'PT Mono';font-weight:700;font-style:normal;src:local('PT MonoBold'),url(/font/PTMonoBold.woff2) format('woff2'),url(/font/PTMonoBold.woff) format('woff'),url(/font/PTMonoBold.ttf) format('truetype')}</style></defs><defs><path id="path-1" d="M0 0h146v88H0z"/><path id="path-3" d="M0 0h80v28H0z"/><path id="path-5" d="M0 0h40v20H0z"/><path id="path-7" d="M0 0h40v20H0z"/><path id="path-9" d="M0 0h40v20H0z"/><path id="path-11" d="M0 0h40v20H0z"/><path id="path-13" d="M0 0h40v20H0z"/><path id="path-15" d="M0 0h40v20H0z"/><path id="path-17" d="M0 0h40v20H0z"/><path id="path-19" d="M0 0h40v20H0z"/><path id="path-21" d="M0 0h40v20H0z"/><path id="path-23" d="M0 0h40v20H0z"/><path id="path-25" d="M0 0h40v20H0z"/></defs><g id="garbage-collection" fill="none" fill-rule="evenodd" stroke="none" stroke-width="1"><g id="garbage-collection-5.svg"><g id="Rectangle-5-Clipped" transform="translate(260 46)"><mask id="mask-2" fill="#fff"><use xlink:href="#path-1"/></mask><g id="Rectangle-5" stroke="#A7333A" stroke-width="4" mask="url(#mask-2)"><path id="path-23" d="M0 0h146v88H0z"/></g></g><g id="Rectangle-1-Clipped" transform="translate(106 8)"><mask id="mask-4" fill="#fff"><use xlink:href="#path-3"/></mask><g id="Rectangle-1" fill="#FBF2EC" stroke="#DBAF88" stroke-width="4" mask="url(#mask-4)"><path id="path-1" d="M0 0h80v28H0z"/></g></g><text id="<global>" fill="#AF6E24" fill-rule="nonzero" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="115" y="26"><global></tspan></text><g id="Rectangle-2-Clipped" transform="translate(360 99)"><mask id="mask-6" fill="#fff"><use xlink:href="#path-5"/></mask><g id="Rectangle-2" fill="#FBF2EC" stroke="#DBAF88" stroke-width="4" mask="url(#mask-6)"><path id="path-3" d="M0 0h40v20H0z"/></g></g><g id="Rectangle-2-Copy-2-Clipped" transform="translate(267 99)"><mask id="mask-8" fill="#fff"><use xlink:href="#path-7"/></mask><g id="Rectangle-2-Copy-2" fill="#FBF2EC" stroke="#DBAF88" stroke-width="4" mask="url(#mask-8)"><path id="path-5" d="M0 0h40v20H0z"/></g></g><g id="Rectangle-2-Copy-2-Clipped" transform="translate(126 79)"><mask id="mask-10" fill="#fff"><use xlink:href="#path-9"/></mask><g id="Rectangle-2-Copy-2" fill="#FBF2EC" stroke="#DBAF88" stroke-width="4" mask="url(#mask-10)"><path id="path-7" d="M0 0h40v20H0z"/></g></g><g id="Rectangle-2-Copy-Clipped" transform="translate(313 53)"><mask id="mask-12" fill="#fff"><use xlink:href="#path-11"/></mask><g id="Rectangle-2-Copy" fill="#FBF2EC" stroke="#DBAF88" stroke-width="4" mask="url(#mask-12)"><path id="path-9" d="M0 0h40v20H0z"/></g></g><g id="Rectangle-2-Copy-3-Clipped" transform="translate(176 129)"><mask id="mask-14" fill="#fff"><use xlink:href="#path-13"/></mask><g id="Rectangle-2-Copy-3" fill="#FBF2EC" stroke="#DBAF88" stroke-width="4" mask="url(#mask-14)"><path id="path-11" d="M0 0h40v20H0z"/></g></g><g id="Rectangle-2-Copy-8-Clipped" transform="translate(196 69)"><mask id="mask-16" fill="#fff"><use xlink:href="#path-15"/></mask><g id="Rectangle-2-Copy-8" fill="#FBF2EC" stroke="#DBAF88" stroke-width="4" mask="url(#mask-16)"><path id="path-13" d="M0 0h40v20H0z"/></g></g><g id="Rectangle-2-Copy-4-Clipped" transform="translate(128 139)"><mask id="mask-18" fill="#fff"><use xlink:href="#path-17"/></mask><g id="Rectangle-2-Copy-4" fill="#FBF2EC" stroke="#DBAF88" stroke-width="4" mask="url(#mask-18)"><path id="path-15" d="M0 0h40v20H0z"/></g></g><g id="Rectangle-2-Copy-5-Clipped" transform="translate(76 131)"><mask id="mask-20" fill="#fff"><use xlink:href="#path-19"/></mask><g id="Rectangle-2-Copy-5" fill="#FBF2EC" stroke="#DBAF88" stroke-width="4" mask="url(#mask-20)"><path id="path-17" d="M0 0h40v20H0z"/></g></g><g id="Rectangle-2-Copy-6-Clipped" transform="translate(76 71)"><mask id="mask-22" fill="#fff"><use xlink:href="#path-21"/></mask><g id="Rectangle-2-Copy-6" fill="#FBF2EC" stroke="#DBAF88" stroke-width="4" mask="url(#mask-22)"><path id="path-19" d="M0 0h40v20H0z"/></g></g><g id="Rectangle-2-Copy-7-Clipped" transform="translate(27 57)"><mask id="mask-24" fill="#fff"><use xlink:href="#path-23"/></mask><g id="Rectangle-2-Copy-7" fill="#FBF2EC" stroke="#DBAF88" stroke-width="4" mask="url(#mask-24)"><path id="path-21" d="M0 0h40v20H0z"/></g></g><path id="Line" fill="#C06334" stroke="#C06334" stroke-width="2" d="M148.5 40.5v31"/><path id="Line-decoration-1" fill="#C06334" stroke="#C06334" stroke-width="2" d="M148.5 71.5l3-10.8h-6z"/><path id="Line-Copy" fill="#C06334" stroke="#C06334" stroke-width="2" d="M148.5 105.5v24"/><path id="Line-Copy-decoration-1" fill="#C06334" stroke="#C06334" stroke-width="2" d="M148.5 129.5l3-10.8h-6z"/><path id="Line-2" fill="#C06334" stroke="#C06334" stroke-width="2" d="M319.5 77.5l-19 16"/><path id="Line-2-decoration-1" fill="#C06334" stroke="#C06334" stroke-width="2" d="M300.5 93.5l10.193-4.662-3.864-4.59z"/><path id="Line-2" fill="#C06334" stroke="#C06334" stroke-width="2" d="M127.5 47.5l-19 16"/><path id="Line-2-decoration-1" fill="#C06334" stroke="#C06334" stroke-width="2" d="M108.5 63.5l10.193-4.662-3.864-4.59z"/><path id="Line-2-Copy-2" fill="#C06334" stroke="#C06334" stroke-width="2" d="M97.5 42.5l-23 9"/><path id="Line-2-Copy-2-decoration-1" fill="#C06334" stroke="#C06334" stroke-width="2" d="M74.5 51.5l11.15-1.142-2.186-5.587z"/><path id="Line-2-Copy" fill="#C06334" stroke="#C06334" stroke-width="2" d="M133.5 107.5l-19 16"/><path id="Line-2-Copy-decoration-1" fill="#C06334" stroke="#C06334" stroke-width="2" d="M114.5 123.5l10.193-4.662-3.864-4.59z"/><path id="Line" fill="#C06334" stroke="#C06334" stroke-width="2" d="M313.071 109.5h39.354"/><path id="Line-decoration-1" fill="#C06334" stroke="#C06334" stroke-width="2" d="M352.425 109.5l-10.8-3v6z"/><path id="Line" fill="#C06334" stroke="#C06334" stroke-width="2" d="M170.5 107.5l18 15"/><path id="Line-decoration-1" fill="#C06334" stroke="#C06334" stroke-width="2" d="M188.5 122.5l-6.376-9.219-3.841 4.61z"/><path id="Line-Copy-6" fill="#C06334" stroke="#C06334" stroke-width="2" d="M202.5 154.5l18 15"/><path id="Line-Copy-6-decoration-1" fill="#C06334" stroke="#C06334" stroke-width="2" d="M220.5 169.5l-6.376-9.219-3.841 4.61z"/><path id="Line-Copy-5" fill="#C06334" stroke="#C06334" stroke-width="2" d="M170.5 87.5l20-7"/><path id="Line-Copy-5-decoration-1" fill="#C06334" stroke="#C06334" stroke-width="2" d="M190.5 80.5l-11.185.736 1.982 5.663z"/><path id="Line-Copy-4" fill="#C06334" stroke="#C06334" stroke-width="2" d="M209.5 120.5l14-22"/><path id="Line-Copy-4-decoration-1" fill="#C06334" stroke="#C06334" stroke-width="2" d="M223.5 98.5l-8.33 7.5 5.063 3.222z"/><path id="Line-Copy-3" fill="#C06334" stroke="#C06334" stroke-width="2" d="M46.5 82.5l32 40"/><path id="Line-Copy-3-decoration-1" fill="#C06334" stroke="#C06334" stroke-width="2" d="M78.5 122.5l-4.404-10.307-4.685 3.748z"/><g id="noun_48910_cc" transform="translate(261 5)"><path id="Shape" d="M17.503 1.75h-5.006a.341.341 0 00-.34.342v1.125h5.686V2.092a.341.341 0 00-.34-.341z"/><path id="Shape" fill="#A7333A" d="M28.364 3.217H19.59V2.092A2.09 2.09 0 0017.503 0h-5.006c-1.15 0-2.087.938-2.087 2.092v1.125H1.637c-.7 0-1.266.568-1.266 1.269v.09c0 .7.567 1.267 1.266 1.267h26.727c.699 0 1.266-.567 1.266-1.268v-.09c0-.7-.567-1.268-1.266-1.268zm-10.52 0h-5.687V2.092c0-.188.153-.341.34-.341h5.006a.34.34 0 01.34.34v1.126zM26.054 6.281H3.728c-1.298 0-2.35-.224-2.35 1.077L3.14 33.196c0 1.3 1.052 2.409 2.35 2.409h18.802c1.298 0 2.35-1.11 2.35-2.409l1.763-25.838c0-1.301-1.053-1.077-2.35-1.077zM9.637 32.193c-.377.012-.691-.261-.704-.612l-.694-19.917c-.012-.351.283-.647.66-.66.376-.013.69.261.703.613l.694 19.916c.013.351-.283.647-.659.66zm6.044-.63c0 .352-.306.637-.682.637-.377 0-.682-.286-.682-.637V11.634c0-.351.305-.636.682-.636.376 0 .682.285.682.636v19.93zm5.384.018c-.012.351-.327.625-.704.612-.376-.013-.672-.308-.66-.66l.695-19.916c.012-.352.326-.626.703-.613.377.014.672.309.66.66l-.694 19.917z"/></g><text id="unreachables" fill="#AF6E24" fill-rule="nonzero" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="296" y="29">unreachables</tspan></text><g id="Group" fill="#478964" transform="rotate(-90 81 2)"><path id="Fill-72" d="M5.5 5.511l-.866-1.01.866-1.012V1L2.505 4.497H2.5l.003.003-.003.003h.005L5.5 8V5.511"/><path id="Fill-73" d="M4.5 1.098A3.406 3.406 0 001.098 4.5 3.406 3.406 0 004.5 7.902 3.406 3.406 0 007.902 4.5 3.406 3.406 0 004.5 1.098zM4.5 9A4.505 4.505 0 010 4.5C0 2.019 2.019 0 4.5 0S9 2.019 9 4.5 6.981 9 4.5 9z"/></g><g id="Group-Copy" fill="#478964" transform="rotate(-90 49.5 19.5)"><path id="Fill-72" d="M5.5 5.511l-.866-1.01.866-1.012V1L2.505 4.497H2.5l.003.003-.003.003h.005L5.5 8V5.511"/><path id="Fill-73" d="M4.5 1.098A3.406 3.406 0 001.098 4.5 3.406 3.406 0 004.5 7.902 3.406 3.406 0 007.902 4.5 3.406 3.406 0 004.5 1.098zM4.5 9A4.505 4.505 0 010 4.5C0 2.019 2.019 0 4.5 0S9 2.019 9 4.5 6.981 9 4.5 9z"/></g><g id="Group-Copy-2" fill="#478964" transform="rotate(-90 111.5 32.5)"><path id="Fill-72" d="M5.5 5.511l-.866-1.01.866-1.012V1L2.505 4.497H2.5l.003.003-.003.003h.005L5.5 8V5.511"/><path id="Fill-73" d="M4.5 1.098A3.406 3.406 0 001.098 4.5 3.406 3.406 0 004.5 7.902 3.406 3.406 0 007.902 4.5 3.406 3.406 0 004.5 1.098zM4.5 9A4.505 4.505 0 010 4.5C0 2.019 2.019 0 4.5 0S9 2.019 9 4.5 6.981 9 4.5 9z"/></g><g id="Group-Copy-3" fill="#478964" transform="rotate(-90 141 10)"><path id="Fill-72" d="M5.5 5.511l-.866-1.01.866-1.012V1L2.505 4.497H2.5l.003.003-.003.003h.005L5.5 8V5.511"/><path id="Fill-73" d="M4.5 1.098A3.406 3.406 0 001.098 4.5 3.406 3.406 0 004.5 7.902 3.406 3.406 0 007.902 4.5 3.406 3.406 0 004.5 1.098zM4.5 9A4.505 4.505 0 010 4.5C0 2.019 2.019 0 4.5 0S9 2.019 9 4.5 6.981 9 4.5 9z"/></g><g id="Group-Copy-4" fill="#478964" transform="rotate(-90 110 -19)"><path id="Fill-72" d="M5.5 5.511l-.866-1.01.866-1.012V1L2.505 4.497H2.5l.003.003-.003.003h.005L5.5 8V5.511"/><path id="Fill-73" d="M4.5 1.098A3.406 3.406 0 001.098 4.5 3.406 3.406 0 004.5 7.902 3.406 3.406 0 007.902 4.5 3.406 3.406 0 004.5 1.098zM4.5 9A4.505 4.505 0 010 4.5C0 2.019 2.019 0 4.5 0S9 2.019 9 4.5 6.981 9 4.5 9z"/></g><g id="Group-Copy-5" fill="#478964" transform="rotate(-90 160 -19)"><path id="Fill-72" d="M5.5 5.511l-.866-1.01.866-1.012V1L2.505 4.497H2.5l.003.003-.003.003h.005L5.5 8V5.511"/><path id="Fill-73" d="M4.5 1.098A3.406 3.406 0 001.098 4.5 3.406 3.406 0 004.5 7.902 3.406 3.406 0 007.902 4.5 3.406 3.406 0 004.5 1.098zM4.5 9A4.505 4.505 0 010 4.5C0 2.019 2.019 0 4.5 0S9 2.019 9 4.5 6.981 9 4.5 9z"/></g><g id="Rectangle-2-Copy-9-Clipped" transform="translate(219 177)"><mask id="mask-26" fill="#fff"><use xlink:href="#path-25"/></mask><g id="Rectangle-2-Copy-9" fill="#FBF2EC" stroke="#DBAF88" stroke-width="4" mask="url(#mask-26)"><path id="path-25" d="M0 0h40v20H0z"/></g></g><g id="Group-Copy-7" fill="#478964" transform="rotate(-90 205.5 -16.5)"><path id="Fill-72" d="M5.5 5.511l-.866-1.01.866-1.012V1L2.505 4.497H2.5l.003.003-.003.003h.005L5.5 8V5.511"/><path id="Fill-73" d="M4.5 1.098A3.406 3.406 0 001.098 4.5 3.406 3.406 0 004.5 7.902 3.406 3.406 0 007.902 4.5 3.406 3.406 0 004.5 1.098zM4.5 9A4.505 4.505 0 010 4.5C0 2.019 2.019 0 4.5 0S9 2.019 9 4.5 6.981 9 4.5 9z"/></g><g id="Group-Copy-6" fill="#478964" transform="rotate(-90 140 -59)"><path id="Fill-72" d="M5.5 5.511l-.866-1.01.866-1.012V1L2.505 4.497H2.5l.003.003-.003.003h.005L5.5 8V5.511"/><path id="Fill-73" d="M4.5 1.098A3.406 3.406 0 001.098 4.5 3.406 3.406 0 004.5 7.902 3.406 3.406 0 007.902 4.5 3.406 3.406 0 004.5 1.098zM4.5 9A4.505 4.505 0 010 4.5C0 2.019 2.019 0 4.5 0S9 2.019 9 4.5 6.981 9 4.5 9z"/></g><path id="Line-Copy-2" fill="#C06334" stroke="#C06334" stroke-width="2" d="M187.5 41.5l21 21"/><path id="Line-Copy-2-decoration-1" fill="#C06334" stroke="#C06334" stroke-width="2" d="M208.5 62.5l-5.515-9.758-4.243 4.243z"/><path id="Line" fill="#C06334" fill-rule="nonzero" d="M357.5 79.5l14.212 6.56-4.686 3.747 3.255 4.068.625.781-1.562 1.25-.625-.781-3.255-4.069-4.684 3.749L357.5 79.5z"/></g></g></svg> +>>>>>>> 540d753e90789205fc6e75c502f68382c87dea9b:1-js/04-object-basics/03-garbage-collection/garbage-collection-5.svg diff --git a/1-js/04-object-basics/02-garbage-collection/memory-user-john-admin.svg b/1-js/04-object-basics/03-garbage-collection/memory-user-john-admin.svg similarity index 51% rename from 1-js/04-object-basics/02-garbage-collection/memory-user-john-admin.svg rename to 1-js/04-object-basics/03-garbage-collection/memory-user-john-admin.svg index bc7a23d33..948f55005 100644 --- a/1-js/04-object-basics/02-garbage-collection/memory-user-john-admin.svg +++ b/1-js/04-object-basics/03-garbage-collection/memory-user-john-admin.svg @@ -1,3 +1,4 @@ +<<<<<<< HEAD:1-js/04-object-basics/02-garbage-collection/memory-user-john-admin.svg <?xml version="1.0" encoding="UTF-8"?> <svg width="144px" height="159px" viewBox="0 0 144 159" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <!-- Generator: sketchtool 55.2 (78181) - https://sketchapp.com --> @@ -26,4 +27,7 @@ </text> </g> </g> -</svg> \ No newline at end of file +</svg> +======= +<svg xmlns="http://www.w3.org/2000/svg" width="144" height="159" viewBox="0 0 144 159"><defs><style>@import url(https://fonts.googleapis.com/css?family=Open+Sans:bold,italic,bolditalic%7CPT+Mono);@font-face{font-family:'PT Mono';font-weight:700;font-style:normal;src:local('PT MonoBold'),url(/font/PTMonoBold.woff2) format('woff2'),url(/font/PTMonoBold.woff) format('woff'),url(/font/PTMonoBold.ttf) format('truetype')}</style></defs><g id="garbage-collection" fill="none" fill-rule="evenodd" stroke="none" stroke-width="1"><g id="memory-user-john-admin.svg"><text id="user" fill="#AF6E24" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="12" y="67">user</tspan></text><path id="Rectangle-4" fill="#FBF2EC" stroke="#DBAF88" stroke-width="2" d="M16 93h118v48H16z"/><text id="name:-"John"" fill="#AF6E24" font-family="PTMono-Regular, PT Mono" font-size="12" font-weight="normal"><tspan x="30" y="130">name: "John"</tspan></text><text id="Object" fill="#AF6E24" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="44" y="110">Object</tspan></text><path id="Line" fill="#C06334" fill-rule="nonzero" d="M55.5 47.5v18h6l-7 14-7-14h6v-18h2z"/><text id="admin" fill="#AF6E24" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="92" y="67">admin</tspan></text><path id="Line-Copy" fill="#C06334" fill-rule="nonzero" d="M83.5 47.5v18h6l-7 14-7-14h6v-18h2z"/><path id="Rectangle-1" fill="#FBF2EC" stroke="#DBAF88" stroke-width="2" d="M27 16h93v26H27z"/><text id="<global>" fill="#AF6E24" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="43" y="33"><global></tspan></text></g></g></svg> +>>>>>>> 540d753e90789205fc6e75c502f68382c87dea9b:1-js/04-object-basics/03-garbage-collection/memory-user-john-admin.svg diff --git a/1-js/04-object-basics/02-garbage-collection/memory-user-john-lost.svg b/1-js/04-object-basics/03-garbage-collection/memory-user-john-lost.svg similarity index 61% rename from 1-js/04-object-basics/02-garbage-collection/memory-user-john-lost.svg rename to 1-js/04-object-basics/03-garbage-collection/memory-user-john-lost.svg index 78009e310..d4b301fcc 100644 --- a/1-js/04-object-basics/02-garbage-collection/memory-user-john-lost.svg +++ b/1-js/04-object-basics/03-garbage-collection/memory-user-john-lost.svg @@ -1,3 +1,4 @@ +<<<<<<< HEAD:1-js/04-object-basics/02-garbage-collection/memory-user-john-lost.svg <?xml version="1.0" encoding="UTF-8"?> <svg width="225px" height="159px" viewBox="0 0 225 159" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <!-- Generator: sketchtool 55.2 (78181) - https://sketchapp.com --> @@ -27,4 +28,7 @@ </g> </g> </g> -</svg> \ No newline at end of file +</svg> +======= +<svg xmlns="http://www.w3.org/2000/svg" width="225" height="159" viewBox="0 0 225 159"><defs><style>@import url(https://fonts.googleapis.com/css?family=Open+Sans:bold,italic,bolditalic%7CPT+Mono);@font-face{font-family:'PT Mono';font-weight:700;font-style:normal;src:local('PT MonoBold'),url(/font/PTMonoBold.woff2) format('woff2'),url(/font/PTMonoBold.woff) format('woff'),url(/font/PTMonoBold.ttf) format('truetype')}</style></defs><g id="garbage-collection" fill="none" fill-rule="evenodd" stroke="none" stroke-width="1"><g id="memory-user-john-lost.svg"><path id="Rectangle-4" fill="#FBF2EC" stroke="#DBAF88" stroke-width="2" d="M61 89h118v48H61z"/><text id="name:-"John"" fill="#AF6E24" font-family="PTMono-Regular, PT Mono" font-size="12" font-weight="normal"><tspan x="83" y="126">name: "John"</tspan></text><text id="Object-3" fill="#AF6E24" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="97" y="106">Object</tspan></text><path id="Rectangle-1" fill="#FBF2EC" stroke="#DBAF88" stroke-width="2" d="M65 4h104v42H65z"/><text id="user:-null" fill="#AF6E24" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="79" y="40">user: null</tspan></text><text id="<global>" fill="#AF6E24" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="86" y="23"><global></tspan></text><path id="Rectangle-5" stroke="#A7333A" stroke-width="2" d="M47 69h154v86H47z"/><g id="noun_48910_cc" transform="translate(8 65)"><path id="Shape" d="M17.503 1.75h-5.006a.341.341 0 00-.34.342v1.125h5.686V2.092a.341.341 0 00-.34-.341z"/><path id="Shape" fill="#A7333A" d="M28.364 3.217H19.59V2.092A2.09 2.09 0 0017.503 0h-5.006c-1.15 0-2.087.938-2.087 2.092v1.125H1.637c-.7 0-1.266.568-1.266 1.269v.09c0 .7.567 1.267 1.266 1.267h26.727c.699 0 1.266-.567 1.266-1.268v-.09c0-.7-.567-1.268-1.266-1.268zm-10.52 0h-5.687V2.092c0-.188.153-.341.34-.341h5.006a.34.34 0 01.34.34v1.126zM26.054 6.281H3.728c-1.298 0-2.35-.224-2.35 1.077L3.14 33.196c0 1.3 1.052 2.409 2.35 2.409h18.802c1.298 0 2.35-1.11 2.35-2.409l1.763-25.838c0-1.301-1.053-1.077-2.35-1.077zM9.637 32.193c-.377.012-.691-.261-.704-.612l-.694-19.917c-.012-.351.283-.647.66-.66.376-.013.69.261.703.613l.694 19.916c.013.351-.283.647-.659.66zm6.044-.63c0 .352-.306.637-.682.637-.377 0-.682-.286-.682-.637V11.634c0-.351.305-.636.682-.636.376 0 .682.285.682.636v19.93zm5.384.018c-.012.351-.327.625-.704.612-.376-.013-.672-.308-.66-.66l.695-19.916c.012-.352.326-.626.703-.613.377.014.672.309.66.66l-.694 19.917z"/></g></g></g></svg> +>>>>>>> 540d753e90789205fc6e75c502f68382c87dea9b:1-js/04-object-basics/03-garbage-collection/memory-user-john-lost.svg diff --git a/1-js/04-object-basics/03-garbage-collection/memory-user-john.svg b/1-js/04-object-basics/03-garbage-collection/memory-user-john.svg new file mode 100644 index 000000000..ef75846a7 --- /dev/null +++ b/1-js/04-object-basics/03-garbage-collection/memory-user-john.svg @@ -0,0 +1,29 @@ +<<<<<<< HEAD:1-js/04-object-basics/02-garbage-collection/memory-user-john.svg +<?xml version="1.0" encoding="UTF-8"?> +<svg width="144px" height="150px" viewBox="0 0 144 150" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> + <!-- Generator: sketchtool 55.2 (78181) - https://sketchapp.com --> + <title>memory-user-john.svg</title> + <desc>Created with sketchtool.</desc> + <g id="garbage-collection" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd"> + <g id="memory-user-john.svg"> + <text id="user" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal" fill="#8A704D"> + <tspan x="31" y="69">user</tspan> + </text> + <rect id="Rectangle-4" stroke="#BCA68E" stroke-width="2" fill="#FFF9EB" x="16" y="95" width="118" height="48"></rect> + <text id="name:-"John"" font-family="PTMono-Regular, PT Mono" font-size="12" font-weight="normal" fill="#8A704D"> + <tspan x="32" y="132">name: "John"</tspan> + </text> + <text id="Object-3" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal" fill="#8A704D"> + <tspan x="46" y="112">Object</tspan> + </text> + <path id="Line" d="M73.5,67.5 L73.5,49.5 L75.5,49.5 L75.5,67.5 L81.5,67.5 L74.5,81.5 L67.5,67.5 L73.5,67.5 Z" fill="#EE6B47" fill-rule="nonzero"></path> + <rect id="Rectangle-1" stroke="#E8C48E" stroke-width="2" fill="#FFF9EB" x="27" y="12" width="93" height="26"></rect> + <text id="<global>" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal" fill="#8A704D"> + <tspan x="43" y="29"><global></tspan> + </text> + </g> + </g> +</svg> +======= +<svg xmlns="http://www.w3.org/2000/svg" width="144" height="150" viewBox="0 0 144 150"><defs><style>@import url(https://fonts.googleapis.com/css?family=Open+Sans:bold,italic,bolditalic%7CPT+Mono);@font-face{font-family:'PT Mono';font-weight:700;font-style:normal;src:local('PT MonoBold'),url(/font/PTMonoBold.woff2) format('woff2'),url(/font/PTMonoBold.woff) format('woff'),url(/font/PTMonoBold.ttf) format('truetype')}</style></defs><g id="garbage-collection" fill="none" fill-rule="evenodd" stroke="none" stroke-width="1"><g id="memory-user-john.svg"><text id="user" fill="#AF6E24" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="31" y="69">user</tspan></text><path id="Rectangle-4" fill="#FBF2EC" stroke="#DBAF88" stroke-width="2" d="M16 95h118v48H16z"/><text id="name:-"John"" fill="#AF6E24" font-family="PTMono-Regular, PT Mono" font-size="12" font-weight="normal"><tspan x="32" y="132">name: "John"</tspan></text><text id="Object-3" fill="#AF6E24" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="46" y="112">Object</tspan></text><path id="Line" fill="#C06334" fill-rule="nonzero" d="M75.5 49.5v18h6l-7 14-7-14h6v-18h2z"/><path id="Rectangle-1" fill="#FBF2EC" stroke="#DBAF88" stroke-width="2" d="M27 12h93v26H27z"/><text id="<global>" fill="#AF6E24" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="43" y="29"><global></tspan></text></g></g></svg> +>>>>>>> 540d753e90789205fc6e75c502f68382c87dea9b:1-js/04-object-basics/03-garbage-collection/memory-user-john.svg diff --git a/1-js/04-object-basics/04-object-methods/4-object-property-this/solution.md b/1-js/04-object-basics/04-object-methods/4-object-property-this/solution.md index f5773ec2c..f33c9310e 100644 --- a/1-js/04-object-basics/04-object-methods/4-object-property-this/solution.md +++ b/1-js/04-object-basics/04-object-methods/4-object-property-this/solution.md @@ -7,21 +7,32 @@ function makeUser() { name: "John", ref: this }; -}; +} let user = makeUser(); alert( user.ref.name ); // Error: Cannot read property 'name' of undefined ``` -That's because rules that set `this` do not look at object literals. +That's because rules that set `this` do not look at object definition. Only the moment of call matters. -Here the value of `this` inside `makeUser()` is `undefined`, because it is called as a function, not as a method. +Here the value of `this` inside `makeUser()` is `undefined`, because it is called as a function, not as a method with "dot" syntax. -And the object literal itself has no effect on `this`. The value of `this` is one for the whole function, code blocks and object literals do not affect it. +The value of `this` is one for the whole function, code blocks and object literals do not affect it. So `ref: this` actually takes current `this` of the function. +We can rewrite the function and return the same `this` with `undefined` value: + +```js run +function makeUser(){ + return this; // this time there's no object literal +} + +alert( makeUser().name ); // Error: Cannot read property 'name' of undefined +``` +As you can see the result of `alert( makeUser().name )` is the same as the result of `alert( user.ref.name )` from the previous example. + Here's the opposite case: ```js run @@ -34,7 +45,7 @@ function makeUser() { } */!* }; -}; +} let user = makeUser(); @@ -42,5 +53,3 @@ alert( user.ref().name ); // John ``` Now it works, because `user.ref()` is a method. And the value of `this` is set to the object before dot `.`. - - diff --git a/1-js/04-object-basics/04-object-methods/4-object-property-this/task.md b/1-js/04-object-basics/04-object-methods/4-object-property-this/task.md index 4784b082c..c6f8f9658 100644 --- a/1-js/04-object-basics/04-object-methods/4-object-property-this/task.md +++ b/1-js/04-object-basics/04-object-methods/4-object-property-this/task.md @@ -14,7 +14,7 @@ function makeUser() { name: "John", ref: this }; -}; +} let user = makeUser(); diff --git a/1-js/04-object-basics/04-object-methods/7-calculator/_js.view/test.js b/1-js/04-object-basics/04-object-methods/7-calculator/_js.view/test.js index 1f71eda4c..4decb76dc 100644 --- a/1-js/04-object-basics/04-object-methods/7-calculator/_js.view/test.js +++ b/1-js/04-object-basics/04-object-methods/7-calculator/_js.view/test.js @@ -15,6 +15,11 @@ describe("calculator", function() { afterEach(function() { prompt.restore(); }); + + it('the read get two values and saves them as object properties', function () { + assert.equal(calculator.a, 2); + assert.equal(calculator.b, 3); + }); it("the sum is 5", function() { assert.equal(calculator.sum(), 5); diff --git a/1-js/04-object-basics/04-object-methods/7-calculator/task.md b/1-js/04-object-basics/04-object-methods/7-calculator/task.md index aa22608ec..82d0da030 100644 --- a/1-js/04-object-basics/04-object-methods/7-calculator/task.md +++ b/1-js/04-object-basics/04-object-methods/7-calculator/task.md @@ -6,7 +6,7 @@ importance: 5 Create an object `calculator` with three methods: -- `read()` prompts for two values and saves them as object properties. +- `read()` prompts for two values and saves them as object properties with names `a` and `b` respectively. - `sum()` returns the sum of saved values. - `mul()` multiplies saved values and returns the result. @@ -21,4 +21,3 @@ alert( calculator.mul() ); ``` [demo] - diff --git a/1-js/04-object-basics/04-object-methods/8-chain-calls/_js.view/solution.js b/1-js/04-object-basics/04-object-methods/8-chain-calls/_js.view/solution.js index e98fe6410..a35c009cc 100644 --- a/1-js/04-object-basics/04-object-methods/8-chain-calls/_js.view/solution.js +++ b/1-js/04-object-basics/04-object-methods/8-chain-calls/_js.view/solution.js @@ -11,5 +11,6 @@ let ladder = { }, showStep: function() { alert(this.step); + return this; } }; \ No newline at end of file diff --git a/1-js/04-object-basics/04-object-methods/8-chain-calls/_js.view/test.js b/1-js/04-object-basics/04-object-methods/8-chain-calls/_js.view/test.js index a2b17fcc4..b4f2459b7 100644 --- a/1-js/04-object-basics/04-object-methods/8-chain-calls/_js.view/test.js +++ b/1-js/04-object-basics/04-object-methods/8-chain-calls/_js.view/test.js @@ -32,6 +32,14 @@ describe('Ladder', function() { it('down().up().up().up() ', function() { assert.equal(ladder.down().up().up().up().step, 2); }); + + it('showStep() should return this', function() { + assert.equal(ladder.showStep(), ladder); + }); + + it('up().up().down().showStep().down().showStep()', function () { + assert.equal(ladder.up().up().down().showStep().down().showStep().step, 0) + }); after(function() { ladder.step = 0; diff --git a/1-js/04-object-basics/04-object-methods/8-chain-calls/solution.md b/1-js/04-object-basics/04-object-methods/8-chain-calls/solution.md index 2b47873fc..f215461dd 100644 --- a/1-js/04-object-basics/04-object-methods/8-chain-calls/solution.md +++ b/1-js/04-object-basics/04-object-methods/8-chain-calls/solution.md @@ -21,9 +21,9 @@ let ladder = { return this; */!* } -} +}; -ladder.up().up().down().up().down().showStep(); // 1 +ladder.up().up().down().showStep().down().showStep(); // shows 1 then 0 ``` We also can write a single call per line. For long chains it's more readable: @@ -33,7 +33,7 @@ ladder .up() .up() .down() - .up() + .showStep() // 1 .down() - .showStep(); // 1 + .showStep(); // 0 ``` diff --git a/1-js/04-object-basics/04-object-methods/8-chain-calls/task.md b/1-js/04-object-basics/04-object-methods/8-chain-calls/task.md index eca9f4e92..7d2ef8c15 100644 --- a/1-js/04-object-basics/04-object-methods/8-chain-calls/task.md +++ b/1-js/04-object-basics/04-object-methods/8-chain-calls/task.md @@ -4,7 +4,7 @@ importance: 2 # Chaining -There's a `ladder` object that allows to go up and down: +There's a `ladder` object that allows you to go up and down: ```js let ladder = { @@ -21,19 +21,21 @@ let ladder = { }; ``` -Now, if we need to make several calls in sequence, can do it like this: +Now, if we need to make several calls in sequence, we can do it like this: ```js ladder.up(); ladder.up(); ladder.down(); ladder.showStep(); // 1 +ladder.down(); +ladder.showStep(); // 0 ``` -Modify the code of `up`, `down` and `showStep` to make the calls chainable, like this: +Modify the code of `up`, `down`, and `showStep` to make the calls chainable, like this: ```js -ladder.up().up().down().showStep(); // 1 +ladder.up().up().down().showStep().down().showStep(); // shows 1 then 0 ``` -Such approach is widely used across JavaScript libraries. +Such an approach is widely used across JavaScript libraries. diff --git a/1-js/04-object-basics/04-object-methods/article.md b/1-js/04-object-basics/04-object-methods/article.md index 0418adee0..cea2b6a70 100644 --- a/1-js/04-object-basics/04-object-methods/article.md +++ b/1-js/04-object-basics/04-object-methods/article.md @@ -15,7 +15,7 @@ Actions are represented in JavaScript by functions in properties. ## Method examples -For the start, let's teach the `user` to say hello: +For a start, let's teach the `user` to say hello: ```js run let user = { @@ -32,11 +32,11 @@ user.sayHi = function() { user.sayHi(); // Hello! ``` -Here we've just used a Function Expression to create the function and assign it to the property `user.sayHi` of the object. +Here we've just used a Function Expression to create a function and assign it to the property `user.sayHi` of the object. -Then we can call it. The user can now speak! +Then we can call it as `user.sayHi()`. The user can now speak! -A function that is the property of an object is called its *method*. +A function that is a property of an object is called its *method*. So, here we've got a method `sayHi` of the object `user`. @@ -51,7 +51,7 @@ let user = { // first, declare function sayHi() { alert("Hello!"); -}; +} // then add as a method user.sayHi = sayHi; @@ -61,9 +61,9 @@ user.sayHi(); // Hello! ``` ```smart header="Object-oriented programming" -When we write our code using objects to represent entities, that's called an [object-oriented programming](https://en.wikipedia.org/wiki/Object-oriented_programming), in short: "OOP". +When we write our code using objects to represent entities, that's called [object-oriented programming](https://en.wikipedia.org/wiki/Object-oriented_programming), in short: "OOP". -OOP is a big thing, an interesting science of its own. How to choose the right entities? How to organize the interaction between them? That's architecture, and there are great books on that topic, like "Design Patterns: Elements of Reusable Object-Oriented Software" by E.Gamma, R.Helm, R.Johnson, J.Vissides or "Object-Oriented Analysis and Design with Applications" by G.Booch, and more. +OOP is a big thing, an interesting science of its own. How to choose the right entities? How to organize the interaction between them? That's architecture, and there are great books on that topic, like "Design Patterns: Elements of Reusable Object-Oriented Software" by E. Gamma, R. Helm, R. Johnson, J. Vissides or "Object-Oriented Analysis and Design with Applications" by G. Booch, and more. ``` ### Method shorthand @@ -72,16 +72,16 @@ There exists a shorter syntax for methods in an object literal: ```js // these objects do the same -let user = { +user = { sayHi: function() { alert("Hello"); } }; // method shorthand looks better, right? -let user = { +user = { *!* - sayHi() { // same as "sayHi: function()" + sayHi() { // same as "sayHi: function(){...}" */!* alert("Hello"); } @@ -90,7 +90,7 @@ let user = { As demonstrated, we can omit `"function"` and just write `sayHi()`. -To tell the truth, the notations are not fully identical. There are subtle differences related to object inheritance (to be covered later), but for now they do not matter. In almost all cases the shorter syntax is preferred. +To tell the truth, the notations are not fully identical. There are subtle differences related to object inheritance (to be covered later), but for now they do not matter. In almost all cases, the shorter syntax is preferred. ## "this" in methods @@ -111,6 +111,7 @@ let user = { sayHi() { *!* + // "this" is the "current object" alert(this.name); */!* } @@ -159,16 +160,18 @@ let user = { let admin = user; user = null; // overwrite to make things obvious -admin.sayHi(); // Whoops! inside sayHi(), the old name is used! error! +*!* +admin.sayHi(); // TypeError: Cannot read property 'name' of null +*/!* ``` If we used `this.name` instead of `user.name` inside the `alert`, then the code would work. ## "this" is not bound -In JavaScript, "this" keyword behaves unlike most other programming languages. First, it can be used in any function. +In JavaScript, keyword `this` behaves unlike most other programming languages. It can be used in any function, even if it's not a method of an object. -There's no syntax error in the code like that: +There's no syntax error in the following example: ```js function sayHi() { @@ -176,9 +179,9 @@ function sayHi() { } ``` -The value of `this` is evaluated during the run-time. And it can be anything. +The value of `this` is evaluated during the run-time, depending on the context. -For instance, the same function may have different "this" when called from different objects: +For instance, here the same function is assigned to two different objects and has different "this" in the calls: ```js run let user = { name: "John" }; @@ -189,7 +192,7 @@ function sayHi() { } *!* -// use the same functions in two objects +// use the same function in two objects user.f = sayHi; admin.f = sayHi; */!* @@ -202,7 +205,10 @@ admin.f(); // Admin (this == admin) admin['f'](); // Admin (dot or square brackets access the method – doesn't matter) ``` -Actually, we can call the function without an object at all: +The rule is simple: if `obj.f()` is called, then `this` is `obj` during the call of `f`. So it's either `user` or `admin` in the example above. + +````smart header="Calling without an object: `this == undefined`" +We can even call the function without an object at all: ```js run function sayHi() { @@ -216,108 +222,19 @@ In this case `this` is `undefined` in strict mode. If we try to access `this.nam In non-strict mode the value of `this` in such case will be the *global object* (`window` in a browser, we'll get to it later in the chapter [](info:global-object)). This is a historical behavior that `"use strict"` fixes. -Please note that usually a call of a function that uses `this` without an object is not normal, but rather a programming mistake. If a function has `this`, then it is usually meant to be called in the context of an object. +Usually such call is a programming error. If there's `this` inside a function, it expects to be called in an object context. +```` ```smart header="The consequences of unbound `this`" If you come from another programming language, then you are probably used to the idea of a "bound `this`", where methods defined in an object always have `this` referencing that object. -In JavaScript `this` is "free", its value is evaluated at call-time and does not depend on where the method was declared, but rather on what's the object "before the dot". +In JavaScript `this` is "free", its value is evaluated at call-time and does not depend on where the method was declared, but rather on what object is "before the dot". -The concept of run-time evaluated `this` has both pluses and minuses. On the one hand, a function can be reused for different objects. On the other hand, greater flexibility opens a place for mistakes. +The concept of run-time evaluated `this` has both pluses and minuses. On the one hand, a function can be reused for different objects. On the other hand, the greater flexibility creates more possibilities for mistakes. -Here our position is not to judge whether this language design decision is good or bad. We'll understand how to work with it, how to get benefits and evade problems. +Here our position is not to judge whether this language design decision is good or bad. We'll understand how to work with it, how to get benefits and avoid problems. ``` -## Internals: Reference Type - -```warn header="In-depth language feature" -This section covers an advanced topic, to understand certain edge-cases better. - -If you want to go on faster, it can be skipped or postponed. -``` - -An intricate method call can lose `this`, for instance: - -```js run -let user = { - name: "John", - hi() { alert(this.name); }, - bye() { alert("Bye"); } -}; - -user.hi(); // John (the simple call works) - -*!* -// now let's call user.hi or user.bye depending on the name -(user.name == "John" ? user.hi : user.bye)(); // Error! -*/!* -``` - -On the last line there is a ternary operator that chooses either `user.hi` or `user.bye`. In this case the result is `user.hi`. - -The method is immediately called with parentheses `()`. But it doesn't work right! - -You can see that the call results in an error, because the value of `"this"` inside the call becomes `undefined`. - -This works (object dot method): -```js -user.hi(); -``` - -This doesn't (evaluated method): -```js -(user.name == "John" ? user.hi : user.bye)(); // Error! -``` - -Why? If we want to understand why it happens, let's get under the hood of how `obj.method()` call works. - -Looking closely, we may notice two operations in `obj.method()` statement: - -1. First, the dot `'.'` retrieves the property `obj.method`. -2. Then parentheses `()` execute it. - -So, how does the information about `this` get passed from the first part to the second one? - -If we put these operations on separate lines, then `this` will be lost for sure: - -```js run -let user = { - name: "John", - hi() { alert(this.name); } -} - -*!* -// split getting and calling the method in two lines -let hi = user.hi; -hi(); // Error, because this is undefined -*/!* -``` - -Here `hi = user.hi` puts the function into the variable, and then on the last line it is completely standalone, and so there's no `this`. - -**To make `user.hi()` calls work, JavaScript uses a trick -- the dot `'.'` returns not a function, but a value of the special [Reference Type](https://tc39.github.io/ecma262/#sec-reference-specification-type).** - -The Reference Type is a "specification type". We can't explicitly use it, but it is used internally by the language. - -The value of Reference Type is a three-value combination `(base, name, strict)`, where: - -- `base` is the object. -- `name` is the property. -- `strict` is true if `use strict` is in effect. - -The result of a property access `user.hi` is not a function, but a value of Reference Type. For `user.hi` in strict mode it is: - -```js -// Reference Type value -(user, "hi", true) -``` - -When parentheses `()` are called on the Reference Type, they receive the full information about the object and its method, and can set the right `this` (`=user` in this case). - -Any other operation like assignment `hi = user.hi` discards the reference type as a whole, takes the value of `user.hi` (a function) and passes it on. So any further operation "loses" `this`. - -So, as the result, the value of `this` is only passed the right way if the function is called directly using a dot `obj.method()` or square brackets `obj['method']()` syntax (they do the same here). Later in this tutorial, we will learn various ways to solve this problem such as [func.bind()](/bind#solution-2-bind). - ## Arrow functions have no "this" Arrow functions are special: they don't have their "own" `this`. If we reference `this` from such a function, it's taken from the outer "normal" function. @@ -347,7 +264,7 @@ That's a special feature of arrow functions, it's useful when we actually do not The value of `this` is defined at run-time. - When a function is declared, it may use `this`, but that `this` has no value until the function is called. -- That function can be copied between objects. +- A function can be copied between objects. - When a function is called in the "method" syntax: `object.method()`, the value of `this` during the call is `object`. Please note that arrow functions are special: they have no `this`. When `this` is accessed inside an arrow function, it is taken from outside. diff --git a/1-js/04-object-basics/05-object-toprimitive/article.md b/1-js/04-object-basics/05-object-toprimitive/article.md deleted file mode 100644 index a44cf4f4d..000000000 --- a/1-js/04-object-basics/05-object-toprimitive/article.md +++ /dev/null @@ -1,236 +0,0 @@ - -# Object to primitive conversion - -What happens when objects are added `obj1 + obj2`, subtracted `obj1 - obj2` or printed using `alert(obj)`? - -There are special methods in objects that do the conversion. - -In the chapter <info:type-conversions> we've seen the rules for numeric, string and boolean conversions of primitives. But we left a gap for objects. Now, as we know about methods and symbols it becomes possible to close it. - -For objects, there's no to-boolean conversion, because all objects are `true` in a boolean context. So there are only string and numeric conversions. - -The numeric conversion happens when we subtract objects or apply mathematical functions. For instance, `Date` objects (to be covered in the chapter <info:date>) can be subtracted, and the result of `date1 - date2` is the time difference between two dates. - -As for the string conversion -- it usually happens when we output an object like `alert(obj)` and in similar contexts. - -## ToPrimitive - -When an object is used in the context where a primitive is required, for instance, in an `alert` or mathematical operations, it's converted to a primitive value using the `ToPrimitive` algorithm ([specification](https://tc39.github.io/ecma262/#sec-toprimitive)). - -That algorithm allows us to customize the conversion using a special object method. - -Depending on the context, the conversion has a so-called "hint". - -There are three variants: - -`"string"` -: When an operation expects a string, for object-to-string conversions, like `alert`: - - ```js - // output - alert(obj); - - // using object as a property key - anotherObj[obj] = 123; - ``` - -`"number"` -: When an operation expects a number, for object-to-number conversions, like maths: - - ```js - // explicit conversion - let num = Number(obj); - - // maths (except binary plus) - let n = +obj; // unary plus - let delta = date1 - date2; - - // less/greater comparison - let greater = user1 > user2; - ``` - -`"default"` -: Occurs in rare cases when the operator is "not sure" what type to expect. - - For instance, binary plus `+` can work both with strings (concatenates them) and numbers (adds them), so both strings and numbers would do. Or when an object is compared using `==` with a string, number or a symbol. - - ```js - // binary plus - let total = car1 + car2; - - // obj == string/number/symbol - if (user == 1) { ... }; - ``` - - The greater/less operator `<>` can work with both strings and numbers too. Still, it uses "number" hint, not "default". That's for historical reasons. - - In practice, all built-in objects except for one case (`Date` object, we'll learn it later) implement `"default"` conversion the same way as `"number"`. And probably we should do the same. - -Please note -- there are only three hints. It's that simple. There is no "boolean" hint (all objects are `true` in boolean context) or anything else. And if we treat `"default"` and `"number"` the same, like most built-ins do, then there are only two conversions. - -**To do the conversion, JavaScript tries to find and call three object methods:** - -1. Call `obj[Symbol.toPrimitive](hint)` if the method exists, -2. Otherwise if hint is `"string"` - - try `obj.toString()` and `obj.valueOf()`, whatever exists. -3. Otherwise if hint is `"number"` or `"default"` - - try `obj.valueOf()` and `obj.toString()`, whatever exists. - -## Symbol.toPrimitive - -Let's start from the first method. There's a built-in symbol named `Symbol.toPrimitive` that should be used to name the conversion method, like this: - -```js -obj[Symbol.toPrimitive] = function(hint) { - // return a primitive value - // hint = one of "string", "number", "default" -} -``` - -For instance, here `user` object implements it: - -```js run -let user = { - name: "John", - money: 1000, - - [Symbol.toPrimitive](hint) { - alert(`hint: ${hint}`); - return hint == "string" ? `{name: "${this.name}"}` : this.money; - } -}; - -// conversions demo: -alert(user); // hint: string -> {name: "John"} -alert(+user); // hint: number -> 1000 -alert(user + 500); // hint: default -> 1500 -``` - -As we can see from the code, `user` becomes a self-descriptive string or a money amount depending on the conversion. The single method `user[Symbol.toPrimitive]` handles all conversion cases. - - -## toString/valueOf - -Methods `toString` and `valueOf` come from ancient times. They are not symbols (symbols did not exist that long ago), but rather "regular" string-named methods. They provide an alternative "old-style" way to implement the conversion. - -If there's no `Symbol.toPrimitive` then JavaScript tries to find them and try in the order: - -- `toString -> valueOf` for "string" hint. -- `valueOf -> toString` otherwise. - -For instance, here `user` does the same as above using a combination of `toString` and `valueOf`: - -```js run -let user = { - name: "John", - money: 1000, - - // for hint="string" - toString() { - return `{name: "${this.name}"}`; - }, - - // for hint="number" or "default" - valueOf() { - return this.money; - } - -}; - -alert(user); // toString -> {name: "John"} -alert(+user); // valueOf -> 1000 -alert(user + 500); // valueOf -> 1500 -``` - -Often we want a single "catch-all" place to handle all primitive conversions. In this case we can implement `toString` only, like this: - -```js run -let user = { - name: "John", - - toString() { - return this.name; - } -}; - -alert(user); // toString -> John -alert(user + 500); // toString -> John500 -``` - -In the absence of `Symbol.toPrimitive` and `valueOf`, `toString` will handle all primitive conversions. - - -## ToPrimitive and ToString/ToNumber - -The important thing to know about all primitive-conversion methods is that they do not necessarily return the "hinted" primitive. - -There is no control whether `toString()` returns exactly a string, or whether `Symbol.toPrimitive` method returns a number for a hint "number". - -**The only mandatory thing: these methods must return a primitive.** - -An operation that initiated the conversion gets that primitive, and then continues to work with it, applying further conversions if necessary. - -For instance: - -- Mathematical operations (except binary plus) perform `ToNumber` conversion: - - ```js run - let obj = { - toString() { // toString handles all conversions in the absence of other methods - return "2"; - } - }; - - alert(obj * 2); // 4, ToPrimitive gives "2", then it becomes 2 - ``` - -- Binary plus checks the primitive -- if it's a string, then it does concatenation, otherwise it performs `ToNumber` and works with numbers. - - String example: - ```js run - let obj = { - toString() { - return "2"; - } - }; - - alert(obj + 2); // 22 (ToPrimitive returned string => concatenation) - ``` - - Number example: - ```js run - let obj = { - toString() { - return true; - } - }; - - alert(obj + 2); // 3 (ToPrimitive returned boolean, not string => ToNumber) - ``` - -```smart header="Historical notes" -For historical reasons, methods `toString` or `valueOf` *should* return a primitive: if any of them returns an object, then there's no error, but that object is ignored (like if the method didn't exist). - -In contrast, `Symbol.toPrimitive` *must* return a primitive, otherwise, there will be an error. -``` - -## Summary - -The object-to-primitive conversion is called automatically by many built-in functions and operators that expect a primitive as a value. - -There are 3 types (hints) of it: -- `"string"` (for `alert` and other string conversions) -- `"number"` (for maths) -- `"default"` (few operators) - -The specification describes explicitly which operator uses which hint. There are very few operators that "don't know what to expect" and use the `"default"` hint. Usually for built-in objects `"default"` hint is handled the same way as `"number"`, so in practice the last two are often merged together. - -The conversion algorithm is: - -1. Call `obj[Symbol.toPrimitive](hint)` if the method exists, -2. Otherwise if hint is `"string"` - - try `obj.toString()` and `obj.valueOf()`, whatever exists. -3. Otherwise if hint is `"number"` or `"default"` - - try `obj.valueOf()` and `obj.toString()`, whatever exists. - -In practice, it's often enough to implement only `obj.toString()` as a "catch-all" method for all conversions that return a "human-readable" representation of an object, for logging or debugging purposes. diff --git a/1-js/04-object-basics/06-constructor-new/1-two-functions-one-object/task.md b/1-js/04-object-basics/06-constructor-new/1-two-functions-one-object/task.md index 8c1fea8eb..e932a201a 100644 --- a/1-js/04-object-basics/06-constructor-new/1-two-functions-one-object/task.md +++ b/1-js/04-object-basics/06-constructor-new/1-two-functions-one-object/task.md @@ -4,14 +4,14 @@ importance: 2 # Two functions – one object -Is it possible to create functions `A` and `B` such as `new A()==new B()`? +Is it possible to create functions `A` and `B` so that `new A() == new B()`? ```js no-beautify function A() { ... } function B() { ... } -let a = new A; -let b = new B; +let a = new A(); +let b = new B(); alert( a == b ); // true ``` diff --git a/1-js/04-object-basics/06-constructor-new/2-calculator-constructor/_js.view/test.js b/1-js/04-object-basics/06-constructor-new/2-calculator-constructor/_js.view/test.js index 036053927..bba80e5c2 100644 --- a/1-js/04-object-basics/06-constructor-new/2-calculator-constructor/_js.view/test.js +++ b/1-js/04-object-basics/06-constructor-new/2-calculator-constructor/_js.view/test.js @@ -10,6 +10,11 @@ describe("calculator", function() { calculator = new Calculator(); calculator.read(); }); + + it("the read method asks for two values using prompt and remembers them in object properties", function() { + assert.equal(calculator.a, 2); + assert.equal(calculator.b, 3); + }); it("when 2 and 3 are entered, the sum is 5", function() { assert.equal(calculator.sum(), 5); diff --git a/1-js/04-object-basics/06-constructor-new/2-calculator-constructor/task.md b/1-js/04-object-basics/06-constructor-new/2-calculator-constructor/task.md index 60e7c373e..c862bec40 100644 --- a/1-js/04-object-basics/06-constructor-new/2-calculator-constructor/task.md +++ b/1-js/04-object-basics/06-constructor-new/2-calculator-constructor/task.md @@ -6,7 +6,7 @@ importance: 5 Create a constructor function `Calculator` that creates objects with 3 methods: -- `read()` asks for two values using `prompt` and remembers them in object properties. +- `read()` prompts for two values and saves them as object properties with names `a` and `b` respectively. - `sum()` returns the sum of these properties. - `mul()` returns the multiplication product of these properties. diff --git a/1-js/04-object-basics/06-constructor-new/3-accumulator/task.md b/1-js/04-object-basics/06-constructor-new/3-accumulator/task.md index 3362b5b4b..c2c44881e 100644 --- a/1-js/04-object-basics/06-constructor-new/3-accumulator/task.md +++ b/1-js/04-object-basics/06-constructor-new/3-accumulator/task.md @@ -17,8 +17,10 @@ Here's the demo of the code: ```js let accumulator = new Accumulator(1); // initial value 1 + accumulator.read(); // adds the user-entered value accumulator.read(); // adds the user-entered value + alert(accumulator.value); // shows the sum of these values ``` diff --git a/1-js/04-object-basics/06-constructor-new/article.md b/1-js/04-object-basics/06-constructor-new/article.md index eb452f2f3..a335464f1 100644 --- a/1-js/04-object-basics/06-constructor-new/article.md +++ b/1-js/04-object-basics/06-constructor-new/article.md @@ -1,6 +1,6 @@ # Constructor, operator "new" -The regular `{...}` syntax allows to create one object. But often we need to create many similar objects, like multiple users or menu items and so on. +The regular `{...}` syntax allows us to create one object. But often we need to create many similar objects, like multiple users or menu items and so on. That can be done using constructor functions and the `"new"` operator. @@ -27,7 +27,7 @@ alert(user.name); // Jack alert(user.isAdmin); // false ``` -When a function is executed as `new User(...)`, it does the following steps: +When a function is executed with `new`, it does the following steps: 1. A new empty object is created and assigned to `this`. 2. The function body executes. Usually it modifies `this`, adds new properties to it. @@ -51,7 +51,7 @@ function User(name) { } ``` -So the result of `new User("Jack")` is the same object as: +So `let user = new User("Jack")` gives the same result as: ```js let user = { @@ -64,13 +64,14 @@ Now if we want to create other users, we can call `new User("Ann")`, `new User(" That's the main purpose of constructors -- to implement reusable object creation code. -Let's note once again -- technically, any function can be used as a constructor. That is: any function can be run with `new`, and it will execute the algorithm above. The "capital letter first" is a common agreement, to make it clear that a function is to be run with `new`. +Let's note once again -- technically, any function (except arrow functions, as they don't have `this`) can be used as a constructor. It can be run with `new`, and it will execute the algorithm above. The "capital letter first" is a common agreement, to make it clear that a function is to be run with `new`. ````smart header="new function() { ... }" -If we have many lines of code all about creation of a single complex object, we can wrap them in constructor function, like this: +If we have many lines of code all about creation of a single complex object, we can wrap them in an immediately called constructor function, like this: ```js -let user = new function() { +// create a function and immediately call it with new +let user = new function() { this.name = "John"; this.isAdmin = false; @@ -80,10 +81,10 @@ let user = new function() { }; ``` -The constructor can't be called again, because it is not saved anywhere, just created and called. So this trick aims to encapsulate the code that constructs the single object, without future reuse. +This constructor can't be called again, because it is not saved anywhere, just created and called. So this trick aims to encapsulate the code that constructs the single object, without future reuse. ```` -## Dual-syntax constructors: new.target +## Constructor mode test: new.target ```smart header="Advanced stuff" The syntax from this section is rarely used, skip it unless you want to know everything. @@ -91,7 +92,7 @@ The syntax from this section is rarely used, skip it unless you want to know eve Inside a function, we can check whether it was called with `new` or without it, using a special `new.target` property. -It is empty for regular calls and equals the function if called with `new`: +It is undefined for regular calls and equals the function if called with `new`: ```js run function User() { @@ -109,7 +110,9 @@ new User(); // function User { ... } */!* ``` -That can be used to allow both `new` and regular calls to work the same. That is, create the same object: +That can be used inside the function to know whether it was called with `new`, "in constructor mode", or without it, "in regular mode". + +We can also make both `new` and regular calls to do the same, like this: ```js run function User(name) { @@ -134,7 +137,7 @@ Usually, constructors do not have a `return` statement. Their task is to write a But if there is a `return` statement, then the rule is simple: -- If `return` is called with object, then it is returned instead of `this`. +- If `return` is called with an object, then the object is returned instead of `this`. - If `return` is called with a primitive, it's ignored. In other words, `return` with an object returns that object, in all other cases `this` is returned. @@ -146,10 +149,10 @@ function BigUser() { this.name = "John"; - return { name: "Godzilla" }; // <-- returns an object + return { name: "Godzilla" }; // <-- returns this object } -alert( new BigUser().name ); // Godzilla, got that object ^^ +alert( new BigUser().name ); // Godzilla, got that object ``` And here's an example with an empty `return` (or we could place a primitive after it, doesn't matter): @@ -159,10 +162,7 @@ function SmallUser() { this.name = "John"; - return; // finishes the execution, returns this - - // ... - + return; // <-- returns this } alert( new SmallUser().name ); // John @@ -171,7 +171,7 @@ alert( new SmallUser().name ); // John Usually constructors don't have a `return` statement. Here we mention the special behavior with returning objects mainly for the sake of completeness. ````smart header="Omitting parentheses" -By the way, we can omit parentheses after `new`, if it has no arguments: +By the way, we can omit parentheses after `new`: ```js let user = new User; // <-- no parentheses @@ -213,6 +213,8 @@ john = { */ ``` +To create complex objects, there's a more advanced syntax, [classes](info:classes), that we'll cover later. + ## Summary - Constructor functions or, briefly, constructors, are regular functions, but there's a common agreement to name them with capital letter first. diff --git a/1-js/04-object-basics/07-optional-chaining/article.md b/1-js/04-object-basics/07-optional-chaining/article.md new file mode 100644 index 000000000..4c6029423 --- /dev/null +++ b/1-js/04-object-basics/07-optional-chaining/article.md @@ -0,0 +1,233 @@ + +# Optional chaining '?.' + +[recent browser="new"] + +The optional chaining `?.` is a safe way to access nested object properties, even if an intermediate property doesn't exist. + +## The "non-existing property" problem + +If you've just started to read the tutorial and learn JavaScript, maybe the problem hasn't touched you yet, but it's quite common. + +As an example, let's say we have `user` objects that hold the information about our users. + +Most of our users have addresses in `user.address` property, with the street `user.address.street`, but some did not provide them. + +In such case, when we attempt to get `user.address.street`, and the user happens to be without an address, we get an error: + +```js run +let user = {}; // a user without "address" property + +alert(user.address.street); // Error! +``` + +That's the expected result. JavaScript works like this. As `user.address` is `undefined`, an attempt to get `user.address.street` fails with an error. + +In many practical cases we'd prefer to get `undefined` instead of an error here (meaning "no street"). + +...and another example. In Web development, we can get an object that corresponds to a web page element using a special method call, such as `document.querySelector('.elem')`, and it returns `null` when there's no such element. + +```js run +// document.querySelector('.elem') is null if there's no element +let html = document.querySelector('.elem').innerHTML; // error if it's null +``` + +Once again, if the element doesn't exist, we'll get an error accessing `.innerHTML` property of `null`. And in some cases, when the absence of the element is normal, we'd like to avoid the error and just accept `html = null` as the result. + +How can we do this? + +The obvious solution would be to check the value using `if` or the conditional operator `?`, before accessing its property, like this: + +```js +let user = {}; + +alert(user.address ? user.address.street : undefined); +``` + +It works, there's no error... But it's quite inelegant. As you can see, the `"user.address"` appears twice in the code. + +Here's how the same would look for `document.querySelector`: + +```js run +let html = document.querySelector('.elem') ? document.querySelector('.elem').innerHTML : null; +``` + +We can see that the element search `document.querySelector('.elem')` is actually called twice here. Not good. + +For more deeply nested properties, it becomes even uglier, as more repetitions are required. + +E.g. let's get `user.address.street.name` in a similar fashion. + +```js +let user = {}; // user has no address + +alert(user.address ? user.address.street ? user.address.street.name : null : null); +``` + +That's just awful, one may even have problems understanding such code. + +There's a little better way to write it, using the `&&` operator: + +```js run +let user = {}; // user has no address + +alert( user.address && user.address.street && user.address.street.name ); // undefined (no error) +``` + +AND'ing the whole path to the property ensures that all components exist (if not, the evaluation stops), but also isn't ideal. + +As you can see, property names are still duplicated in the code. E.g. in the code above, `user.address` appears three times. + +That's why the optional chaining `?.` was added to the language. To solve this problem once and for all! + +## Optional chaining + +The optional chaining `?.` stops the evaluation if the value before `?.` is `undefined` or `null` and returns `undefined`. + +**Further in this article, for brevity, we'll be saying that something "exists" if it's not `null` and not `undefined`.** + +In other words, `value?.prop`: +- works as `value.prop`, if `value` exists, +- otherwise (when `value` is `undefined/null`) it returns `undefined`. + +Here's the safe way to access `user.address.street` using `?.`: + +```js run +let user = {}; // user has no address + +alert( user?.address?.street ); // undefined (no error) +``` + +The code is short and clean, there's no duplication at all. + +Here's an example with `document.querySelector`: + +```js run +let html = document.querySelector('.elem')?.innerHTML; // will be undefined, if there's no element +``` + +Reading the address with `user?.address` works even if `user` object doesn't exist: + +```js run +let user = null; + +alert( user?.address ); // undefined +alert( user?.address.street ); // undefined +``` + +Please note: the `?.` syntax makes optional the value before it, but not any further. + +E.g. in `user?.address.street.name` the `?.` allows `user` to safely be `null/undefined` (and returns `undefined` in that case), but that's only for `user`. Further properties are accessed in a regular way. If we want some of them to be optional, then we'll need to replace more `.` with `?.`. + +```warn header="Don't overuse the optional chaining" +We should use `?.` only where it's ok that something doesn't exist. + +For example, if according to our code logic `user` object must exist, but `address` is optional, then we should write `user.address?.street`, but not `user?.address?.street`. + +Then, if `user` happens to be undefined, we'll see a programming error about it and fix it. Otherwise, if we overuse `?.`, coding errors can be silenced where not appropriate, and become more difficult to debug. +``` + +````warn header="The variable before `?.` must be declared" +If there's no variable `user` at all, then `user?.anything` triggers an error: + +```js run +// ReferenceError: user is not defined +user?.address; +``` +The variable must be declared (e.g. `let/const/var user` or as a function parameter). The optional chaining works only for declared variables. +```` + +## Short-circuiting + +As it was said before, the `?.` immediately stops ("short-circuits") the evaluation if the left part doesn't exist. + +So, if there are any further function calls or operations to the right of `?.`, they won't be made. + +For instance: + +```js run +let user = null; +let x = 0; + +user?.sayHi(x++); // no "user", so the execution doesn't reach sayHi call and x++ + +alert(x); // 0, value not incremented +``` + +## Other variants: ?.(), ?.[] + +The optional chaining `?.` is not an operator, but a special syntax construct, that also works with functions and square brackets. + +For example, `?.()` is used to call a function that may not exist. + +In the code below, some of our users have `admin` method, and some don't: + +```js run +let userAdmin = { + admin() { + alert("I am admin"); + } +}; + +let userGuest = {}; + +*!* +userAdmin.admin?.(); // I am admin +*/!* + +*!* +userGuest.admin?.(); // nothing happens (no such method) +*/!* +``` + +Here, in both lines we first use the dot (`userAdmin.admin`) to get `admin` property, because we assume that the `user` object exists, so it's safe read from it. + +Then `?.()` checks the left part: if the `admin` function exists, then it runs (that's so for `userAdmin`). Otherwise (for `userGuest`) the evaluation stops without errors. + +The `?.[]` syntax also works, if we'd like to use brackets `[]` to access properties instead of dot `.`. Similar to previous cases, it allows to safely read a property from an object that may not exist. + +```js run +let key = "firstName"; + +let user1 = { + firstName: "John" +}; + +let user2 = null; + +alert( user1?.[key] ); // John +alert( user2?.[key] ); // undefined +``` + +Also we can use `?.` with `delete`: + +```js run +delete user?.name; // delete user.name if user exists +``` + +````warn header="We can use `?.` for safe reading and deleting, but not writing" +The optional chaining `?.` has no use on the left side of an assignment. + +For example: +```js run +let user = null; + +user?.name = "John"; // Error, doesn't work +// because it evaluates to: undefined = "John" +``` + +```` + +## Summary + +The optional chaining `?.` syntax has three forms: + +1. `obj?.prop` -- returns `obj.prop` if `obj` exists, otherwise `undefined`. +2. `obj?.[prop]` -- returns `obj[prop]` if `obj` exists, otherwise `undefined`. +3. `obj.method?.()` -- calls `obj.method()` if `obj.method` exists, otherwise returns `undefined`. + +As we can see, all of them are straightforward and simple to use. The `?.` checks the left part for `null/undefined` and allows the evaluation to proceed if it's not so. + +A chain of `?.` allows to safely access nested properties. + +Still, we should apply `?.` carefully, only where it's acceptable, according to our code logic, that the left part doesn't exist. So that it won't hide programming errors from us, if they occur. diff --git a/1-js/04-object-basics/03-symbol/article.md b/1-js/04-object-basics/08-symbol/article.md similarity index 59% rename from 1-js/04-object-basics/03-symbol/article.md rename to 1-js/04-object-basics/08-symbol/article.md index 8323d6643..10a98af0a 100644 --- a/1-js/04-object-basics/03-symbol/article.md +++ b/1-js/04-object-basics/08-symbol/article.md @@ -1,29 +1,35 @@ # Symbol type -By specification, object property keys may be either of string type, or of symbol type. Not numbers, not booleans, only strings or symbols, these two types. +By specification, only two primitive types may serve as object property keys: -Till now we've only seen strings. Now let's see the advantages that symbols can give us. +- string type, or +- symbol type. + +Otherwise, if one uses another type, such as number, it's autoconverted to string. So that `obj[1]` is the same as `obj["1"]`, and `obj[true]` is the same as `obj["true"]`. + +Until now we've been using only strings. + +Now let's explore symbols, see what they can do for us. ## Symbols -"Symbol" value represents a unique identifier. +A "symbol" represents a unique identifier. A value of this type can be created using `Symbol()`: ```js -// id is a new symbol let id = Symbol(); ``` -We can also give symbol a description (also called a symbol name), mostly useful for debugging purposes: +Upon creation, we can give symbols a description (also called a symbol name), mostly useful for debugging purposes: -```js run +```js // id is a symbol with the description "id" let id = Symbol("id"); ``` -Symbols are guaranteed to be unique. Even if we create many symbols with the same description, they are different values. The description is just a label that doesn't affect anything. +Symbols are guaranteed to be unique. Even if we create many symbols with exactly the same description, they are different values. The description is just a label that doesn't affect anything. For instance, here are two symbols with the same description -- they are not equal: @@ -38,6 +44,8 @@ alert(id1 == id2); // false If you are familiar with Ruby or another language that also has some sort of "symbols" -- please don't be misguided. JavaScript symbols are different. +So, to summarize, a symbol is a "primitive unique value" with an optional description. Let's see where we can use them. + ````warn header="Symbols don't auto-convert to a string" Most values in JavaScript support implicit conversion to a string. For instance, we can `alert` almost any value, and it will work. Symbols are special. They don't auto-convert. @@ -50,9 +58,10 @@ alert(id); // TypeError: Cannot convert a Symbol value to a string */!* ``` -That's a "language guard" against messing up, because strings and symbols are fundamentally different and should not occasionally convert one into another. +That's a "language guard" against messing up, because strings and symbols are fundamentally different and should not accidentally convert one into another. + +If we really want to show a symbol, we need to explicitly call `.toString()` on it, like here: -If we really want to show a symbol, we need to call `.toString()` on it, like here: ```js run let id = Symbol("id"); *!* @@ -60,7 +69,8 @@ alert(id.toString()); // Symbol(id), now it works */!* ``` -Or get `symbol.description` property to get the description only: +Or get `symbol.description` property to show the description only: + ```js run let id = Symbol("id"); *!* @@ -72,23 +82,30 @@ alert(id.description); // id ## "Hidden" properties -Symbols allow us to create "hidden" properties of an object, that no other part of code can occasionally access or overwrite. -For instance, if we want to store an "identifier" for the object `user`, we can use a symbol as a key for it: +Symbols allow us to create "hidden" properties of an object, that no other part of code can accidentally access or overwrite. + +For instance, if we're working with `user` objects, that belong to a third-party code. We'd like to add identifiers to them. + +Let's use a symbol key for it: ```js run -let user = { name: "John" }; +let user = { // belongs to another code + name: "John" +}; + let id = Symbol("id"); -user[id] = "ID Value"; +user[id] = 1; + alert( user[id] ); // we can access the data using the symbol as the key ``` What's the benefit of using `Symbol("id")` over a string `"id"`? -Let's make the example a bit deeper to see that. +As `user` objects belong to another codebase, it's unsafe to add fields to them, since we might affect pre-defined behavior in that other codebase. However, symbols cannot be accessed accidentally. The third-party code won't be aware of newly defined symbols, so it's safe to add symbols to the `user` objects. -Imagine that another script wants to have its own "id" property inside `user`, for its own purposes. That may be another JavaScript library, so the scripts are completely unaware of each other. +Also, imagine that another script wants to have its own identifier inside `user`, for its own purposes. Then that script can create its own `Symbol("id")`, like this: @@ -99,25 +116,25 @@ let id = Symbol("id"); user[id] = "Their id value"; ``` -There will be no conflict, because symbols are always different, even if they have the same name. +There will be no conflict between our and their identifiers, because symbols are always different, even if they have the same name. -Now note that if we used a string `"id"` instead of a symbol for the same purpose, then there *would* be a conflict: +...But if we used a string `"id"` instead of a symbol for the same purpose, then there *would* be a conflict: -```js run +```js let user = { name: "John" }; -// our script uses "id" property -user.id = "ID Value"; +// Our script uses "id" property +user.id = "Our id value"; -// ...if later another script the uses "id" for its purposes... +// ...Another script also wants "id" for its purposes... user.id = "Their id value" -// boom! overwritten! it did not mean to harm the colleague, but did it! +// Boom! overwritten by another script! ``` -### Symbols in a literal +### Symbols in an object literal -If we want to use a symbol in an object literal, we need square brackets. +If we want to use a symbol in an object literal `{...}`, we need square brackets around it. Like this: @@ -127,7 +144,7 @@ let id = Symbol("id"); let user = { name: "John", *!* - [id]: 123 // not just "id: 123" + [id]: 123 // not "id": 123 */!* }; ``` @@ -152,10 +169,10 @@ for (let key in user) alert(key); // name, age (no symbols) */!* // the direct access by the symbol works -alert( "Direct: " + user[id] ); +alert( "Direct: " + user[id] ); // Direct: 123 ``` -That's a part of the general "hiding" concept. If another script or a library loops over our object, it won't unexpectedly access a symbolic property. +[Object.keys(user)](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/keys) also ignores them. That's a part of the general "hiding symbolic properties" principle. If another script or a library loops over our object, it won't unexpectedly access a symbolic property. In contrast, [Object.assign](mdn:js/Object/assign) copies both string and symbol properties: @@ -172,31 +189,13 @@ alert( clone[id] ); // 123 There's no paradox here. That's by design. The idea is that when we clone an object or merge objects, we usually want *all* properties to be copied (including symbols like `id`). -````smart header="Property keys of other types are coerced to strings" -We can only use strings or symbols as keys in objects. Other types are converted to strings. - -For instance, a number `0` becomes a string `"0"` when used as a property key: - -```js run -let obj = { - 0: "test" // same as "0": "test" -}; - -// both alerts access the same property (the number 0 is converted to string "0") -alert( obj["0"] ); // test -alert( obj[0] ); // test (same property) -``` -```` - ## Global symbols -As we've seen, usually all symbols are different, even if they have the same names. But sometimes we want same-named symbols to be same entities. - -For instance, different parts of our application want to access symbol `"id"` meaning exactly the same property. +As we've seen, usually all symbols are different, even if they have the same name. But sometimes we want same-named symbols to be same entities. For instance, different parts of our application want to access symbol `"id"` meaning exactly the same property. To achieve that, there exists a *global symbol registry*. We can create symbols in it and access them later, and it guarantees that repeated accesses by the same name return exactly the same symbol. -In order to create or read a symbol in the registry, use `Symbol.for(key)`. +In order to read (create if absent) a symbol from the registry, use `Symbol.for(key)`. That call checks the global registry, and if there's a symbol described as `key`, then returns it, otherwise creates a new symbol `Symbol(key)` and stores it in the registry by the given `key`. @@ -206,7 +205,7 @@ For instance: // read from the global registry let id = Symbol.for("id"); // if the symbol did not exist, it is created -// read it again +// read it again (maybe from another part of the code) let idAgain = Symbol.for("id"); // the same symbol @@ -218,32 +217,39 @@ Symbols inside the registry are called *global symbols*. If we want an applicati ```smart header="That sounds like Ruby" In some programming languages, like Ruby, there's a single symbol per name. -In JavaScript, as we can see, that's right for global symbols. +In JavaScript, as we can see, that's true for global symbols. ``` ### Symbol.keyFor -For global symbols, not only `Symbol.for(key)` returns a symbol by name, but there's a reverse call: `Symbol.keyFor(sym)`, that does the reverse: returns a name by a global symbol. +We have seen that for global symbols, `Symbol.for(key)` returns a symbol by name. To do the opposite -- return a name by global symbol -- we can use: `Symbol.keyFor(sym)`: For instance: ```js run +// get symbol by name let sym = Symbol.for("name"); let sym2 = Symbol.for("id"); -// get name from symbol +// get name by symbol alert( Symbol.keyFor(sym) ); // name alert( Symbol.keyFor(sym2) ); // id ``` -The `Symbol.keyFor` internally uses the global symbol registry to look up the key for the symbol. So it doesn't work for non-global symbols. If the symbol is not global, it won't be able to find it and return `undefined`. +The `Symbol.keyFor` internally uses the global symbol registry to look up the key for the symbol. So it doesn't work for non-global symbols. If the symbol is not global, it won't be able to find it and returns `undefined`. + +That said, all symbols have the `description` property. For instance: ```js run -alert( Symbol.keyFor(Symbol.for("name")) ); // name, global symbol +let globalSymbol = Symbol.for("name"); +let localSymbol = Symbol("name"); + +alert( Symbol.keyFor(globalSymbol) ); // name, global symbol +alert( Symbol.keyFor(localSymbol) ); // undefined, not global -alert( Symbol.keyFor(Symbol("name2")) ); // undefined, the argument isn't a global symbol +alert( localSymbol.description ); // name ``` ## System symbols @@ -266,17 +272,18 @@ Other symbols will also become familiar when we study the corresponding language `Symbol` is a primitive type for unique identifiers. -Symbols are created with `Symbol()` call with an optional description. +Symbols are created with `Symbol()` call with an optional description (name). -Symbols are always different values, even if they have the same name. If we want same-named symbols to be equal, then we should use the global registry: `Symbol.for(key)` returns (creates if needed) a global symbol with `key` as the name. Multiple calls of `Symbol.for` return exactly the same symbol. +Symbols are always different values, even if they have the same name. If we want same-named symbols to be equal, then we should use the global registry: `Symbol.for(key)` returns (creates if needed) a global symbol with `key` as the name. Multiple calls of `Symbol.for` with the same `key` return exactly the same symbol. Symbols have two main use cases: 1. "Hidden" object properties. - If we want to add a property into an object that "belongs" to another script or a library, we can create a symbol and use it as a property key. A symbolic property does not appear in `for..in`, so it won't be occasionally listed. Also it won't be accessed directly, because another script does not have our symbol, so it will not occasionally intervene into its actions. + + If we want to add a property into an object that "belongs" to another script or a library, we can create a symbol and use it as a property key. A symbolic property does not appear in `for..in`, so it won't be accidentally processed together with other properties. Also it won't be accessed directly, because another script does not have our symbol. So the property will be protected from accidental use or overwrite. So we can "covertly" hide something into objects that we need, but others should not see, using symbolic properties. 2. There are many system symbols used by JavaScript which are accessible as `Symbol.*`. We can use them to alter some built-in behaviors. For instance, later in the tutorial we'll use `Symbol.iterator` for [iterables](info:iterable), `Symbol.toPrimitive` to setup [object-to-primitive conversion](info:object-toprimitive) and so on. -Technically, symbols are not 100% hidden. There is a built-in method [Object.getOwnPropertySymbols(obj)](mdn:js/Object/getOwnPropertySymbols) that allows us to get all symbols. Also there is a method named [Reflect.ownKeys(obj)](mdn:js/Reflect/ownKeys) that returns *all* keys of an object including symbolic ones. So they are not really hidden. But most libraries, built-in methods and syntax constructs adhere to a common agreement that they are. And the one who explicitly calls the aforementioned methods probably understands well what he's doing. +Technically, symbols are not 100% hidden. There is a built-in method [Object.getOwnPropertySymbols(obj)](mdn:js/Object/getOwnPropertySymbols) that allows us to get all symbols. Also there is a method named [Reflect.ownKeys(obj)](mdn:js/Reflect/ownKeys) that returns *all* keys of an object including symbolic ones. But most libraries, built-in functions and syntax constructs don't use these methods. diff --git a/1-js/04-object-basics/09-object-toprimitive/article.md b/1-js/04-object-basics/09-object-toprimitive/article.md new file mode 100644 index 000000000..fa68da583 --- /dev/null +++ b/1-js/04-object-basics/09-object-toprimitive/article.md @@ -0,0 +1,280 @@ + +# Object to primitive conversion + +What happens when objects are added `obj1 + obj2`, subtracted `obj1 - obj2` or printed using `alert(obj)`? + +JavaScript doesn't allow you to customize how operators work on objects. Unlike some other programming languages, such as Ruby or C++, we can't implement a special object method to handle addition (or other operators). + +In case of such operations, objects are auto-converted to primitives, and then the operation is carried out over these primitives and results in a primitive value. + +That's an important limitation: the result of `obj1 + obj2` (or another math operation) can't be another object! + +E.g. we can't make objects representing vectors or matrices (or achievements or whatever), add them and expect a "summed" object as the result. Such architectural feats are automatically "off the board". + +So, because we can't technically do much here, there's no maths with objects in real projects. When it happens, with rare exceptions, it's because of a coding mistake. + +In this chapter we'll cover how an object converts to primitive and how to customize it. + +We have two purposes: + +1. It will allow us to understand what's going on in case of coding mistakes, when such an operation happened accidentally. +2. There are exceptions, where such operations are possible and look good. E.g. subtracting or comparing dates (`Date` objects). We'll come across them later. + +## Conversion rules + +In the chapter <info:type-conversions> we've seen the rules for numeric, string and boolean conversions of primitives. But we left a gap for objects. Now, as we know about methods and symbols it becomes possible to fill it. + +1. There's no conversion to boolean. All objects are `true` in a boolean context, as simple as that. There exist only numeric and string conversions. +2. The numeric conversion happens when we subtract objects or apply mathematical functions. For instance, `Date` objects (to be covered in the chapter <info:date>) can be subtracted, and the result of `date1 - date2` is the time difference between two dates. +3. As for the string conversion -- it usually happens when we output an object with `alert(obj)` and in similar contexts. + +We can implement string and numeric conversion by ourselves, using special object methods. + +Now let's get into technical details, because it's the only way to cover the topic in-depth. + +## Hints + +How does JavaScript decide which conversion to apply? + +There are three variants of type conversion, that happen in various situations. They're called "hints", as described in the [specification](https://tc39.github.io/ecma262/#sec-toprimitive): + +`"string"` +: For an object-to-string conversion, when we're doing an operation on an object that expects a string, like `alert`: + + ```js + // output + alert(obj); + + // using object as a property key + anotherObj[obj] = 123; + ``` + +`"number"` +: For an object-to-number conversion, like when we're doing maths: + + ```js + // explicit conversion + let num = Number(obj); + + // maths (except binary plus) + let n = +obj; // unary plus + let delta = date1 - date2; + + // less/greater comparison + let greater = user1 > user2; + ``` + + Most built-in mathematical functions also include such conversion. + +`"default"` +: Occurs in rare cases when the operator is "not sure" what type to expect. + + For instance, binary plus `+` can work both with strings (concatenates them) and numbers (adds them). So if a binary plus gets an object as an argument, it uses the `"default"` hint to convert it. + + Also, if an object is compared using `==` with a string, number or a symbol, it's also unclear which conversion should be done, so the `"default"` hint is used. + + ```js + // binary plus uses the "default" hint + let total = obj1 + obj2; + + // obj == number uses the "default" hint + if (user == 1) { ... }; + ``` + + The greater and less comparison operators, such as `<` `>`, can work with both strings and numbers too. Still, they use the `"number"` hint, not `"default"`. That's for historical reasons. + +In practice though, things are a bit simpler. + +All built-in objects except for one case (`Date` object, we'll learn it later) implement `"default"` conversion the same way as `"number"`. And we probably should do the same. + +Still, it's important to know about all 3 hints, soon we'll see why. + +**To do the conversion, JavaScript tries to find and call three object methods:** + +1. Call `obj[Symbol.toPrimitive](hint)` - the method with the symbolic key `Symbol.toPrimitive` (system symbol), if such method exists, +2. Otherwise if hint is `"string"` + - try calling `obj.toString()` or `obj.valueOf()`, whatever exists. +3. Otherwise if hint is `"number"` or `"default"` + - try calling `obj.valueOf()` or `obj.toString()`, whatever exists. + +## Symbol.toPrimitive + +Let's start from the first method. There's a built-in symbol named `Symbol.toPrimitive` that should be used to name the conversion method, like this: + +```js +obj[Symbol.toPrimitive] = function(hint) { + // here goes the code to convert this object to a primitive + // it must return a primitive value + // hint = one of "string", "number", "default" +}; +``` + +If the method `Symbol.toPrimitive` exists, it's used for all hints, and no more methods are needed. + +For instance, here `user` object implements it: + +```js run +let user = { + name: "John", + money: 1000, + + [Symbol.toPrimitive](hint) { + alert(`hint: ${hint}`); + return hint == "string" ? `{name: "${this.name}"}` : this.money; + } +}; + +// conversions demo: +alert(user); // hint: string -> {name: "John"} +alert(+user); // hint: number -> 1000 +alert(user + 500); // hint: default -> 1500 +``` + +As we can see from the code, `user` becomes a self-descriptive string or a money amount, depending on the conversion. The single method `user[Symbol.toPrimitive]` handles all conversion cases. + +## toString/valueOf + +If there's no `Symbol.toPrimitive` then JavaScript tries to find methods `toString` and `valueOf`: + +- For the `"string"` hint: call `toString` method, and if it doesn't exist or if it returns an object instead of a primitive value, then call `valueOf` (so `toString` has the priority for string conversions). +- For other hints: call `valueOf`, and if it doesn't exist or if it returns an object instead of a primitive value, then call `toString` (so `valueOf` has the priority for maths). + +Methods `toString` and `valueOf` come from ancient times. They are not symbols (symbols did not exist that long ago), but rather "regular" string-named methods. They provide an alternative "old-style" way to implement the conversion. + +These methods must return a primitive value. If `toString` or `valueOf` returns an object, then it's ignored (same as if there were no method). + +By default, a plain object has following `toString` and `valueOf` methods: + +- The `toString` method returns a string `"[object Object]"`. +- The `valueOf` method returns the object itself. + +Here's the demo: + +```js run +let user = {name: "John"}; + +alert(user); // [object Object] +alert(user.valueOf() === user); // true +``` + +So if we try to use an object as a string, like in an `alert` or so, then by default we see `[object Object]`. + +The default `valueOf` is mentioned here only for the sake of completeness, to avoid any confusion. As you can see, it returns the object itself, and so is ignored. Don't ask me why, that's for historical reasons. So we can assume it doesn't exist. + +Let's implement these methods to customize the conversion. + +For instance, here `user` does the same as above using a combination of `toString` and `valueOf` instead of `Symbol.toPrimitive`: + +```js run +let user = { + name: "John", + money: 1000, + + // for hint="string" + toString() { + return `{name: "${this.name}"}`; + }, + + // for hint="number" or "default" + valueOf() { + return this.money; + } + +}; + +alert(user); // toString -> {name: "John"} +alert(+user); // valueOf -> 1000 +alert(user + 500); // valueOf -> 1500 +``` + +As we can see, the behavior is the same as the previous example with `Symbol.toPrimitive`. + +Often we want a single "catch-all" place to handle all primitive conversions. In this case, we can implement `toString` only, like this: + +```js run +let user = { + name: "John", + + toString() { + return this.name; + } +}; + +alert(user); // toString -> John +alert(user + 500); // toString -> John500 +``` + +In the absence of `Symbol.toPrimitive` and `valueOf`, `toString` will handle all primitive conversions. + +### A conversion can return any primitive type + +The important thing to know about all primitive-conversion methods is that they do not necessarily return the "hinted" primitive. + +There is no control whether `toString` returns exactly a string, or whether `Symbol.toPrimitive` method returns a number for the hint `"number"`. + +The only mandatory thing: these methods must return a primitive, not an object. + +```smart header="Historical notes" +For historical reasons, if `toString` or `valueOf` returns an object, there's no error, but such value is ignored (like if the method didn't exist). That's because in ancient times there was no good "error" concept in JavaScript. + +In contrast, `Symbol.toPrimitive` is stricter, it *must* return a primitive, otherwise there will be an error. +``` + +## Further conversions + +As we know already, many operators and functions perform type conversions, e.g. multiplication `*` converts operands to numbers. + +If we pass an object as an argument, then there are two stages of calculations: +1. The object is converted to a primitive (using the rules described above). +2. If necessary for further calculations, the resulting primitive is also converted. + +For instance: + +```js run +let obj = { + // toString handles all conversions in the absence of other methods + toString() { + return "2"; + } +}; + +alert(obj * 2); // 4, object converted to primitive "2", then multiplication made it a number +``` + +1. The multiplication `obj * 2` first converts the object to primitive (that's a string `"2"`). +2. Then `"2" * 2` becomes `2 * 2` (the string is converted to number). + +Binary plus will concatenate strings in the same situation, as it gladly accepts a string: + +```js run +let obj = { + toString() { + return "2"; + } +}; + +alert(obj + 2); // "22" ("2" + 2), conversion to primitive returned a string => concatenation +``` + +## Summary + +The object-to-primitive conversion is called automatically by many built-in functions and operators that expect a primitive as a value. + +There are 3 types (hints) of it: +- `"string"` (for `alert` and other operations that need a string) +- `"number"` (for maths) +- `"default"` (few operators, usually objects implement it the same way as `"number"`) + +The specification describes explicitly which operator uses which hint. + +The conversion algorithm is: + +1. Call `obj[Symbol.toPrimitive](hint)` if the method exists, +2. Otherwise if hint is `"string"` + - try calling `obj.toString()` or `obj.valueOf()`, whatever exists. +3. Otherwise if hint is `"number"` or `"default"` + - try calling `obj.valueOf()` or `obj.toString()`, whatever exists. + +All these methods must return a primitive to work (if defined). + +In practice, it's often enough to implement only `obj.toString()` as a "catch-all" method for string conversions that should return a "human-readable" representation of an object, for logging or debugging purposes. diff --git a/1-js/05-data-types/01-primitives-methods/1-string-new-property/solution.md b/1-js/05-data-types/01-primitives-methods/1-string-new-property/solution.md index a169f7769..fd22a4653 100644 --- a/1-js/05-data-types/01-primitives-methods/1-string-new-property/solution.md +++ b/1-js/05-data-types/01-primitives-methods/1-string-new-property/solution.md @@ -6,26 +6,19 @@ let str = "Hello"; str.test = 5; // (*) -alert(str.test); +alert(str.test); ``` -There may be two kinds of result: -1. `undefined` -2. An error. +Depending on whether you have `use strict` or not, the result may be: +1. `undefined` (no strict mode) +2. An error (strict mode). Why? Let's replay what's happening at line `(*)`: 1. When a property of `str` is accessed, a "wrapper object" is created. -2. The operation with the property is carried out on it. So, the object gets the `test` property. -3. The operation finishes and the "wrapper object" disappears. - -So, on the last line, `str` has no trace of the property. A new wrapper object for every object operation on a string. - -Some browsers though may decide to further limit the programmer and disallow to assign properties to primitives at all. That's why in practice we can also see errors at line `(*)`. It's a little bit farther from the specification though. +2. In strict mode, writing into it is an error. +3. Otherwise, the operation with the property is carried on, the object gets the `test` property, but after that the "wrapper object" disappears, so in the last line `str` has no trace of the property. **This example clearly shows that primitives are not objects.** -They just can not store data. - -All property/method operations are performed with the help of temporary objects. - +They can't store additional data. diff --git a/1-js/05-data-types/01-primitives-methods/1-string-new-property/task.md b/1-js/05-data-types/01-primitives-methods/1-string-new-property/task.md index 50c781ea5..208f84cc7 100644 --- a/1-js/05-data-types/01-primitives-methods/1-string-new-property/task.md +++ b/1-js/05-data-types/01-primitives-methods/1-string-new-property/task.md @@ -15,4 +15,4 @@ str.test = 5; alert(str.test); ``` -How do you think, will it work? What will be shown? +What do you think, will it work? What will be shown? diff --git a/1-js/05-data-types/01-primitives-methods/article.md b/1-js/05-data-types/01-primitives-methods/article.md index a2dcceb19..69e7196e9 100644 --- a/1-js/05-data-types/01-primitives-methods/article.md +++ b/1-js/05-data-types/01-primitives-methods/article.md @@ -1,20 +1,18 @@ # Methods of primitives -JavaScript allows us to work with primitives (strings, numbers, etc.) as if they were objects. - -They also provide methods to call as such. We will study those soon, but first we'll see how it works because, of course, primitives are not objects (and here we will make it even clearer). +JavaScript allows us to work with primitives (strings, numbers, etc.) as if they were objects. They also provide methods to call as such. We will study those soon, but first we'll see how it works because, of course, primitives are not objects (and here we will make it even clearer). Let's look at the key distinctions between primitives and objects. A primitive - Is a value of a primitive type. -- There are 6 primitive types: `string`, `number`, `boolean`, `symbol`, `null` and `undefined`. +- There are 7 primitive types: `string`, `number`, `bigint`, `boolean`, `symbol`, `null` and `undefined`. An object - Is capable of storing multiple values as properties. -- Can be created with `{}`, for instance: `{name: "John", age: 30}`. There are other kinds of objects in JavaScript; functions, for example, are objects. +- Can be created with `{}`, for instance: `{name: "John", age: 30}`. There are other kinds of objects in JavaScript: functions, for example, are objects. One of the best things about objects is that we can store a function as one of its properties. @@ -35,24 +33,24 @@ Many built-in objects already exist, such as those that work with dates, errors, But, these features come with a cost! -Objects are "heavier" than primitives. They require additional resources to support the internal machinery. But as properties and methods are very useful in programming, JavaScript engines try to optimize them to reduce the additional burden. +Objects are "heavier" than primitives. They require additional resources to support the internal machinery. ## A primitive as an object Here's the paradox faced by the creator of JavaScript: -- There are many things one would want to do with a primitive like a string or a number. It would be great to access them as methods. +- There are many things one would want to do with a primitive, like a string or a number. It would be great to access them using methods. - Primitives must be as fast and lightweight as possible. The solution looks a little bit awkward, but here it is: 1. Primitives are still primitive. A single value, as desired. 2. The language allows access to methods and properties of strings, numbers, booleans and symbols. -3. When this happens, a special "object wrapper" that provides the extra functionality is created, and then is destroyed. +3. In order for that to work, a special "object wrapper" that provides the extra functionality is created, and then is destroyed. -The "object wrappers" are different for each primitive type and are called: `String`, `Number`, `Boolean` and `Symbol`. Thus, they provide different sets of methods. +The "object wrappers" are different for each primitive type and are called: `String`, `Number`, `Boolean`, `Symbol` and `BigInt`. Thus, they provide different sets of methods. -For instance, there exists a method [str.toUpperCase()](https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/String/toUpperCase) that returns a capitalized string. +For instance, there exists a string method [str.toUpperCase()](https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/String/toUpperCase) that returns a capitalized `str`. Here's how it works: @@ -84,31 +82,32 @@ We'll see more specific methods in chapters <info:number> and <info:string>. ````warn header="Constructors `String/Number/Boolean` are for internal use only" -Some languages like Java allow us to create "wrapper objects" for primitives explicitly using a syntax like `new Number(1)` or `new Boolean(false)`. +Some languages like Java allow us to explicitly create "wrapper objects" for primitives using a syntax like `new Number(1)` or `new Boolean(false)`. In JavaScript, that's also possible for historical reasons, but highly **unrecommended**. Things will go crazy in several places. For instance: ```js run -alert( typeof 1 ); // "number" +alert( typeof 0 ); // "number" -alert( typeof new Number(1) ); // "object"! +alert( typeof new Number(0) ); // "object"! ``` -And because what follows, `zero`, is an object, the alert will show up: +Objects are always truthy in `if`, so here the alert will show up: ```js run let zero = new Number(0); if (zero) { // zero is true, because it's an object - alert( "zero is truthy?!?" ); + alert( "zero is truthy!?!" ); } ``` -On the other hand, using the same functions `String/Number/Boolean` without `new` is a totally sane and useful thing. They convert a value to the corresponding type: to a string, a number, or a boolean (primitive). +On the other hand, using the same functions `String/Number/Boolean` without `new` is totally fine and useful thing. They convert a value to the corresponding type: to a string, a number, or a boolean (primitive). For example, this is entirely valid: + ```js let num = Number("123"); // convert a string to number ``` diff --git a/1-js/05-data-types/02-number/2-why-rounded-down/solution.md b/1-js/05-data-types/02-number/2-why-rounded-down/solution.md index a17a4671a..4bcd74512 100644 --- a/1-js/05-data-types/02-number/2-why-rounded-down/solution.md +++ b/1-js/05-data-types/02-number/2-why-rounded-down/solution.md @@ -28,6 +28,6 @@ Note that `63.5` has no precision loss at all. That's because the decimal part ` ```js run -alert( Math.round(6.35 * 10) / 10); // 6.35 -> 63.5 -> 64(rounded) -> 6.4 +alert( Math.round(6.35 * 10) / 10 ); // 6.35 -> 63.5 -> 64(rounded) -> 6.4 ``` diff --git a/1-js/05-data-types/02-number/3-repeat-until-number/_js.view/test.js b/1-js/05-data-types/02-number/3-repeat-until-number/_js.view/test.js index 219fa8068..6bd0123db 100644 --- a/1-js/05-data-types/02-number/3-repeat-until-number/_js.view/test.js +++ b/1-js/05-data-types/02-number/3-repeat-until-number/_js.view/test.js @@ -18,7 +18,7 @@ describe("readNumber", function() { assert.strictEqual(readNumber(), 0); }); - it("continues the loop unti meets a number", function() { + it("continues the loop until meets a number", function() { prompt.onCall(0).returns("not a number"); prompt.onCall(1).returns("not a number again"); prompt.onCall(2).returns("1"); @@ -35,4 +35,4 @@ describe("readNumber", function() { assert.isNull(readNumber()); }); -}); \ No newline at end of file +}); diff --git a/1-js/05-data-types/02-number/article.md b/1-js/05-data-types/02-number/article.md index af06706cd..8e41f673d 100644 --- a/1-js/05-data-types/02-number/article.md +++ b/1-js/05-data-types/02-number/article.md @@ -1,8 +1,12 @@ # Numbers -All numbers in JavaScript are stored in 64-bit format [IEEE-754](https://en.wikipedia.org/wiki/IEEE_754-2008_revision), also known as "double precision floating point numbers". +In modern JavaScript, there are two types of numbers: -Let's recap and expand upon what we currently know about them. +1. Regular numbers in JavaScript are stored in 64-bit format [IEEE-754](https://en.wikipedia.org/wiki/IEEE_754), also known as "double precision floating point numbers". These are numbers that we're using most of the time, and we'll talk about them in this chapter. + +2. BigInt numbers represent integers of arbitrary length. They are sometimes needed because a regular integer number can't safely exceed <code>(2<sup>53</sup>-1)</code> or be less than <code>-(2<sup>53</sup>-1)</code>, as we mentioned earlier in the chapter <info:types>. As bigints are used in a few special areas, we devote them to a special chapter <info:bigint>. + +So here we'll talk about regular numbers. Let's expand our knowledge of them. ## More ways to write a number @@ -12,46 +16,56 @@ Imagine we need to write 1 billion. The obvious way is: let billion = 1000000000; ``` -But in real life we usually avoid writing a long string of zeroes as it's easy to mistype. Also, we are lazy. We will usually write something like `"1bn"` for a billion or `"7.3bn"` for 7 billion 300 million. The same is true for most large numbers. +We also can use underscore `_` as the separator: + +```js +let billion = 1_000_000_000; +``` + +Here the underscore `_` plays the role of the "[syntactic sugar](https://en.wikipedia.org/wiki/Syntactic_sugar)", it makes the number more readable. The JavaScript engine simply ignores `_` between digits, so it's exactly the same one billion as above. -In JavaScript, we shorten a number by appending the letter `"e"` to the number and specifying the zeroes count: +In real life though, we try to avoid writing long sequences of zeroes. We're too lazy for that. We'll try to write something like `"1bn"` for a billion or `"7.3bn"` for 7 billion 300 million. The same is true for most large numbers. + +In JavaScript, we can shorten a number by appending the letter `"e"` to it and specifying the zeroes count: ```js run let billion = 1e9; // 1 billion, literally: 1 and 9 zeroes -alert( 7.3e9 ); // 7.3 billions (7,300,000,000) +alert( 7.3e9 ); // 7.3 billions (same as 7300000000 or 7_300_000_000) ``` -In other words, `"e"` multiplies the number by `1` with the given zeroes count. +In other words, `e` multiplies the number by `1` with the given zeroes count. ```js -1e3 = 1 * 1000 -1.23e6 = 1.23 * 1000000 +1e3 === 1 * 1000; // e3 means *1000 +1.23e6 === 1.23 * 1000000; // e6 means *1000000 ``` - -Now let's write something very small. Say, 1 microsecond (one millionth of a second): +Now let's write something very small. Say, 1 microsecond (one-millionth of a second): ```js -let ms = 0.000001; +let mсs = 0.000001; ``` -Just like before, using `"e"` can help. If we'd like to avoid writing the zeroes explicitly, we could say: +Just like before, using `"e"` can help. If we'd like to avoid writing the zeroes explicitly, we could write the same as: ```js -let ms = 1e-6; // six zeroes to the left from 1 +let mcs = 1e-6; // five zeroes to the left from 1 ``` -If we count the zeroes in `0.000001`, there are 6 of them. So naturally it's `1e-6`. +If we count the zeroes in `0.000001`, there are 6 of them. So naturally it's `1e-6`. In other words, a negative number after `"e"` means a division by 1 with the given number of zeroes: ```js // -3 divides by 1 with 3 zeroes -1e-3 = 1 / 1000 (=0.001) +1e-3 === 1 / 1000; // 0.001 // -6 divides by 1 with 6 zeroes -1.23e-6 = 1.23 / 1000000 (=0.00000123) +1.23e-6 === 1.23 / 1000000; // 0.00000123 + +// an example with a bigger number +1234e-2 === 1234 / 100; // 12.34, decimal point moves 2 times ``` ### Hex, binary and octal numbers @@ -89,13 +103,13 @@ alert( num.toString(16) ); // ff alert( num.toString(2) ); // 11111111 ``` -The `base` can vary from `2` to `36`. By default it's `10`. +The `base` can vary from `2` to `36`. By default, it's `10`. Common use cases for this are: - **base=16** is used for hex colors, character encodings etc, digits can be `0..9` or `A..F`. - **base=2** is mostly for debugging bitwise operations, digits can be `0` or `1`. -- **base=36** is the maximum, digits can be `0..9` or `A..Z`. The whole latin alphabet is used to represent a number. A funny, but useful case for `36` is when we need to turn a long numeric identifier into something shorter, for example to make a short url. Can simply represent it in the numeral system with base `36`: +- **base=36** is the maximum, digits can be `0..9` or `A..Z`. The whole Latin alphabet is used to represent a number. A funny, but useful case for `36` is when we need to turn a long numeric identifier into something shorter, for example, to make a short url. Can simply represent it in the numeral system with base `36`: ```js run alert( 123456..toString(36) ); // 2n9c @@ -104,9 +118,10 @@ Common use cases for this are: ```warn header="Two dots to call a method" Please note that two dots in `123456..toString(36)` is not a typo. If we want to call a method directly on a number, like `toString` in the example above, then we need to place two dots `..` after it. -If we placed a single dot: `123456.toString(36)`, then there would be an error, because JavaScript syntax implies the decimal part after the first dot. And if we place one more dot, then JavaScript knows that the decimal part is empty and now goes the method. +If we placed a single dot: `123456.toString(36)`, then there would be an error, because JavaScript syntax implies the decimal part after the first dot. And if we place one more dot, then JavaScript knows that the decimal part is empty and now uses the method. Also could write `(123456).toString(36)`. + ``` ## Rounding @@ -122,7 +137,7 @@ There are several built-in functions for rounding: : Rounds up: `3.1` becomes `4`, and `-1.1` becomes `-1`. `Math.round` -: Rounds to the nearest integer: `3.1` becomes `3`, `3.6` becomes `4` and `-1.1` becomes `-1`. +: Rounds to the nearest integer: `3.1` becomes `3`, `3.6` becomes `4`. In the middle cases `3.5` rounds up to `4`, and `-3.5` rounds up to `-3`. `Math.trunc` (not supported by Internet Explorer) : Removes anything after the decimal point without rounding: `3.1` becomes `3`, `-1.1` becomes `-1`. @@ -132,8 +147,10 @@ Here's the table to summarize the differences between them: | | `Math.floor` | `Math.ceil` | `Math.round` | `Math.trunc` | |---|---------|--------|---------|---------| |`3.1`| `3` | `4` | `3` | `3` | +|`3.5`| `3` | `4` | `4` | `3` | |`3.6`| `3` | `4` | `4` | `3` | |`-1.1`| `-2` | `-1` | `-1` | `-1` | +|`-1.5`| `-2` | `-1` | `-1` | `-1` | |`-1.6`| `-2` | `-1` | `-2` | `-1` | @@ -149,7 +166,7 @@ There are two ways to do so: ```js run let num = 1.23456; - alert( Math.floor(num * 100) / 100 ); // 1.23456 -> 123.456 -> 123 -> 1.23 + alert( Math.round(num * 100) / 100 ); // 1.23456 -> 123.456 -> 123 -> 1.23 ``` 2. The method [toFixed(n)](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/toFixed) rounds the number to `n` digits after the point and returns a string representation of the result. @@ -166,20 +183,20 @@ There are two ways to do so: alert( num.toFixed(1) ); // "12.4" ``` - Please note that result of `toFixed` is a string. If the decimal part is shorter than required, zeroes are appended to the end: + Please note that the result of `toFixed` is a string. If the decimal part is shorter than required, zeroes are appended to the end: ```js run let num = 12.34; alert( num.toFixed(5) ); // "12.34000", added zeroes to make exactly 5 digits ``` - We can convert it to a number using the unary plus or a `Number()` call: `+num.toFixed(5)`. + We can convert it to a number using the unary plus or a `Number()` call, e.g. write `+num.toFixed(5)`. ## Imprecise calculations -Internally, a number is represented in 64-bit format [IEEE-754](https://en.wikipedia.org/wiki/IEEE_754-2008_revision), so there are exactly 64 bits to store a number: 52 of them are used to store the digits, 11 of them store the position of the decimal point (they are zero for integer numbers), and 1 bit is for the sign. +Internally, a number is represented in 64-bit format [IEEE-754](https://en.wikipedia.org/wiki/IEEE_754), so there are exactly 64 bits to store a number: 52 of them are used to store the digits, 11 of them store the position of the decimal point, and 1 bit is for the sign. -If a number is too big, it would overflow the 64-bit storage, potentially giving an infinity: +If a number is really huge, it may overflow the 64-bit storage and become a special numeric value `Infinity`: ```js run alert( 1e500 ); // Infinity @@ -187,7 +204,7 @@ alert( 1e500 ); // Infinity What may be a little less obvious, but happens quite often, is the loss of precision. -Consider this (falsy!) test: +Consider this (falsy!) equality test: ```js run alert( 0.1 + 0.2 == 0.3 ); // *!*false*/!* @@ -201,19 +218,25 @@ Strange! What is it then if not `0.3`? alert( 0.1 + 0.2 ); // 0.30000000000000004 ``` -Ouch! There are more consequences than an incorrect comparison here. Imagine you're making an e-shopping site and the visitor puts `$0.10` and `$0.20` goods into their chart. The order total will be `$0.30000000000000004`. That would surprise anyone. +Ouch! Imagine you're making an e-shopping site and the visitor puts `$0.10` and `$0.20` goods into their cart. The order total will be `$0.30000000000000004`. That would surprise anyone. But why does this happen? -A number is stored in memory in its binary form, a sequence of ones and zeroes. But fractions like `0.1`, `0.2` that look simple in the decimal numeric system are actually unending fractions in their binary form. +A number is stored in memory in its binary form, a sequence of bits - ones and zeroes. But fractions like `0.1`, `0.2` that look simple in the decimal numeric system are actually unending fractions in their binary form. -In other words, what is `0.1`? It is one divided by ten `1/10`, one-tenth. In decimal numeral system such numbers are easily representable. Compare it to one-third: `1/3`. It becomes an endless fraction `0.33333(3)`. +```js run +alert(0.1.toString(2)); // 0.0001100110011001100110011001100110011001100110011001101 +alert(0.2.toString(2)); // 0.001100110011001100110011001100110011001100110011001101 +alert((0.1 + 0.2).toString(2)); // 0.0100110011001100110011001100110011001100110011001101 +``` + +What is `0.1`? It is one divided by ten `1/10`, one-tenth. In the decimal numeral system, such numbers are easily representable. Compare it to one-third: `1/3`. It becomes an endless fraction `0.33333(3)`. So, division by powers `10` is guaranteed to work well in the decimal system, but division by `3` is not. For the same reason, in the binary numeral system, the division by powers of `2` is guaranteed to work, but `1/10` becomes an endless binary fraction. There's just no way to store *exactly 0.1* or *exactly 0.2* using the binary system, just like there is no way to store one-third as a decimal fraction. -The numeric format IEEE-754 solves this by rounding to the nearest possible number. These rounding rules normally don't allow us to see that "tiny precision loss", so the number shows up as `0.3`. But beware, the loss still exists. +The numeric format IEEE-754 solves this by rounding to the nearest possible number. These rounding rules normally don't allow us to see that "tiny precision loss", but it exists. We can see this in action: ```js run @@ -227,14 +250,14 @@ That's why `0.1 + 0.2` is not exactly `0.3`. ```smart header="Not only JavaScript" The same issue exists in many other programming languages. -PHP, Java, C, Perl, Ruby give exactly the same result, because they are based on the same numeric format. +PHP, Java, C, Perl, and Ruby give exactly the same result, because they are based on the same numeric format. ``` Can we work around the problem? Sure, the most reliable method is to round the result with the help of a method [toFixed(n)](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/toFixed): ```js run let sum = 0.1 + 0.2; -alert( sum.toFixed(2) ); // 0.30 +alert( sum.toFixed(2) ); // "0.30" ``` Please note that `toFixed` always returns a string. It ensures that it has 2 digits after the decimal point. That's actually convenient if we have an e-shopping and need to show `$0.30`. For other cases, we can use the unary plus to coerce it into a number: @@ -251,7 +274,7 @@ alert( (0.1 * 10 + 0.2 * 10) / 10 ); // 0.3 alert( (0.28 * 100 + 0.14 * 100) / 100); // 0.4200000000000001 ``` -So, multiply/divide approach reduces the error, but doesn't remove it totally. +So, the multiply/divide approach reduces the error, but doesn't remove it totally. Sometimes we could try to evade fractions at all. Like if we're dealing with a shop, then we can store prices in cents instead of dollars. But what if we apply a discount of 30%? In practice, totally evading fractions is rarely possible. Just round them to cut "tails" when needed. @@ -271,13 +294,11 @@ JavaScript doesn't trigger an error in such events. It does its best to fit the ```smart header="Two zeroes" Another funny consequence of the internal representation of numbers is the existence of two zeroes: `0` and `-0`. -That's because a sign is represented by a single bit, so every number can be positive or negative, including a zero. +That's because a sign is represented by a single bit, so it can be set or not set for any number including a zero. -In most cases the distinction is unnoticeable, because operators are suited to treat them as the same. +In most cases, the distinction is unnoticeable, because operators are suited to treat them as the same. ``` - - ## Tests: isFinite and isNaN Remember these two special numeric values? @@ -295,7 +316,7 @@ They belong to the type `number`, but are not "normal" numbers, so there are spe alert( isNaN("str") ); // true ``` - But do we need this function? Can't we just use the comparison `=== NaN`? Sorry, but the answer is no. The value `NaN` is unique in that it does not equal anything, including itself: + But do we need this function? Can't we just use the comparison `=== NaN`? Unfortunately not. The value `NaN` is unique in that it does not equal anything, including itself: ```js run alert( NaN === NaN ); // false @@ -319,18 +340,46 @@ let num = +prompt("Enter a number", ''); alert( isFinite(num) ); ``` -Please note that an empty or a space-only string is treated as `0` in all numeric functions including `isFinite`. +Please note that an empty or a space-only string is treated as `0` in all numeric functions including `isFinite`. -```smart header="Compare with `Object.is`" +````smart header="`Number.isNaN` and `Number.isFinite`" +[Number.isNaN](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/isNaN) and [Number.isFinite](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/isFinite) methods are the more "strict" versions of `isNaN` and `isFinite` functions. They do not autoconvert their argument into a number, but check if it belongs to the `number` type instead. -There is a special built-in method [Object.is](mdn:js/Object/is) that compares values like `===`, but is more reliable for two edge cases: +- `Number.isNaN(value)` returns `true` if the argument belongs to the `number` type and it is `NaN`. In any other case, it returns `false`. + + ```js run + alert( Number.isNaN(NaN) ); // true + alert( Number.isNaN("str" / 2) ); // true + + // Note the difference: + alert( Number.isNaN("str") ); // false, because "str" belongs to the string type, not the number type + alert( isNaN("str") ); // true, because isNaN converts string "str" into a number and gets NaN as a result of this conversion + ``` + +- `Number.isFinite(value)` returns `true` if the argument belongs to the `number` type and it is not `NaN/Infinity/-Infinity`. In any other case, it returns `false`. + + ```js run + alert( Number.isFinite(123) ); // true + alert( Number.isFinite(Infinity) ); // false + alert( Number.isFinite(2 / 0) ); // false + + // Note the difference: + alert( Number.isFinite("123") ); // false, because "123" belongs to the string type, not the number type + alert( isFinite("123") ); // true, because isFinite converts string "123" into a number 123 + ``` + +In a way, `Number.isNaN` and `Number.isFinite` are simpler and more straightforward than `isNaN` and `isFinite` functions. In practice though, `isNaN` and `isFinite` are mostly used, as they're shorter to write. +```` + +```smart header="Comparison with `Object.is`" +There is a special built-in method `Object.is` that compares values like `===`, but is more reliable for two edge cases: 1. It works with `NaN`: `Object.is(NaN, NaN) === true`, that's a good thing. -2. Values `0` and `-0` are different: `Object.is(0, -0) === false`, it rarely matters, but these values technically are different. +2. Values `0` and `-0` are different: `Object.is(0, -0) === false`, technically that's correct because internally the number has a sign bit that may be different even if all other bits are zeroes. In all other cases, `Object.is(a, b)` is the same as `a === b`. -This way of comparison is often used in JavaScript specification. When an internal algorithm needs to compare two values for being exactly the same, it uses `Object.is` (internally called [SameValue](https://tc39.github.io/ecma262/#sec-samevalue)). +We mention `Object.is` here, because it's often used in JavaScript specification. When an internal algorithm needs to compare two values for being exactly the same, it uses `Object.is` (internally called [SameValue](https://tc39.github.io/ecma262/#sec-samevalue)). ``` @@ -344,7 +393,7 @@ alert( +"100px" ); // NaN The sole exception is spaces at the beginning or at the end of the string, as they are ignored. -But in real life we often have values in units, like `"100px"` or `"12pt"` in CSS. Also in many countries the currency symbol goes after the amount, so we have `"19€"` and would like to extract a numeric value out of that. +But in real life, we often have values in units, like `"100px"` or `"12pt"` in CSS. Also in many countries, the currency symbol goes after the amount, so we have `"19€"` and would like to extract a numeric value out of that. That's what `parseInt` and `parseFloat` are for. @@ -382,7 +431,7 @@ JavaScript has a built-in [Math](https://developer.mozilla.org/en/docs/Web/JavaS A few examples: `Math.random()` -: Returns a random number from 0 to 1 (not including 1) +: Returns a random number from 0 to 1 (not including 1). ```js run alert( Math.random() ); // 0.1234567894322 @@ -390,8 +439,8 @@ A few examples: alert( Math.random() ); // ... (any random numbers) ``` -`Math.max(a, b, c...)` / `Math.min(a, b, c...)` -: Returns the greatest/smallest from the arbitrary number of arguments. +`Math.max(a, b, c...)` and `Math.min(a, b, c...)` +: Returns the greatest and smallest from the arbitrary number of arguments. ```js run alert( Math.max(3, 5, -10, 0, 1) ); // 5 @@ -399,27 +448,34 @@ A few examples: ``` `Math.pow(n, power)` -: Returns `n` raised the given power +: Returns `n` raised to the given power. ```js run alert( Math.pow(2, 10) ); // 2 in power 10 = 1024 ``` -There are more functions and constants in `Math` object, including trigonometry, which you can find in the [docs for the Math](https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Math) object. +There are more functions and constants in `Math` object, including trigonometry, which you can find in the [docs for the Math object](https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Math). ## Summary -To write big numbers: +To write numbers with many zeroes: -- Append `"e"` with the zeroes count to the number. Like: `123e6` is `123` with 6 zeroes. -- A negative number after `"e"` causes the number to be divided by 1 with given zeroes. That's for one-millionth or such. +- Append `"e"` with the zeroes count to the number. Like: `123e6` is the same as `123` with 6 zeroes `123000000`. +- A negative number after `"e"` causes the number to be divided by 1 with given zeroes. E.g. `123e-6` means `0.000123` (`123` millionths). For different numeral systems: -- Can write numbers directly in hex (`0x`), octal (`0o`) and binary (`0b`) systems -- `parseInt(str, base)` parses an integer from any numeral system with base: `2 ≤ base ≤ 36`. +- Can write numbers directly in hex (`0x`), octal (`0o`) and binary (`0b`) systems. +- `parseInt(str, base)` parses the string `str` into an integer in numeral system with given `base`, `2 ≤ base ≤ 36`. - `num.toString(base)` converts a number to a string in the numeral system with the given `base`. +For regular number tests: + +- `isNaN(value)` converts its argument to a number and then tests it for being `NaN` +- `Number.isNaN(value)` checks whether its argument belongs to the `number` type, and if so, tests it for being `NaN` +- `isFinite(value)` converts its argument to a number and then tests it for not being `NaN/Infinity/-Infinity` +- `Number.isFinite(value)` checks whether its argument belongs to the `number` type, and if so, tests it for not being `NaN/Infinity/-Infinity` + For converting values like `12pt` and `100px` to a number: - Use `parseInt/parseFloat` for the "soft" conversion, which reads a number from a string and then returns the value they could read before the error. @@ -431,4 +487,4 @@ For fractions: More mathematical functions: -- See the [Math](https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Math) object when you need them. The library is very small, but can cover basic needs. +- See the [Math](https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Math) object when you need them. The library is very small but can cover basic needs. diff --git a/1-js/05-data-types/03-string/1-ucfirst/solution.md b/1-js/05-data-types/03-string/1-ucfirst/solution.md index 4809cf123..be5dd2aaf 100644 --- a/1-js/05-data-types/03-string/1-ucfirst/solution.md +++ b/1-js/05-data-types/03-string/1-ucfirst/solution.md @@ -6,16 +6,11 @@ But we can make a new string based on the existing one, with the uppercased firs let newStr = str[0].toUpperCase() + str.slice(1); ``` -There's a small problem though. If `str` is empty, then `str[0]` is undefined, so we'll get an error. +There's a small problem though. If `str` is empty, then `str[0]` is `undefined`, and as `undefined` doesn't have the `toUpperCase()` method, we'll get an error. -There are two variants here: +The easiest way out is to add a test for an empty string, like this: -1. Use `str.charAt(0)`, as it always returns a string (maybe empty). -2. Add a test for an empty string. - -Here's the 2nd variant: - -```js run +```js run demo function ucFirst(str) { if (!str) return str; @@ -24,4 +19,3 @@ function ucFirst(str) { alert( ucFirst("john") ); // John ``` - diff --git a/1-js/05-data-types/03-string/1-ucfirst/task.md b/1-js/05-data-types/03-string/1-ucfirst/task.md index c0e6ecac4..ed8a1e6a7 100644 --- a/1-js/05-data-types/03-string/1-ucfirst/task.md +++ b/1-js/05-data-types/03-string/1-ucfirst/task.md @@ -2,7 +2,7 @@ importance: 5 --- -# Uppercast the first character +# Uppercase the first character Write a function `ucFirst(str)` that returns the string `str` with the uppercased first character, for instance: diff --git a/1-js/05-data-types/03-string/2-check-spam/solution.md b/1-js/05-data-types/03-string/2-check-spam/solution.md index 893c26497..de8dde57d 100644 --- a/1-js/05-data-types/03-string/2-check-spam/solution.md +++ b/1-js/05-data-types/03-string/2-check-spam/solution.md @@ -1,6 +1,6 @@ To make the search case-insensitive, let's bring the string to lower case and then search: -```js run +```js run demo function checkSpam(str) { let lowerStr = str.toLowerCase(); diff --git a/1-js/05-data-types/03-string/2-check-spam/task.md b/1-js/05-data-types/03-string/2-check-spam/task.md index d073adc05..98b5dd8a0 100644 --- a/1-js/05-data-types/03-string/2-check-spam/task.md +++ b/1-js/05-data-types/03-string/2-check-spam/task.md @@ -4,7 +4,7 @@ importance: 5 # Check for spam -Write a function `checkSpam(str)` that returns `true` if `str` contains 'viagra' or 'XXX', otherwise `false. +Write a function `checkSpam(str)` that returns `true` if `str` contains 'viagra' or 'XXX', otherwise `false`. The function must be case-insensitive: diff --git a/1-js/05-data-types/03-string/3-truncate/solution.md b/1-js/05-data-types/03-string/3-truncate/solution.md index 5546c47ee..d51672ae6 100644 --- a/1-js/05-data-types/03-string/3-truncate/solution.md +++ b/1-js/05-data-types/03-string/3-truncate/solution.md @@ -1,6 +1,6 @@ The maximal length must be `maxlength`, so we need to cut it a little shorter, to give space for the ellipsis. -Note that there is actually a single unicode character for an ellipsis. That's not three dots. +Note that there is actually a single Unicode character for an ellipsis. That's not three dots. ```js run demo function truncate(str, maxlength) { diff --git a/1-js/05-data-types/03-string/3-truncate/task.md b/1-js/05-data-types/03-string/3-truncate/task.md index 6382029f4..c99a5f15a 100644 --- a/1-js/05-data-types/03-string/3-truncate/task.md +++ b/1-js/05-data-types/03-string/3-truncate/task.md @@ -11,7 +11,7 @@ The result of the function should be the truncated (if needed) string. For instance: ```js -truncate("What I'd like to tell on this topic is:", 20) = "What I'd like to te…" +truncate("What I'd like to tell on this topic is:", 20) == "What I'd like to te…" -truncate("Hi everyone!", 20) = "Hi everyone!" +truncate("Hi everyone!", 20) == "Hi everyone!" ``` diff --git a/1-js/05-data-types/03-string/article.md b/1-js/05-data-types/03-string/article.md index e748d65f0..60ce2b6f0 100644 --- a/1-js/05-data-types/03-string/article.md +++ b/1-js/05-data-types/03-string/article.md @@ -17,7 +17,7 @@ let double = "double-quoted"; let backticks = `backticks`; ``` -Single and double quotes are essentially the same. Backticks, however, allow us to embed any expression into the string, including function calls: +Single and double quotes are essentially the same. Backticks, however, allow us to embed any expression into the string, by wrapping it in `${…}`: ```js run function sum(a, b) { @@ -39,60 +39,61 @@ let guestList = `Guests: alert(guestList); // a list of guests, multiple lines ``` -If we try to use single or double quotes in the same way, there will be an error: +Looks natural, right? But single or double quotes do not work this way. + +If we use them and try to use multiple lines, there'll be an error: + ```js run -let guestList = "Guests: // Error: Unexpected token ILLEGAL +let guestList = "Guests: // Error: Unexpected token ILLEGAL * John"; ``` -Single and double quotes come from ancient times of language creation when the need for multiline strings was not taken into account. Backticks appeared much later and thus are more versatile. - -Backticks also allow us to specify a "template function" before the first backtick. The syntax is: <code>func`string`</code>. The function `func` is called automatically, receives the string and embedded expressions and can process them. You can read more about it in the [docs](mdn:/JavaScript/Reference/Template_literals#Tagged_template_literals). This is called "tagged templates". This feature makes it easier to wrap strings into custom templating or other functionality, but it is rarely used. +Single and double quotes come from ancient times of language creation, when the need for multiline strings was not taken into account. Backticks appeared much later and thus are more versatile. +Backticks also allow us to specify a "template function" before the first backtick. The syntax is: <code>func`string`</code>. The function `func` is called automatically, receives the string and embedded expressions and can process them. This feature is called "tagged templates", it's rarely seen, but you can read about it in the MDN: [Template literals](mdn:/JavaScript/Reference/Template_literals#Tagged_templates). ## Special characters -It is still possible to create multiline strings with single quotes by using a so-called "newline character", written as `\n`, which denotes a line break: +It is still possible to create multiline strings with single and double quotes by using a so-called "newline character", written as `\n`, which denotes a line break: ```js run let guestList = "Guests:\n * John\n * Pete\n * Mary"; -alert(guestList); // a multiline list of guests +alert(guestList); // a multiline list of guests, same as above ``` -For example, these two lines describe the same: +As a simpler example, these two lines are equal, just written differently: ```js run -alert( "Hello\nWorld" ); // two lines using a "newline symbol" +let str1 = "Hello\nWorld"; // two lines using a "newline symbol" // two lines using a normal newline and backticks -alert( `Hello -World` ); +let str2 = `Hello +World`; + +alert(str1 == str2); // true ``` -There are other, less common "special" characters as well. Here's the list: +There are other, less common special characters: | Character | Description | |-----------|-------------| -|`\b`|Backspace| -|`\f`|Form feed| |`\n`|New line| -|`\r`|Carriage return| +|`\r`|In Windows text files a combination of two characters `\r\n` represents a new break, while on non-Windows OS it's just `\n`. That's for historical reasons, most Windows software also understands `\n`. | +|`\'`, `\"`, <code>\\`</code>|Quotes| +|`\\`|Backslash| |`\t`|Tab| -|`\uNNNN`|A unicode symbol with the hex code `NNNN`, for instance `\u00A9` -- is a unicode for the copyright symbol `©`. It must be exactly 4 hex digits. | -|`\u{NNNNNNNN}`|Some rare characters are encoded with two unicode symbols, taking up to 4 bytes. This long unicode requires braces around it.| +|`\b`, `\f`, `\v`| Backspace, Form Feed, Vertical Tab -- mentioned for completeness, coming from old times, not used nowadays (you can forget them right now). | -Examples with unicode: +As you can see, all special characters start with a backslash character `\`. It is also called an "escape character". + +Because it's so special, if we need to show an actual backslash `\` within the string, we need to double it: ```js run -alert( "\u00A9" ); // © -alert( "\u{20331}" ); // 佫, a rare chinese hieroglyph (long unicode) -alert( "\u{1F60D}" ); // 😍, a smiling face symbol (another long unicode) +alert( `The backslash: \\` ); // The backslash: \ ``` -All special characters start with a backslash character `\`. It is also called an "escape character". - -We would also use it if we want to insert a quote into the string. +So-called "escaped" quotes `\'`, `\"`, <code>\\`</code> are used to insert a quote into the same-quoted string. For instance: @@ -102,25 +103,16 @@ alert( 'I*!*\'*/!*m the Walrus!' ); // *!*I'm*/!* the Walrus! As you can see, we have to prepend the inner quote by the backslash `\'`, because otherwise it would indicate the string end. -Of course, that refers only to the quotes that are same as the enclosing ones. So, as a more elegant solution, we could switch to double quotes or backticks instead: +Of course, only the quotes that are the same as the enclosing ones need to be escaped. So, as a more elegant solution, we could switch to double quotes or backticks instead: ```js run -alert( `I'm the Walrus!` ); // I'm the Walrus! +alert( "I'm the Walrus!" ); // I'm the Walrus! ``` -Note that the backslash `\` serves for the correct reading of the string by JavaScript, then disappears. The in-memory string has no `\`. You can clearly see that in `alert` from the examples above. - -But what if we need to show an actual backslash `\` within the string? - -That's possible, but we need to double it like `\\`: - -```js run -alert( `The backslash: \\` ); // The backslash: \ -``` +Besides these special characters, there's also a special notation for Unicode codes `\u…`, it's rarely used and is covered in the optional chapter about [Unicode](info:unicode). ## String length - The `length` property has the string length: ```js run @@ -132,33 +124,36 @@ Note that `\n` is a single "special" character, so the length is indeed `3`. ```warn header="`length` is a property" People with a background in some other languages sometimes mistype by calling `str.length()` instead of just `str.length`. That doesn't work. -Please note that `str.length` is a numeric property, not a function. There is no need to add parenthesis after it. +Please note that `str.length` is a numeric property, not a function. There is no need to add parenthesis after it. Not `.length()`, but `.length`. ``` ## Accessing characters -To get a character at position `pos`, use square brackets `[pos]` or call the method [str.charAt(pos)](mdn:js/String/charAt). The first character starts from the zero position: +To get a character at position `pos`, use square brackets `[pos]` or call the method [str.at(pos)](mdn:js/String/at). The first character starts from the zero position: ```js run let str = `Hello`; // the first character alert( str[0] ); // H -alert( str.charAt(0) ); // H +alert( str.at(0) ); // H // the last character alert( str[str.length - 1] ); // o +alert( str.at(-1) ); ``` -The square brackets are a modern way of getting a character, while `charAt` exists mostly for historical reasons. +As you can see, the `.at(pos)` method has a benefit of allowing negative position. If `pos` is negative, then it's counted from the end of the string. -The only difference between them is that if no character is found, `[]` returns `undefined`, and `charAt` returns an empty string: +So `.at(-1)` means the last character, and `.at(-2)` is the one before it, etc. + +The square brackets always return `undefined` for negative indexes, for instance: ```js run let str = `Hello`; -alert( str[1000] ); // undefined -alert( str.charAt(1000) ); // '' (an empty string) +alert( str[-2] ); // undefined +alert( str.at(-2) ); // l ``` We can also iterate over characters using `for..of`: @@ -189,7 +184,7 @@ For instance: ```js run let str = 'Hi'; -str = 'h' + str[1]; // replace the string +str = 'h' + str[1]; // replace the string alert( str ); // hi ``` @@ -207,7 +202,7 @@ alert( 'Interface'.toLowerCase() ); // interface Or, if we want a single character lowercased: -```js +```js run alert( 'Interface'[0].toLowerCase() ); // 'i' ``` @@ -232,7 +227,7 @@ alert( str.indexOf('widget') ); // -1, not found, the search is case-sensitive alert( str.indexOf("id") ); // 1, "id" is found at the position 1 (..idget with id) ``` -The optional second parameter allows us to search starting from the given position. +The optional second parameter allows us to start searching from a given position. For instance, the first occurrence of `"id"` is at position `1`. To look for the next occurrence, let's start the search from position `2`: @@ -242,10 +237,8 @@ let str = 'Widget with id'; alert( str.indexOf('id', 2) ) // 12 ``` - If we're interested in all occurrences, we can run `indexOf` in a loop. Every new call is made with the position after the previous match: - ```js run let str = 'As sly as a fox, as strong as an ox'; @@ -305,41 +298,6 @@ if (str.indexOf("Widget") != -1) { } ``` -````smart header="The bitwise NOT trick" -One of the old tricks used here is the [bitwise NOT](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Bitwise_Operators#Bitwise_NOT) `~` operator. It converts the number to a 32-bit integer (removes the decimal part if exists) and then reverses all bits in its binary representation. - -For 32-bit integers the call `~n` means exactly the same as `-(n+1)` (due to IEEE-754 format). - -For instance: - -```js run -alert( ~2 ); // -3, the same as -(2+1) -alert( ~1 ); // -2, the same as -(1+1) -alert( ~0 ); // -1, the same as -(0+1) -*!* -alert( ~-1 ); // 0, the same as -(-1+1) -*/!* -``` - -As we can see, `~n` is zero only if `n == -1`. - -So, the test `if ( ~str.indexOf("...") )` is truthy that the result of `indexOf` is not `-1`. In other words, when there is a match. - -People use it to shorten `indexOf` checks: - -```js run -let str = "Widget"; - -if (~str.indexOf("Widget")) { - alert( 'Found it!' ); // works -} -``` - -It is usually not recommended to use language features in a non-obvious way, but this particular trick is widely used in old code, so we should understand it. - -Just remember: `if (~str.indexOf(...))` reads as "if found". -```` - ### includes, startsWith, endsWith The more modern method [str.includes(substr, pos)](mdn:js/String/includes) returns `true/false` depending on whether `str` contains `substr` within. @@ -355,15 +313,15 @@ alert( "Hello".includes("Bye") ); // false The optional second argument of `str.includes` is the position to start searching from: ```js run -alert( "Midget".includes("id") ); // true -alert( "Midget".includes("id", 3) ); // false, from position 3 there is no "id" +alert( "Widget".includes("id") ); // true +alert( "Widget".includes("id", 3) ); // false, from position 3 there is no "id" ``` The methods [str.startsWith](mdn:js/String/startsWith) and [str.endsWith](mdn:js/String/endsWith) do exactly what they say: ```js run -alert( "Widget".startsWith("Wid") ); // true, "Widget" starts with "Wid" -alert( "Widget".endsWith("get") ); // true, "Widget" ends with "get" +alert( "*!*Wid*/!*get".startsWith("Wid") ); // true, "Widget" starts with "Wid" +alert( "Wid*!*get*/!*".endsWith("get") ); // true, "Widget" ends with "get" ``` ## Getting a substring @@ -385,7 +343,7 @@ There are 3 methods in JavaScript to get a substring: `substring`, `substr` and ```js run let str = "st*!*ringify*/!*"; - alert( str.slice(2) ); // ringify, from the 2nd position till the end + alert( str.slice(2) ); // 'ringify', from the 2nd position till the end ``` Negative values for `start/end` are also possible. They mean the position is counted from the string end: @@ -394,18 +352,16 @@ There are 3 methods in JavaScript to get a substring: `substring`, `substr` and let str = "strin*!*gif*/!*y"; // start at the 4th position from the right, end at the 1st from the right - alert( str.slice(-4, -1) ); // gif + alert( str.slice(-4, -1) ); // 'gif' ``` - `str.substring(start [, end])` -: Returns the part of the string *between* `start` and `end`. +: Returns the part of the string *between* `start` and `end` (not including `end`). - This is almost the same as `slice`, but it allows `start` to be greater than `end`. + This is almost the same as `slice`, but it allows `start` to be greater than `end` (in this case it simply swaps `start` and `end` values). For instance: - ```js run let str = "st*!*ring*/!*ify"; @@ -421,7 +377,6 @@ There are 3 methods in JavaScript to get a substring: `substring`, `substr` and Negative arguments are (unlike slice) not supported, they are treated as `0`. - `str.substr(start [, length])` : Returns the part of the string from `start`, with the given `length`. @@ -429,29 +384,32 @@ There are 3 methods in JavaScript to get a substring: `substring`, `substr` and ```js run let str = "st*!*ring*/!*ify"; - alert( str.substr(2, 4) ); // ring, from the 2nd position get 4 characters + alert( str.substr(2, 4) ); // 'ring', from the 2nd position get 4 characters ``` The first argument may be negative, to count from the end: ```js run let str = "strin*!*gi*/!*fy"; - alert( str.substr(-4, 2) ); // gi, from the 4th position get 2 characters + alert( str.substr(-4, 2) ); // 'gi', from the 4th position get 2 characters ``` + This method resides in the [Annex B](https://tc39.es/ecma262/#sec-string.prototype.substr) of the language specification. It means that only browser-hosted Javascript engines should support it, and it's not recommended to use it. In practice, it's supported everywhere. + Let's recap these methods to avoid any confusion: | method | selects... | negatives | |--------|-----------|-----------| | `slice(start, end)` | from `start` to `end` (not including `end`) | allows negatives | -| `substring(start, end)` | between `start` and `end` | negative values mean `0` | +| `substring(start, end)` | between `start` and `end` (not including `end`)| negative values mean `0` | | `substr(start, length)` | from `start` get `length` characters | allows negative `start` | - ```smart header="Which one to choose?" All of them can do the job. Formally, `substr` has a minor drawback: it is described not in the core JavaScript specification, but in Annex B, which covers browser-only features that exist mainly for historical reasons. So, non-browser environments may fail to support it. But in practice it works everywhere. -The author finds themself using `slice` almost all the time. +Of the other two variants, `slice` is a little bit more flexible, it allows negative arguments and shorter to write. + +So, for practical use it's enough to remember only `slice`. ``` ## Comparing strings @@ -474,17 +432,18 @@ Although, there are some oddities. This may lead to strange results if we sort these country names. Usually people would expect `Zealand` to come after `Österreich` in the list. -To understand what happens, let's review the internal representation of strings in JavaScript. +To understand what happens, we should be aware that strings in Javascript are encoded using [UTF-16](https://en.wikipedia.org/wiki/UTF-16). That is: each character has a corresponding numeric code. -All strings are encoded using [UTF-16](https://en.wikipedia.org/wiki/UTF-16). That is: each character has a corresponding numeric code. There are special methods that allow to get the character for the code and back. +There are special methods that allow to get the character for the code and back: `str.codePointAt(pos)` -: Returns the code for the character at position `pos`: +: Returns a decimal number representing the code for the character at position `pos`: ```js run // different case letters have different codes - alert( "z".codePointAt(0) ); // 122 alert( "Z".codePointAt(0) ); // 90 + alert( "z".codePointAt(0) ); // 122 + alert( "z".codePointAt(0).toString(16) ); // 7a (if we need a hexadecimal value) ``` `String.fromCodePoint(code)` @@ -492,13 +451,7 @@ All strings are encoded using [UTF-16](https://en.wikipedia.org/wiki/UTF-16). Th ```js run alert( String.fromCodePoint(90) ); // Z - ``` - - We can also add unicode characters by their codes using `\u` followed by the hex code: - - ```js run - // 90 is 5a in hexadecimal system - alert( '\u005a' ); // Z + alert( String.fromCodePoint(0x5a) ); // Z (we can also use a hex value as an argument) ``` Now let's see the characters with codes `65..220` (the latin alphabet and a little bit extra) by making a string of them: @@ -510,35 +463,35 @@ for (let i = 65; i <= 220; i++) { str += String.fromCodePoint(i); } alert( str ); +// Output: // ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ // ¡¢£¤¥¦§¨©ª«¬®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖרÙÚÛÜ ``` -See? Capital characters go first, then a few special ones, then lowercase characters. +See? Capital characters go first, then a few special ones, then lowercase characters, and `Ö` near the end of the output. Now it becomes obvious why `a > Z`. The characters are compared by their numeric code. The greater code means that the character is greater. The code for `a` (97) is greater than the code for `Z` (90). - All lowercase letters go after uppercase letters because their codes are greater. -- Some letters like `Ö` stand apart from the main alphabet. Here, it's code is greater than anything from `a` to `z`. - +- Some letters like `Ö` stand apart from the main alphabet. Here, its code is greater than anything from `a` to `z`. -### Correct comparisons +### Correct comparisons [#correct-comparisons] -The "right" algorithm to do string comparisons is more complex than it may seem, because alphabets are different for different languages. The same-looking letter may be located differently in different alphabets. +The "right" algorithm to do string comparisons is more complex than it may seem, because alphabets are different for different languages. So, the browser needs to know the language to compare. -Luckily, all modern browsers (IE10- requires the additional library [Intl.JS](https://github.com/andyearnshaw/Intl.js/)) support the internationalization standard [ECMA 402](http://www.ecma-international.org/ecma-402/1.0/ECMA-402.pdf). +Luckily, modern browsers support the internationalization standard [ECMA-402](https://www.ecma-international.org/publications-and-standards/standards/ecma-402/). It provides a special method to compare strings in different languages, following their rules. -The call [str.localeCompare(str2)](mdn:js/String/localeCompare): +The call [str.localeCompare(str2)](mdn:js/String/localeCompare) returns an integer indicating whether `str` is less, equal or greater than `str2` according to the language rules: -- Returns `1` if `str` is greater than `str2` according to the language rules. -- Returns `-1` if `str` is less than `str2`. -- Returns `0` if they are equal. +- Returns a negative number if `str` is less than `str2`. +- Returns a positive number if `str` is greater than `str2`. +- Returns `0` if they are equivalent. For instance: @@ -546,120 +499,13 @@ For instance: alert( 'Österreich'.localeCompare('Zealand') ); // -1 ``` -This method actually has two additional arguments specified in [the documentation](mdn:js/String/localeCompare), which allows it to specify the language (by default taken from the environment) and setup additional rules like case sensitivity or should `"a"` and `"á"` be treated as the same etc. - -## Internals, Unicode - -```warn header="Advanced knowledge" -The section goes deeper into string internals. This knowledge will be useful for you if you plan to deal with emoji, rare mathematical or hieroglyphic characters or other rare symbols. - -You can skip the section if you don't plan to support them. -``` - -### Surrogate pairs - -Most symbols have a 2-byte code. Letters in most european languages, numbers, and even most hieroglyphs, have a 2-byte representation. - -But 2 bytes only allow 65536 combinations and that's not enough for every possible symbol. So rare symbols are encoded with a pair of 2-byte characters called "a surrogate pair". - -The length of such symbols is `2`: - -```js run -alert( '𝒳'.length ); // 2, MATHEMATICAL SCRIPT CAPITAL X -alert( '😂'.length ); // 2, FACE WITH TEARS OF JOY -alert( '𩷶'.length ); // 2, a rare chinese hieroglyph -``` - -Note that surrogate pairs did not exist at the time when JavaScript was created, and thus are not correctly processed by the language! - -We actually have a single symbol in each of the strings above, but the `length` shows a length of `2`. - -`String.fromCodePoint` and `str.codePointAt` are few rare methods that deal with surrogate pairs right. They recently appeared in the language. Before them, there were only [String.fromCharCode](mdn:js/String/fromCharCode) and [str.charCodeAt](mdn:js/String/charCodeAt). These methods are actually the same as `fromCodePoint/codePointAt`, but don't work with surrogate pairs. - -But, for instance, getting a symbol can be tricky, because surrogate pairs are treated as two characters: - -```js run -alert( '𝒳'[0] ); // strange symbols... -alert( '𝒳'[1] ); // ...pieces of the surrogate pair -``` - -Note that pieces of the surrogate pair have no meaning without each other. So the alerts in the example above actually display garbage. - -Technically, surrogate pairs are also detectable by their codes: if a character has the code in the interval of `0xd800..0xdbff`, then it is the first part of the surrogate pair. The next character (second part) must have the code in interval `0xdc00..0xdfff`. These intervals are reserved exclusively for surrogate pairs by the standard. - -In the case above: - -```js run -// charCodeAt is not surrogate-pair aware, so it gives codes for parts - -alert( '𝒳'.charCodeAt(0).toString(16) ); // d835, between 0xd800 and 0xdbff -alert( '𝒳'.charCodeAt(1).toString(16) ); // dcb3, between 0xdc00 and 0xdfff -``` - -You will find more ways to deal with surrogate pairs later in the chapter <info:iterable>. There are probably special libraries for that too, but nothing famous enough to suggest here. - -### Diacritical marks and normalization - -In many languages there are symbols that are composed of the base character with a mark above/under it. - -For instance, the letter `a` can be the base character for: `àáâäãåā`. Most common "composite" character have their own code in the UTF-16 table. But not all of them, because there are too many possible combinations. - -To support arbitrary compositions, UTF-16 allows us to use several unicode characters. The base character and one or many "mark" characters that "decorate" it. - -For instance, if we have `S` followed by the special "dot above" character (code `\u0307`), it is shown as Ṡ. - -```js run -alert( 'S\u0307' ); // Ṡ -``` - -If we need an additional mark above the letter (or below it) -- no problem, just add the necessary mark character. - -For instance, if we append a character "dot below" (code `\u0323`), then we'll have "S with dots above and below": `Ṩ`. - -For example: - -```js run -alert( 'S\u0307\u0323' ); // Ṩ -``` - -This provides great flexibility, but also an interesting problem: two characters may visually look the same, but be represented with different unicode compositions. - -For instance: - -```js run -alert( 'S\u0307\u0323' ); // Ṩ, S + dot above + dot below -alert( 'S\u0323\u0307' ); // Ṩ, S + dot below + dot above - -alert( 'S\u0307\u0323' == 'S\u0323\u0307' ); // false -``` - -To solve this, there exists a "unicode normalization" algorithm that brings each string to the single "normal" form. - -It is implemented by [str.normalize()](mdn:js/String/normalize). - -```js run -alert( "S\u0307\u0323".normalize() == "S\u0323\u0307".normalize() ); // true -``` - -It's funny that in our situation `normalize()` actually brings together a sequence of 3 characters to one: `\u1e68` (S with two dots). - -```js run -alert( "S\u0307\u0323".normalize().length ); // 1 - -alert( "S\u0307\u0323".normalize() == "\u1e68" ); // true -``` - -In reality, this is not always the case. The reason being that the symbol `Ṩ` is "common enough", so UTF-16 creators included it in the main table and gave it the code. - -If you want to learn more about normalization rules and variants -- they are described in the appendix of the Unicode standard: [Unicode Normalization Forms](http://www.unicode.org/reports/tr15/), but for most practical purposes the information from this section is enough. - +This method actually has two additional arguments specified in [the documentation](mdn:js/String/localeCompare), which allows it to specify the language (by default taken from the environment, letter order depends on the language) and setup additional rules like case sensitivity or should `"a"` and `"á"` be treated as the same etc. ## Summary -- There are 3 types of quotes. Backticks allow a string to span multiple lines and embed expressions. -- Strings in JavaScript are encoded using UTF-16. -- We can use special characters like `\n` and insert letters by their unicode using `\u...`. -- To get a character, use: `[]`. +- There are 3 types of quotes. Backticks allow a string to span multiple lines and embed expressions `${…}`. +- We can use special characters, such as a line break `\n`. +- To get a character, use: `[]` or `at` method. - To get a substring, use: `slice` or `substring`. - To lowercase/uppercase a string, use: `toLowerCase/toUpperCase`. - To look for a substring, use: `indexOf`, or `includes/startsWith/endsWith` for simple checks. @@ -669,6 +515,8 @@ There are several other helpful methods in strings: - `str.trim()` -- removes ("trims") spaces from the beginning and end of the string. - `str.repeat(n)` -- repeats the string `n` times. -- ...and more. See the [manual](mdn:js/String) for details. +- ...and more to be found in the [manual](mdn:js/String). + +Strings also have methods for doing search/replace with regular expressions. But that's big topic, so it's explained in a separate tutorial section <info:regular-expressions>. -Strings also have methods for doing search/replace with regular expressions. But that topic deserves a separate chapter, so we'll return to that later. +Also, as of now it's important to know that strings are based on Unicode encoding, and hence there're issues with comparisons. There's more about Unicode in the chapter <info:unicode>. diff --git a/1-js/05-data-types/04-array/10-maximal-subarray/solution.md b/1-js/05-data-types/04-array/10-maximal-subarray/solution.md index daadf494b..7e1ca3bde 100644 --- a/1-js/05-data-types/04-array/10-maximal-subarray/solution.md +++ b/1-js/05-data-types/04-array/10-maximal-subarray/solution.md @@ -57,9 +57,9 @@ alert( getMaxSubSum([1, 2, 3]) ); // 6 alert( getMaxSubSum([100, -9, 2, -3, 5]) ); // 100 ``` -The solution has a time complexety of [O(n<sup>2</sup>)](https://en.wikipedia.org/wiki/Big_O_notation). In other words, if we increase the array size 2 times, the algorithm will work 4 times longer. +The solution has a time complexity of [O(n<sup>2</sup>)](https://en.wikipedia.org/wiki/Big_O_notation). In other words, if we increase the array size 2 times, the algorithm will work 4 times longer. -For big arrays (1000, 10000 or more items) such algorithms can lead to a serious sluggishness. +For big arrays (1000, 10000 or more items) such algorithms can lead to serious sluggishness. # Fast solution @@ -91,4 +91,4 @@ alert( getMaxSubSum([-1, -2, -3]) ); // 0 The algorithm requires exactly 1 array pass, so the time complexity is O(n). -You can find more detail information about the algorithm here: [Maximum subarray problem](http://en.wikipedia.org/wiki/Maximum_subarray_problem). If it's still not obvious why that works, then please trace the algorithm on the examples above, see how it works, that's better than any words. +You can find more detailed information about the algorithm here: [Maximum subarray problem](http://en.wikipedia.org/wiki/Maximum_subarray_problem). If it's still not obvious why that works, then please trace the algorithm on the examples above, see how it works, that's better than any words. diff --git a/1-js/05-data-types/04-array/10-maximal-subarray/task.md b/1-js/05-data-types/04-array/10-maximal-subarray/task.md index e63c4e625..f1a1d9f95 100644 --- a/1-js/05-data-types/04-array/10-maximal-subarray/task.md +++ b/1-js/05-data-types/04-array/10-maximal-subarray/task.md @@ -10,15 +10,15 @@ The task is: find the contiguous subarray of `arr` with the maximal sum of items Write the function `getMaxSubSum(arr)` that will return that sum. -For instance: +For instance: ```js -getMaxSubSum([-1, *!*2, 3*/!*, -9]) = 5 (the sum of highlighted items) -getMaxSubSum([*!*2, -1, 2, 3*/!*, -9]) = 6 -getMaxSubSum([-1, 2, 3, -9, *!*11*/!*]) = 11 -getMaxSubSum([-2, -1, *!*1, 2*/!*]) = 3 -getMaxSubSum([*!*100*/!*, -9, 2, -3, 5]) = 100 -getMaxSubSum([*!*1, 2, 3*/!*]) = 6 (take all) +getMaxSubSum([-1, *!*2, 3*/!*, -9]) == 5 (the sum of highlighted items) +getMaxSubSum([*!*2, -1, 2, 3*/!*, -9]) == 6 +getMaxSubSum([-1, 2, 3, -9, *!*11*/!*]) == 11 +getMaxSubSum([-2, -1, *!*1, 2*/!*]) == 3 +getMaxSubSum([*!*100*/!*, -9, 2, -3, 5]) == 100 +getMaxSubSum([*!*1, 2, 3*/!*]) == 6 (take all) ``` If all items are negative, it means that we take none (the subarray is empty), so the sum is zero: diff --git a/1-js/05-data-types/04-array/2-create-array/task.md b/1-js/05-data-types/04-array/2-create-array/task.md index 3e9300793..d4551c79c 100644 --- a/1-js/05-data-types/04-array/2-create-array/task.md +++ b/1-js/05-data-types/04-array/2-create-array/task.md @@ -8,7 +8,7 @@ Let's try 5 array operations. 1. Create an array `styles` with items "Jazz" and "Blues". 2. Append "Rock-n-Roll" to the end. -3. Replace the value in the middle by "Classics". Your code for finding the middle value should work for any arrays with odd length. +3. Replace the value in the middle with "Classics". Your code for finding the middle value should work for any arrays with odd length. 4. Strip off the first value of the array and show it. 5. Prepend `Rap` and `Reggae` to the array. @@ -16,7 +16,7 @@ The array in the process: ```js no-beautify Jazz, Blues -Jazz, Bues, Rock-n-Roll +Jazz, Blues, Rock-n-Roll Jazz, Classics, Rock-n-Roll Classics, Rock-n-Roll Rap, Reggae, Classics, Rock-n-Roll diff --git a/1-js/05-data-types/04-array/3-call-array-this/solution.md b/1-js/05-data-types/04-array/3-call-array-this/solution.md index e994ae078..3cb0317cf 100644 --- a/1-js/05-data-types/04-array/3-call-array-this/solution.md +++ b/1-js/05-data-types/04-array/3-call-array-this/solution.md @@ -9,7 +9,7 @@ arr.push(function() { alert( this ); }) -arr[2](); // "a","b",function +arr[2](); // a,b,function(){...} ``` The array has 3 values: initially it had two, plus the function. diff --git a/1-js/05-data-types/04-array/3-call-array-this/task.md b/1-js/05-data-types/04-array/3-call-array-this/task.md index 340c5feef..f1e13499c 100644 --- a/1-js/05-data-types/04-array/3-call-array-this/task.md +++ b/1-js/05-data-types/04-array/3-call-array-this/task.md @@ -11,7 +11,7 @@ let arr = ["a", "b"]; arr.push(function() { alert( this ); -}) +}); arr[2](); // ? ``` diff --git a/1-js/05-data-types/04-array/article.md b/1-js/05-data-types/04-array/article.md index aead164f5..e71e86a5b 100644 --- a/1-js/05-data-types/04-array/article.md +++ b/1-js/05-data-types/04-array/article.md @@ -1,12 +1,12 @@ -# Arrays +# Arrays Objects allow you to store keyed collections of values. That's fine. -But quite often we find that we need an *ordered collection*, where we have a 1st, a 2nd, a 3rd element and so on. For example, we need that to store a list of something: users, goods, HTML elements etc. +But quite often we find that we need an *ordered collection*, where we have a 1st, a 2nd, a 3rd element and so on. For example, we need that to store a list of something: users, goods, HTML elements etc. It is not convenient to use an object here, because it provides no methods to manage the order of elements. We can’t insert a new property “between” the existing ones. Objects are just not meant for such use. -There exists a special data structure named `Array`, to store ordered collections. +There exists a special data structure named `Array`, to store ordered collections. ## Declaration @@ -81,10 +81,10 @@ arr[3](); // hello ````smart header="Trailing comma" An array, just like an object, may end with a comma: -```js +```js let fruits = [ - "Apple", - "Orange", + "Apple", + "Orange", "Plum"*!*,*/!* ]; ``` @@ -92,10 +92,42 @@ let fruits = [ The "trailing comma" style makes it easier to insert/remove items, because all lines become alike. ```` +## Get last elements with "at" + +[recent browser="new"] + +Let's say we want the last element of the array. + +Some programming languages allow the use of negative indexes for the same purpose, like `fruits[-1]`. + +Although, in JavaScript it won't work. The result will be `undefined`, because the index in square brackets is treated literally. + +We can explicitly calculate the last element index and then access it: `fruits[fruits.length - 1]`. + +```js run +let fruits = ["Apple", "Orange", "Plum"]; + +alert( fruits[fruits.length-1] ); // Plum +``` + +A bit cumbersome, isn't it? We need to write the variable name twice. + +Luckily, there's a shorter syntax: `fruits.at(-1)`: + +```js run +let fruits = ["Apple", "Orange", "Plum"]; + +// same as fruits[fruits.length-1] +alert( fruits.at(-1) ); // Plum +``` + +In other words, `arr.at(i)`: +- is exactly the same as `arr[i]`, if `i >= 0`. +- for negative values of `i`, it steps back from the end of the array. ## Methods pop/push, shift/unshift -A [queue](https://en.wikipedia.org/wiki/Queue_(abstract_data_type)) is one of most common uses of an array. In computer science, this means an ordered collection of elements which supports two operations: +A [queue](https://en.wikipedia.org/wiki/Queue_(abstract_data_type)) is one of the most common uses of an array. In computer science, this means an ordered collection of elements which supports two operations: - `push` appends an element to the end. - `shift` get an element from the beginning, advancing the queue, so that the 2nd element becomes the 1st. @@ -106,7 +138,7 @@ Arrays support both operations. In practice we need it very often. For example, a queue of messages that need to be shown on-screen. -There's another use case for arrays -- the data structure named [stack](https://en.wikipedia.org/wiki/Stack_(abstract_data_type)). +There's another use case for arrays -- the data structure named [stack](https://en.wikipedia.org/wiki/Stack_(abstract_data_type)). It supports two operations: @@ -121,9 +153,9 @@ A stack is usually illustrated as a pack of cards: new cards are added to the to For stacks, the latest pushed item is received first, that's also called LIFO (Last-In-First-Out) principle. For queues, we have FIFO (First-In-First-Out). -Arrays in JavaScript can work both as a queue and as a stack. They allow you to add/remove elements both to/from the beginning or the end. +Arrays in JavaScript can work both as a queue and as a stack. They allow you to add/remove elements, both to/from the beginning or the end. -In computer science the data structure that allows it is called [deque](https://en.wikipedia.org/wiki/Double-ended_queue). +In computer science, the data structure that allows this, is called [deque](https://en.wikipedia.org/wiki/Double-ended_queue). **Methods that work with the end of the array:** @@ -138,6 +170,8 @@ In computer science the data structure that allows it is called [deque](https:// alert( fruits ); // Apple, Orange ``` + Both `fruits.pop()` and `fruits.at(-1)` return the last element of the array, but `fruits.pop()` also modifies the array by removing it. + `push` : Append the element to the end of the array: @@ -156,7 +190,7 @@ In computer science the data structure that allows it is called [deque](https:// `shift` : Extracts the first element of the array and returns it: - ```js + ```js run let fruits = ["Apple", "Orange", "Pear"]; alert( fruits.shift() ); // remove Apple and alert it @@ -167,7 +201,7 @@ In computer science the data structure that allows it is called [deque](https:// `unshift` : Add the element to the beginning of the array: - ```js + ```js run let fruits = ["Orange", "Pear"]; fruits.unshift('Apple'); @@ -189,11 +223,11 @@ alert( fruits ); ## Internals -An array is a special kind of object. The square brackets used to access a property `arr[0]` actually come from the object syntax. Numbers are used as keys. +An array is a special kind of object. The square brackets used to access a property `arr[0]` actually come from the object syntax. That's essentially the same as `obj[key]`, where `arr` is the object, while numbers are used as keys. They extend objects providing special methods to work with ordered collections of data and also the `length` property. But at the core it's still an object. -Remember, there are only 7 basic types in JavaScript. Array is an object and thus behaves like an object. +Remember, there are only eight basic data types in JavaScript (see the [Data types](info:types) chapter for more info). Array is an object and thus behaves like an object. For instance, it is copied by reference: @@ -203,13 +237,13 @@ let fruits = ["Banana"] let arr = fruits; // copy by reference (two variables reference the same array) alert( arr === fruits ); // true - + arr.push("Pear"); // modify the array by reference alert( fruits ); // Banana, Pear - 2 items now ``` -...But what makes arrays really special is their internal representation. The engine tries to store its elements in the contiguous memory area, one after another, just as depicted on the illustrations in this chapter, and there are other optimizations as well, to make arrays work really fast. +...But what makes arrays really special is their internal representation. The engine tries to store its elements in the contiguous memory area, one after another, just as depicted on the illustrations in this chapter, and there are other optimizations as well, to make arrays work really fast. But they all break if we quit working with an array as with an "ordered collection" and start working with it as if it were a regular object. @@ -229,7 +263,7 @@ But the engine will see that we're working with the array as with a regular obje The ways to misuse an array: -- Add a non-numeric property like `arr.test = 5`. +- Add a non-numeric property like `arr.test = 5`. - Make holes, like: add `arr[0]` and then `arr[1000]` (and nothing between them). - Fill the array in the reverse order, like `arr[1000]`, `arr[999]` and so on. @@ -247,7 +281,7 @@ Why is it faster to work with the end of an array than with its beginning? Let's fruits.shift(); // take 1 element from the start ``` -It's not enough to take and remove the element with the number `0`. Other elements need to be renumbered as well. +It's not enough to take and remove the element with the index `0`. Other elements need to be renumbered as well. The `shift` operation must do 3 things: @@ -296,7 +330,7 @@ let fruits = ["Apple", "Orange", "Plum"]; // iterates over array elements for (let fruit of fruits) { - alert( fruit ); + alert( fruit ); } ``` @@ -320,7 +354,7 @@ But that's actually a bad idea. There are potential problems with it: There are so-called "array-like" objects in the browser and in other environments, that *look like arrays*. That is, they have `length` and indexes properties, but they may also have other non-numeric properties and methods, which we usually don't need. The `for..in` loop will list them though. So if we need to work with array-like objects, then these "extra" properties can become a problem. -2. The `for..in` loop is optimized for generic objects, not arrays, and thus is 10-100 times slower. Of course, it's still very fast. The speedup may only matter in bottlenecks or seem irrelevant. But still we should be aware of the difference. +2. The `for..in` loop is optimized for generic objects, not arrays, and thus is 10-100 times slower. Of course, it's still very fast. The speedup may only matter in bottlenecks. But still we should be aware of the difference. Generally, we shouldn't use `for..in` for arrays. @@ -338,7 +372,7 @@ fruits[123] = "Apple"; alert( fruits.length ); // 124 ``` -Note that we usually don't use arrays like that. +Note that we usually don't use arrays like that. Another interesting thing about the `length` property is that it's writable. @@ -365,11 +399,11 @@ There is one more syntax to create an array: let arr = *!*new Array*/!*("Apple", "Pear", "etc"); ``` -It's rarely used, because square brackets `[]` are shorter. Also there's a tricky feature with it. +It's rarely used, because square brackets `[]` are shorter. Also, there's a tricky feature with it. If `new Array` is called with a single argument which is a number, then it creates an array *without items, but with the given length*. -Let's see how one can shoot themself in the foot: +Let's see how one can shoot themselves in the foot: ```js run let arr = new Array(2); // will it create an array of [2] ? @@ -379,13 +413,11 @@ alert( arr[0] ); // undefined! no elements. alert( arr.length ); // length 2 ``` -In the code above, `new Array(number)` has all elements `undefined`. - -To evade such surprises, we usually use square brackets, unless we really know what we're doing. +To avoid such surprises, we usually use square brackets, unless we really know what we're doing. ## Multidimensional arrays -Arrays can have items that are also arrays. We can use it for multidimensional arrays, to store matrices: +Arrays can have items that are also arrays. We can use it for multidimensional arrays, for example to store matrices: ```js run let matrix = [ @@ -394,7 +426,7 @@ let matrix = [ [7, 8, 9] ]; -alert( matrix[1][1] ); // the central element +alert( matrix[0][1] ); // 2, the second value of the first inner array ``` ## toString @@ -429,36 +461,91 @@ alert( "1" + 1 ); // "11" alert( "1,2" + 1 ); // "1,21" ``` +## Don't compare arrays with == + +Arrays in JavaScript, unlike some other programming languages, shouldn't be compared with operator `==`. + +This operator has no special treatment for arrays, it works with them as with any objects. + +Let's recall the rules: + +- Two objects are equal `==` only if they're references to the same object. +- If one of the arguments of `==` is an object, and the other one is a primitive, then the object gets converted to primitive, as explained in the chapter <info:object-toprimitive>. +- ...With an exception of `null` and `undefined` that equal `==` each other and nothing else. + +The strict comparison `===` is even simpler, as it doesn't convert types. + +So, if we compare arrays with `==`, they are never the same, unless we compare two variables that reference exactly the same array. + +For example: +```js run +alert( [] == [] ); // false +alert( [0] == [0] ); // false +``` + +These arrays are technically different objects. So they aren't equal. The `==` operator doesn't do item-by-item comparison. + +Comparison with primitives may give seemingly strange results as well: + +```js run +alert( 0 == [] ); // true + +alert('0' == [] ); // false +``` + +Here, in both cases, we compare a primitive with an array object. So the array `[]` gets converted to primitive for the purpose of comparison and becomes an empty string `''`. + +Then the comparison process goes on with the primitives, as described in the chapter <info:type-conversions>: + +```js run +// after [] was converted to '' +alert( 0 == '' ); // true, as '' becomes converted to number 0 + +alert('0' == '' ); // false, no type conversion, different strings +``` + +So, how to compare arrays? + +That's simple: don't use the `==` operator. Instead, compare them item-by-item in a loop or using iteration methods explained in the next chapter. + ## Summary Array is a special kind of object, suited to storing and managing ordered data items. -- The declaration: +The declaration: - ```js - // square brackets (usual) - let arr = [item1, item2...]; +```js +// square brackets (usual) +let arr = [item1, item2...]; - // new Array (exceptionally rare) - let arr = new Array(item1, item2...); - ``` +// new Array (exceptionally rare) +let arr = new Array(item1, item2...); +``` - The call to `new Array(number)` creates an array with the given length, but without elements. +The call to `new Array(number)` creates an array with the given length, but without elements. -- The `length` property is the array length or, to be precise, its last numeric index plus one. It is auto-adjusted by array methods. +- The `length` property is the array length or, to be precise, its last numeric index plus one. It is auto-adjusted by array methods. - If we shorten `length` manually, the array is truncated. +Getting the elements: + +- we can get element by its index, like `arr[0]` +- also we can use `at(i)` method that allows negative indexes. For negative values of `i`, it steps back from the end of the array. If `i >= 0`, it works same as `arr[i]`. + We can use an array as a deque with the following operations: - `push(...items)` adds `items` to the end. - `pop()` removes the element from the end and returns it. - `shift()` removes the element from the beginning and returns it. -- `unshift(...items)` adds items to the beginning. +- `unshift(...items)` adds `items` to the beginning. To loop over the elements of the array: - `for (let i=0; i<arr.length; i++)` -- works fastest, old-browser-compatible. - `for (let item of arr)` -- the modern syntax for items only, - `for (let i in arr)` -- never use. -We will return to arrays and study more methods to add, remove, extract elements and sort arrays in the chapter <info:array-methods>. +To compare arrays, don't use the `==` operator (as well as `>`, `<` and others), as they have no special treatment for arrays. They handle them as any objects, and it's not what we usually want. + +Instead you can use `for..of` loop to compare arrays item-by-item. +We will continue with arrays and study more methods to add, remove, extract elements and sort arrays in the next chapter <info:array-methods>. diff --git a/1-js/05-data-types/05-array-methods/10-average-age/task.md b/1-js/05-data-types/05-array-methods/10-average-age/task.md index a991c156b..bf5f85df3 100644 --- a/1-js/05-data-types/05-array-methods/10-average-age/task.md +++ b/1-js/05-data-types/05-array-methods/10-average-age/task.md @@ -4,7 +4,7 @@ importance: 4 # Get average age -Write the function `getAverageAge(users)` that gets an array of objects with property `age` and gets the average. +Write the function `getAverageAge(users)` that gets an array of objects with property `age` and returns the average age. The formula for the average is `(age1 + age2 + ... + ageN) / N`. @@ -19,4 +19,3 @@ let arr = [ john, pete, mary ]; alert( getAverageAge(arr) ); // (25 + 30 + 29) / 3 = 28 ``` - diff --git a/1-js/05-data-types/05-array-methods/11-array-unique/solution.md b/1-js/05-data-types/05-array-methods/11-array-unique/solution.md index 32d3b2679..b9d627a0a 100644 --- a/1-js/05-data-types/05-array-methods/11-array-unique/solution.md +++ b/1-js/05-data-types/05-array-methods/11-array-unique/solution.md @@ -36,4 +36,4 @@ So if `arr.length` is `10000` we'll have something like `10000*10000` = 100 mill So the solution is only good for small arrays. -Further in the chapter <info:map-set-weakmap-weakset> we'll see how to optimize it. +Further in the chapter <info:map-set> we'll see how to optimize it. diff --git a/1-js/05-data-types/05-array-methods/12-reduce-object/_js.view/solution.js b/1-js/05-data-types/05-array-methods/12-reduce-object/_js.view/solution.js new file mode 100644 index 000000000..8dea23a06 --- /dev/null +++ b/1-js/05-data-types/05-array-methods/12-reduce-object/_js.view/solution.js @@ -0,0 +1,6 @@ +function groupById(array) { + return array.reduce((obj, value) => { + obj[value.id] = value; + return obj; + }, {}) +} diff --git a/1-js/05-data-types/05-array-methods/12-reduce-object/_js.view/test.js b/1-js/05-data-types/05-array-methods/12-reduce-object/_js.view/test.js new file mode 100644 index 000000000..e48ba138d --- /dev/null +++ b/1-js/05-data-types/05-array-methods/12-reduce-object/_js.view/test.js @@ -0,0 +1,21 @@ +describe("groupById", function() { + + it("creates an object grouped by id", function() { + let users = [ + {id: 'john', name: "John Smith", age: 20}, + {id: 'ann', name: "Ann Smith", age: 24}, + {id: 'pete', name: "Pete Peterson", age: 31}, + ]; + + assert.deepEqual(groupById(users), { + john: {id: 'john', name: "John Smith", age: 20}, + ann: {id: 'ann', name: "Ann Smith", age: 24}, + pete: {id: 'pete', name: "Pete Peterson", age: 31}, + }); + }); + + it("works with an empty array", function() { + users = []; + assert.deepEqual(groupById(users), {}); + }); +}); diff --git a/1-js/05-data-types/07-map-set-weakmap-weakset/01-array-unique-map/solution.md b/1-js/05-data-types/05-array-methods/12-reduce-object/solution.md similarity index 100% rename from 1-js/05-data-types/07-map-set-weakmap-weakset/01-array-unique-map/solution.md rename to 1-js/05-data-types/05-array-methods/12-reduce-object/solution.md diff --git a/1-js/05-data-types/05-array-methods/12-reduce-object/task.md b/1-js/05-data-types/05-array-methods/12-reduce-object/task.md new file mode 100644 index 000000000..7f0082357 --- /dev/null +++ b/1-js/05-data-types/05-array-methods/12-reduce-object/task.md @@ -0,0 +1,37 @@ +importance: 4 + +--- + +# Create keyed object from array + +Let's say we received an array of users in the form `{id:..., name:..., age:... }`. + +Create a function `groupById(arr)` that creates an object from it, with `id` as the key, and array items as values. + +For example: + +```js +let users = [ + {id: 'john', name: "John Smith", age: 20}, + {id: 'ann', name: "Ann Smith", age: 24}, + {id: 'pete', name: "Pete Peterson", age: 31}, +]; + +let usersById = groupById(users); + +/* +// after the call we should have: + +usersById = { + john: {id: 'john', name: "John Smith", age: 20}, + ann: {id: 'ann', name: "Ann Smith", age: 24}, + pete: {id: 'pete', name: "Pete Peterson", age: 31}, +} +*/ +``` + +Such function is really handy when working with server data. + +In this task we assume that `id` is unique. There may be no two array items with the same `id`. + +Please use array `.reduce` method in the solution. diff --git a/1-js/05-data-types/05-array-methods/2-filter-range/task.md b/1-js/05-data-types/05-array-methods/2-filter-range/task.md index 18b2c1d9b..46e47c93d 100644 --- a/1-js/05-data-types/05-array-methods/2-filter-range/task.md +++ b/1-js/05-data-types/05-array-methods/2-filter-range/task.md @@ -4,7 +4,7 @@ importance: 4 # Filter range -Write a function `filterRange(arr, a, b)` that gets an array `arr`, looks for elements between `a` and `b` in it and returns an array of them. +Write a function `filterRange(arr, a, b)` that gets an array `arr`, looks for elements with values higher or equal to `a` and lower or equal to `b` and return a result as an array. The function should not modify the array. It should return the new array. diff --git a/1-js/05-data-types/05-array-methods/3-filter-range-in-place/_js.view/test.js b/1-js/05-data-types/05-array-methods/3-filter-range-in-place/_js.view/test.js index db32d9a11..241b74c6e 100644 --- a/1-js/05-data-types/05-array-methods/3-filter-range-in-place/_js.view/test.js +++ b/1-js/05-data-types/05-array-methods/3-filter-range-in-place/_js.view/test.js @@ -4,13 +4,13 @@ describe("filterRangeInPlace", function() { let arr = [5, 3, 8, 1]; - filterRangeInPlace(arr, 1, 4); + filterRangeInPlace(arr, 2, 5); - assert.deepEqual(arr, [3, 1]); + assert.deepEqual(arr, [5, 3]); }); it("doesn't return anything", function() { assert.isUndefined(filterRangeInPlace([1,2,3], 1, 4)); }); -}); \ No newline at end of file +}); diff --git a/1-js/05-data-types/05-array-methods/4-sort-back/task.md b/1-js/05-data-types/05-array-methods/4-sort-back/task.md index 05a08aad0..0e3eeab76 100644 --- a/1-js/05-data-types/05-array-methods/4-sort-back/task.md +++ b/1-js/05-data-types/05-array-methods/4-sort-back/task.md @@ -2,12 +2,12 @@ importance: 4 --- -# Sort in the reverse order +# Sort in decreasing order ```js let arr = [5, 2, 1, -10, 8]; -// ... your code to sort it in the reverse order +// ... your code to sort it in decreasing order alert( arr ); // 8, 5, 2, 1, -10 ``` diff --git a/1-js/05-data-types/05-array-methods/6-calculator-extendable/_js.view/solution.js b/1-js/05-data-types/05-array-methods/6-calculator-extendable/_js.view/solution.js index 50c40e804..f62452a5f 100644 --- a/1-js/05-data-types/05-array-methods/6-calculator-extendable/_js.view/solution.js +++ b/1-js/05-data-types/05-array-methods/6-calculator-extendable/_js.view/solution.js @@ -1,6 +1,6 @@ function Calculator() { - let methods = { + this.methods = { "-": (a, b) => a - b, "+": (a, b) => a + b }; @@ -10,16 +10,16 @@ function Calculator() { let split = str.split(' '), a = +split[0], op = split[1], - b = +split[2] + b = +split[2]; - if (!methods[op] || isNaN(a) || isNaN(b)) { + if (!this.methods[op] || isNaN(a) || isNaN(b)) { return NaN; } - return methods[op](a, b); - } + return this.methods[op](a, b); + }; this.addMethod = function(name, func) { - methods[name] = func; + this.methods[name] = func; }; } diff --git a/1-js/05-data-types/05-array-methods/6-calculator-extendable/solution.md b/1-js/05-data-types/05-array-methods/6-calculator-extendable/solution.md index 41178663d..ebe0714cf 100644 --- a/1-js/05-data-types/05-array-methods/6-calculator-extendable/solution.md +++ b/1-js/05-data-types/05-array-methods/6-calculator-extendable/solution.md @@ -1,3 +1,3 @@ -- Please note how methods are stored. They are simply added to the internal object. +- Please note how methods are stored. They are simply added to `this.methods` property. - All tests and numeric conversions are done in the `calculate` method. In future it may be extended to support more complex expressions. diff --git a/1-js/05-data-types/05-array-methods/6-calculator-extendable/task.md b/1-js/05-data-types/05-array-methods/6-calculator-extendable/task.md index cc5453ceb..e0d302f4c 100644 --- a/1-js/05-data-types/05-array-methods/6-calculator-extendable/task.md +++ b/1-js/05-data-types/05-array-methods/6-calculator-extendable/task.md @@ -31,6 +31,6 @@ The task consists of two parts. alert( result ); // 8 ``` -- No brackets or complex expressions in this task. +- No parentheses or complex expressions in this task. - The numbers and the operator are delimited with exactly one space. - There may be error handling if you'd like to add it. diff --git a/1-js/05-data-types/05-array-methods/7-map-objects/solution.md b/1-js/05-data-types/05-array-methods/7-map-objects/solution.md index 5d8bf4a13..2d8d4fb0e 100644 --- a/1-js/05-data-types/05-array-methods/7-map-objects/solution.md +++ b/1-js/05-data-types/05-array-methods/7-map-objects/solution.md @@ -25,7 +25,7 @@ alert( usersMapped[0].id ); // 1 alert( usersMapped[0].fullName ); // John Smith ``` -Please note that in for the arrow functions we need to use additional brackets. +Please note that in the arrow functions we need to use additional brackets. We can't write like this: ```js diff --git a/1-js/05-data-types/05-array-methods/8-sort-objects/solution.md b/1-js/05-data-types/05-array-methods/8-sort-objects/solution.md index 9f1ade707..cfaf9761a 100644 --- a/1-js/05-data-types/05-array-methods/8-sort-objects/solution.md +++ b/1-js/05-data-types/05-array-methods/8-sort-objects/solution.md @@ -1,6 +1,6 @@ ```js run no-beautify function sortByAge(arr) { - arr.sort((a, b) => a.age > b.age ? 1 : -1); + arr.sort((a, b) => a.age - b.age); } let john = { name: "John", age: 25 }; diff --git a/1-js/05-data-types/05-array-methods/9-shuffle/solution.md b/1-js/05-data-types/05-array-methods/9-shuffle/solution.md index a43715db8..6674c444f 100644 --- a/1-js/05-data-types/05-array-methods/9-shuffle/solution.md +++ b/1-js/05-data-types/05-array-methods/9-shuffle/solution.md @@ -45,7 +45,7 @@ for (let key in count) { } ``` -An example result (for V8, July 2017): +An example result (depends on JS engine): ```js 123: 250706 @@ -68,7 +68,13 @@ There are other good ways to do the task. For instance, there's a great algorith function shuffle(array) { for (let i = array.length - 1; i > 0; i--) { let j = Math.floor(Math.random() * (i + 1)); // random index from 0 to i - [array[i], array[j]] = [array[j], array[i]]; // swap elements + + // swap elements array[i] and array[j] + // we use "destructuring assignment" syntax to achieve that + // you'll find more details about that syntax in later chapters + // same can be written as: + // let t = array[i]; array[i] = array[j]; array[j] = t + [array[i], array[j]] = [array[j], array[i]]; } } ``` diff --git a/1-js/05-data-types/05-array-methods/article.md b/1-js/05-data-types/05-array-methods/article.md index 049fd6e56..853645958 100644 --- a/1-js/05-data-types/05-array-methods/article.md +++ b/1-js/05-data-types/05-array-methods/article.md @@ -1,6 +1,6 @@ # Array methods -Arrays provide a lot of methods. To make things easier, in this chapter they are split into groups. +Arrays provide a lot of methods. To make things easier, in this chapter, they are split into groups. ## Add/remove items @@ -11,7 +11,7 @@ We already know methods that add and remove items from the beginning or the end: - `arr.shift()` -- extracts an item from the beginning, - `arr.unshift(...items)` -- adds items to the beginning. -Here are few others. +Here are a few others. ### splice @@ -32,19 +32,19 @@ alert( arr.length ); // 3 The element was removed, but the array still has 3 elements, we can see that `arr.length == 3`. -That's natural, because `delete obj.key` removes a value by the `key`. It's all it does. Fine for objects. But for arrays we usually want the rest of elements to shift and occupy the freed place. We expect to have a shorter array now. +That's natural, because `delete obj.key` removes a value by the `key`. It's all it does. Fine for objects. But for arrays we usually want the rest of the elements to shift and occupy the freed place. We expect to have a shorter array now. So, special methods should be used. -The [arr.splice(str)](mdn:js/Array/splice) method is a swiss army knife for arrays. It can do everything: insert, remove and replace elements. +The [arr.splice](mdn:js/Array/splice) method is a Swiss army knife for arrays. It can do everything: insert, remove and replace elements. The syntax is: ```js -arr.splice(index[, deleteCount, elem1, ..., elemN]) +arr.splice(start[, deleteCount, elem1, ..., elemN]) ``` -It starts from the position `index`: removes `deleteCount` elements and then inserts `elem1, ..., elemN` at their place. Returns the array of removed elements. +It modifies `arr` starting from the index `start`: removes `deleteCount` elements and then inserts `elem1, ..., elemN` at their place. Returns the array of removed elements. This method is easy to grasp by examples. @@ -62,7 +62,7 @@ alert( arr ); // ["I", "JavaScript"] Easy, right? Starting from the index `1` it removed `1` element. -In the next example we remove 3 elements and replace them with the other two: +In the next example, we remove 3 elements and replace them with the other two: ```js run let arr = [*!*"I", "study", "JavaScript",*/!* "right", "now"]; @@ -84,7 +84,7 @@ let removed = arr.splice(0, 2); alert( removed ); // "I", "study" <-- array of removed elements ``` -The `splice` method is also able to insert the elements without any removals. For that we need to set `deleteCount` to `0`: +The `splice` method is also able to insert the elements without any removals. For that, we need to set `deleteCount` to `0`: ```js run let arr = ["I", "study", "JavaScript"]; @@ -114,34 +114,33 @@ alert( arr ); // 1,2,3,4,5 ### slice -The method [arr.slice](mdn:js/Array/slice) is much simpler than similar-looking `arr.splice`. +The method [arr.slice](mdn:js/Array/slice) is much simpler than the similar-looking `arr.splice`. The syntax is: ```js -arr.slice(start, end) +arr.slice([start], [end]) ``` -It returns a new array containing all items from index `"start"` to `"end"` (not including `"end"`). Both `start` and `end` can be negative, in that case position from array end is assumed. +It returns a new array copying to it all items from index `start` to `end` (not including `end`). Both `start` and `end` can be negative, in that case position from array end is assumed. -It works like `str.slice`, but makes subarrays instead of substrings. +It's similar to a string method `str.slice`, but instead of substrings, it makes subarrays. For instance: ```js run -let str = "test"; let arr = ["t", "e", "s", "t"]; -alert( str.slice(1, 3) ); // es -alert( arr.slice(1, 3) ); // e,s +alert( arr.slice(1, 3) ); // e,s (copy from 1 to 3) -alert( str.slice(-2) ); // st -alert( arr.slice(-2) ); // s,t +alert( arr.slice(-2) ); // s,t (copy from -2 till the end) ``` +We can also call it without arguments: `arr.slice()` creates a copy of `arr`. That's often used to obtain a copy for further transformations that should not affect the original array. + ### concat -The method [arr.concat](mdn:js/Array/concat) joins the array with other arrays and/or items. +The method [arr.concat](mdn:js/Array/concat) creates a new array that includes values from other arrays and additional items. The syntax is: @@ -153,24 +152,24 @@ It accepts any number of arguments -- either arrays or values. The result is a new array containing items from `arr`, then `arg1`, `arg2` etc. -If an argument is an array or has `Symbol.isConcatSpreadable` property, then all its elements are copied. Otherwise, the argument itself is copied. +If an argument `argN` is an array, then all its elements are copied. Otherwise, the argument itself is copied. For instance: ```js run let arr = [1, 2]; -// merge arr with [3,4] -alert( arr.concat([3, 4])); // 1,2,3,4 +// create an array from: arr and [3,4] +alert( arr.concat([3, 4]) ); // 1,2,3,4 -// merge arr with [3,4] and [5,6] -alert( arr.concat([3, 4], [5, 6])); // 1,2,3,4,5,6 +// create an array from: arr and [3,4] and [5,6] +alert( arr.concat([3, 4], [5, 6]) ); // 1,2,3,4,5,6 -// merge arr with [3,4], then add values 5 and 6 -alert( arr.concat([3, 4], 5, 6)); // 1,2,3,4,5,6 +// create an array from: arr and [3,4], then add values 5 and 6 +alert( arr.concat([3, 4], 5, 6) ); // 1,2,3,4,5,6 ``` -Normally, it only copies elements from arrays ("spreads" them). Other objects, even if they look like arrays, added as a whole: +Normally, it only copies elements from arrays. Other objects, even if they look like arrays, are added as a whole: ```js run let arr = [1, 2]; @@ -181,10 +180,9 @@ let arrayLike = { }; alert( arr.concat(arrayLike) ); // 1,2,[object Object] -//[1, 2, arrayLike] ``` -...But if an array-like object has `Symbol.isConcatSpreadable` property, then its elements are added instead: +...But if an array-like object has a special `Symbol.isConcatSpreadable` property, then it's treated as an array by `concat`: its elements are added instead: ```js run let arr = [1, 2]; @@ -208,7 +206,7 @@ The [arr.forEach](mdn:js/Array/forEach) method allows to run a function for ever The syntax: ```js arr.forEach(function(item, index, array) { - // ... do something with item + // ... do something with an item }); ``` @@ -232,16 +230,17 @@ The result of the function (if it returns any) is thrown away and ignored. ## Searching in array -These are methods to search for something in an array. +Now let's cover methods that search in an array. ### indexOf/lastIndexOf and includes -The methods [arr.indexOf](mdn:js/Array/indexOf), [arr.lastIndexOf](mdn:js/Array/lastIndexOf) and [arr.includes](mdn:js/Array/includes) have the same syntax and do essentially the same as their string counterparts, but operate on items instead of characters: +The methods [arr.indexOf](mdn:js/Array/indexOf) and [arr.includes](mdn:js/Array/includes) have the similar syntax and do essentially the same as their string counterparts, but operate on items instead of characters: -- `arr.indexOf(item, from)` looks for `item` starting from index `from`, and returns the index where it was found, otherwise `-1`. -- `arr.lastIndexOf(item, from)` -- same, but looks for from right to left. +- `arr.indexOf(item, from)` -- looks for `item` starting from index `from`, and returns the index where it was found, otherwise `-1`. - `arr.includes(item, from)` -- looks for `item` starting from index `from`, returns `true` if found. +Usually, these methods are used with only one argument: the `item` to search. By default, the search is from the beginning. + For instance: ```js run @@ -254,23 +253,35 @@ alert( arr.indexOf(null) ); // -1 alert( arr.includes(1) ); // true ``` -Note that the methods use `===` comparison. So, if we look for `false`, it finds exactly `false` and not the zero. +Please note that `indexOf` uses the strict equality `===` for comparison. So, if we look for `false`, it finds exactly `false` and not the zero. + +If we want to check if `item` exists in the array and don't need the index, then `arr.includes` is preferred. + +The method [arr.lastIndexOf](mdn:js/Array/lastIndexOf) is the same as `indexOf`, but looks for from right to left. + +```js run +let fruits = ['Apple', 'Orange', 'Apple'] -If we want to check for inclusion, and don't want to know the exact index, then `arr.includes` is preferred. +alert( fruits.indexOf('Apple') ); // 0 (first Apple) +alert( fruits.lastIndexOf('Apple') ); // 2 (last Apple) +``` -Also, a very minor difference of `includes` is that it correctly handles `NaN`, unlike `indexOf/lastIndexOf`: +````smart header="The `includes` method handles `NaN` correctly" +A minor, but noteworthy feature of `includes` is that it correctly handles `NaN`, unlike `indexOf`: ```js run const arr = [NaN]; -alert( arr.indexOf(NaN) ); // -1 (should be 0, but === equality doesn't work for NaN) +alert( arr.indexOf(NaN) ); // -1 (wrong, should be 0) alert( arr.includes(NaN) );// true (correct) ``` +That's because `includes` was added to JavaScript much later and uses the more up-to-date comparison algorithm internally. +```` -### find and findIndex +### find and findIndex/findLastIndex -Imagine we have an array of objects. How do we find an object with the specific condition? +Imagine we have an array of objects. How do we find an object with a specific condition? -Here the [arr.find](mdn:js/Array/find) method comes in handy. +Here the [arr.find(fn)](mdn:js/Array/find) method comes in handy. The syntax is: ```js @@ -280,13 +291,13 @@ let result = arr.find(function(item, index, array) { }); ``` -The function is called repetitively for each element of the array: +The function is called for elements of the array, one after another: - `item` is the element. - `index` is its index. - `array` is the array itself. -If it returns `true`, the search is stopped, the `item` is returned. If nothing found, `undefined` is returned. +If it returns `true`, the search is stopped, the `item` is returned. If nothing is found, `undefined` is returned. For example, we have an array of users, each with the fields `id` and `name`. Let's find the one with `id == 1`: @@ -302,11 +313,30 @@ let user = users.find(item => item.id == 1); alert(user.name); // John ``` -In real life arrays of objects is a common thing, so the `find` method is very useful. +In real life, arrays of objects are a common thing, so the `find` method is very useful. + +Note that in the example we provide to `find` the function `item => item.id == 1` with one argument. That's typical, other arguments of this function are rarely used. + +The [arr.findIndex](mdn:js/Array/findIndex) method has the same syntax but returns the index where the element was found instead of the element itself. The value of `-1` is returned if nothing is found. + +The [arr.findLastIndex](mdn:js/Array/findLastIndex) method is like `findIndex`, but searches from right to left, similar to `lastIndexOf`. + +Here's an example: + +```js run +let users = [ + {id: 1, name: "John"}, + {id: 2, name: "Pete"}, + {id: 3, name: "Mary"}, + {id: 4, name: "John"} +]; -Note that in the example we provide to `find` the function `item => item.id == 1` with one argument. Other arguments of this function are rarely used. +// Find the index of the first John +alert(users.findIndex(user => user.name == 'John')); // 0 -The [arr.findIndex](mdn:js/Array/findIndex) method is essentially the same, but it returns the index where the element was found instead of the element itself and `-1` is returned when nothing is found. +// Find the index of the last John +alert(users.findLastIndex(user => user.name == 'John')); // 3 +``` ### filter @@ -314,12 +344,12 @@ The `find` method looks for a single (first) element that makes the function ret If there may be many, we can use [arr.filter(fn)](mdn:js/Array/filter). -The syntax is similar to `find`, but filter continues to iterate for all array elements even if `true` is already returned: +The syntax is similar to `find`, but `filter` returns an array of all matching elements: ```js let results = arr.filter(function(item, index, array) { - // if true item is pushed to results and iteration continues - // returns empty array for complete falsy scenario + // if true item is pushed to results and the iteration continues + // returns empty array if nothing found }); ``` @@ -340,23 +370,22 @@ alert(someUsers.length); // 2 ## Transform an array -This section is about the methods transforming or reordering the array. - +Let's move on to methods that transform and reorder an array. ### map The [arr.map](mdn:js/Array/map) method is one of the most useful and often used. +It calls the function for each element of the array and returns the array of results. + The syntax is: ```js let result = arr.map(function(item, index, array) { // returns the new value instead of item -}) +}); ``` -It calls the function for each element of the array and returns the array of results. - For instance, here we transform each element into its length: ```js run @@ -366,14 +395,16 @@ alert(lengths); // 5,7,6 ### sort(fn) -The method [arr.sort](mdn:js/Array/sort) sorts the array *in place*. +The call to [arr.sort()](mdn:js/Array/sort) sorts the array *in place*, changing its element order. + +It also returns the sorted array, but the returned value is usually ignored, as `arr` itself is modified. For instance: ```js run let arr = [ 1, 2, 15 ]; -// the method reorders the content of arr (and returns it) +// the method reorders the content of arr arr.sort(); alert( arr ); // *!*1, 15, 2*/!* @@ -385,20 +416,21 @@ The order became `1, 15, 2`. Incorrect. But why? **The items are sorted as strings by default.** -Literally, all elements are converted to strings and then compared. So, the lexicographic ordering is applied and indeed `"2" > "15"`. +Literally, all elements are converted to strings for comparisons. For strings, lexicographic ordering is applied and indeed `"2" > "15"`. -To use our own sorting order, we need to supply a function of two arguments as the argument of `arr.sort()`. +To use our own sorting order, we need to supply a function as the argument of `arr.sort()`. + +The function should compare two arbitrary values and return: -The function should work like this: ```js function compare(a, b) { - if (a > b) return 1; - if (a == b) return 0; - if (a < b) return -1; + if (a > b) return 1; // if the first value is greater than the second + if (a == b) return 0; // if values are equal + if (a < b) return -1; // if the first value is less than the second } ``` -For instance: +For instance, to sort as numbers: ```js run function compareNumeric(a, b) { @@ -418,20 +450,20 @@ alert(arr); // *!*1, 2, 15*/!* Now it works as intended. -Let's step aside and think what's happening. The `arr` can be array of anything, right? It may contain numbers or strings or html elements or whatever. We have a set of *something*. To sort it, we need an *ordering function* that knows how to compare its elements. The default is a string order. +Let's step aside and think about what's happening. The `arr` can be an array of anything, right? It may contain numbers or strings or objects or whatever. We have a set of *some items*. To sort it, we need an *ordering function* that knows how to compare its elements. The default is a string order. -The `arr.sort(fn)` method has a built-in implementation of sorting algorithm. We don't need to care how it exactly works (an optimized [quicksort](https://en.wikipedia.org/wiki/Quicksort) most of the time). It will walk the array, compare its elements using the provided function and reorder them, all we need is to provide the `fn` which does the comparison. +The `arr.sort(fn)` method implements a generic sorting algorithm. We don't need to care how it internally works (an optimized [quicksort](https://en.wikipedia.org/wiki/Quicksort) or [Timsort](https://en.wikipedia.org/wiki/Timsort) most of the time). It will walk the array, compare its elements using the provided function and reorder them, all we need is to provide the `fn` which does the comparison. -By the way, if we ever want to know which elements are compared -- nothing prevents from alerting them: +By the way, if we ever want to know which elements are compared -- nothing prevents us from alerting them: ```js run [1, -2, 15, 2, 0, 8].sort(function(a, b) { alert( a + " <> " + b ); + return a - b; }); ``` -The algorithm may compare an element multiple times in the process, but it tries to make as few comparisons as possible. - +The algorithm may compare an element with multiple others in the process, but it tries to make as few comparisons as possible. ````smart header="A comparison function may return any number" Actually, a comparison function is only required to return a positive number to say "greater" and a negative number to say "less". @@ -448,13 +480,29 @@ alert(arr); // *!*1, 2, 15*/!* ```` ````smart header="Arrow functions for the best" -Remember [arrow functions](info:function-expressions-arrows#arrow-functions)? We can use them here for neater sorting: +Remember [arrow functions](info:arrow-functions-basics)? We can use them here for neater sorting: ```js arr.sort( (a, b) => a - b ); ``` -This works exactly the same as the other, longer, version above. +This works exactly the same as the longer version above. +```` + +````smart header="Use `localeCompare` for strings" +Remember [strings](info:string#correct-comparisons) comparison algorithm? It compares letters by their codes by default. + +For many alphabets, it's better to use `str.localeCompare` method to correctly sort letters, such as `Ö`. + +For example, let's sort a few countries in German: + +```js run +let countries = ['Österreich', 'Andorra', 'Vietnam']; + +alert( countries.sort( (a, b) => a > b ? 1 : -1) ); // Andorra, Vietnam, Österreich (wrong) + +alert( countries.sort( (a, b) => a.localeCompare(b) ) ); // Andorra,Österreich,Vietnam (correct!) +``` ```` ### reverse @@ -474,11 +522,11 @@ It also returns the array `arr` after the reversal. ### split and join -Here's the situation from the real life. We are writing a messaging app, and the person enters the comma-delimited list of receivers: `John, Pete, Mary`. But for us an array of names would be much more comfortable than a single string. How to get it? +Here's the situation from real life. We are writing a messaging app, and the person enters the comma-delimited list of receivers: `John, Pete, Mary`. But for us an array of names would be much more comfortable than a single string. How to get it? The [str.split(delim)](mdn:js/String/split) method does exactly that. It splits the string into an array by the given delimiter `delim`. -In the example below, we split by a comma followed by space: +In the example below, we split by a comma followed by a space: ```js run let names = 'Bilbo, Gandalf, Nazgul'; @@ -508,14 +556,14 @@ alert( str.split('') ); // t,e,s,t ``` ```` -The call [arr.join(separator)](mdn:js/Array/join) does the reverse to `split`. It creates a string of `arr` items glued by `separator` between them. +The call [arr.join(glue)](mdn:js/Array/join) does the reverse to `split`. It creates a string of `arr` items joined by `glue` between them. For instance: ```js run let arr = ['Bilbo', 'Gandalf', 'Nazgul']; -let str = arr.join(';'); +let str = arr.join(';'); // glue the array into a string using ; alert( str ); // Bilbo;Gandalf;Nazgul ``` @@ -531,24 +579,29 @@ The methods [arr.reduce](mdn:js/Array/reduce) and [arr.reduceRight](mdn:js/Array The syntax is: ```js -let value = arr.reduce(function(previousValue, item, index, array) { +let value = arr.reduce(function(accumulator, item, index, array) { // ... -}, initial); +}, [initial]); ``` -The function is applied to the elements. You may notice the familiar arguments, starting from the 2nd: +The function is applied to all array elements one after another and "carries on" its result to the next call. + +Arguments: +- `accumulator` -- is the result of the previous function call, equals `initial` the first time (if `initial` is provided). - `item` -- is the current array item. - `index` -- is its position. - `array` -- is the array. -So far, like `forEach/map`. But there's one more argument: +As the function is applied, the result of the previous function call is passed to the next one as the first argument. -- `previousValue` -- is the result of the previous function call, `initial` for the first call. +So, the first argument is essentially the accumulator that stores the combined result of all previous executions. And at the end, it becomes the result of `reduce`. + +Sounds complicated? The easiest way to grasp that is by example. -Here we get a sum of array in one line: +Here we get a sum of an array in one line: ```js run let arr = [1, 2, 3, 4, 5]; @@ -558,11 +611,11 @@ let result = arr.reduce((sum, current) => sum + current, 0); alert(result); // 15 ``` -Here we used the most common variant of `reduce` which uses only 2 arguments. +The function passed to `reduce` uses only 2 arguments, that's typically enough. Let's see the details of what's going on. -1. On the first run, `sum` is the initial value (the last argument of `reduce`), equals `0`, and `current` is the first array element, equals `1`. So the result is `1`. +1. On the first run, `sum` is the `initial` value (the last argument of `reduce`), equals `0`, and `current` is the first array element, equals `1`. So the function result is `1`. 2. On the second run, `sum = 1`, we add the second array element (`2`) to it and return. 3. On the 3rd run, `sum = 3` and we add one more element to it, and so on... @@ -572,7 +625,7 @@ The calculation flow: Or in the form of a table, where each row represents a function call on the next array element: -| |`sum`|`current`|`result`| +| |`sum`|`current`|result| |---|-----|---------|---------| |the first call|`0`|`1`|`1`| |the second call|`1`|`2`|`3`| @@ -580,8 +633,7 @@ Or in the form of a table, where each row represents a function call on the next |the fourth call|`6`|`4`|`10`| |the fifth call|`10`|`5`|`15`| - -As we can see, the result of the previous call becomes the first argument of the next one. +Here we can clearly see how the result of the previous call becomes the first argument of the next one. We also can omit the initial value: @@ -610,11 +662,9 @@ let arr = []; arr.reduce((sum, current) => sum + current); ``` - So it's advised to always specify the initial value. -The method [arr.reduceRight](mdn:js/Array/reduceRight) does the same, but goes from right to left. - +The method [arr.reduceRight](mdn:js/Array/reduceRight) does the same but goes from right to left. ## Array.isArray @@ -624,7 +674,7 @@ So `typeof` does not help to distinguish a plain object from an array: ```js run alert(typeof {}); // object -alert(typeof []); // same +alert(typeof []); // object (same) ``` ...But arrays are used so often that there's a special method for that: [Array.isArray(value)](mdn:js/Array/isArray). It returns `true` if the `value` is an array, and `false` otherwise. @@ -639,7 +689,7 @@ alert(Array.isArray([])); // true Almost all array methods that call functions -- like `find`, `filter`, `map`, with a notable exception of `sort`, accept an optional additional parameter `thisArg`. -That parameter is not explained in the sections above, because it's rarely used. But for completeness we have to cover it. +That parameter is not explained in the sections above, because it's rarely used. But for completeness, we have to cover it. Here's the full syntax of these methods: @@ -653,51 +703,57 @@ arr.map(func, thisArg); The value of `thisArg` parameter becomes `this` for `func`. -For instance, here we use an object method as a filter and `thisArg` comes in handy: +For example, here we use a method of `army` object as a filter, and `thisArg` passes the context: ```js run -let user = { - age: 18, - younger(otherUser) { - return otherUser.age < this.age; +let army = { + minAge: 18, + maxAge: 27, + canJoin(user) { + return user.age >= this.minAge && user.age < this.maxAge; } }; let users = [ - {age: 12}, {age: 16}, - {age: 32} + {age: 20}, + {age: 23}, + {age: 30} ]; *!* -// find all users younger than user -let youngerUsers = users.filter(user.younger, user); +// find users, for who army.canJoin returns true +let soldiers = users.filter(army.canJoin, army); */!* -alert(youngerUsers.length); // 2 +alert(soldiers.length); // 2 +alert(soldiers[0].age); // 20 +alert(soldiers[1].age); // 23 ``` -In the call above, we use `user.younger` as a filter and also provide `user` as the context for it. If we didn't provide the context, `users.filter(user.younger)` would call `user.younger` as a standalone function, with `this=undefined`. That would mean an instant error. +If in the example above we used `users.filter(army.canJoin)`, then `army.canJoin` would be called as a standalone function, with `this=undefined`, thus leading to an instant error. + +A call to `users.filter(army.canJoin, army)` can be replaced with `users.filter(user => army.canJoin(user))`, that does the same. The latter is used more often, as it's a bit easier to understand for most people. ## Summary -A cheatsheet of array methods: +A cheat sheet of array methods: - To add/remove elements: - `push(...items)` -- adds items to the end, - `pop()` -- extracts an item from the end, - `shift()` -- extracts an item from the beginning, - `unshift(...items)` -- adds items to the beginning. - - `splice(pos, deleteCount, ...items)` -- at index `pos` delete `deleteCount` elements and insert `items`. - - `slice(start, end)` -- creates a new array, copies elements from position `start` till `end` (not inclusive) into it. + - `splice(pos, deleteCount, ...items)` -- at index `pos` deletes `deleteCount` elements and inserts `items`. + - `slice(start, end)` -- creates a new array, copies elements from index `start` till `end` (not inclusive) into it. - `concat(...items)` -- returns a new array: copies all members of the current one and adds `items` to it. If any of `items` is an array, then its elements are taken. - To search among elements: - - `indexOf/lastIndexOf(item, pos)` -- look for `item` starting from position `pos`, return the index or `-1` if not found. + - `indexOf/lastIndexOf(item, pos)` -- look for `item` starting from position `pos`, and return the index or `-1` if not found. - `includes(value)` -- returns `true` if the array has `value`, otherwise `false`. - `find/filter(func)` -- filter elements through the function, return first/all values that make it return `true`. - `findIndex` is like `find`, but returns the index instead of a value. - + - To iterate over elements: - `forEach(func)` -- calls `func` for every element, does not return anything. @@ -706,27 +762,41 @@ A cheatsheet of array methods: - `sort(func)` -- sorts the array in-place, then returns it. - `reverse()` -- reverses the array in-place, then returns it. - `split/join` -- convert a string to array and back. - - `reduce(func, initial)` -- calculate a single value over the array by calling `func` for each element and passing an intermediate result between the calls. + - `reduce/reduceRight(func, initial)` -- calculate a single value over the array by calling `func` for each element and passing an intermediate result between the calls. - Additionally: - - `Array.isArray(arr)` checks `arr` for being an array. + - `Array.isArray(value)` checks `value` for being an array, if so returns `true`, otherwise `false`. Please note that methods `sort`, `reverse` and `splice` modify the array itself. These methods are the most used ones, they cover 99% of use cases. But there are few others: -- [arr.some(fn)](mdn:js/Array/some)/[arr.every(fn)](mdn:js/Array/every) checks the array. +- [arr.some(fn)](mdn:js/Array/some)/[arr.every(fn)](mdn:js/Array/every) check the array. The function `fn` is called on each element of the array similar to `map`. If any/all results are `true`, returns `true`, otherwise `false`. + These methods behave sort of like `||` and `&&` operators: if `fn` returns a truthy value, `arr.some()` immediately returns `true` and stops iterating over the rest of items; if `fn` returns a falsy value, `arr.every()` immediately returns `false` and stops iterating over the rest of items as well. + + We can use `every` to compare arrays: + + ```js run + function arraysEqual(arr1, arr2) { + return arr1.length === arr2.length && arr1.every((value, index) => value === arr2[index]); + } + + alert( arraysEqual([1, 2], [1, 2])); // true + ``` + - [arr.fill(value, start, end)](mdn:js/Array/fill) -- fills the array with repeating `value` from index `start` to `end`. - [arr.copyWithin(target, start, end)](mdn:js/Array/copyWithin) -- copies its elements from position `start` till position `end` into *itself*, at position `target` (overwrites existing). +- [arr.flat(depth)](mdn:js/Array/flat)/[arr.flatMap(fn)](mdn:js/Array/flatMap) create a new flat array from a multidimensional array. + For the full list, see the [manual](mdn:js/Array). -From the first sight it may seem that there are so many methods, quite difficult to remember. But actually that's much easier than it seems. +At first sight, it may seem that there are so many methods, quite difficult to remember. But actually, that's much easier. -Look through the cheatsheet just to be aware of them. Then solve the tasks of this chapter to practice, so that you have experience with array methods. +Look through the cheat sheet just to be aware of them. Then solve the tasks of this chapter to practice, so that you have experience with array methods. -Afterwards whenever you need to do something with an array, and you don't know how -- come here, look at the cheatsheet and find the right method. Examples will help you to write it correctly. Soon you'll automatically remember the methods, without specific efforts from your side. +Afterwards whenever you need to do something with an array, and you don't know how -- come here, look at the cheat sheet and find the right method. Examples will help you to write it correctly. Soon you'll automatically remember the methods, without specific efforts from your side. diff --git a/1-js/05-data-types/06-iterable/article.md b/1-js/05-data-types/06-iterable/article.md index 7f72f5caf..e2c0d4f97 100644 --- a/1-js/05-data-types/06-iterable/article.md +++ b/1-js/05-data-types/06-iterable/article.md @@ -1,18 +1,18 @@ # Iterables -*Iterable* objects is a generalization of arrays. That's a concept that allows to make any object useable in a `for..of` loop. +*Iterable* objects are a generalization of arrays. That's a concept that allows us to make any object useable in a `for..of` loop. -Of course, Arrays are iterable. But there are many other built-in objects, that are iterable as well. For instance, Strings are iterable also. As we'll see, many built-in operators and methods rely on them. +Of course, Arrays are iterable. But there are many other built-in objects, that are iterable as well. For instance, strings are also iterable. -If an object represents a collection (list, set) of something, then `for..of` is a great syntax to loop over it, so let's see how to make it work. +If an object isn't technically an array, but represents a collection (list, set) of something, then `for..of` is a great syntax to loop over it, so let's see how to make it work. ## Symbol.iterator We can easily grasp the concept of iterables by making one of our own. -For instance, we have an object, that is not an array, but looks suitable for `for..of`. +For instance, we have an object that is not an array, but looks suitable for `for..of`. Like a `range` object that represents an interval of numbers: @@ -26,14 +26,14 @@ let range = { // for(let num of range) ... num=1,2,3,4,5 ``` -To make the `range` iterable (and thus let `for..of` work) we need to add a method to the object named `Symbol.iterator` (a special built-in symbol just for that). +To make the `range` object iterable (and thus let `for..of` work) we need to add a method to the object named `Symbol.iterator` (a special built-in symbol just for that). 1. When `for..of` starts, it calls that method once (or errors if not found). The method must return an *iterator* -- an object with the method `next`. 2. Onward, `for..of` works *only with that returned object*. 3. When `for..of` wants the next value, it calls `next()` on that object. -4. The result of `next()` must have the form `{done: Boolean, value: any}`, where `done=true` means that the iteration is finished, otherwise `value` must be the new value. +4. The result of `next()` must have the form `{done: Boolean, value: any}`, where `done=true` means that the loop is finished, otherwise `value` is the next value. -Here's the full implementation for `range`: +Here's the full implementation for `range` with remarks: ```js run let range = { @@ -45,10 +45,10 @@ let range = { range[Symbol.iterator] = function() { // ...it returns the iterator object: - // 2. Onward, for..of works only with this iterator, asking it for next values + // 2. Onward, for..of works only with the iterator object below, asking it for next values return { current: this.from, - last: this.to, + last: this.to, // 3. next() is called on each iteration by the for..of loop next() { @@ -68,10 +68,10 @@ for (let num of range) { } ``` -Please note the core feature of iterables: an important separation of concerns: +Please note the core feature of iterables: separation of concerns. - The `range` itself does not have the `next()` method. -- Instead, another object, a so-called "iterator" is created by the call to `range[Symbol.iterator]()`, and it handles the whole iteration. +- Instead, another object, a so-called "iterator" is created by the call to `range[Symbol.iterator]()`, and its `next()` generates values for the iteration. So, the iterator object is separate from the object it iterates over. @@ -105,7 +105,7 @@ for (let num of range) { Now `range[Symbol.iterator]()` returns the `range` object itself: it has the necessary `next()` method and remembers the current iteration progress in `this.current`. Shorter? Yes. And sometimes that's fine too. -The downside is that now it's impossible to have two `for..of` loops running over the object simultaneously: they'll share the iteration state, because there's only one iterator -- the object itself. But two parallel for-ofs is a rare thing, doable with some async scenarios. +The downside is that now it's impossible to have two `for..of` loops running over the object simultaneously: they'll share the iteration state, because there's only one iterator -- the object itself. But two parallel for-ofs is a rare thing, even in async scenarios. ```smart header="Infinite iterators" Infinite iterators are also possible. For instance, the `range` becomes infinite for `range.to = Infinity`. Or we can make an iterable object that generates an infinite sequence of pseudorandom numbers. Also can be useful. @@ -140,11 +140,9 @@ for (let char of str) { ## Calling an iterator explicitly -Normally, internals of iterables are hidden from the external code. There's a `for..of` loop, that works, that's all it needs to know. +For deeper understanding, let's see how to use an iterator explicitly. -But to understand things a little bit deeper let's see how to create an iterator explicitly. - -We'll iterate over a string the same way as `for..of`, but with direct calls. This code gets a string iterator and calls it "manually": +We'll iterate over a string in exactly the same way as `for..of`, but with direct calls. This code creates a string iterator and gets values from it "manually": ```js run let str = "Hello"; @@ -152,7 +150,9 @@ let str = "Hello"; // does the same as // for (let char of str) alert(char); +*!* let iterator = str[Symbol.iterator](); +*/!* while (true) { let result = iterator.next(); @@ -165,14 +165,16 @@ That is rarely needed, but gives us more control over the process than `for..of` ## Iterables and array-likes [#array-like] -There are two official terms that look similar, but are very different. Please make sure you understand them well to avoid the confusion. +Two official terms look similar, but are very different. Please make sure you understand them well to avoid the confusion. - *Iterables* are objects that implement the `Symbol.iterator` method, as described above. - *Array-likes* are objects that have indexes and `length`, so they look like arrays. -Naturally, these properties can combine. For instance, strings are both iterable (`for..of` works on them) and array-like (they have numeric indexes and `length`). +When we use JavaScript for practical tasks in a browser or any other environment, we may meet objects that are iterables or array-likes, or both. + +For instance, strings are both iterable (`for..of` works on them) and array-like (they have numeric indexes and `length`). -But an iterable may be not array-like. And vice versa an array-like may be not iterable. +But an iterable may not be array-like. And vice versa an array-like may not be iterable. For example, the `range` in the example above is iterable, but not array-like, because it does not have indexed properties and `length`. @@ -191,11 +193,11 @@ for (let item of arrayLike) {} */!* ``` -What do they have in common? Both iterables and array-likes are usually *not arrays*, they don't have `push`, `pop` etc. That's rather inconvenient if we have such an object and want to work with it as with an array. +Both iterables and array-likes are usually *not arrays*, they don't have `push`, `pop` etc. That's rather inconvenient if we have such an object and want to work with it as with an array. E.g. we would like to work with `range` using array methods. How to achieve that? ## Array.from -There's a universal method [Array.from](mdn:js/Array/from) that brings them together. It takes an iterable or array-like value and makes a "real" `Array` from it. Then we can call array methods on it. +There's a universal method [Array.from](mdn:js/Array/from) that takes an iterable or array-like value and makes a "real" `Array` from it. Then we can call array methods on it. For instance: @@ -212,26 +214,26 @@ let arr = Array.from(arrayLike); // (*) alert(arr.pop()); // World (method works) ``` -`Array.from` at the line `(*)` takes the object, examines it for being an iterable or array-like, then makes a new array and copies there all items. +`Array.from` at the line `(*)` takes the object, examines it for being an iterable or array-like, then makes a new array and copies all items to it. The same happens for an iterable: -```js +```js run // assuming that range is taken from the example above let arr = Array.from(range); alert(arr); // 1,2,3,4,5 (array toString conversion works) ``` -The full syntax for `Array.from` allows to provide an optional "mapping" function: +The full syntax for `Array.from` also allows us to provide an optional "mapping" function: ```js Array.from(obj[, mapFn, thisArg]) ``` -The second argument `mapFn` should be the function to apply to each element before adding to the array, and `thisArg` allows to set `this` for it. +The optional second argument `mapFn` can be a function that will be applied to each element before adding it to the array, and `thisArg` allows us to set `this` for it. For instance: -```js +```js run // assuming that range is taken from the example above // square each number @@ -268,7 +270,7 @@ for (let char of str) { alert(chars); ``` -...But is shorter. +...But it is shorter. We can even build surrogate-aware `slice` on it: @@ -281,7 +283,7 @@ let str = '𝒳😂𩷶'; alert( slice(str, 1, 3) ); // 😂𩷶 -// native method does not support surrogate pairs +// the native method does not support surrogate pairs alert( str.slice(1, 3) ); // garbage (two pieces from different surrogate pairs) ``` @@ -291,8 +293,8 @@ alert( str.slice(1, 3) ); // garbage (two pieces from different surrogate pairs) Objects that can be used in `for..of` are called *iterable*. - Technically, iterables must implement the method named `Symbol.iterator`. - - The result of `obj[Symbol.iterator]` is called an *iterator*. It handles the further iteration process. - - An iterator must have the method named `next()` that returns an object `{done: Boolean, value: any}`, here `done:true` denotes the iteration end, otherwise the `value` is the next value. + - The result of `obj[Symbol.iterator]()` is called an *iterator*. It handles further iteration process. + - An iterator must have the method named `next()` that returns an object `{done: Boolean, value: any}`, here `done:true` denotes the end of the iteration process, otherwise the `value` is the next value. - The `Symbol.iterator` method is called automatically by `for..of`, but we also can do it directly. - Built-in iterables like strings or arrays, also implement `Symbol.iterator`. - String iterator knows about surrogate pairs. @@ -302,4 +304,4 @@ Objects that have indexed properties and `length` are called *array-like*. Such If we look inside the specification -- we'll see that most built-in methods assume that they work with iterables or array-likes instead of "real" arrays, because that's more abstract. -`Array.from(obj[, mapFn, thisArg])` makes a real `Array` of an iterable or array-like `obj`, and we can then use array methods on it. The optional arguments `mapFn` and `thisArg` allow us to apply a function to each item. +`Array.from(obj[, mapFn, thisArg])` makes a real `Array` from an iterable or array-like `obj`, and we can then use array methods on it. The optional arguments `mapFn` and `thisArg` allow us to apply a function to each item. diff --git a/1-js/05-data-types/07-map-set-weakmap-weakset/04-recipients-read/solution.md b/1-js/05-data-types/07-map-set-weakmap-weakset/04-recipients-read/solution.md deleted file mode 100644 index ce56f593a..000000000 --- a/1-js/05-data-types/07-map-set-weakmap-weakset/04-recipients-read/solution.md +++ /dev/null @@ -1,41 +0,0 @@ -The sane choice here is a `WeakSet`: - -```js -let messages = [ - {text: "Hello", from: "John"}, - {text: "How goes?", from: "John"}, - {text: "See you soon", from: "Alice"} -]; - -let readMessages = new WeakSet(); - -// two messages have been read -readMessages.add(messages[0]); -readMessages.add(messages[1]); -// readMessages has 2 elements - -// ...let's read the first message again! -readMessages.add(messages[0]); -// readMessages still has 2 unique elements - -// answer: was the message[0] read? -alert("Read message 0: " + readMessages.has(messages[0])); // true - -messages.shift(); -// now readMessages has 1 element (technically memory may be cleaned later) -``` - -The `WeakSet` allows to store a set of messages and easily check for the existance of a message in it. - -It cleans up itself automatically. The tradeoff is that we can't iterate over it. We can't get "all read messages" directly. But we can do it by iterating over all messages and filtering those that are in the set. - -P.S. Adding a property of our own to each message may be dangerous if messages are managed by someone else's code, but we can make it a symbol to evade conflicts. - -Like this: -```js -// the symbolic property is only known to our code -let isRead = Symbol("isRead"); -messages[0][isRead] = true; -``` - -Now even if someone else's code uses `for..in` loop for message properties, our secret flag won't appear. diff --git a/1-js/05-data-types/07-map-set-weakmap-weakset/04-recipients-read/task.md b/1-js/05-data-types/07-map-set-weakmap-weakset/04-recipients-read/task.md deleted file mode 100644 index 7ec1faf16..000000000 --- a/1-js/05-data-types/07-map-set-weakmap-weakset/04-recipients-read/task.md +++ /dev/null @@ -1,23 +0,0 @@ -importance: 5 - ---- - -# Store "unread" flags - -There's an array of messages: - -```js -let messages = [ - {text: "Hello", from: "John"}, - {text: "How goes?", from: "John"}, - {text: "See you soon", from: "Alice"} -]; -``` - -Your code can access it, but the messages are managed by someone else's code. New messages are added, old ones are removed regularly by that code, and you don't know the exact moments when it happens. - -Now, which data structure you could use to store information whether the message "have been read"? The structure must be well-suited to give the answer "was it read?" for the given message object. - -P.S. When a message is removed from `messages`, it should disappear from your structure as well. - -P.P.S. We shouldn't modify message objects directly. If they are managed by someone else's code, then adding extra properties to them may have bad consequences. diff --git a/1-js/05-data-types/07-map-set-weakmap-weakset/article.md b/1-js/05-data-types/07-map-set-weakmap-weakset/article.md deleted file mode 100644 index 034ad22c3..000000000 --- a/1-js/05-data-types/07-map-set-weakmap-weakset/article.md +++ /dev/null @@ -1,458 +0,0 @@ - -# Map, Set, WeakMap and WeakSet - -Now we've learned about the following complex data structures: - -- Objects for storing keyed collections. -- Arrays for storing ordered collections. - -But that's not enough for real life. That's why `Map` and `Set` also exist. - -## Map - -[Map](mdn:js/Map) is a collection of keyed data items, just like an `Object`. But the main difference is that `Map` allows keys of any type. - -The main methods are: - -- `new Map()` -- creates the map. -- `map.set(key, value)` -- stores the value by the key. -- `map.get(key)` -- returns the value by the key, `undefined` if `key` doesn't exist in map. -- `map.has(key)` -- returns `true` if the `key` exists, `false` otherwise. -- `map.delete(key)` -- removes the value by the key. -- `map.clear()` -- clears the map -- `map.size` -- returns the current element count. - -For instance: - -```js run -let map = new Map(); - -map.set('1', 'str1'); // a string key -map.set(1, 'num1'); // a numeric key -map.set(true, 'bool1'); // a boolean key - -// remember the regular Object? it would convert keys to string -// Map keeps the type, so these two are different: -alert( map.get(1) ); // 'num1' -alert( map.get('1') ); // 'str1' - -alert( map.size ); // 3 -``` - -As we can see, unlike objects, keys are not converted to strings. Any type of key is possible. - -**Map can also use objects as keys.** - -For instance: -```js run -let john = { name: "John" }; - -// for every user, let's store their visits count -let visitsCountMap = new Map(); - -// john is the key for the map -visitsCountMap.set(john, 123); - -alert( visitsCountMap.get(john) ); // 123 -``` - -Using objects as keys is one of most notable and important `Map` features. For string keys, `Object` can be fine, but it would be difficult to replace the `Map` with a regular `Object` in the example above. - -In the old times, before `Map` existed, people added unique identifiers to objects for that: - -```js run -// we add the id field -let john = { name: "John", *!*id: 1*/!* }; - -let visitsCounts = {}; - -// now store the value by id -visitsCounts[john.id] = 123; - -alert( visitsCounts[john.id] ); // 123 -``` - -...But `Map` is much more elegant. - - -```smart header="How `Map` compares keys" -To test values for equivalence, `Map` uses the algorithm [SameValueZero](https://tc39.github.io/ecma262/#sec-samevaluezero). It is roughly the same as strict equality `===`, but the difference is that `NaN` is considered equal to `NaN`. So `NaN` can be used as the key as well. - -This algorithm can't be changed or customized. -``` - - -````smart header="Chaining" - -Every `map.set` call returns the map itself, so we can "chain" the calls: - -```js -map.set('1', 'str1') - .set(1, 'num1') - .set(true, 'bool1'); -``` -```` - -## Map from Object - -When a `Map` is created, we can pass an array (or another iterable) with key-value pairs, like this: - -```js -// array of [key, value] pairs -let map = new Map([ - ['1', 'str1'], - [1, 'num1'], - [true, 'bool1'] -]); -``` - -There is a built-in method [Object.entries(obj)](mdn:js/Object/entries) that returns an array of key/value pairs for an object exactly in that format. - -So we can initialize a map from an object like this: - -```js -let map = new Map(Object.entries({ - name: "John", - age: 30 -})); -``` - -Here, `Object.entries` returns the array of key/value pairs: `[ ["name","John"], ["age", 30] ]`. That's what `Map` needs. - -## Iteration over Map - -For looping over a `map`, there are 3 methods: - -- `map.keys()` -- returns an iterable for keys, -- `map.values()` -- returns an iterable for values, -- `map.entries()` -- returns an iterable for entries `[key, value]`, it's used by default in `for..of`. - -For instance: - -```js run -let recipeMap = new Map([ - ['cucumber', 500], - ['tomatoes', 350], - ['onion', 50] -]); - -// iterate over keys (vegetables) -for (let vegetable of recipeMap.keys()) { - alert(vegetable); // cucumber, tomatoes, onion -} - -// iterate over values (amounts) -for (let amount of recipeMap.values()) { - alert(amount); // 500, 350, 50 -} - -// iterate over [key, value] entries -for (let entry of recipeMap) { // the same as of recipeMap.entries() - alert(entry); // cucumber,500 (and so on) -} -``` - -```smart header="The insertion order is used" -The iteration goes in the same order as the values were inserted. `Map` preserves this order, unlike a regular `Object`. -``` - -Besides that, `Map` has a built-in `forEach` method, similar to `Array`: - -```js -// runs the function for each (key, value) pair -recipeMap.forEach( (value, key, map) => { - alert(`${key}: ${value}`); // cucumber: 500 etc -}); -``` - - -## Set - -A `Set` is a collection of values, where each value may occur only once. - -Its main methods are: - -- `new Set(iterable)` -- creates the set, optionally from an array of values (any iterable will do). -- `set.add(value)` -- adds a value, returns the set itself. -- `set.delete(value)` -- removes the value, returns `true` if `value` existed at the moment of the call, otherwise `false`. -- `set.has(value)` -- returns `true` if the value exists in the set, otherwise `false`. -- `set.clear()` -- removes everything from the set. -- `set.size` -- is the elements count. - -For example, we have visitors coming, and we'd like to remember everyone. But repeated visits should not lead to duplicates. A visitor must be "counted" only once. - -`Set` is just the right thing for that: - -```js run -let set = new Set(); - -let john = { name: "John" }; -let pete = { name: "Pete" }; -let mary = { name: "Mary" }; - -// visits, some users come multiple times -set.add(john); -set.add(pete); -set.add(mary); -set.add(john); -set.add(mary); - -// set keeps only unique values -alert( set.size ); // 3 - -for (let user of set) { - alert(user.name); // John (then Pete and Mary) -} -``` - -The alternative to `Set` could be an array of users, and the code to check for duplicates on every insertion using [arr.find](mdn:js/Array/find). But the performance would be much worse, because this method walks through the whole array checking every element. `Set` is much better optimized internally for uniqueness checks. - -## Iteration over Set - -We can loop over a set either with `for..of` or using `forEach`: - -```js run -let set = new Set(["oranges", "apples", "bananas"]); - -for (let value of set) alert(value); - -// the same with forEach: -set.forEach((value, valueAgain, set) => { - alert(value); -}); -``` - -Note the funny thing. The `forEach` function in the `Set` has 3 arguments: a value, then *again a value*, and then the target object. Indeed, the same value appears in the arguments twice. - -That's for compatibility with `Map` where `forEach` has three arguments. Looks a bit strange, for sure. But may help to replace `Map` with `Set` in certain cases with ease, and vice versa. - -The same methods `Map` has for iterators are also supported: - -- `set.keys()` -- returns an iterable object for values, -- `set.values()` -- same as `set.keys`, for compatibility with `Map`, -- `set.entries()` -- returns an iterable object for entries `[value, value]`, exists for compatibility with `Map`. - -## WeakMap and WeakSet - -`WeakSet` is a special kind of `Set` that does not prevent JavaScript from removing its items from memory. `WeakMap` is the same thing for `Map`. - -As we know from the chapter <info:garbage-collection>, JavaScript engine stores a value in memory while it is reachable (and can potentially be used). - -For instance: -```js -let john = { name: "John" }; - -// the object can be accessed, john is the reference to it - -// overwrite the reference -john = null; - -*!* -// the object will be removed from memory -*/!* -``` - -Usually, properties of an object or elements of an array or another data structure are considered reachable and kept in memory while that data structure is in memory. - -For instance, if we put an object into an array, then while the array is alive, the object will be alive as well, even if there are no other references to it. - -Like this: - -```js -let john = { name: "John" }; - -let array = [ john ]; - -john = null; // overwrite the reference - -*!* -// john is stored inside the array, so it won't be garbage-collected -// we can get it as array[0] -*/!* -``` - -Or, if we use an object as the key in a regular `Map`, then while the `Map` exists, that object exists as well. It occupies memory and may not be garbage collected. - -For instance: - -```js -let john = { name: "John" }; - -let map = new Map(); -map.set(john, "..."); - -john = null; // overwrite the reference - -*!* -// john is stored inside the map, -// we can get it by using map.keys() -*/!* -``` - -`WeakMap/WeakSet` are fundamentally different in this aspect. They do not prevent garbage-collection of key objects. - -Let's explain it starting with `WeakMap`. - -The first difference from `Map` is that `WeakMap` keys must be objects, not primitive values: - -```js run -let weakMap = new WeakMap(); - -let obj = {}; - -weakMap.set(obj, "ok"); // works fine (object key) - -*!* -// can't use a string as the key -weakMap.set("test", "Whoops"); // Error, because "test" is not an object -*/!* -``` - -Now, if we use an object as the key in it, and there are no other references to that object -- it will be removed from memory (and from the map) automatically. - -```js -let john = { name: "John" }; - -let weakMap = new WeakMap(); -weakMap.set(john, "..."); - -john = null; // overwrite the reference - -// john is removed from memory! -``` - -Compare it with the regular `Map` example above. Now if `john` only exists as the key of `WeakMap` -- it is to be automatically deleted. - -`WeakMap` does not support iteration and methods `keys()`, `values()`, `entries()`, so there's no way to get all keys or values from it. - -`WeakMap` has only the following methods: - -- `weakMap.get(key)` -- `weakMap.set(key, value)` -- `weakMap.delete(key)` -- `weakMap.has(key)` - -Why such a limitation? That's for technical reasons. If an object has lost all other references (like `john` in the code above), then it is to be garbage-collected automatically. But technically it's not exactly specified *when the cleanup happens*. - -The JavaScript engine decides that. It may choose to perform the memory cleanup immediately or to wait and do the cleaning later when more deletions happen. So, technically the current element count of a `WeakMap` is not known. The engine may have cleaned it up or not, or did it partially. For that reason, methods that access `WeakMap` as a whole are not supported. - -Now where do we need such thing? - -The idea of `WeakMap` is that we can store something for an object that should exist only while the object exists. But we do not force the object to live by the mere fact that we store something for it. - -```js -weakMap.set(john, "secret documents"); -// if john dies, secret documents will be destroyed automatically -``` - -That's useful for situations when we have a main storage for the objects somewhere and need to keep additional information, that is only relevant while the object lives. - -Let's look at an example. - -For instance, we have code that keeps a visit count for each user. The information is stored in a map: a user is the key and the visit count is the value. When a user leaves, we don't want to store their visit count anymore. - -One way would be to keep track of users, and when they leave -- clean up the map manually: - -```js run -let john = { name: "John" }; - -// map: user => visits count -let visitsCountMap = new Map(); - -// john is the key for the map -visitsCountMap.set(john, 123); - -// now john leaves us, we don't need him anymore -john = null; - -*!* -// but it's still in the map, we need to clean it! -*/!* -alert( visitsCountMap.size ); // 1 -// and john is also in the memory, because Map uses it as the key -``` - -Another way would be to use `WeakMap`: - -```js -let john = { name: "John" }; - -let visitsCountMap = new WeakMap(); - -visitsCountMap.set(john, 123); - -// now john leaves us, we don't need him anymore -john = null; - -// there are no references except WeakMap, -// so the object is removed both from the memory and from visitsCountMap automatically -``` - -With a regular `Map`, cleaning up after a user has left becomes a tedious task: we not only need to remove the user from its main storage (be it a variable or an array), but also need to clean up the additional stores like `visitsCountMap`. And it can become cumbersome in more complex cases when users are managed in one place of the code and the additional structure is in another place and is getting no information about removals. - -```summary -`WeakMap` can make things simpler, because it is cleaned up automatically. The information in it like visits count in the example above lives only while the key object exists. -``` - -`WeakSet` behaves similarly: - -- It is analogous to `Set`, but we may only add objects to `WeakSet` (not primitives). -- An object exists in the set while it is reachable from somewhere else. -- Like `Set`, it supports `add`, `has` and `delete`, but not `size`, `keys()` and no iterations. - -For instance, we can use it to keep track of whether a message is read: - -```js -let messages = [ - {text: "Hello", from: "John"}, - {text: "How goes?", from: "John"}, - {text: "See you soon", from: "Alice"} -]; - -// fill it with array elements (3 items) -let unreadSet = new WeakSet(messages); - -// use unreadSet to see whether a message is unread -alert(unreadSet.has(messages[1])); // true - -// remove it from the set after reading -unreadSet.delete(messages[1]); // true - -// and when we shift our messages history, the set is cleaned up automatically -messages.shift(); - -*!* -// no need to clean unreadSet, it now has 2 items -*/!* -// (though technically we don't know for sure when the JS engine clears it) -``` - -The most notable limitation of `WeakMap` and `WeakSet` is the absence of iterations, and inability to get all current content. That may appear inconvenient, but does not prevent `WeakMap/WeakSet` from doing their main job -- be an "additional" storage of data for objects which are stored/managed at another place. - -## Summary - -Regular collections: -- `Map` -- is a collection of keyed values. - - The differences from a regular `Object`: - - - Any keys, objects can be keys. - - Iterates in the insertion order. - - Additional convenient methods, the `size` property. - -- `Set` -- is a collection of unique values. - - - Unlike an array, does not allow to reorder elements. - - Keeps the insertion order. - -Collections that allow garbage-collection: - -- `WeakMap` -- a variant of `Map` that allows only objects as keys and removes them once they become inaccessible by other means. - - - It does not support operations on the structure as a whole: no `size`, no `clear()`, no iterations. - -- `WeakSet` -- is a variant of `Set` that only stores objects and removes them once they become inaccessible by other means. - - - Also does not support `size/clear()` and iterations. - -`WeakMap` and `WeakSet` are used as "secondary" data structures in addition to the "main" object storage. Once the object is removed from the main storage, if it is only found in the `WeakMap/WeakSet`, it will be cleaned up automatically. diff --git a/1-js/05-data-types/07-map-set-weakmap-weakset/01-array-unique-map/_js.view/solution.js b/1-js/05-data-types/07-map-set/01-array-unique-map/_js.view/solution.js similarity index 100% rename from 1-js/05-data-types/07-map-set-weakmap-weakset/01-array-unique-map/_js.view/solution.js rename to 1-js/05-data-types/07-map-set/01-array-unique-map/_js.view/solution.js diff --git a/1-js/05-data-types/07-map-set-weakmap-weakset/01-array-unique-map/_js.view/test.js b/1-js/05-data-types/07-map-set/01-array-unique-map/_js.view/test.js similarity index 100% rename from 1-js/05-data-types/07-map-set-weakmap-weakset/01-array-unique-map/_js.view/test.js rename to 1-js/05-data-types/07-map-set/01-array-unique-map/_js.view/test.js diff --git a/1-js/05-data-types/08-keys-values-entries/02-count-properties/solution.md b/1-js/05-data-types/07-map-set/01-array-unique-map/solution.md similarity index 100% rename from 1-js/05-data-types/08-keys-values-entries/02-count-properties/solution.md rename to 1-js/05-data-types/07-map-set/01-array-unique-map/solution.md diff --git a/1-js/05-data-types/07-map-set-weakmap-weakset/01-array-unique-map/task.md b/1-js/05-data-types/07-map-set/01-array-unique-map/task.md similarity index 100% rename from 1-js/05-data-types/07-map-set-weakmap-weakset/01-array-unique-map/task.md rename to 1-js/05-data-types/07-map-set/01-array-unique-map/task.md diff --git a/1-js/05-data-types/07-map-set-weakmap-weakset/02-filter-anagrams/_js.view/solution.js b/1-js/05-data-types/07-map-set/02-filter-anagrams/_js.view/solution.js similarity index 100% rename from 1-js/05-data-types/07-map-set-weakmap-weakset/02-filter-anagrams/_js.view/solution.js rename to 1-js/05-data-types/07-map-set/02-filter-anagrams/_js.view/solution.js diff --git a/1-js/05-data-types/07-map-set-weakmap-weakset/02-filter-anagrams/_js.view/test.js b/1-js/05-data-types/07-map-set/02-filter-anagrams/_js.view/test.js similarity index 100% rename from 1-js/05-data-types/07-map-set-weakmap-weakset/02-filter-anagrams/_js.view/test.js rename to 1-js/05-data-types/07-map-set/02-filter-anagrams/_js.view/test.js diff --git a/1-js/05-data-types/07-map-set-weakmap-weakset/02-filter-anagrams/solution.md b/1-js/05-data-types/07-map-set/02-filter-anagrams/solution.md similarity index 98% rename from 1-js/05-data-types/07-map-set-weakmap-weakset/02-filter-anagrams/solution.md rename to 1-js/05-data-types/07-map-set/02-filter-anagrams/solution.md index 4c8af1f24..160675185 100644 --- a/1-js/05-data-types/07-map-set-weakmap-weakset/02-filter-anagrams/solution.md +++ b/1-js/05-data-types/07-map-set/02-filter-anagrams/solution.md @@ -36,7 +36,7 @@ Letter-sorting is done by the chain of calls in the line `(*)`. For convenience let's split it into multiple lines: ```js -let sorted = arr[i] // PAN +let sorted = word // PAN .toLowerCase() // pan .split('') // ['p','a','n'] .sort() // ['a','n','p'] diff --git a/1-js/05-data-types/07-map-set-weakmap-weakset/02-filter-anagrams/task.md b/1-js/05-data-types/07-map-set/02-filter-anagrams/task.md similarity index 100% rename from 1-js/05-data-types/07-map-set-weakmap-weakset/02-filter-anagrams/task.md rename to 1-js/05-data-types/07-map-set/02-filter-anagrams/task.md diff --git a/1-js/05-data-types/07-map-set-weakmap-weakset/03-iterable-keys/solution.md b/1-js/05-data-types/07-map-set/03-iterable-keys/solution.md similarity index 100% rename from 1-js/05-data-types/07-map-set-weakmap-weakset/03-iterable-keys/solution.md rename to 1-js/05-data-types/07-map-set/03-iterable-keys/solution.md diff --git a/1-js/05-data-types/07-map-set-weakmap-weakset/03-iterable-keys/task.md b/1-js/05-data-types/07-map-set/03-iterable-keys/task.md similarity index 64% rename from 1-js/05-data-types/07-map-set-weakmap-weakset/03-iterable-keys/task.md rename to 1-js/05-data-types/07-map-set/03-iterable-keys/task.md index b1ccbd0ac..81507647f 100644 --- a/1-js/05-data-types/07-map-set-weakmap-weakset/03-iterable-keys/task.md +++ b/1-js/05-data-types/07-map-set/03-iterable-keys/task.md @@ -4,9 +4,9 @@ importance: 5 # Iterable keys -We want to get an array of `map.keys()` and go on working with it (apart from the map itself). +We'd like to get an array of `map.keys()` in a variable and then apply array-specific methods to it, e.g. `.push`. -But there's a problem: +But that doesn't work: ```js run let map = new Map(); diff --git a/1-js/05-data-types/07-map-set/article.md b/1-js/05-data-types/07-map-set/article.md new file mode 100644 index 000000000..37f5e48c2 --- /dev/null +++ b/1-js/05-data-types/07-map-set/article.md @@ -0,0 +1,331 @@ + +# Map and Set + +Till now, we've learned about the following complex data structures: + +- Objects are used for storing keyed collections. +- Arrays are used for storing ordered collections. + +But that's not enough for real life. That's why `Map` and `Set` also exist. + +## Map + +[Map](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map) is a collection of keyed data items, just like an `Object`. But the main difference is that `Map` allows keys of any type. + +Methods and properties are: + +- [`new Map()`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map/Map) -- creates the map. +- [`map.set(key, value)`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map/set) -- stores the value by the key. +- [`map.get(key)`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map/get) -- returns the value by the key, `undefined` if `key` doesn't exist in map. +- [`map.has(key)`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map/has) -- returns `true` if the `key` exists, `false` otherwise. +- [`map.delete(key)`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map/delete) -- removes the element (the key/value pair) by the key. +- [`map.clear()`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map/clear) -- removes everything from the map. +- [`map.size`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map/size) -- returns the current element count. + +For instance: + +```js run +let map = new Map(); + +map.set('1', 'str1'); // a string key +map.set(1, 'num1'); // a numeric key +map.set(true, 'bool1'); // a boolean key + +// remember the regular Object? it would convert keys to string +// Map keeps the type, so these two are different: +alert( map.get(1) ); // 'num1' +alert( map.get('1') ); // 'str1' + +alert( map.size ); // 3 +``` + +As we can see, unlike objects, keys are not converted to strings. Any type of key is possible. + +```smart header="`map[key]` isn't the right way to use a `Map`" +Although `map[key]` also works, e.g. we can set `map[key] = 2`, this is treating `map` as a plain JavaScript object, so it implies all corresponding limitations (only string/symbol keys and so on). + +So we should use `map` methods: `set`, `get` and so on. +``` + +**Map can also use objects as keys.** + +For instance: + +```js run +let john = { name: "John" }; + +// for every user, let's store their visits count +let visitsCountMap = new Map(); + +// john is the key for the map +visitsCountMap.set(john, 123); + +alert( visitsCountMap.get(john) ); // 123 +``` + +Using objects as keys is one of the most notable and important `Map` features. The same does not count for `Object`. String as a key in `Object` is fine, but we can't use another `Object` as a key in `Object`. + +Let's try: + +```js run +let john = { name: "John" }; +let ben = { name: "Ben" }; + +let visitsCountObj = {}; // try to use an object + +visitsCountObj[ben] = 234; // try to use ben object as the key +visitsCountObj[john] = 123; // try to use john object as the key, ben object will get replaced + +*!* +// That's what got written! +alert( visitsCountObj["[object Object]"] ); // 123 +*/!* +``` + +As `visitsCountObj` is an object, it converts all `Object` keys, such as `john` and `ben` above, to same string `"[object Object]"`. Definitely not what we want. + +```smart header="How `Map` compares keys" +To test keys for equivalence, `Map` uses the algorithm [SameValueZero](https://tc39.github.io/ecma262/#sec-samevaluezero). It is roughly the same as strict equality `===`, but the difference is that `NaN` is considered equal to `NaN`. So `NaN` can be used as the key as well. + +This algorithm can't be changed or customized. +``` + +````smart header="Chaining" +Every `map.set` call returns the map itself, so we can "chain" the calls: + +```js +map.set('1', 'str1') + .set(1, 'num1') + .set(true, 'bool1'); +``` +```` + +## Iteration over Map + +For looping over a `map`, there are 3 methods: + +- [`map.keys()`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map/keys) -- returns an iterable for keys, +- [`map.values()`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map/values) -- returns an iterable for values, +- [`map.entries()`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map/entries) -- returns an iterable for entries `[key, value]`, it's used by default in `for..of`. + +For instance: + +```js run +let recipeMap = new Map([ + ['cucumber', 500], + ['tomatoes', 350], + ['onion', 50] +]); + +// iterate over keys (vegetables) +for (let vegetable of recipeMap.keys()) { + alert(vegetable); // cucumber, tomatoes, onion +} + +// iterate over values (amounts) +for (let amount of recipeMap.values()) { + alert(amount); // 500, 350, 50 +} + +// iterate over [key, value] entries +for (let entry of recipeMap) { // the same as of recipeMap.entries() + alert(entry); // cucumber,500 (and so on) +} +``` + +```smart header="The insertion order is used" +The iteration goes in the same order as the values were inserted. `Map` preserves this order, unlike a regular `Object`. +``` + +Besides that, `Map` has a built-in `forEach` method, similar to `Array`: + +```js +// runs the function for each (key, value) pair +recipeMap.forEach( (value, key, map) => { + alert(`${key}: ${value}`); // cucumber: 500 etc +}); +``` + +## Object.entries: Map from Object + +When a `Map` is created, we can pass an array (or another iterable) with key/value pairs for initialization, like this: + +```js run +// array of [key, value] pairs +let map = new Map([ + ['1', 'str1'], + [1, 'num1'], + [true, 'bool1'] +]); + +alert( map.get('1') ); // str1 +``` + +If we have a plain object, and we'd like to create a `Map` from it, then we can use built-in method [Object.entries(obj)](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/entries) that returns an array of key/value pairs for an object exactly in that format. + +So we can create a map from an object like this: + +```js run +let obj = { + name: "John", + age: 30 +}; + +*!* +let map = new Map(Object.entries(obj)); +*/!* + +alert( map.get('name') ); // John +``` + +Here, `Object.entries` returns the array of key/value pairs: `[ ["name","John"], ["age", 30] ]`. That's what `Map` needs. + + +## Object.fromEntries: Object from Map + +We've just seen how to create `Map` from a plain object with `Object.entries(obj)`. + +There's `Object.fromEntries` method that does the reverse: given an array of `[key, value]` pairs, it creates an object from them: + +```js run +let prices = Object.fromEntries([ + ['banana', 1], + ['orange', 2], + ['meat', 4] +]); + +// now prices = { banana: 1, orange: 2, meat: 4 } + +alert(prices.orange); // 2 +``` + +We can use `Object.fromEntries` to get a plain object from `Map`. + +E.g. we store the data in a `Map`, but we need to pass it to a 3rd-party code that expects a plain object. + +Here we go: + +```js run +let map = new Map(); +map.set('banana', 1); +map.set('orange', 2); +map.set('meat', 4); + +*!* +let obj = Object.fromEntries(map.entries()); // make a plain object (*) +*/!* + +// done! +// obj = { banana: 1, orange: 2, meat: 4 } + +alert(obj.orange); // 2 +``` + +A call to `map.entries()` returns an iterable of key/value pairs, exactly in the right format for `Object.fromEntries`. + +We could also make line `(*)` shorter: +```js +let obj = Object.fromEntries(map); // omit .entries() +``` + +That's the same, because `Object.fromEntries` expects an iterable object as the argument. Not necessarily an array. And the standard iteration for `map` returns same key/value pairs as `map.entries()`. So we get a plain object with same key/values as the `map`. + +## Set + +A [`Set`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Set) is a special type collection - "set of values" (without keys), where each value may occur only once. + +Its main methods are: + +- [`new Set([iterable])`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Set/Set) -- creates the set, and if an `iterable` object is provided (usually an array), copies values from it into the set. +- [`set.add(value)`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Set/add) -- adds a value, returns the set itself. +- [`set.delete(value)`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Set/delete) -- removes the value, returns `true` if `value` existed at the moment of the call, otherwise `false`. +- [`set.has(value)`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Set/has) -- returns `true` if the value exists in the set, otherwise `false`. +- [`set.clear()`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Set/clear) -- removes everything from the set. +- [`set.size`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Set/size) -- is the elements count. + +The main feature is that repeated calls of `set.add(value)` with the same value don't do anything. That's the reason why each value appears in a `Set` only once. + +For example, we have visitors coming, and we'd like to remember everyone. But repeated visits should not lead to duplicates. A visitor must be "counted" only once. + +`Set` is just the right thing for that: + +```js run +let set = new Set(); + +let john = { name: "John" }; +let pete = { name: "Pete" }; +let mary = { name: "Mary" }; + +// visits, some users come multiple times +set.add(john); +set.add(pete); +set.add(mary); +set.add(john); +set.add(mary); + +// set keeps only unique values +alert( set.size ); // 3 + +for (let user of set) { + alert(user.name); // John (then Pete and Mary) +} +``` + +The alternative to `Set` could be an array of users, and the code to check for duplicates on every insertion using [arr.find](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/find). But the performance would be much worse, because this method walks through the whole array checking every element. `Set` is much better optimized internally for uniqueness checks. + +## Iteration over Set + +We can loop over a set either with `for..of` or using `forEach`: + +```js run +let set = new Set(["oranges", "apples", "bananas"]); + +for (let value of set) alert(value); + +// the same with forEach: +set.forEach((value, valueAgain, set) => { + alert(value); +}); +``` + +Note the funny thing. The callback function passed in `forEach` has 3 arguments: a `value`, then *the same value* `valueAgain`, and then the target object. Indeed, the same value appears in the arguments twice. + +That's for compatibility with `Map` where the callback passed `forEach` has three arguments. Looks a bit strange, for sure. But this may help to replace `Map` with `Set` in certain cases with ease, and vice versa. + +The same methods `Map` has for iterators are also supported: + +- [`set.keys()`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Set/keys) -- returns an iterable object for values, +- [`set.values()`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Set/values) -- same as `set.keys()`, for compatibility with `Map`, +- [`set.entries()`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Set/entries) -- returns an iterable object for entries `[value, value]`, exists for compatibility with `Map`. + +## Summary + +[`Map`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map) -- is a collection of keyed values. + +Methods and properties: + +- [`new Map([iterable])`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map/Map) -- creates the map, with optional `iterable` (e.g. array) of `[key,value]` pairs for initialization. +- [`map.set(key, value)`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map/set) -- stores the value by the key, returns the map itself. +- [`map.get(key)`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map/get) -- returns the value by the key, `undefined` if `key` doesn't exist in map. +- [`map.has(key)`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map/has) -- returns `true` if the `key` exists, `false` otherwise. +- [`map.delete(key)`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map/delete) -- removes the element by the key, returns `true` if `key` existed at the moment of the call, otherwise `false`. +- [`map.clear()`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map/clear) -- removes everything from the map. +- [`map.size`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map/size) -- returns the current element count. + +The differences from a regular `Object`: + +- Any keys, objects can be keys. +- Additional convenient methods, the `size` property. + +[`Set`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Set) -- is a collection of unique values. + +Methods and properties: + +- [`new Set([iterable])`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Set/Set) -- creates the set, with optional `iterable` (e.g. array) of values for initialization. +- [`set.add(value)`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Set/add) -- adds a value (does nothing if `value` exists), returns the set itself. +- [`set.delete(value)`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Set/delete) -- removes the value, returns `true` if `value` existed at the moment of the call, otherwise `false`. +- [`set.has(value)`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Set/has) -- returns `true` if the value exists in the set, otherwise `false`. +- [`set.clear()`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Set/clear) -- removes everything from the set. +- [`set.size`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Set/size) -- is the elements count. + +Iteration over `Map` and `Set` is always in the insertion order, so we can't say that these collections are unordered, but we can't reorder elements or directly get an element by its number. diff --git a/1-js/05-data-types/08-weakmap-weakset/01-recipients-read/solution.md b/1-js/05-data-types/08-weakmap-weakset/01-recipients-read/solution.md new file mode 100644 index 000000000..e2147ccfa --- /dev/null +++ b/1-js/05-data-types/08-weakmap-weakset/01-recipients-read/solution.md @@ -0,0 +1,43 @@ +Let's store read messages in `WeakSet`: + +```js run +let messages = [ + {text: "Hello", from: "John"}, + {text: "How goes?", from: "John"}, + {text: "See you soon", from: "Alice"} +]; + +let readMessages = new WeakSet(); + +// two messages have been read +readMessages.add(messages[0]); +readMessages.add(messages[1]); +// readMessages has 2 elements + +// ...let's read the first message again! +readMessages.add(messages[0]); +// readMessages still has 2 unique elements + +// answer: was the message[0] read? +alert("Read message 0: " + readMessages.has(messages[0])); // true + +messages.shift(); +// now readMessages has 1 element (technically memory may be cleaned later) +``` + +The `WeakSet` allows to store a set of messages and easily check for the existence of a message in it. + +It cleans up itself automatically. The tradeoff is that we can't iterate over it, can't get "all read messages" from it directly. But we can do it by iterating over all messages and filtering those that are in the set. + +Another, different solution could be to add a property like `message.isRead=true` to a message after it's read. As messages objects are managed by another code, that's generally discouraged, but we can use a symbolic property to avoid conflicts. + +Like this: +```js +// the symbolic property is only known to our code +let isRead = Symbol("isRead"); +messages[0][isRead] = true; +``` + +Now third-party code probably won't see our extra property. + +Although symbols allow to lower the probability of problems, using `WeakSet` is better from the architectural point of view. diff --git a/1-js/05-data-types/08-weakmap-weakset/01-recipients-read/task.md b/1-js/05-data-types/08-weakmap-weakset/01-recipients-read/task.md new file mode 100644 index 000000000..fd31a891b --- /dev/null +++ b/1-js/05-data-types/08-weakmap-weakset/01-recipients-read/task.md @@ -0,0 +1,23 @@ +importance: 5 + +--- + +# Store "unread" flags + +There's an array of messages: + +```js +let messages = [ + {text: "Hello", from: "John"}, + {text: "How goes?", from: "John"}, + {text: "See you soon", from: "Alice"} +]; +``` + +Your code can access it, but the messages are managed by someone else's code. New messages are added, old ones are removed regularly by that code, and you don't know the exact moments when it happens. + +Now, which data structure could you use to store information about whether the message "has been read"? The structure must be well-suited to give the answer "was it read?" for the given message object. + +P.S. When a message is removed from `messages`, it should disappear from your structure as well. + +P.P.S. We shouldn't modify message objects, add our properties to them. As they are managed by someone else's code, that may lead to bad consequences. diff --git a/1-js/05-data-types/07-map-set-weakmap-weakset/05-recipients-when-read/solution.md b/1-js/05-data-types/08-weakmap-weakset/02-recipients-when-read/solution.md similarity index 61% rename from 1-js/05-data-types/07-map-set-weakmap-weakset/05-recipients-when-read/solution.md rename to 1-js/05-data-types/08-weakmap-weakset/02-recipients-when-read/solution.md index 7f387b4da..2af0547c1 100644 --- a/1-js/05-data-types/07-map-set-weakmap-weakset/05-recipients-when-read/solution.md +++ b/1-js/05-data-types/08-weakmap-weakset/02-recipients-when-read/solution.md @@ -3,9 +3,9 @@ To store a date, we can use `WeakMap`: ```js let messages = [ - {text: "Hello", from: "John"}, - {text: "How goes?", from: "John"}, - {text: "See you soon", from: "Alice"} + {text: "Hello", from: "John"}, + {text: "How goes?", from: "John"}, + {text: "See you soon", from: "Alice"} ]; let readMap = new WeakMap(); diff --git a/1-js/05-data-types/07-map-set-weakmap-weakset/05-recipients-when-read/task.md b/1-js/05-data-types/08-weakmap-weakset/02-recipients-when-read/task.md similarity index 54% rename from 1-js/05-data-types/07-map-set-weakmap-weakset/05-recipients-when-read/task.md rename to 1-js/05-data-types/08-weakmap-weakset/02-recipients-when-read/task.md index 22b51a382..8e341c184 100644 --- a/1-js/05-data-types/07-map-set-weakmap-weakset/05-recipients-when-read/task.md +++ b/1-js/05-data-types/08-weakmap-weakset/02-recipients-when-read/task.md @@ -8,12 +8,14 @@ There's an array of messages as in the [previous task](info:task/recipients-read ```js let messages = [ - {text: "Hello", from: "John"}, - {text: "How goes?", from: "John"}, - {text: "See you soon", from: "Alice"} + {text: "Hello", from: "John"}, + {text: "How goes?", from: "John"}, + {text: "See you soon", from: "Alice"} ]; ``` The question now is: which data structure you'd suggest to store the information: "when the message was read?". -In the previous task we only needed to store the "yes/no" fact. Now we need to store the date and it, once again, should disappear if the message is gone. +In the previous task we only needed to store the "yes/no" fact. Now we need to store the date, and it should only remain in memory until the message is garbage collected. + +P.S. Dates can be stored as objects of built-in `Date` class, that we'll cover later. diff --git a/1-js/05-data-types/08-weakmap-weakset/article.md b/1-js/05-data-types/08-weakmap-weakset/article.md new file mode 100644 index 000000000..9795017d4 --- /dev/null +++ b/1-js/05-data-types/08-weakmap-weakset/article.md @@ -0,0 +1,295 @@ + +# WeakMap and WeakSet + +As we know from the chapter <info:garbage-collection>, JavaScript engine keeps a value in memory while it is "reachable" and can potentially be used. + +For instance: + +```js +let john = { name: "John" }; + +// the object can be accessed, john is the reference to it + +// overwrite the reference +john = null; + +*!* +// the object will be removed from memory +*/!* +``` + +Usually, properties of an object or elements of an array or another data structure are considered reachable and kept in memory while that data structure is in memory. + +For instance, if we put an object into an array, then while the array is alive, the object will be alive as well, even if there are no other references to it. + +Like this: + +```js +let john = { name: "John" }; + +let array = [ john ]; + +john = null; // overwrite the reference + +*!* +// the object previously referenced by john is stored inside the array +// therefore it won't be garbage-collected +// we can get it as array[0] +*/!* +``` + +Similar to that, if we use an object as the key in a regular `Map`, then while the `Map` exists, that object exists as well. It occupies memory and may not be garbage collected. + +For instance: + +```js +let john = { name: "John" }; + +let map = new Map(); +map.set(john, "..."); + +john = null; // overwrite the reference + +*!* +// john is stored inside the map, +// we can get it by using map.keys() +*/!* +``` + +[`WeakMap`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/WeakMap) is fundamentally different in this aspect. It doesn't prevent garbage-collection of key objects. + +Let's see what it means on examples. + +## WeakMap + +The first difference between [`Map`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map) and [`WeakMap`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/WeakMap) is that keys must be objects, not primitive values: + +```js run +let weakMap = new WeakMap(); + +let obj = {}; + +weakMap.set(obj, "ok"); // works fine (object key) + +*!* +// can't use a string as the key +weakMap.set("test", "Whoops"); // Error, because "test" is not an object +*/!* +``` + +Now, if we use an object as the key in it, and there are no other references to that object -- it will be removed from memory (and from the map) automatically. + +```js +let john = { name: "John" }; + +let weakMap = new WeakMap(); +weakMap.set(john, "..."); + +john = null; // overwrite the reference + +// john is removed from memory! +``` + +Compare it with the regular `Map` example above. Now if `john` only exists as the key of `WeakMap` -- it will be automatically deleted from the map (and memory). + +`WeakMap` does not support iteration and methods `keys()`, `values()`, `entries()`, so there's no way to get all keys or values from it. + +`WeakMap` has only the following methods: + +- [`weakMap.set(key, value)`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/WeakMap/set) +- [`weakMap.get(key)`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/WeakMap/get) +- [`weakMap.delete(key)`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/WeakMap/delete) +- [`weakMap.has(key)`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/WeakMap/has) + +Why such a limitation? That's for technical reasons. If an object has lost all other references (like `john` in the code above), then it is to be garbage-collected automatically. But technically it's not exactly specified *when the cleanup happens*. + +The JavaScript engine decides that. It may choose to perform the memory cleanup immediately or to wait and do the cleaning later when more deletions happen. So, technically, the current element count of a `WeakMap` is not known. The engine may have cleaned it up or not, or did it partially. For that reason, methods that access all keys/values are not supported. + +Now, where do we need such a data structure? + +## Use case: additional data + +The main area of application for `WeakMap` is an *additional data storage*. + +If we're working with an object that "belongs" to another code, maybe even a third-party library, and would like to store some data associated with it, that should only exist while the object is alive - then `WeakMap` is exactly what's needed. + +We put the data to a `WeakMap`, using the object as the key, and when the object is garbage collected, that data will automatically disappear as well. + +```js +weakMap.set(john, "secret documents"); +// if john dies, secret documents will be destroyed automatically +``` + +Let's look at an example. + +For instance, we have code that keeps a visit count for users. The information is stored in a map: a user object is the key and the visit count is the value. When a user leaves (its object gets garbage collected), we don't want to store their visit count anymore. + +Here's an example of a counting function with `Map`: + +```js +// 📁 visitsCount.js +let visitsCountMap = new Map(); // map: user => visits count + +// increase the visits count +function countUser(user) { + let count = visitsCountMap.get(user) || 0; + visitsCountMap.set(user, count + 1); +} +``` + +And here's another part of the code, maybe another file using it: + +```js +// 📁 main.js +let john = { name: "John" }; + +countUser(john); // count his visits + +// later john leaves us +john = null; +``` + +Now, `john` object should be garbage collected, but remains in memory, as it's a key in `visitsCountMap`. + +We need to clean `visitsCountMap` when we remove users, otherwise it will grow in memory indefinitely. Such cleaning can become a tedious task in complex architectures. + +We can avoid it by switching to `WeakMap` instead: + +```js +// 📁 visitsCount.js +let visitsCountMap = new WeakMap(); // weakmap: user => visits count + +// increase the visits count +function countUser(user) { + let count = visitsCountMap.get(user) || 0; + visitsCountMap.set(user, count + 1); +} +``` + +Now we don't have to clean `visitsCountMap`. After `john` object becomes unreachable, by all means except as a key of `WeakMap`, it gets removed from memory, along with the information by that key from `WeakMap`. + +## Use case: caching + +Another common example is caching. We can store ("cache") results from a function, so that future calls on the same object can reuse it. + +To achieve that, we can use `Map` (not optimal scenario): + +```js run +// 📁 cache.js +let cache = new Map(); + +// calculate and remember the result +function process(obj) { + if (!cache.has(obj)) { + let result = /* calculations of the result for */ obj; + + cache.set(obj, result); + return result; + } + + return cache.get(obj); +} + +*!* +// Now we use process() in another file: +*/!* + +// 📁 main.js +let obj = {/* let's say we have an object */}; + +let result1 = process(obj); // calculated + +// ...later, from another place of the code... +let result2 = process(obj); // remembered result taken from cache + +// ...later, when the object is not needed any more: +obj = null; + +alert(cache.size); // 1 (Ouch! The object is still in cache, taking memory!) +``` + +For multiple calls of `process(obj)` with the same object, it only calculates the result the first time, and then just takes it from `cache`. The downside is that we need to clean `cache` when the object is not needed any more. + +If we replace `Map` with `WeakMap`, then this problem disappears. The cached result will be removed from memory automatically after the object gets garbage collected. + +```js run +// 📁 cache.js +*!* +let cache = new WeakMap(); +*/!* + +// calculate and remember the result +function process(obj) { + if (!cache.has(obj)) { + let result = /* calculate the result for */ obj; + + cache.set(obj, result); + return result; + } + + return cache.get(obj); +} + +// 📁 main.js +let obj = {/* some object */}; + +let result1 = process(obj); +let result2 = process(obj); + +// ...later, when the object is not needed any more: +obj = null; + +// Can't get cache.size, as it's a WeakMap, +// but it's 0 or soon be 0 +// When obj gets garbage collected, cached data will be removed as well +``` + +## WeakSet + +[`WeakSet`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/WeakSet) behaves similarly: + +- It is analogous to `Set`, but we may only add objects to `WeakSet` (not primitives). +- An object exists in the set while it is reachable from somewhere else. +- Like `Set`, it supports [`add`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Weakset/add), [`has`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Weakset/has) and [`delete`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Weakset/delete), but not `size`, `keys()` and no iterations. + +Being "weak", it also serves as additional storage. But not for arbitrary data, rather for "yes/no" facts. A membership in `WeakSet` may mean something about the object. + +For instance, we can add users to `WeakSet` to keep track of those who visited our site: + +```js run +let visitedSet = new WeakSet(); + +let john = { name: "John" }; +let pete = { name: "Pete" }; +let mary = { name: "Mary" }; + +visitedSet.add(john); // John visited us +visitedSet.add(pete); // Then Pete +visitedSet.add(john); // John again + +// visitedSet has 2 users now + +// check if John visited? +alert(visitedSet.has(john)); // true + +// check if Mary visited? +alert(visitedSet.has(mary)); // false + +john = null; + +// visitedSet will be cleaned automatically +``` + +The most notable limitation of `WeakMap` and `WeakSet` is the absence of iterations, and the inability to get all current content. That may appear inconvenient, but does not prevent `WeakMap/WeakSet` from doing their main job -- be an "additional" storage of data for objects which are stored/managed at another place. + +## Summary + +[`WeakMap`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/WeakMap) is `Map`-like collection that allows only objects as keys and removes them together with associated value once they become inaccessible by other means. + +[`WeakSet`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/WeakSet) is `Set`-like collection that stores only objects and removes them once they become inaccessible by other means. + +Their main advantages are that they have weak reference to objects, so they can easily be removed by garbage collector. + +That comes at the cost of not having support for `clear`, `size`, `keys`, `values`... + +`WeakMap` and `WeakSet` are used as "secondary" data structures in addition to the "primary" object storage. Once the object is removed from the primary storage, if it is only found as the key of `WeakMap` or in a `WeakSet`, it will be cleaned up automatically. diff --git a/1-js/05-data-types/08-keys-values-entries/01-sum-salaries/_js.view/solution.js b/1-js/05-data-types/09-keys-values-entries/01-sum-salaries/_js.view/solution.js similarity index 100% rename from 1-js/05-data-types/08-keys-values-entries/01-sum-salaries/_js.view/solution.js rename to 1-js/05-data-types/09-keys-values-entries/01-sum-salaries/_js.view/solution.js diff --git a/1-js/05-data-types/08-keys-values-entries/01-sum-salaries/_js.view/test.js b/1-js/05-data-types/09-keys-values-entries/01-sum-salaries/_js.view/test.js similarity index 100% rename from 1-js/05-data-types/08-keys-values-entries/01-sum-salaries/_js.view/test.js rename to 1-js/05-data-types/09-keys-values-entries/01-sum-salaries/_js.view/test.js diff --git a/1-js/05-data-types/08-keys-values-entries/01-sum-salaries/solution.md b/1-js/05-data-types/09-keys-values-entries/01-sum-salaries/solution.md similarity index 100% rename from 1-js/05-data-types/08-keys-values-entries/01-sum-salaries/solution.md rename to 1-js/05-data-types/09-keys-values-entries/01-sum-salaries/solution.md diff --git a/1-js/05-data-types/08-keys-values-entries/01-sum-salaries/task.md b/1-js/05-data-types/09-keys-values-entries/01-sum-salaries/task.md similarity index 100% rename from 1-js/05-data-types/08-keys-values-entries/01-sum-salaries/task.md rename to 1-js/05-data-types/09-keys-values-entries/01-sum-salaries/task.md diff --git a/1-js/05-data-types/08-keys-values-entries/02-count-properties/_js.view/solution.js b/1-js/05-data-types/09-keys-values-entries/02-count-properties/_js.view/solution.js similarity index 100% rename from 1-js/05-data-types/08-keys-values-entries/02-count-properties/_js.view/solution.js rename to 1-js/05-data-types/09-keys-values-entries/02-count-properties/_js.view/solution.js diff --git a/1-js/05-data-types/08-keys-values-entries/02-count-properties/_js.view/test.js b/1-js/05-data-types/09-keys-values-entries/02-count-properties/_js.view/test.js similarity index 100% rename from 1-js/05-data-types/08-keys-values-entries/02-count-properties/_js.view/test.js rename to 1-js/05-data-types/09-keys-values-entries/02-count-properties/_js.view/test.js diff --git a/1-js/05-data-types/09-destructuring-assignment/6-max-salary/solution.md b/1-js/05-data-types/09-keys-values-entries/02-count-properties/solution.md similarity index 100% rename from 1-js/05-data-types/09-destructuring-assignment/6-max-salary/solution.md rename to 1-js/05-data-types/09-keys-values-entries/02-count-properties/solution.md diff --git a/1-js/05-data-types/08-keys-values-entries/02-count-properties/task.md b/1-js/05-data-types/09-keys-values-entries/02-count-properties/task.md similarity index 100% rename from 1-js/05-data-types/08-keys-values-entries/02-count-properties/task.md rename to 1-js/05-data-types/09-keys-values-entries/02-count-properties/task.md diff --git a/1-js/05-data-types/08-keys-values-entries/article.md b/1-js/05-data-types/09-keys-values-entries/article.md similarity index 58% rename from 1-js/05-data-types/08-keys-values-entries/article.md rename to 1-js/05-data-types/09-keys-values-entries/article.md index 66ca3ca92..bef678f53 100644 --- a/1-js/05-data-types/08-keys-values-entries/article.md +++ b/1-js/05-data-types/09-keys-values-entries/article.md @@ -1,17 +1,17 @@ # Object.keys, values, entries -Let's step away from the individual data structures and talk about the iterations over them. +Let's step away from the individual data structures and talk about the iterations over them. In the previous chapter we saw methods `map.keys()`, `map.values()`, `map.entries()`. -These methods are generic, there is a common agreement to use them for data structures. If we ever create a data structure of our own, we should implement them too. +These methods are generic, there is a common agreement to use them for data structures. If we ever create a data structure of our own, we should implement them too. They are supported for: - `Map` - `Set` -- `Array` (except `arr.values()`) +- `Array` Plain objects also support similar methods, but the syntax is a bit different. @@ -23,7 +23,7 @@ For plain objects, the following methods are available: - [Object.values(obj)](mdn:js/Object/values) -- returns an array of values. - [Object.entries(obj)](mdn:js/Object/entries) -- returns an array of `[key, value]` pairs. -...But please note the distinctions (compared to map for example): +Please note the distinctions (compared to map for example): | | Map | Object | |-------------|------------------|--------------| @@ -32,7 +32,7 @@ For plain objects, the following methods are available: The first difference is that we have to call `Object.keys(obj)`, and not `obj.keys()`. -Why so? The main reason is flexibility. Remember, objects are a base of all complex structures in JavaScript. So we may have an object of our own like `order` that implements its own `order.values()` method. And we still can call `Object.values(order)` on it. +Why so? The main reason is flexibility. Remember, objects are a base of all complex structures in JavaScript. So we may have an object of our own like `data` that implements its own `data.values()` method. And we still can call `Object.values(data)` on it. The second difference is that `Object.*` methods return "real" array objects, not just an iterable. That's mainly for historical reasons. @@ -63,8 +63,41 @@ for (let value of Object.values(user)) { } ``` -## Object.keys/values/entries ignore symbolic properties - +```warn header="Object.keys/values/entries ignore symbolic properties" Just like a `for..in` loop, these methods ignore properties that use `Symbol(...)` as keys. -Usually that's convenient. But if we want symbolic keys too, then there's a separate method [Object.getOwnPropertySymbols](mdn:js/Object/getOwnPropertySymbols) that returns an array of only symbolic keys. Also, the method [Reflect.ownKeys(obj)](mdn:js/Reflect/ownKeys) returns *all* keys. +Usually that's convenient. But if we want symbolic keys too, then there's a separate method [Object.getOwnPropertySymbols](mdn:js/Object/getOwnPropertySymbols) that returns an array of only symbolic keys. Also, there exist a method [Reflect.ownKeys(obj)](mdn:js/Reflect/ownKeys) that returns *all* keys. +``` + + +## Transforming objects + +Objects lack many methods that exist for arrays, e.g. `map`, `filter` and others. + +If we'd like to apply them, then we can use `Object.entries` followed by `Object.fromEntries`: + +1. Use `Object.entries(obj)` to get an array of key/value pairs from `obj`. +2. Use array methods on that array, e.g. `map`, to transform these key/value pairs. +3. Use `Object.fromEntries(array)` on the resulting array to turn it back into an object. + +For example, we have an object with prices, and would like to double them: + +```js run +let prices = { + banana: 1, + orange: 2, + meat: 4, +}; + +*!* +let doublePrices = Object.fromEntries( + // convert prices to array, map each key/value pair into another pair + // and then fromEntries gives back the object + Object.entries(prices).map(entry => [entry[0], entry[1] * 2]) +); +*/!* + +alert(doublePrices.meat); // 8 +``` + +It may look difficult at first sight, but becomes easy to understand after you use it once or twice. We can make powerful chains of transforms this way. diff --git a/1-js/05-data-types/10-date/1-new-date/solution.md b/1-js/05-data-types/10-date/1-new-date/solution.md deleted file mode 100644 index eb271a91a..000000000 --- a/1-js/05-data-types/10-date/1-new-date/solution.md +++ /dev/null @@ -1,8 +0,0 @@ -The `new Date` constructor uses the local time zone by default. So the only important thing to remember is that months start from zero. - -So February has number 1. - -```js run -let d = new Date(2012, 1, 20, 3, 12); -alert( d ); -``` diff --git a/1-js/05-data-types/09-destructuring-assignment/1-destruct-user/solution.md b/1-js/05-data-types/10-destructuring-assignment/1-destruct-user/solution.md similarity index 100% rename from 1-js/05-data-types/09-destructuring-assignment/1-destruct-user/solution.md rename to 1-js/05-data-types/10-destructuring-assignment/1-destruct-user/solution.md diff --git a/1-js/05-data-types/09-destructuring-assignment/1-destruct-user/task.md b/1-js/05-data-types/10-destructuring-assignment/1-destruct-user/task.md similarity index 76% rename from 1-js/05-data-types/09-destructuring-assignment/1-destruct-user/task.md rename to 1-js/05-data-types/10-destructuring-assignment/1-destruct-user/task.md index b2213323a..b68db5c59 100644 --- a/1-js/05-data-types/09-destructuring-assignment/1-destruct-user/task.md +++ b/1-js/05-data-types/10-destructuring-assignment/1-destruct-user/task.md @@ -17,9 +17,9 @@ Write the destructuring assignment that reads: - `name` property into the variable `name`. - `years` property into the variable `age`. -- `isAdmin` property into the variable `isAdmin` (false if absent) +- `isAdmin` property into the variable `isAdmin` (false, if no such property) -The values after the assignment should be: +Here's an example of the values after your assignment: ```js let user = { name: "John", years: 30 }; diff --git a/1-js/05-data-types/09-destructuring-assignment/6-max-salary/_js.view/solution.js b/1-js/05-data-types/10-destructuring-assignment/6-max-salary/_js.view/solution.js similarity index 67% rename from 1-js/05-data-types/09-destructuring-assignment/6-max-salary/_js.view/solution.js rename to 1-js/05-data-types/10-destructuring-assignment/6-max-salary/_js.view/solution.js index f4bd5c761..6538af42b 100644 --- a/1-js/05-data-types/09-destructuring-assignment/6-max-salary/_js.view/solution.js +++ b/1-js/05-data-types/10-destructuring-assignment/6-max-salary/_js.view/solution.js @@ -1,16 +1,14 @@ function topSalary(salaries) { - let max = 0; + let maxSalary = 0; let maxName = null; for(const [name, salary] of Object.entries(salaries)) { - if (max < salary) { - max = salary; + if (maxSalary < salary) { + maxSalary = salary; maxName = name; } } return maxName; -} - - +} \ No newline at end of file diff --git a/1-js/05-data-types/09-destructuring-assignment/6-max-salary/_js.view/test.js b/1-js/05-data-types/10-destructuring-assignment/6-max-salary/_js.view/test.js similarity index 100% rename from 1-js/05-data-types/09-destructuring-assignment/6-max-salary/_js.view/test.js rename to 1-js/05-data-types/10-destructuring-assignment/6-max-salary/_js.view/test.js diff --git a/1-js/05-data-types/10-date/3-weekday/solution.md b/1-js/05-data-types/10-destructuring-assignment/6-max-salary/solution.md similarity index 100% rename from 1-js/05-data-types/10-date/3-weekday/solution.md rename to 1-js/05-data-types/10-destructuring-assignment/6-max-salary/solution.md diff --git a/1-js/05-data-types/09-destructuring-assignment/6-max-salary/task.md b/1-js/05-data-types/10-destructuring-assignment/6-max-salary/task.md similarity index 100% rename from 1-js/05-data-types/09-destructuring-assignment/6-max-salary/task.md rename to 1-js/05-data-types/10-destructuring-assignment/6-max-salary/task.md diff --git a/1-js/05-data-types/09-destructuring-assignment/article.md b/1-js/05-data-types/10-destructuring-assignment/article.md similarity index 55% rename from 1-js/05-data-types/09-destructuring-assignment/article.md rename to 1-js/05-data-types/10-destructuring-assignment/article.md index 2f918e566..376d332d9 100644 --- a/1-js/05-data-types/09-destructuring-assignment/article.md +++ b/1-js/05-data-types/10-destructuring-assignment/article.md @@ -2,37 +2,48 @@ The two most used data structures in JavaScript are `Object` and `Array`. -Objects allow us to pack many pieces of information into a single entity and arrays allow us to store ordered collections. So we can make an object or an array and handle it as a single entity, or maybe pass it to a function call. +- Objects allow us to create a single entity that stores data items by key. +- Arrays allow us to gather data items into an ordered list. -*Destructuring assignment* is a special syntax that allows us to "unpack" arrays or objects into a bunch of variables, as sometimes they are more convenient. Destructuring also works great with complex functions that have a lot of parameters, default values, and soon we'll see how these are handled too. +However, when we pass these to a function, we may not need all of it. The function might only require certain elements or properties. + +*Destructuring assignment* is a special syntax that allows us to "unpack" arrays or objects into a bunch of variables, as sometimes that's more convenient. + +Destructuring also works well with complex functions that have a lot of parameters, default values, and so on. Soon we'll see that. ## Array destructuring -An example of how the array is destructured into variables: +Here's an example of how an array is destructured into variables: ```js -// we have an array with the name and surname -let arr = ["Ilya", "Kantor"] +// we have an array with a name and surname +let arr = ["John", "Smith"] *!* // destructuring assignment +// sets firstName = arr[0] +// and surname = arr[1] let [firstName, surname] = arr; */!* -alert(firstName); // Ilya -alert(surname); // Kantor +alert(firstName); // John +alert(surname); // Smith ``` Now we can work with variables instead of array members. It looks great when combined with `split` or other array-returning methods: -```js -let [firstName, surname] = "Ilya Kantor".split(' '); +```js run +let [firstName, surname] = "John Smith".split(' '); +alert(firstName); // John +alert(surname); // Smith ``` +As you can see, the syntax is simple. There are several peculiar details though. Let's see more examples to understand it better. + ````smart header="\"Destructuring\" does not mean \"destructive\"." -It's called "destructuring assignment," because it "destructurizes" by copying items into variables. But the array itself is not modified. +It's called "destructuring assignment," because it "destructurizes" by copying items into variables. However, the array itself is not modified. It's just a shorter way to write: ```js @@ -54,7 +65,7 @@ let [firstName, , title] = ["Julius", "Caesar", "Consul", "of the Roman Republic alert( title ); // Consul ``` -In the code above, the second element of the array is skipped, the third one is assigned to `title`, and the rest of the array is also skipped. +In the code above, the second element of the array is skipped, the third one is assigned to `title`, and the rest of the array items are also skipped (as there are no variables for them). ```` ````smart header="Works with any iterable on the right-side" @@ -65,29 +76,28 @@ In the code above, the second element of the array is skipped, the third one is let [a, b, c] = "abc"; // ["a", "b", "c"] let [one, two, three] = new Set([1, 2, 3]); ``` - +That works, because internally a destructuring assignment works by iterating over the right value. It's a kind of syntax sugar for calling `for..of` over the value to the right of `=` and assigning the values. ```` ````smart header="Assign to anything at the left-side" - -We can use any "assignables" at the left side. +We can use any "assignables" on the left side. For instance, an object property: ```js run let user = {}; -[user.name, user.surname] = "Ilya Kantor".split(' '); +[user.name, user.surname] = "John Smith".split(' '); -alert(user.name); // Ilya +alert(user.name); // John +alert(user.surname); // Smith ``` ```` ````smart header="Looping with .entries()" +In the previous chapter, we saw the [Object.entries(obj)](mdn:js/Object/entries) method. -In the previous chapter we saw the [Object.entries(obj)](mdn:js/Object/entries) method. - -We can use it with destructuring to loop over keys-and-values of an object: +We can use it with destructuring to loop over the keys-and-values of an object: ```js run let user = { @@ -95,7 +105,7 @@ let user = { age: 30 }; -// loop over keys-and-values +// loop over the keys-and-values *!* for (let [key, value] of Object.entries(user)) { */!* @@ -103,7 +113,7 @@ for (let [key, value] of Object.entries(user)) { } ``` -...And the same for a map: +The similar code for a `Map` is simpler, as it's iterable: ```js run let user = new Map(); @@ -111,35 +121,73 @@ user.set("name", "John"); user.set("age", "30"); *!* -for (let [key, value] of user.entries()) { +// Map iterates as [key, value] pairs, very convenient for destructuring +for (let [key, value] of user) { */!* alert(`${key}:${value}`); // name:John, then age:30 } ``` ```` + +````smart header="Swap variables trick" +There's a well-known trick for swapping values of two variables using a destructuring assignment: + +```js run +let guest = "Jane"; +let admin = "Pete"; + +// Let's swap the values: make guest=Pete, admin=Jane +*!* +[guest, admin] = [admin, guest]; +*/!* + +alert(`${guest} ${admin}`); // Pete Jane (successfully swapped!) +``` + +Here we create a temporary array of two variables and immediately destructure it in swapped order. + +We can swap more than two variables this way. +```` + ### The rest '...' -If we want not just to get first values, but also to gather all that follows -- we can add one more parameter that gets "the rest" using three dots `"..."`: +Usually, if the array is longer than the list at the left, the "extra" items are omitted. + +For example, here only two items are taken, and the rest is just ignored: ```js run -let [name1, name2, *!*...rest*/!*] = ["Julius", "Caesar", *!*"Consul", "of the Roman Republic"*/!*]; +let [name1, name2] = ["Julius", "Caesar", "Consul", "of the Roman Republic"]; alert(name1); // Julius alert(name2); // Caesar +// Further items aren't assigned anywhere +``` + +If we'd like also to gather all that follows -- we can add one more parameter that gets "the rest" using three dots `"..."`: + +```js run +let [name1, name2, *!*...rest*/!*] = ["Julius", "Caesar", *!*"Consul", "of the Roman Republic"*/!*]; *!* -// Note that type of `rest` is Array. +// rest is an array of items, starting from the 3rd one alert(rest[0]); // Consul alert(rest[1]); // of the Roman Republic alert(rest.length); // 2 */!* ``` -The value of `rest` is the array of the remaining array elements. We can use any other variable name in place of `rest`, just make sure it has three dots before it and goes last in the destructuring assignment. +The value of `rest` is the array of the remaining array elements. + +We can use any other variable name in place of `rest`, just make sure it has three dots before it and goes last in the destructuring assignment. + +```js run +let [name1, name2, *!*...titles*/!*] = ["Julius", "Caesar", "Consul", "of the Roman Republic"]; +// now titles = ["Consul", "of the Roman Republic"] +``` ### Default values -If there are fewer values in the array than variables in the assignment, there will be no error. Absent values are considered undefined: +If the array is shorter than the list of variables on the left, there will be no errors. Absent values are considered undefined: ```js run *!* @@ -164,7 +212,7 @@ alert(surname); // Anonymous (default used) Default values can be more complex expressions or even function calls. They are evaluated only if the value is not provided. -For instance, here we use the `prompt` function for two defaults. But it will run only for the missing one: +For instance, here we use the `prompt` function for two defaults: ```js run // runs only prompt for surname @@ -174,7 +222,7 @@ alert(name); // Julius (from array) alert(surname); // whatever prompt gets ``` - +Please note: the `prompt` will run only for the missing value (`surname`). ## Object destructuring @@ -183,10 +231,10 @@ The destructuring assignment also works with objects. The basic syntax is: ```js -let {var1, var2} = {var1:…, var2…} +let {var1, var2} = {var1:…, var2:…} ``` -We have an existing object at the right side, that we want to split into variables. The left side contains a "pattern" for corresponding properties. In the simple case, that's a list of variable names in `{...}`. +We should have an existing object on the right side, that we want to split into variables. The left side contains an object-like "pattern" for corresponding properties. In the simplest case, that's a list of variable names in `{...}`. For instance: @@ -206,16 +254,18 @@ alert(width); // 100 alert(height); // 200 ``` -Properties `options.title`, `options.width` and `options.height` are assigned to the corresponding variables. The order does not matter. This works too: +Properties `options.title`, `options.width` and `options.height` are assigned to the corresponding variables. + +The order does not matter. This works too: ```js -// changed the order of properties in let {...} +// changed the order in let {...} let {height, width, title} = { title: "Menu", height: 200, width: 100 } ``` The pattern on the left side may be more complex and specify the mapping between properties and variables. -If we want to assign a property to a variable with another name, for instance, `options.width` to go into the variable named `w`, then we can set it using a colon: +If we want to assign a property to a variable with another name, for instance, make `options.width` go into the variable named `w`, then we can set the variable name using a colon: ```js run let options = { @@ -258,7 +308,7 @@ alert(height); // 200 Just like with arrays or function parameters, default values can be any expressions or even function calls. They will be evaluated if the value is not provided. -The code below asks for width, but not the title. +In the code below `prompt` asks for `width`, but not for `title`: ```js run let options = { @@ -270,7 +320,7 @@ let {width = prompt("width?"), title = prompt("title?")} = options; */!* alert(title); // Menu -alert(width); // (whatever you the result of prompt is) +alert(width); // (whatever the result of prompt is) ``` We also can combine both the colon and equality: @@ -289,11 +339,26 @@ alert(w); // 100 alert(h); // 200 ``` -### The rest operator +If we have a complex object with many properties, we can extract only what we need: + +```js run +let options = { + title: "Menu", + width: 100, + height: 200 +}; + +// only extract title as a variable +let { title } = options; + +alert(title); // Menu +``` + +### The rest pattern "..." What if the object has more properties than we have variables? Can we take some and then assign the "rest" somewhere? -The specification for using the rest operator (three dots) here is almost in the standard, but most browsers do not support it yet. +We can use the rest pattern, just like we did with arrays. It's not supported by some older browsers (IE, use Babel to polyfill it), but works in modern ones. It looks like this: @@ -305,6 +370,8 @@ let options = { }; *!* +// title = property named title +// rest = object with the rest of properties let {title, ...rest} = options; */!* @@ -313,10 +380,8 @@ alert(rest.height); // 200 alert(rest.width); // 100 ``` - - -````smart header="Gotcha without `let`" -In the examples above variables were declared right before the assignment: `let {…} = {…}`. Of course, we could use existing variables too. But there's a catch. +````smart header="Gotcha if there's no `let`" +In the examples above variables were declared right in the assignment: `let {…} = {…}`. Of course, we could use existing variables too, without `let`. But there's a catch. This won't work: ```js run @@ -337,7 +402,9 @@ The problem is that JavaScript treats `{...}` in the main code flow (not inside } ``` -To show JavaScript that it's not a code block, we can wrap the whole assignment in parentheses `(...)`: +So here JavaScript assumes that we have a code block, that's why there's an error. We want destructuring instead. + +To show JavaScript that it's not a code block, we can wrap the expression in parentheses `(...)`: ```js run let title, width, height; @@ -347,14 +414,13 @@ let title, width, height; alert( title ); // Menu ``` - ```` ## Nested destructuring -If an object or an array contain other objects and arrays, we can use more complex left-side patterns to extract deeper portions. +If an object or an array contains other nested objects and arrays, we can use more complex left-side patterns to extract deeper portions. -In the code below `options` has another object in the property `size` and an array in the property `items`. The pattern at the left side of the assignment has the same structure: +In the code below `options` has another object in the property `size` and an array in the property `items`. The pattern on the left side of the assignment has the same structure to extract values from them: ```js run let options = { @@ -363,10 +429,10 @@ let options = { height: 200 }, items: ["Cake", "Donut"], - extra: true // something extra that we will not destruct + extra: true }; -// destructuring assignment on multiple lines for clarity +// destructuring assignment split in multiple lines for clarity let { size: { // put size here width, @@ -383,27 +449,24 @@ alert(item1); // Cake alert(item2); // Donut ``` -The whole `options` object except `extra` that was not mentioned, is assigned to corresponding variables. +All properties of `options` object except `extra` which is absent in the left part, are assigned to corresponding variables: +<<<<<<< HEAD:1-js/05-data-types/09-destructuring-assignment/article.md Note that `size` and `items` itself is not destructured. +======= +>>>>>>> 540d753e90789205fc6e75c502f68382c87dea9b:1-js/05-data-types/10-destructuring-assignment/article.md  Finally, we have `width`, `height`, `item1`, `item2` and `title` from the default value. -That often happens with destructuring assignments. We have a complex object with many properties and want to extract only what we need. - -Even here it happens: -```js -// take size as a whole into a variable, ignore the rest -let { size } = options; -``` +Note that there are no variables for `size` and `items`, as we take their content instead. ## Smart function parameters -There are times when a function may have many parameters, most of which are optional. That's especially true for user interfaces. Imagine a function that creates a menu. It may have a width, a height, a title, items list and so on. +There are times when a function has many parameters, most of which are optional. That's especially true for user interfaces. Imagine a function that creates a menu. It may have a width, a height, a title, an item list and so on. -Here's a bad way to write such function: +Here's a bad way to write such a function: ```js function showMenu(title = "Untitled", width = 200, height = 100, items = []) { @@ -411,11 +474,12 @@ function showMenu(title = "Untitled", width = 200, height = 100, items = []) { } ``` -In real-life, the problem is how to remember the order of arguments. Usually IDEs try to help us, especially if the code is well-documented, but still... Another problem is how to call a function when most parameters are ok by default. +In real-life, the problem is how to remember the order of arguments. Usually, IDEs try to help us, especially if the code is well-documented, but still... Another problem is how to call a function when most parameters are ok by default. Like this? ```js +// undefined where default values are fine showMenu("My Menu", undefined, undefined, ["Item1", "Item2"]) ``` @@ -467,29 +531,28 @@ function showMenu({ showMenu(options); ``` -The syntax is the same as for a destructuring assignment: +The full syntax is the same as for a destructuring assignment: ```js function({ - incomingProperty: parameterName = defaultValue + incomingProperty: varName = defaultValue ... }) ``` +Then, for an object of parameters, there will be a variable `varName` for the property `incomingProperty`, with `defaultValue` by default. + Please note that such destructuring assumes that `showMenu()` does have an argument. If we want all values by default, then we should specify an empty object: ```js -showMenu({}); - +showMenu({}); // ok, all values are default showMenu(); // this would give an error ``` -We can fix this by making `{}` the default value for the whole destructuring thing: - +We can fix this by making `{}` the default value for the whole object of parameters: ```js run -// simplified parameters a bit for clarity -function showMenu(*!*{ title = "Menu", width = 100, height = 200 } = {}*/!*) { +function showMenu({ title = "Menu", width = 100, height = 200 }*!* = {}*/!*) { alert( `${title} ${width} ${height}` ); } @@ -501,19 +564,21 @@ In the code above, the whole arguments object is `{}` by default, so there's alw ## Summary - Destructuring assignment allows for instantly mapping an object or array onto many variables. -- The object syntax: +- The full object syntax: ```js - let {prop : varName = default, ...} = object + let {prop : varName = defaultValue, ...rest} = object ``` This means that property `prop` should go into the variable `varName` and, if no such property exists, then the `default` value should be used. -- The array syntax: + Object properties that have no mapping are copied to the `rest` object. + +- The full array syntax: ```js - let [item1 = default, item2, ...rest] = array + let [item1 = defaultValue, item2, ...rest] = array ``` - The first item goes to `item1`; the second goes into `item2`, all the rest makes the array `rest`. + The first item goes to `item1`; the second goes into `item2`, and all the rest makes the array `rest`. -- For more complex cases, the left side must have the same structure as the right one. +- It's possible to extract data from nested arrays/objects, for that the left side must have the same structure as the right one. diff --git a/1-js/05-data-types/09-destructuring-assignment/destructuring-complex.svg b/1-js/05-data-types/10-destructuring-assignment/destructuring-complex.svg similarity index 73% rename from 1-js/05-data-types/09-destructuring-assignment/destructuring-complex.svg rename to 1-js/05-data-types/10-destructuring-assignment/destructuring-complex.svg index c3e25b569..c2c0acf7c 100644 --- a/1-js/05-data-types/09-destructuring-assignment/destructuring-complex.svg +++ b/1-js/05-data-types/10-destructuring-assignment/destructuring-complex.svg @@ -1,3 +1,4 @@ +<<<<<<< HEAD:1-js/05-data-types/09-destructuring-assignment/destructuring-complex.svg <?xml version="1.0" encoding="UTF-8"?> <svg width="488px" height="150px" viewBox="0 0 488 150" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <!-- Generator: sketchtool 55.2 (78181) - https://sketchapp.com --> @@ -56,4 +57,7 @@ <path id="Line-Copy-3" d="M253.5,102.5 L213.5,102.5 L213.5,100.5 L253.5,100.5 L253.5,94.5 L267.5,101.5 L253.5,108.5 L253.5,102.5 Z" fill="#EE6B47"></path> </g> </g> -</svg> \ No newline at end of file +</svg> +======= +<svg xmlns="http://www.w3.org/2000/svg" width="488" height="150" viewBox="0 0 488 150"><defs><style>@import url(https://fonts.googleapis.com/css?family=Open+Sans:bold,italic,bolditalic%7CPT+Mono);@font-face{font-family:'PT Mono';font-weight:700;font-style:normal;src:local('PT MonoBold'),url(/font/PTMonoBold.woff2) format('woff2'),url(/font/PTMonoBold.woff) format('woff'),url(/font/PTMonoBold.ttf) format('truetype')}</style></defs><g id="combined" fill="none" fill-rule="evenodd" stroke="none" stroke-width="1"><g id="destructuring-complex.svg" fill-rule="nonzero"><g id="let-options-=-{" transform="translate(275.176 11.102)"><path id="let" fill="#1C85B5" d="M2.256 1.217H.226V.239h3.233v8.668h2.044v.991H0v-.99h2.256V1.216zm11.156 4.887c0 .17-.002.31-.007.424a6.37 6.37 0 01-.02.322h-4.82c0 .701.196 1.24.588 1.616.392.376.957.564 1.696.564.2 0 .4-.008.601-.024.2-.016.394-.037.581-.065.187-.027.366-.058.537-.092.17-.034.33-.072.475-.113v.978a9.161 9.161 0 01-2.365.308c-.588 0-1.094-.08-1.518-.24a2.597 2.597 0 01-1.042-.694 2.857 2.857 0 01-.602-1.114 5.273 5.273 0 01-.195-1.494c0-.483.07-.94.209-1.37a3.44 3.44 0 01.608-1.135c.267-.326.594-.584.981-.776a2.94 2.94 0 011.32-.287c.478 0 .902.075 1.271.226.37.15.68.363.933.639s.444.61.574 1.005c.13.394.195.835.195 1.322zm-1.237-.17a2.593 2.593 0 00-.09-.838 1.763 1.763 0 00-.337-.653 1.576 1.576 0 00-.571-.427 1.916 1.916 0 00-.793-.154c-.26 0-.497.05-.711.15-.214.101-.399.242-.554.425a2.19 2.19 0 00-.376.656 3.026 3.026 0 00-.178.84h3.61zm8.668 3.869a5.793 5.793 0 01-.834.147 8.52 8.52 0 01-.875.044c-.862 0-1.504-.195-1.928-.584-.424-.39-.636-.988-.636-1.795V4.033h-1.92v-.998h1.92V1.148l1.19-.307v2.194h3.083v.998H17.76V7.52c0 .492.13.86.393 1.104.262.243.648.365 1.159.365.218 0 .458-.017.717-.051.26-.034.531-.088.814-.16v1.025z"/><path id="options" fill="#181717" d="M36.682 6.412a4.55 4.55 0 01-.226 1.466c-.15.445-.367.825-.65 1.142a2.913 2.913 0 01-1.032.738 3.447 3.447 0 01-1.38.263c-.493 0-.934-.076-1.323-.229a2.617 2.617 0 01-.991-.673 2.98 2.98 0 01-.622-1.1c-.144-.438-.216-.942-.216-1.511 0-.533.075-1.02.226-1.46.15-.44.367-.818.65-1.134a2.913 2.913 0 011.031-.739 3.447 3.447 0 011.381-.263c.492 0 .933.076 1.323.23.39.152.72.375.991.669.271.294.479.66.622 1.097.144.438.216.939.216 1.504zm-1.217.055c0-.424-.047-.794-.14-1.111a2.237 2.237 0 00-.4-.793 1.65 1.65 0 00-.633-.479 2.077 2.077 0 00-.83-.16c-.356 0-.66.07-.913.208-.253.14-.46.325-.622.557a2.4 2.4 0 00-.355.81 4.06 4.06 0 00-.113.968c0 .424.047.795.14 1.114.094.32.227.585.4.796.173.212.383.372.629.479.246.107.524.16.834.16.355 0 .66-.069.913-.208.252-.139.46-.325.622-.557a2.4 2.4 0 00.355-.81 4.09 4.09 0 00.113-.974zm8.805-.123c0 .61-.086 1.144-.257 1.6-.17.455-.407.833-.707 1.134a2.9 2.9 0 01-1.067.677c-.41.15-.854.225-1.333.225-.219 0-.436-.01-.653-.034a4.952 4.952 0 01-.66-.116v2.871h-1.189V3.035h1.06l.075 1.149c.342-.47.706-.8 1.094-.988.387-.19.806-.284 1.258-.284.392 0 .736.082 1.032.246.296.164.544.396.745.694.2.299.35.659.451 1.08.1.422.15.892.15 1.412zm-1.217.054c0-.36-.026-.69-.079-.99a2.586 2.586 0 00-.25-.773 1.37 1.37 0 00-.437-.503 1.104 1.104 0 00-.636-.18c-.15 0-.303.023-.458.07a1.857 1.857 0 00-.482.24 3.59 3.59 0 00-.526.445 7 7 0 00-.591.687v3.329c.219.09.449.163.69.215.242.052.479.079.711.079.643 0 1.146-.218 1.51-.653.365-.435.548-1.09.548-1.966zm8.579 3.405a5.793 5.793 0 01-.834.147 8.52 8.52 0 01-.875.044c-.861 0-1.504-.195-1.928-.584-.424-.39-.636-.988-.636-1.795V4.033h-1.92v-.998h1.92V1.148l1.19-.307v2.194h3.083v.998h-3.083V7.52c0 .492.13.86.393 1.104.262.243.648.365 1.159.365.218 0 .458-.017.717-.051.26-.034.531-.088.814-.16v1.025zm4.505-5.783h-2.03v-.985h3.233v5.872h2.044v.991H53.88v-.99h2.256V4.02zm.417-3.863c.132 0 .255.024.369.072a.893.893 0 01.297.202.919.919 0 01.27.663.96.96 0 01-.27.663.893.893 0 01-.297.201.944.944 0 01-.37.072.944.944 0 01-.368-.072.893.893 0 01-.298-.201.96.96 0 01-.27-.663.919.919 0 01.27-.663.893.893 0 01.298-.202.944.944 0 01.369-.072zM67.47 6.412a4.55 4.55 0 01-.226 1.466c-.15.445-.367.825-.65 1.142a2.913 2.913 0 01-1.032.738 3.447 3.447 0 01-1.38.263c-.493 0-.933-.076-1.323-.229a2.617 2.617 0 01-.991-.673 2.98 2.98 0 01-.622-1.1c-.144-.438-.216-.942-.216-1.511 0-.533.075-1.02.226-1.46.15-.44.367-.818.65-1.134a2.913 2.913 0 011.031-.739 3.447 3.447 0 011.381-.263c.493 0 .933.076 1.323.23.39.152.72.375.991.669.271.294.479.66.622 1.097.144.438.216.939.216 1.504zm-1.217.055c0-.424-.047-.794-.14-1.111a2.237 2.237 0 00-.4-.793 1.65 1.65 0 00-.632-.479 2.077 2.077 0 00-.831-.16c-.355 0-.66.07-.913.208-.253.14-.46.325-.622.557a2.4 2.4 0 00-.355.81 4.06 4.06 0 00-.113.968c0 .424.047.795.14 1.114.094.32.227.585.4.796.173.212.383.372.629.479.246.107.524.16.834.16.355 0 .66-.069.913-.208.253-.139.46-.325.622-.557a2.4 2.4 0 00.355-.81 4.09 4.09 0 00.113-.974zm2.94-3.432h1.059l.048 1.108c.2-.237.394-.435.58-.592.188-.157.371-.283.551-.38a2.06 2.06 0 01.55-.2c.187-.04.381-.059.581-.059.707 0 1.241.209 1.604.626.362.417.543 1.044.543 1.883v4.477h-1.19V5.517c0-.538-.1-.936-.3-1.193-.2-.258-.5-.386-.896-.386-.146 0-.288.021-.427.064a1.557 1.557 0 00-.434.226c-.15.107-.313.252-.489.434-.175.182-.372.41-.591.684v4.552h-1.19V3.035zm13.131 4.99a1.634 1.634 0 01-.458 1.16 2.084 2.084 0 01-.492.378 3.272 3.272 0 01-.598.26c-.212.069-.43.119-.653.15a4.637 4.637 0 01-.656.048 12.3 12.3 0 01-1.282-.061 8.646 8.646 0 01-1.145-.198V8.668c.401.114.8.2 1.196.26.397.059.791.089 1.183.089.57 0 .991-.078 1.265-.233.273-.155.41-.376.41-.663a.812.812 0 00-.065-.331.753.753 0 00-.236-.28 2.254 2.254 0 00-.53-.278 11.81 11.81 0 00-.98-.328 6.963 6.963 0 01-.859-.31 2.877 2.877 0 01-.68-.414 1.776 1.776 0 01-.451-.56 1.649 1.649 0 01-.164-.76 1.744 1.744 0 01.588-1.264c.214-.196.503-.36.868-.49.365-.129.82-.194 1.367-.194.269 0 .568.015.896.045.328.03.67.08 1.025.153v1.06a9.803 9.803 0 00-1.063-.202 6.926 6.926 0 00-.872-.065c-.296 0-.545.023-.748.069a1.553 1.553 0 00-.492.188.734.734 0 00-.27.28.748.748 0 00-.082.345c0 .123.024.235.071.335.048.1.137.197.267.29.13.094.311.187.544.28.232.094.535.196.909.305.405.119.747.243 1.025.373.278.13.504.274.677.434.173.16.297.34.372.54.076.2.113.428.113.683z"/><path id="=" fill="#DBAF88" d="M97.98 5.482H92.1V4.478h5.88v1.004zm0 2.38H92.1V6.855h5.88v1.005z"/><path id="{" fill="#7E7C7B" d="M112.718 12.701h-.506c-.88 0-1.534-.206-1.962-.618-.428-.413-.643-1.038-.643-1.877V7.854a2.18 2.18 0 00-.075-.598.978.978 0 00-.263-.444 1.224 1.224 0 00-.499-.277 2.706 2.706 0 00-.783-.096h-.294v-.95h.294c.333 0 .604-.027.814-.082.21-.054.373-.138.492-.25a.88.88 0 00.246-.427c.046-.173.068-.378.068-.615v-1.62c0-.383.046-.728.137-1.036.091-.307.24-.57.448-.786.207-.216.476-.382.807-.499.33-.116.734-.174 1.213-.174h.506v.957h-.404c-1.057 0-1.585.513-1.585 1.538v1.593c0 1.112-.481 1.738-1.443 1.88.97.095 1.456.72 1.456 1.873v2.338c0 1.043.524 1.565 1.572 1.565h.404v.957z"/><path id="size" fill="#181717" d="M20.747 25.025a1.634 1.634 0 01-.458 1.16 2.084 2.084 0 01-.492.378 3.272 3.272 0 01-.598.26c-.212.069-.43.119-.653.15a4.637 4.637 0 01-.656.048 12.3 12.3 0 01-1.282-.061 8.646 8.646 0 01-1.145-.198v-1.094c.4.114.8.2 1.196.26.397.059.79.089 1.183.089.57 0 .991-.078 1.264-.233.274-.155.41-.376.41-.663a.812.812 0 00-.064-.331.753.753 0 00-.236-.28 2.254 2.254 0 00-.53-.278 11.81 11.81 0 00-.98-.328 6.963 6.963 0 01-.859-.31 2.877 2.877 0 01-.68-.414 1.776 1.776 0 01-.451-.56 1.649 1.649 0 01-.164-.76 1.744 1.744 0 01.588-1.264c.214-.196.503-.36.868-.49.364-.129.82-.194 1.367-.194.269 0 .567.015.896.045.328.03.67.08 1.025.153v1.06a9.803 9.803 0 00-1.063-.202 6.926 6.926 0 00-.872-.065c-.296 0-.545.023-.748.069a1.553 1.553 0 00-.492.188.734.734 0 00-.27.28.748.748 0 00-.082.345c0 .123.023.235.071.335.048.1.137.197.267.29.13.094.311.187.543.28.233.094.536.196.91.305.405.119.747.243 1.025.373.278.13.504.274.677.434.173.16.297.34.372.54.075.2.113.428.113.683zm4.6-4.005h-2.03v-.985h3.234v5.872h2.044v.991h-5.503v-.99h2.256V21.02zm.418-3.863c.132 0 .255.024.369.072a.893.893 0 01.297.202.919.919 0 01.27.663.96.96 0 01-.27.663.893.893 0 01-.297.201.944.944 0 01-.37.072.944.944 0 01-.368-.072.893.893 0 01-.298-.201.96.96 0 01-.27-.663.919.919 0 01.27-.663.893.893 0 01.298-.202.944.944 0 01.369-.072zm10.5 9.741h-5.53v-.854l3.875-5.01h-3.78v-.999h5.21v.93l-3.809 4.929h4.034v1.004zm7.936-3.794c0 .17-.002.31-.007.424a6.37 6.37 0 01-.02.322h-4.82c0 .701.196 1.24.588 1.616.392.376.957.564 1.696.564.2 0 .4-.008.601-.024.2-.016.394-.037.581-.065.187-.027.366-.058.537-.092.17-.034.33-.072.475-.113v.978a9.161 9.161 0 01-2.365.308c-.588 0-1.094-.08-1.518-.24a2.597 2.597 0 01-1.042-.694 2.857 2.857 0 01-.602-1.114 5.273 5.273 0 01-.195-1.494c0-.483.07-.94.209-1.37a3.44 3.44 0 01.608-1.135c.267-.326.594-.584.981-.776a2.94 2.94 0 011.32-.287c.478 0 .902.075 1.271.226.37.15.68.363.933.639s.444.61.574 1.005c.13.394.195.835.195 1.322zm-1.237-.17a2.593 2.593 0 00-.089-.838 1.763 1.763 0 00-.338-.653 1.576 1.576 0 00-.571-.427 1.916 1.916 0 00-.793-.154c-.26 0-.497.05-.711.15-.214.101-.399.242-.554.425a2.19 2.19 0 00-.376.656 3.026 3.026 0 00-.178.84h3.61z"/><path id=":{" fill="#7E7C7B" d="M48.856 19.912c.142 0 .276.029.404.086a1.107 1.107 0 01.564.564.978.978 0 01.085.403.971.971 0 01-.085.407 1.12 1.12 0 01-.23.331 1.058 1.058 0 01-.738.308c-.145 0-.281-.028-.406-.082a1.07 1.07 0 01-.557-.557 1.006 1.006 0 01-.082-.407 1.058 1.058 0 01.308-.738 1.12 1.12 0 01.33-.23.971.971 0 01.407-.085zm0 5.01c.142 0 .276.03.404.086a1.107 1.107 0 01.564.564.978.978 0 01.085.404.971.971 0 01-.085.406 1.12 1.12 0 01-.23.332 1.058 1.058 0 01-.738.307c-.145 0-.281-.027-.406-.082a1.07 1.07 0 01-.557-.557 1.006 1.006 0 01-.082-.406 1.058 1.058 0 01.308-.738 1.12 1.12 0 01.33-.23.971.971 0 01.407-.085zm17.678 4.78h-.506c-.88 0-1.533-.207-1.962-.62-.428-.412-.642-1.037-.642-1.876v-2.352a2.18 2.18 0 00-.075-.598.978.978 0 00-.264-.444 1.224 1.224 0 00-.499-.277 2.706 2.706 0 00-.782-.096h-.294v-.95h.294c.332 0 .604-.027.813-.082.21-.054.374-.138.492-.25a.88.88 0 00.246-.427c.046-.173.069-.378.069-.615v-1.62c0-.383.045-.728.137-1.036.09-.307.24-.57.447-.786.208-.216.477-.382.807-.499.33-.116.735-.174 1.213-.174h.506v.957h-.403c-1.057 0-1.586.513-1.586 1.538v1.593c0 1.112-.48 1.738-1.442 1.88.97.095 1.456.72 1.456 1.873v2.338c0 1.043.524 1.565 1.572 1.565h.403v.957z"/><path id="width" fill="#181717" d="M37.064 37.035l-.998 6.863h-1.442l-.991-2.87-.198-.698-.226.738-.95 2.83h-1.402l-.99-6.863h1.161l.575 4.662.123 1.04.294-.91.998-3.083h.854l1.073 3.042.308.91.102-.965.534-4.696h1.175zm3.678.985h-2.03v-.985h3.233v5.872h2.044v.991h-5.503v-.99h2.256V38.02zm.417-3.863c.132 0 .255.024.37.072a.893.893 0 01.297.202.919.919 0 01.27.663.96.96 0 01-.27.663.893.893 0 01-.298.201.944.944 0 01-.369.072.944.944 0 01-.369-.072.893.893 0 01-.297-.201.96.96 0 01-.27-.663.919.919 0 01.27-.663.893.893 0 01.297-.202.944.944 0 01.37-.072zm4.594 6.453c0-.583.08-1.101.24-1.555.159-.453.385-.836.68-1.148.293-.312.646-.55 1.059-.711a3.743 3.743 0 011.377-.243c.22 0 .434.014.646.041.212.027.42.07.626.13v-2.885h1.196v9.66h-1.066l-.041-1.3c-.333.484-.693.841-1.08 1.074a2.401 2.401 0 01-1.258.348c-.392 0-.737-.082-1.036-.246a2.104 2.104 0 01-.745-.693 3.33 3.33 0 01-.448-1.077 6 6 0 01-.15-1.395zm1.217-.075c0 .83.122 1.448.365 1.856.244.408.59.612 1.036.612.3 0 .619-.135.954-.403.335-.27.687-.668 1.056-1.197v-3.185a2.892 2.892 0 00-.65-.209 3.55 3.55 0 00-.704-.072c-.647 0-1.152.21-1.514.63-.362.419-.543 1.075-.543 1.968zm12.36 3.268a5.793 5.793 0 01-.835.147 8.52 8.52 0 01-.875.044c-.861 0-1.504-.195-1.928-.584-.423-.39-.635-.988-.635-1.795v-3.582h-1.921v-.998h1.92v-1.887l1.19-.307v2.194h3.083v.998h-3.083v3.487c0 .492.131.86.393 1.104.262.243.648.365 1.159.365.219 0 .458-.017.718-.051.26-.034.53-.088.813-.16v1.025zm7.683.095h-1.19v-4.381c0-.529-.099-.924-.297-1.186-.198-.262-.482-.394-.851-.394-.16 0-.309.022-.448.065a1.557 1.557 0 00-.434.226 3.73 3.73 0 00-.492.434c-.178.182-.383.41-.615.684v4.552h-1.19V34.24h1.19v2.796l-.041 1.08c.186-.223.37-.411.55-.564.18-.152.36-.277.54-.372.18-.096.363-.164.55-.205.187-.041.38-.062.581-.062.684 0 1.212.209 1.586.626.374.417.56 1.044.56 1.883v4.477z"/><path id=":" fill="#7E7C7B" d="M71.948 36.912c.142 0 .276.029.404.086a1.107 1.107 0 01.564.564.978.978 0 01.085.403.971.971 0 01-.085.407 1.12 1.12 0 01-.23.331 1.058 1.058 0 01-.738.308c-.146 0-.281-.028-.406-.082a1.07 1.07 0 01-.558-.557 1.006 1.006 0 01-.082-.407 1.058 1.058 0 01.308-.738 1.12 1.12 0 01.332-.23.971.971 0 01.406-.085zm0 5.01c.142 0 .276.03.404.086a1.107 1.107 0 01.564.564.978.978 0 01.085.404.971.971 0 01-.085.406 1.12 1.12 0 01-.23.332 1.058 1.058 0 01-.738.307c-.146 0-.281-.027-.406-.082a1.07 1.07 0 01-.558-.557 1.006 1.006 0 01-.082-.406 1.058 1.058 0 01.308-.738 1.12 1.12 0 01.332-.23.971.971 0 01.406-.085z"/><path id="100" fill="#A7333A" d="M90.31 43.898h-5.613v-1.107h2.297V36.27l-2.14 1.162-.437-1.012 2.844-1.497h1.052v7.868h1.997v1.107zm7.977-4.463c0 .683-.068 1.306-.205 1.87a4.33 4.33 0 01-.622 1.448 2.925 2.925 0 01-1.036.937c-.412.221-.896.331-1.452.331-.479 0-.914-.09-1.306-.27a2.594 2.594 0 01-1.005-.83c-.278-.374-.492-.85-.642-1.429-.15-.579-.226-1.264-.226-2.057 0-.684.07-1.308.208-1.873.14-.566.347-1.05.623-1.453.275-.403.62-.716 1.035-.937.415-.22.898-.331 1.45-.331.478 0 .913.09 1.305.27.392.18.727.458 1.005.834.278.376.492.853.643 1.432.15.579.225 1.265.225 2.058zm-1.203.04c0-.154-.006-.308-.017-.46a23.673 23.673 0 00-.038-.449l-3.78 2.81c.068.237.155.456.26.656.105.2.231.373.38.516.147.144.316.256.505.335.19.08.405.12.646.12.31 0 .591-.075.844-.226.253-.15.469-.373.646-.67.178-.296.315-.664.41-1.104.096-.44.144-.949.144-1.527zm-4.088-.081c0 .14.001.282.004.423.002.142.01.278.023.41l3.78-2.795a3.198 3.198 0 00-.26-.636 2.016 2.016 0 00-.375-.496 1.612 1.612 0 00-.5-.324 1.628 1.628 0 00-.628-.117c-.31 0-.591.076-.844.226-.253.15-.468.375-.646.673a3.697 3.697 0 00-.41 1.108 7.24 7.24 0 00-.144 1.528zm12.988.04c0 .684-.068 1.307-.205 1.87a4.33 4.33 0 01-.622 1.45 2.925 2.925 0 01-1.035.936c-.413.221-.897.331-1.453.331-.479 0-.914-.09-1.306-.27a2.594 2.594 0 01-1.005-.83c-.278-.374-.492-.85-.642-1.429-.15-.579-.226-1.264-.226-2.057 0-.684.07-1.308.209-1.873.139-.566.346-1.05.622-1.453s.62-.716 1.035-.937c.415-.22.898-.331 1.45-.331.478 0 .913.09 1.305.27.392.18.727.458 1.005.834.278.376.492.853.643 1.432.15.579.225 1.265.225 2.058zm-1.203.042c0-.155-.005-.31-.017-.462a23.67 23.67 0 00-.037-.448l-3.78 2.81c.068.237.154.456.26.656.104.2.23.373.378.516.149.144.317.256.506.335.19.08.405.12.646.12.31 0 .592-.075.845-.226.252-.15.468-.373.646-.67.177-.296.314-.664.41-1.104.095-.44.143-.949.143-1.527zm-4.088-.082c0 .14.001.282.004.423.002.142.01.278.024.41l3.78-2.795a3.198 3.198 0 00-.26-.636 2.016 2.016 0 00-.376-.496 1.612 1.612 0 00-.499-.324 1.628 1.628 0 00-.629-.117c-.31 0-.591.076-.844.226-.253.15-.468.375-.646.673a3.697 3.697 0 00-.41 1.108 7.24 7.24 0 00-.144 1.528z"/><path id="," fill="#7E7C7B" d="M108.213 45.3c.232.009.458-.012.677-.062a2.02 2.02 0 00.577-.222c.167-.098.3-.22.4-.366a.86.86 0 00.15-.499.95.95 0 00-.099-.464 2.238 2.238 0 00-.222-.329 2.438 2.438 0 01-.222-.32.91.91 0 01-.099-.459.915.915 0 01.222-.588.857.857 0 01.287-.212 1.12 1.12 0 01.875.017c.148.066.278.168.39.305.112.136.2.307.267.512.066.205.099.447.099.725 0 .378-.07.742-.209 1.09a2.657 2.657 0 01-.622.926c-.276.27-.62.484-1.032.643-.413.16-.892.24-1.44.24V45.3z"/><path id="height" fill="#181717" d="M36.224 60.898h-1.19v-4.381c0-.529-.099-.924-.297-1.186-.198-.262-.482-.394-.851-.394-.16 0-.309.022-.448.065a1.557 1.557 0 00-.434.226 3.73 3.73 0 00-.492.434c-.178.182-.383.41-.616.684v4.552h-1.189V51.24h1.19v2.796l-.042 1.08c.187-.223.37-.411.55-.564.18-.152.36-.277.54-.372.18-.096.364-.164.551-.205.187-.041.38-.062.581-.062.684 0 1.212.209 1.586.626.374.417.56 1.044.56 1.883v4.477zm7.977-3.794c0 .17-.002.31-.007.424a6.37 6.37 0 01-.02.322h-4.82c0 .701.196 1.24.588 1.616.392.376.957.564 1.696.564.2 0 .4-.008.601-.024.2-.016.394-.037.581-.065.187-.027.366-.058.537-.092.17-.034.33-.072.475-.113v.978a9.161 9.161 0 01-2.365.308c-.588 0-1.094-.08-1.518-.24a2.597 2.597 0 01-1.042-.694 2.857 2.857 0 01-.602-1.114 5.273 5.273 0 01-.195-1.494c0-.483.07-.94.209-1.37a3.44 3.44 0 01.608-1.135c.267-.326.594-.584.981-.776a2.94 2.94 0 011.32-.287c.478 0 .902.075 1.271.226.37.15.68.363.933.639s.444.61.574 1.005c.13.394.195.835.195 1.322zm-1.237-.17a2.593 2.593 0 00-.089-.838 1.763 1.763 0 00-.338-.653 1.576 1.576 0 00-.571-.427 1.916 1.916 0 00-.793-.154c-.26 0-.497.05-.711.15-.214.101-.399.242-.554.425a2.19 2.19 0 00-.376.656 3.026 3.026 0 00-.178.84h3.61zm5.475-1.914h-2.03v-.985h3.234v5.872h2.044v.991h-5.503v-.99h2.255V55.02zm.417-3.863c.133 0 .256.024.37.072a.893.893 0 01.297.202.919.919 0 01.27.663.96.96 0 01-.27.663.893.893 0 01-.297.201.944.944 0 01-.37.072.944.944 0 01-.369-.072.893.893 0 01-.297-.201.96.96 0 01-.27-.663.919.919 0 01.27-.663.893.893 0 01.297-.202.944.944 0 01.37-.072zm9.885 3.849c.128.16.227.345.298.557.07.212.106.44.106.687 0 .355-.065.68-.195.974-.13.294-.314.546-.55.755a2.54 2.54 0 01-.852.49c-.33.115-.694.174-1.09.174-.287 0-.556-.031-.807-.093a2.064 2.064 0 01-.594-.229c-.087.128-.16.249-.22.363a.817.817 0 00-.088.382c0 .174.083.317.25.431.166.114.386.176.66.185l1.804.068c.342.01.657.052.947.13.29.077.537.189.745.335.207.146.369.326.485.54.116.214.174.462.174.745 0 .305-.066.595-.198.868a1.985 1.985 0 01-.612.721c-.275.208-.625.373-1.049.496-.424.123-.927.185-1.51.185-.557 0-1.03-.045-1.42-.134-.389-.089-.709-.212-.96-.369a1.49 1.49 0 01-.546-.56 1.51 1.51 0 01-.171-.715c0-.332.077-.624.232-.875.155-.25.394-.492.718-.724a1.133 1.133 0 01-.52-.476 1.322 1.322 0 01-.164-.632c0-.296.07-.567.209-.813.139-.246.304-.479.495-.698a3.57 3.57 0 01-.229-.307 1.91 1.91 0 01-.28-.7 2.536 2.536 0 01-.038-.462c0-.356.065-.68.195-.974.13-.294.312-.546.547-.756.235-.21.517-.372.848-.489.33-.116.696-.174 1.097-.174.169 0 .33.012.485.034.155.023.292.053.41.09h2.489v.97h-1.1zm-4.129 6.884c0 .323.169.56.506.707.337.148.807.222 1.408.222.379 0 .696-.034.954-.102.257-.069.465-.159.622-.27.157-.112.27-.24.338-.383.069-.144.103-.29.103-.441 0-.278-.114-.483-.342-.615-.228-.132-.576-.21-1.046-.233l-1.79-.061c-.151.1-.275.198-.373.294a1.292 1.292 0 00-.23.29 1.127 1.127 0 00-.116.294 1.309 1.309 0 00-.034.298zm.363-5.613c0 .22.036.42.109.602.073.182.175.337.308.465.132.127.288.226.468.297.18.07.38.106.598.106.237 0 .448-.04.632-.12.185-.08.34-.188.465-.324.126-.137.221-.294.287-.472.066-.178.1-.362.1-.554 0-.218-.037-.419-.11-.601a1.316 1.316 0 00-.308-.465 1.404 1.404 0 00-.468-.297c-.18-.071-.38-.106-.598-.106-.237 0-.448.04-.632.123-.185.082-.34.19-.465.324-.125.135-.221.29-.287.469-.066.177-.1.362-.1.553zm12.038 4.621h-1.19v-4.381c0-.529-.099-.924-.297-1.186-.198-.262-.482-.394-.851-.394-.16 0-.309.022-.448.065a1.557 1.557 0 00-.434.226 3.73 3.73 0 00-.492.434c-.178.182-.383.41-.615.684v4.552h-1.19V51.24h1.19v2.796l-.041 1.08c.186-.223.37-.411.55-.564.18-.152.36-.277.54-.372.18-.096.363-.164.55-.205.187-.041.38-.062.581-.062.684 0 1.212.209 1.586.626.374.417.56 1.044.56 1.883v4.477zm7.71-.095a5.793 5.793 0 01-.833.147 8.52 8.52 0 01-.875.044c-.862 0-1.504-.195-1.928-.584-.424-.39-.636-.988-.636-1.795v-3.582h-1.92v-.998h1.92v-1.887l1.19-.307v2.194h3.083v.998H71.64v3.487c0 .492.13.86.393 1.104.262.243.648.365 1.158.365.22 0 .458-.017.718-.051.26-.034.531-.088.814-.16v1.025z"/><path id=":" fill="#7E7C7B" d="M79.646 53.912c.14 0 .275.029.403.086a1.107 1.107 0 01.564.564.978.978 0 01.085.403.971.971 0 01-.085.407 1.12 1.12 0 01-.23.331 1.058 1.058 0 01-.737.308c-.146 0-.282-.028-.407-.082a1.07 1.07 0 01-.557-.557 1.006 1.006 0 01-.082-.407 1.058 1.058 0 01.308-.738 1.12 1.12 0 01.33-.23.971.971 0 01.408-.085zm0 5.01c.14 0 .275.03.403.086a1.107 1.107 0 01.564.564.978.978 0 01.085.404.971.971 0 01-.085.406 1.12 1.12 0 01-.23.332 1.058 1.058 0 01-.737.307c-.146 0-.282-.027-.407-.082a1.07 1.07 0 01-.557-.557 1.006 1.006 0 01-.082-.406 1.058 1.058 0 01.308-.738 1.12 1.12 0 01.33-.23.971.971 0 01.408-.085z"/><path id="200" fill="#A7333A" d="M98.082 60.898h-5.886v-1.066l2.31-2.297c.38-.374.687-.697.924-.97.237-.274.421-.523.553-.75a2.28 2.28 0 00.267-.638c.046-.2.068-.417.068-.65 0-.218-.03-.427-.089-.625a1.49 1.49 0 00-.273-.523 1.268 1.268 0 00-.478-.356 1.734 1.734 0 00-.705-.13c-.378 0-.722.085-1.032.253-.31.17-.595.388-.854.657l-.657-.786c.338-.356.726-.64 1.166-.855.44-.214.951-.321 1.535-.321.396 0 .757.06 1.083.178.326.118.607.289.844.512.237.224.42.497.55.82.13.324.196.689.196 1.094 0 .342-.046.659-.137.95a3.646 3.646 0 01-.414.872c-.184.29-.417.59-.697.899-.28.31-.612.65-.995 1.019l-1.62 1.579h4.341v1.134zm7.902-4.463c0 .683-.068 1.306-.205 1.87a4.33 4.33 0 01-.622 1.448 2.925 2.925 0 01-1.035.937c-.413.221-.897.331-1.453.331-.479 0-.914-.09-1.306-.27a2.594 2.594 0 01-1.005-.83c-.278-.374-.492-.85-.642-1.429-.15-.579-.226-1.264-.226-2.057 0-.684.07-1.308.209-1.873.139-.566.346-1.05.622-1.453s.62-.716 1.035-.937c.415-.22.898-.331 1.45-.331.478 0 .913.09 1.305.27.392.18.727.458 1.005.834.278.376.492.853.643 1.432.15.579.225 1.265.225 2.058zm-1.203.04c0-.154-.005-.308-.017-.46a23.67 23.67 0 00-.037-.449l-3.78 2.81c.068.237.154.456.26.656.104.2.23.373.378.516.149.144.317.256.506.335.19.08.405.12.646.12.31 0 .592-.075.845-.226.252-.15.468-.373.646-.67.177-.296.314-.664.41-1.104.095-.44.143-.949.143-1.527zm-4.088-.081c0 .14.001.282.004.423.002.142.01.278.024.41l3.78-2.795a3.198 3.198 0 00-.26-.636 2.016 2.016 0 00-.376-.496 1.612 1.612 0 00-.499-.324 1.628 1.628 0 00-.629-.117c-.31 0-.591.076-.844.226-.253.15-.468.375-.646.673a3.697 3.697 0 00-.41 1.108 7.24 7.24 0 00-.144 1.528zm12.989.04c0 .684-.069 1.307-.205 1.87a4.33 4.33 0 01-.623 1.45 2.925 2.925 0 01-1.035.936c-.413.221-.897.331-1.453.331-.478 0-.914-.09-1.305-.27a2.594 2.594 0 01-1.005-.83c-.278-.374-.493-.85-.643-1.429-.15-.579-.225-1.264-.225-2.057 0-.684.069-1.308.208-1.873.139-.566.346-1.05.622-1.453s.621-.716 1.036-.937c.414-.22.897-.331 1.449-.331.478 0 .914.09 1.306.27.392.18.726.458 1.004.834.278.376.493.853.643 1.432.15.579.226 1.265.226 2.058zm-1.203.042c0-.155-.006-.31-.018-.462a23.678 23.678 0 00-.037-.448l-3.78 2.81c.068.237.155.456.26.656.104.2.23.373.379.516.148.144.316.256.506.335.189.08.404.12.646.12.31 0 .59-.075.844-.226.253-.15.468-.373.646-.67.178-.296.314-.664.41-1.104.096-.44.144-.949.144-1.527zm-4.088-.082c0 .14 0 .282.003.423.002.142.01.278.024.41l3.78-2.795a3.198 3.198 0 00-.26-.636 2.016 2.016 0 00-.376-.496 1.612 1.612 0 00-.499-.324 1.628 1.628 0 00-.628-.117c-.31 0-.592.076-.845.226-.253.15-.468.375-.646.673a3.697 3.697 0 00-.41 1.108 7.24 7.24 0 00-.143 1.528z"/><path id="}," fill="#7E7C7B" d="M15.784 68h.506c.88 0 1.534.206 1.962.619.428.412.643 1.038.643 1.876v1.58c0 .223.025.422.075.597.05.176.138.324.263.445.125.12.293.213.502.277.21.063.472.095.786.095h.294v.95h-.294c-.332 0-.604.028-.816.082a1.116 1.116 0 00-.496.25.88.88 0 00-.246.427 2.438 2.438 0 00-.068.615v2.393c0 .383-.046.728-.137 1.036-.091.307-.24.57-.445.786a1.993 1.993 0 01-.806.499c-.333.116-.738.174-1.217.174h-.506v-.957h.41c1.053 0 1.58-.513 1.58-1.538v-2.365c0-1.112.48-1.737 1.442-1.873-.97-.105-1.456-.732-1.456-1.88v-1.566c0-1.043-.522-1.565-1.566-1.565h-.41V68zm7.759 11.3c.232.009.458-.012.677-.062a2.02 2.02 0 00.577-.222c.167-.098.3-.22.4-.366a.86.86 0 00.15-.499.95.95 0 00-.098-.464 2.238 2.238 0 00-.223-.329 2.438 2.438 0 01-.222-.32.91.91 0 01-.099-.459.915.915 0 01.222-.588.857.857 0 01.287-.212 1.12 1.12 0 01.875.017c.148.066.278.168.39.305.112.136.2.307.267.512.066.205.099.447.099.725 0 .378-.07.742-.209 1.09a2.657 2.657 0 01-.622.926c-.276.27-.62.484-1.032.643-.413.16-.892.24-1.439.24V79.3z"/><path id="items" fill="#181717" d="M17.65 89.02h-2.03v-.985h3.234v5.872h2.043v.991h-5.502v-.99h2.255V89.02zm.417-3.863c.133 0 .256.024.37.072a.893.893 0 01.297.202.919.919 0 01.27.663.96.96 0 01-.27.663.893.893 0 01-.297.201.944.944 0 01-.37.072.944.944 0 01-.369-.072.893.893 0 01-.297-.201.96.96 0 01-.27-.663.919.919 0 01.27-.663.893.893 0 01.297-.202.944.944 0 01.37-.072zm10.473 9.646a5.793 5.793 0 01-.834.147 8.52 8.52 0 01-.875.044c-.861 0-1.504-.195-1.928-.584-.424-.39-.635-.988-.635-1.795v-3.582h-1.921v-.998h1.92v-1.887l1.19-.307v2.194h3.083v.998h-3.083v3.487c0 .492.131.86.393 1.104.262.243.648.365 1.159.365.219 0 .458-.017.718-.051.26-.034.53-.088.813-.16v1.025zm7.964-3.699c0 .17-.002.31-.007.424a6.37 6.37 0 01-.02.322h-4.82c0 .701.196 1.24.588 1.616.392.376.957.564 1.695.564.201 0 .401-.008.602-.024.2-.016.394-.037.581-.065.187-.027.366-.058.537-.092.17-.034.329-.072.475-.113v.978a9.161 9.161 0 01-2.365.308c-.588 0-1.094-.08-1.518-.24a2.597 2.597 0 01-1.043-.694 2.857 2.857 0 01-.601-1.114 5.273 5.273 0 01-.195-1.494c0-.483.07-.94.209-1.37a3.44 3.44 0 01.608-1.135c.267-.326.594-.584.98-.776a2.94 2.94 0 011.32-.287c.479 0 .903.075 1.272.226.369.15.68.363.933.639s.444.61.574 1.005c.13.394.195.835.195 1.322zm-1.237-.17a2.593 2.593 0 00-.09-.838 1.763 1.763 0 00-.338-.653 1.576 1.576 0 00-.57-.427 1.916 1.916 0 00-.793-.154c-.26 0-.497.05-.711.15-.215.101-.4.242-.554.425a2.19 2.19 0 00-.376.656 3.026 3.026 0 00-.178.84h3.61zm8.032 3.964V89.97c0-.214-.008-.39-.024-.527a1.2 1.2 0 00-.075-.324.348.348 0 00-.13-.168.43.43 0 00-.448.034c-.077.055-.16.144-.25.267a4.216 4.216 0 00-.293.489c-.107.203-.234.452-.38.748v4.41h-1.087v-4.8c0-.25-.008-.453-.024-.608a1.42 1.42 0 00-.075-.362.34.34 0 00-.133-.178.431.431 0 00-.43.02.988.988 0 00-.243.247c-.09.118-.188.28-.298.485-.11.205-.24.467-.39.786v4.41h-1.093v-6.864h.909l.055 1.306c.118-.26.233-.481.345-.663.112-.183.227-.33.345-.441.119-.112.245-.194.38-.246.134-.053.283-.079.447-.079.37 0 .65.12.841.362.191.242.287.616.287 1.122.11-.237.217-.448.321-.633a2.31 2.31 0 01.339-.465c.12-.125.254-.22.4-.287.146-.066.314-.099.506-.099.86 0 1.292.663 1.292 1.99v4.996h-1.094zm8.237-1.873a1.634 1.634 0 01-.458 1.16 2.084 2.084 0 01-.492.378 3.272 3.272 0 01-.598.26c-.212.069-.43.119-.653.15a4.637 4.637 0 01-.656.048 12.3 12.3 0 01-1.282-.061 8.646 8.646 0 01-1.145-.198v-1.094c.401.114.8.2 1.196.26.397.059.79.089 1.183.089.57 0 .991-.078 1.265-.233.273-.155.41-.376.41-.663a.812.812 0 00-.065-.331.753.753 0 00-.236-.28 2.254 2.254 0 00-.53-.278 11.81 11.81 0 00-.98-.328 6.963 6.963 0 01-.859-.31 2.877 2.877 0 01-.68-.414 1.776 1.776 0 01-.451-.56 1.649 1.649 0 01-.164-.76 1.744 1.744 0 01.588-1.264c.214-.196.503-.36.868-.49.364-.129.82-.194 1.367-.194.269 0 .567.015.896.045.328.03.67.08 1.025.153v1.06a9.803 9.803 0 00-1.063-.202 6.926 6.926 0 00-.872-.065c-.296 0-.545.023-.748.069a1.553 1.553 0 00-.492.188.734.734 0 00-.27.28.748.748 0 00-.082.345c0 .123.024.235.071.335.048.1.137.197.267.29.13.094.311.187.543.28.233.094.536.196.91.305.405.119.747.243 1.025.373.278.13.504.274.677.434.173.16.297.34.372.54.076.2.113.428.113.683z"/><path id=":[" fill="#7E7C7B" d="M56.554 87.912c.141 0 .275.029.403.086a1.107 1.107 0 01.564.564.978.978 0 01.085.403.971.971 0 01-.085.407 1.12 1.12 0 01-.229.331 1.058 1.058 0 01-.738.308c-.146 0-.282-.028-.407-.082a1.07 1.07 0 01-.557-.557 1.006 1.006 0 01-.082-.407 1.058 1.058 0 01.308-.738 1.12 1.12 0 01.331-.23.971.971 0 01.407-.085zm0 5.01c.141 0 .275.03.403.086a1.107 1.107 0 01.564.564.978.978 0 01.085.404.971.971 0 01-.085.406 1.12 1.12 0 01-.229.332 1.058 1.058 0 01-.738.307c-.146 0-.282-.027-.407-.082a1.07 1.07 0 01-.557-.557 1.006 1.006 0 01-.082-.406 1.058 1.058 0 01.308-.738 1.12 1.12 0 01.331-.23.971.971 0 01.407-.085zm17.274 4.78h-3.37V85h3.37v.957h-2.235v10.787h2.235v.957z"/><path id=""Cake"" fill="#478964" d="M79.071 85.24l-.191 3.205h-1.121l-.198-3.206h1.51zm2.66 0l-.192 3.205h-1.121l-.198-3.206h1.51zm8.565 9.323a5.822 5.822 0 01-2.25.445c-1.262 0-2.231-.377-2.908-1.132-.677-.754-1.015-1.87-1.015-3.346a6.3 6.3 0 01.28-1.941 4.22 4.22 0 01.8-1.473 3.521 3.521 0 011.258-.933 4.03 4.03 0 011.654-.329c.415 0 .8.036 1.156.106.355.071.697.18 1.025.325v1.196a4.534 4.534 0 00-1.005-.406 4.348 4.348 0 00-1.135-.14c-.419 0-.798.078-1.138.235-.34.158-.628.385-.865.684a3.2 3.2 0 00-.547 1.094 5.19 5.19 0 00-.191 1.473c0 1.157.235 2.03.704 2.618.47.588 1.158.882 2.065.882.382 0 .75-.045 1.1-.133a5.13 5.13 0 001.012-.373v1.148zm6.398.335l-.027-.922c-.374.369-.753.635-1.138.8-.385.163-.79.245-1.214.245-.391 0-.726-.05-1.004-.15a1.883 1.883 0 01-.687-.413 1.603 1.603 0 01-.397-.62 2.289 2.289 0 01-.126-.772c0-.688.256-1.227.769-1.616.512-.39 1.27-.585 2.273-.585h1.421v-.601c0-.406-.13-.73-.39-.974-.259-.244-.655-.366-1.189-.366-.387 0-.769.043-1.145.13-.376.086-.764.21-1.165.369V88.35a7.36 7.36 0 011.087-.301 7.6 7.6 0 01.642-.1c.224-.024.45-.037.677-.037.415 0 .788.046 1.121.137.333.091.614.23.844.417.23.187.407.421.53.704.123.282.185.615.185.998v4.73h-1.067zm-.13-3.124h-1.51c-.297 0-.552.03-.766.09-.214.059-.39.143-.526.252-.137.11-.238.24-.304.393-.067.153-.1.325-.1.516 0 .133.02.259.062.38.04.12.107.228.198.321.091.093.21.168.356.222.145.055.323.082.533.082.273 0 .587-.083.94-.25.353-.166.726-.429 1.117-.789v-1.217zm9.591 3.124h-1.634l-3.199-3.677v3.677h-1.19V85.24h1.19v5.934l3.083-3.138h1.573l-3.22 3.165 3.397 3.698zm7.322-3.794c0 .17-.003.31-.007.424a6.372 6.372 0 01-.02.322h-4.82c0 .701.196 1.24.588 1.616.392.376.957.564 1.695.564.2 0 .401-.008.602-.024.2-.016.394-.037.58-.065.188-.027.366-.058.537-.092.171-.034.33-.072.475-.113v.978a9.161 9.161 0 01-2.365.308c-.588 0-1.094-.08-1.517-.24a2.597 2.597 0 01-1.043-.694 2.857 2.857 0 01-.601-1.114 5.273 5.273 0 01-.195-1.494c0-.483.07-.94.208-1.37a3.44 3.44 0 01.609-1.135c.266-.326.593-.584.98-.776a2.94 2.94 0 011.32-.287c.478 0 .902.075 1.271.226.37.15.68.363.934.639.252.276.444.61.574 1.005.13.394.195.835.195 1.322zm-1.238-.17a2.593 2.593 0 00-.089-.838 1.763 1.763 0 00-.338-.653 1.576 1.576 0 00-.57-.427 1.916 1.916 0 00-.794-.154c-.26 0-.497.05-.71.15-.215.101-.4.242-.554.425a2.19 2.19 0 00-.376.656 3.026 3.026 0 00-.178.84h3.61zm5.319-5.695l-.192 3.206h-1.12l-.2-3.206h1.512zm2.659 0l-.192 3.206h-1.12l-.199-3.206h1.51z"/><path id="," fill="#7E7C7B" d="M123.607 96.3c.233.009.458-.012.677-.062a2.02 2.02 0 00.578-.222c.166-.098.3-.22.4-.366a.86.86 0 00.15-.499.95.95 0 00-.099-.464 2.238 2.238 0 00-.222-.329 2.438 2.438 0 01-.222-.32.91.91 0 01-.1-.459.915.915 0 01.223-.588.857.857 0 01.287-.212 1.12 1.12 0 01.875.017c.148.066.278.168.39.305.111.136.2.307.266.512.066.205.1.447.1.725 0 .378-.07.742-.21 1.09a2.657 2.657 0 01-.621.926c-.276.27-.62.484-1.033.643-.412.16-.892.24-1.439.24V96.3z"/><path id=""Donut"" fill="#478964" d="M140.65 85.24l-.192 3.205h-1.121l-.198-3.206h1.51zm2.659 0l-.192 3.205h-1.12l-.2-3.206h1.512zm8.962 5.092c0 .428-.034.839-.1 1.23a4.724 4.724 0 01-.317 1.094 3.69 3.69 0 01-.568.92 3.22 3.22 0 01-.854.707c-.338.196-.73.348-1.176.455-.447.107-.955.16-1.525.16h-1.914v-8.934h2.304c1.395 0 2.435.359 3.12 1.077.687.717 1.03 1.814 1.03 3.291zm-1.279.089c0-.634-.06-1.169-.178-1.607-.118-.437-.298-.79-.54-1.06a2.073 2.073 0 00-.909-.584c-.364-.12-.793-.18-1.285-.18h-1.046v6.856h.91c2.032 0 3.048-1.142 3.048-3.425zm8.846.991a4.55 4.55 0 01-.226 1.466c-.15.445-.367.825-.65 1.142a2.913 2.913 0 01-1.031.738 3.447 3.447 0 01-1.381.263c-.492 0-.933-.076-1.323-.229a2.617 2.617 0 01-.991-.673 2.98 2.98 0 01-.622-1.1c-.144-.438-.216-.942-.216-1.511 0-.533.076-1.02.226-1.46.15-.44.367-.818.65-1.134a2.913 2.913 0 011.032-.739 3.447 3.447 0 011.38-.263c.493 0 .934.076 1.323.23.39.152.72.375.991.669.272.294.479.66.623 1.097.143.438.215.939.215 1.504zm-1.217.055c0-.424-.047-.794-.14-1.111a2.237 2.237 0 00-.4-.793 1.65 1.65 0 00-.632-.479 2.077 2.077 0 00-.83-.16c-.356 0-.66.07-.913.208-.253.14-.46.325-.623.557a2.4 2.4 0 00-.355.81 4.06 4.06 0 00-.113.968c0 .424.047.795.14 1.114.094.32.227.585.4.796.173.212.383.372.63.479.245.107.523.16.833.16.356 0 .66-.069.913-.208.253-.139.46-.325.622-.557a2.4 2.4 0 00.355-.81 4.09 4.09 0 00.113-.974zm2.94-3.432h1.06l.047 1.108c.2-.237.394-.435.581-.592.187-.157.37-.283.55-.38a2.06 2.06 0 01.55-.2c.187-.04.381-.059.582-.059.706 0 1.24.209 1.603.626.362.417.543 1.044.543 1.883v4.477h-1.19v-4.381c0-.538-.1-.936-.3-1.193-.2-.258-.5-.386-.896-.386-.145 0-.288.021-.427.064a1.557 1.557 0 00-.434.226c-.15.107-.313.252-.489.434-.175.182-.372.41-.591.684v4.552h-1.19v-6.863zm13.213 6.863h-1.066l-.041-1.107a5.54 5.54 0 01-.584.591 3.021 3.021 0 01-.55.38 2.119 2.119 0 01-.551.201 2.84 2.84 0 01-.585.058c-.706 0-1.24-.207-1.6-.622-.36-.414-.54-1.04-.54-1.88v-4.484h1.19v4.389c0 1.053.397 1.579 1.19 1.579.146 0 .288-.022.427-.065.139-.043.285-.119.437-.226.153-.107.317-.251.493-.434.175-.182.372-.412.591-.69v-4.553h1.19v6.863zm7.711-.095a5.793 5.793 0 01-.834.147 8.52 8.52 0 01-.875.044c-.861 0-1.504-.195-1.927-.584-.424-.39-.636-.988-.636-1.795v-3.582h-1.921v-.998h1.92v-1.887l1.19-.307v2.194h3.083v.998h-3.083v3.487c0 .492.131.86.393 1.104.262.243.649.365 1.16.365.218 0 .457-.017.717-.051.26-.034.53-.088.813-.16v1.025zm4.348-9.564l-.191 3.206h-1.121l-.199-3.206h1.511zm2.66 0l-.192 3.206h-1.121l-.199-3.206h1.511z"/><path id="]," fill="#7E7C7B" d="M196.595 97.701h-3.37v-.957h2.221V85.957h-2.221V85h3.37v12.701zm3.985-1.401c.233.009.458-.012.677-.062a2.02 2.02 0 00.577-.222c.167-.098.3-.22.4-.366a.86.86 0 00.15-.499.95.95 0 00-.098-.464 2.238 2.238 0 00-.223-.329 2.438 2.438 0 01-.222-.32.91.91 0 01-.099-.459.915.915 0 01.222-.588.857.857 0 01.287-.212 1.12 1.12 0 01.875.017c.149.066.278.168.39.305.112.136.2.307.267.512.066.205.099.447.099.725 0 .378-.07.742-.209 1.09a2.657 2.657 0 01-.622.926c-.275.27-.62.484-1.032.643-.412.16-.892.24-1.439.24V96.3z"/><path id="extra" fill="#181717" d="M21.11 108.104c0 .17-.003.31-.007.424a6.37 6.37 0 01-.021.322h-4.82c0 .701.197 1.24.589 1.616.392.376.957.564 1.695.564.2 0 .4-.008.601-.024.201-.016.395-.037.582-.065.186-.027.365-.058.536-.092.171-.034.33-.072.475-.113v.978a9.161 9.161 0 01-2.365.308c-.588 0-1.094-.08-1.518-.24a2.597 2.597 0 01-1.042-.694 2.857 2.857 0 01-.602-1.114 5.273 5.273 0 01-.194-1.494c0-.483.07-.94.208-1.37a3.44 3.44 0 01.608-1.135c.267-.326.594-.584.981-.776a2.94 2.94 0 011.32-.287c.478 0 .902.075 1.271.226.37.15.68.363.933.639s.445.61.575 1.005c.13.394.194.835.194 1.322zm-1.238-.17a2.593 2.593 0 00-.089-.838 1.763 1.763 0 00-.338-.653 1.576 1.576 0 00-.571-.427 1.916 1.916 0 00-.793-.154c-.26 0-.497.05-.71.15-.215.101-.4.242-.555.425a2.19 2.19 0 00-.376.656 3.026 3.026 0 00-.177.84h3.61zm9.324 3.964h-1.579l-1.852-2.618-1.832 2.618h-1.538l2.659-3.445-2.536-3.418h1.524l1.805 2.639 1.77-2.639h1.47l-2.577 3.445 2.686 3.418zm7.041-.095a5.793 5.793 0 01-.834.147 8.52 8.52 0 01-.875.044c-.861 0-1.504-.195-1.927-.584-.424-.39-.636-.988-.636-1.795v-3.582h-1.921v-.998h1.92v-1.887l1.19-.307v2.194h3.083v.998h-3.083v3.487c0 .492.131.86.393 1.104.262.243.649.365 1.16.365.218 0 .457-.017.717-.051.26-.034.53-.088.813-.16v1.025zm2.448-6.768h1.086l.035 1.265c.405-.488.805-.841 1.2-1.06a2.436 2.436 0 011.192-.328c.711 0 1.25.23 1.617.69.367.46.537 1.144.51 2.051H43.12c.014-.601-.074-1.038-.263-1.309-.19-.27-.466-.406-.83-.406-.16 0-.32.028-.483.085a1.947 1.947 0 00-.499.273 4.47 4.47 0 00-.543.482 8.898 8.898 0 00-.615.711v4.41h-1.203v-6.864zm11.826 6.863l-.028-.922c-.373.369-.753.635-1.138.8-.385.163-.79.245-1.213.245-.392 0-.727-.05-1.005-.15a1.883 1.883 0 01-.687-.413 1.603 1.603 0 01-.397-.62 2.289 2.289 0 01-.126-.772c0-.688.256-1.227.769-1.616.513-.39 1.27-.585 2.273-.585h1.422v-.601c0-.406-.13-.73-.39-.974s-.656-.366-1.19-.366c-.387 0-.768.043-1.144.13-.376.086-.765.21-1.166.369v-1.073a7.36 7.36 0 011.087-.301 7.6 7.6 0 01.643-.1c.223-.024.449-.037.676-.037.415 0 .789.046 1.122.137.332.091.614.23.844.417.23.187.407.421.53.704.123.282.184.615.184.998v4.73h-1.066zm-.13-3.124h-1.51c-.297 0-.552.03-.767.09-.214.059-.39.143-.526.252-.137.11-.238.24-.304.393-.066.153-.1.325-.1.516 0 .133.021.259.062.38.041.12.107.228.199.321.09.093.21.168.355.222.146.055.324.082.533.082.274 0 .587-.083.94-.25.353-.166.726-.429 1.118-.789v-1.217z"/><path id=":" fill="#7E7C7B" d="M56.554 104.912c.141 0 .275.029.403.086a1.107 1.107 0 01.564.564.978.978 0 01.085.403.971.971 0 01-.085.407 1.12 1.12 0 01-.229.331 1.058 1.058 0 01-.738.308c-.146 0-.282-.028-.407-.082a1.07 1.07 0 01-.557-.557 1.006 1.006 0 01-.082-.407 1.058 1.058 0 01.308-.738 1.12 1.12 0 01.331-.23.971.971 0 01.407-.085zm0 5.01c.141 0 .275.03.403.086a1.107 1.107 0 01.564.564.978.978 0 01.085.404.971.971 0 01-.085.406 1.12 1.12 0 01-.229.332 1.058 1.058 0 01-.738.307c-.146 0-.282-.027-.407-.082a1.07 1.07 0 01-.557-.557 1.006 1.006 0 01-.082-.406 1.058 1.058 0 01.308-.738 1.12 1.12 0 01.331-.23.971.971 0 01.407-.085z"/><path id="true" fill="#A7333A" d="M74.724 111.803a5.793 5.793 0 01-.834.147 8.52 8.52 0 01-.875.044c-.862 0-1.504-.195-1.928-.584-.424-.39-.636-.988-.636-1.795v-3.582h-1.92v-.998h1.92v-1.887l1.19-.307v2.194h3.083v.998H71.64v3.487c0 .492.13.86.393 1.104.262.243.648.365 1.158.365.22 0 .458-.017.718-.051.26-.034.531-.088.814-.16v1.025zm2.447-6.768h1.087l.034 1.265c.406-.488.805-.841 1.2-1.06a2.436 2.436 0 011.193-.328c.71 0 1.25.23 1.616.69.367.46.537 1.144.51 2.051h-1.204c.014-.601-.074-1.038-.263-1.309-.189-.27-.466-.406-.83-.406-.16 0-.32.028-.482.085a1.947 1.947 0 00-.5.273 4.47 4.47 0 00-.543.482 8.898 8.898 0 00-.615.711v4.41h-1.203v-6.864zm12.933 6.863h-1.066l-.04-1.107a5.54 5.54 0 01-.585.591 3.021 3.021 0 01-.55.38 2.119 2.119 0 01-.551.201 2.84 2.84 0 01-.584.058c-.707 0-1.24-.207-1.6-.622-.36-.414-.54-1.04-.54-1.88v-4.484h1.19v4.389c0 1.053.396 1.579 1.189 1.579.146 0 .288-.022.427-.065.139-.043.285-.119.438-.226.152-.107.316-.251.492-.434.175-.182.372-.412.591-.69v-4.553h1.19v6.863zm7.978-3.794c0 .17-.002.31-.007.424a6.37 6.37 0 01-.02.322h-4.82c0 .701.196 1.24.588 1.616.392.376.957.564 1.696.564.2 0 .4-.008.601-.024.2-.016.394-.037.581-.065.187-.027.366-.058.537-.092.17-.034.33-.072.475-.113v.978a9.161 9.161 0 01-2.365.308c-.588 0-1.094-.08-1.518-.24a2.597 2.597 0 01-1.042-.694 2.857 2.857 0 01-.602-1.114 5.273 5.273 0 01-.195-1.494c0-.483.07-.94.209-1.37a3.44 3.44 0 01.608-1.135c.267-.326.594-.584.981-.776a2.94 2.94 0 011.32-.287c.478 0 .902.075 1.27.226.37.15.681.363.934.639s.444.61.574 1.005c.13.394.195.835.195 1.322zm-1.237-.17a2.593 2.593 0 00-.09-.838 1.763 1.763 0 00-.338-.653 1.576 1.576 0 00-.57-.427 1.916 1.916 0 00-.793-.154c-.26 0-.497.05-.711.15-.214.101-.399.242-.554.425a2.19 2.19 0 00-.376.656 3.026 3.026 0 00-.178.84h3.61z"/><path id="}" fill="#7E7C7B" d="M.39 119h.506c.88 0 1.533.206 1.961.619.429.412.643 1.038.643 1.876v1.58c0 .223.025.422.075.597.05.176.138.324.263.445.126.12.293.213.503.277.21.063.471.095.786.095h.294v.95h-.294c-.333 0-.605.028-.817.082a1.116 1.116 0 00-.496.25.88.88 0 00-.246.427 2.438 2.438 0 00-.068.615v2.393c0 .383-.046.728-.137 1.036-.09.307-.239.57-.444.786a1.993 1.993 0 01-.807.499c-.332.116-.738.174-1.216.174H.39v-.957H.8c1.053 0 1.579-.513 1.579-1.538v-2.365c0-1.112.48-1.737 1.442-1.873-.97-.105-1.456-.732-1.456-1.88v-1.566c0-1.043-.522-1.565-1.565-1.565H.39V119z"/></g><g id="let-{-size:-{-width," transform="translate(12.176 11.102)"><path id="let" fill="#1C85B5" d="M2.256 1.217H.226V.239h3.233v8.668h2.044v.991H0v-.99h2.256V1.216zm11.156 4.887c0 .17-.002.31-.007.424a6.37 6.37 0 01-.02.322h-4.82c0 .701.196 1.24.588 1.616.392.376.957.564 1.696.564.2 0 .4-.008.601-.024.2-.016.394-.037.581-.065.187-.027.366-.058.537-.092.17-.034.33-.072.475-.113v.978a9.161 9.161 0 01-2.365.308c-.588 0-1.094-.08-1.518-.24a2.597 2.597 0 01-1.042-.694 2.857 2.857 0 01-.602-1.114 5.273 5.273 0 01-.195-1.494c0-.483.07-.94.209-1.37a3.44 3.44 0 01.608-1.135c.267-.326.594-.584.981-.776a2.94 2.94 0 011.32-.287c.478 0 .902.075 1.271.226.37.15.68.363.933.639s.444.61.574 1.005c.13.394.195.835.195 1.322zm-1.237-.17a2.593 2.593 0 00-.09-.838 1.763 1.763 0 00-.337-.653 1.576 1.576 0 00-.571-.427 1.916 1.916 0 00-.793-.154c-.26 0-.497.05-.711.15-.214.101-.399.242-.554.425a2.19 2.19 0 00-.376.656 3.026 3.026 0 00-.178.84h3.61zm8.668 3.869a5.793 5.793 0 01-.834.147 8.52 8.52 0 01-.875.044c-.862 0-1.504-.195-1.928-.584-.424-.39-.636-.988-.636-1.795V4.033h-1.92v-.998h1.92V1.148l1.19-.307v2.194h3.083v.998H17.76V7.52c0 .492.13.86.393 1.104.262.243.648.365 1.159.365.218 0 .458-.017.717-.051.26-.034.531-.088.814-.16v1.025z"/><path id="{" fill="#7E7C7B" d="M35.745 12.701h-.506c-.88 0-1.533-.206-1.962-.618-.428-.413-.642-1.038-.642-1.877V7.854a2.18 2.18 0 00-.075-.598.978.978 0 00-.264-.444 1.224 1.224 0 00-.499-.277 2.706 2.706 0 00-.782-.096h-.294v-.95h.294c.332 0 .603-.027.813-.082.21-.054.374-.138.492-.25a.88.88 0 00.246-.427c.046-.173.069-.378.069-.615v-1.62c0-.383.045-.728.136-1.036.092-.307.24-.57.448-.786.208-.216.476-.382.807-.499.33-.116.735-.174 1.213-.174h.506v.957h-.403c-1.058 0-1.586.513-1.586 1.538v1.593c0 1.112-.48 1.738-1.443 1.88.971.095 1.457.72 1.457 1.873v2.338c0 1.043.524 1.565 1.572 1.565h.403v.957z"/><path id="size" fill="#181717" d="M20.747 25.025a1.634 1.634 0 01-.458 1.16 2.084 2.084 0 01-.492.378 3.272 3.272 0 01-.598.26c-.212.069-.43.119-.653.15a4.637 4.637 0 01-.656.048 12.3 12.3 0 01-1.282-.061 8.646 8.646 0 01-1.145-.198v-1.094c.4.114.8.2 1.196.26.397.059.79.089 1.183.089.57 0 .991-.078 1.264-.233.274-.155.41-.376.41-.663a.812.812 0 00-.064-.331.753.753 0 00-.236-.28 2.254 2.254 0 00-.53-.278 11.81 11.81 0 00-.98-.328 6.963 6.963 0 01-.859-.31 2.877 2.877 0 01-.68-.414 1.776 1.776 0 01-.451-.56 1.649 1.649 0 01-.164-.76 1.744 1.744 0 01.588-1.264c.214-.196.503-.36.868-.49.364-.129.82-.194 1.367-.194.269 0 .567.015.896.045.328.03.67.08 1.025.153v1.06a9.803 9.803 0 00-1.063-.202 6.926 6.926 0 00-.872-.065c-.296 0-.545.023-.748.069a1.553 1.553 0 00-.492.188.734.734 0 00-.27.28.748.748 0 00-.082.345c0 .123.023.235.071.335.048.1.137.197.267.29.13.094.311.187.543.28.233.094.536.196.91.305.405.119.747.243 1.025.373.278.13.504.274.677.434.173.16.297.34.372.54.075.2.113.428.113.683zm4.6-4.005h-2.03v-.985h3.234v5.872h2.044v.991h-5.503v-.99h2.256V21.02zm.418-3.863c.132 0 .255.024.369.072a.893.893 0 01.297.202.919.919 0 01.27.663.96.96 0 01-.27.663.893.893 0 01-.297.201.944.944 0 01-.37.072.944.944 0 01-.368-.072.893.893 0 01-.298-.201.96.96 0 01-.27-.663.919.919 0 01.27-.663.893.893 0 01.298-.202.944.944 0 01.369-.072zm10.5 9.741h-5.53v-.854l3.875-5.01h-3.78v-.999h5.21v.93l-3.809 4.929h4.034v1.004zm7.936-3.794c0 .17-.002.31-.007.424a6.37 6.37 0 01-.02.322h-4.82c0 .701.196 1.24.588 1.616.392.376.957.564 1.696.564.2 0 .4-.008.601-.024.2-.016.394-.037.581-.065.187-.027.366-.058.537-.092.17-.034.33-.072.475-.113v.978a9.161 9.161 0 01-2.365.308c-.588 0-1.094-.08-1.518-.24a2.597 2.597 0 01-1.042-.694 2.857 2.857 0 01-.602-1.114 5.273 5.273 0 01-.195-1.494c0-.483.07-.94.209-1.37a3.44 3.44 0 01.608-1.135c.267-.326.594-.584.981-.776a2.94 2.94 0 011.32-.287c.478 0 .902.075 1.271.226.37.15.68.363.933.639s.444.61.574 1.005c.13.394.195.835.195 1.322zm-1.237-.17a2.593 2.593 0 00-.089-.838 1.763 1.763 0 00-.338-.653 1.576 1.576 0 00-.571-.427 1.916 1.916 0 00-.793-.154c-.26 0-.497.05-.711.15-.214.101-.399.242-.554.425a2.19 2.19 0 00-.376.656 3.026 3.026 0 00-.178.84h3.61z"/><path id=":{" fill="#7E7C7B" d="M48.856 19.912c.142 0 .276.029.404.086a1.107 1.107 0 01.564.564.978.978 0 01.085.403.971.971 0 01-.085.407 1.12 1.12 0 01-.23.331 1.058 1.058 0 01-.738.308c-.145 0-.281-.028-.406-.082a1.07 1.07 0 01-.557-.557 1.006 1.006 0 01-.082-.407 1.058 1.058 0 01.308-.738 1.12 1.12 0 01.33-.23.971.971 0 01.407-.085zm0 5.01c.142 0 .276.03.404.086a1.107 1.107 0 01.564.564.978.978 0 01.085.404.971.971 0 01-.085.406 1.12 1.12 0 01-.23.332 1.058 1.058 0 01-.738.307c-.145 0-.281-.027-.406-.082a1.07 1.07 0 01-.557-.557 1.006 1.006 0 01-.082-.406 1.058 1.058 0 01.308-.738 1.12 1.12 0 01.33-.23.971.971 0 01.407-.085zm17.678 4.78h-.506c-.88 0-1.533-.207-1.962-.62-.428-.412-.642-1.037-.642-1.876v-2.352a2.18 2.18 0 00-.075-.598.978.978 0 00-.264-.444 1.224 1.224 0 00-.499-.277 2.706 2.706 0 00-.782-.096h-.294v-.95h.294c.332 0 .604-.027.813-.082.21-.054.374-.138.492-.25a.88.88 0 00.246-.427c.046-.173.069-.378.069-.615v-1.62c0-.383.045-.728.137-1.036.09-.307.24-.57.447-.786.208-.216.477-.382.807-.499.33-.116.735-.174 1.213-.174h.506v.957h-.403c-1.057 0-1.586.513-1.586 1.538v1.593c0 1.112-.48 1.738-1.442 1.88.97.095 1.456.72 1.456 1.873v2.338c0 1.043.524 1.565 1.572 1.565h.403v.957z"/><path id="width" fill="#181717" d="M37.064 37.035l-.998 6.863h-1.442l-.991-2.87-.198-.698-.226.738-.95 2.83h-1.402l-.99-6.863h1.161l.575 4.662.123 1.04.294-.91.998-3.083h.854l1.073 3.042.308.91.102-.965.534-4.696h1.175zm3.678.985h-2.03v-.985h3.233v5.872h2.044v.991h-5.503v-.99h2.256V38.02zm.417-3.863c.132 0 .255.024.37.072a.893.893 0 01.297.202.919.919 0 01.27.663.96.96 0 01-.27.663.893.893 0 01-.298.201.944.944 0 01-.369.072.944.944 0 01-.369-.072.893.893 0 01-.297-.201.96.96 0 01-.27-.663.919.919 0 01.27-.663.893.893 0 01.297-.202.944.944 0 01.37-.072zm4.594 6.453c0-.583.08-1.101.24-1.555.159-.453.385-.836.68-1.148.293-.312.646-.55 1.059-.711a3.743 3.743 0 011.377-.243c.22 0 .434.014.646.041.212.027.42.07.626.13v-2.885h1.196v9.66h-1.066l-.041-1.3c-.333.484-.693.841-1.08 1.074a2.401 2.401 0 01-1.258.348c-.392 0-.737-.082-1.036-.246a2.104 2.104 0 01-.745-.693 3.33 3.33 0 01-.448-1.077 6 6 0 01-.15-1.395zm1.217-.075c0 .83.122 1.448.365 1.856.244.408.59.612 1.036.612.3 0 .619-.135.954-.403.335-.27.687-.668 1.056-1.197v-3.185a2.892 2.892 0 00-.65-.209 3.55 3.55 0 00-.704-.072c-.647 0-1.152.21-1.514.63-.362.419-.543 1.075-.543 1.968zm12.36 3.268a5.793 5.793 0 01-.835.147 8.52 8.52 0 01-.875.044c-.861 0-1.504-.195-1.928-.584-.423-.39-.635-.988-.635-1.795v-3.582h-1.921v-.998h1.92v-1.887l1.19-.307v2.194h3.083v.998h-3.083v3.487c0 .492.131.86.393 1.104.262.243.648.365 1.159.365.219 0 .458-.017.718-.051.26-.034.53-.088.813-.16v1.025zm7.683.095h-1.19v-4.381c0-.529-.099-.924-.297-1.186-.198-.262-.482-.394-.851-.394-.16 0-.309.022-.448.065a1.557 1.557 0 00-.434.226 3.73 3.73 0 00-.492.434c-.178.182-.383.41-.615.684v4.552h-1.19V34.24h1.19v2.796l-.041 1.08c.186-.223.37-.411.55-.564.18-.152.36-.277.54-.372.18-.096.363-.164.55-.205.187-.041.38-.062.581-.062.684 0 1.212.209 1.586.626.374.417.56 1.044.56 1.883v4.477z"/><path id="," fill="#7E7C7B" d="M69.727 45.3c.232.009.458-.012.676-.062a2.02 2.02 0 00.578-.222c.166-.098.3-.22.4-.366a.86.86 0 00.15-.499.95.95 0 00-.099-.464 2.238 2.238 0 00-.222-.329 2.438 2.438 0 01-.222-.32.91.91 0 01-.1-.459.915.915 0 01.223-.588.857.857 0 01.287-.212 1.12 1.12 0 01.875.017c.148.066.278.168.39.305.111.136.2.307.266.512.066.205.1.447.1.725 0 .378-.07.742-.21 1.09a2.657 2.657 0 01-.621.926c-.276.27-.62.484-1.032.643-.413.16-.893.24-1.44.24V45.3z"/><path id="height" fill="#181717" d="M36.224 60.898h-1.19v-4.381c0-.529-.099-.924-.297-1.186-.198-.262-.482-.394-.851-.394-.16 0-.309.022-.448.065a1.557 1.557 0 00-.434.226 3.73 3.73 0 00-.492.434c-.178.182-.383.41-.616.684v4.552h-1.189V51.24h1.19v2.796l-.042 1.08c.187-.223.37-.411.55-.564.18-.152.36-.277.54-.372.18-.096.364-.164.551-.205.187-.041.38-.062.581-.062.684 0 1.212.209 1.586.626.374.417.56 1.044.56 1.883v4.477zm7.977-3.794c0 .17-.002.31-.007.424a6.37 6.37 0 01-.02.322h-4.82c0 .701.196 1.24.588 1.616.392.376.957.564 1.696.564.2 0 .4-.008.601-.024.2-.016.394-.037.581-.065.187-.027.366-.058.537-.092.17-.034.33-.072.475-.113v.978a9.161 9.161 0 01-2.365.308c-.588 0-1.094-.08-1.518-.24a2.597 2.597 0 01-1.042-.694 2.857 2.857 0 01-.602-1.114 5.273 5.273 0 01-.195-1.494c0-.483.07-.94.209-1.37a3.44 3.44 0 01.608-1.135c.267-.326.594-.584.981-.776a2.94 2.94 0 011.32-.287c.478 0 .902.075 1.271.226.37.15.68.363.933.639s.444.61.574 1.005c.13.394.195.835.195 1.322zm-1.237-.17a2.593 2.593 0 00-.089-.838 1.763 1.763 0 00-.338-.653 1.576 1.576 0 00-.571-.427 1.916 1.916 0 00-.793-.154c-.26 0-.497.05-.711.15-.214.101-.399.242-.554.425a2.19 2.19 0 00-.376.656 3.026 3.026 0 00-.178.84h3.61zm5.475-1.914h-2.03v-.985h3.234v5.872h2.044v.991h-5.503v-.99h2.255V55.02zm.417-3.863c.133 0 .256.024.37.072a.893.893 0 01.297.202.919.919 0 01.27.663.96.96 0 01-.27.663.893.893 0 01-.297.201.944.944 0 01-.37.072.944.944 0 01-.369-.072.893.893 0 01-.297-.201.96.96 0 01-.27-.663.919.919 0 01.27-.663.893.893 0 01.297-.202.944.944 0 01.37-.072zm9.885 3.849c.128.16.227.345.298.557.07.212.106.44.106.687 0 .355-.065.68-.195.974-.13.294-.314.546-.55.755a2.54 2.54 0 01-.852.49c-.33.115-.694.174-1.09.174-.287 0-.556-.031-.807-.093a2.064 2.064 0 01-.594-.229c-.087.128-.16.249-.22.363a.817.817 0 00-.088.382c0 .174.083.317.25.431.166.114.386.176.66.185l1.804.068c.342.01.657.052.947.13.29.077.537.189.745.335.207.146.369.326.485.54.116.214.174.462.174.745 0 .305-.066.595-.198.868a1.985 1.985 0 01-.612.721c-.275.208-.625.373-1.049.496-.424.123-.927.185-1.51.185-.557 0-1.03-.045-1.42-.134-.389-.089-.709-.212-.96-.369a1.49 1.49 0 01-.546-.56 1.51 1.51 0 01-.171-.715c0-.332.077-.624.232-.875.155-.25.394-.492.718-.724a1.133 1.133 0 01-.52-.476 1.322 1.322 0 01-.164-.632c0-.296.07-.567.209-.813.139-.246.304-.479.495-.698a3.57 3.57 0 01-.229-.307 1.91 1.91 0 01-.28-.7 2.536 2.536 0 01-.038-.462c0-.356.065-.68.195-.974.13-.294.312-.546.547-.756.235-.21.517-.372.848-.489.33-.116.696-.174 1.097-.174.169 0 .33.012.485.034.155.023.292.053.41.09h2.489v.97h-1.1zm-4.129 6.884c0 .323.169.56.506.707.337.148.807.222 1.408.222.379 0 .696-.034.954-.102.257-.069.465-.159.622-.27.157-.112.27-.24.338-.383.069-.144.103-.29.103-.441 0-.278-.114-.483-.342-.615-.228-.132-.576-.21-1.046-.233l-1.79-.061c-.151.1-.275.198-.373.294a1.292 1.292 0 00-.23.29 1.127 1.127 0 00-.116.294 1.309 1.309 0 00-.034.298zm.363-5.613c0 .22.036.42.109.602.073.182.175.337.308.465.132.127.288.226.468.297.18.07.38.106.598.106.237 0 .448-.04.632-.12.185-.08.34-.188.465-.324.126-.137.221-.294.287-.472.066-.178.1-.362.1-.554 0-.218-.037-.419-.11-.601a1.316 1.316 0 00-.308-.465 1.404 1.404 0 00-.468-.297c-.18-.071-.38-.106-.598-.106-.237 0-.448.04-.632.123-.185.082-.34.19-.465.324-.125.135-.221.29-.287.469-.066.177-.1.362-.1.553zm12.038 4.621h-1.19v-4.381c0-.529-.099-.924-.297-1.186-.198-.262-.482-.394-.851-.394-.16 0-.309.022-.448.065a1.557 1.557 0 00-.434.226 3.73 3.73 0 00-.492.434c-.178.182-.383.41-.615.684v4.552h-1.19V51.24h1.19v2.796l-.041 1.08c.186-.223.37-.411.55-.564.18-.152.36-.277.54-.372.18-.096.363-.164.55-.205.187-.041.38-.062.581-.062.684 0 1.212.209 1.586.626.374.417.56 1.044.56 1.883v4.477zm7.71-.095a5.793 5.793 0 01-.833.147 8.52 8.52 0 01-.875.044c-.862 0-1.504-.195-1.928-.584-.424-.39-.636-.988-.636-1.795v-3.582h-1.92v-.998h1.92v-1.887l1.19-.307v2.194h3.083v.998H71.64v3.487c0 .492.13.86.393 1.104.262.243.648.365 1.158.365.22 0 .458-.017.718-.051.26-.034.531-.088.814-.16v1.025z"/><path id="}," fill="#7E7C7B" d="M15.784 68h.506c.88 0 1.534.206 1.962.619.428.412.643 1.038.643 1.876v1.58c0 .223.025.422.075.597.05.176.138.324.263.445.125.12.293.213.502.277.21.063.472.095.786.095h.294v.95h-.294c-.332 0-.604.028-.816.082a1.116 1.116 0 00-.496.25.88.88 0 00-.246.427 2.438 2.438 0 00-.068.615v2.393c0 .383-.046.728-.137 1.036-.091.307-.24.57-.445.786a1.993 1.993 0 01-.806.499c-.333.116-.738.174-1.217.174h-.506v-.957h.41c1.053 0 1.58-.513 1.58-1.538v-2.365c0-1.112.48-1.737 1.442-1.873-.97-.105-1.456-.732-1.456-1.88v-1.566c0-1.043-.522-1.565-1.566-1.565h-.41V68zm7.759 11.3c.232.009.458-.012.677-.062a2.02 2.02 0 00.577-.222c.167-.098.3-.22.4-.366a.86.86 0 00.15-.499.95.95 0 00-.098-.464 2.238 2.238 0 00-.223-.329 2.438 2.438 0 01-.222-.32.91.91 0 01-.099-.459.915.915 0 01.222-.588.857.857 0 01.287-.212 1.12 1.12 0 01.875.017c.148.066.278.168.39.305.112.136.2.307.267.512.066.205.099.447.099.725 0 .378-.07.742-.209 1.09a2.657 2.657 0 01-.622.926c-.276.27-.62.484-1.032.643-.413.16-.892.24-1.439.24V79.3z"/><path id="items" fill="#181717" d="M17.65 89.02h-2.03v-.985h3.234v5.872h2.043v.991h-5.502v-.99h2.255V89.02zm.417-3.863c.133 0 .256.024.37.072a.893.893 0 01.297.202.919.919 0 01.27.663.96.96 0 01-.27.663.893.893 0 01-.297.201.944.944 0 01-.37.072.944.944 0 01-.369-.072.893.893 0 01-.297-.201.96.96 0 01-.27-.663.919.919 0 01.27-.663.893.893 0 01.297-.202.944.944 0 01.37-.072zm10.473 9.646a5.793 5.793 0 01-.834.147 8.52 8.52 0 01-.875.044c-.861 0-1.504-.195-1.928-.584-.424-.39-.635-.988-.635-1.795v-3.582h-1.921v-.998h1.92v-1.887l1.19-.307v2.194h3.083v.998h-3.083v3.487c0 .492.131.86.393 1.104.262.243.648.365 1.159.365.219 0 .458-.017.718-.051.26-.034.53-.088.813-.16v1.025zm7.964-3.699c0 .17-.002.31-.007.424a6.37 6.37 0 01-.02.322h-4.82c0 .701.196 1.24.588 1.616.392.376.957.564 1.695.564.201 0 .401-.008.602-.024.2-.016.394-.037.581-.065.187-.027.366-.058.537-.092.17-.034.329-.072.475-.113v.978a9.161 9.161 0 01-2.365.308c-.588 0-1.094-.08-1.518-.24a2.597 2.597 0 01-1.043-.694 2.857 2.857 0 01-.601-1.114 5.273 5.273 0 01-.195-1.494c0-.483.07-.94.209-1.37a3.44 3.44 0 01.608-1.135c.267-.326.594-.584.98-.776a2.94 2.94 0 011.32-.287c.479 0 .903.075 1.272.226.369.15.68.363.933.639s.444.61.574 1.005c.13.394.195.835.195 1.322zm-1.237-.17a2.593 2.593 0 00-.09-.838 1.763 1.763 0 00-.338-.653 1.576 1.576 0 00-.57-.427 1.916 1.916 0 00-.793-.154c-.26 0-.497.05-.711.15-.215.101-.4.242-.554.425a2.19 2.19 0 00-.376.656 3.026 3.026 0 00-.178.84h3.61zm8.032 3.964V89.97c0-.214-.008-.39-.024-.527a1.2 1.2 0 00-.075-.324.348.348 0 00-.13-.168.43.43 0 00-.448.034c-.077.055-.16.144-.25.267a4.216 4.216 0 00-.293.489c-.107.203-.234.452-.38.748v4.41h-1.087v-4.8c0-.25-.008-.453-.024-.608a1.42 1.42 0 00-.075-.362.34.34 0 00-.133-.178.431.431 0 00-.43.02.988.988 0 00-.243.247c-.09.118-.188.28-.298.485-.11.205-.24.467-.39.786v4.41h-1.093v-6.864h.909l.055 1.306c.118-.26.233-.481.345-.663.112-.183.227-.33.345-.441.119-.112.245-.194.38-.246.134-.053.283-.079.447-.079.37 0 .65.12.841.362.191.242.287.616.287 1.122.11-.237.217-.448.321-.633a2.31 2.31 0 01.339-.465c.12-.125.254-.22.4-.287.146-.066.314-.099.506-.099.86 0 1.292.663 1.292 1.99v4.996h-1.094zm8.237-1.873a1.634 1.634 0 01-.458 1.16 2.084 2.084 0 01-.492.378 3.272 3.272 0 01-.598.26c-.212.069-.43.119-.653.15a4.637 4.637 0 01-.656.048 12.3 12.3 0 01-1.282-.061 8.646 8.646 0 01-1.145-.198v-1.094c.401.114.8.2 1.196.26.397.059.79.089 1.183.089.57 0 .991-.078 1.265-.233.273-.155.41-.376.41-.663a.812.812 0 00-.065-.331.753.753 0 00-.236-.28 2.254 2.254 0 00-.53-.278 11.81 11.81 0 00-.98-.328 6.963 6.963 0 01-.859-.31 2.877 2.877 0 01-.68-.414 1.776 1.776 0 01-.451-.56 1.649 1.649 0 01-.164-.76 1.744 1.744 0 01.588-1.264c.214-.196.503-.36.868-.49.364-.129.82-.194 1.367-.194.269 0 .567.015.896.045.328.03.67.08 1.025.153v1.06a9.803 9.803 0 00-1.063-.202 6.926 6.926 0 00-.872-.065c-.296 0-.545.023-.748.069a1.553 1.553 0 00-.492.188.734.734 0 00-.27.28.748.748 0 00-.082.345c0 .123.024.235.071.335.048.1.137.197.267.29.13.094.311.187.543.28.233.094.536.196.91.305.405.119.747.243 1.025.373.278.13.504.274.677.434.173.16.297.34.372.54.076.2.113.428.113.683z"/><path id=":[" fill="#7E7C7B" d="M56.554 87.912c.141 0 .275.029.403.086a1.107 1.107 0 01.564.564.978.978 0 01.085.403.971.971 0 01-.085.407 1.12 1.12 0 01-.229.331 1.058 1.058 0 01-.738.308c-.146 0-.282-.028-.407-.082a1.07 1.07 0 01-.557-.557 1.006 1.006 0 01-.082-.407 1.058 1.058 0 01.308-.738 1.12 1.12 0 01.331-.23.971.971 0 01.407-.085zm0 5.01c.141 0 .275.03.403.086a1.107 1.107 0 01.564.564.978.978 0 01.085.404.971.971 0 01-.085.406 1.12 1.12 0 01-.229.332 1.058 1.058 0 01-.738.307c-.146 0-.282-.027-.407-.082a1.07 1.07 0 01-.557-.557 1.006 1.006 0 01-.082-.406 1.058 1.058 0 01.308-.738 1.12 1.12 0 01.331-.23.971.971 0 01.407-.085zm17.274 4.78h-3.37V85h3.37v.957h-2.235v10.787h2.235v.957z"/><path id="item1" fill="#181717" d="M79.229 89.02h-2.03v-.985h3.233v5.872h2.044v.991h-5.503v-.99h2.256V89.02zm.417-3.863c.132 0 .255.024.369.072a.893.893 0 01.297.202.919.919 0 01.27.663.96.96 0 01-.27.663.893.893 0 01-.297.201.944.944 0 01-.37.072.944.944 0 01-.369-.072.893.893 0 01-.297-.201.96.96 0 01-.27-.663.919.919 0 01.27-.663.893.893 0 01.297-.202.944.944 0 01.37-.072zm10.472 9.646a5.793 5.793 0 01-.834.147 8.52 8.52 0 01-.875.044c-.861 0-1.504-.195-1.928-.584-.423-.39-.635-.988-.635-1.795v-3.582h-1.921v-.998h1.92v-1.887l1.19-.307v2.194h3.083v.998h-3.083v3.487c0 .492.131.86.393 1.104.262.243.648.365 1.159.365.219 0 .458-.017.718-.051.26-.034.53-.088.813-.16v1.025zm7.964-3.699c0 .17-.002.31-.007.424a6.37 6.37 0 01-.02.322h-4.82c0 .701.196 1.24.588 1.616.392.376.957.564 1.696.564.2 0 .4-.008.601-.024.2-.016.394-.037.581-.065.187-.027.366-.058.537-.092.17-.034.33-.072.475-.113v.978a9.161 9.161 0 01-2.365.308c-.588 0-1.094-.08-1.518-.24a2.597 2.597 0 01-1.042-.694 2.857 2.857 0 01-.602-1.114 5.273 5.273 0 01-.195-1.494c0-.483.07-.94.209-1.37a3.44 3.44 0 01.608-1.135c.267-.326.594-.584.981-.776a2.94 2.94 0 011.32-.287c.478 0 .902.075 1.27.226.37.15.681.363.934.639s.444.61.574 1.005c.13.394.195.835.195 1.322zm-1.237-.17a2.593 2.593 0 00-.09-.838 1.763 1.763 0 00-.338-.653 1.576 1.576 0 00-.57-.427 1.916 1.916 0 00-.793-.154c-.26 0-.497.05-.711.15-.214.101-.399.242-.554.425a2.19 2.19 0 00-.376.656 3.026 3.026 0 00-.178.84h3.61zm8.032 3.964V89.97c0-.214-.008-.39-.024-.527a1.2 1.2 0 00-.075-.324.348.348 0 00-.13-.168.43.43 0 00-.448.034c-.077.055-.16.144-.25.267a4.216 4.216 0 00-.293.489c-.107.203-.234.452-.38.748v4.41h-1.087v-4.8c0-.25-.008-.453-.023-.608a1.42 1.42 0 00-.076-.362.34.34 0 00-.133-.178.431.431 0 00-.43.02.988.988 0 00-.243.247c-.09.118-.188.28-.298.485-.11.205-.239.467-.39.786v4.41h-1.093v-6.864h.91l.054 1.306c.118-.26.233-.481.345-.663.112-.183.227-.33.345-.441.119-.112.245-.194.38-.246.134-.053.283-.079.447-.079.37 0 .65.12.841.362.192.242.287.616.287 1.122.11-.237.217-.448.322-.633a2.31 2.31 0 01.338-.465c.12-.125.254-.22.4-.287.146-.066.314-.099.506-.099.861 0 1.292.663 1.292 1.99v4.996h-1.094zm8.524 0h-5.612v-1.107h2.297V87.27l-2.14 1.162-.437-1.012 2.844-1.497h1.052v7.868h1.996v1.107z"/><path id="," fill="#7E7C7B" d="M115.91 96.3c.233.009.458-.012.677-.062a2.02 2.02 0 00.578-.222c.166-.098.3-.22.4-.366a.86.86 0 00.15-.499.95.95 0 00-.1-.464 2.238 2.238 0 00-.221-.329 2.438 2.438 0 01-.223-.32.91.91 0 01-.099-.459.915.915 0 01.222-.588.857.857 0 01.288-.212 1.12 1.12 0 01.875.017c.148.066.278.168.39.305.11.136.2.307.266.512.066.205.099.447.099.725 0 .378-.07.742-.209 1.09a2.657 2.657 0 01-.622.926c-.275.27-.62.484-1.032.643-.412.16-.892.24-1.439.24V96.3z"/><path id="item2" fill="#181717" d="M133.11 89.02h-2.03v-.985h3.232v5.872h2.044v.991h-5.502v-.99h2.255V89.02zm.416-3.863c.133 0 .256.024.37.072a.893.893 0 01.297.202.919.919 0 01.27.663.96.96 0 01-.27.663.893.893 0 01-.297.201.944.944 0 01-.37.072.944.944 0 01-.369-.072.893.893 0 01-.297-.201.96.96 0 01-.27-.663.919.919 0 01.27-.663.893.893 0 01.297-.202.944.944 0 01.37-.072zM144 94.803a5.793 5.793 0 01-.834.147 8.52 8.52 0 01-.875.044c-.861 0-1.504-.195-1.928-.584-.424-.39-.635-.988-.635-1.795v-3.582h-1.921v-.998h1.92v-1.887l1.19-.307v2.194h3.083v.998h-3.083v3.487c0 .492.131.86.393 1.104.262.243.648.365 1.159.365.219 0 .458-.017.718-.051.26-.034.53-.088.813-.16v1.025zm7.964-3.699c0 .17-.002.31-.007.424a6.37 6.37 0 01-.02.322h-4.82c0 .701.196 1.24.588 1.616.392.376.957.564 1.695.564.2 0 .401-.008.602-.024.2-.016.394-.037.581-.065.187-.027.366-.058.537-.092.17-.034.329-.072.475-.113v.978a9.161 9.161 0 01-2.365.308c-.588 0-1.094-.08-1.518-.24a2.597 2.597 0 01-1.043-.694 2.857 2.857 0 01-.601-1.114 5.273 5.273 0 01-.195-1.494c0-.483.07-.94.209-1.37a3.44 3.44 0 01.608-1.135c.267-.326.594-.584.98-.776a2.94 2.94 0 011.32-.287c.479 0 .903.075 1.272.226.369.15.68.363.933.639s.444.61.574 1.005c.13.394.195.835.195 1.322zm-1.237-.17a2.593 2.593 0 00-.09-.838 1.763 1.763 0 00-.338-.653 1.576 1.576 0 00-.57-.427 1.916 1.916 0 00-.793-.154c-.26 0-.497.05-.711.15-.215.101-.4.242-.554.425a2.19 2.19 0 00-.376.656 3.026 3.026 0 00-.178.84h3.61zm8.032 3.964V89.97c0-.214-.008-.39-.024-.527a1.2 1.2 0 00-.075-.324.348.348 0 00-.13-.168.43.43 0 00-.448.034c-.077.055-.16.144-.25.267a4.216 4.216 0 00-.293.489 30.3 30.3 0 00-.38.748v4.41h-1.087v-4.8c0-.25-.008-.453-.024-.608a1.42 1.42 0 00-.075-.362.34.34 0 00-.133-.178.431.431 0 00-.43.02.988.988 0 00-.243.247 3.85 3.85 0 00-.298.485c-.11.205-.24.467-.39.786v4.41h-1.093v-6.864h.909l.055 1.306c.118-.26.233-.481.345-.663.112-.183.227-.33.345-.441.119-.112.245-.194.38-.246.134-.053.283-.079.447-.079.37 0 .65.12.841.362.191.242.287.616.287 1.122.11-.237.217-.448.321-.633a2.31 2.31 0 01.339-.465c.12-.125.254-.22.4-.287.146-.066.314-.099.506-.099.86 0 1.292.663 1.292 1.99v4.996h-1.094zm8.6 0h-5.886v-1.066l2.31-2.297c.378-.374.686-.697.923-.97.237-.274.422-.523.554-.75a2.28 2.28 0 00.266-.638c.046-.2.069-.417.069-.65 0-.218-.03-.427-.09-.625a1.49 1.49 0 00-.273-.523 1.268 1.268 0 00-.478-.356 1.734 1.734 0 00-.704-.13c-.378 0-.723.085-1.032.253-.31.17-.595.388-.855.657l-.656-.786c.337-.356.726-.64 1.165-.855.44-.214.952-.321 1.535-.321.397 0 .758.06 1.084.178.325.118.607.289.844.512.237.224.42.497.55.82.13.324.195.689.195 1.094 0 .342-.046.659-.137.95a3.646 3.646 0 01-.413.872c-.185.29-.417.59-.698.899-.28.31-.611.65-.994 1.019l-1.62 1.579h4.34v1.134z"/><path id="]," fill="#7E7C7B" d="M173.503 97.701h-3.37v-.957h2.221V85.957h-2.221V85h3.37v12.701zm3.985-1.401c.233.009.458-.012.677-.062a2.02 2.02 0 00.578-.222c.166-.098.3-.22.4-.366a.86.86 0 00.15-.499.95.95 0 00-.1-.464 2.238 2.238 0 00-.221-.329 2.438 2.438 0 01-.222-.32.91.91 0 01-.1-.459.915.915 0 01.223-.588.857.857 0 01.287-.212 1.12 1.12 0 01.875.017c.148.066.278.168.39.305.111.136.2.307.266.512.066.205.099.447.099.725 0 .378-.07.742-.208 1.09a2.657 2.657 0 01-.623.926c-.275.27-.62.484-1.032.643-.412.16-.892.24-1.439.24V96.3z"/><path id="title" fill="#181717" d="M20.843 111.803a5.793 5.793 0 01-.834.147 8.52 8.52 0 01-.875.044c-.862 0-1.504-.195-1.928-.584-.424-.39-.636-.988-.636-1.795v-3.582h-1.92v-.998h1.92v-1.887l1.19-.307v2.194h3.083v.998H17.76v3.487c0 .492.13.86.393 1.104.262.243.648.365 1.159.365.218 0 .458-.017.717-.051.26-.034.531-.088.814-.16v1.025zm4.505-5.783h-2.03v-.985h3.233v5.872h2.044v.991h-5.503v-.99h2.256v-4.888zm.417-3.863c.132 0 .255.024.369.072a.893.893 0 01.297.202.919.919 0 01.27.663.96.96 0 01-.27.663.893.893 0 01-.297.201.944.944 0 01-.37.072.944.944 0 01-.368-.072.893.893 0 01-.298-.201.96.96 0 01-.27-.663.919.919 0 01.27-.663.893.893 0 01.298-.202.944.944 0 01.369-.072zm10.472 9.646a5.793 5.793 0 01-.834.147 8.52 8.52 0 01-.875.044c-.861 0-1.504-.195-1.927-.584-.424-.39-.636-.988-.636-1.795v-3.582h-1.921v-.998h1.92v-1.887l1.19-.307v2.194h3.083v.998h-3.083v3.487c0 .492.131.86.393 1.104.262.243.649.365 1.16.365.218 0 .457-.017.717-.051.26-.034.53-.088.813-.16v1.025zm4.505-8.586h-2.03v-.978h3.233v8.668h2.044v.991h-5.503v-.99h2.256v-7.691zm11.156 4.887c0 .17-.002.31-.006.424a6.37 6.37 0 01-.02.322h-4.82c0 .701.196 1.24.588 1.616.392.376.957.564 1.695.564.2 0 .401-.008.602-.024.2-.016.394-.037.58-.065.187-.027.366-.058.537-.092.171-.034.33-.072.475-.113v.978a9.161 9.161 0 01-2.365.308c-.588 0-1.094-.08-1.518-.24a2.597 2.597 0 01-1.042-.694 2.857 2.857 0 01-.602-1.114 5.273 5.273 0 01-.194-1.494c0-.483.07-.94.208-1.37a3.44 3.44 0 01.609-1.135c.266-.326.593-.584.98-.776a2.94 2.94 0 011.32-.287c.478 0 .902.075 1.271.226.37.15.68.363.933.639s.445.61.575 1.005c.13.394.194.835.194 1.322zm-1.237-.17a2.593 2.593 0 00-.089-.838 1.763 1.763 0 00-.338-.653 1.576 1.576 0 00-.57-.427 1.916 1.916 0 00-.794-.154c-.26 0-.497.05-.71.15-.215.101-.4.242-.555.425a2.19 2.19 0 00-.376.656 3.026 3.026 0 00-.177.84h3.61z"/><path id="=" fill="#AF6E24" d="M67.19 107.482h-5.878v-1.004h5.878v1.004zm0 2.38h-5.878v-1.006h5.878v1.005z"/><path id=""Menu"" fill="#478964" d="M79.071 102.24l-.191 3.205h-1.121l-.198-3.206h1.51zm2.66 0l-.192 3.205h-1.121l-.198-3.206h1.51zm9.125 9.658h-1.189l-.178-5.57-.075-2.14-.417 1.244-1.32 3.554h-.84l-1.258-3.418-.417-1.38-.027 2.235-.157 5.475h-1.149l.438-8.934h1.442l1.203 3.363.39 1.135.376-1.135 1.264-3.363h1.484l.43 8.934zm7.226-3.794c0 .17-.002.31-.007.424a6.37 6.37 0 01-.02.322h-4.82c0 .701.196 1.24.588 1.616.392.376.957.564 1.696.564.2 0 .4-.008.601-.024.2-.016.394-.037.581-.065.187-.027.366-.058.537-.092.17-.034.33-.072.475-.113v.978a9.161 9.161 0 01-2.365.308c-.588 0-1.094-.08-1.518-.24a2.597 2.597 0 01-1.042-.694 2.857 2.857 0 01-.602-1.114 5.273 5.273 0 01-.195-1.494c0-.483.07-.94.209-1.37a3.44 3.44 0 01.608-1.135c.267-.326.594-.584.981-.776a2.94 2.94 0 011.32-.287c.478 0 .902.075 1.27.226.37.15.681.363.934.639s.444.61.574 1.005c.13.394.195.835.195 1.322zm-1.237-.17a2.593 2.593 0 00-.09-.838 1.763 1.763 0 00-.338-.653 1.576 1.576 0 00-.57-.427 1.916 1.916 0 00-.793-.154c-.26 0-.497.05-.711.15-.214.101-.399.242-.554.425a2.19 2.19 0 00-.376.656 3.026 3.026 0 00-.178.84h3.61zm3.137-2.899h1.06l.048 1.108c.2-.237.394-.435.58-.592.188-.157.371-.283.551-.38a2.06 2.06 0 01.55-.2c.187-.04.381-.059.582-.059.706 0 1.24.209 1.603.626.362.417.543 1.044.543 1.883v4.477h-1.19v-4.381c0-.538-.1-.936-.3-1.193-.2-.258-.5-.386-.896-.386-.146 0-.288.021-.427.064a1.557 1.557 0 00-.434.226c-.15.107-.313.252-.489.434-.175.182-.372.41-.591.684v4.552h-1.19v-6.863zm13.214 6.863h-1.066l-.041-1.107a5.54 5.54 0 01-.585.591 3.021 3.021 0 01-.55.38 2.119 2.119 0 01-.55.201 2.84 2.84 0 01-.585.058c-.706 0-1.24-.207-1.6-.622-.36-.414-.54-1.04-.54-1.88v-4.484h1.19v4.389c0 1.053.397 1.579 1.19 1.579.145 0 .288-.022.427-.065.139-.043.285-.119.437-.226.153-.107.317-.251.493-.434.175-.182.372-.412.59-.69v-4.553h1.19v6.863zm4.362-9.659l-.192 3.206h-1.12l-.2-3.206h1.512zm2.659 0l-.192 3.206h-1.12l-.199-3.206h1.51z"/><path id="}" fill="#7E7C7B" d="M.39 119h.506c.88 0 1.533.206 1.961.619.429.412.643 1.038.643 1.876v1.58c0 .223.025.422.075.597.05.176.138.324.263.445.126.12.293.213.503.277.21.063.471.095.786.095h.294v.95h-.294c-.333 0-.605.028-.817.082a1.116 1.116 0 00-.496.25.88.88 0 00-.246.427 2.438 2.438 0 00-.068.615v2.393c0 .383-.046.728-.137 1.036-.09.307-.239.57-.444.786a1.993 1.993 0 01-.807.499c-.332.116-.738.174-1.216.174H.39v-.957H.8c1.053 0 1.579-.513 1.579-1.538v-2.365c0-1.112.48-1.737 1.442-1.873-.97-.105-1.456-.732-1.456-1.88v-1.566c0-1.043-.522-1.565-1.565-1.565H.39V119z"/></g><path id="Line-Copy" fill="#C06334" d="M253.5 44.5l14 7-14 7v-6h-40v-2h40v-6z" transform="matrix(-1 0 0 1 482 0)"/><path id="Line-Copy-2" fill="#C06334" d="M253.5 59.5l14 7-14 7v-6h-40v-2h40v-6z" transform="matrix(-1 0 0 1 482 0)"/><path id="Line-Copy-3" fill="#C06334" d="M253.5 94.5l14 7-14 7v-6h-40v-2h40v-6z" transform="matrix(-1 0 0 1 482 0)"/></g></g></svg> +>>>>>>> 540d753e90789205fc6e75c502f68382c87dea9b:1-js/05-data-types/10-destructuring-assignment/destructuring-complex.svg diff --git a/1-js/05-data-types/11-date/1-new-date/solution.md b/1-js/05-data-types/11-date/1-new-date/solution.md new file mode 100644 index 000000000..18286c336 --- /dev/null +++ b/1-js/05-data-types/11-date/1-new-date/solution.md @@ -0,0 +1,18 @@ +The `new Date` constructor uses the local time zone. So the only important thing to remember is that months start from zero. + +So February has number 1. + +Here's an example with numbers as date components: + +```js run +//new Date(year, month, date, hour, minute, second, millisecond) +let d1 = new Date(2012, 1, 20, 3, 12); +alert( d1 ); +``` +We could also create a date from a string, like this: + +```js run +//new Date(datastring) +let d2 = new Date("2012-02-20T03:12"); +alert( d2 ); +``` diff --git a/1-js/05-data-types/10-date/1-new-date/task.md b/1-js/05-data-types/11-date/1-new-date/task.md similarity index 100% rename from 1-js/05-data-types/10-date/1-new-date/task.md rename to 1-js/05-data-types/11-date/1-new-date/task.md diff --git a/1-js/05-data-types/10-date/2-get-week-day/_js.view/solution.js b/1-js/05-data-types/11-date/2-get-week-day/_js.view/solution.js similarity index 100% rename from 1-js/05-data-types/10-date/2-get-week-day/_js.view/solution.js rename to 1-js/05-data-types/11-date/2-get-week-day/_js.view/solution.js diff --git a/1-js/05-data-types/10-date/2-get-week-day/_js.view/test.js b/1-js/05-data-types/11-date/2-get-week-day/_js.view/test.js similarity index 100% rename from 1-js/05-data-types/10-date/2-get-week-day/_js.view/test.js rename to 1-js/05-data-types/11-date/2-get-week-day/_js.view/test.js diff --git a/1-js/05-data-types/10-date/2-get-week-day/solution.md b/1-js/05-data-types/11-date/2-get-week-day/solution.md similarity index 100% rename from 1-js/05-data-types/10-date/2-get-week-day/solution.md rename to 1-js/05-data-types/11-date/2-get-week-day/solution.md diff --git a/1-js/05-data-types/10-date/2-get-week-day/task.md b/1-js/05-data-types/11-date/2-get-week-day/task.md similarity index 100% rename from 1-js/05-data-types/10-date/2-get-week-day/task.md rename to 1-js/05-data-types/11-date/2-get-week-day/task.md diff --git a/1-js/05-data-types/10-date/3-weekday/_js.view/solution.js b/1-js/05-data-types/11-date/3-weekday/_js.view/solution.js similarity index 100% rename from 1-js/05-data-types/10-date/3-weekday/_js.view/solution.js rename to 1-js/05-data-types/11-date/3-weekday/_js.view/solution.js diff --git a/1-js/05-data-types/10-date/3-weekday/_js.view/test.js b/1-js/05-data-types/11-date/3-weekday/_js.view/test.js similarity index 100% rename from 1-js/05-data-types/10-date/3-weekday/_js.view/test.js rename to 1-js/05-data-types/11-date/3-weekday/_js.view/test.js diff --git a/1-js/11-async/01-callbacks/01-animate-circle-callback/solution.md b/1-js/05-data-types/11-date/3-weekday/solution.md similarity index 100% rename from 1-js/11-async/01-callbacks/01-animate-circle-callback/solution.md rename to 1-js/05-data-types/11-date/3-weekday/solution.md diff --git a/1-js/05-data-types/10-date/3-weekday/task.md b/1-js/05-data-types/11-date/3-weekday/task.md similarity index 100% rename from 1-js/05-data-types/10-date/3-weekday/task.md rename to 1-js/05-data-types/11-date/3-weekday/task.md diff --git a/1-js/05-data-types/10-date/4-get-date-ago/_js.view/solution.js b/1-js/05-data-types/11-date/4-get-date-ago/_js.view/solution.js similarity index 100% rename from 1-js/05-data-types/10-date/4-get-date-ago/_js.view/solution.js rename to 1-js/05-data-types/11-date/4-get-date-ago/_js.view/solution.js diff --git a/1-js/05-data-types/10-date/4-get-date-ago/_js.view/test.js b/1-js/05-data-types/11-date/4-get-date-ago/_js.view/test.js similarity index 100% rename from 1-js/05-data-types/10-date/4-get-date-ago/_js.view/test.js rename to 1-js/05-data-types/11-date/4-get-date-ago/_js.view/test.js diff --git a/1-js/05-data-types/10-date/4-get-date-ago/solution.md b/1-js/05-data-types/11-date/4-get-date-ago/solution.md similarity index 100% rename from 1-js/05-data-types/10-date/4-get-date-ago/solution.md rename to 1-js/05-data-types/11-date/4-get-date-ago/solution.md diff --git a/1-js/05-data-types/10-date/4-get-date-ago/task.md b/1-js/05-data-types/11-date/4-get-date-ago/task.md similarity index 92% rename from 1-js/05-data-types/10-date/4-get-date-ago/task.md rename to 1-js/05-data-types/11-date/4-get-date-ago/task.md index 40dcd926d..058d39c7e 100644 --- a/1-js/05-data-types/10-date/4-get-date-ago/task.md +++ b/1-js/05-data-types/11-date/4-get-date-ago/task.md @@ -8,7 +8,7 @@ Create a function `getDateAgo(date, days)` to return the day of month `days` ago For instance, if today is 20th, then `getDateAgo(new Date(), 1)` should be 19th and `getDateAgo(new Date(), 2)` should be 18th. -Should also work over months/years reliably: +Should work reliably for `days=365` or more: ```js let date = new Date(2015, 0, 2); diff --git a/1-js/05-data-types/10-date/5-last-day-of-month/_js.view/solution.js b/1-js/05-data-types/11-date/5-last-day-of-month/_js.view/solution.js similarity index 100% rename from 1-js/05-data-types/10-date/5-last-day-of-month/_js.view/solution.js rename to 1-js/05-data-types/11-date/5-last-day-of-month/_js.view/solution.js diff --git a/1-js/05-data-types/10-date/5-last-day-of-month/_js.view/test.js b/1-js/05-data-types/11-date/5-last-day-of-month/_js.view/test.js similarity index 100% rename from 1-js/05-data-types/10-date/5-last-day-of-month/_js.view/test.js rename to 1-js/05-data-types/11-date/5-last-day-of-month/_js.view/test.js diff --git a/1-js/05-data-types/10-date/5-last-day-of-month/solution.md b/1-js/05-data-types/11-date/5-last-day-of-month/solution.md similarity index 100% rename from 1-js/05-data-types/10-date/5-last-day-of-month/solution.md rename to 1-js/05-data-types/11-date/5-last-day-of-month/solution.md diff --git a/1-js/05-data-types/10-date/5-last-day-of-month/task.md b/1-js/05-data-types/11-date/5-last-day-of-month/task.md similarity index 100% rename from 1-js/05-data-types/10-date/5-last-day-of-month/task.md rename to 1-js/05-data-types/11-date/5-last-day-of-month/task.md diff --git a/1-js/05-data-types/10-date/6-get-seconds-today/solution.md b/1-js/05-data-types/11-date/6-get-seconds-today/solution.md similarity index 96% rename from 1-js/05-data-types/10-date/6-get-seconds-today/solution.md rename to 1-js/05-data-types/11-date/6-get-seconds-today/solution.md index a483afe93..8f8e52b68 100644 --- a/1-js/05-data-types/10-date/6-get-seconds-today/solution.md +++ b/1-js/05-data-types/11-date/6-get-seconds-today/solution.md @@ -23,4 +23,6 @@ function getSecondsToday() { let d = new Date(); return d.getHours() * 3600 + d.getMinutes() * 60 + d.getSeconds(); } + +alert( getSecondsToday() ); ``` diff --git a/1-js/05-data-types/10-date/6-get-seconds-today/task.md b/1-js/05-data-types/11-date/6-get-seconds-today/task.md similarity index 68% rename from 1-js/05-data-types/10-date/6-get-seconds-today/task.md rename to 1-js/05-data-types/11-date/6-get-seconds-today/task.md index 3fbe13286..456790928 100644 --- a/1-js/05-data-types/10-date/6-get-seconds-today/task.md +++ b/1-js/05-data-types/11-date/6-get-seconds-today/task.md @@ -2,11 +2,11 @@ importance: 5 --- -# How many seconds has passed today? +# How many seconds have passed today? Write a function `getSecondsToday()` that returns the number of seconds from the beginning of today. -For instance, if now `10:00 am`, and there was no daylight savings shift, then: +For instance, if now were `10:00 am`, and there was no daylight savings shift, then: ```js getSecondsToday() == 36000 // (3600 * 10) diff --git a/1-js/05-data-types/10-date/7-get-seconds-to-tomorrow/solution.md b/1-js/05-data-types/11-date/7-get-seconds-to-tomorrow/solution.md similarity index 100% rename from 1-js/05-data-types/10-date/7-get-seconds-to-tomorrow/solution.md rename to 1-js/05-data-types/11-date/7-get-seconds-to-tomorrow/solution.md diff --git a/1-js/05-data-types/10-date/7-get-seconds-to-tomorrow/task.md b/1-js/05-data-types/11-date/7-get-seconds-to-tomorrow/task.md similarity index 100% rename from 1-js/05-data-types/10-date/7-get-seconds-to-tomorrow/task.md rename to 1-js/05-data-types/11-date/7-get-seconds-to-tomorrow/task.md diff --git a/1-js/05-data-types/10-date/8-format-date-relative/_js.view/solution.js b/1-js/05-data-types/11-date/8-format-date-relative/_js.view/solution.js similarity index 100% rename from 1-js/05-data-types/10-date/8-format-date-relative/_js.view/solution.js rename to 1-js/05-data-types/11-date/8-format-date-relative/_js.view/solution.js diff --git a/1-js/05-data-types/10-date/8-format-date-relative/_js.view/test.js b/1-js/05-data-types/11-date/8-format-date-relative/_js.view/test.js similarity index 100% rename from 1-js/05-data-types/10-date/8-format-date-relative/_js.view/test.js rename to 1-js/05-data-types/11-date/8-format-date-relative/_js.view/test.js diff --git a/1-js/05-data-types/10-date/8-format-date-relative/solution.md b/1-js/05-data-types/11-date/8-format-date-relative/solution.md similarity index 93% rename from 1-js/05-data-types/10-date/8-format-date-relative/solution.md rename to 1-js/05-data-types/11-date/8-format-date-relative/solution.md index 2507c840c..372485685 100644 --- a/1-js/05-data-types/10-date/8-format-date-relative/solution.md +++ b/1-js/05-data-types/11-date/8-format-date-relative/solution.md @@ -40,7 +40,7 @@ alert( formatDate(new Date(new Date - 30 * 1000)) ); // "30 sec. ago" alert( formatDate(new Date(new Date - 5 * 60 * 1000)) ); // "5 min. ago" -// yesterday's date like 31.12.2016, 20:00 +// yesterday's date like 31.12.2016 20:00 alert( formatDate(new Date(new Date - 86400 * 1000)) ); ``` @@ -62,6 +62,8 @@ function formatDate(date) { year = year.toString().slice(-2); month = month < 10 ? '0' + month : month; dayOfMonth = dayOfMonth < 10 ? '0' + dayOfMonth : dayOfMonth; + hour = hour < 10 ? '0' + hour : hour; + minutes = minutes < 10 ? '0' + minutes : minutes; if (diffSec < 1) { return 'right now'; diff --git a/1-js/05-data-types/10-date/8-format-date-relative/task.md b/1-js/05-data-types/11-date/8-format-date-relative/task.md similarity index 94% rename from 1-js/05-data-types/10-date/8-format-date-relative/task.md rename to 1-js/05-data-types/11-date/8-format-date-relative/task.md index 7b341ca2e..9651b305f 100644 --- a/1-js/05-data-types/10-date/8-format-date-relative/task.md +++ b/1-js/05-data-types/11-date/8-format-date-relative/task.md @@ -20,6 +20,6 @@ alert( formatDate(new Date(new Date - 30 * 1000)) ); // "30 sec. ago" alert( formatDate(new Date(new Date - 5 * 60 * 1000)) ); // "5 min. ago" -// yesterday's date like 31.12.2016, 20:00 +// yesterday's date like 31.12.16 20:00 alert( formatDate(new Date(new Date - 86400 * 1000)) ); ``` diff --git a/1-js/05-data-types/10-date/article.md b/1-js/05-data-types/11-date/article.md similarity index 82% rename from 1-js/05-data-types/10-date/article.md rename to 1-js/05-data-types/11-date/article.md index 8a75f1cbd..6958a3a97 100644 --- a/1-js/05-data-types/10-date/article.md +++ b/1-js/05-data-types/11-date/article.md @@ -29,18 +29,24 @@ To create a new `Date` object call `new Date()` with one of the following argume alert( Jan02_1970 ); ``` - The number of milliseconds that has passed since the beginning of 1970 is called a *timestamp*. + An integer number representing the number of milliseconds that has passed since the beginning of 1970 is called a *timestamp*. It's a lightweight numeric representation of a date. We can always create a date from a timestamp using `new Date(timestamp)` and convert the existing `Date` object to a timestamp using the `date.getTime()` method (see below). -`new Date(datestring)` -: If there is a single argument, and it's a string, then it is parsed with the `Date.parse` algorithm (see below). + Dates before 01.01.1970 have negative timestamps, e.g.: + ```js run + // 31 Dec 1969 + let Dec31_1969 = new Date(-24 * 3600 * 1000); + alert( Dec31_1969 ); + ``` +`new Date(datestring)` +: If there is a single argument, and it's a string, then it is parsed automatically. The algorithm is the same as `Date.parse` uses, we'll cover it later. ```js run let date = new Date("2017-01-26"); alert(date); - // The time portion of the date is assumed to be midnight GMT and + // The time is not set, so it's assumed to be midnight GMT and // is adjusted according to the timezone the code is run in // So the result could be // Thu Jan 26 2017 11:00:00 GMT+1100 (Australian Eastern Daylight Time) @@ -49,11 +55,9 @@ To create a new `Date` object call `new Date()` with one of the following argume ``` `new Date(year, month, date, hours, minutes, seconds, ms)` -: Create the date with the given components in the local time zone. Only two first arguments are obligatory. - - Note: +: Create the date with the given components in the local time zone. Only the first two arguments are obligatory. - - The `year` must have 4 digits: `2013` is okay, `98` is not. + - The `year` should have 4 digits. For compatibility, 2 digits are also accepted and considered `19xx`, e.g. `98` is the same as `1998` here, but always using 4 digits is strongly encouraged. - The `month` count starts with `0` (Jan), up to `11` (Dec). - The `date` parameter is actually the day of month, if absent then `1` is assumed. - If `hours/minutes/seconds/ms` is absent, they are assumed to be equal `0`. @@ -61,11 +65,11 @@ To create a new `Date` object call `new Date()` with one of the following argume For instance: ```js - new Date(2011, 0, 1, 0, 0, 0, 0); // // 1 Jan 2011, 00:00:00 + new Date(2011, 0, 1, 0, 0, 0, 0); // 1 Jan 2011, 00:00:00 new Date(2011, 0, 1); // the same, hours etc are 0 by default ``` - The minimal precision is 1 ms (1/1000 sec): + The maximal precision is 1 ms (1/1000 sec): ```js run let date = new Date(2011, 0, 1, 2, 3, 4, 567); @@ -74,7 +78,7 @@ To create a new `Date` object call `new Date()` with one of the following argume ## Access date components -There are many methods to access the year, month and so on from the `Date` object. But they can be easily remembered when categorized. +There are methods to access the year, month and so on from the `Date` object: [getFullYear()](mdn:js/Date/getFullYear) : Get the year (4 digits) @@ -120,7 +124,7 @@ Besides the given methods, there are two special ones that do not have a UTC-var : Returns the timestamp for the date -- a number of milliseconds passed from the January 1st of 1970 UTC+0. [getTimezoneOffset()](mdn:js/Date/getTimezoneOffset) -: Returns the difference between the local time zone and UTC, in minutes: +: Returns the difference between UTC and the local time zone, in minutes: ```js run // if you are in timezone UTC-1, outputs 60 @@ -133,12 +137,12 @@ Besides the given methods, there are two special ones that do not have a UTC-var The following methods allow to set date/time components: -- [`setFullYear(year [, month, date])`](mdn:js/Date/setFullYear) -- [`setMonth(month [, date])`](mdn:js/Date/setMonth) +- [`setFullYear(year, [month], [date])`](mdn:js/Date/setFullYear) +- [`setMonth(month, [date])`](mdn:js/Date/setMonth) - [`setDate(date)`](mdn:js/Date/setDate) -- [`setHours(hour [, min, sec, ms])`](mdn:js/Date/setHours) -- [`setMinutes(min [, sec, ms])`](mdn:js/Date/setMinutes) -- [`setSeconds(sec [, ms])`](mdn:js/Date/setSeconds) +- [`setHours(hour, [min], [sec], [ms])`](mdn:js/Date/setHours) +- [`setMinutes(min, [sec], [ms])`](mdn:js/Date/setMinutes) +- [`setSeconds(sec, [ms])`](mdn:js/Date/setSeconds) - [`setMilliseconds(ms)`](mdn:js/Date/setMilliseconds) - [`setTime(milliseconds)`](mdn:js/Date/setTime) (sets the whole date by milliseconds since 01.01.1970 UTC) @@ -217,21 +221,21 @@ The important side effect: dates can be subtracted, the result is their differen That can be used for time measurements: ```js run -let start = new Date(); // start counting +let start = new Date(); // start measuring time // do the job for (let i = 0; i < 100000; i++) { let doSomething = i * i * i; } -let end = new Date(); // done +let end = new Date(); // end measuring time alert( `The loop took ${end - start} ms` ); ``` ## Date.now() -If we only want to measure the difference, we don't need the `Date` object. +If we only want to measure time, we don't need the `Date` object. There's a special method `Date.now()` that returns the current timestamp. @@ -264,6 +268,8 @@ If we want a reliable benchmark of CPU-hungry function, we should be careful. For instance, let's measure two functions that calculate the difference between two dates: which one is faster? +Such performance measurements are often called "benchmarks". + ```js // we have date1 and date2, which function faster returns their difference in ms? function diffSubtract(date1, date2) { @@ -280,7 +286,7 @@ These two do exactly the same thing, but one of them uses an explicit `date.getT So, which one is faster? -The first idea may be to run them many times in a row and measure the time difference. For our case, functions are very simple, so we have to do it around 100000 times. +The first idea may be to run them many times in a row and measure the time difference. For our case, functions are very simple, so we have to do it at least 100000 times. Let's measure: @@ -310,7 +316,7 @@ Wow! Using `getTime()` is so much faster! That's because there's no type convers Okay, we have something. But that's not a good benchmark yet. -Imagine that at the time of running `bench(diffSubtract)` CPU was doing something in parallel, and it was taking resources. And by the time of running `bench(diffGetTime)` the work has finished. +Imagine that at the time of running `bench(diffSubtract)` CPU was doing something in parallel, and it was taking resources. And by the time of running `bench(diffGetTime)` that work has finished. A pretty real scenario for a modern multi-process OS. @@ -318,7 +324,7 @@ As a result, the first benchmark will have less CPU resources than the second. T **For more reliable benchmarking, the whole pack of benchmarks should be rerun multiple times.** -Here's the code example: +For example, like this: ```js run function diffSubtract(date1, date2) { @@ -342,7 +348,7 @@ let time1 = 0; let time2 = 0; *!* -// run bench(upperSlice) and bench(upperLoop) each 10 times alternating +// run bench(diffSubtract) and bench(diffGetTime) each 10 times alternating for (let i = 0; i < 10; i++) { time1 += bench(diffSubtract); time2 += bench(diffGetTime); @@ -368,9 +374,9 @@ for (let i = 0; i < 10; i++) { ``` ```warn header="Be careful doing microbenchmarking" -Modern JavaScript engines perform many optimizations. They may tweak results of "artificial tests" compared to "normal usage", especially when we benchmark something very small. So if you seriously want to understand performance, then please study how the JavaScript engine works. And then you probably won't need microbenchmarks at all. +Modern JavaScript engines perform many optimizations. They may tweak results of "artificial tests" compared to "normal usage", especially when we benchmark something very small, such as how an operator works, or a built-in function. So if you seriously want to understand performance, then please study how the JavaScript engine works. And then you probably won't need microbenchmarks at all. -The great pack of articles about V8 can be found at <http://mrale.ph>. +The great pack of articles about V8 can be found at <https://mrale.ph>. ``` ## Date.parse from a string @@ -382,7 +388,7 @@ The string format should be: `YYYY-MM-DDTHH:mm:ss.sssZ`, where: - `YYYY-MM-DD` -- is the date: year-month-day. - The character `"T"` is used as the delimiter. - `HH:mm:ss.sss` -- is the time: hours, minutes, seconds and milliseconds. -- The optional `'Z'` part denotes the time zone in the format `+-hh:mm`. A single letter `Z` that would mean UTC+0. +- The optional `'Z'` part denotes the time zone in the format `+-hh:mm`. A single letter `Z` would mean UTC+0. Shorter variants are also possible, like `YYYY-MM-DD` or `YYYY-MM` or even `YYYY`. @@ -401,7 +407,7 @@ We can instantly create a `new Date` object from the timestamp: ```js run let date = new Date( Date.parse('2012-01-26T13:51:50.417-07:00') ); -alert(date); +alert(date); ``` ## Summary @@ -415,13 +421,13 @@ alert(date); Note that unlike many other systems, timestamps in JavaScript are in milliseconds, not in seconds. -Also, sometimes we need more precise time measurements. JavaScript itself does not have a way to measure time in microseconds (1 millionth of a second), but most environments provide it. For instance, browser has [performance.now()](mdn:api/Performance/now) that gives the number of milliseconds from the start of page loading with microsecond precision (3 digits after the point): +Sometimes we need more precise time measurements. JavaScript itself does not have a way to measure time in microseconds (1 millionth of a second), but most environments provide it. For instance, browser has [performance.now()](mdn:api/Performance/now) that gives the number of milliseconds from the start of page loading with microsecond precision (3 digits after the point): ```js run alert(`Loading started ${performance.now()}ms ago`); // Something like: "Loading started 34731.26000000001ms ago" // .26 is microseconds (260 microseconds) -// more than 3 digits after the decimal point are precision errors, but only the first 3 are correct +// more than 3 digits after the decimal point are precision errors, only the first 3 are correct ``` -Node.js has `microtime` module and other ways. Technically, any device and environment allows to get more precision, it's just not in `Date`. +Node.js has `microtime` module and other ways. Technically, almost any device and environment allows to get more precision, it's just not in `Date`. diff --git a/1-js/05-data-types/11-json/1-serialize-object/solution.md b/1-js/05-data-types/12-json/1-serialize-object/solution.md similarity index 100% rename from 1-js/05-data-types/11-json/1-serialize-object/solution.md rename to 1-js/05-data-types/12-json/1-serialize-object/solution.md diff --git a/1-js/05-data-types/11-json/1-serialize-object/task.md b/1-js/05-data-types/12-json/1-serialize-object/task.md similarity index 100% rename from 1-js/05-data-types/11-json/1-serialize-object/task.md rename to 1-js/05-data-types/12-json/1-serialize-object/task.md diff --git a/1-js/05-data-types/11-json/2-serialize-event-circular/solution.md b/1-js/05-data-types/12-json/2-serialize-event-circular/solution.md similarity index 100% rename from 1-js/05-data-types/11-json/2-serialize-event-circular/solution.md rename to 1-js/05-data-types/12-json/2-serialize-event-circular/solution.md diff --git a/1-js/05-data-types/11-json/2-serialize-event-circular/task.md b/1-js/05-data-types/12-json/2-serialize-event-circular/task.md similarity index 79% rename from 1-js/05-data-types/11-json/2-serialize-event-circular/task.md rename to 1-js/05-data-types/12-json/2-serialize-event-circular/task.md index 8b3963ddf..3755a24aa 100644 --- a/1-js/05-data-types/11-json/2-serialize-event-circular/task.md +++ b/1-js/05-data-types/12-json/2-serialize-event-circular/task.md @@ -6,7 +6,7 @@ importance: 5 In simple cases of circular references, we can exclude an offending property from serialization by its name. -But sometimes there are many backreferences. And names may be used both in circular references and normal properties. +But sometimes we can't just use the name, as it may be used both in circular references and normal properties. So we can check the property by its value. Write `replacer` function to stringify everything, but remove properties that reference `meetup`: @@ -22,7 +22,7 @@ let meetup = { }; *!* -// circular references +// circular references room.occupiedBy = meetup; meetup.self = meetup; */!* @@ -39,4 +39,3 @@ alert( JSON.stringify(meetup, function replacer(key, value) { } */ ``` - diff --git a/1-js/05-data-types/11-json/article.md b/1-js/05-data-types/12-json/article.md similarity index 83% rename from 1-js/05-data-types/11-json/article.md rename to 1-js/05-data-types/12-json/article.md index 50458906a..133ffb353 100644 --- a/1-js/05-data-types/11-json/article.md +++ b/1-js/05-data-types/12-json/article.md @@ -21,13 +21,13 @@ let user = { alert(user); // {name: "John", age: 30} ``` -...But in the process of development, new properties are added, old properties are renamed and removed. Updating such `toString` every time can become a pain. We could try to loop over properties in it, but what if the object is complex and has nested objects in properties? We'd need to implement their conversion as well. And, if we're sending the object over a network, then we also need to supply the code to "read" our object on the receiving side. +...But in the process of development, new properties are added, old properties are renamed and removed. Updating such `toString` every time can become a pain. We could try to loop over properties in it, but what if the object is complex and has nested objects in properties? We'd need to implement their conversion as well. Luckily, there's no need to write the code to handle all this. The task has been solved already. ## JSON.stringify -The [JSON](http://en.wikipedia.org/wiki/JSON) (JavaScript Object Notation) is a general format to represent values and objects. It is described as in [RFC 4627](http://tools.ietf.org/html/rfc4627) standard. Initially it was made for JavaScript, but many other languages have libraries to handle it as well. So it's easy to use JSON for data exchange when the client uses JavaScript and the server is written on Ruby/PHP/Java/Whatever. +The [JSON](https://en.wikipedia.org/wiki/JSON) (JavaScript Object Notation) is a general format to represent values and objects. It is described as in [RFC 4627](https://tools.ietf.org/html/rfc4627) standard. Initially it was made for JavaScript, but many other languages have libraries to handle it as well. So it's easy to use JSON for data exchange when the client uses JavaScript and the server is written on Ruby/PHP/Java/Whatever. JavaScript provides methods: @@ -41,7 +41,7 @@ let student = { age: 30, isAdmin: false, courses: ['html', 'css', 'js'], - wife: null + spouse: null }; *!* @@ -58,7 +58,7 @@ alert(json); "age": 30, "isAdmin": false, "courses": ["html", "css", "js"], - "wife": null + "spouse": null } */ */!* @@ -66,7 +66,7 @@ alert(json); The method `JSON.stringify(student)` takes the object and converts it into a string. -The resulting `json` string is a called *JSON-encoded* or *serialized* or *stringified* or *marshalled* object. We are ready to send it over the wire or put into a plain data store. +The resulting `json` string is called a *JSON-encoded* or *serialized* or *stringified* or *marshalled* object. We are ready to send it over the wire or put into a plain data store. Please note that a JSON-encoded object has several important differences from the object literal: @@ -76,7 +76,7 @@ Please note that a JSON-encoded object has several important differences from th `JSON.stringify` can be applied to primitives as well. -Natively supported JSON types are: +JSON supports following data types: - Objects `{ ... }` - Arrays `[ ... ]` @@ -100,12 +100,12 @@ alert( JSON.stringify(true) ); // true alert( JSON.stringify([1, 2, 3]) ); // [1,2,3] ``` -JSON is data-only cross-language specification, so some JavaScript-specific object properties are skipped by `JSON.stringify`. +JSON is data-only language-independent specification, so some JavaScript-specific object properties are skipped by `JSON.stringify`. Namely: - Function properties (methods). -- Symbolic properties. +- Symbolic keys and values. - Properties that store `undefined`. ```js run @@ -213,9 +213,9 @@ alert( JSON.stringify(meetup, *!*['title', 'participants']*/!*) ); // {"title":"Conference","participants":[{},{}]} ``` -Here we are probably too strict. The property list is applied to the whole object structure. So participants are empty, because `name` is not in the list. +Here we are probably too strict. The property list is applied to the whole object structure. So the objects in `participants` are empty, because `name` is not in the list. -Let's include every property except `room.occupiedBy` that would cause the circular reference: +Let's include in the list every property except `room.occupiedBy` that would cause the circular reference: ```js run let room = { @@ -244,7 +244,7 @@ Now everything except `occupiedBy` is serialized. But the list of properties is Fortunately, we can use a function instead of an array as the `replacer`. -The function will be called for every `(key, value)` pair and should return the "replaced" value, which will be used instead of the original one. +The function will be called for every `(key, value)` pair and should return the "replaced" value, which will be used instead of the original one. Or `undefined` if the value is to be skipped. In our case, we can return `value` "as is" for everything except `occupiedBy`. To ignore `occupiedBy`, the code below returns `undefined`: @@ -262,7 +262,7 @@ let meetup = { room.occupiedBy = meetup; // room references meetup alert( JSON.stringify(meetup, function replacer(key, value) { - alert(`${key}: ${value}`); // to see what replacer gets + alert(`${key}: ${value}`); return (key == 'occupiedBy') ? undefined : value; })); @@ -276,6 +276,7 @@ name: John name: Alice place: [object Object] number: 23 +occupiedBy: [object Object] */ ``` @@ -283,16 +284,16 @@ Please note that `replacer` function gets every key/value pair including nested The first call is special. It is made using a special "wrapper object": `{"": meetup}`. In other words, the first `(key, value)` pair has an empty key, and the value is the target object as a whole. That's why the first line is `":[object Object]"` in the example above. -The idea is to provide as much power for `replacer` as possible: it has a chance to analyze and replace/skip the whole object if necessary. +The idea is to provide as much power for `replacer` as possible: it has a chance to analyze and replace/skip even the whole object if necessary. -## Formatting: spacer +## Formatting: space -The third argument of `JSON.stringify(value, replacer, spaces)` is the number of spaces to use for pretty formatting. +The third argument of `JSON.stringify(value, replacer, space)` is the number of spaces to use for pretty formatting. -Previously, all stringified objects had no indents and extra spaces. That's fine if we want to send an object over a network. The `spacer` argument is used exclusively for a nice output. +Previously, all stringified objects had no indents and extra spaces. That's fine if we want to send an object over a network. The `space` argument is used exclusively for a nice output. -Here `spacer = 2` tells JavaScript to show nested objects on multiple lines, with indentation of 2 spaces inside an object: +Here `space = 2` tells JavaScript to show nested objects on multiple lines, with indentation of 2 spaces inside an object: ```js run let user = { @@ -328,7 +329,9 @@ alert(JSON.stringify(user, null, 2)); */ ``` -The `spaces` parameter is used solely for logging and nice-output purposes. +The third argument can also be a string. In this case, the string is used for indentation instead of a number of spaces. + +The `space` parameter is used solely for logging and nice-output purposes. ## Custom "toJSON" @@ -393,7 +396,7 @@ alert( JSON.stringify(meetup) ); */ ``` -As we can see, `toJSON` is used both for the direct call `JSON.stringify(room)` and for the nested object. +As we can see, `toJSON` is used both for the direct call `JSON.stringify(room)` and when `room` is nested in another encoded object. ## JSON.parse @@ -425,14 +428,14 @@ alert( numbers[1] ); // 1 Or for nested objects: ```js run -let user = '{ "name": "John", "age": 35, "isAdmin": false, "friends": [0,1,2,3] }'; +let userData = '{ "name": "John", "age": 35, "isAdmin": false, "friends": [0,1,2,3] }'; -user = JSON.parse(user); +let user = JSON.parse(userData); alert( user.friends[1] ); // 1 ``` -The JSON may be as complex as necessary, objects and arrays can include other objects and arrays. But they must obey the format. +The JSON may be as complex as necessary, objects and arrays can include other objects and arrays. But they must obey the same JSON format. Here are typical mistakes in hand-written JSON (sometimes we have to write it for debugging purposes): @@ -448,7 +451,7 @@ let json = `{ Besides, JSON does not support comments. Adding a comment to JSON makes it invalid. -There's another format named [JSON5](http://json5.org/), which allows unquoted keys, comments etc. But this is a standalone library, not in the specification of the language. +There's another format named [JSON5](https://json5.org/), which allows unquoted keys, comments etc. But this is a standalone library, not in the specification of the language. The regular JSON is that strict not because its developers are lazy, but to allow easy, reliable and very fast implementations of the parsing algorithm. @@ -481,7 +484,7 @@ Whoops! An error! The value of `meetup.date` is a string, not a `Date` object. How could `JSON.parse` know that it should transform that string into a `Date`? -Let's pass to `JSON.parse` the reviving function that returns all values "as is", but `date` will become a `Date`: +Let's pass to `JSON.parse` the reviving function as the second argument, that returns all values "as is", but `date` will become a `Date`: ```js run let str = '{"title":"Conference","date":"2017-11-30T12:00:00.000Z"}'; diff --git a/1-js/05-data-types/11-json/json-meetup.svg b/1-js/05-data-types/12-json/json-meetup.svg similarity index 52% rename from 1-js/05-data-types/11-json/json-meetup.svg rename to 1-js/05-data-types/12-json/json-meetup.svg index 5e1929343..f4c44f183 100644 --- a/1-js/05-data-types/11-json/json-meetup.svg +++ b/1-js/05-data-types/12-json/json-meetup.svg @@ -1,3 +1,4 @@ +<<<<<<< HEAD:1-js/05-data-types/11-json/json-meetup.svg <?xml version="1.0" encoding="UTF-8"?> <svg width="188px" height="192px" viewBox="0 0 188 192" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <!-- Generator: sketchtool 55.2 (78181) - https://sketchapp.com --> @@ -32,4 +33,7 @@ <ellipse id="Oval-32" stroke="#F5A623" cx="101" cy="52.5" rx="37" ry="33.5"></ellipse> </g> </g> -</svg> \ No newline at end of file +</svg> +======= +<svg xmlns="http://www.w3.org/2000/svg" width="212" height="192" viewBox="0 0 212 192"><defs><style>@import url(https://fonts.googleapis.com/css?family=Open+Sans:bold,italic,bolditalic%7CPT+Mono);@font-face{font-family:'PT Mono';font-weight:700;font-style:normal;src:local('PT MonoBold'),url(/font/PTMonoBold.woff2) format('woff2'),url(/font/PTMonoBold.woff) format('woff'),url(/font/PTMonoBold.ttf) format('truetype')}</style></defs><g id="combined" fill="none" fill-rule="evenodd" stroke="none" stroke-width="1"><g id="json-meetup.svg"><path id="Rectangle-2" fill="#FBF2EC" stroke="#DBAF88" stroke-width="2" d="M71 1h89v26H71z"/><text id="number:-23" fill="#AF6E24" font-family="PTMono-Regular, PT Mono" font-size="12" font-weight="normal"><tspan x="84" y="17">number: 23</tspan></text><path id="Rectangle-3" fill="#FBF2EC" stroke="#DBAF88" stroke-width="2" d="M37 80h152v26H37z"/><text id="title:-"Conference"" fill="#AF6E24" font-family="PTMono-Regular, PT Mono" font-size="12" font-weight="normal"><tspan x="50" y="96">title: "Conference"</tspan></text><path id="Rectangle-3-Copy" fill="#FBF2EC" stroke="#DBAF88" stroke-width="2" d="M69 157h89v26H69z"/><text id="..." fill="#AF6E24" font-family="PTMono-Regular, PT Mono" font-size="12" font-weight="normal"><tspan x="103" y="173">...</tspan></text><text id="place" fill="#AF6E24" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="139" y="56">place</tspan></text><path id="Line" fill="#C06334" fill-rule="nonzero" d="M107.5 34.5v18h6l-7 14-7-14h6v-18h2z"/><path id="Line-Copy" fill="#C06334" fill-rule="nonzero" d="M119.5 35.5l7 14h-6v18h-2v-18h-6l7-14z"/><text id="occupiedBy" fill="#AF6E24" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="11" y="56">occupiedBy</tspan></text><path id="Line-Copy-2" fill="#C06334" fill-rule="nonzero" d="M114.5 113.5v18h6l-7 14-7-14h6v-18h2z"/><text id="participants" fill="#AF6E24" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="2" y="135">participants</tspan></text><ellipse id="Oval-32" cx="113" cy="52.5" stroke="#478964" rx="32.582" ry="29.5"/></g></g></svg> +>>>>>>> 540d753e90789205fc6e75c502f68382c87dea9b:1-js/05-data-types/12-json/json-meetup.svg diff --git a/1-js/06-advanced-functions/01-recursion/01-sum-to/solution.md b/1-js/06-advanced-functions/01-recursion/01-sum-to/solution.md index 237b9ef9e..11667f940 100644 --- a/1-js/06-advanced-functions/01-recursion/01-sum-to/solution.md +++ b/1-js/06-advanced-functions/01-recursion/01-sum-to/solution.md @@ -37,4 +37,4 @@ P.S. Naturally, the formula is the fastest solution. It uses only 3 operations f The loop variant is the second in terms of speed. In both the recursive and the loop variant we sum the same numbers. But the recursion involves nested calls and execution stack management. That also takes resources, so it's slower. -P.P.S. The standard describes a "tail call" optimization: if the recursive call is the very last one in the function (like in `sumTo` above), then the outer function will not need to resume the execution and we don't need to remember its execution context. In that case `sumTo(100000)` is countable. But if your JavaScript engine does not support it, there will be an error: maximum stack size exceeded, because there's usually a limitation on the total stack size. +P.P.S. Some engines support the "tail call" optimization: if a recursive call is the very last one in the function, with no other calculations performed, then the outer function will not need to resume the execution, so the engine doesn't need to remember its execution context. That removes the burden on memory. But if the JavaScript engine does not support tail call optimization (most of them don't), there will be an error: maximum stack size exceeded, because there's usually a limitation on the total stack size. diff --git a/1-js/06-advanced-functions/01-recursion/02-factorial/solution.md b/1-js/06-advanced-functions/01-recursion/02-factorial/solution.md index 59040a2b7..09e511db5 100644 --- a/1-js/06-advanced-functions/01-recursion/02-factorial/solution.md +++ b/1-js/06-advanced-functions/01-recursion/02-factorial/solution.md @@ -1,4 +1,4 @@ -By definition, a factorial is `n!` can be written as `n * (n-1)!`. +By definition, a factorial `n!` can be written as `n * (n-1)!`. In other words, the result of `factorial(n)` can be calculated as `n` multiplied by the result of `factorial(n-1)`. And the call for `n-1` can recursively descend lower, and lower, till `1`. diff --git a/1-js/06-advanced-functions/01-recursion/04-output-single-linked-list/solution.md b/1-js/06-advanced-functions/01-recursion/04-output-single-linked-list/solution.md index 4e9de1469..cfcbffea5 100644 --- a/1-js/06-advanced-functions/01-recursion/04-output-single-linked-list/solution.md +++ b/1-js/06-advanced-functions/01-recursion/04-output-single-linked-list/solution.md @@ -43,7 +43,7 @@ function printList(list) { } ``` -...But that would be unwise. In the future we may need to extend a function, do something else with the list. If we change `list`, then we loose such ability. +...But that would be unwise. In the future we may need to extend a function, do something else with the list. If we change `list`, then we lose such ability. Talking about good variable names, `list` here is the list itself. The first element of it. And it should remain like that. That's clear and reliable. diff --git a/1-js/06-advanced-functions/01-recursion/05-output-single-linked-list-reverse/solution.md b/1-js/06-advanced-functions/01-recursion/05-output-single-linked-list-reverse/solution.md index a9ba0baf5..0eb76ea1c 100644 --- a/1-js/06-advanced-functions/01-recursion/05-output-single-linked-list-reverse/solution.md +++ b/1-js/06-advanced-functions/01-recursion/05-output-single-linked-list-reverse/solution.md @@ -33,11 +33,11 @@ printReverseList(list); # Using a loop -The loop variant is also a little bit more complicated then the direct output. +The loop variant is also a little bit more complicated than the direct output. There is no way to get the last value in our `list`. We also can't "go back". -So what we can do is to first go through the items in the direct order and rememeber them in an array, and then output what we remembered in the reverse order: +So what we can do is to first go through the items in the direct order and remember them in an array, and then output what we remembered in the reverse order: ```js run let list = { diff --git a/1-js/06-advanced-functions/01-recursion/article.md b/1-js/06-advanced-functions/01-recursion/article.md index d78142190..5ae894474 100644 --- a/1-js/06-advanced-functions/01-recursion/article.md +++ b/1-js/06-advanced-functions/01-recursion/article.md @@ -61,7 +61,7 @@ When `pow(x, n)` is called, the execution splits into two branches: if n==1 = x / pow(x, n) = - \ + \ else = x * pow(x, n - 1) ``` @@ -85,7 +85,7 @@ So, the recursion reduces a function call to a simpler one, and then -- to even ````smart header="Recursion is usually shorter" A recursive solution is usually shorter than an iterative one. -Here we can rewrite the same using the ternary `?` operator instead of `if` to make `pow(x, n)` more terse and still very readable: +Here we can rewrite the same using the conditional operator `?` instead of `if` to make `pow(x, n)` more terse and still very readable: ```js run function pow(x, n) { @@ -96,15 +96,15 @@ function pow(x, n) { The maximal number of nested calls (including the first one) is called *recursion depth*. In our case, it will be exactly `n`. -The maximal recursion depth is limited by JavaScript engine. We can make sure about 10000, some engines allow more, but 100000 is probably out of limit for the majority of them. There are automatic optimizations that help alleviate this ("tail calls optimizations"), but they are not yet supported everywhere and work only in simple cases. +The maximal recursion depth is limited by JavaScript engine. We can rely on it being 10000, some engines allow more, but 100000 is probably out of limit for the majority of them. There are automatic optimizations that help alleviate this ("tail calls optimizations"), but they are not yet supported everywhere and work only in simple cases. That limits the application of recursion, but it still remains very wide. There are many tasks where recursive way of thinking gives simpler code, easier to maintain. -## The execution stack +## The execution context and stack Now let's examine how recursive calls work. For that we'll look under the hood of functions. -The information about a function run is stored in its *execution context*. +The information about the process of execution of a running function is stored in its *execution context*. The [execution context](https://tc39.github.io/ecma262/#sec-execution-contexts) is an internal data structure that contains details about the execution of a function: where the control flow is now, the current variables, the value of `this` (we don't use it here) and few other internal details. @@ -132,7 +132,7 @@ We can sketch it as: </li> </ul> -That's when the function starts to execute. The condition `n == 1` is false, so the flow continues into the second branch of `if`: +That's when the function starts to execute. The condition `n == 1` is falsy, so the flow continues into the second branch of `if`: ```js run function pow(x, n) { @@ -185,7 +185,13 @@ Here's the context stack when we entered the subcall `pow(2, 2)`: The new current execution context is on top (and bold), and previous remembered contexts are below. -When we finish the subcall -- it is easy to resume the previous context, because it keeps both variables and the exact place of the code where it stopped. Here in the picture we use the word "line", but of course it's more precise. +When we finish the subcall -- it is easy to resume the previous context, because it keeps both variables and the exact place of the code where it stopped. + +```smart +Here in the picture we use the word "line", as in our example there's only one subcall in line, but generally a single line of code may contain multiple subcalls, like `pow(…) + pow(…) + somethingElse(…)`. + +So it would be more precise to say that the execution resumes "immediately after the subcall". +``` ### pow(2, 1) @@ -279,7 +285,7 @@ The iterative `pow` uses a single context changing `i` and `result` in the proce **Any recursion can be rewritten as a loop. The loop variant usually can be made more effective.** -...But sometimes the rewrite is non-trivial, especially when function uses different recursive subcalls depending on conditions and merges their results or when the branching is more intricate. And the optimization may be unneeded and totally not worth the efforts. +...But sometimes the rewrite is non-trivial, especially when a function uses different recursive subcalls depending on conditions and merges their results or when the branching is more intricate. And the optimization may be unneeded and totally not worth the efforts. Recursion can give a shorter code, easier to understand and support. Optimizations are not required in every place, mostly we need a good code, that's why it's used. @@ -296,7 +302,7 @@ let company = { salary: 1000 }, { name: 'Alice', - salary: 600 + salary: 1600 }], development: { @@ -319,32 +325,32 @@ let company = { In other words, a company has departments. - A department may have an array of staff. For instance, `sales` department has 2 employees: John and Alice. -- Or a department may split into subdepartments, like `development` has two branches: `sites` and `internals`. Each of them has the own staff. +- Or a department may split into subdepartments, like `development` has two branches: `sites` and `internals`. Each of them has their own staff. - It is also possible that when a subdepartment grows, it divides into subsubdepartments (or teams). For instance, the `sites` department in the future may be split into teams for `siteA` and `siteB`. And they, potentially, can split even more. That's not on the picture, just something to have in mind. Now let's say we want a function to get the sum of all salaries. How can we do that? -An iterative approach is not easy, because the structure is not simple. The first idea may be to make a `for` loop over `company` with nested subloop over 1st level departments. But then we need more nested subloops to iterate over the staff in 2nd level departments like `sites`. ...And then another subloop inside those for 3rd level departments that might appear in the future? Should we stop on level 3 or make 4 levels of loops? If we put 3-4 nested subloops in the code to traverse a single object, it becomes rather ugly. +An iterative approach is not easy, because the structure is not simple. The first idea may be to make a `for` loop over `company` with nested subloop over 1st level departments. But then we need more nested subloops to iterate over the staff in 2nd level departments like `sites`... And then another subloop inside those for 3rd level departments that might appear in the future? If we put 3-4 nested subloops in the code to traverse a single object, it becomes rather ugly. Let's try recursion. As we can see, when our function gets a department to sum, there are two possible cases: -1. Either it's a "simple" department with an *array of people* -- then we can sum the salaries in a simple loop. -2. Or it's *an object with `N` subdepartments* -- then we can make `N` recursive calls to get the sum for each of the subdeps and combine the results. +1. Either it's a "simple" department with an *array* of people -- then we can sum the salaries in a simple loop. +2. Or it's *an object* with `N` subdepartments -- then we can make `N` recursive calls to get the sum for each of the subdeps and combine the results. -The (1) is the base of recursion, the trivial case. +The 1st case is the base of recursion, the trivial case, when we get an array. -The (2) is the recursive step. A complex task is split into subtasks for smaller departments. They may in turn split again, but sooner or later the split will finish at (1). +The 2nd case when we get an object is the recursive step. A complex task is split into subtasks for smaller departments. They may in turn split again, but sooner or later the split will finish at (1). The algorithm is probably even easier to read from the code: ```js run let company = { // the same object, compressed for brevity - sales: [{name: 'John', salary: 1000}, {name: 'Alice', salary: 600 }], + sales: [{name: 'John', salary: 1000}, {name: 'Alice', salary: 1600 }], development: { sites: [{name: 'Peter', salary: 2000}, {name: 'Alex', salary: 1800 }], internals: [{name: 'Jack', salary: 1300}] @@ -366,7 +372,7 @@ function sumSalaries(department) { } */!* -alert(sumSalaries(company)); // 6700 +alert(sumSalaries(company)); // 7700 ``` The code is short and easy to understand (hopefully?). That's the power of recursion. It also works for any level of subdepartment nesting. @@ -416,7 +422,7 @@ let arr = [obj1, obj2, obj3]; ...But there's a problem with arrays. The "delete element" and "insert element" operations are expensive. For instance, `arr.unshift(obj)` operation has to renumber all elements to make room for a new `obj`, and if the array is big, it takes time. Same with `arr.shift()`. -The only structural modifications that do not require mass-renumbering are those that operate with the end of array: `arr.push/pop`. So an array can be quite slow for big queues. +The only structural modifications that do not require mass-renumbering are those that operate with the end of array: `arr.push/pop`. So an array can be quite slow for big queues, when we have to work with the beginning. Alternatively, if we really need fast insertion/deletion, we can choose another data structure called a [linked list](https://en.wikipedia.org/wiki/Linked_list). @@ -453,9 +459,10 @@ let list = { value: 1 }; list.next = { value: 2 }; list.next.next = { value: 3 }; list.next.next.next = { value: 4 }; +list.next.next.next.next = null; ``` -Here we can even more clearer see that there are multiple objects, each one has the `value` and `next` pointing to the neighbour. The `list` variable is the first object in the chain, so following `next` pointers from it we can reach any element. +Here we can even more clearly see that there are multiple objects, each one has the `value` and `next` pointing to the neighbour. The `list` variable is the first object in the chain, so following `next` pointers from it we can reach any element. The list can be easily split into multiple parts and later joined back: @@ -506,14 +513,17 @@ Naturally, lists are not always better than arrays. Otherwise everyone would use The main drawback is that we can't easily access an element by its number. In an array that's easy: `arr[n]` is a direct reference. But in the list we need to start from the first item and go `next` `N` times to get the Nth element. -...But we don't always need such operations. For instance, when we need a queue or even a [deque](https://en.wikipedia.org/wiki/Double-ended_queue) -- the ordered structure that must allow very fast adding/removing elements from both ends. +...But we don't always need such operations. For instance, when we need a queue or even a [deque](https://en.wikipedia.org/wiki/Double-ended_queue) -- the ordered structure that must allow very fast adding/removing elements from both ends, but access to its middle is not needed. -Sometimes it's worth to add another variable named `tail` to track the last element of the list (and update it when adding/removing elements from the end). For large sets of elements the speed difference versus arrays is huge. +Lists can be enhanced: +- We can add property `prev` in addition to `next` to reference the previous element, to move back easily. +- We can also add a variable named `tail` referencing the last element of the list (and update it when adding/removing elements from the end). +- ...The data structure may vary according to our needs. ## Summary Terms: -- *Recursion* is a programming term that means a "self-calling" function. Such functions can be used to solve certain tasks in elegant ways. +- *Recursion* is a programming term that means calling a function from itself. Recursive functions can be used to solve tasks in elegant ways. When a function calls itself, that's called a *recursion step*. The *basis* of recursion is function arguments that make the task so simple that the function does not make further calls. @@ -525,7 +535,7 @@ Terms: list = { value, next -> list } ``` - Trees like HTML elements tree or the department tree from this chapter are also naturally recursive: they branch and every branch can have other branches. + Trees like HTML elements tree or the department tree from this chapter are also naturally recursive: they have branches and every branch can have other branches. Recursive functions can be used to walk them as we've seen in the `sumSalary` example. diff --git a/1-js/06-advanced-functions/01-recursion/recursive-salaries.svg b/1-js/06-advanced-functions/01-recursion/recursive-salaries.svg index 61f32dbc0..34a832cc0 100644 --- a/1-js/06-advanced-functions/01-recursion/recursive-salaries.svg +++ b/1-js/06-advanced-functions/01-recursion/recursive-salaries.svg @@ -1 +1,5 @@ -<svg xmlns="http://www.w3.org/2000/svg" width="293" height="437" viewBox="0 0 293 437"><defs><style>@import url(https://fonts.googleapis.com/css?family=Open+Sans:bold,italic,bolditalic%7CPT+Mono);@font-face{font-family:'PT Mono';font-weight:700;font-style:normal;src:local('PT MonoBold'),url(/font/PTMonoBold.woff2) format('woff2'),url(/font/PTMonoBold.woff) format('woff'),url(/font/PTMonoBold.ttf) format('truetype')}</style></defs><g id="combined" fill="none" fill-rule="evenodd" stroke="none" stroke-width="1"><g id="recursive-salaries.svg"><g id="{" fill-rule="nonzero" transform="translate(130.107 17.102)"><path fill="#7E7C7B" d="M5.024 12.701H4.52c-.88 0-1.534-.206-1.962-.618-.429-.413-.643-1.038-.643-1.877V7.854a2.18 2.18 0 00-.075-.598.978.978 0 00-.263-.444 1.224 1.224 0 00-.5-.277 2.706 2.706 0 00-.782-.096H0v-.95h.294c.333 0 .604-.027.813-.082.21-.054.374-.138.493-.25a.88.88 0 00.246-.427c.045-.173.068-.378.068-.615v-1.62c0-.383.046-.728.137-1.036.09-.307.24-.57.448-.786.207-.216.476-.382.806-.499C3.635.058 4.04 0 4.52 0h.505v.957h-.403c-1.057 0-1.586.513-1.586 1.538v1.593c0 1.112-.48 1.738-1.442 1.88.97.095 1.456.72 1.456 1.873v2.338c0 1.043.524 1.565 1.572 1.565h.403v.957z"/><path id="sales" fill="#181717" d="M20.815 25.025a1.634 1.634 0 01-.458 1.16 2.084 2.084 0 01-.492.378 3.272 3.272 0 01-.598.26c-.212.069-.43.119-.653.15a4.637 4.637 0 01-.656.048 12.3 12.3 0 01-1.282-.061 8.646 8.646 0 01-1.145-.198v-1.094c.401.114.8.2 1.197.26.396.059.79.089 1.182.089.57 0 .991-.078 1.265-.233.273-.155.41-.376.41-.663a.812.812 0 00-.065-.331.753.753 0 00-.236-.28 2.254 2.254 0 00-.53-.278 11.81 11.81 0 00-.98-.328 6.963 6.963 0 01-.858-.31 2.877 2.877 0 01-.68-.414 1.776 1.776 0 01-.452-.56 1.649 1.649 0 01-.164-.76 1.744 1.744 0 01.588-1.264c.214-.196.504-.36.868-.49.365-.129.82-.194 1.367-.194.27 0 .568.015.896.045.328.03.67.08 1.025.153v1.06a9.803 9.803 0 00-1.063-.202 6.926 6.926 0 00-.871-.065c-.297 0-.546.023-.749.069a1.553 1.553 0 00-.492.188.734.734 0 00-.27.28.748.748 0 00-.082.345c0 .123.024.235.072.335.048.1.136.197.266.29.13.094.311.187.544.28.232.094.535.196.909.305.406.119.747.243 1.025.373.278.13.504.274.677.434.173.16.297.34.373.54.075.2.112.428.112.683zm6.672 1.873l-.027-.922c-.374.369-.753.635-1.138.8-.385.163-.79.245-1.214.245-.392 0-.726-.05-1.004-.15a1.883 1.883 0 01-.687-.413 1.603 1.603 0 01-.397-.62 2.289 2.289 0 01-.126-.772c0-.688.256-1.227.769-1.616.512-.39 1.27-.585 2.273-.585h1.421v-.601c0-.406-.13-.73-.39-.974-.259-.244-.655-.366-1.189-.366-.387 0-.769.043-1.145.13-.376.086-.764.21-1.165.369V20.35a7.36 7.36 0 011.087-.301 7.6 7.6 0 01.642-.1c.224-.024.45-.037.677-.037.415 0 .788.046 1.121.137.333.091.614.23.844.417.23.187.407.421.53.704.123.282.185.615.185.998v4.73h-1.067zm-.13-3.124h-1.51c-.297 0-.552.03-.766.09-.214.059-.39.143-.526.252-.137.11-.238.24-.305.393-.066.153-.099.325-.099.516 0 .133.02.259.062.38.04.12.107.228.198.321.091.093.21.168.356.222.145.055.323.082.533.082.273 0 .587-.083.94-.25.353-.166.725-.429 1.117-.789v-1.217zm5.756-5.557h-2.03v-.978h3.233v8.668h2.044v.991h-5.503v-.99h2.256v-7.691zm11.157 4.887c0 .17-.003.31-.007.424a6.37 6.37 0 01-.02.322h-4.82c0 .701.196 1.24.588 1.616.392.376.957.564 1.695.564.2 0 .401-.008.602-.024.2-.016.394-.037.58-.065.188-.027.366-.058.537-.092.171-.034.33-.072.475-.113v.978a9.161 9.161 0 01-2.365.308c-.588 0-1.094-.08-1.517-.24a2.597 2.597 0 01-1.043-.694 2.857 2.857 0 01-.601-1.114 5.273 5.273 0 01-.195-1.494c0-.483.07-.94.208-1.37a3.44 3.44 0 01.609-1.135c.266-.326.593-.584.98-.776a2.94 2.94 0 011.32-.287c.478 0 .902.075 1.271.226.37.15.68.363.933.639s.445.61.575 1.005c.13.394.195.835.195 1.322zm-1.238-.17a2.593 2.593 0 00-.089-.838 1.763 1.763 0 00-.338-.653 1.576 1.576 0 00-.57-.427 1.916 1.916 0 00-.794-.154c-.26 0-.497.05-.71.15-.215.101-.4.242-.554.425a2.19 2.19 0 00-.376.656 3.026 3.026 0 00-.178.84h3.61zm8.572 2.091a1.634 1.634 0 01-.458 1.16 2.084 2.084 0 01-.492.378 3.272 3.272 0 01-.598.26c-.212.069-.43.119-.653.15a4.637 4.637 0 01-.656.048 12.3 12.3 0 01-1.282-.061 8.646 8.646 0 01-1.145-.198v-1.094c.401.114.8.2 1.197.26.396.059.79.089 1.182.089.57 0 .991-.078 1.265-.233.273-.155.41-.376.41-.663a.812.812 0 00-.065-.331.753.753 0 00-.236-.28 2.254 2.254 0 00-.53-.278 11.81 11.81 0 00-.98-.328 6.963 6.963 0 01-.858-.31 2.877 2.877 0 01-.68-.414 1.776 1.776 0 01-.452-.56 1.649 1.649 0 01-.164-.76 1.744 1.744 0 01.588-1.264c.214-.196.504-.36.868-.49.365-.129.82-.194 1.367-.194.27 0 .568.015.896.045.328.03.67.08 1.025.153v1.06a9.803 9.803 0 00-1.063-.202 6.926 6.926 0 00-.871-.065c-.296 0-.546.023-.749.069a1.553 1.553 0 00-.492.188.734.734 0 00-.27.28.748.748 0 00-.082.345c0 .123.024.235.072.335.048.1.136.197.266.29.13.094.311.187.544.28.232.094.535.196.909.305.406.119.747.243 1.025.373.278.13.504.274.677.434.173.16.298.34.373.54.075.2.112.428.112.683z"/><path id=":[{" fill="#7E7C7B" d="M56.622 19.912c.141 0 .276.029.403.086a1.107 1.107 0 01.564.564.978.978 0 01.086.403.971.971 0 01-.086.407 1.12 1.12 0 01-.229.331 1.058 1.058 0 01-.738.308c-.146 0-.281-.028-.407-.082a1.07 1.07 0 01-.557-.557 1.006 1.006 0 01-.082-.407 1.058 1.058 0 01.308-.738 1.12 1.12 0 01.331-.23.971.971 0 01.407-.085zm0 5.01c.141 0 .276.03.403.086a1.107 1.107 0 01.564.564.978.978 0 01.086.404.971.971 0 01-.086.406 1.12 1.12 0 01-.229.332 1.058 1.058 0 01-.738.307c-.146 0-.281-.027-.407-.082a1.07 1.07 0 01-.557-.557 1.006 1.006 0 01-.082-.406 1.058 1.058 0 01.308-.738 1.12 1.12 0 01.331-.23.971.971 0 01.407-.085zm17.274 4.78h-3.37V17h3.37v.957h-2.235v10.787h2.235v.957zm8.101 0h-.506c-.88 0-1.533-.207-1.962-.62-.428-.412-.642-1.037-.642-1.876v-2.352a2.18 2.18 0 00-.075-.598.978.978 0 00-.264-.444 1.224 1.224 0 00-.499-.277 2.706 2.706 0 00-.782-.096h-.294v-.95h.294c.332 0 .603-.027.813-.082.21-.054.374-.138.492-.25a.88.88 0 00.246-.427c.046-.173.069-.378.069-.615v-1.62c0-.383.045-.728.136-1.036.092-.307.24-.57.448-.786.208-.216.476-.382.807-.499.33-.116.735-.174 1.213-.174h.506v.957h-.403c-1.058 0-1.586.513-1.586 1.538v1.593c0 1.112-.481 1.738-1.443 1.88.971.095 1.456.72 1.456 1.873v2.338c0 1.043.525 1.565 1.573 1.565h.403v.957z"/><path id="name" fill="#181717" d="M30.775 37.035h1.06l.048 1.108c.2-.237.394-.435.58-.592.188-.157.371-.283.551-.38a2.06 2.06 0 01.55-.2c.187-.04.381-.059.582-.059.706 0 1.24.209 1.603.626.362.417.543 1.044.543 1.883v4.477h-1.19v-4.381c0-.538-.1-.936-.3-1.193-.2-.258-.5-.386-.896-.386-.146 0-.288.021-.427.064a1.557 1.557 0 00-.434.226c-.15.107-.313.252-.489.434-.175.182-.372.41-.591.684v4.552h-1.19v-6.863zm12.107 6.863l-.028-.922c-.373.369-.753.635-1.138.8-.385.163-.79.245-1.213.245-.392 0-.727-.05-1.005-.15a1.883 1.883 0 01-.687-.413 1.603 1.603 0 01-.396-.62 2.289 2.289 0 01-.127-.772c0-.688.256-1.227.77-1.616.512-.39 1.27-.585 2.272-.585h1.422v-.601c0-.406-.13-.73-.39-.974s-.656-.366-1.19-.366c-.387 0-.768.043-1.144.13-.376.086-.765.21-1.166.369V37.35a7.36 7.36 0 011.087-.301 7.6 7.6 0 01.643-.1c.223-.024.449-.037.677-.037.414 0 .788.046 1.12.137.333.091.615.23.845.417.23.187.407.421.53.704.123.282.184.615.184.998v4.73h-1.066zm-.13-3.124h-1.51c-.297 0-.552.03-.766.09-.215.059-.39.143-.527.252-.137.11-.238.24-.304.393-.066.153-.1.325-.1.516 0 .133.021.259.062.38.041.12.108.228.199.321.09.093.21.168.355.222.146.055.324.082.533.082.274 0 .587-.083.94-.25.353-.166.726-.429 1.118-.789v-1.217zm8.312 3.124V38.97c0-.214-.008-.39-.023-.527a1.2 1.2 0 00-.076-.324.348.348 0 00-.13-.168.43.43 0 00-.448.034c-.077.055-.16.144-.249.267a4.216 4.216 0 00-.294.489c-.107.203-.233.452-.38.748v4.41h-1.086v-4.8c0-.25-.008-.453-.024-.608a1.42 1.42 0 00-.075-.362.34.34 0 00-.133-.178.431.431 0 00-.43.02.988.988 0 00-.244.247c-.089.118-.188.28-.297.485-.11.205-.24.467-.39.786v4.41h-1.094v-6.864h.91l.054 1.306c.119-.26.234-.481.345-.663.112-.183.227-.33.346-.441.118-.112.245-.194.38-.246.134-.053.283-.079.447-.079.369 0 .65.12.84.362.192.242.288.616.288 1.122.11-.237.216-.448.321-.633a2.31 2.31 0 01.338-.465c.121-.125.255-.22.4-.287.146-.066.315-.099.506-.099.862 0 1.292.663 1.292 1.99v4.996h-1.094zm8.6-3.794c0 .17-.002.31-.007.424a6.37 6.37 0 01-.02.322h-4.82c0 .701.196 1.24.588 1.616.392.376.957.564 1.696.564.2 0 .4-.008.601-.024.2-.016.394-.037.581-.065.187-.027.366-.058.537-.092.17-.034.33-.072.475-.113v.978a9.161 9.161 0 01-2.365.308c-.588 0-1.094-.08-1.518-.24a2.597 2.597 0 01-1.042-.694 2.857 2.857 0 01-.602-1.114 5.273 5.273 0 01-.195-1.494c0-.483.07-.94.209-1.37a3.44 3.44 0 01.608-1.135c.267-.326.594-.584.981-.776a2.94 2.94 0 011.32-.287c.478 0 .902.075 1.27.226.37.15.681.363.934.639s.444.61.574 1.005c.13.394.195.835.195 1.322zm-1.237-.17a2.593 2.593 0 00-.09-.838 1.763 1.763 0 00-.337-.653 1.576 1.576 0 00-.571-.427 1.916 1.916 0 00-.793-.154c-.26 0-.497.05-.711.15-.214.101-.399.242-.554.425a2.19 2.19 0 00-.376.656 3.026 3.026 0 00-.178.84h3.61z"/><path id=":" fill="#7E7C7B" d="M64.32 36.912c.14 0 .275.029.403.086a1.107 1.107 0 01.564.564.978.978 0 01.085.403.971.971 0 01-.085.407 1.12 1.12 0 01-.23.331 1.058 1.058 0 01-.738.308c-.145 0-.281-.028-.406-.082a1.07 1.07 0 01-.558-.557 1.006 1.006 0 01-.082-.407 1.058 1.058 0 01.308-.738 1.12 1.12 0 01.332-.23.971.971 0 01.406-.085zm0 5.01c.14 0 .275.03.403.086a1.107 1.107 0 01.564.564.978.978 0 01.085.404.971.971 0 01-.085.406 1.12 1.12 0 01-.23.332 1.058 1.058 0 01-.738.307c-.145 0-.281-.027-.406-.082a1.07 1.07 0 01-.558-.557 1.006 1.006 0 01-.082-.406 1.058 1.058 0 01.308-.738 1.12 1.12 0 01.332-.23.971.971 0 01.406-.085z"/><path id="'John'" fill="#478964" d="M80.5 34.24l-.198 3.205h-1.176l-.191-3.206H80.5zm9.058.724v6.207c0 .383-.057.746-.171 1.09a2.47 2.47 0 01-.52.9 2.49 2.49 0 01-.875.608c-.35.15-.763.225-1.237.225-.178 0-.359-.012-.544-.037a4.8 4.8 0 01-.533-.103 3.619 3.619 0 01-.482-.157 2.214 2.214 0 01-.39-.202v-1.224c.283.206.597.367.94.486.345.118.685.178 1.023.178.496 0 .88-.152 1.148-.455.269-.303.403-.74.403-1.31v-5.153h-3.397v-1.053h4.635zm8.77 5.448a4.55 4.55 0 01-.225 1.466c-.15.445-.367.825-.65 1.142a2.913 2.913 0 01-1.032.738 3.447 3.447 0 01-1.381.263c-.492 0-.933-.076-1.323-.229a2.617 2.617 0 01-.99-.673 2.98 2.98 0 01-.623-1.1c-.144-.438-.215-.942-.215-1.511 0-.533.075-1.02.225-1.46.15-.44.367-.818.65-1.134a2.913 2.913 0 011.032-.739 3.447 3.447 0 011.38-.263c.493 0 .934.076 1.324.23.39.152.72.375.99.669.272.294.48.66.623 1.097.143.438.215.939.215 1.504zm-1.217.055c0-.424-.046-.794-.14-1.111a2.237 2.237 0 00-.4-.793 1.65 1.65 0 00-.632-.479 2.077 2.077 0 00-.83-.16c-.356 0-.66.07-.913.208-.253.14-.46.325-.622.557a2.4 2.4 0 00-.356.81 4.06 4.06 0 00-.113.968c0 .424.047.795.14 1.114.094.32.227.585.4.796.174.212.383.372.63.479.246.107.524.16.833.16.356 0 .66-.069.913-.208.253-.139.46-.325.622-.557a2.4 2.4 0 00.356-.81 4.09 4.09 0 00.112-.974zm8.456 3.431h-1.19v-4.381c0-.529-.098-.924-.296-1.186-.199-.262-.482-.394-.852-.394-.159 0-.308.022-.447.065a1.557 1.557 0 00-.434.226 3.73 3.73 0 00-.493.434c-.177.182-.382.41-.615.684v4.552h-1.19V34.24h1.19v2.796l-.04 1.08c.186-.223.37-.411.55-.564.18-.152.36-.277.54-.372.18-.096.363-.164.55-.205.187-.041.38-.062.58-.062.684 0 1.213.209 1.587.626.374.417.56 1.044.56 1.883v4.477zm2.181-6.863h1.06l.047 1.108c.201-.237.395-.435.582-.592.186-.157.37-.283.55-.38a2.06 2.06 0 01.55-.2c.187-.04.38-.059.581-.059.707 0 1.24.209 1.603.626.362.417.544 1.044.544 1.883v4.477h-1.19v-4.381c0-.538-.1-.936-.3-1.193-.201-.258-.5-.386-.896-.386-.146 0-.288.021-.427.064a1.557 1.557 0 00-.434.226c-.15.107-.314.252-.49.434-.175.182-.372.41-.59.684v4.552h-1.19v-6.863zm11.238-2.796l-.198 3.206h-1.176l-.191-3.206h1.565z"/><path id="," fill="#7E7C7B" d="M123.676 45.3c.232.009.458-.012.677-.062a2.02 2.02 0 00.577-.222c.167-.098.3-.22.4-.366a.86.86 0 00.15-.499.95.95 0 00-.099-.464 2.238 2.238 0 00-.222-.329 2.438 2.438 0 01-.222-.32.91.91 0 01-.1-.459.915.915 0 01.223-.588.857.857 0 01.287-.212 1.12 1.12 0 01.875.017c.148.066.278.168.39.305.111.136.2.307.266.512.066.205.1.447.1.725 0 .378-.07.742-.209 1.09a2.657 2.657 0 01-.622.926c-.276.27-.62.484-1.032.643-.413.16-.892.24-1.44.24V45.3z"/><path id="salary" fill="#181717" d="M36.21 59.025a1.634 1.634 0 01-.458 1.16 2.084 2.084 0 01-.492.378 3.272 3.272 0 01-.598.26c-.212.069-.43.119-.653.15a4.637 4.637 0 01-.656.048 12.3 12.3 0 01-1.282-.061 8.646 8.646 0 01-1.145-.198v-1.094c.4.114.8.2 1.196.26.397.059.79.089 1.183.089.57 0 .99-.078 1.264-.233.274-.155.41-.376.41-.663a.812.812 0 00-.064-.331.753.753 0 00-.236-.28 2.254 2.254 0 00-.53-.278 11.81 11.81 0 00-.981-.328 6.963 6.963 0 01-.858-.31 2.877 2.877 0 01-.68-.414 1.776 1.776 0 01-.451-.56 1.649 1.649 0 01-.164-.76 1.744 1.744 0 01.588-1.264c.214-.196.503-.36.868-.49.364-.129.82-.194 1.367-.194.269 0 .567.015.895.045.329.03.67.08 1.026.153v1.06a9.803 9.803 0 00-1.063-.202 6.926 6.926 0 00-.872-.065c-.296 0-.546.023-.748.069a1.553 1.553 0 00-.493.188.734.734 0 00-.27.28.748.748 0 00-.082.345c0 .123.024.235.072.335.048.1.137.197.267.29.13.094.31.187.543.28.233.094.536.196.91.305.405.119.747.243 1.025.373.278.13.503.274.677.434.173.16.297.34.372.54.075.2.113.428.113.683zm6.672 1.873l-.028-.922c-.373.369-.753.635-1.138.8-.385.163-.79.245-1.213.245-.392 0-.727-.05-1.005-.15a1.883 1.883 0 01-.687-.413 1.603 1.603 0 01-.396-.62 2.289 2.289 0 01-.127-.772c0-.688.256-1.227.77-1.616.512-.39 1.27-.585 2.272-.585h1.422v-.601c0-.406-.13-.73-.39-.974s-.656-.366-1.19-.366c-.387 0-.768.043-1.144.13-.376.086-.765.21-1.166.369V54.35a7.36 7.36 0 011.087-.301 7.6 7.6 0 01.643-.1c.223-.024.449-.037.677-.037.414 0 .788.046 1.12.137.333.091.615.23.845.417.23.187.407.421.53.704.123.282.184.615.184.998v4.73h-1.066zm-.13-3.124h-1.51c-.297 0-.552.03-.766.09-.215.059-.39.143-.527.252-.137.11-.238.24-.304.393-.066.153-.1.325-.1.516 0 .133.021.259.062.38.041.12.108.228.199.321.09.093.21.168.355.222.146.055.324.082.533.082.274 0 .587-.083.94-.25.353-.166.726-.429 1.118-.789v-1.217zm5.756-5.557h-2.03v-.978h3.233v8.668h2.044v.991h-5.503v-.99h2.256v-7.691zm9.768 8.681l-.027-.922c-.374.369-.753.635-1.138.8-.385.163-.79.245-1.214.245-.391 0-.726-.05-1.004-.15a1.883 1.883 0 01-.687-.413 1.603 1.603 0 01-.397-.62 2.289 2.289 0 01-.126-.772c0-.688.256-1.227.769-1.616.512-.39 1.27-.585 2.273-.585h1.421v-.601c0-.406-.13-.73-.39-.974-.259-.244-.655-.366-1.189-.366-.387 0-.769.043-1.145.13-.376.086-.764.21-1.165.369V54.35a7.36 7.36 0 011.087-.301 7.6 7.6 0 01.642-.1c.224-.024.45-.037.677-.037.415 0 .788.046 1.121.137.333.091.614.23.844.417.23.187.407.421.53.704.123.282.185.615.185.998v4.73h-1.067zm-.13-3.124h-1.51c-.296 0-.552.03-.766.09-.214.059-.39.143-.526.252-.137.11-.238.24-.304.393-.067.153-.1.325-.1.516 0 .133.02.259.062.38.041.12.107.228.198.321.091.093.21.168.356.222.145.055.323.082.533.082.273 0 .587-.083.94-.25.353-.166.726-.429 1.117-.789v-1.217zm3.699-3.739h1.087l.034 1.265c.405-.488.805-.841 1.2-1.06a2.436 2.436 0 011.192-.328c.711 0 1.25.23 1.617.69.367.46.537 1.144.51 2.051H66.28c.014-.601-.074-1.038-.263-1.309-.19-.27-.466-.407-.83-.407-.16 0-.32.029-.482.086a1.947 1.947 0 00-.5.273 4.47 4.47 0 00-.543.482 8.898 8.898 0 00-.615.711v4.41h-1.203v-6.864zm13.521 0l-2.338 6.139a12.037 12.037 0 01-.748 1.613 4.784 4.784 0 01-.844 1.11c-.306.29-.64.503-1.005.64a3.463 3.463 0 01-1.224.205 6.81 6.81 0 01-.636-.027v-1.08c.1.013.21.026.328.037.119.012.244.017.376.017.22 0 .423-.031.612-.095.19-.064.368-.168.537-.311.168-.144.33-.33.485-.557.155-.228.306-.504.451-.828l-2.74-6.863h1.353l1.736 4.54.349 1.066.396-1.094 1.607-4.512h1.305z"/><path id=":" fill="#7E7C7B" d="M79.714 53.912c.141 0 .276.029.403.086a1.107 1.107 0 01.564.564.978.978 0 01.086.403.971.971 0 01-.086.407 1.12 1.12 0 01-.229.331 1.058 1.058 0 01-.738.308c-.146 0-.282-.028-.407-.082a1.07 1.07 0 01-.557-.557 1.006 1.006 0 01-.082-.407 1.058 1.058 0 01.308-.738 1.12 1.12 0 01.331-.23.971.971 0 01.407-.085zm0 5.01c.141 0 .276.03.403.086a1.107 1.107 0 01.564.564.978.978 0 01.086.404.971.971 0 01-.086.406 1.12 1.12 0 01-.229.332 1.058 1.058 0 01-.738.307c-.146 0-.282-.027-.407-.082a1.07 1.07 0 01-.557-.557 1.006 1.006 0 01-.082-.406 1.058 1.058 0 01.308-.738 1.12 1.12 0 01.331-.23.971.971 0 01.407-.085z"/><path id="1000" fill="#A7333A" d="M98.075 60.898h-5.612v-1.107h2.297V53.27l-2.14 1.162-.437-1.012 2.843-1.497h1.053v7.868h1.996v1.107zm7.978-4.463c0 .683-.069 1.306-.205 1.87a4.33 4.33 0 01-.622 1.448 2.925 2.925 0 01-1.036.937c-.412.221-.897.331-1.453.331-.478 0-.913-.09-1.305-.27a2.594 2.594 0 01-1.005-.83c-.278-.374-.492-.85-.643-1.429-.15-.579-.225-1.264-.225-2.057 0-.684.07-1.308.208-1.873.14-.566.346-1.05.622-1.453s.621-.716 1.036-.937c.415-.22.898-.331 1.449-.331.479 0 .914.09 1.306.27.392.18.727.458 1.005.834.278.376.492.853.642 1.432.15.579.226 1.265.226 2.058zm-1.203.04c0-.154-.006-.308-.017-.46a23.678 23.678 0 00-.038-.449l-3.78 2.81c.068.237.155.456.26.656.104.2.23.373.379.516.148.144.317.256.506.335.189.08.404.12.646.12.31 0 .591-.075.844-.226.253-.15.468-.373.646-.67.178-.296.314-.664.41-1.104.096-.44.144-.949.144-1.527zm-4.088-.081c0 .14 0 .282.003.423.002.142.01.278.024.41l3.78-2.795a3.198 3.198 0 00-.26-.636 2.016 2.016 0 00-.375-.496 1.612 1.612 0 00-.5-.324 1.628 1.628 0 00-.628-.117c-.31 0-.592.076-.845.226-.253.15-.468.375-.646.673a3.697 3.697 0 00-.41 1.108 7.24 7.24 0 00-.143 1.528zm12.988.04c0 .684-.068 1.307-.205 1.87a4.33 4.33 0 01-.622 1.45 2.925 2.925 0 01-1.036.936c-.412.221-.896.331-1.452.331-.479 0-.914-.09-1.306-.27a2.594 2.594 0 01-1.005-.83c-.278-.374-.492-.85-.643-1.429-.15-.579-.225-1.264-.225-2.057 0-.684.07-1.308.208-1.873.14-.566.347-1.05.622-1.453.276-.403.621-.716 1.036-.937.415-.22.898-.331 1.45-.331.478 0 .913.09 1.305.27.392.18.727.458 1.005.834.278.376.492.853.642 1.432.15.579.226 1.265.226 2.058zm-1.203.042c0-.155-.006-.31-.017-.462a23.678 23.678 0 00-.038-.448l-3.78 2.81c.068.237.155.456.26.656.104.2.231.373.38.516.147.144.316.256.505.335.19.08.404.12.646.12.31 0 .591-.075.844-.226.253-.15.468-.373.646-.67.178-.296.315-.664.41-1.104.096-.44.144-.949.144-1.527zm-4.088-.082l.003.423c.003.142.01.278.024.41l3.78-2.795a3.198 3.198 0 00-.26-.636 2.016 2.016 0 00-.375-.496 1.612 1.612 0 00-.5-.324 1.628 1.628 0 00-.628-.117c-.31 0-.591.076-.844.226-.253.15-.469.375-.646.673a3.697 3.697 0 00-.41 1.108 7.24 7.24 0 00-.144 1.528zm12.988.04c0 .684-.068 1.307-.205 1.87a4.33 4.33 0 01-.622 1.45 2.925 2.925 0 01-1.036.936c-.412.221-.896.331-1.452.331-.479 0-.914-.09-1.306-.27a2.594 2.594 0 01-1.005-.83c-.278-.374-.492-.85-.642-1.429-.15-.579-.226-1.264-.226-2.057 0-.684.07-1.308.209-1.873.139-.566.346-1.05.622-1.453.275-.403.62-.716 1.035-.937.415-.22.898-.331 1.45-.331.478 0 .913.09 1.305.27.392.18.727.458 1.005.834.278.376.492.853.643 1.432.15.579.225 1.265.225 2.058zm-1.203.042c0-.155-.006-.31-.017-.462a23.678 23.678 0 00-.038-.448l-3.78 2.81c.069.237.155.456.26.656.105.2.231.373.38.516.147.144.316.256.505.335.19.08.405.12.646.12.31 0 .592-.075.844-.226.253-.15.469-.373.646-.67.178-.296.315-.664.41-1.104.096-.44.144-.949.144-1.527zm-4.088-.082c0 .14.001.282.004.423.002.142.01.278.024.41l3.78-2.795a3.198 3.198 0 00-.26-.636 2.016 2.016 0 00-.376-.496 1.612 1.612 0 00-.499-.324 1.628 1.628 0 00-.629-.117c-.31 0-.591.076-.844.226-.253.15-.468.375-.646.673a3.697 3.697 0 00-.41 1.108 7.24 7.24 0 00-.144 1.528z"/><path id="},{" fill="#7E7C7B" d="M15.853 68h.505c.88 0 1.534.206 1.962.619.429.412.643 1.038.643 1.876v1.58c0 .223.025.422.075.597.05.176.138.324.263.445.126.12.293.213.503.277.21.063.471.095.786.095h.294v.95h-.294c-.333 0-.605.028-.817.082a1.116 1.116 0 00-.496.25.88.88 0 00-.246.427 2.438 2.438 0 00-.068.615v2.393c0 .383-.046.728-.137 1.036-.091.307-.24.57-.444.786a1.993 1.993 0 01-.807.499c-.332.116-.738.174-1.217.174h-.505v-.957h.41c1.052 0 1.579-.513 1.579-1.538v-2.365c0-1.112.48-1.737 1.442-1.873-.97-.105-1.456-.732-1.456-1.88v-1.566c0-1.043-.522-1.565-1.565-1.565h-.41V68zm7.758 11.3c.233.009.458-.012.677-.062a2.02 2.02 0 00.578-.222c.166-.098.3-.22.4-.366a.86.86 0 00.15-.499.95.95 0 00-.1-.464 2.238 2.238 0 00-.221-.329 2.438 2.438 0 01-.222-.32.91.91 0 01-.1-.459.915.915 0 01.223-.588.857.857 0 01.287-.212 1.12 1.12 0 01.875.017c.148.066.278.168.39.305.111.136.2.307.266.512.066.205.1.447.1.725 0 .378-.07.742-.21 1.09a2.657 2.657 0 01-.621.926c-.276.27-.62.484-1.033.643-.412.16-.892.24-1.439.24V79.3zm19.9 1.401h-.506c-.88 0-1.534-.206-1.962-.618-.428-.413-.643-1.038-.643-1.877v-2.352a2.18 2.18 0 00-.075-.598.978.978 0 00-.263-.444 1.224 1.224 0 00-.499-.277 2.706 2.706 0 00-.783-.096h-.294v-.95h.294c.333 0 .604-.027.814-.082.21-.054.373-.138.492-.25a.88.88 0 00.246-.427c.046-.173.068-.378.068-.615v-1.62c0-.383.046-.728.137-1.036.091-.307.24-.57.448-.786.207-.216.476-.382.807-.499.33-.116.734-.174 1.213-.174h.506v.957h-.404c-1.057 0-1.586.513-1.586 1.538v1.593c0 1.112-.48 1.738-1.442 1.88.97.095 1.456.72 1.456 1.873v2.338c0 1.043.524 1.565 1.572 1.565h.404v.957z"/><path id="name" fill="#181717" d="M30.775 88.035h1.06l.048 1.108c.2-.237.394-.435.58-.592.188-.157.371-.283.551-.38a2.06 2.06 0 01.55-.2c.187-.04.381-.059.582-.059.706 0 1.24.209 1.603.626.362.417.543 1.044.543 1.883v4.477h-1.19v-4.381c0-.538-.1-.936-.3-1.193-.2-.258-.5-.386-.896-.386-.146 0-.288.021-.427.064a1.557 1.557 0 00-.434.226c-.15.107-.313.252-.489.434-.175.182-.372.41-.591.684v4.552h-1.19v-6.863zm12.107 6.863l-.028-.922c-.373.369-.753.635-1.138.8-.385.163-.79.245-1.213.245-.392 0-.727-.05-1.005-.15a1.883 1.883 0 01-.687-.413 1.603 1.603 0 01-.396-.62 2.289 2.289 0 01-.127-.772c0-.688.256-1.227.77-1.616.512-.39 1.27-.585 2.272-.585h1.422v-.601c0-.406-.13-.73-.39-.974s-.656-.366-1.19-.366c-.387 0-.768.043-1.144.13-.376.086-.765.21-1.166.369V88.35a7.36 7.36 0 011.087-.301 7.6 7.6 0 01.643-.1c.223-.024.449-.037.677-.037.414 0 .788.046 1.12.137.333.091.615.23.845.417.23.187.407.421.53.704.123.282.184.615.184.998v4.73h-1.066zm-.13-3.124h-1.51c-.297 0-.552.03-.766.09-.215.059-.39.143-.527.252-.137.11-.238.24-.304.393-.066.153-.1.325-.1.516 0 .133.021.259.062.38.041.12.108.228.199.321.09.093.21.168.355.222.146.055.324.082.533.082.274 0 .587-.083.94-.25.353-.166.726-.429 1.118-.789v-1.217zm8.312 3.124V89.97c0-.214-.008-.39-.023-.527a1.2 1.2 0 00-.076-.324.348.348 0 00-.13-.168.43.43 0 00-.448.034c-.077.055-.16.144-.249.267a4.216 4.216 0 00-.294.489c-.107.203-.233.452-.38.748v4.41h-1.086v-4.8c0-.25-.008-.453-.024-.608a1.42 1.42 0 00-.075-.362.34.34 0 00-.133-.178.431.431 0 00-.43.02.988.988 0 00-.244.247c-.089.118-.188.28-.297.485-.11.205-.24.467-.39.786v4.41h-1.094v-6.864h.91l.054 1.306c.119-.26.234-.481.345-.663.112-.183.227-.33.346-.441.118-.112.245-.194.38-.246.134-.053.283-.079.447-.079.369 0 .65.12.84.362.192.242.288.616.288 1.122.11-.237.216-.448.321-.633a2.31 2.31 0 01.338-.465c.121-.125.255-.22.4-.287.146-.066.315-.099.506-.099.862 0 1.292.663 1.292 1.99v4.996h-1.094zm8.6-3.794c0 .17-.002.31-.007.424a6.37 6.37 0 01-.02.322h-4.82c0 .701.196 1.24.588 1.616.392.376.957.564 1.696.564.2 0 .4-.008.601-.024.2-.016.394-.037.581-.065.187-.027.366-.058.537-.092.17-.034.33-.072.475-.113v.978a9.161 9.161 0 01-2.365.308c-.588 0-1.094-.08-1.518-.24a2.597 2.597 0 01-1.042-.694 2.857 2.857 0 01-.602-1.114 5.273 5.273 0 01-.195-1.494c0-.483.07-.94.209-1.37a3.44 3.44 0 01.608-1.135c.267-.326.594-.584.981-.776a2.94 2.94 0 011.32-.287c.478 0 .902.075 1.27.226.37.15.681.363.934.639s.444.61.574 1.005c.13.394.195.835.195 1.322zm-1.237-.17a2.593 2.593 0 00-.09-.838 1.763 1.763 0 00-.337-.653 1.576 1.576 0 00-.571-.427 1.916 1.916 0 00-.793-.154c-.26 0-.497.05-.711.15-.214.101-.399.242-.554.425a2.19 2.19 0 00-.376.656 3.026 3.026 0 00-.178.84h3.61z"/><path id=":" fill="#7E7C7B" d="M64.32 87.912c.14 0 .275.029.403.086a1.107 1.107 0 01.564.564.978.978 0 01.085.403.971.971 0 01-.085.407 1.12 1.12 0 01-.23.331 1.058 1.058 0 01-.738.308c-.145 0-.281-.028-.406-.082a1.07 1.07 0 01-.558-.557 1.006 1.006 0 01-.082-.407 1.058 1.058 0 01.308-.738 1.12 1.12 0 01.332-.23.971.971 0 01.406-.085zm0 5.01c.14 0 .275.03.403.086a1.107 1.107 0 01.564.564.978.978 0 01.085.404.971.971 0 01-.085.406 1.12 1.12 0 01-.23.332 1.058 1.058 0 01-.738.307c-.145 0-.281-.027-.406-.082a1.07 1.07 0 01-.558-.557 1.006 1.006 0 01-.082-.406 1.058 1.058 0 01.308-.738 1.12 1.12 0 01.332-.23.971.971 0 01.406-.085z"/><path id="'Alice'" fill="#478964" d="M80.5 85.24l-.198 3.205h-1.176l-.191-3.206H80.5zm10.691 9.658h-1.326l-.622-1.948h-3.719l-.628 1.948H83.63l2.967-8.934h1.668l2.925 8.934zm-2.296-3.035l-1.511-4.778-1.511 4.778h3.022zm5.796-5.646h-2.03v-.978h3.234v8.668h2.043v.991h-5.502v-.99h2.255v-7.691zm7.698 2.803h-2.03v-.985h3.233v5.872h2.044v.991h-5.503v-.99h2.256V89.02zm.417-3.863c.132 0 .255.024.369.072a.893.893 0 01.297.202.919.919 0 01.27.663.96.96 0 01-.27.663.893.893 0 01-.297.201.944.944 0 01-.37.072.944.944 0 01-.368-.072.893.893 0 01-.298-.201.96.96 0 01-.27-.663.919.919 0 01.27-.663.893.893 0 01.298-.202.944.944 0 01.369-.072zm10.274 9.489c-.31.118-.628.206-.954.263a5.845 5.845 0 01-1.008.085c-1.084 0-1.92-.294-2.505-.882-.586-.588-.879-1.447-.879-2.577 0-.542.085-1.034.253-1.476.169-.442.406-.82.711-1.135.306-.315.67-.557 1.094-.728.424-.171.89-.257 1.401-.257.356 0 .689.026.998.076.31.05.607.132.89.246v1.135a3.77 3.77 0 00-.907-.339 4.248 4.248 0 00-.953-.106c-.306 0-.594.058-.865.174-.271.117-.51.284-.714.503a2.38 2.38 0 00-.486.8c-.118.314-.177.67-.177 1.066 0 .83.201 1.45.604 1.863.404.412.963.619 1.679.619a3.897 3.897 0 001.818-.438v1.108zm8.162-3.542c0 .17-.002.31-.007.424a6.372 6.372 0 01-.02.322h-4.82c0 .701.196 1.24.588 1.616.392.376.957.564 1.696.564.2 0 .4-.008.601-.024.2-.016.394-.037.581-.065.187-.027.366-.058.537-.092.17-.034.33-.072.475-.113v.978a9.161 9.161 0 01-2.365.308c-.588 0-1.094-.08-1.518-.24a2.597 2.597 0 01-1.042-.694 2.857 2.857 0 01-.602-1.114 5.273 5.273 0 01-.195-1.494c0-.483.07-.94.209-1.37a3.44 3.44 0 01.608-1.135c.267-.326.594-.584.981-.776a2.94 2.94 0 011.32-.287c.478 0 .902.075 1.271.226.37.15.68.363.933.639s.444.61.574 1.005c.13.394.195.835.195 1.322zm-1.237-.17a2.593 2.593 0 00-.089-.838 1.763 1.763 0 00-.338-.653 1.576 1.576 0 00-.571-.427 1.916 1.916 0 00-.793-.154c-.26 0-.497.05-.711.15-.214.101-.399.242-.554.425a2.19 2.19 0 00-.376.656 3.026 3.026 0 00-.177.84h3.609zm6.679-5.695l-.199 3.206h-1.175l-.192-3.206h1.566z"/><path id="," fill="#7E7C7B" d="M131.373 96.3c.232.009.458-.012.677-.062a2.02 2.02 0 00.577-.222c.167-.098.3-.22.4-.366a.86.86 0 00.15-.499.95.95 0 00-.098-.464 2.238 2.238 0 00-.223-.329 2.438 2.438 0 01-.222-.32.91.91 0 01-.099-.459.915.915 0 01.222-.588.857.857 0 01.287-.212 1.12 1.12 0 01.875.017c.149.066.278.168.39.305.112.136.2.307.267.512.066.205.099.447.099.725 0 .378-.07.742-.209 1.09a2.657 2.657 0 01-.622.926c-.275.27-.62.484-1.032.643-.412.16-.892.24-1.439.24V96.3z"/><path id="salary" fill="#181717" d="M36.21 110.025a1.634 1.634 0 01-.458 1.16 2.084 2.084 0 01-.492.378 3.272 3.272 0 01-.598.26c-.212.069-.43.119-.653.15a4.638 4.638 0 01-.656.048 12.3 12.3 0 01-1.282-.061 8.646 8.646 0 01-1.145-.198v-1.094c.4.114.8.2 1.196.26.397.059.79.089 1.183.089.57 0 .99-.078 1.264-.233.274-.155.41-.376.41-.663a.812.812 0 00-.064-.331.753.753 0 00-.236-.28 2.254 2.254 0 00-.53-.278 11.81 11.81 0 00-.981-.328 6.963 6.963 0 01-.858-.31 2.877 2.877 0 01-.68-.414 1.776 1.776 0 01-.451-.56 1.649 1.649 0 01-.164-.76 1.744 1.744 0 01.588-1.264c.214-.196.503-.36.868-.49.364-.129.82-.194 1.367-.194.269 0 .567.015.895.045.329.03.67.08 1.026.153v1.06a9.803 9.803 0 00-1.063-.202 6.926 6.926 0 00-.872-.065c-.296 0-.546.023-.748.069a1.553 1.553 0 00-.493.188.734.734 0 00-.27.28.748.748 0 00-.082.345c0 .123.024.235.072.335.048.1.137.197.267.29.13.094.31.187.543.28.233.094.536.196.91.305.405.119.747.243 1.025.373.278.13.503.274.677.434.173.16.297.34.372.54.075.2.113.428.113.683zm6.672 1.873l-.028-.922c-.373.369-.753.635-1.138.8-.385.163-.79.245-1.213.245-.392 0-.727-.05-1.005-.15a1.883 1.883 0 01-.687-.413 1.603 1.603 0 01-.396-.62 2.289 2.289 0 01-.127-.772c0-.688.256-1.227.77-1.616.512-.39 1.27-.585 2.272-.585h1.422v-.601c0-.406-.13-.73-.39-.974s-.656-.366-1.19-.366c-.387 0-.768.043-1.144.13-.376.086-.765.21-1.166.369v-1.073a7.36 7.36 0 011.087-.301 7.6 7.6 0 01.643-.1c.223-.024.449-.037.677-.037.414 0 .788.046 1.12.137.333.091.615.23.845.417.23.187.407.421.53.704.123.282.184.615.184.998v4.73h-1.066zm-.13-3.124h-1.51c-.297 0-.552.03-.766.09-.215.059-.39.143-.527.252-.137.11-.238.24-.304.393-.066.153-.1.325-.1.516 0 .133.021.259.062.38.041.12.108.228.199.321.09.093.21.168.355.222.146.055.324.082.533.082.274 0 .587-.083.94-.25.353-.166.726-.429 1.118-.789v-1.217zm5.756-5.557h-2.03v-.978h3.233v8.668h2.044v.991h-5.503v-.99h2.256v-7.691zm9.768 8.681l-.027-.922c-.374.369-.753.635-1.138.8-.385.163-.79.245-1.214.245-.391 0-.726-.05-1.004-.15a1.883 1.883 0 01-.687-.413 1.603 1.603 0 01-.397-.62 2.289 2.289 0 01-.126-.772c0-.688.256-1.227.769-1.616.512-.39 1.27-.585 2.273-.585h1.421v-.601c0-.406-.13-.73-.39-.974-.259-.244-.655-.366-1.189-.366-.387 0-.769.043-1.145.13-.376.086-.764.21-1.165.369v-1.073a7.36 7.36 0 011.087-.301 7.6 7.6 0 01.642-.1c.224-.024.45-.037.677-.037.415 0 .788.046 1.121.137.333.091.614.23.844.417.23.187.407.421.53.704.123.282.185.615.185.998v4.73h-1.067zm-.13-3.124h-1.51c-.296 0-.552.03-.766.09-.214.059-.39.143-.526.252-.137.11-.238.24-.304.393-.067.153-.1.325-.1.516 0 .133.02.259.062.38.041.12.107.228.198.321.091.093.21.168.356.222.145.055.323.082.533.082.273 0 .587-.083.94-.25.353-.166.726-.429 1.117-.789v-1.217zm3.699-3.739h1.087l.034 1.265c.405-.488.805-.841 1.2-1.06a2.436 2.436 0 011.192-.328c.711 0 1.25.23 1.617.69.367.46.537 1.144.51 2.051H66.28c.014-.601-.074-1.038-.263-1.309-.19-.27-.466-.406-.83-.406-.16 0-.32.028-.482.085a1.947 1.947 0 00-.5.273 4.47 4.47 0 00-.543.482 8.898 8.898 0 00-.615.711v4.41h-1.203v-6.864zm13.521 0l-2.338 6.139a12.037 12.037 0 01-.748 1.613 4.784 4.784 0 01-.844 1.11c-.306.29-.64.503-1.005.64a3.463 3.463 0 01-1.224.205 6.811 6.811 0 01-.636-.027v-1.08c.1.013.21.026.328.037.119.012.244.017.376.017.22 0 .423-.031.612-.095.19-.064.368-.168.537-.311.168-.144.33-.33.485-.557.155-.228.306-.504.451-.828l-2.74-6.863h1.353l1.736 4.54.349 1.066.396-1.094 1.607-4.512h1.305z"/><path id=":" fill="#7E7C7B" d="M79.714 104.912c.141 0 .276.029.403.086a1.107 1.107 0 01.564.564.978.978 0 01.086.403.971.971 0 01-.086.407 1.12 1.12 0 01-.229.331 1.058 1.058 0 01-.738.308c-.146 0-.282-.028-.407-.082a1.07 1.07 0 01-.557-.557 1.006 1.006 0 01-.082-.407 1.058 1.058 0 01.308-.738 1.12 1.12 0 01.331-.23.971.971 0 01.407-.085zm0 5.01c.141 0 .276.03.403.086a1.107 1.107 0 01.564.564.978.978 0 01.086.404.971.971 0 01-.086.406 1.12 1.12 0 01-.229.332 1.058 1.058 0 01-.738.307c-.146 0-.282-.027-.407-.082a1.07 1.07 0 01-.557-.557 1.006 1.006 0 01-.082-.406 1.058 1.058 0 01.308-.738 1.12 1.12 0 01.331-.23.971.971 0 01.407-.085z"/><path id="600" fill="#A7333A" d="M98.26 109.068c0 .41-.074.796-.222 1.156-.149.36-.36.673-.633.94a2.957 2.957 0 01-.988.628 3.45 3.45 0 01-1.281.23c-.492 0-.928-.08-1.306-.236a2.32 2.32 0 01-.95-.725c-.255-.326-.449-.737-.581-1.234-.132-.497-.198-1.084-.198-1.764 0-.455.03-.897.088-1.326.06-.428.158-.831.294-1.21.137-.378.32-.724.547-1.039.228-.314.512-.584.851-.81.34-.225.74-.4 1.2-.526.46-.125.994-.188 1.6-.188h.882v1.039h-.958c-.533 0-.995.064-1.387.191-.392.128-.72.308-.985.54a2.334 2.334 0 00-.608.841c-.141.328-.23.695-.267 1.1l-.027.281c.287-.169.619-.304.995-.407a4.624 4.624 0 011.22-.153c.451 0 .846.066 1.186.198.34.132.622.315.848.55.225.235.395.516.509.844.114.328.17.688.17 1.08zm-1.244.076c0-.274-.033-.521-.1-.742a1.402 1.402 0 00-.31-.56 1.42 1.42 0 00-.537-.356 2.137 2.137 0 00-.776-.127c-.173 0-.349.016-.526.048a3.742 3.742 0 00-.523.134c-.171.056-.334.121-.49.194-.154.073-.295.15-.423.233 0 .588.041 1.079.123 1.473.082.394.204.71.366.947s.361.405.598.506c.237.1.51.15.82.15.26 0 .498-.042.715-.127a1.54 1.54 0 00.56-.372c.157-.164.28-.364.37-.598.088-.235.133-.503.133-.803zm9.037-1.71c0 .684-.069 1.307-.205 1.87a4.33 4.33 0 01-.622 1.45 2.925 2.925 0 01-1.036.936c-.412.221-.897.331-1.453.331-.478 0-.913-.09-1.305-.27a2.594 2.594 0 01-1.005-.83c-.278-.374-.492-.85-.643-1.429-.15-.579-.225-1.264-.225-2.057 0-.684.07-1.308.208-1.873.14-.566.346-1.05.622-1.453s.621-.716 1.036-.937c.415-.22.898-.331 1.449-.331.479 0 .914.09 1.306.27.392.18.727.458 1.005.834.278.376.492.853.642 1.432.15.579.226 1.265.226 2.058zm-1.203.042c0-.155-.006-.31-.017-.462a23.678 23.678 0 00-.038-.448l-3.78 2.81c.068.237.155.456.26.656.104.2.23.373.379.516.148.144.317.256.506.335.189.08.404.12.646.12.31 0 .591-.075.844-.226.253-.15.468-.373.646-.67.178-.296.314-.664.41-1.104.096-.44.144-.949.144-1.527zm-4.088-.082c0 .14 0 .282.003.423.002.142.01.278.024.41l3.78-2.795a3.198 3.198 0 00-.26-.636 2.016 2.016 0 00-.375-.496 1.612 1.612 0 00-.5-.324 1.628 1.628 0 00-.628-.117c-.31 0-.592.076-.845.226-.253.15-.468.375-.646.673a3.697 3.697 0 00-.41 1.108 7.24 7.24 0 00-.143 1.528zm12.988.04c0 .684-.068 1.307-.205 1.87a4.33 4.33 0 01-.622 1.45 2.925 2.925 0 01-1.036.936c-.412.221-.896.331-1.452.331-.479 0-.914-.09-1.306-.27a2.594 2.594 0 01-1.005-.83c-.278-.374-.492-.85-.643-1.429-.15-.579-.225-1.264-.225-2.057 0-.684.07-1.308.208-1.873.14-.566.347-1.05.622-1.453.276-.403.621-.716 1.036-.937.415-.22.898-.331 1.45-.331.478 0 .913.09 1.305.27.392.18.727.458 1.005.834.278.376.492.853.642 1.432.15.579.226 1.265.226 2.058zm-1.203.042c0-.155-.006-.31-.017-.462a23.678 23.678 0 00-.038-.448l-3.78 2.81c.068.237.155.456.26.656.104.2.231.373.38.516.147.144.316.256.505.335.19.08.404.12.646.12.31 0 .591-.075.844-.226.253-.15.468-.373.646-.67.178-.296.315-.664.41-1.104.096-.44.144-.949.144-1.527zm-4.088-.082l.003.423c.003.142.01.278.024.41l3.78-2.795a3.198 3.198 0 00-.26-.636 2.016 2.016 0 00-.375-.496 1.612 1.612 0 00-.5-.324 1.628 1.628 0 00-.628-.117c-.31 0-.591.076-.844.226-.253.15-.469.375-.646.673a3.697 3.697 0 00-.41 1.108 7.24 7.24 0 00-.144 1.528z"/><path id="}]," fill="#7E7C7B" d="M15.853 119h.505c.88 0 1.534.206 1.962.619.429.412.643 1.038.643 1.876v1.58c0 .223.025.422.075.597.05.176.138.324.263.445.126.12.293.213.503.277.21.063.471.095.786.095h.294v.95h-.294c-.333 0-.605.028-.817.082a1.116 1.116 0 00-.496.25.88.88 0 00-.246.427 2.438 2.438 0 00-.068.615v2.393c0 .383-.046.728-.137 1.036-.091.307-.24.57-.444.786a1.993 1.993 0 01-.807.499c-.332.116-.738.174-1.217.174h-.505v-.957h.41c1.052 0 1.579-.513 1.579-1.538v-2.365c0-1.112.48-1.737 1.442-1.873-.97-.105-1.456-.732-1.456-1.88v-1.566c0-1.043-.522-1.565-1.565-1.565h-.41V119zm11.47 12.701h-3.37v-.957h2.222v-10.787h-2.222V119h3.37v12.701zm3.986-1.401c.232.009.458-.012.676-.062a2.02 2.02 0 00.578-.222c.166-.098.3-.22.4-.366a.86.86 0 00.15-.499.95.95 0 00-.099-.464 2.238 2.238 0 00-.222-.329 2.438 2.438 0 01-.222-.32.91.91 0 01-.1-.459.915.915 0 01.223-.588.857.857 0 01.287-.212 1.12 1.12 0 01.875.017c.148.066.278.168.39.305.111.136.2.307.266.512.066.205.1.447.1.725 0 .378-.07.742-.21 1.09a2.657 2.657 0 01-.621.926c-.276.27-.62.484-1.032.643-.413.16-.893.24-1.44.24v-.937z"/><path id="development" fill="#181717" d="M15.032 159.61c0-.583.08-1.101.24-1.555.159-.453.386-.836.68-1.148.294-.312.647-.55 1.06-.711a3.743 3.743 0 011.377-.243c.218 0 .434.014.646.041.212.027.42.07.625.13v-2.885h1.196v9.66H19.79l-.041-1.3c-.333.484-.693.841-1.08 1.074a2.401 2.401 0 01-1.258.348c-.392 0-.737-.082-1.036-.246a2.104 2.104 0 01-.745-.693 3.33 3.33 0 01-.447-1.077 6 6 0 01-.15-1.395zm1.217-.075c0 .83.122 1.448.366 1.856.244.408.589.612 1.035.612.301 0 .619-.135.954-.403.335-.27.687-.668 1.056-1.197v-3.185a2.892 2.892 0 00-.65-.209 3.55 3.55 0 00-.703-.071c-.647 0-1.152.21-1.515.628-.362.42-.543 1.076-.543 1.97zm12.626-.43c0 .168-.002.31-.007.423a6.37 6.37 0 01-.02.322h-4.82c0 .701.196 1.24.588 1.616.392.376.957.564 1.696.564.2 0 .4-.008.601-.024.2-.016.394-.037.581-.065.187-.027.366-.058.537-.092.17-.034.329-.072.475-.113v.978a9.161 9.161 0 01-2.365.308c-.588 0-1.094-.08-1.518-.24a2.597 2.597 0 01-1.042-.694 2.857 2.857 0 01-.602-1.114 5.273 5.273 0 01-.195-1.494c0-.483.07-.94.209-1.37a3.44 3.44 0 01.608-1.135c.267-.326.594-.584.981-.776a2.94 2.94 0 011.32-.287c.478 0 .902.075 1.27.226.37.15.681.363.934.639s.444.61.574 1.005c.13.394.195.835.195 1.322zm-1.237-.171a2.593 2.593 0 00-.09-.838 1.763 1.763 0 00-.338-.653 1.576 1.576 0 00-.57-.427 1.916 1.916 0 00-.793-.154c-.26 0-.497.05-.711.15-.214.101-.399.242-.554.425a2.19 2.19 0 00-.376.656 3.026 3.026 0 00-.178.84h3.61zm2.495-2.899h1.353l1.682 4.54.362 1.107.376-1.135 1.668-4.512h1.306l-2.693 6.863h-1.368l-2.686-6.863zm14.137 3.07c0 .168-.003.31-.007.423a6.37 6.37 0 01-.02.322h-4.82c0 .701.196 1.24.588 1.616.392.376.957.564 1.695.564.2 0 .401-.008.602-.024.2-.016.394-.037.58-.065.188-.027.366-.058.537-.092.171-.034.33-.072.475-.113v.978a9.161 9.161 0 01-2.365.308c-.588 0-1.094-.08-1.517-.24a2.597 2.597 0 01-1.043-.694 2.857 2.857 0 01-.601-1.114 5.273 5.273 0 01-.195-1.494c0-.483.07-.94.208-1.37a3.44 3.44 0 01.609-1.135c.266-.326.593-.584.98-.776a2.94 2.94 0 011.32-.287c.478 0 .902.075 1.271.226.37.15.68.363.933.639s.445.61.575 1.005c.13.394.195.835.195 1.322zm-1.238-.171a2.593 2.593 0 00-.089-.838 1.763 1.763 0 00-.338-.653 1.576 1.576 0 00-.57-.427 1.916 1.916 0 00-.794-.154c-.26 0-.497.05-.71.15-.215.101-.4.242-.554.425a2.19 2.19 0 00-.376.656 3.026 3.026 0 00-.178.84h3.61zm5.476-4.717h-2.03v-.978h3.233v8.668h2.044v.991h-5.503v-.99h2.256v-7.691zm11.334 5.195a4.55 4.55 0 01-.226 1.466c-.15.445-.367.825-.65 1.142a2.913 2.913 0 01-1.031.738 3.447 3.447 0 01-1.381.263c-.492 0-.933-.076-1.323-.229a2.617 2.617 0 01-.991-.673 2.98 2.98 0 01-.622-1.1c-.144-.438-.216-.942-.216-1.511 0-.533.076-1.02.226-1.46.15-.44.367-.818.65-1.134a2.913 2.913 0 011.032-.739 3.447 3.447 0 011.38-.263c.493 0 .934.076 1.323.23.39.152.72.375.991.669.272.294.479.66.622 1.097.144.438.216.939.216 1.504zm-1.217.055c0-.424-.047-.794-.14-1.111a2.237 2.237 0 00-.4-.793 1.65 1.65 0 00-.632-.479 2.077 2.077 0 00-.83-.16c-.356 0-.66.07-.914.208-.252.14-.46.325-.622.557a2.4 2.4 0 00-.355.81 4.06 4.06 0 00-.113.968c0 .424.047.795.14 1.114.094.32.227.585.4.796.173.212.383.372.63.479.245.107.523.16.833.16.356 0 .66-.069.913-.208.253-.139.46-.325.622-.557a2.4 2.4 0 00.355-.81 4.09 4.09 0 00.113-.974zm8.805-.123c0 .61-.086 1.144-.257 1.6-.17.455-.406.833-.707 1.134a2.9 2.9 0 01-1.067.677c-.41.15-.854.225-1.333.225-.218 0-.436-.01-.652-.034a4.952 4.952 0 01-.66-.116v2.871h-1.19v-9.666h1.06l.075 1.149c.342-.47.707-.8 1.094-.988.387-.19.807-.284 1.258-.284.392 0 .736.082 1.032.246.296.164.545.396.745.694.2.299.351.659.451 1.08.1.422.15.892.15 1.412zm-1.217.054c0-.36-.026-.69-.079-.99a2.586 2.586 0 00-.25-.773 1.37 1.37 0 00-.437-.503 1.104 1.104 0 00-.635-.18c-.15 0-.304.023-.458.07a1.857 1.857 0 00-.482.24 3.59 3.59 0 00-.527.445 7 7 0 00-.591.687v3.329c.219.09.449.163.69.215.242.052.479.079.711.079.643 0 1.146-.218 1.511-.653.365-.435.547-1.09.547-1.966zm7.943 3.5v-4.928c0-.214-.008-.39-.024-.527a1.2 1.2 0 00-.075-.324.348.348 0 00-.13-.168.43.43 0 00-.448.034c-.077.055-.16.144-.249.267a4.216 4.216 0 00-.294.489 30.3 30.3 0 00-.38.748v4.41H71.47v-4.8c0-.25-.008-.453-.024-.608a1.42 1.42 0 00-.075-.362.34.34 0 00-.134-.178.431.431 0 00-.43.02.988.988 0 00-.243.247c-.089.118-.188.28-.297.485-.11.205-.24.467-.39.786v4.41h-1.094v-6.864h.91l.054 1.306c.119-.26.234-.481.345-.663.112-.183.227-.33.346-.441.118-.112.244-.194.379-.246.134-.053.284-.079.448-.079.369 0 .65.12.84.362.192.242.288.616.288 1.122.109-.237.216-.448.32-.633a2.31 2.31 0 01.34-.465c.12-.125.253-.22.4-.287.145-.066.314-.099.505-.099.861 0 1.292.663 1.292 1.99v4.996h-1.094zm8.6-3.794c0 .17-.002.31-.007.424a6.37 6.37 0 01-.02.322h-4.82c0 .701.196 1.24.588 1.616.392.376.957.564 1.695.564.2 0 .401-.008.602-.024.2-.016.394-.037.581-.065.187-.027.366-.058.537-.092.17-.034.329-.072.475-.113v.978a9.161 9.161 0 01-2.365.308c-.588 0-1.094-.08-1.518-.24a2.597 2.597 0 01-1.043-.694 2.857 2.857 0 01-.601-1.114 5.273 5.273 0 01-.195-1.494c0-.483.07-.94.209-1.37a3.44 3.44 0 01.608-1.135c.267-.326.594-.584.98-.776a2.94 2.94 0 011.32-.287c.479 0 .903.075 1.272.226.369.15.68.363.933.639s.444.61.574 1.005c.13.394.195.835.195 1.322zm-1.237-.17a2.593 2.593 0 00-.09-.838 1.763 1.763 0 00-.338-.653 1.576 1.576 0 00-.57-.427 1.916 1.916 0 00-.793-.154c-.26 0-.497.05-.711.15-.215.101-.4.242-.554.425a2.19 2.19 0 00-.376.656 3.026 3.026 0 00-.178.84h3.61zm3.137-2.899h1.06l.048 1.108c.2-.237.394-.435.58-.592.188-.157.371-.283.551-.38a2.06 2.06 0 01.55-.2c.187-.04.38-.059.581-.059.707 0 1.241.209 1.603.626.363.417.544 1.044.544 1.883v4.477h-1.19v-4.381c0-.538-.1-.936-.3-1.193-.2-.258-.5-.387-.896-.387-.146 0-.288.022-.427.065a1.557 1.557 0 00-.434.226c-.15.107-.314.252-.489.434s-.373.41-.591.684v4.552h-1.19v-6.863zm13.228 6.768a5.793 5.793 0 01-.834.147 8.52 8.52 0 01-.875.044c-.862 0-1.504-.195-1.928-.584-.424-.39-.636-.988-.636-1.795v-3.582h-1.92v-.998h1.92v-1.887l1.19-.307v2.194h3.083v.998H94.8v3.487c0 .492.13.86.393 1.104.262.243.648.365 1.159.365.218 0 .458-.017.717-.051.26-.034.531-.088.814-.16v1.025z"/><path id=":{" fill="#7E7C7B" d="M102.806 155.912c.14 0 .275.029.403.086a1.107 1.107 0 01.564.564.978.978 0 01.085.403.971.971 0 01-.085.407 1.12 1.12 0 01-.23.331 1.058 1.058 0 01-.737.308c-.146 0-.282-.028-.407-.082a1.07 1.07 0 01-.557-.557 1.006 1.006 0 01-.082-.407 1.058 1.058 0 01.308-.738 1.12 1.12 0 01.33-.23.971.971 0 01.408-.085zm0 5.01c.14 0 .275.03.403.086a1.107 1.107 0 01.564.564.978.978 0 01.085.404.971.971 0 01-.085.406 1.12 1.12 0 01-.23.332 1.058 1.058 0 01-.737.307c-.146 0-.282-.027-.407-.082a1.07 1.07 0 01-.557-.557 1.006 1.006 0 01-.082-.406 1.058 1.058 0 01.308-.738 1.12 1.12 0 01.33-.23.971.971 0 01.408-.085zm17.677 4.78h-.505c-.88 0-1.534-.207-1.962-.62-.429-.412-.643-1.037-.643-1.876v-2.352a2.18 2.18 0 00-.075-.598.978.978 0 00-.263-.444 1.224 1.224 0 00-.5-.277 2.706 2.706 0 00-.782-.096h-.294v-.95h.294c.333 0 .604-.027.813-.082.21-.054.374-.138.493-.25a.88.88 0 00.246-.427c.045-.173.068-.378.068-.615v-1.62c0-.383.046-.728.137-1.036.09-.307.24-.57.448-.786.207-.216.476-.382.806-.499.33-.116.735-.174 1.214-.174h.505v.957h-.403c-1.057 0-1.586.513-1.586 1.538v1.593c0 1.112-.48 1.738-1.442 1.88.97.095 1.456.72 1.456 1.873v2.338c0 1.043.524 1.565 1.572 1.565h.403v.957z"/><path id="sites" fill="#181717" d="M36.21 178.025a1.634 1.634 0 01-.458 1.16 2.084 2.084 0 01-.492.378 3.272 3.272 0 01-.598.26c-.212.069-.43.119-.653.15a4.638 4.638 0 01-.656.048 12.3 12.3 0 01-1.282-.061 8.646 8.646 0 01-1.145-.198v-1.094c.4.114.8.2 1.196.26.397.059.79.089 1.183.089.57 0 .99-.078 1.264-.233.274-.155.41-.376.41-.663a.812.812 0 00-.064-.331.753.753 0 00-.236-.28 2.254 2.254 0 00-.53-.278 11.81 11.81 0 00-.981-.328 6.963 6.963 0 01-.858-.31 2.877 2.877 0 01-.68-.414 1.776 1.776 0 01-.451-.56 1.649 1.649 0 01-.164-.76 1.744 1.744 0 01.588-1.264c.214-.196.503-.36.868-.49.364-.129.82-.194 1.367-.194.269 0 .567.015.895.045.329.03.67.08 1.026.153v1.06a9.803 9.803 0 00-1.063-.202 6.926 6.926 0 00-.872-.065c-.296 0-.546.023-.748.069a1.553 1.553 0 00-.493.188.734.734 0 00-.27.28.748.748 0 00-.082.345c0 .123.024.235.072.335.048.1.137.197.267.29.13.094.31.187.543.28.233.094.536.196.91.305.405.119.747.243 1.025.373.278.13.503.274.677.434.173.16.297.34.372.54.075.2.113.428.113.683zm4.6-4.005h-2.03v-.985h3.234v5.872h2.044v.991h-5.503v-.99h2.256v-4.888zm.418-3.863c.132 0 .255.024.369.072a.893.893 0 01.297.202.919.919 0 01.27.663.96.96 0 01-.27.663.893.893 0 01-.297.201.944.944 0 01-.37.072.944.944 0 01-.369-.072.893.893 0 01-.297-.201.96.96 0 01-.27-.663.919.919 0 01.27-.663.893.893 0 01.297-.202.944.944 0 01.37-.072zm10.472 9.646a5.793 5.793 0 01-.834.147 8.52 8.52 0 01-.875.044c-.861 0-1.504-.195-1.928-.584-.423-.39-.635-.988-.635-1.795v-3.582h-1.921v-.998h1.92v-1.887l1.19-.307v2.194H51.7v.998h-3.083v3.487c0 .492.131.86.393 1.104.262.243.649.365 1.159.365.219 0 .458-.017.718-.051.26-.034.53-.088.813-.16v1.025zm7.964-3.699c0 .17-.002.31-.007.424a6.37 6.37 0 01-.02.322h-4.82c0 .701.196 1.24.588 1.616.392.376.957.564 1.696.564.2 0 .4-.008.601-.024.2-.016.394-.037.581-.065.187-.027.366-.058.537-.092.17-.034.33-.072.475-.113v.978a9.161 9.161 0 01-2.365.308c-.588 0-1.094-.08-1.518-.24a2.597 2.597 0 01-1.042-.694 2.857 2.857 0 01-.602-1.114 5.273 5.273 0 01-.195-1.494c0-.483.07-.94.209-1.37a3.44 3.44 0 01.608-1.135c.267-.326.594-.584.981-.776a2.94 2.94 0 011.32-.287c.478 0 .902.075 1.27.226.37.15.681.363.934.639s.444.61.574 1.005c.13.394.195.835.195 1.322zm-1.237-.17a2.593 2.593 0 00-.09-.838 1.763 1.763 0 00-.337-.653 1.576 1.576 0 00-.571-.427 1.916 1.916 0 00-.793-.154c-.26 0-.497.05-.711.15-.214.101-.399.242-.554.425a2.19 2.19 0 00-.376.656 3.026 3.026 0 00-.178.84h3.61zm8.572 2.091a1.634 1.634 0 01-.458 1.16 2.084 2.084 0 01-.492.378 3.272 3.272 0 01-.598.26c-.212.069-.43.119-.653.15a4.638 4.638 0 01-.656.048 12.3 12.3 0 01-1.282-.061 8.646 8.646 0 01-1.145-.198v-1.094c.4.114.8.2 1.196.26.397.059.79.089 1.183.089.57 0 .991-.078 1.264-.233.274-.155.41-.376.41-.663a.812.812 0 00-.064-.331.753.753 0 00-.236-.28 2.254 2.254 0 00-.53-.278 11.81 11.81 0 00-.981-.328 6.963 6.963 0 01-.858-.31 2.877 2.877 0 01-.68-.414 1.776 1.776 0 01-.451-.56 1.649 1.649 0 01-.164-.76 1.744 1.744 0 01.588-1.264c.214-.196.503-.36.868-.49.364-.129.82-.194 1.367-.194.269 0 .567.015.895.045.329.03.67.08 1.026.153v1.06a9.803 9.803 0 00-1.063-.202 6.926 6.926 0 00-.872-.065c-.296 0-.545.023-.748.069a1.553 1.553 0 00-.492.188.734.734 0 00-.27.28.748.748 0 00-.082.345c0 .123.023.235.071.335.048.1.137.197.267.29.13.094.31.187.543.28.233.094.536.196.91.305.405.119.747.243 1.025.373.278.13.503.274.677.434.173.16.297.34.372.54.075.2.113.428.113.683z"/><path id=":[{" fill="#7E7C7B" d="M72.017 172.912c.14 0 .275.029.403.086a1.107 1.107 0 01.564.564.978.978 0 01.085.403.971.971 0 01-.085.407 1.12 1.12 0 01-.23.331 1.058 1.058 0 01-.737.308c-.146 0-.282-.028-.407-.082a1.07 1.07 0 01-.557-.557 1.006 1.006 0 01-.082-.407 1.058 1.058 0 01.308-.738 1.12 1.12 0 01.33-.23.971.971 0 01.408-.085zm0 5.01c.14 0 .275.03.403.086a1.107 1.107 0 01.564.564.978.978 0 01.085.404.971.971 0 01-.085.406 1.12 1.12 0 01-.23.332 1.058 1.058 0 01-.737.307c-.146 0-.282-.027-.407-.082a1.07 1.07 0 01-.557-.557 1.006 1.006 0 01-.082-.406 1.058 1.058 0 01.308-.738 1.12 1.12 0 01.33-.23.971.971 0 01.408-.085zm17.274 4.78h-3.37V170h3.37v.957h-2.235v10.787h2.235v.957zm8.1 0h-.505c-.88 0-1.534-.207-1.962-.62-.429-.412-.643-1.037-.643-1.876v-2.352a2.18 2.18 0 00-.075-.598.978.978 0 00-.263-.444 1.224 1.224 0 00-.5-.277 2.706 2.706 0 00-.782-.096h-.294v-.95h.294c.333 0 .604-.027.814-.082.21-.054.373-.138.492-.25a.88.88 0 00.246-.427c.045-.173.068-.378.068-.615v-1.62c0-.383.046-.728.137-1.036.091-.307.24-.57.448-.786.207-.216.476-.382.806-.499.33-.116.735-.174 1.214-.174h.506v.957h-.404c-1.057 0-1.586.513-1.586 1.538v1.593c0 1.112-.48 1.738-1.442 1.88.97.095 1.456.72 1.456 1.873v2.338c0 1.043.524 1.565 1.572 1.565h.404v.957z"/><path id="name" fill="#181717" d="M46.17 190.035h1.06l.047 1.108c.2-.237.395-.435.581-.592.187-.157.37-.283.55-.38a2.06 2.06 0 01.551-.2c.187-.04.38-.059.581-.059.706 0 1.24.209 1.603.626.362.417.544 1.044.544 1.883v4.477h-1.19v-4.381c0-.538-.1-.936-.3-1.193-.201-.258-.5-.387-.896-.387-.146 0-.288.022-.427.065a1.557 1.557 0 00-.435.226c-.15.107-.313.252-.488.434-.176.182-.373.41-.592.684v4.552h-1.19v-6.863zm12.106 6.863l-.027-.922c-.374.369-.753.635-1.138.8-.385.163-.79.245-1.214.245-.391 0-.726-.05-1.004-.15a1.883 1.883 0 01-.687-.413 1.603 1.603 0 01-.397-.62 2.289 2.289 0 01-.126-.772c0-.688.256-1.227.769-1.616.512-.39 1.27-.585 2.273-.585h1.421v-.601c0-.406-.13-.73-.39-.974-.259-.244-.655-.366-1.189-.366-.387 0-.769.043-1.145.13-.376.086-.764.21-1.165.369v-1.073a7.36 7.36 0 011.087-.301 7.6 7.6 0 01.642-.1c.224-.024.45-.037.677-.037.415 0 .788.046 1.121.137.333.091.614.23.844.417.23.187.407.421.53.704.123.282.185.615.185.998v4.73h-1.067zm-.13-3.124h-1.51c-.296 0-.552.03-.766.09-.214.059-.39.143-.526.252-.137.11-.238.24-.304.393-.067.153-.1.325-.1.516 0 .133.02.259.062.38.041.12.107.228.198.321.091.093.21.168.356.222.145.055.323.082.533.082.273 0 .587-.083.94-.25.353-.166.726-.429 1.117-.789v-1.217zm8.313 3.124v-4.928c0-.214-.008-.39-.024-.527a1.2 1.2 0 00-.075-.324.348.348 0 00-.13-.168.43.43 0 00-.448.034c-.077.055-.16.144-.25.267a4.216 4.216 0 00-.293.489 30.3 30.3 0 00-.38.748v4.41h-1.087v-4.8c0-.25-.008-.453-.023-.608a1.42 1.42 0 00-.076-.362.34.34 0 00-.133-.178.431.431 0 00-.43.02.988.988 0 00-.243.247c-.09.118-.188.28-.298.485-.109.205-.239.467-.39.786v4.41h-1.093v-6.864h.91l.054 1.306c.118-.26.233-.481.345-.663.112-.183.227-.33.345-.441.119-.112.245-.194.38-.246.134-.053.283-.079.447-.079.37 0 .65.12.841.362.192.242.287.616.287 1.122.11-.237.217-.448.322-.633a2.31 2.31 0 01.338-.465c.12-.125.254-.22.4-.287.146-.066.314-.099.506-.099.861 0 1.292.663 1.292 1.99v4.996h-1.094zm8.6-3.794c0 .17-.003.31-.007.424a6.37 6.37 0 01-.02.322h-4.82c0 .701.196 1.24.588 1.616.392.376.957.564 1.695.564.2 0 .401-.008.602-.024.2-.016.394-.037.58-.065.188-.027.366-.058.537-.092.171-.034.33-.072.475-.113v.978a9.161 9.161 0 01-2.365.308c-.588 0-1.094-.08-1.517-.24a2.597 2.597 0 01-1.043-.694 2.857 2.857 0 01-.601-1.114 5.273 5.273 0 01-.195-1.494c0-.483.07-.94.208-1.37a3.44 3.44 0 01.609-1.135c.266-.326.593-.584.98-.776a2.94 2.94 0 011.32-.287c.478 0 .902.075 1.271.226.37.15.68.363.934.639.252.276.444.61.574 1.005.13.394.195.835.195 1.322zm-1.238-.17a2.593 2.593 0 00-.089-.838 1.763 1.763 0 00-.338-.653 1.576 1.576 0 00-.57-.427 1.916 1.916 0 00-.794-.154c-.26 0-.496.05-.71.15-.215.101-.4.242-.554.425a2.19 2.19 0 00-.376.656 3.026 3.026 0 00-.178.84h3.61z"/><path id=":" fill="#7E7C7B" d="M79.714 189.912c.141 0 .276.029.403.086a1.107 1.107 0 01.564.564.978.978 0 01.086.403.971.971 0 01-.086.407 1.12 1.12 0 01-.229.331 1.058 1.058 0 01-.738.308c-.146 0-.282-.028-.407-.082a1.07 1.07 0 01-.557-.557 1.006 1.006 0 01-.082-.407 1.058 1.058 0 01.308-.738 1.12 1.12 0 01.331-.23.971.971 0 01.407-.085zm0 5.01c.141 0 .276.03.403.086a1.107 1.107 0 01.564.564.978.978 0 01.086.404.971.971 0 01-.086.406 1.12 1.12 0 01-.229.332 1.058 1.058 0 01-.738.307c-.146 0-.282-.027-.407-.082a1.07 1.07 0 01-.557-.557 1.006 1.006 0 01-.082-.406 1.058 1.058 0 01.308-.738 1.12 1.12 0 01.331-.23.971.971 0 01.407-.085z"/><path id="'Peter'" fill="#478964" d="M95.895 187.24l-.199 3.205h-1.175l-.192-3.206h1.566zm10.007 3.458c0 .365-.068.726-.205 1.084a2.68 2.68 0 01-.635.96 3.227 3.227 0 01-1.101.687c-.447.176-.98.263-1.6.263h-1.107v3.206h-1.217v-8.934h2.516c.442 0 .866.049 1.271.147.406.098.762.256 1.07.475.308.219.553.501.735.848.182.346.273.767.273 1.264zm-1.264.055c0-.574-.188-1.014-.564-1.32-.376-.305-.901-.457-1.576-.457h-1.244v3.677h1.135c.72 0 1.275-.157 1.664-.471.39-.315.585-.791.585-1.43zm8.907 2.351c0 .17-.002.31-.007.424a6.37 6.37 0 01-.02.322h-4.82c0 .701.196 1.24.588 1.616.392.376.957.564 1.695.564.201 0 .401-.008.602-.024.2-.016.394-.037.581-.065.187-.027.366-.058.537-.092.17-.034.329-.072.475-.113v.978a9.161 9.161 0 01-2.365.308c-.588 0-1.094-.08-1.518-.24a2.597 2.597 0 01-1.043-.694 2.857 2.857 0 01-.601-1.114 5.273 5.273 0 01-.195-1.494c0-.483.07-.94.209-1.37a3.44 3.44 0 01.608-1.135c.267-.326.594-.584.981-.776a2.94 2.94 0 011.32-.287c.478 0 .902.075 1.27.226.37.15.68.363.934.639.253.276.444.61.574 1.005.13.394.195.835.195 1.322zm-1.237-.17a2.593 2.593 0 00-.09-.838 1.763 1.763 0 00-.338-.653 1.576 1.576 0 00-.57-.427 1.916 1.916 0 00-.793-.154c-.26 0-.497.05-.711.15-.215.101-.4.242-.554.425a2.19 2.19 0 00-.376.656 3.026 3.026 0 00-.178.84h3.61zm8.668 3.869a5.793 5.793 0 01-.834.147 8.52 8.52 0 01-.875.044c-.862 0-1.504-.195-1.928-.584-.424-.39-.636-.988-.636-1.795v-3.582h-1.92v-.998h1.92v-1.887l1.19-.307v2.194h3.083v.998h-3.083v3.487c0 .492.13.86.393 1.104.262.243.648.365 1.158.365.22 0 .458-.017.718-.051.26-.034.531-.088.814-.16v1.025zm7.963-3.699c0 .17-.002.31-.006.424a6.37 6.37 0 01-.02.322h-4.82c0 .701.196 1.24.588 1.616.392.376.957.564 1.695.564.2 0 .401-.008.602-.024.2-.016.394-.037.58-.065.187-.027.366-.058.537-.092.171-.034.33-.072.475-.113v.978a9.161 9.161 0 01-2.365.308c-.588 0-1.094-.08-1.517-.24a2.597 2.597 0 01-1.043-.694 2.857 2.857 0 01-.602-1.114 5.273 5.273 0 01-.194-1.494c0-.483.07-.94.208-1.37a3.44 3.44 0 01.609-1.135c.266-.326.593-.584.98-.776a2.94 2.94 0 011.32-.287c.478 0 .902.075 1.271.226.37.15.68.363.933.639s.445.61.575 1.005c.13.394.194.835.194 1.322zm-1.237-.17a2.593 2.593 0 00-.089-.838 1.763 1.763 0 00-.338-.653 1.576 1.576 0 00-.57-.427 1.916 1.916 0 00-.794-.154c-.26 0-.497.05-.71.15-.215.101-.4.242-.555.425a2.19 2.19 0 00-.375.656 3.026 3.026 0 00-.178.84h3.61zm3.418-2.899h1.087l.034 1.265c.406-.488.806-.841 1.2-1.06a2.436 2.436 0 011.193-.328c.71 0 1.25.23 1.616.69.367.46.537 1.144.51 2.051h-1.203c.013-.601-.074-1.038-.264-1.309-.189-.27-.466-.406-.83-.406-.16 0-.32.028-.482.085a1.947 1.947 0 00-.5.273 4.47 4.47 0 00-.543.482 8.898 8.898 0 00-.615.711v4.41h-1.203v-6.864zm10.958-2.796l-.198 3.206h-1.176l-.191-3.206h1.565z"/><path id="," fill="#7E7C7B" d="M146.768 198.3c.232.009.458-.012.676-.062a2.02 2.02 0 00.578-.222c.166-.098.3-.22.4-.366a.86.86 0 00.15-.499.95.95 0 00-.099-.464 2.238 2.238 0 00-.222-.329 2.438 2.438 0 01-.222-.32.91.91 0 01-.1-.459.915.915 0 01.223-.588.857.857 0 01.287-.212 1.12 1.12 0 01.875.017c.148.066.278.168.39.305.111.136.2.307.266.512.066.205.1.447.1.725 0 .378-.07.742-.21 1.09a2.657 2.657 0 01-.621.926c-.276.27-.62.484-1.032.643-.413.16-.893.24-1.44.24v-.937z"/><path id="salary" fill="#181717" d="M51.604 212.025a1.634 1.634 0 01-.458 1.16 2.084 2.084 0 01-.492.378 3.272 3.272 0 01-.598.26c-.212.069-.43.119-.653.15a4.638 4.638 0 01-.656.048 12.3 12.3 0 01-1.282-.061 8.646 8.646 0 01-1.145-.198v-1.094c.401.114.8.2 1.197.26.396.059.79.089 1.182.089.57 0 .991-.078 1.265-.233.273-.155.41-.376.41-.663a.812.812 0 00-.065-.331.753.753 0 00-.236-.28 2.254 2.254 0 00-.53-.278 11.81 11.81 0 00-.98-.328 6.963 6.963 0 01-.858-.31 2.877 2.877 0 01-.68-.414 1.776 1.776 0 01-.452-.56 1.649 1.649 0 01-.164-.76 1.744 1.744 0 01.588-1.264c.214-.196.504-.36.868-.49.365-.129.82-.194 1.367-.194.27 0 .568.015.896.045.328.03.67.08 1.025.153v1.06a9.803 9.803 0 00-1.063-.202 6.926 6.926 0 00-.871-.065c-.296 0-.546.023-.749.069a1.553 1.553 0 00-.492.188.734.734 0 00-.27.28.748.748 0 00-.082.345c0 .123.024.235.072.335.048.1.136.197.266.29.13.094.311.187.544.28.232.094.535.196.909.305.406.119.747.243 1.025.373.278.13.504.274.677.434.173.16.298.34.373.54.075.2.112.428.112.683zm6.672 1.873l-.027-.922c-.374.369-.753.635-1.138.8-.385.163-.79.245-1.214.245-.391 0-.726-.05-1.004-.15a1.883 1.883 0 01-.687-.413 1.603 1.603 0 01-.397-.62 2.289 2.289 0 01-.126-.772c0-.688.256-1.227.769-1.616.512-.39 1.27-.585 2.273-.585h1.421v-.601c0-.406-.13-.73-.39-.974-.259-.244-.655-.366-1.189-.366-.387 0-.769.043-1.145.13-.376.086-.764.21-1.165.369v-1.073a7.36 7.36 0 011.087-.301 7.6 7.6 0 01.642-.1c.224-.024.45-.037.677-.037.415 0 .788.046 1.121.137.333.091.614.23.844.417.23.187.407.421.53.704.123.282.185.615.185.998v4.73h-1.067zm-.13-3.124h-1.51c-.296 0-.552.03-.766.09-.214.059-.39.143-.526.252-.137.11-.238.24-.304.393-.067.153-.1.325-.1.516 0 .133.02.259.062.38.041.12.107.228.198.321.091.093.21.168.356.222.145.055.323.082.533.082.273 0 .587-.083.94-.25.353-.166.726-.429 1.117-.789v-1.217zm5.756-5.557h-2.03v-.978h3.233v8.668h2.044v.991h-5.503v-.99h2.256v-7.691zm9.769 8.681l-.027-.922c-.374.369-.754.635-1.139.8-.385.163-.79.245-1.213.245-.392 0-.727-.05-1.005-.15a1.883 1.883 0 01-.687-.413 1.603 1.603 0 01-.396-.62 2.289 2.289 0 01-.127-.772c0-.688.256-1.227.77-1.616.512-.39 1.27-.585 2.272-.585h1.422v-.601c0-.406-.13-.73-.39-.974s-.656-.366-1.19-.366c-.386 0-.768.043-1.144.13-.376.086-.765.21-1.166.369v-1.073a7.36 7.36 0 011.087-.301 7.6 7.6 0 01.643-.1c.223-.024.449-.037.677-.037.414 0 .788.046 1.12.137.333.091.615.23.845.417.23.187.407.421.53.704.123.282.184.615.184.998v4.73h-1.066zm-.13-3.124h-1.51c-.297 0-.552.03-.766.09-.215.059-.39.143-.527.252-.136.11-.238.24-.304.393-.066.153-.099.325-.099.516 0 .133.02.259.061.38.042.12.108.228.199.321.09.093.21.168.355.222.146.055.324.082.533.082.274 0 .587-.083.94-.25.354-.166.726-.429 1.118-.789v-1.217zm3.698-3.739h1.087l.034 1.265c.406-.488.806-.841 1.2-1.06a2.436 2.436 0 011.193-.328c.71 0 1.25.23 1.617.69.366.46.536 1.144.509 2.051h-1.203c.013-.601-.074-1.038-.263-1.309-.19-.27-.466-.406-.831-.406-.16 0-.32.028-.482.085a1.947 1.947 0 00-.499.273 4.47 4.47 0 00-.543.482 8.898 8.898 0 00-.616.711v4.41H77.24v-6.864zm13.522 0l-2.338 6.139a12.037 12.037 0 01-.749 1.613 4.784 4.784 0 01-.844 1.11c-.305.29-.64.503-1.005.64a3.463 3.463 0 01-1.223.205 6.811 6.811 0 01-.636-.027v-1.08c.1.013.21.026.328.037.118.012.244.017.376.017.219 0 .423-.031.612-.095s.368-.168.536-.311c.169-.144.33-.33.486-.557.155-.228.305-.504.45-.828l-2.74-6.863h1.353l1.737 4.54.348 1.066.397-1.094 1.606-4.512h1.306z"/><path id=":" fill="#7E7C7B" d="M95.108 206.912c.142 0 .276.029.404.086a1.107 1.107 0 01.564.564.978.978 0 01.085.403.971.971 0 01-.085.407 1.12 1.12 0 01-.23.331 1.058 1.058 0 01-.738.308c-.145 0-.281-.028-.406-.082a1.07 1.07 0 01-.557-.557 1.006 1.006 0 01-.082-.407 1.058 1.058 0 01.308-.738 1.12 1.12 0 01.33-.23.971.971 0 01.407-.085zm0 5.01c.142 0 .276.03.404.086a1.107 1.107 0 01.564.564.978.978 0 01.085.404.971.971 0 01-.085.406 1.12 1.12 0 01-.23.332 1.058 1.058 0 01-.738.307c-.145 0-.281-.027-.406-.082a1.07 1.07 0 01-.557-.557 1.006 1.006 0 01-.082-.406 1.058 1.058 0 01.308-.738 1.12 1.12 0 01.33-.23.971.971 0 01.407-.085z"/><path id="2000" fill="#A7333A" d="M113.545 213.898h-5.886v-1.066l2.31-2.297c.379-.374.687-.697.924-.97.237-.274.421-.523.553-.75a2.28 2.28 0 00.267-.638c.045-.2.068-.417.068-.65 0-.218-.03-.427-.089-.625a1.49 1.49 0 00-.273-.523 1.268 1.268 0 00-.479-.356 1.734 1.734 0 00-.704-.13c-.378 0-.722.085-1.032.253-.31.17-.595.388-.854.657l-.657-.786c.338-.356.726-.64 1.166-.855.44-.214.951-.321 1.535-.321.396 0 .757.06 1.083.178.326.118.607.289.844.512.237.224.42.497.55.82.13.324.195.689.195 1.094 0 .342-.045.659-.136.95a3.646 3.646 0 01-.414.872c-.184.29-.417.59-.697.899-.28.31-.612.65-.995 1.019l-1.62 1.579h4.34v1.134zm7.902-4.463c0 .683-.068 1.306-.205 1.87a4.33 4.33 0 01-.622 1.448 2.925 2.925 0 01-1.036.937c-.412.221-.896.331-1.452.331-.479 0-.914-.09-1.306-.27a2.594 2.594 0 01-1.005-.83c-.278-.374-.492-.85-.642-1.429-.15-.579-.226-1.264-.226-2.057 0-.684.07-1.308.209-1.873.139-.566.346-1.05.622-1.453.275-.403.62-.716 1.035-.937.415-.22.898-.331 1.45-.331.478 0 .913.09 1.305.27.392.18.727.458 1.005.834.278.376.492.853.643 1.432.15.579.225 1.265.225 2.058zm-1.203.04c0-.154-.006-.308-.017-.46a23.678 23.678 0 00-.038-.449l-3.78 2.81c.069.237.155.456.26.656.105.2.231.373.38.516.147.144.316.256.505.335.19.08.405.12.646.12.31 0 .592-.075.844-.226.253-.15.469-.373.646-.67.178-.296.315-.664.41-1.104.096-.44.144-.949.144-1.527zm-4.088-.081c0 .14.001.282.004.423.002.142.01.278.024.41l3.78-2.795a3.198 3.198 0 00-.26-.636 2.016 2.016 0 00-.376-.496 1.612 1.612 0 00-.499-.324 1.628 1.628 0 00-.629-.117c-.31 0-.591.076-.844.226-.253.15-.468.375-.646.673a3.697 3.697 0 00-.41 1.108 7.24 7.24 0 00-.144 1.528zm12.989.04c0 .684-.069 1.307-.206 1.87a4.33 4.33 0 01-.622 1.45 2.925 2.925 0 01-1.035.936c-.413.221-.897.331-1.453.331-.478 0-.914-.09-1.306-.27a2.594 2.594 0 01-1.004-.83c-.278-.374-.493-.85-.643-1.429-.15-.579-.226-1.264-.226-2.057 0-.684.07-1.308.209-1.873.139-.566.346-1.05.622-1.453s.62-.716 1.036-.937c.414-.22.897-.331 1.449-.331.478 0 .914.09 1.305.27.392.18.727.458 1.005.834.278.376.493.853.643 1.432.15.579.226 1.265.226 2.058zm-1.204.042c0-.155-.005-.31-.017-.462a23.67 23.67 0 00-.037-.448l-3.78 2.81c.068.237.154.456.26.656.104.2.23.373.379.516.148.144.316.256.505.335.19.08.405.12.646.12.31 0 .592-.075.845-.226.253-.15.468-.373.646-.67.177-.296.314-.664.41-1.104.096-.44.143-.949.143-1.527zm-4.087-.082c0 .14 0 .282.003.423.002.142.01.278.024.41l3.78-2.795a3.198 3.198 0 00-.26-.636 2.016 2.016 0 00-.376-.496 1.612 1.612 0 00-.499-.324 1.628 1.628 0 00-.629-.117c-.31 0-.59.076-.844.226-.253.15-.468.375-.646.673a3.697 3.697 0 00-.41 1.108 7.24 7.24 0 00-.143 1.528zm12.988.04c0 .684-.069 1.307-.205 1.87a4.33 4.33 0 01-.622 1.45 2.925 2.925 0 01-1.036.936c-.412.221-.897.331-1.453.331-.478 0-.913-.09-1.305-.27a2.594 2.594 0 01-1.005-.83c-.278-.374-.492-.85-.643-1.429-.15-.579-.225-1.264-.225-2.057 0-.684.07-1.308.208-1.873.14-.566.347-1.05.622-1.453.276-.403.621-.716 1.036-.937.415-.22.898-.331 1.45-.331.478 0 .913.09 1.305.27.392.18.727.458 1.005.834.278.376.492.853.642 1.432.15.579.226 1.265.226 2.058zm-1.203.042c0-.155-.006-.31-.017-.462a23.67 23.67 0 00-.038-.448l-3.78 2.81c.068.237.155.456.26.656.104.2.23.373.379.516.148.144.317.256.506.335.189.08.404.12.646.12.31 0 .591-.075.844-.226.253-.15.468-.373.646-.67.178-.296.314-.664.41-1.104.096-.44.144-.949.144-1.527zm-4.088-.082c0 .14 0 .282.003.423.002.142.01.278.024.41l3.78-2.795a3.198 3.198 0 00-.26-.636 2.016 2.016 0 00-.375-.496 1.612 1.612 0 00-.5-.324 1.628 1.628 0 00-.628-.117c-.31 0-.592.076-.845.226-.252.15-.468.375-.646.673a3.697 3.697 0 00-.41 1.108 7.24 7.24 0 00-.143 1.528z"/><path id="},{" fill="#7E7C7B" d="M31.247 221h.506c.88 0 1.533.206 1.962.619.428.412.642 1.038.642 1.876v1.58c0 .223.025.422.076.597.05.176.137.324.263.445.125.12.293.213.502.277.21.063.472.095.786.095h.294v.95h-.294c-.332 0-.605.028-.817.082a1.116 1.116 0 00-.495.25.88.88 0 00-.246.427 2.438 2.438 0 00-.069.615v2.393c0 .383-.045.728-.136 1.036-.091.307-.24.57-.445.786a1.993 1.993 0 01-.806.499c-.333.116-.739.174-1.217.174h-.506v-.957h.41c1.053 0 1.58-.513 1.58-1.538v-2.365c0-1.112.48-1.737 1.442-1.873-.971-.105-1.456-.732-1.456-1.88v-1.566c0-1.043-.522-1.565-1.566-1.565h-.41V221zm7.759 11.3c.232.009.458-.012.677-.062a2.02 2.02 0 00.577-.222c.167-.098.3-.22.4-.366a.86.86 0 00.15-.499.95.95 0 00-.099-.464 2.238 2.238 0 00-.222-.329 2.438 2.438 0 01-.222-.32.91.91 0 01-.099-.459.915.915 0 01.222-.588.857.857 0 01.287-.212 1.12 1.12 0 01.875.017c.148.066.278.168.39.305.112.136.2.307.266.512.067.205.1.447.1.725 0 .378-.07.742-.209 1.09a2.657 2.657 0 01-.622.926c-.276.27-.62.484-1.032.643-.413.16-.892.24-1.44.24v-.937zm19.9 1.401h-.507c-.88 0-1.533-.206-1.962-.618-.428-.413-.642-1.038-.642-1.877v-2.352a2.18 2.18 0 00-.075-.598.978.978 0 00-.263-.444 1.224 1.224 0 00-.5-.277 2.706 2.706 0 00-.782-.096h-.294v-.95h.294c.332 0 .604-.027.813-.082.21-.054.374-.138.492-.25a.88.88 0 00.247-.427c.045-.173.068-.378.068-.615v-1.62c0-.383.045-.728.137-1.036.09-.307.24-.57.447-.786.208-.216.477-.382.807-.499.33-.116.735-.174 1.213-.174h.506v.957h-.403c-1.057 0-1.586.513-1.586 1.538v1.593c0 1.112-.48 1.738-1.442 1.88.97.095 1.456.72 1.456 1.873v2.338c0 1.043.524 1.565 1.572 1.565h.403v.957z"/><path id="name" fill="#181717" d="M46.17 241.035h1.06l.047 1.108c.2-.237.395-.435.581-.592.187-.157.37-.283.55-.38a2.06 2.06 0 01.551-.2c.187-.04.38-.059.581-.059.706 0 1.24.209 1.603.626.362.417.544 1.044.544 1.883v4.477h-1.19v-4.381c0-.538-.1-.936-.3-1.193-.201-.258-.5-.387-.896-.387-.146 0-.288.022-.427.065a1.557 1.557 0 00-.435.226c-.15.107-.313.252-.488.434-.176.182-.373.41-.592.684v4.552h-1.19v-6.863zm12.106 6.863l-.027-.922c-.374.369-.753.635-1.138.8-.385.163-.79.245-1.214.245-.391 0-.726-.05-1.004-.15a1.883 1.883 0 01-.687-.413 1.603 1.603 0 01-.397-.62 2.289 2.289 0 01-.126-.772c0-.688.256-1.227.769-1.616.512-.39 1.27-.585 2.273-.585h1.421v-.601c0-.406-.13-.73-.39-.974-.259-.244-.655-.366-1.189-.366-.387 0-.769.043-1.145.13-.376.086-.764.21-1.165.369v-1.073a7.36 7.36 0 011.087-.301 7.6 7.6 0 01.642-.1c.224-.024.45-.037.677-.037.415 0 .788.046 1.121.137.333.091.614.23.844.417.23.187.407.421.53.704.123.282.185.615.185.998v4.73h-1.067zm-.13-3.124h-1.51c-.296 0-.552.03-.766.09-.214.059-.39.143-.526.252-.137.11-.238.24-.304.393-.067.153-.1.325-.1.516 0 .133.02.259.062.38.041.12.107.228.198.321.091.093.21.168.356.222.145.055.323.082.533.082.273 0 .587-.083.94-.25.353-.166.726-.429 1.117-.789v-1.217zm8.313 3.124v-4.928c0-.214-.008-.39-.024-.527a1.2 1.2 0 00-.075-.324.348.348 0 00-.13-.168.43.43 0 00-.448.034c-.077.055-.16.144-.25.267a4.216 4.216 0 00-.293.489 30.3 30.3 0 00-.38.748v4.41h-1.087v-4.8c0-.25-.008-.453-.023-.608a1.42 1.42 0 00-.076-.362.34.34 0 00-.133-.178.431.431 0 00-.43.02.988.988 0 00-.243.247c-.09.118-.188.28-.298.485-.109.205-.239.467-.39.786v4.41h-1.093v-6.864h.91l.054 1.306c.118-.26.233-.481.345-.663.112-.183.227-.33.345-.441.119-.112.245-.194.38-.246.134-.053.283-.079.447-.079.37 0 .65.12.841.362.192.242.287.616.287 1.122.11-.237.217-.448.322-.633a2.31 2.31 0 01.338-.465c.12-.125.254-.22.4-.287.146-.066.314-.099.506-.099.861 0 1.292.663 1.292 1.99v4.996h-1.094zm8.6-3.794c0 .17-.003.31-.007.424a6.37 6.37 0 01-.02.322h-4.82c0 .701.196 1.24.588 1.616.392.376.957.564 1.695.564.2 0 .401-.008.602-.024.2-.016.394-.037.58-.065.188-.027.366-.058.537-.092.171-.034.33-.072.475-.113v.978a9.161 9.161 0 01-2.365.308c-.588 0-1.094-.08-1.517-.24a2.597 2.597 0 01-1.043-.694 2.857 2.857 0 01-.601-1.114 5.273 5.273 0 01-.195-1.494c0-.483.07-.94.208-1.37a3.44 3.44 0 01.609-1.135c.266-.326.593-.584.98-.776a2.94 2.94 0 011.32-.287c.478 0 .902.075 1.271.226.37.15.68.363.934.639.252.276.444.61.574 1.005.13.394.195.835.195 1.322zm-1.238-.17a2.593 2.593 0 00-.089-.838 1.763 1.763 0 00-.338-.653 1.576 1.576 0 00-.57-.427 1.916 1.916 0 00-.794-.154c-.26 0-.496.05-.71.15-.215.101-.4.242-.554.425a2.19 2.19 0 00-.376.656 3.026 3.026 0 00-.178.84h3.61z"/><path id=":" fill="#7E7C7B" d="M79.714 240.912c.141 0 .276.029.403.086a1.107 1.107 0 01.564.564.978.978 0 01.086.403.971.971 0 01-.086.407 1.12 1.12 0 01-.229.331 1.058 1.058 0 01-.738.308c-.146 0-.282-.028-.407-.082a1.07 1.07 0 01-.557-.557 1.006 1.006 0 01-.082-.407 1.058 1.058 0 01.308-.738 1.12 1.12 0 01.331-.23.971.971 0 01.407-.085zm0 5.01c.141 0 .276.03.403.086a1.107 1.107 0 01.564.564.978.978 0 01.086.404.971.971 0 01-.086.406 1.12 1.12 0 01-.229.332 1.058 1.058 0 01-.738.307c-.146 0-.282-.027-.407-.082a1.07 1.07 0 01-.557-.557 1.006 1.006 0 01-.082-.406 1.058 1.058 0 01.308-.738 1.12 1.12 0 01.331-.23.971.971 0 01.407-.085z"/><path id="'Alex'" fill="#478964" d="M95.895 238.24l-.199 3.205h-1.175l-.192-3.206h1.566zm10.69 9.658h-1.325l-.622-1.948h-3.72l-.628 1.948h-1.265l2.967-8.934h1.668l2.926 8.934zm-2.296-3.035l-1.51-4.778-1.511 4.778h3.021zm5.797-5.646h-2.03v-.978h3.233v8.668h2.044v.991h-5.503v-.99h2.256v-7.691zm11.156 4.887c0 .17-.002.31-.007.424a6.372 6.372 0 01-.02.322h-4.82c0 .701.196 1.24.588 1.616.392.376.957.564 1.696.564.2 0 .4-.008.601-.024.2-.016.394-.037.581-.065.187-.027.366-.058.537-.092.17-.034.33-.072.475-.113v.978a9.161 9.161 0 01-2.365.308c-.588 0-1.094-.08-1.518-.24a2.597 2.597 0 01-1.042-.694 2.857 2.857 0 01-.602-1.114 5.273 5.273 0 01-.195-1.494c0-.483.07-.94.209-1.37a3.44 3.44 0 01.608-1.135c.267-.326.594-.584.981-.776a2.94 2.94 0 011.32-.287c.478 0 .902.075 1.271.226.37.15.68.363.933.639s.444.61.574 1.005c.13.394.195.835.195 1.322zm-1.237-.17a2.593 2.593 0 00-.089-.838 1.763 1.763 0 00-.338-.653 1.576 1.576 0 00-.571-.427 1.916 1.916 0 00-.793-.154c-.26 0-.497.05-.711.15-.214.101-.399.242-.554.425a2.19 2.19 0 00-.376.656 3.026 3.026 0 00-.177.84h3.609zm9.324 3.964h-1.579l-1.853-2.618-1.832 2.618h-1.538l2.66-3.445-2.537-3.418h1.525l1.804 2.639 1.771-2.639h1.47l-2.577 3.445 2.686 3.418zm5.052-9.659l-.198 3.206h-1.176l-.192-3.206h1.566z"/><path id="," fill="#7E7C7B" d="M139.07 249.3c.233.009.458-.012.677-.062a2.02 2.02 0 00.578-.222c.166-.098.3-.22.4-.366a.86.86 0 00.15-.499.95.95 0 00-.1-.464 2.238 2.238 0 00-.221-.329 2.438 2.438 0 01-.222-.32.91.91 0 01-.1-.459.915.915 0 01.223-.588.857.857 0 01.287-.212 1.12 1.12 0 01.875.017c.148.066.278.168.39.305.111.136.2.307.266.512.066.205.1.447.1.725 0 .378-.07.742-.21 1.09a2.657 2.657 0 01-.621.926c-.276.27-.62.484-1.033.643-.412.16-.892.24-1.439.24v-.937z"/><path id="salary" fill="#181717" d="M51.604 263.025a1.634 1.634 0 01-.458 1.16 2.084 2.084 0 01-.492.378 3.272 3.272 0 01-.598.26c-.212.069-.43.119-.653.15a4.638 4.638 0 01-.656.048 12.3 12.3 0 01-1.282-.061 8.646 8.646 0 01-1.145-.198v-1.094c.401.114.8.2 1.197.26.396.059.79.089 1.182.089.57 0 .991-.078 1.265-.233.273-.155.41-.376.41-.663a.812.812 0 00-.065-.331.753.753 0 00-.236-.28 2.254 2.254 0 00-.53-.278 11.81 11.81 0 00-.98-.328 6.963 6.963 0 01-.858-.31 2.877 2.877 0 01-.68-.414 1.776 1.776 0 01-.452-.56 1.649 1.649 0 01-.164-.76 1.744 1.744 0 01.588-1.264c.214-.196.504-.36.868-.49.365-.129.82-.194 1.367-.194.27 0 .568.015.896.045.328.03.67.08 1.025.153v1.06a9.803 9.803 0 00-1.063-.202 6.926 6.926 0 00-.871-.065c-.296 0-.546.023-.749.069a1.553 1.553 0 00-.492.188.734.734 0 00-.27.28.748.748 0 00-.082.345c0 .123.024.235.072.335.048.1.136.197.266.29.13.094.311.187.544.28.232.094.535.196.909.305.406.119.747.243 1.025.373.278.13.504.274.677.434.173.16.298.34.373.54.075.2.112.428.112.683zm6.672 1.873l-.027-.922c-.374.369-.753.635-1.138.8-.385.163-.79.245-1.214.245-.391 0-.726-.05-1.004-.15a1.883 1.883 0 01-.687-.413 1.603 1.603 0 01-.397-.62 2.289 2.289 0 01-.126-.772c0-.688.256-1.227.769-1.616.512-.39 1.27-.585 2.273-.585h1.421v-.601c0-.406-.13-.73-.39-.974-.259-.244-.655-.366-1.189-.366-.387 0-.769.043-1.145.13-.376.086-.764.21-1.165.369v-1.073a7.36 7.36 0 011.087-.301 7.6 7.6 0 01.642-.1c.224-.024.45-.037.677-.037.415 0 .788.046 1.121.137.333.091.614.23.844.417.23.187.407.421.53.704.123.282.185.615.185.998v4.73h-1.067zm-.13-3.124h-1.51c-.296 0-.552.03-.766.09-.214.059-.39.143-.526.252-.137.11-.238.24-.304.393-.067.153-.1.325-.1.516 0 .133.02.259.062.38.041.12.107.228.198.321.091.093.21.168.356.222.145.055.323.082.533.082.273 0 .587-.083.94-.25.353-.166.726-.429 1.117-.789v-1.217zm5.756-5.557h-2.03v-.978h3.233v8.668h2.044v.991h-5.503v-.99h2.256v-7.691zm9.769 8.681l-.027-.922c-.374.369-.754.635-1.139.8-.385.163-.79.245-1.213.245-.392 0-.727-.05-1.005-.15a1.883 1.883 0 01-.687-.413 1.603 1.603 0 01-.396-.62 2.289 2.289 0 01-.127-.772c0-.688.256-1.227.77-1.616.512-.39 1.27-.585 2.272-.585h1.422v-.601c0-.406-.13-.73-.39-.974s-.656-.366-1.19-.366c-.386 0-.768.043-1.144.13-.376.086-.765.21-1.166.369v-1.073a7.36 7.36 0 011.087-.301 7.6 7.6 0 01.643-.1c.223-.024.449-.037.677-.037.414 0 .788.046 1.12.137.333.091.615.23.845.417.23.187.407.421.53.704.123.282.184.615.184.998v4.73h-1.066zm-.13-3.124h-1.51c-.297 0-.552.03-.766.09-.215.059-.39.143-.527.252-.136.11-.238.24-.304.393-.066.153-.099.325-.099.516 0 .133.02.259.061.38.042.12.108.228.199.321.09.093.21.168.355.222.146.055.324.082.533.082.274 0 .587-.083.94-.25.354-.166.726-.429 1.118-.789v-1.217zm3.698-3.739h1.087l.034 1.265c.406-.488.806-.841 1.2-1.06a2.436 2.436 0 011.193-.328c.71 0 1.25.23 1.617.69.366.46.536 1.144.509 2.051h-1.203c.013-.601-.074-1.038-.263-1.309-.19-.27-.466-.406-.831-.406-.16 0-.32.028-.482.085a1.947 1.947 0 00-.499.273 4.47 4.47 0 00-.543.482 8.898 8.898 0 00-.616.711v4.41H77.24v-6.864zm13.522 0l-2.338 6.139a12.037 12.037 0 01-.749 1.613 4.784 4.784 0 01-.844 1.11c-.305.29-.64.503-1.005.64a3.463 3.463 0 01-1.223.205 6.811 6.811 0 01-.636-.027v-1.08c.1.013.21.026.328.037.118.012.244.017.376.017.219 0 .423-.031.612-.095s.368-.168.536-.311c.169-.144.33-.33.486-.557.155-.228.305-.504.45-.828l-2.74-6.863h1.353l1.737 4.54.348 1.066.397-1.094 1.606-4.512h1.306z"/><path id=":" fill="#7E7C7B" d="M95.108 257.912c.142 0 .276.029.404.086a1.107 1.107 0 01.564.564.978.978 0 01.085.403.971.971 0 01-.085.407 1.12 1.12 0 01-.23.331 1.058 1.058 0 01-.738.308c-.145 0-.281-.028-.406-.082a1.07 1.07 0 01-.557-.557 1.006 1.006 0 01-.082-.407 1.058 1.058 0 01.308-.738 1.12 1.12 0 01.33-.23.971.971 0 01.407-.085zm0 5.01c.142 0 .276.03.404.086a1.107 1.107 0 01.564.564.978.978 0 01.085.404.971.971 0 01-.085.406 1.12 1.12 0 01-.23.332 1.058 1.058 0 01-.738.307c-.145 0-.281-.027-.406-.082a1.07 1.07 0 01-.557-.557 1.006 1.006 0 01-.082-.406 1.058 1.058 0 01.308-.738 1.12 1.12 0 01.33-.23.971.971 0 01.407-.085z"/><path id="1800" fill="#A7333A" d="M113.47 264.898h-5.613v-1.107h2.297v-6.521l-2.14 1.162-.437-1.012 2.844-1.497h1.053v7.868h1.996v1.107zm7.772-2.242c0 .379-.077.715-.232 1.009a2.13 2.13 0 01-.65.741c-.278.2-.606.353-.984.458a4.594 4.594 0 01-1.23.157c-.488 0-.918-.054-1.29-.164a2.768 2.768 0 01-.932-.458 1.93 1.93 0 01-.759-1.586c0-.546.153-1.018.458-1.415.305-.396.777-.756 1.415-1.08-.583-.296-1.01-.625-1.278-.987a2.038 2.038 0 01-.404-1.248 2.047 2.047 0 01.715-1.552c.24-.21.539-.377.899-.502.36-.126.784-.188 1.271-.188.46 0 .865.049 1.214.147.348.098.641.238.878.42s.415.404.533.663c.119.26.178.55.178.868 0 .52-.145.962-.434 1.327-.29.364-.7.683-1.234.957.264.132.51.278.738.437a3.2 3.2 0 01.595.533c.169.196.3.415.393.657.093.241.14.51.14.806zm-1.415-4.62c0-.406-.142-.708-.427-.907-.285-.198-.685-.297-1.2-.297-.51 0-.908.098-1.193.294-.285.196-.427.49-.427.882a1.175 1.175 0 00.42.916c.144.132.323.262.537.39.214.127.47.257.766.39.515-.242.898-.494 1.148-.756a1.28 1.28 0 00.376-.913zm.123 4.71c0-.17-.027-.334-.082-.493a1.367 1.367 0 00-.294-.472 2.951 2.951 0 00-.567-.465 6.682 6.682 0 00-.903-.478c-.31.15-.57.3-.782.448a2.698 2.698 0 00-.513.45c-.13.153-.222.312-.277.476a1.632 1.632 0 00-.082.52c0 .205.045.386.133.543.09.157.211.29.366.4.155.11.34.191.554.246.214.055.447.082.697.082.242 0 .47-.025.684-.075.214-.05.4-.127.557-.23.157-.102.281-.232.372-.389.092-.157.137-.345.137-.564zm9.195-2.311c0 .683-.069 1.306-.206 1.87a4.33 4.33 0 01-.622 1.448 2.925 2.925 0 01-1.035.937c-.413.221-.897.331-1.453.331-.478 0-.914-.09-1.306-.27a2.594 2.594 0 01-1.004-.83c-.278-.374-.493-.85-.643-1.429-.15-.579-.226-1.264-.226-2.057 0-.684.07-1.308.209-1.873.139-.566.346-1.05.622-1.453s.62-.716 1.036-.937c.414-.22.897-.331 1.449-.331.478 0 .914.09 1.305.27.392.18.727.458 1.005.834.278.376.493.853.643 1.432.15.579.226 1.265.226 2.058zm-1.204.04c0-.154-.005-.308-.017-.46a23.67 23.67 0 00-.037-.449l-3.78 2.81c.068.237.154.456.26.656.104.2.23.373.379.516.148.144.316.256.505.335.19.08.405.12.646.12.31 0 .592-.075.845-.226.253-.15.468-.373.646-.67.177-.296.314-.664.41-1.104.096-.44.143-.949.143-1.527zm-4.087-.081c0 .14 0 .282.003.423.002.142.01.278.024.41l3.78-2.795a3.198 3.198 0 00-.26-.636 2.016 2.016 0 00-.376-.496 1.612 1.612 0 00-.499-.324 1.628 1.628 0 00-.629-.117c-.31 0-.59.076-.844.226-.253.15-.468.375-.646.673a3.697 3.697 0 00-.41 1.108 7.24 7.24 0 00-.143 1.528zm12.988.04c0 .684-.069 1.307-.205 1.87a4.33 4.33 0 01-.622 1.45 2.925 2.925 0 01-1.036.936c-.412.221-.897.331-1.453.331-.478 0-.913-.09-1.305-.27a2.594 2.594 0 01-1.005-.83c-.278-.374-.492-.85-.643-1.429-.15-.579-.225-1.264-.225-2.057 0-.684.07-1.308.208-1.873.14-.566.347-1.05.622-1.453.276-.403.621-.716 1.036-.937.415-.22.898-.331 1.45-.331.478 0 .913.09 1.305.27.392.18.727.458 1.005.834.278.376.492.853.642 1.432.15.579.226 1.265.226 2.058zm-1.203.042c0-.155-.006-.31-.017-.462a23.67 23.67 0 00-.038-.448l-3.78 2.81c.068.237.155.456.26.656.104.2.23.373.379.516.148.144.317.256.506.335.189.08.404.12.646.12.31 0 .591-.075.844-.226.253-.15.468-.373.646-.67.178-.296.314-.664.41-1.104.096-.44.144-.949.144-1.527zm-4.088-.082c0 .14 0 .282.003.423.002.142.01.278.024.41l3.78-2.795a3.198 3.198 0 00-.26-.636 2.016 2.016 0 00-.375-.496 1.612 1.612 0 00-.5-.324 1.628 1.628 0 00-.628-.117c-.31 0-.592.076-.845.226-.252.15-.468.375-.646.673a3.697 3.697 0 00-.41 1.108 7.24 7.24 0 00-.143 1.528z"/><path id="}]," fill="#7E7C7B" d="M31.247 272h.506c.88 0 1.533.206 1.962.619.428.412.642 1.038.642 1.876v1.58c0 .223.025.422.076.597.05.176.137.324.263.445.125.12.293.213.502.277.21.063.472.095.786.095h.294v.95h-.294c-.332 0-.605.028-.817.082a1.116 1.116 0 00-.495.25.88.88 0 00-.246.427 2.438 2.438 0 00-.069.615v2.393c0 .383-.045.728-.136 1.036-.091.307-.24.57-.445.786a1.993 1.993 0 01-.806.499c-.333.116-.739.174-1.217.174h-.506v-.957h.41c1.053 0 1.58-.513 1.58-1.538v-2.365c0-1.112.48-1.737 1.442-1.873-.971-.105-1.456-.732-1.456-1.88v-1.566c0-1.043-.522-1.565-1.566-1.565h-.41V272zm11.47 12.701h-3.37v-.957h2.222v-10.787h-2.221V272h3.37v12.701zm3.986-1.401c.233.009.458-.012.677-.062a2.02 2.02 0 00.578-.222c.166-.098.3-.22.4-.366a.86.86 0 00.15-.499.95.95 0 00-.1-.464 2.238 2.238 0 00-.221-.329 2.438 2.438 0 01-.223-.32.91.91 0 01-.099-.459.915.915 0 01.222-.588.857.857 0 01.288-.212 1.12 1.12 0 01.875.017c.148.066.278.168.39.305.11.136.2.307.266.512.066.205.099.447.099.725 0 .378-.07.742-.209 1.09a2.657 2.657 0 01-.622.926c-.275.27-.62.484-1.032.643-.412.16-.892.24-1.439.24v-.937z"/><path id="internals" fill="#181717" d="M33.113 310.02h-2.03v-.985h3.233v5.872h2.044v.991h-5.503v-.99h2.256v-4.888zm.417-3.863c.132 0 .255.024.37.072a.893.893 0 01.297.202.919.919 0 01.27.663.96.96 0 01-.27.663.893.893 0 01-.298.201.944.944 0 01-.369.072.944.944 0 01-.369-.072.893.893 0 01-.297-.201.96.96 0 01-.27-.663.919.919 0 01.27-.663.893.893 0 01.297-.202.944.944 0 01.37-.072zm4.943 2.878h1.06l.047 1.108c.2-.237.394-.435.581-.592.187-.157.37-.283.55-.38a2.06 2.06 0 01.55-.2c.188-.04.381-.059.582-.059.706 0 1.24.209 1.603.626.362.417.543 1.044.543 1.883v4.477H42.8v-4.381c0-.538-.1-.936-.3-1.193-.2-.258-.499-.387-.895-.387-.146 0-.289.022-.428.065a1.557 1.557 0 00-.434.226c-.15.107-.313.252-.489.434-.175.182-.372.41-.59.684v4.552h-1.19v-6.863zm13.227 6.768a5.793 5.793 0 01-.834.147 8.52 8.52 0 01-.875.044c-.861 0-1.504-.195-1.928-.584-.423-.39-.635-.988-.635-1.795v-3.582h-1.921v-.998h1.92v-1.887l1.19-.307v2.194H51.7v.998h-3.083v3.487c0 .492.131.86.393 1.104.262.243.649.365 1.159.365.219 0 .458-.017.718-.051.26-.034.53-.088.813-.16v1.025zm7.964-3.699c0 .17-.002.31-.007.424a6.37 6.37 0 01-.02.322h-4.82c0 .701.196 1.24.588 1.616.392.376.957.564 1.696.564.2 0 .4-.008.601-.024.2-.016.394-.037.581-.065.187-.027.366-.058.537-.092.17-.034.33-.072.475-.113v.978a9.161 9.161 0 01-2.365.308c-.588 0-1.094-.08-1.518-.24a2.597 2.597 0 01-1.042-.694 2.857 2.857 0 01-.602-1.114 5.273 5.273 0 01-.195-1.494c0-.483.07-.94.209-1.37a3.44 3.44 0 01.608-1.135c.267-.326.594-.584.981-.776a2.94 2.94 0 011.32-.287c.478 0 .902.075 1.27.226.37.15.681.363.934.639s.444.61.574 1.005c.13.394.195.835.195 1.322zm-1.237-.17a2.593 2.593 0 00-.09-.838 1.763 1.763 0 00-.337-.653 1.576 1.576 0 00-.571-.427 1.916 1.916 0 00-.793-.154c-.26 0-.497.05-.711.15-.214.101-.399.242-.554.425a2.19 2.19 0 00-.376.656 3.026 3.026 0 00-.178.84h3.61zm3.418-2.899h1.087l.034 1.265c.405-.488.805-.841 1.2-1.06a2.436 2.436 0 011.192-.328c.711 0 1.25.23 1.617.69.367.46.537 1.144.51 2.051H66.28c.014-.601-.074-1.038-.263-1.309-.19-.27-.466-.406-.83-.406-.16 0-.32.028-.482.085a1.947 1.947 0 00-.5.273 4.47 4.47 0 00-.543.482 8.898 8.898 0 00-.615.711v4.41h-1.203v-6.864zm7.417 0h1.06l.047 1.108c.2-.237.394-.435.581-.592.187-.157.37-.283.55-.38a2.06 2.06 0 01.55-.2c.188-.04.381-.059.582-.059.706 0 1.24.209 1.603.626.362.417.543 1.044.543 1.883v4.477h-1.19v-4.381c0-.538-.1-.936-.3-1.193-.2-.258-.499-.387-.895-.387-.146 0-.289.022-.428.065a1.557 1.557 0 00-.434.226c-.15.107-.313.252-.489.434-.175.182-.372.41-.59.684v4.552h-1.19v-6.863zm12.106 6.863l-.027-.922c-.374.369-.753.635-1.138.8-.385.163-.79.245-1.214.245-.392 0-.727-.05-1.005-.15a1.883 1.883 0 01-.687-.413 1.603 1.603 0 01-.396-.62 2.289 2.289 0 01-.127-.772c0-.688.257-1.227.77-1.616.512-.39 1.27-.585 2.272-.585h1.422v-.601c0-.406-.13-.73-.39-.974s-.656-.366-1.189-.366c-.387 0-.769.043-1.145.13-.376.086-.764.21-1.165.369v-1.073a7.36 7.36 0 011.087-.301 7.6 7.6 0 01.642-.1c.223-.024.449-.037.677-.037.415 0 .788.046 1.121.137.333.091.614.23.844.417.23.187.407.421.53.704.123.282.185.615.185.998v4.73h-1.067zm-.13-3.124h-1.51c-.297 0-.552.03-.766.09-.214.059-.39.143-.526.252-.137.11-.239.24-.305.393-.066.153-.099.325-.099.516 0 .133.02.259.062.38.04.12.107.228.198.321.091.093.21.168.355.222.146.055.324.082.534.082.273 0 .586-.083.94-.25.353-.166.725-.429 1.117-.789v-1.217zm5.756-5.557h-2.03v-.978h3.233v8.668h2.044v.991h-5.503v-.99h2.256v-7.691zm10.794 6.808a1.634 1.634 0 01-.458 1.16 2.084 2.084 0 01-.492.378 3.272 3.272 0 01-.598.26c-.212.069-.43.119-.653.15a4.638 4.638 0 01-.656.048 12.3 12.3 0 01-1.282-.061 8.646 8.646 0 01-1.145-.198v-1.094c.4.114.8.2 1.196.26.397.059.79.089 1.183.089.57 0 .991-.078 1.264-.233.274-.155.41-.376.41-.663a.812.812 0 00-.064-.331.753.753 0 00-.236-.28 2.254 2.254 0 00-.53-.278 11.81 11.81 0 00-.98-.328 6.963 6.963 0 01-.859-.31 2.877 2.877 0 01-.68-.414 1.776 1.776 0 01-.451-.56 1.649 1.649 0 01-.164-.76 1.744 1.744 0 01.588-1.264c.214-.196.503-.36.868-.49.364-.129.82-.194 1.367-.194.269 0 .567.015.896.045.328.03.67.08 1.025.153v1.06a9.803 9.803 0 00-1.063-.202 6.926 6.926 0 00-.872-.065c-.296 0-.545.023-.748.069a1.553 1.553 0 00-.492.188.734.734 0 00-.27.28.748.748 0 00-.082.345c0 .123.023.235.071.335.048.1.137.197.267.29.13.094.311.187.543.28.233.094.536.196.91.305.405.119.747.243 1.025.373.278.13.504.274.677.434.173.16.297.34.372.54.075.2.113.428.113.683z"/><path id=":[{" fill="#7E7C7B" d="M102.806 308.912c.14 0 .275.029.403.086a1.107 1.107 0 01.564.564.978.978 0 01.085.403.971.971 0 01-.085.407 1.12 1.12 0 01-.23.331 1.058 1.058 0 01-.737.308c-.146 0-.282-.028-.407-.082a1.07 1.07 0 01-.557-.557 1.006 1.006 0 01-.082-.407 1.058 1.058 0 01.308-.738 1.12 1.12 0 01.33-.23.971.971 0 01.408-.085zm0 5.01c.14 0 .275.03.403.086a1.107 1.107 0 01.564.564.978.978 0 01.085.404.971.971 0 01-.085.406 1.12 1.12 0 01-.23.332 1.058 1.058 0 01-.737.307c-.146 0-.282-.027-.407-.082a1.07 1.07 0 01-.557-.557 1.006 1.006 0 01-.082-.406 1.058 1.058 0 01.308-.738 1.12 1.12 0 01.33-.23.971.971 0 01.408-.085zm17.274 4.78h-3.37V306h3.37v.957h-2.235v10.787h2.235v.957zm8.1 0h-.505c-.88 0-1.534-.207-1.962-.62-.428-.412-.643-1.037-.643-1.876v-2.352a2.18 2.18 0 00-.075-.598.978.978 0 00-.263-.444 1.224 1.224 0 00-.5-.277 2.706 2.706 0 00-.782-.096h-.294v-.95h.294c.333 0 .604-.027.814-.082.21-.054.373-.138.492-.25a.88.88 0 00.246-.427c.046-.173.068-.378.068-.615v-1.62c0-.383.046-.728.137-1.036.091-.307.24-.57.448-.786.207-.216.476-.382.806-.499.33-.116.735-.174 1.214-.174h.506v.957h-.404c-1.057 0-1.586.513-1.586 1.538v1.593c0 1.112-.48 1.738-1.442 1.88.97.095 1.456.72 1.456 1.873v2.338c0 1.043.524 1.565 1.572 1.565h.404v.957z"/><path id="name" fill="#181717" d="M46.17 326.035h1.06l.047 1.108c.2-.237.395-.435.581-.592.187-.157.37-.283.55-.38a2.06 2.06 0 01.551-.2c.187-.04.38-.059.581-.059.706 0 1.24.209 1.603.626.362.417.544 1.044.544 1.883v4.477h-1.19v-4.381c0-.538-.1-.936-.3-1.193-.201-.258-.5-.387-.896-.387-.146 0-.288.022-.427.065a1.557 1.557 0 00-.435.226c-.15.107-.313.252-.488.434-.176.182-.373.41-.592.684v4.552h-1.19v-6.863zm12.106 6.863l-.027-.922c-.374.369-.753.635-1.138.8-.385.163-.79.245-1.214.245-.391 0-.726-.05-1.004-.15a1.883 1.883 0 01-.687-.413 1.603 1.603 0 01-.397-.62 2.289 2.289 0 01-.126-.772c0-.688.256-1.227.769-1.616.512-.39 1.27-.585 2.273-.585h1.421v-.601c0-.406-.13-.73-.39-.974-.259-.244-.655-.366-1.189-.366-.387 0-.769.043-1.145.13-.376.086-.764.21-1.165.369v-1.073a7.36 7.36 0 011.087-.301 7.6 7.6 0 01.642-.1c.224-.024.45-.037.677-.037.415 0 .788.046 1.121.137.333.091.614.23.844.417.23.187.407.421.53.704.123.282.185.615.185.998v4.73h-1.067zm-.13-3.124h-1.51c-.296 0-.552.03-.766.09-.214.059-.39.143-.526.252-.137.11-.238.24-.304.393-.067.153-.1.325-.1.516 0 .133.02.259.062.38.041.12.107.228.198.321.091.093.21.168.356.222.145.055.323.082.533.082.273 0 .587-.083.94-.25.353-.166.726-.429 1.117-.789v-1.217zm8.313 3.124v-4.928c0-.214-.008-.39-.024-.527a1.2 1.2 0 00-.075-.324.348.348 0 00-.13-.168.43.43 0 00-.448.034c-.077.055-.16.144-.25.267a4.216 4.216 0 00-.293.489 30.3 30.3 0 00-.38.748v4.41h-1.087v-4.8c0-.25-.008-.453-.023-.608a1.42 1.42 0 00-.076-.362.34.34 0 00-.133-.178.431.431 0 00-.43.02.988.988 0 00-.243.247c-.09.118-.188.28-.298.485-.109.205-.239.467-.39.786v4.41h-1.093v-6.864h.91l.054 1.306c.118-.26.233-.481.345-.663.112-.183.227-.33.345-.441.119-.112.245-.194.38-.246.134-.053.283-.079.447-.079.37 0 .65.12.841.362.192.242.287.616.287 1.122.11-.237.217-.448.322-.633a2.31 2.31 0 01.338-.465c.12-.125.254-.22.4-.287.146-.066.314-.099.506-.099.861 0 1.292.663 1.292 1.99v4.996h-1.094zm8.6-3.794c0 .17-.003.31-.007.424a6.37 6.37 0 01-.02.322h-4.82c0 .701.196 1.24.588 1.616.392.376.957.564 1.695.564.2 0 .401-.008.602-.024.2-.016.394-.037.58-.065.188-.027.366-.058.537-.092.171-.034.33-.072.475-.113v.978a9.161 9.161 0 01-2.365.308c-.588 0-1.094-.08-1.517-.24a2.597 2.597 0 01-1.043-.694 2.857 2.857 0 01-.601-1.114 5.273 5.273 0 01-.195-1.494c0-.483.07-.94.208-1.37a3.44 3.44 0 01.609-1.135c.266-.326.593-.584.98-.776a2.94 2.94 0 011.32-.287c.478 0 .902.075 1.271.226.37.15.68.363.934.639.252.276.444.61.574 1.005.13.394.195.835.195 1.322zm-1.238-.17a2.593 2.593 0 00-.089-.838 1.763 1.763 0 00-.338-.653 1.576 1.576 0 00-.57-.427 1.916 1.916 0 00-.794-.154c-.26 0-.496.05-.71.15-.215.101-.4.242-.554.425a2.19 2.19 0 00-.376.656 3.026 3.026 0 00-.178.84h3.61z"/><path id=":" fill="#7E7C7B" d="M79.714 325.912c.141 0 .276.029.403.086a1.107 1.107 0 01.564.564.978.978 0 01.086.403.971.971 0 01-.086.407 1.12 1.12 0 01-.229.331 1.058 1.058 0 01-.738.308c-.146 0-.282-.028-.407-.082a1.07 1.07 0 01-.557-.557 1.006 1.006 0 01-.082-.407 1.058 1.058 0 01.308-.738 1.12 1.12 0 01.331-.23.971.971 0 01.407-.085zm0 5.01c.141 0 .276.03.403.086a1.107 1.107 0 01.564.564.978.978 0 01.086.404.971.971 0 01-.086.406 1.12 1.12 0 01-.229.332 1.058 1.058 0 01-.738.307c-.146 0-.282-.027-.407-.082a1.07 1.07 0 01-.557-.557 1.006 1.006 0 01-.082-.406 1.058 1.058 0 01.308-.738 1.12 1.12 0 01.331-.23.971.971 0 01.407-.085z"/><path id="'Jack'" fill="#478964" d="M95.895 323.24l-.199 3.205h-1.175l-.192-3.206h1.566zm9.057.724v6.207c0 .383-.057.746-.17 1.09a2.47 2.47 0 01-.52.9 2.49 2.49 0 01-.875.608c-.351.15-.764.225-1.238.225-.177 0-.358-.012-.543-.037a4.8 4.8 0 01-.533-.103 3.619 3.619 0 01-.482-.157 2.214 2.214 0 01-.39-.202v-1.224c.283.206.596.367.94.486.344.118.685.178 1.022.178.497 0 .88-.152 1.149-.455.268-.303.403-.74.403-1.31v-5.153h-3.398v-1.053h4.635zm7.205 8.934l-.027-.922c-.374.369-.753.635-1.138.8-.385.163-.79.245-1.214.245-.392 0-.727-.05-1.005-.15a1.883 1.883 0 01-.687-.413 1.603 1.603 0 01-.396-.62 2.289 2.289 0 01-.127-.772c0-.688.257-1.227.77-1.616.512-.39 1.27-.585 2.272-.585h1.422v-.601c0-.406-.13-.73-.39-.974s-.656-.366-1.189-.366c-.387 0-.769.043-1.145.13-.376.086-.764.21-1.165.369v-1.073a7.36 7.36 0 011.087-.301 7.6 7.6 0 01.642-.1c.223-.024.45-.037.677-.037.415 0 .788.046 1.121.137.333.091.614.23.844.417.23.187.407.421.53.704.123.282.185.615.185.998v4.73h-1.067zm-.13-3.124h-1.51c-.297 0-.552.03-.766.09-.214.059-.39.143-.526.252-.137.11-.239.24-.305.393-.066.153-.099.325-.099.516 0 .133.02.259.062.38.04.12.107.228.198.321.091.093.21.168.356.222.145.055.323.082.533.082.273 0 .586-.083.94-.25.353-.166.725-.429 1.117-.789v-1.217zm8.75 2.872c-.31.118-.627.206-.953.263a5.845 5.845 0 01-1.009.085c-1.084 0-1.92-.294-2.505-.882-.586-.588-.878-1.447-.878-2.577 0-.542.084-1.034.253-1.476.168-.442.405-.82.71-1.135.306-.315.67-.557 1.094-.728.424-.171.891-.257 1.402-.257.355 0 .688.026.998.076.31.05.606.132.888.246v1.135a3.77 3.77 0 00-.905-.339 4.248 4.248 0 00-.954-.106c-.305 0-.594.058-.865.174-.27.117-.51.284-.714.503a2.38 2.38 0 00-.485.8c-.119.314-.178.67-.178 1.066 0 .83.201 1.45.605 1.863.403.412.962.619 1.678.619a3.897 3.897 0 001.818-.438v1.108zm8.538.252h-1.633l-3.2-3.677v3.677h-1.189v-9.659h1.19v5.934l3.082-3.138h1.573l-3.22 3.165 3.397 3.698zm5.066-9.659l-.198 3.206h-1.176l-.192-3.206h1.566z"/><path id="," fill="#7E7C7B" d="M139.07 334.3c.233.009.458-.012.677-.062a2.02 2.02 0 00.578-.222c.166-.098.3-.22.4-.366a.86.86 0 00.15-.499.95.95 0 00-.1-.464 2.238 2.238 0 00-.221-.329 2.438 2.438 0 01-.222-.32.91.91 0 01-.1-.459.915.915 0 01.223-.588.857.857 0 01.287-.212 1.12 1.12 0 01.875.017c.148.066.278.168.39.305.111.136.2.307.266.512.066.205.1.447.1.725 0 .378-.07.742-.21 1.09a2.657 2.657 0 01-.621.926c-.276.27-.62.484-1.033.643-.412.16-.892.24-1.439.24v-.937z"/><path id="salary" fill="#181717" d="M51.604 348.025a1.634 1.634 0 01-.458 1.16 2.084 2.084 0 01-.492.378 3.272 3.272 0 01-.598.26c-.212.069-.43.119-.653.15a4.638 4.638 0 01-.656.048 12.3 12.3 0 01-1.282-.061 8.646 8.646 0 01-1.145-.198v-1.094c.401.114.8.2 1.197.26.396.059.79.089 1.182.089.57 0 .991-.078 1.265-.233.273-.155.41-.376.41-.663a.812.812 0 00-.065-.331.753.753 0 00-.236-.28 2.254 2.254 0 00-.53-.278 11.81 11.81 0 00-.98-.328 6.963 6.963 0 01-.858-.31 2.877 2.877 0 01-.68-.414 1.776 1.776 0 01-.452-.56 1.649 1.649 0 01-.164-.76 1.744 1.744 0 01.588-1.264c.214-.196.504-.36.868-.49.365-.129.82-.194 1.367-.194.27 0 .568.015.896.045.328.03.67.08 1.025.153v1.06a9.803 9.803 0 00-1.063-.202 6.926 6.926 0 00-.871-.065c-.296 0-.546.023-.749.069a1.553 1.553 0 00-.492.188.734.734 0 00-.27.28.748.748 0 00-.082.345c0 .123.024.235.072.335.048.1.136.197.266.29.13.094.311.187.544.28.232.094.535.196.909.305.406.119.747.243 1.025.373.278.13.504.274.677.434.173.16.298.34.373.54.075.2.112.428.112.683zm6.672 1.873l-.027-.922c-.374.369-.753.635-1.138.8-.385.163-.79.245-1.214.245-.391 0-.726-.05-1.004-.15a1.883 1.883 0 01-.687-.413 1.603 1.603 0 01-.397-.62 2.289 2.289 0 01-.126-.772c0-.688.256-1.227.769-1.616.512-.39 1.27-.585 2.273-.585h1.421v-.601c0-.406-.13-.73-.39-.974-.259-.244-.655-.366-1.189-.366-.387 0-.769.043-1.145.13-.376.086-.764.21-1.165.369v-1.073a7.36 7.36 0 011.087-.301 7.6 7.6 0 01.642-.1c.224-.024.45-.037.677-.037.415 0 .788.046 1.121.137.333.091.614.23.844.417.23.187.407.421.53.704.123.282.185.615.185.998v4.73h-1.067zm-.13-3.124h-1.51c-.296 0-.552.03-.766.09-.214.059-.39.143-.526.252-.137.11-.238.24-.304.393-.067.153-.1.325-.1.516 0 .133.02.259.062.38.041.12.107.228.198.321.091.093.21.168.356.222.145.055.323.082.533.082.273 0 .587-.083.94-.25.353-.166.726-.429 1.117-.789v-1.217zm5.756-5.557h-2.03v-.978h3.233v8.668h2.044v.991h-5.503v-.99h2.256v-7.691zm9.769 8.681l-.027-.922c-.374.369-.754.635-1.139.8-.385.163-.79.245-1.213.245-.392 0-.727-.05-1.005-.15a1.883 1.883 0 01-.687-.413 1.603 1.603 0 01-.396-.62 2.289 2.289 0 01-.127-.772c0-.688.256-1.227.77-1.616.512-.39 1.27-.585 2.272-.585h1.422v-.601c0-.406-.13-.73-.39-.974s-.656-.366-1.19-.366c-.386 0-.768.043-1.144.13-.376.086-.765.21-1.166.369v-1.073a7.36 7.36 0 011.087-.301 7.6 7.6 0 01.643-.1c.223-.024.449-.037.677-.037.414 0 .788.046 1.12.137.333.091.615.23.845.417.23.187.407.421.53.704.123.282.184.615.184.998v4.73h-1.066zm-.13-3.124h-1.51c-.297 0-.552.03-.766.09-.215.059-.39.143-.527.252-.136.11-.238.24-.304.393-.066.153-.099.325-.099.516 0 .133.02.259.061.38.042.12.108.228.199.321.09.093.21.168.355.222.146.055.324.082.533.082.274 0 .587-.083.94-.25.354-.166.726-.429 1.118-.789v-1.217zm3.698-3.739h1.087l.034 1.265c.406-.488.806-.841 1.2-1.06a2.436 2.436 0 011.193-.328c.71 0 1.25.23 1.617.69.366.46.536 1.144.509 2.051h-1.203c.013-.601-.074-1.038-.263-1.309-.19-.27-.466-.406-.831-.406-.16 0-.32.028-.482.085a1.947 1.947 0 00-.499.273 4.47 4.47 0 00-.543.482 8.898 8.898 0 00-.616.711v4.41H77.24v-6.864zm13.522 0l-2.338 6.139a12.037 12.037 0 01-.749 1.613 4.784 4.784 0 01-.844 1.11c-.305.29-.64.503-1.005.64a3.463 3.463 0 01-1.223.205 6.811 6.811 0 01-.636-.027v-1.08c.1.013.21.026.328.037.118.012.244.017.376.017.219 0 .423-.031.612-.095s.368-.168.536-.311c.169-.144.33-.33.486-.557.155-.228.305-.504.45-.828l-2.74-6.863h1.353l1.737 4.54.348 1.066.397-1.094 1.606-4.512h1.306z"/><path id=":" fill="#7E7C7B" d="M95.108 342.912c.142 0 .276.029.404.086a1.107 1.107 0 01.564.564.978.978 0 01.085.403.971.971 0 01-.085.407 1.12 1.12 0 01-.23.331 1.058 1.058 0 01-.738.308c-.145 0-.281-.028-.406-.082a1.07 1.07 0 01-.557-.557 1.006 1.006 0 01-.082-.407 1.058 1.058 0 01.308-.738 1.12 1.12 0 01.33-.23.971.971 0 01.407-.085zm0 5.01c.142 0 .276.03.404.086a1.107 1.107 0 01.564.564.978.978 0 01.085.404.971.971 0 01-.085.406 1.12 1.12 0 01-.23.332 1.058 1.058 0 01-.738.307c-.145 0-.281-.027-.406-.082a1.07 1.07 0 01-.557-.557 1.006 1.006 0 01-.082-.406 1.058 1.058 0 01.308-.738 1.12 1.12 0 01.33-.23.971.971 0 01.407-.085z"/><path id="1300" fill="#A7333A" d="M113.47 349.898h-5.613v-1.107h2.297v-6.521l-2.14 1.162-.437-1.012 2.844-1.497h1.053v7.868h1.996v1.107zm7.601-2.713c0 .391-.08.76-.239 1.104-.16.344-.399.644-.718.902-.319.257-.72.46-1.203.608-.483.148-1.046.222-1.688.222a12.014 12.014 0 01-1.75-.123v-1.066a11.124 11.124 0 001.86.157c.446 0 .827-.04 1.144-.12.317-.08.575-.194.776-.345.2-.15.346-.332.437-.546.092-.215.137-.456.137-.725 0-.246-.055-.46-.164-.643a1.365 1.365 0 00-.461-.458 2.281 2.281 0 00-.711-.277 4.16 4.16 0 00-.906-.092h-1.019v-.977h1.033c.269 0 .513-.036.734-.106.222-.07.41-.172.568-.304.157-.133.278-.296.362-.49.084-.193.127-.413.127-.659 0-.478-.146-.827-.438-1.046-.292-.219-.72-.328-1.285-.328-.3 0-.61.03-.93.089-.319.06-.66.148-1.025.267v-1.04c.155-.054.32-.103.496-.147a7.2 7.2 0 011.049-.177c.173-.016.34-.024.499-.024.474 0 .89.051 1.25.154.36.102.662.25.903.44.242.192.424.424.547.698.123.273.185.58.185.923 0 .51-.131.938-.393 1.285-.262.346-.621.622-1.077.827.232.036.461.11.687.219.225.11.428.25.608.42.18.171.326.373.438.605.111.233.167.49.167.773zm8.074-1.75c0 .683-.069 1.306-.206 1.87a4.33 4.33 0 01-.622 1.448 2.925 2.925 0 01-1.035.937c-.413.221-.897.331-1.453.331-.478 0-.914-.09-1.306-.27a2.594 2.594 0 01-1.004-.83c-.278-.374-.493-.85-.643-1.429-.15-.579-.226-1.264-.226-2.057 0-.684.07-1.308.209-1.873.139-.566.346-1.05.622-1.453s.62-.716 1.036-.937c.414-.22.897-.331 1.449-.331.478 0 .914.09 1.305.27.392.18.727.458 1.005.834.278.376.493.853.643 1.432.15.579.226 1.265.226 2.058zm-1.204.04c0-.154-.005-.308-.017-.46a23.67 23.67 0 00-.037-.449l-3.78 2.81c.068.237.154.456.26.656.104.2.23.373.379.516.148.144.316.256.505.335.19.08.405.12.646.12.31 0 .592-.075.845-.226.253-.15.468-.373.646-.67.177-.296.314-.664.41-1.104.096-.44.143-.949.143-1.527zm-4.087-.081c0 .14 0 .282.003.423.002.142.01.278.024.41l3.78-2.795a3.198 3.198 0 00-.26-.636 2.016 2.016 0 00-.376-.496 1.612 1.612 0 00-.499-.324 1.628 1.628 0 00-.629-.117c-.31 0-.59.076-.844.226-.253.15-.468.375-.646.673a3.697 3.697 0 00-.41 1.108 7.24 7.24 0 00-.143 1.528zm12.988.04c0 .684-.069 1.307-.205 1.87a4.33 4.33 0 01-.622 1.45 2.925 2.925 0 01-1.036.936c-.412.221-.897.331-1.453.331-.478 0-.913-.09-1.305-.27a2.594 2.594 0 01-1.005-.83c-.278-.374-.492-.85-.643-1.429-.15-.579-.225-1.264-.225-2.057 0-.684.07-1.308.208-1.873.14-.566.347-1.05.622-1.453.276-.403.621-.716 1.036-.937.415-.22.898-.331 1.45-.331.478 0 .913.09 1.305.27.392.18.727.458 1.005.834.278.376.492.853.642 1.432.15.579.226 1.265.226 2.058zm-1.203.042c0-.155-.006-.31-.017-.462a23.67 23.67 0 00-.038-.448l-3.78 2.81c.068.237.155.456.26.656.104.2.23.373.379.516.148.144.317.256.506.335.189.08.404.12.646.12.31 0 .591-.075.844-.226.253-.15.468-.373.646-.67.178-.296.314-.664.41-1.104.096-.44.144-.949.144-1.527zm-4.088-.082c0 .14 0 .282.003.423.002.142.01.278.024.41l3.78-2.795a3.198 3.198 0 00-.26-.636 2.016 2.016 0 00-.375-.496 1.612 1.612 0 00-.5-.324 1.628 1.628 0 00-.628-.117c-.31 0-.592.076-.845.226-.252.15-.468.375-.646.673a3.697 3.697 0 00-.41 1.108 7.24 7.24 0 00-.143 1.528z"/><path id="}]}};" fill="#7E7C7B" d="M31.247 357h.506c.88 0 1.533.206 1.962.619.428.412.642 1.038.642 1.876v1.58c0 .223.025.422.076.597.05.176.137.324.263.445.125.12.293.213.502.277.21.063.472.095.786.095h.294v.95h-.294c-.332 0-.605.028-.817.082a1.116 1.116 0 00-.495.25.88.88 0 00-.246.427 2.438 2.438 0 00-.069.615v2.393c0 .383-.045.728-.136 1.036-.091.307-.24.57-.445.786a1.993 1.993 0 01-.806.499c-.333.116-.739.174-1.217.174h-.506v-.957h.41c1.053 0 1.58-.513 1.58-1.538v-2.365c0-1.112.48-1.737 1.442-1.873-.971-.105-1.456-.732-1.456-1.88v-1.566c0-1.043-.522-1.565-1.566-1.565h-.41V357zm11.47 12.701h-3.37v-.957h2.222v-10.787h-2.221V357h3.37v12.701zM15.854 374h.505c.88 0 1.534.206 1.962.619.429.412.643 1.038.643 1.876v1.58c0 .223.025.422.075.597.05.176.138.324.263.445.126.12.293.213.503.277.21.063.471.095.786.095h.294v.95h-.294c-.333 0-.605.028-.817.082a1.116 1.116 0 00-.496.25.88.88 0 00-.246.427 2.438 2.438 0 00-.068.615v2.393c0 .383-.046.728-.137 1.036-.091.307-.24.57-.444.786a1.993 1.993 0 01-.807.499c-.332.116-.738.174-1.217.174h-.505v-.957h.41c1.052 0 1.579-.513 1.579-1.538v-2.365c0-1.112.48-1.737 1.442-1.873-.97-.105-1.456-.732-1.456-1.88v-1.566c0-1.043-.522-1.565-1.565-1.565h-.41V374zM.458 391h.506c.88 0 1.533.206 1.962.619.428.412.642 1.038.642 1.876v1.58c0 .223.025.422.076.597.05.176.137.324.263.445.125.12.293.213.502.277.21.063.472.095.786.095h.294v.95h-.294c-.332 0-.605.028-.817.082a1.116 1.116 0 00-.495.25.88.88 0 00-.246.427 2.438 2.438 0 00-.069.615v2.393c0 .383-.045.728-.136 1.036-.092.307-.24.57-.445.786a1.993 1.993 0 01-.806.499c-.333.116-.739.174-1.217.174H.458v-.957h.41c1.053 0 1.58-.513 1.58-1.538v-2.365c0-1.112.48-1.737 1.442-1.873-.971-.105-1.456-.732-1.456-1.88v-1.566c0-1.043-.522-1.565-1.566-1.565h-.41V391zm7.84 11.3c.233.009.459-.012.678-.062a2.02 2.02 0 00.577-.222c.167-.098.3-.22.4-.366a.86.86 0 00.15-.499.95.95 0 00-.099-.464 2.238 2.238 0 00-.222-.329 2.438 2.438 0 01-.222-.32.91.91 0 01-.1-.459.915.915 0 01.223-.588.857.857 0 01.287-.212 1.12 1.12 0 01.875.017c.148.066.278.168.39.305.112.136.2.307.266.512.067.205.1.447.1.725 0 .378-.07.742-.209 1.09a2.657 2.657 0 01-.622.926c-.276.27-.62.484-1.032.643-.413.16-.892.24-1.44.24v-.937zm2.14-8.388c.142 0 .276.029.404.086a1.107 1.107 0 01.564.564.978.978 0 01.085.403.971.971 0 01-.085.407 1.12 1.12 0 01-.23.331 1.058 1.058 0 01-.738.308c-.145 0-.28-.028-.406-.082a1.07 1.07 0 01-.557-.557 1.006 1.006 0 01-.082-.407 1.058 1.058 0 01.308-.738 1.12 1.12 0 01.33-.23.971.971 0 01.407-.085z"/></g><g id="Group-5" stroke="#C06334" stroke-linecap="square" transform="matrix(-1 0 0 1 105 37)"><path id="Line" d="M.589 1.244h13.948"/><path id="Line-Copy" d="M.589 110.756h13.948"/><path id="Line-Copy-2" d="M15.508 1.244v109.512"/></g><g id="Group-5-Copy-4" stroke="#C06334" stroke-linecap="square" transform="matrix(-1 0 0 1 105 168)"><path id="Line" d="M.589 2.811h13.948"/><path id="Line-Copy" d="M.589 250.189h13.948"/><path id="Line-Copy-2" d="M15.508 2.811v247.378"/></g><g id="Group-5-Copy-3" stroke="#C06334" stroke-linecap="square" transform="matrix(-1 0 0 1 38 9)"><path id="Line" d="M.589 4.722h13.948"/><path id="Line-Copy" d="M.589 420.278h13.948"/><path id="Line-Copy-2" d="M15.508 4.722v415.556"/></g><g id="Group-5-Copy" stroke="#C06334" stroke-linecap="square" transform="matrix(-1 0 0 1 153 189)"><path id="Line" d="M.589 1.244h13.948"/><path id="Line-Copy" d="M.589 110.756h13.948"/><path id="Line-Copy-2" d="M15.508 1.244v109.512"/></g><g id="Group-5-Copy-2" stroke="#C06334" stroke-linecap="square" transform="matrix(-1 0 0 1 153 315)"><path id="Line" d="M.589.844h13.948"/><path id="Line-Copy" d="M.589 75.156h13.948"/><path id="Line-Copy-2" d="M15.508.844v74.312"/></g><path id="Line-Copy-7" fill="#C06334" fill-rule="nonzero" d="M71.5 213.5l-.344 15.649-5.307-2.801-31.465 59.619-.466.884-1.77-.933.468-.885 31.464-59.619-5.305-2.8L71.5 213.5z"/><path id="Line-Copy-8" fill="#C06334" fill-rule="nonzero" d="M129.5 323.5l-5.848 14.519-3.976-4.494-15.513 13.724-.75.663-1.325-1.498.75-.663 15.513-13.724-3.975-4.494L129.5 323.5z"/><path id="Line-Copy-9" fill="#C06334" fill-rule="nonzero" d="M129.5 239.5l-5.848 14.519-3.976-4.494-15.513 13.724-.75.663-1.325-1.498.75-.663 15.513-13.724-3.975-4.494L129.5 239.5z"/><path id="Line" fill="#C06334" fill-rule="nonzero" d="M71.5 110.5l-.344 15.649-5.307-2.801-31.465 59.619-.466.884-1.77-.933.468-.885 31.464-59.619-5.305-2.8L71.5 110.5z"/></g></g></svg> \ No newline at end of file +<<<<<<< HEAD +<svg xmlns="http://www.w3.org/2000/svg" width="293" height="437" viewBox="0 0 293 437"><defs><style>@import url(https://fonts.googleapis.com/css?family=Open+Sans:bold,italic,bolditalic%7CPT+Mono);@font-face{font-family:'PT Mono';font-weight:700;font-style:normal;src:local('PT MonoBold'),url(/font/PTMonoBold.woff2) format('woff2'),url(/font/PTMonoBold.woff) format('woff'),url(/font/PTMonoBold.ttf) format('truetype')}</style></defs><g id="combined" fill="none" fill-rule="evenodd" stroke="none" stroke-width="1"><g id="recursive-salaries.svg"><g id="{" fill-rule="nonzero" transform="translate(130.107 17.102)"><path fill="#7E7C7B" d="M5.024 12.701H4.52c-.88 0-1.534-.206-1.962-.618-.429-.413-.643-1.038-.643-1.877V7.854a2.18 2.18 0 00-.075-.598.978.978 0 00-.263-.444 1.224 1.224 0 00-.5-.277 2.706 2.706 0 00-.782-.096H0v-.95h.294c.333 0 .604-.027.813-.082.21-.054.374-.138.493-.25a.88.88 0 00.246-.427c.045-.173.068-.378.068-.615v-1.62c0-.383.046-.728.137-1.036.09-.307.24-.57.448-.786.207-.216.476-.382.806-.499C3.635.058 4.04 0 4.52 0h.505v.957h-.403c-1.057 0-1.586.513-1.586 1.538v1.593c0 1.112-.48 1.738-1.442 1.88.97.095 1.456.72 1.456 1.873v2.338c0 1.043.524 1.565 1.572 1.565h.403v.957z"/><path id="sales" fill="#181717" d="M20.815 25.025a1.634 1.634 0 01-.458 1.16 2.084 2.084 0 01-.492.378 3.272 3.272 0 01-.598.26c-.212.069-.43.119-.653.15a4.637 4.637 0 01-.656.048 12.3 12.3 0 01-1.282-.061 8.646 8.646 0 01-1.145-.198v-1.094c.401.114.8.2 1.197.26.396.059.79.089 1.182.089.57 0 .991-.078 1.265-.233.273-.155.41-.376.41-.663a.812.812 0 00-.065-.331.753.753 0 00-.236-.28 2.254 2.254 0 00-.53-.278 11.81 11.81 0 00-.98-.328 6.963 6.963 0 01-.858-.31 2.877 2.877 0 01-.68-.414 1.776 1.776 0 01-.452-.56 1.649 1.649 0 01-.164-.76 1.744 1.744 0 01.588-1.264c.214-.196.504-.36.868-.49.365-.129.82-.194 1.367-.194.27 0 .568.015.896.045.328.03.67.08 1.025.153v1.06a9.803 9.803 0 00-1.063-.202 6.926 6.926 0 00-.871-.065c-.297 0-.546.023-.749.069a1.553 1.553 0 00-.492.188.734.734 0 00-.27.28.748.748 0 00-.082.345c0 .123.024.235.072.335.048.1.136.197.266.29.13.094.311.187.544.28.232.094.535.196.909.305.406.119.747.243 1.025.373.278.13.504.274.677.434.173.16.297.34.373.54.075.2.112.428.112.683zm6.672 1.873l-.027-.922c-.374.369-.753.635-1.138.8-.385.163-.79.245-1.214.245-.392 0-.726-.05-1.004-.15a1.883 1.883 0 01-.687-.413 1.603 1.603 0 01-.397-.62 2.289 2.289 0 01-.126-.772c0-.688.256-1.227.769-1.616.512-.39 1.27-.585 2.273-.585h1.421v-.601c0-.406-.13-.73-.39-.974-.259-.244-.655-.366-1.189-.366-.387 0-.769.043-1.145.13-.376.086-.764.21-1.165.369V20.35a7.36 7.36 0 011.087-.301 7.6 7.6 0 01.642-.1c.224-.024.45-.037.677-.037.415 0 .788.046 1.121.137.333.091.614.23.844.417.23.187.407.421.53.704.123.282.185.615.185.998v4.73h-1.067zm-.13-3.124h-1.51c-.297 0-.552.03-.766.09-.214.059-.39.143-.526.252-.137.11-.238.24-.305.393-.066.153-.099.325-.099.516 0 .133.02.259.062.38.04.12.107.228.198.321.091.093.21.168.356.222.145.055.323.082.533.082.273 0 .587-.083.94-.25.353-.166.725-.429 1.117-.789v-1.217zm5.756-5.557h-2.03v-.978h3.233v8.668h2.044v.991h-5.503v-.99h2.256v-7.691zm11.157 4.887c0 .17-.003.31-.007.424a6.37 6.37 0 01-.02.322h-4.82c0 .701.196 1.24.588 1.616.392.376.957.564 1.695.564.2 0 .401-.008.602-.024.2-.016.394-.037.58-.065.188-.027.366-.058.537-.092.171-.034.33-.072.475-.113v.978a9.161 9.161 0 01-2.365.308c-.588 0-1.094-.08-1.517-.24a2.597 2.597 0 01-1.043-.694 2.857 2.857 0 01-.601-1.114 5.273 5.273 0 01-.195-1.494c0-.483.07-.94.208-1.37a3.44 3.44 0 01.609-1.135c.266-.326.593-.584.98-.776a2.94 2.94 0 011.32-.287c.478 0 .902.075 1.271.226.37.15.68.363.933.639s.445.61.575 1.005c.13.394.195.835.195 1.322zm-1.238-.17a2.593 2.593 0 00-.089-.838 1.763 1.763 0 00-.338-.653 1.576 1.576 0 00-.57-.427 1.916 1.916 0 00-.794-.154c-.26 0-.497.05-.71.15-.215.101-.4.242-.554.425a2.19 2.19 0 00-.376.656 3.026 3.026 0 00-.178.84h3.61zm8.572 2.091a1.634 1.634 0 01-.458 1.16 2.084 2.084 0 01-.492.378 3.272 3.272 0 01-.598.26c-.212.069-.43.119-.653.15a4.637 4.637 0 01-.656.048 12.3 12.3 0 01-1.282-.061 8.646 8.646 0 01-1.145-.198v-1.094c.401.114.8.2 1.197.26.396.059.79.089 1.182.089.57 0 .991-.078 1.265-.233.273-.155.41-.376.41-.663a.812.812 0 00-.065-.331.753.753 0 00-.236-.28 2.254 2.254 0 00-.53-.278 11.81 11.81 0 00-.98-.328 6.963 6.963 0 01-.858-.31 2.877 2.877 0 01-.68-.414 1.776 1.776 0 01-.452-.56 1.649 1.649 0 01-.164-.76 1.744 1.744 0 01.588-1.264c.214-.196.504-.36.868-.49.365-.129.82-.194 1.367-.194.27 0 .568.015.896.045.328.03.67.08 1.025.153v1.06a9.803 9.803 0 00-1.063-.202 6.926 6.926 0 00-.871-.065c-.296 0-.546.023-.749.069a1.553 1.553 0 00-.492.188.734.734 0 00-.27.28.748.748 0 00-.082.345c0 .123.024.235.072.335.048.1.136.197.266.29.13.094.311.187.544.28.232.094.535.196.909.305.406.119.747.243 1.025.373.278.13.504.274.677.434.173.16.298.34.373.54.075.2.112.428.112.683z"/><path id=":[{" fill="#7E7C7B" d="M56.622 19.912c.141 0 .276.029.403.086a1.107 1.107 0 01.564.564.978.978 0 01.086.403.971.971 0 01-.086.407 1.12 1.12 0 01-.229.331 1.058 1.058 0 01-.738.308c-.146 0-.281-.028-.407-.082a1.07 1.07 0 01-.557-.557 1.006 1.006 0 01-.082-.407 1.058 1.058 0 01.308-.738 1.12 1.12 0 01.331-.23.971.971 0 01.407-.085zm0 5.01c.141 0 .276.03.403.086a1.107 1.107 0 01.564.564.978.978 0 01.086.404.971.971 0 01-.086.406 1.12 1.12 0 01-.229.332 1.058 1.058 0 01-.738.307c-.146 0-.281-.027-.407-.082a1.07 1.07 0 01-.557-.557 1.006 1.006 0 01-.082-.406 1.058 1.058 0 01.308-.738 1.12 1.12 0 01.331-.23.971.971 0 01.407-.085zm17.274 4.78h-3.37V17h3.37v.957h-2.235v10.787h2.235v.957zm8.101 0h-.506c-.88 0-1.533-.207-1.962-.62-.428-.412-.642-1.037-.642-1.876v-2.352a2.18 2.18 0 00-.075-.598.978.978 0 00-.264-.444 1.224 1.224 0 00-.499-.277 2.706 2.706 0 00-.782-.096h-.294v-.95h.294c.332 0 .603-.027.813-.082.21-.054.374-.138.492-.25a.88.88 0 00.246-.427c.046-.173.069-.378.069-.615v-1.62c0-.383.045-.728.136-1.036.092-.307.24-.57.448-.786.208-.216.476-.382.807-.499.33-.116.735-.174 1.213-.174h.506v.957h-.403c-1.058 0-1.586.513-1.586 1.538v1.593c0 1.112-.481 1.738-1.443 1.88.971.095 1.456.72 1.456 1.873v2.338c0 1.043.525 1.565 1.573 1.565h.403v.957z"/><path id="name" fill="#181717" d="M30.775 37.035h1.06l.048 1.108c.2-.237.394-.435.58-.592.188-.157.371-.283.551-.38a2.06 2.06 0 01.55-.2c.187-.04.381-.059.582-.059.706 0 1.24.209 1.603.626.362.417.543 1.044.543 1.883v4.477h-1.19v-4.381c0-.538-.1-.936-.3-1.193-.2-.258-.5-.386-.896-.386-.146 0-.288.021-.427.064a1.557 1.557 0 00-.434.226c-.15.107-.313.252-.489.434-.175.182-.372.41-.591.684v4.552h-1.19v-6.863zm12.107 6.863l-.028-.922c-.373.369-.753.635-1.138.8-.385.163-.79.245-1.213.245-.392 0-.727-.05-1.005-.15a1.883 1.883 0 01-.687-.413 1.603 1.603 0 01-.396-.62 2.289 2.289 0 01-.127-.772c0-.688.256-1.227.77-1.616.512-.39 1.27-.585 2.272-.585h1.422v-.601c0-.406-.13-.73-.39-.974s-.656-.366-1.19-.366c-.387 0-.768.043-1.144.13-.376.086-.765.21-1.166.369V37.35a7.36 7.36 0 011.087-.301 7.6 7.6 0 01.643-.1c.223-.024.449-.037.677-.037.414 0 .788.046 1.12.137.333.091.615.23.845.417.23.187.407.421.53.704.123.282.184.615.184.998v4.73h-1.066zm-.13-3.124h-1.51c-.297 0-.552.03-.766.09-.215.059-.39.143-.527.252-.137.11-.238.24-.304.393-.066.153-.1.325-.1.516 0 .133.021.259.062.38.041.12.108.228.199.321.09.093.21.168.355.222.146.055.324.082.533.082.274 0 .587-.083.94-.25.353-.166.726-.429 1.118-.789v-1.217zm8.312 3.124V38.97c0-.214-.008-.39-.023-.527a1.2 1.2 0 00-.076-.324.348.348 0 00-.13-.168.43.43 0 00-.448.034c-.077.055-.16.144-.249.267a4.216 4.216 0 00-.294.489c-.107.203-.233.452-.38.748v4.41h-1.086v-4.8c0-.25-.008-.453-.024-.608a1.42 1.42 0 00-.075-.362.34.34 0 00-.133-.178.431.431 0 00-.43.02.988.988 0 00-.244.247c-.089.118-.188.28-.297.485-.11.205-.24.467-.39.786v4.41h-1.094v-6.864h.91l.054 1.306c.119-.26.234-.481.345-.663.112-.183.227-.33.346-.441.118-.112.245-.194.38-.246.134-.053.283-.079.447-.079.369 0 .65.12.84.362.192.242.288.616.288 1.122.11-.237.216-.448.321-.633a2.31 2.31 0 01.338-.465c.121-.125.255-.22.4-.287.146-.066.315-.099.506-.099.862 0 1.292.663 1.292 1.99v4.996h-1.094zm8.6-3.794c0 .17-.002.31-.007.424a6.37 6.37 0 01-.02.322h-4.82c0 .701.196 1.24.588 1.616.392.376.957.564 1.696.564.2 0 .4-.008.601-.024.2-.016.394-.037.581-.065.187-.027.366-.058.537-.092.17-.034.33-.072.475-.113v.978a9.161 9.161 0 01-2.365.308c-.588 0-1.094-.08-1.518-.24a2.597 2.597 0 01-1.042-.694 2.857 2.857 0 01-.602-1.114 5.273 5.273 0 01-.195-1.494c0-.483.07-.94.209-1.37a3.44 3.44 0 01.608-1.135c.267-.326.594-.584.981-.776a2.94 2.94 0 011.32-.287c.478 0 .902.075 1.27.226.37.15.681.363.934.639s.444.61.574 1.005c.13.394.195.835.195 1.322zm-1.237-.17a2.593 2.593 0 00-.09-.838 1.763 1.763 0 00-.337-.653 1.576 1.576 0 00-.571-.427 1.916 1.916 0 00-.793-.154c-.26 0-.497.05-.711.15-.214.101-.399.242-.554.425a2.19 2.19 0 00-.376.656 3.026 3.026 0 00-.178.84h3.61z"/><path id=":" fill="#7E7C7B" d="M64.32 36.912c.14 0 .275.029.403.086a1.107 1.107 0 01.564.564.978.978 0 01.085.403.971.971 0 01-.085.407 1.12 1.12 0 01-.23.331 1.058 1.058 0 01-.738.308c-.145 0-.281-.028-.406-.082a1.07 1.07 0 01-.558-.557 1.006 1.006 0 01-.082-.407 1.058 1.058 0 01.308-.738 1.12 1.12 0 01.332-.23.971.971 0 01.406-.085zm0 5.01c.14 0 .275.03.403.086a1.107 1.107 0 01.564.564.978.978 0 01.085.404.971.971 0 01-.085.406 1.12 1.12 0 01-.23.332 1.058 1.058 0 01-.738.307c-.145 0-.281-.027-.406-.082a1.07 1.07 0 01-.558-.557 1.006 1.006 0 01-.082-.406 1.058 1.058 0 01.308-.738 1.12 1.12 0 01.332-.23.971.971 0 01.406-.085z"/><path id="'John'" fill="#478964" d="M80.5 34.24l-.198 3.205h-1.176l-.191-3.206H80.5zm9.058.724v6.207c0 .383-.057.746-.171 1.09a2.47 2.47 0 01-.52.9 2.49 2.49 0 01-.875.608c-.35.15-.763.225-1.237.225-.178 0-.359-.012-.544-.037a4.8 4.8 0 01-.533-.103 3.619 3.619 0 01-.482-.157 2.214 2.214 0 01-.39-.202v-1.224c.283.206.597.367.94.486.345.118.685.178 1.023.178.496 0 .88-.152 1.148-.455.269-.303.403-.74.403-1.31v-5.153h-3.397v-1.053h4.635zm8.77 5.448a4.55 4.55 0 01-.225 1.466c-.15.445-.367.825-.65 1.142a2.913 2.913 0 01-1.032.738 3.447 3.447 0 01-1.381.263c-.492 0-.933-.076-1.323-.229a2.617 2.617 0 01-.99-.673 2.98 2.98 0 01-.623-1.1c-.144-.438-.215-.942-.215-1.511 0-.533.075-1.02.225-1.46.15-.44.367-.818.65-1.134a2.913 2.913 0 011.032-.739 3.447 3.447 0 011.38-.263c.493 0 .934.076 1.324.23.39.152.72.375.99.669.272.294.48.66.623 1.097.143.438.215.939.215 1.504zm-1.217.055c0-.424-.046-.794-.14-1.111a2.237 2.237 0 00-.4-.793 1.65 1.65 0 00-.632-.479 2.077 2.077 0 00-.83-.16c-.356 0-.66.07-.913.208-.253.14-.46.325-.622.557a2.4 2.4 0 00-.356.81 4.06 4.06 0 00-.113.968c0 .424.047.795.14 1.114.094.32.227.585.4.796.174.212.383.372.63.479.246.107.524.16.833.16.356 0 .66-.069.913-.208.253-.139.46-.325.622-.557a2.4 2.4 0 00.356-.81 4.09 4.09 0 00.112-.974zm8.456 3.431h-1.19v-4.381c0-.529-.098-.924-.296-1.186-.199-.262-.482-.394-.852-.394-.159 0-.308.022-.447.065a1.557 1.557 0 00-.434.226 3.73 3.73 0 00-.493.434c-.177.182-.382.41-.615.684v4.552h-1.19V34.24h1.19v2.796l-.04 1.08c.186-.223.37-.411.55-.564.18-.152.36-.277.54-.372.18-.096.363-.164.55-.205.187-.041.38-.062.58-.062.684 0 1.213.209 1.587.626.374.417.56 1.044.56 1.883v4.477zm2.181-6.863h1.06l.047 1.108c.201-.237.395-.435.582-.592.186-.157.37-.283.55-.38a2.06 2.06 0 01.55-.2c.187-.04.38-.059.581-.059.707 0 1.24.209 1.603.626.362.417.544 1.044.544 1.883v4.477h-1.19v-4.381c0-.538-.1-.936-.3-1.193-.201-.258-.5-.386-.896-.386-.146 0-.288.021-.427.064a1.557 1.557 0 00-.434.226c-.15.107-.314.252-.49.434-.175.182-.372.41-.59.684v4.552h-1.19v-6.863zm11.238-2.796l-.198 3.206h-1.176l-.191-3.206h1.565z"/><path id="," fill="#7E7C7B" d="M123.676 45.3c.232.009.458-.012.677-.062a2.02 2.02 0 00.577-.222c.167-.098.3-.22.4-.366a.86.86 0 00.15-.499.95.95 0 00-.099-.464 2.238 2.238 0 00-.222-.329 2.438 2.438 0 01-.222-.32.91.91 0 01-.1-.459.915.915 0 01.223-.588.857.857 0 01.287-.212 1.12 1.12 0 01.875.017c.148.066.278.168.39.305.111.136.2.307.266.512.066.205.1.447.1.725 0 .378-.07.742-.209 1.09a2.657 2.657 0 01-.622.926c-.276.27-.62.484-1.032.643-.413.16-.892.24-1.44.24V45.3z"/><path id="salary" fill="#181717" d="M36.21 59.025a1.634 1.634 0 01-.458 1.16 2.084 2.084 0 01-.492.378 3.272 3.272 0 01-.598.26c-.212.069-.43.119-.653.15a4.637 4.637 0 01-.656.048 12.3 12.3 0 01-1.282-.061 8.646 8.646 0 01-1.145-.198v-1.094c.4.114.8.2 1.196.26.397.059.79.089 1.183.089.57 0 .99-.078 1.264-.233.274-.155.41-.376.41-.663a.812.812 0 00-.064-.331.753.753 0 00-.236-.28 2.254 2.254 0 00-.53-.278 11.81 11.81 0 00-.981-.328 6.963 6.963 0 01-.858-.31 2.877 2.877 0 01-.68-.414 1.776 1.776 0 01-.451-.56 1.649 1.649 0 01-.164-.76 1.744 1.744 0 01.588-1.264c.214-.196.503-.36.868-.49.364-.129.82-.194 1.367-.194.269 0 .567.015.895.045.329.03.67.08 1.026.153v1.06a9.803 9.803 0 00-1.063-.202 6.926 6.926 0 00-.872-.065c-.296 0-.546.023-.748.069a1.553 1.553 0 00-.493.188.734.734 0 00-.27.28.748.748 0 00-.082.345c0 .123.024.235.072.335.048.1.137.197.267.29.13.094.31.187.543.28.233.094.536.196.91.305.405.119.747.243 1.025.373.278.13.503.274.677.434.173.16.297.34.372.54.075.2.113.428.113.683zm6.672 1.873l-.028-.922c-.373.369-.753.635-1.138.8-.385.163-.79.245-1.213.245-.392 0-.727-.05-1.005-.15a1.883 1.883 0 01-.687-.413 1.603 1.603 0 01-.396-.62 2.289 2.289 0 01-.127-.772c0-.688.256-1.227.77-1.616.512-.39 1.27-.585 2.272-.585h1.422v-.601c0-.406-.13-.73-.39-.974s-.656-.366-1.19-.366c-.387 0-.768.043-1.144.13-.376.086-.765.21-1.166.369V54.35a7.36 7.36 0 011.087-.301 7.6 7.6 0 01.643-.1c.223-.024.449-.037.677-.037.414 0 .788.046 1.12.137.333.091.615.23.845.417.23.187.407.421.53.704.123.282.184.615.184.998v4.73h-1.066zm-.13-3.124h-1.51c-.297 0-.552.03-.766.09-.215.059-.39.143-.527.252-.137.11-.238.24-.304.393-.066.153-.1.325-.1.516 0 .133.021.259.062.38.041.12.108.228.199.321.09.093.21.168.355.222.146.055.324.082.533.082.274 0 .587-.083.94-.25.353-.166.726-.429 1.118-.789v-1.217zm5.756-5.557h-2.03v-.978h3.233v8.668h2.044v.991h-5.503v-.99h2.256v-7.691zm9.768 8.681l-.027-.922c-.374.369-.753.635-1.138.8-.385.163-.79.245-1.214.245-.391 0-.726-.05-1.004-.15a1.883 1.883 0 01-.687-.413 1.603 1.603 0 01-.397-.62 2.289 2.289 0 01-.126-.772c0-.688.256-1.227.769-1.616.512-.39 1.27-.585 2.273-.585h1.421v-.601c0-.406-.13-.73-.39-.974-.259-.244-.655-.366-1.189-.366-.387 0-.769.043-1.145.13-.376.086-.764.21-1.165.369V54.35a7.36 7.36 0 011.087-.301 7.6 7.6 0 01.642-.1c.224-.024.45-.037.677-.037.415 0 .788.046 1.121.137.333.091.614.23.844.417.23.187.407.421.53.704.123.282.185.615.185.998v4.73h-1.067zm-.13-3.124h-1.51c-.296 0-.552.03-.766.09-.214.059-.39.143-.526.252-.137.11-.238.24-.304.393-.067.153-.1.325-.1.516 0 .133.02.259.062.38.041.12.107.228.198.321.091.093.21.168.356.222.145.055.323.082.533.082.273 0 .587-.083.94-.25.353-.166.726-.429 1.117-.789v-1.217zm3.699-3.739h1.087l.034 1.265c.405-.488.805-.841 1.2-1.06a2.436 2.436 0 011.192-.328c.711 0 1.25.23 1.617.69.367.46.537 1.144.51 2.051H66.28c.014-.601-.074-1.038-.263-1.309-.19-.27-.466-.407-.83-.407-.16 0-.32.029-.482.086a1.947 1.947 0 00-.5.273 4.47 4.47 0 00-.543.482 8.898 8.898 0 00-.615.711v4.41h-1.203v-6.864zm13.521 0l-2.338 6.139a12.037 12.037 0 01-.748 1.613 4.784 4.784 0 01-.844 1.11c-.306.29-.64.503-1.005.64a3.463 3.463 0 01-1.224.205 6.81 6.81 0 01-.636-.027v-1.08c.1.013.21.026.328.037.119.012.244.017.376.017.22 0 .423-.031.612-.095.19-.064.368-.168.537-.311.168-.144.33-.33.485-.557.155-.228.306-.504.451-.828l-2.74-6.863h1.353l1.736 4.54.349 1.066.396-1.094 1.607-4.512h1.305z"/><path id=":" fill="#7E7C7B" d="M79.714 53.912c.141 0 .276.029.403.086a1.107 1.107 0 01.564.564.978.978 0 01.086.403.971.971 0 01-.086.407 1.12 1.12 0 01-.229.331 1.058 1.058 0 01-.738.308c-.146 0-.282-.028-.407-.082a1.07 1.07 0 01-.557-.557 1.006 1.006 0 01-.082-.407 1.058 1.058 0 01.308-.738 1.12 1.12 0 01.331-.23.971.971 0 01.407-.085zm0 5.01c.141 0 .276.03.403.086a1.107 1.107 0 01.564.564.978.978 0 01.086.404.971.971 0 01-.086.406 1.12 1.12 0 01-.229.332 1.058 1.058 0 01-.738.307c-.146 0-.282-.027-.407-.082a1.07 1.07 0 01-.557-.557 1.006 1.006 0 01-.082-.406 1.058 1.058 0 01.308-.738 1.12 1.12 0 01.331-.23.971.971 0 01.407-.085z"/><path id="1000" fill="#A7333A" d="M98.075 60.898h-5.612v-1.107h2.297V53.27l-2.14 1.162-.437-1.012 2.843-1.497h1.053v7.868h1.996v1.107zm7.978-4.463c0 .683-.069 1.306-.205 1.87a4.33 4.33 0 01-.622 1.448 2.925 2.925 0 01-1.036.937c-.412.221-.897.331-1.453.331-.478 0-.913-.09-1.305-.27a2.594 2.594 0 01-1.005-.83c-.278-.374-.492-.85-.643-1.429-.15-.579-.225-1.264-.225-2.057 0-.684.07-1.308.208-1.873.14-.566.346-1.05.622-1.453s.621-.716 1.036-.937c.415-.22.898-.331 1.449-.331.479 0 .914.09 1.306.27.392.18.727.458 1.005.834.278.376.492.853.642 1.432.15.579.226 1.265.226 2.058zm-1.203.04c0-.154-.006-.308-.017-.46a23.678 23.678 0 00-.038-.449l-3.78 2.81c.068.237.155.456.26.656.104.2.23.373.379.516.148.144.317.256.506.335.189.08.404.12.646.12.31 0 .591-.075.844-.226.253-.15.468-.373.646-.67.178-.296.314-.664.41-1.104.096-.44.144-.949.144-1.527zm-4.088-.081c0 .14 0 .282.003.423.002.142.01.278.024.41l3.78-2.795a3.198 3.198 0 00-.26-.636 2.016 2.016 0 00-.375-.496 1.612 1.612 0 00-.5-.324 1.628 1.628 0 00-.628-.117c-.31 0-.592.076-.845.226-.253.15-.468.375-.646.673a3.697 3.697 0 00-.41 1.108 7.24 7.24 0 00-.143 1.528zm12.988.04c0 .684-.068 1.307-.205 1.87a4.33 4.33 0 01-.622 1.45 2.925 2.925 0 01-1.036.936c-.412.221-.896.331-1.452.331-.479 0-.914-.09-1.306-.27a2.594 2.594 0 01-1.005-.83c-.278-.374-.492-.85-.643-1.429-.15-.579-.225-1.264-.225-2.057 0-.684.07-1.308.208-1.873.14-.566.347-1.05.622-1.453.276-.403.621-.716 1.036-.937.415-.22.898-.331 1.45-.331.478 0 .913.09 1.305.27.392.18.727.458 1.005.834.278.376.492.853.642 1.432.15.579.226 1.265.226 2.058zm-1.203.042c0-.155-.006-.31-.017-.462a23.678 23.678 0 00-.038-.448l-3.78 2.81c.068.237.155.456.26.656.104.2.231.373.38.516.147.144.316.256.505.335.19.08.404.12.646.12.31 0 .591-.075.844-.226.253-.15.468-.373.646-.67.178-.296.315-.664.41-1.104.096-.44.144-.949.144-1.527zm-4.088-.082l.003.423c.003.142.01.278.024.41l3.78-2.795a3.198 3.198 0 00-.26-.636 2.016 2.016 0 00-.375-.496 1.612 1.612 0 00-.5-.324 1.628 1.628 0 00-.628-.117c-.31 0-.591.076-.844.226-.253.15-.469.375-.646.673a3.697 3.697 0 00-.41 1.108 7.24 7.24 0 00-.144 1.528zm12.988.04c0 .684-.068 1.307-.205 1.87a4.33 4.33 0 01-.622 1.45 2.925 2.925 0 01-1.036.936c-.412.221-.896.331-1.452.331-.479 0-.914-.09-1.306-.27a2.594 2.594 0 01-1.005-.83c-.278-.374-.492-.85-.642-1.429-.15-.579-.226-1.264-.226-2.057 0-.684.07-1.308.209-1.873.139-.566.346-1.05.622-1.453.275-.403.62-.716 1.035-.937.415-.22.898-.331 1.45-.331.478 0 .913.09 1.305.27.392.18.727.458 1.005.834.278.376.492.853.643 1.432.15.579.225 1.265.225 2.058zm-1.203.042c0-.155-.006-.31-.017-.462a23.678 23.678 0 00-.038-.448l-3.78 2.81c.069.237.155.456.26.656.105.2.231.373.38.516.147.144.316.256.505.335.19.08.405.12.646.12.31 0 .592-.075.844-.226.253-.15.469-.373.646-.67.178-.296.315-.664.41-1.104.096-.44.144-.949.144-1.527zm-4.088-.082c0 .14.001.282.004.423.002.142.01.278.024.41l3.78-2.795a3.198 3.198 0 00-.26-.636 2.016 2.016 0 00-.376-.496 1.612 1.612 0 00-.499-.324 1.628 1.628 0 00-.629-.117c-.31 0-.591.076-.844.226-.253.15-.468.375-.646.673a3.697 3.697 0 00-.41 1.108 7.24 7.24 0 00-.144 1.528z"/><path id="},{" fill="#7E7C7B" d="M15.853 68h.505c.88 0 1.534.206 1.962.619.429.412.643 1.038.643 1.876v1.58c0 .223.025.422.075.597.05.176.138.324.263.445.126.12.293.213.503.277.21.063.471.095.786.095h.294v.95h-.294c-.333 0-.605.028-.817.082a1.116 1.116 0 00-.496.25.88.88 0 00-.246.427 2.438 2.438 0 00-.068.615v2.393c0 .383-.046.728-.137 1.036-.091.307-.24.57-.444.786a1.993 1.993 0 01-.807.499c-.332.116-.738.174-1.217.174h-.505v-.957h.41c1.052 0 1.579-.513 1.579-1.538v-2.365c0-1.112.48-1.737 1.442-1.873-.97-.105-1.456-.732-1.456-1.88v-1.566c0-1.043-.522-1.565-1.565-1.565h-.41V68zm7.758 11.3c.233.009.458-.012.677-.062a2.02 2.02 0 00.578-.222c.166-.098.3-.22.4-.366a.86.86 0 00.15-.499.95.95 0 00-.1-.464 2.238 2.238 0 00-.221-.329 2.438 2.438 0 01-.222-.32.91.91 0 01-.1-.459.915.915 0 01.223-.588.857.857 0 01.287-.212 1.12 1.12 0 01.875.017c.148.066.278.168.39.305.111.136.2.307.266.512.066.205.1.447.1.725 0 .378-.07.742-.21 1.09a2.657 2.657 0 01-.621.926c-.276.27-.62.484-1.033.643-.412.16-.892.24-1.439.24V79.3zm19.9 1.401h-.506c-.88 0-1.534-.206-1.962-.618-.428-.413-.643-1.038-.643-1.877v-2.352a2.18 2.18 0 00-.075-.598.978.978 0 00-.263-.444 1.224 1.224 0 00-.499-.277 2.706 2.706 0 00-.783-.096h-.294v-.95h.294c.333 0 .604-.027.814-.082.21-.054.373-.138.492-.25a.88.88 0 00.246-.427c.046-.173.068-.378.068-.615v-1.62c0-.383.046-.728.137-1.036.091-.307.24-.57.448-.786.207-.216.476-.382.807-.499.33-.116.734-.174 1.213-.174h.506v.957h-.404c-1.057 0-1.586.513-1.586 1.538v1.593c0 1.112-.48 1.738-1.442 1.88.97.095 1.456.72 1.456 1.873v2.338c0 1.043.524 1.565 1.572 1.565h.404v.957z"/><path id="name" fill="#181717" d="M30.775 88.035h1.06l.048 1.108c.2-.237.394-.435.58-.592.188-.157.371-.283.551-.38a2.06 2.06 0 01.55-.2c.187-.04.381-.059.582-.059.706 0 1.24.209 1.603.626.362.417.543 1.044.543 1.883v4.477h-1.19v-4.381c0-.538-.1-.936-.3-1.193-.2-.258-.5-.386-.896-.386-.146 0-.288.021-.427.064a1.557 1.557 0 00-.434.226c-.15.107-.313.252-.489.434-.175.182-.372.41-.591.684v4.552h-1.19v-6.863zm12.107 6.863l-.028-.922c-.373.369-.753.635-1.138.8-.385.163-.79.245-1.213.245-.392 0-.727-.05-1.005-.15a1.883 1.883 0 01-.687-.413 1.603 1.603 0 01-.396-.62 2.289 2.289 0 01-.127-.772c0-.688.256-1.227.77-1.616.512-.39 1.27-.585 2.272-.585h1.422v-.601c0-.406-.13-.73-.39-.974s-.656-.366-1.19-.366c-.387 0-.768.043-1.144.13-.376.086-.765.21-1.166.369V88.35a7.36 7.36 0 011.087-.301 7.6 7.6 0 01.643-.1c.223-.024.449-.037.677-.037.414 0 .788.046 1.12.137.333.091.615.23.845.417.23.187.407.421.53.704.123.282.184.615.184.998v4.73h-1.066zm-.13-3.124h-1.51c-.297 0-.552.03-.766.09-.215.059-.39.143-.527.252-.137.11-.238.24-.304.393-.066.153-.1.325-.1.516 0 .133.021.259.062.38.041.12.108.228.199.321.09.093.21.168.355.222.146.055.324.082.533.082.274 0 .587-.083.94-.25.353-.166.726-.429 1.118-.789v-1.217zm8.312 3.124V89.97c0-.214-.008-.39-.023-.527a1.2 1.2 0 00-.076-.324.348.348 0 00-.13-.168.43.43 0 00-.448.034c-.077.055-.16.144-.249.267a4.216 4.216 0 00-.294.489c-.107.203-.233.452-.38.748v4.41h-1.086v-4.8c0-.25-.008-.453-.024-.608a1.42 1.42 0 00-.075-.362.34.34 0 00-.133-.178.431.431 0 00-.43.02.988.988 0 00-.244.247c-.089.118-.188.28-.297.485-.11.205-.24.467-.39.786v4.41h-1.094v-6.864h.91l.054 1.306c.119-.26.234-.481.345-.663.112-.183.227-.33.346-.441.118-.112.245-.194.38-.246.134-.053.283-.079.447-.079.369 0 .65.12.84.362.192.242.288.616.288 1.122.11-.237.216-.448.321-.633a2.31 2.31 0 01.338-.465c.121-.125.255-.22.4-.287.146-.066.315-.099.506-.099.862 0 1.292.663 1.292 1.99v4.996h-1.094zm8.6-3.794c0 .17-.002.31-.007.424a6.37 6.37 0 01-.02.322h-4.82c0 .701.196 1.24.588 1.616.392.376.957.564 1.696.564.2 0 .4-.008.601-.024.2-.016.394-.037.581-.065.187-.027.366-.058.537-.092.17-.034.33-.072.475-.113v.978a9.161 9.161 0 01-2.365.308c-.588 0-1.094-.08-1.518-.24a2.597 2.597 0 01-1.042-.694 2.857 2.857 0 01-.602-1.114 5.273 5.273 0 01-.195-1.494c0-.483.07-.94.209-1.37a3.44 3.44 0 01.608-1.135c.267-.326.594-.584.981-.776a2.94 2.94 0 011.32-.287c.478 0 .902.075 1.27.226.37.15.681.363.934.639s.444.61.574 1.005c.13.394.195.835.195 1.322zm-1.237-.17a2.593 2.593 0 00-.09-.838 1.763 1.763 0 00-.337-.653 1.576 1.576 0 00-.571-.427 1.916 1.916 0 00-.793-.154c-.26 0-.497.05-.711.15-.214.101-.399.242-.554.425a2.19 2.19 0 00-.376.656 3.026 3.026 0 00-.178.84h3.61z"/><path id=":" fill="#7E7C7B" d="M64.32 87.912c.14 0 .275.029.403.086a1.107 1.107 0 01.564.564.978.978 0 01.085.403.971.971 0 01-.085.407 1.12 1.12 0 01-.23.331 1.058 1.058 0 01-.738.308c-.145 0-.281-.028-.406-.082a1.07 1.07 0 01-.558-.557 1.006 1.006 0 01-.082-.407 1.058 1.058 0 01.308-.738 1.12 1.12 0 01.332-.23.971.971 0 01.406-.085zm0 5.01c.14 0 .275.03.403.086a1.107 1.107 0 01.564.564.978.978 0 01.085.404.971.971 0 01-.085.406 1.12 1.12 0 01-.23.332 1.058 1.058 0 01-.738.307c-.145 0-.281-.027-.406-.082a1.07 1.07 0 01-.558-.557 1.006 1.006 0 01-.082-.406 1.058 1.058 0 01.308-.738 1.12 1.12 0 01.332-.23.971.971 0 01.406-.085z"/><path id="'Alice'" fill="#478964" d="M80.5 85.24l-.198 3.205h-1.176l-.191-3.206H80.5zm10.691 9.658h-1.326l-.622-1.948h-3.719l-.628 1.948H83.63l2.967-8.934h1.668l2.925 8.934zm-2.296-3.035l-1.511-4.778-1.511 4.778h3.022zm5.796-5.646h-2.03v-.978h3.234v8.668h2.043v.991h-5.502v-.99h2.255v-7.691zm7.698 2.803h-2.03v-.985h3.233v5.872h2.044v.991h-5.503v-.99h2.256V89.02zm.417-3.863c.132 0 .255.024.369.072a.893.893 0 01.297.202.919.919 0 01.27.663.96.96 0 01-.27.663.893.893 0 01-.297.201.944.944 0 01-.37.072.944.944 0 01-.368-.072.893.893 0 01-.298-.201.96.96 0 01-.27-.663.919.919 0 01.27-.663.893.893 0 01.298-.202.944.944 0 01.369-.072zm10.274 9.489c-.31.118-.628.206-.954.263a5.845 5.845 0 01-1.008.085c-1.084 0-1.92-.294-2.505-.882-.586-.588-.879-1.447-.879-2.577 0-.542.085-1.034.253-1.476.169-.442.406-.82.711-1.135.306-.315.67-.557 1.094-.728.424-.171.89-.257 1.401-.257.356 0 .689.026.998.076.31.05.607.132.89.246v1.135a3.77 3.77 0 00-.907-.339 4.248 4.248 0 00-.953-.106c-.306 0-.594.058-.865.174-.271.117-.51.284-.714.503a2.38 2.38 0 00-.486.8c-.118.314-.177.67-.177 1.066 0 .83.201 1.45.604 1.863.404.412.963.619 1.679.619a3.897 3.897 0 001.818-.438v1.108zm8.162-3.542c0 .17-.002.31-.007.424a6.372 6.372 0 01-.02.322h-4.82c0 .701.196 1.24.588 1.616.392.376.957.564 1.696.564.2 0 .4-.008.601-.024.2-.016.394-.037.581-.065.187-.027.366-.058.537-.092.17-.034.33-.072.475-.113v.978a9.161 9.161 0 01-2.365.308c-.588 0-1.094-.08-1.518-.24a2.597 2.597 0 01-1.042-.694 2.857 2.857 0 01-.602-1.114 5.273 5.273 0 01-.195-1.494c0-.483.07-.94.209-1.37a3.44 3.44 0 01.608-1.135c.267-.326.594-.584.981-.776a2.94 2.94 0 011.32-.287c.478 0 .902.075 1.271.226.37.15.68.363.933.639s.444.61.574 1.005c.13.394.195.835.195 1.322zm-1.237-.17a2.593 2.593 0 00-.089-.838 1.763 1.763 0 00-.338-.653 1.576 1.576 0 00-.571-.427 1.916 1.916 0 00-.793-.154c-.26 0-.497.05-.711.15-.214.101-.399.242-.554.425a2.19 2.19 0 00-.376.656 3.026 3.026 0 00-.177.84h3.609zm6.679-5.695l-.199 3.206h-1.175l-.192-3.206h1.566z"/><path id="," fill="#7E7C7B" d="M131.373 96.3c.232.009.458-.012.677-.062a2.02 2.02 0 00.577-.222c.167-.098.3-.22.4-.366a.86.86 0 00.15-.499.95.95 0 00-.098-.464 2.238 2.238 0 00-.223-.329 2.438 2.438 0 01-.222-.32.91.91 0 01-.099-.459.915.915 0 01.222-.588.857.857 0 01.287-.212 1.12 1.12 0 01.875.017c.149.066.278.168.39.305.112.136.2.307.267.512.066.205.099.447.099.725 0 .378-.07.742-.209 1.09a2.657 2.657 0 01-.622.926c-.275.27-.62.484-1.032.643-.412.16-.892.24-1.439.24V96.3z"/><path id="salary" fill="#181717" d="M36.21 110.025a1.634 1.634 0 01-.458 1.16 2.084 2.084 0 01-.492.378 3.272 3.272 0 01-.598.26c-.212.069-.43.119-.653.15a4.638 4.638 0 01-.656.048 12.3 12.3 0 01-1.282-.061 8.646 8.646 0 01-1.145-.198v-1.094c.4.114.8.2 1.196.26.397.059.79.089 1.183.089.57 0 .99-.078 1.264-.233.274-.155.41-.376.41-.663a.812.812 0 00-.064-.331.753.753 0 00-.236-.28 2.254 2.254 0 00-.53-.278 11.81 11.81 0 00-.981-.328 6.963 6.963 0 01-.858-.31 2.877 2.877 0 01-.68-.414 1.776 1.776 0 01-.451-.56 1.649 1.649 0 01-.164-.76 1.744 1.744 0 01.588-1.264c.214-.196.503-.36.868-.49.364-.129.82-.194 1.367-.194.269 0 .567.015.895.045.329.03.67.08 1.026.153v1.06a9.803 9.803 0 00-1.063-.202 6.926 6.926 0 00-.872-.065c-.296 0-.546.023-.748.069a1.553 1.553 0 00-.493.188.734.734 0 00-.27.28.748.748 0 00-.082.345c0 .123.024.235.072.335.048.1.137.197.267.29.13.094.31.187.543.28.233.094.536.196.91.305.405.119.747.243 1.025.373.278.13.503.274.677.434.173.16.297.34.372.54.075.2.113.428.113.683zm6.672 1.873l-.028-.922c-.373.369-.753.635-1.138.8-.385.163-.79.245-1.213.245-.392 0-.727-.05-1.005-.15a1.883 1.883 0 01-.687-.413 1.603 1.603 0 01-.396-.62 2.289 2.289 0 01-.127-.772c0-.688.256-1.227.77-1.616.512-.39 1.27-.585 2.272-.585h1.422v-.601c0-.406-.13-.73-.39-.974s-.656-.366-1.19-.366c-.387 0-.768.043-1.144.13-.376.086-.765.21-1.166.369v-1.073a7.36 7.36 0 011.087-.301 7.6 7.6 0 01.643-.1c.223-.024.449-.037.677-.037.414 0 .788.046 1.12.137.333.091.615.23.845.417.23.187.407.421.53.704.123.282.184.615.184.998v4.73h-1.066zm-.13-3.124h-1.51c-.297 0-.552.03-.766.09-.215.059-.39.143-.527.252-.137.11-.238.24-.304.393-.066.153-.1.325-.1.516 0 .133.021.259.062.38.041.12.108.228.199.321.09.093.21.168.355.222.146.055.324.082.533.082.274 0 .587-.083.94-.25.353-.166.726-.429 1.118-.789v-1.217zm5.756-5.557h-2.03v-.978h3.233v8.668h2.044v.991h-5.503v-.99h2.256v-7.691zm9.768 8.681l-.027-.922c-.374.369-.753.635-1.138.8-.385.163-.79.245-1.214.245-.391 0-.726-.05-1.004-.15a1.883 1.883 0 01-.687-.413 1.603 1.603 0 01-.397-.62 2.289 2.289 0 01-.126-.772c0-.688.256-1.227.769-1.616.512-.39 1.27-.585 2.273-.585h1.421v-.601c0-.406-.13-.73-.39-.974-.259-.244-.655-.366-1.189-.366-.387 0-.769.043-1.145.13-.376.086-.764.21-1.165.369v-1.073a7.36 7.36 0 011.087-.301 7.6 7.6 0 01.642-.1c.224-.024.45-.037.677-.037.415 0 .788.046 1.121.137.333.091.614.23.844.417.23.187.407.421.53.704.123.282.185.615.185.998v4.73h-1.067zm-.13-3.124h-1.51c-.296 0-.552.03-.766.09-.214.059-.39.143-.526.252-.137.11-.238.24-.304.393-.067.153-.1.325-.1.516 0 .133.02.259.062.38.041.12.107.228.198.321.091.093.21.168.356.222.145.055.323.082.533.082.273 0 .587-.083.94-.25.353-.166.726-.429 1.117-.789v-1.217zm3.699-3.739h1.087l.034 1.265c.405-.488.805-.841 1.2-1.06a2.436 2.436 0 011.192-.328c.711 0 1.25.23 1.617.69.367.46.537 1.144.51 2.051H66.28c.014-.601-.074-1.038-.263-1.309-.19-.27-.466-.406-.83-.406-.16 0-.32.028-.482.085a1.947 1.947 0 00-.5.273 4.47 4.47 0 00-.543.482 8.898 8.898 0 00-.615.711v4.41h-1.203v-6.864zm13.521 0l-2.338 6.139a12.037 12.037 0 01-.748 1.613 4.784 4.784 0 01-.844 1.11c-.306.29-.64.503-1.005.64a3.463 3.463 0 01-1.224.205 6.811 6.811 0 01-.636-.027v-1.08c.1.013.21.026.328.037.119.012.244.017.376.017.22 0 .423-.031.612-.095.19-.064.368-.168.537-.311.168-.144.33-.33.485-.557.155-.228.306-.504.451-.828l-2.74-6.863h1.353l1.736 4.54.349 1.066.396-1.094 1.607-4.512h1.305z"/><path id=":" fill="#7E7C7B" d="M79.714 104.912c.141 0 .276.029.403.086a1.107 1.107 0 01.564.564.978.978 0 01.086.403.971.971 0 01-.086.407 1.12 1.12 0 01-.229.331 1.058 1.058 0 01-.738.308c-.146 0-.282-.028-.407-.082a1.07 1.07 0 01-.557-.557 1.006 1.006 0 01-.082-.407 1.058 1.058 0 01.308-.738 1.12 1.12 0 01.331-.23.971.971 0 01.407-.085zm0 5.01c.141 0 .276.03.403.086a1.107 1.107 0 01.564.564.978.978 0 01.086.404.971.971 0 01-.086.406 1.12 1.12 0 01-.229.332 1.058 1.058 0 01-.738.307c-.146 0-.282-.027-.407-.082a1.07 1.07 0 01-.557-.557 1.006 1.006 0 01-.082-.406 1.058 1.058 0 01.308-.738 1.12 1.12 0 01.331-.23.971.971 0 01.407-.085z"/><path id="600" fill="#A7333A" d="M98.26 109.068c0 .41-.074.796-.222 1.156-.149.36-.36.673-.633.94a2.957 2.957 0 01-.988.628 3.45 3.45 0 01-1.281.23c-.492 0-.928-.08-1.306-.236a2.32 2.32 0 01-.95-.725c-.255-.326-.449-.737-.581-1.234-.132-.497-.198-1.084-.198-1.764 0-.455.03-.897.088-1.326.06-.428.158-.831.294-1.21.137-.378.32-.724.547-1.039.228-.314.512-.584.851-.81.34-.225.74-.4 1.2-.526.46-.125.994-.188 1.6-.188h.882v1.039h-.958c-.533 0-.995.064-1.387.191-.392.128-.72.308-.985.54a2.334 2.334 0 00-.608.841c-.141.328-.23.695-.267 1.1l-.027.281c.287-.169.619-.304.995-.407a4.624 4.624 0 011.22-.153c.451 0 .846.066 1.186.198.34.132.622.315.848.55.225.235.395.516.509.844.114.328.17.688.17 1.08zm-1.244.076c0-.274-.033-.521-.1-.742a1.402 1.402 0 00-.31-.56 1.42 1.42 0 00-.537-.356 2.137 2.137 0 00-.776-.127c-.173 0-.349.016-.526.048a3.742 3.742 0 00-.523.134c-.171.056-.334.121-.49.194-.154.073-.295.15-.423.233 0 .588.041 1.079.123 1.473.082.394.204.71.366.947s.361.405.598.506c.237.1.51.15.82.15.26 0 .498-.042.715-.127a1.54 1.54 0 00.56-.372c.157-.164.28-.364.37-.598.088-.235.133-.503.133-.803zm9.037-1.71c0 .684-.069 1.307-.205 1.87a4.33 4.33 0 01-.622 1.45 2.925 2.925 0 01-1.036.936c-.412.221-.897.331-1.453.331-.478 0-.913-.09-1.305-.27a2.594 2.594 0 01-1.005-.83c-.278-.374-.492-.85-.643-1.429-.15-.579-.225-1.264-.225-2.057 0-.684.07-1.308.208-1.873.14-.566.346-1.05.622-1.453s.621-.716 1.036-.937c.415-.22.898-.331 1.449-.331.479 0 .914.09 1.306.27.392.18.727.458 1.005.834.278.376.492.853.642 1.432.15.579.226 1.265.226 2.058zm-1.203.042c0-.155-.006-.31-.017-.462a23.678 23.678 0 00-.038-.448l-3.78 2.81c.068.237.155.456.26.656.104.2.23.373.379.516.148.144.317.256.506.335.189.08.404.12.646.12.31 0 .591-.075.844-.226.253-.15.468-.373.646-.67.178-.296.314-.664.41-1.104.096-.44.144-.949.144-1.527zm-4.088-.082c0 .14 0 .282.003.423.002.142.01.278.024.41l3.78-2.795a3.198 3.198 0 00-.26-.636 2.016 2.016 0 00-.375-.496 1.612 1.612 0 00-.5-.324 1.628 1.628 0 00-.628-.117c-.31 0-.592.076-.845.226-.253.15-.468.375-.646.673a3.697 3.697 0 00-.41 1.108 7.24 7.24 0 00-.143 1.528zm12.988.04c0 .684-.068 1.307-.205 1.87a4.33 4.33 0 01-.622 1.45 2.925 2.925 0 01-1.036.936c-.412.221-.896.331-1.452.331-.479 0-.914-.09-1.306-.27a2.594 2.594 0 01-1.005-.83c-.278-.374-.492-.85-.643-1.429-.15-.579-.225-1.264-.225-2.057 0-.684.07-1.308.208-1.873.14-.566.347-1.05.622-1.453.276-.403.621-.716 1.036-.937.415-.22.898-.331 1.45-.331.478 0 .913.09 1.305.27.392.18.727.458 1.005.834.278.376.492.853.642 1.432.15.579.226 1.265.226 2.058zm-1.203.042c0-.155-.006-.31-.017-.462a23.678 23.678 0 00-.038-.448l-3.78 2.81c.068.237.155.456.26.656.104.2.231.373.38.516.147.144.316.256.505.335.19.08.404.12.646.12.31 0 .591-.075.844-.226.253-.15.468-.373.646-.67.178-.296.315-.664.41-1.104.096-.44.144-.949.144-1.527zm-4.088-.082l.003.423c.003.142.01.278.024.41l3.78-2.795a3.198 3.198 0 00-.26-.636 2.016 2.016 0 00-.375-.496 1.612 1.612 0 00-.5-.324 1.628 1.628 0 00-.628-.117c-.31 0-.591.076-.844.226-.253.15-.469.375-.646.673a3.697 3.697 0 00-.41 1.108 7.24 7.24 0 00-.144 1.528z"/><path id="}]," fill="#7E7C7B" d="M15.853 119h.505c.88 0 1.534.206 1.962.619.429.412.643 1.038.643 1.876v1.58c0 .223.025.422.075.597.05.176.138.324.263.445.126.12.293.213.503.277.21.063.471.095.786.095h.294v.95h-.294c-.333 0-.605.028-.817.082a1.116 1.116 0 00-.496.25.88.88 0 00-.246.427 2.438 2.438 0 00-.068.615v2.393c0 .383-.046.728-.137 1.036-.091.307-.24.57-.444.786a1.993 1.993 0 01-.807.499c-.332.116-.738.174-1.217.174h-.505v-.957h.41c1.052 0 1.579-.513 1.579-1.538v-2.365c0-1.112.48-1.737 1.442-1.873-.97-.105-1.456-.732-1.456-1.88v-1.566c0-1.043-.522-1.565-1.565-1.565h-.41V119zm11.47 12.701h-3.37v-.957h2.222v-10.787h-2.222V119h3.37v12.701zm3.986-1.401c.232.009.458-.012.676-.062a2.02 2.02 0 00.578-.222c.166-.098.3-.22.4-.366a.86.86 0 00.15-.499.95.95 0 00-.099-.464 2.238 2.238 0 00-.222-.329 2.438 2.438 0 01-.222-.32.91.91 0 01-.1-.459.915.915 0 01.223-.588.857.857 0 01.287-.212 1.12 1.12 0 01.875.017c.148.066.278.168.39.305.111.136.2.307.266.512.066.205.1.447.1.725 0 .378-.07.742-.21 1.09a2.657 2.657 0 01-.621.926c-.276.27-.62.484-1.032.643-.413.16-.893.24-1.44.24v-.937z"/><path id="development" fill="#181717" d="M15.032 159.61c0-.583.08-1.101.24-1.555.159-.453.386-.836.68-1.148.294-.312.647-.55 1.06-.711a3.743 3.743 0 011.377-.243c.218 0 .434.014.646.041.212.027.42.07.625.13v-2.885h1.196v9.66H19.79l-.041-1.3c-.333.484-.693.841-1.08 1.074a2.401 2.401 0 01-1.258.348c-.392 0-.737-.082-1.036-.246a2.104 2.104 0 01-.745-.693 3.33 3.33 0 01-.447-1.077 6 6 0 01-.15-1.395zm1.217-.075c0 .83.122 1.448.366 1.856.244.408.589.612 1.035.612.301 0 .619-.135.954-.403.335-.27.687-.668 1.056-1.197v-3.185a2.892 2.892 0 00-.65-.209 3.55 3.55 0 00-.703-.071c-.647 0-1.152.21-1.515.628-.362.42-.543 1.076-.543 1.97zm12.626-.43c0 .168-.002.31-.007.423a6.37 6.37 0 01-.02.322h-4.82c0 .701.196 1.24.588 1.616.392.376.957.564 1.696.564.2 0 .4-.008.601-.024.2-.016.394-.037.581-.065.187-.027.366-.058.537-.092.17-.034.329-.072.475-.113v.978a9.161 9.161 0 01-2.365.308c-.588 0-1.094-.08-1.518-.24a2.597 2.597 0 01-1.042-.694 2.857 2.857 0 01-.602-1.114 5.273 5.273 0 01-.195-1.494c0-.483.07-.94.209-1.37a3.44 3.44 0 01.608-1.135c.267-.326.594-.584.981-.776a2.94 2.94 0 011.32-.287c.478 0 .902.075 1.27.226.37.15.681.363.934.639s.444.61.574 1.005c.13.394.195.835.195 1.322zm-1.237-.171a2.593 2.593 0 00-.09-.838 1.763 1.763 0 00-.338-.653 1.576 1.576 0 00-.57-.427 1.916 1.916 0 00-.793-.154c-.26 0-.497.05-.711.15-.214.101-.399.242-.554.425a2.19 2.19 0 00-.376.656 3.026 3.026 0 00-.178.84h3.61zm2.495-2.899h1.353l1.682 4.54.362 1.107.376-1.135 1.668-4.512h1.306l-2.693 6.863h-1.368l-2.686-6.863zm14.137 3.07c0 .168-.003.31-.007.423a6.37 6.37 0 01-.02.322h-4.82c0 .701.196 1.24.588 1.616.392.376.957.564 1.695.564.2 0 .401-.008.602-.024.2-.016.394-.037.58-.065.188-.027.366-.058.537-.092.171-.034.33-.072.475-.113v.978a9.161 9.161 0 01-2.365.308c-.588 0-1.094-.08-1.517-.24a2.597 2.597 0 01-1.043-.694 2.857 2.857 0 01-.601-1.114 5.273 5.273 0 01-.195-1.494c0-.483.07-.94.208-1.37a3.44 3.44 0 01.609-1.135c.266-.326.593-.584.98-.776a2.94 2.94 0 011.32-.287c.478 0 .902.075 1.271.226.37.15.68.363.933.639s.445.61.575 1.005c.13.394.195.835.195 1.322zm-1.238-.171a2.593 2.593 0 00-.089-.838 1.763 1.763 0 00-.338-.653 1.576 1.576 0 00-.57-.427 1.916 1.916 0 00-.794-.154c-.26 0-.497.05-.71.15-.215.101-.4.242-.554.425a2.19 2.19 0 00-.376.656 3.026 3.026 0 00-.178.84h3.61zm5.476-4.717h-2.03v-.978h3.233v8.668h2.044v.991h-5.503v-.99h2.256v-7.691zm11.334 5.195a4.55 4.55 0 01-.226 1.466c-.15.445-.367.825-.65 1.142a2.913 2.913 0 01-1.031.738 3.447 3.447 0 01-1.381.263c-.492 0-.933-.076-1.323-.229a2.617 2.617 0 01-.991-.673 2.98 2.98 0 01-.622-1.1c-.144-.438-.216-.942-.216-1.511 0-.533.076-1.02.226-1.46.15-.44.367-.818.65-1.134a2.913 2.913 0 011.032-.739 3.447 3.447 0 011.38-.263c.493 0 .934.076 1.323.23.39.152.72.375.991.669.272.294.479.66.622 1.097.144.438.216.939.216 1.504zm-1.217.055c0-.424-.047-.794-.14-1.111a2.237 2.237 0 00-.4-.793 1.65 1.65 0 00-.632-.479 2.077 2.077 0 00-.83-.16c-.356 0-.66.07-.914.208-.252.14-.46.325-.622.557a2.4 2.4 0 00-.355.81 4.06 4.06 0 00-.113.968c0 .424.047.795.14 1.114.094.32.227.585.4.796.173.212.383.372.63.479.245.107.523.16.833.16.356 0 .66-.069.913-.208.253-.139.46-.325.622-.557a2.4 2.4 0 00.355-.81 4.09 4.09 0 00.113-.974zm8.805-.123c0 .61-.086 1.144-.257 1.6-.17.455-.406.833-.707 1.134a2.9 2.9 0 01-1.067.677c-.41.15-.854.225-1.333.225-.218 0-.436-.01-.652-.034a4.952 4.952 0 01-.66-.116v2.871h-1.19v-9.666h1.06l.075 1.149c.342-.47.707-.8 1.094-.988.387-.19.807-.284 1.258-.284.392 0 .736.082 1.032.246.296.164.545.396.745.694.2.299.351.659.451 1.08.1.422.15.892.15 1.412zm-1.217.054c0-.36-.026-.69-.079-.99a2.586 2.586 0 00-.25-.773 1.37 1.37 0 00-.437-.503 1.104 1.104 0 00-.635-.18c-.15 0-.304.023-.458.07a1.857 1.857 0 00-.482.24 3.59 3.59 0 00-.527.445 7 7 0 00-.591.687v3.329c.219.09.449.163.69.215.242.052.479.079.711.079.643 0 1.146-.218 1.511-.653.365-.435.547-1.09.547-1.966zm7.943 3.5v-4.928c0-.214-.008-.39-.024-.527a1.2 1.2 0 00-.075-.324.348.348 0 00-.13-.168.43.43 0 00-.448.034c-.077.055-.16.144-.249.267a4.216 4.216 0 00-.294.489 30.3 30.3 0 00-.38.748v4.41H71.47v-4.8c0-.25-.008-.453-.024-.608a1.42 1.42 0 00-.075-.362.34.34 0 00-.134-.178.431.431 0 00-.43.02.988.988 0 00-.243.247c-.089.118-.188.28-.297.485-.11.205-.24.467-.39.786v4.41h-1.094v-6.864h.91l.054 1.306c.119-.26.234-.481.345-.663.112-.183.227-.33.346-.441.118-.112.244-.194.379-.246.134-.053.284-.079.448-.079.369 0 .65.12.84.362.192.242.288.616.288 1.122.109-.237.216-.448.32-.633a2.31 2.31 0 01.34-.465c.12-.125.253-.22.4-.287.145-.066.314-.099.505-.099.861 0 1.292.663 1.292 1.99v4.996h-1.094zm8.6-3.794c0 .17-.002.31-.007.424a6.37 6.37 0 01-.02.322h-4.82c0 .701.196 1.24.588 1.616.392.376.957.564 1.695.564.2 0 .401-.008.602-.024.2-.016.394-.037.581-.065.187-.027.366-.058.537-.092.17-.034.329-.072.475-.113v.978a9.161 9.161 0 01-2.365.308c-.588 0-1.094-.08-1.518-.24a2.597 2.597 0 01-1.043-.694 2.857 2.857 0 01-.601-1.114 5.273 5.273 0 01-.195-1.494c0-.483.07-.94.209-1.37a3.44 3.44 0 01.608-1.135c.267-.326.594-.584.98-.776a2.94 2.94 0 011.32-.287c.479 0 .903.075 1.272.226.369.15.68.363.933.639s.444.61.574 1.005c.13.394.195.835.195 1.322zm-1.237-.17a2.593 2.593 0 00-.09-.838 1.763 1.763 0 00-.338-.653 1.576 1.576 0 00-.57-.427 1.916 1.916 0 00-.793-.154c-.26 0-.497.05-.711.15-.215.101-.4.242-.554.425a2.19 2.19 0 00-.376.656 3.026 3.026 0 00-.178.84h3.61zm3.137-2.899h1.06l.048 1.108c.2-.237.394-.435.58-.592.188-.157.371-.283.551-.38a2.06 2.06 0 01.55-.2c.187-.04.38-.059.581-.059.707 0 1.241.209 1.603.626.363.417.544 1.044.544 1.883v4.477h-1.19v-4.381c0-.538-.1-.936-.3-1.193-.2-.258-.5-.387-.896-.387-.146 0-.288.022-.427.065a1.557 1.557 0 00-.434.226c-.15.107-.314.252-.489.434s-.373.41-.591.684v4.552h-1.19v-6.863zm13.228 6.768a5.793 5.793 0 01-.834.147 8.52 8.52 0 01-.875.044c-.862 0-1.504-.195-1.928-.584-.424-.39-.636-.988-.636-1.795v-3.582h-1.92v-.998h1.92v-1.887l1.19-.307v2.194h3.083v.998H94.8v3.487c0 .492.13.86.393 1.104.262.243.648.365 1.159.365.218 0 .458-.017.717-.051.26-.034.531-.088.814-.16v1.025z"/><path id=":{" fill="#7E7C7B" d="M102.806 155.912c.14 0 .275.029.403.086a1.107 1.107 0 01.564.564.978.978 0 01.085.403.971.971 0 01-.085.407 1.12 1.12 0 01-.23.331 1.058 1.058 0 01-.737.308c-.146 0-.282-.028-.407-.082a1.07 1.07 0 01-.557-.557 1.006 1.006 0 01-.082-.407 1.058 1.058 0 01.308-.738 1.12 1.12 0 01.33-.23.971.971 0 01.408-.085zm0 5.01c.14 0 .275.03.403.086a1.107 1.107 0 01.564.564.978.978 0 01.085.404.971.971 0 01-.085.406 1.12 1.12 0 01-.23.332 1.058 1.058 0 01-.737.307c-.146 0-.282-.027-.407-.082a1.07 1.07 0 01-.557-.557 1.006 1.006 0 01-.082-.406 1.058 1.058 0 01.308-.738 1.12 1.12 0 01.33-.23.971.971 0 01.408-.085zm17.677 4.78h-.505c-.88 0-1.534-.207-1.962-.62-.429-.412-.643-1.037-.643-1.876v-2.352a2.18 2.18 0 00-.075-.598.978.978 0 00-.263-.444 1.224 1.224 0 00-.5-.277 2.706 2.706 0 00-.782-.096h-.294v-.95h.294c.333 0 .604-.027.813-.082.21-.054.374-.138.493-.25a.88.88 0 00.246-.427c.045-.173.068-.378.068-.615v-1.62c0-.383.046-.728.137-1.036.09-.307.24-.57.448-.786.207-.216.476-.382.806-.499.33-.116.735-.174 1.214-.174h.505v.957h-.403c-1.057 0-1.586.513-1.586 1.538v1.593c0 1.112-.48 1.738-1.442 1.88.97.095 1.456.72 1.456 1.873v2.338c0 1.043.524 1.565 1.572 1.565h.403v.957z"/><path id="sites" fill="#181717" d="M36.21 178.025a1.634 1.634 0 01-.458 1.16 2.084 2.084 0 01-.492.378 3.272 3.272 0 01-.598.26c-.212.069-.43.119-.653.15a4.638 4.638 0 01-.656.048 12.3 12.3 0 01-1.282-.061 8.646 8.646 0 01-1.145-.198v-1.094c.4.114.8.2 1.196.26.397.059.79.089 1.183.089.57 0 .99-.078 1.264-.233.274-.155.41-.376.41-.663a.812.812 0 00-.064-.331.753.753 0 00-.236-.28 2.254 2.254 0 00-.53-.278 11.81 11.81 0 00-.981-.328 6.963 6.963 0 01-.858-.31 2.877 2.877 0 01-.68-.414 1.776 1.776 0 01-.451-.56 1.649 1.649 0 01-.164-.76 1.744 1.744 0 01.588-1.264c.214-.196.503-.36.868-.49.364-.129.82-.194 1.367-.194.269 0 .567.015.895.045.329.03.67.08 1.026.153v1.06a9.803 9.803 0 00-1.063-.202 6.926 6.926 0 00-.872-.065c-.296 0-.546.023-.748.069a1.553 1.553 0 00-.493.188.734.734 0 00-.27.28.748.748 0 00-.082.345c0 .123.024.235.072.335.048.1.137.197.267.29.13.094.31.187.543.28.233.094.536.196.91.305.405.119.747.243 1.025.373.278.13.503.274.677.434.173.16.297.34.372.54.075.2.113.428.113.683zm4.6-4.005h-2.03v-.985h3.234v5.872h2.044v.991h-5.503v-.99h2.256v-4.888zm.418-3.863c.132 0 .255.024.369.072a.893.893 0 01.297.202.919.919 0 01.27.663.96.96 0 01-.27.663.893.893 0 01-.297.201.944.944 0 01-.37.072.944.944 0 01-.369-.072.893.893 0 01-.297-.201.96.96 0 01-.27-.663.919.919 0 01.27-.663.893.893 0 01.297-.202.944.944 0 01.37-.072zm10.472 9.646a5.793 5.793 0 01-.834.147 8.52 8.52 0 01-.875.044c-.861 0-1.504-.195-1.928-.584-.423-.39-.635-.988-.635-1.795v-3.582h-1.921v-.998h1.92v-1.887l1.19-.307v2.194H51.7v.998h-3.083v3.487c0 .492.131.86.393 1.104.262.243.649.365 1.159.365.219 0 .458-.017.718-.051.26-.034.53-.088.813-.16v1.025zm7.964-3.699c0 .17-.002.31-.007.424a6.37 6.37 0 01-.02.322h-4.82c0 .701.196 1.24.588 1.616.392.376.957.564 1.696.564.2 0 .4-.008.601-.024.2-.016.394-.037.581-.065.187-.027.366-.058.537-.092.17-.034.33-.072.475-.113v.978a9.161 9.161 0 01-2.365.308c-.588 0-1.094-.08-1.518-.24a2.597 2.597 0 01-1.042-.694 2.857 2.857 0 01-.602-1.114 5.273 5.273 0 01-.195-1.494c0-.483.07-.94.209-1.37a3.44 3.44 0 01.608-1.135c.267-.326.594-.584.981-.776a2.94 2.94 0 011.32-.287c.478 0 .902.075 1.27.226.37.15.681.363.934.639s.444.61.574 1.005c.13.394.195.835.195 1.322zm-1.237-.17a2.593 2.593 0 00-.09-.838 1.763 1.763 0 00-.337-.653 1.576 1.576 0 00-.571-.427 1.916 1.916 0 00-.793-.154c-.26 0-.497.05-.711.15-.214.101-.399.242-.554.425a2.19 2.19 0 00-.376.656 3.026 3.026 0 00-.178.84h3.61zm8.572 2.091a1.634 1.634 0 01-.458 1.16 2.084 2.084 0 01-.492.378 3.272 3.272 0 01-.598.26c-.212.069-.43.119-.653.15a4.638 4.638 0 01-.656.048 12.3 12.3 0 01-1.282-.061 8.646 8.646 0 01-1.145-.198v-1.094c.4.114.8.2 1.196.26.397.059.79.089 1.183.089.57 0 .991-.078 1.264-.233.274-.155.41-.376.41-.663a.812.812 0 00-.064-.331.753.753 0 00-.236-.28 2.254 2.254 0 00-.53-.278 11.81 11.81 0 00-.981-.328 6.963 6.963 0 01-.858-.31 2.877 2.877 0 01-.68-.414 1.776 1.776 0 01-.451-.56 1.649 1.649 0 01-.164-.76 1.744 1.744 0 01.588-1.264c.214-.196.503-.36.868-.49.364-.129.82-.194 1.367-.194.269 0 .567.015.895.045.329.03.67.08 1.026.153v1.06a9.803 9.803 0 00-1.063-.202 6.926 6.926 0 00-.872-.065c-.296 0-.545.023-.748.069a1.553 1.553 0 00-.492.188.734.734 0 00-.27.28.748.748 0 00-.082.345c0 .123.023.235.071.335.048.1.137.197.267.29.13.094.31.187.543.28.233.094.536.196.91.305.405.119.747.243 1.025.373.278.13.503.274.677.434.173.16.297.34.372.54.075.2.113.428.113.683z"/><path id=":[{" fill="#7E7C7B" d="M72.017 172.912c.14 0 .275.029.403.086a1.107 1.107 0 01.564.564.978.978 0 01.085.403.971.971 0 01-.085.407 1.12 1.12 0 01-.23.331 1.058 1.058 0 01-.737.308c-.146 0-.282-.028-.407-.082a1.07 1.07 0 01-.557-.557 1.006 1.006 0 01-.082-.407 1.058 1.058 0 01.308-.738 1.12 1.12 0 01.33-.23.971.971 0 01.408-.085zm0 5.01c.14 0 .275.03.403.086a1.107 1.107 0 01.564.564.978.978 0 01.085.404.971.971 0 01-.085.406 1.12 1.12 0 01-.23.332 1.058 1.058 0 01-.737.307c-.146 0-.282-.027-.407-.082a1.07 1.07 0 01-.557-.557 1.006 1.006 0 01-.082-.406 1.058 1.058 0 01.308-.738 1.12 1.12 0 01.33-.23.971.971 0 01.408-.085zm17.274 4.78h-3.37V170h3.37v.957h-2.235v10.787h2.235v.957zm8.1 0h-.505c-.88 0-1.534-.207-1.962-.62-.429-.412-.643-1.037-.643-1.876v-2.352a2.18 2.18 0 00-.075-.598.978.978 0 00-.263-.444 1.224 1.224 0 00-.5-.277 2.706 2.706 0 00-.782-.096h-.294v-.95h.294c.333 0 .604-.027.814-.082.21-.054.373-.138.492-.25a.88.88 0 00.246-.427c.045-.173.068-.378.068-.615v-1.62c0-.383.046-.728.137-1.036.091-.307.24-.57.448-.786.207-.216.476-.382.806-.499.33-.116.735-.174 1.214-.174h.506v.957h-.404c-1.057 0-1.586.513-1.586 1.538v1.593c0 1.112-.48 1.738-1.442 1.88.97.095 1.456.72 1.456 1.873v2.338c0 1.043.524 1.565 1.572 1.565h.404v.957z"/><path id="name" fill="#181717" d="M46.17 190.035h1.06l.047 1.108c.2-.237.395-.435.581-.592.187-.157.37-.283.55-.38a2.06 2.06 0 01.551-.2c.187-.04.38-.059.581-.059.706 0 1.24.209 1.603.626.362.417.544 1.044.544 1.883v4.477h-1.19v-4.381c0-.538-.1-.936-.3-1.193-.201-.258-.5-.387-.896-.387-.146 0-.288.022-.427.065a1.557 1.557 0 00-.435.226c-.15.107-.313.252-.488.434-.176.182-.373.41-.592.684v4.552h-1.19v-6.863zm12.106 6.863l-.027-.922c-.374.369-.753.635-1.138.8-.385.163-.79.245-1.214.245-.391 0-.726-.05-1.004-.15a1.883 1.883 0 01-.687-.413 1.603 1.603 0 01-.397-.62 2.289 2.289 0 01-.126-.772c0-.688.256-1.227.769-1.616.512-.39 1.27-.585 2.273-.585h1.421v-.601c0-.406-.13-.73-.39-.974-.259-.244-.655-.366-1.189-.366-.387 0-.769.043-1.145.13-.376.086-.764.21-1.165.369v-1.073a7.36 7.36 0 011.087-.301 7.6 7.6 0 01.642-.1c.224-.024.45-.037.677-.037.415 0 .788.046 1.121.137.333.091.614.23.844.417.23.187.407.421.53.704.123.282.185.615.185.998v4.73h-1.067zm-.13-3.124h-1.51c-.296 0-.552.03-.766.09-.214.059-.39.143-.526.252-.137.11-.238.24-.304.393-.067.153-.1.325-.1.516 0 .133.02.259.062.38.041.12.107.228.198.321.091.093.21.168.356.222.145.055.323.082.533.082.273 0 .587-.083.94-.25.353-.166.726-.429 1.117-.789v-1.217zm8.313 3.124v-4.928c0-.214-.008-.39-.024-.527a1.2 1.2 0 00-.075-.324.348.348 0 00-.13-.168.43.43 0 00-.448.034c-.077.055-.16.144-.25.267a4.216 4.216 0 00-.293.489 30.3 30.3 0 00-.38.748v4.41h-1.087v-4.8c0-.25-.008-.453-.023-.608a1.42 1.42 0 00-.076-.362.34.34 0 00-.133-.178.431.431 0 00-.43.02.988.988 0 00-.243.247c-.09.118-.188.28-.298.485-.109.205-.239.467-.39.786v4.41h-1.093v-6.864h.91l.054 1.306c.118-.26.233-.481.345-.663.112-.183.227-.33.345-.441.119-.112.245-.194.38-.246.134-.053.283-.079.447-.079.37 0 .65.12.841.362.192.242.287.616.287 1.122.11-.237.217-.448.322-.633a2.31 2.31 0 01.338-.465c.12-.125.254-.22.4-.287.146-.066.314-.099.506-.099.861 0 1.292.663 1.292 1.99v4.996h-1.094zm8.6-3.794c0 .17-.003.31-.007.424a6.37 6.37 0 01-.02.322h-4.82c0 .701.196 1.24.588 1.616.392.376.957.564 1.695.564.2 0 .401-.008.602-.024.2-.016.394-.037.58-.065.188-.027.366-.058.537-.092.171-.034.33-.072.475-.113v.978a9.161 9.161 0 01-2.365.308c-.588 0-1.094-.08-1.517-.24a2.597 2.597 0 01-1.043-.694 2.857 2.857 0 01-.601-1.114 5.273 5.273 0 01-.195-1.494c0-.483.07-.94.208-1.37a3.44 3.44 0 01.609-1.135c.266-.326.593-.584.98-.776a2.94 2.94 0 011.32-.287c.478 0 .902.075 1.271.226.37.15.68.363.934.639.252.276.444.61.574 1.005.13.394.195.835.195 1.322zm-1.238-.17a2.593 2.593 0 00-.089-.838 1.763 1.763 0 00-.338-.653 1.576 1.576 0 00-.57-.427 1.916 1.916 0 00-.794-.154c-.26 0-.496.05-.71.15-.215.101-.4.242-.554.425a2.19 2.19 0 00-.376.656 3.026 3.026 0 00-.178.84h3.61z"/><path id=":" fill="#7E7C7B" d="M79.714 189.912c.141 0 .276.029.403.086a1.107 1.107 0 01.564.564.978.978 0 01.086.403.971.971 0 01-.086.407 1.12 1.12 0 01-.229.331 1.058 1.058 0 01-.738.308c-.146 0-.282-.028-.407-.082a1.07 1.07 0 01-.557-.557 1.006 1.006 0 01-.082-.407 1.058 1.058 0 01.308-.738 1.12 1.12 0 01.331-.23.971.971 0 01.407-.085zm0 5.01c.141 0 .276.03.403.086a1.107 1.107 0 01.564.564.978.978 0 01.086.404.971.971 0 01-.086.406 1.12 1.12 0 01-.229.332 1.058 1.058 0 01-.738.307c-.146 0-.282-.027-.407-.082a1.07 1.07 0 01-.557-.557 1.006 1.006 0 01-.082-.406 1.058 1.058 0 01.308-.738 1.12 1.12 0 01.331-.23.971.971 0 01.407-.085z"/><path id="'Peter'" fill="#478964" d="M95.895 187.24l-.199 3.205h-1.175l-.192-3.206h1.566zm10.007 3.458c0 .365-.068.726-.205 1.084a2.68 2.68 0 01-.635.96 3.227 3.227 0 01-1.101.687c-.447.176-.98.263-1.6.263h-1.107v3.206h-1.217v-8.934h2.516c.442 0 .866.049 1.271.147.406.098.762.256 1.07.475.308.219.553.501.735.848.182.346.273.767.273 1.264zm-1.264.055c0-.574-.188-1.014-.564-1.32-.376-.305-.901-.457-1.576-.457h-1.244v3.677h1.135c.72 0 1.275-.157 1.664-.471.39-.315.585-.791.585-1.43zm8.907 2.351c0 .17-.002.31-.007.424a6.37 6.37 0 01-.02.322h-4.82c0 .701.196 1.24.588 1.616.392.376.957.564 1.695.564.201 0 .401-.008.602-.024.2-.016.394-.037.581-.065.187-.027.366-.058.537-.092.17-.034.329-.072.475-.113v.978a9.161 9.161 0 01-2.365.308c-.588 0-1.094-.08-1.518-.24a2.597 2.597 0 01-1.043-.694 2.857 2.857 0 01-.601-1.114 5.273 5.273 0 01-.195-1.494c0-.483.07-.94.209-1.37a3.44 3.44 0 01.608-1.135c.267-.326.594-.584.981-.776a2.94 2.94 0 011.32-.287c.478 0 .902.075 1.27.226.37.15.68.363.934.639.253.276.444.61.574 1.005.13.394.195.835.195 1.322zm-1.237-.17a2.593 2.593 0 00-.09-.838 1.763 1.763 0 00-.338-.653 1.576 1.576 0 00-.57-.427 1.916 1.916 0 00-.793-.154c-.26 0-.497.05-.711.15-.215.101-.4.242-.554.425a2.19 2.19 0 00-.376.656 3.026 3.026 0 00-.178.84h3.61zm8.668 3.869a5.793 5.793 0 01-.834.147 8.52 8.52 0 01-.875.044c-.862 0-1.504-.195-1.928-.584-.424-.39-.636-.988-.636-1.795v-3.582h-1.92v-.998h1.92v-1.887l1.19-.307v2.194h3.083v.998h-3.083v3.487c0 .492.13.86.393 1.104.262.243.648.365 1.158.365.22 0 .458-.017.718-.051.26-.034.531-.088.814-.16v1.025zm7.963-3.699c0 .17-.002.31-.006.424a6.37 6.37 0 01-.02.322h-4.82c0 .701.196 1.24.588 1.616.392.376.957.564 1.695.564.2 0 .401-.008.602-.024.2-.016.394-.037.58-.065.187-.027.366-.058.537-.092.171-.034.33-.072.475-.113v.978a9.161 9.161 0 01-2.365.308c-.588 0-1.094-.08-1.517-.24a2.597 2.597 0 01-1.043-.694 2.857 2.857 0 01-.602-1.114 5.273 5.273 0 01-.194-1.494c0-.483.07-.94.208-1.37a3.44 3.44 0 01.609-1.135c.266-.326.593-.584.98-.776a2.94 2.94 0 011.32-.287c.478 0 .902.075 1.271.226.37.15.68.363.933.639s.445.61.575 1.005c.13.394.194.835.194 1.322zm-1.237-.17a2.593 2.593 0 00-.089-.838 1.763 1.763 0 00-.338-.653 1.576 1.576 0 00-.57-.427 1.916 1.916 0 00-.794-.154c-.26 0-.497.05-.71.15-.215.101-.4.242-.555.425a2.19 2.19 0 00-.375.656 3.026 3.026 0 00-.178.84h3.61zm3.418-2.899h1.087l.034 1.265c.406-.488.806-.841 1.2-1.06a2.436 2.436 0 011.193-.328c.71 0 1.25.23 1.616.69.367.46.537 1.144.51 2.051h-1.203c.013-.601-.074-1.038-.264-1.309-.189-.27-.466-.406-.83-.406-.16 0-.32.028-.482.085a1.947 1.947 0 00-.5.273 4.47 4.47 0 00-.543.482 8.898 8.898 0 00-.615.711v4.41h-1.203v-6.864zm10.958-2.796l-.198 3.206h-1.176l-.191-3.206h1.565z"/><path id="," fill="#7E7C7B" d="M146.768 198.3c.232.009.458-.012.676-.062a2.02 2.02 0 00.578-.222c.166-.098.3-.22.4-.366a.86.86 0 00.15-.499.95.95 0 00-.099-.464 2.238 2.238 0 00-.222-.329 2.438 2.438 0 01-.222-.32.91.91 0 01-.1-.459.915.915 0 01.223-.588.857.857 0 01.287-.212 1.12 1.12 0 01.875.017c.148.066.278.168.39.305.111.136.2.307.266.512.066.205.1.447.1.725 0 .378-.07.742-.21 1.09a2.657 2.657 0 01-.621.926c-.276.27-.62.484-1.032.643-.413.16-.893.24-1.44.24v-.937z"/><path id="salary" fill="#181717" d="M51.604 212.025a1.634 1.634 0 01-.458 1.16 2.084 2.084 0 01-.492.378 3.272 3.272 0 01-.598.26c-.212.069-.43.119-.653.15a4.638 4.638 0 01-.656.048 12.3 12.3 0 01-1.282-.061 8.646 8.646 0 01-1.145-.198v-1.094c.401.114.8.2 1.197.26.396.059.79.089 1.182.089.57 0 .991-.078 1.265-.233.273-.155.41-.376.41-.663a.812.812 0 00-.065-.331.753.753 0 00-.236-.28 2.254 2.254 0 00-.53-.278 11.81 11.81 0 00-.98-.328 6.963 6.963 0 01-.858-.31 2.877 2.877 0 01-.68-.414 1.776 1.776 0 01-.452-.56 1.649 1.649 0 01-.164-.76 1.744 1.744 0 01.588-1.264c.214-.196.504-.36.868-.49.365-.129.82-.194 1.367-.194.27 0 .568.015.896.045.328.03.67.08 1.025.153v1.06a9.803 9.803 0 00-1.063-.202 6.926 6.926 0 00-.871-.065c-.296 0-.546.023-.749.069a1.553 1.553 0 00-.492.188.734.734 0 00-.27.28.748.748 0 00-.082.345c0 .123.024.235.072.335.048.1.136.197.266.29.13.094.311.187.544.28.232.094.535.196.909.305.406.119.747.243 1.025.373.278.13.504.274.677.434.173.16.298.34.373.54.075.2.112.428.112.683zm6.672 1.873l-.027-.922c-.374.369-.753.635-1.138.8-.385.163-.79.245-1.214.245-.391 0-.726-.05-1.004-.15a1.883 1.883 0 01-.687-.413 1.603 1.603 0 01-.397-.62 2.289 2.289 0 01-.126-.772c0-.688.256-1.227.769-1.616.512-.39 1.27-.585 2.273-.585h1.421v-.601c0-.406-.13-.73-.39-.974-.259-.244-.655-.366-1.189-.366-.387 0-.769.043-1.145.13-.376.086-.764.21-1.165.369v-1.073a7.36 7.36 0 011.087-.301 7.6 7.6 0 01.642-.1c.224-.024.45-.037.677-.037.415 0 .788.046 1.121.137.333.091.614.23.844.417.23.187.407.421.53.704.123.282.185.615.185.998v4.73h-1.067zm-.13-3.124h-1.51c-.296 0-.552.03-.766.09-.214.059-.39.143-.526.252-.137.11-.238.24-.304.393-.067.153-.1.325-.1.516 0 .133.02.259.062.38.041.12.107.228.198.321.091.093.21.168.356.222.145.055.323.082.533.082.273 0 .587-.083.94-.25.353-.166.726-.429 1.117-.789v-1.217zm5.756-5.557h-2.03v-.978h3.233v8.668h2.044v.991h-5.503v-.99h2.256v-7.691zm9.769 8.681l-.027-.922c-.374.369-.754.635-1.139.8-.385.163-.79.245-1.213.245-.392 0-.727-.05-1.005-.15a1.883 1.883 0 01-.687-.413 1.603 1.603 0 01-.396-.62 2.289 2.289 0 01-.127-.772c0-.688.256-1.227.77-1.616.512-.39 1.27-.585 2.272-.585h1.422v-.601c0-.406-.13-.73-.39-.974s-.656-.366-1.19-.366c-.386 0-.768.043-1.144.13-.376.086-.765.21-1.166.369v-1.073a7.36 7.36 0 011.087-.301 7.6 7.6 0 01.643-.1c.223-.024.449-.037.677-.037.414 0 .788.046 1.12.137.333.091.615.23.845.417.23.187.407.421.53.704.123.282.184.615.184.998v4.73h-1.066zm-.13-3.124h-1.51c-.297 0-.552.03-.766.09-.215.059-.39.143-.527.252-.136.11-.238.24-.304.393-.066.153-.099.325-.099.516 0 .133.02.259.061.38.042.12.108.228.199.321.09.093.21.168.355.222.146.055.324.082.533.082.274 0 .587-.083.94-.25.354-.166.726-.429 1.118-.789v-1.217zm3.698-3.739h1.087l.034 1.265c.406-.488.806-.841 1.2-1.06a2.436 2.436 0 011.193-.328c.71 0 1.25.23 1.617.69.366.46.536 1.144.509 2.051h-1.203c.013-.601-.074-1.038-.263-1.309-.19-.27-.466-.406-.831-.406-.16 0-.32.028-.482.085a1.947 1.947 0 00-.499.273 4.47 4.47 0 00-.543.482 8.898 8.898 0 00-.616.711v4.41H77.24v-6.864zm13.522 0l-2.338 6.139a12.037 12.037 0 01-.749 1.613 4.784 4.784 0 01-.844 1.11c-.305.29-.64.503-1.005.64a3.463 3.463 0 01-1.223.205 6.811 6.811 0 01-.636-.027v-1.08c.1.013.21.026.328.037.118.012.244.017.376.017.219 0 .423-.031.612-.095s.368-.168.536-.311c.169-.144.33-.33.486-.557.155-.228.305-.504.45-.828l-2.74-6.863h1.353l1.737 4.54.348 1.066.397-1.094 1.606-4.512h1.306z"/><path id=":" fill="#7E7C7B" d="M95.108 206.912c.142 0 .276.029.404.086a1.107 1.107 0 01.564.564.978.978 0 01.085.403.971.971 0 01-.085.407 1.12 1.12 0 01-.23.331 1.058 1.058 0 01-.738.308c-.145 0-.281-.028-.406-.082a1.07 1.07 0 01-.557-.557 1.006 1.006 0 01-.082-.407 1.058 1.058 0 01.308-.738 1.12 1.12 0 01.33-.23.971.971 0 01.407-.085zm0 5.01c.142 0 .276.03.404.086a1.107 1.107 0 01.564.564.978.978 0 01.085.404.971.971 0 01-.085.406 1.12 1.12 0 01-.23.332 1.058 1.058 0 01-.738.307c-.145 0-.281-.027-.406-.082a1.07 1.07 0 01-.557-.557 1.006 1.006 0 01-.082-.406 1.058 1.058 0 01.308-.738 1.12 1.12 0 01.33-.23.971.971 0 01.407-.085z"/><path id="2000" fill="#A7333A" d="M113.545 213.898h-5.886v-1.066l2.31-2.297c.379-.374.687-.697.924-.97.237-.274.421-.523.553-.75a2.28 2.28 0 00.267-.638c.045-.2.068-.417.068-.65 0-.218-.03-.427-.089-.625a1.49 1.49 0 00-.273-.523 1.268 1.268 0 00-.479-.356 1.734 1.734 0 00-.704-.13c-.378 0-.722.085-1.032.253-.31.17-.595.388-.854.657l-.657-.786c.338-.356.726-.64 1.166-.855.44-.214.951-.321 1.535-.321.396 0 .757.06 1.083.178.326.118.607.289.844.512.237.224.42.497.55.82.13.324.195.689.195 1.094 0 .342-.045.659-.136.95a3.646 3.646 0 01-.414.872c-.184.29-.417.59-.697.899-.28.31-.612.65-.995 1.019l-1.62 1.579h4.34v1.134zm7.902-4.463c0 .683-.068 1.306-.205 1.87a4.33 4.33 0 01-.622 1.448 2.925 2.925 0 01-1.036.937c-.412.221-.896.331-1.452.331-.479 0-.914-.09-1.306-.27a2.594 2.594 0 01-1.005-.83c-.278-.374-.492-.85-.642-1.429-.15-.579-.226-1.264-.226-2.057 0-.684.07-1.308.209-1.873.139-.566.346-1.05.622-1.453.275-.403.62-.716 1.035-.937.415-.22.898-.331 1.45-.331.478 0 .913.09 1.305.27.392.18.727.458 1.005.834.278.376.492.853.643 1.432.15.579.225 1.265.225 2.058zm-1.203.04c0-.154-.006-.308-.017-.46a23.678 23.678 0 00-.038-.449l-3.78 2.81c.069.237.155.456.26.656.105.2.231.373.38.516.147.144.316.256.505.335.19.08.405.12.646.12.31 0 .592-.075.844-.226.253-.15.469-.373.646-.67.178-.296.315-.664.41-1.104.096-.44.144-.949.144-1.527zm-4.088-.081c0 .14.001.282.004.423.002.142.01.278.024.41l3.78-2.795a3.198 3.198 0 00-.26-.636 2.016 2.016 0 00-.376-.496 1.612 1.612 0 00-.499-.324 1.628 1.628 0 00-.629-.117c-.31 0-.591.076-.844.226-.253.15-.468.375-.646.673a3.697 3.697 0 00-.41 1.108 7.24 7.24 0 00-.144 1.528zm12.989.04c0 .684-.069 1.307-.206 1.87a4.33 4.33 0 01-.622 1.45 2.925 2.925 0 01-1.035.936c-.413.221-.897.331-1.453.331-.478 0-.914-.09-1.306-.27a2.594 2.594 0 01-1.004-.83c-.278-.374-.493-.85-.643-1.429-.15-.579-.226-1.264-.226-2.057 0-.684.07-1.308.209-1.873.139-.566.346-1.05.622-1.453s.62-.716 1.036-.937c.414-.22.897-.331 1.449-.331.478 0 .914.09 1.305.27.392.18.727.458 1.005.834.278.376.493.853.643 1.432.15.579.226 1.265.226 2.058zm-1.204.042c0-.155-.005-.31-.017-.462a23.67 23.67 0 00-.037-.448l-3.78 2.81c.068.237.154.456.26.656.104.2.23.373.379.516.148.144.316.256.505.335.19.08.405.12.646.12.31 0 .592-.075.845-.226.253-.15.468-.373.646-.67.177-.296.314-.664.41-1.104.096-.44.143-.949.143-1.527zm-4.087-.082c0 .14 0 .282.003.423.002.142.01.278.024.41l3.78-2.795a3.198 3.198 0 00-.26-.636 2.016 2.016 0 00-.376-.496 1.612 1.612 0 00-.499-.324 1.628 1.628 0 00-.629-.117c-.31 0-.59.076-.844.226-.253.15-.468.375-.646.673a3.697 3.697 0 00-.41 1.108 7.24 7.24 0 00-.143 1.528zm12.988.04c0 .684-.069 1.307-.205 1.87a4.33 4.33 0 01-.622 1.45 2.925 2.925 0 01-1.036.936c-.412.221-.897.331-1.453.331-.478 0-.913-.09-1.305-.27a2.594 2.594 0 01-1.005-.83c-.278-.374-.492-.85-.643-1.429-.15-.579-.225-1.264-.225-2.057 0-.684.07-1.308.208-1.873.14-.566.347-1.05.622-1.453.276-.403.621-.716 1.036-.937.415-.22.898-.331 1.45-.331.478 0 .913.09 1.305.27.392.18.727.458 1.005.834.278.376.492.853.642 1.432.15.579.226 1.265.226 2.058zm-1.203.042c0-.155-.006-.31-.017-.462a23.67 23.67 0 00-.038-.448l-3.78 2.81c.068.237.155.456.26.656.104.2.23.373.379.516.148.144.317.256.506.335.189.08.404.12.646.12.31 0 .591-.075.844-.226.253-.15.468-.373.646-.67.178-.296.314-.664.41-1.104.096-.44.144-.949.144-1.527zm-4.088-.082c0 .14 0 .282.003.423.002.142.01.278.024.41l3.78-2.795a3.198 3.198 0 00-.26-.636 2.016 2.016 0 00-.375-.496 1.612 1.612 0 00-.5-.324 1.628 1.628 0 00-.628-.117c-.31 0-.592.076-.845.226-.252.15-.468.375-.646.673a3.697 3.697 0 00-.41 1.108 7.24 7.24 0 00-.143 1.528z"/><path id="},{" fill="#7E7C7B" d="M31.247 221h.506c.88 0 1.533.206 1.962.619.428.412.642 1.038.642 1.876v1.58c0 .223.025.422.076.597.05.176.137.324.263.445.125.12.293.213.502.277.21.063.472.095.786.095h.294v.95h-.294c-.332 0-.605.028-.817.082a1.116 1.116 0 00-.495.25.88.88 0 00-.246.427 2.438 2.438 0 00-.069.615v2.393c0 .383-.045.728-.136 1.036-.091.307-.24.57-.445.786a1.993 1.993 0 01-.806.499c-.333.116-.739.174-1.217.174h-.506v-.957h.41c1.053 0 1.58-.513 1.58-1.538v-2.365c0-1.112.48-1.737 1.442-1.873-.971-.105-1.456-.732-1.456-1.88v-1.566c0-1.043-.522-1.565-1.566-1.565h-.41V221zm7.759 11.3c.232.009.458-.012.677-.062a2.02 2.02 0 00.577-.222c.167-.098.3-.22.4-.366a.86.86 0 00.15-.499.95.95 0 00-.099-.464 2.238 2.238 0 00-.222-.329 2.438 2.438 0 01-.222-.32.91.91 0 01-.099-.459.915.915 0 01.222-.588.857.857 0 01.287-.212 1.12 1.12 0 01.875.017c.148.066.278.168.39.305.112.136.2.307.266.512.067.205.1.447.1.725 0 .378-.07.742-.209 1.09a2.657 2.657 0 01-.622.926c-.276.27-.62.484-1.032.643-.413.16-.892.24-1.44.24v-.937zm19.9 1.401h-.507c-.88 0-1.533-.206-1.962-.618-.428-.413-.642-1.038-.642-1.877v-2.352a2.18 2.18 0 00-.075-.598.978.978 0 00-.263-.444 1.224 1.224 0 00-.5-.277 2.706 2.706 0 00-.782-.096h-.294v-.95h.294c.332 0 .604-.027.813-.082.21-.054.374-.138.492-.25a.88.88 0 00.247-.427c.045-.173.068-.378.068-.615v-1.62c0-.383.045-.728.137-1.036.09-.307.24-.57.447-.786.208-.216.477-.382.807-.499.33-.116.735-.174 1.213-.174h.506v.957h-.403c-1.057 0-1.586.513-1.586 1.538v1.593c0 1.112-.48 1.738-1.442 1.88.97.095 1.456.72 1.456 1.873v2.338c0 1.043.524 1.565 1.572 1.565h.403v.957z"/><path id="name" fill="#181717" d="M46.17 241.035h1.06l.047 1.108c.2-.237.395-.435.581-.592.187-.157.37-.283.55-.38a2.06 2.06 0 01.551-.2c.187-.04.38-.059.581-.059.706 0 1.24.209 1.603.626.362.417.544 1.044.544 1.883v4.477h-1.19v-4.381c0-.538-.1-.936-.3-1.193-.201-.258-.5-.387-.896-.387-.146 0-.288.022-.427.065a1.557 1.557 0 00-.435.226c-.15.107-.313.252-.488.434-.176.182-.373.41-.592.684v4.552h-1.19v-6.863zm12.106 6.863l-.027-.922c-.374.369-.753.635-1.138.8-.385.163-.79.245-1.214.245-.391 0-.726-.05-1.004-.15a1.883 1.883 0 01-.687-.413 1.603 1.603 0 01-.397-.62 2.289 2.289 0 01-.126-.772c0-.688.256-1.227.769-1.616.512-.39 1.27-.585 2.273-.585h1.421v-.601c0-.406-.13-.73-.39-.974-.259-.244-.655-.366-1.189-.366-.387 0-.769.043-1.145.13-.376.086-.764.21-1.165.369v-1.073a7.36 7.36 0 011.087-.301 7.6 7.6 0 01.642-.1c.224-.024.45-.037.677-.037.415 0 .788.046 1.121.137.333.091.614.23.844.417.23.187.407.421.53.704.123.282.185.615.185.998v4.73h-1.067zm-.13-3.124h-1.51c-.296 0-.552.03-.766.09-.214.059-.39.143-.526.252-.137.11-.238.24-.304.393-.067.153-.1.325-.1.516 0 .133.02.259.062.38.041.12.107.228.198.321.091.093.21.168.356.222.145.055.323.082.533.082.273 0 .587-.083.94-.25.353-.166.726-.429 1.117-.789v-1.217zm8.313 3.124v-4.928c0-.214-.008-.39-.024-.527a1.2 1.2 0 00-.075-.324.348.348 0 00-.13-.168.43.43 0 00-.448.034c-.077.055-.16.144-.25.267a4.216 4.216 0 00-.293.489 30.3 30.3 0 00-.38.748v4.41h-1.087v-4.8c0-.25-.008-.453-.023-.608a1.42 1.42 0 00-.076-.362.34.34 0 00-.133-.178.431.431 0 00-.43.02.988.988 0 00-.243.247c-.09.118-.188.28-.298.485-.109.205-.239.467-.39.786v4.41h-1.093v-6.864h.91l.054 1.306c.118-.26.233-.481.345-.663.112-.183.227-.33.345-.441.119-.112.245-.194.38-.246.134-.053.283-.079.447-.079.37 0 .65.12.841.362.192.242.287.616.287 1.122.11-.237.217-.448.322-.633a2.31 2.31 0 01.338-.465c.12-.125.254-.22.4-.287.146-.066.314-.099.506-.099.861 0 1.292.663 1.292 1.99v4.996h-1.094zm8.6-3.794c0 .17-.003.31-.007.424a6.37 6.37 0 01-.02.322h-4.82c0 .701.196 1.24.588 1.616.392.376.957.564 1.695.564.2 0 .401-.008.602-.024.2-.016.394-.037.58-.065.188-.027.366-.058.537-.092.171-.034.33-.072.475-.113v.978a9.161 9.161 0 01-2.365.308c-.588 0-1.094-.08-1.517-.24a2.597 2.597 0 01-1.043-.694 2.857 2.857 0 01-.601-1.114 5.273 5.273 0 01-.195-1.494c0-.483.07-.94.208-1.37a3.44 3.44 0 01.609-1.135c.266-.326.593-.584.98-.776a2.94 2.94 0 011.32-.287c.478 0 .902.075 1.271.226.37.15.68.363.934.639.252.276.444.61.574 1.005.13.394.195.835.195 1.322zm-1.238-.17a2.593 2.593 0 00-.089-.838 1.763 1.763 0 00-.338-.653 1.576 1.576 0 00-.57-.427 1.916 1.916 0 00-.794-.154c-.26 0-.496.05-.71.15-.215.101-.4.242-.554.425a2.19 2.19 0 00-.376.656 3.026 3.026 0 00-.178.84h3.61z"/><path id=":" fill="#7E7C7B" d="M79.714 240.912c.141 0 .276.029.403.086a1.107 1.107 0 01.564.564.978.978 0 01.086.403.971.971 0 01-.086.407 1.12 1.12 0 01-.229.331 1.058 1.058 0 01-.738.308c-.146 0-.282-.028-.407-.082a1.07 1.07 0 01-.557-.557 1.006 1.006 0 01-.082-.407 1.058 1.058 0 01.308-.738 1.12 1.12 0 01.331-.23.971.971 0 01.407-.085zm0 5.01c.141 0 .276.03.403.086a1.107 1.107 0 01.564.564.978.978 0 01.086.404.971.971 0 01-.086.406 1.12 1.12 0 01-.229.332 1.058 1.058 0 01-.738.307c-.146 0-.282-.027-.407-.082a1.07 1.07 0 01-.557-.557 1.006 1.006 0 01-.082-.406 1.058 1.058 0 01.308-.738 1.12 1.12 0 01.331-.23.971.971 0 01.407-.085z"/><path id="'Alex'" fill="#478964" d="M95.895 238.24l-.199 3.205h-1.175l-.192-3.206h1.566zm10.69 9.658h-1.325l-.622-1.948h-3.72l-.628 1.948h-1.265l2.967-8.934h1.668l2.926 8.934zm-2.296-3.035l-1.51-4.778-1.511 4.778h3.021zm5.797-5.646h-2.03v-.978h3.233v8.668h2.044v.991h-5.503v-.99h2.256v-7.691zm11.156 4.887c0 .17-.002.31-.007.424a6.372 6.372 0 01-.02.322h-4.82c0 .701.196 1.24.588 1.616.392.376.957.564 1.696.564.2 0 .4-.008.601-.024.2-.016.394-.037.581-.065.187-.027.366-.058.537-.092.17-.034.33-.072.475-.113v.978a9.161 9.161 0 01-2.365.308c-.588 0-1.094-.08-1.518-.24a2.597 2.597 0 01-1.042-.694 2.857 2.857 0 01-.602-1.114 5.273 5.273 0 01-.195-1.494c0-.483.07-.94.209-1.37a3.44 3.44 0 01.608-1.135c.267-.326.594-.584.981-.776a2.94 2.94 0 011.32-.287c.478 0 .902.075 1.271.226.37.15.68.363.933.639s.444.61.574 1.005c.13.394.195.835.195 1.322zm-1.237-.17a2.593 2.593 0 00-.089-.838 1.763 1.763 0 00-.338-.653 1.576 1.576 0 00-.571-.427 1.916 1.916 0 00-.793-.154c-.26 0-.497.05-.711.15-.214.101-.399.242-.554.425a2.19 2.19 0 00-.376.656 3.026 3.026 0 00-.177.84h3.609zm9.324 3.964h-1.579l-1.853-2.618-1.832 2.618h-1.538l2.66-3.445-2.537-3.418h1.525l1.804 2.639 1.771-2.639h1.47l-2.577 3.445 2.686 3.418zm5.052-9.659l-.198 3.206h-1.176l-.192-3.206h1.566z"/><path id="," fill="#7E7C7B" d="M139.07 249.3c.233.009.458-.012.677-.062a2.02 2.02 0 00.578-.222c.166-.098.3-.22.4-.366a.86.86 0 00.15-.499.95.95 0 00-.1-.464 2.238 2.238 0 00-.221-.329 2.438 2.438 0 01-.222-.32.91.91 0 01-.1-.459.915.915 0 01.223-.588.857.857 0 01.287-.212 1.12 1.12 0 01.875.017c.148.066.278.168.39.305.111.136.2.307.266.512.066.205.1.447.1.725 0 .378-.07.742-.21 1.09a2.657 2.657 0 01-.621.926c-.276.27-.62.484-1.033.643-.412.16-.892.24-1.439.24v-.937z"/><path id="salary" fill="#181717" d="M51.604 263.025a1.634 1.634 0 01-.458 1.16 2.084 2.084 0 01-.492.378 3.272 3.272 0 01-.598.26c-.212.069-.43.119-.653.15a4.638 4.638 0 01-.656.048 12.3 12.3 0 01-1.282-.061 8.646 8.646 0 01-1.145-.198v-1.094c.401.114.8.2 1.197.26.396.059.79.089 1.182.089.57 0 .991-.078 1.265-.233.273-.155.41-.376.41-.663a.812.812 0 00-.065-.331.753.753 0 00-.236-.28 2.254 2.254 0 00-.53-.278 11.81 11.81 0 00-.98-.328 6.963 6.963 0 01-.858-.31 2.877 2.877 0 01-.68-.414 1.776 1.776 0 01-.452-.56 1.649 1.649 0 01-.164-.76 1.744 1.744 0 01.588-1.264c.214-.196.504-.36.868-.49.365-.129.82-.194 1.367-.194.27 0 .568.015.896.045.328.03.67.08 1.025.153v1.06a9.803 9.803 0 00-1.063-.202 6.926 6.926 0 00-.871-.065c-.296 0-.546.023-.749.069a1.553 1.553 0 00-.492.188.734.734 0 00-.27.28.748.748 0 00-.082.345c0 .123.024.235.072.335.048.1.136.197.266.29.13.094.311.187.544.28.232.094.535.196.909.305.406.119.747.243 1.025.373.278.13.504.274.677.434.173.16.298.34.373.54.075.2.112.428.112.683zm6.672 1.873l-.027-.922c-.374.369-.753.635-1.138.8-.385.163-.79.245-1.214.245-.391 0-.726-.05-1.004-.15a1.883 1.883 0 01-.687-.413 1.603 1.603 0 01-.397-.62 2.289 2.289 0 01-.126-.772c0-.688.256-1.227.769-1.616.512-.39 1.27-.585 2.273-.585h1.421v-.601c0-.406-.13-.73-.39-.974-.259-.244-.655-.366-1.189-.366-.387 0-.769.043-1.145.13-.376.086-.764.21-1.165.369v-1.073a7.36 7.36 0 011.087-.301 7.6 7.6 0 01.642-.1c.224-.024.45-.037.677-.037.415 0 .788.046 1.121.137.333.091.614.23.844.417.23.187.407.421.53.704.123.282.185.615.185.998v4.73h-1.067zm-.13-3.124h-1.51c-.296 0-.552.03-.766.09-.214.059-.39.143-.526.252-.137.11-.238.24-.304.393-.067.153-.1.325-.1.516 0 .133.02.259.062.38.041.12.107.228.198.321.091.093.21.168.356.222.145.055.323.082.533.082.273 0 .587-.083.94-.25.353-.166.726-.429 1.117-.789v-1.217zm5.756-5.557h-2.03v-.978h3.233v8.668h2.044v.991h-5.503v-.99h2.256v-7.691zm9.769 8.681l-.027-.922c-.374.369-.754.635-1.139.8-.385.163-.79.245-1.213.245-.392 0-.727-.05-1.005-.15a1.883 1.883 0 01-.687-.413 1.603 1.603 0 01-.396-.62 2.289 2.289 0 01-.127-.772c0-.688.256-1.227.77-1.616.512-.39 1.27-.585 2.272-.585h1.422v-.601c0-.406-.13-.73-.39-.974s-.656-.366-1.19-.366c-.386 0-.768.043-1.144.13-.376.086-.765.21-1.166.369v-1.073a7.36 7.36 0 011.087-.301 7.6 7.6 0 01.643-.1c.223-.024.449-.037.677-.037.414 0 .788.046 1.12.137.333.091.615.23.845.417.23.187.407.421.53.704.123.282.184.615.184.998v4.73h-1.066zm-.13-3.124h-1.51c-.297 0-.552.03-.766.09-.215.059-.39.143-.527.252-.136.11-.238.24-.304.393-.066.153-.099.325-.099.516 0 .133.02.259.061.38.042.12.108.228.199.321.09.093.21.168.355.222.146.055.324.082.533.082.274 0 .587-.083.94-.25.354-.166.726-.429 1.118-.789v-1.217zm3.698-3.739h1.087l.034 1.265c.406-.488.806-.841 1.2-1.06a2.436 2.436 0 011.193-.328c.71 0 1.25.23 1.617.69.366.46.536 1.144.509 2.051h-1.203c.013-.601-.074-1.038-.263-1.309-.19-.27-.466-.406-.831-.406-.16 0-.32.028-.482.085a1.947 1.947 0 00-.499.273 4.47 4.47 0 00-.543.482 8.898 8.898 0 00-.616.711v4.41H77.24v-6.864zm13.522 0l-2.338 6.139a12.037 12.037 0 01-.749 1.613 4.784 4.784 0 01-.844 1.11c-.305.29-.64.503-1.005.64a3.463 3.463 0 01-1.223.205 6.811 6.811 0 01-.636-.027v-1.08c.1.013.21.026.328.037.118.012.244.017.376.017.219 0 .423-.031.612-.095s.368-.168.536-.311c.169-.144.33-.33.486-.557.155-.228.305-.504.45-.828l-2.74-6.863h1.353l1.737 4.54.348 1.066.397-1.094 1.606-4.512h1.306z"/><path id=":" fill="#7E7C7B" d="M95.108 257.912c.142 0 .276.029.404.086a1.107 1.107 0 01.564.564.978.978 0 01.085.403.971.971 0 01-.085.407 1.12 1.12 0 01-.23.331 1.058 1.058 0 01-.738.308c-.145 0-.281-.028-.406-.082a1.07 1.07 0 01-.557-.557 1.006 1.006 0 01-.082-.407 1.058 1.058 0 01.308-.738 1.12 1.12 0 01.33-.23.971.971 0 01.407-.085zm0 5.01c.142 0 .276.03.404.086a1.107 1.107 0 01.564.564.978.978 0 01.085.404.971.971 0 01-.085.406 1.12 1.12 0 01-.23.332 1.058 1.058 0 01-.738.307c-.145 0-.281-.027-.406-.082a1.07 1.07 0 01-.557-.557 1.006 1.006 0 01-.082-.406 1.058 1.058 0 01.308-.738 1.12 1.12 0 01.33-.23.971.971 0 01.407-.085z"/><path id="1800" fill="#A7333A" d="M113.47 264.898h-5.613v-1.107h2.297v-6.521l-2.14 1.162-.437-1.012 2.844-1.497h1.053v7.868h1.996v1.107zm7.772-2.242c0 .379-.077.715-.232 1.009a2.13 2.13 0 01-.65.741c-.278.2-.606.353-.984.458a4.594 4.594 0 01-1.23.157c-.488 0-.918-.054-1.29-.164a2.768 2.768 0 01-.932-.458 1.93 1.93 0 01-.759-1.586c0-.546.153-1.018.458-1.415.305-.396.777-.756 1.415-1.08-.583-.296-1.01-.625-1.278-.987a2.038 2.038 0 01-.404-1.248 2.047 2.047 0 01.715-1.552c.24-.21.539-.377.899-.502.36-.126.784-.188 1.271-.188.46 0 .865.049 1.214.147.348.098.641.238.878.42s.415.404.533.663c.119.26.178.55.178.868 0 .52-.145.962-.434 1.327-.29.364-.7.683-1.234.957.264.132.51.278.738.437a3.2 3.2 0 01.595.533c.169.196.3.415.393.657.093.241.14.51.14.806zm-1.415-4.62c0-.406-.142-.708-.427-.907-.285-.198-.685-.297-1.2-.297-.51 0-.908.098-1.193.294-.285.196-.427.49-.427.882a1.175 1.175 0 00.42.916c.144.132.323.262.537.39.214.127.47.257.766.39.515-.242.898-.494 1.148-.756a1.28 1.28 0 00.376-.913zm.123 4.71c0-.17-.027-.334-.082-.493a1.367 1.367 0 00-.294-.472 2.951 2.951 0 00-.567-.465 6.682 6.682 0 00-.903-.478c-.31.15-.57.3-.782.448a2.698 2.698 0 00-.513.45c-.13.153-.222.312-.277.476a1.632 1.632 0 00-.082.52c0 .205.045.386.133.543.09.157.211.29.366.4.155.11.34.191.554.246.214.055.447.082.697.082.242 0 .47-.025.684-.075.214-.05.4-.127.557-.23.157-.102.281-.232.372-.389.092-.157.137-.345.137-.564zm9.195-2.311c0 .683-.069 1.306-.206 1.87a4.33 4.33 0 01-.622 1.448 2.925 2.925 0 01-1.035.937c-.413.221-.897.331-1.453.331-.478 0-.914-.09-1.306-.27a2.594 2.594 0 01-1.004-.83c-.278-.374-.493-.85-.643-1.429-.15-.579-.226-1.264-.226-2.057 0-.684.07-1.308.209-1.873.139-.566.346-1.05.622-1.453s.62-.716 1.036-.937c.414-.22.897-.331 1.449-.331.478 0 .914.09 1.305.27.392.18.727.458 1.005.834.278.376.493.853.643 1.432.15.579.226 1.265.226 2.058zm-1.204.04c0-.154-.005-.308-.017-.46a23.67 23.67 0 00-.037-.449l-3.78 2.81c.068.237.154.456.26.656.104.2.23.373.379.516.148.144.316.256.505.335.19.08.405.12.646.12.31 0 .592-.075.845-.226.253-.15.468-.373.646-.67.177-.296.314-.664.41-1.104.096-.44.143-.949.143-1.527zm-4.087-.081c0 .14 0 .282.003.423.002.142.01.278.024.41l3.78-2.795a3.198 3.198 0 00-.26-.636 2.016 2.016 0 00-.376-.496 1.612 1.612 0 00-.499-.324 1.628 1.628 0 00-.629-.117c-.31 0-.59.076-.844.226-.253.15-.468.375-.646.673a3.697 3.697 0 00-.41 1.108 7.24 7.24 0 00-.143 1.528zm12.988.04c0 .684-.069 1.307-.205 1.87a4.33 4.33 0 01-.622 1.45 2.925 2.925 0 01-1.036.936c-.412.221-.897.331-1.453.331-.478 0-.913-.09-1.305-.27a2.594 2.594 0 01-1.005-.83c-.278-.374-.492-.85-.643-1.429-.15-.579-.225-1.264-.225-2.057 0-.684.07-1.308.208-1.873.14-.566.347-1.05.622-1.453.276-.403.621-.716 1.036-.937.415-.22.898-.331 1.45-.331.478 0 .913.09 1.305.27.392.18.727.458 1.005.834.278.376.492.853.642 1.432.15.579.226 1.265.226 2.058zm-1.203.042c0-.155-.006-.31-.017-.462a23.67 23.67 0 00-.038-.448l-3.78 2.81c.068.237.155.456.26.656.104.2.23.373.379.516.148.144.317.256.506.335.189.08.404.12.646.12.31 0 .591-.075.844-.226.253-.15.468-.373.646-.67.178-.296.314-.664.41-1.104.096-.44.144-.949.144-1.527zm-4.088-.082c0 .14 0 .282.003.423.002.142.01.278.024.41l3.78-2.795a3.198 3.198 0 00-.26-.636 2.016 2.016 0 00-.375-.496 1.612 1.612 0 00-.5-.324 1.628 1.628 0 00-.628-.117c-.31 0-.592.076-.845.226-.252.15-.468.375-.646.673a3.697 3.697 0 00-.41 1.108 7.24 7.24 0 00-.143 1.528z"/><path id="}]," fill="#7E7C7B" d="M31.247 272h.506c.88 0 1.533.206 1.962.619.428.412.642 1.038.642 1.876v1.58c0 .223.025.422.076.597.05.176.137.324.263.445.125.12.293.213.502.277.21.063.472.095.786.095h.294v.95h-.294c-.332 0-.605.028-.817.082a1.116 1.116 0 00-.495.25.88.88 0 00-.246.427 2.438 2.438 0 00-.069.615v2.393c0 .383-.045.728-.136 1.036-.091.307-.24.57-.445.786a1.993 1.993 0 01-.806.499c-.333.116-.739.174-1.217.174h-.506v-.957h.41c1.053 0 1.58-.513 1.58-1.538v-2.365c0-1.112.48-1.737 1.442-1.873-.971-.105-1.456-.732-1.456-1.88v-1.566c0-1.043-.522-1.565-1.566-1.565h-.41V272zm11.47 12.701h-3.37v-.957h2.222v-10.787h-2.221V272h3.37v12.701zm3.986-1.401c.233.009.458-.012.677-.062a2.02 2.02 0 00.578-.222c.166-.098.3-.22.4-.366a.86.86 0 00.15-.499.95.95 0 00-.1-.464 2.238 2.238 0 00-.221-.329 2.438 2.438 0 01-.223-.32.91.91 0 01-.099-.459.915.915 0 01.222-.588.857.857 0 01.288-.212 1.12 1.12 0 01.875.017c.148.066.278.168.39.305.11.136.2.307.266.512.066.205.099.447.099.725 0 .378-.07.742-.209 1.09a2.657 2.657 0 01-.622.926c-.275.27-.62.484-1.032.643-.412.16-.892.24-1.439.24v-.937z"/><path id="internals" fill="#181717" d="M33.113 310.02h-2.03v-.985h3.233v5.872h2.044v.991h-5.503v-.99h2.256v-4.888zm.417-3.863c.132 0 .255.024.37.072a.893.893 0 01.297.202.919.919 0 01.27.663.96.96 0 01-.27.663.893.893 0 01-.298.201.944.944 0 01-.369.072.944.944 0 01-.369-.072.893.893 0 01-.297-.201.96.96 0 01-.27-.663.919.919 0 01.27-.663.893.893 0 01.297-.202.944.944 0 01.37-.072zm4.943 2.878h1.06l.047 1.108c.2-.237.394-.435.581-.592.187-.157.37-.283.55-.38a2.06 2.06 0 01.55-.2c.188-.04.381-.059.582-.059.706 0 1.24.209 1.603.626.362.417.543 1.044.543 1.883v4.477H42.8v-4.381c0-.538-.1-.936-.3-1.193-.2-.258-.499-.387-.895-.387-.146 0-.289.022-.428.065a1.557 1.557 0 00-.434.226c-.15.107-.313.252-.489.434-.175.182-.372.41-.59.684v4.552h-1.19v-6.863zm13.227 6.768a5.793 5.793 0 01-.834.147 8.52 8.52 0 01-.875.044c-.861 0-1.504-.195-1.928-.584-.423-.39-.635-.988-.635-1.795v-3.582h-1.921v-.998h1.92v-1.887l1.19-.307v2.194H51.7v.998h-3.083v3.487c0 .492.131.86.393 1.104.262.243.649.365 1.159.365.219 0 .458-.017.718-.051.26-.034.53-.088.813-.16v1.025zm7.964-3.699c0 .17-.002.31-.007.424a6.37 6.37 0 01-.02.322h-4.82c0 .701.196 1.24.588 1.616.392.376.957.564 1.696.564.2 0 .4-.008.601-.024.2-.016.394-.037.581-.065.187-.027.366-.058.537-.092.17-.034.33-.072.475-.113v.978a9.161 9.161 0 01-2.365.308c-.588 0-1.094-.08-1.518-.24a2.597 2.597 0 01-1.042-.694 2.857 2.857 0 01-.602-1.114 5.273 5.273 0 01-.195-1.494c0-.483.07-.94.209-1.37a3.44 3.44 0 01.608-1.135c.267-.326.594-.584.981-.776a2.94 2.94 0 011.32-.287c.478 0 .902.075 1.27.226.37.15.681.363.934.639s.444.61.574 1.005c.13.394.195.835.195 1.322zm-1.237-.17a2.593 2.593 0 00-.09-.838 1.763 1.763 0 00-.337-.653 1.576 1.576 0 00-.571-.427 1.916 1.916 0 00-.793-.154c-.26 0-.497.05-.711.15-.214.101-.399.242-.554.425a2.19 2.19 0 00-.376.656 3.026 3.026 0 00-.178.84h3.61zm3.418-2.899h1.087l.034 1.265c.405-.488.805-.841 1.2-1.06a2.436 2.436 0 011.192-.328c.711 0 1.25.23 1.617.69.367.46.537 1.144.51 2.051H66.28c.014-.601-.074-1.038-.263-1.309-.19-.27-.466-.406-.83-.406-.16 0-.32.028-.482.085a1.947 1.947 0 00-.5.273 4.47 4.47 0 00-.543.482 8.898 8.898 0 00-.615.711v4.41h-1.203v-6.864zm7.417 0h1.06l.047 1.108c.2-.237.394-.435.581-.592.187-.157.37-.283.55-.38a2.06 2.06 0 01.55-.2c.188-.04.381-.059.582-.059.706 0 1.24.209 1.603.626.362.417.543 1.044.543 1.883v4.477h-1.19v-4.381c0-.538-.1-.936-.3-1.193-.2-.258-.499-.387-.895-.387-.146 0-.289.022-.428.065a1.557 1.557 0 00-.434.226c-.15.107-.313.252-.489.434-.175.182-.372.41-.59.684v4.552h-1.19v-6.863zm12.106 6.863l-.027-.922c-.374.369-.753.635-1.138.8-.385.163-.79.245-1.214.245-.392 0-.727-.05-1.005-.15a1.883 1.883 0 01-.687-.413 1.603 1.603 0 01-.396-.62 2.289 2.289 0 01-.127-.772c0-.688.257-1.227.77-1.616.512-.39 1.27-.585 2.272-.585h1.422v-.601c0-.406-.13-.73-.39-.974s-.656-.366-1.189-.366c-.387 0-.769.043-1.145.13-.376.086-.764.21-1.165.369v-1.073a7.36 7.36 0 011.087-.301 7.6 7.6 0 01.642-.1c.223-.024.449-.037.677-.037.415 0 .788.046 1.121.137.333.091.614.23.844.417.23.187.407.421.53.704.123.282.185.615.185.998v4.73h-1.067zm-.13-3.124h-1.51c-.297 0-.552.03-.766.09-.214.059-.39.143-.526.252-.137.11-.239.24-.305.393-.066.153-.099.325-.099.516 0 .133.02.259.062.38.04.12.107.228.198.321.091.093.21.168.355.222.146.055.324.082.534.082.273 0 .586-.083.94-.25.353-.166.725-.429 1.117-.789v-1.217zm5.756-5.557h-2.03v-.978h3.233v8.668h2.044v.991h-5.503v-.99h2.256v-7.691zm10.794 6.808a1.634 1.634 0 01-.458 1.16 2.084 2.084 0 01-.492.378 3.272 3.272 0 01-.598.26c-.212.069-.43.119-.653.15a4.638 4.638 0 01-.656.048 12.3 12.3 0 01-1.282-.061 8.646 8.646 0 01-1.145-.198v-1.094c.4.114.8.2 1.196.26.397.059.79.089 1.183.089.57 0 .991-.078 1.264-.233.274-.155.41-.376.41-.663a.812.812 0 00-.064-.331.753.753 0 00-.236-.28 2.254 2.254 0 00-.53-.278 11.81 11.81 0 00-.98-.328 6.963 6.963 0 01-.859-.31 2.877 2.877 0 01-.68-.414 1.776 1.776 0 01-.451-.56 1.649 1.649 0 01-.164-.76 1.744 1.744 0 01.588-1.264c.214-.196.503-.36.868-.49.364-.129.82-.194 1.367-.194.269 0 .567.015.896.045.328.03.67.08 1.025.153v1.06a9.803 9.803 0 00-1.063-.202 6.926 6.926 0 00-.872-.065c-.296 0-.545.023-.748.069a1.553 1.553 0 00-.492.188.734.734 0 00-.27.28.748.748 0 00-.082.345c0 .123.023.235.071.335.048.1.137.197.267.29.13.094.311.187.543.28.233.094.536.196.91.305.405.119.747.243 1.025.373.278.13.504.274.677.434.173.16.297.34.372.54.075.2.113.428.113.683z"/><path id=":[{" fill="#7E7C7B" d="M102.806 308.912c.14 0 .275.029.403.086a1.107 1.107 0 01.564.564.978.978 0 01.085.403.971.971 0 01-.085.407 1.12 1.12 0 01-.23.331 1.058 1.058 0 01-.737.308c-.146 0-.282-.028-.407-.082a1.07 1.07 0 01-.557-.557 1.006 1.006 0 01-.082-.407 1.058 1.058 0 01.308-.738 1.12 1.12 0 01.33-.23.971.971 0 01.408-.085zm0 5.01c.14 0 .275.03.403.086a1.107 1.107 0 01.564.564.978.978 0 01.085.404.971.971 0 01-.085.406 1.12 1.12 0 01-.23.332 1.058 1.058 0 01-.737.307c-.146 0-.282-.027-.407-.082a1.07 1.07 0 01-.557-.557 1.006 1.006 0 01-.082-.406 1.058 1.058 0 01.308-.738 1.12 1.12 0 01.33-.23.971.971 0 01.408-.085zm17.274 4.78h-3.37V306h3.37v.957h-2.235v10.787h2.235v.957zm8.1 0h-.505c-.88 0-1.534-.207-1.962-.62-.428-.412-.643-1.037-.643-1.876v-2.352a2.18 2.18 0 00-.075-.598.978.978 0 00-.263-.444 1.224 1.224 0 00-.5-.277 2.706 2.706 0 00-.782-.096h-.294v-.95h.294c.333 0 .604-.027.814-.082.21-.054.373-.138.492-.25a.88.88 0 00.246-.427c.046-.173.068-.378.068-.615v-1.62c0-.383.046-.728.137-1.036.091-.307.24-.57.448-.786.207-.216.476-.382.806-.499.33-.116.735-.174 1.214-.174h.506v.957h-.404c-1.057 0-1.586.513-1.586 1.538v1.593c0 1.112-.48 1.738-1.442 1.88.97.095 1.456.72 1.456 1.873v2.338c0 1.043.524 1.565 1.572 1.565h.404v.957z"/><path id="name" fill="#181717" d="M46.17 326.035h1.06l.047 1.108c.2-.237.395-.435.581-.592.187-.157.37-.283.55-.38a2.06 2.06 0 01.551-.2c.187-.04.38-.059.581-.059.706 0 1.24.209 1.603.626.362.417.544 1.044.544 1.883v4.477h-1.19v-4.381c0-.538-.1-.936-.3-1.193-.201-.258-.5-.387-.896-.387-.146 0-.288.022-.427.065a1.557 1.557 0 00-.435.226c-.15.107-.313.252-.488.434-.176.182-.373.41-.592.684v4.552h-1.19v-6.863zm12.106 6.863l-.027-.922c-.374.369-.753.635-1.138.8-.385.163-.79.245-1.214.245-.391 0-.726-.05-1.004-.15a1.883 1.883 0 01-.687-.413 1.603 1.603 0 01-.397-.62 2.289 2.289 0 01-.126-.772c0-.688.256-1.227.769-1.616.512-.39 1.27-.585 2.273-.585h1.421v-.601c0-.406-.13-.73-.39-.974-.259-.244-.655-.366-1.189-.366-.387 0-.769.043-1.145.13-.376.086-.764.21-1.165.369v-1.073a7.36 7.36 0 011.087-.301 7.6 7.6 0 01.642-.1c.224-.024.45-.037.677-.037.415 0 .788.046 1.121.137.333.091.614.23.844.417.23.187.407.421.53.704.123.282.185.615.185.998v4.73h-1.067zm-.13-3.124h-1.51c-.296 0-.552.03-.766.09-.214.059-.39.143-.526.252-.137.11-.238.24-.304.393-.067.153-.1.325-.1.516 0 .133.02.259.062.38.041.12.107.228.198.321.091.093.21.168.356.222.145.055.323.082.533.082.273 0 .587-.083.94-.25.353-.166.726-.429 1.117-.789v-1.217zm8.313 3.124v-4.928c0-.214-.008-.39-.024-.527a1.2 1.2 0 00-.075-.324.348.348 0 00-.13-.168.43.43 0 00-.448.034c-.077.055-.16.144-.25.267a4.216 4.216 0 00-.293.489 30.3 30.3 0 00-.38.748v4.41h-1.087v-4.8c0-.25-.008-.453-.023-.608a1.42 1.42 0 00-.076-.362.34.34 0 00-.133-.178.431.431 0 00-.43.02.988.988 0 00-.243.247c-.09.118-.188.28-.298.485-.109.205-.239.467-.39.786v4.41h-1.093v-6.864h.91l.054 1.306c.118-.26.233-.481.345-.663.112-.183.227-.33.345-.441.119-.112.245-.194.38-.246.134-.053.283-.079.447-.079.37 0 .65.12.841.362.192.242.287.616.287 1.122.11-.237.217-.448.322-.633a2.31 2.31 0 01.338-.465c.12-.125.254-.22.4-.287.146-.066.314-.099.506-.099.861 0 1.292.663 1.292 1.99v4.996h-1.094zm8.6-3.794c0 .17-.003.31-.007.424a6.37 6.37 0 01-.02.322h-4.82c0 .701.196 1.24.588 1.616.392.376.957.564 1.695.564.2 0 .401-.008.602-.024.2-.016.394-.037.58-.065.188-.027.366-.058.537-.092.171-.034.33-.072.475-.113v.978a9.161 9.161 0 01-2.365.308c-.588 0-1.094-.08-1.517-.24a2.597 2.597 0 01-1.043-.694 2.857 2.857 0 01-.601-1.114 5.273 5.273 0 01-.195-1.494c0-.483.07-.94.208-1.37a3.44 3.44 0 01.609-1.135c.266-.326.593-.584.98-.776a2.94 2.94 0 011.32-.287c.478 0 .902.075 1.271.226.37.15.68.363.934.639.252.276.444.61.574 1.005.13.394.195.835.195 1.322zm-1.238-.17a2.593 2.593 0 00-.089-.838 1.763 1.763 0 00-.338-.653 1.576 1.576 0 00-.57-.427 1.916 1.916 0 00-.794-.154c-.26 0-.496.05-.71.15-.215.101-.4.242-.554.425a2.19 2.19 0 00-.376.656 3.026 3.026 0 00-.178.84h3.61z"/><path id=":" fill="#7E7C7B" d="M79.714 325.912c.141 0 .276.029.403.086a1.107 1.107 0 01.564.564.978.978 0 01.086.403.971.971 0 01-.086.407 1.12 1.12 0 01-.229.331 1.058 1.058 0 01-.738.308c-.146 0-.282-.028-.407-.082a1.07 1.07 0 01-.557-.557 1.006 1.006 0 01-.082-.407 1.058 1.058 0 01.308-.738 1.12 1.12 0 01.331-.23.971.971 0 01.407-.085zm0 5.01c.141 0 .276.03.403.086a1.107 1.107 0 01.564.564.978.978 0 01.086.404.971.971 0 01-.086.406 1.12 1.12 0 01-.229.332 1.058 1.058 0 01-.738.307c-.146 0-.282-.027-.407-.082a1.07 1.07 0 01-.557-.557 1.006 1.006 0 01-.082-.406 1.058 1.058 0 01.308-.738 1.12 1.12 0 01.331-.23.971.971 0 01.407-.085z"/><path id="'Jack'" fill="#478964" d="M95.895 323.24l-.199 3.205h-1.175l-.192-3.206h1.566zm9.057.724v6.207c0 .383-.057.746-.17 1.09a2.47 2.47 0 01-.52.9 2.49 2.49 0 01-.875.608c-.351.15-.764.225-1.238.225-.177 0-.358-.012-.543-.037a4.8 4.8 0 01-.533-.103 3.619 3.619 0 01-.482-.157 2.214 2.214 0 01-.39-.202v-1.224c.283.206.596.367.94.486.344.118.685.178 1.022.178.497 0 .88-.152 1.149-.455.268-.303.403-.74.403-1.31v-5.153h-3.398v-1.053h4.635zm7.205 8.934l-.027-.922c-.374.369-.753.635-1.138.8-.385.163-.79.245-1.214.245-.392 0-.727-.05-1.005-.15a1.883 1.883 0 01-.687-.413 1.603 1.603 0 01-.396-.62 2.289 2.289 0 01-.127-.772c0-.688.257-1.227.77-1.616.512-.39 1.27-.585 2.272-.585h1.422v-.601c0-.406-.13-.73-.39-.974s-.656-.366-1.189-.366c-.387 0-.769.043-1.145.13-.376.086-.764.21-1.165.369v-1.073a7.36 7.36 0 011.087-.301 7.6 7.6 0 01.642-.1c.223-.024.45-.037.677-.037.415 0 .788.046 1.121.137.333.091.614.23.844.417.23.187.407.421.53.704.123.282.185.615.185.998v4.73h-1.067zm-.13-3.124h-1.51c-.297 0-.552.03-.766.09-.214.059-.39.143-.526.252-.137.11-.239.24-.305.393-.066.153-.099.325-.099.516 0 .133.02.259.062.38.04.12.107.228.198.321.091.093.21.168.356.222.145.055.323.082.533.082.273 0 .586-.083.94-.25.353-.166.725-.429 1.117-.789v-1.217zm8.75 2.872c-.31.118-.627.206-.953.263a5.845 5.845 0 01-1.009.085c-1.084 0-1.92-.294-2.505-.882-.586-.588-.878-1.447-.878-2.577 0-.542.084-1.034.253-1.476.168-.442.405-.82.71-1.135.306-.315.67-.557 1.094-.728.424-.171.891-.257 1.402-.257.355 0 .688.026.998.076.31.05.606.132.888.246v1.135a3.77 3.77 0 00-.905-.339 4.248 4.248 0 00-.954-.106c-.305 0-.594.058-.865.174-.27.117-.51.284-.714.503a2.38 2.38 0 00-.485.8c-.119.314-.178.67-.178 1.066 0 .83.201 1.45.605 1.863.403.412.962.619 1.678.619a3.897 3.897 0 001.818-.438v1.108zm8.538.252h-1.633l-3.2-3.677v3.677h-1.189v-9.659h1.19v5.934l3.082-3.138h1.573l-3.22 3.165 3.397 3.698zm5.066-9.659l-.198 3.206h-1.176l-.192-3.206h1.566z"/><path id="," fill="#7E7C7B" d="M139.07 334.3c.233.009.458-.012.677-.062a2.02 2.02 0 00.578-.222c.166-.098.3-.22.4-.366a.86.86 0 00.15-.499.95.95 0 00-.1-.464 2.238 2.238 0 00-.221-.329 2.438 2.438 0 01-.222-.32.91.91 0 01-.1-.459.915.915 0 01.223-.588.857.857 0 01.287-.212 1.12 1.12 0 01.875.017c.148.066.278.168.39.305.111.136.2.307.266.512.066.205.1.447.1.725 0 .378-.07.742-.21 1.09a2.657 2.657 0 01-.621.926c-.276.27-.62.484-1.033.643-.412.16-.892.24-1.439.24v-.937z"/><path id="salary" fill="#181717" d="M51.604 348.025a1.634 1.634 0 01-.458 1.16 2.084 2.084 0 01-.492.378 3.272 3.272 0 01-.598.26c-.212.069-.43.119-.653.15a4.638 4.638 0 01-.656.048 12.3 12.3 0 01-1.282-.061 8.646 8.646 0 01-1.145-.198v-1.094c.401.114.8.2 1.197.26.396.059.79.089 1.182.089.57 0 .991-.078 1.265-.233.273-.155.41-.376.41-.663a.812.812 0 00-.065-.331.753.753 0 00-.236-.28 2.254 2.254 0 00-.53-.278 11.81 11.81 0 00-.98-.328 6.963 6.963 0 01-.858-.31 2.877 2.877 0 01-.68-.414 1.776 1.776 0 01-.452-.56 1.649 1.649 0 01-.164-.76 1.744 1.744 0 01.588-1.264c.214-.196.504-.36.868-.49.365-.129.82-.194 1.367-.194.27 0 .568.015.896.045.328.03.67.08 1.025.153v1.06a9.803 9.803 0 00-1.063-.202 6.926 6.926 0 00-.871-.065c-.296 0-.546.023-.749.069a1.553 1.553 0 00-.492.188.734.734 0 00-.27.28.748.748 0 00-.082.345c0 .123.024.235.072.335.048.1.136.197.266.29.13.094.311.187.544.28.232.094.535.196.909.305.406.119.747.243 1.025.373.278.13.504.274.677.434.173.16.298.34.373.54.075.2.112.428.112.683zm6.672 1.873l-.027-.922c-.374.369-.753.635-1.138.8-.385.163-.79.245-1.214.245-.391 0-.726-.05-1.004-.15a1.883 1.883 0 01-.687-.413 1.603 1.603 0 01-.397-.62 2.289 2.289 0 01-.126-.772c0-.688.256-1.227.769-1.616.512-.39 1.27-.585 2.273-.585h1.421v-.601c0-.406-.13-.73-.39-.974-.259-.244-.655-.366-1.189-.366-.387 0-.769.043-1.145.13-.376.086-.764.21-1.165.369v-1.073a7.36 7.36 0 011.087-.301 7.6 7.6 0 01.642-.1c.224-.024.45-.037.677-.037.415 0 .788.046 1.121.137.333.091.614.23.844.417.23.187.407.421.53.704.123.282.185.615.185.998v4.73h-1.067zm-.13-3.124h-1.51c-.296 0-.552.03-.766.09-.214.059-.39.143-.526.252-.137.11-.238.24-.304.393-.067.153-.1.325-.1.516 0 .133.02.259.062.38.041.12.107.228.198.321.091.093.21.168.356.222.145.055.323.082.533.082.273 0 .587-.083.94-.25.353-.166.726-.429 1.117-.789v-1.217zm5.756-5.557h-2.03v-.978h3.233v8.668h2.044v.991h-5.503v-.99h2.256v-7.691zm9.769 8.681l-.027-.922c-.374.369-.754.635-1.139.8-.385.163-.79.245-1.213.245-.392 0-.727-.05-1.005-.15a1.883 1.883 0 01-.687-.413 1.603 1.603 0 01-.396-.62 2.289 2.289 0 01-.127-.772c0-.688.256-1.227.77-1.616.512-.39 1.27-.585 2.272-.585h1.422v-.601c0-.406-.13-.73-.39-.974s-.656-.366-1.19-.366c-.386 0-.768.043-1.144.13-.376.086-.765.21-1.166.369v-1.073a7.36 7.36 0 011.087-.301 7.6 7.6 0 01.643-.1c.223-.024.449-.037.677-.037.414 0 .788.046 1.12.137.333.091.615.23.845.417.23.187.407.421.53.704.123.282.184.615.184.998v4.73h-1.066zm-.13-3.124h-1.51c-.297 0-.552.03-.766.09-.215.059-.39.143-.527.252-.136.11-.238.24-.304.393-.066.153-.099.325-.099.516 0 .133.02.259.061.38.042.12.108.228.199.321.09.093.21.168.355.222.146.055.324.082.533.082.274 0 .587-.083.94-.25.354-.166.726-.429 1.118-.789v-1.217zm3.698-3.739h1.087l.034 1.265c.406-.488.806-.841 1.2-1.06a2.436 2.436 0 011.193-.328c.71 0 1.25.23 1.617.69.366.46.536 1.144.509 2.051h-1.203c.013-.601-.074-1.038-.263-1.309-.19-.27-.466-.406-.831-.406-.16 0-.32.028-.482.085a1.947 1.947 0 00-.499.273 4.47 4.47 0 00-.543.482 8.898 8.898 0 00-.616.711v4.41H77.24v-6.864zm13.522 0l-2.338 6.139a12.037 12.037 0 01-.749 1.613 4.784 4.784 0 01-.844 1.11c-.305.29-.64.503-1.005.64a3.463 3.463 0 01-1.223.205 6.811 6.811 0 01-.636-.027v-1.08c.1.013.21.026.328.037.118.012.244.017.376.017.219 0 .423-.031.612-.095s.368-.168.536-.311c.169-.144.33-.33.486-.557.155-.228.305-.504.45-.828l-2.74-6.863h1.353l1.737 4.54.348 1.066.397-1.094 1.606-4.512h1.306z"/><path id=":" fill="#7E7C7B" d="M95.108 342.912c.142 0 .276.029.404.086a1.107 1.107 0 01.564.564.978.978 0 01.085.403.971.971 0 01-.085.407 1.12 1.12 0 01-.23.331 1.058 1.058 0 01-.738.308c-.145 0-.281-.028-.406-.082a1.07 1.07 0 01-.557-.557 1.006 1.006 0 01-.082-.407 1.058 1.058 0 01.308-.738 1.12 1.12 0 01.33-.23.971.971 0 01.407-.085zm0 5.01c.142 0 .276.03.404.086a1.107 1.107 0 01.564.564.978.978 0 01.085.404.971.971 0 01-.085.406 1.12 1.12 0 01-.23.332 1.058 1.058 0 01-.738.307c-.145 0-.281-.027-.406-.082a1.07 1.07 0 01-.557-.557 1.006 1.006 0 01-.082-.406 1.058 1.058 0 01.308-.738 1.12 1.12 0 01.33-.23.971.971 0 01.407-.085z"/><path id="1300" fill="#A7333A" d="M113.47 349.898h-5.613v-1.107h2.297v-6.521l-2.14 1.162-.437-1.012 2.844-1.497h1.053v7.868h1.996v1.107zm7.601-2.713c0 .391-.08.76-.239 1.104-.16.344-.399.644-.718.902-.319.257-.72.46-1.203.608-.483.148-1.046.222-1.688.222a12.014 12.014 0 01-1.75-.123v-1.066a11.124 11.124 0 001.86.157c.446 0 .827-.04 1.144-.12.317-.08.575-.194.776-.345.2-.15.346-.332.437-.546.092-.215.137-.456.137-.725 0-.246-.055-.46-.164-.643a1.365 1.365 0 00-.461-.458 2.281 2.281 0 00-.711-.277 4.16 4.16 0 00-.906-.092h-1.019v-.977h1.033c.269 0 .513-.036.734-.106.222-.07.41-.172.568-.304.157-.133.278-.296.362-.49.084-.193.127-.413.127-.659 0-.478-.146-.827-.438-1.046-.292-.219-.72-.328-1.285-.328-.3 0-.61.03-.93.089-.319.06-.66.148-1.025.267v-1.04c.155-.054.32-.103.496-.147a7.2 7.2 0 011.049-.177c.173-.016.34-.024.499-.024.474 0 .89.051 1.25.154.36.102.662.25.903.44.242.192.424.424.547.698.123.273.185.58.185.923 0 .51-.131.938-.393 1.285-.262.346-.621.622-1.077.827.232.036.461.11.687.219.225.11.428.25.608.42.18.171.326.373.438.605.111.233.167.49.167.773zm8.074-1.75c0 .683-.069 1.306-.206 1.87a4.33 4.33 0 01-.622 1.448 2.925 2.925 0 01-1.035.937c-.413.221-.897.331-1.453.331-.478 0-.914-.09-1.306-.27a2.594 2.594 0 01-1.004-.83c-.278-.374-.493-.85-.643-1.429-.15-.579-.226-1.264-.226-2.057 0-.684.07-1.308.209-1.873.139-.566.346-1.05.622-1.453s.62-.716 1.036-.937c.414-.22.897-.331 1.449-.331.478 0 .914.09 1.305.27.392.18.727.458 1.005.834.278.376.493.853.643 1.432.15.579.226 1.265.226 2.058zm-1.204.04c0-.154-.005-.308-.017-.46a23.67 23.67 0 00-.037-.449l-3.78 2.81c.068.237.154.456.26.656.104.2.23.373.379.516.148.144.316.256.505.335.19.08.405.12.646.12.31 0 .592-.075.845-.226.253-.15.468-.373.646-.67.177-.296.314-.664.41-1.104.096-.44.143-.949.143-1.527zm-4.087-.081c0 .14 0 .282.003.423.002.142.01.278.024.41l3.78-2.795a3.198 3.198 0 00-.26-.636 2.016 2.016 0 00-.376-.496 1.612 1.612 0 00-.499-.324 1.628 1.628 0 00-.629-.117c-.31 0-.59.076-.844.226-.253.15-.468.375-.646.673a3.697 3.697 0 00-.41 1.108 7.24 7.24 0 00-.143 1.528zm12.988.04c0 .684-.069 1.307-.205 1.87a4.33 4.33 0 01-.622 1.45 2.925 2.925 0 01-1.036.936c-.412.221-.897.331-1.453.331-.478 0-.913-.09-1.305-.27a2.594 2.594 0 01-1.005-.83c-.278-.374-.492-.85-.643-1.429-.15-.579-.225-1.264-.225-2.057 0-.684.07-1.308.208-1.873.14-.566.347-1.05.622-1.453.276-.403.621-.716 1.036-.937.415-.22.898-.331 1.45-.331.478 0 .913.09 1.305.27.392.18.727.458 1.005.834.278.376.492.853.642 1.432.15.579.226 1.265.226 2.058zm-1.203.042c0-.155-.006-.31-.017-.462a23.67 23.67 0 00-.038-.448l-3.78 2.81c.068.237.155.456.26.656.104.2.23.373.379.516.148.144.317.256.506.335.189.08.404.12.646.12.31 0 .591-.075.844-.226.253-.15.468-.373.646-.67.178-.296.314-.664.41-1.104.096-.44.144-.949.144-1.527zm-4.088-.082c0 .14 0 .282.003.423.002.142.01.278.024.41l3.78-2.795a3.198 3.198 0 00-.26-.636 2.016 2.016 0 00-.375-.496 1.612 1.612 0 00-.5-.324 1.628 1.628 0 00-.628-.117c-.31 0-.592.076-.845.226-.252.15-.468.375-.646.673a3.697 3.697 0 00-.41 1.108 7.24 7.24 0 00-.143 1.528z"/><path id="}]}};" fill="#7E7C7B" d="M31.247 357h.506c.88 0 1.533.206 1.962.619.428.412.642 1.038.642 1.876v1.58c0 .223.025.422.076.597.05.176.137.324.263.445.125.12.293.213.502.277.21.063.472.095.786.095h.294v.95h-.294c-.332 0-.605.028-.817.082a1.116 1.116 0 00-.495.25.88.88 0 00-.246.427 2.438 2.438 0 00-.069.615v2.393c0 .383-.045.728-.136 1.036-.091.307-.24.57-.445.786a1.993 1.993 0 01-.806.499c-.333.116-.739.174-1.217.174h-.506v-.957h.41c1.053 0 1.58-.513 1.58-1.538v-2.365c0-1.112.48-1.737 1.442-1.873-.971-.105-1.456-.732-1.456-1.88v-1.566c0-1.043-.522-1.565-1.566-1.565h-.41V357zm11.47 12.701h-3.37v-.957h2.222v-10.787h-2.221V357h3.37v12.701zM15.854 374h.505c.88 0 1.534.206 1.962.619.429.412.643 1.038.643 1.876v1.58c0 .223.025.422.075.597.05.176.138.324.263.445.126.12.293.213.503.277.21.063.471.095.786.095h.294v.95h-.294c-.333 0-.605.028-.817.082a1.116 1.116 0 00-.496.25.88.88 0 00-.246.427 2.438 2.438 0 00-.068.615v2.393c0 .383-.046.728-.137 1.036-.091.307-.24.57-.444.786a1.993 1.993 0 01-.807.499c-.332.116-.738.174-1.217.174h-.505v-.957h.41c1.052 0 1.579-.513 1.579-1.538v-2.365c0-1.112.48-1.737 1.442-1.873-.97-.105-1.456-.732-1.456-1.88v-1.566c0-1.043-.522-1.565-1.565-1.565h-.41V374zM.458 391h.506c.88 0 1.533.206 1.962.619.428.412.642 1.038.642 1.876v1.58c0 .223.025.422.076.597.05.176.137.324.263.445.125.12.293.213.502.277.21.063.472.095.786.095h.294v.95h-.294c-.332 0-.605.028-.817.082a1.116 1.116 0 00-.495.25.88.88 0 00-.246.427 2.438 2.438 0 00-.069.615v2.393c0 .383-.045.728-.136 1.036-.092.307-.24.57-.445.786a1.993 1.993 0 01-.806.499c-.333.116-.739.174-1.217.174H.458v-.957h.41c1.053 0 1.58-.513 1.58-1.538v-2.365c0-1.112.48-1.737 1.442-1.873-.971-.105-1.456-.732-1.456-1.88v-1.566c0-1.043-.522-1.565-1.566-1.565h-.41V391zm7.84 11.3c.233.009.459-.012.678-.062a2.02 2.02 0 00.577-.222c.167-.098.3-.22.4-.366a.86.86 0 00.15-.499.95.95 0 00-.099-.464 2.238 2.238 0 00-.222-.329 2.438 2.438 0 01-.222-.32.91.91 0 01-.1-.459.915.915 0 01.223-.588.857.857 0 01.287-.212 1.12 1.12 0 01.875.017c.148.066.278.168.39.305.112.136.2.307.266.512.067.205.1.447.1.725 0 .378-.07.742-.209 1.09a2.657 2.657 0 01-.622.926c-.276.27-.62.484-1.032.643-.413.16-.892.24-1.44.24v-.937zm2.14-8.388c.142 0 .276.029.404.086a1.107 1.107 0 01.564.564.978.978 0 01.085.403.971.971 0 01-.085.407 1.12 1.12 0 01-.23.331 1.058 1.058 0 01-.738.308c-.145 0-.28-.028-.406-.082a1.07 1.07 0 01-.557-.557 1.006 1.006 0 01-.082-.407 1.058 1.058 0 01.308-.738 1.12 1.12 0 01.33-.23.971.971 0 01.407-.085z"/></g><g id="Group-5" stroke="#C06334" stroke-linecap="square" transform="matrix(-1 0 0 1 105 37)"><path id="Line" d="M.589 1.244h13.948"/><path id="Line-Copy" d="M.589 110.756h13.948"/><path id="Line-Copy-2" d="M15.508 1.244v109.512"/></g><g id="Group-5-Copy-4" stroke="#C06334" stroke-linecap="square" transform="matrix(-1 0 0 1 105 168)"><path id="Line" d="M.589 2.811h13.948"/><path id="Line-Copy" d="M.589 250.189h13.948"/><path id="Line-Copy-2" d="M15.508 2.811v247.378"/></g><g id="Group-5-Copy-3" stroke="#C06334" stroke-linecap="square" transform="matrix(-1 0 0 1 38 9)"><path id="Line" d="M.589 4.722h13.948"/><path id="Line-Copy" d="M.589 420.278h13.948"/><path id="Line-Copy-2" d="M15.508 4.722v415.556"/></g><g id="Group-5-Copy" stroke="#C06334" stroke-linecap="square" transform="matrix(-1 0 0 1 153 189)"><path id="Line" d="M.589 1.244h13.948"/><path id="Line-Copy" d="M.589 110.756h13.948"/><path id="Line-Copy-2" d="M15.508 1.244v109.512"/></g><g id="Group-5-Copy-2" stroke="#C06334" stroke-linecap="square" transform="matrix(-1 0 0 1 153 315)"><path id="Line" d="M.589.844h13.948"/><path id="Line-Copy" d="M.589 75.156h13.948"/><path id="Line-Copy-2" d="M15.508.844v74.312"/></g><path id="Line-Copy-7" fill="#C06334" fill-rule="nonzero" d="M71.5 213.5l-.344 15.649-5.307-2.801-31.465 59.619-.466.884-1.77-.933.468-.885 31.464-59.619-5.305-2.8L71.5 213.5z"/><path id="Line-Copy-8" fill="#C06334" fill-rule="nonzero" d="M129.5 323.5l-5.848 14.519-3.976-4.494-15.513 13.724-.75.663-1.325-1.498.75-.663 15.513-13.724-3.975-4.494L129.5 323.5z"/><path id="Line-Copy-9" fill="#C06334" fill-rule="nonzero" d="M129.5 239.5l-5.848 14.519-3.976-4.494-15.513 13.724-.75.663-1.325-1.498.75-.663 15.513-13.724-3.975-4.494L129.5 239.5z"/><path id="Line" fill="#C06334" fill-rule="nonzero" d="M71.5 110.5l-.344 15.649-5.307-2.801-31.465 59.619-.466.884-1.77-.933.468-.885 31.464-59.619-5.305-2.8L71.5 110.5z"/></g></g></svg> +======= +<svg xmlns="http://www.w3.org/2000/svg" width="293" height="437" viewBox="0 0 293 437"><defs><style>@import url(https://fonts.googleapis.com/css?family=Open+Sans:bold,italic,bolditalic%7CPT+Mono);@font-face{font-family:'PT Mono';font-weight:700;font-style:normal;src:local('PT MonoBold'),url(/font/PTMonoBold.woff2) format('woff2'),url(/font/PTMonoBold.woff) format('woff'),url(/font/PTMonoBold.ttf) format('truetype')}</style></defs><g id="combined" fill="none" fill-rule="evenodd" stroke="none" stroke-width="1"><g id="recursive-salaries.svg"><g id="{" fill-rule="nonzero" transform="translate(130.107 17.102)"><path fill="#7E7C7B" d="M5.024 12.701H4.52c-.88 0-1.534-.206-1.962-.618-.429-.413-.643-1.038-.643-1.877V7.854a2.18 2.18 0 00-.075-.598.978.978 0 00-.263-.444 1.224 1.224 0 00-.5-.277 2.706 2.706 0 00-.782-.096H0v-.95h.294c.333 0 .604-.027.813-.082.21-.054.374-.138.493-.25a.88.88 0 00.246-.427c.045-.173.068-.378.068-.615v-1.62c0-.383.046-.728.137-1.036.09-.307.24-.57.448-.786.207-.216.476-.382.806-.499C3.635.058 4.04 0 4.52 0h.505v.957h-.403c-1.057 0-1.586.513-1.586 1.538v1.593c0 1.112-.48 1.738-1.442 1.88.97.095 1.456.72 1.456 1.873v2.338c0 1.043.524 1.565 1.572 1.565h.403v.957z"/><path id="sales" fill="#181717" d="M20.815 25.025a1.634 1.634 0 01-.458 1.16 2.084 2.084 0 01-.492.378 3.272 3.272 0 01-.598.26c-.212.069-.43.119-.653.15a4.637 4.637 0 01-.656.048 12.3 12.3 0 01-1.282-.061 8.646 8.646 0 01-1.145-.198v-1.094c.401.114.8.2 1.197.26.396.059.79.089 1.182.089.57 0 .991-.078 1.265-.233.273-.155.41-.376.41-.663a.812.812 0 00-.065-.331.753.753 0 00-.236-.28 2.254 2.254 0 00-.53-.278 11.81 11.81 0 00-.98-.328 6.963 6.963 0 01-.858-.31 2.877 2.877 0 01-.68-.414 1.776 1.776 0 01-.452-.56 1.649 1.649 0 01-.164-.76 1.744 1.744 0 01.588-1.264c.214-.196.504-.36.868-.49.365-.129.82-.194 1.367-.194.27 0 .568.015.896.045.328.03.67.08 1.025.153v1.06a9.803 9.803 0 00-1.063-.202 6.926 6.926 0 00-.871-.065c-.297 0-.546.023-.749.069a1.553 1.553 0 00-.492.188.734.734 0 00-.27.28.748.748 0 00-.082.345c0 .123.024.235.072.335.048.1.136.197.266.29.13.094.311.187.544.28.232.094.535.196.909.305.406.119.747.243 1.025.373.278.13.504.274.677.434.173.16.297.34.373.54.075.2.112.428.112.683zm6.672 1.873l-.027-.922c-.374.369-.753.635-1.138.8-.385.163-.79.245-1.214.245-.392 0-.726-.05-1.004-.15a1.883 1.883 0 01-.687-.413 1.603 1.603 0 01-.397-.62 2.289 2.289 0 01-.126-.772c0-.688.256-1.227.769-1.616.512-.39 1.27-.585 2.273-.585h1.421v-.601c0-.406-.13-.73-.39-.974-.259-.244-.655-.366-1.189-.366-.387 0-.769.043-1.145.13-.376.086-.764.21-1.165.369V20.35a7.36 7.36 0 011.087-.301 7.6 7.6 0 01.642-.1c.224-.024.45-.037.677-.037.415 0 .788.046 1.121.137.333.091.614.23.844.417.23.187.407.421.53.704.123.282.185.615.185.998v4.73h-1.067zm-.13-3.124h-1.51c-.297 0-.552.03-.766.09-.214.059-.39.143-.526.252-.137.11-.238.24-.305.393-.066.153-.099.325-.099.516 0 .133.02.259.062.38.04.12.107.228.198.321.091.093.21.168.356.222.145.055.323.082.533.082.273 0 .587-.083.94-.25.353-.166.725-.429 1.117-.789v-1.217zm5.756-5.557h-2.03v-.978h3.233v8.668h2.044v.991h-5.503v-.99h2.256v-7.691zm11.157 4.887c0 .17-.003.31-.007.424a6.37 6.37 0 01-.02.322h-4.82c0 .701.196 1.24.588 1.616.392.376.957.564 1.695.564.2 0 .401-.008.602-.024.2-.016.394-.037.58-.065.188-.027.366-.058.537-.092.171-.034.33-.072.475-.113v.978a9.161 9.161 0 01-2.365.308c-.588 0-1.094-.08-1.517-.24a2.597 2.597 0 01-1.043-.694 2.857 2.857 0 01-.601-1.114 5.273 5.273 0 01-.195-1.494c0-.483.07-.94.208-1.37a3.44 3.44 0 01.609-1.135c.266-.326.593-.584.98-.776a2.94 2.94 0 011.32-.287c.478 0 .902.075 1.271.226.37.15.68.363.933.639s.445.61.575 1.005c.13.394.195.835.195 1.322zm-1.238-.17a2.593 2.593 0 00-.089-.838 1.763 1.763 0 00-.338-.653 1.576 1.576 0 00-.57-.427 1.916 1.916 0 00-.794-.154c-.26 0-.497.05-.71.15-.215.101-.4.242-.554.425a2.19 2.19 0 00-.376.656 3.026 3.026 0 00-.178.84h3.61zm8.572 2.091a1.634 1.634 0 01-.458 1.16 2.084 2.084 0 01-.492.378 3.272 3.272 0 01-.598.26c-.212.069-.43.119-.653.15a4.637 4.637 0 01-.656.048 12.3 12.3 0 01-1.282-.061 8.646 8.646 0 01-1.145-.198v-1.094c.401.114.8.2 1.197.26.396.059.79.089 1.182.089.57 0 .991-.078 1.265-.233.273-.155.41-.376.41-.663a.812.812 0 00-.065-.331.753.753 0 00-.236-.28 2.254 2.254 0 00-.53-.278 11.81 11.81 0 00-.98-.328 6.963 6.963 0 01-.858-.31 2.877 2.877 0 01-.68-.414 1.776 1.776 0 01-.452-.56 1.649 1.649 0 01-.164-.76 1.744 1.744 0 01.588-1.264c.214-.196.504-.36.868-.49.365-.129.82-.194 1.367-.194.27 0 .568.015.896.045.328.03.67.08 1.025.153v1.06a9.803 9.803 0 00-1.063-.202 6.926 6.926 0 00-.871-.065c-.296 0-.546.023-.749.069a1.553 1.553 0 00-.492.188.734.734 0 00-.27.28.748.748 0 00-.082.345c0 .123.024.235.072.335.048.1.136.197.266.29.13.094.311.187.544.28.232.094.535.196.909.305.406.119.747.243 1.025.373.278.13.504.274.677.434.173.16.298.34.373.54.075.2.112.428.112.683z"/><path id=":[{" fill="#7E7C7B" d="M56.622 19.912c.141 0 .276.029.403.086a1.107 1.107 0 01.564.564.978.978 0 01.086.403.971.971 0 01-.086.407 1.12 1.12 0 01-.229.331 1.058 1.058 0 01-.738.308c-.146 0-.281-.028-.407-.082a1.07 1.07 0 01-.557-.557 1.006 1.006 0 01-.082-.407 1.058 1.058 0 01.308-.738 1.12 1.12 0 01.331-.23.971.971 0 01.407-.085zm0 5.01c.141 0 .276.03.403.086a1.107 1.107 0 01.564.564.978.978 0 01.086.404.971.971 0 01-.086.406 1.12 1.12 0 01-.229.332 1.058 1.058 0 01-.738.307c-.146 0-.281-.027-.407-.082a1.07 1.07 0 01-.557-.557 1.006 1.006 0 01-.082-.406 1.058 1.058 0 01.308-.738 1.12 1.12 0 01.331-.23.971.971 0 01.407-.085zm17.274 4.78h-3.37V17h3.37v.957h-2.235v10.787h2.235v.957zm8.101 0h-.506c-.88 0-1.533-.207-1.962-.62-.428-.412-.642-1.037-.642-1.876v-2.352a2.18 2.18 0 00-.075-.598.978.978 0 00-.264-.444 1.224 1.224 0 00-.499-.277 2.706 2.706 0 00-.782-.096h-.294v-.95h.294c.332 0 .603-.027.813-.082.21-.054.374-.138.492-.25a.88.88 0 00.246-.427c.046-.173.069-.378.069-.615v-1.62c0-.383.045-.728.136-1.036.092-.307.24-.57.448-.786.208-.216.476-.382.807-.499.33-.116.735-.174 1.213-.174h.506v.957h-.403c-1.058 0-1.586.513-1.586 1.538v1.593c0 1.112-.481 1.738-1.443 1.88.971.095 1.456.72 1.456 1.873v2.338c0 1.043.525 1.565 1.573 1.565h.403v.957z"/><path id="name" fill="#181717" d="M30.775 37.035h1.06l.048 1.108c.2-.237.394-.435.58-.592.188-.157.371-.283.551-.38a2.06 2.06 0 01.55-.2c.187-.04.381-.059.582-.059.706 0 1.24.209 1.603.626.362.417.543 1.044.543 1.883v4.477h-1.19v-4.381c0-.538-.1-.936-.3-1.193-.2-.258-.5-.386-.896-.386-.146 0-.288.021-.427.064a1.557 1.557 0 00-.434.226c-.15.107-.313.252-.489.434-.175.182-.372.41-.591.684v4.552h-1.19v-6.863zm12.107 6.863l-.028-.922c-.373.369-.753.635-1.138.8-.385.163-.79.245-1.213.245-.392 0-.727-.05-1.005-.15a1.883 1.883 0 01-.687-.413 1.603 1.603 0 01-.396-.62 2.289 2.289 0 01-.127-.772c0-.688.256-1.227.77-1.616.512-.39 1.27-.585 2.272-.585h1.422v-.601c0-.406-.13-.73-.39-.974s-.656-.366-1.19-.366c-.387 0-.768.043-1.144.13-.376.086-.765.21-1.166.369V37.35a7.36 7.36 0 011.087-.301 7.6 7.6 0 01.643-.1c.223-.024.449-.037.677-.037.414 0 .788.046 1.12.137.333.091.615.23.845.417.23.187.407.421.53.704.123.282.184.615.184.998v4.73h-1.066zm-.13-3.124h-1.51c-.297 0-.552.03-.766.09-.215.059-.39.143-.527.252-.137.11-.238.24-.304.393-.066.153-.1.325-.1.516 0 .133.021.259.062.38.041.12.108.228.199.321.09.093.21.168.355.222.146.055.324.082.533.082.274 0 .587-.083.94-.25.353-.166.726-.429 1.118-.789v-1.217zm8.312 3.124V38.97c0-.214-.008-.39-.023-.527a1.2 1.2 0 00-.076-.324.348.348 0 00-.13-.168.43.43 0 00-.448.034c-.077.055-.16.144-.249.267a4.216 4.216 0 00-.294.489c-.107.203-.233.452-.38.748v4.41h-1.086v-4.8c0-.25-.008-.453-.024-.608a1.42 1.42 0 00-.075-.362.34.34 0 00-.133-.178.431.431 0 00-.43.02.988.988 0 00-.244.247c-.089.118-.188.28-.297.485-.11.205-.24.467-.39.786v4.41h-1.094v-6.864h.91l.054 1.306c.119-.26.234-.481.345-.663.112-.183.227-.33.346-.441.118-.112.245-.194.38-.246.134-.053.283-.079.447-.079.369 0 .65.12.84.362.192.242.288.616.288 1.122.11-.237.216-.448.321-.633a2.31 2.31 0 01.338-.465c.121-.125.255-.22.4-.287.146-.066.315-.099.506-.099.862 0 1.292.663 1.292 1.99v4.996h-1.094zm8.6-3.794c0 .17-.002.31-.007.424a6.37 6.37 0 01-.02.322h-4.82c0 .701.196 1.24.588 1.616.392.376.957.564 1.696.564.2 0 .4-.008.601-.024.2-.016.394-.037.581-.065.187-.027.366-.058.537-.092.17-.034.33-.072.475-.113v.978a9.161 9.161 0 01-2.365.308c-.588 0-1.094-.08-1.518-.24a2.597 2.597 0 01-1.042-.694 2.857 2.857 0 01-.602-1.114 5.273 5.273 0 01-.195-1.494c0-.483.07-.94.209-1.37a3.44 3.44 0 01.608-1.135c.267-.326.594-.584.981-.776a2.94 2.94 0 011.32-.287c.478 0 .902.075 1.27.226.37.15.681.363.934.639s.444.61.574 1.005c.13.394.195.835.195 1.322zm-1.237-.17a2.593 2.593 0 00-.09-.838 1.763 1.763 0 00-.337-.653 1.576 1.576 0 00-.571-.427 1.916 1.916 0 00-.793-.154c-.26 0-.497.05-.711.15-.214.101-.399.242-.554.425a2.19 2.19 0 00-.376.656 3.026 3.026 0 00-.178.84h3.61z"/><path id=":" fill="#7E7C7B" d="M64.32 36.912c.14 0 .275.029.403.086a1.107 1.107 0 01.564.564.978.978 0 01.085.403.971.971 0 01-.085.407 1.12 1.12 0 01-.23.331 1.058 1.058 0 01-.738.308c-.145 0-.281-.028-.406-.082a1.07 1.07 0 01-.558-.557 1.006 1.006 0 01-.082-.407 1.058 1.058 0 01.308-.738 1.12 1.12 0 01.332-.23.971.971 0 01.406-.085zm0 5.01c.14 0 .275.03.403.086a1.107 1.107 0 01.564.564.978.978 0 01.085.404.971.971 0 01-.085.406 1.12 1.12 0 01-.23.332 1.058 1.058 0 01-.738.307c-.145 0-.281-.027-.406-.082a1.07 1.07 0 01-.558-.557 1.006 1.006 0 01-.082-.406 1.058 1.058 0 01.308-.738 1.12 1.12 0 01.332-.23.971.971 0 01.406-.085z"/><path id="'John'" fill="#478964" d="M80.5 34.24l-.198 3.205h-1.176l-.191-3.206H80.5zm9.058.724v6.207c0 .383-.057.746-.171 1.09a2.47 2.47 0 01-.52.9 2.49 2.49 0 01-.875.608c-.35.15-.763.225-1.237.225-.178 0-.359-.012-.544-.037a4.8 4.8 0 01-.533-.103 3.619 3.619 0 01-.482-.157 2.214 2.214 0 01-.39-.202v-1.224c.283.206.597.367.94.486.345.118.685.178 1.023.178.496 0 .88-.152 1.148-.455.269-.303.403-.74.403-1.31v-5.153h-3.397v-1.053h4.635zm8.77 5.448a4.55 4.55 0 01-.225 1.466c-.15.445-.367.825-.65 1.142a2.913 2.913 0 01-1.032.738 3.447 3.447 0 01-1.381.263c-.492 0-.933-.076-1.323-.229a2.617 2.617 0 01-.99-.673 2.98 2.98 0 01-.623-1.1c-.144-.438-.215-.942-.215-1.511 0-.533.075-1.02.225-1.46.15-.44.367-.818.65-1.134a2.913 2.913 0 011.032-.739 3.447 3.447 0 011.38-.263c.493 0 .934.076 1.324.23.39.152.72.375.99.669.272.294.48.66.623 1.097.143.438.215.939.215 1.504zm-1.217.055c0-.424-.046-.794-.14-1.111a2.237 2.237 0 00-.4-.793 1.65 1.65 0 00-.632-.479 2.077 2.077 0 00-.83-.16c-.356 0-.66.07-.913.208-.253.14-.46.325-.622.557a2.4 2.4 0 00-.356.81 4.06 4.06 0 00-.113.968c0 .424.047.795.14 1.114.094.32.227.585.4.796.174.212.383.372.63.479.246.107.524.16.833.16.356 0 .66-.069.913-.208.253-.139.46-.325.622-.557a2.4 2.4 0 00.356-.81 4.09 4.09 0 00.112-.974zm8.456 3.431h-1.19v-4.381c0-.529-.098-.924-.296-1.186-.199-.262-.482-.394-.852-.394-.159 0-.308.022-.447.065a1.557 1.557 0 00-.434.226 3.73 3.73 0 00-.493.434c-.177.182-.382.41-.615.684v4.552h-1.19V34.24h1.19v2.796l-.04 1.08c.186-.223.37-.411.55-.564.18-.152.36-.277.54-.372.18-.096.363-.164.55-.205.187-.041.38-.062.58-.062.684 0 1.213.209 1.587.626.374.417.56 1.044.56 1.883v4.477zm2.181-6.863h1.06l.047 1.108c.201-.237.395-.435.582-.592.186-.157.37-.283.55-.38a2.06 2.06 0 01.55-.2c.187-.04.38-.059.581-.059.707 0 1.24.209 1.603.626.362.417.544 1.044.544 1.883v4.477h-1.19v-4.381c0-.538-.1-.936-.3-1.193-.201-.258-.5-.386-.896-.386-.146 0-.288.021-.427.064a1.557 1.557 0 00-.434.226c-.15.107-.314.252-.49.434-.175.182-.372.41-.59.684v4.552h-1.19v-6.863zm11.238-2.796l-.198 3.206h-1.176l-.191-3.206h1.565z"/><path id="," fill="#7E7C7B" d="M123.676 45.3c.232.009.458-.012.677-.062a2.02 2.02 0 00.577-.222c.167-.098.3-.22.4-.366a.86.86 0 00.15-.499.95.95 0 00-.099-.464 2.238 2.238 0 00-.222-.329 2.438 2.438 0 01-.222-.32.91.91 0 01-.1-.459.915.915 0 01.223-.588.857.857 0 01.287-.212 1.12 1.12 0 01.875.017c.148.066.278.168.39.305.111.136.2.307.266.512.066.205.1.447.1.725 0 .378-.07.742-.209 1.09a2.657 2.657 0 01-.622.926c-.276.27-.62.484-1.032.643-.413.16-.892.24-1.44.24V45.3z"/><path id="salary" fill="#181717" d="M36.21 59.025a1.634 1.634 0 01-.458 1.16 2.084 2.084 0 01-.492.378 3.272 3.272 0 01-.598.26c-.212.069-.43.119-.653.15a4.637 4.637 0 01-.656.048 12.3 12.3 0 01-1.282-.061 8.646 8.646 0 01-1.145-.198v-1.094c.4.114.8.2 1.196.26.397.059.79.089 1.183.089.57 0 .99-.078 1.264-.233.274-.155.41-.376.41-.663a.812.812 0 00-.064-.331.753.753 0 00-.236-.28 2.254 2.254 0 00-.53-.278 11.81 11.81 0 00-.981-.328 6.963 6.963 0 01-.858-.31 2.877 2.877 0 01-.68-.414 1.776 1.776 0 01-.451-.56 1.649 1.649 0 01-.164-.76 1.744 1.744 0 01.588-1.264c.214-.196.503-.36.868-.49.364-.129.82-.194 1.367-.194.269 0 .567.015.895.045.329.03.67.08 1.026.153v1.06a9.803 9.803 0 00-1.063-.202 6.926 6.926 0 00-.872-.065c-.296 0-.546.023-.748.069a1.553 1.553 0 00-.493.188.734.734 0 00-.27.28.748.748 0 00-.082.345c0 .123.024.235.072.335.048.1.137.197.267.29.13.094.31.187.543.28.233.094.536.196.91.305.405.119.747.243 1.025.373.278.13.503.274.677.434.173.16.297.34.372.54.075.2.113.428.113.683zm6.672 1.873l-.028-.922c-.373.369-.753.635-1.138.8-.385.163-.79.245-1.213.245-.392 0-.727-.05-1.005-.15a1.883 1.883 0 01-.687-.413 1.603 1.603 0 01-.396-.62 2.289 2.289 0 01-.127-.772c0-.688.256-1.227.77-1.616.512-.39 1.27-.585 2.272-.585h1.422v-.601c0-.406-.13-.73-.39-.974s-.656-.366-1.19-.366c-.387 0-.768.043-1.144.13-.376.086-.765.21-1.166.369V54.35a7.36 7.36 0 011.087-.301 7.6 7.6 0 01.643-.1c.223-.024.449-.037.677-.037.414 0 .788.046 1.12.137.333.091.615.23.845.417.23.187.407.421.53.704.123.282.184.615.184.998v4.73h-1.066zm-.13-3.124h-1.51c-.297 0-.552.03-.766.09-.215.059-.39.143-.527.252-.137.11-.238.24-.304.393-.066.153-.1.325-.1.516 0 .133.021.259.062.38.041.12.108.228.199.321.09.093.21.168.355.222.146.055.324.082.533.082.274 0 .587-.083.94-.25.353-.166.726-.429 1.118-.789v-1.217zm5.756-5.557h-2.03v-.978h3.233v8.668h2.044v.991h-5.503v-.99h2.256v-7.691zm9.768 8.681l-.027-.922c-.374.369-.753.635-1.138.8-.385.163-.79.245-1.214.245-.391 0-.726-.05-1.004-.15a1.883 1.883 0 01-.687-.413 1.603 1.603 0 01-.397-.62 2.289 2.289 0 01-.126-.772c0-.688.256-1.227.769-1.616.512-.39 1.27-.585 2.273-.585h1.421v-.601c0-.406-.13-.73-.39-.974-.259-.244-.655-.366-1.189-.366-.387 0-.769.043-1.145.13-.376.086-.764.21-1.165.369V54.35a7.36 7.36 0 011.087-.301 7.6 7.6 0 01.642-.1c.224-.024.45-.037.677-.037.415 0 .788.046 1.121.137.333.091.614.23.844.417.23.187.407.421.53.704.123.282.185.615.185.998v4.73h-1.067zm-.13-3.124h-1.51c-.296 0-.552.03-.766.09-.214.059-.39.143-.526.252-.137.11-.238.24-.304.393-.067.153-.1.325-.1.516 0 .133.02.259.062.38.041.12.107.228.198.321.091.093.21.168.356.222.145.055.323.082.533.082.273 0 .587-.083.94-.25.353-.166.726-.429 1.117-.789v-1.217zm3.699-3.739h1.087l.034 1.265c.405-.488.805-.841 1.2-1.06a2.436 2.436 0 011.192-.328c.711 0 1.25.23 1.617.69.367.46.537 1.144.51 2.051H66.28c.014-.601-.074-1.038-.263-1.309-.19-.27-.466-.407-.83-.407-.16 0-.32.029-.482.086a1.947 1.947 0 00-.5.273 4.47 4.47 0 00-.543.482 8.898 8.898 0 00-.615.711v4.41h-1.203v-6.864zm13.521 0l-2.338 6.139a12.037 12.037 0 01-.748 1.613 4.784 4.784 0 01-.844 1.11c-.306.29-.64.503-1.005.64a3.463 3.463 0 01-1.224.205 6.81 6.81 0 01-.636-.027v-1.08c.1.013.21.026.328.037.119.012.244.017.376.017.22 0 .423-.031.612-.095.19-.064.368-.168.537-.311.168-.144.33-.33.485-.557.155-.228.306-.504.451-.828l-2.74-6.863h1.353l1.736 4.54.349 1.066.396-1.094 1.607-4.512h1.305z"/><path id=":" fill="#7E7C7B" d="M79.714 53.912c.141 0 .276.029.403.086a1.107 1.107 0 01.564.564.978.978 0 01.086.403.971.971 0 01-.086.407 1.12 1.12 0 01-.229.331 1.058 1.058 0 01-.738.308c-.146 0-.282-.028-.407-.082a1.07 1.07 0 01-.557-.557 1.006 1.006 0 01-.082-.407 1.058 1.058 0 01.308-.738 1.12 1.12 0 01.331-.23.971.971 0 01.407-.085zm0 5.01c.141 0 .276.03.403.086a1.107 1.107 0 01.564.564.978.978 0 01.086.404.971.971 0 01-.086.406 1.12 1.12 0 01-.229.332 1.058 1.058 0 01-.738.307c-.146 0-.282-.027-.407-.082a1.07 1.07 0 01-.557-.557 1.006 1.006 0 01-.082-.406 1.058 1.058 0 01.308-.738 1.12 1.12 0 01.331-.23.971.971 0 01.407-.085z"/><path id="1000" fill="#A7333A" d="M98.075 60.898h-5.612v-1.107h2.297V53.27l-2.14 1.162-.437-1.012 2.843-1.497h1.053v7.868h1.996v1.107zm7.978-4.463c0 .683-.069 1.306-.205 1.87a4.33 4.33 0 01-.622 1.448 2.925 2.925 0 01-1.036.937c-.412.221-.897.331-1.453.331-.478 0-.913-.09-1.305-.27a2.594 2.594 0 01-1.005-.83c-.278-.374-.492-.85-.643-1.429-.15-.579-.225-1.264-.225-2.057 0-.684.07-1.308.208-1.873.14-.566.346-1.05.622-1.453s.621-.716 1.036-.937c.415-.22.898-.331 1.449-.331.479 0 .914.09 1.306.27.392.18.727.458 1.005.834.278.376.492.853.642 1.432.15.579.226 1.265.226 2.058zm-1.203.04c0-.154-.006-.308-.017-.46a23.678 23.678 0 00-.038-.449l-3.78 2.81c.068.237.155.456.26.656.104.2.23.373.379.516.148.144.317.256.506.335.189.08.404.12.646.12.31 0 .591-.075.844-.226.253-.15.468-.373.646-.67.178-.296.314-.664.41-1.104.096-.44.144-.949.144-1.527zm-4.088-.081c0 .14 0 .282.003.423.002.142.01.278.024.41l3.78-2.795a3.198 3.198 0 00-.26-.636 2.016 2.016 0 00-.375-.496 1.612 1.612 0 00-.5-.324 1.628 1.628 0 00-.628-.117c-.31 0-.592.076-.845.226-.253.15-.468.375-.646.673a3.697 3.697 0 00-.41 1.108 7.24 7.24 0 00-.143 1.528zm12.988.04c0 .684-.068 1.307-.205 1.87a4.33 4.33 0 01-.622 1.45 2.925 2.925 0 01-1.036.936c-.412.221-.896.331-1.452.331-.479 0-.914-.09-1.306-.27a2.594 2.594 0 01-1.005-.83c-.278-.374-.492-.85-.643-1.429-.15-.579-.225-1.264-.225-2.057 0-.684.07-1.308.208-1.873.14-.566.347-1.05.622-1.453.276-.403.621-.716 1.036-.937.415-.22.898-.331 1.45-.331.478 0 .913.09 1.305.27.392.18.727.458 1.005.834.278.376.492.853.642 1.432.15.579.226 1.265.226 2.058zm-1.203.042c0-.155-.006-.31-.017-.462a23.678 23.678 0 00-.038-.448l-3.78 2.81c.068.237.155.456.26.656.104.2.231.373.38.516.147.144.316.256.505.335.19.08.404.12.646.12.31 0 .591-.075.844-.226.253-.15.468-.373.646-.67.178-.296.315-.664.41-1.104.096-.44.144-.949.144-1.527zm-4.088-.082l.003.423c.003.142.01.278.024.41l3.78-2.795a3.198 3.198 0 00-.26-.636 2.016 2.016 0 00-.375-.496 1.612 1.612 0 00-.5-.324 1.628 1.628 0 00-.628-.117c-.31 0-.591.076-.844.226-.253.15-.469.375-.646.673a3.697 3.697 0 00-.41 1.108 7.24 7.24 0 00-.144 1.528zm12.988.04c0 .684-.068 1.307-.205 1.87a4.33 4.33 0 01-.622 1.45 2.925 2.925 0 01-1.036.936c-.412.221-.896.331-1.452.331-.479 0-.914-.09-1.306-.27a2.594 2.594 0 01-1.005-.83c-.278-.374-.492-.85-.642-1.429-.15-.579-.226-1.264-.226-2.057 0-.684.07-1.308.209-1.873.139-.566.346-1.05.622-1.453.275-.403.62-.716 1.035-.937.415-.22.898-.331 1.45-.331.478 0 .913.09 1.305.27.392.18.727.458 1.005.834.278.376.492.853.643 1.432.15.579.225 1.265.225 2.058zm-1.203.042c0-.155-.006-.31-.017-.462a23.678 23.678 0 00-.038-.448l-3.78 2.81c.069.237.155.456.26.656.105.2.231.373.38.516.147.144.316.256.505.335.19.08.405.12.646.12.31 0 .592-.075.844-.226.253-.15.469-.373.646-.67.178-.296.315-.664.41-1.104.096-.44.144-.949.144-1.527zm-4.088-.082c0 .14.001.282.004.423.002.142.01.278.024.41l3.78-2.795a3.198 3.198 0 00-.26-.636 2.016 2.016 0 00-.376-.496 1.612 1.612 0 00-.499-.324 1.628 1.628 0 00-.629-.117c-.31 0-.591.076-.844.226-.253.15-.468.375-.646.673a3.697 3.697 0 00-.41 1.108 7.24 7.24 0 00-.144 1.528z"/><path id="},{" fill="#7E7C7B" d="M15.853 68h.505c.88 0 1.534.206 1.962.619.429.412.643 1.038.643 1.876v1.58c0 .223.025.422.075.597.05.176.138.324.263.445.126.12.293.213.503.277.21.063.471.095.786.095h.294v.95h-.294c-.333 0-.605.028-.817.082a1.116 1.116 0 00-.496.25.88.88 0 00-.246.427 2.438 2.438 0 00-.068.615v2.393c0 .383-.046.728-.137 1.036-.091.307-.24.57-.444.786a1.993 1.993 0 01-.807.499c-.332.116-.738.174-1.217.174h-.505v-.957h.41c1.052 0 1.579-.513 1.579-1.538v-2.365c0-1.112.48-1.737 1.442-1.873-.97-.105-1.456-.732-1.456-1.88v-1.566c0-1.043-.522-1.565-1.565-1.565h-.41V68zm7.758 11.3c.233.009.458-.012.677-.062a2.02 2.02 0 00.578-.222c.166-.098.3-.22.4-.366a.86.86 0 00.15-.499.95.95 0 00-.1-.464 2.238 2.238 0 00-.221-.329 2.438 2.438 0 01-.222-.32.91.91 0 01-.1-.459.915.915 0 01.223-.588.857.857 0 01.287-.212 1.12 1.12 0 01.875.017c.148.066.278.168.39.305.111.136.2.307.266.512.066.205.1.447.1.725 0 .378-.07.742-.21 1.09a2.657 2.657 0 01-.621.926c-.276.27-.62.484-1.033.643-.412.16-.892.24-1.439.24V79.3zm19.9 1.401h-.506c-.88 0-1.534-.206-1.962-.618-.428-.413-.643-1.038-.643-1.877v-2.352a2.18 2.18 0 00-.075-.598.978.978 0 00-.263-.444 1.224 1.224 0 00-.499-.277 2.706 2.706 0 00-.783-.096h-.294v-.95h.294c.333 0 .604-.027.814-.082.21-.054.373-.138.492-.25a.88.88 0 00.246-.427c.046-.173.068-.378.068-.615v-1.62c0-.383.046-.728.137-1.036.091-.307.24-.57.448-.786.207-.216.476-.382.807-.499.33-.116.734-.174 1.213-.174h.506v.957h-.404c-1.057 0-1.586.513-1.586 1.538v1.593c0 1.112-.48 1.738-1.442 1.88.97.095 1.456.72 1.456 1.873v2.338c0 1.043.524 1.565 1.572 1.565h.404v.957z"/><path id="name" fill="#181717" d="M30.775 88.035h1.06l.048 1.108c.2-.237.394-.435.58-.592.188-.157.371-.283.551-.38a2.06 2.06 0 01.55-.2c.187-.04.381-.059.582-.059.706 0 1.24.209 1.603.626.362.417.543 1.044.543 1.883v4.477h-1.19v-4.381c0-.538-.1-.936-.3-1.193-.2-.258-.5-.386-.896-.386-.146 0-.288.021-.427.064a1.557 1.557 0 00-.434.226c-.15.107-.313.252-.489.434-.175.182-.372.41-.591.684v4.552h-1.19v-6.863zm12.107 6.863l-.028-.922c-.373.369-.753.635-1.138.8-.385.163-.79.245-1.213.245-.392 0-.727-.05-1.005-.15a1.883 1.883 0 01-.687-.413 1.603 1.603 0 01-.396-.62 2.289 2.289 0 01-.127-.772c0-.688.256-1.227.77-1.616.512-.39 1.27-.585 2.272-.585h1.422v-.601c0-.406-.13-.73-.39-.974s-.656-.366-1.19-.366c-.387 0-.768.043-1.144.13-.376.086-.765.21-1.166.369V88.35a7.36 7.36 0 011.087-.301 7.6 7.6 0 01.643-.1c.223-.024.449-.037.677-.037.414 0 .788.046 1.12.137.333.091.615.23.845.417.23.187.407.421.53.704.123.282.184.615.184.998v4.73h-1.066zm-.13-3.124h-1.51c-.297 0-.552.03-.766.09-.215.059-.39.143-.527.252-.137.11-.238.24-.304.393-.066.153-.1.325-.1.516 0 .133.021.259.062.38.041.12.108.228.199.321.09.093.21.168.355.222.146.055.324.082.533.082.274 0 .587-.083.94-.25.353-.166.726-.429 1.118-.789v-1.217zm8.312 3.124V89.97c0-.214-.008-.39-.023-.527a1.2 1.2 0 00-.076-.324.348.348 0 00-.13-.168.43.43 0 00-.448.034c-.077.055-.16.144-.249.267a4.216 4.216 0 00-.294.489c-.107.203-.233.452-.38.748v4.41h-1.086v-4.8c0-.25-.008-.453-.024-.608a1.42 1.42 0 00-.075-.362.34.34 0 00-.133-.178.431.431 0 00-.43.02.988.988 0 00-.244.247c-.089.118-.188.28-.297.485-.11.205-.24.467-.39.786v4.41h-1.094v-6.864h.91l.054 1.306c.119-.26.234-.481.345-.663.112-.183.227-.33.346-.441.118-.112.245-.194.38-.246.134-.053.283-.079.447-.079.369 0 .65.12.84.362.192.242.288.616.288 1.122.11-.237.216-.448.321-.633a2.31 2.31 0 01.338-.465c.121-.125.255-.22.4-.287.146-.066.315-.099.506-.099.862 0 1.292.663 1.292 1.99v4.996h-1.094zm8.6-3.794c0 .17-.002.31-.007.424a6.37 6.37 0 01-.02.322h-4.82c0 .701.196 1.24.588 1.616.392.376.957.564 1.696.564.2 0 .4-.008.601-.024.2-.016.394-.037.581-.065.187-.027.366-.058.537-.092.17-.034.33-.072.475-.113v.978a9.161 9.161 0 01-2.365.308c-.588 0-1.094-.08-1.518-.24a2.597 2.597 0 01-1.042-.694 2.857 2.857 0 01-.602-1.114 5.273 5.273 0 01-.195-1.494c0-.483.07-.94.209-1.37a3.44 3.44 0 01.608-1.135c.267-.326.594-.584.981-.776a2.94 2.94 0 011.32-.287c.478 0 .902.075 1.27.226.37.15.681.363.934.639s.444.61.574 1.005c.13.394.195.835.195 1.322zm-1.237-.17a2.593 2.593 0 00-.09-.838 1.763 1.763 0 00-.337-.653 1.576 1.576 0 00-.571-.427 1.916 1.916 0 00-.793-.154c-.26 0-.497.05-.711.15-.214.101-.399.242-.554.425a2.19 2.19 0 00-.376.656 3.026 3.026 0 00-.178.84h3.61z"/><path id=":" fill="#7E7C7B" d="M64.32 87.912c.14 0 .275.029.403.086a1.107 1.107 0 01.564.564.978.978 0 01.085.403.971.971 0 01-.085.407 1.12 1.12 0 01-.23.331 1.058 1.058 0 01-.738.308c-.145 0-.281-.028-.406-.082a1.07 1.07 0 01-.558-.557 1.006 1.006 0 01-.082-.407 1.058 1.058 0 01.308-.738 1.12 1.12 0 01.332-.23.971.971 0 01.406-.085zm0 5.01c.14 0 .275.03.403.086a1.107 1.107 0 01.564.564.978.978 0 01.085.404.971.971 0 01-.085.406 1.12 1.12 0 01-.23.332 1.058 1.058 0 01-.738.307c-.145 0-.281-.027-.406-.082a1.07 1.07 0 01-.558-.557 1.006 1.006 0 01-.082-.406 1.058 1.058 0 01.308-.738 1.12 1.12 0 01.332-.23.971.971 0 01.406-.085z"/><path id="'Alice'" fill="#478964" d="M80.5 85.24l-.198 3.205h-1.176l-.191-3.206H80.5zm10.691 9.658h-1.326l-.622-1.948h-3.719l-.628 1.948H83.63l2.967-8.934h1.668l2.925 8.934zm-2.296-3.035l-1.511-4.778-1.511 4.778h3.022zm5.796-5.646h-2.03v-.978h3.234v8.668h2.043v.991h-5.502v-.99h2.255v-7.691zm7.698 2.803h-2.03v-.985h3.233v5.872h2.044v.991h-5.503v-.99h2.256V89.02zm.417-3.863c.132 0 .255.024.369.072a.893.893 0 01.297.202.919.919 0 01.27.663.96.96 0 01-.27.663.893.893 0 01-.297.201.944.944 0 01-.37.072.944.944 0 01-.368-.072.893.893 0 01-.298-.201.96.96 0 01-.27-.663.919.919 0 01.27-.663.893.893 0 01.298-.202.944.944 0 01.369-.072zm10.274 9.489c-.31.118-.628.206-.954.263a5.845 5.845 0 01-1.008.085c-1.084 0-1.92-.294-2.505-.882-.586-.588-.879-1.447-.879-2.577 0-.542.085-1.034.253-1.476.169-.442.406-.82.711-1.135.306-.315.67-.557 1.094-.728.424-.171.89-.257 1.401-.257.356 0 .689.026.998.076.31.05.607.132.89.246v1.135a3.77 3.77 0 00-.907-.339 4.248 4.248 0 00-.953-.106c-.306 0-.594.058-.865.174-.271.117-.51.284-.714.503a2.38 2.38 0 00-.486.8c-.118.314-.177.67-.177 1.066 0 .83.201 1.45.604 1.863.404.412.963.619 1.679.619a3.897 3.897 0 001.818-.438v1.108zm8.162-3.542c0 .17-.002.31-.007.424a6.372 6.372 0 01-.02.322h-4.82c0 .701.196 1.24.588 1.616.392.376.957.564 1.696.564.2 0 .4-.008.601-.024.2-.016.394-.037.581-.065.187-.027.366-.058.537-.092.17-.034.33-.072.475-.113v.978a9.161 9.161 0 01-2.365.308c-.588 0-1.094-.08-1.518-.24a2.597 2.597 0 01-1.042-.694 2.857 2.857 0 01-.602-1.114 5.273 5.273 0 01-.195-1.494c0-.483.07-.94.209-1.37a3.44 3.44 0 01.608-1.135c.267-.326.594-.584.981-.776a2.94 2.94 0 011.32-.287c.478 0 .902.075 1.271.226.37.15.68.363.933.639s.444.61.574 1.005c.13.394.195.835.195 1.322zm-1.237-.17a2.593 2.593 0 00-.089-.838 1.763 1.763 0 00-.338-.653 1.576 1.576 0 00-.571-.427 1.916 1.916 0 00-.793-.154c-.26 0-.497.05-.711.15-.214.101-.399.242-.554.425a2.19 2.19 0 00-.376.656 3.026 3.026 0 00-.177.84h3.609zm6.679-5.695l-.199 3.206h-1.175l-.192-3.206h1.566z"/><path id="," fill="#7E7C7B" d="M131.373 96.3c.232.009.458-.012.677-.062a2.02 2.02 0 00.577-.222c.167-.098.3-.22.4-.366a.86.86 0 00.15-.499.95.95 0 00-.098-.464 2.238 2.238 0 00-.223-.329 2.438 2.438 0 01-.222-.32.91.91 0 01-.099-.459.915.915 0 01.222-.588.857.857 0 01.287-.212 1.12 1.12 0 01.875.017c.149.066.278.168.39.305.112.136.2.307.267.512.066.205.099.447.099.725 0 .378-.07.742-.209 1.09a2.657 2.657 0 01-.622.926c-.275.27-.62.484-1.032.643-.412.16-.892.24-1.439.24V96.3z"/><path id="salary" fill="#181717" d="M36.21 110.025a1.634 1.634 0 01-.458 1.16 2.084 2.084 0 01-.492.378 3.272 3.272 0 01-.598.26c-.212.069-.43.119-.653.15a4.638 4.638 0 01-.656.048 12.3 12.3 0 01-1.282-.061 8.646 8.646 0 01-1.145-.198v-1.094c.4.114.8.2 1.196.26.397.059.79.089 1.183.089.57 0 .99-.078 1.264-.233.274-.155.41-.376.41-.663a.812.812 0 00-.064-.331.753.753 0 00-.236-.28 2.254 2.254 0 00-.53-.278 11.81 11.81 0 00-.981-.328 6.963 6.963 0 01-.858-.31 2.877 2.877 0 01-.68-.414 1.776 1.776 0 01-.451-.56 1.649 1.649 0 01-.164-.76 1.744 1.744 0 01.588-1.264c.214-.196.503-.36.868-.49.364-.129.82-.194 1.367-.194.269 0 .567.015.895.045.329.03.67.08 1.026.153v1.06a9.803 9.803 0 00-1.063-.202 6.926 6.926 0 00-.872-.065c-.296 0-.546.023-.748.069a1.553 1.553 0 00-.493.188.734.734 0 00-.27.28.748.748 0 00-.082.345c0 .123.024.235.072.335.048.1.137.197.267.29.13.094.31.187.543.28.233.094.536.196.91.305.405.119.747.243 1.025.373.278.13.503.274.677.434.173.16.297.34.372.54.075.2.113.428.113.683zm6.672 1.873l-.028-.922c-.373.369-.753.635-1.138.8-.385.163-.79.245-1.213.245-.392 0-.727-.05-1.005-.15a1.883 1.883 0 01-.687-.413 1.603 1.603 0 01-.396-.62 2.289 2.289 0 01-.127-.772c0-.688.256-1.227.77-1.616.512-.39 1.27-.585 2.272-.585h1.422v-.601c0-.406-.13-.73-.39-.974s-.656-.366-1.19-.366c-.387 0-.768.043-1.144.13-.376.086-.765.21-1.166.369v-1.073a7.36 7.36 0 011.087-.301 7.6 7.6 0 01.643-.1c.223-.024.449-.037.677-.037.414 0 .788.046 1.12.137.333.091.615.23.845.417.23.187.407.421.53.704.123.282.184.615.184.998v4.73h-1.066zm-.13-3.124h-1.51c-.297 0-.552.03-.766.09-.215.059-.39.143-.527.252-.137.11-.238.24-.304.393-.066.153-.1.325-.1.516 0 .133.021.259.062.38.041.12.108.228.199.321.09.093.21.168.355.222.146.055.324.082.533.082.274 0 .587-.083.94-.25.353-.166.726-.429 1.118-.789v-1.217zm5.756-5.557h-2.03v-.978h3.233v8.668h2.044v.991h-5.503v-.99h2.256v-7.691zm9.768 8.681l-.027-.922c-.374.369-.753.635-1.138.8-.385.163-.79.245-1.214.245-.391 0-.726-.05-1.004-.15a1.883 1.883 0 01-.687-.413 1.603 1.603 0 01-.397-.62 2.289 2.289 0 01-.126-.772c0-.688.256-1.227.769-1.616.512-.39 1.27-.585 2.273-.585h1.421v-.601c0-.406-.13-.73-.39-.974-.259-.244-.655-.366-1.189-.366-.387 0-.769.043-1.145.13-.376.086-.764.21-1.165.369v-1.073a7.36 7.36 0 011.087-.301 7.6 7.6 0 01.642-.1c.224-.024.45-.037.677-.037.415 0 .788.046 1.121.137.333.091.614.23.844.417.23.187.407.421.53.704.123.282.185.615.185.998v4.73h-1.067zm-.13-3.124h-1.51c-.296 0-.552.03-.766.09-.214.059-.39.143-.526.252-.137.11-.238.24-.304.393-.067.153-.1.325-.1.516 0 .133.02.259.062.38.041.12.107.228.198.321.091.093.21.168.356.222.145.055.323.082.533.082.273 0 .587-.083.94-.25.353-.166.726-.429 1.117-.789v-1.217zm3.699-3.739h1.087l.034 1.265c.405-.488.805-.841 1.2-1.06a2.436 2.436 0 011.192-.328c.711 0 1.25.23 1.617.69.367.46.537 1.144.51 2.051H66.28c.014-.601-.074-1.038-.263-1.309-.19-.27-.466-.406-.83-.406-.16 0-.32.028-.482.085a1.947 1.947 0 00-.5.273 4.47 4.47 0 00-.543.482 8.898 8.898 0 00-.615.711v4.41h-1.203v-6.864zm13.521 0l-2.338 6.139a12.037 12.037 0 01-.748 1.613 4.784 4.784 0 01-.844 1.11c-.306.29-.64.503-1.005.64a3.463 3.463 0 01-1.224.205 6.811 6.811 0 01-.636-.027v-1.08c.1.013.21.026.328.037.119.012.244.017.376.017.22 0 .423-.031.612-.095.19-.064.368-.168.537-.311.168-.144.33-.33.485-.557.155-.228.306-.504.451-.828l-2.74-6.863h1.353l1.736 4.54.349 1.066.396-1.094 1.607-4.512h1.305z"/><path id=":" fill="#7E7C7B" d="M79.714 104.912c.141 0 .276.029.403.086a1.107 1.107 0 01.564.564.978.978 0 01.086.403.971.971 0 01-.086.407 1.12 1.12 0 01-.229.331 1.058 1.058 0 01-.738.308c-.146 0-.282-.028-.407-.082a1.07 1.07 0 01-.557-.557 1.006 1.006 0 01-.082-.407 1.058 1.058 0 01.308-.738 1.12 1.12 0 01.331-.23.971.971 0 01.407-.085zm0 5.01c.141 0 .276.03.403.086a1.107 1.107 0 01.564.564.978.978 0 01.086.404.971.971 0 01-.086.406 1.12 1.12 0 01-.229.332 1.058 1.058 0 01-.738.307c-.146 0-.282-.027-.407-.082a1.07 1.07 0 01-.557-.557 1.006 1.006 0 01-.082-.406 1.058 1.058 0 01.308-.738 1.12 1.12 0 01.331-.23.971.971 0 01.407-.085z"/><path id="600" fill="#A7333A" d="M98.26 109.068c0 .41-.074.796-.222 1.156-.149.36-.36.673-.633.94a2.957 2.957 0 01-.988.628 3.45 3.45 0 01-1.281.23c-.492 0-.928-.08-1.306-.236a2.32 2.32 0 01-.95-.725c-.255-.326-.449-.737-.581-1.234-.132-.497-.198-1.084-.198-1.764 0-.455.03-.897.088-1.326.06-.428.158-.831.294-1.21.137-.378.32-.724.547-1.039.228-.314.512-.584.851-.81.34-.225.74-.4 1.2-.526.46-.125.994-.188 1.6-.188h.882v1.039h-.958c-.533 0-.995.064-1.387.191-.392.128-.72.308-.985.54a2.334 2.334 0 00-.608.841c-.141.328-.23.695-.267 1.1l-.027.281c.287-.169.619-.304.995-.407a4.624 4.624 0 011.22-.153c.451 0 .846.066 1.186.198.34.132.622.315.848.55.225.235.395.516.509.844.114.328.17.688.17 1.08zm-1.244.076c0-.274-.033-.521-.1-.742a1.402 1.402 0 00-.31-.56 1.42 1.42 0 00-.537-.356 2.137 2.137 0 00-.776-.127c-.173 0-.349.016-.526.048a3.742 3.742 0 00-.523.134c-.171.056-.334.121-.49.194-.154.073-.295.15-.423.233 0 .588.041 1.079.123 1.473.082.394.204.71.366.947s.361.405.598.506c.237.1.51.15.82.15.26 0 .498-.042.715-.127a1.54 1.54 0 00.56-.372c.157-.164.28-.364.37-.598.088-.235.133-.503.133-.803zm9.037-1.71c0 .684-.069 1.307-.205 1.87a4.33 4.33 0 01-.622 1.45 2.925 2.925 0 01-1.036.936c-.412.221-.897.331-1.453.331-.478 0-.913-.09-1.305-.27a2.594 2.594 0 01-1.005-.83c-.278-.374-.492-.85-.643-1.429-.15-.579-.225-1.264-.225-2.057 0-.684.07-1.308.208-1.873.14-.566.346-1.05.622-1.453s.621-.716 1.036-.937c.415-.22.898-.331 1.449-.331.479 0 .914.09 1.306.27.392.18.727.458 1.005.834.278.376.492.853.642 1.432.15.579.226 1.265.226 2.058zm-1.203.042c0-.155-.006-.31-.017-.462a23.678 23.678 0 00-.038-.448l-3.78 2.81c.068.237.155.456.26.656.104.2.23.373.379.516.148.144.317.256.506.335.189.08.404.12.646.12.31 0 .591-.075.844-.226.253-.15.468-.373.646-.67.178-.296.314-.664.41-1.104.096-.44.144-.949.144-1.527zm-4.088-.082c0 .14 0 .282.003.423.002.142.01.278.024.41l3.78-2.795a3.198 3.198 0 00-.26-.636 2.016 2.016 0 00-.375-.496 1.612 1.612 0 00-.5-.324 1.628 1.628 0 00-.628-.117c-.31 0-.592.076-.845.226-.253.15-.468.375-.646.673a3.697 3.697 0 00-.41 1.108 7.24 7.24 0 00-.143 1.528zm12.988.04c0 .684-.068 1.307-.205 1.87a4.33 4.33 0 01-.622 1.45 2.925 2.925 0 01-1.036.936c-.412.221-.896.331-1.452.331-.479 0-.914-.09-1.306-.27a2.594 2.594 0 01-1.005-.83c-.278-.374-.492-.85-.643-1.429-.15-.579-.225-1.264-.225-2.057 0-.684.07-1.308.208-1.873.14-.566.347-1.05.622-1.453.276-.403.621-.716 1.036-.937.415-.22.898-.331 1.45-.331.478 0 .913.09 1.305.27.392.18.727.458 1.005.834.278.376.492.853.642 1.432.15.579.226 1.265.226 2.058zm-1.203.042c0-.155-.006-.31-.017-.462a23.678 23.678 0 00-.038-.448l-3.78 2.81c.068.237.155.456.26.656.104.2.231.373.38.516.147.144.316.256.505.335.19.08.404.12.646.12.31 0 .591-.075.844-.226.253-.15.468-.373.646-.67.178-.296.315-.664.41-1.104.096-.44.144-.949.144-1.527zm-4.088-.082l.003.423c.003.142.01.278.024.41l3.78-2.795a3.198 3.198 0 00-.26-.636 2.016 2.016 0 00-.375-.496 1.612 1.612 0 00-.5-.324 1.628 1.628 0 00-.628-.117c-.31 0-.591.076-.844.226-.253.15-.469.375-.646.673a3.697 3.697 0 00-.41 1.108 7.24 7.24 0 00-.144 1.528z"/><path id="}]," fill="#7E7C7B" d="M15.853 119h.505c.88 0 1.534.206 1.962.619.429.412.643 1.038.643 1.876v1.58c0 .223.025.422.075.597.05.176.138.324.263.445.126.12.293.213.503.277.21.063.471.095.786.095h.294v.95h-.294c-.333 0-.605.028-.817.082a1.116 1.116 0 00-.496.25.88.88 0 00-.246.427 2.438 2.438 0 00-.068.615v2.393c0 .383-.046.728-.137 1.036-.091.307-.24.57-.444.786a1.993 1.993 0 01-.807.499c-.332.116-.738.174-1.217.174h-.505v-.957h.41c1.052 0 1.579-.513 1.579-1.538v-2.365c0-1.112.48-1.737 1.442-1.873-.97-.105-1.456-.732-1.456-1.88v-1.566c0-1.043-.522-1.565-1.565-1.565h-.41V119zm11.47 12.701h-3.37v-.957h2.222v-10.787h-2.222V119h3.37v12.701zm3.986-1.401c.232.009.458-.012.676-.062a2.02 2.02 0 00.578-.222c.166-.098.3-.22.4-.366a.86.86 0 00.15-.499.95.95 0 00-.099-.464 2.238 2.238 0 00-.222-.329 2.438 2.438 0 01-.222-.32.91.91 0 01-.1-.459.915.915 0 01.223-.588.857.857 0 01.287-.212 1.12 1.12 0 01.875.017c.148.066.278.168.39.305.111.136.2.307.266.512.066.205.1.447.1.725 0 .378-.07.742-.21 1.09a2.657 2.657 0 01-.621.926c-.276.27-.62.484-1.032.643-.413.16-.893.24-1.44.24v-.937z"/><path id="development" fill="#181717" d="M15.032 159.61c0-.583.08-1.101.24-1.555.159-.453.386-.836.68-1.148.294-.312.647-.55 1.06-.711a3.743 3.743 0 011.377-.243c.218 0 .434.014.646.041.212.027.42.07.625.13v-2.885h1.196v9.66H19.79l-.041-1.3c-.333.484-.693.841-1.08 1.074a2.401 2.401 0 01-1.258.348c-.392 0-.737-.082-1.036-.246a2.104 2.104 0 01-.745-.693 3.33 3.33 0 01-.447-1.077 6 6 0 01-.15-1.395zm1.217-.075c0 .83.122 1.448.366 1.856.244.408.589.612 1.035.612.301 0 .619-.135.954-.403.335-.27.687-.668 1.056-1.197v-3.185a2.892 2.892 0 00-.65-.209 3.55 3.55 0 00-.703-.071c-.647 0-1.152.21-1.515.628-.362.42-.543 1.076-.543 1.97zm12.626-.43c0 .168-.002.31-.007.423a6.37 6.37 0 01-.02.322h-4.82c0 .701.196 1.24.588 1.616.392.376.957.564 1.696.564.2 0 .4-.008.601-.024.2-.016.394-.037.581-.065.187-.027.366-.058.537-.092.17-.034.329-.072.475-.113v.978a9.161 9.161 0 01-2.365.308c-.588 0-1.094-.08-1.518-.24a2.597 2.597 0 01-1.042-.694 2.857 2.857 0 01-.602-1.114 5.273 5.273 0 01-.195-1.494c0-.483.07-.94.209-1.37a3.44 3.44 0 01.608-1.135c.267-.326.594-.584.981-.776a2.94 2.94 0 011.32-.287c.478 0 .902.075 1.27.226.37.15.681.363.934.639s.444.61.574 1.005c.13.394.195.835.195 1.322zm-1.237-.171a2.593 2.593 0 00-.09-.838 1.763 1.763 0 00-.338-.653 1.576 1.576 0 00-.57-.427 1.916 1.916 0 00-.793-.154c-.26 0-.497.05-.711.15-.214.101-.399.242-.554.425a2.19 2.19 0 00-.376.656 3.026 3.026 0 00-.178.84h3.61zm2.495-2.899h1.353l1.682 4.54.362 1.107.376-1.135 1.668-4.512h1.306l-2.693 6.863h-1.368l-2.686-6.863zm14.137 3.07c0 .168-.003.31-.007.423a6.37 6.37 0 01-.02.322h-4.82c0 .701.196 1.24.588 1.616.392.376.957.564 1.695.564.2 0 .401-.008.602-.024.2-.016.394-.037.58-.065.188-.027.366-.058.537-.092.171-.034.33-.072.475-.113v.978a9.161 9.161 0 01-2.365.308c-.588 0-1.094-.08-1.517-.24a2.597 2.597 0 01-1.043-.694 2.857 2.857 0 01-.601-1.114 5.273 5.273 0 01-.195-1.494c0-.483.07-.94.208-1.37a3.44 3.44 0 01.609-1.135c.266-.326.593-.584.98-.776a2.94 2.94 0 011.32-.287c.478 0 .902.075 1.271.226.37.15.68.363.933.639s.445.61.575 1.005c.13.394.195.835.195 1.322zm-1.238-.171a2.593 2.593 0 00-.089-.838 1.763 1.763 0 00-.338-.653 1.576 1.576 0 00-.57-.427 1.916 1.916 0 00-.794-.154c-.26 0-.497.05-.71.15-.215.101-.4.242-.554.425a2.19 2.19 0 00-.376.656 3.026 3.026 0 00-.178.84h3.61zm5.476-4.717h-2.03v-.978h3.233v8.668h2.044v.991h-5.503v-.99h2.256v-7.691zm11.334 5.195a4.55 4.55 0 01-.226 1.466c-.15.445-.367.825-.65 1.142a2.913 2.913 0 01-1.031.738 3.447 3.447 0 01-1.381.263c-.492 0-.933-.076-1.323-.229a2.617 2.617 0 01-.991-.673 2.98 2.98 0 01-.622-1.1c-.144-.438-.216-.942-.216-1.511 0-.533.076-1.02.226-1.46.15-.44.367-.818.65-1.134a2.913 2.913 0 011.032-.739 3.447 3.447 0 011.38-.263c.493 0 .934.076 1.323.23.39.152.72.375.991.669.272.294.479.66.622 1.097.144.438.216.939.216 1.504zm-1.217.055c0-.424-.047-.794-.14-1.111a2.237 2.237 0 00-.4-.793 1.65 1.65 0 00-.632-.479 2.077 2.077 0 00-.83-.16c-.356 0-.66.07-.914.208-.252.14-.46.325-.622.557a2.4 2.4 0 00-.355.81 4.06 4.06 0 00-.113.968c0 .424.047.795.14 1.114.094.32.227.585.4.796.173.212.383.372.63.479.245.107.523.16.833.16.356 0 .66-.069.913-.208.253-.139.46-.325.622-.557a2.4 2.4 0 00.355-.81 4.09 4.09 0 00.113-.974zm8.805-.123c0 .61-.086 1.144-.257 1.6-.17.455-.406.833-.707 1.134a2.9 2.9 0 01-1.067.677c-.41.15-.854.225-1.333.225-.218 0-.436-.01-.652-.034a4.952 4.952 0 01-.66-.116v2.871h-1.19v-9.666h1.06l.075 1.149c.342-.47.707-.8 1.094-.988.387-.19.807-.284 1.258-.284.392 0 .736.082 1.032.246.296.164.545.396.745.694.2.299.351.659.451 1.08.1.422.15.892.15 1.412zm-1.217.054c0-.36-.026-.69-.079-.99a2.586 2.586 0 00-.25-.773 1.37 1.37 0 00-.437-.503 1.104 1.104 0 00-.635-.18c-.15 0-.304.023-.458.07a1.857 1.857 0 00-.482.24 3.59 3.59 0 00-.527.445 7 7 0 00-.591.687v3.329c.219.09.449.163.69.215.242.052.479.079.711.079.643 0 1.146-.218 1.511-.653.365-.435.547-1.09.547-1.966zm7.943 3.5v-4.928c0-.214-.008-.39-.024-.527a1.2 1.2 0 00-.075-.324.348.348 0 00-.13-.168.43.43 0 00-.448.034c-.077.055-.16.144-.249.267a4.216 4.216 0 00-.294.489 30.3 30.3 0 00-.38.748v4.41H71.47v-4.8c0-.25-.008-.453-.024-.608a1.42 1.42 0 00-.075-.362.34.34 0 00-.134-.178.431.431 0 00-.43.02.988.988 0 00-.243.247c-.089.118-.188.28-.297.485-.11.205-.24.467-.39.786v4.41h-1.094v-6.864h.91l.054 1.306c.119-.26.234-.481.345-.663.112-.183.227-.33.346-.441.118-.112.244-.194.379-.246.134-.053.284-.079.448-.079.369 0 .65.12.84.362.192.242.288.616.288 1.122.109-.237.216-.448.32-.633a2.31 2.31 0 01.34-.465c.12-.125.253-.22.4-.287.145-.066.314-.099.505-.099.861 0 1.292.663 1.292 1.99v4.996h-1.094zm8.6-3.794c0 .17-.002.31-.007.424a6.37 6.37 0 01-.02.322h-4.82c0 .701.196 1.24.588 1.616.392.376.957.564 1.695.564.2 0 .401-.008.602-.024.2-.016.394-.037.581-.065.187-.027.366-.058.537-.092.17-.034.329-.072.475-.113v.978a9.161 9.161 0 01-2.365.308c-.588 0-1.094-.08-1.518-.24a2.597 2.597 0 01-1.043-.694 2.857 2.857 0 01-.601-1.114 5.273 5.273 0 01-.195-1.494c0-.483.07-.94.209-1.37a3.44 3.44 0 01.608-1.135c.267-.326.594-.584.98-.776a2.94 2.94 0 011.32-.287c.479 0 .903.075 1.272.226.369.15.68.363.933.639s.444.61.574 1.005c.13.394.195.835.195 1.322zm-1.237-.17a2.593 2.593 0 00-.09-.838 1.763 1.763 0 00-.338-.653 1.576 1.576 0 00-.57-.427 1.916 1.916 0 00-.793-.154c-.26 0-.497.05-.711.15-.215.101-.4.242-.554.425a2.19 2.19 0 00-.376.656 3.026 3.026 0 00-.178.84h3.61zm3.137-2.899h1.06l.048 1.108c.2-.237.394-.435.58-.592.188-.157.371-.283.551-.38a2.06 2.06 0 01.55-.2c.187-.04.38-.059.581-.059.707 0 1.241.209 1.603.626.363.417.544 1.044.544 1.883v4.477h-1.19v-4.381c0-.538-.1-.936-.3-1.193-.2-.258-.5-.387-.896-.387-.146 0-.288.022-.427.065a1.557 1.557 0 00-.434.226c-.15.107-.314.252-.489.434s-.373.41-.591.684v4.552h-1.19v-6.863zm13.228 6.768a5.793 5.793 0 01-.834.147 8.52 8.52 0 01-.875.044c-.862 0-1.504-.195-1.928-.584-.424-.39-.636-.988-.636-1.795v-3.582h-1.92v-.998h1.92v-1.887l1.19-.307v2.194h3.083v.998H94.8v3.487c0 .492.13.86.393 1.104.262.243.648.365 1.159.365.218 0 .458-.017.717-.051.26-.034.531-.088.814-.16v1.025z"/><path id=":{" fill="#7E7C7B" d="M102.806 155.912c.14 0 .275.029.403.086a1.107 1.107 0 01.564.564.978.978 0 01.085.403.971.971 0 01-.085.407 1.12 1.12 0 01-.23.331 1.058 1.058 0 01-.737.308c-.146 0-.282-.028-.407-.082a1.07 1.07 0 01-.557-.557 1.006 1.006 0 01-.082-.407 1.058 1.058 0 01.308-.738 1.12 1.12 0 01.33-.23.971.971 0 01.408-.085zm0 5.01c.14 0 .275.03.403.086a1.107 1.107 0 01.564.564.978.978 0 01.085.404.971.971 0 01-.085.406 1.12 1.12 0 01-.23.332 1.058 1.058 0 01-.737.307c-.146 0-.282-.027-.407-.082a1.07 1.07 0 01-.557-.557 1.006 1.006 0 01-.082-.406 1.058 1.058 0 01.308-.738 1.12 1.12 0 01.33-.23.971.971 0 01.408-.085zm17.677 4.78h-.505c-.88 0-1.534-.207-1.962-.62-.429-.412-.643-1.037-.643-1.876v-2.352a2.18 2.18 0 00-.075-.598.978.978 0 00-.263-.444 1.224 1.224 0 00-.5-.277 2.706 2.706 0 00-.782-.096h-.294v-.95h.294c.333 0 .604-.027.813-.082.21-.054.374-.138.493-.25a.88.88 0 00.246-.427c.045-.173.068-.378.068-.615v-1.62c0-.383.046-.728.137-1.036.09-.307.24-.57.448-.786.207-.216.476-.382.806-.499.33-.116.735-.174 1.214-.174h.505v.957h-.403c-1.057 0-1.586.513-1.586 1.538v1.593c0 1.112-.48 1.738-1.442 1.88.97.095 1.456.72 1.456 1.873v2.338c0 1.043.524 1.565 1.572 1.565h.403v.957z"/><path id="sites" fill="#181717" d="M36.21 178.025a1.634 1.634 0 01-.458 1.16 2.084 2.084 0 01-.492.378 3.272 3.272 0 01-.598.26c-.212.069-.43.119-.653.15a4.638 4.638 0 01-.656.048 12.3 12.3 0 01-1.282-.061 8.646 8.646 0 01-1.145-.198v-1.094c.4.114.8.2 1.196.26.397.059.79.089 1.183.089.57 0 .99-.078 1.264-.233.274-.155.41-.376.41-.663a.812.812 0 00-.064-.331.753.753 0 00-.236-.28 2.254 2.254 0 00-.53-.278 11.81 11.81 0 00-.981-.328 6.963 6.963 0 01-.858-.31 2.877 2.877 0 01-.68-.414 1.776 1.776 0 01-.451-.56 1.649 1.649 0 01-.164-.76 1.744 1.744 0 01.588-1.264c.214-.196.503-.36.868-.49.364-.129.82-.194 1.367-.194.269 0 .567.015.895.045.329.03.67.08 1.026.153v1.06a9.803 9.803 0 00-1.063-.202 6.926 6.926 0 00-.872-.065c-.296 0-.546.023-.748.069a1.553 1.553 0 00-.493.188.734.734 0 00-.27.28.748.748 0 00-.082.345c0 .123.024.235.072.335.048.1.137.197.267.29.13.094.31.187.543.28.233.094.536.196.91.305.405.119.747.243 1.025.373.278.13.503.274.677.434.173.16.297.34.372.54.075.2.113.428.113.683zm4.6-4.005h-2.03v-.985h3.234v5.872h2.044v.991h-5.503v-.99h2.256v-4.888zm.418-3.863c.132 0 .255.024.369.072a.893.893 0 01.297.202.919.919 0 01.27.663.96.96 0 01-.27.663.893.893 0 01-.297.201.944.944 0 01-.37.072.944.944 0 01-.369-.072.893.893 0 01-.297-.201.96.96 0 01-.27-.663.919.919 0 01.27-.663.893.893 0 01.297-.202.944.944 0 01.37-.072zm10.472 9.646a5.793 5.793 0 01-.834.147 8.52 8.52 0 01-.875.044c-.861 0-1.504-.195-1.928-.584-.423-.39-.635-.988-.635-1.795v-3.582h-1.921v-.998h1.92v-1.887l1.19-.307v2.194H51.7v.998h-3.083v3.487c0 .492.131.86.393 1.104.262.243.649.365 1.159.365.219 0 .458-.017.718-.051.26-.034.53-.088.813-.16v1.025zm7.964-3.699c0 .17-.002.31-.007.424a6.37 6.37 0 01-.02.322h-4.82c0 .701.196 1.24.588 1.616.392.376.957.564 1.696.564.2 0 .4-.008.601-.024.2-.016.394-.037.581-.065.187-.027.366-.058.537-.092.17-.034.33-.072.475-.113v.978a9.161 9.161 0 01-2.365.308c-.588 0-1.094-.08-1.518-.24a2.597 2.597 0 01-1.042-.694 2.857 2.857 0 01-.602-1.114 5.273 5.273 0 01-.195-1.494c0-.483.07-.94.209-1.37a3.44 3.44 0 01.608-1.135c.267-.326.594-.584.981-.776a2.94 2.94 0 011.32-.287c.478 0 .902.075 1.27.226.37.15.681.363.934.639s.444.61.574 1.005c.13.394.195.835.195 1.322zm-1.237-.17a2.593 2.593 0 00-.09-.838 1.763 1.763 0 00-.337-.653 1.576 1.576 0 00-.571-.427 1.916 1.916 0 00-.793-.154c-.26 0-.497.05-.711.15-.214.101-.399.242-.554.425a2.19 2.19 0 00-.376.656 3.026 3.026 0 00-.178.84h3.61zm8.572 2.091a1.634 1.634 0 01-.458 1.16 2.084 2.084 0 01-.492.378 3.272 3.272 0 01-.598.26c-.212.069-.43.119-.653.15a4.638 4.638 0 01-.656.048 12.3 12.3 0 01-1.282-.061 8.646 8.646 0 01-1.145-.198v-1.094c.4.114.8.2 1.196.26.397.059.79.089 1.183.089.57 0 .991-.078 1.264-.233.274-.155.41-.376.41-.663a.812.812 0 00-.064-.331.753.753 0 00-.236-.28 2.254 2.254 0 00-.53-.278 11.81 11.81 0 00-.981-.328 6.963 6.963 0 01-.858-.31 2.877 2.877 0 01-.68-.414 1.776 1.776 0 01-.451-.56 1.649 1.649 0 01-.164-.76 1.744 1.744 0 01.588-1.264c.214-.196.503-.36.868-.49.364-.129.82-.194 1.367-.194.269 0 .567.015.895.045.329.03.67.08 1.026.153v1.06a9.803 9.803 0 00-1.063-.202 6.926 6.926 0 00-.872-.065c-.296 0-.545.023-.748.069a1.553 1.553 0 00-.492.188.734.734 0 00-.27.28.748.748 0 00-.082.345c0 .123.023.235.071.335.048.1.137.197.267.29.13.094.31.187.543.28.233.094.536.196.91.305.405.119.747.243 1.025.373.278.13.503.274.677.434.173.16.297.34.372.54.075.2.113.428.113.683z"/><path id=":[{" fill="#7E7C7B" d="M72.017 172.912c.14 0 .275.029.403.086a1.107 1.107 0 01.564.564.978.978 0 01.085.403.971.971 0 01-.085.407 1.12 1.12 0 01-.23.331 1.058 1.058 0 01-.737.308c-.146 0-.282-.028-.407-.082a1.07 1.07 0 01-.557-.557 1.006 1.006 0 01-.082-.407 1.058 1.058 0 01.308-.738 1.12 1.12 0 01.33-.23.971.971 0 01.408-.085zm0 5.01c.14 0 .275.03.403.086a1.107 1.107 0 01.564.564.978.978 0 01.085.404.971.971 0 01-.085.406 1.12 1.12 0 01-.23.332 1.058 1.058 0 01-.737.307c-.146 0-.282-.027-.407-.082a1.07 1.07 0 01-.557-.557 1.006 1.006 0 01-.082-.406 1.058 1.058 0 01.308-.738 1.12 1.12 0 01.33-.23.971.971 0 01.408-.085zm17.274 4.78h-3.37V170h3.37v.957h-2.235v10.787h2.235v.957zm8.1 0h-.505c-.88 0-1.534-.207-1.962-.62-.429-.412-.643-1.037-.643-1.876v-2.352a2.18 2.18 0 00-.075-.598.978.978 0 00-.263-.444 1.224 1.224 0 00-.5-.277 2.706 2.706 0 00-.782-.096h-.294v-.95h.294c.333 0 .604-.027.814-.082.21-.054.373-.138.492-.25a.88.88 0 00.246-.427c.045-.173.068-.378.068-.615v-1.62c0-.383.046-.728.137-1.036.091-.307.24-.57.448-.786.207-.216.476-.382.806-.499.33-.116.735-.174 1.214-.174h.506v.957h-.404c-1.057 0-1.586.513-1.586 1.538v1.593c0 1.112-.48 1.738-1.442 1.88.97.095 1.456.72 1.456 1.873v2.338c0 1.043.524 1.565 1.572 1.565h.404v.957z"/><path id="name" fill="#181717" d="M46.17 190.035h1.06l.047 1.108c.2-.237.395-.435.581-.592.187-.157.37-.283.55-.38a2.06 2.06 0 01.551-.2c.187-.04.38-.059.581-.059.706 0 1.24.209 1.603.626.362.417.544 1.044.544 1.883v4.477h-1.19v-4.381c0-.538-.1-.936-.3-1.193-.201-.258-.5-.387-.896-.387-.146 0-.288.022-.427.065a1.557 1.557 0 00-.435.226c-.15.107-.313.252-.488.434-.176.182-.373.41-.592.684v4.552h-1.19v-6.863zm12.106 6.863l-.027-.922c-.374.369-.753.635-1.138.8-.385.163-.79.245-1.214.245-.391 0-.726-.05-1.004-.15a1.883 1.883 0 01-.687-.413 1.603 1.603 0 01-.397-.62 2.289 2.289 0 01-.126-.772c0-.688.256-1.227.769-1.616.512-.39 1.27-.585 2.273-.585h1.421v-.601c0-.406-.13-.73-.39-.974-.259-.244-.655-.366-1.189-.366-.387 0-.769.043-1.145.13-.376.086-.764.21-1.165.369v-1.073a7.36 7.36 0 011.087-.301 7.6 7.6 0 01.642-.1c.224-.024.45-.037.677-.037.415 0 .788.046 1.121.137.333.091.614.23.844.417.23.187.407.421.53.704.123.282.185.615.185.998v4.73h-1.067zm-.13-3.124h-1.51c-.296 0-.552.03-.766.09-.214.059-.39.143-.526.252-.137.11-.238.24-.304.393-.067.153-.1.325-.1.516 0 .133.02.259.062.38.041.12.107.228.198.321.091.093.21.168.356.222.145.055.323.082.533.082.273 0 .587-.083.94-.25.353-.166.726-.429 1.117-.789v-1.217zm8.313 3.124v-4.928c0-.214-.008-.39-.024-.527a1.2 1.2 0 00-.075-.324.348.348 0 00-.13-.168.43.43 0 00-.448.034c-.077.055-.16.144-.25.267a4.216 4.216 0 00-.293.489 30.3 30.3 0 00-.38.748v4.41h-1.087v-4.8c0-.25-.008-.453-.023-.608a1.42 1.42 0 00-.076-.362.34.34 0 00-.133-.178.431.431 0 00-.43.02.988.988 0 00-.243.247c-.09.118-.188.28-.298.485-.109.205-.239.467-.39.786v4.41h-1.093v-6.864h.91l.054 1.306c.118-.26.233-.481.345-.663.112-.183.227-.33.345-.441.119-.112.245-.194.38-.246.134-.053.283-.079.447-.079.37 0 .65.12.841.362.192.242.287.616.287 1.122.11-.237.217-.448.322-.633a2.31 2.31 0 01.338-.465c.12-.125.254-.22.4-.287.146-.066.314-.099.506-.099.861 0 1.292.663 1.292 1.99v4.996h-1.094zm8.6-3.794c0 .17-.003.31-.007.424a6.37 6.37 0 01-.02.322h-4.82c0 .701.196 1.24.588 1.616.392.376.957.564 1.695.564.2 0 .401-.008.602-.024.2-.016.394-.037.58-.065.188-.027.366-.058.537-.092.171-.034.33-.072.475-.113v.978a9.161 9.161 0 01-2.365.308c-.588 0-1.094-.08-1.517-.24a2.597 2.597 0 01-1.043-.694 2.857 2.857 0 01-.601-1.114 5.273 5.273 0 01-.195-1.494c0-.483.07-.94.208-1.37a3.44 3.44 0 01.609-1.135c.266-.326.593-.584.98-.776a2.94 2.94 0 011.32-.287c.478 0 .902.075 1.271.226.37.15.68.363.934.639.252.276.444.61.574 1.005.13.394.195.835.195 1.322zm-1.238-.17a2.593 2.593 0 00-.089-.838 1.763 1.763 0 00-.338-.653 1.576 1.576 0 00-.57-.427 1.916 1.916 0 00-.794-.154c-.26 0-.496.05-.71.15-.215.101-.4.242-.554.425a2.19 2.19 0 00-.376.656 3.026 3.026 0 00-.178.84h3.61z"/><path id=":" fill="#7E7C7B" d="M79.714 189.912c.141 0 .276.029.403.086a1.107 1.107 0 01.564.564.978.978 0 01.086.403.971.971 0 01-.086.407 1.12 1.12 0 01-.229.331 1.058 1.058 0 01-.738.308c-.146 0-.282-.028-.407-.082a1.07 1.07 0 01-.557-.557 1.006 1.006 0 01-.082-.407 1.058 1.058 0 01.308-.738 1.12 1.12 0 01.331-.23.971.971 0 01.407-.085zm0 5.01c.141 0 .276.03.403.086a1.107 1.107 0 01.564.564.978.978 0 01.086.404.971.971 0 01-.086.406 1.12 1.12 0 01-.229.332 1.058 1.058 0 01-.738.307c-.146 0-.282-.027-.407-.082a1.07 1.07 0 01-.557-.557 1.006 1.006 0 01-.082-.406 1.058 1.058 0 01.308-.738 1.12 1.12 0 01.331-.23.971.971 0 01.407-.085z"/><path id="'Peter'" fill="#478964" d="M95.895 187.24l-.199 3.205h-1.175l-.192-3.206h1.566zm10.007 3.458c0 .365-.068.726-.205 1.084a2.68 2.68 0 01-.635.96 3.227 3.227 0 01-1.101.687c-.447.176-.98.263-1.6.263h-1.107v3.206h-1.217v-8.934h2.516c.442 0 .866.049 1.271.147.406.098.762.256 1.07.475.308.219.553.501.735.848.182.346.273.767.273 1.264zm-1.264.055c0-.574-.188-1.014-.564-1.32-.376-.305-.901-.457-1.576-.457h-1.244v3.677h1.135c.72 0 1.275-.157 1.664-.471.39-.315.585-.791.585-1.43zm8.907 2.351c0 .17-.002.31-.007.424a6.37 6.37 0 01-.02.322h-4.82c0 .701.196 1.24.588 1.616.392.376.957.564 1.695.564.201 0 .401-.008.602-.024.2-.016.394-.037.581-.065.187-.027.366-.058.537-.092.17-.034.329-.072.475-.113v.978a9.161 9.161 0 01-2.365.308c-.588 0-1.094-.08-1.518-.24a2.597 2.597 0 01-1.043-.694 2.857 2.857 0 01-.601-1.114 5.273 5.273 0 01-.195-1.494c0-.483.07-.94.209-1.37a3.44 3.44 0 01.608-1.135c.267-.326.594-.584.981-.776a2.94 2.94 0 011.32-.287c.478 0 .902.075 1.27.226.37.15.68.363.934.639.253.276.444.61.574 1.005.13.394.195.835.195 1.322zm-1.237-.17a2.593 2.593 0 00-.09-.838 1.763 1.763 0 00-.338-.653 1.576 1.576 0 00-.57-.427 1.916 1.916 0 00-.793-.154c-.26 0-.497.05-.711.15-.215.101-.4.242-.554.425a2.19 2.19 0 00-.376.656 3.026 3.026 0 00-.178.84h3.61zm8.668 3.869a5.793 5.793 0 01-.834.147 8.52 8.52 0 01-.875.044c-.862 0-1.504-.195-1.928-.584-.424-.39-.636-.988-.636-1.795v-3.582h-1.92v-.998h1.92v-1.887l1.19-.307v2.194h3.083v.998h-3.083v3.487c0 .492.13.86.393 1.104.262.243.648.365 1.158.365.22 0 .458-.017.718-.051.26-.034.531-.088.814-.16v1.025zm7.963-3.699c0 .17-.002.31-.006.424a6.37 6.37 0 01-.02.322h-4.82c0 .701.196 1.24.588 1.616.392.376.957.564 1.695.564.2 0 .401-.008.602-.024.2-.016.394-.037.58-.065.187-.027.366-.058.537-.092.171-.034.33-.072.475-.113v.978a9.161 9.161 0 01-2.365.308c-.588 0-1.094-.08-1.517-.24a2.597 2.597 0 01-1.043-.694 2.857 2.857 0 01-.602-1.114 5.273 5.273 0 01-.194-1.494c0-.483.07-.94.208-1.37a3.44 3.44 0 01.609-1.135c.266-.326.593-.584.98-.776a2.94 2.94 0 011.32-.287c.478 0 .902.075 1.271.226.37.15.68.363.933.639s.445.61.575 1.005c.13.394.194.835.194 1.322zm-1.237-.17a2.593 2.593 0 00-.089-.838 1.763 1.763 0 00-.338-.653 1.576 1.576 0 00-.57-.427 1.916 1.916 0 00-.794-.154c-.26 0-.497.05-.71.15-.215.101-.4.242-.555.425a2.19 2.19 0 00-.375.656 3.026 3.026 0 00-.178.84h3.61zm3.418-2.899h1.087l.034 1.265c.406-.488.806-.841 1.2-1.06a2.436 2.436 0 011.193-.328c.71 0 1.25.23 1.616.69.367.46.537 1.144.51 2.051h-1.203c.013-.601-.074-1.038-.264-1.309-.189-.27-.466-.406-.83-.406-.16 0-.32.028-.482.085a1.947 1.947 0 00-.5.273 4.47 4.47 0 00-.543.482 8.898 8.898 0 00-.615.711v4.41h-1.203v-6.864zm10.958-2.796l-.198 3.206h-1.176l-.191-3.206h1.565z"/><path id="," fill="#7E7C7B" d="M146.768 198.3c.232.009.458-.012.676-.062a2.02 2.02 0 00.578-.222c.166-.098.3-.22.4-.366a.86.86 0 00.15-.499.95.95 0 00-.099-.464 2.238 2.238 0 00-.222-.329 2.438 2.438 0 01-.222-.32.91.91 0 01-.1-.459.915.915 0 01.223-.588.857.857 0 01.287-.212 1.12 1.12 0 01.875.017c.148.066.278.168.39.305.111.136.2.307.266.512.066.205.1.447.1.725 0 .378-.07.742-.21 1.09a2.657 2.657 0 01-.621.926c-.276.27-.62.484-1.032.643-.413.16-.893.24-1.44.24v-.937z"/><path id="salary" fill="#181717" d="M51.604 212.025a1.634 1.634 0 01-.458 1.16 2.084 2.084 0 01-.492.378 3.272 3.272 0 01-.598.26c-.212.069-.43.119-.653.15a4.638 4.638 0 01-.656.048 12.3 12.3 0 01-1.282-.061 8.646 8.646 0 01-1.145-.198v-1.094c.401.114.8.2 1.197.26.396.059.79.089 1.182.089.57 0 .991-.078 1.265-.233.273-.155.41-.376.41-.663a.812.812 0 00-.065-.331.753.753 0 00-.236-.28 2.254 2.254 0 00-.53-.278 11.81 11.81 0 00-.98-.328 6.963 6.963 0 01-.858-.31 2.877 2.877 0 01-.68-.414 1.776 1.776 0 01-.452-.56 1.649 1.649 0 01-.164-.76 1.744 1.744 0 01.588-1.264c.214-.196.504-.36.868-.49.365-.129.82-.194 1.367-.194.27 0 .568.015.896.045.328.03.67.08 1.025.153v1.06a9.803 9.803 0 00-1.063-.202 6.926 6.926 0 00-.871-.065c-.296 0-.546.023-.749.069a1.553 1.553 0 00-.492.188.734.734 0 00-.27.28.748.748 0 00-.082.345c0 .123.024.235.072.335.048.1.136.197.266.29.13.094.311.187.544.28.232.094.535.196.909.305.406.119.747.243 1.025.373.278.13.504.274.677.434.173.16.298.34.373.54.075.2.112.428.112.683zm6.672 1.873l-.027-.922c-.374.369-.753.635-1.138.8-.385.163-.79.245-1.214.245-.391 0-.726-.05-1.004-.15a1.883 1.883 0 01-.687-.413 1.603 1.603 0 01-.397-.62 2.289 2.289 0 01-.126-.772c0-.688.256-1.227.769-1.616.512-.39 1.27-.585 2.273-.585h1.421v-.601c0-.406-.13-.73-.39-.974-.259-.244-.655-.366-1.189-.366-.387 0-.769.043-1.145.13-.376.086-.764.21-1.165.369v-1.073a7.36 7.36 0 011.087-.301 7.6 7.6 0 01.642-.1c.224-.024.45-.037.677-.037.415 0 .788.046 1.121.137.333.091.614.23.844.417.23.187.407.421.53.704.123.282.185.615.185.998v4.73h-1.067zm-.13-3.124h-1.51c-.296 0-.552.03-.766.09-.214.059-.39.143-.526.252-.137.11-.238.24-.304.393-.067.153-.1.325-.1.516 0 .133.02.259.062.38.041.12.107.228.198.321.091.093.21.168.356.222.145.055.323.082.533.082.273 0 .587-.083.94-.25.353-.166.726-.429 1.117-.789v-1.217zm5.756-5.557h-2.03v-.978h3.233v8.668h2.044v.991h-5.503v-.99h2.256v-7.691zm9.769 8.681l-.027-.922c-.374.369-.754.635-1.139.8-.385.163-.79.245-1.213.245-.392 0-.727-.05-1.005-.15a1.883 1.883 0 01-.687-.413 1.603 1.603 0 01-.396-.62 2.289 2.289 0 01-.127-.772c0-.688.256-1.227.77-1.616.512-.39 1.27-.585 2.272-.585h1.422v-.601c0-.406-.13-.73-.39-.974s-.656-.366-1.19-.366c-.386 0-.768.043-1.144.13-.376.086-.765.21-1.166.369v-1.073a7.36 7.36 0 011.087-.301 7.6 7.6 0 01.643-.1c.223-.024.449-.037.677-.037.414 0 .788.046 1.12.137.333.091.615.23.845.417.23.187.407.421.53.704.123.282.184.615.184.998v4.73h-1.066zm-.13-3.124h-1.51c-.297 0-.552.03-.766.09-.215.059-.39.143-.527.252-.136.11-.238.24-.304.393-.066.153-.099.325-.099.516 0 .133.02.259.061.38.042.12.108.228.199.321.09.093.21.168.355.222.146.055.324.082.533.082.274 0 .587-.083.94-.25.354-.166.726-.429 1.118-.789v-1.217zm3.698-3.739h1.087l.034 1.265c.406-.488.806-.841 1.2-1.06a2.436 2.436 0 011.193-.328c.71 0 1.25.23 1.617.69.366.46.536 1.144.509 2.051h-1.203c.013-.601-.074-1.038-.263-1.309-.19-.27-.466-.406-.831-.406-.16 0-.32.028-.482.085a1.947 1.947 0 00-.499.273 4.47 4.47 0 00-.543.482 8.898 8.898 0 00-.616.711v4.41H77.24v-6.864zm13.522 0l-2.338 6.139a12.037 12.037 0 01-.749 1.613 4.784 4.784 0 01-.844 1.11c-.305.29-.64.503-1.005.64a3.463 3.463 0 01-1.223.205 6.811 6.811 0 01-.636-.027v-1.08c.1.013.21.026.328.037.118.012.244.017.376.017.219 0 .423-.031.612-.095s.368-.168.536-.311c.169-.144.33-.33.486-.557.155-.228.305-.504.45-.828l-2.74-6.863h1.353l1.737 4.54.348 1.066.397-1.094 1.606-4.512h1.306z"/><path id=":" fill="#7E7C7B" d="M95.108 206.912c.142 0 .276.029.404.086a1.107 1.107 0 01.564.564.978.978 0 01.085.403.971.971 0 01-.085.407 1.12 1.12 0 01-.23.331 1.058 1.058 0 01-.738.308c-.145 0-.281-.028-.406-.082a1.07 1.07 0 01-.557-.557 1.006 1.006 0 01-.082-.407 1.058 1.058 0 01.308-.738 1.12 1.12 0 01.33-.23.971.971 0 01.407-.085zm0 5.01c.142 0 .276.03.404.086a1.107 1.107 0 01.564.564.978.978 0 01.085.404.971.971 0 01-.085.406 1.12 1.12 0 01-.23.332 1.058 1.058 0 01-.738.307c-.145 0-.281-.027-.406-.082a1.07 1.07 0 01-.557-.557 1.006 1.006 0 01-.082-.406 1.058 1.058 0 01.308-.738 1.12 1.12 0 01.33-.23.971.971 0 01.407-.085z"/><path id="2000" fill="#A7333A" d="M113.545 213.898h-5.886v-1.066l2.31-2.297c.379-.374.687-.697.924-.97.237-.274.421-.523.553-.75a2.28 2.28 0 00.267-.638c.045-.2.068-.417.068-.65 0-.218-.03-.427-.089-.625a1.49 1.49 0 00-.273-.523 1.268 1.268 0 00-.479-.356 1.734 1.734 0 00-.704-.13c-.378 0-.722.085-1.032.253-.31.17-.595.388-.854.657l-.657-.786c.338-.356.726-.64 1.166-.855.44-.214.951-.321 1.535-.321.396 0 .757.06 1.083.178.326.118.607.289.844.512.237.224.42.497.55.82.13.324.195.689.195 1.094 0 .342-.045.659-.136.95a3.646 3.646 0 01-.414.872c-.184.29-.417.59-.697.899-.28.31-.612.65-.995 1.019l-1.62 1.579h4.34v1.134zm7.902-4.463c0 .683-.068 1.306-.205 1.87a4.33 4.33 0 01-.622 1.448 2.925 2.925 0 01-1.036.937c-.412.221-.896.331-1.452.331-.479 0-.914-.09-1.306-.27a2.594 2.594 0 01-1.005-.83c-.278-.374-.492-.85-.642-1.429-.15-.579-.226-1.264-.226-2.057 0-.684.07-1.308.209-1.873.139-.566.346-1.05.622-1.453.275-.403.62-.716 1.035-.937.415-.22.898-.331 1.45-.331.478 0 .913.09 1.305.27.392.18.727.458 1.005.834.278.376.492.853.643 1.432.15.579.225 1.265.225 2.058zm-1.203.04c0-.154-.006-.308-.017-.46a23.678 23.678 0 00-.038-.449l-3.78 2.81c.069.237.155.456.26.656.105.2.231.373.38.516.147.144.316.256.505.335.19.08.405.12.646.12.31 0 .592-.075.844-.226.253-.15.469-.373.646-.67.178-.296.315-.664.41-1.104.096-.44.144-.949.144-1.527zm-4.088-.081c0 .14.001.282.004.423.002.142.01.278.024.41l3.78-2.795a3.198 3.198 0 00-.26-.636 2.016 2.016 0 00-.376-.496 1.612 1.612 0 00-.499-.324 1.628 1.628 0 00-.629-.117c-.31 0-.591.076-.844.226-.253.15-.468.375-.646.673a3.697 3.697 0 00-.41 1.108 7.24 7.24 0 00-.144 1.528zm12.989.04c0 .684-.069 1.307-.206 1.87a4.33 4.33 0 01-.622 1.45 2.925 2.925 0 01-1.035.936c-.413.221-.897.331-1.453.331-.478 0-.914-.09-1.306-.27a2.594 2.594 0 01-1.004-.83c-.278-.374-.493-.85-.643-1.429-.15-.579-.226-1.264-.226-2.057 0-.684.07-1.308.209-1.873.139-.566.346-1.05.622-1.453s.62-.716 1.036-.937c.414-.22.897-.331 1.449-.331.478 0 .914.09 1.305.27.392.18.727.458 1.005.834.278.376.493.853.643 1.432.15.579.226 1.265.226 2.058zm-1.204.042c0-.155-.005-.31-.017-.462a23.67 23.67 0 00-.037-.448l-3.78 2.81c.068.237.154.456.26.656.104.2.23.373.379.516.148.144.316.256.505.335.19.08.405.12.646.12.31 0 .592-.075.845-.226.253-.15.468-.373.646-.67.177-.296.314-.664.41-1.104.096-.44.143-.949.143-1.527zm-4.087-.082c0 .14 0 .282.003.423.002.142.01.278.024.41l3.78-2.795a3.198 3.198 0 00-.26-.636 2.016 2.016 0 00-.376-.496 1.612 1.612 0 00-.499-.324 1.628 1.628 0 00-.629-.117c-.31 0-.59.076-.844.226-.253.15-.468.375-.646.673a3.697 3.697 0 00-.41 1.108 7.24 7.24 0 00-.143 1.528zm12.988.04c0 .684-.069 1.307-.205 1.87a4.33 4.33 0 01-.622 1.45 2.925 2.925 0 01-1.036.936c-.412.221-.897.331-1.453.331-.478 0-.913-.09-1.305-.27a2.594 2.594 0 01-1.005-.83c-.278-.374-.492-.85-.643-1.429-.15-.579-.225-1.264-.225-2.057 0-.684.07-1.308.208-1.873.14-.566.347-1.05.622-1.453.276-.403.621-.716 1.036-.937.415-.22.898-.331 1.45-.331.478 0 .913.09 1.305.27.392.18.727.458 1.005.834.278.376.492.853.642 1.432.15.579.226 1.265.226 2.058zm-1.203.042c0-.155-.006-.31-.017-.462a23.67 23.67 0 00-.038-.448l-3.78 2.81c.068.237.155.456.26.656.104.2.23.373.379.516.148.144.317.256.506.335.189.08.404.12.646.12.31 0 .591-.075.844-.226.253-.15.468-.373.646-.67.178-.296.314-.664.41-1.104.096-.44.144-.949.144-1.527zm-4.088-.082c0 .14 0 .282.003.423.002.142.01.278.024.41l3.78-2.795a3.198 3.198 0 00-.26-.636 2.016 2.016 0 00-.375-.496 1.612 1.612 0 00-.5-.324 1.628 1.628 0 00-.628-.117c-.31 0-.592.076-.845.226-.252.15-.468.375-.646.673a3.697 3.697 0 00-.41 1.108 7.24 7.24 0 00-.143 1.528z"/><path id="},{" fill="#7E7C7B" d="M31.247 221h.506c.88 0 1.533.206 1.962.619.428.412.642 1.038.642 1.876v1.58c0 .223.025.422.076.597.05.176.137.324.263.445.125.12.293.213.502.277.21.063.472.095.786.095h.294v.95h-.294c-.332 0-.605.028-.817.082a1.116 1.116 0 00-.495.25.88.88 0 00-.246.427 2.438 2.438 0 00-.069.615v2.393c0 .383-.045.728-.136 1.036-.091.307-.24.57-.445.786a1.993 1.993 0 01-.806.499c-.333.116-.739.174-1.217.174h-.506v-.957h.41c1.053 0 1.58-.513 1.58-1.538v-2.365c0-1.112.48-1.737 1.442-1.873-.971-.105-1.456-.732-1.456-1.88v-1.566c0-1.043-.522-1.565-1.566-1.565h-.41V221zm7.759 11.3c.232.009.458-.012.677-.062a2.02 2.02 0 00.577-.222c.167-.098.3-.22.4-.366a.86.86 0 00.15-.499.95.95 0 00-.099-.464 2.238 2.238 0 00-.222-.329 2.438 2.438 0 01-.222-.32.91.91 0 01-.099-.459.915.915 0 01.222-.588.857.857 0 01.287-.212 1.12 1.12 0 01.875.017c.148.066.278.168.39.305.112.136.2.307.266.512.067.205.1.447.1.725 0 .378-.07.742-.209 1.09a2.657 2.657 0 01-.622.926c-.276.27-.62.484-1.032.643-.413.16-.892.24-1.44.24v-.937zm19.9 1.401h-.507c-.88 0-1.533-.206-1.962-.618-.428-.413-.642-1.038-.642-1.877v-2.352a2.18 2.18 0 00-.075-.598.978.978 0 00-.263-.444 1.224 1.224 0 00-.5-.277 2.706 2.706 0 00-.782-.096h-.294v-.95h.294c.332 0 .604-.027.813-.082.21-.054.374-.138.492-.25a.88.88 0 00.247-.427c.045-.173.068-.378.068-.615v-1.62c0-.383.045-.728.137-1.036.09-.307.24-.57.447-.786.208-.216.477-.382.807-.499.33-.116.735-.174 1.213-.174h.506v.957h-.403c-1.057 0-1.586.513-1.586 1.538v1.593c0 1.112-.48 1.738-1.442 1.88.97.095 1.456.72 1.456 1.873v2.338c0 1.043.524 1.565 1.572 1.565h.403v.957z"/><path id="name" fill="#181717" d="M46.17 241.035h1.06l.047 1.108c.2-.237.395-.435.581-.592.187-.157.37-.283.55-.38a2.06 2.06 0 01.551-.2c.187-.04.38-.059.581-.059.706 0 1.24.209 1.603.626.362.417.544 1.044.544 1.883v4.477h-1.19v-4.381c0-.538-.1-.936-.3-1.193-.201-.258-.5-.387-.896-.387-.146 0-.288.022-.427.065a1.557 1.557 0 00-.435.226c-.15.107-.313.252-.488.434-.176.182-.373.41-.592.684v4.552h-1.19v-6.863zm12.106 6.863l-.027-.922c-.374.369-.753.635-1.138.8-.385.163-.79.245-1.214.245-.391 0-.726-.05-1.004-.15a1.883 1.883 0 01-.687-.413 1.603 1.603 0 01-.397-.62 2.289 2.289 0 01-.126-.772c0-.688.256-1.227.769-1.616.512-.39 1.27-.585 2.273-.585h1.421v-.601c0-.406-.13-.73-.39-.974-.259-.244-.655-.366-1.189-.366-.387 0-.769.043-1.145.13-.376.086-.764.21-1.165.369v-1.073a7.36 7.36 0 011.087-.301 7.6 7.6 0 01.642-.1c.224-.024.45-.037.677-.037.415 0 .788.046 1.121.137.333.091.614.23.844.417.23.187.407.421.53.704.123.282.185.615.185.998v4.73h-1.067zm-.13-3.124h-1.51c-.296 0-.552.03-.766.09-.214.059-.39.143-.526.252-.137.11-.238.24-.304.393-.067.153-.1.325-.1.516 0 .133.02.259.062.38.041.12.107.228.198.321.091.093.21.168.356.222.145.055.323.082.533.082.273 0 .587-.083.94-.25.353-.166.726-.429 1.117-.789v-1.217zm8.313 3.124v-4.928c0-.214-.008-.39-.024-.527a1.2 1.2 0 00-.075-.324.348.348 0 00-.13-.168.43.43 0 00-.448.034c-.077.055-.16.144-.25.267a4.216 4.216 0 00-.293.489 30.3 30.3 0 00-.38.748v4.41h-1.087v-4.8c0-.25-.008-.453-.023-.608a1.42 1.42 0 00-.076-.362.34.34 0 00-.133-.178.431.431 0 00-.43.02.988.988 0 00-.243.247c-.09.118-.188.28-.298.485-.109.205-.239.467-.39.786v4.41h-1.093v-6.864h.91l.054 1.306c.118-.26.233-.481.345-.663.112-.183.227-.33.345-.441.119-.112.245-.194.38-.246.134-.053.283-.079.447-.079.37 0 .65.12.841.362.192.242.287.616.287 1.122.11-.237.217-.448.322-.633a2.31 2.31 0 01.338-.465c.12-.125.254-.22.4-.287.146-.066.314-.099.506-.099.861 0 1.292.663 1.292 1.99v4.996h-1.094zm8.6-3.794c0 .17-.003.31-.007.424a6.37 6.37 0 01-.02.322h-4.82c0 .701.196 1.24.588 1.616.392.376.957.564 1.695.564.2 0 .401-.008.602-.024.2-.016.394-.037.58-.065.188-.027.366-.058.537-.092.171-.034.33-.072.475-.113v.978a9.161 9.161 0 01-2.365.308c-.588 0-1.094-.08-1.517-.24a2.597 2.597 0 01-1.043-.694 2.857 2.857 0 01-.601-1.114 5.273 5.273 0 01-.195-1.494c0-.483.07-.94.208-1.37a3.44 3.44 0 01.609-1.135c.266-.326.593-.584.98-.776a2.94 2.94 0 011.32-.287c.478 0 .902.075 1.271.226.37.15.68.363.934.639.252.276.444.61.574 1.005.13.394.195.835.195 1.322zm-1.238-.17a2.593 2.593 0 00-.089-.838 1.763 1.763 0 00-.338-.653 1.576 1.576 0 00-.57-.427 1.916 1.916 0 00-.794-.154c-.26 0-.496.05-.71.15-.215.101-.4.242-.554.425a2.19 2.19 0 00-.376.656 3.026 3.026 0 00-.178.84h3.61z"/><path id=":" fill="#7E7C7B" d="M79.714 240.912c.141 0 .276.029.403.086a1.107 1.107 0 01.564.564.978.978 0 01.086.403.971.971 0 01-.086.407 1.12 1.12 0 01-.229.331 1.058 1.058 0 01-.738.308c-.146 0-.282-.028-.407-.082a1.07 1.07 0 01-.557-.557 1.006 1.006 0 01-.082-.407 1.058 1.058 0 01.308-.738 1.12 1.12 0 01.331-.23.971.971 0 01.407-.085zm0 5.01c.141 0 .276.03.403.086a1.107 1.107 0 01.564.564.978.978 0 01.086.404.971.971 0 01-.086.406 1.12 1.12 0 01-.229.332 1.058 1.058 0 01-.738.307c-.146 0-.282-.027-.407-.082a1.07 1.07 0 01-.557-.557 1.006 1.006 0 01-.082-.406 1.058 1.058 0 01.308-.738 1.12 1.12 0 01.331-.23.971.971 0 01.407-.085z"/><path id="'Alex'" fill="#478964" d="M95.895 238.24l-.199 3.205h-1.175l-.192-3.206h1.566zm10.69 9.658h-1.325l-.622-1.948h-3.72l-.628 1.948h-1.265l2.967-8.934h1.668l2.926 8.934zm-2.296-3.035l-1.51-4.778-1.511 4.778h3.021zm5.797-5.646h-2.03v-.978h3.233v8.668h2.044v.991h-5.503v-.99h2.256v-7.691zm11.156 4.887c0 .17-.002.31-.007.424a6.372 6.372 0 01-.02.322h-4.82c0 .701.196 1.24.588 1.616.392.376.957.564 1.696.564.2 0 .4-.008.601-.024.2-.016.394-.037.581-.065.187-.027.366-.058.537-.092.17-.034.33-.072.475-.113v.978a9.161 9.161 0 01-2.365.308c-.588 0-1.094-.08-1.518-.24a2.597 2.597 0 01-1.042-.694 2.857 2.857 0 01-.602-1.114 5.273 5.273 0 01-.195-1.494c0-.483.07-.94.209-1.37a3.44 3.44 0 01.608-1.135c.267-.326.594-.584.981-.776a2.94 2.94 0 011.32-.287c.478 0 .902.075 1.271.226.37.15.68.363.933.639s.444.61.574 1.005c.13.394.195.835.195 1.322zm-1.237-.17a2.593 2.593 0 00-.089-.838 1.763 1.763 0 00-.338-.653 1.576 1.576 0 00-.571-.427 1.916 1.916 0 00-.793-.154c-.26 0-.497.05-.711.15-.214.101-.399.242-.554.425a2.19 2.19 0 00-.376.656 3.026 3.026 0 00-.177.84h3.609zm9.324 3.964h-1.579l-1.853-2.618-1.832 2.618h-1.538l2.66-3.445-2.537-3.418h1.525l1.804 2.639 1.771-2.639h1.47l-2.577 3.445 2.686 3.418zm5.052-9.659l-.198 3.206h-1.176l-.192-3.206h1.566z"/><path id="," fill="#7E7C7B" d="M139.07 249.3c.233.009.458-.012.677-.062a2.02 2.02 0 00.578-.222c.166-.098.3-.22.4-.366a.86.86 0 00.15-.499.95.95 0 00-.1-.464 2.238 2.238 0 00-.221-.329 2.438 2.438 0 01-.222-.32.91.91 0 01-.1-.459.915.915 0 01.223-.588.857.857 0 01.287-.212 1.12 1.12 0 01.875.017c.148.066.278.168.39.305.111.136.2.307.266.512.066.205.1.447.1.725 0 .378-.07.742-.21 1.09a2.657 2.657 0 01-.621.926c-.276.27-.62.484-1.033.643-.412.16-.892.24-1.439.24v-.937z"/><path id="salary" fill="#181717" d="M51.604 263.025a1.634 1.634 0 01-.458 1.16 2.084 2.084 0 01-.492.378 3.272 3.272 0 01-.598.26c-.212.069-.43.119-.653.15a4.638 4.638 0 01-.656.048 12.3 12.3 0 01-1.282-.061 8.646 8.646 0 01-1.145-.198v-1.094c.401.114.8.2 1.197.26.396.059.79.089 1.182.089.57 0 .991-.078 1.265-.233.273-.155.41-.376.41-.663a.812.812 0 00-.065-.331.753.753 0 00-.236-.28 2.254 2.254 0 00-.53-.278 11.81 11.81 0 00-.98-.328 6.963 6.963 0 01-.858-.31 2.877 2.877 0 01-.68-.414 1.776 1.776 0 01-.452-.56 1.649 1.649 0 01-.164-.76 1.744 1.744 0 01.588-1.264c.214-.196.504-.36.868-.49.365-.129.82-.194 1.367-.194.27 0 .568.015.896.045.328.03.67.08 1.025.153v1.06a9.803 9.803 0 00-1.063-.202 6.926 6.926 0 00-.871-.065c-.296 0-.546.023-.749.069a1.553 1.553 0 00-.492.188.734.734 0 00-.27.28.748.748 0 00-.082.345c0 .123.024.235.072.335.048.1.136.197.266.29.13.094.311.187.544.28.232.094.535.196.909.305.406.119.747.243 1.025.373.278.13.504.274.677.434.173.16.298.34.373.54.075.2.112.428.112.683zm6.672 1.873l-.027-.922c-.374.369-.753.635-1.138.8-.385.163-.79.245-1.214.245-.391 0-.726-.05-1.004-.15a1.883 1.883 0 01-.687-.413 1.603 1.603 0 01-.397-.62 2.289 2.289 0 01-.126-.772c0-.688.256-1.227.769-1.616.512-.39 1.27-.585 2.273-.585h1.421v-.601c0-.406-.13-.73-.39-.974-.259-.244-.655-.366-1.189-.366-.387 0-.769.043-1.145.13-.376.086-.764.21-1.165.369v-1.073a7.36 7.36 0 011.087-.301 7.6 7.6 0 01.642-.1c.224-.024.45-.037.677-.037.415 0 .788.046 1.121.137.333.091.614.23.844.417.23.187.407.421.53.704.123.282.185.615.185.998v4.73h-1.067zm-.13-3.124h-1.51c-.296 0-.552.03-.766.09-.214.059-.39.143-.526.252-.137.11-.238.24-.304.393-.067.153-.1.325-.1.516 0 .133.02.259.062.38.041.12.107.228.198.321.091.093.21.168.356.222.145.055.323.082.533.082.273 0 .587-.083.94-.25.353-.166.726-.429 1.117-.789v-1.217zm5.756-5.557h-2.03v-.978h3.233v8.668h2.044v.991h-5.503v-.99h2.256v-7.691zm9.769 8.681l-.027-.922c-.374.369-.754.635-1.139.8-.385.163-.79.245-1.213.245-.392 0-.727-.05-1.005-.15a1.883 1.883 0 01-.687-.413 1.603 1.603 0 01-.396-.62 2.289 2.289 0 01-.127-.772c0-.688.256-1.227.77-1.616.512-.39 1.27-.585 2.272-.585h1.422v-.601c0-.406-.13-.73-.39-.974s-.656-.366-1.19-.366c-.386 0-.768.043-1.144.13-.376.086-.765.21-1.166.369v-1.073a7.36 7.36 0 011.087-.301 7.6 7.6 0 01.643-.1c.223-.024.449-.037.677-.037.414 0 .788.046 1.12.137.333.091.615.23.845.417.23.187.407.421.53.704.123.282.184.615.184.998v4.73h-1.066zm-.13-3.124h-1.51c-.297 0-.552.03-.766.09-.215.059-.39.143-.527.252-.136.11-.238.24-.304.393-.066.153-.099.325-.099.516 0 .133.02.259.061.38.042.12.108.228.199.321.09.093.21.168.355.222.146.055.324.082.533.082.274 0 .587-.083.94-.25.354-.166.726-.429 1.118-.789v-1.217zm3.698-3.739h1.087l.034 1.265c.406-.488.806-.841 1.2-1.06a2.436 2.436 0 011.193-.328c.71 0 1.25.23 1.617.69.366.46.536 1.144.509 2.051h-1.203c.013-.601-.074-1.038-.263-1.309-.19-.27-.466-.406-.831-.406-.16 0-.32.028-.482.085a1.947 1.947 0 00-.499.273 4.47 4.47 0 00-.543.482 8.898 8.898 0 00-.616.711v4.41H77.24v-6.864zm13.522 0l-2.338 6.139a12.037 12.037 0 01-.749 1.613 4.784 4.784 0 01-.844 1.11c-.305.29-.64.503-1.005.64a3.463 3.463 0 01-1.223.205 6.811 6.811 0 01-.636-.027v-1.08c.1.013.21.026.328.037.118.012.244.017.376.017.219 0 .423-.031.612-.095s.368-.168.536-.311c.169-.144.33-.33.486-.557.155-.228.305-.504.45-.828l-2.74-6.863h1.353l1.737 4.54.348 1.066.397-1.094 1.606-4.512h1.306z"/><path id=":" fill="#7E7C7B" d="M95.108 257.912c.142 0 .276.029.404.086a1.107 1.107 0 01.564.564.978.978 0 01.085.403.971.971 0 01-.085.407 1.12 1.12 0 01-.23.331 1.058 1.058 0 01-.738.308c-.145 0-.281-.028-.406-.082a1.07 1.07 0 01-.557-.557 1.006 1.006 0 01-.082-.407 1.058 1.058 0 01.308-.738 1.12 1.12 0 01.33-.23.971.971 0 01.407-.085zm0 5.01c.142 0 .276.03.404.086a1.107 1.107 0 01.564.564.978.978 0 01.085.404.971.971 0 01-.085.406 1.12 1.12 0 01-.23.332 1.058 1.058 0 01-.738.307c-.145 0-.281-.027-.406-.082a1.07 1.07 0 01-.557-.557 1.006 1.006 0 01-.082-.406 1.058 1.058 0 01.308-.738 1.12 1.12 0 01.33-.23.971.971 0 01.407-.085z"/><path id="1800" fill="#A7333A" d="M113.47 264.898h-5.613v-1.107h2.297v-6.521l-2.14 1.162-.437-1.012 2.844-1.497h1.053v7.868h1.996v1.107zm7.772-2.242c0 .379-.077.715-.232 1.009a2.13 2.13 0 01-.65.741c-.278.2-.606.353-.984.458a4.594 4.594 0 01-1.23.157c-.488 0-.918-.054-1.29-.164a2.768 2.768 0 01-.932-.458 1.93 1.93 0 01-.759-1.586c0-.546.153-1.018.458-1.415.305-.396.777-.756 1.415-1.08-.583-.296-1.01-.625-1.278-.987a2.038 2.038 0 01-.404-1.248 2.047 2.047 0 01.715-1.552c.24-.21.539-.377.899-.502.36-.126.784-.188 1.271-.188.46 0 .865.049 1.214.147.348.098.641.238.878.42s.415.404.533.663c.119.26.178.55.178.868 0 .52-.145.962-.434 1.327-.29.364-.7.683-1.234.957.264.132.51.278.738.437a3.2 3.2 0 01.595.533c.169.196.3.415.393.657.093.241.14.51.14.806zm-1.415-4.62c0-.406-.142-.708-.427-.907-.285-.198-.685-.297-1.2-.297-.51 0-.908.098-1.193.294-.285.196-.427.49-.427.882a1.175 1.175 0 00.42.916c.144.132.323.262.537.39.214.127.47.257.766.39.515-.242.898-.494 1.148-.756a1.28 1.28 0 00.376-.913zm.123 4.71c0-.17-.027-.334-.082-.493a1.367 1.367 0 00-.294-.472 2.951 2.951 0 00-.567-.465 6.682 6.682 0 00-.903-.478c-.31.15-.57.3-.782.448a2.698 2.698 0 00-.513.45c-.13.153-.222.312-.277.476a1.632 1.632 0 00-.082.52c0 .205.045.386.133.543.09.157.211.29.366.4.155.11.34.191.554.246.214.055.447.082.697.082.242 0 .47-.025.684-.075.214-.05.4-.127.557-.23.157-.102.281-.232.372-.389.092-.157.137-.345.137-.564zm9.195-2.311c0 .683-.069 1.306-.206 1.87a4.33 4.33 0 01-.622 1.448 2.925 2.925 0 01-1.035.937c-.413.221-.897.331-1.453.331-.478 0-.914-.09-1.306-.27a2.594 2.594 0 01-1.004-.83c-.278-.374-.493-.85-.643-1.429-.15-.579-.226-1.264-.226-2.057 0-.684.07-1.308.209-1.873.139-.566.346-1.05.622-1.453s.62-.716 1.036-.937c.414-.22.897-.331 1.449-.331.478 0 .914.09 1.305.27.392.18.727.458 1.005.834.278.376.493.853.643 1.432.15.579.226 1.265.226 2.058zm-1.204.04c0-.154-.005-.308-.017-.46a23.67 23.67 0 00-.037-.449l-3.78 2.81c.068.237.154.456.26.656.104.2.23.373.379.516.148.144.316.256.505.335.19.08.405.12.646.12.31 0 .592-.075.845-.226.253-.15.468-.373.646-.67.177-.296.314-.664.41-1.104.096-.44.143-.949.143-1.527zm-4.087-.081c0 .14 0 .282.003.423.002.142.01.278.024.41l3.78-2.795a3.198 3.198 0 00-.26-.636 2.016 2.016 0 00-.376-.496 1.612 1.612 0 00-.499-.324 1.628 1.628 0 00-.629-.117c-.31 0-.59.076-.844.226-.253.15-.468.375-.646.673a3.697 3.697 0 00-.41 1.108 7.24 7.24 0 00-.143 1.528zm12.988.04c0 .684-.069 1.307-.205 1.87a4.33 4.33 0 01-.622 1.45 2.925 2.925 0 01-1.036.936c-.412.221-.897.331-1.453.331-.478 0-.913-.09-1.305-.27a2.594 2.594 0 01-1.005-.83c-.278-.374-.492-.85-.643-1.429-.15-.579-.225-1.264-.225-2.057 0-.684.07-1.308.208-1.873.14-.566.347-1.05.622-1.453.276-.403.621-.716 1.036-.937.415-.22.898-.331 1.45-.331.478 0 .913.09 1.305.27.392.18.727.458 1.005.834.278.376.492.853.642 1.432.15.579.226 1.265.226 2.058zm-1.203.042c0-.155-.006-.31-.017-.462a23.67 23.67 0 00-.038-.448l-3.78 2.81c.068.237.155.456.26.656.104.2.23.373.379.516.148.144.317.256.506.335.189.08.404.12.646.12.31 0 .591-.075.844-.226.253-.15.468-.373.646-.67.178-.296.314-.664.41-1.104.096-.44.144-.949.144-1.527zm-4.088-.082c0 .14 0 .282.003.423.002.142.01.278.024.41l3.78-2.795a3.198 3.198 0 00-.26-.636 2.016 2.016 0 00-.375-.496 1.612 1.612 0 00-.5-.324 1.628 1.628 0 00-.628-.117c-.31 0-.592.076-.845.226-.252.15-.468.375-.646.673a3.697 3.697 0 00-.41 1.108 7.24 7.24 0 00-.143 1.528z"/><path id="}]," fill="#7E7C7B" d="M31.247 272h.506c.88 0 1.533.206 1.962.619.428.412.642 1.038.642 1.876v1.58c0 .223.025.422.076.597.05.176.137.324.263.445.125.12.293.213.502.277.21.063.472.095.786.095h.294v.95h-.294c-.332 0-.605.028-.817.082a1.116 1.116 0 00-.495.25.88.88 0 00-.246.427 2.438 2.438 0 00-.069.615v2.393c0 .383-.045.728-.136 1.036-.091.307-.24.57-.445.786a1.993 1.993 0 01-.806.499c-.333.116-.739.174-1.217.174h-.506v-.957h.41c1.053 0 1.58-.513 1.58-1.538v-2.365c0-1.112.48-1.737 1.442-1.873-.971-.105-1.456-.732-1.456-1.88v-1.566c0-1.043-.522-1.565-1.566-1.565h-.41V272zm11.47 12.701h-3.37v-.957h2.222v-10.787h-2.221V272h3.37v12.701zm3.986-1.401c.233.009.458-.012.677-.062a2.02 2.02 0 00.578-.222c.166-.098.3-.22.4-.366a.86.86 0 00.15-.499.95.95 0 00-.1-.464 2.238 2.238 0 00-.221-.329 2.438 2.438 0 01-.223-.32.91.91 0 01-.099-.459.915.915 0 01.222-.588.857.857 0 01.288-.212 1.12 1.12 0 01.875.017c.148.066.278.168.39.305.11.136.2.307.266.512.066.205.099.447.099.725 0 .378-.07.742-.209 1.09a2.657 2.657 0 01-.622.926c-.275.27-.62.484-1.032.643-.412.16-.892.24-1.439.24v-.937z"/><path id="internals" fill="#181717" d="M33.113 310.02h-2.03v-.985h3.233v5.872h2.044v.991h-5.503v-.99h2.256v-4.888zm.417-3.863c.132 0 .255.024.37.072a.893.893 0 01.297.202.919.919 0 01.27.663.96.96 0 01-.27.663.893.893 0 01-.298.201.944.944 0 01-.369.072.944.944 0 01-.369-.072.893.893 0 01-.297-.201.96.96 0 01-.27-.663.919.919 0 01.27-.663.893.893 0 01.297-.202.944.944 0 01.37-.072zm4.943 2.878h1.06l.047 1.108c.2-.237.394-.435.581-.592.187-.157.37-.283.55-.38a2.06 2.06 0 01.55-.2c.188-.04.381-.059.582-.059.706 0 1.24.209 1.603.626.362.417.543 1.044.543 1.883v4.477H42.8v-4.381c0-.538-.1-.936-.3-1.193-.2-.258-.499-.387-.895-.387-.146 0-.289.022-.428.065a1.557 1.557 0 00-.434.226c-.15.107-.313.252-.489.434-.175.182-.372.41-.59.684v4.552h-1.19v-6.863zm13.227 6.768a5.793 5.793 0 01-.834.147 8.52 8.52 0 01-.875.044c-.861 0-1.504-.195-1.928-.584-.423-.39-.635-.988-.635-1.795v-3.582h-1.921v-.998h1.92v-1.887l1.19-.307v2.194H51.7v.998h-3.083v3.487c0 .492.131.86.393 1.104.262.243.649.365 1.159.365.219 0 .458-.017.718-.051.26-.034.53-.088.813-.16v1.025zm7.964-3.699c0 .17-.002.31-.007.424a6.37 6.37 0 01-.02.322h-4.82c0 .701.196 1.24.588 1.616.392.376.957.564 1.696.564.2 0 .4-.008.601-.024.2-.016.394-.037.581-.065.187-.027.366-.058.537-.092.17-.034.33-.072.475-.113v.978a9.161 9.161 0 01-2.365.308c-.588 0-1.094-.08-1.518-.24a2.597 2.597 0 01-1.042-.694 2.857 2.857 0 01-.602-1.114 5.273 5.273 0 01-.195-1.494c0-.483.07-.94.209-1.37a3.44 3.44 0 01.608-1.135c.267-.326.594-.584.981-.776a2.94 2.94 0 011.32-.287c.478 0 .902.075 1.27.226.37.15.681.363.934.639s.444.61.574 1.005c.13.394.195.835.195 1.322zm-1.237-.17a2.593 2.593 0 00-.09-.838 1.763 1.763 0 00-.337-.653 1.576 1.576 0 00-.571-.427 1.916 1.916 0 00-.793-.154c-.26 0-.497.05-.711.15-.214.101-.399.242-.554.425a2.19 2.19 0 00-.376.656 3.026 3.026 0 00-.178.84h3.61zm3.418-2.899h1.087l.034 1.265c.405-.488.805-.841 1.2-1.06a2.436 2.436 0 011.192-.328c.711 0 1.25.23 1.617.69.367.46.537 1.144.51 2.051H66.28c.014-.601-.074-1.038-.263-1.309-.19-.27-.466-.406-.83-.406-.16 0-.32.028-.482.085a1.947 1.947 0 00-.5.273 4.47 4.47 0 00-.543.482 8.898 8.898 0 00-.615.711v4.41h-1.203v-6.864zm7.417 0h1.06l.047 1.108c.2-.237.394-.435.581-.592.187-.157.37-.283.55-.38a2.06 2.06 0 01.55-.2c.188-.04.381-.059.582-.059.706 0 1.24.209 1.603.626.362.417.543 1.044.543 1.883v4.477h-1.19v-4.381c0-.538-.1-.936-.3-1.193-.2-.258-.499-.387-.895-.387-.146 0-.289.022-.428.065a1.557 1.557 0 00-.434.226c-.15.107-.313.252-.489.434-.175.182-.372.41-.59.684v4.552h-1.19v-6.863zm12.106 6.863l-.027-.922c-.374.369-.753.635-1.138.8-.385.163-.79.245-1.214.245-.392 0-.727-.05-1.005-.15a1.883 1.883 0 01-.687-.413 1.603 1.603 0 01-.396-.62 2.289 2.289 0 01-.127-.772c0-.688.257-1.227.77-1.616.512-.39 1.27-.585 2.272-.585h1.422v-.601c0-.406-.13-.73-.39-.974s-.656-.366-1.189-.366c-.387 0-.769.043-1.145.13-.376.086-.764.21-1.165.369v-1.073a7.36 7.36 0 011.087-.301 7.6 7.6 0 01.642-.1c.223-.024.449-.037.677-.037.415 0 .788.046 1.121.137.333.091.614.23.844.417.23.187.407.421.53.704.123.282.185.615.185.998v4.73h-1.067zm-.13-3.124h-1.51c-.297 0-.552.03-.766.09-.214.059-.39.143-.526.252-.137.11-.239.24-.305.393-.066.153-.099.325-.099.516 0 .133.02.259.062.38.04.12.107.228.198.321.091.093.21.168.355.222.146.055.324.082.534.082.273 0 .586-.083.94-.25.353-.166.725-.429 1.117-.789v-1.217zm5.756-5.557h-2.03v-.978h3.233v8.668h2.044v.991h-5.503v-.99h2.256v-7.691zm10.794 6.808a1.634 1.634 0 01-.458 1.16 2.084 2.084 0 01-.492.378 3.272 3.272 0 01-.598.26c-.212.069-.43.119-.653.15a4.638 4.638 0 01-.656.048 12.3 12.3 0 01-1.282-.061 8.646 8.646 0 01-1.145-.198v-1.094c.4.114.8.2 1.196.26.397.059.79.089 1.183.089.57 0 .991-.078 1.264-.233.274-.155.41-.376.41-.663a.812.812 0 00-.064-.331.753.753 0 00-.236-.28 2.254 2.254 0 00-.53-.278 11.81 11.81 0 00-.98-.328 6.963 6.963 0 01-.859-.31 2.877 2.877 0 01-.68-.414 1.776 1.776 0 01-.451-.56 1.649 1.649 0 01-.164-.76 1.744 1.744 0 01.588-1.264c.214-.196.503-.36.868-.49.364-.129.82-.194 1.367-.194.269 0 .567.015.896.045.328.03.67.08 1.025.153v1.06a9.803 9.803 0 00-1.063-.202 6.926 6.926 0 00-.872-.065c-.296 0-.545.023-.748.069a1.553 1.553 0 00-.492.188.734.734 0 00-.27.28.748.748 0 00-.082.345c0 .123.023.235.071.335.048.1.137.197.267.29.13.094.311.187.543.28.233.094.536.196.91.305.405.119.747.243 1.025.373.278.13.504.274.677.434.173.16.297.34.372.54.075.2.113.428.113.683z"/><path id=":[{" fill="#7E7C7B" d="M102.806 308.912c.14 0 .275.029.403.086a1.107 1.107 0 01.564.564.978.978 0 01.085.403.971.971 0 01-.085.407 1.12 1.12 0 01-.23.331 1.058 1.058 0 01-.737.308c-.146 0-.282-.028-.407-.082a1.07 1.07 0 01-.557-.557 1.006 1.006 0 01-.082-.407 1.058 1.058 0 01.308-.738 1.12 1.12 0 01.33-.23.971.971 0 01.408-.085zm0 5.01c.14 0 .275.03.403.086a1.107 1.107 0 01.564.564.978.978 0 01.085.404.971.971 0 01-.085.406 1.12 1.12 0 01-.23.332 1.058 1.058 0 01-.737.307c-.146 0-.282-.027-.407-.082a1.07 1.07 0 01-.557-.557 1.006 1.006 0 01-.082-.406 1.058 1.058 0 01.308-.738 1.12 1.12 0 01.33-.23.971.971 0 01.408-.085zm17.274 4.78h-3.37V306h3.37v.957h-2.235v10.787h2.235v.957zm8.1 0h-.505c-.88 0-1.534-.207-1.962-.62-.428-.412-.643-1.037-.643-1.876v-2.352a2.18 2.18 0 00-.075-.598.978.978 0 00-.263-.444 1.224 1.224 0 00-.5-.277 2.706 2.706 0 00-.782-.096h-.294v-.95h.294c.333 0 .604-.027.814-.082.21-.054.373-.138.492-.25a.88.88 0 00.246-.427c.046-.173.068-.378.068-.615v-1.62c0-.383.046-.728.137-1.036.091-.307.24-.57.448-.786.207-.216.476-.382.806-.499.33-.116.735-.174 1.214-.174h.506v.957h-.404c-1.057 0-1.586.513-1.586 1.538v1.593c0 1.112-.48 1.738-1.442 1.88.97.095 1.456.72 1.456 1.873v2.338c0 1.043.524 1.565 1.572 1.565h.404v.957z"/><path id="name" fill="#181717" d="M46.17 326.035h1.06l.047 1.108c.2-.237.395-.435.581-.592.187-.157.37-.283.55-.38a2.06 2.06 0 01.551-.2c.187-.04.38-.059.581-.059.706 0 1.24.209 1.603.626.362.417.544 1.044.544 1.883v4.477h-1.19v-4.381c0-.538-.1-.936-.3-1.193-.201-.258-.5-.387-.896-.387-.146 0-.288.022-.427.065a1.557 1.557 0 00-.435.226c-.15.107-.313.252-.488.434-.176.182-.373.41-.592.684v4.552h-1.19v-6.863zm12.106 6.863l-.027-.922c-.374.369-.753.635-1.138.8-.385.163-.79.245-1.214.245-.391 0-.726-.05-1.004-.15a1.883 1.883 0 01-.687-.413 1.603 1.603 0 01-.397-.62 2.289 2.289 0 01-.126-.772c0-.688.256-1.227.769-1.616.512-.39 1.27-.585 2.273-.585h1.421v-.601c0-.406-.13-.73-.39-.974-.259-.244-.655-.366-1.189-.366-.387 0-.769.043-1.145.13-.376.086-.764.21-1.165.369v-1.073a7.36 7.36 0 011.087-.301 7.6 7.6 0 01.642-.1c.224-.024.45-.037.677-.037.415 0 .788.046 1.121.137.333.091.614.23.844.417.23.187.407.421.53.704.123.282.185.615.185.998v4.73h-1.067zm-.13-3.124h-1.51c-.296 0-.552.03-.766.09-.214.059-.39.143-.526.252-.137.11-.238.24-.304.393-.067.153-.1.325-.1.516 0 .133.02.259.062.38.041.12.107.228.198.321.091.093.21.168.356.222.145.055.323.082.533.082.273 0 .587-.083.94-.25.353-.166.726-.429 1.117-.789v-1.217zm8.313 3.124v-4.928c0-.214-.008-.39-.024-.527a1.2 1.2 0 00-.075-.324.348.348 0 00-.13-.168.43.43 0 00-.448.034c-.077.055-.16.144-.25.267a4.216 4.216 0 00-.293.489 30.3 30.3 0 00-.38.748v4.41h-1.087v-4.8c0-.25-.008-.453-.023-.608a1.42 1.42 0 00-.076-.362.34.34 0 00-.133-.178.431.431 0 00-.43.02.988.988 0 00-.243.247c-.09.118-.188.28-.298.485-.109.205-.239.467-.39.786v4.41h-1.093v-6.864h.91l.054 1.306c.118-.26.233-.481.345-.663.112-.183.227-.33.345-.441.119-.112.245-.194.38-.246.134-.053.283-.079.447-.079.37 0 .65.12.841.362.192.242.287.616.287 1.122.11-.237.217-.448.322-.633a2.31 2.31 0 01.338-.465c.12-.125.254-.22.4-.287.146-.066.314-.099.506-.099.861 0 1.292.663 1.292 1.99v4.996h-1.094zm8.6-3.794c0 .17-.003.31-.007.424a6.37 6.37 0 01-.02.322h-4.82c0 .701.196 1.24.588 1.616.392.376.957.564 1.695.564.2 0 .401-.008.602-.024.2-.016.394-.037.58-.065.188-.027.366-.058.537-.092.171-.034.33-.072.475-.113v.978a9.161 9.161 0 01-2.365.308c-.588 0-1.094-.08-1.517-.24a2.597 2.597 0 01-1.043-.694 2.857 2.857 0 01-.601-1.114 5.273 5.273 0 01-.195-1.494c0-.483.07-.94.208-1.37a3.44 3.44 0 01.609-1.135c.266-.326.593-.584.98-.776a2.94 2.94 0 011.32-.287c.478 0 .902.075 1.271.226.37.15.68.363.934.639.252.276.444.61.574 1.005.13.394.195.835.195 1.322zm-1.238-.17a2.593 2.593 0 00-.089-.838 1.763 1.763 0 00-.338-.653 1.576 1.576 0 00-.57-.427 1.916 1.916 0 00-.794-.154c-.26 0-.496.05-.71.15-.215.101-.4.242-.554.425a2.19 2.19 0 00-.376.656 3.026 3.026 0 00-.178.84h3.61z"/><path id=":" fill="#7E7C7B" d="M79.714 325.912c.141 0 .276.029.403.086a1.107 1.107 0 01.564.564.978.978 0 01.086.403.971.971 0 01-.086.407 1.12 1.12 0 01-.229.331 1.058 1.058 0 01-.738.308c-.146 0-.282-.028-.407-.082a1.07 1.07 0 01-.557-.557 1.006 1.006 0 01-.082-.407 1.058 1.058 0 01.308-.738 1.12 1.12 0 01.331-.23.971.971 0 01.407-.085zm0 5.01c.141 0 .276.03.403.086a1.107 1.107 0 01.564.564.978.978 0 01.086.404.971.971 0 01-.086.406 1.12 1.12 0 01-.229.332 1.058 1.058 0 01-.738.307c-.146 0-.282-.027-.407-.082a1.07 1.07 0 01-.557-.557 1.006 1.006 0 01-.082-.406 1.058 1.058 0 01.308-.738 1.12 1.12 0 01.331-.23.971.971 0 01.407-.085z"/><path id="'Jack'" fill="#478964" d="M95.895 323.24l-.199 3.205h-1.175l-.192-3.206h1.566zm9.057.724v6.207c0 .383-.057.746-.17 1.09a2.47 2.47 0 01-.52.9 2.49 2.49 0 01-.875.608c-.351.15-.764.225-1.238.225-.177 0-.358-.012-.543-.037a4.8 4.8 0 01-.533-.103 3.619 3.619 0 01-.482-.157 2.214 2.214 0 01-.39-.202v-1.224c.283.206.596.367.94.486.344.118.685.178 1.022.178.497 0 .88-.152 1.149-.455.268-.303.403-.74.403-1.31v-5.153h-3.398v-1.053h4.635zm7.205 8.934l-.027-.922c-.374.369-.753.635-1.138.8-.385.163-.79.245-1.214.245-.392 0-.727-.05-1.005-.15a1.883 1.883 0 01-.687-.413 1.603 1.603 0 01-.396-.62 2.289 2.289 0 01-.127-.772c0-.688.257-1.227.77-1.616.512-.39 1.27-.585 2.272-.585h1.422v-.601c0-.406-.13-.73-.39-.974s-.656-.366-1.189-.366c-.387 0-.769.043-1.145.13-.376.086-.764.21-1.165.369v-1.073a7.36 7.36 0 011.087-.301 7.6 7.6 0 01.642-.1c.223-.024.45-.037.677-.037.415 0 .788.046 1.121.137.333.091.614.23.844.417.23.187.407.421.53.704.123.282.185.615.185.998v4.73h-1.067zm-.13-3.124h-1.51c-.297 0-.552.03-.766.09-.214.059-.39.143-.526.252-.137.11-.239.24-.305.393-.066.153-.099.325-.099.516 0 .133.02.259.062.38.04.12.107.228.198.321.091.093.21.168.356.222.145.055.323.082.533.082.273 0 .586-.083.94-.25.353-.166.725-.429 1.117-.789v-1.217zm8.75 2.872c-.31.118-.627.206-.953.263a5.845 5.845 0 01-1.009.085c-1.084 0-1.92-.294-2.505-.882-.586-.588-.878-1.447-.878-2.577 0-.542.084-1.034.253-1.476.168-.442.405-.82.71-1.135.306-.315.67-.557 1.094-.728.424-.171.891-.257 1.402-.257.355 0 .688.026.998.076.31.05.606.132.888.246v1.135a3.77 3.77 0 00-.905-.339 4.248 4.248 0 00-.954-.106c-.305 0-.594.058-.865.174-.27.117-.51.284-.714.503a2.38 2.38 0 00-.485.8c-.119.314-.178.67-.178 1.066 0 .83.201 1.45.605 1.863.403.412.962.619 1.678.619a3.897 3.897 0 001.818-.438v1.108zm8.538.252h-1.633l-3.2-3.677v3.677h-1.189v-9.659h1.19v5.934l3.082-3.138h1.573l-3.22 3.165 3.397 3.698zm5.066-9.659l-.198 3.206h-1.176l-.192-3.206h1.566z"/><path id="," fill="#7E7C7B" d="M139.07 334.3c.233.009.458-.012.677-.062a2.02 2.02 0 00.578-.222c.166-.098.3-.22.4-.366a.86.86 0 00.15-.499.95.95 0 00-.1-.464 2.238 2.238 0 00-.221-.329 2.438 2.438 0 01-.222-.32.91.91 0 01-.1-.459.915.915 0 01.223-.588.857.857 0 01.287-.212 1.12 1.12 0 01.875.017c.148.066.278.168.39.305.111.136.2.307.266.512.066.205.1.447.1.725 0 .378-.07.742-.21 1.09a2.657 2.657 0 01-.621.926c-.276.27-.62.484-1.033.643-.412.16-.892.24-1.439.24v-.937z"/><path id="salary" fill="#181717" d="M51.604 348.025a1.634 1.634 0 01-.458 1.16 2.084 2.084 0 01-.492.378 3.272 3.272 0 01-.598.26c-.212.069-.43.119-.653.15a4.638 4.638 0 01-.656.048 12.3 12.3 0 01-1.282-.061 8.646 8.646 0 01-1.145-.198v-1.094c.401.114.8.2 1.197.26.396.059.79.089 1.182.089.57 0 .991-.078 1.265-.233.273-.155.41-.376.41-.663a.812.812 0 00-.065-.331.753.753 0 00-.236-.28 2.254 2.254 0 00-.53-.278 11.81 11.81 0 00-.98-.328 6.963 6.963 0 01-.858-.31 2.877 2.877 0 01-.68-.414 1.776 1.776 0 01-.452-.56 1.649 1.649 0 01-.164-.76 1.744 1.744 0 01.588-1.264c.214-.196.504-.36.868-.49.365-.129.82-.194 1.367-.194.27 0 .568.015.896.045.328.03.67.08 1.025.153v1.06a9.803 9.803 0 00-1.063-.202 6.926 6.926 0 00-.871-.065c-.296 0-.546.023-.749.069a1.553 1.553 0 00-.492.188.734.734 0 00-.27.28.748.748 0 00-.082.345c0 .123.024.235.072.335.048.1.136.197.266.29.13.094.311.187.544.28.232.094.535.196.909.305.406.119.747.243 1.025.373.278.13.504.274.677.434.173.16.298.34.373.54.075.2.112.428.112.683zm6.672 1.873l-.027-.922c-.374.369-.753.635-1.138.8-.385.163-.79.245-1.214.245-.391 0-.726-.05-1.004-.15a1.883 1.883 0 01-.687-.413 1.603 1.603 0 01-.397-.62 2.289 2.289 0 01-.126-.772c0-.688.256-1.227.769-1.616.512-.39 1.27-.585 2.273-.585h1.421v-.601c0-.406-.13-.73-.39-.974-.259-.244-.655-.366-1.189-.366-.387 0-.769.043-1.145.13-.376.086-.764.21-1.165.369v-1.073a7.36 7.36 0 011.087-.301 7.6 7.6 0 01.642-.1c.224-.024.45-.037.677-.037.415 0 .788.046 1.121.137.333.091.614.23.844.417.23.187.407.421.53.704.123.282.185.615.185.998v4.73h-1.067zm-.13-3.124h-1.51c-.296 0-.552.03-.766.09-.214.059-.39.143-.526.252-.137.11-.238.24-.304.393-.067.153-.1.325-.1.516 0 .133.02.259.062.38.041.12.107.228.198.321.091.093.21.168.356.222.145.055.323.082.533.082.273 0 .587-.083.94-.25.353-.166.726-.429 1.117-.789v-1.217zm5.756-5.557h-2.03v-.978h3.233v8.668h2.044v.991h-5.503v-.99h2.256v-7.691zm9.769 8.681l-.027-.922c-.374.369-.754.635-1.139.8-.385.163-.79.245-1.213.245-.392 0-.727-.05-1.005-.15a1.883 1.883 0 01-.687-.413 1.603 1.603 0 01-.396-.62 2.289 2.289 0 01-.127-.772c0-.688.256-1.227.77-1.616.512-.39 1.27-.585 2.272-.585h1.422v-.601c0-.406-.13-.73-.39-.974s-.656-.366-1.19-.366c-.386 0-.768.043-1.144.13-.376.086-.765.21-1.166.369v-1.073a7.36 7.36 0 011.087-.301 7.6 7.6 0 01.643-.1c.223-.024.449-.037.677-.037.414 0 .788.046 1.12.137.333.091.615.23.845.417.23.187.407.421.53.704.123.282.184.615.184.998v4.73h-1.066zm-.13-3.124h-1.51c-.297 0-.552.03-.766.09-.215.059-.39.143-.527.252-.136.11-.238.24-.304.393-.066.153-.099.325-.099.516 0 .133.02.259.061.38.042.12.108.228.199.321.09.093.21.168.355.222.146.055.324.082.533.082.274 0 .587-.083.94-.25.354-.166.726-.429 1.118-.789v-1.217zm3.698-3.739h1.087l.034 1.265c.406-.488.806-.841 1.2-1.06a2.436 2.436 0 011.193-.328c.71 0 1.25.23 1.617.69.366.46.536 1.144.509 2.051h-1.203c.013-.601-.074-1.038-.263-1.309-.19-.27-.466-.406-.831-.406-.16 0-.32.028-.482.085a1.947 1.947 0 00-.499.273 4.47 4.47 0 00-.543.482 8.898 8.898 0 00-.616.711v4.41H77.24v-6.864zm13.522 0l-2.338 6.139a12.037 12.037 0 01-.749 1.613 4.784 4.784 0 01-.844 1.11c-.305.29-.64.503-1.005.64a3.463 3.463 0 01-1.223.205 6.811 6.811 0 01-.636-.027v-1.08c.1.013.21.026.328.037.118.012.244.017.376.017.219 0 .423-.031.612-.095s.368-.168.536-.311c.169-.144.33-.33.486-.557.155-.228.305-.504.45-.828l-2.74-6.863h1.353l1.737 4.54.348 1.066.397-1.094 1.606-4.512h1.306z"/><path id=":" fill="#7E7C7B" d="M95.108 342.912c.142 0 .276.029.404.086a1.107 1.107 0 01.564.564.978.978 0 01.085.403.971.971 0 01-.085.407 1.12 1.12 0 01-.23.331 1.058 1.058 0 01-.738.308c-.145 0-.281-.028-.406-.082a1.07 1.07 0 01-.557-.557 1.006 1.006 0 01-.082-.407 1.058 1.058 0 01.308-.738 1.12 1.12 0 01.33-.23.971.971 0 01.407-.085zm0 5.01c.142 0 .276.03.404.086a1.107 1.107 0 01.564.564.978.978 0 01.085.404.971.971 0 01-.085.406 1.12 1.12 0 01-.23.332 1.058 1.058 0 01-.738.307c-.145 0-.281-.027-.406-.082a1.07 1.07 0 01-.557-.557 1.006 1.006 0 01-.082-.406 1.058 1.058 0 01.308-.738 1.12 1.12 0 01.33-.23.971.971 0 01.407-.085z"/><path id="1300" fill="#A7333A" d="M113.47 349.898h-5.613v-1.107h2.297v-6.521l-2.14 1.162-.437-1.012 2.844-1.497h1.053v7.868h1.996v1.107zm7.601-2.713c0 .391-.08.76-.239 1.104-.16.344-.399.644-.718.902-.319.257-.72.46-1.203.608-.483.148-1.046.222-1.688.222a12.014 12.014 0 01-1.75-.123v-1.066a11.124 11.124 0 001.86.157c.446 0 .827-.04 1.144-.12.317-.08.575-.194.776-.345.2-.15.346-.332.437-.546.092-.215.137-.456.137-.725 0-.246-.055-.46-.164-.643a1.365 1.365 0 00-.461-.458 2.281 2.281 0 00-.711-.277 4.16 4.16 0 00-.906-.092h-1.019v-.977h1.033c.269 0 .513-.036.734-.106.222-.07.41-.172.568-.304.157-.133.278-.296.362-.49.084-.193.127-.413.127-.659 0-.478-.146-.827-.438-1.046-.292-.219-.72-.328-1.285-.328-.3 0-.61.03-.93.089-.319.06-.66.148-1.025.267v-1.04c.155-.054.32-.103.496-.147a7.2 7.2 0 011.049-.177c.173-.016.34-.024.499-.024.474 0 .89.051 1.25.154.36.102.662.25.903.44.242.192.424.424.547.698.123.273.185.58.185.923 0 .51-.131.938-.393 1.285-.262.346-.621.622-1.077.827.232.036.461.11.687.219.225.11.428.25.608.42.18.171.326.373.438.605.111.233.167.49.167.773zm8.074-1.75c0 .683-.069 1.306-.206 1.87a4.33 4.33 0 01-.622 1.448 2.925 2.925 0 01-1.035.937c-.413.221-.897.331-1.453.331-.478 0-.914-.09-1.306-.27a2.594 2.594 0 01-1.004-.83c-.278-.374-.493-.85-.643-1.429-.15-.579-.226-1.264-.226-2.057 0-.684.07-1.308.209-1.873.139-.566.346-1.05.622-1.453s.62-.716 1.036-.937c.414-.22.897-.331 1.449-.331.478 0 .914.09 1.305.27.392.18.727.458 1.005.834.278.376.493.853.643 1.432.15.579.226 1.265.226 2.058zm-1.204.04c0-.154-.005-.308-.017-.46a23.67 23.67 0 00-.037-.449l-3.78 2.81c.068.237.154.456.26.656.104.2.23.373.379.516.148.144.316.256.505.335.19.08.405.12.646.12.31 0 .592-.075.845-.226.253-.15.468-.373.646-.67.177-.296.314-.664.41-1.104.096-.44.143-.949.143-1.527zm-4.087-.081c0 .14 0 .282.003.423.002.142.01.278.024.41l3.78-2.795a3.198 3.198 0 00-.26-.636 2.016 2.016 0 00-.376-.496 1.612 1.612 0 00-.499-.324 1.628 1.628 0 00-.629-.117c-.31 0-.59.076-.844.226-.253.15-.468.375-.646.673a3.697 3.697 0 00-.41 1.108 7.24 7.24 0 00-.143 1.528zm12.988.04c0 .684-.069 1.307-.205 1.87a4.33 4.33 0 01-.622 1.45 2.925 2.925 0 01-1.036.936c-.412.221-.897.331-1.453.331-.478 0-.913-.09-1.305-.27a2.594 2.594 0 01-1.005-.83c-.278-.374-.492-.85-.643-1.429-.15-.579-.225-1.264-.225-2.057 0-.684.07-1.308.208-1.873.14-.566.347-1.05.622-1.453.276-.403.621-.716 1.036-.937.415-.22.898-.331 1.45-.331.478 0 .913.09 1.305.27.392.18.727.458 1.005.834.278.376.492.853.642 1.432.15.579.226 1.265.226 2.058zm-1.203.042c0-.155-.006-.31-.017-.462a23.67 23.67 0 00-.038-.448l-3.78 2.81c.068.237.155.456.26.656.104.2.23.373.379.516.148.144.317.256.506.335.189.08.404.12.646.12.31 0 .591-.075.844-.226.253-.15.468-.373.646-.67.178-.296.314-.664.41-1.104.096-.44.144-.949.144-1.527zm-4.088-.082c0 .14 0 .282.003.423.002.142.01.278.024.41l3.78-2.795a3.198 3.198 0 00-.26-.636 2.016 2.016 0 00-.375-.496 1.612 1.612 0 00-.5-.324 1.628 1.628 0 00-.628-.117c-.31 0-.592.076-.845.226-.252.15-.468.375-.646.673a3.697 3.697 0 00-.41 1.108 7.24 7.24 0 00-.143 1.528z"/><path id="}]}};" fill="#7E7C7B" d="M31.247 357h.506c.88 0 1.533.206 1.962.619.428.412.642 1.038.642 1.876v1.58c0 .223.025.422.076.597.05.176.137.324.263.445.125.12.293.213.502.277.21.063.472.095.786.095h.294v.95h-.294c-.332 0-.605.028-.817.082a1.116 1.116 0 00-.495.25.88.88 0 00-.246.427 2.438 2.438 0 00-.069.615v2.393c0 .383-.045.728-.136 1.036-.091.307-.24.57-.445.786a1.993 1.993 0 01-.806.499c-.333.116-.739.174-1.217.174h-.506v-.957h.41c1.053 0 1.58-.513 1.58-1.538v-2.365c0-1.112.48-1.737 1.442-1.873-.971-.105-1.456-.732-1.456-1.88v-1.566c0-1.043-.522-1.565-1.566-1.565h-.41V357zm11.47 12.701h-3.37v-.957h2.222v-10.787h-2.221V357h3.37v12.701zM15.854 374h.505c.88 0 1.534.206 1.962.619.429.412.643 1.038.643 1.876v1.58c0 .223.025.422.075.597.05.176.138.324.263.445.126.12.293.213.503.277.21.063.471.095.786.095h.294v.95h-.294c-.333 0-.605.028-.817.082a1.116 1.116 0 00-.496.25.88.88 0 00-.246.427 2.438 2.438 0 00-.068.615v2.393c0 .383-.046.728-.137 1.036-.091.307-.24.57-.444.786a1.993 1.993 0 01-.807.499c-.332.116-.738.174-1.217.174h-.505v-.957h.41c1.052 0 1.579-.513 1.579-1.538v-2.365c0-1.112.48-1.737 1.442-1.873-.97-.105-1.456-.732-1.456-1.88v-1.566c0-1.043-.522-1.565-1.565-1.565h-.41V374zM.458 391h.506c.88 0 1.533.206 1.962.619.428.412.642 1.038.642 1.876v1.58c0 .223.025.422.076.597.05.176.137.324.263.445.125.12.293.213.502.277.21.063.472.095.786.095h.294v.95h-.294c-.332 0-.605.028-.817.082a1.116 1.116 0 00-.495.25.88.88 0 00-.246.427 2.438 2.438 0 00-.069.615v2.393c0 .383-.045.728-.136 1.036-.092.307-.24.57-.445.786a1.993 1.993 0 01-.806.499c-.333.116-.739.174-1.217.174H.458v-.957h.41c1.053 0 1.58-.513 1.58-1.538v-2.365c0-1.112.48-1.737 1.442-1.873-.971-.105-1.456-.732-1.456-1.88v-1.566c0-1.043-.522-1.565-1.566-1.565h-.41V391zm7.84 11.3c.233.009.459-.012.678-.062a2.02 2.02 0 00.577-.222c.167-.098.3-.22.4-.366a.86.86 0 00.15-.499.95.95 0 00-.099-.464 2.238 2.238 0 00-.222-.329 2.438 2.438 0 01-.222-.32.91.91 0 01-.1-.459.915.915 0 01.223-.588.857.857 0 01.287-.212 1.12 1.12 0 01.875.017c.148.066.278.168.39.305.112.136.2.307.266.512.067.205.1.447.1.725 0 .378-.07.742-.209 1.09a2.657 2.657 0 01-.622.926c-.276.27-.62.484-1.032.643-.413.16-.892.24-1.44.24v-.937zm2.14-8.388c.142 0 .276.029.404.086a1.107 1.107 0 01.564.564.978.978 0 01.085.403.971.971 0 01-.085.407 1.12 1.12 0 01-.23.331 1.058 1.058 0 01-.738.308c-.145 0-.28-.028-.406-.082a1.07 1.07 0 01-.557-.557 1.006 1.006 0 01-.082-.407 1.058 1.058 0 01.308-.738 1.12 1.12 0 01.33-.23.971.971 0 01.407-.085z"/></g><g id="Group-5" stroke="#C06334" stroke-linecap="square" transform="matrix(-1 0 0 1 105 37)"><path id="Line" d="M.589 1.244h13.948"/><path id="Line-Copy" d="M.589 110.756h13.948"/><path id="Line-Copy-2" d="M15.508 1.244v109.512"/></g><g id="Group-5-Copy-4" stroke="#C06334" stroke-linecap="square" transform="matrix(-1 0 0 1 105 168)"><path id="Line" d="M.589 2.811h13.948"/><path id="Line-Copy" d="M.589 250.189h13.948"/><path id="Line-Copy-2" d="M15.508 2.811v247.378"/></g><g id="Group-5-Copy-3" stroke="#C06334" stroke-linecap="square" transform="matrix(-1 0 0 1 38 9)"><path id="Line" d="M.589 4.722h13.948"/><path id="Line-Copy" d="M.589 420.278h13.948"/><path id="Line-Copy-2" d="M15.508 4.722v415.556"/></g><g id="Group-5-Copy" stroke="#C06334" stroke-linecap="square" transform="matrix(-1 0 0 1 153 189)"><path id="Line" d="M.589 1.244h13.948"/><path id="Line-Copy" d="M.589 110.756h13.948"/><path id="Line-Copy-2" d="M15.508 1.244v109.512"/></g><g id="Group-5-Copy-2" stroke="#C06334" stroke-linecap="square" transform="matrix(-1 0 0 1 153 315)"><path id="Line" d="M.589.844h13.948"/><path id="Line-Copy" d="M.589 75.156h13.948"/><path id="Line-Copy-2" d="M15.508.844v74.312"/></g><path id="Line-Copy-7" fill="#C06334" fill-rule="nonzero" d="M71.5 213.5l-.344 15.649-5.307-2.801-31.465 59.619-.466.884-1.77-.933.468-.885 31.464-59.619-5.305-2.8L71.5 213.5z" transform="matrix(1 0 0 -1 0 499)"/><path id="Line-Copy-8" fill="#C06334" fill-rule="nonzero" d="M129.5 323.5l-5.848 14.519-3.976-4.494-15.513 13.724-.75.663-1.325-1.498.75-.663 15.513-13.724-3.975-4.494L129.5 323.5z" transform="matrix(1 0 0 -1 0 670)"/><path id="Line-Copy-9" fill="#C06334" fill-rule="nonzero" d="M129.5 239.5l-5.848 14.519-3.976-4.494-15.513 13.724-.75.663-1.325-1.498.75-.663 15.513-13.724-3.975-4.494L129.5 239.5z"/><path id="Line" fill="#C06334" fill-rule="nonzero" d="M71.5 110.5l-.344 15.649-5.307-2.801-31.465 59.619-.466.884-1.77-.933.468-.885 31.464-59.619-5.305-2.8L71.5 110.5z"/></g></g></svg> +>>>>>>> 540d753e90789205fc6e75c502f68382c87dea9b diff --git a/1-js/06-advanced-functions/02-rest-parameters-spread-operator/article.md b/1-js/06-advanced-functions/02-rest-parameters-spread/article.md similarity index 68% rename from 1-js/06-advanced-functions/02-rest-parameters-spread-operator/article.md rename to 1-js/06-advanced-functions/02-rest-parameters-spread/article.md index a98d8eddd..dbdfbd6c0 100644 --- a/1-js/06-advanced-functions/02-rest-parameters-spread-operator/article.md +++ b/1-js/06-advanced-functions/02-rest-parameters-spread/article.md @@ -1,4 +1,4 @@ -# Rest parameters and spread operator +# Rest parameters and spread syntax Many JavaScript built-in functions support an arbitrary number of arguments. @@ -8,7 +8,7 @@ For instance: - `Object.assign(dest, src1, ..., srcN)` -- copies properties from `src1..N` into `dest`. - ...and so on. -In this chapter we'll learn how to do the same. And, more importantly, how to feel comfortable working with such functions and arrays. +In this chapter we'll learn how to do the same. And also, how to pass arrays to such functions as parameters. ## Rest parameters `...` @@ -23,9 +23,9 @@ function sum(a, b) { alert( sum(1, 2, 3, 4, 5) ); ``` -There will be no error because of "excessive" arguments. But of course in the result only the first two will be counted. +There will be no error because of "excessive" arguments. But of course in the result only the first two will be counted, so the result in the code above is `3`. -The rest parameters can be mentioned in a function definition with three dots `...`. They literally mean "gather the remaining parameters into an array". +The rest of the parameters can be included in the function definition by using three dots `...` followed by the name of the array that will contain them. The dots literally mean "gather the remaining parameters into an array". For instance, to gather all arguments into array `args`: @@ -96,9 +96,7 @@ showName("Julius", "Caesar"); showName("Ilya"); ``` -In old times, rest parameters did not exist in the language, and using `arguments` was the only way to get all arguments of the function, no matter their total number. - -And it still works, we can use it today. +In old times, rest parameters did not exist in the language, and using `arguments` was the only way to get all arguments of the function. And it still works, we can find it in the old code. But the downside is that although `arguments` is both array-like and iterable, it's not an array. It does not support array methods, so we can't call `arguments.map(...)` for example. @@ -119,11 +117,12 @@ function f() { f(1); // 1 ``` -```` As we remember, arrow functions don't have their own `this`. Now we know they don't have the special `arguments` object either. +```` + -## Spread operator [#spread-operator] +## Spread syntax [#spread-syntax] We've just seen how to get an array from the list of parameters. @@ -149,7 +148,7 @@ alert( Math.max(arr) ); // NaN And surely we can't manually list items in the code `Math.max(arr[0], arr[1], arr[2])`, because we may be unsure how many there are. As our script executes, there could be a lot, or there could be none. And that would get ugly. -*Spread operator* to the rescue! It looks similar to rest parameters, also using `...`, but does quite the opposite. +*Spread syntax* to the rescue! It looks similar to rest parameters, also using `...`, but does quite the opposite. When `...arr` is used in the function call, it "expands" an iterable object `arr` into the list of arguments. @@ -170,7 +169,7 @@ let arr2 = [8, 3, -8, 1]; alert( Math.max(...arr1, ...arr2) ); // 8 ``` -We can even combine the spread operator with normal values: +We can even combine the spread syntax with normal values: ```js run @@ -180,7 +179,7 @@ let arr2 = [8, 3, -8, 1]; alert( Math.max(1, ...arr1, 2, ...arr2, 25) ); // 25 ``` -Also, the spread operator can be used to merge arrays: +Also, the spread syntax can be used to merge arrays: ```js run let arr = [3, 5, 1]; @@ -193,9 +192,9 @@ let merged = [0, ...arr, 2, ...arr2]; alert(merged); // 0,3,5,1,2,8,9,15 (0, then arr, then 2, then arr2) ``` -In the examples above we used an array to demonstrate the spread operator, but any iterable will do. +In the examples above we used an array to demonstrate the spread syntax, but any iterable will do. -For instance, here we use the spread operator to turn the string into array of characters: +For instance, here we use the spread syntax to turn the string into array of characters: ```js run let str = "Hello"; @@ -203,7 +202,7 @@ let str = "Hello"; alert( [...str] ); // H,e,l,l,o ``` -The spread operator internally uses iterators to gather elements, the same way as `for..of` does. +The spread syntax internally uses iterators to gather elements, the same way as `for..of` does. So, for a string, `for..of` returns characters and `...str` becomes `"H","e","l","l","o"`. The list of characters is passed to array initializer `[...str]`. @@ -221,24 +220,75 @@ The result is the same as `[...str]`. But there's a subtle difference between `Array.from(obj)` and `[...obj]`: - `Array.from` operates on both array-likes and iterables. -- The spread operator operates only on iterables. +- The spread syntax works only with iterables. So, for the task of turning something into an array, `Array.from` tends to be more universal. +## Copy an array/object + +Remember when we talked about `Object.assign()` [in the past](info:object-copy#cloning-and-merging-object-assign)? + +It is possible to do the same thing with the spread syntax. + +```js run +let arr = [1, 2, 3]; + +*!* +let arrCopy = [...arr]; // spread the array into a list of parameters + // then put the result into a new array +*/!* + +// do the arrays have the same contents? +alert(JSON.stringify(arr) === JSON.stringify(arrCopy)); // true + +// are the arrays equal? +alert(arr === arrCopy); // false (not same reference) + +// modifying our initial array does not modify the copy: +arr.push(4); +alert(arr); // 1, 2, 3, 4 +alert(arrCopy); // 1, 2, 3 +``` + +Note that it is possible to do the same thing to make a copy of an object: + +```js run +let obj = { a: 1, b: 2, c: 3 }; + +*!* +let objCopy = { ...obj }; // spread the object into a list of parameters + // then return the result in a new object +*/!* + +// do the objects have the same contents? +alert(JSON.stringify(obj) === JSON.stringify(objCopy)); // true + +// are the objects equal? +alert(obj === objCopy); // false (not same reference) + +// modifying our initial object does not modify the copy: +obj.d = 4; +alert(JSON.stringify(obj)); // {"a":1,"b":2,"c":3,"d":4} +alert(JSON.stringify(objCopy)); // {"a":1,"b":2,"c":3} +``` + +This way of copying an object is much shorter than `let objCopy = Object.assign({}, obj)` or for an array `let arrCopy = Object.assign([], arr)` so we prefer to use it whenever we can. + + ## Summary -When we see `"..."` in the code, it is either rest parameters or the spread operator. +When we see `"..."` in the code, it is either rest parameters or the spread syntax. There's an easy way to distinguish between them: - When `...` is at the end of function parameters, it's "rest parameters" and gathers the rest of the list of arguments into an array. -- When `...` occurs in a function call or alike, it's called a "spread operator" and expands an array into a list. +- When `...` occurs in a function call or alike, it's called a "spread syntax" and expands an array into a list. Use patterns: - Rest parameters are used to create functions that accept any number of arguments. -- The spread operator is used to pass an array to functions that normally require a list of many arguments. +- The spread syntax is used to pass an array to functions that normally require a list of many arguments. Together they help to travel between a list and an array of parameters with ease. diff --git a/1-js/06-advanced-functions/03-closure/1-closure-latest-changes/solution.md b/1-js/06-advanced-functions/03-closure/1-closure-latest-changes/solution.md new file mode 100644 index 000000000..7cbd85ab7 --- /dev/null +++ b/1-js/06-advanced-functions/03-closure/1-closure-latest-changes/solution.md @@ -0,0 +1,5 @@ +The answer is: **Pete**. + +A function gets outer variables as they are now, it uses the most recent values. + +Old variable values are not saved anywhere. When a function wants a variable, it takes the current value from its own Lexical Environment or the outer one. diff --git a/1-js/06-advanced-functions/03-closure/1-closure-latest-changes/task.md b/1-js/06-advanced-functions/03-closure/1-closure-latest-changes/task.md new file mode 100644 index 000000000..819189773 --- /dev/null +++ b/1-js/06-advanced-functions/03-closure/1-closure-latest-changes/task.md @@ -0,0 +1,23 @@ +importance: 5 + +--- + +# Does a function pickup latest changes? + +The function sayHi uses an external variable name. When the function runs, which value is it going to use? + +```js +let name = "John"; + +function sayHi() { + alert("Hi, " + name); +} + +name = "Pete"; + +sayHi(); // what will it show: "John" or "Pete"? +``` + +Such situations are common both in browser and server-side development. A function may be scheduled to execute later than it is created, for instance after a user action or a network request. + +So, the question is: does it pick up the latest changes? diff --git a/1-js/06-advanced-functions/03-closure/8-make-army/_js.view/solution.js b/1-js/06-advanced-functions/03-closure/10-make-army/_js.view/solution.js similarity index 100% rename from 1-js/06-advanced-functions/03-closure/8-make-army/_js.view/solution.js rename to 1-js/06-advanced-functions/03-closure/10-make-army/_js.view/solution.js diff --git a/1-js/06-advanced-functions/03-closure/8-make-army/_js.view/source.js b/1-js/06-advanced-functions/03-closure/10-make-army/_js.view/source.js similarity index 100% rename from 1-js/06-advanced-functions/03-closure/8-make-army/_js.view/source.js rename to 1-js/06-advanced-functions/03-closure/10-make-army/_js.view/source.js diff --git a/1-js/06-advanced-functions/03-closure/8-make-army/_js.view/test.js b/1-js/06-advanced-functions/03-closure/10-make-army/_js.view/test.js similarity index 100% rename from 1-js/06-advanced-functions/03-closure/8-make-army/_js.view/test.js rename to 1-js/06-advanced-functions/03-closure/10-make-army/_js.view/test.js diff --git a/1-js/06-advanced-functions/03-closure/10-make-army/lexenv-makearmy-empty.svg b/1-js/06-advanced-functions/03-closure/10-make-army/lexenv-makearmy-empty.svg new file mode 100644 index 000000000..f8c7bd6ac --- /dev/null +++ b/1-js/06-advanced-functions/03-closure/10-make-army/lexenv-makearmy-empty.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" width="566" height="183" viewBox="0 0 566 183"><defs><style>@import url(https://fonts.googleapis.com/css?family=Open+Sans:bold,italic,bolditalic%7CPT+Mono);@font-face{font-family:'PT Mono';font-weight:700;font-style:normal;src:local('PT MonoBold'),url(/font/PTMonoBold.woff2) format('woff2'),url(/font/PTMonoBold.woff) format('woff'),url(/font/PTMonoBold.ttf) format('truetype')}</style></defs><g id="closure" fill="none" fill-rule="evenodd" stroke="none" stroke-width="1"><g id="lexenv-makearmy-empty.svg"><g id="shooters-=-[" fill-rule="nonzero" transform="translate(6.176 15.2)"><path id="shooters" fill="#181717" d="M4.956 7.91a.796.796 0 00-.35-.693 2.872 2.872 0 00-.868-.392 16.056 16.056 0 00-1.127-.273 6.502 6.502 0 01-1.127-.336 2.525 2.525 0 01-.868-.567c-.233-.238-.35-.572-.35-1.001 0-.355.077-.658.231-.91a1.94 1.94 0 01.609-.623c.252-.163.546-.285.882-.364.336-.08.686-.119 1.05-.119.653 0 1.216.082 1.687.245.471.163.847.334 1.127.511l-.448.882a11.79 11.79 0 00-1.001-.483c-.36-.154-.81-.231-1.351-.231-.205 0-.408.021-.609.063-.2.042-.383.105-.546.189a1.088 1.088 0 00-.392.329.825.825 0 00-.147.497c0 .243.117.43.35.56.233.13.523.24.868.329.345.089.721.173 1.127.252.406.08.782.194 1.127.343.345.15.635.35.868.602.233.252.35.593.35 1.022 0 .644-.254 1.176-.763 1.596-.509.42-1.272.63-2.289.63-.308 0-.611-.028-.91-.084a5.52 5.52 0 01-.84-.224 5.054 5.054 0 01-.714-.315A3.002 3.002 0 010 8.988l.56-.91c.112.112.261.226.448.343a4.229 4.229 0 001.337.539 3.76 3.76 0 001.484.021c.22-.042.413-.107.581-.196a1.08 1.08 0 00.399-.35.914.914 0 00.147-.525zM7.28 0h2.184v3.668h.07c.29-.327.625-.581 1.008-.763.383-.182.859-.273 1.428-.273.448 0 .838.047 1.169.14.331.093.602.257.812.49.21.233.366.553.469.959.103.406.154.922.154 1.547V9.8h-1.092V5.978c0-.401-.023-.751-.07-1.05a1.829 1.829 0 00-.273-.749c-.135-.2-.32-.352-.553-.455-.233-.103-.532-.154-.896-.154-.252 0-.5.044-.742.133-.243.089-.464.21-.665.364-.2.154-.373.34-.518.56-.145.22-.245.46-.301.721V9.8H8.386V.938H7.28V0zm9.142 6.3c0-1.13.294-2.023.882-2.681.588-.658 1.428-.987 2.52-.987.588 0 1.094.096 1.519.287.425.191.777.45 1.057.777.28.327.488.714.623 1.162.135.448.203.929.203 1.442 0 .56-.075 1.066-.224 1.519-.15.453-.369.838-.658 1.155-.29.317-.646.562-1.071.735a3.82 3.82 0 01-1.449.259c-.579 0-1.083-.096-1.512-.287a2.967 2.967 0 01-1.064-.777 3.168 3.168 0 01-.623-1.162 4.963 4.963 0 01-.203-1.442zm1.162 0c0 .327.04.653.119.98.08.327.208.62.385.882.177.261.408.471.693.63.285.159.632.238 1.043.238.747 0 1.309-.231 1.687-.693.378-.462.567-1.141.567-2.037 0-.336-.04-.665-.119-.987a2.608 2.608 0 00-.392-.875 2.066 2.066 0 00-.7-.63c-.285-.159-.632-.238-1.043-.238-.747 0-1.307.229-1.68.686-.373.457-.56 1.139-.56 2.044zm7.238 0c0-1.13.294-2.023.882-2.681.588-.658 1.428-.987 2.52-.987.588 0 1.094.096 1.519.287.425.191.777.45 1.057.777.28.327.488.714.623 1.162.135.448.203.929.203 1.442 0 .56-.075 1.066-.224 1.519-.15.453-.369.838-.658 1.155-.29.317-.646.562-1.071.735a3.82 3.82 0 01-1.449.259c-.579 0-1.083-.096-1.512-.287a2.967 2.967 0 01-1.064-.777 3.168 3.168 0 01-.623-1.162 4.963 4.963 0 01-.203-1.442zm1.162 0c0 .327.04.653.119.98.08.327.208.62.385.882.177.261.408.471.693.63.285.159.632.238 1.043.238.747 0 1.309-.231 1.687-.693.378-.462.567-1.141.567-2.037 0-.336-.04-.665-.119-.987a2.608 2.608 0 00-.392-.875 2.066 2.066 0 00-.7-.63c-.285-.159-.632-.238-1.043-.238-.747 0-1.307.229-1.68.686-.373.457-.56 1.139-.56 2.044zm6.874-3.5h1.666V1.414l1.092-.308V2.8h3.738v.938h-3.738v3.304c0 .681.166 1.185.497 1.512.331.327.805.49 1.421.49.42 0 .786-.08 1.099-.238.313-.159.595-.331.847-.518l.364.826a3.938 3.938 0 01-1.169.63 4.182 4.182 0 01-1.393.238 3.41 3.41 0 01-1.057-.161 2.426 2.426 0 01-.875-.497 2.38 2.38 0 01-.602-.861c-.15-.35-.224-.768-.224-1.253V3.738h-1.666V2.8zM48.23 8.918c-.168.15-.366.29-.595.42a4.39 4.39 0 01-.749.336c-.27.093-.553.166-.847.217-.294.051-.59.077-.889.077-.56 0-1.055-.086-1.484-.259a2.858 2.858 0 01-1.078-.742 3.234 3.234 0 01-.658-1.155 4.767 4.767 0 01-.224-1.512c0-.588.082-1.11.245-1.568.163-.457.399-.84.707-1.148a3.08 3.08 0 011.12-.707 4.187 4.187 0 011.47-.245c.392 0 .78.051 1.162.154.383.103.721.296 1.015.581.294.285.52.677.679 1.176.159.5.215 1.146.168 1.939h-5.418c0 .84.226 1.468.679 1.883.453.415 1.057.623 1.813.623.252 0 .502-.03.749-.091.247-.06.483-.133.707-.217a3.72 3.72 0 00.595-.28c.173-.103.306-.196.399-.28l.434.798zm-2.954-5.362c-.308 0-.6.033-.875.098a1.995 1.995 0 00-.728.329c-.21.154-.383.355-.518.602s-.222.553-.259.917h4.354c-.047-.616-.245-1.094-.595-1.435-.35-.34-.81-.511-1.379-.511zM50.148 9.8v-.938h1.89V3.738h-1.89V2.8h2.618l.224.91h.07c.317-.29.672-.537 1.064-.742.392-.205.859-.308 1.4-.308.317 0 .572.06.763.182.191.121.34.299.448.532.107.233.18.516.217.847.037.331.056.707.056 1.127l-.98.014c0-.597-.058-1.036-.175-1.316-.117-.28-.329-.42-.637-.42-.29 0-.55.042-.784.126a2.565 2.565 0 00-.609.308c-.173.121-.32.243-.441.364s-.21.224-.266.308v4.13h2.688V9.8h-5.656zm13.608-1.89a.796.796 0 00-.35-.693 2.872 2.872 0 00-.868-.392 16.056 16.056 0 00-1.127-.273 6.502 6.502 0 01-1.127-.336 2.525 2.525 0 01-.868-.567c-.233-.238-.35-.572-.35-1.001 0-.355.077-.658.231-.91a1.94 1.94 0 01.609-.623c.252-.163.546-.285.882-.364.336-.08.686-.119 1.05-.119.653 0 1.216.082 1.687.245.471.163.847.334 1.127.511l-.448.882a11.79 11.79 0 00-1.001-.483c-.36-.154-.81-.231-1.351-.231-.205 0-.408.021-.609.063-.2.042-.383.105-.546.189a1.088 1.088 0 00-.392.329.825.825 0 00-.147.497c0 .243.117.43.35.56.233.13.523.24.868.329.345.089.721.173 1.127.252.406.08.782.194 1.127.343.345.15.635.35.868.602.233.252.35.593.35 1.022 0 .644-.254 1.176-.763 1.596-.509.42-1.272.63-2.289.63-.308 0-.611-.028-.91-.084a5.52 5.52 0 01-.84-.224 5.054 5.054 0 01-.714-.315 3.002 3.002 0 01-.532-.357l.56-.91c.112.112.261.226.448.343a4.229 4.229 0 001.337.539 3.76 3.76 0 001.484.021c.22-.042.413-.107.581-.196a1.08 1.08 0 00.399-.35.914.914 0 00.147-.525z"/><path id="=" fill="#DBAF88" d="M75.376 3.402h6.496V4.41h-6.496V3.402zm0 2.296h6.496v1.008h-6.496V5.698z"/><path id="[" fill="#7E7C7B" d="M93.31 0h4.774v.98h-3.682v11.06h3.682v.98H93.31z"/><path id="function" fill="#1C85B5" d="M16.856 33.8v-.938h1.666v-5.124h-1.666V26.8h1.666v-.392c0-.877.229-1.512.686-1.904.457-.392 1.11-.588 1.96-.588.308 0 .583.019.826.056.243.037.504.112.784.224l-.252.91a2.862 2.862 0 00-.7-.203 4.295 4.295 0 00-.616-.049c-.616 0-1.036.152-1.26.455-.224.303-.336.8-.336 1.491h2.898v.938h-2.898v5.124h2.898v.938h-5.656zm12.25-7h1.988v4.774c0 .457.028.896.084 1.316h.938v.91h-1.862l-.042-1.19h-.056a2.938 2.938 0 01-.966.98c-.401.252-.887.378-1.456.378-.43 0-.796-.049-1.099-.147a1.556 1.556 0 01-.749-.511c-.196-.243-.34-.567-.434-.973-.093-.406-.14-.912-.14-1.519v-3.08h-.938V26.8h2.03v3.794c0 .383.016.726.049 1.029.033.303.1.56.203.77.103.21.254.369.455.476.2.107.469.161.805.161.485 0 .908-.159 1.267-.476.36-.317.632-.714.819-1.19v-3.626h-.896V26.8zm4.62 2.45a14.05 14.05 0 00-.063-1.176 4.657 4.657 0 00-.049-.364h-.938v-.91h1.876l.126 1.134h.07c.093-.159.217-.315.371-.469a2.91 2.91 0 011.225-.721c.252-.075.518-.112.798-.112.43 0 .81.047 1.141.14.331.093.607.259.826.497.22.238.385.56.497.966.112.406.168.922.168 1.547V33.8h-1.092v-3.808c0-.775-.126-1.358-.378-1.75-.252-.392-.71-.588-1.372-.588-.243 0-.478.049-.707.147a2.44 2.44 0 00-.623.385c-.187.159-.35.343-.49.553-.14.21-.243.432-.308.665V33.8h-1.078v-4.55zm13.244-1.372a5.531 5.531 0 00-.693-.189 3.61 3.61 0 00-.735-.077c-.915 0-1.596.215-2.044.644-.448.43-.672 1.11-.672 2.044 0 .41.065.777.196 1.099.13.322.317.595.56.819.243.224.534.397.875.518.34.121.716.182 1.127.182.439 0 .866-.075 1.281-.224.415-.15.763-.345 1.043-.588l.49.812c-.13.112-.294.229-.49.35a4.837 4.837 0 01-1.533.602 4.962 4.962 0 01-1.015.098c-.607 0-1.141-.086-1.603-.259a3.045 3.045 0 01-1.155-.742 3.176 3.176 0 01-.7-1.162 4.525 4.525 0 01-.238-1.505c0-.588.082-1.11.245-1.568.163-.457.399-.84.707-1.148a3.08 3.08 0 011.12-.707 4.187 4.187 0 011.47-.245c.69 0 1.253.06 1.687.182.434.121.8.257 1.099.406l-.014.042v1.946H46.97v-1.33zm2.688-1.078h1.666v-1.386l1.092-.308V26.8h3.738v.938h-3.738v3.304c0 .681.166 1.185.497 1.512.331.327.805.49 1.421.49.42 0 .786-.08 1.099-.238.313-.159.595-.331.847-.518l.364.826a3.938 3.938 0 01-1.169.63 4.182 4.182 0 01-1.393.238 3.41 3.41 0 01-1.057-.161 2.426 2.426 0 01-.875-.497 2.38 2.38 0 01-.602-.861c-.15-.35-.224-.768-.224-1.253v-3.472h-1.666V26.8zm9.436 7v-.938h2.436v-5.124h-2.436V26.8h3.556v6.062h2.38v.938h-5.936zm2.058-8.988c0-.252.084-.469.252-.651a.838.838 0 01.644-.273c.27 0 .497.091.679.273a.889.889 0 01.273.651.806.806 0 01-.273.616.963.963 0 01-.679.252.872.872 0 01-.644-.252.838.838 0 01-.252-.616zm5.67 5.488c0-1.13.294-2.023.882-2.681.588-.658 1.428-.987 2.52-.987.588 0 1.094.096 1.519.287.425.191.777.45 1.057.777.28.327.488.714.623 1.162.135.448.203.929.203 1.442 0 .56-.075 1.066-.224 1.519-.15.453-.369.838-.658 1.155-.29.317-.646.562-1.071.735a3.82 3.82 0 01-1.449.259c-.579 0-1.083-.096-1.512-.287a2.967 2.967 0 01-1.064-.777 3.168 3.168 0 01-.623-1.162 4.963 4.963 0 01-.203-1.442zm1.162 0c0 .327.04.653.119.98.08.327.208.62.385.882.177.261.408.471.693.63.285.159.632.238 1.043.238.747 0 1.309-.231 1.687-.693.378-.462.567-1.141.567-2.037 0-.336-.04-.665-.119-.987a2.608 2.608 0 00-.392-.875 2.066 2.066 0 00-.7-.63c-.285-.159-.632-.238-1.043-.238-.747 0-1.307.229-1.68.686-.373.457-.56 1.139-.56 2.044zm7.742-1.05a14.05 14.05 0 00-.063-1.176 4.657 4.657 0 00-.049-.364h-.938v-.91h1.876l.126 1.134h.07c.093-.159.217-.315.371-.469a2.91 2.91 0 011.225-.721c.252-.075.518-.112.798-.112.43 0 .81.047 1.141.14.331.093.607.259.826.497.22.238.385.56.497.966.112.406.168.922.168 1.547V33.8h-1.092v-3.808c0-.775-.126-1.358-.378-1.75-.252-.392-.71-.588-1.372-.588-.243 0-.478.049-.707.147a2.44 2.44 0 00-.623.385c-.187.159-.35.343-.49.553-.14.21-.243.432-.308.665V33.8h-1.078v-4.55z"/><path id="(){" fill="#7E7C7B" d="M97.272 36.768a6.964 6.964 0 01-1.757-.707 5.036 5.036 0 01-1.428-1.225c-.406-.504-.728-1.12-.966-1.848s-.357-1.591-.357-2.59c0-.99.121-1.855.364-2.597s.57-1.372.98-1.89c.41-.518.889-.933 1.435-1.246A6.005 6.005 0 0197.272 24l.35.882a7.086 7.086 0 00-1.512.623 3.928 3.928 0 00-1.183 1.022c-.331.425-.588.952-.77 1.582-.182.63-.273 1.393-.273 2.289 0 .905.11 1.678.329 2.317.22.64.509 1.171.868 1.596.36.425.76.756 1.204.994.443.238.889.404 1.337.497l-.35.966zm4.354-.966a4.965 4.965 0 001.337-.497 4.15 4.15 0 001.204-.994c.36-.425.649-.957.868-1.596.22-.64.329-1.412.329-2.317 0-.896-.091-1.659-.273-2.289-.182-.63-.439-1.157-.77-1.582a3.928 3.928 0 00-1.183-1.022 7.086 7.086 0 00-1.512-.623l.35-.882c.607.13 1.183.352 1.729.665a4.984 4.984 0 011.435 1.246c.41.518.737 1.148.98 1.89s.364 1.608.364 2.597c0 .999-.119 1.862-.357 2.59-.238.728-.56 1.344-.966 1.848a5.036 5.036 0 01-1.428 1.225 6.964 6.964 0 01-1.757.707l-.35-.966zm17.878-2.45c0-.401-.068-.749-.203-1.043a2.44 2.44 0 00-.504-.735c-.2-.196-.415-.34-.644-.434a1.641 1.641 0 00-.609-.14v-.98c.177 0 .38-.04.609-.119.229-.08.443-.21.644-.392.2-.182.369-.418.504-.707.135-.29.203-.649.203-1.078v-1.428c0-.336.054-.644.161-.924a2.22 2.22 0 01.448-.728c.191-.205.42-.366.686-.483.266-.117.558-.175.875-.175h2.03v.98h-1.54c-.588 0-.996.14-1.225.42-.229.28-.343.695-.343 1.246v1.358c0 .383-.07.723-.21 1.022a2.7 2.7 0 01-1.106 1.225c-.205.117-.373.184-.504.203v.084c.121.019.285.091.49.217.205.126.406.299.602.518.196.22.366.478.511.777.145.299.217.63.217.994v1.344c0 .57.121.99.364 1.26s.649.406 1.218.406h1.526v.98h-2.03c-.653 0-1.178-.194-1.575-.581-.397-.387-.595-.959-.595-1.715v-1.372z"/><path id="alert" fill="#181717" d="M134.736 27.346a4.447 4.447 0 011.358-.504 7.423 7.423 0 011.484-.154c.476 0 .866.075 1.169.224.303.15.541.343.714.581.173.238.29.509.35.812.06.303.091.609.091.917 0 .355-.01.733-.028 1.134-.019.401-.033.803-.042 1.204 0 .467.028.91.084 1.33h.938v.91h-1.862l-.126-1.05h-.07c-.056.084-.14.191-.252.322-.112.13-.259.259-.441.385a2.749 2.749 0 01-1.589.469c-.69 0-1.237-.177-1.638-.532-.401-.355-.602-.84-.602-1.456 0-.476.105-.873.315-1.19.21-.317.511-.56.903-.728.392-.168.866-.266 1.421-.294a9.544 9.544 0 011.869.112c.047-.43.054-.786.021-1.071-.033-.285-.107-.511-.224-.679a.938.938 0 00-.49-.357 2.482 2.482 0 00-.777-.105c-.42 0-.821.058-1.204.175-.383.117-.723.236-1.022.357l-.35-.812zm2.058 5.642c.261 0 .504-.042.728-.126a2.22 2.22 0 00.588-.322 2.133 2.133 0 00.672-.868v-.98a7.92 7.92 0 00-1.344-.126c-.41 0-.765.044-1.064.133-.299.089-.532.226-.7.413-.168.187-.252.43-.252.728 0 .308.105.576.315.805.21.229.562.343 1.057.343zM143.29 24h2.324v7.448c0 .57.096.97.287 1.204.191.233.474.35.847.35.261 0 .511-.047.749-.14.238-.093.502-.252.791-.476l.504.77c-.15.13-.313.247-.49.35a3.638 3.638 0 01-1.106.42 2.963 2.963 0 01-1.442-.077 1.579 1.579 0 01-.679-.427 1.897 1.897 0 01-.413-.777c-.093-.322-.14-.721-.14-1.197v-6.51h-1.232V24zm14.14 8.918c-.168.15-.366.29-.595.42a4.39 4.39 0 01-.749.336c-.27.093-.553.166-.847.217-.294.051-.59.077-.889.077-.56 0-1.055-.086-1.484-.259a2.858 2.858 0 01-1.078-.742 3.234 3.234 0 01-.658-1.155 4.767 4.767 0 01-.224-1.512c0-.588.082-1.11.245-1.568.163-.457.399-.84.707-1.148a3.08 3.08 0 011.12-.707 4.187 4.187 0 011.47-.245c.392 0 .78.051 1.162.154.383.103.721.296 1.015.581.294.285.52.677.679 1.176.159.5.215 1.146.168 1.939h-5.418c0 .84.226 1.468.679 1.883.453.415 1.057.623 1.813.623.252 0 .502-.03.749-.091.247-.06.483-.133.707-.217a3.72 3.72 0 00.595-.28c.173-.103.306-.196.399-.28l.434.798zm-2.954-5.362c-.308 0-.6.033-.875.098a1.995 1.995 0 00-.728.329c-.21.154-.383.355-.518.602s-.222.553-.259.917h4.354c-.047-.616-.245-1.094-.595-1.435-.35-.34-.81-.511-1.379-.511zm4.872 6.244v-.938h1.89v-5.124h-1.89V26.8h2.618l.224.91h.07c.317-.29.672-.537 1.064-.742.392-.205.859-.308 1.4-.308.317 0 .572.06.763.182.191.121.34.299.448.532.107.233.18.516.217.847.037.331.056.707.056 1.127l-.98.014c0-.597-.058-1.036-.175-1.316-.117-.28-.329-.42-.637-.42-.29 0-.55.042-.784.126a2.565 2.565 0 00-.609.308c-.173.121-.32.243-.441.364s-.21.224-.266.308v4.13h2.688v.938h-5.656zm7.91-7h1.666v-1.386l1.092-.308V26.8h3.738v.938h-3.738v3.304c0 .681.166 1.185.497 1.512.331.327.805.49 1.421.49.42 0 .786-.08 1.099-.238.313-.159.595-.331.847-.518l.364.826a3.938 3.938 0 01-1.169.63 4.182 4.182 0 01-1.393.238 3.41 3.41 0 01-1.057-.161 2.426 2.426 0 01-.875-.497 2.38 2.38 0 01-.602-.861c-.15-.35-.224-.768-.224-1.253v-3.472h-1.666V26.8z"/><path id="(" fill="#7E7C7B" d="M181.272 36.768a6.964 6.964 0 01-1.757-.707 5.036 5.036 0 01-1.428-1.225c-.406-.504-.728-1.12-.966-1.848s-.357-1.591-.357-2.59c0-.99.121-1.855.364-2.597s.57-1.372.98-1.89c.41-.518.889-.933 1.435-1.246a6.005 6.005 0 011.729-.665l.35.882a7.086 7.086 0 00-1.512.623 3.928 3.928 0 00-1.183 1.022c-.331.425-.588.952-.77 1.582-.182.63-.273 1.393-.273 2.289 0 .905.11 1.678.329 2.317.22.64.509 1.171.868 1.596.36.425.76.756 1.204.994.443.238.889.404 1.337.497l-.35.966z"/><path id="i" fill="#181717" d="M185.094 33.8v-.938h2.436v-5.124h-2.436V26.8h3.556v6.062h2.38v.938h-5.936zm2.058-8.988c0-.252.084-.469.252-.651a.838.838 0 01.644-.273c.27 0 .497.091.679.273a.889.889 0 01.273.651.806.806 0 01-.273.616.963.963 0 01-.679.252.872.872 0 01-.644-.252.838.838 0 01-.252-.616z"/><path id=");}," fill="#7E7C7B" d="M194.026 35.802a4.965 4.965 0 001.337-.497 4.15 4.15 0 001.204-.994c.36-.425.649-.957.868-1.596.22-.64.329-1.412.329-2.317 0-.896-.091-1.659-.273-2.289-.182-.63-.439-1.157-.77-1.582a3.928 3.928 0 00-1.183-1.022 7.086 7.086 0 00-1.512-.623l.35-.882c.607.13 1.183.352 1.729.665a4.984 4.984 0 011.435 1.246c.41.518.737 1.148.98 1.89s.364 1.608.364 2.597c0 .999-.119 1.862-.357 2.59-.238.728-.56 1.344-.966 1.848a5.036 5.036 0 01-1.428 1.225 6.964 6.964 0 01-1.757.707l-.35-.966zm9.604-2.772c0-.28.091-.506.273-.679.182-.173.418-.259.707-.259.355 0 .63.124.826.371.196.247.294.595.294 1.043a2.36 2.36 0 01-.637 1.659 2.465 2.465 0 01-.588.462c-.21.117-.404.203-.581.259l-.35-.546c.336-.13.625-.317.868-.56.243-.243.364-.537.364-.882-.13.028-.233.042-.308.042-.27 0-.483-.077-.637-.231-.154-.154-.231-.38-.231-.679zm.126-5.502c0-.299.084-.53.252-.693.168-.163.392-.245.672-.245.299 0 .532.082.7.245.168.163.252.394.252.693 0 .27-.084.495-.252.672-.168.177-.401.266-.7.266-.28 0-.504-.089-.672-.266a.938.938 0 01-.252-.672zm18.788 7.196c0 .756-.198 1.328-.595 1.715-.397.387-.922.581-1.575.581h-2.03v-.98h1.526c.57 0 .975-.135 1.218-.406.243-.27.364-.69.364-1.26V33.03c0-.364.07-.695.21-.994.14-.299.308-.558.504-.777.196-.22.397-.392.602-.518.205-.126.373-.198.504-.217v-.084c-.13-.019-.299-.086-.504-.203a2.7 2.7 0 01-1.106-1.225c-.14-.299-.21-.64-.21-1.022v-1.358c0-.55-.114-.966-.343-1.246-.229-.28-.637-.42-1.225-.42h-1.54v-.98h2.03c.317 0 .609.058.875.175.266.117.495.278.686.483.191.205.34.448.448.728.107.28.161.588.161.924v1.428c0 .43.068.789.203 1.078.135.29.303.525.504.707.2.182.415.313.644.392.229.08.432.119.609.119V31c-.177 0-.38.047-.609.14a2.011 2.011 0 00-.644.434 2.44 2.44 0 00-.504.735c-.135.294-.203.642-.203 1.043v1.372zm6.286-1.694c0-.28.091-.506.273-.679.182-.173.418-.259.707-.259.355 0 .63.124.826.371.196.247.294.595.294 1.043a2.36 2.36 0 01-.637 1.659 2.465 2.465 0 01-.588.462c-.21.117-.404.203-.581.259l-.35-.546c.336-.13.625-.317.868-.56.243-.243.364-.537.364-.882-.13.028-.233.042-.308.042-.27 0-.483-.077-.637-.231-.154-.154-.231-.38-.231-.679z"/><path id="function" fill="#1C85B5" d="M16.856 57.8v-.938h1.666v-5.124h-1.666V50.8h1.666v-.392c0-.877.229-1.512.686-1.904.457-.392 1.11-.588 1.96-.588.308 0 .583.019.826.056.243.037.504.112.784.224l-.252.91a2.862 2.862 0 00-.7-.203 4.295 4.295 0 00-.616-.049c-.616 0-1.036.152-1.26.455-.224.303-.336.8-.336 1.491h2.898v.938h-2.898v5.124h2.898v.938h-5.656zm12.25-7h1.988v4.774c0 .457.028.896.084 1.316h.938v.91h-1.862l-.042-1.19h-.056a2.938 2.938 0 01-.966.98c-.401.252-.887.378-1.456.378-.43 0-.796-.049-1.099-.147a1.556 1.556 0 01-.749-.511c-.196-.243-.34-.567-.434-.973-.093-.406-.14-.912-.14-1.519v-3.08h-.938V50.8h2.03v3.794c0 .383.016.726.049 1.029.033.303.1.56.203.77.103.21.254.369.455.476.2.107.469.161.805.161.485 0 .908-.159 1.267-.476.36-.317.632-.714.819-1.19v-3.626h-.896V50.8zm4.62 2.45a14.05 14.05 0 00-.063-1.176 4.657 4.657 0 00-.049-.364h-.938v-.91h1.876l.126 1.134h.07c.093-.159.217-.315.371-.469a2.91 2.91 0 011.225-.721c.252-.075.518-.112.798-.112.43 0 .81.047 1.141.14.331.093.607.259.826.497.22.238.385.56.497.966.112.406.168.922.168 1.547V57.8h-1.092v-3.808c0-.775-.126-1.358-.378-1.75-.252-.392-.71-.588-1.372-.588-.243 0-.478.049-.707.147a2.44 2.44 0 00-.623.385c-.187.159-.35.343-.49.553-.14.21-.243.432-.308.665V57.8h-1.078v-4.55zm13.244-1.372a5.531 5.531 0 00-.693-.189 3.61 3.61 0 00-.735-.077c-.915 0-1.596.215-2.044.644-.448.43-.672 1.11-.672 2.044 0 .41.065.777.196 1.099.13.322.317.595.56.819.243.224.534.397.875.518.34.121.716.182 1.127.182.439 0 .866-.075 1.281-.224.415-.15.763-.345 1.043-.588l.49.812c-.13.112-.294.229-.49.35a4.837 4.837 0 01-1.533.602 4.962 4.962 0 01-1.015.098c-.607 0-1.141-.086-1.603-.259a3.045 3.045 0 01-1.155-.742 3.176 3.176 0 01-.7-1.162 4.525 4.525 0 01-.238-1.505c0-.588.082-1.11.245-1.568.163-.457.399-.84.707-1.148a3.08 3.08 0 011.12-.707 4.187 4.187 0 011.47-.245c.69 0 1.253.06 1.687.182.434.121.8.257 1.099.406l-.014.042v1.946H46.97v-1.33zm2.688-1.078h1.666v-1.386l1.092-.308V50.8h3.738v.938h-3.738v3.304c0 .681.166 1.185.497 1.512.331.327.805.49 1.421.49.42 0 .786-.08 1.099-.238.313-.159.595-.331.847-.518l.364.826a3.938 3.938 0 01-1.169.63 4.182 4.182 0 01-1.393.238 3.41 3.41 0 01-1.057-.161 2.426 2.426 0 01-.875-.497 2.38 2.38 0 01-.602-.861c-.15-.35-.224-.768-.224-1.253v-3.472h-1.666V50.8zm9.436 7v-.938h2.436v-5.124h-2.436V50.8h3.556v6.062h2.38v.938h-5.936zm2.058-8.988c0-.252.084-.469.252-.651a.838.838 0 01.644-.273c.27 0 .497.091.679.273a.889.889 0 01.273.651.806.806 0 01-.273.616.963.963 0 01-.679.252.872.872 0 01-.644-.252.838.838 0 01-.252-.616zm5.67 5.488c0-1.13.294-2.023.882-2.681.588-.658 1.428-.987 2.52-.987.588 0 1.094.096 1.519.287.425.191.777.45 1.057.777.28.327.488.714.623 1.162.135.448.203.929.203 1.442 0 .56-.075 1.066-.224 1.519-.15.453-.369.838-.658 1.155-.29.317-.646.562-1.071.735a3.82 3.82 0 01-1.449.259c-.579 0-1.083-.096-1.512-.287a2.967 2.967 0 01-1.064-.777 3.168 3.168 0 01-.623-1.162 4.963 4.963 0 01-.203-1.442zm1.162 0c0 .327.04.653.119.98.08.327.208.62.385.882.177.261.408.471.693.63.285.159.632.238 1.043.238.747 0 1.309-.231 1.687-.693.378-.462.567-1.141.567-2.037 0-.336-.04-.665-.119-.987a2.608 2.608 0 00-.392-.875 2.066 2.066 0 00-.7-.63c-.285-.159-.632-.238-1.043-.238-.747 0-1.307.229-1.68.686-.373.457-.56 1.139-.56 2.044zm7.742-1.05a14.05 14.05 0 00-.063-1.176 4.657 4.657 0 00-.049-.364h-.938v-.91h1.876l.126 1.134h.07c.093-.159.217-.315.371-.469a2.91 2.91 0 011.225-.721c.252-.075.518-.112.798-.112.43 0 .81.047 1.141.14.331.093.607.259.826.497.22.238.385.56.497.966.112.406.168.922.168 1.547V57.8h-1.092v-3.808c0-.775-.126-1.358-.378-1.75-.252-.392-.71-.588-1.372-.588-.243 0-.478.049-.707.147a2.44 2.44 0 00-.623.385c-.187.159-.35.343-.49.553-.14.21-.243.432-.308.665V57.8h-1.078v-4.55z"/><path id="(){" fill="#7E7C7B" d="M97.272 60.768a6.964 6.964 0 01-1.757-.707 5.036 5.036 0 01-1.428-1.225c-.406-.504-.728-1.12-.966-1.848s-.357-1.591-.357-2.59c0-.99.121-1.855.364-2.597s.57-1.372.98-1.89c.41-.518.889-.933 1.435-1.246A6.005 6.005 0 0197.272 48l.35.882a7.086 7.086 0 00-1.512.623 3.928 3.928 0 00-1.183 1.022c-.331.425-.588.952-.77 1.582-.182.63-.273 1.393-.273 2.289 0 .905.11 1.678.329 2.317.22.64.509 1.171.868 1.596.36.425.76.756 1.204.994.443.238.889.404 1.337.497l-.35.966zm4.354-.966a4.965 4.965 0 001.337-.497 4.15 4.15 0 001.204-.994c.36-.425.649-.957.868-1.596.22-.64.329-1.412.329-2.317 0-.896-.091-1.659-.273-2.289-.182-.63-.439-1.157-.77-1.582a3.928 3.928 0 00-1.183-1.022 7.086 7.086 0 00-1.512-.623l.35-.882c.607.13 1.183.352 1.729.665a4.984 4.984 0 011.435 1.246c.41.518.737 1.148.98 1.89s.364 1.608.364 2.597c0 .999-.119 1.862-.357 2.59-.238.728-.56 1.344-.966 1.848a5.036 5.036 0 01-1.428 1.225 6.964 6.964 0 01-1.757.707l-.35-.966zm17.878-2.45c0-.401-.068-.749-.203-1.043a2.44 2.44 0 00-.504-.735c-.2-.196-.415-.34-.644-.434a1.641 1.641 0 00-.609-.14v-.98c.177 0 .38-.04.609-.119.229-.08.443-.21.644-.392.2-.182.369-.418.504-.707.135-.29.203-.649.203-1.078v-1.428c0-.336.054-.644.161-.924a2.22 2.22 0 01.448-.728c.191-.205.42-.366.686-.483.266-.117.558-.175.875-.175h2.03v.98h-1.54c-.588 0-.996.14-1.225.42-.229.28-.343.695-.343 1.246v1.358c0 .383-.07.723-.21 1.022a2.7 2.7 0 01-1.106 1.225c-.205.117-.373.184-.504.203v.084c.121.019.285.091.49.217.205.126.406.299.602.518.196.22.366.478.511.777.145.299.217.63.217.994v1.344c0 .57.121.99.364 1.26s.649.406 1.218.406h1.526v.98h-2.03c-.653 0-1.178-.194-1.575-.581-.397-.387-.595-.959-.595-1.715v-1.372z"/><path id="alert" fill="#181717" d="M134.736 51.346a4.447 4.447 0 011.358-.504 7.423 7.423 0 011.484-.154c.476 0 .866.075 1.169.224.303.15.541.343.714.581.173.238.29.509.35.812.06.303.091.609.091.917 0 .355-.01.733-.028 1.134-.019.401-.033.803-.042 1.204 0 .467.028.91.084 1.33h.938v.91h-1.862l-.126-1.05h-.07c-.056.084-.14.191-.252.322-.112.13-.259.259-.441.385a2.749 2.749 0 01-1.589.469c-.69 0-1.237-.177-1.638-.532-.401-.355-.602-.84-.602-1.456 0-.476.105-.873.315-1.19.21-.317.511-.56.903-.728.392-.168.866-.266 1.421-.294a9.544 9.544 0 011.869.112c.047-.43.054-.786.021-1.071-.033-.285-.107-.511-.224-.679a.938.938 0 00-.49-.357 2.482 2.482 0 00-.777-.105c-.42 0-.821.058-1.204.175-.383.117-.723.236-1.022.357l-.35-.812zm2.058 5.642c.261 0 .504-.042.728-.126a2.22 2.22 0 00.588-.322 2.133 2.133 0 00.672-.868v-.98a7.92 7.92 0 00-1.344-.126c-.41 0-.765.044-1.064.133-.299.089-.532.226-.7.413-.168.187-.252.43-.252.728 0 .308.105.576.315.805.21.229.562.343 1.057.343zM143.29 48h2.324v7.448c0 .57.096.97.287 1.204.191.233.474.35.847.35.261 0 .511-.047.749-.14.238-.093.502-.252.791-.476l.504.77c-.15.13-.313.247-.49.35a3.638 3.638 0 01-1.106.42 2.963 2.963 0 01-1.442-.077 1.579 1.579 0 01-.679-.427 1.897 1.897 0 01-.413-.777c-.093-.322-.14-.721-.14-1.197v-6.51h-1.232V48zm14.14 8.918c-.168.15-.366.29-.595.42a4.39 4.39 0 01-.749.336c-.27.093-.553.166-.847.217-.294.051-.59.077-.889.077-.56 0-1.055-.086-1.484-.259a2.858 2.858 0 01-1.078-.742 3.234 3.234 0 01-.658-1.155 4.767 4.767 0 01-.224-1.512c0-.588.082-1.11.245-1.568.163-.457.399-.84.707-1.148a3.08 3.08 0 011.12-.707 4.187 4.187 0 011.47-.245c.392 0 .78.051 1.162.154.383.103.721.296 1.015.581.294.285.52.677.679 1.176.159.5.215 1.146.168 1.939h-5.418c0 .84.226 1.468.679 1.883.453.415 1.057.623 1.813.623.252 0 .502-.03.749-.091.247-.06.483-.133.707-.217a3.72 3.72 0 00.595-.28c.173-.103.306-.196.399-.28l.434.798zm-2.954-5.362c-.308 0-.6.033-.875.098a1.995 1.995 0 00-.728.329c-.21.154-.383.355-.518.602s-.222.553-.259.917h4.354c-.047-.616-.245-1.094-.595-1.435-.35-.34-.81-.511-1.379-.511zm4.872 6.244v-.938h1.89v-5.124h-1.89V50.8h2.618l.224.91h.07c.317-.29.672-.537 1.064-.742.392-.205.859-.308 1.4-.308.317 0 .572.06.763.182.191.121.34.299.448.532.107.233.18.516.217.847.037.331.056.707.056 1.127l-.98.014c0-.597-.058-1.036-.175-1.316-.117-.28-.329-.42-.637-.42-.29 0-.55.042-.784.126a2.565 2.565 0 00-.609.308c-.173.121-.32.243-.441.364s-.21.224-.266.308v4.13h2.688v.938h-5.656zm7.91-7h1.666v-1.386l1.092-.308V50.8h3.738v.938h-3.738v3.304c0 .681.166 1.185.497 1.512.331.327.805.49 1.421.49.42 0 .786-.08 1.099-.238.313-.159.595-.331.847-.518l.364.826a3.938 3.938 0 01-1.169.63 4.182 4.182 0 01-1.393.238 3.41 3.41 0 01-1.057-.161 2.426 2.426 0 01-.875-.497 2.38 2.38 0 01-.602-.861c-.15-.35-.224-.768-.224-1.253v-3.472h-1.666V50.8z"/><path id="(" fill="#7E7C7B" d="M181.272 60.768a6.964 6.964 0 01-1.757-.707 5.036 5.036 0 01-1.428-1.225c-.406-.504-.728-1.12-.966-1.848s-.357-1.591-.357-2.59c0-.99.121-1.855.364-2.597s.57-1.372.98-1.89c.41-.518.889-.933 1.435-1.246a6.005 6.005 0 011.729-.665l.35.882a7.086 7.086 0 00-1.512.623 3.928 3.928 0 00-1.183 1.022c-.331.425-.588.952-.77 1.582-.182.63-.273 1.393-.273 2.289 0 .905.11 1.678.329 2.317.22.64.509 1.171.868 1.596.36.425.76.756 1.204.994.443.238.889.404 1.337.497l-.35.966z"/><path id="i" fill="#181717" d="M185.094 57.8v-.938h2.436v-5.124h-2.436V50.8h3.556v6.062h2.38v.938h-5.936zm2.058-8.988c0-.252.084-.469.252-.651a.838.838 0 01.644-.273c.27 0 .497.091.679.273a.889.889 0 01.273.651.806.806 0 01-.273.616.963.963 0 01-.679.252.872.872 0 01-.644-.252.838.838 0 01-.252-.616z"/><path id=");}," fill="#7E7C7B" d="M194.026 59.802a4.965 4.965 0 001.337-.497 4.15 4.15 0 001.204-.994c.36-.425.649-.957.868-1.596.22-.64.329-1.412.329-2.317 0-.896-.091-1.659-.273-2.289-.182-.63-.439-1.157-.77-1.582a3.928 3.928 0 00-1.183-1.022 7.086 7.086 0 00-1.512-.623l.35-.882c.607.13 1.183.352 1.729.665a4.984 4.984 0 011.435 1.246c.41.518.737 1.148.98 1.89s.364 1.608.364 2.597c0 .999-.119 1.862-.357 2.59-.238.728-.56 1.344-.966 1.848a5.036 5.036 0 01-1.428 1.225 6.964 6.964 0 01-1.757.707l-.35-.966zm9.604-2.772c0-.28.091-.506.273-.679.182-.173.418-.259.707-.259.355 0 .63.124.826.371.196.247.294.595.294 1.043a2.36 2.36 0 01-.637 1.659 2.465 2.465 0 01-.588.462c-.21.117-.404.203-.581.259l-.35-.546c.336-.13.625-.317.868-.56.243-.243.364-.537.364-.882-.13.028-.233.042-.308.042-.27 0-.483-.077-.637-.231-.154-.154-.231-.38-.231-.679zm.126-5.502c0-.299.084-.53.252-.693.168-.163.392-.245.672-.245.299 0 .532.082.7.245.168.163.252.394.252.693 0 .27-.084.495-.252.672-.168.177-.401.266-.7.266-.28 0-.504-.089-.672-.266a.938.938 0 01-.252-.672zm18.788 7.196c0 .756-.198 1.328-.595 1.715-.397.387-.922.581-1.575.581h-2.03v-.98h1.526c.57 0 .975-.135 1.218-.406.243-.27.364-.69.364-1.26V57.03c0-.364.07-.695.21-.994.14-.299.308-.558.504-.777.196-.22.397-.392.602-.518.205-.126.373-.198.504-.217v-.084c-.13-.019-.299-.086-.504-.203a2.7 2.7 0 01-1.106-1.225c-.14-.299-.21-.64-.21-1.022v-1.358c0-.55-.114-.966-.343-1.246-.229-.28-.637-.42-1.225-.42h-1.54v-.98h2.03c.317 0 .609.058.875.175.266.117.495.278.686.483.191.205.34.448.448.728.107.28.161.588.161.924v1.428c0 .43.068.789.203 1.078.135.29.303.525.504.707.2.182.415.313.644.392.229.08.432.119.609.119V55c-.177 0-.38.047-.609.14a2.011 2.011 0 00-.644.434 2.44 2.44 0 00-.504.735c-.135.294-.203.642-.203 1.043v1.372zm6.286-1.694c0-.28.091-.506.273-.679.182-.173.418-.259.707-.259.355 0 .63.124.826.371.196.247.294.595.294 1.043a2.36 2.36 0 01-.637 1.659 2.465 2.465 0 01-.588.462c-.21.117-.404.203-.581.259l-.35-.546c.336-.13.625-.317.868-.56.243-.243.364-.537.364-.882-.13.028-.233.042-.308.042-.27 0-.483-.077-.637-.231-.154-.154-.231-.38-.231-.679z"/><path id="function" fill="#1C85B5" d="M16.856 81.8v-.938h1.666v-5.124h-1.666V74.8h1.666v-.392c0-.877.229-1.512.686-1.904.457-.392 1.11-.588 1.96-.588.308 0 .583.019.826.056.243.037.504.112.784.224l-.252.91a2.862 2.862 0 00-.7-.203 4.295 4.295 0 00-.616-.049c-.616 0-1.036.152-1.26.455-.224.303-.336.8-.336 1.491h2.898v.938h-2.898v5.124h2.898v.938h-5.656zm12.25-7h1.988v4.774c0 .457.028.896.084 1.316h.938v.91h-1.862l-.042-1.19h-.056a2.938 2.938 0 01-.966.98c-.401.252-.887.378-1.456.378-.43 0-.796-.049-1.099-.147a1.556 1.556 0 01-.749-.511c-.196-.243-.34-.567-.434-.973-.093-.406-.14-.912-.14-1.519v-3.08h-.938V74.8h2.03v3.794c0 .383.016.726.049 1.029.033.303.1.56.203.77.103.21.254.369.455.476.2.107.469.161.805.161.485 0 .908-.159 1.267-.476.36-.317.632-.714.819-1.19v-3.626h-.896V74.8zm4.62 2.45a14.05 14.05 0 00-.063-1.176 4.657 4.657 0 00-.049-.364h-.938v-.91h1.876l.126 1.134h.07c.093-.159.217-.315.371-.469a2.91 2.91 0 011.225-.721c.252-.075.518-.112.798-.112.43 0 .81.047 1.141.14.331.093.607.259.826.497.22.238.385.56.497.966.112.406.168.922.168 1.547V81.8h-1.092v-3.808c0-.775-.126-1.358-.378-1.75-.252-.392-.71-.588-1.372-.588-.243 0-.478.049-.707.147a2.44 2.44 0 00-.623.385c-.187.159-.35.343-.49.553-.14.21-.243.432-.308.665V81.8h-1.078v-4.55zm13.244-1.372a5.531 5.531 0 00-.693-.189 3.61 3.61 0 00-.735-.077c-.915 0-1.596.215-2.044.644-.448.43-.672 1.11-.672 2.044 0 .41.065.777.196 1.099.13.322.317.595.56.819.243.224.534.397.875.518.34.121.716.182 1.127.182.439 0 .866-.075 1.281-.224.415-.15.763-.345 1.043-.588l.49.812c-.13.112-.294.229-.49.35a4.837 4.837 0 01-1.533.602 4.962 4.962 0 01-1.015.098c-.607 0-1.141-.086-1.603-.259a3.045 3.045 0 01-1.155-.742 3.176 3.176 0 01-.7-1.162 4.525 4.525 0 01-.238-1.505c0-.588.082-1.11.245-1.568.163-.457.399-.84.707-1.148a3.08 3.08 0 011.12-.707 4.187 4.187 0 011.47-.245c.69 0 1.253.06 1.687.182.434.121.8.257 1.099.406l-.014.042v1.946H46.97v-1.33zm2.688-1.078h1.666v-1.386l1.092-.308V74.8h3.738v.938h-3.738v3.304c0 .681.166 1.185.497 1.512.331.327.805.49 1.421.49.42 0 .786-.08 1.099-.238.313-.159.595-.331.847-.518l.364.826a3.938 3.938 0 01-1.169.63 4.182 4.182 0 01-1.393.238 3.41 3.41 0 01-1.057-.161 2.426 2.426 0 01-.875-.497 2.38 2.38 0 01-.602-.861c-.15-.35-.224-.768-.224-1.253v-3.472h-1.666V74.8zm9.436 7v-.938h2.436v-5.124h-2.436V74.8h3.556v6.062h2.38v.938h-5.936zm2.058-8.988c0-.252.084-.469.252-.651a.838.838 0 01.644-.273c.27 0 .497.091.679.273a.889.889 0 01.273.651.806.806 0 01-.273.616.963.963 0 01-.679.252.872.872 0 01-.644-.252.838.838 0 01-.252-.616zm5.67 5.488c0-1.13.294-2.023.882-2.681.588-.658 1.428-.987 2.52-.987.588 0 1.094.096 1.519.287.425.191.777.45 1.057.777.28.327.488.714.623 1.162.135.448.203.929.203 1.442 0 .56-.075 1.066-.224 1.519-.15.453-.369.838-.658 1.155-.29.317-.646.562-1.071.735a3.82 3.82 0 01-1.449.259c-.579 0-1.083-.096-1.512-.287a2.967 2.967 0 01-1.064-.777 3.168 3.168 0 01-.623-1.162 4.963 4.963 0 01-.203-1.442zm1.162 0c0 .327.04.653.119.98.08.327.208.62.385.882.177.261.408.471.693.63.285.159.632.238 1.043.238.747 0 1.309-.231 1.687-.693.378-.462.567-1.141.567-2.037 0-.336-.04-.665-.119-.987a2.608 2.608 0 00-.392-.875 2.066 2.066 0 00-.7-.63c-.285-.159-.632-.238-1.043-.238-.747 0-1.307.229-1.68.686-.373.457-.56 1.139-.56 2.044zm7.742-1.05a14.05 14.05 0 00-.063-1.176 4.657 4.657 0 00-.049-.364h-.938v-.91h1.876l.126 1.134h.07c.093-.159.217-.315.371-.469a2.91 2.91 0 011.225-.721c.252-.075.518-.112.798-.112.43 0 .81.047 1.141.14.331.093.607.259.826.497.22.238.385.56.497.966.112.406.168.922.168 1.547V81.8h-1.092v-3.808c0-.775-.126-1.358-.378-1.75-.252-.392-.71-.588-1.372-.588-.243 0-.478.049-.707.147a2.44 2.44 0 00-.623.385c-.187.159-.35.343-.49.553-.14.21-.243.432-.308.665V81.8h-1.078v-4.55z"/><path id="(){" fill="#7E7C7B" d="M97.272 84.768a6.964 6.964 0 01-1.757-.707 5.036 5.036 0 01-1.428-1.225c-.406-.504-.728-1.12-.966-1.848s-.357-1.591-.357-2.59c0-.99.121-1.855.364-2.597s.57-1.372.98-1.89c.41-.518.889-.933 1.435-1.246A6.005 6.005 0 0197.272 72l.35.882a7.086 7.086 0 00-1.512.623 3.928 3.928 0 00-1.183 1.022c-.331.425-.588.952-.77 1.582-.182.63-.273 1.393-.273 2.289 0 .905.11 1.678.329 2.317.22.64.509 1.171.868 1.596.36.425.76.756 1.204.994.443.238.889.404 1.337.497l-.35.966zm4.354-.966a4.965 4.965 0 001.337-.497 4.15 4.15 0 001.204-.994c.36-.425.649-.957.868-1.596.22-.64.329-1.412.329-2.317 0-.896-.091-1.659-.273-2.289-.182-.63-.439-1.157-.77-1.582a3.928 3.928 0 00-1.183-1.022 7.086 7.086 0 00-1.512-.623l.35-.882c.607.13 1.183.352 1.729.665a4.984 4.984 0 011.435 1.246c.41.518.737 1.148.98 1.89s.364 1.608.364 2.597c0 .999-.119 1.862-.357 2.59-.238.728-.56 1.344-.966 1.848a5.036 5.036 0 01-1.428 1.225 6.964 6.964 0 01-1.757.707l-.35-.966zm17.878-2.45c0-.401-.068-.749-.203-1.043a2.44 2.44 0 00-.504-.735c-.2-.196-.415-.34-.644-.434a1.641 1.641 0 00-.609-.14v-.98c.177 0 .38-.04.609-.119.229-.08.443-.21.644-.392.2-.182.369-.418.504-.707.135-.29.203-.649.203-1.078v-1.428c0-.336.054-.644.161-.924a2.22 2.22 0 01.448-.728c.191-.205.42-.366.686-.483.266-.117.558-.175.875-.175h2.03v.98h-1.54c-.588 0-.996.14-1.225.42-.229.28-.343.695-.343 1.246v1.358c0 .383-.07.723-.21 1.022a2.7 2.7 0 01-1.106 1.225c-.205.117-.373.184-.504.203v.084c.121.019.285.091.49.217.205.126.406.299.602.518.196.22.366.478.511.777.145.299.217.63.217.994v1.344c0 .57.121.99.364 1.26s.649.406 1.218.406h1.526v.98h-2.03c-.653 0-1.178-.194-1.575-.581-.397-.387-.595-.959-.595-1.715v-1.372z"/><path id="alert" fill="#181717" d="M134.736 75.346a4.447 4.447 0 011.358-.504 7.423 7.423 0 011.484-.154c.476 0 .866.075 1.169.224.303.15.541.343.714.581.173.238.29.509.35.812.06.303.091.609.091.917 0 .355-.01.733-.028 1.134-.019.401-.033.803-.042 1.204 0 .467.028.91.084 1.33h.938v.91h-1.862l-.126-1.05h-.07c-.056.084-.14.191-.252.322-.112.13-.259.259-.441.385a2.749 2.749 0 01-1.589.469c-.69 0-1.237-.177-1.638-.532-.401-.355-.602-.84-.602-1.456 0-.476.105-.873.315-1.19.21-.317.511-.56.903-.728.392-.168.866-.266 1.421-.294a9.544 9.544 0 011.869.112c.047-.43.054-.786.021-1.071-.033-.285-.107-.511-.224-.679a.938.938 0 00-.49-.357 2.482 2.482 0 00-.777-.105c-.42 0-.821.058-1.204.175-.383.117-.723.236-1.022.357l-.35-.812zm2.058 5.642c.261 0 .504-.042.728-.126a2.22 2.22 0 00.588-.322 2.133 2.133 0 00.672-.868v-.98a7.92 7.92 0 00-1.344-.126c-.41 0-.765.044-1.064.133-.299.089-.532.226-.7.413-.168.187-.252.43-.252.728 0 .308.105.576.315.805.21.229.562.343 1.057.343zM143.29 72h2.324v7.448c0 .57.096.97.287 1.204.191.233.474.35.847.35.261 0 .511-.047.749-.14.238-.093.502-.252.791-.476l.504.77c-.15.13-.313.247-.49.35a3.638 3.638 0 01-1.106.42 2.963 2.963 0 01-1.442-.077 1.579 1.579 0 01-.679-.427 1.897 1.897 0 01-.413-.777c-.093-.322-.14-.721-.14-1.197v-6.51h-1.232V72zm14.14 8.918c-.168.15-.366.29-.595.42a4.39 4.39 0 01-.749.336c-.27.093-.553.166-.847.217-.294.051-.59.077-.889.077-.56 0-1.055-.086-1.484-.259a2.858 2.858 0 01-1.078-.742 3.234 3.234 0 01-.658-1.155 4.767 4.767 0 01-.224-1.512c0-.588.082-1.11.245-1.568.163-.457.399-.84.707-1.148a3.08 3.08 0 011.12-.707 4.187 4.187 0 011.47-.245c.392 0 .78.051 1.162.154.383.103.721.296 1.015.581.294.285.52.677.679 1.176.159.5.215 1.146.168 1.939h-5.418c0 .84.226 1.468.679 1.883.453.415 1.057.623 1.813.623.252 0 .502-.03.749-.091.247-.06.483-.133.707-.217a3.72 3.72 0 00.595-.28c.173-.103.306-.196.399-.28l.434.798zm-2.954-5.362c-.308 0-.6.033-.875.098a1.995 1.995 0 00-.728.329c-.21.154-.383.355-.518.602s-.222.553-.259.917h4.354c-.047-.616-.245-1.094-.595-1.435-.35-.34-.81-.511-1.379-.511zm4.872 6.244v-.938h1.89v-5.124h-1.89V74.8h2.618l.224.91h.07c.317-.29.672-.537 1.064-.742.392-.205.859-.308 1.4-.308.317 0 .572.06.763.182.191.121.34.299.448.532.107.233.18.516.217.847.037.331.056.707.056 1.127l-.98.014c0-.597-.058-1.036-.175-1.316-.117-.28-.329-.42-.637-.42-.29 0-.55.042-.784.126a2.565 2.565 0 00-.609.308c-.173.121-.32.243-.441.364s-.21.224-.266.308v4.13h2.688v.938h-5.656zm7.91-7h1.666v-1.386l1.092-.308V74.8h3.738v.938h-3.738v3.304c0 .681.166 1.185.497 1.512.331.327.805.49 1.421.49.42 0 .786-.08 1.099-.238.313-.159.595-.331.847-.518l.364.826a3.938 3.938 0 01-1.169.63 4.182 4.182 0 01-1.393.238 3.41 3.41 0 01-1.057-.161 2.426 2.426 0 01-.875-.497 2.38 2.38 0 01-.602-.861c-.15-.35-.224-.768-.224-1.253v-3.472h-1.666V74.8z"/><path id="(" fill="#7E7C7B" d="M181.272 84.768a6.964 6.964 0 01-1.757-.707 5.036 5.036 0 01-1.428-1.225c-.406-.504-.728-1.12-.966-1.848s-.357-1.591-.357-2.59c0-.99.121-1.855.364-2.597s.57-1.372.98-1.89c.41-.518.889-.933 1.435-1.246a6.005 6.005 0 011.729-.665l.35.882a7.086 7.086 0 00-1.512.623 3.928 3.928 0 00-1.183 1.022c-.331.425-.588.952-.77 1.582-.182.63-.273 1.393-.273 2.289 0 .905.11 1.678.329 2.317.22.64.509 1.171.868 1.596.36.425.76.756 1.204.994.443.238.889.404 1.337.497l-.35.966z"/><path id="i" fill="#181717" d="M185.094 81.8v-.938h2.436v-5.124h-2.436V74.8h3.556v6.062h2.38v.938h-5.936zm2.058-8.988c0-.252.084-.469.252-.651a.838.838 0 01.644-.273c.27 0 .497.091.679.273a.889.889 0 01.273.651.806.806 0 01-.273.616.963.963 0 01-.679.252.872.872 0 01-.644-.252.838.838 0 01-.252-.616z"/><path id=");}," fill="#7E7C7B" d="M194.026 83.802a4.965 4.965 0 001.337-.497 4.15 4.15 0 001.204-.994c.36-.425.649-.957.868-1.596.22-.64.329-1.412.329-2.317 0-.896-.091-1.659-.273-2.289-.182-.63-.439-1.157-.77-1.582a3.928 3.928 0 00-1.183-1.022 7.086 7.086 0 00-1.512-.623l.35-.882c.607.13 1.183.352 1.729.665a4.984 4.984 0 011.435 1.246c.41.518.737 1.148.98 1.89s.364 1.608.364 2.597c0 .999-.119 1.862-.357 2.59-.238.728-.56 1.344-.966 1.848a5.036 5.036 0 01-1.428 1.225 6.964 6.964 0 01-1.757.707l-.35-.966zm9.604-2.772c0-.28.091-.506.273-.679.182-.173.418-.259.707-.259.355 0 .63.124.826.371.196.247.294.595.294 1.043a2.36 2.36 0 01-.637 1.659 2.465 2.465 0 01-.588.462c-.21.117-.404.203-.581.259l-.35-.546c.336-.13.625-.317.868-.56.243-.243.364-.537.364-.882-.13.028-.233.042-.308.042-.27 0-.483-.077-.637-.231-.154-.154-.231-.38-.231-.679zm.126-5.502c0-.299.084-.53.252-.693.168-.163.392-.245.672-.245.299 0 .532.082.7.245.168.163.252.394.252.693 0 .27-.084.495-.252.672-.168.177-.401.266-.7.266-.28 0-.504-.089-.672-.266a.938.938 0 01-.252-.672zm18.788 7.196c0 .756-.198 1.328-.595 1.715-.397.387-.922.581-1.575.581h-2.03v-.98h1.526c.57 0 .975-.135 1.218-.406.243-.27.364-.69.364-1.26V81.03c0-.364.07-.695.21-.994.14-.299.308-.558.504-.777.196-.22.397-.392.602-.518.205-.126.373-.198.504-.217v-.084c-.13-.019-.299-.086-.504-.203a2.7 2.7 0 01-1.106-1.225c-.14-.299-.21-.64-.21-1.022v-1.358c0-.55-.114-.966-.343-1.246-.229-.28-.637-.42-1.225-.42h-1.54v-.98h2.03c.317 0 .609.058.875.175.266.117.495.278.686.483.191.205.34.448.448.728.107.28.161.588.161.924v1.428c0 .43.068.789.203 1.078.135.29.303.525.504.707.2.182.415.313.644.392.229.08.432.119.609.119V79c-.177 0-.38.047-.609.14a2.011 2.011 0 00-.644.434 2.44 2.44 0 00-.504.735c-.135.294-.203.642-.203 1.043v1.372zm6.286-1.694c0-.28.091-.506.273-.679.182-.173.418-.259.707-.259.355 0 .63.124.826.371.196.247.294.595.294 1.043a2.36 2.36 0 01-.637 1.659 2.465 2.465 0 01-.588.462c-.21.117-.404.203-.581.259l-.35-.546c.336-.13.625-.317.868-.56.243-.243.364-.537.364-.882-.13.028-.233.042-.308.042-.27 0-.483-.077-.637-.231-.154-.154-.231-.38-.231-.679z"/><path id="..." fill="#181717" d="M18.886 105.03c0-.299.084-.53.252-.693.168-.163.392-.245.672-.245.299 0 .532.082.7.245.168.163.252.394.252.693 0 .27-.084.495-.252.672-.168.177-.401.266-.7.266-.28 0-.504-.089-.672-.266a.938.938 0 01-.252-.672zm8.4 0c0-.299.084-.53.252-.693.168-.163.392-.245.672-.245.299 0 .532.082.7.245.168.163.252.394.252.693 0 .27-.084.495-.252.672-.168.177-.401.266-.7.266-.28 0-.504-.089-.672-.266a.938.938 0 01-.252-.672zm8.4 0c0-.299.084-.53.252-.693.168-.163.392-.245.672-.245.299 0 .532.082.7.245.168.163.252.394.252.693 0 .27-.084.495-.252.672-.168.177-.401.266-.7.266-.28 0-.504-.089-.672-.266a.938.938 0 01-.252-.672z"/><path id="function" fill="#1C85B5" d="M16.856 129.8v-.938h1.666v-5.124h-1.666v-.938h1.666v-.392c0-.877.229-1.512.686-1.904.457-.392 1.11-.588 1.96-.588.308 0 .583.019.826.056.243.037.504.112.784.224l-.252.91a2.862 2.862 0 00-.7-.203 4.295 4.295 0 00-.616-.049c-.616 0-1.036.152-1.26.455-.224.303-.336.8-.336 1.491h2.898v.938h-2.898v5.124h2.898v.938h-5.656zm12.25-7h1.988v4.774c0 .457.028.896.084 1.316h.938v.91h-1.862l-.042-1.19h-.056a2.938 2.938 0 01-.966.98c-.401.252-.887.378-1.456.378-.43 0-.796-.049-1.099-.147a1.556 1.556 0 01-.749-.511c-.196-.243-.34-.567-.434-.973-.093-.406-.14-.912-.14-1.519v-3.08h-.938v-.938h2.03v3.794c0 .383.016.726.049 1.029.033.303.1.56.203.77.103.21.254.369.455.476.2.107.469.161.805.161.485 0 .908-.159 1.267-.476.36-.317.632-.714.819-1.19v-3.626h-.896v-.938zm4.62 2.45a14.05 14.05 0 00-.063-1.176 4.657 4.657 0 00-.049-.364h-.938v-.91h1.876l.126 1.134h.07c.093-.159.217-.315.371-.469a2.91 2.91 0 011.225-.721c.252-.075.518-.112.798-.112.43 0 .81.047 1.141.14.331.093.607.259.826.497.22.238.385.56.497.966.112.406.168.922.168 1.547v4.018h-1.092v-3.808c0-.775-.126-1.358-.378-1.75-.252-.392-.71-.588-1.372-.588-.243 0-.478.049-.707.147a2.44 2.44 0 00-.623.385c-.187.159-.35.343-.49.553-.14.21-.243.432-.308.665v4.396h-1.078v-4.55zm13.244-1.372a5.531 5.531 0 00-.693-.189 3.61 3.61 0 00-.735-.077c-.915 0-1.596.215-2.044.644-.448.43-.672 1.11-.672 2.044 0 .41.065.777.196 1.099.13.322.317.595.56.819.243.224.534.397.875.518.34.121.716.182 1.127.182.439 0 .866-.075 1.281-.224.415-.15.763-.345 1.043-.588l.49.812c-.13.112-.294.229-.49.35a4.837 4.837 0 01-1.533.602 4.962 4.962 0 01-1.015.098c-.607 0-1.141-.086-1.603-.259a3.045 3.045 0 01-1.155-.742 3.176 3.176 0 01-.7-1.162 4.525 4.525 0 01-.238-1.505c0-.588.082-1.11.245-1.568.163-.457.399-.84.707-1.148a3.08 3.08 0 011.12-.707 4.187 4.187 0 011.47-.245c.69 0 1.253.06 1.687.182.434.121.8.257 1.099.406l-.014.042v1.946H46.97v-1.33zm2.688-1.078h1.666v-1.386l1.092-.308v1.694h3.738v.938h-3.738v3.304c0 .681.166 1.185.497 1.512.331.327.805.49 1.421.49.42 0 .786-.08 1.099-.238.313-.159.595-.331.847-.518l.364.826a3.938 3.938 0 01-1.169.63 4.182 4.182 0 01-1.393.238 3.41 3.41 0 01-1.057-.161 2.426 2.426 0 01-.875-.497 2.38 2.38 0 01-.602-.861c-.15-.35-.224-.768-.224-1.253v-3.472h-1.666v-.938zm9.436 7v-.938h2.436v-5.124h-2.436v-.938h3.556v6.062h2.38v.938h-5.936zm2.058-8.988c0-.252.084-.469.252-.651a.838.838 0 01.644-.273c.27 0 .497.091.679.273a.889.889 0 01.273.651.806.806 0 01-.273.616.963.963 0 01-.679.252.872.872 0 01-.644-.252.838.838 0 01-.252-.616zm5.67 5.488c0-1.13.294-2.023.882-2.681.588-.658 1.428-.987 2.52-.987.588 0 1.094.096 1.519.287.425.191.777.45 1.057.777.28.327.488.714.623 1.162.135.448.203.929.203 1.442 0 .56-.075 1.066-.224 1.519-.15.453-.369.838-.658 1.155-.29.317-.646.562-1.071.735a3.82 3.82 0 01-1.449.259c-.579 0-1.083-.096-1.512-.287a2.967 2.967 0 01-1.064-.777 3.168 3.168 0 01-.623-1.162 4.963 4.963 0 01-.203-1.442zm1.162 0c0 .327.04.653.119.98.08.327.208.62.385.882.177.261.408.471.693.63.285.159.632.238 1.043.238.747 0 1.309-.231 1.687-.693.378-.462.567-1.141.567-2.037 0-.336-.04-.665-.119-.987a2.608 2.608 0 00-.392-.875 2.066 2.066 0 00-.7-.63c-.285-.159-.632-.238-1.043-.238-.747 0-1.307.229-1.68.686-.373.457-.56 1.139-.56 2.044zm7.742-1.05a14.05 14.05 0 00-.063-1.176 4.657 4.657 0 00-.049-.364h-.938v-.91h1.876l.126 1.134h.07c.093-.159.217-.315.371-.469a2.91 2.91 0 011.225-.721c.252-.075.518-.112.798-.112.43 0 .81.047 1.141.14.331.093.607.259.826.497.22.238.385.56.497.966.112.406.168.922.168 1.547v4.018h-1.092v-3.808c0-.775-.126-1.358-.378-1.75-.252-.392-.71-.588-1.372-.588-.243 0-.478.049-.707.147a2.44 2.44 0 00-.623.385c-.187.159-.35.343-.49.553-.14.21-.243.432-.308.665v4.396h-1.078v-4.55z"/><path id="(){" fill="#7E7C7B" d="M97.272 132.768a6.964 6.964 0 01-1.757-.707 5.036 5.036 0 01-1.428-1.225c-.406-.504-.728-1.12-.966-1.848s-.357-1.591-.357-2.59c0-.99.121-1.855.364-2.597s.57-1.372.98-1.89c.41-.518.889-.933 1.435-1.246a6.005 6.005 0 011.729-.665l.35.882a7.086 7.086 0 00-1.512.623 3.928 3.928 0 00-1.183 1.022c-.331.425-.588.952-.77 1.582-.182.63-.273 1.393-.273 2.289 0 .905.11 1.678.329 2.317.22.64.509 1.171.868 1.596.36.425.76.756 1.204.994.443.238.889.404 1.337.497l-.35.966zm4.354-.966a4.965 4.965 0 001.337-.497 4.15 4.15 0 001.204-.994c.36-.425.649-.957.868-1.596.22-.64.329-1.412.329-2.317 0-.896-.091-1.659-.273-2.289-.182-.63-.439-1.157-.77-1.582a3.928 3.928 0 00-1.183-1.022 7.086 7.086 0 00-1.512-.623l.35-.882c.607.13 1.183.352 1.729.665a4.984 4.984 0 011.435 1.246c.41.518.737 1.148.98 1.89s.364 1.608.364 2.597c0 .999-.119 1.862-.357 2.59-.238.728-.56 1.344-.966 1.848a5.036 5.036 0 01-1.428 1.225 6.964 6.964 0 01-1.757.707l-.35-.966zm17.878-2.45c0-.401-.068-.749-.203-1.043a2.44 2.44 0 00-.504-.735c-.2-.196-.415-.34-.644-.434a1.641 1.641 0 00-.609-.14v-.98c.177 0 .38-.04.609-.119.229-.08.443-.21.644-.392.2-.182.369-.418.504-.707.135-.29.203-.649.203-1.078v-1.428c0-.336.054-.644.161-.924a2.22 2.22 0 01.448-.728c.191-.205.42-.366.686-.483.266-.117.558-.175.875-.175h2.03v.98h-1.54c-.588 0-.996.14-1.225.42-.229.28-.343.695-.343 1.246v1.358c0 .383-.07.723-.21 1.022a2.7 2.7 0 01-1.106 1.225c-.205.117-.373.184-.504.203v.084c.121.019.285.091.49.217.205.126.406.299.602.518.196.22.366.478.511.777.145.299.217.63.217.994v1.344c0 .57.121.99.364 1.26s.649.406 1.218.406h1.526v.98h-2.03c-.653 0-1.178-.194-1.575-.581-.397-.387-.595-.959-.595-1.715v-1.372z"/><path id="alert" fill="#181717" d="M134.736 123.346a4.447 4.447 0 011.358-.504 7.423 7.423 0 011.484-.154c.476 0 .866.075 1.169.224.303.15.541.343.714.581.173.238.29.509.35.812.06.303.091.609.091.917 0 .355-.01.733-.028 1.134-.019.401-.033.803-.042 1.204 0 .467.028.91.084 1.33h.938v.91h-1.862l-.126-1.05h-.07c-.056.084-.14.191-.252.322-.112.13-.259.259-.441.385a2.749 2.749 0 01-1.589.469c-.69 0-1.237-.177-1.638-.532-.401-.355-.602-.84-.602-1.456 0-.476.105-.873.315-1.19.21-.317.511-.56.903-.728.392-.168.866-.266 1.421-.294a9.544 9.544 0 011.869.112c.047-.43.054-.786.021-1.071-.033-.285-.107-.511-.224-.679a.938.938 0 00-.49-.357 2.482 2.482 0 00-.777-.105c-.42 0-.821.058-1.204.175-.383.117-.723.236-1.022.357l-.35-.812zm2.058 5.642c.261 0 .504-.042.728-.126a2.22 2.22 0 00.588-.322 2.133 2.133 0 00.672-.868v-.98a7.92 7.92 0 00-1.344-.126c-.41 0-.765.044-1.064.133-.299.089-.532.226-.7.413-.168.187-.252.43-.252.728 0 .308.105.576.315.805.21.229.562.343 1.057.343zM143.29 120h2.324v7.448c0 .57.096.97.287 1.204.191.233.474.35.847.35.261 0 .511-.047.749-.14.238-.093.502-.252.791-.476l.504.77c-.15.13-.313.247-.49.35a3.638 3.638 0 01-1.106.42 2.963 2.963 0 01-1.442-.077 1.579 1.579 0 01-.679-.427 1.897 1.897 0 01-.413-.777c-.093-.322-.14-.721-.14-1.197v-6.51h-1.232V120zm14.14 8.918c-.168.15-.366.29-.595.42a4.39 4.39 0 01-.749.336c-.27.093-.553.166-.847.217-.294.051-.59.077-.889.077-.56 0-1.055-.086-1.484-.259a2.858 2.858 0 01-1.078-.742 3.234 3.234 0 01-.658-1.155 4.767 4.767 0 01-.224-1.512c0-.588.082-1.11.245-1.568.163-.457.399-.84.707-1.148a3.08 3.08 0 011.12-.707 4.187 4.187 0 011.47-.245c.392 0 .78.051 1.162.154.383.103.721.296 1.015.581.294.285.52.677.679 1.176.159.5.215 1.146.168 1.939h-5.418c0 .84.226 1.468.679 1.883.453.415 1.057.623 1.813.623.252 0 .502-.03.749-.091.247-.06.483-.133.707-.217a3.72 3.72 0 00.595-.28c.173-.103.306-.196.399-.28l.434.798zm-2.954-5.362c-.308 0-.6.033-.875.098a1.995 1.995 0 00-.728.329c-.21.154-.383.355-.518.602s-.222.553-.259.917h4.354c-.047-.616-.245-1.094-.595-1.435-.35-.34-.81-.511-1.379-.511zm4.872 6.244v-.938h1.89v-5.124h-1.89v-.938h2.618l.224.91h.07c.317-.29.672-.537 1.064-.742.392-.205.859-.308 1.4-.308.317 0 .572.06.763.182.191.121.34.299.448.532.107.233.18.516.217.847.037.331.056.707.056 1.127l-.98.014c0-.597-.058-1.036-.175-1.316-.117-.28-.329-.42-.637-.42-.29 0-.55.042-.784.126a2.565 2.565 0 00-.609.308c-.173.121-.32.243-.441.364s-.21.224-.266.308v4.13h2.688v.938h-5.656zm7.91-7h1.666v-1.386l1.092-.308v1.694h3.738v.938h-3.738v3.304c0 .681.166 1.185.497 1.512.331.327.805.49 1.421.49.42 0 .786-.08 1.099-.238.313-.159.595-.331.847-.518l.364.826a3.938 3.938 0 01-1.169.63 4.182 4.182 0 01-1.393.238 3.41 3.41 0 01-1.057-.161 2.426 2.426 0 01-.875-.497 2.38 2.38 0 01-.602-.861c-.15-.35-.224-.768-.224-1.253v-3.472h-1.666v-.938z"/><path id="(" fill="#7E7C7B" d="M181.272 132.768a6.964 6.964 0 01-1.757-.707 5.036 5.036 0 01-1.428-1.225c-.406-.504-.728-1.12-.966-1.848s-.357-1.591-.357-2.59c0-.99.121-1.855.364-2.597s.57-1.372.98-1.89c.41-.518.889-.933 1.435-1.246a6.005 6.005 0 011.729-.665l.35.882a7.086 7.086 0 00-1.512.623 3.928 3.928 0 00-1.183 1.022c-.331.425-.588.952-.77 1.582-.182.63-.273 1.393-.273 2.289 0 .905.11 1.678.329 2.317.22.64.509 1.171.868 1.596.36.425.76.756 1.204.994.443.238.889.404 1.337.497l-.35.966z"/><path id="i" fill="#181717" d="M185.094 129.8v-.938h2.436v-5.124h-2.436v-.938h3.556v6.062h2.38v.938h-5.936zm2.058-8.988c0-.252.084-.469.252-.651a.838.838 0 01.644-.273c.27 0 .497.091.679.273a.889.889 0 01.273.651.806.806 0 01-.273.616.963.963 0 01-.679.252.872.872 0 01-.644-.252.838.838 0 01-.252-.616z"/><path id=");}];" fill="#7E7C7B" d="M194.026 131.802a4.965 4.965 0 001.337-.497 4.15 4.15 0 001.204-.994c.36-.425.649-.957.868-1.596.22-.64.329-1.412.329-2.317 0-.896-.091-1.659-.273-2.289-.182-.63-.439-1.157-.77-1.582a3.928 3.928 0 00-1.183-1.022 7.086 7.086 0 00-1.512-.623l.35-.882c.607.13 1.183.352 1.729.665a4.984 4.984 0 011.435 1.246c.41.518.737 1.148.98 1.89s.364 1.608.364 2.597c0 .999-.119 1.862-.357 2.59-.238.728-.56 1.344-.966 1.848a5.036 5.036 0 01-1.428 1.225 6.964 6.964 0 01-1.757.707l-.35-.966zm9.604-2.772c0-.28.091-.506.273-.679.182-.173.418-.259.707-.259.355 0 .63.124.826.371.196.247.294.595.294 1.043a2.36 2.36 0 01-.637 1.659 2.465 2.465 0 01-.588.462c-.21.117-.404.203-.581.259l-.35-.546c.336-.13.625-.317.868-.56.243-.243.364-.537.364-.882-.13.028-.233.042-.308.042-.27 0-.483-.077-.637-.231-.154-.154-.231-.38-.231-.679zm.126-5.502c0-.299.084-.53.252-.693.168-.163.392-.245.672-.245.299 0 .532.082.7.245.168.163.252.394.252.693 0 .27-.084.495-.252.672-.168.177-.401.266-.7.266-.28 0-.504-.089-.672-.266a.938.938 0 01-.252-.672zm18.788 7.196c0 .756-.198 1.328-.595 1.715-.397.387-.922.581-1.575.581h-2.03v-.98h1.526c.57 0 .975-.135 1.218-.406.243-.27.364-.69.364-1.26v-1.344c0-.364.07-.695.21-.994.14-.299.308-.558.504-.777.196-.22.397-.392.602-.518.205-.126.373-.198.504-.217v-.084c-.13-.019-.299-.086-.504-.203a2.7 2.7 0 01-1.106-1.225c-.14-.299-.21-.64-.21-1.022v-1.358c0-.55-.114-.966-.343-1.246-.229-.28-.637-.42-1.225-.42h-1.54v-.98h2.03c.317 0 .609.058.875.175.266.117.495.278.686.483.191.205.34.448.448.728.107.28.161.588.161.924v1.428c0 .43.068.789.203 1.078.135.29.303.525.504.707.2.182.415.313.644.392.229.08.432.119.609.119v.98c-.177 0-.38.047-.609.14a2.011 2.011 0 00-.644.434 2.44 2.44 0 00-.504.735c-.135.294-.203.642-.203 1.043v1.372zM5.138 157.02H.35v-.98h3.696v-11.06H.35V144h4.788v13.02zm5.292-3.99c0-.28.091-.506.273-.679.182-.173.418-.259.707-.259.355 0 .63.124.826.371.196.247.294.595.294 1.043a2.36 2.36 0 01-.637 1.659 2.465 2.465 0 01-.588.462c-.21.117-.404.203-.581.259l-.35-.546c.336-.13.625-.317.868-.56.243-.243.364-.537.364-.882-.13.028-.233.042-.308.042-.27 0-.483-.077-.637-.231-.154-.154-.231-.38-.231-.679zm.126-5.502c0-.299.084-.53.252-.693.168-.163.392-.245.672-.245.299 0 .532.082.7.245.168.163.252.394.252.693 0 .27-.084.495-.252.672-.168.177-.401.266-.7.266-.28 0-.504-.089-.672-.266a.938.938 0 01-.252-.672z"/></g><g id="Group-Copy" transform="translate(366 66)"><path id="Line" fill="#C06334" fill-rule="nonzero" d="M16.5 15.5l14 7-14 7v-6h-14v-2h14v-6z"/><text id="outer" fill="#AF6E24" font-family="PTMono-Regular, PT Mono" font-size="12" font-weight="normal"><tspan x="0" y="11">outer</tspan></text></g><g id="Group-Copy-2" fill="#C06334" fill-rule="nonzero" transform="translate(242 44)"><path id="Line" d="M13.5-5.5l14 7-14 7v-6h-14v-2h14v-6z"/></g><g id="Group-3" transform="translate(279 36)"><path id="Rectangle-1" fill="#FBF2EC" stroke="#DBAF88" stroke-width="2" d="M1 1h75v18H1z"/><text id="<empty>" fill="#AF6E24" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="8" y="14"><empty></tspan></text></g><g id="Group-Copy-3" fill="#C06334" fill-rule="nonzero" transform="translate(242 67)"><path id="Line" d="M13.5-5.5l14 7-14 7v-6h-14v-2h14v-6z"/></g><g id="Group-Copy-4" fill="#C06334" fill-rule="nonzero" transform="translate(242 90)"><path id="Line" d="M13.5-5.5l14 7-14 7v-6h-14v-2h14v-6z"/></g><g id="Group-Copy-5" fill="#C06334" fill-rule="nonzero" transform="translate(242 139)"><path id="Line" d="M13.5-5.5l14 7-14 7v-6h-14v-2h14v-6z"/></g><text id="makeArmy()-LexicalEn" fill="#AF6E24" font-family="PTMono-Bold, PT Mono" font-size="14" font-weight="bold"><tspan x="415" y="59">makeArmy()</tspan> <tspan x="415" y="74" font-family="PTMono-Regular, PT Mono" font-weight="normal">LexicalEnvironment</tspan></text><text id="while-iteration-Lexi" fill="#AF6E24" font-family="PTMono-Bold, PT Mono" font-size="14" font-weight="bold"><tspan x="278" y="14">while iteration</tspan> <tspan x="278" y="29" font-family="PTMono-Regular, PT Mono" font-weight="normal">LexicalEnvironment</tspan></text><g id="Group-3" transform="translate(279 59)"><path id="Rectangle-1" fill="#FBF2EC" stroke="#DBAF88" stroke-width="2" d="M1 1h75v18H1z"/><text id="<empty>" fill="#AF6E24" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="8" y="14"><empty></tspan></text></g><g id="Group-3" transform="translate(279 82)"><path id="Rectangle-1" fill="#FBF2EC" stroke="#DBAF88" stroke-width="2" d="M1 1h75v18H1z"/><text id="<empty>" fill="#AF6E24" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="8" y="14"><empty></tspan></text></g><g id="Group-3" transform="translate(279 131)"><path id="Rectangle-1" fill="#FBF2EC" stroke="#DBAF88" stroke-width="2" d="M1 1h75v18H1z"/><text id="<empty>" fill="#AF6E24" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="8" y="14"><empty></tspan></text></g><g id="Group-3" transform="translate(415 78)"><path id="Rectangle-1" fill="#FBF2EC" stroke="#DBAF88" stroke-width="2" d="M1 1h53v18H1z"/><text id="i:-10" fill="#AF6E24" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="6" y="14">i: 10</tspan></text></g></g></g></svg> \ No newline at end of file diff --git a/1-js/06-advanced-functions/03-closure/10-make-army/lexenv-makearmy-for-fixed.svg b/1-js/06-advanced-functions/03-closure/10-make-army/lexenv-makearmy-for-fixed.svg new file mode 100644 index 000000000..7611d0ef8 --- /dev/null +++ b/1-js/06-advanced-functions/03-closure/10-make-army/lexenv-makearmy-for-fixed.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" width="566" height="183" viewBox="0 0 566 183"><defs><style>@import url(https://fonts.googleapis.com/css?family=Open+Sans:bold,italic,bolditalic%7CPT+Mono);@font-face{font-family:'PT Mono';font-weight:700;font-style:normal;src:local('PT MonoBold'),url(/font/PTMonoBold.woff2) format('woff2'),url(/font/PTMonoBold.woff) format('woff'),url(/font/PTMonoBold.ttf) format('truetype')}</style></defs><g id="closure" fill="none" fill-rule="evenodd" stroke="none" stroke-width="1"><g id="lexenv-makearmy-for-fixed.svg"><g id="shooters-=-[" fill-rule="nonzero" transform="translate(6.176 15.2)"><path id="shooters" fill="#181717" d="M4.956 7.91a.796.796 0 00-.35-.693 2.872 2.872 0 00-.868-.392 16.056 16.056 0 00-1.127-.273 6.502 6.502 0 01-1.127-.336 2.525 2.525 0 01-.868-.567c-.233-.238-.35-.572-.35-1.001 0-.355.077-.658.231-.91a1.94 1.94 0 01.609-.623c.252-.163.546-.285.882-.364.336-.08.686-.119 1.05-.119.653 0 1.216.082 1.687.245.471.163.847.334 1.127.511l-.448.882a11.79 11.79 0 00-1.001-.483c-.36-.154-.81-.231-1.351-.231-.205 0-.408.021-.609.063-.2.042-.383.105-.546.189a1.088 1.088 0 00-.392.329.825.825 0 00-.147.497c0 .243.117.43.35.56.233.13.523.24.868.329.345.089.721.173 1.127.252.406.08.782.194 1.127.343.345.15.635.35.868.602.233.252.35.593.35 1.022 0 .644-.254 1.176-.763 1.596-.509.42-1.272.63-2.289.63-.308 0-.611-.028-.91-.084a5.52 5.52 0 01-.84-.224 5.054 5.054 0 01-.714-.315A3.002 3.002 0 010 8.988l.56-.91c.112.112.261.226.448.343a4.229 4.229 0 001.337.539 3.76 3.76 0 001.484.021c.22-.042.413-.107.581-.196a1.08 1.08 0 00.399-.35.914.914 0 00.147-.525zM7.28 0h2.184v3.668h.07c.29-.327.625-.581 1.008-.763.383-.182.859-.273 1.428-.273.448 0 .838.047 1.169.14.331.093.602.257.812.49.21.233.366.553.469.959.103.406.154.922.154 1.547V9.8h-1.092V5.978c0-.401-.023-.751-.07-1.05a1.829 1.829 0 00-.273-.749c-.135-.2-.32-.352-.553-.455-.233-.103-.532-.154-.896-.154-.252 0-.5.044-.742.133-.243.089-.464.21-.665.364-.2.154-.373.34-.518.56-.145.22-.245.46-.301.721V9.8H8.386V.938H7.28V0zm9.142 6.3c0-1.13.294-2.023.882-2.681.588-.658 1.428-.987 2.52-.987.588 0 1.094.096 1.519.287.425.191.777.45 1.057.777.28.327.488.714.623 1.162.135.448.203.929.203 1.442 0 .56-.075 1.066-.224 1.519-.15.453-.369.838-.658 1.155-.29.317-.646.562-1.071.735a3.82 3.82 0 01-1.449.259c-.579 0-1.083-.096-1.512-.287a2.967 2.967 0 01-1.064-.777 3.168 3.168 0 01-.623-1.162 4.963 4.963 0 01-.203-1.442zm1.162 0c0 .327.04.653.119.98.08.327.208.62.385.882.177.261.408.471.693.63.285.159.632.238 1.043.238.747 0 1.309-.231 1.687-.693.378-.462.567-1.141.567-2.037 0-.336-.04-.665-.119-.987a2.608 2.608 0 00-.392-.875 2.066 2.066 0 00-.7-.63c-.285-.159-.632-.238-1.043-.238-.747 0-1.307.229-1.68.686-.373.457-.56 1.139-.56 2.044zm7.238 0c0-1.13.294-2.023.882-2.681.588-.658 1.428-.987 2.52-.987.588 0 1.094.096 1.519.287.425.191.777.45 1.057.777.28.327.488.714.623 1.162.135.448.203.929.203 1.442 0 .56-.075 1.066-.224 1.519-.15.453-.369.838-.658 1.155-.29.317-.646.562-1.071.735a3.82 3.82 0 01-1.449.259c-.579 0-1.083-.096-1.512-.287a2.967 2.967 0 01-1.064-.777 3.168 3.168 0 01-.623-1.162 4.963 4.963 0 01-.203-1.442zm1.162 0c0 .327.04.653.119.98.08.327.208.62.385.882.177.261.408.471.693.63.285.159.632.238 1.043.238.747 0 1.309-.231 1.687-.693.378-.462.567-1.141.567-2.037 0-.336-.04-.665-.119-.987a2.608 2.608 0 00-.392-.875 2.066 2.066 0 00-.7-.63c-.285-.159-.632-.238-1.043-.238-.747 0-1.307.229-1.68.686-.373.457-.56 1.139-.56 2.044zm6.874-3.5h1.666V1.414l1.092-.308V2.8h3.738v.938h-3.738v3.304c0 .681.166 1.185.497 1.512.331.327.805.49 1.421.49.42 0 .786-.08 1.099-.238.313-.159.595-.331.847-.518l.364.826a3.938 3.938 0 01-1.169.63 4.182 4.182 0 01-1.393.238 3.41 3.41 0 01-1.057-.161 2.426 2.426 0 01-.875-.497 2.38 2.38 0 01-.602-.861c-.15-.35-.224-.768-.224-1.253V3.738h-1.666V2.8zM48.23 8.918c-.168.15-.366.29-.595.42a4.39 4.39 0 01-.749.336c-.27.093-.553.166-.847.217-.294.051-.59.077-.889.077-.56 0-1.055-.086-1.484-.259a2.858 2.858 0 01-1.078-.742 3.234 3.234 0 01-.658-1.155 4.767 4.767 0 01-.224-1.512c0-.588.082-1.11.245-1.568.163-.457.399-.84.707-1.148a3.08 3.08 0 011.12-.707 4.187 4.187 0 011.47-.245c.392 0 .78.051 1.162.154.383.103.721.296 1.015.581.294.285.52.677.679 1.176.159.5.215 1.146.168 1.939h-5.418c0 .84.226 1.468.679 1.883.453.415 1.057.623 1.813.623.252 0 .502-.03.749-.091.247-.06.483-.133.707-.217a3.72 3.72 0 00.595-.28c.173-.103.306-.196.399-.28l.434.798zm-2.954-5.362c-.308 0-.6.033-.875.098a1.995 1.995 0 00-.728.329c-.21.154-.383.355-.518.602s-.222.553-.259.917h4.354c-.047-.616-.245-1.094-.595-1.435-.35-.34-.81-.511-1.379-.511zM50.148 9.8v-.938h1.89V3.738h-1.89V2.8h2.618l.224.91h.07c.317-.29.672-.537 1.064-.742.392-.205.859-.308 1.4-.308.317 0 .572.06.763.182.191.121.34.299.448.532.107.233.18.516.217.847.037.331.056.707.056 1.127l-.98.014c0-.597-.058-1.036-.175-1.316-.117-.28-.329-.42-.637-.42-.29 0-.55.042-.784.126a2.565 2.565 0 00-.609.308c-.173.121-.32.243-.441.364s-.21.224-.266.308v4.13h2.688V9.8h-5.656zm13.608-1.89a.796.796 0 00-.35-.693 2.872 2.872 0 00-.868-.392 16.056 16.056 0 00-1.127-.273 6.502 6.502 0 01-1.127-.336 2.525 2.525 0 01-.868-.567c-.233-.238-.35-.572-.35-1.001 0-.355.077-.658.231-.91a1.94 1.94 0 01.609-.623c.252-.163.546-.285.882-.364.336-.08.686-.119 1.05-.119.653 0 1.216.082 1.687.245.471.163.847.334 1.127.511l-.448.882a11.79 11.79 0 00-1.001-.483c-.36-.154-.81-.231-1.351-.231-.205 0-.408.021-.609.063-.2.042-.383.105-.546.189a1.088 1.088 0 00-.392.329.825.825 0 00-.147.497c0 .243.117.43.35.56.233.13.523.24.868.329.345.089.721.173 1.127.252.406.08.782.194 1.127.343.345.15.635.35.868.602.233.252.35.593.35 1.022 0 .644-.254 1.176-.763 1.596-.509.42-1.272.63-2.289.63-.308 0-.611-.028-.91-.084a5.52 5.52 0 01-.84-.224 5.054 5.054 0 01-.714-.315 3.002 3.002 0 01-.532-.357l.56-.91c.112.112.261.226.448.343a4.229 4.229 0 001.337.539 3.76 3.76 0 001.484.021c.22-.042.413-.107.581-.196a1.08 1.08 0 00.399-.35.914.914 0 00.147-.525z"/><path id="=" fill="#DBAF88" d="M75.376 3.402h6.496V4.41h-6.496V3.402zm0 2.296h6.496v1.008h-6.496V5.698z"/><path id="[" fill="#7E7C7B" d="M93.31 0h4.774v.98h-3.682v11.06h3.682v.98H93.31z"/><path id="function" fill="#1C85B5" d="M16.856 33.8v-.938h1.666v-5.124h-1.666V26.8h1.666v-.392c0-.877.229-1.512.686-1.904.457-.392 1.11-.588 1.96-.588.308 0 .583.019.826.056.243.037.504.112.784.224l-.252.91a2.862 2.862 0 00-.7-.203 4.295 4.295 0 00-.616-.049c-.616 0-1.036.152-1.26.455-.224.303-.336.8-.336 1.491h2.898v.938h-2.898v5.124h2.898v.938h-5.656zm12.25-7h1.988v4.774c0 .457.028.896.084 1.316h.938v.91h-1.862l-.042-1.19h-.056a2.938 2.938 0 01-.966.98c-.401.252-.887.378-1.456.378-.43 0-.796-.049-1.099-.147a1.556 1.556 0 01-.749-.511c-.196-.243-.34-.567-.434-.973-.093-.406-.14-.912-.14-1.519v-3.08h-.938V26.8h2.03v3.794c0 .383.016.726.049 1.029.033.303.1.56.203.77.103.21.254.369.455.476.2.107.469.161.805.161.485 0 .908-.159 1.267-.476.36-.317.632-.714.819-1.19v-3.626h-.896V26.8zm4.62 2.45a14.05 14.05 0 00-.063-1.176 4.657 4.657 0 00-.049-.364h-.938v-.91h1.876l.126 1.134h.07c.093-.159.217-.315.371-.469a2.91 2.91 0 011.225-.721c.252-.075.518-.112.798-.112.43 0 .81.047 1.141.14.331.093.607.259.826.497.22.238.385.56.497.966.112.406.168.922.168 1.547V33.8h-1.092v-3.808c0-.775-.126-1.358-.378-1.75-.252-.392-.71-.588-1.372-.588-.243 0-.478.049-.707.147a2.44 2.44 0 00-.623.385c-.187.159-.35.343-.49.553-.14.21-.243.432-.308.665V33.8h-1.078v-4.55zm13.244-1.372a5.531 5.531 0 00-.693-.189 3.61 3.61 0 00-.735-.077c-.915 0-1.596.215-2.044.644-.448.43-.672 1.11-.672 2.044 0 .41.065.777.196 1.099.13.322.317.595.56.819.243.224.534.397.875.518.34.121.716.182 1.127.182.439 0 .866-.075 1.281-.224.415-.15.763-.345 1.043-.588l.49.812c-.13.112-.294.229-.49.35a4.837 4.837 0 01-1.533.602 4.962 4.962 0 01-1.015.098c-.607 0-1.141-.086-1.603-.259a3.045 3.045 0 01-1.155-.742 3.176 3.176 0 01-.7-1.162 4.525 4.525 0 01-.238-1.505c0-.588.082-1.11.245-1.568.163-.457.399-.84.707-1.148a3.08 3.08 0 011.12-.707 4.187 4.187 0 011.47-.245c.69 0 1.253.06 1.687.182.434.121.8.257 1.099.406l-.014.042v1.946H46.97v-1.33zm2.688-1.078h1.666v-1.386l1.092-.308V26.8h3.738v.938h-3.738v3.304c0 .681.166 1.185.497 1.512.331.327.805.49 1.421.49.42 0 .786-.08 1.099-.238.313-.159.595-.331.847-.518l.364.826a3.938 3.938 0 01-1.169.63 4.182 4.182 0 01-1.393.238 3.41 3.41 0 01-1.057-.161 2.426 2.426 0 01-.875-.497 2.38 2.38 0 01-.602-.861c-.15-.35-.224-.768-.224-1.253v-3.472h-1.666V26.8zm9.436 7v-.938h2.436v-5.124h-2.436V26.8h3.556v6.062h2.38v.938h-5.936zm2.058-8.988c0-.252.084-.469.252-.651a.838.838 0 01.644-.273c.27 0 .497.091.679.273a.889.889 0 01.273.651.806.806 0 01-.273.616.963.963 0 01-.679.252.872.872 0 01-.644-.252.838.838 0 01-.252-.616zm5.67 5.488c0-1.13.294-2.023.882-2.681.588-.658 1.428-.987 2.52-.987.588 0 1.094.096 1.519.287.425.191.777.45 1.057.777.28.327.488.714.623 1.162.135.448.203.929.203 1.442 0 .56-.075 1.066-.224 1.519-.15.453-.369.838-.658 1.155-.29.317-.646.562-1.071.735a3.82 3.82 0 01-1.449.259c-.579 0-1.083-.096-1.512-.287a2.967 2.967 0 01-1.064-.777 3.168 3.168 0 01-.623-1.162 4.963 4.963 0 01-.203-1.442zm1.162 0c0 .327.04.653.119.98.08.327.208.62.385.882.177.261.408.471.693.63.285.159.632.238 1.043.238.747 0 1.309-.231 1.687-.693.378-.462.567-1.141.567-2.037 0-.336-.04-.665-.119-.987a2.608 2.608 0 00-.392-.875 2.066 2.066 0 00-.7-.63c-.285-.159-.632-.238-1.043-.238-.747 0-1.307.229-1.68.686-.373.457-.56 1.139-.56 2.044zm7.742-1.05a14.05 14.05 0 00-.063-1.176 4.657 4.657 0 00-.049-.364h-.938v-.91h1.876l.126 1.134h.07c.093-.159.217-.315.371-.469a2.91 2.91 0 011.225-.721c.252-.075.518-.112.798-.112.43 0 .81.047 1.141.14.331.093.607.259.826.497.22.238.385.56.497.966.112.406.168.922.168 1.547V33.8h-1.092v-3.808c0-.775-.126-1.358-.378-1.75-.252-.392-.71-.588-1.372-.588-.243 0-.478.049-.707.147a2.44 2.44 0 00-.623.385c-.187.159-.35.343-.49.553-.14.21-.243.432-.308.665V33.8h-1.078v-4.55z"/><path id="(){" fill="#7E7C7B" d="M97.272 36.768a6.964 6.964 0 01-1.757-.707 5.036 5.036 0 01-1.428-1.225c-.406-.504-.728-1.12-.966-1.848s-.357-1.591-.357-2.59c0-.99.121-1.855.364-2.597s.57-1.372.98-1.89c.41-.518.889-.933 1.435-1.246A6.005 6.005 0 0197.272 24l.35.882a7.086 7.086 0 00-1.512.623 3.928 3.928 0 00-1.183 1.022c-.331.425-.588.952-.77 1.582-.182.63-.273 1.393-.273 2.289 0 .905.11 1.678.329 2.317.22.64.509 1.171.868 1.596.36.425.76.756 1.204.994.443.238.889.404 1.337.497l-.35.966zm4.354-.966a4.965 4.965 0 001.337-.497 4.15 4.15 0 001.204-.994c.36-.425.649-.957.868-1.596.22-.64.329-1.412.329-2.317 0-.896-.091-1.659-.273-2.289-.182-.63-.439-1.157-.77-1.582a3.928 3.928 0 00-1.183-1.022 7.086 7.086 0 00-1.512-.623l.35-.882c.607.13 1.183.352 1.729.665a4.984 4.984 0 011.435 1.246c.41.518.737 1.148.98 1.89s.364 1.608.364 2.597c0 .999-.119 1.862-.357 2.59-.238.728-.56 1.344-.966 1.848a5.036 5.036 0 01-1.428 1.225 6.964 6.964 0 01-1.757.707l-.35-.966zm17.878-2.45c0-.401-.068-.749-.203-1.043a2.44 2.44 0 00-.504-.735c-.2-.196-.415-.34-.644-.434a1.641 1.641 0 00-.609-.14v-.98c.177 0 .38-.04.609-.119.229-.08.443-.21.644-.392.2-.182.369-.418.504-.707.135-.29.203-.649.203-1.078v-1.428c0-.336.054-.644.161-.924a2.22 2.22 0 01.448-.728c.191-.205.42-.366.686-.483.266-.117.558-.175.875-.175h2.03v.98h-1.54c-.588 0-.996.14-1.225.42-.229.28-.343.695-.343 1.246v1.358c0 .383-.07.723-.21 1.022a2.7 2.7 0 01-1.106 1.225c-.205.117-.373.184-.504.203v.084c.121.019.285.091.49.217.205.126.406.299.602.518.196.22.366.478.511.777.145.299.217.63.217.994v1.344c0 .57.121.99.364 1.26s.649.406 1.218.406h1.526v.98h-2.03c-.653 0-1.178-.194-1.575-.581-.397-.387-.595-.959-.595-1.715v-1.372z"/><path id="alert" fill="#181717" d="M134.736 27.346a4.447 4.447 0 011.358-.504 7.423 7.423 0 011.484-.154c.476 0 .866.075 1.169.224.303.15.541.343.714.581.173.238.29.509.35.812.06.303.091.609.091.917 0 .355-.01.733-.028 1.134-.019.401-.033.803-.042 1.204 0 .467.028.91.084 1.33h.938v.91h-1.862l-.126-1.05h-.07c-.056.084-.14.191-.252.322-.112.13-.259.259-.441.385a2.749 2.749 0 01-1.589.469c-.69 0-1.237-.177-1.638-.532-.401-.355-.602-.84-.602-1.456 0-.476.105-.873.315-1.19.21-.317.511-.56.903-.728.392-.168.866-.266 1.421-.294a9.544 9.544 0 011.869.112c.047-.43.054-.786.021-1.071-.033-.285-.107-.511-.224-.679a.938.938 0 00-.49-.357 2.482 2.482 0 00-.777-.105c-.42 0-.821.058-1.204.175-.383.117-.723.236-1.022.357l-.35-.812zm2.058 5.642c.261 0 .504-.042.728-.126a2.22 2.22 0 00.588-.322 2.133 2.133 0 00.672-.868v-.98a7.92 7.92 0 00-1.344-.126c-.41 0-.765.044-1.064.133-.299.089-.532.226-.7.413-.168.187-.252.43-.252.728 0 .308.105.576.315.805.21.229.562.343 1.057.343zM143.29 24h2.324v7.448c0 .57.096.97.287 1.204.191.233.474.35.847.35.261 0 .511-.047.749-.14.238-.093.502-.252.791-.476l.504.77c-.15.13-.313.247-.49.35a3.638 3.638 0 01-1.106.42 2.963 2.963 0 01-1.442-.077 1.579 1.579 0 01-.679-.427 1.897 1.897 0 01-.413-.777c-.093-.322-.14-.721-.14-1.197v-6.51h-1.232V24zm14.14 8.918c-.168.15-.366.29-.595.42a4.39 4.39 0 01-.749.336c-.27.093-.553.166-.847.217-.294.051-.59.077-.889.077-.56 0-1.055-.086-1.484-.259a2.858 2.858 0 01-1.078-.742 3.234 3.234 0 01-.658-1.155 4.767 4.767 0 01-.224-1.512c0-.588.082-1.11.245-1.568.163-.457.399-.84.707-1.148a3.08 3.08 0 011.12-.707 4.187 4.187 0 011.47-.245c.392 0 .78.051 1.162.154.383.103.721.296 1.015.581.294.285.52.677.679 1.176.159.5.215 1.146.168 1.939h-5.418c0 .84.226 1.468.679 1.883.453.415 1.057.623 1.813.623.252 0 .502-.03.749-.091.247-.06.483-.133.707-.217a3.72 3.72 0 00.595-.28c.173-.103.306-.196.399-.28l.434.798zm-2.954-5.362c-.308 0-.6.033-.875.098a1.995 1.995 0 00-.728.329c-.21.154-.383.355-.518.602s-.222.553-.259.917h4.354c-.047-.616-.245-1.094-.595-1.435-.35-.34-.81-.511-1.379-.511zm4.872 6.244v-.938h1.89v-5.124h-1.89V26.8h2.618l.224.91h.07c.317-.29.672-.537 1.064-.742.392-.205.859-.308 1.4-.308.317 0 .572.06.763.182.191.121.34.299.448.532.107.233.18.516.217.847.037.331.056.707.056 1.127l-.98.014c0-.597-.058-1.036-.175-1.316-.117-.28-.329-.42-.637-.42-.29 0-.55.042-.784.126a2.565 2.565 0 00-.609.308c-.173.121-.32.243-.441.364s-.21.224-.266.308v4.13h2.688v.938h-5.656zm7.91-7h1.666v-1.386l1.092-.308V26.8h3.738v.938h-3.738v3.304c0 .681.166 1.185.497 1.512.331.327.805.49 1.421.49.42 0 .786-.08 1.099-.238.313-.159.595-.331.847-.518l.364.826a3.938 3.938 0 01-1.169.63 4.182 4.182 0 01-1.393.238 3.41 3.41 0 01-1.057-.161 2.426 2.426 0 01-.875-.497 2.38 2.38 0 01-.602-.861c-.15-.35-.224-.768-.224-1.253v-3.472h-1.666V26.8z"/><path id="(" fill="#7E7C7B" d="M181.272 36.768a6.964 6.964 0 01-1.757-.707 5.036 5.036 0 01-1.428-1.225c-.406-.504-.728-1.12-.966-1.848s-.357-1.591-.357-2.59c0-.99.121-1.855.364-2.597s.57-1.372.98-1.89c.41-.518.889-.933 1.435-1.246a6.005 6.005 0 011.729-.665l.35.882a7.086 7.086 0 00-1.512.623 3.928 3.928 0 00-1.183 1.022c-.331.425-.588.952-.77 1.582-.182.63-.273 1.393-.273 2.289 0 .905.11 1.678.329 2.317.22.64.509 1.171.868 1.596.36.425.76.756 1.204.994.443.238.889.404 1.337.497l-.35.966z"/><path id="i" fill="#181717" d="M185.094 33.8v-.938h2.436v-5.124h-2.436V26.8h3.556v6.062h2.38v.938h-5.936zm2.058-8.988c0-.252.084-.469.252-.651a.838.838 0 01.644-.273c.27 0 .497.091.679.273a.889.889 0 01.273.651.806.806 0 01-.273.616.963.963 0 01-.679.252.872.872 0 01-.644-.252.838.838 0 01-.252-.616z"/><path id=");}," fill="#7E7C7B" d="M194.026 35.802a4.965 4.965 0 001.337-.497 4.15 4.15 0 001.204-.994c.36-.425.649-.957.868-1.596.22-.64.329-1.412.329-2.317 0-.896-.091-1.659-.273-2.289-.182-.63-.439-1.157-.77-1.582a3.928 3.928 0 00-1.183-1.022 7.086 7.086 0 00-1.512-.623l.35-.882c.607.13 1.183.352 1.729.665a4.984 4.984 0 011.435 1.246c.41.518.737 1.148.98 1.89s.364 1.608.364 2.597c0 .999-.119 1.862-.357 2.59-.238.728-.56 1.344-.966 1.848a5.036 5.036 0 01-1.428 1.225 6.964 6.964 0 01-1.757.707l-.35-.966zm9.604-2.772c0-.28.091-.506.273-.679.182-.173.418-.259.707-.259.355 0 .63.124.826.371.196.247.294.595.294 1.043a2.36 2.36 0 01-.637 1.659 2.465 2.465 0 01-.588.462c-.21.117-.404.203-.581.259l-.35-.546c.336-.13.625-.317.868-.56.243-.243.364-.537.364-.882-.13.028-.233.042-.308.042-.27 0-.483-.077-.637-.231-.154-.154-.231-.38-.231-.679zm.126-5.502c0-.299.084-.53.252-.693.168-.163.392-.245.672-.245.299 0 .532.082.7.245.168.163.252.394.252.693 0 .27-.084.495-.252.672-.168.177-.401.266-.7.266-.28 0-.504-.089-.672-.266a.938.938 0 01-.252-.672zm18.788 7.196c0 .756-.198 1.328-.595 1.715-.397.387-.922.581-1.575.581h-2.03v-.98h1.526c.57 0 .975-.135 1.218-.406.243-.27.364-.69.364-1.26V33.03c0-.364.07-.695.21-.994.14-.299.308-.558.504-.777.196-.22.397-.392.602-.518.205-.126.373-.198.504-.217v-.084c-.13-.019-.299-.086-.504-.203a2.7 2.7 0 01-1.106-1.225c-.14-.299-.21-.64-.21-1.022v-1.358c0-.55-.114-.966-.343-1.246-.229-.28-.637-.42-1.225-.42h-1.54v-.98h2.03c.317 0 .609.058.875.175.266.117.495.278.686.483.191.205.34.448.448.728.107.28.161.588.161.924v1.428c0 .43.068.789.203 1.078.135.29.303.525.504.707.2.182.415.313.644.392.229.08.432.119.609.119V31c-.177 0-.38.047-.609.14a2.011 2.011 0 00-.644.434 2.44 2.44 0 00-.504.735c-.135.294-.203.642-.203 1.043v1.372zm6.286-1.694c0-.28.091-.506.273-.679.182-.173.418-.259.707-.259.355 0 .63.124.826.371.196.247.294.595.294 1.043a2.36 2.36 0 01-.637 1.659 2.465 2.465 0 01-.588.462c-.21.117-.404.203-.581.259l-.35-.546c.336-.13.625-.317.868-.56.243-.243.364-.537.364-.882-.13.028-.233.042-.308.042-.27 0-.483-.077-.637-.231-.154-.154-.231-.38-.231-.679z"/><path id="function" fill="#1C85B5" d="M16.856 57.8v-.938h1.666v-5.124h-1.666V50.8h1.666v-.392c0-.877.229-1.512.686-1.904.457-.392 1.11-.588 1.96-.588.308 0 .583.019.826.056.243.037.504.112.784.224l-.252.91a2.862 2.862 0 00-.7-.203 4.295 4.295 0 00-.616-.049c-.616 0-1.036.152-1.26.455-.224.303-.336.8-.336 1.491h2.898v.938h-2.898v5.124h2.898v.938h-5.656zm12.25-7h1.988v4.774c0 .457.028.896.084 1.316h.938v.91h-1.862l-.042-1.19h-.056a2.938 2.938 0 01-.966.98c-.401.252-.887.378-1.456.378-.43 0-.796-.049-1.099-.147a1.556 1.556 0 01-.749-.511c-.196-.243-.34-.567-.434-.973-.093-.406-.14-.912-.14-1.519v-3.08h-.938V50.8h2.03v3.794c0 .383.016.726.049 1.029.033.303.1.56.203.77.103.21.254.369.455.476.2.107.469.161.805.161.485 0 .908-.159 1.267-.476.36-.317.632-.714.819-1.19v-3.626h-.896V50.8zm4.62 2.45a14.05 14.05 0 00-.063-1.176 4.657 4.657 0 00-.049-.364h-.938v-.91h1.876l.126 1.134h.07c.093-.159.217-.315.371-.469a2.91 2.91 0 011.225-.721c.252-.075.518-.112.798-.112.43 0 .81.047 1.141.14.331.093.607.259.826.497.22.238.385.56.497.966.112.406.168.922.168 1.547V57.8h-1.092v-3.808c0-.775-.126-1.358-.378-1.75-.252-.392-.71-.588-1.372-.588-.243 0-.478.049-.707.147a2.44 2.44 0 00-.623.385c-.187.159-.35.343-.49.553-.14.21-.243.432-.308.665V57.8h-1.078v-4.55zm13.244-1.372a5.531 5.531 0 00-.693-.189 3.61 3.61 0 00-.735-.077c-.915 0-1.596.215-2.044.644-.448.43-.672 1.11-.672 2.044 0 .41.065.777.196 1.099.13.322.317.595.56.819.243.224.534.397.875.518.34.121.716.182 1.127.182.439 0 .866-.075 1.281-.224.415-.15.763-.345 1.043-.588l.49.812c-.13.112-.294.229-.49.35a4.837 4.837 0 01-1.533.602 4.962 4.962 0 01-1.015.098c-.607 0-1.141-.086-1.603-.259a3.045 3.045 0 01-1.155-.742 3.176 3.176 0 01-.7-1.162 4.525 4.525 0 01-.238-1.505c0-.588.082-1.11.245-1.568.163-.457.399-.84.707-1.148a3.08 3.08 0 011.12-.707 4.187 4.187 0 011.47-.245c.69 0 1.253.06 1.687.182.434.121.8.257 1.099.406l-.014.042v1.946H46.97v-1.33zm2.688-1.078h1.666v-1.386l1.092-.308V50.8h3.738v.938h-3.738v3.304c0 .681.166 1.185.497 1.512.331.327.805.49 1.421.49.42 0 .786-.08 1.099-.238.313-.159.595-.331.847-.518l.364.826a3.938 3.938 0 01-1.169.63 4.182 4.182 0 01-1.393.238 3.41 3.41 0 01-1.057-.161 2.426 2.426 0 01-.875-.497 2.38 2.38 0 01-.602-.861c-.15-.35-.224-.768-.224-1.253v-3.472h-1.666V50.8zm9.436 7v-.938h2.436v-5.124h-2.436V50.8h3.556v6.062h2.38v.938h-5.936zm2.058-8.988c0-.252.084-.469.252-.651a.838.838 0 01.644-.273c.27 0 .497.091.679.273a.889.889 0 01.273.651.806.806 0 01-.273.616.963.963 0 01-.679.252.872.872 0 01-.644-.252.838.838 0 01-.252-.616zm5.67 5.488c0-1.13.294-2.023.882-2.681.588-.658 1.428-.987 2.52-.987.588 0 1.094.096 1.519.287.425.191.777.45 1.057.777.28.327.488.714.623 1.162.135.448.203.929.203 1.442 0 .56-.075 1.066-.224 1.519-.15.453-.369.838-.658 1.155-.29.317-.646.562-1.071.735a3.82 3.82 0 01-1.449.259c-.579 0-1.083-.096-1.512-.287a2.967 2.967 0 01-1.064-.777 3.168 3.168 0 01-.623-1.162 4.963 4.963 0 01-.203-1.442zm1.162 0c0 .327.04.653.119.98.08.327.208.62.385.882.177.261.408.471.693.63.285.159.632.238 1.043.238.747 0 1.309-.231 1.687-.693.378-.462.567-1.141.567-2.037 0-.336-.04-.665-.119-.987a2.608 2.608 0 00-.392-.875 2.066 2.066 0 00-.7-.63c-.285-.159-.632-.238-1.043-.238-.747 0-1.307.229-1.68.686-.373.457-.56 1.139-.56 2.044zm7.742-1.05a14.05 14.05 0 00-.063-1.176 4.657 4.657 0 00-.049-.364h-.938v-.91h1.876l.126 1.134h.07c.093-.159.217-.315.371-.469a2.91 2.91 0 011.225-.721c.252-.075.518-.112.798-.112.43 0 .81.047 1.141.14.331.093.607.259.826.497.22.238.385.56.497.966.112.406.168.922.168 1.547V57.8h-1.092v-3.808c0-.775-.126-1.358-.378-1.75-.252-.392-.71-.588-1.372-.588-.243 0-.478.049-.707.147a2.44 2.44 0 00-.623.385c-.187.159-.35.343-.49.553-.14.21-.243.432-.308.665V57.8h-1.078v-4.55z"/><path id="(){" fill="#7E7C7B" d="M97.272 60.768a6.964 6.964 0 01-1.757-.707 5.036 5.036 0 01-1.428-1.225c-.406-.504-.728-1.12-.966-1.848s-.357-1.591-.357-2.59c0-.99.121-1.855.364-2.597s.57-1.372.98-1.89c.41-.518.889-.933 1.435-1.246A6.005 6.005 0 0197.272 48l.35.882a7.086 7.086 0 00-1.512.623 3.928 3.928 0 00-1.183 1.022c-.331.425-.588.952-.77 1.582-.182.63-.273 1.393-.273 2.289 0 .905.11 1.678.329 2.317.22.64.509 1.171.868 1.596.36.425.76.756 1.204.994.443.238.889.404 1.337.497l-.35.966zm4.354-.966a4.965 4.965 0 001.337-.497 4.15 4.15 0 001.204-.994c.36-.425.649-.957.868-1.596.22-.64.329-1.412.329-2.317 0-.896-.091-1.659-.273-2.289-.182-.63-.439-1.157-.77-1.582a3.928 3.928 0 00-1.183-1.022 7.086 7.086 0 00-1.512-.623l.35-.882c.607.13 1.183.352 1.729.665a4.984 4.984 0 011.435 1.246c.41.518.737 1.148.98 1.89s.364 1.608.364 2.597c0 .999-.119 1.862-.357 2.59-.238.728-.56 1.344-.966 1.848a5.036 5.036 0 01-1.428 1.225 6.964 6.964 0 01-1.757.707l-.35-.966zm17.878-2.45c0-.401-.068-.749-.203-1.043a2.44 2.44 0 00-.504-.735c-.2-.196-.415-.34-.644-.434a1.641 1.641 0 00-.609-.14v-.98c.177 0 .38-.04.609-.119.229-.08.443-.21.644-.392.2-.182.369-.418.504-.707.135-.29.203-.649.203-1.078v-1.428c0-.336.054-.644.161-.924a2.22 2.22 0 01.448-.728c.191-.205.42-.366.686-.483.266-.117.558-.175.875-.175h2.03v.98h-1.54c-.588 0-.996.14-1.225.42-.229.28-.343.695-.343 1.246v1.358c0 .383-.07.723-.21 1.022a2.7 2.7 0 01-1.106 1.225c-.205.117-.373.184-.504.203v.084c.121.019.285.091.49.217.205.126.406.299.602.518.196.22.366.478.511.777.145.299.217.63.217.994v1.344c0 .57.121.99.364 1.26s.649.406 1.218.406h1.526v.98h-2.03c-.653 0-1.178-.194-1.575-.581-.397-.387-.595-.959-.595-1.715v-1.372z"/><path id="alert" fill="#181717" d="M134.736 51.346a4.447 4.447 0 011.358-.504 7.423 7.423 0 011.484-.154c.476 0 .866.075 1.169.224.303.15.541.343.714.581.173.238.29.509.35.812.06.303.091.609.091.917 0 .355-.01.733-.028 1.134-.019.401-.033.803-.042 1.204 0 .467.028.91.084 1.33h.938v.91h-1.862l-.126-1.05h-.07c-.056.084-.14.191-.252.322-.112.13-.259.259-.441.385a2.749 2.749 0 01-1.589.469c-.69 0-1.237-.177-1.638-.532-.401-.355-.602-.84-.602-1.456 0-.476.105-.873.315-1.19.21-.317.511-.56.903-.728.392-.168.866-.266 1.421-.294a9.544 9.544 0 011.869.112c.047-.43.054-.786.021-1.071-.033-.285-.107-.511-.224-.679a.938.938 0 00-.49-.357 2.482 2.482 0 00-.777-.105c-.42 0-.821.058-1.204.175-.383.117-.723.236-1.022.357l-.35-.812zm2.058 5.642c.261 0 .504-.042.728-.126a2.22 2.22 0 00.588-.322 2.133 2.133 0 00.672-.868v-.98a7.92 7.92 0 00-1.344-.126c-.41 0-.765.044-1.064.133-.299.089-.532.226-.7.413-.168.187-.252.43-.252.728 0 .308.105.576.315.805.21.229.562.343 1.057.343zM143.29 48h2.324v7.448c0 .57.096.97.287 1.204.191.233.474.35.847.35.261 0 .511-.047.749-.14.238-.093.502-.252.791-.476l.504.77c-.15.13-.313.247-.49.35a3.638 3.638 0 01-1.106.42 2.963 2.963 0 01-1.442-.077 1.579 1.579 0 01-.679-.427 1.897 1.897 0 01-.413-.777c-.093-.322-.14-.721-.14-1.197v-6.51h-1.232V48zm14.14 8.918c-.168.15-.366.29-.595.42a4.39 4.39 0 01-.749.336c-.27.093-.553.166-.847.217-.294.051-.59.077-.889.077-.56 0-1.055-.086-1.484-.259a2.858 2.858 0 01-1.078-.742 3.234 3.234 0 01-.658-1.155 4.767 4.767 0 01-.224-1.512c0-.588.082-1.11.245-1.568.163-.457.399-.84.707-1.148a3.08 3.08 0 011.12-.707 4.187 4.187 0 011.47-.245c.392 0 .78.051 1.162.154.383.103.721.296 1.015.581.294.285.52.677.679 1.176.159.5.215 1.146.168 1.939h-5.418c0 .84.226 1.468.679 1.883.453.415 1.057.623 1.813.623.252 0 .502-.03.749-.091.247-.06.483-.133.707-.217a3.72 3.72 0 00.595-.28c.173-.103.306-.196.399-.28l.434.798zm-2.954-5.362c-.308 0-.6.033-.875.098a1.995 1.995 0 00-.728.329c-.21.154-.383.355-.518.602s-.222.553-.259.917h4.354c-.047-.616-.245-1.094-.595-1.435-.35-.34-.81-.511-1.379-.511zm4.872 6.244v-.938h1.89v-5.124h-1.89V50.8h2.618l.224.91h.07c.317-.29.672-.537 1.064-.742.392-.205.859-.308 1.4-.308.317 0 .572.06.763.182.191.121.34.299.448.532.107.233.18.516.217.847.037.331.056.707.056 1.127l-.98.014c0-.597-.058-1.036-.175-1.316-.117-.28-.329-.42-.637-.42-.29 0-.55.042-.784.126a2.565 2.565 0 00-.609.308c-.173.121-.32.243-.441.364s-.21.224-.266.308v4.13h2.688v.938h-5.656zm7.91-7h1.666v-1.386l1.092-.308V50.8h3.738v.938h-3.738v3.304c0 .681.166 1.185.497 1.512.331.327.805.49 1.421.49.42 0 .786-.08 1.099-.238.313-.159.595-.331.847-.518l.364.826a3.938 3.938 0 01-1.169.63 4.182 4.182 0 01-1.393.238 3.41 3.41 0 01-1.057-.161 2.426 2.426 0 01-.875-.497 2.38 2.38 0 01-.602-.861c-.15-.35-.224-.768-.224-1.253v-3.472h-1.666V50.8z"/><path id="(" fill="#7E7C7B" d="M181.272 60.768a6.964 6.964 0 01-1.757-.707 5.036 5.036 0 01-1.428-1.225c-.406-.504-.728-1.12-.966-1.848s-.357-1.591-.357-2.59c0-.99.121-1.855.364-2.597s.57-1.372.98-1.89c.41-.518.889-.933 1.435-1.246a6.005 6.005 0 011.729-.665l.35.882a7.086 7.086 0 00-1.512.623 3.928 3.928 0 00-1.183 1.022c-.331.425-.588.952-.77 1.582-.182.63-.273 1.393-.273 2.289 0 .905.11 1.678.329 2.317.22.64.509 1.171.868 1.596.36.425.76.756 1.204.994.443.238.889.404 1.337.497l-.35.966z"/><path id="i" fill="#181717" d="M185.094 57.8v-.938h2.436v-5.124h-2.436V50.8h3.556v6.062h2.38v.938h-5.936zm2.058-8.988c0-.252.084-.469.252-.651a.838.838 0 01.644-.273c.27 0 .497.091.679.273a.889.889 0 01.273.651.806.806 0 01-.273.616.963.963 0 01-.679.252.872.872 0 01-.644-.252.838.838 0 01-.252-.616z"/><path id=");}," fill="#7E7C7B" d="M194.026 59.802a4.965 4.965 0 001.337-.497 4.15 4.15 0 001.204-.994c.36-.425.649-.957.868-1.596.22-.64.329-1.412.329-2.317 0-.896-.091-1.659-.273-2.289-.182-.63-.439-1.157-.77-1.582a3.928 3.928 0 00-1.183-1.022 7.086 7.086 0 00-1.512-.623l.35-.882c.607.13 1.183.352 1.729.665a4.984 4.984 0 011.435 1.246c.41.518.737 1.148.98 1.89s.364 1.608.364 2.597c0 .999-.119 1.862-.357 2.59-.238.728-.56 1.344-.966 1.848a5.036 5.036 0 01-1.428 1.225 6.964 6.964 0 01-1.757.707l-.35-.966zm9.604-2.772c0-.28.091-.506.273-.679.182-.173.418-.259.707-.259.355 0 .63.124.826.371.196.247.294.595.294 1.043a2.36 2.36 0 01-.637 1.659 2.465 2.465 0 01-.588.462c-.21.117-.404.203-.581.259l-.35-.546c.336-.13.625-.317.868-.56.243-.243.364-.537.364-.882-.13.028-.233.042-.308.042-.27 0-.483-.077-.637-.231-.154-.154-.231-.38-.231-.679zm.126-5.502c0-.299.084-.53.252-.693.168-.163.392-.245.672-.245.299 0 .532.082.7.245.168.163.252.394.252.693 0 .27-.084.495-.252.672-.168.177-.401.266-.7.266-.28 0-.504-.089-.672-.266a.938.938 0 01-.252-.672zm18.788 7.196c0 .756-.198 1.328-.595 1.715-.397.387-.922.581-1.575.581h-2.03v-.98h1.526c.57 0 .975-.135 1.218-.406.243-.27.364-.69.364-1.26V57.03c0-.364.07-.695.21-.994.14-.299.308-.558.504-.777.196-.22.397-.392.602-.518.205-.126.373-.198.504-.217v-.084c-.13-.019-.299-.086-.504-.203a2.7 2.7 0 01-1.106-1.225c-.14-.299-.21-.64-.21-1.022v-1.358c0-.55-.114-.966-.343-1.246-.229-.28-.637-.42-1.225-.42h-1.54v-.98h2.03c.317 0 .609.058.875.175.266.117.495.278.686.483.191.205.34.448.448.728.107.28.161.588.161.924v1.428c0 .43.068.789.203 1.078.135.29.303.525.504.707.2.182.415.313.644.392.229.08.432.119.609.119V55c-.177 0-.38.047-.609.14a2.011 2.011 0 00-.644.434 2.44 2.44 0 00-.504.735c-.135.294-.203.642-.203 1.043v1.372zm6.286-1.694c0-.28.091-.506.273-.679.182-.173.418-.259.707-.259.355 0 .63.124.826.371.196.247.294.595.294 1.043a2.36 2.36 0 01-.637 1.659 2.465 2.465 0 01-.588.462c-.21.117-.404.203-.581.259l-.35-.546c.336-.13.625-.317.868-.56.243-.243.364-.537.364-.882-.13.028-.233.042-.308.042-.27 0-.483-.077-.637-.231-.154-.154-.231-.38-.231-.679z"/><path id="function" fill="#1C85B5" d="M16.856 81.8v-.938h1.666v-5.124h-1.666V74.8h1.666v-.392c0-.877.229-1.512.686-1.904.457-.392 1.11-.588 1.96-.588.308 0 .583.019.826.056.243.037.504.112.784.224l-.252.91a2.862 2.862 0 00-.7-.203 4.295 4.295 0 00-.616-.049c-.616 0-1.036.152-1.26.455-.224.303-.336.8-.336 1.491h2.898v.938h-2.898v5.124h2.898v.938h-5.656zm12.25-7h1.988v4.774c0 .457.028.896.084 1.316h.938v.91h-1.862l-.042-1.19h-.056a2.938 2.938 0 01-.966.98c-.401.252-.887.378-1.456.378-.43 0-.796-.049-1.099-.147a1.556 1.556 0 01-.749-.511c-.196-.243-.34-.567-.434-.973-.093-.406-.14-.912-.14-1.519v-3.08h-.938V74.8h2.03v3.794c0 .383.016.726.049 1.029.033.303.1.56.203.77.103.21.254.369.455.476.2.107.469.161.805.161.485 0 .908-.159 1.267-.476.36-.317.632-.714.819-1.19v-3.626h-.896V74.8zm4.62 2.45a14.05 14.05 0 00-.063-1.176 4.657 4.657 0 00-.049-.364h-.938v-.91h1.876l.126 1.134h.07c.093-.159.217-.315.371-.469a2.91 2.91 0 011.225-.721c.252-.075.518-.112.798-.112.43 0 .81.047 1.141.14.331.093.607.259.826.497.22.238.385.56.497.966.112.406.168.922.168 1.547V81.8h-1.092v-3.808c0-.775-.126-1.358-.378-1.75-.252-.392-.71-.588-1.372-.588-.243 0-.478.049-.707.147a2.44 2.44 0 00-.623.385c-.187.159-.35.343-.49.553-.14.21-.243.432-.308.665V81.8h-1.078v-4.55zm13.244-1.372a5.531 5.531 0 00-.693-.189 3.61 3.61 0 00-.735-.077c-.915 0-1.596.215-2.044.644-.448.43-.672 1.11-.672 2.044 0 .41.065.777.196 1.099.13.322.317.595.56.819.243.224.534.397.875.518.34.121.716.182 1.127.182.439 0 .866-.075 1.281-.224.415-.15.763-.345 1.043-.588l.49.812c-.13.112-.294.229-.49.35a4.837 4.837 0 01-1.533.602 4.962 4.962 0 01-1.015.098c-.607 0-1.141-.086-1.603-.259a3.045 3.045 0 01-1.155-.742 3.176 3.176 0 01-.7-1.162 4.525 4.525 0 01-.238-1.505c0-.588.082-1.11.245-1.568.163-.457.399-.84.707-1.148a3.08 3.08 0 011.12-.707 4.187 4.187 0 011.47-.245c.69 0 1.253.06 1.687.182.434.121.8.257 1.099.406l-.014.042v1.946H46.97v-1.33zm2.688-1.078h1.666v-1.386l1.092-.308V74.8h3.738v.938h-3.738v3.304c0 .681.166 1.185.497 1.512.331.327.805.49 1.421.49.42 0 .786-.08 1.099-.238.313-.159.595-.331.847-.518l.364.826a3.938 3.938 0 01-1.169.63 4.182 4.182 0 01-1.393.238 3.41 3.41 0 01-1.057-.161 2.426 2.426 0 01-.875-.497 2.38 2.38 0 01-.602-.861c-.15-.35-.224-.768-.224-1.253v-3.472h-1.666V74.8zm9.436 7v-.938h2.436v-5.124h-2.436V74.8h3.556v6.062h2.38v.938h-5.936zm2.058-8.988c0-.252.084-.469.252-.651a.838.838 0 01.644-.273c.27 0 .497.091.679.273a.889.889 0 01.273.651.806.806 0 01-.273.616.963.963 0 01-.679.252.872.872 0 01-.644-.252.838.838 0 01-.252-.616zm5.67 5.488c0-1.13.294-2.023.882-2.681.588-.658 1.428-.987 2.52-.987.588 0 1.094.096 1.519.287.425.191.777.45 1.057.777.28.327.488.714.623 1.162.135.448.203.929.203 1.442 0 .56-.075 1.066-.224 1.519-.15.453-.369.838-.658 1.155-.29.317-.646.562-1.071.735a3.82 3.82 0 01-1.449.259c-.579 0-1.083-.096-1.512-.287a2.967 2.967 0 01-1.064-.777 3.168 3.168 0 01-.623-1.162 4.963 4.963 0 01-.203-1.442zm1.162 0c0 .327.04.653.119.98.08.327.208.62.385.882.177.261.408.471.693.63.285.159.632.238 1.043.238.747 0 1.309-.231 1.687-.693.378-.462.567-1.141.567-2.037 0-.336-.04-.665-.119-.987a2.608 2.608 0 00-.392-.875 2.066 2.066 0 00-.7-.63c-.285-.159-.632-.238-1.043-.238-.747 0-1.307.229-1.68.686-.373.457-.56 1.139-.56 2.044zm7.742-1.05a14.05 14.05 0 00-.063-1.176 4.657 4.657 0 00-.049-.364h-.938v-.91h1.876l.126 1.134h.07c.093-.159.217-.315.371-.469a2.91 2.91 0 011.225-.721c.252-.075.518-.112.798-.112.43 0 .81.047 1.141.14.331.093.607.259.826.497.22.238.385.56.497.966.112.406.168.922.168 1.547V81.8h-1.092v-3.808c0-.775-.126-1.358-.378-1.75-.252-.392-.71-.588-1.372-.588-.243 0-.478.049-.707.147a2.44 2.44 0 00-.623.385c-.187.159-.35.343-.49.553-.14.21-.243.432-.308.665V81.8h-1.078v-4.55z"/><path id="(){" fill="#7E7C7B" d="M97.272 84.768a6.964 6.964 0 01-1.757-.707 5.036 5.036 0 01-1.428-1.225c-.406-.504-.728-1.12-.966-1.848s-.357-1.591-.357-2.59c0-.99.121-1.855.364-2.597s.57-1.372.98-1.89c.41-.518.889-.933 1.435-1.246A6.005 6.005 0 0197.272 72l.35.882a7.086 7.086 0 00-1.512.623 3.928 3.928 0 00-1.183 1.022c-.331.425-.588.952-.77 1.582-.182.63-.273 1.393-.273 2.289 0 .905.11 1.678.329 2.317.22.64.509 1.171.868 1.596.36.425.76.756 1.204.994.443.238.889.404 1.337.497l-.35.966zm4.354-.966a4.965 4.965 0 001.337-.497 4.15 4.15 0 001.204-.994c.36-.425.649-.957.868-1.596.22-.64.329-1.412.329-2.317 0-.896-.091-1.659-.273-2.289-.182-.63-.439-1.157-.77-1.582a3.928 3.928 0 00-1.183-1.022 7.086 7.086 0 00-1.512-.623l.35-.882c.607.13 1.183.352 1.729.665a4.984 4.984 0 011.435 1.246c.41.518.737 1.148.98 1.89s.364 1.608.364 2.597c0 .999-.119 1.862-.357 2.59-.238.728-.56 1.344-.966 1.848a5.036 5.036 0 01-1.428 1.225 6.964 6.964 0 01-1.757.707l-.35-.966zm17.878-2.45c0-.401-.068-.749-.203-1.043a2.44 2.44 0 00-.504-.735c-.2-.196-.415-.34-.644-.434a1.641 1.641 0 00-.609-.14v-.98c.177 0 .38-.04.609-.119.229-.08.443-.21.644-.392.2-.182.369-.418.504-.707.135-.29.203-.649.203-1.078v-1.428c0-.336.054-.644.161-.924a2.22 2.22 0 01.448-.728c.191-.205.42-.366.686-.483.266-.117.558-.175.875-.175h2.03v.98h-1.54c-.588 0-.996.14-1.225.42-.229.28-.343.695-.343 1.246v1.358c0 .383-.07.723-.21 1.022a2.7 2.7 0 01-1.106 1.225c-.205.117-.373.184-.504.203v.084c.121.019.285.091.49.217.205.126.406.299.602.518.196.22.366.478.511.777.145.299.217.63.217.994v1.344c0 .57.121.99.364 1.26s.649.406 1.218.406h1.526v.98h-2.03c-.653 0-1.178-.194-1.575-.581-.397-.387-.595-.959-.595-1.715v-1.372z"/><path id="alert" fill="#181717" d="M134.736 75.346a4.447 4.447 0 011.358-.504 7.423 7.423 0 011.484-.154c.476 0 .866.075 1.169.224.303.15.541.343.714.581.173.238.29.509.35.812.06.303.091.609.091.917 0 .355-.01.733-.028 1.134-.019.401-.033.803-.042 1.204 0 .467.028.91.084 1.33h.938v.91h-1.862l-.126-1.05h-.07c-.056.084-.14.191-.252.322-.112.13-.259.259-.441.385a2.749 2.749 0 01-1.589.469c-.69 0-1.237-.177-1.638-.532-.401-.355-.602-.84-.602-1.456 0-.476.105-.873.315-1.19.21-.317.511-.56.903-.728.392-.168.866-.266 1.421-.294a9.544 9.544 0 011.869.112c.047-.43.054-.786.021-1.071-.033-.285-.107-.511-.224-.679a.938.938 0 00-.49-.357 2.482 2.482 0 00-.777-.105c-.42 0-.821.058-1.204.175-.383.117-.723.236-1.022.357l-.35-.812zm2.058 5.642c.261 0 .504-.042.728-.126a2.22 2.22 0 00.588-.322 2.133 2.133 0 00.672-.868v-.98a7.92 7.92 0 00-1.344-.126c-.41 0-.765.044-1.064.133-.299.089-.532.226-.7.413-.168.187-.252.43-.252.728 0 .308.105.576.315.805.21.229.562.343 1.057.343zM143.29 72h2.324v7.448c0 .57.096.97.287 1.204.191.233.474.35.847.35.261 0 .511-.047.749-.14.238-.093.502-.252.791-.476l.504.77c-.15.13-.313.247-.49.35a3.638 3.638 0 01-1.106.42 2.963 2.963 0 01-1.442-.077 1.579 1.579 0 01-.679-.427 1.897 1.897 0 01-.413-.777c-.093-.322-.14-.721-.14-1.197v-6.51h-1.232V72zm14.14 8.918c-.168.15-.366.29-.595.42a4.39 4.39 0 01-.749.336c-.27.093-.553.166-.847.217-.294.051-.59.077-.889.077-.56 0-1.055-.086-1.484-.259a2.858 2.858 0 01-1.078-.742 3.234 3.234 0 01-.658-1.155 4.767 4.767 0 01-.224-1.512c0-.588.082-1.11.245-1.568.163-.457.399-.84.707-1.148a3.08 3.08 0 011.12-.707 4.187 4.187 0 011.47-.245c.392 0 .78.051 1.162.154.383.103.721.296 1.015.581.294.285.52.677.679 1.176.159.5.215 1.146.168 1.939h-5.418c0 .84.226 1.468.679 1.883.453.415 1.057.623 1.813.623.252 0 .502-.03.749-.091.247-.06.483-.133.707-.217a3.72 3.72 0 00.595-.28c.173-.103.306-.196.399-.28l.434.798zm-2.954-5.362c-.308 0-.6.033-.875.098a1.995 1.995 0 00-.728.329c-.21.154-.383.355-.518.602s-.222.553-.259.917h4.354c-.047-.616-.245-1.094-.595-1.435-.35-.34-.81-.511-1.379-.511zm4.872 6.244v-.938h1.89v-5.124h-1.89V74.8h2.618l.224.91h.07c.317-.29.672-.537 1.064-.742.392-.205.859-.308 1.4-.308.317 0 .572.06.763.182.191.121.34.299.448.532.107.233.18.516.217.847.037.331.056.707.056 1.127l-.98.014c0-.597-.058-1.036-.175-1.316-.117-.28-.329-.42-.637-.42-.29 0-.55.042-.784.126a2.565 2.565 0 00-.609.308c-.173.121-.32.243-.441.364s-.21.224-.266.308v4.13h2.688v.938h-5.656zm7.91-7h1.666v-1.386l1.092-.308V74.8h3.738v.938h-3.738v3.304c0 .681.166 1.185.497 1.512.331.327.805.49 1.421.49.42 0 .786-.08 1.099-.238.313-.159.595-.331.847-.518l.364.826a3.938 3.938 0 01-1.169.63 4.182 4.182 0 01-1.393.238 3.41 3.41 0 01-1.057-.161 2.426 2.426 0 01-.875-.497 2.38 2.38 0 01-.602-.861c-.15-.35-.224-.768-.224-1.253v-3.472h-1.666V74.8z"/><path id="(" fill="#7E7C7B" d="M181.272 84.768a6.964 6.964 0 01-1.757-.707 5.036 5.036 0 01-1.428-1.225c-.406-.504-.728-1.12-.966-1.848s-.357-1.591-.357-2.59c0-.99.121-1.855.364-2.597s.57-1.372.98-1.89c.41-.518.889-.933 1.435-1.246a6.005 6.005 0 011.729-.665l.35.882a7.086 7.086 0 00-1.512.623 3.928 3.928 0 00-1.183 1.022c-.331.425-.588.952-.77 1.582-.182.63-.273 1.393-.273 2.289 0 .905.11 1.678.329 2.317.22.64.509 1.171.868 1.596.36.425.76.756 1.204.994.443.238.889.404 1.337.497l-.35.966z"/><path id="i" fill="#181717" d="M185.094 81.8v-.938h2.436v-5.124h-2.436V74.8h3.556v6.062h2.38v.938h-5.936zm2.058-8.988c0-.252.084-.469.252-.651a.838.838 0 01.644-.273c.27 0 .497.091.679.273a.889.889 0 01.273.651.806.806 0 01-.273.616.963.963 0 01-.679.252.872.872 0 01-.644-.252.838.838 0 01-.252-.616z"/><path id=");}," fill="#7E7C7B" d="M194.026 83.802a4.965 4.965 0 001.337-.497 4.15 4.15 0 001.204-.994c.36-.425.649-.957.868-1.596.22-.64.329-1.412.329-2.317 0-.896-.091-1.659-.273-2.289-.182-.63-.439-1.157-.77-1.582a3.928 3.928 0 00-1.183-1.022 7.086 7.086 0 00-1.512-.623l.35-.882c.607.13 1.183.352 1.729.665a4.984 4.984 0 011.435 1.246c.41.518.737 1.148.98 1.89s.364 1.608.364 2.597c0 .999-.119 1.862-.357 2.59-.238.728-.56 1.344-.966 1.848a5.036 5.036 0 01-1.428 1.225 6.964 6.964 0 01-1.757.707l-.35-.966zm9.604-2.772c0-.28.091-.506.273-.679.182-.173.418-.259.707-.259.355 0 .63.124.826.371.196.247.294.595.294 1.043a2.36 2.36 0 01-.637 1.659 2.465 2.465 0 01-.588.462c-.21.117-.404.203-.581.259l-.35-.546c.336-.13.625-.317.868-.56.243-.243.364-.537.364-.882-.13.028-.233.042-.308.042-.27 0-.483-.077-.637-.231-.154-.154-.231-.38-.231-.679zm.126-5.502c0-.299.084-.53.252-.693.168-.163.392-.245.672-.245.299 0 .532.082.7.245.168.163.252.394.252.693 0 .27-.084.495-.252.672-.168.177-.401.266-.7.266-.28 0-.504-.089-.672-.266a.938.938 0 01-.252-.672zm18.788 7.196c0 .756-.198 1.328-.595 1.715-.397.387-.922.581-1.575.581h-2.03v-.98h1.526c.57 0 .975-.135 1.218-.406.243-.27.364-.69.364-1.26V81.03c0-.364.07-.695.21-.994.14-.299.308-.558.504-.777.196-.22.397-.392.602-.518.205-.126.373-.198.504-.217v-.084c-.13-.019-.299-.086-.504-.203a2.7 2.7 0 01-1.106-1.225c-.14-.299-.21-.64-.21-1.022v-1.358c0-.55-.114-.966-.343-1.246-.229-.28-.637-.42-1.225-.42h-1.54v-.98h2.03c.317 0 .609.058.875.175.266.117.495.278.686.483.191.205.34.448.448.728.107.28.161.588.161.924v1.428c0 .43.068.789.203 1.078.135.29.303.525.504.707.2.182.415.313.644.392.229.08.432.119.609.119V79c-.177 0-.38.047-.609.14a2.011 2.011 0 00-.644.434 2.44 2.44 0 00-.504.735c-.135.294-.203.642-.203 1.043v1.372zm6.286-1.694c0-.28.091-.506.273-.679.182-.173.418-.259.707-.259.355 0 .63.124.826.371.196.247.294.595.294 1.043a2.36 2.36 0 01-.637 1.659 2.465 2.465 0 01-.588.462c-.21.117-.404.203-.581.259l-.35-.546c.336-.13.625-.317.868-.56.243-.243.364-.537.364-.882-.13.028-.233.042-.308.042-.27 0-.483-.077-.637-.231-.154-.154-.231-.38-.231-.679z"/><path id="..." fill="#181717" d="M18.886 105.03c0-.299.084-.53.252-.693.168-.163.392-.245.672-.245.299 0 .532.082.7.245.168.163.252.394.252.693 0 .27-.084.495-.252.672-.168.177-.401.266-.7.266-.28 0-.504-.089-.672-.266a.938.938 0 01-.252-.672zm8.4 0c0-.299.084-.53.252-.693.168-.163.392-.245.672-.245.299 0 .532.082.7.245.168.163.252.394.252.693 0 .27-.084.495-.252.672-.168.177-.401.266-.7.266-.28 0-.504-.089-.672-.266a.938.938 0 01-.252-.672zm8.4 0c0-.299.084-.53.252-.693.168-.163.392-.245.672-.245.299 0 .532.082.7.245.168.163.252.394.252.693 0 .27-.084.495-.252.672-.168.177-.401.266-.7.266-.28 0-.504-.089-.672-.266a.938.938 0 01-.252-.672z"/><path id="function" fill="#1C85B5" d="M16.856 129.8v-.938h1.666v-5.124h-1.666v-.938h1.666v-.392c0-.877.229-1.512.686-1.904.457-.392 1.11-.588 1.96-.588.308 0 .583.019.826.056.243.037.504.112.784.224l-.252.91a2.862 2.862 0 00-.7-.203 4.295 4.295 0 00-.616-.049c-.616 0-1.036.152-1.26.455-.224.303-.336.8-.336 1.491h2.898v.938h-2.898v5.124h2.898v.938h-5.656zm12.25-7h1.988v4.774c0 .457.028.896.084 1.316h.938v.91h-1.862l-.042-1.19h-.056a2.938 2.938 0 01-.966.98c-.401.252-.887.378-1.456.378-.43 0-.796-.049-1.099-.147a1.556 1.556 0 01-.749-.511c-.196-.243-.34-.567-.434-.973-.093-.406-.14-.912-.14-1.519v-3.08h-.938v-.938h2.03v3.794c0 .383.016.726.049 1.029.033.303.1.56.203.77.103.21.254.369.455.476.2.107.469.161.805.161.485 0 .908-.159 1.267-.476.36-.317.632-.714.819-1.19v-3.626h-.896v-.938zm4.62 2.45a14.05 14.05 0 00-.063-1.176 4.657 4.657 0 00-.049-.364h-.938v-.91h1.876l.126 1.134h.07c.093-.159.217-.315.371-.469a2.91 2.91 0 011.225-.721c.252-.075.518-.112.798-.112.43 0 .81.047 1.141.14.331.093.607.259.826.497.22.238.385.56.497.966.112.406.168.922.168 1.547v4.018h-1.092v-3.808c0-.775-.126-1.358-.378-1.75-.252-.392-.71-.588-1.372-.588-.243 0-.478.049-.707.147a2.44 2.44 0 00-.623.385c-.187.159-.35.343-.49.553-.14.21-.243.432-.308.665v4.396h-1.078v-4.55zm13.244-1.372a5.531 5.531 0 00-.693-.189 3.61 3.61 0 00-.735-.077c-.915 0-1.596.215-2.044.644-.448.43-.672 1.11-.672 2.044 0 .41.065.777.196 1.099.13.322.317.595.56.819.243.224.534.397.875.518.34.121.716.182 1.127.182.439 0 .866-.075 1.281-.224.415-.15.763-.345 1.043-.588l.49.812c-.13.112-.294.229-.49.35a4.837 4.837 0 01-1.533.602 4.962 4.962 0 01-1.015.098c-.607 0-1.141-.086-1.603-.259a3.045 3.045 0 01-1.155-.742 3.176 3.176 0 01-.7-1.162 4.525 4.525 0 01-.238-1.505c0-.588.082-1.11.245-1.568.163-.457.399-.84.707-1.148a3.08 3.08 0 011.12-.707 4.187 4.187 0 011.47-.245c.69 0 1.253.06 1.687.182.434.121.8.257 1.099.406l-.014.042v1.946H46.97v-1.33zm2.688-1.078h1.666v-1.386l1.092-.308v1.694h3.738v.938h-3.738v3.304c0 .681.166 1.185.497 1.512.331.327.805.49 1.421.49.42 0 .786-.08 1.099-.238.313-.159.595-.331.847-.518l.364.826a3.938 3.938 0 01-1.169.63 4.182 4.182 0 01-1.393.238 3.41 3.41 0 01-1.057-.161 2.426 2.426 0 01-.875-.497 2.38 2.38 0 01-.602-.861c-.15-.35-.224-.768-.224-1.253v-3.472h-1.666v-.938zm9.436 7v-.938h2.436v-5.124h-2.436v-.938h3.556v6.062h2.38v.938h-5.936zm2.058-8.988c0-.252.084-.469.252-.651a.838.838 0 01.644-.273c.27 0 .497.091.679.273a.889.889 0 01.273.651.806.806 0 01-.273.616.963.963 0 01-.679.252.872.872 0 01-.644-.252.838.838 0 01-.252-.616zm5.67 5.488c0-1.13.294-2.023.882-2.681.588-.658 1.428-.987 2.52-.987.588 0 1.094.096 1.519.287.425.191.777.45 1.057.777.28.327.488.714.623 1.162.135.448.203.929.203 1.442 0 .56-.075 1.066-.224 1.519-.15.453-.369.838-.658 1.155-.29.317-.646.562-1.071.735a3.82 3.82 0 01-1.449.259c-.579 0-1.083-.096-1.512-.287a2.967 2.967 0 01-1.064-.777 3.168 3.168 0 01-.623-1.162 4.963 4.963 0 01-.203-1.442zm1.162 0c0 .327.04.653.119.98.08.327.208.62.385.882.177.261.408.471.693.63.285.159.632.238 1.043.238.747 0 1.309-.231 1.687-.693.378-.462.567-1.141.567-2.037 0-.336-.04-.665-.119-.987a2.608 2.608 0 00-.392-.875 2.066 2.066 0 00-.7-.63c-.285-.159-.632-.238-1.043-.238-.747 0-1.307.229-1.68.686-.373.457-.56 1.139-.56 2.044zm7.742-1.05a14.05 14.05 0 00-.063-1.176 4.657 4.657 0 00-.049-.364h-.938v-.91h1.876l.126 1.134h.07c.093-.159.217-.315.371-.469a2.91 2.91 0 011.225-.721c.252-.075.518-.112.798-.112.43 0 .81.047 1.141.14.331.093.607.259.826.497.22.238.385.56.497.966.112.406.168.922.168 1.547v4.018h-1.092v-3.808c0-.775-.126-1.358-.378-1.75-.252-.392-.71-.588-1.372-.588-.243 0-.478.049-.707.147a2.44 2.44 0 00-.623.385c-.187.159-.35.343-.49.553-.14.21-.243.432-.308.665v4.396h-1.078v-4.55z"/><path id="(){" fill="#7E7C7B" d="M97.272 132.768a6.964 6.964 0 01-1.757-.707 5.036 5.036 0 01-1.428-1.225c-.406-.504-.728-1.12-.966-1.848s-.357-1.591-.357-2.59c0-.99.121-1.855.364-2.597s.57-1.372.98-1.89c.41-.518.889-.933 1.435-1.246a6.005 6.005 0 011.729-.665l.35.882a7.086 7.086 0 00-1.512.623 3.928 3.928 0 00-1.183 1.022c-.331.425-.588.952-.77 1.582-.182.63-.273 1.393-.273 2.289 0 .905.11 1.678.329 2.317.22.64.509 1.171.868 1.596.36.425.76.756 1.204.994.443.238.889.404 1.337.497l-.35.966zm4.354-.966a4.965 4.965 0 001.337-.497 4.15 4.15 0 001.204-.994c.36-.425.649-.957.868-1.596.22-.64.329-1.412.329-2.317 0-.896-.091-1.659-.273-2.289-.182-.63-.439-1.157-.77-1.582a3.928 3.928 0 00-1.183-1.022 7.086 7.086 0 00-1.512-.623l.35-.882c.607.13 1.183.352 1.729.665a4.984 4.984 0 011.435 1.246c.41.518.737 1.148.98 1.89s.364 1.608.364 2.597c0 .999-.119 1.862-.357 2.59-.238.728-.56 1.344-.966 1.848a5.036 5.036 0 01-1.428 1.225 6.964 6.964 0 01-1.757.707l-.35-.966zm17.878-2.45c0-.401-.068-.749-.203-1.043a2.44 2.44 0 00-.504-.735c-.2-.196-.415-.34-.644-.434a1.641 1.641 0 00-.609-.14v-.98c.177 0 .38-.04.609-.119.229-.08.443-.21.644-.392.2-.182.369-.418.504-.707.135-.29.203-.649.203-1.078v-1.428c0-.336.054-.644.161-.924a2.22 2.22 0 01.448-.728c.191-.205.42-.366.686-.483.266-.117.558-.175.875-.175h2.03v.98h-1.54c-.588 0-.996.14-1.225.42-.229.28-.343.695-.343 1.246v1.358c0 .383-.07.723-.21 1.022a2.7 2.7 0 01-1.106 1.225c-.205.117-.373.184-.504.203v.084c.121.019.285.091.49.217.205.126.406.299.602.518.196.22.366.478.511.777.145.299.217.63.217.994v1.344c0 .57.121.99.364 1.26s.649.406 1.218.406h1.526v.98h-2.03c-.653 0-1.178-.194-1.575-.581-.397-.387-.595-.959-.595-1.715v-1.372z"/><path id="alert" fill="#181717" d="M134.736 123.346a4.447 4.447 0 011.358-.504 7.423 7.423 0 011.484-.154c.476 0 .866.075 1.169.224.303.15.541.343.714.581.173.238.29.509.35.812.06.303.091.609.091.917 0 .355-.01.733-.028 1.134-.019.401-.033.803-.042 1.204 0 .467.028.91.084 1.33h.938v.91h-1.862l-.126-1.05h-.07c-.056.084-.14.191-.252.322-.112.13-.259.259-.441.385a2.749 2.749 0 01-1.589.469c-.69 0-1.237-.177-1.638-.532-.401-.355-.602-.84-.602-1.456 0-.476.105-.873.315-1.19.21-.317.511-.56.903-.728.392-.168.866-.266 1.421-.294a9.544 9.544 0 011.869.112c.047-.43.054-.786.021-1.071-.033-.285-.107-.511-.224-.679a.938.938 0 00-.49-.357 2.482 2.482 0 00-.777-.105c-.42 0-.821.058-1.204.175-.383.117-.723.236-1.022.357l-.35-.812zm2.058 5.642c.261 0 .504-.042.728-.126a2.22 2.22 0 00.588-.322 2.133 2.133 0 00.672-.868v-.98a7.92 7.92 0 00-1.344-.126c-.41 0-.765.044-1.064.133-.299.089-.532.226-.7.413-.168.187-.252.43-.252.728 0 .308.105.576.315.805.21.229.562.343 1.057.343zM143.29 120h2.324v7.448c0 .57.096.97.287 1.204.191.233.474.35.847.35.261 0 .511-.047.749-.14.238-.093.502-.252.791-.476l.504.77c-.15.13-.313.247-.49.35a3.638 3.638 0 01-1.106.42 2.963 2.963 0 01-1.442-.077 1.579 1.579 0 01-.679-.427 1.897 1.897 0 01-.413-.777c-.093-.322-.14-.721-.14-1.197v-6.51h-1.232V120zm14.14 8.918c-.168.15-.366.29-.595.42a4.39 4.39 0 01-.749.336c-.27.093-.553.166-.847.217-.294.051-.59.077-.889.077-.56 0-1.055-.086-1.484-.259a2.858 2.858 0 01-1.078-.742 3.234 3.234 0 01-.658-1.155 4.767 4.767 0 01-.224-1.512c0-.588.082-1.11.245-1.568.163-.457.399-.84.707-1.148a3.08 3.08 0 011.12-.707 4.187 4.187 0 011.47-.245c.392 0 .78.051 1.162.154.383.103.721.296 1.015.581.294.285.52.677.679 1.176.159.5.215 1.146.168 1.939h-5.418c0 .84.226 1.468.679 1.883.453.415 1.057.623 1.813.623.252 0 .502-.03.749-.091.247-.06.483-.133.707-.217a3.72 3.72 0 00.595-.28c.173-.103.306-.196.399-.28l.434.798zm-2.954-5.362c-.308 0-.6.033-.875.098a1.995 1.995 0 00-.728.329c-.21.154-.383.355-.518.602s-.222.553-.259.917h4.354c-.047-.616-.245-1.094-.595-1.435-.35-.34-.81-.511-1.379-.511zm4.872 6.244v-.938h1.89v-5.124h-1.89v-.938h2.618l.224.91h.07c.317-.29.672-.537 1.064-.742.392-.205.859-.308 1.4-.308.317 0 .572.06.763.182.191.121.34.299.448.532.107.233.18.516.217.847.037.331.056.707.056 1.127l-.98.014c0-.597-.058-1.036-.175-1.316-.117-.28-.329-.42-.637-.42-.29 0-.55.042-.784.126a2.565 2.565 0 00-.609.308c-.173.121-.32.243-.441.364s-.21.224-.266.308v4.13h2.688v.938h-5.656zm7.91-7h1.666v-1.386l1.092-.308v1.694h3.738v.938h-3.738v3.304c0 .681.166 1.185.497 1.512.331.327.805.49 1.421.49.42 0 .786-.08 1.099-.238.313-.159.595-.331.847-.518l.364.826a3.938 3.938 0 01-1.169.63 4.182 4.182 0 01-1.393.238 3.41 3.41 0 01-1.057-.161 2.426 2.426 0 01-.875-.497 2.38 2.38 0 01-.602-.861c-.15-.35-.224-.768-.224-1.253v-3.472h-1.666v-.938z"/><path id="(" fill="#7E7C7B" d="M181.272 132.768a6.964 6.964 0 01-1.757-.707 5.036 5.036 0 01-1.428-1.225c-.406-.504-.728-1.12-.966-1.848s-.357-1.591-.357-2.59c0-.99.121-1.855.364-2.597s.57-1.372.98-1.89c.41-.518.889-.933 1.435-1.246a6.005 6.005 0 011.729-.665l.35.882a7.086 7.086 0 00-1.512.623 3.928 3.928 0 00-1.183 1.022c-.331.425-.588.952-.77 1.582-.182.63-.273 1.393-.273 2.289 0 .905.11 1.678.329 2.317.22.64.509 1.171.868 1.596.36.425.76.756 1.204.994.443.238.889.404 1.337.497l-.35.966z"/><path id="i" fill="#181717" d="M185.094 129.8v-.938h2.436v-5.124h-2.436v-.938h3.556v6.062h2.38v.938h-5.936zm2.058-8.988c0-.252.084-.469.252-.651a.838.838 0 01.644-.273c.27 0 .497.091.679.273a.889.889 0 01.273.651.806.806 0 01-.273.616.963.963 0 01-.679.252.872.872 0 01-.644-.252.838.838 0 01-.252-.616z"/><path id=");}];" fill="#7E7C7B" d="M194.026 131.802a4.965 4.965 0 001.337-.497 4.15 4.15 0 001.204-.994c.36-.425.649-.957.868-1.596.22-.64.329-1.412.329-2.317 0-.896-.091-1.659-.273-2.289-.182-.63-.439-1.157-.77-1.582a3.928 3.928 0 00-1.183-1.022 7.086 7.086 0 00-1.512-.623l.35-.882c.607.13 1.183.352 1.729.665a4.984 4.984 0 011.435 1.246c.41.518.737 1.148.98 1.89s.364 1.608.364 2.597c0 .999-.119 1.862-.357 2.59-.238.728-.56 1.344-.966 1.848a5.036 5.036 0 01-1.428 1.225 6.964 6.964 0 01-1.757.707l-.35-.966zm9.604-2.772c0-.28.091-.506.273-.679.182-.173.418-.259.707-.259.355 0 .63.124.826.371.196.247.294.595.294 1.043a2.36 2.36 0 01-.637 1.659 2.465 2.465 0 01-.588.462c-.21.117-.404.203-.581.259l-.35-.546c.336-.13.625-.317.868-.56.243-.243.364-.537.364-.882-.13.028-.233.042-.308.042-.27 0-.483-.077-.637-.231-.154-.154-.231-.38-.231-.679zm.126-5.502c0-.299.084-.53.252-.693.168-.163.392-.245.672-.245.299 0 .532.082.7.245.168.163.252.394.252.693 0 .27-.084.495-.252.672-.168.177-.401.266-.7.266-.28 0-.504-.089-.672-.266a.938.938 0 01-.252-.672zm18.788 7.196c0 .756-.198 1.328-.595 1.715-.397.387-.922.581-1.575.581h-2.03v-.98h1.526c.57 0 .975-.135 1.218-.406.243-.27.364-.69.364-1.26v-1.344c0-.364.07-.695.21-.994.14-.299.308-.558.504-.777.196-.22.397-.392.602-.518.205-.126.373-.198.504-.217v-.084c-.13-.019-.299-.086-.504-.203a2.7 2.7 0 01-1.106-1.225c-.14-.299-.21-.64-.21-1.022v-1.358c0-.55-.114-.966-.343-1.246-.229-.28-.637-.42-1.225-.42h-1.54v-.98h2.03c.317 0 .609.058.875.175.266.117.495.278.686.483.191.205.34.448.448.728.107.28.161.588.161.924v1.428c0 .43.068.789.203 1.078.135.29.303.525.504.707.2.182.415.313.644.392.229.08.432.119.609.119v.98c-.177 0-.38.047-.609.14a2.011 2.011 0 00-.644.434 2.44 2.44 0 00-.504.735c-.135.294-.203.642-.203 1.043v1.372zM5.138 157.02H.35v-.98h3.696v-11.06H.35V144h4.788v13.02zm5.292-3.99c0-.28.091-.506.273-.679.182-.173.418-.259.707-.259.355 0 .63.124.826.371.196.247.294.595.294 1.043a2.36 2.36 0 01-.637 1.659 2.465 2.465 0 01-.588.462c-.21.117-.404.203-.581.259l-.35-.546c.336-.13.625-.317.868-.56.243-.243.364-.537.364-.882-.13.028-.233.042-.308.042-.27 0-.483-.077-.637-.231-.154-.154-.231-.38-.231-.679zm.126-5.502c0-.299.084-.53.252-.693.168-.163.392-.245.672-.245.299 0 .532.082.7.245.168.163.252.394.252.693 0 .27-.084.495-.252.672-.168.177-.401.266-.7.266-.28 0-.504-.089-.672-.266a.938.938 0 01-.252-.672z"/></g><g id="Group-Copy" transform="translate(350 66)"><path id="Line" fill="#C06334" fill-rule="nonzero" d="M16.5 15.5l14 7-14 7v-6h-14v-2h14v-6z"/><text id="outer" fill="#AF6E24" font-family="PTMono-Regular, PT Mono" font-size="12" font-weight="normal"><tspan x="0" y="11">outer</tspan></text></g><g id="Group-Copy-2" fill="#C06334" fill-rule="nonzero" transform="translate(242 44)"><path id="Line" d="M13.5-5.5l14 7-14 7v-6h-14v-2h14v-6z"/></g><g id="Group-Copy-3" fill="#C06334" fill-rule="nonzero" transform="translate(242 67)"><path id="Line" d="M13.5-5.5l14 7-14 7v-6h-14v-2h14v-6z"/></g><g id="Group-Copy-4" fill="#C06334" fill-rule="nonzero" transform="translate(242 90)"><path id="Line" d="M13.5-5.5l14 7-14 7v-6h-14v-2h14v-6z"/></g><g id="Group-Copy-5" fill="#C06334" fill-rule="nonzero" transform="translate(242 139)"><path id="Line" d="M13.5-5.5l14 7-14 7v-6h-14v-2h14v-6z"/></g><text id="makeArmy()-LexicalEn" fill="#AF6E24" font-family="PTMono-Bold, PT Mono" font-size="14" font-weight="bold"><tspan x="399" y="59">makeArmy()</tspan> <tspan x="399" y="74" font-family="PTMono-Regular, PT Mono" font-weight="normal">LexicalEnvironment</tspan></text><text id="for-iteration-Lexica" fill="#AF6E24" font-family="PTMono-Bold, PT Mono" font-size="14" font-weight="bold"><tspan x="278" y="14">for iteration</tspan> <tspan x="278" y="29" font-family="PTMono-Regular, PT Mono" font-weight="normal">LexicalEnvironment</tspan></text><g id="Group-3" transform="translate(279 36)"><path id="Rectangle-1" fill="#FBF2EC" stroke="#DBAF88" stroke-width="2" d="M1 1h52v18H1z"/><text id="i:-0" fill="#AF6E24" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="8" y="14">i: 0</tspan></text></g><g id="Group-3-Copy" transform="translate(279 59)"><path id="Rectangle-1" fill="#FBF2EC" stroke="#DBAF88" stroke-width="2" d="M1 1h52v18H1z"/><text id="i:-1" fill="#AF6E24" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="8" y="14">i: 1</tspan></text></g><g id="Group-3-Copy-2" transform="translate(279 82)"><path id="Rectangle-1" fill="#FBF2EC" stroke="#DBAF88" stroke-width="2" d="M1 1h52v18H1z"/><text id="i:-2" fill="#AF6E24" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="8" y="14">i: 2</tspan></text></g><g id="Group-3-Copy-3" transform="translate(279 131)"><path id="Rectangle-1" fill="#FBF2EC" stroke="#DBAF88" stroke-width="2" d="M1 1h52v18H1z"/><text id="i:-10" fill="#AF6E24" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="7.447" y="13.51">i: 10</tspan></text></g><text id="..." fill="#AF6E24" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="399" y="94">...</tspan></text></g></g></svg> \ No newline at end of file diff --git a/1-js/06-advanced-functions/03-closure/10-make-army/lexenv-makearmy-while-fixed.svg b/1-js/06-advanced-functions/03-closure/10-make-army/lexenv-makearmy-while-fixed.svg new file mode 100644 index 000000000..d83ecbe76 --- /dev/null +++ b/1-js/06-advanced-functions/03-closure/10-make-army/lexenv-makearmy-while-fixed.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" width="566" height="183" viewBox="0 0 566 183"><defs><style>@import url(https://fonts.googleapis.com/css?family=Open+Sans:bold,italic,bolditalic%7CPT+Mono);@font-face{font-family:'PT Mono';font-weight:700;font-style:normal;src:local('PT MonoBold'),url(/font/PTMonoBold.woff2) format('woff2'),url(/font/PTMonoBold.woff) format('woff'),url(/font/PTMonoBold.ttf) format('truetype')}</style></defs><g id="closure" fill="none" fill-rule="evenodd" stroke="none" stroke-width="1"><g id="lexenv-makearmy-while-fixed.svg"><g id="shooters-=-[-functio" fill-rule="nonzero" transform="translate(7.176 15.2)"><path id="shooters" fill="#181717" d="M2.996 9.968c1.017 0 1.78-.21 2.289-.63.509-.42.763-.952.763-1.596 0-.43-.117-.77-.35-1.022a2.536 2.536 0 00-.868-.602 5.479 5.479 0 00-1.127-.343 19.87 19.87 0 01-1.127-.252 3.633 3.633 0 01-.868-.329c-.233-.13-.35-.317-.35-.56 0-.196.049-.362.147-.497.098-.135.229-.245.392-.329.163-.084.345-.147.546-.189.2-.042.404-.063.609-.063.541 0 .992.077 1.351.231.36.154.693.315 1.001.483l.448-.882c-.28-.177-.656-.348-1.127-.511-.471-.163-1.034-.245-1.687-.245-.364 0-.714.04-1.05.119-.336.08-.63.2-.882.364a1.94 1.94 0 00-.609.623c-.154.252-.231.555-.231.91 0 .43.117.763.35 1.001.233.238.523.427.868.567.345.14.721.252 1.127.336.406.084.782.175 1.127.273.345.098.635.229.868.392.233.163.35.394.35.693 0 .205-.049.38-.147.525a1.08 1.08 0 01-.399.35 2.075 2.075 0 01-.581.196 3.76 3.76 0 01-1.484-.021 4.197 4.197 0 01-1.337-.539 2.536 2.536 0 01-.448-.343l-.56.91c.14.121.317.24.532.357.215.117.453.222.714.315.261.093.541.168.84.224.299.056.602.084.91.084zM9.464 9.8V5.348c.056-.261.156-.502.301-.721.145-.22.317-.406.518-.56.2-.154.422-.275.665-.364.243-.089.49-.133.742-.133.364 0 .663.051.896.154.233.103.418.254.553.455.135.2.226.45.273.749.047.299.07.649.07 1.05V9.8h1.092V5.768c0-.625-.051-1.141-.154-1.547-.103-.406-.259-.726-.469-.959a1.676 1.676 0 00-.812-.49 4.338 4.338 0 00-1.169-.14c-.57 0-1.045.091-1.428.273a3.135 3.135 0 00-1.008.763h-.07V0H7.28v.938h1.106V9.8h1.078zm10.36.168a3.82 3.82 0 001.449-.259 2.907 2.907 0 001.071-.735c.29-.317.509-.702.658-1.155.15-.453.224-.959.224-1.519 0-.513-.068-.994-.203-1.442a3.168 3.168 0 00-.623-1.162 2.981 2.981 0 00-1.057-.777c-.425-.191-.931-.287-1.519-.287-1.092 0-1.932.329-2.52.987-.588.658-.882 1.552-.882 2.681 0 .513.068.994.203 1.442.135.448.343.835.623 1.162.28.327.635.586 1.064.777.43.191.933.287 1.512.287zm0-.938c-.41 0-.758-.08-1.043-.238a2.001 2.001 0 01-.693-.63 2.683 2.683 0 01-.385-.882 4.14 4.14 0 01-.119-.98c0-.905.187-1.587.56-2.044.373-.457.933-.686 1.68-.686.41 0 .758.08 1.043.238.285.159.518.369.7.63.182.261.313.553.392.875.08.322.119.651.119.987 0 .896-.189 1.575-.567 2.037-.378.462-.94.693-1.687.693zm8.4.938a3.82 3.82 0 001.449-.259 2.907 2.907 0 001.071-.735c.29-.317.509-.702.658-1.155.15-.453.224-.959.224-1.519 0-.513-.068-.994-.203-1.442a3.168 3.168 0 00-.623-1.162 2.981 2.981 0 00-1.057-.777c-.425-.191-.931-.287-1.519-.287-1.092 0-1.932.329-2.52.987-.588.658-.882 1.552-.882 2.681 0 .513.068.994.203 1.442.135.448.343.835.623 1.162.28.327.635.586 1.064.777.43.191.933.287 1.512.287zm0-.938c-.41 0-.758-.08-1.043-.238a2.001 2.001 0 01-.693-.63 2.683 2.683 0 01-.385-.882 4.14 4.14 0 01-.119-.98c0-.905.187-1.587.56-2.044.373-.457.933-.686 1.68-.686.41 0 .758.08 1.043.238.285.159.518.369.7.63.182.261.313.553.392.875.08.322.119.651.119.987 0 .896-.189 1.575-.567 2.037-.378.462-.94.693-1.687.693zm9.058.952c.476 0 .94-.08 1.393-.238a3.938 3.938 0 001.169-.63l-.364-.826c-.252.187-.534.36-.847.518-.313.159-.679.238-1.099.238-.616 0-1.09-.163-1.421-.49-.331-.327-.497-.83-.497-1.512V3.738h3.738V2.8h-3.738V1.106l-1.092.308V2.8h-1.666v.938h1.666V7.21c0 .485.075.903.224 1.253.15.35.35.637.602.861.252.224.544.39.875.497a3.41 3.41 0 001.057.161zm7.868-.014c.299 0 .595-.026.889-.077.294-.051.576-.124.847-.217.27-.093.52-.205.749-.336.229-.13.427-.27.595-.42l-.434-.798a2.585 2.585 0 01-.399.28 3.72 3.72 0 01-.595.28c-.224.084-.46.156-.707.217-.247.06-.497.091-.749.091-.756 0-1.36-.208-1.813-.623-.453-.415-.679-1.043-.679-1.883h5.418c.047-.793-.01-1.44-.168-1.939-.159-.5-.385-.891-.679-1.176a2.295 2.295 0 00-1.015-.581 4.466 4.466 0 00-1.162-.154c-.541 0-1.031.082-1.47.245a3.08 3.08 0 00-1.12.707c-.308.308-.544.69-.707 1.148-.163.457-.245.98-.245 1.568 0 .56.075 1.064.224 1.512.15.448.369.833.658 1.155.29.322.649.57 1.078.742.43.173.924.259 1.484.259zm2.1-4.466h-4.354c.037-.364.124-.67.259-.917s.308-.448.518-.602c.21-.154.453-.264.728-.329a3.78 3.78 0 01.875-.098c.57 0 1.029.17 1.379.511.35.34.548.819.595 1.435zM55.804 9.8v-.938h-2.688v-4.13c.056-.084.145-.187.266-.308.121-.121.268-.243.441-.364s.376-.224.609-.308c.233-.084.495-.126.784-.126.308 0 .52.14.637.42.117.28.175.719.175 1.316l.98-.014c0-.42-.019-.796-.056-1.127a2.771 2.771 0 00-.217-.847 1.206 1.206 0 00-.448-.532c-.191-.121-.446-.182-.763-.182-.541 0-1.008.103-1.4.308a5.046 5.046 0 00-1.064.742h-.07l-.224-.91h-2.618v.938h1.89v5.124h-1.89V9.8h5.656zm5.992.168c1.017 0 1.78-.21 2.289-.63.509-.42.763-.952.763-1.596 0-.43-.117-.77-.35-1.022a2.536 2.536 0 00-.868-.602 5.479 5.479 0 00-1.127-.343 19.87 19.87 0 01-1.127-.252 3.633 3.633 0 01-.868-.329c-.233-.13-.35-.317-.35-.56 0-.196.049-.362.147-.497.098-.135.229-.245.392-.329.163-.084.345-.147.546-.189.2-.042.404-.063.609-.063.541 0 .992.077 1.351.231.36.154.693.315 1.001.483l.448-.882c-.28-.177-.656-.348-1.127-.511-.471-.163-1.034-.245-1.687-.245-.364 0-.714.04-1.05.119-.336.08-.63.2-.882.364a1.94 1.94 0 00-.609.623c-.154.252-.231.555-.231.91 0 .43.117.763.35 1.001.233.238.523.427.868.567.345.14.721.252 1.127.336.406.084.782.175 1.127.273.345.098.635.229.868.392.233.163.35.394.35.693 0 .205-.049.38-.147.525a1.08 1.08 0 01-.399.35 2.075 2.075 0 01-.581.196 3.76 3.76 0 01-1.484-.021 4.197 4.197 0 01-1.337-.539 2.536 2.536 0 01-.448-.343l-.56.91c.14.121.317.24.532.357.215.117.453.222.714.315.261.093.541.168.84.224.299.056.602.084.91.084z"/><path id="=" fill="#DBAF88" d="M81.872 4.41V3.402h-6.496V4.41h6.496zm0 2.296V5.698h-6.496v1.008h6.496z"/><path id="[" fill="#7E7C7B" d="M98.084 13.02v-.98h-3.682V.98h3.682V0H93.31v13.02z"/><path id="function" fill="#1C85B5" d="M22.512 33.8v-.938h-2.898v-5.124h2.898V26.8h-2.898c0-.69.112-1.188.336-1.491.224-.303.644-.455 1.26-.455.187 0 .392.016.616.049.224.033.457.1.7.203l.252-.91a3.603 3.603 0 00-.784-.224 5.473 5.473 0 00-.826-.056c-.85 0-1.503.196-1.96.588-.457.392-.686 1.027-.686 1.904v.392h-1.666v.938h1.666v5.124h-1.666v.938h5.656zm5.222.168c.57 0 1.055-.126 1.456-.378s.723-.579.966-.98h.056l.042 1.19h1.862v-.91h-.938a9.956 9.956 0 01-.084-1.316V26.8h-1.988v.938h.896v3.626c-.187.476-.46.873-.819 1.19-.36.317-.782.476-1.267.476-.336 0-.604-.054-.805-.161a1.046 1.046 0 01-.455-.476 2.317 2.317 0 01-.203-.77 9.693 9.693 0 01-.049-1.029V26.8h-2.03v.938h.938v3.08c0 .607.047 1.113.14 1.519.093.406.238.73.434.973s.446.413.749.511c.303.098.67.147 1.099.147zm7.07-.168v-4.396c.065-.233.168-.455.308-.665.14-.21.303-.394.49-.553a2.44 2.44 0 01.623-.385c.229-.098.464-.147.707-.147.663 0 1.12.196 1.372.588.252.392.378.975.378 1.75V33.8h1.092v-4.018c0-.625-.056-1.141-.168-1.547-.112-.406-.278-.728-.497-.966a1.738 1.738 0 00-.826-.497 4.219 4.219 0 00-1.141-.14 2.856 2.856 0 00-2.023.833c-.154.154-.278.31-.371.469h-.07l-.126-1.134h-1.876v.91h.938c.019.103.035.224.049.364a12.159 12.159 0 01.056.847c.005.135.007.245.007.329v4.55h1.078zm10.556.168c.364 0 .702-.033 1.015-.098a4.708 4.708 0 002.023-.952l-.49-.812c-.28.243-.628.439-1.043.588-.415.15-.842.224-1.281.224-.41 0-.786-.06-1.127-.182a2.517 2.517 0 01-.875-.518 2.248 2.248 0 01-.56-.819 2.902 2.902 0 01-.196-1.099c0-.933.224-1.615.672-2.044.448-.43 1.13-.644 2.044-.644.243 0 .488.026.735.077.247.051.478.114.693.189v1.33h1.008v-1.946l.014-.042a6.232 6.232 0 00-1.099-.406c-.434-.121-.996-.182-1.687-.182-.541 0-1.031.082-1.47.245a3.08 3.08 0 00-1.12.707c-.308.308-.544.69-.707 1.148-.163.457-.245.98-.245 1.568 0 .55.08 1.052.238 1.505.159.453.392.84.7 1.162.308.322.693.57 1.155.742.462.173.996.259 1.603.259zm8.722.014c.476 0 .94-.08 1.393-.238a3.938 3.938 0 001.169-.63l-.364-.826c-.252.187-.534.36-.847.518-.313.159-.679.238-1.099.238-.616 0-1.09-.163-1.421-.49-.331-.327-.497-.83-.497-1.512v-3.304h3.738V26.8h-3.738v-1.694l-1.092.308V26.8h-1.666v.938h1.666v3.472c0 .485.075.903.224 1.253.15.35.35.637.602.861.252.224.544.39.875.497a3.41 3.41 0 001.057.161zm7.966-8.302c.27 0 .497-.084.679-.252a.806.806 0 00.273-.616.889.889 0 00-.273-.651.922.922 0 00-.679-.273.838.838 0 00-.644.273.927.927 0 00-.252.651c0 .243.084.448.252.616a.872.872 0 00.644.252zm2.982 8.12v-.938h-2.38V26.8h-3.556v.938h2.436v5.124h-2.436v.938h5.936zm5.194.168a3.82 3.82 0 001.449-.259 2.907 2.907 0 001.071-.735c.29-.317.509-.702.658-1.155.15-.453.224-.959.224-1.519 0-.513-.068-.994-.203-1.442a3.168 3.168 0 00-.623-1.162 2.981 2.981 0 00-1.057-.777c-.425-.191-.931-.287-1.519-.287-1.092 0-1.932.329-2.52.987-.588.658-.882 1.552-.882 2.681 0 .513.068.994.203 1.442.135.448.343.835.623 1.162.28.327.635.586 1.064.777.43.191.933.287 1.512.287zm0-.938c-.41 0-.758-.08-1.043-.238a2.001 2.001 0 01-.693-.63 2.683 2.683 0 01-.385-.882 4.14 4.14 0 01-.119-.98c0-.905.187-1.587.56-2.044.373-.457.933-.686 1.68-.686.41 0 .758.08 1.043.238.285.159.518.369.7.63.182.261.313.553.392.875.08.322.119.651.119.987 0 .896-.189 1.575-.567 2.037-.378.462-.94.693-1.687.693zm6.58.77v-4.396c.065-.233.168-.455.308-.665.14-.21.303-.394.49-.553a2.44 2.44 0 01.623-.385c.229-.098.464-.147.707-.147.663 0 1.12.196 1.372.588.252.392.378.975.378 1.75V33.8h1.092v-4.018c0-.625-.056-1.141-.168-1.547-.112-.406-.278-.728-.497-.966a1.738 1.738 0 00-.826-.497 4.219 4.219 0 00-1.141-.14 2.856 2.856 0 00-2.023.833c-.154.154-.278.31-.371.469h-.07l-.126-1.134h-1.876v.91h.938c.019.103.035.224.049.364a12.159 12.159 0 01.056.847c.005.135.007.245.007.329v4.55h1.078z"/><path id="(){" fill="#7E7C7B" d="M97.272 36.768l.35-.966a4.965 4.965 0 01-1.337-.497 4.15 4.15 0 01-1.204-.994c-.36-.425-.649-.957-.868-1.596-.22-.64-.329-1.412-.329-2.317 0-.896.091-1.659.273-2.289.182-.63.439-1.157.77-1.582a3.928 3.928 0 011.183-1.022 7.086 7.086 0 011.512-.623l-.35-.882a6.005 6.005 0 00-1.729.665 4.984 4.984 0 00-1.435 1.246c-.41.518-.737 1.148-.98 1.89s-.364 1.608-.364 2.597c0 .999.119 1.862.357 2.59.238.728.56 1.344.966 1.848.406.504.882.912 1.428 1.225a6.964 6.964 0 001.757.707zm4.704 0a6.964 6.964 0 001.757-.707 5.036 5.036 0 001.428-1.225c.406-.504.728-1.12.966-1.848s.357-1.591.357-2.59c0-.99-.121-1.855-.364-2.597s-.57-1.372-.98-1.89a4.984 4.984 0 00-1.435-1.246 6.005 6.005 0 00-1.729-.665l-.35.882c.55.159 1.055.366 1.512.623.457.257.852.597 1.183 1.022.331.425.588.952.77 1.582.182.63.273 1.393.273 2.289 0 .905-.11 1.678-.329 2.317-.22.64-.509 1.171-.868 1.596a4.15 4.15 0 01-1.204.994 4.965 4.965 0 01-1.337.497l.35.966zm21.728.252v-.98h-1.526c-.57 0-.975-.135-1.218-.406-.243-.27-.364-.69-.364-1.26V33.03a2.25 2.25 0 00-.217-.994 3.347 3.347 0 00-.511-.777 2.744 2.744 0 00-.602-.518c-.205-.126-.369-.198-.49-.217v-.084c.13-.019.299-.086.504-.203a2.7 2.7 0 001.106-1.225c.14-.299.21-.64.21-1.022v-1.358c0-.55.114-.966.343-1.246.229-.28.637-.42 1.225-.42h1.54v-.98h-2.03c-.317 0-.609.058-.875.175a2.053 2.053 0 00-.686.483 2.22 2.22 0 00-.448.728c-.107.28-.161.588-.161.924v1.428c0 .43-.068.789-.203 1.078-.135.29-.303.525-.504.707a1.87 1.87 0 01-.644.392c-.229.08-.432.119-.609.119V31c.177 0 .38.047.609.14.229.093.443.238.644.434.2.196.369.441.504.735s.203.642.203 1.043v1.372c0 .756.198 1.328.595 1.715.397.387.922.581 1.575.581h2.03z"/><path id="alert" fill="#181717" d="M136.514 33.926a2.749 2.749 0 001.589-.469c.182-.126.329-.254.441-.385.112-.13.196-.238.252-.322h.07l.126 1.05h1.862v-.91h-.938c-.056-.42-.084-.863-.084-1.33.01-.401.023-.803.042-1.204.019-.401.028-.78.028-1.134 0-.308-.03-.614-.091-.917a2.049 2.049 0 00-.35-.812 1.893 1.893 0 00-.714-.581c-.303-.15-.693-.224-1.169-.224-.485 0-.98.051-1.484.154-.504.103-.957.27-1.358.504l.35.812c.299-.121.64-.24 1.022-.357a4.106 4.106 0 011.204-.175c.308 0 .567.035.777.105.21.07.373.189.49.357.117.168.191.394.224.679.033.285.026.642-.021 1.071a9.544 9.544 0 00-1.869-.112c-.555.028-1.029.126-1.421.294-.392.168-.693.41-.903.728-.21.317-.315.714-.315 1.19 0 .616.2 1.101.602 1.456.401.355.947.532 1.638.532zm.28-.938c-.495 0-.847-.114-1.057-.343a1.152 1.152 0 01-.315-.805c0-.299.084-.541.252-.728.168-.187.401-.324.7-.413a3.763 3.763 0 011.064-.133c.41 0 .859.042 1.344.126v.98a2.133 2.133 0 01-.672.868 2.22 2.22 0 01-.588.322 2.057 2.057 0 01-.728.126zm9.884.994c.159 0 .331-.019.518-.056a3.61 3.61 0 001.106-.42c.177-.103.34-.22.49-.35l-.504-.77c-.29.224-.553.383-.791.476-.238.093-.488.14-.749.14-.373 0-.656-.117-.847-.35-.191-.233-.287-.635-.287-1.204V24h-2.324v.938h1.232v6.51c0 .476.047.875.14 1.197.093.322.231.581.413.777.182.196.408.338.679.427.27.089.579.133.924.133zm7.672-.014c.299 0 .595-.026.889-.077.294-.051.576-.124.847-.217.27-.093.52-.205.749-.336.229-.13.427-.27.595-.42l-.434-.798a2.585 2.585 0 01-.399.28 3.72 3.72 0 01-.595.28c-.224.084-.46.156-.707.217-.247.06-.497.091-.749.091-.756 0-1.36-.208-1.813-.623-.453-.415-.679-1.043-.679-1.883h5.418c.047-.793-.01-1.44-.168-1.939-.159-.5-.385-.891-.679-1.176a2.295 2.295 0 00-1.015-.581 4.466 4.466 0 00-1.162-.154c-.541 0-1.031.082-1.47.245a3.08 3.08 0 00-1.12.707c-.308.308-.544.69-.707 1.148-.163.457-.245.98-.245 1.568 0 .56.075 1.064.224 1.512.15.448.369.833.658 1.155.29.322.649.57 1.078.742.43.173.924.259 1.484.259zm2.1-4.466h-4.354c.037-.364.124-.67.259-.917s.308-.448.518-.602c.21-.154.453-.264.728-.329a3.78 3.78 0 01.875-.098c.57 0 1.029.17 1.379.511.35.34.548.819.595 1.435zm8.554 4.298v-.938h-2.688v-4.13c.056-.084.145-.187.266-.308.121-.121.268-.243.441-.364s.376-.224.609-.308c.233-.084.495-.126.784-.126.308 0 .52.14.637.42.117.28.175.719.175 1.316l.98-.014c0-.42-.019-.796-.056-1.127a2.771 2.771 0 00-.217-.847 1.206 1.206 0 00-.448-.532c-.191-.121-.446-.182-.763-.182-.541 0-1.008.103-1.4.308a5.046 5.046 0 00-1.064.742h-.07l-.224-.91h-2.618v.938h1.89v5.124h-1.89v.938h5.656zm6.678.182c.476 0 .94-.08 1.393-.238a3.938 3.938 0 001.169-.63l-.364-.826c-.252.187-.534.36-.847.518-.313.159-.679.238-1.099.238-.616 0-1.09-.163-1.421-.49-.331-.327-.497-.83-.497-1.512v-3.304h3.738V26.8h-3.738v-1.694l-1.092.308V26.8h-1.666v.938h1.666v3.472c0 .485.075.903.224 1.253.15.35.35.637.602.861.252.224.544.39.875.497a3.41 3.41 0 001.057.161z"/><path id="(" fill="#7E7C7B" d="M181.272 36.768l.35-.966a4.965 4.965 0 01-1.337-.497 4.15 4.15 0 01-1.204-.994c-.36-.425-.649-.957-.868-1.596-.22-.64-.329-1.412-.329-2.317 0-.896.091-1.659.273-2.289.182-.63.439-1.157.77-1.582a3.928 3.928 0 011.183-1.022 7.086 7.086 0 011.512-.623l-.35-.882a6.005 6.005 0 00-1.729.665 4.984 4.984 0 00-1.435 1.246c-.41.518-.737 1.148-.98 1.89s-.364 1.608-.364 2.597c0 .999.119 1.862.357 2.59.238.728.56 1.344.966 1.848.406.504.882.912 1.428 1.225a6.964 6.964 0 001.757.707z"/><path id="j" fill="#181717" d="M188.636 25.68c.27 0 .497-.084.679-.252a.806.806 0 00.273-.616.889.889 0 00-.273-.651.922.922 0 00-.679-.273.838.838 0 00-.644.273.927.927 0 00-.252.651c0 .243.084.448.252.616a.872.872 0 00.644.252zm-1.904 11.088c.85 0 1.514-.231 1.995-.693.48-.462.721-1.164.721-2.107V26.8h-4.508v.938h3.388v6.02c0 .616-.119 1.099-.357 1.449-.238.35-.637.525-1.197.525-.345 0-.679-.07-1.001-.21a4.362 4.362 0 01-.861-.49l-.462.91a4.501 4.501 0 00.882.497c.205.089.427.166.665.231.238.065.483.098.735.098z"/><path id=");}," fill="#7E7C7B" d="M194.376 36.768a6.964 6.964 0 001.757-.707 5.036 5.036 0 001.428-1.225c.406-.504.728-1.12.966-1.848s.357-1.591.357-2.59c0-.99-.121-1.855-.364-2.597s-.57-1.372-.98-1.89a4.984 4.984 0 00-1.435-1.246 6.005 6.005 0 00-1.729-.665l-.35.882c.55.159 1.055.366 1.512.623.457.257.852.597 1.183 1.022.331.425.588.952.77 1.582.182.63.273 1.393.273 2.289 0 .905-.11 1.678-.329 2.317-.22.64-.509 1.171-.868 1.596a4.15 4.15 0 01-1.204.994 4.965 4.965 0 01-1.337.497l.35.966zm10.304-8.302c.299 0 .532-.089.7-.266a.938.938 0 00.252-.672c0-.299-.084-.53-.252-.693-.168-.163-.401-.245-.7-.245-.28 0-.504.082-.672.245-.168.163-.252.394-.252.693 0 .27.084.495.252.672.168.177.392.266.672.266zm-.756 7.42c.177-.056.371-.142.581-.259a2.42 2.42 0 001.043-1.162 2.36 2.36 0 00.182-.959c0-.448-.098-.796-.294-1.043-.196-.247-.471-.371-.826-.371-.29 0-.525.086-.707.259a.893.893 0 00-.273.679c0 .299.077.525.231.679.154.154.366.231.637.231.075 0 .177-.014.308-.042 0 .345-.121.64-.364.882-.243.243-.532.43-.868.56l.35.546zm16.45 1.134c.653 0 1.178-.194 1.575-.581.397-.387.595-.959.595-1.715v-1.372c0-.401.068-.749.203-1.043a2.44 2.44 0 01.504-.735c.2-.196.415-.34.644-.434.229-.093.432-.14.609-.14v-.98c-.177 0-.38-.04-.609-.119a1.87 1.87 0 01-.644-.392 2.193 2.193 0 01-.504-.707c-.135-.29-.203-.649-.203-1.078v-1.428c0-.336-.054-.644-.161-.924a2.22 2.22 0 00-.448-.728 2.053 2.053 0 00-.686-.483 2.155 2.155 0 00-.875-.175h-2.03v.98h1.54c.588 0 .996.14 1.225.42.229.28.343.695.343 1.246v1.358c0 .383.07.723.21 1.022a2.7 2.7 0 001.106 1.225c.205.117.373.184.504.203v.084c-.13.019-.299.091-.504.217a2.744 2.744 0 00-.602.518c-.196.22-.364.478-.504.777-.14.299-.21.63-.21.994v1.344c0 .57-.121.99-.364 1.26s-.649.406-1.218.406h-1.526v.98h2.03zm8.75-1.134c.177-.056.371-.142.581-.259a2.42 2.42 0 001.043-1.162 2.36 2.36 0 00.182-.959c0-.448-.098-.796-.294-1.043-.196-.247-.471-.371-.826-.371-.29 0-.525.086-.707.259a.893.893 0 00-.273.679c0 .299.077.525.231.679.154.154.366.231.637.231.075 0 .177-.014.308-.042 0 .345-.121.64-.364.882-.243.243-.532.43-.868.56l.35.546z"/><path id="function" fill="#1C85B5" d="M22.512 57.8v-.938h-2.898v-5.124h2.898V50.8h-2.898c0-.69.112-1.188.336-1.491.224-.303.644-.455 1.26-.455.187 0 .392.016.616.049.224.033.457.1.7.203l.252-.91a3.603 3.603 0 00-.784-.224 5.473 5.473 0 00-.826-.056c-.85 0-1.503.196-1.96.588-.457.392-.686 1.027-.686 1.904v.392h-1.666v.938h1.666v5.124h-1.666v.938h5.656zm5.222.168c.57 0 1.055-.126 1.456-.378s.723-.579.966-.98h.056l.042 1.19h1.862v-.91h-.938a9.956 9.956 0 01-.084-1.316V50.8h-1.988v.938h.896v3.626c-.187.476-.46.873-.819 1.19-.36.317-.782.476-1.267.476-.336 0-.604-.054-.805-.161a1.046 1.046 0 01-.455-.476 2.317 2.317 0 01-.203-.77 9.693 9.693 0 01-.049-1.029V50.8h-2.03v.938h.938v3.08c0 .607.047 1.113.14 1.519.093.406.238.73.434.973s.446.413.749.511c.303.098.67.147 1.099.147zm7.07-.168v-4.396c.065-.233.168-.455.308-.665.14-.21.303-.394.49-.553a2.44 2.44 0 01.623-.385c.229-.098.464-.147.707-.147.663 0 1.12.196 1.372.588.252.392.378.975.378 1.75V57.8h1.092v-4.018c0-.625-.056-1.141-.168-1.547-.112-.406-.278-.728-.497-.966a1.738 1.738 0 00-.826-.497 4.219 4.219 0 00-1.141-.14 2.856 2.856 0 00-2.023.833c-.154.154-.278.31-.371.469h-.07l-.126-1.134h-1.876v.91h.938c.019.103.035.224.049.364a12.159 12.159 0 01.056.847c.005.135.007.245.007.329v4.55h1.078zm10.556.168c.364 0 .702-.033 1.015-.098a4.708 4.708 0 002.023-.952l-.49-.812c-.28.243-.628.439-1.043.588-.415.15-.842.224-1.281.224-.41 0-.786-.06-1.127-.182a2.517 2.517 0 01-.875-.518 2.248 2.248 0 01-.56-.819 2.902 2.902 0 01-.196-1.099c0-.933.224-1.615.672-2.044.448-.43 1.13-.644 2.044-.644.243 0 .488.026.735.077.247.051.478.114.693.189v1.33h1.008v-1.946l.014-.042a6.232 6.232 0 00-1.099-.406c-.434-.121-.996-.182-1.687-.182-.541 0-1.031.082-1.47.245a3.08 3.08 0 00-1.12.707c-.308.308-.544.69-.707 1.148-.163.457-.245.98-.245 1.568 0 .55.08 1.052.238 1.505.159.453.392.84.7 1.162.308.322.693.57 1.155.742.462.173.996.259 1.603.259zm8.722.014c.476 0 .94-.08 1.393-.238a3.938 3.938 0 001.169-.63l-.364-.826c-.252.187-.534.36-.847.518-.313.159-.679.238-1.099.238-.616 0-1.09-.163-1.421-.49-.331-.327-.497-.83-.497-1.512v-3.304h3.738V50.8h-3.738v-1.694l-1.092.308V50.8h-1.666v.938h1.666v3.472c0 .485.075.903.224 1.253.15.35.35.637.602.861.252.224.544.39.875.497a3.41 3.41 0 001.057.161zm7.966-8.302c.27 0 .497-.084.679-.252a.806.806 0 00.273-.616.889.889 0 00-.273-.651.922.922 0 00-.679-.273.838.838 0 00-.644.273.927.927 0 00-.252.651c0 .243.084.448.252.616a.872.872 0 00.644.252zm2.982 8.12v-.938h-2.38V50.8h-3.556v.938h2.436v5.124h-2.436v.938h5.936zm5.194.168a3.82 3.82 0 001.449-.259 2.907 2.907 0 001.071-.735c.29-.317.509-.702.658-1.155.15-.453.224-.959.224-1.519 0-.513-.068-.994-.203-1.442a3.168 3.168 0 00-.623-1.162 2.981 2.981 0 00-1.057-.777c-.425-.191-.931-.287-1.519-.287-1.092 0-1.932.329-2.52.987-.588.658-.882 1.552-.882 2.681 0 .513.068.994.203 1.442.135.448.343.835.623 1.162.28.327.635.586 1.064.777.43.191.933.287 1.512.287zm0-.938c-.41 0-.758-.08-1.043-.238a2.001 2.001 0 01-.693-.63 2.683 2.683 0 01-.385-.882 4.14 4.14 0 01-.119-.98c0-.905.187-1.587.56-2.044.373-.457.933-.686 1.68-.686.41 0 .758.08 1.043.238.285.159.518.369.7.63.182.261.313.553.392.875.08.322.119.651.119.987 0 .896-.189 1.575-.567 2.037-.378.462-.94.693-1.687.693zm6.58.77v-4.396c.065-.233.168-.455.308-.665.14-.21.303-.394.49-.553a2.44 2.44 0 01.623-.385c.229-.098.464-.147.707-.147.663 0 1.12.196 1.372.588.252.392.378.975.378 1.75V57.8h1.092v-4.018c0-.625-.056-1.141-.168-1.547-.112-.406-.278-.728-.497-.966a1.738 1.738 0 00-.826-.497 4.219 4.219 0 00-1.141-.14 2.856 2.856 0 00-2.023.833c-.154.154-.278.31-.371.469h-.07l-.126-1.134h-1.876v.91h.938c.019.103.035.224.049.364a12.159 12.159 0 01.056.847c.005.135.007.245.007.329v4.55h1.078z"/><path id="(){" fill="#7E7C7B" d="M97.272 60.768l.35-.966a4.965 4.965 0 01-1.337-.497 4.15 4.15 0 01-1.204-.994c-.36-.425-.649-.957-.868-1.596-.22-.64-.329-1.412-.329-2.317 0-.896.091-1.659.273-2.289.182-.63.439-1.157.77-1.582a3.928 3.928 0 011.183-1.022 7.086 7.086 0 011.512-.623l-.35-.882a6.005 6.005 0 00-1.729.665 4.984 4.984 0 00-1.435 1.246c-.41.518-.737 1.148-.98 1.89s-.364 1.608-.364 2.597c0 .999.119 1.862.357 2.59.238.728.56 1.344.966 1.848.406.504.882.912 1.428 1.225a6.964 6.964 0 001.757.707zm4.704 0a6.964 6.964 0 001.757-.707 5.036 5.036 0 001.428-1.225c.406-.504.728-1.12.966-1.848s.357-1.591.357-2.59c0-.99-.121-1.855-.364-2.597s-.57-1.372-.98-1.89a4.984 4.984 0 00-1.435-1.246 6.005 6.005 0 00-1.729-.665l-.35.882c.55.159 1.055.366 1.512.623.457.257.852.597 1.183 1.022.331.425.588.952.77 1.582.182.63.273 1.393.273 2.289 0 .905-.11 1.678-.329 2.317-.22.64-.509 1.171-.868 1.596a4.15 4.15 0 01-1.204.994 4.965 4.965 0 01-1.337.497l.35.966zm21.728.252v-.98h-1.526c-.57 0-.975-.135-1.218-.406-.243-.27-.364-.69-.364-1.26V57.03a2.25 2.25 0 00-.217-.994 3.347 3.347 0 00-.511-.777 2.744 2.744 0 00-.602-.518c-.205-.126-.369-.198-.49-.217v-.084c.13-.019.299-.086.504-.203a2.7 2.7 0 001.106-1.225c.14-.299.21-.64.21-1.022v-1.358c0-.55.114-.966.343-1.246.229-.28.637-.42 1.225-.42h1.54v-.98h-2.03c-.317 0-.609.058-.875.175a2.053 2.053 0 00-.686.483 2.22 2.22 0 00-.448.728c-.107.28-.161.588-.161.924v1.428c0 .43-.068.789-.203 1.078-.135.29-.303.525-.504.707a1.87 1.87 0 01-.644.392c-.229.08-.432.119-.609.119V55c.177 0 .38.047.609.14.229.093.443.238.644.434.2.196.369.441.504.735s.203.642.203 1.043v1.372c0 .756.198 1.328.595 1.715.397.387.922.581 1.575.581h2.03z"/><path id="alert" fill="#181717" d="M136.514 57.926a2.749 2.749 0 001.589-.469c.182-.126.329-.254.441-.385.112-.13.196-.238.252-.322h.07l.126 1.05h1.862v-.91h-.938c-.056-.42-.084-.863-.084-1.33.01-.401.023-.803.042-1.204.019-.401.028-.78.028-1.134 0-.308-.03-.614-.091-.917a2.049 2.049 0 00-.35-.812 1.893 1.893 0 00-.714-.581c-.303-.15-.693-.224-1.169-.224-.485 0-.98.051-1.484.154-.504.103-.957.27-1.358.504l.35.812c.299-.121.64-.24 1.022-.357a4.106 4.106 0 011.204-.175c.308 0 .567.035.777.105.21.07.373.189.49.357.117.168.191.394.224.679.033.285.026.642-.021 1.071a9.544 9.544 0 00-1.869-.112c-.555.028-1.029.126-1.421.294-.392.168-.693.41-.903.728-.21.317-.315.714-.315 1.19 0 .616.2 1.101.602 1.456.401.355.947.532 1.638.532zm.28-.938c-.495 0-.847-.114-1.057-.343a1.152 1.152 0 01-.315-.805c0-.299.084-.541.252-.728.168-.187.401-.324.7-.413a3.763 3.763 0 011.064-.133c.41 0 .859.042 1.344.126v.98a2.133 2.133 0 01-.672.868 2.22 2.22 0 01-.588.322 2.057 2.057 0 01-.728.126zm9.884.994c.159 0 .331-.019.518-.056a3.61 3.61 0 001.106-.42c.177-.103.34-.22.49-.35l-.504-.77c-.29.224-.553.383-.791.476-.238.093-.488.14-.749.14-.373 0-.656-.117-.847-.35-.191-.233-.287-.635-.287-1.204V48h-2.324v.938h1.232v6.51c0 .476.047.875.14 1.197.093.322.231.581.413.777.182.196.408.338.679.427.27.089.579.133.924.133zm7.672-.014c.299 0 .595-.026.889-.077.294-.051.576-.124.847-.217.27-.093.52-.205.749-.336.229-.13.427-.27.595-.42l-.434-.798a2.585 2.585 0 01-.399.28 3.72 3.72 0 01-.595.28c-.224.084-.46.156-.707.217-.247.06-.497.091-.749.091-.756 0-1.36-.208-1.813-.623-.453-.415-.679-1.043-.679-1.883h5.418c.047-.793-.01-1.44-.168-1.939-.159-.5-.385-.891-.679-1.176a2.295 2.295 0 00-1.015-.581 4.466 4.466 0 00-1.162-.154c-.541 0-1.031.082-1.47.245a3.08 3.08 0 00-1.12.707c-.308.308-.544.69-.707 1.148-.163.457-.245.98-.245 1.568 0 .56.075 1.064.224 1.512.15.448.369.833.658 1.155.29.322.649.57 1.078.742.43.173.924.259 1.484.259zm2.1-4.466h-4.354c.037-.364.124-.67.259-.917s.308-.448.518-.602c.21-.154.453-.264.728-.329a3.78 3.78 0 01.875-.098c.57 0 1.029.17 1.379.511.35.34.548.819.595 1.435zm8.554 4.298v-.938h-2.688v-4.13c.056-.084.145-.187.266-.308.121-.121.268-.243.441-.364s.376-.224.609-.308c.233-.084.495-.126.784-.126.308 0 .52.14.637.42.117.28.175.719.175 1.316l.98-.014c0-.42-.019-.796-.056-1.127a2.771 2.771 0 00-.217-.847 1.206 1.206 0 00-.448-.532c-.191-.121-.446-.182-.763-.182-.541 0-1.008.103-1.4.308a5.046 5.046 0 00-1.064.742h-.07l-.224-.91h-2.618v.938h1.89v5.124h-1.89v.938h5.656zm6.678.182c.476 0 .94-.08 1.393-.238a3.938 3.938 0 001.169-.63l-.364-.826c-.252.187-.534.36-.847.518-.313.159-.679.238-1.099.238-.616 0-1.09-.163-1.421-.49-.331-.327-.497-.83-.497-1.512v-3.304h3.738V50.8h-3.738v-1.694l-1.092.308V50.8h-1.666v.938h1.666v3.472c0 .485.075.903.224 1.253.15.35.35.637.602.861.252.224.544.39.875.497a3.41 3.41 0 001.057.161z"/><path id="(" fill="#7E7C7B" d="M181.272 60.768l.35-.966a4.965 4.965 0 01-1.337-.497 4.15 4.15 0 01-1.204-.994c-.36-.425-.649-.957-.868-1.596-.22-.64-.329-1.412-.329-2.317 0-.896.091-1.659.273-2.289.182-.63.439-1.157.77-1.582a3.928 3.928 0 011.183-1.022 7.086 7.086 0 011.512-.623l-.35-.882a6.005 6.005 0 00-1.729.665 4.984 4.984 0 00-1.435 1.246c-.41.518-.737 1.148-.98 1.89s-.364 1.608-.364 2.597c0 .999.119 1.862.357 2.59.238.728.56 1.344.966 1.848.406.504.882.912 1.428 1.225a6.964 6.964 0 001.757.707z"/><path id="j" fill="#181717" d="M188.636 49.68c.27 0 .497-.084.679-.252a.806.806 0 00.273-.616.889.889 0 00-.273-.651.922.922 0 00-.679-.273.838.838 0 00-.644.273.927.927 0 00-.252.651c0 .243.084.448.252.616a.872.872 0 00.644.252zm-1.904 11.088c.85 0 1.514-.231 1.995-.693.48-.462.721-1.164.721-2.107V50.8h-4.508v.938h3.388v6.02c0 .616-.119 1.099-.357 1.449-.238.35-.637.525-1.197.525-.345 0-.679-.07-1.001-.21a4.362 4.362 0 01-.861-.49l-.462.91a4.501 4.501 0 00.882.497c.205.089.427.166.665.231.238.065.483.098.735.098z"/><path id=");}," fill="#7E7C7B" d="M194.376 60.768a6.964 6.964 0 001.757-.707 5.036 5.036 0 001.428-1.225c.406-.504.728-1.12.966-1.848s.357-1.591.357-2.59c0-.99-.121-1.855-.364-2.597s-.57-1.372-.98-1.89a4.984 4.984 0 00-1.435-1.246 6.005 6.005 0 00-1.729-.665l-.35.882c.55.159 1.055.366 1.512.623.457.257.852.597 1.183 1.022.331.425.588.952.77 1.582.182.63.273 1.393.273 2.289 0 .905-.11 1.678-.329 2.317-.22.64-.509 1.171-.868 1.596a4.15 4.15 0 01-1.204.994 4.965 4.965 0 01-1.337.497l.35.966zm10.304-8.302c.299 0 .532-.089.7-.266a.938.938 0 00.252-.672c0-.299-.084-.53-.252-.693-.168-.163-.401-.245-.7-.245-.28 0-.504.082-.672.245-.168.163-.252.394-.252.693 0 .27.084.495.252.672.168.177.392.266.672.266zm-.756 7.42c.177-.056.371-.142.581-.259a2.42 2.42 0 001.043-1.162 2.36 2.36 0 00.182-.959c0-.448-.098-.796-.294-1.043-.196-.247-.471-.371-.826-.371-.29 0-.525.086-.707.259a.893.893 0 00-.273.679c0 .299.077.525.231.679.154.154.366.231.637.231.075 0 .177-.014.308-.042 0 .345-.121.64-.364.882-.243.243-.532.43-.868.56l.35.546zm16.45 1.134c.653 0 1.178-.194 1.575-.581.397-.387.595-.959.595-1.715v-1.372c0-.401.068-.749.203-1.043a2.44 2.44 0 01.504-.735c.2-.196.415-.34.644-.434.229-.093.432-.14.609-.14v-.98c-.177 0-.38-.04-.609-.119a1.87 1.87 0 01-.644-.392 2.193 2.193 0 01-.504-.707c-.135-.29-.203-.649-.203-1.078v-1.428c0-.336-.054-.644-.161-.924a2.22 2.22 0 00-.448-.728 2.053 2.053 0 00-.686-.483 2.155 2.155 0 00-.875-.175h-2.03v.98h1.54c.588 0 .996.14 1.225.42.229.28.343.695.343 1.246v1.358c0 .383.07.723.21 1.022a2.7 2.7 0 001.106 1.225c.205.117.373.184.504.203v.084c-.13.019-.299.091-.504.217a2.744 2.744 0 00-.602.518c-.196.22-.364.478-.504.777-.14.299-.21.63-.21.994v1.344c0 .57-.121.99-.364 1.26s-.649.406-1.218.406h-1.526v.98h2.03zm8.75-1.134c.177-.056.371-.142.581-.259a2.42 2.42 0 001.043-1.162 2.36 2.36 0 00.182-.959c0-.448-.098-.796-.294-1.043-.196-.247-.471-.371-.826-.371-.29 0-.525.086-.707.259a.893.893 0 00-.273.679c0 .299.077.525.231.679.154.154.366.231.637.231.075 0 .177-.014.308-.042 0 .345-.121.64-.364.882-.243.243-.532.43-.868.56l.35.546z"/><path id="function" fill="#1C85B5" d="M22.512 81.8v-.938h-2.898v-5.124h2.898V74.8h-2.898c0-.69.112-1.188.336-1.491.224-.303.644-.455 1.26-.455.187 0 .392.016.616.049.224.033.457.1.7.203l.252-.91a3.603 3.603 0 00-.784-.224 5.473 5.473 0 00-.826-.056c-.85 0-1.503.196-1.96.588-.457.392-.686 1.027-.686 1.904v.392h-1.666v.938h1.666v5.124h-1.666v.938h5.656zm5.222.168c.57 0 1.055-.126 1.456-.378s.723-.579.966-.98h.056l.042 1.19h1.862v-.91h-.938a9.956 9.956 0 01-.084-1.316V74.8h-1.988v.938h.896v3.626c-.187.476-.46.873-.819 1.19-.36.317-.782.476-1.267.476-.336 0-.604-.054-.805-.161a1.046 1.046 0 01-.455-.476 2.317 2.317 0 01-.203-.77 9.693 9.693 0 01-.049-1.029V74.8h-2.03v.938h.938v3.08c0 .607.047 1.113.14 1.519.093.406.238.73.434.973s.446.413.749.511c.303.098.67.147 1.099.147zm7.07-.168v-4.396c.065-.233.168-.455.308-.665.14-.21.303-.394.49-.553a2.44 2.44 0 01.623-.385c.229-.098.464-.147.707-.147.663 0 1.12.196 1.372.588.252.392.378.975.378 1.75V81.8h1.092v-4.018c0-.625-.056-1.141-.168-1.547-.112-.406-.278-.728-.497-.966a1.738 1.738 0 00-.826-.497 4.219 4.219 0 00-1.141-.14 2.856 2.856 0 00-2.023.833c-.154.154-.278.31-.371.469h-.07l-.126-1.134h-1.876v.91h.938c.019.103.035.224.049.364a12.159 12.159 0 01.056.847c.005.135.007.245.007.329v4.55h1.078zm10.556.168c.364 0 .702-.033 1.015-.098a4.708 4.708 0 002.023-.952l-.49-.812c-.28.243-.628.439-1.043.588-.415.15-.842.224-1.281.224-.41 0-.786-.06-1.127-.182a2.517 2.517 0 01-.875-.518 2.248 2.248 0 01-.56-.819 2.902 2.902 0 01-.196-1.099c0-.933.224-1.615.672-2.044.448-.43 1.13-.644 2.044-.644.243 0 .488.026.735.077.247.051.478.114.693.189v1.33h1.008v-1.946l.014-.042a6.232 6.232 0 00-1.099-.406c-.434-.121-.996-.182-1.687-.182-.541 0-1.031.082-1.47.245a3.08 3.08 0 00-1.12.707c-.308.308-.544.69-.707 1.148-.163.457-.245.98-.245 1.568 0 .55.08 1.052.238 1.505.159.453.392.84.7 1.162.308.322.693.57 1.155.742.462.173.996.259 1.603.259zm8.722.014c.476 0 .94-.08 1.393-.238a3.938 3.938 0 001.169-.63l-.364-.826c-.252.187-.534.36-.847.518-.313.159-.679.238-1.099.238-.616 0-1.09-.163-1.421-.49-.331-.327-.497-.83-.497-1.512v-3.304h3.738V74.8h-3.738v-1.694l-1.092.308V74.8h-1.666v.938h1.666v3.472c0 .485.075.903.224 1.253.15.35.35.637.602.861.252.224.544.39.875.497a3.41 3.41 0 001.057.161zm7.966-8.302c.27 0 .497-.084.679-.252a.806.806 0 00.273-.616.889.889 0 00-.273-.651.922.922 0 00-.679-.273.838.838 0 00-.644.273.927.927 0 00-.252.651c0 .243.084.448.252.616a.872.872 0 00.644.252zm2.982 8.12v-.938h-2.38V74.8h-3.556v.938h2.436v5.124h-2.436v.938h5.936zm5.194.168a3.82 3.82 0 001.449-.259 2.907 2.907 0 001.071-.735c.29-.317.509-.702.658-1.155.15-.453.224-.959.224-1.519 0-.513-.068-.994-.203-1.442a3.168 3.168 0 00-.623-1.162 2.981 2.981 0 00-1.057-.777c-.425-.191-.931-.287-1.519-.287-1.092 0-1.932.329-2.52.987-.588.658-.882 1.552-.882 2.681 0 .513.068.994.203 1.442.135.448.343.835.623 1.162.28.327.635.586 1.064.777.43.191.933.287 1.512.287zm0-.938c-.41 0-.758-.08-1.043-.238a2.001 2.001 0 01-.693-.63 2.683 2.683 0 01-.385-.882 4.14 4.14 0 01-.119-.98c0-.905.187-1.587.56-2.044.373-.457.933-.686 1.68-.686.41 0 .758.08 1.043.238.285.159.518.369.7.63.182.261.313.553.392.875.08.322.119.651.119.987 0 .896-.189 1.575-.567 2.037-.378.462-.94.693-1.687.693zm6.58.77v-4.396c.065-.233.168-.455.308-.665.14-.21.303-.394.49-.553a2.44 2.44 0 01.623-.385c.229-.098.464-.147.707-.147.663 0 1.12.196 1.372.588.252.392.378.975.378 1.75V81.8h1.092v-4.018c0-.625-.056-1.141-.168-1.547-.112-.406-.278-.728-.497-.966a1.738 1.738 0 00-.826-.497 4.219 4.219 0 00-1.141-.14 2.856 2.856 0 00-2.023.833c-.154.154-.278.31-.371.469h-.07l-.126-1.134h-1.876v.91h.938c.019.103.035.224.049.364a12.159 12.159 0 01.056.847c.005.135.007.245.007.329v4.55h1.078z"/><path id="(){" fill="#7E7C7B" d="M97.272 84.768l.35-.966a4.965 4.965 0 01-1.337-.497 4.15 4.15 0 01-1.204-.994c-.36-.425-.649-.957-.868-1.596-.22-.64-.329-1.412-.329-2.317 0-.896.091-1.659.273-2.289.182-.63.439-1.157.77-1.582a3.928 3.928 0 011.183-1.022 7.086 7.086 0 011.512-.623l-.35-.882a6.005 6.005 0 00-1.729.665 4.984 4.984 0 00-1.435 1.246c-.41.518-.737 1.148-.98 1.89s-.364 1.608-.364 2.597c0 .999.119 1.862.357 2.59.238.728.56 1.344.966 1.848.406.504.882.912 1.428 1.225a6.964 6.964 0 001.757.707zm4.704 0a6.964 6.964 0 001.757-.707 5.036 5.036 0 001.428-1.225c.406-.504.728-1.12.966-1.848s.357-1.591.357-2.59c0-.99-.121-1.855-.364-2.597s-.57-1.372-.98-1.89a4.984 4.984 0 00-1.435-1.246 6.005 6.005 0 00-1.729-.665l-.35.882c.55.159 1.055.366 1.512.623.457.257.852.597 1.183 1.022.331.425.588.952.77 1.582.182.63.273 1.393.273 2.289 0 .905-.11 1.678-.329 2.317-.22.64-.509 1.171-.868 1.596a4.15 4.15 0 01-1.204.994 4.965 4.965 0 01-1.337.497l.35.966zm21.728.252v-.98h-1.526c-.57 0-.975-.135-1.218-.406-.243-.27-.364-.69-.364-1.26V81.03a2.25 2.25 0 00-.217-.994 3.347 3.347 0 00-.511-.777 2.744 2.744 0 00-.602-.518c-.205-.126-.369-.198-.49-.217v-.084c.13-.019.299-.086.504-.203a2.7 2.7 0 001.106-1.225c.14-.299.21-.64.21-1.022v-1.358c0-.55.114-.966.343-1.246.229-.28.637-.42 1.225-.42h1.54v-.98h-2.03c-.317 0-.609.058-.875.175a2.053 2.053 0 00-.686.483 2.22 2.22 0 00-.448.728c-.107.28-.161.588-.161.924v1.428c0 .43-.068.789-.203 1.078-.135.29-.303.525-.504.707a1.87 1.87 0 01-.644.392c-.229.08-.432.119-.609.119V79c.177 0 .38.047.609.14.229.093.443.238.644.434.2.196.369.441.504.735s.203.642.203 1.043v1.372c0 .756.198 1.328.595 1.715.397.387.922.581 1.575.581h2.03z"/><path id="alert" fill="#181717" d="M136.514 81.926a2.749 2.749 0 001.589-.469c.182-.126.329-.254.441-.385.112-.13.196-.238.252-.322h.07l.126 1.05h1.862v-.91h-.938c-.056-.42-.084-.863-.084-1.33.01-.401.023-.803.042-1.204.019-.401.028-.78.028-1.134 0-.308-.03-.614-.091-.917a2.049 2.049 0 00-.35-.812 1.893 1.893 0 00-.714-.581c-.303-.15-.693-.224-1.169-.224-.485 0-.98.051-1.484.154-.504.103-.957.27-1.358.504l.35.812c.299-.121.64-.24 1.022-.357a4.106 4.106 0 011.204-.175c.308 0 .567.035.777.105.21.07.373.189.49.357.117.168.191.394.224.679.033.285.026.642-.021 1.071a9.544 9.544 0 00-1.869-.112c-.555.028-1.029.126-1.421.294-.392.168-.693.41-.903.728-.21.317-.315.714-.315 1.19 0 .616.2 1.101.602 1.456.401.355.947.532 1.638.532zm.28-.938c-.495 0-.847-.114-1.057-.343a1.152 1.152 0 01-.315-.805c0-.299.084-.541.252-.728.168-.187.401-.324.7-.413a3.763 3.763 0 011.064-.133c.41 0 .859.042 1.344.126v.98a2.133 2.133 0 01-.672.868 2.22 2.22 0 01-.588.322 2.057 2.057 0 01-.728.126zm9.884.994c.159 0 .331-.019.518-.056a3.61 3.61 0 001.106-.42c.177-.103.34-.22.49-.35l-.504-.77c-.29.224-.553.383-.791.476-.238.093-.488.14-.749.14-.373 0-.656-.117-.847-.35-.191-.233-.287-.635-.287-1.204V72h-2.324v.938h1.232v6.51c0 .476.047.875.14 1.197.093.322.231.581.413.777.182.196.408.338.679.427.27.089.579.133.924.133zm7.672-.014c.299 0 .595-.026.889-.077.294-.051.576-.124.847-.217.27-.093.52-.205.749-.336.229-.13.427-.27.595-.42l-.434-.798a2.585 2.585 0 01-.399.28 3.72 3.72 0 01-.595.28c-.224.084-.46.156-.707.217-.247.06-.497.091-.749.091-.756 0-1.36-.208-1.813-.623-.453-.415-.679-1.043-.679-1.883h5.418c.047-.793-.01-1.44-.168-1.939-.159-.5-.385-.891-.679-1.176a2.295 2.295 0 00-1.015-.581 4.466 4.466 0 00-1.162-.154c-.541 0-1.031.082-1.47.245a3.08 3.08 0 00-1.12.707c-.308.308-.544.69-.707 1.148-.163.457-.245.98-.245 1.568 0 .56.075 1.064.224 1.512.15.448.369.833.658 1.155.29.322.649.57 1.078.742.43.173.924.259 1.484.259zm2.1-4.466h-4.354c.037-.364.124-.67.259-.917s.308-.448.518-.602c.21-.154.453-.264.728-.329a3.78 3.78 0 01.875-.098c.57 0 1.029.17 1.379.511.35.34.548.819.595 1.435zm8.554 4.298v-.938h-2.688v-4.13c.056-.084.145-.187.266-.308.121-.121.268-.243.441-.364s.376-.224.609-.308c.233-.084.495-.126.784-.126.308 0 .52.14.637.42.117.28.175.719.175 1.316l.98-.014c0-.42-.019-.796-.056-1.127a2.771 2.771 0 00-.217-.847 1.206 1.206 0 00-.448-.532c-.191-.121-.446-.182-.763-.182-.541 0-1.008.103-1.4.308a5.046 5.046 0 00-1.064.742h-.07l-.224-.91h-2.618v.938h1.89v5.124h-1.89v.938h5.656zm6.678.182c.476 0 .94-.08 1.393-.238a3.938 3.938 0 001.169-.63l-.364-.826c-.252.187-.534.36-.847.518-.313.159-.679.238-1.099.238-.616 0-1.09-.163-1.421-.49-.331-.327-.497-.83-.497-1.512v-3.304h3.738V74.8h-3.738v-1.694l-1.092.308V74.8h-1.666v.938h1.666v3.472c0 .485.075.903.224 1.253.15.35.35.637.602.861.252.224.544.39.875.497a3.41 3.41 0 001.057.161z"/><path id="(" fill="#7E7C7B" d="M181.272 84.768l.35-.966a4.965 4.965 0 01-1.337-.497 4.15 4.15 0 01-1.204-.994c-.36-.425-.649-.957-.868-1.596-.22-.64-.329-1.412-.329-2.317 0-.896.091-1.659.273-2.289.182-.63.439-1.157.77-1.582a3.928 3.928 0 011.183-1.022 7.086 7.086 0 011.512-.623l-.35-.882a6.005 6.005 0 00-1.729.665 4.984 4.984 0 00-1.435 1.246c-.41.518-.737 1.148-.98 1.89s-.364 1.608-.364 2.597c0 .999.119 1.862.357 2.59.238.728.56 1.344.966 1.848.406.504.882.912 1.428 1.225a6.964 6.964 0 001.757.707z"/><path id="j" fill="#181717" d="M188.636 73.68c.27 0 .497-.084.679-.252a.806.806 0 00.273-.616.889.889 0 00-.273-.651.922.922 0 00-.679-.273.838.838 0 00-.644.273.927.927 0 00-.252.651c0 .243.084.448.252.616a.872.872 0 00.644.252zm-1.904 11.088c.85 0 1.514-.231 1.995-.693.48-.462.721-1.164.721-2.107V74.8h-4.508v.938h3.388v6.02c0 .616-.119 1.099-.357 1.449-.238.35-.637.525-1.197.525-.345 0-.679-.07-1.001-.21a4.362 4.362 0 01-.861-.49l-.462.91a4.501 4.501 0 00.882.497c.205.089.427.166.665.231.238.065.483.098.735.098z"/><path id=");}," fill="#7E7C7B" d="M194.376 84.768a6.964 6.964 0 001.757-.707 5.036 5.036 0 001.428-1.225c.406-.504.728-1.12.966-1.848s.357-1.591.357-2.59c0-.99-.121-1.855-.364-2.597s-.57-1.372-.98-1.89a4.984 4.984 0 00-1.435-1.246 6.005 6.005 0 00-1.729-.665l-.35.882c.55.159 1.055.366 1.512.623.457.257.852.597 1.183 1.022.331.425.588.952.77 1.582.182.63.273 1.393.273 2.289 0 .905-.11 1.678-.329 2.317-.22.64-.509 1.171-.868 1.596a4.15 4.15 0 01-1.204.994 4.965 4.965 0 01-1.337.497l.35.966zm10.304-8.302c.299 0 .532-.089.7-.266a.938.938 0 00.252-.672c0-.299-.084-.53-.252-.693-.168-.163-.401-.245-.7-.245-.28 0-.504.082-.672.245-.168.163-.252.394-.252.693 0 .27.084.495.252.672.168.177.392.266.672.266zm-.756 7.42c.177-.056.371-.142.581-.259a2.42 2.42 0 001.043-1.162 2.36 2.36 0 00.182-.959c0-.448-.098-.796-.294-1.043-.196-.247-.471-.371-.826-.371-.29 0-.525.086-.707.259a.893.893 0 00-.273.679c0 .299.077.525.231.679.154.154.366.231.637.231.075 0 .177-.014.308-.042 0 .345-.121.64-.364.882-.243.243-.532.43-.868.56l.35.546zm16.45 1.134c.653 0 1.178-.194 1.575-.581.397-.387.595-.959.595-1.715v-1.372c0-.401.068-.749.203-1.043a2.44 2.44 0 01.504-.735c.2-.196.415-.34.644-.434.229-.093.432-.14.609-.14v-.98c-.177 0-.38-.04-.609-.119a1.87 1.87 0 01-.644-.392 2.193 2.193 0 01-.504-.707c-.135-.29-.203-.649-.203-1.078v-1.428c0-.336-.054-.644-.161-.924a2.22 2.22 0 00-.448-.728 2.053 2.053 0 00-.686-.483 2.155 2.155 0 00-.875-.175h-2.03v.98h1.54c.588 0 .996.14 1.225.42.229.28.343.695.343 1.246v1.358c0 .383.07.723.21 1.022a2.7 2.7 0 001.106 1.225c.205.117.373.184.504.203v.084c-.13.019-.299.091-.504.217a2.744 2.744 0 00-.602.518c-.196.22-.364.478-.504.777-.14.299-.21.63-.21.994v1.344c0 .57-.121.99-.364 1.26s-.649.406-1.218.406h-1.526v.98h2.03zm8.75-1.134c.177-.056.371-.142.581-.259a2.42 2.42 0 001.043-1.162 2.36 2.36 0 00.182-.959c0-.448-.098-.796-.294-1.043-.196-.247-.471-.371-.826-.371-.29 0-.525.086-.707.259a.893.893 0 00-.273.679c0 .299.077.525.231.679.154.154.366.231.637.231.075 0 .177-.014.308-.042 0 .345-.121.64-.364.882-.243.243-.532.43-.868.56l.35.546z"/><path id="..." fill="#181717" d="M19.81 105.968c.299 0 .532-.089.7-.266a.938.938 0 00.252-.672c0-.299-.084-.53-.252-.693-.168-.163-.401-.245-.7-.245-.28 0-.504.082-.672.245-.168.163-.252.394-.252.693 0 .27.084.495.252.672.168.177.392.266.672.266zm8.4 0c.299 0 .532-.089.7-.266a.938.938 0 00.252-.672c0-.299-.084-.53-.252-.693-.168-.163-.401-.245-.7-.245-.28 0-.504.082-.672.245-.168.163-.252.394-.252.693 0 .27.084.495.252.672.168.177.392.266.672.266zm8.4 0c.299 0 .532-.089.7-.266a.938.938 0 00.252-.672c0-.299-.084-.53-.252-.693-.168-.163-.401-.245-.7-.245-.28 0-.504.082-.672.245-.168.163-.252.394-.252.693 0 .27.084.495.252.672.168.177.392.266.672.266z"/><path id="function" fill="#1C85B5" d="M22.512 129.8v-.938h-2.898v-5.124h2.898v-.938h-2.898c0-.69.112-1.188.336-1.491.224-.303.644-.455 1.26-.455.187 0 .392.016.616.049.224.033.457.1.7.203l.252-.91a3.603 3.603 0 00-.784-.224 5.473 5.473 0 00-.826-.056c-.85 0-1.503.196-1.96.588-.457.392-.686 1.027-.686 1.904v.392h-1.666v.938h1.666v5.124h-1.666v.938h5.656zm5.222.168c.57 0 1.055-.126 1.456-.378s.723-.579.966-.98h.056l.042 1.19h1.862v-.91h-.938a9.956 9.956 0 01-.084-1.316V122.8h-1.988v.938h.896v3.626c-.187.476-.46.873-.819 1.19-.36.317-.782.476-1.267.476-.336 0-.604-.054-.805-.161a1.046 1.046 0 01-.455-.476 2.317 2.317 0 01-.203-.77 9.693 9.693 0 01-.049-1.029V122.8h-2.03v.938h.938v3.08c0 .607.047 1.113.14 1.519.093.406.238.73.434.973s.446.413.749.511c.303.098.67.147 1.099.147zm7.07-.168v-4.396c.065-.233.168-.455.308-.665.14-.21.303-.394.49-.553a2.44 2.44 0 01.623-.385c.229-.098.464-.147.707-.147.663 0 1.12.196 1.372.588.252.392.378.975.378 1.75v3.808h1.092v-4.018c0-.625-.056-1.141-.168-1.547-.112-.406-.278-.728-.497-.966a1.738 1.738 0 00-.826-.497 4.219 4.219 0 00-1.141-.14 2.856 2.856 0 00-2.023.833c-.154.154-.278.31-.371.469h-.07l-.126-1.134h-1.876v.91h.938c.019.103.035.224.049.364a12.158 12.158 0 01.056.847c.005.135.007.245.007.329v4.55h1.078zm10.556.168c.364 0 .702-.033 1.015-.098a4.708 4.708 0 002.023-.952l-.49-.812c-.28.243-.628.439-1.043.588-.415.15-.842.224-1.281.224-.41 0-.786-.06-1.127-.182a2.517 2.517 0 01-.875-.518 2.248 2.248 0 01-.56-.819 2.902 2.902 0 01-.196-1.099c0-.933.224-1.615.672-2.044.448-.43 1.13-.644 2.044-.644.243 0 .488.026.735.077.247.051.478.114.693.189v1.33h1.008v-1.946l.014-.042a6.232 6.232 0 00-1.099-.406c-.434-.121-.996-.182-1.687-.182-.541 0-1.031.082-1.47.245a3.08 3.08 0 00-1.12.707c-.308.308-.544.69-.707 1.148-.163.457-.245.98-.245 1.568 0 .55.08 1.052.238 1.505.159.453.392.84.7 1.162.308.322.693.57 1.155.742.462.173.996.259 1.603.259zm8.722.014c.476 0 .94-.08 1.393-.238a3.938 3.938 0 001.169-.63l-.364-.826c-.252.187-.534.36-.847.518-.313.159-.679.238-1.099.238-.616 0-1.09-.163-1.421-.49-.331-.327-.497-.83-.497-1.512v-3.304h3.738v-.938h-3.738v-1.694l-1.092.308v1.386h-1.666v.938h1.666v3.472c0 .485.075.903.224 1.253.15.35.35.637.602.861.252.224.544.39.875.497a3.41 3.41 0 001.057.161zm7.966-8.302c.27 0 .497-.084.679-.252a.806.806 0 00.273-.616.889.889 0 00-.273-.651.922.922 0 00-.679-.273.838.838 0 00-.644.273.927.927 0 00-.252.651c0 .243.084.448.252.616a.872.872 0 00.644.252zm2.982 8.12v-.938h-2.38V122.8h-3.556v.938h2.436v5.124h-2.436v.938h5.936zm5.194.168a3.82 3.82 0 001.449-.259 2.908 2.908 0 001.071-.735c.29-.317.509-.702.658-1.155.15-.453.224-.959.224-1.519 0-.513-.068-.994-.203-1.442a3.168 3.168 0 00-.623-1.162 2.981 2.981 0 00-1.057-.777c-.425-.191-.931-.287-1.519-.287-1.092 0-1.932.329-2.52.987-.588.658-.882 1.552-.882 2.681 0 .513.068.994.203 1.442.135.448.343.835.623 1.162.28.327.635.586 1.064.777.43.191.933.287 1.512.287zm0-.938c-.41 0-.758-.08-1.043-.238a2.001 2.001 0 01-.693-.63 2.683 2.683 0 01-.385-.882 4.14 4.14 0 01-.119-.98c0-.905.187-1.587.56-2.044.373-.457.933-.686 1.68-.686.41 0 .758.08 1.043.238.285.159.518.369.7.63.182.261.313.553.392.875.08.322.119.651.119.987 0 .896-.189 1.575-.567 2.037-.378.462-.94.693-1.687.693zm6.58.77v-4.396c.065-.233.168-.455.308-.665.14-.21.303-.394.49-.553a2.44 2.44 0 01.623-.385c.229-.098.464-.147.707-.147.663 0 1.12.196 1.372.588.252.392.378.975.378 1.75v3.808h1.092v-4.018c0-.625-.056-1.141-.168-1.547-.112-.406-.278-.728-.497-.966a1.738 1.738 0 00-.826-.497 4.219 4.219 0 00-1.141-.14 2.856 2.856 0 00-2.023.833c-.154.154-.278.31-.371.469h-.07l-.126-1.134h-1.876v.91h.938c.019.103.035.224.049.364a12.158 12.158 0 01.056.847c.005.135.007.245.007.329v4.55h1.078z"/><path id="(){" fill="#7E7C7B" d="M97.272 132.768l.35-.966a4.965 4.965 0 01-1.337-.497 4.15 4.15 0 01-1.204-.994c-.36-.425-.649-.957-.868-1.596-.22-.64-.329-1.412-.329-2.317 0-.896.091-1.659.273-2.289.182-.63.439-1.157.77-1.582a3.928 3.928 0 011.183-1.022 7.086 7.086 0 011.512-.623l-.35-.882a6.005 6.005 0 00-1.729.665 4.984 4.984 0 00-1.435 1.246c-.41.518-.737 1.148-.98 1.89s-.364 1.608-.364 2.597c0 .999.119 1.862.357 2.59.238.728.56 1.344.966 1.848.406.504.882.912 1.428 1.225a6.964 6.964 0 001.757.707zm4.704 0a6.964 6.964 0 001.757-.707 5.036 5.036 0 001.428-1.225c.406-.504.728-1.12.966-1.848s.357-1.591.357-2.59c0-.99-.121-1.855-.364-2.597s-.57-1.372-.98-1.89a4.984 4.984 0 00-1.435-1.246 6.005 6.005 0 00-1.729-.665l-.35.882c.55.159 1.055.366 1.512.623.457.257.852.597 1.183 1.022.331.425.588.952.77 1.582.182.63.273 1.393.273 2.289 0 .905-.11 1.678-.329 2.317-.22.64-.509 1.171-.868 1.596a4.15 4.15 0 01-1.204.994 4.965 4.965 0 01-1.337.497l.35.966zm21.728.252v-.98h-1.526c-.57 0-.975-.135-1.218-.406-.243-.27-.364-.69-.364-1.26v-1.344a2.25 2.25 0 00-.217-.994 3.347 3.347 0 00-.511-.777 2.744 2.744 0 00-.602-.518c-.205-.126-.369-.198-.49-.217v-.084c.13-.019.299-.086.504-.203a2.7 2.7 0 001.106-1.225c.14-.299.21-.64.21-1.022v-1.358c0-.55.114-.966.343-1.246.229-.28.637-.42 1.225-.42h1.54v-.98h-2.03c-.317 0-.609.058-.875.175a2.053 2.053 0 00-.686.483 2.22 2.22 0 00-.448.728c-.107.28-.161.588-.161.924v1.428c0 .43-.068.789-.203 1.078-.135.29-.303.525-.504.707a1.87 1.87 0 01-.644.392c-.229.08-.432.119-.609.119v.98c.177 0 .38.047.609.14.229.093.443.238.644.434.2.196.369.441.504.735s.203.642.203 1.043v1.372c0 .756.198 1.328.595 1.715.397.387.922.581 1.575.581h2.03z"/><path id="alert" fill="#181717" d="M136.514 129.926a2.749 2.749 0 001.589-.469c.182-.126.329-.254.441-.385.112-.13.196-.238.252-.322h.07l.126 1.05h1.862v-.91h-.938c-.056-.42-.084-.863-.084-1.33.01-.401.023-.803.042-1.204.019-.401.028-.78.028-1.134 0-.308-.03-.614-.091-.917a2.049 2.049 0 00-.35-.812 1.893 1.893 0 00-.714-.581c-.303-.15-.693-.224-1.169-.224-.485 0-.98.051-1.484.154-.504.103-.957.27-1.358.504l.35.812c.299-.121.64-.24 1.022-.357a4.106 4.106 0 011.204-.175c.308 0 .567.035.777.105.21.07.373.189.49.357.117.168.191.394.224.679.033.285.026.642-.021 1.071a9.544 9.544 0 00-1.869-.112c-.555.028-1.029.126-1.421.294-.392.168-.693.41-.903.728-.21.317-.315.714-.315 1.19 0 .616.2 1.101.602 1.456.401.355.947.532 1.638.532zm.28-.938c-.495 0-.847-.114-1.057-.343a1.152 1.152 0 01-.315-.805c0-.299.084-.541.252-.728.168-.187.401-.324.7-.413a3.763 3.763 0 011.064-.133c.41 0 .859.042 1.344.126v.98a2.133 2.133 0 01-.672.868 2.22 2.22 0 01-.588.322 2.057 2.057 0 01-.728.126zm9.884.994c.159 0 .331-.019.518-.056a3.61 3.61 0 001.106-.42c.177-.103.34-.22.49-.35l-.504-.77c-.29.224-.553.383-.791.476-.238.093-.488.14-.749.14-.373 0-.656-.117-.847-.35-.191-.233-.287-.635-.287-1.204V120h-2.324v.938h1.232v6.51c0 .476.047.875.14 1.197.093.322.231.581.413.777.182.196.408.338.679.427.27.089.579.133.924.133zm7.672-.014c.299 0 .595-.026.889-.077.294-.051.576-.124.847-.217.27-.093.52-.205.749-.336.229-.13.427-.27.595-.42l-.434-.798a2.585 2.585 0 01-.399.28 3.72 3.72 0 01-.595.28c-.224.084-.46.156-.707.217-.247.06-.497.091-.749.091-.756 0-1.36-.208-1.813-.623-.453-.415-.679-1.043-.679-1.883h5.418c.047-.793-.01-1.44-.168-1.939-.159-.5-.385-.891-.679-1.176a2.295 2.295 0 00-1.015-.581 4.466 4.466 0 00-1.162-.154c-.541 0-1.031.082-1.47.245a3.08 3.08 0 00-1.12.707c-.308.308-.544.69-.707 1.148-.163.457-.245.98-.245 1.568 0 .56.075 1.064.224 1.512.15.448.369.833.658 1.155.29.322.649.57 1.078.742.43.173.924.259 1.484.259zm2.1-4.466h-4.354c.037-.364.124-.67.259-.917s.308-.448.518-.602c.21-.154.453-.264.728-.329a3.78 3.78 0 01.875-.098c.57 0 1.029.17 1.379.511.35.34.548.819.595 1.435zm8.554 4.298v-.938h-2.688v-4.13c.056-.084.145-.187.266-.308.121-.121.268-.243.441-.364s.376-.224.609-.308c.233-.084.495-.126.784-.126.308 0 .52.14.637.42.117.28.175.719.175 1.316l.98-.014c0-.42-.019-.796-.056-1.127a2.771 2.771 0 00-.217-.847 1.206 1.206 0 00-.448-.532c-.191-.121-.446-.182-.763-.182-.541 0-1.008.103-1.4.308a5.046 5.046 0 00-1.064.742h-.07l-.224-.91h-2.618v.938h1.89v5.124h-1.89v.938h5.656zm6.678.182c.476 0 .94-.08 1.393-.238a3.938 3.938 0 001.169-.63l-.364-.826c-.252.187-.534.36-.847.518-.313.159-.679.238-1.099.238-.616 0-1.09-.163-1.421-.49-.331-.327-.497-.83-.497-1.512v-3.304h3.738v-.938h-3.738v-1.694l-1.092.308v1.386h-1.666v.938h1.666v3.472c0 .485.075.903.224 1.253.15.35.35.637.602.861.252.224.544.39.875.497a3.41 3.41 0 001.057.161z"/><path id="(" fill="#7E7C7B" d="M181.272 132.768l.35-.966a4.965 4.965 0 01-1.337-.497 4.15 4.15 0 01-1.204-.994c-.36-.425-.649-.957-.868-1.596-.22-.64-.329-1.412-.329-2.317 0-.896.091-1.659.273-2.289.182-.63.439-1.157.77-1.582a3.928 3.928 0 011.183-1.022 7.086 7.086 0 011.512-.623l-.35-.882a6.005 6.005 0 00-1.729.665 4.984 4.984 0 00-1.435 1.246c-.41.518-.737 1.148-.98 1.89s-.364 1.608-.364 2.597c0 .999.119 1.862.357 2.59.238.728.56 1.344.966 1.848.406.504.882.912 1.428 1.225a6.964 6.964 0 001.757.707z"/><path id="j" fill="#181717" d="M188.636 121.68c.27 0 .497-.084.679-.252a.806.806 0 00.273-.616.889.889 0 00-.273-.651.922.922 0 00-.679-.273.838.838 0 00-.644.273.927.927 0 00-.252.651c0 .243.084.448.252.616a.872.872 0 00.644.252zm-1.904 11.088c.85 0 1.514-.231 1.995-.693.48-.462.721-1.164.721-2.107V122.8h-4.508v.938h3.388v6.02c0 .616-.119 1.099-.357 1.449-.238.35-.637.525-1.197.525-.345 0-.679-.07-1.001-.21a4.362 4.362 0 01-.861-.49l-.462.91a4.501 4.501 0 00.882.497c.205.089.427.166.665.231.238.065.483.098.735.098z"/><path id=");}];" fill="#7E7C7B" d="M194.376 132.768a6.964 6.964 0 001.757-.707 5.036 5.036 0 001.428-1.225c.406-.504.728-1.12.966-1.848s.357-1.591.357-2.59c0-.99-.121-1.855-.364-2.597s-.57-1.372-.98-1.89a4.984 4.984 0 00-1.435-1.246 6.005 6.005 0 00-1.729-.665l-.35.882c.55.159 1.055.366 1.512.623.457.257.852.597 1.183 1.022.331.425.588.952.77 1.582.182.63.273 1.393.273 2.289 0 .905-.11 1.678-.329 2.317-.22.64-.509 1.171-.868 1.596a4.15 4.15 0 01-1.204.994 4.965 4.965 0 01-1.337.497l.35.966zm10.304-8.302c.299 0 .532-.089.7-.266a.938.938 0 00.252-.672c0-.299-.084-.53-.252-.693-.168-.163-.401-.245-.7-.245-.28 0-.504.082-.672.245-.168.163-.252.394-.252.693 0 .27.084.495.252.672.168.177.392.266.672.266zm-.756 7.42c.177-.056.371-.142.581-.259a2.42 2.42 0 001.043-1.162 2.36 2.36 0 00.182-.959c0-.448-.098-.796-.294-1.043-.196-.247-.471-.371-.826-.371-.29 0-.525.086-.707.259a.893.893 0 00-.273.679c0 .299.077.525.231.679.154.154.366.231.637.231.075 0 .177-.014.308-.042 0 .345-.121.64-.364.882-.243.243-.532.43-.868.56l.35.546zm16.45 1.134c.653 0 1.178-.194 1.575-.581.397-.387.595-.959.595-1.715v-1.372c0-.401.068-.749.203-1.043a2.44 2.44 0 01.504-.735c.2-.196.415-.34.644-.434.229-.093.432-.14.609-.14v-.98c-.177 0-.38-.04-.609-.119a1.87 1.87 0 01-.644-.392 2.193 2.193 0 01-.504-.707c-.135-.29-.203-.649-.203-1.078v-1.428c0-.336-.054-.644-.161-.924a2.22 2.22 0 00-.448-.728 2.053 2.053 0 00-.686-.483 2.155 2.155 0 00-.875-.175h-2.03v.98h1.54c.588 0 .996.14 1.225.42.229.28.343.695.343 1.246v1.358c0 .383.07.723.21 1.022a2.7 2.7 0 001.106 1.225c.205.117.373.184.504.203v.084c-.13.019-.299.091-.504.217a2.744 2.744 0 00-.602.518c-.196.22-.364.478-.504.777-.14.299-.21.63-.21.994v1.344c0 .57-.121.99-.364 1.26s-.649.406-1.218.406h-1.526v.98h2.03zm-215.236 24V144H.35v.98h3.696v11.06H.35v.98h4.788zm6.342-8.554c.299 0 .532-.089.7-.266a.938.938 0 00.252-.672c0-.299-.084-.53-.252-.693-.168-.163-.401-.245-.7-.245-.28 0-.504.082-.672.245-.168.163-.252.394-.252.693 0 .27.084.495.252.672.168.177.392.266.672.266zm-.756 7.42c.177-.056.371-.142.581-.259a2.42 2.42 0 001.043-1.162 2.36 2.36 0 00.182-.959c0-.448-.098-.796-.294-1.043-.196-.247-.471-.371-.826-.371-.29 0-.525.086-.707.259a.893.893 0 00-.273.679c0 .299.077.525.231.679.154.154.366.231.637.231.075 0 .177-.014.308-.042 0 .345-.121.64-.364.882-.243.243-.532.43-.868.56l.35.546z"/></g><g id="Group-Copy" transform="translate(354 66)"><path id="Line" fill="#C06334" fill-rule="nonzero" d="M16.5 15.5l14 7-14 7v-6h-14v-2h14v-6z"/><text id="outer" fill="#AF6E24" font-family="PTMono-Regular, PT Mono" font-size="12" font-weight="normal"><tspan x="0" y="11">outer</tspan></text></g><g id="Group-Copy-2" fill="#C06334" fill-rule="nonzero" transform="translate(242 44)"><path id="Line" d="M13.5-5.5l14 7-14 7v-6h-14v-2h14v-6z"/></g><g id="Group-3" transform="translate(279 36)"><path id="Rectangle-1" fill="#FBF2EC" stroke="#DBAF88" stroke-width="2" d="M1 1h52v18H1z"/><text id="j:-0" fill="#AF6E24" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="8" y="14">j: 0</tspan></text></g><g id="Group-Copy-3" fill="#C06334" fill-rule="nonzero" transform="translate(242 67)"><path id="Line" d="M13.5-5.5l14 7-14 7v-6h-14v-2h14v-6z"/></g><g id="Group-3-Copy" transform="translate(279 59)"><path id="Rectangle-1" fill="#FBF2EC" stroke="#DBAF88" stroke-width="2" d="M1 1h52v18H1z"/><text id="j:-1" fill="#AF6E24" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="8" y="14">j: 1</tspan></text></g><g id="Group-Copy-4" fill="#C06334" fill-rule="nonzero" transform="translate(242 90)"><path id="Line" d="M13.5-5.5l14 7-14 7v-6h-14v-2h14v-6z"/></g><g id="Group-3-Copy-2" transform="translate(279 82)"><path id="Rectangle-1" fill="#FBF2EC" stroke="#DBAF88" stroke-width="2" d="M1 1h52v18H1z"/><text id="j:-2" fill="#AF6E24" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="8" y="14">j: 2</tspan></text></g><g id="Group-Copy-5" fill="#C06334" fill-rule="nonzero" transform="translate(242 139)"><path id="Line" d="M13.5-5.5l14 7-14 7v-6h-14v-2h14v-6z"/></g><g id="Group-3-Copy-3" transform="translate(279 131)"><path id="Rectangle-1" fill="#FBF2EC" stroke="#DBAF88" stroke-width="2" d="M1 1h52v18H1z"/><text id="j:-10" fill="#AF6E24" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="7.447" y="13.51">j: 10</tspan></text></g><text id="..." fill="#AF6E24" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="403" y="94">...</tspan></text><text id="makeArmy()-LexicalEn" fill="#AF6E24" font-family="PTMono-Bold, PT Mono" font-size="14" font-weight="bold"><tspan x="403" y="62">makeArmy()</tspan> <tspan x="403" y="77" font-family="PTMono-Regular, PT Mono" font-weight="normal">LexicalEnvironment</tspan></text><text id="while-iteration-Lexi" fill="#AF6E24" font-family="PTMono-Bold, PT Mono" font-size="14" font-weight="bold"><tspan x="278" y="14">while iteration</tspan> <tspan x="278" y="29" font-family="PTMono-Regular, PT Mono" font-weight="normal">LexicalEnvironment</tspan></text></g></g></svg> \ No newline at end of file diff --git a/1-js/06-advanced-functions/03-closure/8-make-army/lexenv-makearmy.svg b/1-js/06-advanced-functions/03-closure/10-make-army/lexenv-makearmy.svg similarity index 100% rename from 1-js/06-advanced-functions/03-closure/8-make-army/lexenv-makearmy.svg rename to 1-js/06-advanced-functions/03-closure/10-make-army/lexenv-makearmy.svg diff --git a/1-js/06-advanced-functions/03-closure/10-make-army/solution.md b/1-js/06-advanced-functions/03-closure/10-make-army/solution.md new file mode 100644 index 000000000..9d99aa717 --- /dev/null +++ b/1-js/06-advanced-functions/03-closure/10-make-army/solution.md @@ -0,0 +1,129 @@ + +Let's examine what exactly happens inside `makeArmy`, and the solution will become obvious. + +1. It creates an empty array `shooters`: + + ```js + let shooters = []; + ``` +2. Fills it with functions via `shooters.push(function)` in the loop. + + Every element is a function, so the resulting array looks like this: + + ```js no-beautify + shooters = [ + function () { alert(i); }, + function () { alert(i); }, + function () { alert(i); }, + function () { alert(i); }, + function () { alert(i); }, + function () { alert(i); }, + function () { alert(i); }, + function () { alert(i); }, + function () { alert(i); }, + function () { alert(i); } + ]; + ``` + +3. The array is returned from the function. + + Then, later, the call to any member, e.g. `army[5]()` will get the element `army[5]` from the array (which is a function) and calls it. + + Now why do all such functions show the same value, `10`? + + That's because there's no local variable `i` inside `shooter` functions. When such a function is called, it takes `i` from its outer lexical environment. + + Then, what will be the value of `i`? + + If we look at the source: + + ```js + function makeArmy() { + ... + let i = 0; + while (i < 10) { + let shooter = function() { // shooter function + alert( i ); // should show its number + }; + shooters.push(shooter); // add function to the array + i++; + } + ... + } + ``` + + We can see that all `shooter` functions are created in the lexical environment of `makeArmy()` function. But when `army[5]()` is called, `makeArmy` has already finished its job, and the final value of `i` is `10` (`while` stops at `i=10`). + + As the result, all `shooter` functions get the same value from the outer lexical environment and that is, the last value, `i=10`. + +  + + As you can see above, on each iteration of a `while {...}` block, a new lexical environment is created. So, to fix this, we can copy the value of `i` into a variable within the `while {...}` block, like this: + + ```js run + function makeArmy() { + let shooters = []; + + let i = 0; + while (i < 10) { + *!* + let j = i; + */!* + let shooter = function() { // shooter function + alert( *!*j*/!* ); // should show its number + }; + shooters.push(shooter); + i++; + } + + return shooters; + } + + let army = makeArmy(); + + // Now the code works correctly + army[0](); // 0 + army[5](); // 5 + ``` + + Here `let j = i` declares an "iteration-local" variable `j` and copies `i` into it. Primitives are copied "by value", so we actually get an independent copy of `i`, belonging to the current loop iteration. + + The shooters work correctly, because the value of `i` now lives a little bit closer. Not in `makeArmy()` Lexical Environment, but in the Lexical Environment that corresponds to the current loop iteration: + +  + + Such a problem could also be avoided if we used `for` in the beginning, like this: + + ```js run demo + function makeArmy() { + + let shooters = []; + + *!* + for(let i = 0; i < 10; i++) { + */!* + let shooter = function() { // shooter function + alert( i ); // should show its number + }; + shooters.push(shooter); + } + + return shooters; + } + + let army = makeArmy(); + + army[0](); // 0 + army[5](); // 5 + ``` + + That's essentially the same, because `for` on each iteration generates a new lexical environment, with its own variable `i`. So `shooter` generated in every iteration references its own `i`, from that very iteration. + +  + +Now, as you've put so much effort into reading this, and the final recipe is so simple - just use `for`, you may wonder -- was it worth that? + +Well, if you could easily answer the question, you wouldn't read the solution. So, hopefully this task must have helped you to understand things a bit better. + +Besides, there are indeed cases when one prefers `while` to `for`, and other scenarios, where such problems are real. + diff --git a/1-js/06-advanced-functions/03-closure/10-make-army/task.md b/1-js/06-advanced-functions/03-closure/10-make-army/task.md new file mode 100644 index 000000000..f50c7dc20 --- /dev/null +++ b/1-js/06-advanced-functions/03-closure/10-make-army/task.md @@ -0,0 +1,41 @@ +importance: 5 + +--- + +# Army of functions + +The following code creates an array of `shooters`. + +Every function is meant to output its number. But something is wrong... + +```js run +function makeArmy() { + let shooters = []; + + let i = 0; + while (i < 10) { + let shooter = function() { // create a shooter function, + alert( i ); // that should show its number + }; + shooters.push(shooter); // and add it to the array + i++; + } + + // ...and return the array of shooters + return shooters; +} + +let army = makeArmy(); + +*!* +// all shooters show 10 instead of their numbers 0, 1, 2, 3... +army[0](); // 10 from the shooter number 0 +army[1](); // 10 from the shooter number 1 +army[2](); // 10 ...and so on. +*/!* +``` + +Why do all of the shooters show the same value? + +Fix the code so that they work as intended. + diff --git a/1-js/06-advanced-functions/03-closure/2-closure-variable-access/lexenv-nested-work.svg b/1-js/06-advanced-functions/03-closure/2-closure-variable-access/lexenv-nested-work.svg new file mode 100644 index 000000000..8dfd8bd63 --- /dev/null +++ b/1-js/06-advanced-functions/03-closure/2-closure-variable-access/lexenv-nested-work.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" width="762" height="225" viewBox="0 0 762 225"><defs><style>@import url(https://fonts.googleapis.com/css?family=Open+Sans:bold,italic,bolditalic%7CPT+Mono);@font-face{font-family:'PT Mono';font-weight:700;font-style:normal;src:local('PT MonoBold'),url(/font/PTMonoBold.woff2) format('woff2'),url(/font/PTMonoBold.woff) format('woff'),url(/font/PTMonoBold.ttf) format('truetype')}</style></defs><g id="closure" fill="none" fill-rule="evenodd" stroke="none" stroke-width="1"><g id="lexenv-nested-work.svg"><g id="function-makeWorker(" fill-rule="nonzero" transform="translate(10 15)"><path id="function" fill="#1C85B5" d="M1.092 9.912v-.938h1.666V3.85H1.092v-.938h1.666V2.52c0-.877.229-1.512.686-1.904.457-.392 1.11-.588 1.96-.588.308 0 .583.019.826.056.243.037.504.112.784.224l-.252.91a2.862 2.862 0 00-.7-.203 4.295 4.295 0 00-.616-.049c-.616 0-1.036.152-1.26.455-.224.303-.336.8-.336 1.491h2.898v.938H3.85v5.124h2.898v.938H1.092zm12.25-7h1.988v4.774c0 .457.028.896.084 1.316h.938v.91H14.49l-.042-1.19h-.056a2.938 2.938 0 01-.966.98c-.401.252-.887.378-1.456.378-.43 0-.796-.049-1.099-.147a1.556 1.556 0 01-.749-.511c-.196-.243-.34-.567-.434-.973-.093-.406-.14-.912-.14-1.519V3.85H8.61v-.938h2.03v3.794c0 .383.016.726.049 1.029.033.303.1.56.203.77.103.21.254.369.455.476.2.107.469.161.805.161.485 0 .908-.159 1.267-.476.36-.317.632-.714.819-1.19V3.85h-.896v-.938zm4.62 2.45a14.05 14.05 0 00-.063-1.176 4.657 4.657 0 00-.049-.364h-.938v-.91h1.876l.126 1.134h.07c.093-.159.217-.315.371-.469a2.91 2.91 0 011.225-.721c.252-.075.518-.112.798-.112.43 0 .81.047 1.141.14.331.093.607.259.826.497.22.238.385.56.497.966.112.406.168.922.168 1.547v4.018h-1.092V6.104c0-.775-.126-1.358-.378-1.75-.252-.392-.71-.588-1.372-.588-.243 0-.478.049-.707.147a2.44 2.44 0 00-.623.385c-.187.159-.35.343-.49.553-.14.21-.243.432-.308.665v4.396h-1.078v-4.55zM31.206 3.99a5.531 5.531 0 00-.693-.189 3.61 3.61 0 00-.735-.077c-.915 0-1.596.215-2.044.644-.448.43-.672 1.11-.672 2.044 0 .41.065.777.196 1.099.13.322.317.595.56.819.243.224.534.397.875.518.34.121.716.182 1.127.182.439 0 .866-.075 1.281-.224.415-.15.763-.345 1.043-.588l.49.812c-.13.112-.294.229-.49.35a4.837 4.837 0 01-1.533.602 4.962 4.962 0 01-1.015.098c-.607 0-1.141-.086-1.603-.259a3.045 3.045 0 01-1.155-.742 3.176 3.176 0 01-.7-1.162 4.525 4.525 0 01-.238-1.505c0-.588.082-1.11.245-1.568.163-.457.399-.84.707-1.148a3.08 3.08 0 011.12-.707 4.187 4.187 0 011.47-.245c.69 0 1.253.06 1.687.182.434.121.8.257 1.099.406l-.014.042V5.32h-1.008V3.99zm2.688-1.078h1.666V1.526l1.092-.308v1.694h3.738v.938h-3.738v3.304c0 .681.166 1.185.497 1.512.331.327.805.49 1.421.49.42 0 .786-.08 1.099-.238.313-.159.595-.331.847-.518l.364.826a3.938 3.938 0 01-1.169.63 4.182 4.182 0 01-1.393.238 3.41 3.41 0 01-1.057-.161 2.426 2.426 0 01-.875-.497 2.38 2.38 0 01-.602-.861c-.15-.35-.224-.768-.224-1.253V3.85h-1.666v-.938zm9.436 7v-.938h2.436V3.85H43.33v-.938h3.556v6.062h2.38v.938H43.33zM45.388.924c0-.252.084-.469.252-.651A.838.838 0 0146.284 0c.27 0 .497.091.679.273a.889.889 0 01.273.651.806.806 0 01-.273.616.963.963 0 01-.679.252.872.872 0 01-.644-.252.838.838 0 01-.252-.616zm5.67 5.488c0-1.13.294-2.023.882-2.681.588-.658 1.428-.987 2.52-.987.588 0 1.094.096 1.519.287.425.191.777.45 1.057.777.28.327.488.714.623 1.162.135.448.203.929.203 1.442 0 .56-.075 1.066-.224 1.519-.15.453-.369.838-.658 1.155-.29.317-.646.562-1.071.735a3.82 3.82 0 01-1.449.259c-.579 0-1.083-.096-1.512-.287a2.967 2.967 0 01-1.064-.777 3.168 3.168 0 01-.623-1.162 4.963 4.963 0 01-.203-1.442zm1.162 0c0 .327.04.653.119.98.08.327.208.62.385.882.177.261.408.471.693.63.285.159.632.238 1.043.238.747 0 1.309-.231 1.687-.693.378-.462.567-1.141.567-2.037 0-.336-.04-.665-.119-.987a2.608 2.608 0 00-.392-.875 2.066 2.066 0 00-.7-.63c-.285-.159-.632-.238-1.043-.238-.747 0-1.307.229-1.68.686-.373.457-.56 1.139-.56 2.044zm7.742-1.05a14.05 14.05 0 00-.063-1.176 4.657 4.657 0 00-.049-.364h-.938v-.91h1.876l.126 1.134h.07c.093-.159.217-.315.371-.469a2.91 2.91 0 011.225-.721c.252-.075.518-.112.798-.112.43 0 .81.047 1.141.14.331.093.607.259.826.497.22.238.385.56.497.966.112.406.168.922.168 1.547v4.018h-1.092V6.104c0-.775-.126-1.358-.378-1.75-.252-.392-.71-.588-1.372-.588-.243 0-.478.049-.707.147a2.44 2.44 0 00-.623.385c-.187.159-.35.343-.49.553-.14.21-.243.432-.308.665v4.396h-1.078v-4.55z"/><path id="makeWorker" fill="#181717" d="M79.128 9.912V5.25c0-.196-.007-.385-.021-.567a1.9 1.9 0 00-.098-.49.786.786 0 00-.224-.343.57.57 0 00-.385-.126c-.317 0-.586.13-.805.392-.22.261-.385.588-.497.98v4.816h-1.064v-7h.728l.21.854h.056c.093-.14.184-.273.273-.399.089-.126.191-.236.308-.329.117-.093.254-.166.413-.217.159-.051.36-.077.602-.077.14 0 .285.021.434.063.15.042.287.107.413.196.126.089.236.208.329.357.093.15.154.331.182.546.215-.364.455-.649.721-.854.266-.205.632-.308 1.099-.308.308 0 .558.051.749.154.191.103.34.25.448.441.107.191.182.42.224.686.042.266.063.562.063.889v4.998h-1.064v-4.76c0-.196-.01-.38-.028-.553a1.764 1.764 0 00-.105-.455.752.752 0 00-.21-.308.536.536 0 00-.357-.112c-.327 0-.602.13-.826.392-.224.261-.392.635-.504 1.12v4.676h-1.064zm6.244-6.454a4.447 4.447 0 011.358-.504 7.423 7.423 0 011.484-.154c.476 0 .866.075 1.169.224.303.15.541.343.714.581.173.238.29.509.35.812.06.303.091.609.091.917 0 .355-.01.733-.028 1.134-.019.401-.033.803-.042 1.204 0 .467.028.91.084 1.33h.938v.91h-1.862l-.126-1.05h-.07c-.056.084-.14.191-.252.322-.112.13-.259.259-.441.385a2.749 2.749 0 01-1.589.469c-.69 0-1.237-.177-1.638-.532-.401-.355-.602-.84-.602-1.456 0-.476.105-.873.315-1.19.21-.317.511-.56.903-.728.392-.168.866-.266 1.421-.294a9.544 9.544 0 011.869.112c.047-.43.054-.786.021-1.071-.033-.285-.107-.511-.224-.679a.938.938 0 00-.49-.357 2.482 2.482 0 00-.777-.105c-.42 0-.821.058-1.204.175-.383.117-.723.236-1.022.357l-.35-.812zM87.43 9.1c.261 0 .504-.042.728-.126a2.22 2.22 0 00.588-.322 2.133 2.133 0 00.672-.868v-.98a7.92 7.92 0 00-1.344-.126c-.41 0-.765.044-1.064.133-.299.089-.532.226-.7.413-.168.187-.252.43-.252.728 0 .308.105.576.315.805.21.229.562.343 1.057.343zM92.596.112h2.268v5.796h.77l2.758-2.996h1.316L96.614 6.23l2.548 2.744h.91v.938H98.63l-2.996-3.164h-.77v3.164h-1.078V1.05h-1.19V.112zm15.47 8.918c-.168.15-.366.29-.595.42a4.39 4.39 0 01-.749.336c-.27.093-.553.166-.847.217-.294.051-.59.077-.889.077-.56 0-1.055-.086-1.484-.259a2.858 2.858 0 01-1.078-.742 3.234 3.234 0 01-.658-1.155 4.767 4.767 0 01-.224-1.512c0-.588.082-1.11.245-1.568.163-.457.399-.84.707-1.148a3.08 3.08 0 011.12-.707 4.187 4.187 0 011.47-.245c.392 0 .78.051 1.162.154.383.103.721.296 1.015.581.294.285.52.677.679 1.176.159.5.215 1.146.168 1.939h-5.418c0 .84.226 1.468.679 1.883.453.415 1.057.623 1.813.623.252 0 .502-.03.749-.091.247-.06.483-.133.707-.217a3.72 3.72 0 00.595-.28c.173-.103.306-.196.399-.28l.434.798zm-2.954-5.362c-.308 0-.6.033-.875.098a1.995 1.995 0 00-.728.329c-.21.154-.383.355-.518.602s-.222.553-.259.917h4.354c-.047-.616-.245-1.094-.595-1.435-.35-.34-.81-.511-1.379-.511zm6.37 3.43l.07.91h.098l.196-.994 1.036-3.822h.924l.966 3.794.252 1.036h.07l.084-.952 1.036-6.958h1.036l-1.512 9.8h-1.162l-1.134-3.976-.14-.952h-.042l-.154.966-1.134 3.962h-1.176l-1.526-9.8h1.106l1.106 6.986zm6.776-.686c0-1.13.294-2.023.882-2.681.588-.658 1.428-.987 2.52-.987.588 0 1.094.096 1.519.287.425.191.777.45 1.057.777.28.327.488.714.623 1.162.135.448.203.929.203 1.442 0 .56-.075 1.066-.224 1.519-.15.453-.369.838-.658 1.155-.29.317-.646.562-1.071.735a3.82 3.82 0 01-1.449.259c-.579 0-1.083-.096-1.512-.287a2.967 2.967 0 01-1.064-.777 3.168 3.168 0 01-.623-1.162 4.963 4.963 0 01-.203-1.442zm1.162 0c0 .327.04.653.119.98.08.327.208.62.385.882.177.261.408.471.693.63.285.159.632.238 1.043.238.747 0 1.309-.231 1.687-.693.378-.462.567-1.141.567-2.037 0-.336-.04-.665-.119-.987a2.608 2.608 0 00-.392-.875 2.066 2.066 0 00-.7-.63c-.285-.159-.632-.238-1.043-.238-.747 0-1.307.229-1.68.686-.373.457-.56 1.139-.56 2.044zm7.364 3.5v-.938h1.89V3.85h-1.89v-.938h2.618l.224.91h.07c.317-.29.672-.537 1.064-.742.392-.205.859-.308 1.4-.308.317 0 .572.06.763.182.191.121.34.299.448.532.107.233.18.516.217.847.037.331.056.707.056 1.127l-.98.014c0-.597-.058-1.036-.175-1.316-.117-.28-.329-.42-.637-.42-.29 0-.55.042-.784.126a2.565 2.565 0 00-.609.308c-.173.121-.32.243-.441.364s-.21.224-.266.308v4.13h2.688v.938h-5.656zm7.812-9.8h2.268v5.796h.77l2.758-2.996h1.316l-3.094 3.318 2.548 2.744h.91v.938h-1.442l-2.996-3.164h-.77v3.164h-1.078V1.05h-1.19V.112zm15.47 8.918c-.168.15-.366.29-.595.42a4.39 4.39 0 01-.749.336c-.27.093-.553.166-.847.217-.294.051-.59.077-.889.077-.56 0-1.055-.086-1.484-.259a2.858 2.858 0 01-1.078-.742 3.234 3.234 0 01-.658-1.155 4.767 4.767 0 01-.224-1.512c0-.588.082-1.11.245-1.568.163-.457.399-.84.707-1.148a3.08 3.08 0 011.12-.707 4.187 4.187 0 011.47-.245c.392 0 .78.051 1.162.154.383.103.721.296 1.015.581.294.285.52.677.679 1.176.159.5.215 1.146.168 1.939h-5.418c0 .84.226 1.468.679 1.883.453.415 1.057.623 1.813.623.252 0 .502-.03.749-.091.247-.06.483-.133.707-.217a3.72 3.72 0 00.595-.28c.173-.103.306-.196.399-.28l.434.798zm-2.954-5.362c-.308 0-.6.033-.875.098a1.995 1.995 0 00-.728.329c-.21.154-.383.355-.518.602s-.222.553-.259.917h4.354c-.047-.616-.245-1.094-.595-1.435-.35-.34-.81-.511-1.379-.511zm4.872 6.244v-.938h1.89V3.85h-1.89v-.938h2.618l.224.91h.07c.317-.29.672-.537 1.064-.742.392-.205.859-.308 1.4-.308.317 0 .572.06.763.182.191.121.34.299.448.532.107.233.18.516.217.847.037.331.056.707.056 1.127l-.98.014c0-.597-.058-1.036-.175-1.316-.117-.28-.329-.42-.637-.42-.29 0-.55.042-.784.126a2.565 2.565 0 00-.609.308c-.173.121-.32.243-.441.364s-.21.224-.266.308v4.13h2.688v.938h-5.656z"/><path id="(){" fill="#7E7C7B" d="M165.508 12.88a6.964 6.964 0 01-1.757-.707 5.036 5.036 0 01-1.428-1.225c-.406-.504-.728-1.12-.966-1.848S161 7.509 161 6.51c0-.99.121-1.855.364-2.597s.57-1.372.98-1.89c.41-.518.889-.933 1.435-1.246a6.005 6.005 0 011.729-.665l.35.882a7.086 7.086 0 00-1.512.623 3.928 3.928 0 00-1.183 1.022c-.331.425-.588.952-.77 1.582-.182.63-.273 1.393-.273 2.289 0 .905.11 1.678.329 2.317.22.64.509 1.171.868 1.596.36.425.76.756 1.204.994.443.238.889.404 1.337.497l-.35.966zm4.354-.966a4.965 4.965 0 001.337-.497 4.15 4.15 0 001.204-.994c.36-.425.649-.957.868-1.596.22-.64.329-1.412.329-2.317 0-.896-.091-1.659-.273-2.289-.182-.63-.439-1.157-.77-1.582a3.928 3.928 0 00-1.183-1.022 7.086 7.086 0 00-1.512-.623l.35-.882c.607.13 1.183.352 1.729.665a4.984 4.984 0 011.435 1.246c.41.518.737 1.148.98 1.89s.364 1.608.364 2.597c0 .999-.119 1.862-.357 2.59-.238.728-.56 1.344-.966 1.848a5.036 5.036 0 01-1.428 1.225 6.964 6.964 0 01-1.757.707l-.35-.966zm17.878-2.45c0-.401-.068-.749-.203-1.043a2.44 2.44 0 00-.504-.735c-.2-.196-.415-.34-.644-.434a1.641 1.641 0 00-.609-.14v-.98c.177 0 .38-.04.609-.119.229-.08.443-.21.644-.392.2-.182.369-.418.504-.707.135-.29.203-.649.203-1.078V2.408c0-.336.054-.644.161-.924a2.22 2.22 0 01.448-.728c.191-.205.42-.366.686-.483.266-.117.558-.175.875-.175h2.03v.98h-1.54c-.588 0-.996.14-1.225.42-.229.28-.343.695-.343 1.246v1.358c0 .383-.07.723-.21 1.022a2.7 2.7 0 01-1.106 1.225c-.205.117-.373.184-.504.203v.084c.121.019.285.091.49.217.205.126.406.299.602.518.196.22.366.478.511.777.145.299.217.63.217.994v1.344c0 .57.121.99.364 1.26s.649.406 1.218.406h1.526v.98h-2.03c-.653 0-1.178-.194-1.575-.581-.397-.387-.595-.959-.595-1.715V9.464z"/><path id="let" fill="#1C85B5" d="M18.326 17.112h2.324v7.448c0 .57.096.97.287 1.204.191.233.474.35.847.35.261 0 .511-.047.749-.14.238-.093.502-.252.791-.476l.504.77c-.15.13-.313.247-.49.35a3.638 3.638 0 01-1.106.42 2.963 2.963 0 01-1.442-.077 1.579 1.579 0 01-.679-.427 1.897 1.897 0 01-.413-.777c-.093-.322-.14-.721-.14-1.197v-6.51h-1.232v-.938zm14.14 8.918c-.168.15-.366.29-.595.42a4.39 4.39 0 01-.749.336c-.27.093-.553.166-.847.217-.294.051-.59.077-.889.077-.56 0-1.055-.086-1.484-.259a2.858 2.858 0 01-1.078-.742 3.234 3.234 0 01-.658-1.155 4.767 4.767 0 01-.224-1.512c0-.588.082-1.11.245-1.568.163-.457.399-.84.707-1.148a3.08 3.08 0 011.12-.707 4.187 4.187 0 011.47-.245c.392 0 .78.051 1.162.154.383.103.721.296 1.015.581.294.285.52.677.679 1.176.159.5.215 1.146.168 1.939H27.09c0 .84.226 1.468.679 1.883.453.415 1.057.623 1.813.623.252 0 .502-.03.749-.091.247-.06.483-.133.707-.217a3.72 3.72 0 00.595-.28c.173-.103.306-.196.399-.28l.434.798zm-2.954-5.362c-.308 0-.6.033-.875.098a1.995 1.995 0 00-.728.329c-.21.154-.383.355-.518.602s-.222.553-.259.917h4.354c-.047-.616-.245-1.094-.595-1.435-.35-.34-.81-.511-1.379-.511zm4.382-.756h1.666v-1.386l1.092-.308v1.694h3.738v.938h-3.738v3.304c0 .681.166 1.185.497 1.512.331.327.805.49 1.421.49.42 0 .786-.08 1.099-.238.313-.159.595-.331.847-.518l.364.826a3.938 3.938 0 01-1.169.63 4.182 4.182 0 01-1.393.238 3.41 3.41 0 01-1.057-.161 2.426 2.426 0 01-.875-.497 2.38 2.38 0 01-.602-.861c-.15-.35-.224-.768-.224-1.253V20.85h-1.666v-.938z"/><path id="name" fill="#181717" d="M51.562 22.362a14.05 14.05 0 00-.063-1.176 4.657 4.657 0 00-.049-.364h-.938v-.91h1.876l.126 1.134h.07c.093-.159.217-.315.371-.469a2.91 2.91 0 011.225-.721c.252-.075.518-.112.798-.112.43 0 .81.047 1.141.14.331.093.607.259.826.497.22.238.385.56.497.966.112.406.168.922.168 1.547v4.018h-1.092v-3.808c0-.775-.126-1.358-.378-1.75-.252-.392-.71-.588-1.372-.588-.243 0-.478.049-.707.147a2.44 2.44 0 00-.623.385c-.187.159-.35.343-.49.553-.14.21-.243.432-.308.665v4.396h-1.078v-4.55zm8.61-1.904a4.447 4.447 0 011.358-.504 7.423 7.423 0 011.484-.154c.476 0 .866.075 1.169.224.303.15.541.343.714.581.173.238.29.509.35.812.06.303.091.609.091.917 0 .355-.01.733-.028 1.134-.019.401-.033.803-.042 1.204 0 .467.028.91.084 1.33h.938v.91h-1.862l-.126-1.05h-.07c-.056.084-.14.191-.252.322-.112.13-.259.259-.441.385a2.749 2.749 0 01-1.589.469c-.69 0-1.237-.177-1.638-.532-.401-.355-.602-.84-.602-1.456 0-.476.105-.873.315-1.19.21-.317.511-.56.903-.728.392-.168.866-.266 1.421-.294a9.544 9.544 0 011.869.112c.047-.43.054-.786.021-1.071-.033-.285-.107-.511-.224-.679a.938.938 0 00-.49-.357 2.482 2.482 0 00-.777-.105c-.42 0-.821.058-1.204.175-.383.117-.723.236-1.022.357l-.35-.812zM62.23 26.1c.261 0 .504-.042.728-.126a2.22 2.22 0 00.588-.322 2.133 2.133 0 00.672-.868v-.98a7.92 7.92 0 00-1.344-.126c-.41 0-.765.044-1.064.133-.299.089-.532.226-.7.413-.168.187-.252.43-.252.728 0 .308.105.576.315.805.21.229.562.343 1.057.343zm8.498.812V22.25c0-.196-.007-.385-.021-.567a1.9 1.9 0 00-.098-.49.786.786 0 00-.224-.343.57.57 0 00-.385-.126c-.317 0-.586.13-.805.392-.22.261-.385.588-.497.98v4.816h-1.064v-7h.728l.21.854h.056c.093-.14.184-.273.273-.399.089-.126.191-.236.308-.329.117-.093.254-.166.413-.217.159-.051.36-.077.602-.077.14 0 .285.021.434.063.15.042.287.107.413.196.126.089.236.208.329.357.093.15.154.331.182.546.215-.364.455-.649.721-.854.266-.205.632-.308 1.099-.308.308 0 .558.051.749.154.191.103.34.25.448.441.107.191.182.42.224.686.042.266.063.562.063.889v4.998h-1.064v-4.76c0-.196-.01-.38-.028-.553a1.764 1.764 0 00-.105-.455.752.752 0 00-.21-.308.536.536 0 00-.357-.112c-.327 0-.602.13-.826.392-.224.261-.392.635-.504 1.12v4.676h-1.064zm12.138-.882c-.168.15-.366.29-.595.42a4.39 4.39 0 01-.749.336c-.27.093-.553.166-.847.217-.294.051-.59.077-.889.077-.56 0-1.055-.086-1.484-.259a2.858 2.858 0 01-1.078-.742 3.234 3.234 0 01-.658-1.155 4.767 4.767 0 01-.224-1.512c0-.588.082-1.11.245-1.568.163-.457.399-.84.707-1.148a3.08 3.08 0 011.12-.707 4.187 4.187 0 011.47-.245c.392 0 .78.051 1.162.154.383.103.721.296 1.015.581.294.285.52.677.679 1.176.159.5.215 1.146.168 1.939H77.49c0 .84.226 1.468.679 1.883.453.415 1.057.623 1.813.623.252 0 .502-.03.749-.091.247-.06.483-.133.707-.217a3.72 3.72 0 00.595-.28c.173-.103.306-.196.399-.28l.434.798zm-2.954-5.362c-.308 0-.6.033-.875.098a1.995 1.995 0 00-.728.329c-.21.154-.383.355-.518.602s-.222.553-.259.917h4.354c-.047-.616-.245-1.094-.595-1.435-.35-.34-.81-.511-1.379-.511z"/><path id="=" fill="#DBAF88" d="M93.212 20.514h6.496v1.008h-6.496v-1.008zm0 2.296h6.496v1.008h-6.496V22.81z"/><path id=""Pete"" fill="#478964" d="M114.086 17.112h1.232l-.434 4.242h-.798v-4.242zm-2.898 0h1.232l-.434 4.242h-.798v-4.242zm7.672.098a7.07 7.07 0 011.148-.168c.41-.028.817-.042 1.218-.042.43 0 .866.042 1.309.126a3.55 3.55 0 011.211.462 2.6 2.6 0 01.889.924c.229.392.343.891.343 1.498 0 .597-.107 1.101-.322 1.512-.215.41-.5.744-.854 1.001-.355.257-.76.441-1.218.553a5.923 5.923 0 01-1.414.168h-.231a8.417 8.417 0 01-.679-.028 2.406 2.406 0 01-.238-.028v3.724h-1.162V17.21zm2.394.798c-.243 0-.476.005-.7.014-.224.01-.401.033-.532.07v4.06c.047.019.121.03.224.035l.322.014c.112.005.22.007.322.007h.224c.317 0 .632-.03.945-.091.313-.06.595-.17.847-.329s.455-.383.609-.672c.154-.29.231-.658.231-1.106 0-.383-.072-.702-.217-.959a1.735 1.735 0 00-.574-.616 2.419 2.419 0 00-.805-.329 4.182 4.182 0 00-.896-.098zm12.012 8.022c-.168.15-.366.29-.595.42a4.39 4.39 0 01-.749.336c-.27.093-.553.166-.847.217-.294.051-.59.077-.889.077-.56 0-1.055-.086-1.484-.259a2.858 2.858 0 01-1.078-.742 3.234 3.234 0 01-.658-1.155 4.767 4.767 0 01-.224-1.512c0-.588.082-1.11.245-1.568.163-.457.399-.84.707-1.148a3.08 3.08 0 011.12-.707 4.187 4.187 0 011.47-.245c.392 0 .78.051 1.162.154.383.103.721.296 1.015.581.294.285.52.677.679 1.176.159.5.215 1.146.168 1.939h-5.418c0 .84.226 1.468.679 1.883.453.415 1.057.623 1.813.623.252 0 .502-.03.749-.091.247-.06.483-.133.707-.217a3.72 3.72 0 00.595-.28c.173-.103.306-.196.399-.28l.434.798zm-2.954-5.362c-.308 0-.6.033-.875.098a1.995 1.995 0 00-.728.329c-.21.154-.383.355-.518.602s-.222.553-.259.917h4.354c-.047-.616-.245-1.094-.595-1.435-.35-.34-.81-.511-1.379-.511zm4.382-.756h1.666v-1.386l1.092-.308v1.694h3.738v.938h-3.738v3.304c0 .681.166 1.185.497 1.512.331.327.805.49 1.421.49.42 0 .786-.08 1.099-.238.313-.159.595-.331.847-.518l.364.826a3.938 3.938 0 01-1.169.63 4.182 4.182 0 01-1.393.238 3.41 3.41 0 01-1.057-.161 2.426 2.426 0 01-.875-.497 2.38 2.38 0 01-.602-.861c-.15-.35-.224-.768-.224-1.253V20.85h-1.666v-.938zm15.372 6.118c-.168.15-.366.29-.595.42a4.39 4.39 0 01-.749.336c-.27.093-.553.166-.847.217-.294.051-.59.077-.889.077-.56 0-1.055-.086-1.484-.259a2.858 2.858 0 01-1.078-.742 3.234 3.234 0 01-.658-1.155 4.767 4.767 0 01-.224-1.512c0-.588.082-1.11.245-1.568.163-.457.399-.84.707-1.148a3.08 3.08 0 011.12-.707 4.187 4.187 0 011.47-.245c.392 0 .78.051 1.162.154.383.103.721.296 1.015.581.294.285.52.677.679 1.176.159.5.215 1.146.168 1.939h-5.418c0 .84.226 1.468.679 1.883.453.415 1.057.623 1.813.623.252 0 .502-.03.749-.091.247-.06.483-.133.707-.217a3.72 3.72 0 00.595-.28c.173-.103.306-.196.399-.28l.434.798zm-2.954-5.362c-.308 0-.6.033-.875.098a1.995 1.995 0 00-.728.329c-.21.154-.383.355-.518.602s-.222.553-.259.917h4.354c-.047-.616-.245-1.094-.595-1.435-.35-.34-.81-.511-1.379-.511zm8.974-3.556h1.232l-.434 4.242h-.798v-4.242zm-2.898 0h1.232l-.434 4.242h-.798v-4.242z"/><path id=";" fill="#7E7C7B" d="M162.666 26.142c0-.28.091-.506.273-.679.182-.173.418-.259.707-.259.355 0 .63.124.826.371.196.247.294.595.294 1.043a2.36 2.36 0 01-.637 1.659 2.465 2.465 0 01-.588.462c-.21.117-.404.203-.581.259l-.35-.546c.336-.13.625-.317.868-.56.243-.243.364-.537.364-.882-.13.028-.233.042-.308.042-.27 0-.483-.077-.637-.231-.154-.154-.231-.38-.231-.679zm.126-5.502c0-.299.084-.53.252-.693.168-.163.392-.245.672-.245.299 0 .532.082.7.245.168.163.252.394.252.693 0 .27-.084.495-.252.672-.168.177-.401.266-.7.266-.28 0-.504-.089-.672-.266a.938.938 0 01-.252-.672z"/><path id="returnfunction" fill="#1C85B5" d="M17.584 60.912v-.938h1.89V54.85h-1.89v-.938h2.618l.224.91h.07c.317-.29.672-.537 1.064-.742.392-.205.859-.308 1.4-.308.317 0 .572.06.763.182.191.121.34.299.448.532.107.233.18.516.217.847.037.331.056.707.056 1.127l-.98.014c0-.597-.058-1.036-.175-1.316-.117-.28-.329-.42-.637-.42-.29 0-.55.042-.784.126a2.565 2.565 0 00-.609.308c-.173.121-.32.243-.441.364s-.21.224-.266.308v4.13h2.688v.938h-5.656zm14.882-.882c-.168.15-.366.29-.595.42a4.39 4.39 0 01-.749.336c-.27.093-.553.166-.847.217-.294.051-.59.077-.889.077-.56 0-1.055-.086-1.484-.259a2.858 2.858 0 01-1.078-.742 3.234 3.234 0 01-.658-1.155 4.767 4.767 0 01-.224-1.512c0-.588.082-1.11.245-1.568.163-.457.399-.84.707-1.148a3.08 3.08 0 011.12-.707 4.187 4.187 0 011.47-.245c.392 0 .78.051 1.162.154.383.103.721.296 1.015.581.294.285.52.677.679 1.176.159.5.215 1.146.168 1.939H27.09c0 .84.226 1.468.679 1.883.453.415 1.057.623 1.813.623.252 0 .502-.03.749-.091.247-.06.483-.133.707-.217a3.72 3.72 0 00.595-.28c.173-.103.306-.196.399-.28l.434.798zm-2.954-5.362c-.308 0-.6.033-.875.098a1.995 1.995 0 00-.728.329c-.21.154-.383.355-.518.602s-.222.553-.259.917h4.354c-.047-.616-.245-1.094-.595-1.435-.35-.34-.81-.511-1.379-.511zm4.382-.756h1.666v-1.386l1.092-.308v1.694h3.738v.938h-3.738v3.304c0 .681.166 1.185.497 1.512.331.327.805.49 1.421.49.42 0 .786-.08 1.099-.238.313-.159.595-.331.847-.518l.364.826a3.938 3.938 0 01-1.169.63 4.182 4.182 0 01-1.393.238 3.41 3.41 0 01-1.057-.161 2.426 2.426 0 01-.875-.497 2.38 2.38 0 01-.602-.861c-.15-.35-.224-.768-.224-1.253V54.85h-1.666v-.938zm13.048 0h1.988v4.774c0 .457.028.896.084 1.316h.938v.91H48.09l-.042-1.19h-.056a2.938 2.938 0 01-.966.98c-.401.252-.887.378-1.456.378-.43 0-.796-.049-1.099-.147a1.556 1.556 0 01-.749-.511c-.196-.243-.34-.567-.434-.973-.093-.406-.14-.912-.14-1.519v-3.08h-.938v-.938h2.03v3.794c0 .383.016.726.049 1.029.033.303.1.56.203.77.103.21.254.369.455.476.2.107.469.161.805.161.485 0 .908-.159 1.267-.476.36-.317.632-.714.819-1.19V54.85h-.896v-.938zm4.242 7v-.938h1.89V54.85h-1.89v-.938h2.618l.224.91h.07c.317-.29.672-.537 1.064-.742.392-.205.859-.308 1.4-.308.317 0 .572.06.763.182.191.121.34.299.448.532.107.233.18.516.217.847.037.331.056.707.056 1.127l-.98.014c0-.597-.058-1.036-.175-1.316-.117-.28-.329-.42-.637-.42-.29 0-.55.042-.784.126a2.565 2.565 0 00-.609.308c-.173.121-.32.243-.441.364s-.21.224-.266.308v4.13h2.688v.938h-5.656zm8.778-4.55a14.05 14.05 0 00-.063-1.176 4.657 4.657 0 00-.049-.364h-.938v-.91h1.876l.126 1.134h.07c.093-.159.217-.315.371-.469a2.91 2.91 0 011.225-.721c.252-.075.518-.112.798-.112.43 0 .81.047 1.141.14.331.093.607.259.826.497.22.238.385.56.497.966.112.406.168.922.168 1.547v4.018h-1.092v-3.808c0-.775-.126-1.358-.378-1.75-.252-.392-.71-.588-1.372-.588-.243 0-.478.049-.707.147a2.44 2.44 0 00-.623.385c-.187.159-.35.343-.49.553-.14.21-.243.432-.308.665v4.396h-1.078v-4.55zm16.73 4.55v-.938h1.666V54.85h-1.666v-.938h1.666v-.392c0-.877.229-1.512.686-1.904.457-.392 1.11-.588 1.96-.588.308 0 .583.019.826.056.243.037.504.112.784.224l-.252.91a2.862 2.862 0 00-.7-.203 4.295 4.295 0 00-.616-.049c-.616 0-1.036.152-1.26.455-.224.303-.336.8-.336 1.491h2.898v.938H79.45v5.124h2.898v.938h-5.656zm12.25-7h1.988v4.774c0 .457.028.896.084 1.316h.938v.91H90.09l-.042-1.19h-.056a2.938 2.938 0 01-.966.98c-.401.252-.887.378-1.456.378-.43 0-.796-.049-1.099-.147a1.556 1.556 0 01-.749-.511c-.196-.243-.34-.567-.434-.973-.093-.406-.14-.912-.14-1.519v-3.08h-.938v-.938h2.03v3.794c0 .383.016.726.049 1.029.033.303.1.56.203.77.103.21.254.369.455.476.2.107.469.161.805.161.485 0 .908-.159 1.267-.476.36-.317.632-.714.819-1.19V54.85h-.896v-.938zm4.62 2.45a14.05 14.05 0 00-.063-1.176 4.657 4.657 0 00-.049-.364h-.938v-.91h1.876l.126 1.134h.07c.093-.159.217-.315.371-.469a2.91 2.91 0 011.225-.721c.252-.075.518-.112.798-.112.43 0 .81.047 1.141.14.331.093.607.259.826.497.22.238.385.56.497.966.112.406.168.922.168 1.547v4.018h-1.092v-3.808c0-.775-.126-1.358-.378-1.75-.252-.392-.71-.588-1.372-.588-.243 0-.478.049-.707.147a2.44 2.44 0 00-.623.385c-.187.159-.35.343-.49.553-.14.21-.243.432-.308.665v4.396h-1.078v-4.55zm13.244-1.372a5.531 5.531 0 00-.693-.189 3.61 3.61 0 00-.735-.077c-.915 0-1.596.215-2.044.644-.448.43-.672 1.11-.672 2.044 0 .41.065.777.196 1.099.13.322.317.595.56.819.243.224.534.397.875.518.34.121.716.182 1.127.182.439 0 .866-.075 1.281-.224.415-.15.763-.345 1.043-.588l.49.812c-.13.112-.294.229-.49.35a4.837 4.837 0 01-1.533.602 4.962 4.962 0 01-1.015.098c-.607 0-1.141-.086-1.603-.259a3.045 3.045 0 01-1.155-.742 3.176 3.176 0 01-.7-1.162 4.525 4.525 0 01-.238-1.505c0-.588.082-1.11.245-1.568.163-.457.399-.84.707-1.148a3.08 3.08 0 011.12-.707 4.187 4.187 0 011.47-.245c.69 0 1.253.06 1.687.182.434.121.8.257 1.099.406l-.014.042v1.946h-1.008v-1.33zm2.688-1.078h1.666v-1.386l1.092-.308v1.694h3.738v.938h-3.738v3.304c0 .681.166 1.185.497 1.512.331.327.805.49 1.421.49.42 0 .786-.08 1.099-.238.313-.159.595-.331.847-.518l.364.826a3.938 3.938 0 01-1.169.63 4.182 4.182 0 01-1.393.238 3.41 3.41 0 01-1.057-.161 2.426 2.426 0 01-.875-.497 2.38 2.38 0 01-.602-.861c-.15-.35-.224-.768-.224-1.253V54.85h-1.666v-.938zm9.436 7v-.938h2.436V54.85h-2.436v-.938h3.556v6.062h2.38v.938h-5.936zm2.058-8.988c0-.252.084-.469.252-.651a.838.838 0 01.644-.273c.27 0 .497.091.679.273a.889.889 0 01.273.651.806.806 0 01-.273.616.963.963 0 01-.679.252.872.872 0 01-.644-.252.838.838 0 01-.252-.616zm5.67 5.488c0-1.13.294-2.023.882-2.681.588-.658 1.428-.987 2.52-.987.588 0 1.094.096 1.519.287.425.191.777.45 1.057.777.28.327.488.714.623 1.162.135.448.203.929.203 1.442 0 .56-.075 1.066-.224 1.519-.15.453-.369.838-.658 1.155-.29.317-.646.562-1.071.735a3.82 3.82 0 01-1.449.259c-.579 0-1.083-.096-1.512-.287a2.967 2.967 0 01-1.064-.777 3.168 3.168 0 01-.623-1.162 4.963 4.963 0 01-.203-1.442zm1.162 0c0 .327.04.653.119.98.08.327.208.62.385.882.177.261.408.471.693.63.285.159.632.238 1.043.238.747 0 1.309-.231 1.687-.693.378-.462.567-1.141.567-2.037 0-.336-.04-.665-.119-.987a2.608 2.608 0 00-.392-.875 2.066 2.066 0 00-.7-.63c-.285-.159-.632-.238-1.043-.238-.747 0-1.307.229-1.68.686-.373.457-.56 1.139-.56 2.044zm7.742-1.05a14.051 14.051 0 00-.063-1.176 4.657 4.657 0 00-.049-.364h-.938v-.91h1.876l.126 1.134h.07c.093-.159.217-.315.371-.469a2.91 2.91 0 011.225-.721c.252-.075.518-.112.798-.112.43 0 .81.047 1.141.14.331.093.607.259.826.497.22.238.385.56.497.966.112.406.168.922.168 1.547v4.018h-1.092v-3.808c0-.775-.126-1.358-.378-1.75-.252-.392-.71-.588-1.372-.588-.243 0-.478.049-.707.147a2.44 2.44 0 00-.623.385c-.187.159-.35.343-.49.553-.14.21-.243.432-.308.665v4.396h-1.078v-4.55z"/><path id="(){" fill="#7E7C7B" d="M148.708 63.88a6.964 6.964 0 01-1.757-.707 5.036 5.036 0 01-1.428-1.225c-.406-.504-.728-1.12-.966-1.848s-.357-1.591-.357-2.59c0-.99.121-1.855.364-2.597s.57-1.372.98-1.89c.41-.518.889-.933 1.435-1.246a6.005 6.005 0 011.729-.665l.35.882a7.086 7.086 0 00-1.512.623 3.928 3.928 0 00-1.183 1.022c-.331.425-.588.952-.77 1.582-.182.63-.273 1.393-.273 2.289 0 .905.11 1.678.329 2.317.22.64.509 1.171.868 1.596.36.425.76.756 1.204.994.443.238.889.404 1.337.497l-.35.966zm4.354-.966a4.965 4.965 0 001.337-.497 4.15 4.15 0 001.204-.994c.36-.425.649-.957.868-1.596.22-.64.329-1.412.329-2.317 0-.896-.091-1.659-.273-2.289-.182-.63-.439-1.157-.77-1.582a3.928 3.928 0 00-1.183-1.022 7.086 7.086 0 00-1.512-.623l.35-.882c.607.13 1.183.352 1.729.665a4.984 4.984 0 011.435 1.246c.41.518.737 1.148.98 1.89s.364 1.608.364 2.597c0 .999-.119 1.862-.357 2.59-.238.728-.56 1.344-.966 1.848a5.036 5.036 0 01-1.428 1.225 6.964 6.964 0 01-1.757.707l-.35-.966zm17.878-2.45c0-.401-.068-.749-.203-1.043a2.44 2.44 0 00-.504-.735c-.2-.196-.415-.34-.644-.434a1.641 1.641 0 00-.609-.14v-.98c.177 0 .38-.04.609-.119.229-.08.443-.21.644-.392.2-.182.369-.418.504-.707.135-.29.203-.649.203-1.078v-1.428c0-.336.054-.644.161-.924a2.22 2.22 0 01.448-.728c.191-.205.42-.366.686-.483.266-.117.558-.175.875-.175h2.03v.98h-1.54c-.588 0-.996.14-1.225.42-.229.28-.343.695-.343 1.246v1.358c0 .383-.07.723-.21 1.022a2.7 2.7 0 01-1.106 1.225c-.205.117-.373.184-.504.203v.084c.121.019.285.091.49.217.205.126.406.299.602.518.196.22.366.478.511.777.145.299.217.63.217.994v1.344c0 .57.121.99.364 1.26s.649.406 1.218.406h1.526v.98h-2.03c-.653 0-1.178-.194-1.575-.581-.397-.387-.595-.959-.595-1.715v-1.372z"/><path id="alert(name);" fill="#C06334" d="M34.972 71.458a4.447 4.447 0 011.358-.504 7.423 7.423 0 011.484-.154c.476 0 .866.075 1.169.224.303.15.541.343.714.581.173.238.29.509.35.812.06.303.091.609.091.917 0 .355-.01.733-.028 1.134-.019.401-.033.803-.042 1.204 0 .467.028.91.084 1.33h.938v.91h-1.862l-.126-1.05h-.07c-.056.084-.14.191-.252.322-.112.13-.259.259-.441.385a2.749 2.749 0 01-1.589.469c-.69 0-1.237-.177-1.638-.532-.401-.355-.602-.84-.602-1.456 0-.476.105-.873.315-1.19.21-.317.511-.56.903-.728.392-.168.866-.266 1.421-.294a9.544 9.544 0 011.869.112c.047-.43.054-.786.021-1.071-.033-.285-.107-.511-.224-.679a.938.938 0 00-.49-.357 2.482 2.482 0 00-.777-.105c-.42 0-.821.058-1.204.175-.383.117-.723.236-1.022.357l-.35-.812zM37.03 77.1c.261 0 .504-.042.728-.126a2.22 2.22 0 00.588-.322 2.133 2.133 0 00.672-.868v-.98a7.92 7.92 0 00-1.344-.126c-.41 0-.765.044-1.064.133-.299.089-.532.226-.7.413-.168.187-.252.43-.252.728 0 .308.105.576.315.805.21.229.562.343 1.057.343zm6.496-8.988h2.324v7.448c0 .57.096.97.287 1.204.191.233.474.35.847.35.261 0 .511-.047.749-.14.238-.093.502-.252.791-.476l.504.77c-.15.13-.313.247-.49.35a3.638 3.638 0 01-1.106.42 2.963 2.963 0 01-1.442-.077 1.579 1.579 0 01-.679-.427 1.897 1.897 0 01-.413-.777c-.093-.322-.14-.721-.14-1.197v-6.51h-1.232v-.938zm14.14 8.918c-.168.15-.366.29-.595.42a4.39 4.39 0 01-.749.336c-.27.093-.553.166-.847.217-.294.051-.59.077-.889.077-.56 0-1.055-.086-1.484-.259a2.858 2.858 0 01-1.078-.742 3.234 3.234 0 01-.658-1.155 4.767 4.767 0 01-.224-1.512c0-.588.082-1.11.245-1.568.163-.457.399-.84.707-1.148a3.08 3.08 0 011.12-.707 4.187 4.187 0 011.47-.245c.392 0 .78.051 1.162.154.383.103.721.296 1.015.581.294.285.52.677.679 1.176.159.5.215 1.146.168 1.939H52.29c0 .84.226 1.468.679 1.883.453.415 1.057.623 1.813.623.252 0 .502-.03.749-.091.247-.06.483-.133.707-.217a3.72 3.72 0 00.595-.28c.173-.103.306-.196.399-.28l.434.798zm-2.954-5.362c-.308 0-.6.033-.875.098a1.995 1.995 0 00-.728.329c-.21.154-.383.355-.518.602s-.222.553-.259.917h4.354c-.047-.616-.245-1.094-.595-1.435-.35-.34-.81-.511-1.379-.511zm4.872 6.244v-.938h1.89V71.85h-1.89v-.938h2.618l.224.91h.07c.317-.29.672-.537 1.064-.742.392-.205.859-.308 1.4-.308.317 0 .572.06.763.182.191.121.34.299.448.532.107.233.18.516.217.847.037.331.056.707.056 1.127l-.98.014c0-.597-.058-1.036-.175-1.316-.117-.28-.329-.42-.637-.42-.29 0-.55.042-.784.126a2.565 2.565 0 00-.609.308c-.173.121-.32.243-.441.364s-.21.224-.266.308v4.13h2.688v.938h-5.656zm7.91-7h1.666v-1.386l1.092-.308v1.694h3.738v.938h-3.738v3.304c0 .681.166 1.185.497 1.512.331.327.805.49 1.421.49.42 0 .786-.08 1.099-.238.313-.159.595-.331.847-.518l.364.826a3.938 3.938 0 01-1.169.63 4.182 4.182 0 01-1.393.238 3.41 3.41 0 01-1.057-.161 2.426 2.426 0 01-.875-.497 2.38 2.38 0 01-.602-.861c-.15-.35-.224-.768-.224-1.253V71.85h-1.666v-.938zm14.014 9.968a6.964 6.964 0 01-1.757-.707 5.036 5.036 0 01-1.428-1.225c-.406-.504-.728-1.12-.966-1.848S77 75.509 77 74.51c0-.99.121-1.855.364-2.597s.57-1.372.98-1.89c.41-.518.889-.933 1.435-1.246a6.005 6.005 0 011.729-.665l.35.882a7.086 7.086 0 00-1.512.623 3.928 3.928 0 00-1.183 1.022c-.331.425-.588.952-.77 1.582-.182.63-.273 1.393-.273 2.289 0 .905.11 1.678.329 2.317.22.64.509 1.171.868 1.596.36.425.76.756 1.204.994.443.238.889.404 1.337.497l-.35.966zm3.654-7.518a14.05 14.05 0 00-.063-1.176 4.657 4.657 0 00-.049-.364h-.938v-.91h1.876l.126 1.134h.07c.093-.159.217-.315.371-.469a2.91 2.91 0 011.225-.721c.252-.075.518-.112.798-.112.43 0 .81.047 1.141.14.331.093.607.259.826.497.22.238.385.56.497.966.112.406.168.922.168 1.547v4.018h-1.092v-3.808c0-.775-.126-1.358-.378-1.75-.252-.392-.71-.588-1.372-.588-.243 0-.478.049-.707.147a2.44 2.44 0 00-.623.385c-.187.159-.35.343-.49.553-.14.21-.243.432-.308.665v4.396h-1.078v-4.55zm8.61-1.904a4.447 4.447 0 011.358-.504 7.423 7.423 0 011.484-.154c.476 0 .866.075 1.169.224.303.15.541.343.714.581.173.238.29.509.35.812.06.303.091.609.091.917 0 .355-.01.733-.028 1.134-.019.401-.033.803-.042 1.204 0 .467.028.91.084 1.33h.938v.91h-1.862l-.126-1.05h-.07c-.056.084-.14.191-.252.322-.112.13-.259.259-.441.385a2.749 2.749 0 01-1.589.469c-.69 0-1.237-.177-1.638-.532-.401-.355-.602-.84-.602-1.456 0-.476.105-.873.315-1.19.21-.317.511-.56.903-.728.392-.168.866-.266 1.421-.294a9.544 9.544 0 011.869.112c.047-.43.054-.786.021-1.071-.033-.285-.107-.511-.224-.679a.938.938 0 00-.49-.357 2.482 2.482 0 00-.777-.105c-.42 0-.821.058-1.204.175-.383.117-.723.236-1.022.357l-.35-.812zM95.83 77.1c.261 0 .504-.042.728-.126a2.22 2.22 0 00.588-.322 2.133 2.133 0 00.672-.868v-.98a7.92 7.92 0 00-1.344-.126c-.41 0-.765.044-1.064.133-.299.089-.532.226-.7.413-.168.187-.252.43-.252.728 0 .308.105.576.315.805.21.229.562.343 1.057.343zm8.498.812V73.25c0-.196-.007-.385-.021-.567a1.9 1.9 0 00-.098-.49.786.786 0 00-.224-.343.57.57 0 00-.385-.126c-.317 0-.586.13-.805.392-.22.261-.385.588-.497.98v4.816h-1.064v-7h.728l.21.854h.056c.093-.14.184-.273.273-.399.089-.126.191-.236.308-.329.117-.093.254-.166.413-.217.159-.051.36-.077.602-.077.14 0 .285.021.434.063.15.042.287.107.413.196.126.089.236.208.329.357.093.15.154.331.182.546.215-.364.455-.649.721-.854.266-.205.632-.308 1.099-.308.308 0 .558.051.749.154.191.103.34.25.448.441.107.191.182.42.224.686.042.266.063.562.063.889v4.998h-1.064v-4.76c0-.196-.01-.38-.028-.553a1.764 1.764 0 00-.105-.455.752.752 0 00-.21-.308.536.536 0 00-.357-.112c-.327 0-.602.13-.826.392-.224.261-.392.635-.504 1.12v4.676h-1.064zm12.138-.882c-.168.15-.366.29-.595.42a4.39 4.39 0 01-.749.336c-.27.093-.553.166-.847.217-.294.051-.59.077-.889.077-.56 0-1.055-.086-1.484-.259a2.858 2.858 0 01-1.078-.742 3.234 3.234 0 01-.658-1.155 4.767 4.767 0 01-.224-1.512c0-.588.082-1.11.245-1.568.163-.457.399-.84.707-1.148a3.08 3.08 0 011.12-.707 4.187 4.187 0 011.47-.245c.392 0 .78.051 1.162.154.383.103.721.296 1.015.581.294.285.52.677.679 1.176.159.5.215 1.146.168 1.939h-5.418c0 .84.226 1.468.679 1.883.453.415 1.057.623 1.813.623.252 0 .502-.03.749-.091.247-.06.483-.133.707-.217a3.72 3.72 0 00.595-.28c.173-.103.306-.196.399-.28l.434.798zm-2.954-5.362c-.308 0-.6.033-.875.098a1.995 1.995 0 00-.728.329c-.21.154-.383.355-.518.602s-.222.553-.259.917h4.354c-.047-.616-.245-1.094-.595-1.435-.35-.34-.81-.511-1.379-.511zm5.95 8.246a4.965 4.965 0 001.337-.497 4.15 4.15 0 001.204-.994c.36-.425.649-.957.868-1.596.22-.64.329-1.412.329-2.317 0-.896-.091-1.659-.273-2.289-.182-.63-.439-1.157-.77-1.582a3.928 3.928 0 00-1.183-1.022 7.086 7.086 0 00-1.512-.623l.35-.882c.607.13 1.183.352 1.729.665a4.984 4.984 0 011.435 1.246c.41.518.737 1.148.98 1.89s.364 1.608.364 2.597c0 .999-.119 1.862-.357 2.59-.238.728-.56 1.344-.966 1.848a5.036 5.036 0 01-1.428 1.225 6.964 6.964 0 01-1.757.707l-.35-.966zm9.604-2.772c0-.28.091-.506.273-.679.182-.173.418-.259.707-.259.355 0 .63.124.826.371.196.247.294.595.294 1.043a2.36 2.36 0 01-.637 1.659 2.465 2.465 0 01-.588.462c-.21.117-.404.203-.581.259l-.35-.546c.336-.13.625-.317.868-.56.243-.243.364-.537.364-.882-.13.028-.233.042-.308.042-.27 0-.483-.077-.637-.231-.154-.154-.231-.38-.231-.679zm.126-5.502c0-.299.084-.53.252-.693.168-.163.392-.245.672-.245.299 0 .532.082.7.245.168.163.252.394.252.693 0 .27-.084.495-.252.672-.168.177-.401.266-.7.266-.28 0-.504-.089-.672-.266a.938.938 0 01-.252-.672z"/><path id="};}" fill="#7E7C7B" d="M21.98 95.836c0 .756-.198 1.328-.595 1.715-.397.387-.922.581-1.575.581h-2.03v-.98h1.526c.57 0 .975-.135 1.218-.406.243-.27.364-.69.364-1.26v-1.344c0-.364.07-.695.21-.994.14-.299.308-.558.504-.777.196-.22.397-.392.602-.518.205-.126.373-.198.504-.217v-.084c-.13-.019-.299-.086-.504-.203a2.7 2.7 0 01-1.106-1.225c-.14-.299-.21-.64-.21-1.022v-1.358c0-.55-.114-.966-.343-1.246-.229-.28-.637-.42-1.225-.42h-1.54v-.98h2.03c.317 0 .609.058.875.175.266.117.495.278.686.483.191.205.34.448.448.728.107.28.161.588.161.924v1.428c0 .43.068.789.203 1.078.135.29.303.525.504.707.2.182.415.313.644.392.229.08.432.119.609.119v.98c-.177 0-.38.047-.609.14a2.011 2.011 0 00-.644.434 2.44 2.44 0 00-.504.735c-.135.294-.203.642-.203 1.043v1.372zm6.286-1.694c0-.28.091-.506.273-.679.182-.173.418-.259.707-.259.355 0 .63.124.826.371.196.247.294.595.294 1.043a2.36 2.36 0 01-.637 1.659 2.465 2.465 0 01-.588.462c-.21.117-.404.203-.581.259l-.35-.546c.336-.13.625-.317.868-.56.243-.243.364-.537.364-.882-.13.028-.233.042-.308.042-.27 0-.483-.077-.637-.231-.154-.154-.231-.38-.231-.679zm.126-5.502c0-.299.084-.53.252-.693.168-.163.392-.245.672-.245.299 0 .532.082.7.245.168.163.252.394.252.693 0 .27-.084.495-.252.672-.168.177-.401.266-.7.266-.28 0-.504-.089-.672-.266a.938.938 0 01-.252-.672zM5.18 112.836c0 .756-.198 1.328-.595 1.715-.397.387-.922.581-1.575.581H.98v-.98h1.526c.57 0 .975-.135 1.218-.406.243-.27.364-.69.364-1.26v-1.344c0-.364.07-.695.21-.994.14-.299.308-.558.504-.777.196-.22.397-.392.602-.518.205-.126.373-.198.504-.217v-.084c-.13-.019-.299-.086-.504-.203a2.7 2.7 0 01-1.106-1.225c-.14-.299-.21-.64-.21-1.022v-1.358c0-.55-.114-.966-.343-1.246-.229-.28-.637-.42-1.225-.42H.98v-.98h2.03c.317 0 .609.058.875.175.266.117.495.278.686.483.191.205.34.448.448.728.107.28.161.588.161.924v1.428c0 .43.068.789.203 1.078.135.29.303.525.504.707.2.182.415.313.644.392.229.08.432.119.609.119v.98c-.177 0-.38.047-.609.14a2.011 2.011 0 00-.644.434 2.44 2.44 0 00-.504.735c-.135.294-.203.642-.203 1.043v1.372z"/><path id="let" fill="#1C85B5" d="M1.526 136.112H3.85v7.448c0 .57.096.97.287 1.204.191.233.474.35.847.35.261 0 .511-.047.749-.14.238-.093.502-.252.791-.476l.504.77c-.15.13-.313.247-.49.35a3.638 3.638 0 01-1.106.42 2.963 2.963 0 01-1.442-.077 1.579 1.579 0 01-.679-.427 1.897 1.897 0 01-.413-.777c-.093-.322-.14-.721-.14-1.197v-6.51H1.526v-.938zm14.14 8.918c-.168.15-.366.29-.595.42a4.39 4.39 0 01-.749.336c-.27.093-.553.166-.847.217-.294.051-.59.077-.889.077-.56 0-1.055-.086-1.484-.259a2.858 2.858 0 01-1.078-.742 3.234 3.234 0 01-.658-1.155 4.767 4.767 0 01-.224-1.512c0-.588.082-1.11.245-1.568.163-.457.399-.84.707-1.148a3.08 3.08 0 011.12-.707 4.187 4.187 0 011.47-.245c.392 0 .78.051 1.162.154.383.103.721.296 1.015.581.294.285.52.677.679 1.176.159.5.215 1.146.168 1.939H10.29c0 .84.226 1.468.679 1.883.453.415 1.057.623 1.813.623.252 0 .502-.03.749-.091.247-.06.483-.133.707-.217a3.72 3.72 0 00.595-.28c.173-.103.306-.196.399-.28l.434.798zm-2.954-5.362c-.308 0-.6.033-.875.098a1.995 1.995 0 00-.728.329c-.21.154-.383.355-.518.602s-.222.553-.259.917h4.354c-.047-.616-.245-1.094-.595-1.435-.35-.34-.81-.511-1.379-.511zm4.382-.756h1.666v-1.386l1.092-.308v1.694h3.738v.938h-3.738v3.304c0 .681.166 1.185.497 1.512.331.327.805.49 1.421.49.42 0 .786-.08 1.099-.238.313-.159.595-.331.847-.518l.364.826a3.938 3.938 0 01-1.169.63 4.182 4.182 0 01-1.393.238 3.41 3.41 0 01-1.057-.161 2.426 2.426 0 01-.875-.497 2.38 2.38 0 01-.602-.861c-.15-.35-.224-.768-.224-1.253v-3.472h-1.666v-.938z"/><path id="name" fill="#181717" d="M34.762 141.362a14.05 14.05 0 00-.063-1.176 4.657 4.657 0 00-.049-.364h-.938v-.91h1.876l.126 1.134h.07c.093-.159.217-.315.371-.469a2.91 2.91 0 011.225-.721c.252-.075.518-.112.798-.112.43 0 .81.047 1.141.14.331.093.607.259.826.497.22.238.385.56.497.966.112.406.168.922.168 1.547v4.018h-1.092v-3.808c0-.775-.126-1.358-.378-1.75-.252-.392-.71-.588-1.372-.588-.243 0-.478.049-.707.147a2.44 2.44 0 00-.623.385c-.187.159-.35.343-.49.553-.14.21-.243.432-.308.665v4.396h-1.078v-4.55zm8.61-1.904a4.447 4.447 0 011.358-.504 7.423 7.423 0 011.484-.154c.476 0 .866.075 1.169.224.303.15.541.343.714.581.173.238.29.509.35.812.06.303.091.609.091.917 0 .355-.01.733-.028 1.134-.019.401-.033.803-.042 1.204 0 .467.028.91.084 1.33h.938v.91h-1.862l-.126-1.05h-.07c-.056.084-.14.191-.252.322-.112.13-.259.259-.441.385a2.749 2.749 0 01-1.589.469c-.69 0-1.237-.177-1.638-.532-.401-.355-.602-.84-.602-1.456 0-.476.105-.873.315-1.19.21-.317.511-.56.903-.728.392-.168.866-.266 1.421-.294a9.544 9.544 0 011.869.112c.047-.43.054-.786.021-1.071-.033-.285-.107-.511-.224-.679a.938.938 0 00-.49-.357 2.482 2.482 0 00-.777-.105c-.42 0-.821.058-1.204.175-.383.117-.723.236-1.022.357l-.35-.812zm2.058 5.642c.261 0 .504-.042.728-.126a2.22 2.22 0 00.588-.322 2.133 2.133 0 00.672-.868v-.98a7.92 7.92 0 00-1.344-.126c-.41 0-.765.044-1.064.133-.299.089-.532.226-.7.413-.168.187-.252.43-.252.728 0 .308.105.576.315.805.21.229.562.343 1.057.343zm8.498.812v-4.662c0-.196-.007-.385-.021-.567a1.9 1.9 0 00-.098-.49.786.786 0 00-.224-.343.57.57 0 00-.385-.126c-.317 0-.586.13-.805.392-.22.261-.385.588-.497.98v4.816h-1.064v-7h.728l.21.854h.056c.093-.14.184-.273.273-.399.089-.126.191-.236.308-.329.117-.093.254-.166.413-.217.159-.051.36-.077.602-.077.14 0 .285.021.434.063.15.042.287.107.413.196.126.089.236.208.329.357.093.15.154.331.182.546.215-.364.455-.649.721-.854.266-.205.632-.308 1.099-.308.308 0 .558.051.749.154.191.103.34.25.448.441.107.191.182.42.224.686.042.266.063.562.063.889v4.998h-1.064v-4.76c0-.196-.01-.38-.028-.553a1.764 1.764 0 00-.105-.455.752.752 0 00-.21-.308.536.536 0 00-.357-.112c-.327 0-.602.13-.826.392-.224.261-.392.635-.504 1.12v4.676h-1.064zm12.138-.882c-.168.15-.366.29-.595.42a4.39 4.39 0 01-.749.336c-.27.093-.553.166-.847.217-.294.051-.59.077-.889.077-.56 0-1.055-.086-1.484-.259a2.858 2.858 0 01-1.078-.742 3.234 3.234 0 01-.658-1.155 4.767 4.767 0 01-.224-1.512c0-.588.082-1.11.245-1.568.163-.457.399-.84.707-1.148a3.08 3.08 0 011.12-.707 4.187 4.187 0 011.47-.245c.392 0 .78.051 1.162.154.383.103.721.296 1.015.581.294.285.52.677.679 1.176.159.5.215 1.146.168 1.939H60.69c0 .84.226 1.468.679 1.883.453.415 1.057.623 1.813.623.252 0 .502-.03.749-.091.247-.06.483-.133.707-.217a3.72 3.72 0 00.595-.28c.173-.103.306-.196.399-.28l.434.798zm-2.954-5.362c-.308 0-.6.033-.875.098a1.995 1.995 0 00-.728.329c-.21.154-.383.355-.518.602s-.222.553-.259.917h4.354c-.047-.616-.245-1.094-.595-1.435-.35-.34-.81-.511-1.379-.511z"/><path id="=" fill="#DBAF88" d="M76.412 139.514h6.496v1.008h-6.496v-1.008zm0 2.296h6.496v1.008h-6.496v-1.008z"/><path id=""John"" fill="#478964" d="M97.286 136.112h1.232l-.434 4.242h-.798v-4.242zm-2.898 0h1.232l-.434 4.242h-.798v-4.242zm7.63 0h5.544v6.328c0 1.176-.28 2.072-.84 2.688-.56.616-1.367.924-2.422.924a4.603 4.603 0 01-1.526-.259 3.593 3.593 0 01-.581-.259 1.437 1.437 0 01-.357-.266l.504-.924c.103.065.217.135.343.21.126.075.266.147.42.217a2.756 2.756 0 001.169.245c.7 0 1.23-.22 1.589-.658.36-.439.539-1.148.539-2.128v-5.082h-4.382v-1.036zm7.84 6.3c0-1.13.294-2.023.882-2.681.588-.658 1.428-.987 2.52-.987.588 0 1.094.096 1.519.287.425.191.777.45 1.057.777.28.327.488.714.623 1.162.135.448.203.929.203 1.442 0 .56-.075 1.066-.224 1.519-.15.453-.369.838-.658 1.155-.29.317-.646.562-1.071.735a3.82 3.82 0 01-1.449.259c-.579 0-1.083-.096-1.512-.287a2.967 2.967 0 01-1.064-.777 3.168 3.168 0 01-.623-1.162 4.963 4.963 0 01-.203-1.442zm1.162 0c0 .327.04.653.119.98.08.327.208.62.385.882.177.261.408.471.693.63.285.159.632.238 1.043.238.747 0 1.309-.231 1.687-.693.378-.462.567-1.141.567-2.037 0-.336-.04-.665-.119-.987a2.608 2.608 0 00-.392-.875 2.066 2.066 0 00-.7-.63c-.285-.159-.632-.238-1.043-.238-.747 0-1.307.229-1.68.686-.373.457-.56 1.139-.56 2.044zm6.496-6.3h2.184v3.668h.07c.29-.327.625-.581 1.008-.763.383-.182.859-.273 1.428-.273.448 0 .838.047 1.169.14.331.093.602.257.812.49.21.233.366.553.469.959.103.406.154.922.154 1.547v4.032h-1.092v-3.822c0-.401-.023-.751-.07-1.05a1.829 1.829 0 00-.273-.749c-.135-.2-.32-.352-.553-.455-.233-.103-.532-.154-.896-.154-.252 0-.5.044-.742.133-.243.089-.464.21-.665.364-.2.154-.373.34-.518.56-.145.22-.245.46-.301.721v4.452h-1.078v-8.862h-1.106v-.938zm9.646 5.25a14.051 14.051 0 00-.063-1.176 4.657 4.657 0 00-.049-.364h-.938v-.91h1.876l.126 1.134h.07c.093-.159.217-.315.371-.469a2.91 2.91 0 011.225-.721c.252-.075.518-.112.798-.112.43 0 .81.047 1.141.14.331.093.607.259.826.497.22.238.385.56.497.966.112.406.168.922.168 1.547v4.018h-1.092v-3.808c0-.775-.126-1.358-.378-1.75-.252-.392-.71-.588-1.372-.588-.243 0-.478.049-.707.147a2.44 2.44 0 00-.623.385c-.187.159-.35.343-.49.553-.14.21-.243.432-.308.665v4.396h-1.078v-4.55zm12.124-5.25h1.232l-.434 4.242h-.798v-4.242zm-2.898 0h1.232l-.434 4.242h-.798v-4.242z"/><path id=";" fill="#7E7C7B" d="M145.866 145.142c0-.28.091-.506.273-.679.182-.173.418-.259.707-.259.355 0 .63.124.826.371.196.247.294.595.294 1.043a2.36 2.36 0 01-.637 1.659 2.465 2.465 0 01-.588.462c-.21.117-.404.203-.581.259l-.35-.546c.336-.13.625-.317.868-.56.243-.243.364-.537.364-.882-.13.028-.233.042-.308.042-.27 0-.483-.077-.637-.231-.154-.154-.231-.38-.231-.679zm.126-5.502c0-.299.084-.53.252-.693.168-.163.392-.245.672-.245.299 0 .532.082.7.245.168.163.252.394.252.693 0 .27-.084.495-.252.672-.168.177-.401.266-.7.266-.28 0-.504-.089-.672-.266a.938.938 0 01-.252-.672z"/><path id="let" fill="#1C85B5" d="M1.526 153.112H3.85v7.448c0 .57.096.97.287 1.204.191.233.474.35.847.35.261 0 .511-.047.749-.14.238-.093.502-.252.791-.476l.504.77c-.15.13-.313.247-.49.35a3.638 3.638 0 01-1.106.42 2.963 2.963 0 01-1.442-.077 1.579 1.579 0 01-.679-.427 1.897 1.897 0 01-.413-.777c-.093-.322-.14-.721-.14-1.197v-6.51H1.526v-.938zm14.14 8.918c-.168.15-.366.29-.595.42a4.39 4.39 0 01-.749.336c-.27.093-.553.166-.847.217-.294.051-.59.077-.889.077-.56 0-1.055-.086-1.484-.259a2.858 2.858 0 01-1.078-.742 3.234 3.234 0 01-.658-1.155 4.767 4.767 0 01-.224-1.512c0-.588.082-1.11.245-1.568.163-.457.399-.84.707-1.148a3.08 3.08 0 011.12-.707 4.187 4.187 0 011.47-.245c.392 0 .78.051 1.162.154.383.103.721.296 1.015.581.294.285.52.677.679 1.176.159.5.215 1.146.168 1.939H10.29c0 .84.226 1.468.679 1.883.453.415 1.057.623 1.813.623.252 0 .502-.03.749-.091.247-.06.483-.133.707-.217a3.72 3.72 0 00.595-.28c.173-.103.306-.196.399-.28l.434.798zm-2.954-5.362c-.308 0-.6.033-.875.098a1.995 1.995 0 00-.728.329c-.21.154-.383.355-.518.602s-.222.553-.259.917h4.354c-.047-.616-.245-1.094-.595-1.435-.35-.34-.81-.511-1.379-.511zm4.382-.756h1.666v-1.386l1.092-.308v1.694h3.738v.938h-3.738v3.304c0 .681.166 1.185.497 1.512.331.327.805.49 1.421.49.42 0 .786-.08 1.099-.238.313-.159.595-.331.847-.518l.364.826a3.938 3.938 0 01-1.169.63 4.182 4.182 0 01-1.393.238 3.41 3.41 0 01-1.057-.161 2.426 2.426 0 01-.875-.497 2.38 2.38 0 01-.602-.861c-.15-.35-.224-.768-.224-1.253v-3.472h-1.666v-.938z"/><path id="work" fill="#181717" d="M38.206 157.452l1.4 3.892h.098l.994-5.432h1.022l-1.372 7h-1.246l-1.344-3.864h-.042l-1.4 3.864H35.07l-1.47-7h1.078l1.134 5.46h.084l1.358-3.92h.952zm4.452 1.96c0-1.13.294-2.023.882-2.681.588-.658 1.428-.987 2.52-.987.588 0 1.094.096 1.519.287.425.191.777.45 1.057.777.28.327.488.714.623 1.162.135.448.203.929.203 1.442 0 .56-.075 1.066-.224 1.519-.15.453-.369.838-.658 1.155-.29.317-.646.562-1.071.735a3.82 3.82 0 01-1.449.259c-.579 0-1.083-.096-1.512-.287a2.967 2.967 0 01-1.064-.777 3.168 3.168 0 01-.623-1.162 4.963 4.963 0 01-.203-1.442zm1.162 0c0 .327.04.653.119.98.08.327.208.62.385.882.177.261.408.471.693.63.285.159.632.238 1.043.238.747 0 1.309-.231 1.687-.693.378-.462.567-1.141.567-2.037 0-.336-.04-.665-.119-.987a2.608 2.608 0 00-.392-.875 2.066 2.066 0 00-.7-.63c-.285-.159-.632-.238-1.043-.238-.747 0-1.307.229-1.68.686-.373.457-.56 1.139-.56 2.044zm7.364 3.5v-.938h1.89v-5.124h-1.89v-.938h2.618l.224.91h.07c.317-.29.672-.537 1.064-.742.392-.205.859-.308 1.4-.308.317 0 .572.06.763.182.191.121.34.299.448.532.107.233.18.516.217.847.037.331.056.707.056 1.127l-.98.014c0-.597-.058-1.036-.175-1.316-.117-.28-.329-.42-.637-.42-.29 0-.55.042-.784.126a2.565 2.565 0 00-.609.308c-.173.121-.32.243-.441.364s-.21.224-.266.308v4.13h2.688v.938h-5.656zm7.812-9.8h2.268v5.796h.77l2.758-2.996h1.316l-3.094 3.318 2.548 2.744h.91v.938H65.03l-2.996-3.164h-.77v3.164h-1.078v-8.862h-1.19v-.938z"/><path id="=" fill="#DBAF88" d="M76.412 156.514h6.496v1.008h-6.496v-1.008zm0 2.296h6.496v1.008h-6.496v-1.008z"/><path id="makeWorker" fill="#181717" d="M95.928 162.912v-4.662c0-.196-.007-.385-.021-.567a1.9 1.9 0 00-.098-.49.786.786 0 00-.224-.343.57.57 0 00-.385-.126c-.317 0-.586.13-.805.392-.22.261-.385.588-.497.98v4.816h-1.064v-7h.728l.21.854h.056c.093-.14.184-.273.273-.399.089-.126.191-.236.308-.329.117-.093.254-.166.413-.217.159-.051.36-.077.602-.077.14 0 .285.021.434.063.15.042.287.107.413.196.126.089.236.208.329.357.093.15.154.331.182.546.215-.364.455-.649.721-.854.266-.205.632-.308 1.099-.308.308 0 .558.051.749.154.191.103.34.25.448.441.107.191.182.42.224.686.042.266.063.562.063.889v4.998h-1.064v-4.76c0-.196-.01-.38-.028-.553a1.764 1.764 0 00-.105-.455.752.752 0 00-.21-.308.536.536 0 00-.357-.112c-.327 0-.602.13-.826.392-.224.261-.392.635-.504 1.12v4.676h-1.064zm6.244-6.454a4.447 4.447 0 011.358-.504 7.423 7.423 0 011.484-.154c.476 0 .866.075 1.169.224.303.15.541.343.714.581.173.238.29.509.35.812.06.303.091.609.091.917 0 .355-.01.733-.028 1.134-.019.401-.033.803-.042 1.204 0 .467.028.91.084 1.33h.938v.91h-1.862l-.126-1.05h-.07c-.056.084-.14.191-.252.322-.112.13-.259.259-.441.385a2.749 2.749 0 01-1.589.469c-.69 0-1.237-.177-1.638-.532-.401-.355-.602-.84-.602-1.456 0-.476.105-.873.315-1.19.21-.317.511-.56.903-.728.392-.168.866-.266 1.421-.294a9.544 9.544 0 011.869.112c.047-.43.054-.786.021-1.071-.033-.285-.107-.511-.224-.679a.938.938 0 00-.49-.357 2.482 2.482 0 00-.777-.105c-.42 0-.821.058-1.204.175-.383.117-.723.236-1.022.357l-.35-.812zm2.058 5.642c.261 0 .504-.042.728-.126a2.22 2.22 0 00.588-.322 2.133 2.133 0 00.672-.868v-.98a7.92 7.92 0 00-1.344-.126c-.41 0-.765.044-1.064.133-.299.089-.532.226-.7.413-.168.187-.252.43-.252.728 0 .308.105.576.315.805.21.229.562.343 1.057.343zm5.166-8.988h2.268v5.796h.77l2.758-2.996h1.316l-3.094 3.318 2.548 2.744h.91v.938h-1.442l-2.996-3.164h-.77v3.164h-1.078v-8.862h-1.19v-.938zm15.47 8.918c-.168.15-.366.29-.595.42a4.39 4.39 0 01-.749.336c-.27.093-.553.166-.847.217-.294.051-.59.077-.889.077-.56 0-1.055-.086-1.484-.259a2.858 2.858 0 01-1.078-.742 3.234 3.234 0 01-.658-1.155 4.767 4.767 0 01-.224-1.512c0-.588.082-1.11.245-1.568.163-.457.399-.84.707-1.148a3.08 3.08 0 011.12-.707 4.187 4.187 0 011.47-.245c.392 0 .78.051 1.162.154.383.103.721.296 1.015.581.294.285.52.677.679 1.176.159.5.215 1.146.168 1.939h-5.418c0 .84.226 1.468.679 1.883.453.415 1.057.623 1.813.623.252 0 .502-.03.749-.091.247-.06.483-.133.707-.217a3.72 3.72 0 00.595-.28c.173-.103.306-.196.399-.28l.434.798zm-2.954-5.362c-.308 0-.6.033-.875.098a1.995 1.995 0 00-.728.329c-.21.154-.383.355-.518.602s-.222.553-.259.917h4.354c-.047-.616-.245-1.094-.595-1.435-.35-.34-.81-.511-1.379-.511zm6.37 3.43l.07.91h.098l.196-.994 1.036-3.822h.924l.966 3.794.252 1.036h.07l.084-.952 1.036-6.958h1.036l-1.512 9.8h-1.162l-1.134-3.976-.14-.952h-.042l-.154.966-1.134 3.962h-1.176l-1.526-9.8h1.106l1.106 6.986zm6.776-.686c0-1.13.294-2.023.882-2.681.588-.658 1.428-.987 2.52-.987.588 0 1.094.096 1.519.287.425.191.777.45 1.057.777.28.327.488.714.623 1.162.135.448.203.929.203 1.442 0 .56-.075 1.066-.224 1.519-.15.453-.369.838-.658 1.155-.29.317-.646.562-1.071.735a3.82 3.82 0 01-1.449.259c-.579 0-1.083-.096-1.512-.287a2.967 2.967 0 01-1.064-.777 3.168 3.168 0 01-.623-1.162 4.963 4.963 0 01-.203-1.442zm1.162 0c0 .327.04.653.119.98.08.327.208.62.385.882.177.261.408.471.693.63.285.159.632.238 1.043.238.747 0 1.309-.231 1.687-.693.378-.462.567-1.141.567-2.037 0-.336-.04-.665-.119-.987a2.608 2.608 0 00-.392-.875 2.066 2.066 0 00-.7-.63c-.285-.159-.632-.238-1.043-.238-.747 0-1.307.229-1.68.686-.373.457-.56 1.139-.56 2.044zm7.364 3.5v-.938h1.89v-5.124h-1.89v-.938h2.618l.224.91h.07c.317-.29.672-.537 1.064-.742.392-.205.859-.308 1.4-.308.317 0 .572.06.763.182.191.121.34.299.448.532.107.233.18.516.217.847.037.331.056.707.056 1.127l-.98.014c0-.597-.058-1.036-.175-1.316-.117-.28-.329-.42-.637-.42-.29 0-.55.042-.784.126a2.565 2.565 0 00-.609.308c-.173.121-.32.243-.441.364s-.21.224-.266.308v4.13h2.688v.938h-5.656zm7.812-9.8h2.268v5.796h.77l2.758-2.996h1.316l-3.094 3.318 2.548 2.744h.91v.938h-1.442l-2.996-3.164h-.77v3.164h-1.078v-8.862h-1.19v-.938zm15.47 8.918c-.168.15-.366.29-.595.42a4.39 4.39 0 01-.749.336c-.27.093-.553.166-.847.217-.294.051-.59.077-.889.077-.56 0-1.055-.086-1.484-.259a2.858 2.858 0 01-1.078-.742 3.234 3.234 0 01-.658-1.155 4.767 4.767 0 01-.224-1.512c0-.588.082-1.11.245-1.568.163-.457.399-.84.707-1.148a3.08 3.08 0 011.12-.707 4.187 4.187 0 011.47-.245c.392 0 .78.051 1.162.154.383.103.721.296 1.015.581.294.285.52.677.679 1.176.159.5.215 1.146.168 1.939h-5.418c0 .84.226 1.468.679 1.883.453.415 1.057.623 1.813.623.252 0 .502-.03.749-.091.247-.06.483-.133.707-.217a3.72 3.72 0 00.595-.28c.173-.103.306-.196.399-.28l.434.798zm-2.954-5.362c-.308 0-.6.033-.875.098a1.995 1.995 0 00-.728.329c-.21.154-.383.355-.518.602s-.222.553-.259.917h4.354c-.047-.616-.245-1.094-.595-1.435-.35-.34-.81-.511-1.379-.511zm4.872 6.244v-.938h1.89v-5.124h-1.89v-.938h2.618l.224.91h.07c.317-.29.672-.537 1.064-.742.392-.205.859-.308 1.4-.308.317 0 .572.06.763.182.191.121.34.299.448.532.107.233.18.516.217.847.037.331.056.707.056 1.127l-.98.014c0-.597-.058-1.036-.175-1.316-.117-.28-.329-.42-.637-.42-.29 0-.55.042-.784.126a2.565 2.565 0 00-.609.308c-.173.121-.32.243-.441.364s-.21.224-.266.308v4.13h2.688v.938h-5.656z"/><path id="();" fill="#7E7C7B" d="M182.308 165.88a6.964 6.964 0 01-1.757-.707 5.036 5.036 0 01-1.428-1.225c-.406-.504-.728-1.12-.966-1.848s-.357-1.591-.357-2.59c0-.99.121-1.855.364-2.597s.57-1.372.98-1.89c.41-.518.889-.933 1.435-1.246a6.005 6.005 0 011.729-.665l.35.882a7.086 7.086 0 00-1.512.623 3.928 3.928 0 00-1.183 1.022c-.331.425-.588.952-.77 1.582-.182.63-.273 1.393-.273 2.289 0 .905.11 1.678.329 2.317.22.64.509 1.171.868 1.596.36.425.76.756 1.204.994.443.238.889.404 1.337.497l-.35.966zm4.354-.966a4.965 4.965 0 001.337-.497 4.15 4.15 0 001.204-.994c.36-.425.649-.957.868-1.596.22-.64.329-1.412.329-2.317 0-.896-.091-1.659-.273-2.289-.182-.63-.439-1.157-.77-1.582a3.928 3.928 0 00-1.183-1.022 7.086 7.086 0 00-1.512-.623l.35-.882c.607.13 1.183.352 1.729.665a4.984 4.984 0 011.435 1.246c.41.518.737 1.148.98 1.89s.364 1.608.364 2.597c0 .999-.119 1.862-.357 2.59-.238.728-.56 1.344-.966 1.848a5.036 5.036 0 01-1.428 1.225 6.964 6.964 0 01-1.757.707l-.35-.966zm9.604-2.772c0-.28.091-.506.273-.679.182-.173.418-.259.707-.259.355 0 .63.124.826.371.196.247.294.595.294 1.043a2.36 2.36 0 01-.637 1.659 2.465 2.465 0 01-.588.462c-.21.117-.404.203-.581.259l-.35-.546c.336-.13.625-.317.868-.56.243-.243.364-.537.364-.882-.13.028-.233.042-.308.042-.27 0-.483-.077-.637-.231-.154-.154-.231-.38-.231-.679zm.126-5.502c0-.299.084-.53.252-.693.168-.163.392-.245.672-.245.299 0 .532.082.7.245.168.163.252.394.252.693 0 .27-.084.495-.252.672-.168.177-.401.266-.7.266-.28 0-.504-.089-.672-.266a.938.938 0 01-.252-.672z"/><path id="work();" fill="#C06334" d="M4.606 191.452l1.4 3.892h.098l.994-5.432H8.12l-1.372 7H5.502l-1.344-3.864h-.042l-1.4 3.864H1.47l-1.47-7h1.078l1.134 5.46h.084l1.358-3.92h.952zm4.452 1.96c0-1.13.294-2.023.882-2.681.588-.658 1.428-.987 2.52-.987.588 0 1.094.096 1.519.287.425.191.777.45 1.057.777.28.327.488.714.623 1.162.135.448.203.929.203 1.442 0 .56-.075 1.066-.224 1.519-.15.453-.369.838-.658 1.155-.29.317-.646.562-1.071.735a3.82 3.82 0 01-1.449.259c-.579 0-1.083-.096-1.512-.287a2.967 2.967 0 01-1.064-.777 3.168 3.168 0 01-.623-1.162 4.963 4.963 0 01-.203-1.442zm1.162 0c0 .327.04.653.119.98.08.327.208.62.385.882.177.261.408.471.693.63.285.159.632.238 1.043.238.747 0 1.309-.231 1.687-.693.378-.462.567-1.141.567-2.037 0-.336-.04-.665-.119-.987a2.608 2.608 0 00-.392-.875 2.066 2.066 0 00-.7-.63c-.285-.159-.632-.238-1.043-.238-.747 0-1.307.229-1.68.686-.373.457-.56 1.139-.56 2.044zm7.364 3.5v-.938h1.89v-5.124h-1.89v-.938h2.618l.224.91h.07c.317-.29.672-.537 1.064-.742.392-.205.859-.308 1.4-.308.317 0 .572.06.763.182.191.121.34.299.448.532.107.233.18.516.217.847.037.331.056.707.056 1.127l-.98.014c0-.597-.058-1.036-.175-1.316-.117-.28-.329-.42-.637-.42-.29 0-.55.042-.784.126a2.565 2.565 0 00-.609.308c-.173.121-.32.243-.441.364s-.21.224-.266.308v4.13h2.688v.938h-5.656zm7.812-9.8h2.268v5.796h.77l2.758-2.996h1.316l-3.094 3.318 2.548 2.744h.91v.938H31.43l-2.996-3.164h-.77v3.164h-1.078v-8.862h-1.19v-.938zm14.112 12.768a6.964 6.964 0 01-1.757-.707 5.036 5.036 0 01-1.428-1.225c-.406-.504-.728-1.12-.966-1.848S35 194.509 35 193.51c0-.99.121-1.855.364-2.597s.57-1.372.98-1.89c.41-.518.889-.933 1.435-1.246a6.005 6.005 0 011.729-.665l.35.882a7.086 7.086 0 00-1.512.623 3.928 3.928 0 00-1.183 1.022c-.331.425-.588.952-.77 1.582-.182.63-.273 1.393-.273 2.289 0 .905.11 1.678.329 2.317.22.64.509 1.171.868 1.596.36.425.76.756 1.204.994.443.238.889.404 1.337.497l-.35.966zm4.354-.966a4.965 4.965 0 001.337-.497 4.15 4.15 0 001.204-.994c.36-.425.649-.957.868-1.596.22-.64.329-1.412.329-2.317 0-.896-.091-1.659-.273-2.289-.182-.63-.439-1.157-.77-1.582a3.928 3.928 0 00-1.183-1.022 7.086 7.086 0 00-1.512-.623l.35-.882c.607.13 1.183.352 1.729.665a4.984 4.984 0 011.435 1.246c.41.518.737 1.148.98 1.89s.364 1.608.364 2.597c0 .999-.119 1.862-.357 2.59-.238.728-.56 1.344-.966 1.848a5.036 5.036 0 01-1.428 1.225 6.964 6.964 0 01-1.757.707l-.35-.966zm9.604-2.772c0-.28.091-.506.273-.679.182-.173.418-.259.707-.259.355 0 .63.124.826.371.196.247.294.595.294 1.043a2.36 2.36 0 01-.637 1.659 2.465 2.465 0 01-.588.462c-.21.117-.404.203-.581.259l-.35-.546c.336-.13.625-.317.868-.56.243-.243.364-.537.364-.882-.13.028-.233.042-.308.042-.27 0-.483-.077-.637-.231-.154-.154-.231-.38-.231-.679zm.126-5.502c0-.299.084-.53.252-.693.168-.163.392-.245.672-.245.299 0 .532.082.7.245.168.163.252.394.252.693 0 .27-.084.495-.252.672-.168.177-.401.266-.7.266-.28 0-.504-.089-.672-.266a.938.938 0 01-.252-.672z"/><path id="//Pete" fill="#767D89" d="M73.374 186.944l.882.392-5.11 11.536-.882-.392 5.11-11.536zm8.4 0l.882.392-5.11 11.536-.882-.392 5.11-11.536zm11.886.266a7.07 7.07 0 011.148-.168c.41-.028.817-.042 1.218-.042.43 0 .866.042 1.309.126a3.55 3.55 0 011.211.462 2.6 2.6 0 01.889.924c.229.392.343.891.343 1.498 0 .597-.107 1.101-.322 1.512-.215.41-.5.744-.854 1.001-.355.257-.76.441-1.218.553a5.923 5.923 0 01-1.414.168h-.231a8.417 8.417 0 01-.679-.028 2.406 2.406 0 01-.238-.028v3.724H93.66v-9.702zm2.394.798c-.243 0-.476.005-.7.014-.224.01-.401.033-.532.07v4.06c.047.019.121.03.224.035l.322.014c.112.005.22.007.322.007h.224c.317 0 .632-.03.945-.091.313-.06.595-.17.847-.329s.455-.383.609-.672c.154-.29.231-.658.231-1.106 0-.383-.072-.702-.217-.959a1.735 1.735 0 00-.574-.616 2.419 2.419 0 00-.805-.329 4.182 4.182 0 00-.896-.098zm12.012 8.022c-.168.15-.366.29-.595.42a4.39 4.39 0 01-.749.336c-.27.093-.553.166-.847.217-.294.051-.59.077-.889.077-.56 0-1.055-.086-1.484-.259a2.858 2.858 0 01-1.078-.742 3.234 3.234 0 01-.658-1.155 4.767 4.767 0 01-.224-1.512c0-.588.082-1.11.245-1.568.163-.457.399-.84.707-1.148a3.08 3.08 0 011.12-.707 4.187 4.187 0 011.47-.245c.392 0 .78.051 1.162.154.383.103.721.296 1.015.581.294.285.52.677.679 1.176.159.5.215 1.146.168 1.939h-5.418c0 .84.226 1.468.679 1.883.453.415 1.057.623 1.813.623.252 0 .502-.03.749-.091.247-.06.483-.133.707-.217a3.72 3.72 0 00.595-.28c.173-.103.306-.196.399-.28l.434.798zm-2.954-5.362c-.308 0-.6.033-.875.098a1.995 1.995 0 00-.728.329c-.21.154-.383.355-.518.602s-.222.553-.259.917h4.354c-.047-.616-.245-1.094-.595-1.435-.35-.34-.81-.511-1.379-.511zm4.382-.756h1.666v-1.386l1.092-.308v1.694h3.738v.938h-3.738v3.304c0 .681.166 1.185.497 1.512.331.327.805.49 1.421.49.42 0 .786-.08 1.099-.238.313-.159.595-.331.847-.518l.364.826a3.938 3.938 0 01-1.169.63 4.182 4.182 0 01-1.393.238 3.41 3.41 0 01-1.057-.161 2.426 2.426 0 01-.875-.497 2.38 2.38 0 01-.602-.861c-.15-.35-.224-.768-.224-1.253v-3.472h-1.666v-.938zm15.372 6.118c-.168.15-.366.29-.595.42a4.39 4.39 0 01-.749.336c-.27.093-.553.166-.847.217-.294.051-.59.077-.889.077-.56 0-1.055-.086-1.484-.259a2.858 2.858 0 01-1.078-.742 3.234 3.234 0 01-.658-1.155 4.767 4.767 0 01-.224-1.512c0-.588.082-1.11.245-1.568.163-.457.399-.84.707-1.148a3.08 3.08 0 011.12-.707 4.187 4.187 0 011.47-.245c.392 0 .78.051 1.162.154.383.103.721.296 1.015.581.294.285.52.677.679 1.176.159.5.215 1.146.168 1.939h-5.418c0 .84.226 1.468.679 1.883.453.415 1.057.623 1.813.623.252 0 .502-.03.749-.091.247-.06.483-.133.707-.217a3.72 3.72 0 00.595-.28c.173-.103.306-.196.399-.28l.434.798zm-2.954-5.362c-.308 0-.6.033-.875.098a1.995 1.995 0 00-.728.329c-.21.154-.383.355-.518.602s-.222.553-.259.917h4.354c-.047-.616-.245-1.094-.595-1.435-.35-.34-.81-.511-1.379-.511z"/></g><path id="Rectangle-1-Copy-3" fill="#C06334" d="M0 95V82l9 6.5"/><g id="Group-3" transform="translate(494 64)"><path id="Rectangle-1" fill="#FBF2EC" stroke="#DBAF88" stroke-width="2" d="M1 1h183v47H1z"/><text id="makeWorker:-function" fill="#AF6E24" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="10" y="19">makeWorker: function</tspan> <tspan x="10" y="34">name: "John"</tspan></text></g><g id="Group-5" stroke="#C06334" stroke-linecap="square" transform="translate(302 30)"><path id="Line" d="M.274 1h16.452"/><path id="Line-Copy" d="M.274 101h16.452"/><path id="Line-Copy-2" d="M18.5 1.133v99.734"/></g><g id="Group-5-Copy" stroke="#C06334" stroke-linecap="square" transform="translate(482 10)"><path id="Line-Copy-2" d="M2.333 2.333v205.334"/></g><g id="Group-5-Copy-2" stroke="#C06334" stroke-linecap="square" transform="translate(186 69)"><path id="Line" d="M.355.422h8.394"/><path id="Line-Copy" d="M.355 37.578h8.394"/><path id="Line-Copy-2" d="M9.167.422v37.156"/></g><g id="Group-2-Copy" transform="translate(201 72)"><path id="Rectangle-1-Copy" fill="#FBF2EC" stroke="#DBAF88" stroke-width="2" d="M1 1h68v27H1z"/><text id="<empty>" fill="#AF6E24" font-family="PTMono-Regular, PT Mono" font-size="12" font-weight="normal"><tspan x="10" y="18"><empty></tspan></text></g><g id="Group" transform="translate(684 66)"><path id="Line" fill="#C06334" fill-rule="nonzero" d="M16.5 15.5l14 7-14 7v-6h-14v-2h14v-6z"/><text id="outer" fill="#AF6E24" font-family="PTMono-Regular, PT Mono" font-size="12" font-weight="normal"><tspan x="0" y="11">outer</tspan></text></g><g id="Group-Copy" transform="translate(440 66)"><path id="Line" fill="#C06334" fill-rule="nonzero" d="M16.5 15.5l14 7-14 7v-6h-14v-2h14v-6z"/><text id="outer" fill="#AF6E24" font-family="PTMono-Regular, PT Mono" font-size="12" font-weight="normal"><tspan x="0" y="11">outer</tspan></text></g><g id="Group-Copy-2" transform="translate(279 65)"><path id="Line" fill="#C06334" fill-rule="nonzero" d="M16.5 15.5l14 7-14 7v-6h-14v-2h14v-6z"/><text id="outer" fill="#AF6E24" font-family="PTMono-Regular, PT Mono" font-size="12" font-weight="normal"><tspan x="0" y="11">outer</tspan></text></g><text id="null" fill="#AF6E24" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="723" y="91">null</tspan></text><g id="Group-3" transform="translate(326 71)"><path id="Rectangle-1" fill="#FBF2EC" stroke="#DBAF88" stroke-width="2" d="M1 1h109v28H1z"/><text id="name:-"Pete"" fill="#AF6E24" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="5" y="18.51">name: "Pete"</tspan></text></g></g></g></svg> \ No newline at end of file diff --git a/1-js/06-advanced-functions/03-closure/2-closure-variable-access/solution.md b/1-js/06-advanced-functions/03-closure/2-closure-variable-access/solution.md new file mode 100644 index 000000000..0a522132f --- /dev/null +++ b/1-js/06-advanced-functions/03-closure/2-closure-variable-access/solution.md @@ -0,0 +1,9 @@ +The answer is: **Pete**. + +The `work()` function in the code below gets `name` from the place of its origin through the outer lexical environment reference: + + + +So, the result is `"Pete"` here. + +But if there were no `let name` in `makeWorker()`, then the search would go outside and take the global variable as we can see from the chain above. In that case the result would be `"John"`. diff --git a/1-js/06-advanced-functions/03-closure/2-closure-variable-access/task.md b/1-js/06-advanced-functions/03-closure/2-closure-variable-access/task.md new file mode 100644 index 000000000..d12a385c8 --- /dev/null +++ b/1-js/06-advanced-functions/03-closure/2-closure-variable-access/task.md @@ -0,0 +1,29 @@ +importance: 5 + +--- + +# Which variables are available? + +The function `makeWorker` below makes another function and returns it. That new function can be called from somewhere else. + +Will it have access to the outer variables from its creation place, or the invocation place, or both? + +```js +function makeWorker() { + let name = "Pete"; + + return function() { + alert(name); + }; +} + +let name = "John"; + +// create a function +let work = makeWorker(); + +// call it +work(); // what will it show? +``` + +Which value it will show? "Pete" or "John"? diff --git a/1-js/06-advanced-functions/03-closure/1-counter-independent/solution.md b/1-js/06-advanced-functions/03-closure/3-counter-independent/solution.md similarity index 100% rename from 1-js/06-advanced-functions/03-closure/1-counter-independent/solution.md rename to 1-js/06-advanced-functions/03-closure/3-counter-independent/solution.md diff --git a/1-js/06-advanced-functions/03-closure/1-counter-independent/task.md b/1-js/06-advanced-functions/03-closure/3-counter-independent/task.md similarity index 100% rename from 1-js/06-advanced-functions/03-closure/1-counter-independent/task.md rename to 1-js/06-advanced-functions/03-closure/3-counter-independent/task.md diff --git a/1-js/06-advanced-functions/03-closure/2-counter-object-independent/solution.md b/1-js/06-advanced-functions/03-closure/4-counter-object-independent/solution.md similarity index 100% rename from 1-js/06-advanced-functions/03-closure/2-counter-object-independent/solution.md rename to 1-js/06-advanced-functions/03-closure/4-counter-object-independent/solution.md diff --git a/1-js/06-advanced-functions/03-closure/2-counter-object-independent/task.md b/1-js/06-advanced-functions/03-closure/4-counter-object-independent/task.md similarity index 100% rename from 1-js/06-advanced-functions/03-closure/2-counter-object-independent/task.md rename to 1-js/06-advanced-functions/03-closure/4-counter-object-independent/task.md diff --git a/1-js/06-advanced-functions/03-closure/3-function-in-if/solution.md b/1-js/06-advanced-functions/03-closure/5-function-in-if/solution.md similarity index 100% rename from 1-js/06-advanced-functions/03-closure/3-function-in-if/solution.md rename to 1-js/06-advanced-functions/03-closure/5-function-in-if/solution.md diff --git a/1-js/06-advanced-functions/03-closure/3-function-in-if/task.md b/1-js/06-advanced-functions/03-closure/5-function-in-if/task.md similarity index 65% rename from 1-js/06-advanced-functions/03-closure/3-function-in-if/task.md rename to 1-js/06-advanced-functions/03-closure/5-function-in-if/task.md index d0dbbeb11..4e386eec5 100644 --- a/1-js/06-advanced-functions/03-closure/3-function-in-if/task.md +++ b/1-js/06-advanced-functions/03-closure/5-function-in-if/task.md @@ -1,7 +1,9 @@ +importance: 5 +--- # Function in if -Look at the code. What will be result of the call at the last line? +Look at the code. What will be the result of the call at the last line? ```js run let phrase = "Hello"; diff --git a/1-js/06-advanced-functions/03-closure/4-closure-sum/solution.md b/1-js/06-advanced-functions/03-closure/6-closure-sum/solution.md similarity index 100% rename from 1-js/06-advanced-functions/03-closure/4-closure-sum/solution.md rename to 1-js/06-advanced-functions/03-closure/6-closure-sum/solution.md diff --git a/1-js/06-advanced-functions/03-closure/4-closure-sum/task.md b/1-js/06-advanced-functions/03-closure/6-closure-sum/task.md similarity index 100% rename from 1-js/06-advanced-functions/03-closure/4-closure-sum/task.md rename to 1-js/06-advanced-functions/03-closure/6-closure-sum/task.md diff --git a/1-js/06-advanced-functions/03-closure/7-let-scope/solution.md b/1-js/06-advanced-functions/03-closure/7-let-scope/solution.md new file mode 100644 index 000000000..b16b35290 --- /dev/null +++ b/1-js/06-advanced-functions/03-closure/7-let-scope/solution.md @@ -0,0 +1,40 @@ +The result is: **error**. + +Try running it: + +```js run +let x = 1; + +function func() { +*!* + console.log(x); // ReferenceError: Cannot access 'x' before initialization +*/!* + let x = 2; +} + +func(); +``` + +In this example we can observe the peculiar difference between a "non-existing" and "uninitialized" variable. + +As you may have read in the article [](info:closure), a variable starts in the "uninitialized" state from the moment when the execution enters a code block (or a function). And it stays uninitalized until the corresponding `let` statement. + +In other words, a variable technically exists, but can't be used before `let`. + +The code above demonstrates it. + +```js +function func() { +*!* + // the local variable x is known to the engine from the beginning of the function, + // but "uninitialized" (unusable) until let ("dead zone") + // hence the error +*/!* + + console.log(x); // ReferenceError: Cannot access 'x' before initialization + + let x = 2; +} +``` + +This zone of temporary unusability of a variable (from the beginning of the code block till `let`) is sometimes called the "dead zone". diff --git a/1-js/06-advanced-functions/03-closure/7-let-scope/task.md b/1-js/06-advanced-functions/03-closure/7-let-scope/task.md new file mode 100644 index 000000000..fb7445e66 --- /dev/null +++ b/1-js/06-advanced-functions/03-closure/7-let-scope/task.md @@ -0,0 +1,21 @@ +importance: 4 + +--- + +# Is variable visible? + +What will be the result of this code? + +```js +let x = 1; + +function func() { + console.log(x); // ? + + let x = 2; +} + +func(); +``` + +P.S. There's a pitfall in this task. The solution is not obvious. diff --git a/1-js/06-advanced-functions/03-closure/7-sort-by-field/solution.md b/1-js/06-advanced-functions/03-closure/7-sort-by-field/solution.md deleted file mode 100644 index bd57085ea..000000000 --- a/1-js/06-advanced-functions/03-closure/7-sort-by-field/solution.md +++ /dev/null @@ -1,22 +0,0 @@ - - -```js run -let users = [ - { name: "John", age: 20, surname: "Johnson" }, - { name: "Pete", age: 18, surname: "Peterson" }, - { name: "Ann", age: 19, surname: "Hathaway" } -]; - -*!* -function byField(field) { - return (a, b) => a[field] > b[field] ? 1 : -1; -} -*/!* - -users.sort(byField('name')); -users.forEach(user => alert(user.name)); // Ann, John, Pete - -users.sort(byField('age')); -users.forEach(user => alert(user.name)); // Pete, Ann, John -``` - diff --git a/1-js/06-advanced-functions/03-closure/6-filter-through-function/_js.view/solution.js b/1-js/06-advanced-functions/03-closure/8-filter-through-function/_js.view/solution.js similarity index 100% rename from 1-js/06-advanced-functions/03-closure/6-filter-through-function/_js.view/solution.js rename to 1-js/06-advanced-functions/03-closure/8-filter-through-function/_js.view/solution.js diff --git a/1-js/06-advanced-functions/03-closure/6-filter-through-function/_js.view/source.js b/1-js/06-advanced-functions/03-closure/8-filter-through-function/_js.view/source.js similarity index 100% rename from 1-js/06-advanced-functions/03-closure/6-filter-through-function/_js.view/source.js rename to 1-js/06-advanced-functions/03-closure/8-filter-through-function/_js.view/source.js diff --git a/1-js/06-advanced-functions/03-closure/6-filter-through-function/_js.view/test.js b/1-js/06-advanced-functions/03-closure/8-filter-through-function/_js.view/test.js similarity index 100% rename from 1-js/06-advanced-functions/03-closure/6-filter-through-function/_js.view/test.js rename to 1-js/06-advanced-functions/03-closure/8-filter-through-function/_js.view/test.js diff --git a/1-js/06-advanced-functions/03-closure/6-filter-through-function/solution.md b/1-js/06-advanced-functions/03-closure/8-filter-through-function/solution.md similarity index 100% rename from 1-js/06-advanced-functions/03-closure/6-filter-through-function/solution.md rename to 1-js/06-advanced-functions/03-closure/8-filter-through-function/solution.md diff --git a/1-js/06-advanced-functions/03-closure/6-filter-through-function/task.md b/1-js/06-advanced-functions/03-closure/8-filter-through-function/task.md similarity index 100% rename from 1-js/06-advanced-functions/03-closure/6-filter-through-function/task.md rename to 1-js/06-advanced-functions/03-closure/8-filter-through-function/task.md diff --git a/1-js/06-advanced-functions/03-closure/8-make-army/task.md b/1-js/06-advanced-functions/03-closure/8-make-army/task.md deleted file mode 100644 index ede8fd045..000000000 --- a/1-js/06-advanced-functions/03-closure/8-make-army/task.md +++ /dev/null @@ -1,35 +0,0 @@ -importance: 5 - ---- - -# Army of functions - -The following code creates an array of `shooters`. - -Every function is meant to output its number. But something is wrong... - -```js run -function makeArmy() { - let shooters = []; - - let i = 0; - while (i < 10) { - let shooter = function() { // shooter function - alert( i ); // should show its number - }; - shooters.push(shooter); - i++; - } - - return shooters; -} - -let army = makeArmy(); - -army[0](); // the shooter number 0 shows 10 -army[5](); // and number 5 also outputs 10... -// ... all shooters show 10 instead of their 0, 1, 2, 3... -``` - -Why all shooters show the same? Fix the code so that they work as intended. - diff --git a/1-js/06-advanced-functions/03-closure/9-sort-by-field/_js.view/solution.js b/1-js/06-advanced-functions/03-closure/9-sort-by-field/_js.view/solution.js new file mode 100644 index 000000000..8a71c869d --- /dev/null +++ b/1-js/06-advanced-functions/03-closure/9-sort-by-field/_js.view/solution.js @@ -0,0 +1,3 @@ +function byField(fieldName){ + return (a, b) => a[fieldName] > b[fieldName] ? 1 : -1; +} diff --git a/1-js/06-advanced-functions/03-closure/9-sort-by-field/_js.view/source.js b/1-js/06-advanced-functions/03-closure/9-sort-by-field/_js.view/source.js new file mode 100644 index 000000000..23b433834 --- /dev/null +++ b/1-js/06-advanced-functions/03-closure/9-sort-by-field/_js.view/source.js @@ -0,0 +1,5 @@ +function byField(fieldName){ + + // Your code goes here. + +} diff --git a/1-js/06-advanced-functions/03-closure/9-sort-by-field/_js.view/test.js b/1-js/06-advanced-functions/03-closure/9-sort-by-field/_js.view/test.js new file mode 100644 index 000000000..802f28c4d --- /dev/null +++ b/1-js/06-advanced-functions/03-closure/9-sort-by-field/_js.view/test.js @@ -0,0 +1,39 @@ +describe("byField", function(){ + + let users = [ + { name: "John", age: 20, surname: "Johnson" }, + { name: "Pete", age: 18, surname: "Peterson" }, + { name: "Ann", age: 19, surname: "Hathaway" }, + ]; + + it("sorts users by name", function(){ + let nameSortedKey = [ + { name: "Ann", age: 19, surname: "Hathaway" }, + { name: "John", age: 20, surname: "Johnson"}, + { name: "Pete", age: 18, surname: "Peterson" }, + ]; + let nameSortedAnswer = users.sort(byField("name")); + assert.deepEqual(nameSortedKey, nameSortedAnswer); + }); + + it("sorts users by age", function(){ + let ageSortedKey = [ + { name: "Pete", age: 18, surname: "Peterson" }, + { name: "Ann", age: 19, surname: "Hathaway" }, + { name: "John", age: 20, surname: "Johnson"}, + ]; + let ageSortedAnswer = users.sort(byField("age")); + assert.deepEqual(ageSortedKey, ageSortedAnswer); + }); + + it("sorts users by surname", function(){ + let surnameSortedKey = [ + { name: "Ann", age: 19, surname: "Hathaway" }, + { name: "John", age: 20, surname: "Johnson"}, + { name: "Pete", age: 18, surname: "Peterson" }, + ]; + let surnameSortedAnswer = users.sort(byField("surname")); + assert.deepEqual(surnameSortedAnswer, surnameSortedKey); + }); + +}); diff --git a/1-js/06-advanced-functions/03-closure/9-sort-by-field/solution.md b/1-js/06-advanced-functions/03-closure/9-sort-by-field/solution.md new file mode 100644 index 000000000..8b1378917 --- /dev/null +++ b/1-js/06-advanced-functions/03-closure/9-sort-by-field/solution.md @@ -0,0 +1 @@ + diff --git a/1-js/06-advanced-functions/03-closure/7-sort-by-field/task.md b/1-js/06-advanced-functions/03-closure/9-sort-by-field/task.md similarity index 100% rename from 1-js/06-advanced-functions/03-closure/7-sort-by-field/task.md rename to 1-js/06-advanced-functions/03-closure/9-sort-by-field/task.md diff --git a/1-js/06-advanced-functions/03-closure/article.md b/1-js/06-advanced-functions/03-closure/article.md index e771b1cc4..ff6ca062d 100644 --- a/1-js/06-advanced-functions/03-closure/article.md +++ b/1-js/06-advanced-functions/03-closure/article.md @@ -1,25 +1,29 @@ -# Closure +# Variable scope, closure -JavaScript is a very function-oriented language. It gives us a lot of freedom. A function can be created at one moment, then copied to another variable or passed as an argument to another function and called from a totally different place later. +JavaScript is a very function-oriented language. It gives us a lot of freedom. A function can be created at any moment, passed as an argument to another function, and then called from a totally different place of code later. -We know that a function can access variables outside of it; this feature is used quite often. +We already know that a function can access variables outside of it ("outer" variables). -But what happens when an outer variable changes? Does a function get the most recent value or the one that existed when the function was created? +But what happens if outer variables change since a function is created? Will the function get newer values or the old ones? -Also, what happens when a function travels to another place in the code and is called from there -- does it get access to the outer variables of the new place? +And what if a function is passed along as an argument and called from another place of code, will it get access to outer variables at the new place? -Different languages behave differently here, and in this chapter we cover the behaviour of JavaScript. +Let's expand our knowledge to understand these scenarios and more complex ones. -## A couple of questions +```smart header="We'll talk about `let/const` variables here" +In JavaScript, there are 3 ways to declare a variable: `let`, `const` (the modern ones), and `var` (the remnant of the past). -Let's consider two situations to begin with, and then study the internal mechanics piece-by-piece, so that you'll be able to answer the following questions and more complex ones in the future. +- In this article we'll use `let` variables in examples. +- Variables, declared with `const`, behave the same, so this article is about `const` too. +- The old `var` has some notable differences, they will be covered in the article <info:var>. +``` -1. The function `sayHi` uses an external variable `name`. When the function runs, which value is it going to use? +## Code blocks - ```js - let name = "John"; +If a variable is declared inside a code block `{...}`, it's only visible inside that block. +<<<<<<< HEAD function sayHi() { alert("Hi, " + name); } @@ -165,39 +169,82 @@ Now we can give the answer to the first question from the beginning of the chapt That's because of the described mechanism. Old variable values are not saved anywhere. When a function wants them, it takes the current values from its own or an outer Lexical Environment. So the answer to the first question is `Pete`: +======= +For example: +>>>>>>> 540d753e90789205fc6e75c502f68382c87dea9b ```js run -let name = "John"; +{ + // do some job with local variables that should not be seen outside + + let message = "Hello"; // only visible in this block -function sayHi() { - alert("Hi, " + name); + alert(message); // Hello } -name = "Pete"; // (*) +alert(message); // Error: message is not defined +``` + +We can use this to isolate a piece of code that does its own task, with variables that only belong to it: + +```js run +{ + // show message + let message = "Hello"; + alert(message); +} +{ + // show another message + let message = "Goodbye"; + alert(message); +} +``` + +````smart header="There'd be an error without blocks" +Please note, without separate blocks there would be an error, if we use `let` with the existing variable name: + +```js run +// show message +let message = "Hello"; +alert(message); + +// show another message *!* -sayHi(); // Pete +let message = "Goodbye"; // Error: variable already declared */!* +alert(message); ``` +```` +For `if`, `for`, `while` and so on, variables declared in `{...}` are also only visible inside: -The execution flow of the code above: +```js run +if (true) { + let phrase = "Hello!"; -1. The global Lexical Environment has `name: "John"`. -2. At the line `(*)` the global variable is changed, now it has `name: "Pete"`. -3. When the function `sayHi()`, is executed and takes `name` from outside. Here that's from the global Lexical Environment where it's already `"Pete"`. + alert(phrase); // Hello! +} +alert(phrase); // Error, no such variable! +``` -```smart header="One call -- one Lexical Environment" -Please note that a new function Lexical Environment is created each time a function runs. +Here, after `if` finishes, the `alert` below won't see the `phrase`, hence the error. -And if a function is called multiple times, then each invocation will have its own Lexical Environment, with local variables and parameters specific for that very run. -``` +That's great, as it allows us to create block-local variables, specific to an `if` branch. -```smart header="Lexical Environment is a specification object" -"Lexical Environment" is a specification object. We can't get this object in our code and manipulate it directly. JavaScript engines also may optimize it, discard variables that are unused to save memory and perform other internal tricks, but the visible behavior should be as described. +The similar thing holds true for `for` and `while` loops: + +```js run +for (let i = 0; i < 3; i++) { + // the variable i is only visible inside this for + alert(i); // 0, then 1, then 2 +} + +alert(i); // Error, no such variable ``` +Visually, `let i` is outside of `{...}`. But the `for` construct is special here: the variable, declared inside it, is considered a part of the block. ## Nested functions @@ -223,32 +270,16 @@ function sayHiBye(firstName, lastName) { Here the *nested* function `getFullName()` is made for convenience. It can access the outer variables and so can return the full name. Nested functions are quite common in JavaScript. -What's much more interesting, a nested function can be returned: either as a property of a new object (if the outer function creates an object with methods) or as a result by itself. It can then be used somewhere else. No matter where, it still has access to the same outer variables. +What's much more interesting, a nested function can be returned: either as a property of a new object or as a result by itself. It can then be used somewhere else. No matter where, it still has access to the same outer variables. -For instance, here the nested function is assigned to the new object by the [constructor function](info:constructor-new): - -```js run -// constructor function returns a new object -function User(name) { - - // the object method is created as a nested function - this.sayHi = function() { - alert(name); - }; -} - -let user = new User("John"); -user.sayHi(); // the method "sayHi" code has access to the outer "name" -``` - -And here we just create and return a "counting" function: +Below, `makeCounter` creates the "counter" function that returns the next number on each invocation: ```js run function makeCounter() { let count = 0; return function() { - return count++; // has access to the outer counter + return count++; }; } @@ -259,80 +290,171 @@ alert( counter() ); // 1 alert( counter() ); // 2 ``` -Let's go on with the `makeCounter` example. It creates the "counter" function that returns the next number on each invocation. Despite being simple, slightly modified variants of that code have practical uses, for instance, as a [pseudorandom number generator](https://en.wikipedia.org/wiki/Pseudorandom_number_generator), and more. +Despite being simple, slightly modified variants of that code have practical uses, for instance, as a [random number generator](https://en.wikipedia.org/wiki/Pseudorandom_number_generator) to generate random values for automated tests. -How does the counter work internally? +How does this work? If we create multiple counters, will they be independent? What's going on with the variables here? -When the inner function runs, the variable in `count++` is searched from inside out. For the example above, the order will be: +Understanding such things is great for the overall knowledge of JavaScript and beneficial for more complex scenarios. So let's go a bit in-depth. +<<<<<<< HEAD  +======= +## Lexical Environment +>>>>>>> 540d753e90789205fc6e75c502f68382c87dea9b -1. The locals of the nested function... -2. The variables of the outer function... -3. And so on until it reaches global variables. +```warn header="Here be dragons!" +The in-depth technical explanation lies ahead. -In this example `count` is found on step `2`. When an outer variable is modified, it's changed where it's found. So `count++` finds the outer variable and increases it in the Lexical Environment where it belongs. Like if we had `let count = 1`. +As far as I'd like to avoid low-level language details, any understanding without them would be lacking and incomplete, so get ready. +``` -Here are two questions to consider: +For clarity, the explanation is split into multiple steps. -1. Can we somehow reset the counter `count` from the code that doesn't belong to `makeCounter`? E.g. after `alert` calls in the example above. -2. If we call `makeCounter()` multiple times -- it returns many `counter` functions. Are they independent or do they share the same `count`? +### Step 1. Variables -Try to answer them before you continue reading. +In JavaScript, every running function, code block `{...}`, and the script as a whole have an internal (hidden) associated object known as the *Lexical Environment*. -... +The Lexical Environment object consists of two parts: -All done? +1. *Environment Record* -- an object that stores all local variables as its properties (and some other information like the value of `this`). +2. A reference to the *outer lexical environment*, the one associated with the outer code. -Okay, let's go over the answers. +**A "variable" is just a property of the special internal object, `Environment Record`. "To get or change a variable" means "to get or change a property of that object".** -1. There is no way: `count` is a local function variable, we can't access it from the outside. -2. For every call to `makeCounter()` a new function Lexical Environment is created, with its own `count`. So the resulting `counter` functions are independent. +In this simple code without functions, there is only one Lexical Environment: -Here's the demo: + -```js run +This is the so-called *global* Lexical Environment, associated with the whole script. + +On the picture above, the rectangle means Environment Record (variable store) and the arrow means the outer reference. The global Lexical Environment has no outer reference, that's why the arrow points to `null`. + +As the code starts executing and goes on, the Lexical Environment changes. + +Here's a little bit longer code: + + + +Rectangles on the right-hand side demonstrate how the global Lexical Environment changes during the execution: + +1. When the script starts, the Lexical Environment is pre-populated with all declared variables. + - Initially, they are in the "Uninitialized" state. That's a special internal state, it means that the engine knows about the variable, but it cannot be referenced until it has been declared with `let`. It's almost the same as if the variable didn't exist. +2. Then `let phrase` definition appears. There's no assignment yet, so its value is `undefined`. We can use the variable from this point forward. +3. `phrase` is assigned a value. +4. `phrase` changes the value. + +Everything looks simple for now, right? + +- A variable is a property of a special internal object, associated with the currently executing block/function/script. +- Working with variables is actually working with the properties of that object. + +```smart header="Lexical Environment is a specification object" +"Lexical Environment" is a specification object: it only exists "theoretically" in the [language specification](https://tc39.es/ecma262/#sec-lexical-environments) to describe how things work. We can't get this object in our code and manipulate it directly. + +JavaScript engines also may optimize it, discard variables that are unused to save memory and perform other internal tricks, as long as the visible behavior remains as described. +``` + +### Step 2. Function Declarations + +A function is also a value, like a variable. + +**The difference is that a Function Declaration is instantly fully initialized.** + +When a Lexical Environment is created, a Function Declaration immediately becomes a ready-to-use function (unlike `let`, that is unusable till the declaration). + +That's why we can use a function, declared as Function Declaration, even before the declaration itself. + +For example, here's the initial state of the global Lexical Environment when we add a function: + + + +Naturally, this behavior only applies to Function Declarations, not Function Expressions where we assign a function to a variable, such as `let say = function(name)...`. + +### Step 3. Inner and outer Lexical Environment + +When a function runs, at the beginning of the call, a new Lexical Environment is created automatically to store local variables and parameters of the call. + +For instance, for `say("John")`, it looks like this (the execution is at the line, labelled with an arrow): + +<!-- + ```js + let phrase = "Hello"; + + function say(name) { + alert( `${phrase}, ${name}` ); + } + + say("John"); // Hello, John + ```--> + + + +During the function call we have two Lexical Environments: the inner one (for the function call) and the outer one (global): + +- The inner Lexical Environment corresponds to the current execution of `say`. It has a single property: `name`, the function argument. We called `say("John")`, so the value of the `name` is `"John"`. +- The outer Lexical Environment is the global Lexical Environment. It has the `phrase` variable and the function itself. + +The inner Lexical Environment has a reference to the `outer` one. + +**When the code wants to access a variable -- the inner Lexical Environment is searched first, then the outer one, then the more outer one and so on until the global one.** + +If a variable is not found anywhere, that's an error in strict mode (without `use strict`, an assignment to a non-existing variable creates a new global variable, for compatibility with old code). + +In this example the search proceeds as follows: + +- For the `name` variable, the `alert` inside `say` finds it immediately in the inner Lexical Environment. +- When it wants to access `phrase`, then there is no `phrase` locally, so it follows the reference to the outer Lexical Environment and finds it there. + + + + +### Step 4. Returning a function + +Let's return to the `makeCounter` example. + +```js function makeCounter() { let count = 0; + return function() { return count++; }; } -let counter1 = makeCounter(); -let counter2 = makeCounter(); - -alert( counter1() ); // 0 -alert( counter1() ); // 1 - -alert( counter2() ); // 0 (independent) +let counter = makeCounter(); ``` +At the beginning of each `makeCounter()` call, a new Lexical Environment object is created, to store variables for this `makeCounter` run. -Hopefully, the situation with outer variables is quite clear for you now. But in more complex situations a deeper understanding of internals may be required. So let's dive deeper. +So we have two nested Lexical Environments, just like in the example above: -## Environments in detail + -Now that you understand how closures work generally, that's already very good. +What's different is that, during the execution of `makeCounter()`, a tiny nested function is created of only one line: `return count++`. We don't run it yet, only create. -Here's what's going on in the `makeCounter` example step-by-step, follow it to make sure that you know things in the very detail. +All functions remember the Lexical Environment in which they were made. Technically, there's no magic here: all functions have the hidden property named `[[Environment]]`, that keeps the reference to the Lexical Environment where the function was created: -Please note the additional `[[Environment]]` property is covered here. We didn't mention it before for simplicity. + -1. When the script has just started, there is only global Lexical Environment: +So, `counter.[[Environment]]` has the reference to `{count: 0}` Lexical Environment. That's how the function remembers where it was created, no matter where it's called. The `[[Environment]]` reference is set once and forever at function creation time. +<<<<<<< HEAD  +======= +Later, when `counter()` is called, a new Lexical Environment is created for the call, and its outer Lexical Environment reference is taken from `counter.[[Environment]]`: +>>>>>>> 540d753e90789205fc6e75c502f68382c87dea9b - At that starting moment there is only `makeCounter` function, because it's a Function Declaration. It did not run yet. + - **All functions "on birth" receive a hidden property `[[Environment]]` with a reference to the Lexical Environment of their creation.** We didn't talk about it yet, but that's how the function knows where it was made. +Now when the code inside `counter()` looks for `count` variable, it first searches its own Lexical Environment (empty, as there are no local variables there), then the Lexical Environment of the outer `makeCounter()` call, where it finds and changes it. - Here, `makeCounter` is created in the global Lexical Environment, so `[[Environment]]` keeps a reference to it. +**A variable is updated in the Lexical Environment where it lives.** - In other words, a function is "imprinted" with a reference to the Lexical Environment where it was born. And `[[Environment]]` is the hidden function property that has that reference. +Here's the state after the execution: -2. The code runs on, the new global variable `counter` is declared and for its value `makeCounter()` is called. Here's a snapshot of the moment when the execution is on the first line inside `makeCounter()`: + +<<<<<<< HEAD  At the moment of the call of `makeCounter()`, the Lexical Environment is created, to hold its variables and arguments. @@ -390,15 +512,21 @@ So, the result is `"Pete"` here. But if there were no `let name` in `makeWorker()`, then the search would go outside and take the global variable as we can see from the chain above. In that case it would be `"John"`. ```smart header="Closures" +======= +If we call `counter()` multiple times, the `count` variable will be increased to `2`, `3` and so on, at the same place. + +```smart header="Closure" +>>>>>>> 540d753e90789205fc6e75c502f68382c87dea9b There is a general programming term "closure", that developers generally should know. -A [closure](https://en.wikipedia.org/wiki/Closure_(computer_programming)) is a function that remembers its outer variables and can access them. In some languages, that's not possible, or a function should be written in a special way to make it happen. But as explained above, in JavaScript, all functions are naturally closures (there is only one exclusion, to be covered in <info:new-function>). +A [closure](https://en.wikipedia.org/wiki/Closure_(computer_programming)) is a function that remembers its outer variables and can access them. In some languages, that's not possible, or a function should be written in a special way to make it happen. But as explained above, in JavaScript, all functions are naturally closures (there is only one exception, to be covered in <info:new-function>). -That is: they automatically remember where they were created using a hidden `[[Environment]]` property, and all of them can access outer variables. +That is: they automatically remember where they were created using a hidden `[[Environment]]` property, and then their code can access outer variables. -When on an interview, a frontend developer gets a question about "what's a closure?", a valid answer would be a definition of the closure and an explanation that all functions in JavaScript are closures, and maybe few more words about technical details: the `[[Environment]]` property and how Lexical Environments work. +When on an interview, a frontend developer gets a question about "what's a closure?", a valid answer would be a definition of the closure and an explanation that all functions in JavaScript are closures, and maybe a few more words about technical details: the `[[Environment]]` property and how Lexical Environments work. ``` +<<<<<<< HEAD ## Code blocks and loops, IIFE The examples above concentrated on functions. But a Lexical Environment exists for any code block `{...}`. @@ -541,38 +669,32 @@ There exist other ways besides parentheses to tell JavaScript that we mean a Fun In all the above cases we declare a Function Expression and run it immediately. +======= +>>>>>>> 540d753e90789205fc6e75c502f68382c87dea9b ## Garbage collection -Usually, a Lexical Environment is cleaned up and deleted after the function run. For instance: - -```js -function f() { - let value1 = 123; - let value2 = 456; -} +Usually, a Lexical Environment is removed from memory with all the variables after the function call finishes. That's because there are no references to it. As any JavaScript object, it's only kept in memory while it's reachable. -f(); -``` +However, if there's a nested function that is still reachable after the end of a function, then it has `[[Environment]]` property that references the lexical environment. -Here two values are technically the properties of the Lexical Environment. But after `f()` finishes that Lexical Environment becomes unreachable, so it's deleted from the memory. +In that case the Lexical Environment is still reachable even after the completion of the function, so it stays alive. -...But if there's a nested function that is still reachable after the end of `f`, then its `[[Environment]]` reference keeps the outer lexical environment alive as well: +For example: ```js function f() { let value = 123; - function g() { alert(value); } - -*!* - return g; -*/!* + return function() { + alert(value); + } } -let g = f(); // g is reachable, and keeps the outer lexical environment in memory +let g = f(); // g.[[Environment]] stores a reference to the Lexical Environment +// of the corresponding f() call ``` -Please note that if `f()` is called many times, and resulting functions are saved, then the corresponding Lexical Environment objects will also be retained in memory. All 3 of them in the code below: +Please note that if `f()` is called many times, and resulting functions are saved, then all corresponding Lexical Environment objects will also be retained in memory. In the code below, all 3 of them: ```js function f() { @@ -583,25 +705,23 @@ function f() { // 3 functions in array, every one of them links to Lexical Environment // from the corresponding f() run -// LE LE LE let arr = [f(), f(), f()]; ``` A Lexical Environment object dies when it becomes unreachable (just like any other object). In other words, it exists only while there's at least one nested function referencing it. -In the code below, after `g` becomes unreachable, enclosing Lexical Environment (and hence the `value`) is cleaned from memory; +In the code below, after the nested function is removed, its enclosing Lexical Environment (and hence the `value`) is cleaned from memory: ```js function f() { let value = 123; - function g() { alert(value); } - - return g; + return function() { + alert(value); + } } -let g = f(); // while g is alive -// there corresponding Lexical Environment lives +let g = f(); // while g function exists, the value stays in memory g = null; // ...and now the memory is cleaned up ``` @@ -610,9 +730,9 @@ g = null; // ...and now the memory is cleaned up As we've seen, in theory while a function is alive, all outer variables are also retained. -But in practice, JavaScript engines try to optimize that. They analyze variable usage and if it's easy to see that an outer variable is not used -- it is removed. +But in practice, JavaScript engines try to optimize that. They analyze variable usage and if it's obvious from the code that an outer variable is not used -- it is removed. -**An important side effect in V8 (Chrome, Opera) is that such variable will become unavailable in debugging.** +**An important side effect in V8 (Chrome, Edge, Opera) is that such variable will become unavailable in debugging.** Try running the example below in Chrome with the Developer Tools open. @@ -623,7 +743,7 @@ function f() { let value = Math.random(); function g() { - debugger; // in console: type alert( value ); No such variable! + debugger; // in console: type alert(value); No such variable! } return g; @@ -644,7 +764,7 @@ function f() { let value = "the closest value"; function g() { - debugger; // in console: type alert( value ); Surprise! + debugger; // in console: type alert(value); Surprise! } return g; @@ -654,9 +774,6 @@ let g = f(); g(); ``` -```warn header="See ya!" -This feature of V8 is good to know. If you are debugging with Chrome/Opera, sooner or later you will meet it. +This feature of V8 is good to know. If you are debugging with Chrome/Edge/Opera, sooner or later you will meet it. -That is not a bug in the debugger, but rather a special feature of V8. Perhaps it will be changed sometime. -You always can check for it by running the examples on this page. -``` +That is not a bug in the debugger, but rather a special feature of V8. Perhaps it will be changed sometime. You can always check for it by running the examples on this page. diff --git a/1-js/06-advanced-functions/03-closure/closure-function-declaration.svg b/1-js/06-advanced-functions/03-closure/closure-function-declaration.svg new file mode 100644 index 000000000..3ef787875 --- /dev/null +++ b/1-js/06-advanced-functions/03-closure/closure-function-declaration.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" width="678" height="169" viewBox="0 0 678 169"><defs><style>@import url(https://fonts.googleapis.com/css?family=Open+Sans:bold,italic,bolditalic%7CPT+Mono);@font-face{font-family:'PT Mono';font-weight:700;font-style:normal;src:local('PT MonoBold'),url(/font/PTMonoBold.woff2) format('woff2'),url(/font/PTMonoBold.woff) format('woff'),url(/font/PTMonoBold.ttf) format('truetype')}</style></defs><g id="closure" fill="none" fill-rule="evenodd" stroke="none" stroke-width="1"><g id="closure-function-declaration.svg"><g id="Group" transform="translate(533 2)"><path id="Line" fill="#C06334" fill-rule="nonzero" d="M30 14l14 7-14 7v-6H-1v-2h31v-6z"/><text id="outer" fill="#AF6E24" font-family="PTMono-Regular, PT Mono" font-size="12" font-weight="normal"><tspan x="0" y="11">outer</tspan></text></g><text id="null" fill="#AF6E24" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="587" y="26">null</tspan></text><g id="let-phrase-=-"Hello"" fill-rule="nonzero" transform="translate(19 71)"><path id="let" fill="#1C85B5" d="M.546 0H2.87v7.448c0 .57.096.97.287 1.204.191.233.474.35.847.35.261 0 .511-.047.749-.14.238-.093.502-.252.791-.476l.504.77c-.15.13-.313.247-.49.35a3.638 3.638 0 01-1.106.42 2.963 2.963 0 01-1.442-.077 1.579 1.579 0 01-.679-.427 1.897 1.897 0 01-.413-.777c-.093-.322-.14-.721-.14-1.197V.938H.546V0zm14.14 8.918c-.168.15-.366.29-.595.42a4.39 4.39 0 01-.749.336c-.27.093-.553.166-.847.217-.294.051-.59.077-.889.077-.56 0-1.055-.086-1.484-.259a2.858 2.858 0 01-1.078-.742 3.234 3.234 0 01-.658-1.155A4.767 4.767 0 018.162 6.3c0-.588.082-1.11.245-1.568.163-.457.399-.84.707-1.148a3.08 3.08 0 011.12-.707 4.187 4.187 0 011.47-.245c.392 0 .78.051 1.162.154.383.103.721.296 1.015.581.294.285.52.677.679 1.176.159.5.215 1.146.168 1.939H9.31c0 .84.226 1.468.679 1.883.453.415 1.057.623 1.813.623.252 0 .502-.03.749-.091.247-.06.483-.133.707-.217a3.72 3.72 0 00.595-.28c.173-.103.306-.196.399-.28l.434.798zm-2.954-5.362c-.308 0-.6.033-.875.098a1.995 1.995 0 00-.728.329c-.21.154-.383.355-.518.602s-.222.553-.259.917h4.354c-.047-.616-.245-1.094-.595-1.435-.35-.34-.81-.511-1.379-.511zm4.382-.756h1.666V1.414l1.092-.308V2.8h3.738v.938h-3.738v3.304c0 .681.166 1.185.497 1.512.331.327.805.49 1.421.49.42 0 .786-.08 1.099-.238.313-.159.595-.331.847-.518l.364.826a3.938 3.938 0 01-1.169.63 4.182 4.182 0 01-1.393.238 3.41 3.41 0 01-1.057-.161 2.426 2.426 0 01-.875-.497 2.38 2.38 0 01-.602-.861c-.15-.35-.224-.768-.224-1.253V3.738h-1.666V2.8z"/><path id="phrase" fill="#181717" d="M33.824 5.25a14.05 14.05 0 00-.063-1.176 4.657 4.657 0 00-.049-.364h-.938V2.8h1.862l.14.98h.07c.252-.327.572-.6.959-.819.387-.22.861-.329 1.421-.329.999 0 1.75.275 2.254.826.504.55.756 1.451.756 2.702 0 .588-.086 1.118-.259 1.589a3.34 3.34 0 01-.735 1.197 3.24 3.24 0 01-1.148.756 3.999 3.999 0 01-1.484.266c-.196 0-.371-.007-.525-.021a4.613 4.613 0 01-.42-.056 3.31 3.31 0 01-.371-.091 5.103 5.103 0 01-.392-.14v2.94h-1.078V5.25zm3.22-1.596c-.28 0-.544.051-.791.154a2.36 2.36 0 00-1.127.966c-.121.205-.196.41-.224.616v3.192c.205.14.436.25.693.329.257.08.595.119 1.015.119.747 0 1.344-.245 1.792-.735.448-.49.672-1.206.672-2.149 0-.793-.156-1.407-.469-1.841-.313-.434-.833-.651-1.561-.651zM40.936 0h2.184v3.668h.07c.29-.327.625-.581 1.008-.763.383-.182.859-.273 1.428-.273.448 0 .838.047 1.169.14.331.093.602.257.812.49.21.233.366.553.469.959.103.406.154.922.154 1.547V9.8h-1.092V5.978c0-.401-.023-.751-.07-1.05a1.829 1.829 0 00-.273-.749c-.135-.2-.32-.352-.553-.455-.233-.103-.532-.154-.896-.154-.252 0-.5.044-.742.133-.243.089-.464.21-.665.364-.2.154-.373.34-.518.56-.145.22-.245.46-.301.721V9.8h-1.078V.938h-1.106V0zm9.268 9.8v-.938h1.89V3.738h-1.89V2.8h2.618l.224.91h.07c.317-.29.672-.537 1.064-.742.392-.205.859-.308 1.4-.308.317 0 .572.06.763.182.191.121.34.299.448.532.107.233.18.516.217.847.037.331.056.707.056 1.127l-.98.014c0-.597-.058-1.036-.175-1.316-.117-.28-.329-.42-.637-.42-.29 0-.55.042-.784.126a2.565 2.565 0 00-.609.308c-.173.121-.32.243-.441.364s-.21.224-.266.308v4.13h2.688V9.8h-5.656zm8.988-6.454a4.447 4.447 0 011.358-.504 7.423 7.423 0 011.484-.154c.476 0 .866.075 1.169.224.303.15.541.343.714.581.173.238.29.509.35.812.06.303.091.609.091.917 0 .355-.01.733-.028 1.134-.019.401-.033.803-.042 1.204 0 .467.028.91.084 1.33h.938v.91h-1.862l-.126-1.05h-.07c-.056.084-.14.191-.252.322-.112.13-.259.259-.441.385a2.749 2.749 0 01-1.589.469c-.69 0-1.237-.177-1.638-.532-.401-.355-.602-.84-.602-1.456 0-.476.105-.873.315-1.19.21-.317.511-.56.903-.728.392-.168.866-.266 1.421-.294a9.544 9.544 0 011.869.112c.047-.43.054-.786.021-1.071-.033-.285-.107-.511-.224-.679a.938.938 0 00-.49-.357 2.482 2.482 0 00-.777-.105c-.42 0-.821.058-1.204.175-.383.117-.723.236-1.022.357l-.35-.812zm2.058 5.642c.261 0 .504-.042.728-.126a2.22 2.22 0 00.588-.322 2.133 2.133 0 00.672-.868v-.98a7.92 7.92 0 00-1.344-.126c-.41 0-.765.044-1.064.133-.299.089-.532.226-.7.413-.168.187-.252.43-.252.728 0 .308.105.576.315.805.21.229.562.343 1.057.343zM72.212 7.91a.796.796 0 00-.35-.693 2.872 2.872 0 00-.868-.392 16.056 16.056 0 00-1.127-.273 6.502 6.502 0 01-1.127-.336 2.525 2.525 0 01-.868-.567c-.233-.238-.35-.572-.35-1.001 0-.355.077-.658.231-.91a1.94 1.94 0 01.609-.623c.252-.163.546-.285.882-.364.336-.08.686-.119 1.05-.119.653 0 1.216.082 1.687.245.471.163.847.334 1.127.511l-.448.882a11.79 11.79 0 00-1.001-.483c-.36-.154-.81-.231-1.351-.231-.205 0-.408.021-.609.063-.2.042-.383.105-.546.189a1.088 1.088 0 00-.392.329.825.825 0 00-.147.497c0 .243.117.43.35.56.233.13.523.24.868.329.345.089.721.173 1.127.252.406.08.782.194 1.127.343.345.15.635.35.868.602.233.252.35.593.35 1.022 0 .644-.254 1.176-.763 1.596-.509.42-1.272.63-2.289.63-.308 0-.611-.028-.91-.084a5.52 5.52 0 01-.84-.224 5.054 5.054 0 01-.714-.315 3.002 3.002 0 01-.532-.357l.56-.91c.112.112.261.226.448.343a4.229 4.229 0 001.337.539 3.76 3.76 0 001.484.021c.22-.042.413-.107.581-.196a1.08 1.08 0 00.399-.35.914.914 0 00.147-.525zm9.674 1.008c-.168.15-.366.29-.595.42a4.39 4.39 0 01-.749.336c-.27.093-.553.166-.847.217-.294.051-.59.077-.889.077-.56 0-1.055-.086-1.484-.259a2.858 2.858 0 01-1.078-.742 3.234 3.234 0 01-.658-1.155 4.767 4.767 0 01-.224-1.512c0-.588.082-1.11.245-1.568.163-.457.399-.84.707-1.148a3.08 3.08 0 011.12-.707 4.187 4.187 0 011.47-.245c.392 0 .78.051 1.162.154.383.103.721.296 1.015.581.294.285.52.677.679 1.176.159.5.215 1.146.168 1.939H76.51c0 .84.226 1.468.679 1.883.453.415 1.057.623 1.813.623.252 0 .502-.03.749-.091.247-.06.483-.133.707-.217a3.72 3.72 0 00.595-.28c.173-.103.306-.196.399-.28l.434.798zm-2.954-5.362c-.308 0-.6.033-.875.098a1.995 1.995 0 00-.728.329c-.21.154-.383.355-.518.602s-.222.553-.259.917h4.354c-.047-.616-.245-1.094-.595-1.435-.35-.34-.81-.511-1.379-.511z"/><path id="=" fill="#DBAF88" d="M92.232 3.402h6.496V4.41h-6.496V3.402zm0 2.296h6.496v1.008h-6.496V5.698z"/><path id=""Hello"" fill="#478964" d="M113.106 0h1.232l-.434 4.242h-.798V0zm-2.898 0h1.232l-.434 4.242h-.798V0zm12.67 5.306h-4.396V9.8h-1.162V0h1.162v4.27h4.396V0h1.162v9.8h-1.162V5.306zm9.408 3.612c-.168.15-.366.29-.595.42a4.39 4.39 0 01-.749.336c-.27.093-.553.166-.847.217-.294.051-.59.077-.889.077-.56 0-1.055-.086-1.484-.259a2.858 2.858 0 01-1.078-.742 3.234 3.234 0 01-.658-1.155 4.767 4.767 0 01-.224-1.512c0-.588.082-1.11.245-1.568.163-.457.399-.84.707-1.148a3.08 3.08 0 011.12-.707 4.187 4.187 0 011.47-.245c.392 0 .78.051 1.162.154.383.103.721.296 1.015.581.294.285.52.677.679 1.176.159.5.215 1.146.168 1.939h-5.418c0 .84.226 1.468.679 1.883.453.415 1.057.623 1.813.623.252 0 .502-.03.749-.091.247-.06.483-.133.707-.217a3.72 3.72 0 00.595-.28c.173-.103.306-.196.399-.28l.434.798zm-2.954-5.362c-.308 0-.6.033-.875.098a1.995 1.995 0 00-.728.329c-.21.154-.383.355-.518.602s-.222.553-.259.917h4.354c-.047-.616-.245-1.094-.595-1.435-.35-.34-.81-.511-1.379-.511zM134.946 0h2.324v7.448c0 .57.096.97.287 1.204.191.233.474.35.847.35.261 0 .511-.047.749-.14.238-.093.502-.252.791-.476l.504.77c-.15.13-.313.247-.49.35a3.638 3.638 0 01-1.106.42 2.963 2.963 0 01-1.442-.077 1.579 1.579 0 01-.679-.427 1.897 1.897 0 01-.413-.777c-.093-.322-.14-.721-.14-1.197V.938h-1.232V0zm8.4 0h2.324v7.448c0 .57.096.97.287 1.204.191.233.474.35.847.35.261 0 .511-.047.749-.14.238-.093.502-.252.791-.476l.504.77c-.15.13-.313.247-.49.35a3.638 3.638 0 01-1.106.42 2.963 2.963 0 01-1.442-.077 1.579 1.579 0 01-.679-.427 1.897 1.897 0 01-.413-.777c-.093-.322-.14-.721-.14-1.197V.938h-1.232V0zm7.532 6.3c0-1.13.294-2.023.882-2.681.588-.658 1.428-.987 2.52-.987.588 0 1.094.096 1.519.287.425.191.777.45 1.057.777.28.327.488.714.623 1.162.135.448.203.929.203 1.442 0 .56-.075 1.066-.224 1.519-.15.453-.369.838-.658 1.155-.29.317-.646.562-1.071.735a3.82 3.82 0 01-1.449.259c-.579 0-1.083-.096-1.512-.287a2.967 2.967 0 01-1.064-.777 3.168 3.168 0 01-.623-1.162 4.963 4.963 0 01-.203-1.442zm1.162 0c0 .327.04.653.119.98.08.327.208.62.385.882.177.261.408.471.693.63.285.159.632.238 1.043.238.747 0 1.309-.231 1.687-.693.378-.462.567-1.141.567-2.037 0-.336-.04-.665-.119-.987a2.608 2.608 0 00-.392-.875 2.066 2.066 0 00-.7-.63c-.285-.159-.632-.238-1.043-.238-.747 0-1.307.229-1.68.686-.373.457-.56 1.139-.56 2.044zM163.506 0h1.232l-.434 4.242h-.798V0zm-2.898 0h1.232l-.434 4.242h-.798V0z"/><path id=";" fill="#7E7C7B" d="M170.086 9.03c0-.28.091-.506.273-.679.182-.173.418-.259.707-.259.355 0 .63.124.826.371.196.247.294.595.294 1.043a2.36 2.36 0 01-.637 1.659 2.465 2.465 0 01-.588.462c-.21.117-.404.203-.581.259l-.35-.546c.336-.13.625-.317.868-.56.243-.243.364-.537.364-.882-.13.028-.233.042-.308.042-.27 0-.483-.077-.637-.231-.154-.154-.231-.38-.231-.679zm.126-5.502c0-.299.084-.53.252-.693.168-.163.392-.245.672-.245.299 0 .532.082.7.245.168.163.252.394.252.693 0 .27-.084.495-.252.672-.168.177-.401.266-.7.266-.28 0-.504-.089-.672-.266a.938.938 0 01-.252-.672z"/><path id="function" fill="#1C85B5" d="M.112 43.8v-.938h1.666v-5.124H.112V36.8h1.666v-.392c0-.877.229-1.512.686-1.904.457-.392 1.11-.588 1.96-.588.308 0 .583.019.826.056.243.037.504.112.784.224l-.252.91a2.862 2.862 0 00-.7-.203 4.295 4.295 0 00-.616-.049c-.616 0-1.036.152-1.26.455-.224.303-.336.8-.336 1.491h2.898v.938H2.87v5.124h2.898v.938H.112zm12.25-7h1.988v4.774c0 .457.028.896.084 1.316h.938v.91H13.51l-.042-1.19h-.056a2.938 2.938 0 01-.966.98c-.401.252-.887.378-1.456.378-.43 0-.796-.049-1.099-.147a1.556 1.556 0 01-.749-.511c-.196-.243-.34-.567-.434-.973-.093-.406-.14-.912-.14-1.519v-3.08H7.63V36.8h2.03v3.794c0 .383.016.726.049 1.029.033.303.1.56.203.77.103.21.254.369.455.476.2.107.469.161.805.161.485 0 .908-.159 1.267-.476.36-.317.632-.714.819-1.19v-3.626h-.896V36.8zm4.62 2.45a14.05 14.05 0 00-.063-1.176 4.657 4.657 0 00-.049-.364h-.938v-.91h1.876l.126 1.134h.07c.093-.159.217-.315.371-.469a2.91 2.91 0 011.225-.721c.252-.075.518-.112.798-.112.43 0 .81.047 1.141.14.331.093.607.259.826.497.22.238.385.56.497.966.112.406.168.922.168 1.547V43.8h-1.092v-3.808c0-.775-.126-1.358-.378-1.75-.252-.392-.71-.588-1.372-.588-.243 0-.478.049-.707.147a2.44 2.44 0 00-.623.385c-.187.159-.35.343-.49.553-.14.21-.243.432-.308.665V43.8h-1.078v-4.55zm13.244-1.372a5.531 5.531 0 00-.693-.189 3.61 3.61 0 00-.735-.077c-.915 0-1.596.215-2.044.644-.448.43-.672 1.11-.672 2.044 0 .41.065.777.196 1.099.13.322.317.595.56.819.243.224.534.397.875.518.34.121.716.182 1.127.182.439 0 .866-.075 1.281-.224.415-.15.763-.345 1.043-.588l.49.812c-.13.112-.294.229-.49.35a4.837 4.837 0 01-1.533.602 4.962 4.962 0 01-1.015.098c-.607 0-1.141-.086-1.603-.259a3.045 3.045 0 01-1.155-.742 3.176 3.176 0 01-.7-1.162 4.525 4.525 0 01-.238-1.505c0-.588.082-1.11.245-1.568.163-.457.399-.84.707-1.148a3.08 3.08 0 011.12-.707 4.187 4.187 0 011.47-.245c.69 0 1.253.06 1.687.182.434.121.8.257 1.099.406l-.014.042v1.946h-1.008v-1.33zm2.688-1.078h1.666v-1.386l1.092-.308V36.8h3.738v.938h-3.738v3.304c0 .681.166 1.185.497 1.512.331.327.805.49 1.421.49.42 0 .786-.08 1.099-.238.313-.159.595-.331.847-.518l.364.826a3.938 3.938 0 01-1.169.63 4.182 4.182 0 01-1.393.238 3.41 3.41 0 01-1.057-.161 2.426 2.426 0 01-.875-.497 2.38 2.38 0 01-.602-.861c-.15-.35-.224-.768-.224-1.253v-3.472h-1.666V36.8zm9.436 7v-.938h2.436v-5.124H42.35V36.8h3.556v6.062h2.38v.938H42.35zm2.058-8.988c0-.252.084-.469.252-.651a.838.838 0 01.644-.273c.27 0 .497.091.679.273a.889.889 0 01.273.651.806.806 0 01-.273.616.963.963 0 01-.679.252.872.872 0 01-.644-.252.838.838 0 01-.252-.616zm5.67 5.488c0-1.13.294-2.023.882-2.681.588-.658 1.428-.987 2.52-.987.588 0 1.094.096 1.519.287.425.191.777.45 1.057.777.28.327.488.714.623 1.162.135.448.203.929.203 1.442 0 .56-.075 1.066-.224 1.519-.15.453-.369.838-.658 1.155-.29.317-.646.562-1.071.735a3.82 3.82 0 01-1.449.259c-.579 0-1.083-.096-1.512-.287a2.967 2.967 0 01-1.064-.777 3.168 3.168 0 01-.623-1.162 4.963 4.963 0 01-.203-1.442zm1.162 0c0 .327.04.653.119.98.08.327.208.62.385.882.177.261.408.471.693.63.285.159.632.238 1.043.238.747 0 1.309-.231 1.687-.693.378-.462.567-1.141.567-2.037 0-.336-.04-.665-.119-.987a2.608 2.608 0 00-.392-.875 2.066 2.066 0 00-.7-.63c-.285-.159-.632-.238-1.043-.238-.747 0-1.307.229-1.68.686-.373.457-.56 1.139-.56 2.044zm7.742-1.05a14.05 14.05 0 00-.063-1.176 4.657 4.657 0 00-.049-.364h-.938v-.91h1.876l.126 1.134h.07c.093-.159.217-.315.371-.469a2.91 2.91 0 011.225-.721c.252-.075.518-.112.798-.112.43 0 .81.047 1.141.14.331.093.607.259.826.497.22.238.385.56.497.966.112.406.168.922.168 1.547V43.8h-1.092v-3.808c0-.775-.126-1.358-.378-1.75-.252-.392-.71-.588-1.372-.588-.243 0-.478.049-.707.147a2.44 2.44 0 00-.623.385c-.187.159-.35.343-.49.553-.14.21-.243.432-.308.665V43.8h-1.078v-4.55z"/><path id="say" fill="#181717" d="M80.612 41.91a.796.796 0 00-.35-.693 2.872 2.872 0 00-.868-.392 16.056 16.056 0 00-1.127-.273 6.502 6.502 0 01-1.127-.336 2.525 2.525 0 01-.868-.567c-.233-.238-.35-.572-.35-1.001 0-.355.077-.658.231-.91a1.94 1.94 0 01.609-.623c.252-.163.546-.285.882-.364.336-.08.686-.119 1.05-.119.653 0 1.216.082 1.687.245.471.163.847.334 1.127.511l-.448.882a11.79 11.79 0 00-1.001-.483c-.36-.154-.81-.231-1.351-.231-.205 0-.408.021-.609.063-.2.042-.383.105-.546.189a1.088 1.088 0 00-.392.329.825.825 0 00-.147.497c0 .243.117.43.35.56.233.13.523.24.868.329.345.089.721.173 1.127.252.406.08.782.194 1.127.343.345.15.635.35.868.602.233.252.35.593.35 1.022 0 .644-.254 1.176-.763 1.596-.509.42-1.272.63-2.289.63-.308 0-.611-.028-.91-.084a5.52 5.52 0 01-.84-.224 5.054 5.054 0 01-.714-.315 3.002 3.002 0 01-.532-.357l.56-.91c.112.112.261.226.448.343a4.229 4.229 0 001.337.539 3.76 3.76 0 001.484.021c.22-.042.413-.107.581-.196a1.08 1.08 0 00.399-.35.914.914 0 00.147-.525zm3.78-4.564a4.447 4.447 0 011.358-.504 7.423 7.423 0 011.484-.154c.476 0 .866.075 1.169.224.303.15.541.343.714.581.173.238.29.509.35.812.06.303.091.609.091.917 0 .355-.01.733-.028 1.134-.019.401-.033.803-.042 1.204 0 .467.028.91.084 1.33h.938v.91h-1.862l-.126-1.05h-.07c-.056.084-.14.191-.252.322-.112.13-.259.259-.441.385a2.749 2.749 0 01-1.589.469c-.69 0-1.237-.177-1.638-.532-.401-.355-.602-.84-.602-1.456 0-.476.105-.873.315-1.19.21-.317.511-.56.903-.728.392-.168.866-.266 1.421-.294a9.544 9.544 0 011.869.112c.047-.43.054-.786.021-1.071-.033-.285-.107-.511-.224-.679a.938.938 0 00-.49-.357 2.482 2.482 0 00-.777-.105c-.42 0-.821.058-1.204.175-.383.117-.723.236-1.022.357l-.35-.812zm2.058 5.642c.261 0 .504-.042.728-.126a2.22 2.22 0 00.588-.322 2.133 2.133 0 00.672-.868v-.98a7.92 7.92 0 00-1.344-.126c-.41 0-.765.044-1.064.133-.299.089-.532.226-.7.413-.168.187-.252.43-.252.728 0 .308.105.576.315.805.21.229.562.343 1.057.343zm9.184-.266h.532l1.736-5.922h1.134l-1.946 6.286c-.103.327-.208.698-.315 1.113a5.2 5.2 0 01-.455 1.169 2.807 2.807 0 01-.798.924c-.336.252-.775.378-1.316.378-.121 0-.25-.014-.385-.042a3.856 3.856 0 01-.399-.105 2.574 2.574 0 01-.364-.147.977.977 0 01-.252-.168l.392-1.008c.056.047.133.093.231.14.098.047.205.086.322.119.117.033.231.06.343.084.112.023.205.035.28.035.7 0 1.176-.593 1.428-1.778h-.938l-2.94-7h1.26l2.45 5.922z"/><path id="(" fill="#7E7C7B" d="M105.728 46.768a6.964 6.964 0 01-1.757-.707 5.036 5.036 0 01-1.428-1.225c-.406-.504-.728-1.12-.966-1.848s-.357-1.591-.357-2.59c0-.99.121-1.855.364-2.597s.57-1.372.98-1.89c.41-.518.889-.933 1.435-1.246a6.005 6.005 0 011.729-.665l.35.882a7.086 7.086 0 00-1.512.623 3.928 3.928 0 00-1.183 1.022c-.331.425-.588.952-.77 1.582-.182.63-.273 1.393-.273 2.289 0 .905.11 1.678.329 2.317.22.64.509 1.171.868 1.596.36.425.76.756 1.204.994.443.238.889.404 1.337.497l-.35.966z"/><path id="name" fill="#181717" d="M109.382 39.25a14.051 14.051 0 00-.063-1.176 4.657 4.657 0 00-.049-.364h-.938v-.91h1.876l.126 1.134h.07c.093-.159.217-.315.371-.469a2.91 2.91 0 011.225-.721c.252-.075.518-.112.798-.112.43 0 .81.047 1.141.14.331.093.607.259.826.497.22.238.385.56.497.966.112.406.168.922.168 1.547V43.8h-1.092v-3.808c0-.775-.126-1.358-.378-1.75-.252-.392-.71-.588-1.372-.588-.243 0-.478.049-.707.147a2.44 2.44 0 00-.623.385c-.187.159-.35.343-.49.553-.14.21-.243.432-.308.665V43.8h-1.078v-4.55zm8.61-1.904a4.447 4.447 0 011.358-.504 7.423 7.423 0 011.484-.154c.476 0 .866.075 1.169.224.303.15.541.343.714.581.173.238.29.509.35.812.06.303.091.609.091.917 0 .355-.01.733-.028 1.134-.019.401-.033.803-.042 1.204 0 .467.028.91.084 1.33h.938v.91h-1.862l-.126-1.05h-.07c-.056.084-.14.191-.252.322-.112.13-.259.259-.441.385a2.749 2.749 0 01-1.589.469c-.69 0-1.237-.177-1.638-.532-.401-.355-.602-.84-.602-1.456 0-.476.105-.873.315-1.19.21-.317.511-.56.903-.728.392-.168.866-.266 1.421-.294a9.544 9.544 0 011.869.112c.047-.43.054-.786.021-1.071-.033-.285-.107-.511-.224-.679a.938.938 0 00-.49-.357 2.482 2.482 0 00-.777-.105c-.42 0-.821.058-1.204.175-.383.117-.723.236-1.022.357l-.35-.812zm2.058 5.642c.261 0 .504-.042.728-.126a2.22 2.22 0 00.588-.322 2.133 2.133 0 00.672-.868v-.98a7.92 7.92 0 00-1.344-.126c-.41 0-.765.044-1.064.133-.299.089-.532.226-.7.413-.168.187-.252.43-.252.728 0 .308.105.576.315.805.21.229.562.343 1.057.343zm8.498.812v-4.662c0-.196-.007-.385-.021-.567a1.9 1.9 0 00-.098-.49.786.786 0 00-.224-.343.57.57 0 00-.385-.126c-.317 0-.586.13-.805.392-.22.261-.385.588-.497.98V43.8h-1.064v-7h.728l.21.854h.056c.093-.14.184-.273.273-.399.089-.126.191-.236.308-.329.117-.093.254-.166.413-.217.159-.051.36-.077.602-.077.14 0 .285.021.434.063.15.042.287.107.413.196.126.089.236.208.329.357.093.15.154.331.182.546.215-.364.455-.649.721-.854.266-.205.632-.308 1.099-.308.308 0 .558.051.749.154.191.103.34.25.448.441.107.191.182.42.224.686.042.266.063.562.063.889V43.8h-1.064v-4.76c0-.196-.01-.38-.028-.553a1.764 1.764 0 00-.105-.455.752.752 0 00-.21-.308.536.536 0 00-.357-.112c-.327 0-.602.13-.826.392-.224.261-.392.635-.504 1.12V43.8h-1.064zm12.138-.882c-.168.15-.366.29-.595.42a4.39 4.39 0 01-.749.336c-.27.093-.553.166-.847.217-.294.051-.59.077-.889.077-.56 0-1.055-.086-1.484-.259a2.858 2.858 0 01-1.078-.742 3.234 3.234 0 01-.658-1.155 4.767 4.767 0 01-.224-1.512c0-.588.082-1.11.245-1.568.163-.457.399-.84.707-1.148a3.08 3.08 0 011.12-.707 4.187 4.187 0 011.47-.245c.392 0 .78.051 1.162.154.383.103.721.296 1.015.581.294.285.52.677.679 1.176.159.5.215 1.146.168 1.939h-5.418c0 .84.226 1.468.679 1.883.453.415 1.057.623 1.813.623.252 0 .502-.03.749-.091.247-.06.483-.133.707-.217a3.72 3.72 0 00.595-.28c.173-.103.306-.196.399-.28l.434.798zm-2.954-5.362c-.308 0-.6.033-.875.098a1.995 1.995 0 00-.728.329c-.21.154-.383.355-.518.602s-.222.553-.259.917h4.354c-.047-.616-.245-1.094-.595-1.435-.35-.34-.81-.511-1.379-.511z"/><path id="){" fill="#7E7C7B" d="M143.682 45.802a4.965 4.965 0 001.337-.497 4.15 4.15 0 001.204-.994c.36-.425.649-.957.868-1.596.22-.64.329-1.412.329-2.317 0-.896-.091-1.659-.273-2.289-.182-.63-.439-1.157-.77-1.582a3.928 3.928 0 00-1.183-1.022 7.086 7.086 0 00-1.512-.623l.35-.882c.607.13 1.183.352 1.729.665a4.984 4.984 0 011.435 1.246c.41.518.737 1.148.98 1.89s.364 1.608.364 2.597c0 .999-.119 1.862-.357 2.59-.238.728-.56 1.344-.966 1.848a5.036 5.036 0 01-1.428 1.225 6.964 6.964 0 01-1.757.707l-.35-.966zm17.878-2.45c0-.401-.068-.749-.203-1.043a2.44 2.44 0 00-.504-.735c-.2-.196-.415-.34-.644-.434a1.641 1.641 0 00-.609-.14v-.98c.177 0 .38-.04.609-.119.229-.08.443-.21.644-.392.2-.182.369-.418.504-.707.135-.29.203-.649.203-1.078v-1.428c0-.336.054-.644.161-.924a2.22 2.22 0 01.448-.728c.191-.205.42-.366.686-.483.266-.117.558-.175.875-.175h2.03v.98h-1.54c-.588 0-.996.14-1.225.42-.229.28-.343.695-.343 1.246v1.358c0 .383-.07.723-.21 1.022a2.7 2.7 0 01-1.106 1.225c-.205.117-.373.184-.504.203v.084c.121.019.285.091.49.217.205.126.406.299.602.518.196.22.366.478.511.777.145.299.217.63.217.994v1.344c0 .57.121.99.364 1.26s.649.406 1.218.406h1.526v.98h-2.03c-.653 0-1.178-.194-1.575-.581-.397-.387-.595-.959-.595-1.715v-1.372z"/><path id="alert" fill="#181717" d="M17.192 54.346a4.447 4.447 0 011.358-.504 7.423 7.423 0 011.484-.154c.476 0 .866.075 1.169.224.303.15.541.343.714.581.173.238.29.509.35.812.06.303.091.609.091.917 0 .355-.01.733-.028 1.134-.019.401-.033.803-.042 1.204 0 .467.028.91.084 1.33h.938v.91h-1.862l-.126-1.05h-.07c-.056.084-.14.191-.252.322-.112.13-.259.259-.441.385a2.749 2.749 0 01-1.589.469c-.69 0-1.237-.177-1.638-.532-.401-.355-.602-.84-.602-1.456 0-.476.105-.873.315-1.19.21-.317.511-.56.903-.728.392-.168.866-.266 1.421-.294a9.544 9.544 0 011.869.112c.047-.43.054-.786.021-1.071-.033-.285-.107-.511-.224-.679a.938.938 0 00-.49-.357 2.482 2.482 0 00-.777-.105c-.42 0-.821.058-1.204.175-.383.117-.723.236-1.022.357l-.35-.812zm2.058 5.642c.261 0 .504-.042.728-.126a2.22 2.22 0 00.588-.322 2.133 2.133 0 00.672-.868v-.98a7.92 7.92 0 00-1.344-.126c-.41 0-.765.044-1.064.133-.299.089-.532.226-.7.413-.168.187-.252.43-.252.728 0 .308.105.576.315.805.21.229.562.343 1.057.343zM25.746 51h2.324v7.448c0 .57.096.97.287 1.204.191.233.474.35.847.35.261 0 .511-.047.749-.14.238-.093.502-.252.791-.476l.504.77c-.15.13-.313.247-.49.35a3.638 3.638 0 01-1.106.42 2.963 2.963 0 01-1.442-.077 1.579 1.579 0 01-.679-.427 1.897 1.897 0 01-.413-.777c-.093-.322-.14-.721-.14-1.197v-6.51h-1.232V51zm14.14 8.918c-.168.15-.366.29-.595.42a4.39 4.39 0 01-.749.336c-.27.093-.553.166-.847.217-.294.051-.59.077-.889.077-.56 0-1.055-.086-1.484-.259a2.858 2.858 0 01-1.078-.742 3.234 3.234 0 01-.658-1.155 4.767 4.767 0 01-.224-1.512c0-.588.082-1.11.245-1.568.163-.457.399-.84.707-1.148a3.08 3.08 0 011.12-.707 4.187 4.187 0 011.47-.245c.392 0 .78.051 1.162.154.383.103.721.296 1.015.581.294.285.52.677.679 1.176.159.5.215 1.146.168 1.939H34.51c0 .84.226 1.468.679 1.883.453.415 1.057.623 1.813.623.252 0 .502-.03.749-.091.247-.06.483-.133.707-.217a3.72 3.72 0 00.595-.28c.173-.103.306-.196.399-.28l.434.798zm-2.954-5.362c-.308 0-.6.033-.875.098a1.995 1.995 0 00-.728.329c-.21.154-.383.355-.518.602s-.222.553-.259.917h4.354c-.047-.616-.245-1.094-.595-1.435-.35-.34-.81-.511-1.379-.511zm4.872 6.244v-.938h1.89v-5.124h-1.89V53.8h2.618l.224.91h.07c.317-.29.672-.537 1.064-.742.392-.205.859-.308 1.4-.308.317 0 .572.06.763.182.191.121.34.299.448.532.107.233.18.516.217.847.037.331.056.707.056 1.127l-.98.014c0-.597-.058-1.036-.175-1.316-.117-.28-.329-.42-.637-.42-.29 0-.55.042-.784.126a2.565 2.565 0 00-.609.308c-.173.121-.32.243-.441.364s-.21.224-.266.308v4.13h2.688v.938h-5.656zm7.91-7h1.666v-1.386l1.092-.308V53.8h3.738v.938h-3.738v3.304c0 .681.166 1.185.497 1.512.331.327.805.49 1.421.49.42 0 .786-.08 1.099-.238.313-.159.595-.331.847-.518l.364.826a3.938 3.938 0 01-1.169.63 4.182 4.182 0 01-1.393.238 3.41 3.41 0 01-1.057-.161 2.426 2.426 0 01-.875-.497 2.38 2.38 0 01-.602-.861c-.15-.35-.224-.768-.224-1.253v-3.472h-1.666V53.8z"/><path id="(" fill="#7E7C7B" d="M63.728 63.768a6.964 6.964 0 01-1.757-.707 5.036 5.036 0 01-1.428-1.225c-.406-.504-.728-1.12-.966-1.848s-.357-1.591-.357-2.59c0-.99.121-1.855.364-2.597s.57-1.372.98-1.89c.41-.518.889-.933 1.435-1.246A6.005 6.005 0 0163.728 51l.35.882a7.086 7.086 0 00-1.512.623 3.928 3.928 0 00-1.183 1.022c-.331.425-.588.952-.77 1.582-.182.63-.273 1.393-.273 2.289 0 .905.11 1.678.329 2.317.22.64.509 1.171.868 1.596.36.425.76.756 1.204.994.443.238.889.404 1.337.497l-.35.966z"/><path id="`" fill="#478964" d="M79.66 52.806h-.77l-1.666-2.086h1.526z"/><path id="${" fill="#7E7C7B" d="M86.562 60.968a7.73 7.73 0 01-1.365-.133c-.397-.08-.716-.184-.959-.315l.378-1.022c.187.112.441.212.763.301s.716.142 1.183.161v-3.78c-.28-.14-.558-.29-.833-.448a3.391 3.391 0 01-.735-.567 2.573 2.573 0 01-.518-.777c-.13-.299-.196-.653-.196-1.064 0-.672.189-1.223.567-1.652.378-.43.95-.695 1.715-.798V49.6h.952v1.232c.476.019.866.063 1.169.133.303.07.576.161.819.273l-.336.98a3.584 3.584 0 00-.672-.245 4.736 4.736 0 00-.98-.133v3.458c.29.15.579.31.868.483.29.173.548.371.777.595.229.224.413.485.553.784.14.299.21.649.21 1.05 0 .728-.203 1.328-.609 1.799-.406.471-1.006.772-1.799.903V62.2h-.952v-1.232zm2.198-2.66c0-.224-.04-.425-.119-.602a1.724 1.724 0 00-.315-.476 2.327 2.327 0 00-.462-.378 6.612 6.612 0 00-.574-.322v3.402c.43-.075.782-.243 1.057-.504.275-.261.413-.635.413-1.12zm-3.318-5.054c0 .401.128.728.385.98s.576.48.959.686v-3.066c-.495.056-.842.22-1.043.49-.2.27-.301.574-.301.91zm8.918 7.098c0-.401-.068-.749-.203-1.043a2.44 2.44 0 00-.504-.735c-.2-.196-.415-.34-.644-.434A1.641 1.641 0 0092.4 58v-.98c.177 0 .38-.04.609-.119.229-.08.443-.21.644-.392.2-.182.369-.418.504-.707.135-.29.203-.649.203-1.078v-1.428c0-.336.054-.644.161-.924a2.22 2.22 0 01.448-.728c.191-.205.42-.366.686-.483.266-.117.558-.175.875-.175h2.03v.98h-1.54c-.588 0-.996.14-1.225.42-.229.28-.343.695-.343 1.246v1.358c0 .383-.07.723-.21 1.022a2.7 2.7 0 01-1.106 1.225c-.205.117-.373.184-.504.203v.084c.121.019.285.091.49.217.205.126.406.299.602.518.196.22.366.478.511.777.145.299.217.63.217.994v1.344c0 .57.121.99.364 1.26s.649.406 1.218.406h1.526v.98h-2.03c-.653 0-1.178-.194-1.575-.581-.397-.387-.595-.959-.595-1.715v-1.372z"/><path id="phrase" fill="#181717" d="M101.024 56.25a14.051 14.051 0 00-.063-1.176 4.657 4.657 0 00-.049-.364h-.938v-.91h1.862l.14.98h.07c.252-.327.572-.6.959-.819.387-.22.861-.329 1.421-.329.999 0 1.75.275 2.254.826.504.55.756 1.451.756 2.702 0 .588-.086 1.118-.259 1.589a3.34 3.34 0 01-.735 1.197 3.24 3.24 0 01-1.148.756 3.999 3.999 0 01-1.484.266c-.196 0-.371-.007-.525-.021a4.613 4.613 0 01-.42-.056 3.31 3.31 0 01-.371-.091 5.103 5.103 0 01-.392-.14v2.94h-1.078v-7.35zm3.22-1.596c-.28 0-.544.051-.791.154a2.36 2.36 0 00-1.127.966c-.121.205-.196.41-.224.616v3.192c.205.14.436.25.693.329.257.08.595.119 1.015.119.747 0 1.344-.245 1.792-.735.448-.49.672-1.206.672-2.149 0-.793-.156-1.407-.469-1.841-.313-.434-.833-.651-1.561-.651zM108.136 51h2.184v3.668h.07c.29-.327.625-.581 1.008-.763.383-.182.859-.273 1.428-.273.448 0 .838.047 1.169.14.331.093.602.257.812.49.21.233.366.553.469.959.103.406.154.922.154 1.547V60.8h-1.092v-3.822c0-.401-.023-.751-.07-1.05a1.829 1.829 0 00-.273-.749c-.135-.2-.32-.352-.553-.455-.233-.103-.532-.154-.896-.154-.252 0-.5.044-.742.133-.243.089-.464.21-.665.364-.2.154-.373.34-.518.56-.145.22-.245.46-.301.721V60.8h-1.078v-8.862h-1.106V51zm9.268 9.8v-.938h1.89v-5.124h-1.89V53.8h2.618l.224.91h.07c.317-.29.672-.537 1.064-.742.392-.205.859-.308 1.4-.308.317 0 .572.06.763.182.191.121.34.299.448.532.107.233.18.516.217.847.037.331.056.707.056 1.127l-.98.014c0-.597-.058-1.036-.175-1.316-.117-.28-.329-.42-.637-.42-.29 0-.55.042-.784.126a2.565 2.565 0 00-.609.308c-.173.121-.32.243-.441.364s-.21.224-.266.308v4.13h2.688v.938h-5.656zm8.988-6.454a4.447 4.447 0 011.358-.504 7.423 7.423 0 011.484-.154c.476 0 .866.075 1.169.224.303.15.541.343.714.581.173.238.29.509.35.812.06.303.091.609.091.917 0 .355-.01.733-.028 1.134-.019.401-.033.803-.042 1.204 0 .467.028.91.084 1.33h.938v.91h-1.862l-.126-1.05h-.07c-.056.084-.14.191-.252.322-.112.13-.259.259-.441.385a2.749 2.749 0 01-1.589.469c-.69 0-1.237-.177-1.638-.532-.401-.355-.602-.84-.602-1.456 0-.476.105-.873.315-1.19.21-.317.511-.56.903-.728.392-.168.866-.266 1.421-.294a9.544 9.544 0 011.869.112c.047-.43.054-.786.021-1.071-.033-.285-.107-.511-.224-.679a.938.938 0 00-.49-.357 2.482 2.482 0 00-.777-.105c-.42 0-.821.058-1.204.175-.383.117-.723.236-1.022.357l-.35-.812zm2.058 5.642c.261 0 .504-.042.728-.126a2.22 2.22 0 00.588-.322 2.133 2.133 0 00.672-.868v-.98a7.92 7.92 0 00-1.344-.126c-.41 0-.765.044-1.064.133-.299.089-.532.226-.7.413-.168.187-.252.43-.252.728 0 .308.105.576.315.805.21.229.562.343 1.057.343zm10.962-1.078a.796.796 0 00-.35-.693 2.872 2.872 0 00-.868-.392 16.056 16.056 0 00-1.127-.273 6.502 6.502 0 01-1.127-.336 2.525 2.525 0 01-.868-.567c-.233-.238-.35-.572-.35-1.001 0-.355.077-.658.231-.91a1.94 1.94 0 01.609-.623c.252-.163.546-.285.882-.364.336-.08.686-.119 1.05-.119.653 0 1.216.082 1.687.245.471.163.847.334 1.127.511l-.448.882a11.79 11.79 0 00-1.001-.483c-.36-.154-.81-.231-1.351-.231-.205 0-.408.021-.609.063-.2.042-.383.105-.546.189a1.088 1.088 0 00-.392.329.825.825 0 00-.147.497c0 .243.117.43.35.56.233.13.523.24.868.329.345.089.721.173 1.127.252.406.08.782.194 1.127.343.345.15.635.35.868.602.233.252.35.593.35 1.022 0 .644-.254 1.176-.763 1.596-.509.42-1.272.63-2.289.63-.308 0-.611-.028-.91-.084a5.52 5.52 0 01-.84-.224 5.054 5.054 0 01-.714-.315 3.002 3.002 0 01-.532-.357l.56-.91c.112.112.261.226.448.343a4.229 4.229 0 001.337.539 3.76 3.76 0 001.484.021c.22-.042.413-.107.581-.196a1.08 1.08 0 00.399-.35.914.914 0 00.147-.525zm9.674 1.008c-.168.15-.366.29-.595.42a4.39 4.39 0 01-.749.336c-.27.093-.553.166-.847.217-.294.051-.59.077-.889.077-.56 0-1.055-.086-1.484-.259a2.858 2.858 0 01-1.078-.742 3.234 3.234 0 01-.658-1.155 4.767 4.767 0 01-.224-1.512c0-.588.082-1.11.245-1.568.163-.457.399-.84.707-1.148a3.08 3.08 0 011.12-.707 4.187 4.187 0 011.47-.245c.392 0 .78.051 1.162.154.383.103.721.296 1.015.581.294.285.52.677.679 1.176.159.5.215 1.146.168 1.939h-5.418c0 .84.226 1.468.679 1.883.453.415 1.057.623 1.813.623.252 0 .502-.03.749-.091.247-.06.483-.133.707-.217a3.72 3.72 0 00.595-.28c.173-.103.306-.196.399-.28l.434.798zm-2.954-5.362c-.308 0-.6.033-.875.098a1.995 1.995 0 00-.728.329c-.21.154-.383.355-.518.602s-.222.553-.259.917h4.354c-.047-.616-.245-1.094-.595-1.435-.35-.34-.81-.511-1.379-.511z"/><path id="}" fill="#7E7C7B" d="M155.4 61.724c0 .756-.198 1.328-.595 1.715-.397.387-.922.581-1.575.581h-2.03v-.98h1.526c.57 0 .975-.135 1.218-.406.243-.27.364-.69.364-1.26V60.03c0-.364.07-.695.21-.994.14-.299.308-.558.504-.777.196-.22.397-.392.602-.518.205-.126.373-.198.504-.217v-.084c-.13-.019-.299-.086-.504-.203a2.7 2.7 0 01-1.106-1.225c-.14-.299-.21-.64-.21-1.022v-1.358c0-.55-.114-.966-.343-1.246-.229-.28-.637-.42-1.225-.42h-1.54v-.98h2.03c.317 0 .609.058.875.175.266.117.495.278.686.483.191.205.34.448.448.728.107.28.161.588.161.924v1.428c0 .43.068.789.203 1.078.135.29.303.525.504.707.2.182.415.313.644.392.229.08.432.119.609.119V58c-.177 0-.38.047-.609.14a2.011 2.011 0 00-.644.434 2.44 2.44 0 00-.504.735c-.135.294-.203.642-.203 1.043v1.372z"/><path id="," fill="#478964" d="M161.686 60.03c0-.28.091-.506.273-.679.182-.173.418-.259.707-.259.355 0 .63.124.826.371.196.247.294.595.294 1.043a2.36 2.36 0 01-.637 1.659 2.465 2.465 0 01-.588.462c-.21.117-.404.203-.581.259l-.35-.546c.336-.13.625-.317.868-.56.243-.243.364-.537.364-.882-.13.028-.233.042-.308.042-.27 0-.483-.077-.637-.231-.154-.154-.231-.38-.231-.679z"/><path id="${" fill="#7E7C7B" d="M178.962 60.968a7.73 7.73 0 01-1.365-.133c-.397-.08-.716-.184-.959-.315l.378-1.022c.187.112.441.212.763.301s.716.142 1.183.161v-3.78c-.28-.14-.558-.29-.833-.448a3.391 3.391 0 01-.735-.567 2.573 2.573 0 01-.518-.777c-.13-.299-.196-.653-.196-1.064 0-.672.189-1.223.567-1.652.378-.43.95-.695 1.715-.798V49.6h.952v1.232c.476.019.866.063 1.169.133.303.07.576.161.819.273l-.336.98a3.584 3.584 0 00-.672-.245 4.736 4.736 0 00-.98-.133v3.458c.29.15.579.31.868.483.29.173.548.371.777.595.229.224.413.485.553.784.14.299.21.649.21 1.05 0 .728-.203 1.328-.609 1.799-.406.471-1.006.772-1.799.903V62.2h-.952v-1.232zm2.198-2.66c0-.224-.04-.425-.119-.602a1.724 1.724 0 00-.315-.476 2.327 2.327 0 00-.462-.378 6.612 6.612 0 00-.574-.322v3.402c.43-.075.782-.243 1.057-.504.275-.261.413-.635.413-1.12zm-3.318-5.054c0 .401.128.728.385.98s.576.48.959.686v-3.066c-.495.056-.842.22-1.043.49-.2.27-.301.574-.301.91zm8.918 7.098c0-.401-.068-.749-.203-1.043a2.44 2.44 0 00-.504-.735c-.2-.196-.415-.34-.644-.434a1.641 1.641 0 00-.609-.14v-.98c.177 0 .38-.04.609-.119.229-.08.443-.21.644-.392.2-.182.369-.418.504-.707.135-.29.203-.649.203-1.078v-1.428c0-.336.054-.644.161-.924a2.22 2.22 0 01.448-.728c.191-.205.42-.366.686-.483.266-.117.558-.175.875-.175h2.03v.98h-1.54c-.588 0-.996.14-1.225.42-.229.28-.343.695-.343 1.246v1.358c0 .383-.07.723-.21 1.022a2.7 2.7 0 01-1.106 1.225c-.205.117-.373.184-.504.203v.084c.121.019.285.091.49.217.205.126.406.299.602.518.196.22.366.478.511.777.145.299.217.63.217.994v1.344c0 .57.121.99.364 1.26s.649.406 1.218.406h1.526v.98h-2.03c-.653 0-1.178-.194-1.575-.581-.397-.387-.595-.959-.595-1.715v-1.372z"/><path id="name" fill="#181717" d="M193.382 56.25a14.051 14.051 0 00-.063-1.176 4.657 4.657 0 00-.049-.364h-.938v-.91h1.876l.126 1.134h.07c.093-.159.217-.315.371-.469a2.91 2.91 0 011.225-.721c.252-.075.518-.112.798-.112.43 0 .81.047 1.141.14.331.093.607.259.826.497.22.238.385.56.497.966.112.406.168.922.168 1.547V60.8h-1.092v-3.808c0-.775-.126-1.358-.378-1.75-.252-.392-.71-.588-1.372-.588-.243 0-.478.049-.707.147a2.44 2.44 0 00-.623.385c-.187.159-.35.343-.49.553-.14.21-.243.432-.308.665V60.8h-1.078v-4.55zm8.61-1.904a4.447 4.447 0 011.358-.504 7.423 7.423 0 011.484-.154c.476 0 .866.075 1.169.224.303.15.541.343.714.581.173.238.29.509.35.812.06.303.091.609.091.917 0 .355-.01.733-.028 1.134-.019.401-.033.803-.042 1.204 0 .467.028.91.084 1.33h.938v.91h-1.862l-.126-1.05h-.07c-.056.084-.14.191-.252.322-.112.13-.259.259-.441.385a2.749 2.749 0 01-1.589.469c-.69 0-1.237-.177-1.638-.532-.401-.355-.602-.84-.602-1.456 0-.476.105-.873.315-1.19.21-.317.511-.56.903-.728.392-.168.866-.266 1.421-.294a9.544 9.544 0 011.869.112c.047-.43.054-.786.021-1.071-.033-.285-.107-.511-.224-.679a.938.938 0 00-.49-.357 2.482 2.482 0 00-.777-.105c-.42 0-.821.058-1.204.175-.383.117-.723.236-1.022.357l-.35-.812zm2.058 5.642c.261 0 .504-.042.728-.126a2.22 2.22 0 00.588-.322 2.133 2.133 0 00.672-.868v-.98a7.92 7.92 0 00-1.344-.126c-.41 0-.765.044-1.064.133-.299.089-.532.226-.7.413-.168.187-.252.43-.252.728 0 .308.105.576.315.805.21.229.562.343 1.057.343zm8.498.812v-4.662c0-.196-.007-.385-.021-.567a1.9 1.9 0 00-.098-.49.786.786 0 00-.224-.343.57.57 0 00-.385-.126c-.317 0-.586.13-.805.392-.22.261-.385.588-.497.98V60.8h-1.064v-7h.728l.21.854h.056c.093-.14.184-.273.273-.399.089-.126.191-.236.308-.329.117-.093.254-.166.413-.217.159-.051.36-.077.602-.077.14 0 .285.021.434.063.15.042.287.107.413.196.126.089.236.208.329.357.093.15.154.331.182.546.215-.364.455-.649.721-.854.266-.205.632-.308 1.099-.308.308 0 .558.051.749.154.191.103.34.25.448.441.107.191.182.42.224.686.042.266.063.562.063.889V60.8h-1.064v-4.76c0-.196-.01-.38-.028-.553a1.764 1.764 0 00-.105-.455.752.752 0 00-.21-.308.536.536 0 00-.357-.112c-.327 0-.602.13-.826.392-.224.261-.392.635-.504 1.12V60.8h-1.064zm12.138-.882c-.168.15-.366.29-.595.42a4.39 4.39 0 01-.749.336c-.27.093-.553.166-.847.217-.294.051-.59.077-.889.077-.56 0-1.055-.086-1.484-.259a2.858 2.858 0 01-1.078-.742 3.234 3.234 0 01-.658-1.155 4.767 4.767 0 01-.224-1.512c0-.588.082-1.11.245-1.568.163-.457.399-.84.707-1.148a3.08 3.08 0 011.12-.707 4.187 4.187 0 011.47-.245c.392 0 .78.051 1.162.154.383.103.721.296 1.015.581.294.285.52.677.679 1.176.159.5.215 1.146.168 1.939h-5.418c0 .84.226 1.468.679 1.883.453.415 1.057.623 1.813.623.252 0 .502-.03.749-.091.247-.06.483-.133.707-.217a3.72 3.72 0 00.595-.28c.173-.103.306-.196.399-.28l.434.798zm-2.954-5.362c-.308 0-.6.033-.875.098a1.995 1.995 0 00-.728.329c-.21.154-.383.355-.518.602s-.222.553-.259.917h4.354c-.047-.616-.245-1.094-.595-1.435-.35-.34-.81-.511-1.379-.511z"/><path id="}" fill="#7E7C7B" d="M231 61.724c0 .756-.198 1.328-.595 1.715-.397.387-.922.581-1.575.581h-2.03v-.98h1.526c.57 0 .975-.135 1.218-.406.243-.27.364-.69.364-1.26V60.03c0-.364.07-.695.21-.994.14-.299.308-.558.504-.777.196-.22.397-.392.602-.518.205-.126.373-.198.504-.217v-.084c-.13-.019-.299-.086-.504-.203a2.7 2.7 0 01-1.106-1.225c-.14-.299-.21-.64-.21-1.022v-1.358c0-.55-.114-.966-.343-1.246-.229-.28-.637-.42-1.225-.42h-1.54v-.98h2.03c.317 0 .609.058.875.175.266.117.495.278.686.483.191.205.34.448.448.728.107.28.161.588.161.924v1.428c0 .43.068.789.203 1.078.135.29.303.525.504.707.2.182.415.313.644.392.229.08.432.119.609.119V58c-.177 0-.38.047-.609.14a2.011 2.011 0 00-.644.434 2.44 2.44 0 00-.504.735c-.135.294-.203.642-.203 1.043v1.372z"/><path id="`" fill="#478964" d="M239.26 52.806h-.77l-1.666-2.086h1.526z"/><path id=");}" fill="#7E7C7B" d="M252.882 62.802a4.965 4.965 0 001.337-.497 4.15 4.15 0 001.204-.994c.36-.425.649-.957.868-1.596.22-.64.329-1.412.329-2.317 0-.896-.091-1.659-.273-2.289-.182-.63-.439-1.157-.77-1.582a3.928 3.928 0 00-1.183-1.022 7.086 7.086 0 00-1.512-.623l.35-.882c.607.13 1.183.352 1.729.665a4.984 4.984 0 011.435 1.246c.41.518.737 1.148.98 1.89s.364 1.608.364 2.597c0 .999-.119 1.862-.357 2.59-.238.728-.56 1.344-.966 1.848a5.036 5.036 0 01-1.428 1.225 6.964 6.964 0 01-1.757.707l-.35-.966zm9.604-2.772c0-.28.091-.506.273-.679.182-.173.418-.259.707-.259.355 0 .63.124.826.371.196.247.294.595.294 1.043a2.36 2.36 0 01-.637 1.659 2.465 2.465 0 01-.588.462c-.21.117-.404.203-.581.259l-.35-.546c.336-.13.625-.317.868-.56.243-.243.364-.537.364-.882-.13.028-.233.042-.308.042-.27 0-.483-.077-.637-.231-.154-.154-.231-.38-.231-.679zm.126-5.502c0-.299.084-.53.252-.693.168-.163.392-.245.672-.245.299 0 .532.082.7.245.168.163.252.394.252.693 0 .27-.084.495-.252.672-.168.177-.401.266-.7.266-.28 0-.504-.089-.672-.266a.938.938 0 01-.252-.672zM4.2 78.724c0 .756-.198 1.328-.595 1.715-.397.387-.922.581-1.575.581H0v-.98h1.526c.57 0 .975-.135 1.218-.406.243-.27.364-.69.364-1.26V77.03c0-.364.07-.695.21-.994.14-.299.308-.558.504-.777.196-.22.397-.392.602-.518.205-.126.373-.198.504-.217v-.084c-.13-.019-.299-.086-.504-.203a2.7 2.7 0 01-1.106-1.225c-.14-.299-.21-.64-.21-1.022v-1.358c0-.55-.114-.966-.343-1.246-.229-.28-.637-.42-1.225-.42H0v-.98h2.03c.317 0 .609.058.875.175.266.117.495.278.686.483.191.205.34.448.448.728.107.28.161.588.161.924v1.428c0 .43.068.789.203 1.078.135.29.303.525.504.707.2.182.415.313.644.392.229.08.432.119.609.119V75c-.177 0-.38.047-.609.14a2.011 2.011 0 00-.644.434 2.44 2.44 0 00-.504.735c-.135.294-.203.642-.203 1.043v1.372z"/></g><text id="execution-start" fill="#7E7C7B" font-family="PTMono-Regular, PT Mono" font-size="12" font-weight="normal"><tspan x="20" y="30">execution start</tspan></text><g id="Group-3" transform="translate(311)"><path id="Rectangle-1" fill="#FBF2EC" stroke="#DBAF88" stroke-width="2" d="M1 1h204v48H1z"/><text id="phrase:-<uninitializ" fill="#AF6E24" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="8" y="21">phrase: <uninitialized></tspan> <tspan x="8" y="36">say: function</tspan></text></g><g id="Group-3-Copy" opacity=".5" transform="translate(311 61)"><path id="Rectangle-1" fill="#FBF2EC" stroke="#DBAF88" stroke-width="2" d="M1 1h204v29H1z"/><text id="..." fill="#AF6E24" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="88" y="16">...</tspan></text></g><path id="Line" stroke="#7E7C7B" stroke-dasharray="2,4,2,4" stroke-linecap="square" d="M244.5 26.5h50"/><path id="Line-Copy" stroke="#7E7C7B" stroke-dasharray="2,4,2,4" stroke-linecap="square" d="M244.5 77.5h50"/></g></g></svg> \ No newline at end of file diff --git a/1-js/06-advanced-functions/03-closure/closure-makecounter-environment.svg b/1-js/06-advanced-functions/03-closure/closure-makecounter-environment.svg new file mode 100644 index 000000000..f78441712 --- /dev/null +++ b/1-js/06-advanced-functions/03-closure/closure-makecounter-environment.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" width="775" height="172" viewBox="0 0 775 172"><defs><style>@import url(https://fonts.googleapis.com/css?family=Open+Sans:bold,italic,bolditalic%7CPT+Mono);@font-face{font-family:'PT Mono';font-weight:700;font-style:normal;src:local('PT MonoBold'),url(/font/PTMonoBold.woff2) format('woff2'),url(/font/PTMonoBold.woff) format('woff'),url(/font/PTMonoBold.ttf) format('truetype')}</style></defs><g id="closure" fill="none" fill-rule="evenodd" stroke="none" stroke-width="1"><g id="closure-makecounter-environment.svg"><g id="function-makeCounter" fill-rule="nonzero" transform="translate(5 12)"><path id="function" fill="#1C85B5" d="M.112 9.968V9.03h1.666V3.906H.112v-.938h1.666v-.392c0-.877.229-1.512.686-1.904.457-.392 1.11-.588 1.96-.588.308 0 .583.019.826.056.243.037.504.112.784.224l-.252.91a2.862 2.862 0 00-.7-.203 4.295 4.295 0 00-.616-.049c-.616 0-1.036.152-1.26.455-.224.303-.336.8-.336 1.491h2.898v.938H2.87V9.03h2.898v.938H.112zm12.25-7h1.988v4.774c0 .457.028.896.084 1.316h.938v.91H13.51l-.042-1.19h-.056a2.938 2.938 0 01-.966.98c-.401.252-.887.378-1.456.378-.43 0-.796-.049-1.099-.147a1.556 1.556 0 01-.749-.511c-.196-.243-.34-.567-.434-.973-.093-.406-.14-.912-.14-1.519v-3.08H7.63v-.938h2.03v3.794c0 .383.016.726.049 1.029.033.303.1.56.203.77.103.21.254.369.455.476.2.107.469.161.805.161.485 0 .908-.159 1.267-.476.36-.317.632-.714.819-1.19V3.906h-.896v-.938zm4.62 2.45a14.05 14.05 0 00-.063-1.176 4.657 4.657 0 00-.049-.364h-.938v-.91h1.876l.126 1.134h.07c.093-.159.217-.315.371-.469a2.91 2.91 0 011.225-.721c.252-.075.518-.112.798-.112.43 0 .81.047 1.141.14.331.093.607.259.826.497.22.238.385.56.497.966.112.406.168.922.168 1.547v4.018h-1.092V6.16c0-.775-.126-1.358-.378-1.75-.252-.392-.71-.588-1.372-.588-.243 0-.478.049-.707.147a2.44 2.44 0 00-.623.385c-.187.159-.35.343-.49.553-.14.21-.243.432-.308.665v4.396h-1.078v-4.55zm13.244-1.372a5.531 5.531 0 00-.693-.189 3.61 3.61 0 00-.735-.077c-.915 0-1.596.215-2.044.644-.448.43-.672 1.11-.672 2.044 0 .41.065.777.196 1.099.13.322.317.595.56.819.243.224.534.397.875.518.34.121.716.182 1.127.182.439 0 .866-.075 1.281-.224.415-.15.763-.345 1.043-.588l.49.812c-.13.112-.294.229-.49.35a4.837 4.837 0 01-1.533.602 4.962 4.962 0 01-1.015.098c-.607 0-1.141-.086-1.603-.259a3.045 3.045 0 01-1.155-.742 3.176 3.176 0 01-.7-1.162 4.525 4.525 0 01-.238-1.505c0-.588.082-1.11.245-1.568.163-.457.399-.84.707-1.148a3.08 3.08 0 011.12-.707 4.187 4.187 0 011.47-.245c.69 0 1.253.06 1.687.182.434.121.8.257 1.099.406l-.014.042v1.946h-1.008v-1.33zm2.688-1.078h1.666V1.582l1.092-.308v1.694h3.738v.938h-3.738V7.21c0 .681.166 1.185.497 1.512.331.327.805.49 1.421.49.42 0 .786-.08 1.099-.238.313-.159.595-.331.847-.518l.364.826a3.938 3.938 0 01-1.169.63 4.182 4.182 0 01-1.393.238 3.41 3.41 0 01-1.057-.161 2.426 2.426 0 01-.875-.497 2.38 2.38 0 01-.602-.861c-.15-.35-.224-.768-.224-1.253V3.906h-1.666v-.938zm9.436 7V9.03h2.436V3.906H42.35v-.938h3.556V9.03h2.38v.938H42.35zM44.408.98c0-.252.084-.469.252-.651a.838.838 0 01.644-.273c.27 0 .497.091.679.273a.889.889 0 01.273.651.806.806 0 01-.273.616.963.963 0 01-.679.252.872.872 0 01-.644-.252.838.838 0 01-.252-.616zm5.67 5.488c0-1.13.294-2.023.882-2.681.588-.658 1.428-.987 2.52-.987.588 0 1.094.096 1.519.287.425.191.777.45 1.057.777.28.327.488.714.623 1.162.135.448.203.929.203 1.442 0 .56-.075 1.066-.224 1.519-.15.453-.369.838-.658 1.155-.29.317-.646.562-1.071.735a3.82 3.82 0 01-1.449.259c-.579 0-1.083-.096-1.512-.287a2.967 2.967 0 01-1.064-.777 3.168 3.168 0 01-.623-1.162 4.963 4.963 0 01-.203-1.442zm1.162 0c0 .327.04.653.119.98.08.327.208.62.385.882.177.261.408.471.693.63.285.159.632.238 1.043.238.747 0 1.309-.231 1.687-.693.378-.462.567-1.141.567-2.037 0-.336-.04-.665-.119-.987a2.608 2.608 0 00-.392-.875 2.066 2.066 0 00-.7-.63c-.285-.159-.632-.238-1.043-.238-.747 0-1.307.229-1.68.686-.373.457-.56 1.139-.56 2.044zm7.742-1.05a14.05 14.05 0 00-.063-1.176 4.657 4.657 0 00-.049-.364h-.938v-.91h1.876l.126 1.134h.07c.093-.159.217-.315.371-.469a2.91 2.91 0 011.225-.721c.252-.075.518-.112.798-.112.43 0 .81.047 1.141.14.331.093.607.259.826.497.22.238.385.56.497.966.112.406.168.922.168 1.547v4.018h-1.092V6.16c0-.775-.126-1.358-.378-1.75-.252-.392-.71-.588-1.372-.588-.243 0-.478.049-.707.147a2.44 2.44 0 00-.623.385c-.187.159-.35.343-.49.553-.14.21-.243.432-.308.665v4.396h-1.078v-4.55z"/><path id="makeCounter" fill="#181717" d="M78.148 9.968V5.306c0-.196-.007-.385-.021-.567a1.9 1.9 0 00-.098-.49.786.786 0 00-.224-.343.57.57 0 00-.385-.126c-.317 0-.586.13-.805.392-.22.261-.385.588-.497.98v4.816h-1.064v-7h.728l.21.854h.056c.093-.14.184-.273.273-.399.089-.126.191-.236.308-.329.117-.093.254-.166.413-.217.159-.051.36-.077.602-.077.14 0 .285.021.434.063.15.042.287.107.413.196.126.089.236.208.329.357.093.15.154.331.182.546.215-.364.455-.649.721-.854.266-.205.632-.308 1.099-.308.308 0 .558.051.749.154.191.103.34.25.448.441.107.191.182.42.224.686.042.266.063.562.063.889v4.998h-1.064v-4.76c0-.196-.01-.38-.028-.553a1.764 1.764 0 00-.105-.455.752.752 0 00-.21-.308.536.536 0 00-.357-.112c-.327 0-.602.13-.826.392-.224.261-.392.635-.504 1.12v4.676h-1.064zm6.244-6.454a4.447 4.447 0 011.358-.504 7.423 7.423 0 011.484-.154c.476 0 .866.075 1.169.224.303.15.541.343.714.581.173.238.29.509.35.812.06.303.091.609.091.917 0 .355-.01.733-.028 1.134-.019.401-.033.803-.042 1.204 0 .467.028.91.084 1.33h.938v.91h-1.862l-.126-1.05h-.07c-.056.084-.14.191-.252.322-.112.13-.259.259-.441.385a2.749 2.749 0 01-1.589.469c-.69 0-1.237-.177-1.638-.532-.401-.355-.602-.84-.602-1.456 0-.476.105-.873.315-1.19.21-.317.511-.56.903-.728.392-.168.866-.266 1.421-.294a9.544 9.544 0 011.869.112c.047-.43.054-.786.021-1.071-.033-.285-.107-.511-.224-.679a.938.938 0 00-.49-.357 2.482 2.482 0 00-.777-.105c-.42 0-.821.058-1.204.175-.383.117-.723.236-1.022.357l-.35-.812zm2.058 5.642c.261 0 .504-.042.728-.126a2.22 2.22 0 00.588-.322 2.133 2.133 0 00.672-.868v-.98a7.92 7.92 0 00-1.344-.126c-.41 0-.765.044-1.064.133-.299.089-.532.226-.7.413-.168.187-.252.43-.252.728 0 .308.105.576.315.805.21.229.562.343 1.057.343zM91.616.168h2.268v5.796h.77l2.758-2.996h1.316l-3.094 3.318 2.548 2.744h.91v.938H97.65l-2.996-3.164h-.77v3.164h-1.078V1.106h-1.19V.168zm15.47 8.918c-.168.15-.366.29-.595.42a4.39 4.39 0 01-.749.336c-.27.093-.553.166-.847.217-.294.051-.59.077-.889.077-.56 0-1.055-.086-1.484-.259a2.858 2.858 0 01-1.078-.742 3.234 3.234 0 01-.658-1.155 4.767 4.767 0 01-.224-1.512c0-.588.082-1.11.245-1.568.163-.457.399-.84.707-1.148a3.08 3.08 0 011.12-.707 4.187 4.187 0 011.47-.245c.392 0 .78.051 1.162.154.383.103.721.296 1.015.581.294.285.52.677.679 1.176.159.5.215 1.146.168 1.939h-5.418c0 .84.226 1.468.679 1.883.453.415 1.057.623 1.813.623.252 0 .502-.03.749-.091.247-.06.483-.133.707-.217a3.72 3.72 0 00.595-.28c.173-.103.306-.196.399-.28l.434.798zm-2.954-5.362c-.308 0-.6.033-.875.098a1.995 1.995 0 00-.728.329c-.21.154-.383.355-.518.602s-.222.553-.259.917h4.354c-.047-.616-.245-1.094-.595-1.435-.35-.34-.81-.511-1.379-.511zm10.36-2.492a2.466 2.466 0 00-.525-.147 4.192 4.192 0 00-.693-.049c-.383 0-.758.07-1.127.21-.369.14-.695.369-.98.686-.285.317-.513.733-.686 1.246-.173.513-.259 1.143-.259 1.89 0 .672.077 1.26.231 1.764.154.504.369.924.644 1.26.275.336.607.588.994.756.387.168.819.252 1.295.252.243 0 .469-.021.679-.063.21-.042.404-.1.581-.175v-1.4h1.036v1.89l.014.028a3.66 3.66 0 01-1.064.539c-.43.145-.952.217-1.568.217-.588 0-1.132-.1-1.631-.301a3.41 3.41 0 01-1.295-.917c-.364-.41-.646-.936-.847-1.575-.2-.64-.301-1.398-.301-2.275 0-.915.112-1.692.336-2.331.224-.64.527-1.162.91-1.568a3.452 3.452 0 011.337-.889 4.697 4.697 0 011.631-.28c.317 0 .593.012.826.035.233.023.439.056.616.098s.334.096.469.161c.135.065.268.14.399.224h.014V2.73h-1.036V1.232zm2.786 5.236c0-1.13.294-2.023.882-2.681.588-.658 1.428-.987 2.52-.987.588 0 1.094.096 1.519.287.425.191.777.45 1.057.777.28.327.488.714.623 1.162.135.448.203.929.203 1.442 0 .56-.075 1.066-.224 1.519-.15.453-.369.838-.658 1.155-.29.317-.646.562-1.071.735a3.82 3.82 0 01-1.449.259c-.579 0-1.083-.096-1.512-.287a2.967 2.967 0 01-1.064-.777 3.168 3.168 0 01-.623-1.162 4.963 4.963 0 01-.203-1.442zm1.162 0c0 .327.04.653.119.98.08.327.208.62.385.882.177.261.408.471.693.63.285.159.632.238 1.043.238.747 0 1.309-.231 1.687-.693.378-.462.567-1.141.567-2.037 0-.336-.04-.665-.119-.987a2.608 2.608 0 00-.392-.875 2.066 2.066 0 00-.7-.63c-.285-.159-.632-.238-1.043-.238-.747 0-1.307.229-1.68.686-.373.457-.56 1.139-.56 2.044zm11.522-3.5h1.988v4.774c0 .457.028.896.084 1.316h.938v.91h-1.862l-.042-1.19h-.056a2.938 2.938 0 01-.966.98c-.401.252-.887.378-1.456.378-.43 0-.796-.049-1.099-.147a1.556 1.556 0 01-.749-.511c-.196-.243-.34-.567-.434-.973-.093-.406-.14-.912-.14-1.519v-3.08h-.938v-.938h2.03v3.794c0 .383.016.726.049 1.029.033.303.1.56.203.77.103.21.254.369.455.476.2.107.469.161.805.161.485 0 .908-.159 1.267-.476.36-.317.632-.714.819-1.19V3.906h-.896v-.938zm4.62 2.45a14.051 14.051 0 00-.063-1.176 4.657 4.657 0 00-.049-.364h-.938v-.91h1.876l.126 1.134h.07c.093-.159.217-.315.371-.469a2.91 2.91 0 011.225-.721c.252-.075.518-.112.798-.112.43 0 .81.047 1.141.14.331.093.607.259.826.497.22.238.385.56.497.966.112.406.168.922.168 1.547v4.018h-1.092V6.16c0-.775-.126-1.358-.378-1.75-.252-.392-.71-.588-1.372-.588-.243 0-.478.049-.707.147a2.44 2.44 0 00-.623.385c-.187.159-.35.343-.49.553-.14.21-.243.432-.308.665v4.396h-1.078v-4.55zm7.532-2.45h1.666V1.582l1.092-.308v1.694h3.738v.938h-3.738V7.21c0 .681.166 1.185.497 1.512.331.327.805.49 1.421.49.42 0 .786-.08 1.099-.238.313-.159.595-.331.847-.518l.364.826a3.938 3.938 0 01-1.169.63 4.182 4.182 0 01-1.393.238 3.41 3.41 0 01-1.057-.161 2.426 2.426 0 01-.875-.497 2.38 2.38 0 01-.602-.861c-.15-.35-.224-.768-.224-1.253V3.906h-1.666v-.938zm15.372 6.118c-.168.15-.366.29-.595.42a4.39 4.39 0 01-.749.336c-.27.093-.553.166-.847.217-.294.051-.59.077-.889.077-.56 0-1.055-.086-1.484-.259a2.858 2.858 0 01-1.078-.742 3.234 3.234 0 01-.658-1.155 4.767 4.767 0 01-.224-1.512c0-.588.082-1.11.245-1.568.163-.457.399-.84.707-1.148a3.08 3.08 0 011.12-.707 4.187 4.187 0 011.47-.245c.392 0 .78.051 1.162.154.383.103.721.296 1.015.581.294.285.52.677.679 1.176.159.5.215 1.146.168 1.939h-5.418c0 .84.226 1.468.679 1.883.453.415 1.057.623 1.813.623.252 0 .502-.03.749-.091.247-.06.483-.133.707-.217a3.72 3.72 0 00.595-.28c.173-.103.306-.196.399-.28l.434.798zm-2.954-5.362c-.308 0-.6.033-.875.098a1.995 1.995 0 00-.728.329c-.21.154-.383.355-.518.602s-.222.553-.259.917h4.354c-.047-.616-.245-1.094-.595-1.435-.35-.34-.81-.511-1.379-.511zm4.872 6.244V9.03h1.89V3.906h-1.89v-.938h2.618l.224.91h.07c.317-.29.672-.537 1.064-.742.392-.205.859-.308 1.4-.308.317 0 .572.06.763.182.191.121.34.299.448.532.107.233.18.516.217.847.037.331.056.707.056 1.127l-.98.014c0-.597-.058-1.036-.175-1.316-.117-.28-.329-.42-.637-.42-.29 0-.55.042-.784.126a2.565 2.565 0 00-.609.308c-.173.121-.32.243-.441.364s-.21.224-.266.308v4.13h2.688v.938h-5.656z"/><path id="(){" fill="#7E7C7B" d="M172.928 12.936a6.964 6.964 0 01-1.757-.707 5.036 5.036 0 01-1.428-1.225c-.406-.504-.728-1.12-.966-1.848s-.357-1.591-.357-2.59c0-.99.121-1.855.364-2.597s.57-1.372.98-1.89c.41-.518.889-.933 1.435-1.246a6.005 6.005 0 011.729-.665l.35.882a7.086 7.086 0 00-1.512.623 3.928 3.928 0 00-1.183 1.022c-.331.425-.588.952-.77 1.582-.182.63-.273 1.393-.273 2.289 0 .905.11 1.678.329 2.317.22.64.509 1.171.868 1.596.36.425.76.756 1.204.994.443.238.889.404 1.337.497l-.35.966zm4.354-.966a4.965 4.965 0 001.337-.497 4.15 4.15 0 001.204-.994c.36-.425.649-.957.868-1.596.22-.64.329-1.412.329-2.317 0-.896-.091-1.659-.273-2.289-.182-.63-.439-1.157-.77-1.582a3.928 3.928 0 00-1.183-1.022 7.086 7.086 0 00-1.512-.623l.35-.882c.607.13 1.183.352 1.729.665a4.984 4.984 0 011.435 1.246c.41.518.737 1.148.98 1.89s.364 1.608.364 2.597c0 .999-.119 1.862-.357 2.59-.238.728-.56 1.344-.966 1.848a5.036 5.036 0 01-1.428 1.225 6.964 6.964 0 01-1.757.707l-.35-.966zm17.878-2.45c0-.401-.068-.749-.203-1.043a2.44 2.44 0 00-.504-.735c-.2-.196-.415-.34-.644-.434a1.641 1.641 0 00-.609-.14v-.98c.177 0 .38-.04.609-.119.229-.08.443-.21.644-.392.2-.182.369-.418.504-.707.135-.29.203-.649.203-1.078V2.464c0-.336.054-.644.161-.924a2.22 2.22 0 01.448-.728c.191-.205.42-.366.686-.483.266-.117.558-.175.875-.175h2.03v.98h-1.54c-.588 0-.996.14-1.225.42-.229.28-.343.695-.343 1.246v1.358c0 .383-.07.723-.21 1.022a2.7 2.7 0 01-1.106 1.225c-.205.117-.373.184-.504.203v.084c.121.019.285.091.49.217.205.126.406.299.602.518.196.22.366.478.511.777.145.299.217.63.217.994v1.344c0 .57.121.99.364 1.26s.649.406 1.218.406h1.526v.98h-2.03c-.653 0-1.178-.194-1.575-.581-.397-.387-.595-.959-.595-1.715V9.52z"/><path id="let" fill="#1C85B5" d="M17.346 17.168h2.324v7.448c0 .57.096.97.287 1.204.191.233.474.35.847.35.261 0 .511-.047.749-.14.238-.093.502-.252.791-.476l.504.77c-.15.13-.313.247-.49.35a3.638 3.638 0 01-1.106.42 2.963 2.963 0 01-1.442-.077 1.579 1.579 0 01-.679-.427 1.897 1.897 0 01-.413-.777c-.093-.322-.14-.721-.14-1.197v-6.51h-1.232v-.938zm14.14 8.918c-.168.15-.366.29-.595.42a4.39 4.39 0 01-.749.336c-.27.093-.553.166-.847.217-.294.051-.59.077-.889.077-.56 0-1.055-.086-1.484-.259a2.858 2.858 0 01-1.078-.742 3.234 3.234 0 01-.658-1.155 4.767 4.767 0 01-.224-1.512c0-.588.082-1.11.245-1.568.163-.457.399-.84.707-1.148a3.08 3.08 0 011.12-.707 4.187 4.187 0 011.47-.245c.392 0 .78.051 1.162.154.383.103.721.296 1.015.581.294.285.52.677.679 1.176.159.5.215 1.146.168 1.939H26.11c0 .84.226 1.468.679 1.883.453.415 1.057.623 1.813.623.252 0 .502-.03.749-.091.247-.06.483-.133.707-.217a3.72 3.72 0 00.595-.28c.173-.103.306-.196.399-.28l.434.798zm-2.954-5.362c-.308 0-.6.033-.875.098a1.995 1.995 0 00-.728.329c-.21.154-.383.355-.518.602s-.222.553-.259.917h4.354c-.047-.616-.245-1.094-.595-1.435-.35-.34-.81-.511-1.379-.511zm4.382-.756h1.666v-1.386l1.092-.308v1.694h3.738v.938h-3.738v3.304c0 .681.166 1.185.497 1.512.331.327.805.49 1.421.49.42 0 .786-.08 1.099-.238.313-.159.595-.331.847-.518l.364.826a3.938 3.938 0 01-1.169.63 4.182 4.182 0 01-1.393.238 3.41 3.41 0 01-1.057-.161 2.426 2.426 0 01-.875-.497 2.38 2.38 0 01-.602-.861c-.15-.35-.224-.768-.224-1.253v-3.472h-1.666v-.938z"/><path id="count" fill="#181717" d="M55.426 21.046a5.531 5.531 0 00-.693-.189 3.61 3.61 0 00-.735-.077c-.915 0-1.596.215-2.044.644-.448.43-.672 1.11-.672 2.044 0 .41.065.777.196 1.099.13.322.317.595.56.819.243.224.534.397.875.518.34.121.716.182 1.127.182.439 0 .866-.075 1.281-.224.415-.15.763-.345 1.043-.588l.49.812c-.13.112-.294.229-.49.35a4.837 4.837 0 01-1.533.602 4.962 4.962 0 01-1.015.098c-.607 0-1.141-.086-1.603-.259a3.045 3.045 0 01-1.155-.742 3.176 3.176 0 01-.7-1.162 4.525 4.525 0 01-.238-1.505c0-.588.082-1.11.245-1.568.163-.457.399-.84.707-1.148a3.08 3.08 0 011.12-.707 4.187 4.187 0 011.47-.245c.69 0 1.253.06 1.687.182.434.121.8.257 1.099.406l-.014.042v1.946h-1.008v-1.33zm3.052 2.422c0-1.13.294-2.023.882-2.681.588-.658 1.428-.987 2.52-.987.588 0 1.094.096 1.519.287.425.191.777.45 1.057.777.28.327.488.714.623 1.162.135.448.203.929.203 1.442 0 .56-.075 1.066-.224 1.519-.15.453-.369.838-.658 1.155-.29.317-.646.562-1.071.735a3.82 3.82 0 01-1.449.259c-.579 0-1.083-.096-1.512-.287a2.967 2.967 0 01-1.064-.777 3.168 3.168 0 01-.623-1.162 4.963 4.963 0 01-.203-1.442zm1.162 0c0 .327.04.653.119.98.08.327.208.62.385.882.177.261.408.471.693.63.285.159.632.238 1.043.238.747 0 1.309-.231 1.687-.693.378-.462.567-1.141.567-2.037 0-.336-.04-.665-.119-.987a2.608 2.608 0 00-.392-.875 2.066 2.066 0 00-.7-.63c-.285-.159-.632-.238-1.043-.238-.747 0-1.307.229-1.68.686-.373.457-.56 1.139-.56 2.044zm11.522-3.5h1.988v4.774c0 .457.028.896.084 1.316h.938v.91H72.31l-.042-1.19h-.056a2.938 2.938 0 01-.966.98c-.401.252-.887.378-1.456.378-.43 0-.796-.049-1.099-.147a1.556 1.556 0 01-.749-.511c-.196-.243-.34-.567-.434-.973-.093-.406-.14-.912-.14-1.519v-3.08h-.938v-.938h2.03v3.794c0 .383.016.726.049 1.029.033.303.1.56.203.77.103.21.254.369.455.476.2.107.469.161.805.161.485 0 .908-.159 1.267-.476.36-.317.632-.714.819-1.19v-3.626h-.896v-.938zm4.62 2.45a14.05 14.05 0 00-.063-1.176 4.657 4.657 0 00-.049-.364h-.938v-.91h1.876l.126 1.134h.07c.093-.159.217-.315.371-.469a2.91 2.91 0 011.225-.721c.252-.075.518-.112.798-.112.43 0 .81.047 1.141.14.331.093.607.259.826.497.22.238.385.56.497.966.112.406.168.922.168 1.547v4.018h-1.092V23.16c0-.775-.126-1.358-.378-1.75-.252-.392-.71-.588-1.372-.588-.243 0-.478.049-.707.147a2.44 2.44 0 00-.623.385c-.187.159-.35.343-.49.553-.14.21-.243.432-.308.665v4.396h-1.078v-4.55zm7.532-2.45h1.666v-1.386l1.092-.308v1.694h3.738v.938h-3.738v3.304c0 .681.166 1.185.497 1.512.331.327.805.49 1.421.49.42 0 .786-.08 1.099-.238.313-.159.595-.331.847-.518l.364.826a3.938 3.938 0 01-1.169.63 4.182 4.182 0 01-1.393.238 3.41 3.41 0 01-1.057-.161 2.426 2.426 0 01-.875-.497 2.38 2.38 0 01-.602-.861c-.15-.35-.224-.768-.224-1.253v-3.472h-1.666v-.938z"/><path id="=" fill="#DBAF88" d="M100.632 20.57h6.496v1.008h-6.496V20.57zm0 2.296h6.496v1.008h-6.496v-1.008z"/><path id="0" fill="#A7333A" d="M117.25 22.068c0-.793.07-1.505.21-2.135.14-.63.35-1.162.63-1.596.28-.434.635-.765 1.064-.994.43-.229.938-.343 1.526-.343.625 0 1.155.112 1.589.336.434.224.786.55 1.057.98.27.43.467.959.588 1.589.121.63.182 1.351.182 2.163a9.88 9.88 0 01-.21 2.135c-.14.63-.35 1.162-.63 1.596-.28.434-.635.765-1.064.994-.43.229-.938.343-1.526.343-.616 0-1.141-.124-1.575-.371a2.956 2.956 0 01-1.064-1.043c-.275-.448-.474-.982-.595-1.603a10.713 10.713 0 01-.182-2.051zm5.698 0c0-.495-.028-.966-.084-1.414l-4.158 3.794c.159.532.397.957.714 1.274.317.317.733.476 1.246.476.821 0 1.407-.34 1.757-1.022.35-.681.525-1.717.525-3.108zm-4.536 0c0 .233.007.457.021.672.014.215.03.425.049.63l4.172-3.78c-.159-.504-.394-.905-.707-1.204-.313-.299-.735-.448-1.267-.448-.83 0-1.416.343-1.757 1.029-.34.686-.511 1.72-.511 3.101z"/><path id=";" fill="#7E7C7B" d="M128.086 26.198c0-.28.091-.506.273-.679.182-.173.418-.259.707-.259.355 0 .63.124.826.371.196.247.294.595.294 1.043a2.36 2.36 0 01-.637 1.659 2.465 2.465 0 01-.588.462c-.21.117-.404.203-.581.259l-.35-.546c.336-.13.625-.317.868-.56.243-.243.364-.537.364-.882-.13.028-.233.042-.308.042-.27 0-.483-.077-.637-.231-.154-.154-.231-.38-.231-.679zm.126-5.502c0-.299.084-.53.252-.693.168-.163.392-.245.672-.245.299 0 .532.082.7.245.168.163.252.394.252.693 0 .27-.084.495-.252.672-.168.177-.401.266-.7.266-.28 0-.504-.089-.672-.266a.938.938 0 01-.252-.672z"/><path id="returnfunction(){" fill="#C06334" d="M16.604 60.968v-.938h1.89v-5.124h-1.89v-.938h2.618l.224.91h.07c.317-.29.672-.537 1.064-.742.392-.205.859-.308 1.4-.308.317 0 .572.06.763.182.191.121.34.299.448.532.107.233.18.516.217.847.037.331.056.707.056 1.127l-.98.014c0-.597-.058-1.036-.175-1.316-.117-.28-.329-.42-.637-.42-.29 0-.55.042-.784.126a2.565 2.565 0 00-.609.308c-.173.121-.32.243-.441.364s-.21.224-.266.308v4.13h2.688v.938h-5.656zm14.882-.882c-.168.15-.366.29-.595.42a4.39 4.39 0 01-.749.336c-.27.093-.553.166-.847.217-.294.051-.59.077-.889.077-.56 0-1.055-.086-1.484-.259a2.858 2.858 0 01-1.078-.742 3.234 3.234 0 01-.658-1.155 4.767 4.767 0 01-.224-1.512c0-.588.082-1.11.245-1.568.163-.457.399-.84.707-1.148a3.08 3.08 0 011.12-.707 4.187 4.187 0 011.47-.245c.392 0 .78.051 1.162.154.383.103.721.296 1.015.581.294.285.52.677.679 1.176.159.5.215 1.146.168 1.939H26.11c0 .84.226 1.468.679 1.883.453.415 1.057.623 1.813.623.252 0 .502-.03.749-.091.247-.06.483-.133.707-.217a3.72 3.72 0 00.595-.28c.173-.103.306-.196.399-.28l.434.798zm-2.954-5.362c-.308 0-.6.033-.875.098a1.995 1.995 0 00-.728.329c-.21.154-.383.355-.518.602s-.222.553-.259.917h4.354c-.047-.616-.245-1.094-.595-1.435-.35-.34-.81-.511-1.379-.511zm4.382-.756h1.666v-1.386l1.092-.308v1.694h3.738v.938h-3.738v3.304c0 .681.166 1.185.497 1.512.331.327.805.49 1.421.49.42 0 .786-.08 1.099-.238.313-.159.595-.331.847-.518l.364.826a3.938 3.938 0 01-1.169.63 4.182 4.182 0 01-1.393.238 3.41 3.41 0 01-1.057-.161 2.426 2.426 0 01-.875-.497 2.38 2.38 0 01-.602-.861c-.15-.35-.224-.768-.224-1.253v-3.472h-1.666v-.938zm13.048 0h1.988v4.774c0 .457.028.896.084 1.316h.938v.91H47.11l-.042-1.19h-.056a2.938 2.938 0 01-.966.98c-.401.252-.887.378-1.456.378-.43 0-.796-.049-1.099-.147a1.556 1.556 0 01-.749-.511c-.196-.243-.34-.567-.434-.973-.093-.406-.14-.912-.14-1.519v-3.08h-.938v-.938h2.03v3.794c0 .383.016.726.049 1.029.033.303.1.56.203.77.103.21.254.369.455.476.2.107.469.161.805.161.485 0 .908-.159 1.267-.476.36-.317.632-.714.819-1.19v-3.626h-.896v-.938zm4.242 7v-.938h1.89v-5.124h-1.89v-.938h2.618l.224.91h.07c.317-.29.672-.537 1.064-.742.392-.205.859-.308 1.4-.308.317 0 .572.06.763.182.191.121.34.299.448.532.107.233.18.516.217.847.037.331.056.707.056 1.127l-.98.014c0-.597-.058-1.036-.175-1.316-.117-.28-.329-.42-.637-.42-.29 0-.55.042-.784.126a2.565 2.565 0 00-.609.308c-.173.121-.32.243-.441.364s-.21.224-.266.308v4.13h2.688v.938h-5.656zm8.778-4.55a14.05 14.05 0 00-.063-1.176 4.657 4.657 0 00-.049-.364h-.938v-.91h1.876l.126 1.134h.07c.093-.159.217-.315.371-.469a2.91 2.91 0 011.225-.721c.252-.075.518-.112.798-.112.43 0 .81.047 1.141.14.331.093.607.259.826.497.22.238.385.56.497.966.112.406.168.922.168 1.547v4.018h-1.092V57.16c0-.775-.126-1.358-.378-1.75-.252-.392-.71-.588-1.372-.588-.243 0-.478.049-.707.147a2.44 2.44 0 00-.623.385c-.187.159-.35.343-.49.553-.14.21-.243.432-.308.665v4.396h-1.078v-4.55zm16.73 4.55v-.938h1.666v-5.124h-1.666v-.938h1.666v-.392c0-.877.229-1.512.686-1.904.457-.392 1.11-.588 1.96-.588.308 0 .583.019.826.056.243.037.504.112.784.224l-.252.91a2.862 2.862 0 00-.7-.203 4.295 4.295 0 00-.616-.049c-.616 0-1.036.152-1.26.455-.224.303-.336.8-.336 1.491h2.898v.938H78.47v5.124h2.898v.938h-5.656zm12.25-7h1.988v4.774c0 .457.028.896.084 1.316h.938v.91H89.11l-.042-1.19h-.056a2.938 2.938 0 01-.966.98c-.401.252-.887.378-1.456.378-.43 0-.796-.049-1.099-.147a1.556 1.556 0 01-.749-.511c-.196-.243-.34-.567-.434-.973-.093-.406-.14-.912-.14-1.519v-3.08h-.938v-.938h2.03v3.794c0 .383.016.726.049 1.029.033.303.1.56.203.77.103.21.254.369.455.476.2.107.469.161.805.161.485 0 .908-.159 1.267-.476.36-.317.632-.714.819-1.19v-3.626h-.896v-.938zm4.62 2.45a14.05 14.05 0 00-.063-1.176 4.657 4.657 0 00-.049-.364h-.938v-.91h1.876l.126 1.134h.07c.093-.159.217-.315.371-.469a2.91 2.91 0 011.225-.721c.252-.075.518-.112.798-.112.43 0 .81.047 1.141.14.331.093.607.259.826.497.22.238.385.56.497.966.112.406.168.922.168 1.547v4.018h-1.092V57.16c0-.775-.126-1.358-.378-1.75-.252-.392-.71-.588-1.372-.588-.243 0-.478.049-.707.147a2.44 2.44 0 00-.623.385c-.187.159-.35.343-.49.553-.14.21-.243.432-.308.665v4.396h-1.078v-4.55zm13.244-1.372a5.531 5.531 0 00-.693-.189 3.61 3.61 0 00-.735-.077c-.915 0-1.596.215-2.044.644-.448.43-.672 1.11-.672 2.044 0 .41.065.777.196 1.099.13.322.317.595.56.819.243.224.534.397.875.518.34.121.716.182 1.127.182.439 0 .866-.075 1.281-.224.415-.15.763-.345 1.043-.588l.49.812c-.13.112-.294.229-.49.35a4.837 4.837 0 01-1.533.602 4.962 4.962 0 01-1.015.098c-.607 0-1.141-.086-1.603-.259a3.045 3.045 0 01-1.155-.742 3.176 3.176 0 01-.7-1.162 4.525 4.525 0 01-.238-1.505c0-.588.082-1.11.245-1.568.163-.457.399-.84.707-1.148a3.08 3.08 0 011.12-.707 4.187 4.187 0 011.47-.245c.69 0 1.253.06 1.687.182.434.121.8.257 1.099.406l-.014.042v1.946h-1.008v-1.33zm2.688-1.078h1.666v-1.386l1.092-.308v1.694h3.738v.938h-3.738v3.304c0 .681.166 1.185.497 1.512.331.327.805.49 1.421.49.42 0 .786-.08 1.099-.238.313-.159.595-.331.847-.518l.364.826a3.938 3.938 0 01-1.169.63 4.182 4.182 0 01-1.393.238 3.41 3.41 0 01-1.057-.161 2.426 2.426 0 01-.875-.497 2.38 2.38 0 01-.602-.861c-.15-.35-.224-.768-.224-1.253v-3.472h-1.666v-.938zm9.436 7v-.938h2.436v-5.124h-2.436v-.938h3.556v6.062h2.38v.938h-5.936zm2.058-8.988c0-.252.084-.469.252-.651a.838.838 0 01.644-.273c.27 0 .497.091.679.273a.889.889 0 01.273.651.806.806 0 01-.273.616.963.963 0 01-.679.252.872.872 0 01-.644-.252.838.838 0 01-.252-.616zm5.67 5.488c0-1.13.294-2.023.882-2.681.588-.658 1.428-.987 2.52-.987.588 0 1.094.096 1.519.287.425.191.777.45 1.057.777.28.327.488.714.623 1.162.135.448.203.929.203 1.442 0 .56-.075 1.066-.224 1.519-.15.453-.369.838-.658 1.155-.29.317-.646.562-1.071.735a3.82 3.82 0 01-1.449.259c-.579 0-1.083-.096-1.512-.287a2.967 2.967 0 01-1.064-.777 3.168 3.168 0 01-.623-1.162 4.963 4.963 0 01-.203-1.442zm1.162 0c0 .327.04.653.119.98.08.327.208.62.385.882.177.261.408.471.693.63.285.159.632.238 1.043.238.747 0 1.309-.231 1.687-.693.378-.462.567-1.141.567-2.037 0-.336-.04-.665-.119-.987a2.608 2.608 0 00-.392-.875 2.066 2.066 0 00-.7-.63c-.285-.159-.632-.238-1.043-.238-.747 0-1.307.229-1.68.686-.373.457-.56 1.139-.56 2.044zm7.742-1.05a14.051 14.051 0 00-.063-1.176 4.657 4.657 0 00-.049-.364h-.938v-.91h1.876l.126 1.134h.07c.093-.159.217-.315.371-.469a2.91 2.91 0 011.225-.721c.252-.075.518-.112.798-.112.43 0 .81.047 1.141.14.331.093.607.259.826.497.22.238.385.56.497.966.112.406.168.922.168 1.547v4.018h-1.092V57.16c0-.775-.126-1.358-.378-1.75-.252-.392-.71-.588-1.372-.588-.243 0-.478.049-.707.147a2.44 2.44 0 00-.623.385c-.187.159-.35.343-.49.553-.14.21-.243.432-.308.665v4.396h-1.078v-4.55zm13.146 7.518a6.964 6.964 0 01-1.757-.707 5.036 5.036 0 01-1.428-1.225c-.406-.504-.728-1.12-.966-1.848s-.357-1.591-.357-2.59c0-.99.121-1.855.364-2.597s.57-1.372.98-1.89c.41-.518.889-.933 1.435-1.246a6.005 6.005 0 011.729-.665l.35.882a7.086 7.086 0 00-1.512.623 3.928 3.928 0 00-1.183 1.022c-.331.425-.588.952-.77 1.582-.182.63-.273 1.393-.273 2.289 0 .905.11 1.678.329 2.317.22.64.509 1.171.868 1.596.36.425.76.756 1.204.994.443.238.889.404 1.337.497l-.35.966zm4.354-.966a4.965 4.965 0 001.337-.497 4.15 4.15 0 001.204-.994c.36-.425.649-.957.868-1.596.22-.64.329-1.412.329-2.317 0-.896-.091-1.659-.273-2.289-.182-.63-.439-1.157-.77-1.582a3.928 3.928 0 00-1.183-1.022 7.086 7.086 0 00-1.512-.623l.35-.882c.607.13 1.183.352 1.729.665a4.984 4.984 0 011.435 1.246c.41.518.737 1.148.98 1.89s.364 1.608.364 2.597c0 .999-.119 1.862-.357 2.59-.238.728-.56 1.344-.966 1.848a5.036 5.036 0 01-1.428 1.225 6.964 6.964 0 01-1.757.707l-.35-.966zm17.878-2.45c0-.401-.068-.749-.203-1.043a2.44 2.44 0 00-.504-.735c-.2-.196-.415-.34-.644-.434a1.641 1.641 0 00-.609-.14v-.98c.177 0 .38-.04.609-.119.229-.08.443-.21.644-.392.2-.182.369-.418.504-.707.135-.29.203-.649.203-1.078v-1.428c0-.336.054-.644.161-.924a2.22 2.22 0 01.448-.728c.191-.205.42-.366.686-.483.266-.117.558-.175.875-.175h2.03v.98h-1.54c-.588 0-.996.14-1.225.42-.229.28-.343.695-.343 1.246v1.358c0 .383-.07.723-.21 1.022a2.7 2.7 0 01-1.106 1.225c-.205.117-.373.184-.504.203v.084c.121.019.285.091.49.217.205.126.406.299.602.518.196.22.366.478.511.777.145.299.217.63.217.994v1.344c0 .57.121.99.364 1.26s.649.406 1.218.406h1.526v.98h-2.03c-.653 0-1.178-.194-1.575-.581-.397-.387-.595-.959-.595-1.715V60.52z"/><path id="returncount++;" fill="#7E7C7B" d="M33.404 77.968v-.938h1.89v-5.124h-1.89v-.938h2.618l.224.91h.07c.317-.29.672-.537 1.064-.742.392-.205.859-.308 1.4-.308.317 0 .572.06.763.182.191.121.34.299.448.532.107.233.18.516.217.847.037.331.056.707.056 1.127l-.98.014c0-.597-.058-1.036-.175-1.316-.117-.28-.329-.42-.637-.42-.29 0-.55.042-.784.126a2.565 2.565 0 00-.609.308c-.173.121-.32.243-.441.364s-.21.224-.266.308v4.13h2.688v.938h-5.656zm14.882-.882c-.168.15-.366.29-.595.42a4.39 4.39 0 01-.749.336c-.27.093-.553.166-.847.217-.294.051-.59.077-.889.077-.56 0-1.055-.086-1.484-.259a2.858 2.858 0 01-1.078-.742 3.234 3.234 0 01-.658-1.155 4.767 4.767 0 01-.224-1.512c0-.588.082-1.11.245-1.568.163-.457.399-.84.707-1.148a3.08 3.08 0 011.12-.707 4.187 4.187 0 011.47-.245c.392 0 .78.051 1.162.154.383.103.721.296 1.015.581.294.285.52.677.679 1.176.159.5.215 1.146.168 1.939H42.91c0 .84.226 1.468.679 1.883.453.415 1.057.623 1.813.623.252 0 .502-.03.749-.091.247-.06.483-.133.707-.217a3.72 3.72 0 00.595-.28c.173-.103.306-.196.399-.28l.434.798zm-2.954-5.362c-.308 0-.6.033-.875.098a1.995 1.995 0 00-.728.329c-.21.154-.383.355-.518.602s-.222.553-.259.917h4.354c-.047-.616-.245-1.094-.595-1.435-.35-.34-.81-.511-1.379-.511zm4.382-.756h1.666v-1.386l1.092-.308v1.694h3.738v.938h-3.738v3.304c0 .681.166 1.185.497 1.512.331.327.805.49 1.421.49.42 0 .786-.08 1.099-.238.313-.159.595-.331.847-.518l.364.826a3.938 3.938 0 01-1.169.63 4.182 4.182 0 01-1.393.238 3.41 3.41 0 01-1.057-.161 2.426 2.426 0 01-.875-.497 2.38 2.38 0 01-.602-.861c-.15-.35-.224-.768-.224-1.253v-3.472h-1.666v-.938zm13.048 0h1.988v4.774c0 .457.028.896.084 1.316h.938v.91H63.91l-.042-1.19h-.056a2.938 2.938 0 01-.966.98c-.401.252-.887.378-1.456.378-.43 0-.796-.049-1.099-.147a1.556 1.556 0 01-.749-.511c-.196-.243-.34-.567-.434-.973-.093-.406-.14-.912-.14-1.519v-3.08h-.938v-.938h2.03v3.794c0 .383.016.726.049 1.029.033.303.1.56.203.77.103.21.254.369.455.476.2.107.469.161.805.161.485 0 .908-.159 1.267-.476.36-.317.632-.714.819-1.19v-3.626h-.896v-.938zm4.242 7v-.938h1.89v-5.124h-1.89v-.938h2.618l.224.91h.07c.317-.29.672-.537 1.064-.742.392-.205.859-.308 1.4-.308.317 0 .572.06.763.182.191.121.34.299.448.532.107.233.18.516.217.847.037.331.056.707.056 1.127l-.98.014c0-.597-.058-1.036-.175-1.316-.117-.28-.329-.42-.637-.42-.29 0-.55.042-.784.126a2.565 2.565 0 00-.609.308c-.173.121-.32.243-.441.364s-.21.224-.266.308v4.13h2.688v.938h-5.656zm8.778-4.55a14.05 14.05 0 00-.063-1.176 4.657 4.657 0 00-.049-.364h-.938v-.91h1.876l.126 1.134h.07c.093-.159.217-.315.371-.469a2.91 2.91 0 011.225-.721c.252-.075.518-.112.798-.112.43 0 .81.047 1.141.14.331.093.607.259.826.497.22.238.385.56.497.966.112.406.168.922.168 1.547v4.018h-1.092V74.16c0-.775-.126-1.358-.378-1.75-.252-.392-.71-.588-1.372-.588-.243 0-.478.049-.707.147a2.44 2.44 0 00-.623.385c-.187.159-.35.343-.49.553-.14.21-.243.432-.308.665v4.396h-1.078v-4.55zm21.644-1.372a5.531 5.531 0 00-.693-.189 3.61 3.61 0 00-.735-.077c-.915 0-1.596.215-2.044.644-.448.43-.672 1.11-.672 2.044 0 .41.065.777.196 1.099.13.322.317.595.56.819.243.224.534.397.875.518.34.121.716.182 1.127.182.439 0 .866-.075 1.281-.224.415-.15.763-.345 1.043-.588l.49.812c-.13.112-.294.229-.49.35a4.837 4.837 0 01-1.533.602 4.962 4.962 0 01-1.015.098c-.607 0-1.141-.086-1.603-.259a3.045 3.045 0 01-1.155-.742 3.176 3.176 0 01-.7-1.162 4.525 4.525 0 01-.238-1.505c0-.588.082-1.11.245-1.568.163-.457.399-.84.707-1.148a3.08 3.08 0 011.12-.707 4.187 4.187 0 011.47-.245c.69 0 1.253.06 1.687.182.434.121.8.257 1.099.406l-.014.042v1.946h-1.008v-1.33zm3.052 2.422c0-1.13.294-2.023.882-2.681.588-.658 1.428-.987 2.52-.987.588 0 1.094.096 1.519.287.425.191.777.45 1.057.777.28.327.488.714.623 1.162.135.448.203.929.203 1.442 0 .56-.075 1.066-.224 1.519-.15.453-.369.838-.658 1.155-.29.317-.646.562-1.071.735a3.82 3.82 0 01-1.449.259c-.579 0-1.083-.096-1.512-.287a2.967 2.967 0 01-1.064-.777 3.168 3.168 0 01-.623-1.162 4.963 4.963 0 01-.203-1.442zm1.162 0c0 .327.04.653.119.98.08.327.208.62.385.882.177.261.408.471.693.63.285.159.632.238 1.043.238.747 0 1.309-.231 1.687-.693.378-.462.567-1.141.567-2.037 0-.336-.04-.665-.119-.987a2.608 2.608 0 00-.392-.875 2.066 2.066 0 00-.7-.63c-.285-.159-.632-.238-1.043-.238-.747 0-1.307.229-1.68.686-.373.457-.56 1.139-.56 2.044zm11.522-3.5h1.988v4.774c0 .457.028.896.084 1.316h.938v.91h-1.862l-.042-1.19h-.056a2.938 2.938 0 01-.966.98c-.401.252-.887.378-1.456.378-.43 0-.796-.049-1.099-.147a1.556 1.556 0 01-.749-.511c-.196-.243-.34-.567-.434-.973-.093-.406-.14-.912-.14-1.519v-3.08h-.938v-.938h2.03v3.794c0 .383.016.726.049 1.029.033.303.1.56.203.77.103.21.254.369.455.476.2.107.469.161.805.161.485 0 .908-.159 1.267-.476.36-.317.632-.714.819-1.19v-3.626h-.896v-.938zm4.62 2.45a14.051 14.051 0 00-.063-1.176 4.657 4.657 0 00-.049-.364h-.938v-.91h1.876l.126 1.134h.07c.093-.159.217-.315.371-.469a2.91 2.91 0 011.225-.721c.252-.075.518-.112.798-.112.43 0 .81.047 1.141.14.331.093.607.259.826.497.22.238.385.56.497.966.112.406.168.922.168 1.547v4.018h-1.092V74.16c0-.775-.126-1.358-.378-1.75-.252-.392-.71-.588-1.372-.588-.243 0-.478.049-.707.147a2.44 2.44 0 00-.623.385c-.187.159-.35.343-.49.553-.14.21-.243.432-.308.665v4.396h-1.078v-4.55zm7.532-2.45h1.666v-1.386l1.092-.308v1.694h3.738v.938h-3.738v3.304c0 .681.166 1.185.497 1.512.331.327.805.49 1.421.49.42 0 .786-.08 1.099-.238.313-.159.595-.331.847-.518l.364.826a3.938 3.938 0 01-1.169.63 4.182 4.182 0 01-1.393.238 3.41 3.41 0 01-1.057-.161 2.426 2.426 0 01-.875-.497 2.38 2.38 0 01-.602-.861c-.15-.35-.224-.768-.224-1.253v-3.472h-1.666v-.938zm8.638 1.764h3.024v-3.094h1.008v3.094h3.024v1.008h-3.024v3.094h-1.008V73.74h-3.024v-1.008zm8.4 0h3.024v-3.094h1.008v3.094h3.024v1.008h-3.024v3.094h-1.008V73.74h-3.024v-1.008zm10.934 4.466c0-.28.091-.506.273-.679.182-.173.418-.259.707-.259.355 0 .63.124.826.371.196.247.294.595.294 1.043a2.36 2.36 0 01-.637 1.659 2.465 2.465 0 01-.588.462c-.21.117-.404.203-.581.259l-.35-.546c.336-.13.625-.317.868-.56.243-.243.364-.537.364-.882-.13.028-.233.042-.308.042-.27 0-.483-.077-.637-.231-.154-.154-.231-.38-.231-.679zm.126-5.502c0-.299.084-.53.252-.693.168-.163.392-.245.672-.245.299 0 .532.082.7.245.168.163.252.394.252.693 0 .27-.084.495-.252.672-.168.177-.401.266-.7.266-.28 0-.504-.089-.672-.266a.938.938 0 01-.252-.672z"/><path id="};" fill="#C06334" d="M21 95.892c0 .756-.198 1.328-.595 1.715-.397.387-.922.581-1.575.581H16.8v-.98h1.526c.57 0 .975-.135 1.218-.406.243-.27.364-.69.364-1.26v-1.344c0-.364.07-.695.21-.994.14-.299.308-.558.504-.777.196-.22.397-.392.602-.518.205-.126.373-.198.504-.217v-.084c-.13-.019-.299-.086-.504-.203a2.7 2.7 0 01-1.106-1.225c-.14-.299-.21-.64-.21-1.022V87.8c0-.55-.114-.966-.343-1.246-.229-.28-.637-.42-1.225-.42H16.8v-.98h2.03c.317 0 .609.058.875.175.266.117.495.278.686.483.191.205.34.448.448.728.107.28.161.588.161.924v1.428c0 .43.068.789.203 1.078.135.29.303.525.504.707.2.182.415.313.644.392.229.08.432.119.609.119v.98c-.177 0-.38.047-.609.14a2.011 2.011 0 00-.644.434 2.44 2.44 0 00-.504.735c-.135.294-.203.642-.203 1.043v1.372zm6.286-1.694c0-.28.091-.506.273-.679.182-.173.418-.259.707-.259.355 0 .63.124.826.371.196.247.294.595.294 1.043a2.36 2.36 0 01-.637 1.659 2.465 2.465 0 01-.588.462c-.21.117-.404.203-.581.259l-.35-.546c.336-.13.625-.317.868-.56.243-.243.364-.537.364-.882-.13.028-.233.042-.308.042-.27 0-.483-.077-.637-.231-.154-.154-.231-.38-.231-.679zm.126-5.502c0-.299.084-.53.252-.693.168-.163.392-.245.672-.245.299 0 .532.082.7.245.168.163.252.394.252.693 0 .27-.084.495-.252.672-.168.177-.401.266-.7.266-.28 0-.504-.089-.672-.266a.938.938 0 01-.252-.672z"/><path id="}" fill="#7E7C7B" d="M4.2 112.892c0 .756-.198 1.328-.595 1.715-.397.387-.922.581-1.575.581H0v-.98h1.526c.57 0 .975-.135 1.218-.406.243-.27.364-.69.364-1.26v-1.344c0-.364.07-.695.21-.994.14-.299.308-.558.504-.777.196-.22.397-.392.602-.518.205-.126.373-.198.504-.217v-.084c-.13-.019-.299-.086-.504-.203a2.7 2.7 0 01-1.106-1.225c-.14-.299-.21-.64-.21-1.022V104.8c0-.55-.114-.966-.343-1.246-.229-.28-.637-.42-1.225-.42H0v-.98h2.03c.317 0 .609.058.875.175.266.117.495.278.686.483.191.205.34.448.448.728.107.28.161.588.161.924v1.428c0 .43.068.789.203 1.078.135.29.303.525.504.707.2.182.415.313.644.392.229.08.432.119.609.119v.98c-.177 0-.38.047-.609.14a2.011 2.011 0 00-.644.434 2.44 2.44 0 00-.504.735c-.135.294-.203.642-.203 1.043v1.372z"/><path id="letcounter=makeCounter();" fill="#C06334" d="M.546 136.168H2.87v7.448c0 .57.096.97.287 1.204.191.233.474.35.847.35.261 0 .511-.047.749-.14.238-.093.502-.252.791-.476l.504.77c-.15.13-.313.247-.49.35a3.638 3.638 0 01-1.106.42 2.963 2.963 0 01-1.442-.077 1.579 1.579 0 01-.679-.427 1.897 1.897 0 01-.413-.777c-.093-.322-.14-.721-.14-1.197v-6.51H.546v-.938zm14.14 8.918c-.168.15-.366.29-.595.42a4.39 4.39 0 01-.749.336c-.27.093-.553.166-.847.217-.294.051-.59.077-.889.077-.56 0-1.055-.086-1.484-.259a2.858 2.858 0 01-1.078-.742 3.234 3.234 0 01-.658-1.155 4.767 4.767 0 01-.224-1.512c0-.588.082-1.11.245-1.568.163-.457.399-.84.707-1.148a3.08 3.08 0 011.12-.707 4.187 4.187 0 011.47-.245c.392 0 .78.051 1.162.154.383.103.721.296 1.015.581.294.285.52.677.679 1.176.159.5.215 1.146.168 1.939H9.31c0 .84.226 1.468.679 1.883.453.415 1.057.623 1.813.623.252 0 .502-.03.749-.091.247-.06.483-.133.707-.217a3.72 3.72 0 00.595-.28c.173-.103.306-.196.399-.28l.434.798zm-2.954-5.362c-.308 0-.6.033-.875.098a1.995 1.995 0 00-.728.329c-.21.154-.383.355-.518.602s-.222.553-.259.917h4.354c-.047-.616-.245-1.094-.595-1.435-.35-.34-.81-.511-1.379-.511zm4.382-.756h1.666v-1.386l1.092-.308v1.694h3.738v.938h-3.738v3.304c0 .681.166 1.185.497 1.512.331.327.805.49 1.421.49.42 0 .786-.08 1.099-.238.313-.159.595-.331.847-.518l.364.826a3.938 3.938 0 01-1.169.63 4.182 4.182 0 01-1.393.238 3.41 3.41 0 01-1.057-.161 2.426 2.426 0 01-.875-.497 2.38 2.38 0 01-.602-.861c-.15-.35-.224-.768-.224-1.253v-3.472h-1.666v-.938zm22.512 1.078a5.531 5.531 0 00-.693-.189 3.61 3.61 0 00-.735-.077c-.915 0-1.596.215-2.044.644-.448.43-.672 1.11-.672 2.044 0 .41.065.777.196 1.099.13.322.317.595.56.819.243.224.534.397.875.518.34.121.716.182 1.127.182.439 0 .866-.075 1.281-.224.415-.15.763-.345 1.043-.588l.49.812c-.13.112-.294.229-.49.35a4.837 4.837 0 01-1.533.602 4.962 4.962 0 01-1.015.098c-.607 0-1.141-.086-1.603-.259a3.045 3.045 0 01-1.155-.742 3.176 3.176 0 01-.7-1.162 4.525 4.525 0 01-.238-1.505c0-.588.082-1.11.245-1.568.163-.457.399-.84.707-1.148a3.08 3.08 0 011.12-.707 4.187 4.187 0 011.47-.245c.69 0 1.253.06 1.687.182.434.121.8.257 1.099.406l-.014.042v1.946h-1.008v-1.33zm3.052 2.422c0-1.13.294-2.023.882-2.681.588-.658 1.428-.987 2.52-.987.588 0 1.094.096 1.519.287.425.191.777.45 1.057.777.28.327.488.714.623 1.162.135.448.203.929.203 1.442 0 .56-.075 1.066-.224 1.519-.15.453-.369.838-.658 1.155-.29.317-.646.562-1.071.735a3.82 3.82 0 01-1.449.259c-.579 0-1.083-.096-1.512-.287a2.967 2.967 0 01-1.064-.777 3.168 3.168 0 01-.623-1.162 4.963 4.963 0 01-.203-1.442zm1.162 0c0 .327.04.653.119.98.08.327.208.62.385.882.177.261.408.471.693.63.285.159.632.238 1.043.238.747 0 1.309-.231 1.687-.693.378-.462.567-1.141.567-2.037 0-.336-.04-.665-.119-.987a2.608 2.608 0 00-.392-.875 2.066 2.066 0 00-.7-.63c-.285-.159-.632-.238-1.043-.238-.747 0-1.307.229-1.68.686-.373.457-.56 1.139-.56 2.044zm11.522-3.5h1.988v4.774c0 .457.028.896.084 1.316h.938v.91H55.51l-.042-1.19h-.056a2.938 2.938 0 01-.966.98c-.401.252-.887.378-1.456.378-.43 0-.796-.049-1.099-.147a1.556 1.556 0 01-.749-.511c-.196-.243-.34-.567-.434-.973-.093-.406-.14-.912-.14-1.519v-3.08h-.938v-.938h2.03v3.794c0 .383.016.726.049 1.029.033.303.1.56.203.77.103.21.254.369.455.476.2.107.469.161.805.161.485 0 .908-.159 1.267-.476.36-.317.632-.714.819-1.19v-3.626h-.896v-.938zm4.62 2.45a14.05 14.05 0 00-.063-1.176 4.657 4.657 0 00-.049-.364h-.938v-.91h1.876l.126 1.134h.07c.093-.159.217-.315.371-.469a2.91 2.91 0 011.225-.721c.252-.075.518-.112.798-.112.43 0 .81.047 1.141.14.331.093.607.259.826.497.22.238.385.56.497.966.112.406.168.922.168 1.547v4.018h-1.092v-3.808c0-.775-.126-1.358-.378-1.75-.252-.392-.71-.588-1.372-.588-.243 0-.478.049-.707.147a2.44 2.44 0 00-.623.385c-.187.159-.35.343-.49.553-.14.21-.243.432-.308.665v4.396h-1.078v-4.55zm7.532-2.45h1.666v-1.386l1.092-.308v1.694h3.738v.938h-3.738v3.304c0 .681.166 1.185.497 1.512.331.327.805.49 1.421.49.42 0 .786-.08 1.099-.238.313-.159.595-.331.847-.518l.364.826a3.938 3.938 0 01-1.169.63 4.182 4.182 0 01-1.393.238 3.41 3.41 0 01-1.057-.161 2.426 2.426 0 01-.875-.497 2.38 2.38 0 01-.602-.861c-.15-.35-.224-.768-.224-1.253v-3.472h-1.666v-.938zm15.372 6.118c-.168.15-.366.29-.595.42a4.39 4.39 0 01-.749.336c-.27.093-.553.166-.847.217-.294.051-.59.077-.889.077-.56 0-1.055-.086-1.484-.259a2.858 2.858 0 01-1.078-.742 3.234 3.234 0 01-.658-1.155 4.767 4.767 0 01-.224-1.512c0-.588.082-1.11.245-1.568.163-.457.399-.84.707-1.148a3.08 3.08 0 011.12-.707 4.187 4.187 0 011.47-.245c.392 0 .78.051 1.162.154.383.103.721.296 1.015.581.294.285.52.677.679 1.176.159.5.215 1.146.168 1.939H76.51c0 .84.226 1.468.679 1.883.453.415 1.057.623 1.813.623.252 0 .502-.03.749-.091.247-.06.483-.133.707-.217a3.72 3.72 0 00.595-.28c.173-.103.306-.196.399-.28l.434.798zm-2.954-5.362c-.308 0-.6.033-.875.098a1.995 1.995 0 00-.728.329c-.21.154-.383.355-.518.602s-.222.553-.259.917h4.354c-.047-.616-.245-1.094-.595-1.435-.35-.34-.81-.511-1.379-.511zm4.872 6.244v-.938h1.89v-5.124h-1.89v-.938h2.618l.224.91h.07c.317-.29.672-.537 1.064-.742.392-.205.859-.308 1.4-.308.317 0 .572.06.763.182.191.121.34.299.448.532.107.233.18.516.217.847.037.331.056.707.056 1.127l-.98.014c0-.597-.058-1.036-.175-1.316-.117-.28-.329-.42-.637-.42-.29 0-.55.042-.784.126a2.565 2.565 0 00-.609.308c-.173.121-.32.243-.441.364s-.21.224-.266.308v4.13h2.688v.938h-5.656zm16.828-6.398h6.496v1.008h-6.496v-1.008zm0 2.296h6.496v1.008h-6.496v-1.008zm19.516 4.102v-4.662c0-.196-.007-.385-.021-.567a1.9 1.9 0 00-.098-.49.786.786 0 00-.224-.343.57.57 0 00-.385-.126c-.317 0-.586.13-.805.392-.22.261-.385.588-.497.98v4.816h-1.064v-7h.728l.21.854h.056c.093-.14.184-.273.273-.399.089-.126.191-.236.308-.329.117-.093.254-.166.413-.217.159-.051.36-.077.602-.077.14 0 .285.021.434.063.15.042.287.107.413.196.126.089.236.208.329.357.093.15.154.331.182.546.215-.364.455-.649.721-.854.266-.205.632-.308 1.099-.308.308 0 .558.051.749.154.191.103.34.25.448.441.107.191.182.42.224.686.042.266.063.562.063.889v4.998h-1.064v-4.76c0-.196-.01-.38-.028-.553a1.764 1.764 0 00-.105-.455.752.752 0 00-.21-.308.536.536 0 00-.357-.112c-.327 0-.602.13-.826.392-.224.261-.392.635-.504 1.12v4.676h-1.064zm6.244-6.454a4.447 4.447 0 011.358-.504 7.423 7.423 0 011.484-.154c.476 0 .866.075 1.169.224.303.15.541.343.714.581.173.238.29.509.35.812.06.303.091.609.091.917 0 .355-.01.733-.028 1.134-.019.401-.033.803-.042 1.204 0 .467.028.91.084 1.33h.938v.91h-1.862l-.126-1.05h-.07c-.056.084-.14.191-.252.322-.112.13-.259.259-.441.385a2.749 2.749 0 01-1.589.469c-.69 0-1.237-.177-1.638-.532-.401-.355-.602-.84-.602-1.456 0-.476.105-.873.315-1.19.21-.317.511-.56.903-.728.392-.168.866-.266 1.421-.294a9.544 9.544 0 011.869.112c.047-.43.054-.786.021-1.071-.033-.285-.107-.511-.224-.679a.938.938 0 00-.49-.357 2.482 2.482 0 00-.777-.105c-.42 0-.821.058-1.204.175-.383.117-.723.236-1.022.357l-.35-.812zm2.058 5.642c.261 0 .504-.042.728-.126a2.22 2.22 0 00.588-.322 2.133 2.133 0 00.672-.868v-.98a7.92 7.92 0 00-1.344-.126c-.41 0-.765.044-1.064.133-.299.089-.532.226-.7.413-.168.187-.252.43-.252.728 0 .308.105.576.315.805.21.229.562.343 1.057.343zm5.166-8.988h2.268v5.796h.77l2.758-2.996h1.316l-3.094 3.318 2.548 2.744h.91v.938h-1.442l-2.996-3.164h-.77v3.164h-1.078v-8.862h-1.19v-.938zm15.47 8.918c-.168.15-.366.29-.595.42a4.39 4.39 0 01-.749.336c-.27.093-.553.166-.847.217-.294.051-.59.077-.889.077-.56 0-1.055-.086-1.484-.259a2.858 2.858 0 01-1.078-.742 3.234 3.234 0 01-.658-1.155 4.767 4.767 0 01-.224-1.512c0-.588.082-1.11.245-1.568.163-.457.399-.84.707-1.148a3.08 3.08 0 011.12-.707 4.187 4.187 0 011.47-.245c.392 0 .78.051 1.162.154.383.103.721.296 1.015.581.294.285.52.677.679 1.176.159.5.215 1.146.168 1.939h-5.418c0 .84.226 1.468.679 1.883.453.415 1.057.623 1.813.623.252 0 .502-.03.749-.091.247-.06.483-.133.707-.217a3.72 3.72 0 00.595-.28c.173-.103.306-.196.399-.28l.434.798zm-2.954-5.362c-.308 0-.6.033-.875.098a1.995 1.995 0 00-.728.329c-.21.154-.383.355-.518.602s-.222.553-.259.917h4.354c-.047-.616-.245-1.094-.595-1.435-.35-.34-.81-.511-1.379-.511zm10.36-2.492a2.466 2.466 0 00-.525-.147 4.192 4.192 0 00-.693-.049c-.383 0-.758.07-1.127.21-.369.14-.695.369-.98.686-.285.317-.513.733-.686 1.246-.173.513-.259 1.143-.259 1.89 0 .672.077 1.26.231 1.764.154.504.369.924.644 1.26.275.336.607.588.994.756.387.168.819.252 1.295.252.243 0 .469-.021.679-.063.21-.042.404-.1.581-.175v-1.4h1.036v1.89l.014.028a3.66 3.66 0 01-1.064.539c-.43.145-.952.217-1.568.217-.588 0-1.132-.1-1.631-.301a3.41 3.41 0 01-1.295-.917c-.364-.41-.646-.936-.847-1.575-.2-.64-.301-1.398-.301-2.275 0-.915.112-1.692.336-2.331.224-.64.527-1.162.91-1.568a3.452 3.452 0 011.337-.889 4.697 4.697 0 011.631-.28c.317 0 .593.012.826.035.233.023.439.056.616.098s.334.096.469.161c.135.065.268.14.399.224h.014v2.212h-1.036v-1.498zm2.786 5.236c0-1.13.294-2.023.882-2.681.588-.658 1.428-.987 2.52-.987.588 0 1.094.096 1.519.287.425.191.777.45 1.057.777.28.327.488.714.623 1.162.135.448.203.929.203 1.442 0 .56-.075 1.066-.224 1.519-.15.453-.369.838-.658 1.155-.29.317-.646.562-1.071.735a3.82 3.82 0 01-1.449.259c-.579 0-1.083-.096-1.512-.287a2.967 2.967 0 01-1.064-.777 3.168 3.168 0 01-.623-1.162 4.963 4.963 0 01-.203-1.442zm1.162 0c0 .327.04.653.119.98.08.327.208.62.385.882.177.261.408.471.693.63.285.159.632.238 1.043.238.747 0 1.309-.231 1.687-.693.378-.462.567-1.141.567-2.037 0-.336-.04-.665-.119-.987a2.608 2.608 0 00-.392-.875 2.066 2.066 0 00-.7-.63c-.285-.159-.632-.238-1.043-.238-.747 0-1.307.229-1.68.686-.373.457-.56 1.139-.56 2.044zm11.522-3.5h1.988v4.774c0 .457.028.896.084 1.316h.938v.91h-1.862l-.042-1.19h-.056a2.938 2.938 0 01-.966.98c-.401.252-.887.378-1.456.378-.43 0-.796-.049-1.099-.147a1.556 1.556 0 01-.749-.511c-.196-.243-.34-.567-.434-.973-.093-.406-.14-.912-.14-1.519v-3.08h-.938v-.938h2.03v3.794c0 .383.016.726.049 1.029.033.303.1.56.203.77.103.21.254.369.455.476.2.107.469.161.805.161.485 0 .908-.159 1.267-.476.36-.317.632-.714.819-1.19v-3.626h-.896v-.938zm4.62 2.45a14.051 14.051 0 00-.063-1.176 4.657 4.657 0 00-.049-.364h-.938v-.91h1.876l.126 1.134h.07c.093-.159.217-.315.371-.469a2.91 2.91 0 011.225-.721c.252-.075.518-.112.798-.112.43 0 .81.047 1.141.14.331.093.607.259.826.497.22.238.385.56.497.966.112.406.168.922.168 1.547v4.018h-1.092v-3.808c0-.775-.126-1.358-.378-1.75-.252-.392-.71-.588-1.372-.588-.243 0-.478.049-.707.147a2.44 2.44 0 00-.623.385c-.187.159-.35.343-.49.553-.14.21-.243.432-.308.665v4.396h-1.078v-4.55zm7.532-2.45h1.666v-1.386l1.092-.308v1.694h3.738v.938h-3.738v3.304c0 .681.166 1.185.497 1.512.331.327.805.49 1.421.49.42 0 .786-.08 1.099-.238.313-.159.595-.331.847-.518l.364.826a3.938 3.938 0 01-1.169.63 4.182 4.182 0 01-1.393.238 3.41 3.41 0 01-1.057-.161 2.426 2.426 0 01-.875-.497 2.38 2.38 0 01-.602-.861c-.15-.35-.224-.768-.224-1.253v-3.472h-1.666v-.938zm15.372 6.118c-.168.15-.366.29-.595.42a4.39 4.39 0 01-.749.336c-.27.093-.553.166-.847.217-.294.051-.59.077-.889.077-.56 0-1.055-.086-1.484-.259a2.858 2.858 0 01-1.078-.742 3.234 3.234 0 01-.658-1.155 4.767 4.767 0 01-.224-1.512c0-.588.082-1.11.245-1.568.163-.457.399-.84.707-1.148a3.08 3.08 0 011.12-.707 4.187 4.187 0 011.47-.245c.392 0 .78.051 1.162.154.383.103.721.296 1.015.581.294.285.52.677.679 1.176.159.5.215 1.146.168 1.939h-5.418c0 .84.226 1.468.679 1.883.453.415 1.057.623 1.813.623.252 0 .502-.03.749-.091.247-.06.483-.133.707-.217a3.72 3.72 0 00.595-.28c.173-.103.306-.196.399-.28l.434.798zm-2.954-5.362c-.308 0-.6.033-.875.098a1.995 1.995 0 00-.728.329c-.21.154-.383.355-.518.602s-.222.553-.259.917h4.354c-.047-.616-.245-1.094-.595-1.435-.35-.34-.81-.511-1.379-.511zm4.872 6.244v-.938h1.89v-5.124h-1.89v-.938h2.618l.224.91h.07c.317-.29.672-.537 1.064-.742.392-.205.859-.308 1.4-.308.317 0 .572.06.763.182.191.121.34.299.448.532.107.233.18.516.217.847.037.331.056.707.056 1.127l-.98.014c0-.597-.058-1.036-.175-1.316-.117-.28-.329-.42-.637-.42-.29 0-.55.042-.784.126a2.565 2.565 0 00-.609.308c-.173.121-.32.243-.441.364s-.21.224-.266.308v4.13h2.688v.938h-5.656zm13.524 2.968a6.964 6.964 0 01-1.757-.707 5.036 5.036 0 01-1.428-1.225c-.406-.504-.728-1.12-.966-1.848s-.357-1.591-.357-2.59c0-.99.121-1.855.364-2.597s.57-1.372.98-1.89c.41-.518.889-.933 1.435-1.246a6.005 6.005 0 011.729-.665l.35.882a7.086 7.086 0 00-1.512.623 3.928 3.928 0 00-1.183 1.022c-.331.425-.588.952-.77 1.582-.182.63-.273 1.393-.273 2.289 0 .905.11 1.678.329 2.317.22.64.509 1.171.868 1.596.36.425.76.756 1.204.994.443.238.889.404 1.337.497l-.35.966zm4.354-.966a4.965 4.965 0 001.337-.497 4.15 4.15 0 001.204-.994c.36-.425.649-.957.868-1.596.22-.64.329-1.412.329-2.317 0-.896-.091-1.659-.273-2.289-.182-.63-.439-1.157-.77-1.582a3.928 3.928 0 00-1.183-1.022 7.086 7.086 0 00-1.512-.623l.35-.882c.607.13 1.183.352 1.729.665a4.984 4.984 0 011.435 1.246c.41.518.737 1.148.98 1.89s.364 1.608.364 2.597c0 .999-.119 1.862-.357 2.59-.238.728-.56 1.344-.966 1.848a5.036 5.036 0 01-1.428 1.225 6.964 6.964 0 01-1.757.707l-.35-.966zm9.604-2.772c0-.28.091-.506.273-.679.182-.173.418-.259.707-.259.355 0 .63.124.826.371.196.247.294.595.294 1.043a2.36 2.36 0 01-.637 1.659 2.465 2.465 0 01-.588.462c-.21.117-.404.203-.581.259l-.35-.546c.336-.13.625-.317.868-.56.243-.243.364-.537.364-.882-.13.028-.233.042-.308.042-.27 0-.483-.077-.637-.231-.154-.154-.231-.38-.231-.679zm.126-5.502c0-.299.084-.53.252-.693.168-.163.392-.245.672-.245.299 0 .532.082.7.245.168.163.252.394.252.693 0 .27-.084.495-.252.672-.168.177-.401.266-.7.266-.28 0-.504-.089-.672-.266a.938.938 0 01-.252-.672z"/></g><g id="Group-5" stroke="#C06334" stroke-linecap="square" transform="translate(329 28)"><path id="Line" d="M.709.967h16.789"/><path id="Line-Copy" d="M.709 86.033h16.789"/><path id="Line-Copy-2" d="M18.333.967v85.066"/></g><g id="Group-5-Copy" stroke="#C06334" stroke-linecap="square" transform="translate(488 12)"><path id="Line-Copy-2" d="M2.333 1.7v149.6"/></g><text id="null" fill="#AF6E24" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="741" y="71">null</tspan></text><text id="[[Environment]]" fill="#AF6E24" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="183" y="73">[[Environment]]</tspan></text><path id="Line" fill="#C06334" fill-rule="nonzero" d="M326.5 62.5l14 7-14 7v-6h-14v-2h14v-6z"/><path id="Rectangle-1-Copy-2" fill="#C06334" d="M0 75V62l9 6.5"/><g id="Group-3" transform="translate(498 44)"><path id="Rectangle-1" fill="#FBF2EC" stroke="#DBAF88" stroke-width="2" d="M1 1h187v48H1z"/><text id="makeCounter:-functio" fill="#AF6E24" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="6" y="21">makeCounter: function</tspan> <tspan x="6" y="36">counter: undefined</tspan></text></g><g id="Group-2" transform="translate(355 55)"><path id="Rectangle-1-Copy" fill="#FBF2EC" stroke="#DBAF88" stroke-width="2" d="M1 1h83v27H1z"/><text id="count:-0" fill="#AF6E24" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="8.5" y="18">count: 0</tspan></text></g><g id="Group" transform="translate(445 50)"><path id="Line" fill="#C06334" fill-rule="nonzero" d="M27 12l14 7-14 7-.001-6H-1v-2h27.999L27 12z"/><text id="outer" fill="#AF6E24" font-family="PTMono-Regular, PT Mono" font-size="12" font-weight="normal"><tspan x="0" y="11">outer</tspan></text></g><g id="Group" transform="translate(695 48)"><path id="Line" fill="#C06334" fill-rule="nonzero" d="M27 12l14 7-14 7-.001-6H-1v-2h27.999L27 12z"/><text id="outer" fill="#AF6E24" font-family="PTMono-Regular, PT Mono" font-size="12" font-weight="normal"><tspan x="0" y="11">outer</tspan></text></g></g></g></svg> \ No newline at end of file diff --git a/1-js/06-advanced-functions/03-closure/closure-makecounter-nested-call-2.svg b/1-js/06-advanced-functions/03-closure/closure-makecounter-nested-call-2.svg new file mode 100644 index 000000000..3950a8faa --- /dev/null +++ b/1-js/06-advanced-functions/03-closure/closure-makecounter-nested-call-2.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" width="774" height="222" viewBox="0 0 774 222"><defs><style>@import url(https://fonts.googleapis.com/css?family=Open+Sans:bold,italic,bolditalic%7CPT+Mono);@font-face{font-family:'PT Mono';font-weight:700;font-style:normal;src:local('PT MonoBold'),url(/font/PTMonoBold.woff2) format('woff2'),url(/font/PTMonoBold.woff) format('woff'),url(/font/PTMonoBold.ttf) format('truetype')}</style></defs><g id="closure" fill="none" fill-rule="evenodd" stroke="none" stroke-width="1"><g id="closure-makecounter-nested-call-2.svg"><g id="Group-5" stroke="#C06334" stroke-linecap="square" transform="translate(325 28)"><path id="Line" d="M.709.967h16.789"/><path id="Line-Copy" d="M.709 86.033h16.789"/><path id="Line-Copy-2" d="M18.333.967v85.066"/></g><g id="Group-5-Copy" stroke="#C06334" stroke-linecap="square" transform="translate(480 25)"><path id="Line-Copy-2" d="M2.333 1.7v149.6"/></g><g id="Group-2" transform="translate(351 71)"><path id="Rectangle-1-Copy" fill="#FBF2EC" stroke="#DBAF88" stroke-width="2" d="M1 1h75v27H1z"/><text id="count:-1" fill="#C06334" font-family="PTMono-Bold, PT Mono" font-size="14" font-weight="bold"><tspan x="4" y="19">count: 1</tspan></text></g><g id="Group-5-Copy-2" stroke="#C06334" stroke-linecap="square" transform="translate(207 67)"><path id="Line" d="M.355.422h8.394"/><path id="Line-Copy" d="M.355 37.578h8.394"/><path id="Line-Copy-2" d="M9.167.422v37.156"/></g><g id="Group-2-Copy" transform="translate(223 71)"><path id="Rectangle-1-Copy" fill="#FBF2EC" stroke="#DBAF88" stroke-width="2" d="M1 1h68v27H1z"/><text id="<empty>" fill="#AF6E24" font-family="PTMono-Regular, PT Mono" font-size="12" font-weight="normal"><tspan x="9.8" y="18"><empty></tspan></text></g><text id="null" fill="#AF6E24" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="736" y="91">null</tspan></text><g id="Group" transform="translate(300 68)"><path id="Line" fill="#C06334" fill-rule="nonzero" d="M27 12l14 7-14 7-.001-6H-1v-2h27.999L27 12z"/><text id="outer" fill="#AF6E24" font-family="PTMono-Regular, PT Mono" font-size="12" font-weight="normal"><tspan x="0" y="11">outer</tspan></text></g><g id="Group" transform="translate(437 68)"><path id="Line" fill="#C06334" fill-rule="nonzero" d="M27 12l14 7-14 7-.001-6H-1v-2h27.999L27 12z"/><text id="outer" fill="#AF6E24" font-family="PTMono-Regular, PT Mono" font-size="12" font-weight="normal"><tspan x="0" y="11">outer</tspan></text></g><g id="Group" transform="translate(690 68)"><path id="Line" fill="#C06334" fill-rule="nonzero" d="M27 12l14 7-14 7-.001-6H-1v-2h27.999L27 12z"/><text id="outer" fill="#AF6E24" font-family="PTMono-Regular, PT Mono" font-size="12" font-weight="normal"><tspan x="0" y="11">outer</tspan></text></g><g id="Group-3" transform="translate(493 60)"><path id="Rectangle-1" fill="#FBF2EC" stroke="#DBAF88" stroke-width="2" d="M1 1h187v48H1z"/><text id="makeCounter:-functio" fill="#AF6E24" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="6" y="21">makeCounter: function</tspan> <tspan x="6" y="36">counter: function</tspan></text></g><g id="function-makeCounter" fill-rule="nonzero" transform="translate(14 12)"><path id="function" fill="#1C85B5" d="M.182 9.968V9.03h1.666V3.906H.182v-.938h1.666v-.392c0-.877.229-1.512.686-1.904.457-.392 1.11-.588 1.96-.588.308 0 .583.019.826.056.243.037.504.112.784.224l-.252.91a2.862 2.862 0 00-.7-.203 4.295 4.295 0 00-.616-.049c-.616 0-1.036.152-1.26.455-.224.303-.336.8-.336 1.491h2.898v.938H2.94V9.03h2.898v.938H.182zm12.25-7h1.988v4.774c0 .457.028.896.084 1.316h.938v.91H13.58l-.042-1.19h-.056a2.938 2.938 0 01-.966.98c-.401.252-.887.378-1.456.378-.43 0-.796-.049-1.099-.147a1.556 1.556 0 01-.749-.511c-.196-.243-.34-.567-.434-.973-.093-.406-.14-.912-.14-1.519v-3.08H7.7v-.938h2.03v3.794c0 .383.016.726.049 1.029.033.303.1.56.203.77.103.21.254.369.455.476.2.107.469.161.805.161.485 0 .908-.159 1.267-.476.36-.317.632-.714.819-1.19V3.906h-.896v-.938zm4.62 2.45a14.05 14.05 0 00-.063-1.176 4.657 4.657 0 00-.049-.364h-.938v-.91h1.876l.126 1.134h.07c.093-.159.217-.315.371-.469a2.91 2.91 0 011.225-.721c.252-.075.518-.112.798-.112.43 0 .81.047 1.141.14.331.093.607.259.826.497.22.238.385.56.497.966.112.406.168.922.168 1.547v4.018h-1.092V6.16c0-.775-.126-1.358-.378-1.75-.252-.392-.71-.588-1.372-.588-.243 0-.478.049-.707.147a2.44 2.44 0 00-.623.385c-.187.159-.35.343-.49.553-.14.21-.243.432-.308.665v4.396h-1.078v-4.55zm13.244-1.372a5.531 5.531 0 00-.693-.189 3.61 3.61 0 00-.735-.077c-.915 0-1.596.215-2.044.644-.448.43-.672 1.11-.672 2.044 0 .41.065.777.196 1.099.13.322.317.595.56.819.243.224.534.397.875.518.34.121.716.182 1.127.182.439 0 .866-.075 1.281-.224.415-.15.763-.345 1.043-.588l.49.812c-.13.112-.294.229-.49.35a4.837 4.837 0 01-1.533.602 4.962 4.962 0 01-1.015.098c-.607 0-1.141-.086-1.603-.259a3.045 3.045 0 01-1.155-.742 3.176 3.176 0 01-.7-1.162 4.525 4.525 0 01-.238-1.505c0-.588.082-1.11.245-1.568.163-.457.399-.84.707-1.148a3.08 3.08 0 011.12-.707 4.187 4.187 0 011.47-.245c.69 0 1.253.06 1.687.182.434.121.8.257 1.099.406l-.014.042v1.946h-1.008v-1.33zm2.688-1.078h1.666V1.582l1.092-.308v1.694h3.738v.938h-3.738V7.21c0 .681.166 1.185.497 1.512.331.327.805.49 1.421.49.42 0 .786-.08 1.099-.238.313-.159.595-.331.847-.518l.364.826a3.938 3.938 0 01-1.169.63 4.182 4.182 0 01-1.393.238 3.41 3.41 0 01-1.057-.161 2.426 2.426 0 01-.875-.497 2.38 2.38 0 01-.602-.861c-.15-.35-.224-.768-.224-1.253V3.906h-1.666v-.938zm9.436 7V9.03h2.436V3.906H42.42v-.938h3.556V9.03h2.38v.938H42.42zM44.478.98c0-.252.084-.469.252-.651a.838.838 0 01.644-.273c.27 0 .497.091.679.273a.889.889 0 01.273.651.806.806 0 01-.273.616.963.963 0 01-.679.252.872.872 0 01-.644-.252.838.838 0 01-.252-.616zm5.67 5.488c0-1.13.294-2.023.882-2.681.588-.658 1.428-.987 2.52-.987.588 0 1.094.096 1.519.287.425.191.777.45 1.057.777.28.327.488.714.623 1.162.135.448.203.929.203 1.442 0 .56-.075 1.066-.224 1.519-.15.453-.369.838-.658 1.155-.29.317-.646.562-1.071.735a3.82 3.82 0 01-1.449.259c-.579 0-1.083-.096-1.512-.287a2.967 2.967 0 01-1.064-.777 3.168 3.168 0 01-.623-1.162 4.963 4.963 0 01-.203-1.442zm1.162 0c0 .327.04.653.119.98.08.327.208.62.385.882.177.261.408.471.693.63.285.159.632.238 1.043.238.747 0 1.309-.231 1.687-.693.378-.462.567-1.141.567-2.037 0-.336-.04-.665-.119-.987a2.608 2.608 0 00-.392-.875 2.066 2.066 0 00-.7-.63c-.285-.159-.632-.238-1.043-.238-.747 0-1.307.229-1.68.686-.373.457-.56 1.139-.56 2.044zm7.742-1.05a14.05 14.05 0 00-.063-1.176 4.657 4.657 0 00-.049-.364h-.938v-.91h1.876l.126 1.134h.07c.093-.159.217-.315.371-.469a2.91 2.91 0 011.225-.721c.252-.075.518-.112.798-.112.43 0 .81.047 1.141.14.331.093.607.259.826.497.22.238.385.56.497.966.112.406.168.922.168 1.547v4.018h-1.092V6.16c0-.775-.126-1.358-.378-1.75-.252-.392-.71-.588-1.372-.588-.243 0-.478.049-.707.147a2.44 2.44 0 00-.623.385c-.187.159-.35.343-.49.553-.14.21-.243.432-.308.665v4.396h-1.078v-4.55z"/><path id="makeCounter" fill="#181717" d="M78.218 9.968V5.306c0-.196-.007-.385-.021-.567a1.9 1.9 0 00-.098-.49.786.786 0 00-.224-.343.57.57 0 00-.385-.126c-.317 0-.586.13-.805.392-.22.261-.385.588-.497.98v4.816h-1.064v-7h.728l.21.854h.056c.093-.14.184-.273.273-.399.089-.126.191-.236.308-.329.117-.093.254-.166.413-.217.159-.051.36-.077.602-.077.14 0 .285.021.434.063.15.042.287.107.413.196.126.089.236.208.329.357.093.15.154.331.182.546.215-.364.455-.649.721-.854.266-.205.632-.308 1.099-.308.308 0 .558.051.749.154.191.103.34.25.448.441.107.191.182.42.224.686.042.266.063.562.063.889v4.998h-1.064v-4.76c0-.196-.01-.38-.028-.553a1.764 1.764 0 00-.105-.455.752.752 0 00-.21-.308.536.536 0 00-.357-.112c-.327 0-.602.13-.826.392-.224.261-.392.635-.504 1.12v4.676h-1.064zm6.244-6.454a4.447 4.447 0 011.358-.504 7.423 7.423 0 011.484-.154c.476 0 .866.075 1.169.224.303.15.541.343.714.581.173.238.29.509.35.812.06.303.091.609.091.917 0 .355-.01.733-.028 1.134-.019.401-.033.803-.042 1.204 0 .467.028.91.084 1.33h.938v.91h-1.862l-.126-1.05h-.07c-.056.084-.14.191-.252.322-.112.13-.259.259-.441.385a2.749 2.749 0 01-1.589.469c-.69 0-1.237-.177-1.638-.532-.401-.355-.602-.84-.602-1.456 0-.476.105-.873.315-1.19.21-.317.511-.56.903-.728.392-.168.866-.266 1.421-.294a9.544 9.544 0 011.869.112c.047-.43.054-.786.021-1.071-.033-.285-.107-.511-.224-.679a.938.938 0 00-.49-.357 2.482 2.482 0 00-.777-.105c-.42 0-.821.058-1.204.175-.383.117-.723.236-1.022.357l-.35-.812zm2.058 5.642c.261 0 .504-.042.728-.126a2.22 2.22 0 00.588-.322 2.133 2.133 0 00.672-.868v-.98a7.92 7.92 0 00-1.344-.126c-.41 0-.765.044-1.064.133-.299.089-.532.226-.7.413-.168.187-.252.43-.252.728 0 .308.105.576.315.805.21.229.562.343 1.057.343zM91.686.168h2.268v5.796h.77l2.758-2.996h1.316l-3.094 3.318 2.548 2.744h.91v.938H97.72l-2.996-3.164h-.77v3.164h-1.078V1.106h-1.19V.168zm15.47 8.918c-.168.15-.366.29-.595.42a4.39 4.39 0 01-.749.336c-.27.093-.553.166-.847.217-.294.051-.59.077-.889.077-.56 0-1.055-.086-1.484-.259a2.858 2.858 0 01-1.078-.742 3.234 3.234 0 01-.658-1.155 4.767 4.767 0 01-.224-1.512c0-.588.082-1.11.245-1.568.163-.457.399-.84.707-1.148a3.08 3.08 0 011.12-.707 4.187 4.187 0 011.47-.245c.392 0 .78.051 1.162.154.383.103.721.296 1.015.581.294.285.52.677.679 1.176.159.5.215 1.146.168 1.939h-5.418c0 .84.226 1.468.679 1.883.453.415 1.057.623 1.813.623.252 0 .502-.03.749-.091.247-.06.483-.133.707-.217a3.72 3.72 0 00.595-.28c.173-.103.306-.196.399-.28l.434.798zm-2.954-5.362c-.308 0-.6.033-.875.098a1.995 1.995 0 00-.728.329c-.21.154-.383.355-.518.602s-.222.553-.259.917h4.354c-.047-.616-.245-1.094-.595-1.435-.35-.34-.81-.511-1.379-.511zm10.36-2.492a2.466 2.466 0 00-.525-.147 4.192 4.192 0 00-.693-.049c-.383 0-.758.07-1.127.21-.369.14-.695.369-.98.686-.285.317-.513.733-.686 1.246-.173.513-.259 1.143-.259 1.89 0 .672.077 1.26.231 1.764.154.504.369.924.644 1.26.275.336.607.588.994.756.387.168.819.252 1.295.252.243 0 .469-.021.679-.063.21-.042.404-.1.581-.175v-1.4h1.036v1.89l.014.028a3.66 3.66 0 01-1.064.539c-.43.145-.952.217-1.568.217-.588 0-1.132-.1-1.631-.301a3.41 3.41 0 01-1.295-.917c-.364-.41-.646-.936-.847-1.575-.2-.64-.301-1.398-.301-2.275 0-.915.112-1.692.336-2.331.224-.64.527-1.162.91-1.568a3.452 3.452 0 011.337-.889 4.697 4.697 0 011.631-.28c.317 0 .593.012.826.035.233.023.439.056.616.098s.334.096.469.161c.135.065.268.14.399.224h.014V2.73h-1.036V1.232zm2.786 5.236c0-1.13.294-2.023.882-2.681.588-.658 1.428-.987 2.52-.987.588 0 1.094.096 1.519.287.425.191.777.45 1.057.777.28.327.488.714.623 1.162.135.448.203.929.203 1.442 0 .56-.075 1.066-.224 1.519-.15.453-.369.838-.658 1.155-.29.317-.646.562-1.071.735a3.82 3.82 0 01-1.449.259c-.579 0-1.083-.096-1.512-.287a2.967 2.967 0 01-1.064-.777 3.168 3.168 0 01-.623-1.162 4.963 4.963 0 01-.203-1.442zm1.162 0c0 .327.04.653.119.98.08.327.208.62.385.882.177.261.408.471.693.63.285.159.632.238 1.043.238.747 0 1.309-.231 1.687-.693.378-.462.567-1.141.567-2.037 0-.336-.04-.665-.119-.987a2.608 2.608 0 00-.392-.875 2.066 2.066 0 00-.7-.63c-.285-.159-.632-.238-1.043-.238-.747 0-1.307.229-1.68.686-.373.457-.56 1.139-.56 2.044zm11.522-3.5h1.988v4.774c0 .457.028.896.084 1.316h.938v.91h-1.862l-.042-1.19h-.056a2.938 2.938 0 01-.966.98c-.401.252-.887.378-1.456.378-.43 0-.796-.049-1.099-.147a1.556 1.556 0 01-.749-.511c-.196-.243-.34-.567-.434-.973-.093-.406-.14-.912-.14-1.519v-3.08h-.938v-.938h2.03v3.794c0 .383.016.726.049 1.029.033.303.1.56.203.77.103.21.254.369.455.476.2.107.469.161.805.161.485 0 .908-.159 1.267-.476.36-.317.632-.714.819-1.19V3.906h-.896v-.938zm4.62 2.45a14.051 14.051 0 00-.063-1.176 4.657 4.657 0 00-.049-.364h-.938v-.91h1.876l.126 1.134h.07c.093-.159.217-.315.371-.469a2.91 2.91 0 011.225-.721c.252-.075.518-.112.798-.112.43 0 .81.047 1.141.14.331.093.607.259.826.497.22.238.385.56.497.966.112.406.168.922.168 1.547v4.018h-1.092V6.16c0-.775-.126-1.358-.378-1.75-.252-.392-.71-.588-1.372-.588-.243 0-.478.049-.707.147a2.44 2.44 0 00-.623.385c-.187.159-.35.343-.49.553-.14.21-.243.432-.308.665v4.396h-1.078v-4.55zm7.532-2.45h1.666V1.582l1.092-.308v1.694h3.738v.938h-3.738V7.21c0 .681.166 1.185.497 1.512.331.327.805.49 1.421.49.42 0 .786-.08 1.099-.238.313-.159.595-.331.847-.518l.364.826a3.938 3.938 0 01-1.169.63 4.182 4.182 0 01-1.393.238 3.41 3.41 0 01-1.057-.161 2.426 2.426 0 01-.875-.497 2.38 2.38 0 01-.602-.861c-.15-.35-.224-.768-.224-1.253V3.906h-1.666v-.938zm15.372 6.118c-.168.15-.366.29-.595.42a4.39 4.39 0 01-.749.336c-.27.093-.553.166-.847.217-.294.051-.59.077-.889.077-.56 0-1.055-.086-1.484-.259a2.858 2.858 0 01-1.078-.742 3.234 3.234 0 01-.658-1.155 4.767 4.767 0 01-.224-1.512c0-.588.082-1.11.245-1.568.163-.457.399-.84.707-1.148a3.08 3.08 0 011.12-.707 4.187 4.187 0 011.47-.245c.392 0 .78.051 1.162.154.383.103.721.296 1.015.581.294.285.52.677.679 1.176.159.5.215 1.146.168 1.939h-5.418c0 .84.226 1.468.679 1.883.453.415 1.057.623 1.813.623.252 0 .502-.03.749-.091.247-.06.483-.133.707-.217a3.72 3.72 0 00.595-.28c.173-.103.306-.196.399-.28l.434.798zm-2.954-5.362c-.308 0-.6.033-.875.098a1.995 1.995 0 00-.728.329c-.21.154-.383.355-.518.602s-.222.553-.259.917h4.354c-.047-.616-.245-1.094-.595-1.435-.35-.34-.81-.511-1.379-.511zm4.872 6.244V9.03h1.89V3.906h-1.89v-.938h2.618l.224.91h.07c.317-.29.672-.537 1.064-.742.392-.205.859-.308 1.4-.308.317 0 .572.06.763.182.191.121.34.299.448.532.107.233.18.516.217.847.037.331.056.707.056 1.127l-.98.014c0-.597-.058-1.036-.175-1.316-.117-.28-.329-.42-.637-.42-.29 0-.55.042-.784.126a2.565 2.565 0 00-.609.308c-.173.121-.32.243-.441.364s-.21.224-.266.308v4.13h2.688v.938h-5.656z"/><path id="(){" fill="#7E7C7B" d="M172.998 12.936a6.964 6.964 0 01-1.757-.707 5.036 5.036 0 01-1.428-1.225c-.406-.504-.728-1.12-.966-1.848s-.357-1.591-.357-2.59c0-.99.121-1.855.364-2.597s.57-1.372.98-1.89c.41-.518.889-.933 1.435-1.246a6.005 6.005 0 011.729-.665l.35.882a7.086 7.086 0 00-1.512.623 3.928 3.928 0 00-1.183 1.022c-.331.425-.588.952-.77 1.582-.182.63-.273 1.393-.273 2.289 0 .905.11 1.678.329 2.317.22.64.509 1.171.868 1.596.36.425.76.756 1.204.994.443.238.889.404 1.337.497l-.35.966zm4.354-.966a4.965 4.965 0 001.337-.497 4.15 4.15 0 001.204-.994c.36-.425.649-.957.868-1.596.22-.64.329-1.412.329-2.317 0-.896-.091-1.659-.273-2.289-.182-.63-.439-1.157-.77-1.582a3.928 3.928 0 00-1.183-1.022 7.086 7.086 0 00-1.512-.623l.35-.882c.607.13 1.183.352 1.729.665a4.984 4.984 0 011.435 1.246c.41.518.737 1.148.98 1.89s.364 1.608.364 2.597c0 .999-.119 1.862-.357 2.59-.238.728-.56 1.344-.966 1.848a5.036 5.036 0 01-1.428 1.225 6.964 6.964 0 01-1.757.707l-.35-.966zm17.878-2.45c0-.401-.068-.749-.203-1.043a2.44 2.44 0 00-.504-.735c-.2-.196-.415-.34-.644-.434a1.641 1.641 0 00-.609-.14v-.98c.177 0 .38-.04.609-.119.229-.08.443-.21.644-.392.2-.182.369-.418.504-.707.135-.29.203-.649.203-1.078V2.464c0-.336.054-.644.161-.924a2.22 2.22 0 01.448-.728c.191-.205.42-.366.686-.483.266-.117.558-.175.875-.175h2.03v.98h-1.54c-.588 0-.996.14-1.225.42-.229.28-.343.695-.343 1.246v1.358c0 .383-.07.723-.21 1.022a2.7 2.7 0 01-1.106 1.225c-.205.117-.373.184-.504.203v.084c.121.019.285.091.49.217.205.126.406.299.602.518.196.22.366.478.511.777.145.299.217.63.217.994v1.344c0 .57.121.99.364 1.26s.649.406 1.218.406h1.526v.98h-2.03c-.653 0-1.178-.194-1.575-.581-.397-.387-.595-.959-.595-1.715V9.52z"/><path id="let" fill="#1C85B5" d="M17.416 17.168h2.324v7.448c0 .57.096.97.287 1.204.191.233.474.35.847.35.261 0 .511-.047.749-.14.238-.093.502-.252.791-.476l.504.77c-.15.13-.313.247-.49.35a3.638 3.638 0 01-1.106.42 2.963 2.963 0 01-1.442-.077 1.579 1.579 0 01-.679-.427 1.897 1.897 0 01-.413-.777c-.093-.322-.14-.721-.14-1.197v-6.51h-1.232v-.938zm14.14 8.918c-.168.15-.366.29-.595.42a4.39 4.39 0 01-.749.336c-.27.093-.553.166-.847.217-.294.051-.59.077-.889.077-.56 0-1.055-.086-1.484-.259a2.858 2.858 0 01-1.078-.742 3.234 3.234 0 01-.658-1.155 4.767 4.767 0 01-.224-1.512c0-.588.082-1.11.245-1.568.163-.457.399-.84.707-1.148a3.08 3.08 0 011.12-.707 4.187 4.187 0 011.47-.245c.392 0 .78.051 1.162.154.383.103.721.296 1.015.581.294.285.52.677.679 1.176.159.5.215 1.146.168 1.939H26.18c0 .84.226 1.468.679 1.883.453.415 1.057.623 1.813.623.252 0 .502-.03.749-.091.247-.06.483-.133.707-.217a3.72 3.72 0 00.595-.28c.173-.103.306-.196.399-.28l.434.798zm-2.954-5.362c-.308 0-.6.033-.875.098a1.995 1.995 0 00-.728.329c-.21.154-.383.355-.518.602s-.222.553-.259.917h4.354c-.047-.616-.245-1.094-.595-1.435-.35-.34-.81-.511-1.379-.511zm4.382-.756h1.666v-1.386l1.092-.308v1.694h3.738v.938h-3.738v3.304c0 .681.166 1.185.497 1.512.331.327.805.49 1.421.49.42 0 .786-.08 1.099-.238.313-.159.595-.331.847-.518l.364.826a3.938 3.938 0 01-1.169.63 4.182 4.182 0 01-1.393.238 3.41 3.41 0 01-1.057-.161 2.426 2.426 0 01-.875-.497 2.38 2.38 0 01-.602-.861c-.15-.35-.224-.768-.224-1.253v-3.472h-1.666v-.938z"/><path id="count" fill="#181717" d="M55.496 21.046a5.531 5.531 0 00-.693-.189 3.61 3.61 0 00-.735-.077c-.915 0-1.596.215-2.044.644-.448.43-.672 1.11-.672 2.044 0 .41.065.777.196 1.099.13.322.317.595.56.819.243.224.534.397.875.518.34.121.716.182 1.127.182.439 0 .866-.075 1.281-.224.415-.15.763-.345 1.043-.588l.49.812c-.13.112-.294.229-.49.35a4.837 4.837 0 01-1.533.602 4.962 4.962 0 01-1.015.098c-.607 0-1.141-.086-1.603-.259a3.045 3.045 0 01-1.155-.742 3.176 3.176 0 01-.7-1.162 4.525 4.525 0 01-.238-1.505c0-.588.082-1.11.245-1.568.163-.457.399-.84.707-1.148a3.08 3.08 0 011.12-.707 4.187 4.187 0 011.47-.245c.69 0 1.253.06 1.687.182.434.121.8.257 1.099.406l-.014.042v1.946h-1.008v-1.33zm3.052 2.422c0-1.13.294-2.023.882-2.681.588-.658 1.428-.987 2.52-.987.588 0 1.094.096 1.519.287.425.191.777.45 1.057.777.28.327.488.714.623 1.162.135.448.203.929.203 1.442 0 .56-.075 1.066-.224 1.519-.15.453-.369.838-.658 1.155-.29.317-.646.562-1.071.735a3.82 3.82 0 01-1.449.259c-.579 0-1.083-.096-1.512-.287a2.967 2.967 0 01-1.064-.777 3.168 3.168 0 01-.623-1.162 4.963 4.963 0 01-.203-1.442zm1.162 0c0 .327.04.653.119.98.08.327.208.62.385.882.177.261.408.471.693.63.285.159.632.238 1.043.238.747 0 1.309-.231 1.687-.693.378-.462.567-1.141.567-2.037 0-.336-.04-.665-.119-.987a2.608 2.608 0 00-.392-.875 2.066 2.066 0 00-.7-.63c-.285-.159-.632-.238-1.043-.238-.747 0-1.307.229-1.68.686-.373.457-.56 1.139-.56 2.044zm11.522-3.5h1.988v4.774c0 .457.028.896.084 1.316h.938v.91H72.38l-.042-1.19h-.056a2.938 2.938 0 01-.966.98c-.401.252-.887.378-1.456.378-.43 0-.796-.049-1.099-.147a1.556 1.556 0 01-.749-.511c-.196-.243-.34-.567-.434-.973-.093-.406-.14-.912-.14-1.519v-3.08H66.5v-.938h2.03v3.794c0 .383.016.726.049 1.029.033.303.1.56.203.77.103.21.254.369.455.476.2.107.469.161.805.161.485 0 .908-.159 1.267-.476.36-.317.632-.714.819-1.19v-3.626h-.896v-.938zm4.62 2.45a14.05 14.05 0 00-.063-1.176 4.657 4.657 0 00-.049-.364h-.938v-.91h1.876l.126 1.134h.07c.093-.159.217-.315.371-.469a2.91 2.91 0 011.225-.721c.252-.075.518-.112.798-.112.43 0 .81.047 1.141.14.331.093.607.259.826.497.22.238.385.56.497.966.112.406.168.922.168 1.547v4.018h-1.092V23.16c0-.775-.126-1.358-.378-1.75-.252-.392-.71-.588-1.372-.588-.243 0-.478.049-.707.147a2.44 2.44 0 00-.623.385c-.187.159-.35.343-.49.553-.14.21-.243.432-.308.665v4.396h-1.078v-4.55zm7.532-2.45h1.666v-1.386l1.092-.308v1.694h3.738v.938h-3.738v3.304c0 .681.166 1.185.497 1.512.331.327.805.49 1.421.49.42 0 .786-.08 1.099-.238.313-.159.595-.331.847-.518l.364.826a3.938 3.938 0 01-1.169.63 4.182 4.182 0 01-1.393.238 3.41 3.41 0 01-1.057-.161 2.426 2.426 0 01-.875-.497 2.38 2.38 0 01-.602-.861c-.15-.35-.224-.768-.224-1.253v-3.472h-1.666v-.938z"/><path id="=" fill="#DBAF88" d="M100.702 20.57h6.496v1.008h-6.496V20.57zm0 2.296h6.496v1.008h-6.496v-1.008z"/><path id="0" fill="#A7333A" d="M117.32 22.068c0-.793.07-1.505.21-2.135.14-.63.35-1.162.63-1.596.28-.434.635-.765 1.064-.994.43-.229.938-.343 1.526-.343.625 0 1.155.112 1.589.336.434.224.786.55 1.057.98.27.43.467.959.588 1.589.121.63.182 1.351.182 2.163a9.88 9.88 0 01-.21 2.135c-.14.63-.35 1.162-.63 1.596-.28.434-.635.765-1.064.994-.43.229-.938.343-1.526.343-.616 0-1.141-.124-1.575-.371a2.956 2.956 0 01-1.064-1.043c-.275-.448-.474-.982-.595-1.603a10.713 10.713 0 01-.182-2.051zm5.698 0c0-.495-.028-.966-.084-1.414l-4.158 3.794c.159.532.397.957.714 1.274.317.317.733.476 1.246.476.821 0 1.407-.34 1.757-1.022.35-.681.525-1.717.525-3.108zm-4.536 0c0 .233.007.457.021.672.014.215.03.425.049.63l4.172-3.78c-.159-.504-.394-.905-.707-1.204-.313-.299-.735-.448-1.267-.448-.83 0-1.416.343-1.757 1.029-.34.686-.511 1.72-.511 3.101z"/><path id=";" fill="#7E7C7B" d="M128.156 26.198c0-.28.091-.506.273-.679.182-.173.418-.259.707-.259.355 0 .63.124.826.371.196.247.294.595.294 1.043a2.36 2.36 0 01-.637 1.659 2.465 2.465 0 01-.588.462c-.21.117-.404.203-.581.259l-.35-.546c.336-.13.625-.317.868-.56.243-.243.364-.537.364-.882-.13.028-.233.042-.308.042-.27 0-.483-.077-.637-.231-.154-.154-.231-.38-.231-.679zm.126-5.502c0-.299.084-.53.252-.693.168-.163.392-.245.672-.245.299 0 .532.082.7.245.168.163.252.394.252.693 0 .27-.084.495-.252.672-.168.177-.401.266-.7.266-.28 0-.504-.089-.672-.266a.938.938 0 01-.252-.672z"/><path id="returnfunction" fill="#1C85B5" d="M16.674 60.968v-.938h1.89v-5.124h-1.89v-.938h2.618l.224.91h.07c.317-.29.672-.537 1.064-.742.392-.205.859-.308 1.4-.308.317 0 .572.06.763.182.191.121.34.299.448.532.107.233.18.516.217.847.037.331.056.707.056 1.127l-.98.014c0-.597-.058-1.036-.175-1.316-.117-.28-.329-.42-.637-.42-.29 0-.55.042-.784.126a2.565 2.565 0 00-.609.308c-.173.121-.32.243-.441.364s-.21.224-.266.308v4.13h2.688v.938h-5.656zm14.882-.882c-.168.15-.366.29-.595.42a4.39 4.39 0 01-.749.336c-.27.093-.553.166-.847.217-.294.051-.59.077-.889.077-.56 0-1.055-.086-1.484-.259a2.858 2.858 0 01-1.078-.742 3.234 3.234 0 01-.658-1.155 4.767 4.767 0 01-.224-1.512c0-.588.082-1.11.245-1.568.163-.457.399-.84.707-1.148a3.08 3.08 0 011.12-.707 4.187 4.187 0 011.47-.245c.392 0 .78.051 1.162.154.383.103.721.296 1.015.581.294.285.52.677.679 1.176.159.5.215 1.146.168 1.939H26.18c0 .84.226 1.468.679 1.883.453.415 1.057.623 1.813.623.252 0 .502-.03.749-.091.247-.06.483-.133.707-.217a3.72 3.72 0 00.595-.28c.173-.103.306-.196.399-.28l.434.798zm-2.954-5.362c-.308 0-.6.033-.875.098a1.995 1.995 0 00-.728.329c-.21.154-.383.355-.518.602s-.222.553-.259.917h4.354c-.047-.616-.245-1.094-.595-1.435-.35-.34-.81-.511-1.379-.511zm4.382-.756h1.666v-1.386l1.092-.308v1.694h3.738v.938h-3.738v3.304c0 .681.166 1.185.497 1.512.331.327.805.49 1.421.49.42 0 .786-.08 1.099-.238.313-.159.595-.331.847-.518l.364.826a3.938 3.938 0 01-1.169.63 4.182 4.182 0 01-1.393.238 3.41 3.41 0 01-1.057-.161 2.426 2.426 0 01-.875-.497 2.38 2.38 0 01-.602-.861c-.15-.35-.224-.768-.224-1.253v-3.472h-1.666v-.938zm13.048 0h1.988v4.774c0 .457.028.896.084 1.316h.938v.91H47.18l-.042-1.19h-.056a2.938 2.938 0 01-.966.98c-.401.252-.887.378-1.456.378-.43 0-.796-.049-1.099-.147a1.556 1.556 0 01-.749-.511c-.196-.243-.34-.567-.434-.973-.093-.406-.14-.912-.14-1.519v-3.08H41.3v-.938h2.03v3.794c0 .383.016.726.049 1.029.033.303.1.56.203.77.103.21.254.369.455.476.2.107.469.161.805.161.485 0 .908-.159 1.267-.476.36-.317.632-.714.819-1.19v-3.626h-.896v-.938zm4.242 7v-.938h1.89v-5.124h-1.89v-.938h2.618l.224.91h.07c.317-.29.672-.537 1.064-.742.392-.205.859-.308 1.4-.308.317 0 .572.06.763.182.191.121.34.299.448.532.107.233.18.516.217.847.037.331.056.707.056 1.127l-.98.014c0-.597-.058-1.036-.175-1.316-.117-.28-.329-.42-.637-.42-.29 0-.55.042-.784.126a2.565 2.565 0 00-.609.308c-.173.121-.32.243-.441.364s-.21.224-.266.308v4.13h2.688v.938h-5.656zm8.778-4.55a14.05 14.05 0 00-.063-1.176 4.657 4.657 0 00-.049-.364h-.938v-.91h1.876l.126 1.134h.07c.093-.159.217-.315.371-.469a2.91 2.91 0 011.225-.721c.252-.075.518-.112.798-.112.43 0 .81.047 1.141.14.331.093.607.259.826.497.22.238.385.56.497.966.112.406.168.922.168 1.547v4.018h-1.092V57.16c0-.775-.126-1.358-.378-1.75-.252-.392-.71-.588-1.372-.588-.243 0-.478.049-.707.147a2.44 2.44 0 00-.623.385c-.187.159-.35.343-.49.553-.14.21-.243.432-.308.665v4.396h-1.078v-4.55zm16.73 4.55v-.938h1.666v-5.124h-1.666v-.938h1.666v-.392c0-.877.229-1.512.686-1.904.457-.392 1.11-.588 1.96-.588.308 0 .583.019.826.056.243.037.504.112.784.224l-.252.91a2.862 2.862 0 00-.7-.203 4.295 4.295 0 00-.616-.049c-.616 0-1.036.152-1.26.455-.224.303-.336.8-.336 1.491h2.898v.938H78.54v5.124h2.898v.938h-5.656zm12.25-7h1.988v4.774c0 .457.028.896.084 1.316h.938v.91H89.18l-.042-1.19h-.056a2.938 2.938 0 01-.966.98c-.401.252-.887.378-1.456.378-.43 0-.796-.049-1.099-.147a1.556 1.556 0 01-.749-.511c-.196-.243-.34-.567-.434-.973-.093-.406-.14-.912-.14-1.519v-3.08H83.3v-.938h2.03v3.794c0 .383.016.726.049 1.029.033.303.1.56.203.77.103.21.254.369.455.476.2.107.469.161.805.161.485 0 .908-.159 1.267-.476.36-.317.632-.714.819-1.19v-3.626h-.896v-.938zm4.62 2.45a14.05 14.05 0 00-.063-1.176 4.657 4.657 0 00-.049-.364h-.938v-.91h1.876l.126 1.134h.07c.093-.159.217-.315.371-.469a2.91 2.91 0 011.225-.721c.252-.075.518-.112.798-.112.43 0 .81.047 1.141.14.331.093.607.259.826.497.22.238.385.56.497.966.112.406.168.922.168 1.547v4.018h-1.092V57.16c0-.775-.126-1.358-.378-1.75-.252-.392-.71-.588-1.372-.588-.243 0-.478.049-.707.147a2.44 2.44 0 00-.623.385c-.187.159-.35.343-.49.553-.14.21-.243.432-.308.665v4.396h-1.078v-4.55zm13.244-1.372a5.531 5.531 0 00-.693-.189 3.61 3.61 0 00-.735-.077c-.915 0-1.596.215-2.044.644-.448.43-.672 1.11-.672 2.044 0 .41.065.777.196 1.099.13.322.317.595.56.819.243.224.534.397.875.518.34.121.716.182 1.127.182.439 0 .866-.075 1.281-.224.415-.15.763-.345 1.043-.588l.49.812c-.13.112-.294.229-.49.35a4.837 4.837 0 01-1.533.602 4.962 4.962 0 01-1.015.098c-.607 0-1.141-.086-1.603-.259a3.045 3.045 0 01-1.155-.742 3.176 3.176 0 01-.7-1.162 4.525 4.525 0 01-.238-1.505c0-.588.082-1.11.245-1.568.163-.457.399-.84.707-1.148a3.08 3.08 0 011.12-.707 4.187 4.187 0 011.47-.245c.69 0 1.253.06 1.687.182.434.121.8.257 1.099.406l-.014.042v1.946h-1.008v-1.33zm2.688-1.078h1.666v-1.386l1.092-.308v1.694h3.738v.938h-3.738v3.304c0 .681.166 1.185.497 1.512.331.327.805.49 1.421.49.42 0 .786-.08 1.099-.238.313-.159.595-.331.847-.518l.364.826a3.938 3.938 0 01-1.169.63 4.182 4.182 0 01-1.393.238 3.41 3.41 0 01-1.057-.161 2.426 2.426 0 01-.875-.497 2.38 2.38 0 01-.602-.861c-.15-.35-.224-.768-.224-1.253v-3.472h-1.666v-.938zm9.436 7v-.938h2.436v-5.124h-2.436v-.938h3.556v6.062h2.38v.938h-5.936zm2.058-8.988c0-.252.084-.469.252-.651a.838.838 0 01.644-.273c.27 0 .497.091.679.273a.889.889 0 01.273.651.806.806 0 01-.273.616.963.963 0 01-.679.252.872.872 0 01-.644-.252.838.838 0 01-.252-.616zm5.67 5.488c0-1.13.294-2.023.882-2.681.588-.658 1.428-.987 2.52-.987.588 0 1.094.096 1.519.287.425.191.777.45 1.057.777.28.327.488.714.623 1.162.135.448.203.929.203 1.442 0 .56-.075 1.066-.224 1.519-.15.453-.369.838-.658 1.155-.29.317-.646.562-1.071.735a3.82 3.82 0 01-1.449.259c-.579 0-1.083-.096-1.512-.287a2.967 2.967 0 01-1.064-.777 3.168 3.168 0 01-.623-1.162 4.963 4.963 0 01-.203-1.442zm1.162 0c0 .327.04.653.119.98.08.327.208.62.385.882.177.261.408.471.693.63.285.159.632.238 1.043.238.747 0 1.309-.231 1.687-.693.378-.462.567-1.141.567-2.037 0-.336-.04-.665-.119-.987a2.608 2.608 0 00-.392-.875 2.066 2.066 0 00-.7-.63c-.285-.159-.632-.238-1.043-.238-.747 0-1.307.229-1.68.686-.373.457-.56 1.139-.56 2.044zm7.742-1.05a14.051 14.051 0 00-.063-1.176 4.657 4.657 0 00-.049-.364h-.938v-.91h1.876l.126 1.134h.07c.093-.159.217-.315.371-.469a2.91 2.91 0 011.225-.721c.252-.075.518-.112.798-.112.43 0 .81.047 1.141.14.331.093.607.259.826.497.22.238.385.56.497.966.112.406.168.922.168 1.547v4.018h-1.092V57.16c0-.775-.126-1.358-.378-1.75-.252-.392-.71-.588-1.372-.588-.243 0-.478.049-.707.147a2.44 2.44 0 00-.623.385c-.187.159-.35.343-.49.553-.14.21-.243.432-.308.665v4.396h-1.078v-4.55z"/><path id="(){" fill="#7E7C7B" d="M147.798 63.936a6.964 6.964 0 01-1.757-.707 5.036 5.036 0 01-1.428-1.225c-.406-.504-.728-1.12-.966-1.848s-.357-1.591-.357-2.59c0-.99.121-1.855.364-2.597s.57-1.372.98-1.89c.41-.518.889-.933 1.435-1.246a6.005 6.005 0 011.729-.665l.35.882a7.086 7.086 0 00-1.512.623 3.928 3.928 0 00-1.183 1.022c-.331.425-.588.952-.77 1.582-.182.63-.273 1.393-.273 2.289 0 .905.11 1.678.329 2.317.22.64.509 1.171.868 1.596.36.425.76.756 1.204.994.443.238.889.404 1.337.497l-.35.966zm4.354-.966a4.965 4.965 0 001.337-.497 4.15 4.15 0 001.204-.994c.36-.425.649-.957.868-1.596.22-.64.329-1.412.329-2.317 0-.896-.091-1.659-.273-2.289-.182-.63-.439-1.157-.77-1.582a3.928 3.928 0 00-1.183-1.022 7.086 7.086 0 00-1.512-.623l.35-.882c.607.13 1.183.352 1.729.665a4.984 4.984 0 011.435 1.246c.41.518.737 1.148.98 1.89s.364 1.608.364 2.597c0 .999-.119 1.862-.357 2.59-.238.728-.56 1.344-.966 1.848a5.036 5.036 0 01-1.428 1.225 6.964 6.964 0 01-1.757.707l-.35-.966zm17.878-2.45c0-.401-.068-.749-.203-1.043a2.44 2.44 0 00-.504-.735c-.2-.196-.415-.34-.644-.434a1.641 1.641 0 00-.609-.14v-.98c.177 0 .38-.04.609-.119.229-.08.443-.21.644-.392.2-.182.369-.418.504-.707.135-.29.203-.649.203-1.078v-1.428c0-.336.054-.644.161-.924a2.22 2.22 0 01.448-.728c.191-.205.42-.366.686-.483.266-.117.558-.175.875-.175h2.03v.98h-1.54c-.588 0-.996.14-1.225.42-.229.28-.343.695-.343 1.246v1.358c0 .383-.07.723-.21 1.022a2.7 2.7 0 01-1.106 1.225c-.205.117-.373.184-.504.203v.084c.121.019.285.091.49.217.205.126.406.299.602.518.196.22.366.478.511.777.145.299.217.63.217.994v1.344c0 .57.121.99.364 1.26s.649.406 1.218.406h1.526v.98h-2.03c-.653 0-1.178-.194-1.575-.581-.397-.387-.595-.959-.595-1.715V60.52z"/><path id="return" fill="#1C85B5" d="M33.474 77.968v-.938h1.89v-5.124h-1.89v-.938h2.618l.224.91h.07c.317-.29.672-.537 1.064-.742.392-.205.859-.308 1.4-.308.317 0 .572.06.763.182.191.121.34.299.448.532.107.233.18.516.217.847.037.331.056.707.056 1.127l-.98.014c0-.597-.058-1.036-.175-1.316-.117-.28-.329-.42-.637-.42-.29 0-.55.042-.784.126a2.565 2.565 0 00-.609.308c-.173.121-.32.243-.441.364s-.21.224-.266.308v4.13h2.688v.938h-5.656zm14.882-.882c-.168.15-.366.29-.595.42a4.39 4.39 0 01-.749.336c-.27.093-.553.166-.847.217-.294.051-.59.077-.889.077-.56 0-1.055-.086-1.484-.259a2.858 2.858 0 01-1.078-.742 3.234 3.234 0 01-.658-1.155 4.767 4.767 0 01-.224-1.512c0-.588.082-1.11.245-1.568.163-.457.399-.84.707-1.148a3.08 3.08 0 011.12-.707 4.187 4.187 0 011.47-.245c.392 0 .78.051 1.162.154.383.103.721.296 1.015.581.294.285.52.677.679 1.176.159.5.215 1.146.168 1.939H42.98c0 .84.226 1.468.679 1.883.453.415 1.057.623 1.813.623.252 0 .502-.03.749-.091.247-.06.483-.133.707-.217a3.72 3.72 0 00.595-.28c.173-.103.306-.196.399-.28l.434.798zm-2.954-5.362c-.308 0-.6.033-.875.098a1.995 1.995 0 00-.728.329c-.21.154-.383.355-.518.602s-.222.553-.259.917h4.354c-.047-.616-.245-1.094-.595-1.435-.35-.34-.81-.511-1.379-.511zm4.382-.756h1.666v-1.386l1.092-.308v1.694h3.738v.938h-3.738v3.304c0 .681.166 1.185.497 1.512.331.327.805.49 1.421.49.42 0 .786-.08 1.099-.238.313-.159.595-.331.847-.518l.364.826a3.938 3.938 0 01-1.169.63 4.182 4.182 0 01-1.393.238 3.41 3.41 0 01-1.057-.161 2.426 2.426 0 01-.875-.497 2.38 2.38 0 01-.602-.861c-.15-.35-.224-.768-.224-1.253v-3.472h-1.666v-.938zm13.048 0h1.988v4.774c0 .457.028.896.084 1.316h.938v.91H63.98l-.042-1.19h-.056a2.938 2.938 0 01-.966.98c-.401.252-.887.378-1.456.378-.43 0-.796-.049-1.099-.147a1.556 1.556 0 01-.749-.511c-.196-.243-.34-.567-.434-.973-.093-.406-.14-.912-.14-1.519v-3.08H58.1v-.938h2.03v3.794c0 .383.016.726.049 1.029.033.303.1.56.203.77.103.21.254.369.455.476.2.107.469.161.805.161.485 0 .908-.159 1.267-.476.36-.317.632-.714.819-1.19v-3.626h-.896v-.938zm4.242 7v-.938h1.89v-5.124h-1.89v-.938h2.618l.224.91h.07c.317-.29.672-.537 1.064-.742.392-.205.859-.308 1.4-.308.317 0 .572.06.763.182.191.121.34.299.448.532.107.233.18.516.217.847.037.331.056.707.056 1.127l-.98.014c0-.597-.058-1.036-.175-1.316-.117-.28-.329-.42-.637-.42-.29 0-.55.042-.784.126a2.565 2.565 0 00-.609.308c-.173.121-.32.243-.441.364s-.21.224-.266.308v4.13h2.688v.938h-5.656zm8.778-4.55a14.05 14.05 0 00-.063-1.176 4.657 4.657 0 00-.049-.364h-.938v-.91h1.876l.126 1.134h.07c.093-.159.217-.315.371-.469a2.91 2.91 0 011.225-.721c.252-.075.518-.112.798-.112.43 0 .81.047 1.141.14.331.093.607.259.826.497.22.238.385.56.497.966.112.406.168.922.168 1.547v4.018h-1.092V74.16c0-.775-.126-1.358-.378-1.75-.252-.392-.71-.588-1.372-.588-.243 0-.478.049-.707.147a2.44 2.44 0 00-.623.385c-.187.159-.35.343-.49.553-.14.21-.243.432-.308.665v4.396h-1.078v-4.55z"/><path id="count" fill="#181717" d="M97.496 72.046a5.531 5.531 0 00-.693-.189 3.61 3.61 0 00-.735-.077c-.915 0-1.596.215-2.044.644-.448.43-.672 1.11-.672 2.044 0 .41.065.777.196 1.099.13.322.317.595.56.819.243.224.534.397.875.518.34.121.716.182 1.127.182.439 0 .866-.075 1.281-.224.415-.15.763-.345 1.043-.588l.49.812c-.13.112-.294.229-.49.35a4.837 4.837 0 01-1.533.602 4.962 4.962 0 01-1.015.098c-.607 0-1.141-.086-1.603-.259a3.045 3.045 0 01-1.155-.742 3.176 3.176 0 01-.7-1.162 4.525 4.525 0 01-.238-1.505c0-.588.082-1.11.245-1.568.163-.457.399-.84.707-1.148a3.08 3.08 0 011.12-.707 4.187 4.187 0 011.47-.245c.69 0 1.253.06 1.687.182.434.121.8.257 1.099.406l-.014.042v1.946h-1.008v-1.33zm3.052 2.422c0-1.13.294-2.023.882-2.681.588-.658 1.428-.987 2.52-.987.588 0 1.094.096 1.519.287.425.191.777.45 1.057.777.28.327.488.714.623 1.162.135.448.203.929.203 1.442 0 .56-.075 1.066-.224 1.519-.15.453-.369.838-.658 1.155-.29.317-.646.562-1.071.735a3.82 3.82 0 01-1.449.259c-.579 0-1.083-.096-1.512-.287a2.967 2.967 0 01-1.064-.777 3.168 3.168 0 01-.623-1.162 4.963 4.963 0 01-.203-1.442zm1.162 0c0 .327.04.653.119.98.08.327.208.62.385.882.177.261.408.471.693.63.285.159.632.238 1.043.238.747 0 1.309-.231 1.687-.693.378-.462.567-1.141.567-2.037 0-.336-.04-.665-.119-.987a2.608 2.608 0 00-.392-.875 2.066 2.066 0 00-.7-.63c-.285-.159-.632-.238-1.043-.238-.747 0-1.307.229-1.68.686-.373.457-.56 1.139-.56 2.044zm11.522-3.5h1.988v4.774c0 .457.028.896.084 1.316h.938v.91h-1.862l-.042-1.19h-.056a2.938 2.938 0 01-.966.98c-.401.252-.887.378-1.456.378-.43 0-.796-.049-1.099-.147a1.556 1.556 0 01-.749-.511c-.196-.243-.34-.567-.434-.973-.093-.406-.14-.912-.14-1.519v-3.08h-.938v-.938h2.03v3.794c0 .383.016.726.049 1.029.033.303.1.56.203.77.103.21.254.369.455.476.2.107.469.161.805.161.485 0 .908-.159 1.267-.476.36-.317.632-.714.819-1.19v-3.626h-.896v-.938zm4.62 2.45a14.051 14.051 0 00-.063-1.176 4.657 4.657 0 00-.049-.364h-.938v-.91h1.876l.126 1.134h.07c.093-.159.217-.315.371-.469a2.91 2.91 0 011.225-.721c.252-.075.518-.112.798-.112.43 0 .81.047 1.141.14.331.093.607.259.826.497.22.238.385.56.497.966.112.406.168.922.168 1.547v4.018h-1.092V74.16c0-.775-.126-1.358-.378-1.75-.252-.392-.71-.588-1.372-.588-.243 0-.478.049-.707.147a2.44 2.44 0 00-.623.385c-.187.159-.35.343-.49.553-.14.21-.243.432-.308.665v4.396h-1.078v-4.55zm7.532-2.45h1.666v-1.386l1.092-.308v1.694h3.738v.938h-3.738v3.304c0 .681.166 1.185.497 1.512.331.327.805.49 1.421.49.42 0 .786-.08 1.099-.238.313-.159.595-.331.847-.518l.364.826a3.938 3.938 0 01-1.169.63 4.182 4.182 0 01-1.393.238 3.41 3.41 0 01-1.057-.161 2.426 2.426 0 01-.875-.497 2.38 2.38 0 01-.602-.861c-.15-.35-.224-.768-.224-1.253v-3.472h-1.666v-.938z"/><path id="++" fill="#DBAF88" d="M134.022 72.732h3.024v-3.094h1.008v3.094h3.024v1.008h-3.024v3.094h-1.008V73.74h-3.024v-1.008zm8.4 0h3.024v-3.094h1.008v3.094h3.024v1.008h-3.024v3.094h-1.008V73.74h-3.024v-1.008z"/><path id=";};}" fill="#7E7C7B" d="M153.356 77.198c0-.28.091-.506.273-.679.182-.173.418-.259.707-.259.355 0 .63.124.826.371.196.247.294.595.294 1.043a2.36 2.36 0 01-.637 1.659 2.465 2.465 0 01-.588.462c-.21.117-.404.203-.581.259l-.35-.546c.336-.13.625-.317.868-.56.243-.243.364-.537.364-.882-.13.028-.233.042-.308.042-.27 0-.483-.077-.637-.231-.154-.154-.231-.38-.231-.679zm.126-5.502c0-.299.084-.53.252-.693.168-.163.392-.245.672-.245.299 0 .532.082.7.245.168.163.252.394.252.693 0 .27-.084.495-.252.672-.168.177-.401.266-.7.266-.28 0-.504-.089-.672-.266a.938.938 0 01-.252-.672zM21.07 95.892c0 .756-.198 1.328-.595 1.715-.397.387-.922.581-1.575.581h-2.03v-.98h1.526c.57 0 .975-.135 1.218-.406.243-.27.364-.69.364-1.26v-1.344c0-.364.07-.695.21-.994.14-.299.308-.558.504-.777.196-.22.397-.392.602-.518.205-.126.373-.198.504-.217v-.084c-.13-.019-.299-.086-.504-.203a2.7 2.7 0 01-1.106-1.225c-.14-.299-.21-.64-.21-1.022V87.8c0-.55-.114-.966-.343-1.246-.229-.28-.637-.42-1.225-.42h-1.54v-.98h2.03c.317 0 .609.058.875.175.266.117.495.278.686.483.191.205.34.448.448.728.107.28.161.588.161.924v1.428c0 .43.068.789.203 1.078.135.29.303.525.504.707.2.182.415.313.644.392.229.08.432.119.609.119v.98c-.177 0-.38.047-.609.14a2.011 2.011 0 00-.644.434 2.44 2.44 0 00-.504.735c-.135.294-.203.642-.203 1.043v1.372zm6.286-1.694c0-.28.091-.506.273-.679.182-.173.418-.259.707-.259.355 0 .63.124.826.371.196.247.294.595.294 1.043a2.36 2.36 0 01-.637 1.659 2.465 2.465 0 01-.588.462c-.21.117-.404.203-.581.259l-.35-.546c.336-.13.625-.317.868-.56.243-.243.364-.537.364-.882-.13.028-.233.042-.308.042-.27 0-.483-.077-.637-.231-.154-.154-.231-.38-.231-.679zm.126-5.502c0-.299.084-.53.252-.693.168-.163.392-.245.672-.245.299 0 .532.082.7.245.168.163.252.394.252.693 0 .27-.084.495-.252.672-.168.177-.401.266-.7.266-.28 0-.504-.089-.672-.266a.938.938 0 01-.252-.672zM4.27 112.892c0 .756-.198 1.328-.595 1.715-.397.387-.922.581-1.575.581H.07v-.98h1.526c.57 0 .975-.135 1.218-.406.243-.27.364-.69.364-1.26v-1.344c0-.364.07-.695.21-.994.14-.299.308-.558.504-.777.196-.22.397-.392.602-.518.205-.126.373-.198.504-.217v-.084c-.13-.019-.299-.086-.504-.203a2.7 2.7 0 01-1.106-1.225c-.14-.299-.21-.64-.21-1.022V104.8c0-.55-.114-.966-.343-1.246-.229-.28-.637-.42-1.225-.42H.07v-.98H2.1c.317 0 .609.058.875.175.266.117.495.278.686.483.191.205.34.448.448.728.107.28.161.588.161.924v1.428c0 .43.068.789.203 1.078.135.29.303.525.504.707.2.182.415.313.644.392.229.08.432.119.609.119v.98c-.177 0-.38.047-.609.14a2.011 2.011 0 00-.644.434 2.44 2.44 0 00-.504.735c-.135.294-.203.642-.203 1.043v1.372z"/><path id="let" fill="#1C85B5" d="M.616 136.168H2.94v7.448c0 .57.096.97.287 1.204.191.233.474.35.847.35.261 0 .511-.047.749-.14.238-.093.502-.252.791-.476l.504.77c-.15.13-.313.247-.49.35a3.638 3.638 0 01-1.106.42 2.963 2.963 0 01-1.442-.077 1.579 1.579 0 01-.679-.427 1.897 1.897 0 01-.413-.777c-.093-.322-.14-.721-.14-1.197v-6.51H.616v-.938zm14.14 8.918c-.168.15-.366.29-.595.42a4.39 4.39 0 01-.749.336c-.27.093-.553.166-.847.217-.294.051-.59.077-.889.077-.56 0-1.055-.086-1.484-.259a2.858 2.858 0 01-1.078-.742 3.234 3.234 0 01-.658-1.155 4.767 4.767 0 01-.224-1.512c0-.588.082-1.11.245-1.568.163-.457.399-.84.707-1.148a3.08 3.08 0 011.12-.707 4.187 4.187 0 011.47-.245c.392 0 .78.051 1.162.154.383.103.721.296 1.015.581.294.285.52.677.679 1.176.159.5.215 1.146.168 1.939H9.38c0 .84.226 1.468.679 1.883.453.415 1.057.623 1.813.623.252 0 .502-.03.749-.091.247-.06.483-.133.707-.217a3.72 3.72 0 00.595-.28c.173-.103.306-.196.399-.28l.434.798zm-2.954-5.362c-.308 0-.6.033-.875.098a1.995 1.995 0 00-.728.329c-.21.154-.383.355-.518.602s-.222.553-.259.917h4.354c-.047-.616-.245-1.094-.595-1.435-.35-.34-.81-.511-1.379-.511zm4.382-.756h1.666v-1.386l1.092-.308v1.694h3.738v.938h-3.738v3.304c0 .681.166 1.185.497 1.512.331.327.805.49 1.421.49.42 0 .786-.08 1.099-.238.313-.159.595-.331.847-.518l.364.826a3.938 3.938 0 01-1.169.63 4.182 4.182 0 01-1.393.238 3.41 3.41 0 01-1.057-.161 2.426 2.426 0 01-.875-.497 2.38 2.38 0 01-.602-.861c-.15-.35-.224-.768-.224-1.253v-3.472h-1.666v-.938z"/><path id="counter" fill="#181717" d="M38.696 140.046a5.531 5.531 0 00-.693-.189 3.61 3.61 0 00-.735-.077c-.915 0-1.596.215-2.044.644-.448.43-.672 1.11-.672 2.044 0 .41.065.777.196 1.099.13.322.317.595.56.819.243.224.534.397.875.518.34.121.716.182 1.127.182.439 0 .866-.075 1.281-.224.415-.15.763-.345 1.043-.588l.49.812c-.13.112-.294.229-.49.35a4.837 4.837 0 01-1.533.602 4.962 4.962 0 01-1.015.098c-.607 0-1.141-.086-1.603-.259a3.045 3.045 0 01-1.155-.742 3.176 3.176 0 01-.7-1.162 4.525 4.525 0 01-.238-1.505c0-.588.082-1.11.245-1.568.163-.457.399-.84.707-1.148a3.08 3.08 0 011.12-.707 4.187 4.187 0 011.47-.245c.69 0 1.253.06 1.687.182.434.121.8.257 1.099.406l-.014.042v1.946h-1.008v-1.33zm3.052 2.422c0-1.13.294-2.023.882-2.681.588-.658 1.428-.987 2.52-.987.588 0 1.094.096 1.519.287.425.191.777.45 1.057.777.28.327.488.714.623 1.162.135.448.203.929.203 1.442 0 .56-.075 1.066-.224 1.519-.15.453-.369.838-.658 1.155-.29.317-.646.562-1.071.735a3.82 3.82 0 01-1.449.259c-.579 0-1.083-.096-1.512-.287a2.967 2.967 0 01-1.064-.777 3.168 3.168 0 01-.623-1.162 4.963 4.963 0 01-.203-1.442zm1.162 0c0 .327.04.653.119.98.08.327.208.62.385.882.177.261.408.471.693.63.285.159.632.238 1.043.238.747 0 1.309-.231 1.687-.693.378-.462.567-1.141.567-2.037 0-.336-.04-.665-.119-.987a2.608 2.608 0 00-.392-.875 2.066 2.066 0 00-.7-.63c-.285-.159-.632-.238-1.043-.238-.747 0-1.307.229-1.68.686-.373.457-.56 1.139-.56 2.044zm11.522-3.5h1.988v4.774c0 .457.028.896.084 1.316h.938v.91H55.58l-.042-1.19h-.056a2.938 2.938 0 01-.966.98c-.401.252-.887.378-1.456.378-.43 0-.796-.049-1.099-.147a1.556 1.556 0 01-.749-.511c-.196-.243-.34-.567-.434-.973-.093-.406-.14-.912-.14-1.519v-3.08H49.7v-.938h2.03v3.794c0 .383.016.726.049 1.029.033.303.1.56.203.77.103.21.254.369.455.476.2.107.469.161.805.161.485 0 .908-.159 1.267-.476.36-.317.632-.714.819-1.19v-3.626h-.896v-.938zm4.62 2.45a14.05 14.05 0 00-.063-1.176 4.657 4.657 0 00-.049-.364h-.938v-.91h1.876l.126 1.134h.07c.093-.159.217-.315.371-.469a2.91 2.91 0 011.225-.721c.252-.075.518-.112.798-.112.43 0 .81.047 1.141.14.331.093.607.259.826.497.22.238.385.56.497.966.112.406.168.922.168 1.547v4.018h-1.092v-3.808c0-.775-.126-1.358-.378-1.75-.252-.392-.71-.588-1.372-.588-.243 0-.478.049-.707.147a2.44 2.44 0 00-.623.385c-.187.159-.35.343-.49.553-.14.21-.243.432-.308.665v4.396h-1.078v-4.55zm7.532-2.45h1.666v-1.386l1.092-.308v1.694h3.738v.938h-3.738v3.304c0 .681.166 1.185.497 1.512.331.327.805.49 1.421.49.42 0 .786-.08 1.099-.238.313-.159.595-.331.847-.518l.364.826a3.938 3.938 0 01-1.169.63 4.182 4.182 0 01-1.393.238 3.41 3.41 0 01-1.057-.161 2.426 2.426 0 01-.875-.497 2.38 2.38 0 01-.602-.861c-.15-.35-.224-.768-.224-1.253v-3.472h-1.666v-.938zm15.372 6.118c-.168.15-.366.29-.595.42a4.39 4.39 0 01-.749.336c-.27.093-.553.166-.847.217-.294.051-.59.077-.889.077-.56 0-1.055-.086-1.484-.259a2.858 2.858 0 01-1.078-.742 3.234 3.234 0 01-.658-1.155 4.767 4.767 0 01-.224-1.512c0-.588.082-1.11.245-1.568.163-.457.399-.84.707-1.148a3.08 3.08 0 011.12-.707 4.187 4.187 0 011.47-.245c.392 0 .78.051 1.162.154.383.103.721.296 1.015.581.294.285.52.677.679 1.176.159.5.215 1.146.168 1.939H76.58c0 .84.226 1.468.679 1.883.453.415 1.057.623 1.813.623.252 0 .502-.03.749-.091.247-.06.483-.133.707-.217a3.72 3.72 0 00.595-.28c.173-.103.306-.196.399-.28l.434.798zm-2.954-5.362c-.308 0-.6.033-.875.098a1.995 1.995 0 00-.728.329c-.21.154-.383.355-.518.602s-.222.553-.259.917h4.354c-.047-.616-.245-1.094-.595-1.435-.35-.34-.81-.511-1.379-.511zm4.872 6.244v-.938h1.89v-5.124h-1.89v-.938h2.618l.224.91h.07c.317-.29.672-.537 1.064-.742.392-.205.859-.308 1.4-.308.317 0 .572.06.763.182.191.121.34.299.448.532.107.233.18.516.217.847.037.331.056.707.056 1.127l-.98.014c0-.597-.058-1.036-.175-1.316-.117-.28-.329-.42-.637-.42-.29 0-.55.042-.784.126a2.565 2.565 0 00-.609.308c-.173.121-.32.243-.441.364s-.21.224-.266.308v4.13h2.688v.938h-5.656z"/><path id="=" fill="#DBAF88" d="M100.702 139.57h6.496v1.008h-6.496v-1.008zm0 2.296h6.496v1.008h-6.496v-1.008z"/><path id="makeCounter" fill="#181717" d="M120.218 145.968v-4.662c0-.196-.007-.385-.021-.567a1.9 1.9 0 00-.098-.49.786.786 0 00-.224-.343.57.57 0 00-.385-.126c-.317 0-.586.13-.805.392-.22.261-.385.588-.497.98v4.816h-1.064v-7h.728l.21.854h.056c.093-.14.184-.273.273-.399.089-.126.191-.236.308-.329.117-.093.254-.166.413-.217.159-.051.36-.077.602-.077.14 0 .285.021.434.063.15.042.287.107.413.196.126.089.236.208.329.357.093.15.154.331.182.546.215-.364.455-.649.721-.854.266-.205.632-.308 1.099-.308.308 0 .558.051.749.154.191.103.34.25.448.441.107.191.182.42.224.686.042.266.063.562.063.889v4.998h-1.064v-4.76c0-.196-.01-.38-.028-.553a1.764 1.764 0 00-.105-.455.752.752 0 00-.21-.308.536.536 0 00-.357-.112c-.327 0-.602.13-.826.392-.224.261-.392.635-.504 1.12v4.676h-1.064zm6.244-6.454a4.447 4.447 0 011.358-.504 7.423 7.423 0 011.484-.154c.476 0 .866.075 1.169.224.303.15.541.343.714.581.173.238.29.509.35.812.06.303.091.609.091.917 0 .355-.01.733-.028 1.134-.019.401-.033.803-.042 1.204 0 .467.028.91.084 1.33h.938v.91h-1.862l-.126-1.05h-.07c-.056.084-.14.191-.252.322-.112.13-.259.259-.441.385a2.749 2.749 0 01-1.589.469c-.69 0-1.237-.177-1.638-.532-.401-.355-.602-.84-.602-1.456 0-.476.105-.873.315-1.19.21-.317.511-.56.903-.728.392-.168.866-.266 1.421-.294a9.544 9.544 0 011.869.112c.047-.43.054-.786.021-1.071-.033-.285-.107-.511-.224-.679a.938.938 0 00-.49-.357 2.482 2.482 0 00-.777-.105c-.42 0-.821.058-1.204.175-.383.117-.723.236-1.022.357l-.35-.812zm2.058 5.642c.261 0 .504-.042.728-.126a2.22 2.22 0 00.588-.322 2.133 2.133 0 00.672-.868v-.98a7.92 7.92 0 00-1.344-.126c-.41 0-.765.044-1.064.133-.299.089-.532.226-.7.413-.168.187-.252.43-.252.728 0 .308.105.576.315.805.21.229.562.343 1.057.343zm5.166-8.988h2.268v5.796h.77l2.758-2.996h1.316l-3.094 3.318 2.548 2.744h.91v.938h-1.442l-2.996-3.164h-.77v3.164h-1.078v-8.862h-1.19v-.938zm15.47 8.918c-.168.15-.366.29-.595.42a4.39 4.39 0 01-.749.336c-.27.093-.553.166-.847.217-.294.051-.59.077-.889.077-.56 0-1.055-.086-1.484-.259a2.858 2.858 0 01-1.078-.742 3.234 3.234 0 01-.658-1.155 4.767 4.767 0 01-.224-1.512c0-.588.082-1.11.245-1.568.163-.457.399-.84.707-1.148a3.08 3.08 0 011.12-.707 4.187 4.187 0 011.47-.245c.392 0 .78.051 1.162.154.383.103.721.296 1.015.581.294.285.52.677.679 1.176.159.5.215 1.146.168 1.939h-5.418c0 .84.226 1.468.679 1.883.453.415 1.057.623 1.813.623.252 0 .502-.03.749-.091.247-.06.483-.133.707-.217a3.72 3.72 0 00.595-.28c.173-.103.306-.196.399-.28l.434.798zm-2.954-5.362c-.308 0-.6.033-.875.098a1.995 1.995 0 00-.728.329c-.21.154-.383.355-.518.602s-.222.553-.259.917h4.354c-.047-.616-.245-1.094-.595-1.435-.35-.34-.81-.511-1.379-.511zm10.36-2.492a2.466 2.466 0 00-.525-.147 4.192 4.192 0 00-.693-.049c-.383 0-.758.07-1.127.21-.369.14-.695.369-.98.686-.285.317-.513.733-.686 1.246-.173.513-.259 1.143-.259 1.89 0 .672.077 1.26.231 1.764.154.504.369.924.644 1.26.275.336.607.588.994.756.387.168.819.252 1.295.252.243 0 .469-.021.679-.063.21-.042.404-.1.581-.175v-1.4h1.036v1.89l.014.028a3.66 3.66 0 01-1.064.539c-.43.145-.952.217-1.568.217-.588 0-1.132-.1-1.631-.301a3.41 3.41 0 01-1.295-.917c-.364-.41-.646-.936-.847-1.575-.2-.64-.301-1.398-.301-2.275 0-.915.112-1.692.336-2.331.224-.64.527-1.162.91-1.568a3.452 3.452 0 011.337-.889 4.697 4.697 0 011.631-.28c.317 0 .593.012.826.035.233.023.439.056.616.098s.334.096.469.161c.135.065.268.14.399.224h.014v2.212h-1.036v-1.498zm2.786 5.236c0-1.13.294-2.023.882-2.681.588-.658 1.428-.987 2.52-.987.588 0 1.094.096 1.519.287.425.191.777.45 1.057.777.28.327.488.714.623 1.162.135.448.203.929.203 1.442 0 .56-.075 1.066-.224 1.519-.15.453-.369.838-.658 1.155-.29.317-.646.562-1.071.735a3.82 3.82 0 01-1.449.259c-.579 0-1.083-.096-1.512-.287a2.967 2.967 0 01-1.064-.777 3.168 3.168 0 01-.623-1.162 4.963 4.963 0 01-.203-1.442zm1.162 0c0 .327.04.653.119.98.08.327.208.62.385.882.177.261.408.471.693.63.285.159.632.238 1.043.238.747 0 1.309-.231 1.687-.693.378-.462.567-1.141.567-2.037 0-.336-.04-.665-.119-.987a2.608 2.608 0 00-.392-.875 2.066 2.066 0 00-.7-.63c-.285-.159-.632-.238-1.043-.238-.747 0-1.307.229-1.68.686-.373.457-.56 1.139-.56 2.044zm11.522-3.5h1.988v4.774c0 .457.028.896.084 1.316h.938v.91h-1.862l-.042-1.19h-.056a2.938 2.938 0 01-.966.98c-.401.252-.887.378-1.456.378-.43 0-.796-.049-1.099-.147a1.556 1.556 0 01-.749-.511c-.196-.243-.34-.567-.434-.973-.093-.406-.14-.912-.14-1.519v-3.08h-.938v-.938h2.03v3.794c0 .383.016.726.049 1.029.033.303.1.56.203.77.103.21.254.369.455.476.2.107.469.161.805.161.485 0 .908-.159 1.267-.476.36-.317.632-.714.819-1.19v-3.626h-.896v-.938zm4.62 2.45a14.051 14.051 0 00-.063-1.176 4.657 4.657 0 00-.049-.364h-.938v-.91h1.876l.126 1.134h.07c.093-.159.217-.315.371-.469a2.91 2.91 0 011.225-.721c.252-.075.518-.112.798-.112.43 0 .81.047 1.141.14.331.093.607.259.826.497.22.238.385.56.497.966.112.406.168.922.168 1.547v4.018h-1.092v-3.808c0-.775-.126-1.358-.378-1.75-.252-.392-.71-.588-1.372-.588-.243 0-.478.049-.707.147a2.44 2.44 0 00-.623.385c-.187.159-.35.343-.49.553-.14.21-.243.432-.308.665v4.396h-1.078v-4.55zm7.532-2.45h1.666v-1.386l1.092-.308v1.694h3.738v.938h-3.738v3.304c0 .681.166 1.185.497 1.512.331.327.805.49 1.421.49.42 0 .786-.08 1.099-.238.313-.159.595-.331.847-.518l.364.826a3.938 3.938 0 01-1.169.63 4.182 4.182 0 01-1.393.238 3.41 3.41 0 01-1.057-.161 2.426 2.426 0 01-.875-.497 2.38 2.38 0 01-.602-.861c-.15-.35-.224-.768-.224-1.253v-3.472h-1.666v-.938zm15.372 6.118c-.168.15-.366.29-.595.42a4.39 4.39 0 01-.749.336c-.27.093-.553.166-.847.217-.294.051-.59.077-.889.077-.56 0-1.055-.086-1.484-.259a2.858 2.858 0 01-1.078-.742 3.234 3.234 0 01-.658-1.155 4.767 4.767 0 01-.224-1.512c0-.588.082-1.11.245-1.568.163-.457.399-.84.707-1.148a3.08 3.08 0 011.12-.707 4.187 4.187 0 011.47-.245c.392 0 .78.051 1.162.154.383.103.721.296 1.015.581.294.285.52.677.679 1.176.159.5.215 1.146.168 1.939h-5.418c0 .84.226 1.468.679 1.883.453.415 1.057.623 1.813.623.252 0 .502-.03.749-.091.247-.06.483-.133.707-.217a3.72 3.72 0 00.595-.28c.173-.103.306-.196.399-.28l.434.798zm-2.954-5.362c-.308 0-.6.033-.875.098a1.995 1.995 0 00-.728.329c-.21.154-.383.355-.518.602s-.222.553-.259.917h4.354c-.047-.616-.245-1.094-.595-1.435-.35-.34-.81-.511-1.379-.511zm4.872 6.244v-.938h1.89v-5.124h-1.89v-.938h2.618l.224.91h.07c.317-.29.672-.537 1.064-.742.392-.205.859-.308 1.4-.308.317 0 .572.06.763.182.191.121.34.299.448.532.107.233.18.516.217.847.037.331.056.707.056 1.127l-.98.014c0-.597-.058-1.036-.175-1.316-.117-.28-.329-.42-.637-.42-.29 0-.55.042-.784.126a2.565 2.565 0 00-.609.308c-.173.121-.32.243-.441.364s-.21.224-.266.308v4.13h2.688v.938h-5.656z"/><path id="();" fill="#7E7C7B" d="M214.998 148.936a6.964 6.964 0 01-1.757-.707 5.036 5.036 0 01-1.428-1.225c-.406-.504-.728-1.12-.966-1.848s-.357-1.591-.357-2.59c0-.99.121-1.855.364-2.597s.57-1.372.98-1.89c.41-.518.889-.933 1.435-1.246a6.005 6.005 0 011.729-.665l.35.882a7.086 7.086 0 00-1.512.623 3.928 3.928 0 00-1.183 1.022c-.331.425-.588.952-.77 1.582-.182.63-.273 1.393-.273 2.289 0 .905.11 1.678.329 2.317.22.64.509 1.171.868 1.596.36.425.76.756 1.204.994.443.238.889.404 1.337.497l-.35.966zm4.354-.966a4.965 4.965 0 001.337-.497 4.15 4.15 0 001.204-.994c.36-.425.649-.957.868-1.596.22-.64.329-1.412.329-2.317 0-.896-.091-1.659-.273-2.289-.182-.63-.439-1.157-.77-1.582a3.928 3.928 0 00-1.183-1.022 7.086 7.086 0 00-1.512-.623l.35-.882c.607.13 1.183.352 1.729.665a4.984 4.984 0 011.435 1.246c.41.518.737 1.148.98 1.89s.364 1.608.364 2.597c0 .999-.119 1.862-.357 2.59-.238.728-.56 1.344-.966 1.848a5.036 5.036 0 01-1.428 1.225 6.964 6.964 0 01-1.757.707l-.35-.966zm9.604-2.772c0-.28.091-.506.273-.679.182-.173.418-.259.707-.259.355 0 .63.124.826.371.196.247.294.595.294 1.043a2.36 2.36 0 01-.637 1.659 2.465 2.465 0 01-.588.462c-.21.117-.404.203-.581.259l-.35-.546c.336-.13.625-.317.868-.56.243-.243.364-.537.364-.882-.13.028-.233.042-.308.042-.27 0-.483-.077-.637-.231-.154-.154-.231-.38-.231-.679zm.126-5.502c0-.299.084-.53.252-.693.168-.163.392-.245.672-.245.299 0 .532.082.7.245.168.163.252.394.252.693 0 .27-.084.495-.252.672-.168.177-.401.266-.7.266-.28 0-.504-.089-.672-.266a.938.938 0 01-.252-.672z"/><path id="alert" fill="#181717" d="M.462 173.514a4.447 4.447 0 011.358-.504 7.423 7.423 0 011.484-.154c.476 0 .866.075 1.169.224.303.15.541.343.714.581.173.238.29.509.35.812.06.303.091.609.091.917 0 .355-.01.733-.028 1.134-.019.401-.033.803-.042 1.204 0 .467.028.91.084 1.33h.938v.91H4.718l-.126-1.05h-.07c-.056.084-.14.191-.252.322-.112.13-.259.259-.441.385a2.749 2.749 0 01-1.589.469c-.69 0-1.237-.177-1.638-.532-.401-.355-.602-.84-.602-1.456 0-.476.105-.873.315-1.19.21-.317.511-.56.903-.728.392-.168.866-.266 1.421-.294a9.544 9.544 0 011.869.112c.047-.43.054-.786.021-1.071-.033-.285-.107-.511-.224-.679a.938.938 0 00-.49-.357 2.482 2.482 0 00-.777-.105c-.42 0-.821.058-1.204.175-.383.117-.723.236-1.022.357l-.35-.812zm2.058 5.642c.261 0 .504-.042.728-.126a2.22 2.22 0 00.588-.322 2.133 2.133 0 00.672-.868v-.98a7.92 7.92 0 00-1.344-.126c-.41 0-.765.044-1.064.133-.299.089-.532.226-.7.413-.168.187-.252.43-.252.728 0 .308.105.576.315.805.21.229.562.343 1.057.343zm6.496-8.988h2.324v7.448c0 .57.096.97.287 1.204.191.233.474.35.847.35.261 0 .511-.047.749-.14.238-.093.502-.252.791-.476l.504.77c-.15.13-.313.247-.49.35a3.638 3.638 0 01-1.106.42 2.963 2.963 0 01-1.442-.077 1.579 1.579 0 01-.679-.427 1.897 1.897 0 01-.413-.777c-.093-.322-.14-.721-.14-1.197v-6.51H9.016v-.938zm14.14 8.918c-.168.15-.366.29-.595.42a4.39 4.39 0 01-.749.336c-.27.093-.553.166-.847.217-.294.051-.59.077-.889.077-.56 0-1.055-.086-1.484-.259a2.858 2.858 0 01-1.078-.742 3.234 3.234 0 01-.658-1.155 4.767 4.767 0 01-.224-1.512c0-.588.082-1.11.245-1.568.163-.457.399-.84.707-1.148a3.08 3.08 0 011.12-.707 4.187 4.187 0 011.47-.245c.392 0 .78.051 1.162.154.383.103.721.296 1.015.581.294.285.52.677.679 1.176.159.5.215 1.146.168 1.939H17.78c0 .84.226 1.468.679 1.883.453.415 1.057.623 1.813.623.252 0 .502-.03.749-.091.247-.06.483-.133.707-.217a3.72 3.72 0 00.595-.28c.173-.103.306-.196.399-.28l.434.798zm-2.954-5.362c-.308 0-.6.033-.875.098a1.995 1.995 0 00-.728.329c-.21.154-.383.355-.518.602s-.222.553-.259.917h4.354c-.047-.616-.245-1.094-.595-1.435-.35-.34-.81-.511-1.379-.511zm4.872 6.244v-.938h1.89v-5.124h-1.89v-.938h2.618l.224.91h.07c.317-.29.672-.537 1.064-.742.392-.205.859-.308 1.4-.308.317 0 .572.06.763.182.191.121.34.299.448.532.107.233.18.516.217.847.037.331.056.707.056 1.127l-.98.014c0-.597-.058-1.036-.175-1.316-.117-.28-.329-.42-.637-.42-.29 0-.55.042-.784.126a2.565 2.565 0 00-.609.308c-.173.121-.32.243-.441.364s-.21.224-.266.308v4.13h2.688v.938h-5.656zm7.91-7h1.666v-1.386l1.092-.308v1.694h3.738v.938h-3.738v3.304c0 .681.166 1.185.497 1.512.331.327.805.49 1.421.49.42 0 .786-.08 1.099-.238.313-.159.595-.331.847-.518l.364.826a3.938 3.938 0 01-1.169.63 4.182 4.182 0 01-1.393.238 3.41 3.41 0 01-1.057-.161 2.426 2.426 0 01-.875-.497 2.38 2.38 0 01-.602-.861c-.15-.35-.224-.768-.224-1.253v-3.472h-1.666v-.938z"/><path id="(" fill="#7E7C7B" d="M46.998 182.936a6.964 6.964 0 01-1.757-.707 5.036 5.036 0 01-1.428-1.225c-.406-.504-.728-1.12-.966-1.848s-.357-1.591-.357-2.59c0-.99.121-1.855.364-2.597s.57-1.372.98-1.89c.41-.518.889-.933 1.435-1.246a6.005 6.005 0 011.729-.665l.35.882a7.086 7.086 0 00-1.512.623 3.928 3.928 0 00-1.183 1.022c-.331.425-.588.952-.77 1.582-.182.63-.273 1.393-.273 2.289 0 .905.11 1.678.329 2.317.22.64.509 1.171.868 1.596.36.425.76.756 1.204.994.443.238.889.404 1.337.497l-.35.966z"/><path id="counter" fill="#181717" d="M63.896 174.046a5.531 5.531 0 00-.693-.189 3.61 3.61 0 00-.735-.077c-.915 0-1.596.215-2.044.644-.448.43-.672 1.11-.672 2.044 0 .41.065.777.196 1.099.13.322.317.595.56.819.243.224.534.397.875.518.34.121.716.182 1.127.182.439 0 .866-.075 1.281-.224.415-.15.763-.345 1.043-.588l.49.812c-.13.112-.294.229-.49.35a4.837 4.837 0 01-1.533.602 4.962 4.962 0 01-1.015.098c-.607 0-1.141-.086-1.603-.259a3.045 3.045 0 01-1.155-.742 3.176 3.176 0 01-.7-1.162 4.525 4.525 0 01-.238-1.505c0-.588.082-1.11.245-1.568.163-.457.399-.84.707-1.148a3.08 3.08 0 011.12-.707 4.187 4.187 0 011.47-.245c.69 0 1.253.06 1.687.182.434.121.8.257 1.099.406l-.014.042v1.946h-1.008v-1.33zm3.052 2.422c0-1.13.294-2.023.882-2.681.588-.658 1.428-.987 2.52-.987.588 0 1.094.096 1.519.287.425.191.777.45 1.057.777.28.327.488.714.623 1.162.135.448.203.929.203 1.442 0 .56-.075 1.066-.224 1.519-.15.453-.369.838-.658 1.155-.29.317-.646.562-1.071.735a3.82 3.82 0 01-1.449.259c-.579 0-1.083-.096-1.512-.287a2.967 2.967 0 01-1.064-.777 3.168 3.168 0 01-.623-1.162 4.963 4.963 0 01-.203-1.442zm1.162 0c0 .327.04.653.119.98.08.327.208.62.385.882.177.261.408.471.693.63.285.159.632.238 1.043.238.747 0 1.309-.231 1.687-.693.378-.462.567-1.141.567-2.037 0-.336-.04-.665-.119-.987a2.608 2.608 0 00-.392-.875 2.066 2.066 0 00-.7-.63c-.285-.159-.632-.238-1.043-.238-.747 0-1.307.229-1.68.686-.373.457-.56 1.139-.56 2.044zm11.522-3.5h1.988v4.774c0 .457.028.896.084 1.316h.938v.91H80.78l-.042-1.19h-.056a2.938 2.938 0 01-.966.98c-.401.252-.887.378-1.456.378-.43 0-.796-.049-1.099-.147a1.556 1.556 0 01-.749-.511c-.196-.243-.34-.567-.434-.973-.093-.406-.14-.912-.14-1.519v-3.08H74.9v-.938h2.03v3.794c0 .383.016.726.049 1.029.033.303.1.56.203.77.103.21.254.369.455.476.2.107.469.161.805.161.485 0 .908-.159 1.267-.476.36-.317.632-.714.819-1.19v-3.626h-.896v-.938zm4.62 2.45a14.05 14.05 0 00-.063-1.176 4.657 4.657 0 00-.049-.364h-.938v-.91h1.876l.126 1.134h.07c.093-.159.217-.315.371-.469a2.91 2.91 0 011.225-.721c.252-.075.518-.112.798-.112.43 0 .81.047 1.141.14.331.093.607.259.826.497.22.238.385.56.497.966.112.406.168.922.168 1.547v4.018h-1.092v-3.808c0-.775-.126-1.358-.378-1.75-.252-.392-.71-.588-1.372-.588-.243 0-.478.049-.707.147a2.44 2.44 0 00-.623.385c-.187.159-.35.343-.49.553-.14.21-.243.432-.308.665v4.396h-1.078v-4.55zm7.532-2.45h1.666v-1.386l1.092-.308v1.694h3.738v.938h-3.738v3.304c0 .681.166 1.185.497 1.512.331.327.805.49 1.421.49.42 0 .786-.08 1.099-.238.313-.159.595-.331.847-.518l.364.826a3.938 3.938 0 01-1.169.63 4.182 4.182 0 01-1.393.238 3.41 3.41 0 01-1.057-.161 2.426 2.426 0 01-.875-.497 2.38 2.38 0 01-.602-.861c-.15-.35-.224-.768-.224-1.253v-3.472h-1.666v-.938zm15.372 6.118c-.168.15-.366.29-.595.42a4.39 4.39 0 01-.749.336c-.27.093-.553.166-.847.217-.294.051-.59.077-.889.077-.56 0-1.055-.086-1.484-.259a2.858 2.858 0 01-1.078-.742 3.234 3.234 0 01-.658-1.155 4.767 4.767 0 01-.224-1.512c0-.588.082-1.11.245-1.568.163-.457.399-.84.707-1.148a3.08 3.08 0 011.12-.707 4.187 4.187 0 011.47-.245c.392 0 .78.051 1.162.154.383.103.721.296 1.015.581.294.285.52.677.679 1.176.159.5.215 1.146.168 1.939h-5.418c0 .84.226 1.468.679 1.883.453.415 1.057.623 1.813.623.252 0 .502-.03.749-.091.247-.06.483-.133.707-.217a3.72 3.72 0 00.595-.28c.173-.103.306-.196.399-.28l.434.798zm-2.954-5.362c-.308 0-.6.033-.875.098a1.995 1.995 0 00-.728.329c-.21.154-.383.355-.518.602s-.222.553-.259.917h4.354c-.047-.616-.245-1.094-.595-1.435-.35-.34-.81-.511-1.379-.511zm4.872 6.244v-.938h1.89v-5.124h-1.89v-.938h2.618l.224.91h.07c.317-.29.672-.537 1.064-.742.392-.205.859-.308 1.4-.308.317 0 .572.06.763.182.191.121.34.299.448.532.107.233.18.516.217.847.037.331.056.707.056 1.127l-.98.014c0-.597-.058-1.036-.175-1.316-.117-.28-.329-.42-.637-.42-.29 0-.55.042-.784.126a2.565 2.565 0 00-.609.308c-.173.121-.32.243-.441.364s-.21.224-.266.308v4.13h2.688v.938h-5.656z"/><path id="());//0" fill="#7E7C7B" d="M122.598 182.936a6.964 6.964 0 01-1.757-.707 5.036 5.036 0 01-1.428-1.225c-.406-.504-.728-1.12-.966-1.848s-.357-1.591-.357-2.59c0-.99.121-1.855.364-2.597s.57-1.372.98-1.89c.41-.518.889-.933 1.435-1.246a6.005 6.005 0 011.729-.665l.35.882a7.086 7.086 0 00-1.512.623 3.928 3.928 0 00-1.183 1.022c-.331.425-.588.952-.77 1.582-.182.63-.273 1.393-.273 2.289 0 .905.11 1.678.329 2.317.22.64.509 1.171.868 1.596.36.425.76.756 1.204.994.443.238.889.404 1.337.497l-.35.966zm4.354-.966a4.965 4.965 0 001.337-.497 4.15 4.15 0 001.204-.994c.36-.425.649-.957.868-1.596.22-.64.329-1.412.329-2.317 0-.896-.091-1.659-.273-2.289-.182-.63-.439-1.157-.77-1.582a3.928 3.928 0 00-1.183-1.022 7.086 7.086 0 00-1.512-.623l.35-.882c.607.13 1.183.352 1.729.665a4.984 4.984 0 011.435 1.246c.41.518.737 1.148.98 1.89s.364 1.608.364 2.597c0 .999-.119 1.862-.357 2.59-.238.728-.56 1.344-.966 1.848a5.036 5.036 0 01-1.428 1.225 6.964 6.964 0 01-1.757.707l-.35-.966zm16.8 0a4.965 4.965 0 001.337-.497 4.15 4.15 0 001.204-.994c.36-.425.649-.957.868-1.596.22-.64.329-1.412.329-2.317 0-.896-.091-1.659-.273-2.289-.182-.63-.439-1.157-.77-1.582a3.928 3.928 0 00-1.183-1.022 7.086 7.086 0 00-1.512-.623l.35-.882c.607.13 1.183.352 1.729.665a4.984 4.984 0 011.435 1.246c.41.518.737 1.148.98 1.89s.364 1.608.364 2.597c0 .999-.119 1.862-.357 2.59-.238.728-.56 1.344-.966 1.848a5.036 5.036 0 01-1.428 1.225 6.964 6.964 0 01-1.757.707l-.35-.966zm9.604-2.772c0-.28.091-.506.273-.679.182-.173.418-.259.707-.259.355 0 .63.124.826.371.196.247.294.595.294 1.043a2.36 2.36 0 01-.637 1.659 2.465 2.465 0 01-.588.462c-.21.117-.404.203-.581.259l-.35-.546c.336-.13.625-.317.868-.56.243-.243.364-.537.364-.882-.13.028-.233.042-.308.042-.27 0-.483-.077-.637-.231-.154-.154-.231-.38-.231-.679zm.126-5.502c0-.299.084-.53.252-.693.168-.163.392-.245.672-.245.299 0 .532.082.7.245.168.163.252.394.252.693 0 .27-.084.495-.252.672-.168.177-.401.266-.7.266-.28 0-.504-.089-.672-.266a.938.938 0 01-.252-.672zM173.264 170l.882.392-5.11 11.536-.882-.392 5.11-11.536zm8.4 0l.882.392-5.11 11.536-.882-.392 5.11-11.536zm11.256 5.068c0-.793.07-1.505.21-2.135.14-.63.35-1.162.63-1.596.28-.434.635-.765 1.064-.994.43-.229.938-.343 1.526-.343.625 0 1.155.112 1.589.336.434.224.786.55 1.057.98.27.43.467.959.588 1.589.121.63.182 1.351.182 2.163a9.88 9.88 0 01-.21 2.135c-.14.63-.35 1.162-.63 1.596-.28.434-.635.765-1.064.994-.43.229-.938.343-1.526.343-.616 0-1.141-.124-1.575-.371a2.956 2.956 0 01-1.064-1.043c-.275-.448-.474-.982-.595-1.603a10.713 10.713 0 01-.182-2.051zm5.698 0c0-.495-.028-.966-.084-1.414l-4.158 3.794c.159.532.397.957.714 1.274.317.317.733.476 1.246.476.821 0 1.407-.34 1.757-1.022.35-.681.525-1.717.525-3.108zm-4.536 0c0 .233.007.457.021.672.014.215.03.425.049.63l4.172-3.78c-.159-.504-.394-.905-.707-1.204-.313-.299-.735-.448-1.267-.448-.83 0-1.416.343-1.757 1.029-.34.686-.511 1.72-.511 3.101z"/></g><text id="modified-here" fill="#C06334" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="356" y="62">modified here</tspan></text></g></g></svg> \ No newline at end of file diff --git a/1-js/06-advanced-functions/03-closure/closure-makecounter-nested-call.svg b/1-js/06-advanced-functions/03-closure/closure-makecounter-nested-call.svg new file mode 100644 index 000000000..24315bf21 --- /dev/null +++ b/1-js/06-advanced-functions/03-closure/closure-makecounter-nested-call.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" width="774" height="210" viewBox="0 0 774 210"><defs><style>@import url(https://fonts.googleapis.com/css?family=Open+Sans:bold,italic,bolditalic%7CPT+Mono);@font-face{font-family:'PT Mono';font-weight:700;font-style:normal;src:local('PT MonoBold'),url(/font/PTMonoBold.woff2) format('woff2'),url(/font/PTMonoBold.woff) format('woff'),url(/font/PTMonoBold.ttf) format('truetype')}</style></defs><g id="closure" fill="none" fill-rule="evenodd" stroke="none" stroke-width="1"><g id="closure-makecounter-nested-call.svg"><g id="function-makeCounter" fill-rule="nonzero" transform="translate(21 12)"><path id="function" fill="#1C85B5" d="M.182 9.968V9.03h1.666V3.906H.182v-.938h1.666v-.392c0-.877.229-1.512.686-1.904.457-.392 1.11-.588 1.96-.588.308 0 .583.019.826.056.243.037.504.112.784.224l-.252.91a2.862 2.862 0 00-.7-.203 4.295 4.295 0 00-.616-.049c-.616 0-1.036.152-1.26.455-.224.303-.336.8-.336 1.491h2.898v.938H2.94V9.03h2.898v.938H.182zm12.25-7h1.988v4.774c0 .457.028.896.084 1.316h.938v.91H13.58l-.042-1.19h-.056a2.938 2.938 0 01-.966.98c-.401.252-.887.378-1.456.378-.43 0-.796-.049-1.099-.147a1.556 1.556 0 01-.749-.511c-.196-.243-.34-.567-.434-.973-.093-.406-.14-.912-.14-1.519v-3.08H7.7v-.938h2.03v3.794c0 .383.016.726.049 1.029.033.303.1.56.203.77.103.21.254.369.455.476.2.107.469.161.805.161.485 0 .908-.159 1.267-.476.36-.317.632-.714.819-1.19V3.906h-.896v-.938zm4.62 2.45a14.05 14.05 0 00-.063-1.176 4.657 4.657 0 00-.049-.364h-.938v-.91h1.876l.126 1.134h.07c.093-.159.217-.315.371-.469a2.91 2.91 0 011.225-.721c.252-.075.518-.112.798-.112.43 0 .81.047 1.141.14.331.093.607.259.826.497.22.238.385.56.497.966.112.406.168.922.168 1.547v4.018h-1.092V6.16c0-.775-.126-1.358-.378-1.75-.252-.392-.71-.588-1.372-.588-.243 0-.478.049-.707.147a2.44 2.44 0 00-.623.385c-.187.159-.35.343-.49.553-.14.21-.243.432-.308.665v4.396h-1.078v-4.55zm13.244-1.372a5.531 5.531 0 00-.693-.189 3.61 3.61 0 00-.735-.077c-.915 0-1.596.215-2.044.644-.448.43-.672 1.11-.672 2.044 0 .41.065.777.196 1.099.13.322.317.595.56.819.243.224.534.397.875.518.34.121.716.182 1.127.182.439 0 .866-.075 1.281-.224.415-.15.763-.345 1.043-.588l.49.812c-.13.112-.294.229-.49.35a4.837 4.837 0 01-1.533.602 4.962 4.962 0 01-1.015.098c-.607 0-1.141-.086-1.603-.259a3.045 3.045 0 01-1.155-.742 3.176 3.176 0 01-.7-1.162 4.525 4.525 0 01-.238-1.505c0-.588.082-1.11.245-1.568.163-.457.399-.84.707-1.148a3.08 3.08 0 011.12-.707 4.187 4.187 0 011.47-.245c.69 0 1.253.06 1.687.182.434.121.8.257 1.099.406l-.014.042v1.946h-1.008v-1.33zm2.688-1.078h1.666V1.582l1.092-.308v1.694h3.738v.938h-3.738V7.21c0 .681.166 1.185.497 1.512.331.327.805.49 1.421.49.42 0 .786-.08 1.099-.238.313-.159.595-.331.847-.518l.364.826a3.938 3.938 0 01-1.169.63 4.182 4.182 0 01-1.393.238 3.41 3.41 0 01-1.057-.161 2.426 2.426 0 01-.875-.497 2.38 2.38 0 01-.602-.861c-.15-.35-.224-.768-.224-1.253V3.906h-1.666v-.938zm9.436 7V9.03h2.436V3.906H42.42v-.938h3.556V9.03h2.38v.938H42.42zM44.478.98c0-.252.084-.469.252-.651a.838.838 0 01.644-.273c.27 0 .497.091.679.273a.889.889 0 01.273.651.806.806 0 01-.273.616.963.963 0 01-.679.252.872.872 0 01-.644-.252.838.838 0 01-.252-.616zm5.67 5.488c0-1.13.294-2.023.882-2.681.588-.658 1.428-.987 2.52-.987.588 0 1.094.096 1.519.287.425.191.777.45 1.057.777.28.327.488.714.623 1.162.135.448.203.929.203 1.442 0 .56-.075 1.066-.224 1.519-.15.453-.369.838-.658 1.155-.29.317-.646.562-1.071.735a3.82 3.82 0 01-1.449.259c-.579 0-1.083-.096-1.512-.287a2.967 2.967 0 01-1.064-.777 3.168 3.168 0 01-.623-1.162 4.963 4.963 0 01-.203-1.442zm1.162 0c0 .327.04.653.119.98.08.327.208.62.385.882.177.261.408.471.693.63.285.159.632.238 1.043.238.747 0 1.309-.231 1.687-.693.378-.462.567-1.141.567-2.037 0-.336-.04-.665-.119-.987a2.608 2.608 0 00-.392-.875 2.066 2.066 0 00-.7-.63c-.285-.159-.632-.238-1.043-.238-.747 0-1.307.229-1.68.686-.373.457-.56 1.139-.56 2.044zm7.742-1.05a14.05 14.05 0 00-.063-1.176 4.657 4.657 0 00-.049-.364h-.938v-.91h1.876l.126 1.134h.07c.093-.159.217-.315.371-.469a2.91 2.91 0 011.225-.721c.252-.075.518-.112.798-.112.43 0 .81.047 1.141.14.331.093.607.259.826.497.22.238.385.56.497.966.112.406.168.922.168 1.547v4.018h-1.092V6.16c0-.775-.126-1.358-.378-1.75-.252-.392-.71-.588-1.372-.588-.243 0-.478.049-.707.147a2.44 2.44 0 00-.623.385c-.187.159-.35.343-.49.553-.14.21-.243.432-.308.665v4.396h-1.078v-4.55z"/><path id="makeCounter" fill="#181717" d="M78.218 9.968V5.306c0-.196-.007-.385-.021-.567a1.9 1.9 0 00-.098-.49.786.786 0 00-.224-.343.57.57 0 00-.385-.126c-.317 0-.586.13-.805.392-.22.261-.385.588-.497.98v4.816h-1.064v-7h.728l.21.854h.056c.093-.14.184-.273.273-.399.089-.126.191-.236.308-.329.117-.093.254-.166.413-.217.159-.051.36-.077.602-.077.14 0 .285.021.434.063.15.042.287.107.413.196.126.089.236.208.329.357.093.15.154.331.182.546.215-.364.455-.649.721-.854.266-.205.632-.308 1.099-.308.308 0 .558.051.749.154.191.103.34.25.448.441.107.191.182.42.224.686.042.266.063.562.063.889v4.998h-1.064v-4.76c0-.196-.01-.38-.028-.553a1.764 1.764 0 00-.105-.455.752.752 0 00-.21-.308.536.536 0 00-.357-.112c-.327 0-.602.13-.826.392-.224.261-.392.635-.504 1.12v4.676h-1.064zm6.244-6.454a4.447 4.447 0 011.358-.504 7.423 7.423 0 011.484-.154c.476 0 .866.075 1.169.224.303.15.541.343.714.581.173.238.29.509.35.812.06.303.091.609.091.917 0 .355-.01.733-.028 1.134-.019.401-.033.803-.042 1.204 0 .467.028.91.084 1.33h.938v.91h-1.862l-.126-1.05h-.07c-.056.084-.14.191-.252.322-.112.13-.259.259-.441.385a2.749 2.749 0 01-1.589.469c-.69 0-1.237-.177-1.638-.532-.401-.355-.602-.84-.602-1.456 0-.476.105-.873.315-1.19.21-.317.511-.56.903-.728.392-.168.866-.266 1.421-.294a9.544 9.544 0 011.869.112c.047-.43.054-.786.021-1.071-.033-.285-.107-.511-.224-.679a.938.938 0 00-.49-.357 2.482 2.482 0 00-.777-.105c-.42 0-.821.058-1.204.175-.383.117-.723.236-1.022.357l-.35-.812zm2.058 5.642c.261 0 .504-.042.728-.126a2.22 2.22 0 00.588-.322 2.133 2.133 0 00.672-.868v-.98a7.92 7.92 0 00-1.344-.126c-.41 0-.765.044-1.064.133-.299.089-.532.226-.7.413-.168.187-.252.43-.252.728 0 .308.105.576.315.805.21.229.562.343 1.057.343zM91.686.168h2.268v5.796h.77l2.758-2.996h1.316l-3.094 3.318 2.548 2.744h.91v.938H97.72l-2.996-3.164h-.77v3.164h-1.078V1.106h-1.19V.168zm15.47 8.918c-.168.15-.366.29-.595.42a4.39 4.39 0 01-.749.336c-.27.093-.553.166-.847.217-.294.051-.59.077-.889.077-.56 0-1.055-.086-1.484-.259a2.858 2.858 0 01-1.078-.742 3.234 3.234 0 01-.658-1.155 4.767 4.767 0 01-.224-1.512c0-.588.082-1.11.245-1.568.163-.457.399-.84.707-1.148a3.08 3.08 0 011.12-.707 4.187 4.187 0 011.47-.245c.392 0 .78.051 1.162.154.383.103.721.296 1.015.581.294.285.52.677.679 1.176.159.5.215 1.146.168 1.939h-5.418c0 .84.226 1.468.679 1.883.453.415 1.057.623 1.813.623.252 0 .502-.03.749-.091.247-.06.483-.133.707-.217a3.72 3.72 0 00.595-.28c.173-.103.306-.196.399-.28l.434.798zm-2.954-5.362c-.308 0-.6.033-.875.098a1.995 1.995 0 00-.728.329c-.21.154-.383.355-.518.602s-.222.553-.259.917h4.354c-.047-.616-.245-1.094-.595-1.435-.35-.34-.81-.511-1.379-.511zm10.36-2.492a2.466 2.466 0 00-.525-.147 4.192 4.192 0 00-.693-.049c-.383 0-.758.07-1.127.21-.369.14-.695.369-.98.686-.285.317-.513.733-.686 1.246-.173.513-.259 1.143-.259 1.89 0 .672.077 1.26.231 1.764.154.504.369.924.644 1.26.275.336.607.588.994.756.387.168.819.252 1.295.252.243 0 .469-.021.679-.063.21-.042.404-.1.581-.175v-1.4h1.036v1.89l.014.028a3.66 3.66 0 01-1.064.539c-.43.145-.952.217-1.568.217-.588 0-1.132-.1-1.631-.301a3.41 3.41 0 01-1.295-.917c-.364-.41-.646-.936-.847-1.575-.2-.64-.301-1.398-.301-2.275 0-.915.112-1.692.336-2.331.224-.64.527-1.162.91-1.568a3.452 3.452 0 011.337-.889 4.697 4.697 0 011.631-.28c.317 0 .593.012.826.035.233.023.439.056.616.098s.334.096.469.161c.135.065.268.14.399.224h.014V2.73h-1.036V1.232zm2.786 5.236c0-1.13.294-2.023.882-2.681.588-.658 1.428-.987 2.52-.987.588 0 1.094.096 1.519.287.425.191.777.45 1.057.777.28.327.488.714.623 1.162.135.448.203.929.203 1.442 0 .56-.075 1.066-.224 1.519-.15.453-.369.838-.658 1.155-.29.317-.646.562-1.071.735a3.82 3.82 0 01-1.449.259c-.579 0-1.083-.096-1.512-.287a2.967 2.967 0 01-1.064-.777 3.168 3.168 0 01-.623-1.162 4.963 4.963 0 01-.203-1.442zm1.162 0c0 .327.04.653.119.98.08.327.208.62.385.882.177.261.408.471.693.63.285.159.632.238 1.043.238.747 0 1.309-.231 1.687-.693.378-.462.567-1.141.567-2.037 0-.336-.04-.665-.119-.987a2.608 2.608 0 00-.392-.875 2.066 2.066 0 00-.7-.63c-.285-.159-.632-.238-1.043-.238-.747 0-1.307.229-1.68.686-.373.457-.56 1.139-.56 2.044zm11.522-3.5h1.988v4.774c0 .457.028.896.084 1.316h.938v.91h-1.862l-.042-1.19h-.056a2.938 2.938 0 01-.966.98c-.401.252-.887.378-1.456.378-.43 0-.796-.049-1.099-.147a1.556 1.556 0 01-.749-.511c-.196-.243-.34-.567-.434-.973-.093-.406-.14-.912-.14-1.519v-3.08h-.938v-.938h2.03v3.794c0 .383.016.726.049 1.029.033.303.1.56.203.77.103.21.254.369.455.476.2.107.469.161.805.161.485 0 .908-.159 1.267-.476.36-.317.632-.714.819-1.19V3.906h-.896v-.938zm4.62 2.45a14.051 14.051 0 00-.063-1.176 4.657 4.657 0 00-.049-.364h-.938v-.91h1.876l.126 1.134h.07c.093-.159.217-.315.371-.469a2.91 2.91 0 011.225-.721c.252-.075.518-.112.798-.112.43 0 .81.047 1.141.14.331.093.607.259.826.497.22.238.385.56.497.966.112.406.168.922.168 1.547v4.018h-1.092V6.16c0-.775-.126-1.358-.378-1.75-.252-.392-.71-.588-1.372-.588-.243 0-.478.049-.707.147a2.44 2.44 0 00-.623.385c-.187.159-.35.343-.49.553-.14.21-.243.432-.308.665v4.396h-1.078v-4.55zm7.532-2.45h1.666V1.582l1.092-.308v1.694h3.738v.938h-3.738V7.21c0 .681.166 1.185.497 1.512.331.327.805.49 1.421.49.42 0 .786-.08 1.099-.238.313-.159.595-.331.847-.518l.364.826a3.938 3.938 0 01-1.169.63 4.182 4.182 0 01-1.393.238 3.41 3.41 0 01-1.057-.161 2.426 2.426 0 01-.875-.497 2.38 2.38 0 01-.602-.861c-.15-.35-.224-.768-.224-1.253V3.906h-1.666v-.938zm15.372 6.118c-.168.15-.366.29-.595.42a4.39 4.39 0 01-.749.336c-.27.093-.553.166-.847.217-.294.051-.59.077-.889.077-.56 0-1.055-.086-1.484-.259a2.858 2.858 0 01-1.078-.742 3.234 3.234 0 01-.658-1.155 4.767 4.767 0 01-.224-1.512c0-.588.082-1.11.245-1.568.163-.457.399-.84.707-1.148a3.08 3.08 0 011.12-.707 4.187 4.187 0 011.47-.245c.392 0 .78.051 1.162.154.383.103.721.296 1.015.581.294.285.52.677.679 1.176.159.5.215 1.146.168 1.939h-5.418c0 .84.226 1.468.679 1.883.453.415 1.057.623 1.813.623.252 0 .502-.03.749-.091.247-.06.483-.133.707-.217a3.72 3.72 0 00.595-.28c.173-.103.306-.196.399-.28l.434.798zm-2.954-5.362c-.308 0-.6.033-.875.098a1.995 1.995 0 00-.728.329c-.21.154-.383.355-.518.602s-.222.553-.259.917h4.354c-.047-.616-.245-1.094-.595-1.435-.35-.34-.81-.511-1.379-.511zm4.872 6.244V9.03h1.89V3.906h-1.89v-.938h2.618l.224.91h.07c.317-.29.672-.537 1.064-.742.392-.205.859-.308 1.4-.308.317 0 .572.06.763.182.191.121.34.299.448.532.107.233.18.516.217.847.037.331.056.707.056 1.127l-.98.014c0-.597-.058-1.036-.175-1.316-.117-.28-.329-.42-.637-.42-.29 0-.55.042-.784.126a2.565 2.565 0 00-.609.308c-.173.121-.32.243-.441.364s-.21.224-.266.308v4.13h2.688v.938h-5.656z"/><path id="(){" fill="#7E7C7B" d="M172.998 12.936a6.964 6.964 0 01-1.757-.707 5.036 5.036 0 01-1.428-1.225c-.406-.504-.728-1.12-.966-1.848s-.357-1.591-.357-2.59c0-.99.121-1.855.364-2.597s.57-1.372.98-1.89c.41-.518.889-.933 1.435-1.246a6.005 6.005 0 011.729-.665l.35.882a7.086 7.086 0 00-1.512.623 3.928 3.928 0 00-1.183 1.022c-.331.425-.588.952-.77 1.582-.182.63-.273 1.393-.273 2.289 0 .905.11 1.678.329 2.317.22.64.509 1.171.868 1.596.36.425.76.756 1.204.994.443.238.889.404 1.337.497l-.35.966zm4.354-.966a4.965 4.965 0 001.337-.497 4.15 4.15 0 001.204-.994c.36-.425.649-.957.868-1.596.22-.64.329-1.412.329-2.317 0-.896-.091-1.659-.273-2.289-.182-.63-.439-1.157-.77-1.582a3.928 3.928 0 00-1.183-1.022 7.086 7.086 0 00-1.512-.623l.35-.882c.607.13 1.183.352 1.729.665a4.984 4.984 0 011.435 1.246c.41.518.737 1.148.98 1.89s.364 1.608.364 2.597c0 .999-.119 1.862-.357 2.59-.238.728-.56 1.344-.966 1.848a5.036 5.036 0 01-1.428 1.225 6.964 6.964 0 01-1.757.707l-.35-.966zm17.878-2.45c0-.401-.068-.749-.203-1.043a2.44 2.44 0 00-.504-.735c-.2-.196-.415-.34-.644-.434a1.641 1.641 0 00-.609-.14v-.98c.177 0 .38-.04.609-.119.229-.08.443-.21.644-.392.2-.182.369-.418.504-.707.135-.29.203-.649.203-1.078V2.464c0-.336.054-.644.161-.924a2.22 2.22 0 01.448-.728c.191-.205.42-.366.686-.483.266-.117.558-.175.875-.175h2.03v.98h-1.54c-.588 0-.996.14-1.225.42-.229.28-.343.695-.343 1.246v1.358c0 .383-.07.723-.21 1.022a2.7 2.7 0 01-1.106 1.225c-.205.117-.373.184-.504.203v.084c.121.019.285.091.49.217.205.126.406.299.602.518.196.22.366.478.511.777.145.299.217.63.217.994v1.344c0 .57.121.99.364 1.26s.649.406 1.218.406h1.526v.98h-2.03c-.653 0-1.178-.194-1.575-.581-.397-.387-.595-.959-.595-1.715V9.52z"/><path id="let" fill="#1C85B5" d="M17.416 17.168h2.324v7.448c0 .57.096.97.287 1.204.191.233.474.35.847.35.261 0 .511-.047.749-.14.238-.093.502-.252.791-.476l.504.77c-.15.13-.313.247-.49.35a3.638 3.638 0 01-1.106.42 2.963 2.963 0 01-1.442-.077 1.579 1.579 0 01-.679-.427 1.897 1.897 0 01-.413-.777c-.093-.322-.14-.721-.14-1.197v-6.51h-1.232v-.938zm14.14 8.918c-.168.15-.366.29-.595.42a4.39 4.39 0 01-.749.336c-.27.093-.553.166-.847.217-.294.051-.59.077-.889.077-.56 0-1.055-.086-1.484-.259a2.858 2.858 0 01-1.078-.742 3.234 3.234 0 01-.658-1.155 4.767 4.767 0 01-.224-1.512c0-.588.082-1.11.245-1.568.163-.457.399-.84.707-1.148a3.08 3.08 0 011.12-.707 4.187 4.187 0 011.47-.245c.392 0 .78.051 1.162.154.383.103.721.296 1.015.581.294.285.52.677.679 1.176.159.5.215 1.146.168 1.939H26.18c0 .84.226 1.468.679 1.883.453.415 1.057.623 1.813.623.252 0 .502-.03.749-.091.247-.06.483-.133.707-.217a3.72 3.72 0 00.595-.28c.173-.103.306-.196.399-.28l.434.798zm-2.954-5.362c-.308 0-.6.033-.875.098a1.995 1.995 0 00-.728.329c-.21.154-.383.355-.518.602s-.222.553-.259.917h4.354c-.047-.616-.245-1.094-.595-1.435-.35-.34-.81-.511-1.379-.511zm4.382-.756h1.666v-1.386l1.092-.308v1.694h3.738v.938h-3.738v3.304c0 .681.166 1.185.497 1.512.331.327.805.49 1.421.49.42 0 .786-.08 1.099-.238.313-.159.595-.331.847-.518l.364.826a3.938 3.938 0 01-1.169.63 4.182 4.182 0 01-1.393.238 3.41 3.41 0 01-1.057-.161 2.426 2.426 0 01-.875-.497 2.38 2.38 0 01-.602-.861c-.15-.35-.224-.768-.224-1.253v-3.472h-1.666v-.938z"/><path id="count" fill="#181717" d="M55.496 21.046a5.531 5.531 0 00-.693-.189 3.61 3.61 0 00-.735-.077c-.915 0-1.596.215-2.044.644-.448.43-.672 1.11-.672 2.044 0 .41.065.777.196 1.099.13.322.317.595.56.819.243.224.534.397.875.518.34.121.716.182 1.127.182.439 0 .866-.075 1.281-.224.415-.15.763-.345 1.043-.588l.49.812c-.13.112-.294.229-.49.35a4.837 4.837 0 01-1.533.602 4.962 4.962 0 01-1.015.098c-.607 0-1.141-.086-1.603-.259a3.045 3.045 0 01-1.155-.742 3.176 3.176 0 01-.7-1.162 4.525 4.525 0 01-.238-1.505c0-.588.082-1.11.245-1.568.163-.457.399-.84.707-1.148a3.08 3.08 0 011.12-.707 4.187 4.187 0 011.47-.245c.69 0 1.253.06 1.687.182.434.121.8.257 1.099.406l-.014.042v1.946h-1.008v-1.33zm3.052 2.422c0-1.13.294-2.023.882-2.681.588-.658 1.428-.987 2.52-.987.588 0 1.094.096 1.519.287.425.191.777.45 1.057.777.28.327.488.714.623 1.162.135.448.203.929.203 1.442 0 .56-.075 1.066-.224 1.519-.15.453-.369.838-.658 1.155-.29.317-.646.562-1.071.735a3.82 3.82 0 01-1.449.259c-.579 0-1.083-.096-1.512-.287a2.967 2.967 0 01-1.064-.777 3.168 3.168 0 01-.623-1.162 4.963 4.963 0 01-.203-1.442zm1.162 0c0 .327.04.653.119.98.08.327.208.62.385.882.177.261.408.471.693.63.285.159.632.238 1.043.238.747 0 1.309-.231 1.687-.693.378-.462.567-1.141.567-2.037 0-.336-.04-.665-.119-.987a2.608 2.608 0 00-.392-.875 2.066 2.066 0 00-.7-.63c-.285-.159-.632-.238-1.043-.238-.747 0-1.307.229-1.68.686-.373.457-.56 1.139-.56 2.044zm11.522-3.5h1.988v4.774c0 .457.028.896.084 1.316h.938v.91H72.38l-.042-1.19h-.056a2.938 2.938 0 01-.966.98c-.401.252-.887.378-1.456.378-.43 0-.796-.049-1.099-.147a1.556 1.556 0 01-.749-.511c-.196-.243-.34-.567-.434-.973-.093-.406-.14-.912-.14-1.519v-3.08H66.5v-.938h2.03v3.794c0 .383.016.726.049 1.029.033.303.1.56.203.77.103.21.254.369.455.476.2.107.469.161.805.161.485 0 .908-.159 1.267-.476.36-.317.632-.714.819-1.19v-3.626h-.896v-.938zm4.62 2.45a14.05 14.05 0 00-.063-1.176 4.657 4.657 0 00-.049-.364h-.938v-.91h1.876l.126 1.134h.07c.093-.159.217-.315.371-.469a2.91 2.91 0 011.225-.721c.252-.075.518-.112.798-.112.43 0 .81.047 1.141.14.331.093.607.259.826.497.22.238.385.56.497.966.112.406.168.922.168 1.547v4.018h-1.092V23.16c0-.775-.126-1.358-.378-1.75-.252-.392-.71-.588-1.372-.588-.243 0-.478.049-.707.147a2.44 2.44 0 00-.623.385c-.187.159-.35.343-.49.553-.14.21-.243.432-.308.665v4.396h-1.078v-4.55zm7.532-2.45h1.666v-1.386l1.092-.308v1.694h3.738v.938h-3.738v3.304c0 .681.166 1.185.497 1.512.331.327.805.49 1.421.49.42 0 .786-.08 1.099-.238.313-.159.595-.331.847-.518l.364.826a3.938 3.938 0 01-1.169.63 4.182 4.182 0 01-1.393.238 3.41 3.41 0 01-1.057-.161 2.426 2.426 0 01-.875-.497 2.38 2.38 0 01-.602-.861c-.15-.35-.224-.768-.224-1.253v-3.472h-1.666v-.938z"/><path id="=" fill="#DBAF88" d="M100.702 20.57h6.496v1.008h-6.496V20.57zm0 2.296h6.496v1.008h-6.496v-1.008z"/><path id="0" fill="#A7333A" d="M117.32 22.068c0-.793.07-1.505.21-2.135.14-.63.35-1.162.63-1.596.28-.434.635-.765 1.064-.994.43-.229.938-.343 1.526-.343.625 0 1.155.112 1.589.336.434.224.786.55 1.057.98.27.43.467.959.588 1.589.121.63.182 1.351.182 2.163a9.88 9.88 0 01-.21 2.135c-.14.63-.35 1.162-.63 1.596-.28.434-.635.765-1.064.994-.43.229-.938.343-1.526.343-.616 0-1.141-.124-1.575-.371a2.956 2.956 0 01-1.064-1.043c-.275-.448-.474-.982-.595-1.603a10.713 10.713 0 01-.182-2.051zm5.698 0c0-.495-.028-.966-.084-1.414l-4.158 3.794c.159.532.397.957.714 1.274.317.317.733.476 1.246.476.821 0 1.407-.34 1.757-1.022.35-.681.525-1.717.525-3.108zm-4.536 0c0 .233.007.457.021.672.014.215.03.425.049.63l4.172-3.78c-.159-.504-.394-.905-.707-1.204-.313-.299-.735-.448-1.267-.448-.83 0-1.416.343-1.757 1.029-.34.686-.511 1.72-.511 3.101z"/><path id=";" fill="#7E7C7B" d="M128.156 26.198c0-.28.091-.506.273-.679.182-.173.418-.259.707-.259.355 0 .63.124.826.371.196.247.294.595.294 1.043a2.36 2.36 0 01-.637 1.659 2.465 2.465 0 01-.588.462c-.21.117-.404.203-.581.259l-.35-.546c.336-.13.625-.317.868-.56.243-.243.364-.537.364-.882-.13.028-.233.042-.308.042-.27 0-.483-.077-.637-.231-.154-.154-.231-.38-.231-.679zm.126-5.502c0-.299.084-.53.252-.693.168-.163.392-.245.672-.245.299 0 .532.082.7.245.168.163.252.394.252.693 0 .27-.084.495-.252.672-.168.177-.401.266-.7.266-.28 0-.504-.089-.672-.266a.938.938 0 01-.252-.672z"/><path id="returnfunction" fill="#1C85B5" d="M16.674 60.968v-.938h1.89v-5.124h-1.89v-.938h2.618l.224.91h.07c.317-.29.672-.537 1.064-.742.392-.205.859-.308 1.4-.308.317 0 .572.06.763.182.191.121.34.299.448.532.107.233.18.516.217.847.037.331.056.707.056 1.127l-.98.014c0-.597-.058-1.036-.175-1.316-.117-.28-.329-.42-.637-.42-.29 0-.55.042-.784.126a2.565 2.565 0 00-.609.308c-.173.121-.32.243-.441.364s-.21.224-.266.308v4.13h2.688v.938h-5.656zm14.882-.882c-.168.15-.366.29-.595.42a4.39 4.39 0 01-.749.336c-.27.093-.553.166-.847.217-.294.051-.59.077-.889.077-.56 0-1.055-.086-1.484-.259a2.858 2.858 0 01-1.078-.742 3.234 3.234 0 01-.658-1.155 4.767 4.767 0 01-.224-1.512c0-.588.082-1.11.245-1.568.163-.457.399-.84.707-1.148a3.08 3.08 0 011.12-.707 4.187 4.187 0 011.47-.245c.392 0 .78.051 1.162.154.383.103.721.296 1.015.581.294.285.52.677.679 1.176.159.5.215 1.146.168 1.939H26.18c0 .84.226 1.468.679 1.883.453.415 1.057.623 1.813.623.252 0 .502-.03.749-.091.247-.06.483-.133.707-.217a3.72 3.72 0 00.595-.28c.173-.103.306-.196.399-.28l.434.798zm-2.954-5.362c-.308 0-.6.033-.875.098a1.995 1.995 0 00-.728.329c-.21.154-.383.355-.518.602s-.222.553-.259.917h4.354c-.047-.616-.245-1.094-.595-1.435-.35-.34-.81-.511-1.379-.511zm4.382-.756h1.666v-1.386l1.092-.308v1.694h3.738v.938h-3.738v3.304c0 .681.166 1.185.497 1.512.331.327.805.49 1.421.49.42 0 .786-.08 1.099-.238.313-.159.595-.331.847-.518l.364.826a3.938 3.938 0 01-1.169.63 4.182 4.182 0 01-1.393.238 3.41 3.41 0 01-1.057-.161 2.426 2.426 0 01-.875-.497 2.38 2.38 0 01-.602-.861c-.15-.35-.224-.768-.224-1.253v-3.472h-1.666v-.938zm13.048 0h1.988v4.774c0 .457.028.896.084 1.316h.938v.91H47.18l-.042-1.19h-.056a2.938 2.938 0 01-.966.98c-.401.252-.887.378-1.456.378-.43 0-.796-.049-1.099-.147a1.556 1.556 0 01-.749-.511c-.196-.243-.34-.567-.434-.973-.093-.406-.14-.912-.14-1.519v-3.08H41.3v-.938h2.03v3.794c0 .383.016.726.049 1.029.033.303.1.56.203.77.103.21.254.369.455.476.2.107.469.161.805.161.485 0 .908-.159 1.267-.476.36-.317.632-.714.819-1.19v-3.626h-.896v-.938zm4.242 7v-.938h1.89v-5.124h-1.89v-.938h2.618l.224.91h.07c.317-.29.672-.537 1.064-.742.392-.205.859-.308 1.4-.308.317 0 .572.06.763.182.191.121.34.299.448.532.107.233.18.516.217.847.037.331.056.707.056 1.127l-.98.014c0-.597-.058-1.036-.175-1.316-.117-.28-.329-.42-.637-.42-.29 0-.55.042-.784.126a2.565 2.565 0 00-.609.308c-.173.121-.32.243-.441.364s-.21.224-.266.308v4.13h2.688v.938h-5.656zm8.778-4.55a14.05 14.05 0 00-.063-1.176 4.657 4.657 0 00-.049-.364h-.938v-.91h1.876l.126 1.134h.07c.093-.159.217-.315.371-.469a2.91 2.91 0 011.225-.721c.252-.075.518-.112.798-.112.43 0 .81.047 1.141.14.331.093.607.259.826.497.22.238.385.56.497.966.112.406.168.922.168 1.547v4.018h-1.092V57.16c0-.775-.126-1.358-.378-1.75-.252-.392-.71-.588-1.372-.588-.243 0-.478.049-.707.147a2.44 2.44 0 00-.623.385c-.187.159-.35.343-.49.553-.14.21-.243.432-.308.665v4.396h-1.078v-4.55zm16.73 4.55v-.938h1.666v-5.124h-1.666v-.938h1.666v-.392c0-.877.229-1.512.686-1.904.457-.392 1.11-.588 1.96-.588.308 0 .583.019.826.056.243.037.504.112.784.224l-.252.91a2.862 2.862 0 00-.7-.203 4.295 4.295 0 00-.616-.049c-.616 0-1.036.152-1.26.455-.224.303-.336.8-.336 1.491h2.898v.938H78.54v5.124h2.898v.938h-5.656zm12.25-7h1.988v4.774c0 .457.028.896.084 1.316h.938v.91H89.18l-.042-1.19h-.056a2.938 2.938 0 01-.966.98c-.401.252-.887.378-1.456.378-.43 0-.796-.049-1.099-.147a1.556 1.556 0 01-.749-.511c-.196-.243-.34-.567-.434-.973-.093-.406-.14-.912-.14-1.519v-3.08H83.3v-.938h2.03v3.794c0 .383.016.726.049 1.029.033.303.1.56.203.77.103.21.254.369.455.476.2.107.469.161.805.161.485 0 .908-.159 1.267-.476.36-.317.632-.714.819-1.19v-3.626h-.896v-.938zm4.62 2.45a14.05 14.05 0 00-.063-1.176 4.657 4.657 0 00-.049-.364h-.938v-.91h1.876l.126 1.134h.07c.093-.159.217-.315.371-.469a2.91 2.91 0 011.225-.721c.252-.075.518-.112.798-.112.43 0 .81.047 1.141.14.331.093.607.259.826.497.22.238.385.56.497.966.112.406.168.922.168 1.547v4.018h-1.092V57.16c0-.775-.126-1.358-.378-1.75-.252-.392-.71-.588-1.372-.588-.243 0-.478.049-.707.147a2.44 2.44 0 00-.623.385c-.187.159-.35.343-.49.553-.14.21-.243.432-.308.665v4.396h-1.078v-4.55zm13.244-1.372a5.531 5.531 0 00-.693-.189 3.61 3.61 0 00-.735-.077c-.915 0-1.596.215-2.044.644-.448.43-.672 1.11-.672 2.044 0 .41.065.777.196 1.099.13.322.317.595.56.819.243.224.534.397.875.518.34.121.716.182 1.127.182.439 0 .866-.075 1.281-.224.415-.15.763-.345 1.043-.588l.49.812c-.13.112-.294.229-.49.35a4.837 4.837 0 01-1.533.602 4.962 4.962 0 01-1.015.098c-.607 0-1.141-.086-1.603-.259a3.045 3.045 0 01-1.155-.742 3.176 3.176 0 01-.7-1.162 4.525 4.525 0 01-.238-1.505c0-.588.082-1.11.245-1.568.163-.457.399-.84.707-1.148a3.08 3.08 0 011.12-.707 4.187 4.187 0 011.47-.245c.69 0 1.253.06 1.687.182.434.121.8.257 1.099.406l-.014.042v1.946h-1.008v-1.33zm2.688-1.078h1.666v-1.386l1.092-.308v1.694h3.738v.938h-3.738v3.304c0 .681.166 1.185.497 1.512.331.327.805.49 1.421.49.42 0 .786-.08 1.099-.238.313-.159.595-.331.847-.518l.364.826a3.938 3.938 0 01-1.169.63 4.182 4.182 0 01-1.393.238 3.41 3.41 0 01-1.057-.161 2.426 2.426 0 01-.875-.497 2.38 2.38 0 01-.602-.861c-.15-.35-.224-.768-.224-1.253v-3.472h-1.666v-.938zm9.436 7v-.938h2.436v-5.124h-2.436v-.938h3.556v6.062h2.38v.938h-5.936zm2.058-8.988c0-.252.084-.469.252-.651a.838.838 0 01.644-.273c.27 0 .497.091.679.273a.889.889 0 01.273.651.806.806 0 01-.273.616.963.963 0 01-.679.252.872.872 0 01-.644-.252.838.838 0 01-.252-.616zm5.67 5.488c0-1.13.294-2.023.882-2.681.588-.658 1.428-.987 2.52-.987.588 0 1.094.096 1.519.287.425.191.777.45 1.057.777.28.327.488.714.623 1.162.135.448.203.929.203 1.442 0 .56-.075 1.066-.224 1.519-.15.453-.369.838-.658 1.155-.29.317-.646.562-1.071.735a3.82 3.82 0 01-1.449.259c-.579 0-1.083-.096-1.512-.287a2.967 2.967 0 01-1.064-.777 3.168 3.168 0 01-.623-1.162 4.963 4.963 0 01-.203-1.442zm1.162 0c0 .327.04.653.119.98.08.327.208.62.385.882.177.261.408.471.693.63.285.159.632.238 1.043.238.747 0 1.309-.231 1.687-.693.378-.462.567-1.141.567-2.037 0-.336-.04-.665-.119-.987a2.608 2.608 0 00-.392-.875 2.066 2.066 0 00-.7-.63c-.285-.159-.632-.238-1.043-.238-.747 0-1.307.229-1.68.686-.373.457-.56 1.139-.56 2.044zm7.742-1.05a14.051 14.051 0 00-.063-1.176 4.657 4.657 0 00-.049-.364h-.938v-.91h1.876l.126 1.134h.07c.093-.159.217-.315.371-.469a2.91 2.91 0 011.225-.721c.252-.075.518-.112.798-.112.43 0 .81.047 1.141.14.331.093.607.259.826.497.22.238.385.56.497.966.112.406.168.922.168 1.547v4.018h-1.092V57.16c0-.775-.126-1.358-.378-1.75-.252-.392-.71-.588-1.372-.588-.243 0-.478.049-.707.147a2.44 2.44 0 00-.623.385c-.187.159-.35.343-.49.553-.14.21-.243.432-.308.665v4.396h-1.078v-4.55z"/><path id="(){" fill="#7E7C7B" d="M147.798 63.936a6.964 6.964 0 01-1.757-.707 5.036 5.036 0 01-1.428-1.225c-.406-.504-.728-1.12-.966-1.848s-.357-1.591-.357-2.59c0-.99.121-1.855.364-2.597s.57-1.372.98-1.89c.41-.518.889-.933 1.435-1.246a6.005 6.005 0 011.729-.665l.35.882a7.086 7.086 0 00-1.512.623 3.928 3.928 0 00-1.183 1.022c-.331.425-.588.952-.77 1.582-.182.63-.273 1.393-.273 2.289 0 .905.11 1.678.329 2.317.22.64.509 1.171.868 1.596.36.425.76.756 1.204.994.443.238.889.404 1.337.497l-.35.966zm4.354-.966a4.965 4.965 0 001.337-.497 4.15 4.15 0 001.204-.994c.36-.425.649-.957.868-1.596.22-.64.329-1.412.329-2.317 0-.896-.091-1.659-.273-2.289-.182-.63-.439-1.157-.77-1.582a3.928 3.928 0 00-1.183-1.022 7.086 7.086 0 00-1.512-.623l.35-.882c.607.13 1.183.352 1.729.665a4.984 4.984 0 011.435 1.246c.41.518.737 1.148.98 1.89s.364 1.608.364 2.597c0 .999-.119 1.862-.357 2.59-.238.728-.56 1.344-.966 1.848a5.036 5.036 0 01-1.428 1.225 6.964 6.964 0 01-1.757.707l-.35-.966zm17.878-2.45c0-.401-.068-.749-.203-1.043a2.44 2.44 0 00-.504-.735c-.2-.196-.415-.34-.644-.434a1.641 1.641 0 00-.609-.14v-.98c.177 0 .38-.04.609-.119.229-.08.443-.21.644-.392.2-.182.369-.418.504-.707.135-.29.203-.649.203-1.078v-1.428c0-.336.054-.644.161-.924a2.22 2.22 0 01.448-.728c.191-.205.42-.366.686-.483.266-.117.558-.175.875-.175h2.03v.98h-1.54c-.588 0-.996.14-1.225.42-.229.28-.343.695-.343 1.246v1.358c0 .383-.07.723-.21 1.022a2.7 2.7 0 01-1.106 1.225c-.205.117-.373.184-.504.203v.084c.121.019.285.091.49.217.205.126.406.299.602.518.196.22.366.478.511.777.145.299.217.63.217.994v1.344c0 .57.121.99.364 1.26s.649.406 1.218.406h1.526v.98h-2.03c-.653 0-1.178-.194-1.575-.581-.397-.387-.595-.959-.595-1.715V60.52z"/><path id="returncount++;" fill="#C06334" d="M33.474 77.968v-.938h1.89v-5.124h-1.89v-.938h2.618l.224.91h.07c.317-.29.672-.537 1.064-.742.392-.205.859-.308 1.4-.308.317 0 .572.06.763.182.191.121.34.299.448.532.107.233.18.516.217.847.037.331.056.707.056 1.127l-.98.014c0-.597-.058-1.036-.175-1.316-.117-.28-.329-.42-.637-.42-.29 0-.55.042-.784.126a2.565 2.565 0 00-.609.308c-.173.121-.32.243-.441.364s-.21.224-.266.308v4.13h2.688v.938h-5.656zm14.882-.882c-.168.15-.366.29-.595.42a4.39 4.39 0 01-.749.336c-.27.093-.553.166-.847.217-.294.051-.59.077-.889.077-.56 0-1.055-.086-1.484-.259a2.858 2.858 0 01-1.078-.742 3.234 3.234 0 01-.658-1.155 4.767 4.767 0 01-.224-1.512c0-.588.082-1.11.245-1.568.163-.457.399-.84.707-1.148a3.08 3.08 0 011.12-.707 4.187 4.187 0 011.47-.245c.392 0 .78.051 1.162.154.383.103.721.296 1.015.581.294.285.52.677.679 1.176.159.5.215 1.146.168 1.939H42.98c0 .84.226 1.468.679 1.883.453.415 1.057.623 1.813.623.252 0 .502-.03.749-.091.247-.06.483-.133.707-.217a3.72 3.72 0 00.595-.28c.173-.103.306-.196.399-.28l.434.798zm-2.954-5.362c-.308 0-.6.033-.875.098a1.995 1.995 0 00-.728.329c-.21.154-.383.355-.518.602s-.222.553-.259.917h4.354c-.047-.616-.245-1.094-.595-1.435-.35-.34-.81-.511-1.379-.511zm4.382-.756h1.666v-1.386l1.092-.308v1.694h3.738v.938h-3.738v3.304c0 .681.166 1.185.497 1.512.331.327.805.49 1.421.49.42 0 .786-.08 1.099-.238.313-.159.595-.331.847-.518l.364.826a3.938 3.938 0 01-1.169.63 4.182 4.182 0 01-1.393.238 3.41 3.41 0 01-1.057-.161 2.426 2.426 0 01-.875-.497 2.38 2.38 0 01-.602-.861c-.15-.35-.224-.768-.224-1.253v-3.472h-1.666v-.938zm13.048 0h1.988v4.774c0 .457.028.896.084 1.316h.938v.91H63.98l-.042-1.19h-.056a2.938 2.938 0 01-.966.98c-.401.252-.887.378-1.456.378-.43 0-.796-.049-1.099-.147a1.556 1.556 0 01-.749-.511c-.196-.243-.34-.567-.434-.973-.093-.406-.14-.912-.14-1.519v-3.08H58.1v-.938h2.03v3.794c0 .383.016.726.049 1.029.033.303.1.56.203.77.103.21.254.369.455.476.2.107.469.161.805.161.485 0 .908-.159 1.267-.476.36-.317.632-.714.819-1.19v-3.626h-.896v-.938zm4.242 7v-.938h1.89v-5.124h-1.89v-.938h2.618l.224.91h.07c.317-.29.672-.537 1.064-.742.392-.205.859-.308 1.4-.308.317 0 .572.06.763.182.191.121.34.299.448.532.107.233.18.516.217.847.037.331.056.707.056 1.127l-.98.014c0-.597-.058-1.036-.175-1.316-.117-.28-.329-.42-.637-.42-.29 0-.55.042-.784.126a2.565 2.565 0 00-.609.308c-.173.121-.32.243-.441.364s-.21.224-.266.308v4.13h2.688v.938h-5.656zm8.778-4.55a14.05 14.05 0 00-.063-1.176 4.657 4.657 0 00-.049-.364h-.938v-.91h1.876l.126 1.134h.07c.093-.159.217-.315.371-.469a2.91 2.91 0 011.225-.721c.252-.075.518-.112.798-.112.43 0 .81.047 1.141.14.331.093.607.259.826.497.22.238.385.56.497.966.112.406.168.922.168 1.547v4.018h-1.092V74.16c0-.775-.126-1.358-.378-1.75-.252-.392-.71-.588-1.372-.588-.243 0-.478.049-.707.147a2.44 2.44 0 00-.623.385c-.187.159-.35.343-.49.553-.14.21-.243.432-.308.665v4.396h-1.078v-4.55zm21.644-1.372a5.531 5.531 0 00-.693-.189 3.61 3.61 0 00-.735-.077c-.915 0-1.596.215-2.044.644-.448.43-.672 1.11-.672 2.044 0 .41.065.777.196 1.099.13.322.317.595.56.819.243.224.534.397.875.518.34.121.716.182 1.127.182.439 0 .866-.075 1.281-.224.415-.15.763-.345 1.043-.588l.49.812c-.13.112-.294.229-.49.35a4.837 4.837 0 01-1.533.602 4.962 4.962 0 01-1.015.098c-.607 0-1.141-.086-1.603-.259a3.045 3.045 0 01-1.155-.742 3.176 3.176 0 01-.7-1.162 4.525 4.525 0 01-.238-1.505c0-.588.082-1.11.245-1.568.163-.457.399-.84.707-1.148a3.08 3.08 0 011.12-.707 4.187 4.187 0 011.47-.245c.69 0 1.253.06 1.687.182.434.121.8.257 1.099.406l-.014.042v1.946h-1.008v-1.33zm3.052 2.422c0-1.13.294-2.023.882-2.681.588-.658 1.428-.987 2.52-.987.588 0 1.094.096 1.519.287.425.191.777.45 1.057.777.28.327.488.714.623 1.162.135.448.203.929.203 1.442 0 .56-.075 1.066-.224 1.519-.15.453-.369.838-.658 1.155-.29.317-.646.562-1.071.735a3.82 3.82 0 01-1.449.259c-.579 0-1.083-.096-1.512-.287a2.967 2.967 0 01-1.064-.777 3.168 3.168 0 01-.623-1.162 4.963 4.963 0 01-.203-1.442zm1.162 0c0 .327.04.653.119.98.08.327.208.62.385.882.177.261.408.471.693.63.285.159.632.238 1.043.238.747 0 1.309-.231 1.687-.693.378-.462.567-1.141.567-2.037 0-.336-.04-.665-.119-.987a2.608 2.608 0 00-.392-.875 2.066 2.066 0 00-.7-.63c-.285-.159-.632-.238-1.043-.238-.747 0-1.307.229-1.68.686-.373.457-.56 1.139-.56 2.044zm11.522-3.5h1.988v4.774c0 .457.028.896.084 1.316h.938v.91h-1.862l-.042-1.19h-.056a2.938 2.938 0 01-.966.98c-.401.252-.887.378-1.456.378-.43 0-.796-.049-1.099-.147a1.556 1.556 0 01-.749-.511c-.196-.243-.34-.567-.434-.973-.093-.406-.14-.912-.14-1.519v-3.08h-.938v-.938h2.03v3.794c0 .383.016.726.049 1.029.033.303.1.56.203.77.103.21.254.369.455.476.2.107.469.161.805.161.485 0 .908-.159 1.267-.476.36-.317.632-.714.819-1.19v-3.626h-.896v-.938zm4.62 2.45a14.051 14.051 0 00-.063-1.176 4.657 4.657 0 00-.049-.364h-.938v-.91h1.876l.126 1.134h.07c.093-.159.217-.315.371-.469a2.91 2.91 0 011.225-.721c.252-.075.518-.112.798-.112.43 0 .81.047 1.141.14.331.093.607.259.826.497.22.238.385.56.497.966.112.406.168.922.168 1.547v4.018h-1.092V74.16c0-.775-.126-1.358-.378-1.75-.252-.392-.71-.588-1.372-.588-.243 0-.478.049-.707.147a2.44 2.44 0 00-.623.385c-.187.159-.35.343-.49.553-.14.21-.243.432-.308.665v4.396h-1.078v-4.55zm7.532-2.45h1.666v-1.386l1.092-.308v1.694h3.738v.938h-3.738v3.304c0 .681.166 1.185.497 1.512.331.327.805.49 1.421.49.42 0 .786-.08 1.099-.238.313-.159.595-.331.847-.518l.364.826a3.938 3.938 0 01-1.169.63 4.182 4.182 0 01-1.393.238 3.41 3.41 0 01-1.057-.161 2.426 2.426 0 01-.875-.497 2.38 2.38 0 01-.602-.861c-.15-.35-.224-.768-.224-1.253v-3.472h-1.666v-.938zm8.638 1.764h3.024v-3.094h1.008v3.094h3.024v1.008h-3.024v3.094h-1.008V73.74h-3.024v-1.008zm8.4 0h3.024v-3.094h1.008v3.094h3.024v1.008h-3.024v3.094h-1.008V73.74h-3.024v-1.008zm10.934 4.466c0-.28.091-.506.273-.679.182-.173.418-.259.707-.259.355 0 .63.124.826.371.196.247.294.595.294 1.043a2.36 2.36 0 01-.637 1.659 2.465 2.465 0 01-.588.462c-.21.117-.404.203-.581.259l-.35-.546c.336-.13.625-.317.868-.56.243-.243.364-.537.364-.882-.13.028-.233.042-.308.042-.27 0-.483-.077-.637-.231-.154-.154-.231-.38-.231-.679zm.126-5.502c0-.299.084-.53.252-.693.168-.163.392-.245.672-.245.299 0 .532.082.7.245.168.163.252.394.252.693 0 .27-.084.495-.252.672-.168.177-.401.266-.7.266-.28 0-.504-.089-.672-.266a.938.938 0 01-.252-.672z"/><path id="};}" fill="#7E7C7B" d="M21.07 95.892c0 .756-.198 1.328-.595 1.715-.397.387-.922.581-1.575.581h-2.03v-.98h1.526c.57 0 .975-.135 1.218-.406.243-.27.364-.69.364-1.26v-1.344c0-.364.07-.695.21-.994.14-.299.308-.558.504-.777.196-.22.397-.392.602-.518.205-.126.373-.198.504-.217v-.084c-.13-.019-.299-.086-.504-.203a2.7 2.7 0 01-1.106-1.225c-.14-.299-.21-.64-.21-1.022V87.8c0-.55-.114-.966-.343-1.246-.229-.28-.637-.42-1.225-.42h-1.54v-.98h2.03c.317 0 .609.058.875.175.266.117.495.278.686.483.191.205.34.448.448.728.107.28.161.588.161.924v1.428c0 .43.068.789.203 1.078.135.29.303.525.504.707.2.182.415.313.644.392.229.08.432.119.609.119v.98c-.177 0-.38.047-.609.14a2.011 2.011 0 00-.644.434 2.44 2.44 0 00-.504.735c-.135.294-.203.642-.203 1.043v1.372zm6.286-1.694c0-.28.091-.506.273-.679.182-.173.418-.259.707-.259.355 0 .63.124.826.371.196.247.294.595.294 1.043a2.36 2.36 0 01-.637 1.659 2.465 2.465 0 01-.588.462c-.21.117-.404.203-.581.259l-.35-.546c.336-.13.625-.317.868-.56.243-.243.364-.537.364-.882-.13.028-.233.042-.308.042-.27 0-.483-.077-.637-.231-.154-.154-.231-.38-.231-.679zm.126-5.502c0-.299.084-.53.252-.693.168-.163.392-.245.672-.245.299 0 .532.082.7.245.168.163.252.394.252.693 0 .27-.084.495-.252.672-.168.177-.401.266-.7.266-.28 0-.504-.089-.672-.266a.938.938 0 01-.252-.672zM4.27 112.892c0 .756-.198 1.328-.595 1.715-.397.387-.922.581-1.575.581H.07v-.98h1.526c.57 0 .975-.135 1.218-.406.243-.27.364-.69.364-1.26v-1.344c0-.364.07-.695.21-.994.14-.299.308-.558.504-.777.196-.22.397-.392.602-.518.205-.126.373-.198.504-.217v-.084c-.13-.019-.299-.086-.504-.203a2.7 2.7 0 01-1.106-1.225c-.14-.299-.21-.64-.21-1.022V104.8c0-.55-.114-.966-.343-1.246-.229-.28-.637-.42-1.225-.42H.07v-.98H2.1c.317 0 .609.058.875.175.266.117.495.278.686.483.191.205.34.448.448.728.107.28.161.588.161.924v1.428c0 .43.068.789.203 1.078.135.29.303.525.504.707.2.182.415.313.644.392.229.08.432.119.609.119v.98c-.177 0-.38.047-.609.14a2.011 2.011 0 00-.644.434 2.44 2.44 0 00-.504.735c-.135.294-.203.642-.203 1.043v1.372z"/><path id="let" fill="#1C85B5" d="M.616 136.168H2.94v7.448c0 .57.096.97.287 1.204.191.233.474.35.847.35.261 0 .511-.047.749-.14.238-.093.502-.252.791-.476l.504.77c-.15.13-.313.247-.49.35a3.638 3.638 0 01-1.106.42 2.963 2.963 0 01-1.442-.077 1.579 1.579 0 01-.679-.427 1.897 1.897 0 01-.413-.777c-.093-.322-.14-.721-.14-1.197v-6.51H.616v-.938zm14.14 8.918c-.168.15-.366.29-.595.42a4.39 4.39 0 01-.749.336c-.27.093-.553.166-.847.217-.294.051-.59.077-.889.077-.56 0-1.055-.086-1.484-.259a2.858 2.858 0 01-1.078-.742 3.234 3.234 0 01-.658-1.155 4.767 4.767 0 01-.224-1.512c0-.588.082-1.11.245-1.568.163-.457.399-.84.707-1.148a3.08 3.08 0 011.12-.707 4.187 4.187 0 011.47-.245c.392 0 .78.051 1.162.154.383.103.721.296 1.015.581.294.285.52.677.679 1.176.159.5.215 1.146.168 1.939H9.38c0 .84.226 1.468.679 1.883.453.415 1.057.623 1.813.623.252 0 .502-.03.749-.091.247-.06.483-.133.707-.217a3.72 3.72 0 00.595-.28c.173-.103.306-.196.399-.28l.434.798zm-2.954-5.362c-.308 0-.6.033-.875.098a1.995 1.995 0 00-.728.329c-.21.154-.383.355-.518.602s-.222.553-.259.917h4.354c-.047-.616-.245-1.094-.595-1.435-.35-.34-.81-.511-1.379-.511zm4.382-.756h1.666v-1.386l1.092-.308v1.694h3.738v.938h-3.738v3.304c0 .681.166 1.185.497 1.512.331.327.805.49 1.421.49.42 0 .786-.08 1.099-.238.313-.159.595-.331.847-.518l.364.826a3.938 3.938 0 01-1.169.63 4.182 4.182 0 01-1.393.238 3.41 3.41 0 01-1.057-.161 2.426 2.426 0 01-.875-.497 2.38 2.38 0 01-.602-.861c-.15-.35-.224-.768-.224-1.253v-3.472h-1.666v-.938z"/><path id="counter" fill="#181717" d="M38.696 140.046a5.531 5.531 0 00-.693-.189 3.61 3.61 0 00-.735-.077c-.915 0-1.596.215-2.044.644-.448.43-.672 1.11-.672 2.044 0 .41.065.777.196 1.099.13.322.317.595.56.819.243.224.534.397.875.518.34.121.716.182 1.127.182.439 0 .866-.075 1.281-.224.415-.15.763-.345 1.043-.588l.49.812c-.13.112-.294.229-.49.35a4.837 4.837 0 01-1.533.602 4.962 4.962 0 01-1.015.098c-.607 0-1.141-.086-1.603-.259a3.045 3.045 0 01-1.155-.742 3.176 3.176 0 01-.7-1.162 4.525 4.525 0 01-.238-1.505c0-.588.082-1.11.245-1.568.163-.457.399-.84.707-1.148a3.08 3.08 0 011.12-.707 4.187 4.187 0 011.47-.245c.69 0 1.253.06 1.687.182.434.121.8.257 1.099.406l-.014.042v1.946h-1.008v-1.33zm3.052 2.422c0-1.13.294-2.023.882-2.681.588-.658 1.428-.987 2.52-.987.588 0 1.094.096 1.519.287.425.191.777.45 1.057.777.28.327.488.714.623 1.162.135.448.203.929.203 1.442 0 .56-.075 1.066-.224 1.519-.15.453-.369.838-.658 1.155-.29.317-.646.562-1.071.735a3.82 3.82 0 01-1.449.259c-.579 0-1.083-.096-1.512-.287a2.967 2.967 0 01-1.064-.777 3.168 3.168 0 01-.623-1.162 4.963 4.963 0 01-.203-1.442zm1.162 0c0 .327.04.653.119.98.08.327.208.62.385.882.177.261.408.471.693.63.285.159.632.238 1.043.238.747 0 1.309-.231 1.687-.693.378-.462.567-1.141.567-2.037 0-.336-.04-.665-.119-.987a2.608 2.608 0 00-.392-.875 2.066 2.066 0 00-.7-.63c-.285-.159-.632-.238-1.043-.238-.747 0-1.307.229-1.68.686-.373.457-.56 1.139-.56 2.044zm11.522-3.5h1.988v4.774c0 .457.028.896.084 1.316h.938v.91H55.58l-.042-1.19h-.056a2.938 2.938 0 01-.966.98c-.401.252-.887.378-1.456.378-.43 0-.796-.049-1.099-.147a1.556 1.556 0 01-.749-.511c-.196-.243-.34-.567-.434-.973-.093-.406-.14-.912-.14-1.519v-3.08H49.7v-.938h2.03v3.794c0 .383.016.726.049 1.029.033.303.1.56.203.77.103.21.254.369.455.476.2.107.469.161.805.161.485 0 .908-.159 1.267-.476.36-.317.632-.714.819-1.19v-3.626h-.896v-.938zm4.62 2.45a14.05 14.05 0 00-.063-1.176 4.657 4.657 0 00-.049-.364h-.938v-.91h1.876l.126 1.134h.07c.093-.159.217-.315.371-.469a2.91 2.91 0 011.225-.721c.252-.075.518-.112.798-.112.43 0 .81.047 1.141.14.331.093.607.259.826.497.22.238.385.56.497.966.112.406.168.922.168 1.547v4.018h-1.092v-3.808c0-.775-.126-1.358-.378-1.75-.252-.392-.71-.588-1.372-.588-.243 0-.478.049-.707.147a2.44 2.44 0 00-.623.385c-.187.159-.35.343-.49.553-.14.21-.243.432-.308.665v4.396h-1.078v-4.55zm7.532-2.45h1.666v-1.386l1.092-.308v1.694h3.738v.938h-3.738v3.304c0 .681.166 1.185.497 1.512.331.327.805.49 1.421.49.42 0 .786-.08 1.099-.238.313-.159.595-.331.847-.518l.364.826a3.938 3.938 0 01-1.169.63 4.182 4.182 0 01-1.393.238 3.41 3.41 0 01-1.057-.161 2.426 2.426 0 01-.875-.497 2.38 2.38 0 01-.602-.861c-.15-.35-.224-.768-.224-1.253v-3.472h-1.666v-.938zm15.372 6.118c-.168.15-.366.29-.595.42a4.39 4.39 0 01-.749.336c-.27.093-.553.166-.847.217-.294.051-.59.077-.889.077-.56 0-1.055-.086-1.484-.259a2.858 2.858 0 01-1.078-.742 3.234 3.234 0 01-.658-1.155 4.767 4.767 0 01-.224-1.512c0-.588.082-1.11.245-1.568.163-.457.399-.84.707-1.148a3.08 3.08 0 011.12-.707 4.187 4.187 0 011.47-.245c.392 0 .78.051 1.162.154.383.103.721.296 1.015.581.294.285.52.677.679 1.176.159.5.215 1.146.168 1.939H76.58c0 .84.226 1.468.679 1.883.453.415 1.057.623 1.813.623.252 0 .502-.03.749-.091.247-.06.483-.133.707-.217a3.72 3.72 0 00.595-.28c.173-.103.306-.196.399-.28l.434.798zm-2.954-5.362c-.308 0-.6.033-.875.098a1.995 1.995 0 00-.728.329c-.21.154-.383.355-.518.602s-.222.553-.259.917h4.354c-.047-.616-.245-1.094-.595-1.435-.35-.34-.81-.511-1.379-.511zm4.872 6.244v-.938h1.89v-5.124h-1.89v-.938h2.618l.224.91h.07c.317-.29.672-.537 1.064-.742.392-.205.859-.308 1.4-.308.317 0 .572.06.763.182.191.121.34.299.448.532.107.233.18.516.217.847.037.331.056.707.056 1.127l-.98.014c0-.597-.058-1.036-.175-1.316-.117-.28-.329-.42-.637-.42-.29 0-.55.042-.784.126a2.565 2.565 0 00-.609.308c-.173.121-.32.243-.441.364s-.21.224-.266.308v4.13h2.688v.938h-5.656z"/><path id="=" fill="#DBAF88" d="M100.702 139.57h6.496v1.008h-6.496v-1.008zm0 2.296h6.496v1.008h-6.496v-1.008z"/><path id="makeCounter" fill="#181717" d="M120.218 145.968v-4.662c0-.196-.007-.385-.021-.567a1.9 1.9 0 00-.098-.49.786.786 0 00-.224-.343.57.57 0 00-.385-.126c-.317 0-.586.13-.805.392-.22.261-.385.588-.497.98v4.816h-1.064v-7h.728l.21.854h.056c.093-.14.184-.273.273-.399.089-.126.191-.236.308-.329.117-.093.254-.166.413-.217.159-.051.36-.077.602-.077.14 0 .285.021.434.063.15.042.287.107.413.196.126.089.236.208.329.357.093.15.154.331.182.546.215-.364.455-.649.721-.854.266-.205.632-.308 1.099-.308.308 0 .558.051.749.154.191.103.34.25.448.441.107.191.182.42.224.686.042.266.063.562.063.889v4.998h-1.064v-4.76c0-.196-.01-.38-.028-.553a1.764 1.764 0 00-.105-.455.752.752 0 00-.21-.308.536.536 0 00-.357-.112c-.327 0-.602.13-.826.392-.224.261-.392.635-.504 1.12v4.676h-1.064zm6.244-6.454a4.447 4.447 0 011.358-.504 7.423 7.423 0 011.484-.154c.476 0 .866.075 1.169.224.303.15.541.343.714.581.173.238.29.509.35.812.06.303.091.609.091.917 0 .355-.01.733-.028 1.134-.019.401-.033.803-.042 1.204 0 .467.028.91.084 1.33h.938v.91h-1.862l-.126-1.05h-.07c-.056.084-.14.191-.252.322-.112.13-.259.259-.441.385a2.749 2.749 0 01-1.589.469c-.69 0-1.237-.177-1.638-.532-.401-.355-.602-.84-.602-1.456 0-.476.105-.873.315-1.19.21-.317.511-.56.903-.728.392-.168.866-.266 1.421-.294a9.544 9.544 0 011.869.112c.047-.43.054-.786.021-1.071-.033-.285-.107-.511-.224-.679a.938.938 0 00-.49-.357 2.482 2.482 0 00-.777-.105c-.42 0-.821.058-1.204.175-.383.117-.723.236-1.022.357l-.35-.812zm2.058 5.642c.261 0 .504-.042.728-.126a2.22 2.22 0 00.588-.322 2.133 2.133 0 00.672-.868v-.98a7.92 7.92 0 00-1.344-.126c-.41 0-.765.044-1.064.133-.299.089-.532.226-.7.413-.168.187-.252.43-.252.728 0 .308.105.576.315.805.21.229.562.343 1.057.343zm5.166-8.988h2.268v5.796h.77l2.758-2.996h1.316l-3.094 3.318 2.548 2.744h.91v.938h-1.442l-2.996-3.164h-.77v3.164h-1.078v-8.862h-1.19v-.938zm15.47 8.918c-.168.15-.366.29-.595.42a4.39 4.39 0 01-.749.336c-.27.093-.553.166-.847.217-.294.051-.59.077-.889.077-.56 0-1.055-.086-1.484-.259a2.858 2.858 0 01-1.078-.742 3.234 3.234 0 01-.658-1.155 4.767 4.767 0 01-.224-1.512c0-.588.082-1.11.245-1.568.163-.457.399-.84.707-1.148a3.08 3.08 0 011.12-.707 4.187 4.187 0 011.47-.245c.392 0 .78.051 1.162.154.383.103.721.296 1.015.581.294.285.52.677.679 1.176.159.5.215 1.146.168 1.939h-5.418c0 .84.226 1.468.679 1.883.453.415 1.057.623 1.813.623.252 0 .502-.03.749-.091.247-.06.483-.133.707-.217a3.72 3.72 0 00.595-.28c.173-.103.306-.196.399-.28l.434.798zm-2.954-5.362c-.308 0-.6.033-.875.098a1.995 1.995 0 00-.728.329c-.21.154-.383.355-.518.602s-.222.553-.259.917h4.354c-.047-.616-.245-1.094-.595-1.435-.35-.34-.81-.511-1.379-.511zm10.36-2.492a2.466 2.466 0 00-.525-.147 4.192 4.192 0 00-.693-.049c-.383 0-.758.07-1.127.21-.369.14-.695.369-.98.686-.285.317-.513.733-.686 1.246-.173.513-.259 1.143-.259 1.89 0 .672.077 1.26.231 1.764.154.504.369.924.644 1.26.275.336.607.588.994.756.387.168.819.252 1.295.252.243 0 .469-.021.679-.063.21-.042.404-.1.581-.175v-1.4h1.036v1.89l.014.028a3.66 3.66 0 01-1.064.539c-.43.145-.952.217-1.568.217-.588 0-1.132-.1-1.631-.301a3.41 3.41 0 01-1.295-.917c-.364-.41-.646-.936-.847-1.575-.2-.64-.301-1.398-.301-2.275 0-.915.112-1.692.336-2.331.224-.64.527-1.162.91-1.568a3.452 3.452 0 011.337-.889 4.697 4.697 0 011.631-.28c.317 0 .593.012.826.035.233.023.439.056.616.098s.334.096.469.161c.135.065.268.14.399.224h.014v2.212h-1.036v-1.498zm2.786 5.236c0-1.13.294-2.023.882-2.681.588-.658 1.428-.987 2.52-.987.588 0 1.094.096 1.519.287.425.191.777.45 1.057.777.28.327.488.714.623 1.162.135.448.203.929.203 1.442 0 .56-.075 1.066-.224 1.519-.15.453-.369.838-.658 1.155-.29.317-.646.562-1.071.735a3.82 3.82 0 01-1.449.259c-.579 0-1.083-.096-1.512-.287a2.967 2.967 0 01-1.064-.777 3.168 3.168 0 01-.623-1.162 4.963 4.963 0 01-.203-1.442zm1.162 0c0 .327.04.653.119.98.08.327.208.62.385.882.177.261.408.471.693.63.285.159.632.238 1.043.238.747 0 1.309-.231 1.687-.693.378-.462.567-1.141.567-2.037 0-.336-.04-.665-.119-.987a2.608 2.608 0 00-.392-.875 2.066 2.066 0 00-.7-.63c-.285-.159-.632-.238-1.043-.238-.747 0-1.307.229-1.68.686-.373.457-.56 1.139-.56 2.044zm11.522-3.5h1.988v4.774c0 .457.028.896.084 1.316h.938v.91h-1.862l-.042-1.19h-.056a2.938 2.938 0 01-.966.98c-.401.252-.887.378-1.456.378-.43 0-.796-.049-1.099-.147a1.556 1.556 0 01-.749-.511c-.196-.243-.34-.567-.434-.973-.093-.406-.14-.912-.14-1.519v-3.08h-.938v-.938h2.03v3.794c0 .383.016.726.049 1.029.033.303.1.56.203.77.103.21.254.369.455.476.2.107.469.161.805.161.485 0 .908-.159 1.267-.476.36-.317.632-.714.819-1.19v-3.626h-.896v-.938zm4.62 2.45a14.051 14.051 0 00-.063-1.176 4.657 4.657 0 00-.049-.364h-.938v-.91h1.876l.126 1.134h.07c.093-.159.217-.315.371-.469a2.91 2.91 0 011.225-.721c.252-.075.518-.112.798-.112.43 0 .81.047 1.141.14.331.093.607.259.826.497.22.238.385.56.497.966.112.406.168.922.168 1.547v4.018h-1.092v-3.808c0-.775-.126-1.358-.378-1.75-.252-.392-.71-.588-1.372-.588-.243 0-.478.049-.707.147a2.44 2.44 0 00-.623.385c-.187.159-.35.343-.49.553-.14.21-.243.432-.308.665v4.396h-1.078v-4.55zm7.532-2.45h1.666v-1.386l1.092-.308v1.694h3.738v.938h-3.738v3.304c0 .681.166 1.185.497 1.512.331.327.805.49 1.421.49.42 0 .786-.08 1.099-.238.313-.159.595-.331.847-.518l.364.826a3.938 3.938 0 01-1.169.63 4.182 4.182 0 01-1.393.238 3.41 3.41 0 01-1.057-.161 2.426 2.426 0 01-.875-.497 2.38 2.38 0 01-.602-.861c-.15-.35-.224-.768-.224-1.253v-3.472h-1.666v-.938zm15.372 6.118c-.168.15-.366.29-.595.42a4.39 4.39 0 01-.749.336c-.27.093-.553.166-.847.217-.294.051-.59.077-.889.077-.56 0-1.055-.086-1.484-.259a2.858 2.858 0 01-1.078-.742 3.234 3.234 0 01-.658-1.155 4.767 4.767 0 01-.224-1.512c0-.588.082-1.11.245-1.568.163-.457.399-.84.707-1.148a3.08 3.08 0 011.12-.707 4.187 4.187 0 011.47-.245c.392 0 .78.051 1.162.154.383.103.721.296 1.015.581.294.285.52.677.679 1.176.159.5.215 1.146.168 1.939h-5.418c0 .84.226 1.468.679 1.883.453.415 1.057.623 1.813.623.252 0 .502-.03.749-.091.247-.06.483-.133.707-.217a3.72 3.72 0 00.595-.28c.173-.103.306-.196.399-.28l.434.798zm-2.954-5.362c-.308 0-.6.033-.875.098a1.995 1.995 0 00-.728.329c-.21.154-.383.355-.518.602s-.222.553-.259.917h4.354c-.047-.616-.245-1.094-.595-1.435-.35-.34-.81-.511-1.379-.511zm4.872 6.244v-.938h1.89v-5.124h-1.89v-.938h2.618l.224.91h.07c.317-.29.672-.537 1.064-.742.392-.205.859-.308 1.4-.308.317 0 .572.06.763.182.191.121.34.299.448.532.107.233.18.516.217.847.037.331.056.707.056 1.127l-.98.014c0-.597-.058-1.036-.175-1.316-.117-.28-.329-.42-.637-.42-.29 0-.55.042-.784.126a2.565 2.565 0 00-.609.308c-.173.121-.32.243-.441.364s-.21.224-.266.308v4.13h2.688v.938h-5.656z"/><path id="();" fill="#7E7C7B" d="M214.998 148.936a6.964 6.964 0 01-1.757-.707 5.036 5.036 0 01-1.428-1.225c-.406-.504-.728-1.12-.966-1.848s-.357-1.591-.357-2.59c0-.99.121-1.855.364-2.597s.57-1.372.98-1.89c.41-.518.889-.933 1.435-1.246a6.005 6.005 0 011.729-.665l.35.882a7.086 7.086 0 00-1.512.623 3.928 3.928 0 00-1.183 1.022c-.331.425-.588.952-.77 1.582-.182.63-.273 1.393-.273 2.289 0 .905.11 1.678.329 2.317.22.64.509 1.171.868 1.596.36.425.76.756 1.204.994.443.238.889.404 1.337.497l-.35.966zm4.354-.966a4.965 4.965 0 001.337-.497 4.15 4.15 0 001.204-.994c.36-.425.649-.957.868-1.596.22-.64.329-1.412.329-2.317 0-.896-.091-1.659-.273-2.289-.182-.63-.439-1.157-.77-1.582a3.928 3.928 0 00-1.183-1.022 7.086 7.086 0 00-1.512-.623l.35-.882c.607.13 1.183.352 1.729.665a4.984 4.984 0 011.435 1.246c.41.518.737 1.148.98 1.89s.364 1.608.364 2.597c0 .999-.119 1.862-.357 2.59-.238.728-.56 1.344-.966 1.848a5.036 5.036 0 01-1.428 1.225 6.964 6.964 0 01-1.757.707l-.35-.966zm9.604-2.772c0-.28.091-.506.273-.679.182-.173.418-.259.707-.259.355 0 .63.124.826.371.196.247.294.595.294 1.043a2.36 2.36 0 01-.637 1.659 2.465 2.465 0 01-.588.462c-.21.117-.404.203-.581.259l-.35-.546c.336-.13.625-.317.868-.56.243-.243.364-.537.364-.882-.13.028-.233.042-.308.042-.27 0-.483-.077-.637-.231-.154-.154-.231-.38-.231-.679zm.126-5.502c0-.299.084-.53.252-.693.168-.163.392-.245.672-.245.299 0 .532.082.7.245.168.163.252.394.252.693 0 .27-.084.495-.252.672-.168.177-.401.266-.7.266-.28 0-.504-.089-.672-.266a.938.938 0 01-.252-.672z"/><path id="alert(counter());" fill="#C06334" d="M.462 173.514a4.447 4.447 0 011.358-.504 7.423 7.423 0 011.484-.154c.476 0 .866.075 1.169.224.303.15.541.343.714.581.173.238.29.509.35.812.06.303.091.609.091.917 0 .355-.01.733-.028 1.134-.019.401-.033.803-.042 1.204 0 .467.028.91.084 1.33h.938v.91H4.718l-.126-1.05h-.07c-.056.084-.14.191-.252.322-.112.13-.259.259-.441.385a2.749 2.749 0 01-1.589.469c-.69 0-1.237-.177-1.638-.532-.401-.355-.602-.84-.602-1.456 0-.476.105-.873.315-1.19.21-.317.511-.56.903-.728.392-.168.866-.266 1.421-.294a9.544 9.544 0 011.869.112c.047-.43.054-.786.021-1.071-.033-.285-.107-.511-.224-.679a.938.938 0 00-.49-.357 2.482 2.482 0 00-.777-.105c-.42 0-.821.058-1.204.175-.383.117-.723.236-1.022.357l-.35-.812zm2.058 5.642c.261 0 .504-.042.728-.126a2.22 2.22 0 00.588-.322 2.133 2.133 0 00.672-.868v-.98a7.92 7.92 0 00-1.344-.126c-.41 0-.765.044-1.064.133-.299.089-.532.226-.7.413-.168.187-.252.43-.252.728 0 .308.105.576.315.805.21.229.562.343 1.057.343zm6.496-8.988h2.324v7.448c0 .57.096.97.287 1.204.191.233.474.35.847.35.261 0 .511-.047.749-.14.238-.093.502-.252.791-.476l.504.77c-.15.13-.313.247-.49.35a3.638 3.638 0 01-1.106.42 2.963 2.963 0 01-1.442-.077 1.579 1.579 0 01-.679-.427 1.897 1.897 0 01-.413-.777c-.093-.322-.14-.721-.14-1.197v-6.51H9.016v-.938zm14.14 8.918c-.168.15-.366.29-.595.42a4.39 4.39 0 01-.749.336c-.27.093-.553.166-.847.217-.294.051-.59.077-.889.077-.56 0-1.055-.086-1.484-.259a2.858 2.858 0 01-1.078-.742 3.234 3.234 0 01-.658-1.155 4.767 4.767 0 01-.224-1.512c0-.588.082-1.11.245-1.568.163-.457.399-.84.707-1.148a3.08 3.08 0 011.12-.707 4.187 4.187 0 011.47-.245c.392 0 .78.051 1.162.154.383.103.721.296 1.015.581.294.285.52.677.679 1.176.159.5.215 1.146.168 1.939H17.78c0 .84.226 1.468.679 1.883.453.415 1.057.623 1.813.623.252 0 .502-.03.749-.091.247-.06.483-.133.707-.217a3.72 3.72 0 00.595-.28c.173-.103.306-.196.399-.28l.434.798zm-2.954-5.362c-.308 0-.6.033-.875.098a1.995 1.995 0 00-.728.329c-.21.154-.383.355-.518.602s-.222.553-.259.917h4.354c-.047-.616-.245-1.094-.595-1.435-.35-.34-.81-.511-1.379-.511zm4.872 6.244v-.938h1.89v-5.124h-1.89v-.938h2.618l.224.91h.07c.317-.29.672-.537 1.064-.742.392-.205.859-.308 1.4-.308.317 0 .572.06.763.182.191.121.34.299.448.532.107.233.18.516.217.847.037.331.056.707.056 1.127l-.98.014c0-.597-.058-1.036-.175-1.316-.117-.28-.329-.42-.637-.42-.29 0-.55.042-.784.126a2.565 2.565 0 00-.609.308c-.173.121-.32.243-.441.364s-.21.224-.266.308v4.13h2.688v.938h-5.656zm7.91-7h1.666v-1.386l1.092-.308v1.694h3.738v.938h-3.738v3.304c0 .681.166 1.185.497 1.512.331.327.805.49 1.421.49.42 0 .786-.08 1.099-.238.313-.159.595-.331.847-.518l.364.826a3.938 3.938 0 01-1.169.63 4.182 4.182 0 01-1.393.238 3.41 3.41 0 01-1.057-.161 2.426 2.426 0 01-.875-.497 2.38 2.38 0 01-.602-.861c-.15-.35-.224-.768-.224-1.253v-3.472h-1.666v-.938zm14.014 9.968a6.964 6.964 0 01-1.757-.707 5.036 5.036 0 01-1.428-1.225c-.406-.504-.728-1.12-.966-1.848s-.357-1.591-.357-2.59c0-.99.121-1.855.364-2.597s.57-1.372.98-1.89c.41-.518.889-.933 1.435-1.246a6.005 6.005 0 011.729-.665l.35.882a7.086 7.086 0 00-1.512.623 3.928 3.928 0 00-1.183 1.022c-.331.425-.588.952-.77 1.582-.182.63-.273 1.393-.273 2.289 0 .905.11 1.678.329 2.317.22.64.509 1.171.868 1.596.36.425.76.756 1.204.994.443.238.889.404 1.337.497l-.35.966zm16.898-8.89a5.531 5.531 0 00-.693-.189 3.61 3.61 0 00-.735-.077c-.915 0-1.596.215-2.044.644-.448.43-.672 1.11-.672 2.044 0 .41.065.777.196 1.099.13.322.317.595.56.819.243.224.534.397.875.518.34.121.716.182 1.127.182.439 0 .866-.075 1.281-.224.415-.15.763-.345 1.043-.588l.49.812c-.13.112-.294.229-.49.35a4.837 4.837 0 01-1.533.602 4.962 4.962 0 01-1.015.098c-.607 0-1.141-.086-1.603-.259a3.045 3.045 0 01-1.155-.742 3.176 3.176 0 01-.7-1.162 4.525 4.525 0 01-.238-1.505c0-.588.082-1.11.245-1.568.163-.457.399-.84.707-1.148a3.08 3.08 0 011.12-.707 4.187 4.187 0 011.47-.245c.69 0 1.253.06 1.687.182.434.121.8.257 1.099.406l-.014.042v1.946h-1.008v-1.33zm3.052 2.422c0-1.13.294-2.023.882-2.681.588-.658 1.428-.987 2.52-.987.588 0 1.094.096 1.519.287.425.191.777.45 1.057.777.28.327.488.714.623 1.162.135.448.203.929.203 1.442 0 .56-.075 1.066-.224 1.519-.15.453-.369.838-.658 1.155-.29.317-.646.562-1.071.735a3.82 3.82 0 01-1.449.259c-.579 0-1.083-.096-1.512-.287a2.967 2.967 0 01-1.064-.777 3.168 3.168 0 01-.623-1.162 4.963 4.963 0 01-.203-1.442zm1.162 0c0 .327.04.653.119.98.08.327.208.62.385.882.177.261.408.471.693.63.285.159.632.238 1.043.238.747 0 1.309-.231 1.687-.693.378-.462.567-1.141.567-2.037 0-.336-.04-.665-.119-.987a2.608 2.608 0 00-.392-.875 2.066 2.066 0 00-.7-.63c-.285-.159-.632-.238-1.043-.238-.747 0-1.307.229-1.68.686-.373.457-.56 1.139-.56 2.044zm11.522-3.5h1.988v4.774c0 .457.028.896.084 1.316h.938v.91H80.78l-.042-1.19h-.056a2.938 2.938 0 01-.966.98c-.401.252-.887.378-1.456.378-.43 0-.796-.049-1.099-.147a1.556 1.556 0 01-.749-.511c-.196-.243-.34-.567-.434-.973-.093-.406-.14-.912-.14-1.519v-3.08H74.9v-.938h2.03v3.794c0 .383.016.726.049 1.029.033.303.1.56.203.77.103.21.254.369.455.476.2.107.469.161.805.161.485 0 .908-.159 1.267-.476.36-.317.632-.714.819-1.19v-3.626h-.896v-.938zm4.62 2.45a14.05 14.05 0 00-.063-1.176 4.657 4.657 0 00-.049-.364h-.938v-.91h1.876l.126 1.134h.07c.093-.159.217-.315.371-.469a2.91 2.91 0 011.225-.721c.252-.075.518-.112.798-.112.43 0 .81.047 1.141.14.331.093.607.259.826.497.22.238.385.56.497.966.112.406.168.922.168 1.547v4.018h-1.092v-3.808c0-.775-.126-1.358-.378-1.75-.252-.392-.71-.588-1.372-.588-.243 0-.478.049-.707.147a2.44 2.44 0 00-.623.385c-.187.159-.35.343-.49.553-.14.21-.243.432-.308.665v4.396h-1.078v-4.55zm7.532-2.45h1.666v-1.386l1.092-.308v1.694h3.738v.938h-3.738v3.304c0 .681.166 1.185.497 1.512.331.327.805.49 1.421.49.42 0 .786-.08 1.099-.238.313-.159.595-.331.847-.518l.364.826a3.938 3.938 0 01-1.169.63 4.182 4.182 0 01-1.393.238 3.41 3.41 0 01-1.057-.161 2.426 2.426 0 01-.875-.497 2.38 2.38 0 01-.602-.861c-.15-.35-.224-.768-.224-1.253v-3.472h-1.666v-.938zm15.372 6.118c-.168.15-.366.29-.595.42a4.39 4.39 0 01-.749.336c-.27.093-.553.166-.847.217-.294.051-.59.077-.889.077-.56 0-1.055-.086-1.484-.259a2.858 2.858 0 01-1.078-.742 3.234 3.234 0 01-.658-1.155 4.767 4.767 0 01-.224-1.512c0-.588.082-1.11.245-1.568.163-.457.399-.84.707-1.148a3.08 3.08 0 011.12-.707 4.187 4.187 0 011.47-.245c.392 0 .78.051 1.162.154.383.103.721.296 1.015.581.294.285.52.677.679 1.176.159.5.215 1.146.168 1.939h-5.418c0 .84.226 1.468.679 1.883.453.415 1.057.623 1.813.623.252 0 .502-.03.749-.091.247-.06.483-.133.707-.217a3.72 3.72 0 00.595-.28c.173-.103.306-.196.399-.28l.434.798zm-2.954-5.362c-.308 0-.6.033-.875.098a1.995 1.995 0 00-.728.329c-.21.154-.383.355-.518.602s-.222.553-.259.917h4.354c-.047-.616-.245-1.094-.595-1.435-.35-.34-.81-.511-1.379-.511zm4.872 6.244v-.938h1.89v-5.124h-1.89v-.938h2.618l.224.91h.07c.317-.29.672-.537 1.064-.742.392-.205.859-.308 1.4-.308.317 0 .572.06.763.182.191.121.34.299.448.532.107.233.18.516.217.847.037.331.056.707.056 1.127l-.98.014c0-.597-.058-1.036-.175-1.316-.117-.28-.329-.42-.637-.42-.29 0-.55.042-.784.126a2.565 2.565 0 00-.609.308c-.173.121-.32.243-.441.364s-.21.224-.266.308v4.13h2.688v.938h-5.656zm13.524 2.968a6.964 6.964 0 01-1.757-.707 5.036 5.036 0 01-1.428-1.225c-.406-.504-.728-1.12-.966-1.848s-.357-1.591-.357-2.59c0-.99.121-1.855.364-2.597s.57-1.372.98-1.89c.41-.518.889-.933 1.435-1.246a6.005 6.005 0 011.729-.665l.35.882a7.086 7.086 0 00-1.512.623 3.928 3.928 0 00-1.183 1.022c-.331.425-.588.952-.77 1.582-.182.63-.273 1.393-.273 2.289 0 .905.11 1.678.329 2.317.22.64.509 1.171.868 1.596.36.425.76.756 1.204.994.443.238.889.404 1.337.497l-.35.966zm4.354-.966a4.965 4.965 0 001.337-.497 4.15 4.15 0 001.204-.994c.36-.425.649-.957.868-1.596.22-.64.329-1.412.329-2.317 0-.896-.091-1.659-.273-2.289-.182-.63-.439-1.157-.77-1.582a3.928 3.928 0 00-1.183-1.022 7.086 7.086 0 00-1.512-.623l.35-.882c.607.13 1.183.352 1.729.665a4.984 4.984 0 011.435 1.246c.41.518.737 1.148.98 1.89s.364 1.608.364 2.597c0 .999-.119 1.862-.357 2.59-.238.728-.56 1.344-.966 1.848a5.036 5.036 0 01-1.428 1.225 6.964 6.964 0 01-1.757.707l-.35-.966zm16.8 0a4.965 4.965 0 001.337-.497 4.15 4.15 0 001.204-.994c.36-.425.649-.957.868-1.596.22-.64.329-1.412.329-2.317 0-.896-.091-1.659-.273-2.289-.182-.63-.439-1.157-.77-1.582a3.928 3.928 0 00-1.183-1.022 7.086 7.086 0 00-1.512-.623l.35-.882c.607.13 1.183.352 1.729.665a4.984 4.984 0 011.435 1.246c.41.518.737 1.148.98 1.89s.364 1.608.364 2.597c0 .999-.119 1.862-.357 2.59-.238.728-.56 1.344-.966 1.848a5.036 5.036 0 01-1.428 1.225 6.964 6.964 0 01-1.757.707l-.35-.966zm9.604-2.772c0-.28.091-.506.273-.679.182-.173.418-.259.707-.259.355 0 .63.124.826.371.196.247.294.595.294 1.043a2.36 2.36 0 01-.637 1.659 2.465 2.465 0 01-.588.462c-.21.117-.404.203-.581.259l-.35-.546c.336-.13.625-.317.868-.56.243-.243.364-.537.364-.882-.13.028-.233.042-.308.042-.27 0-.483-.077-.637-.231-.154-.154-.231-.38-.231-.679zm.126-5.502c0-.299.084-.53.252-.693.168-.163.392-.245.672-.245.299 0 .532.082.7.245.168.163.252.394.252.693 0 .27-.084.495-.252.672-.168.177-.401.266-.7.266-.28 0-.504-.089-.672-.266a.938.938 0 01-.252-.672z"/></g><g id="Group-5" stroke="#C06334" stroke-linecap="square" transform="translate(325 28)"><path id="Line" d="M.709.967h16.789"/><path id="Line-Copy" d="M.709 86.033h16.789"/><path id="Line-Copy-2" d="M18.333.967v85.066"/></g><g id="Group-5-Copy" stroke="#C06334" stroke-linecap="square" transform="translate(480 25)"><path id="Line-Copy-2" d="M2.333 1.7v149.6"/></g><g id="Group-2" transform="translate(351 71)"><path id="Rectangle-1-Copy" fill="#FBF2EC" stroke="#DBAF88" stroke-width="2" d="M1 1h75v27H1z"/><text id="count:-0" fill="#C06334" font-family="PTMono-Bold, PT Mono" font-size="14" font-weight="bold"><tspan x="4" y="19">count: 0</tspan></text></g><g id="Group-5-Copy-2" stroke="#C06334" stroke-linecap="square" transform="translate(207 67)"><path id="Line" d="M.355.422h8.394"/><path id="Line-Copy" d="M.355 37.578h8.394"/><path id="Line-Copy-2" d="M9.167.422v37.156"/></g><g id="Group-2-Copy" transform="translate(223 71)"><path id="Rectangle-1-Copy" fill="#FBF2EC" stroke="#DBAF88" stroke-width="2" d="M1 1h68v27H1z"/><text id="<empty>" fill="#AF6E24" font-family="PTMono-Regular, PT Mono" font-size="12" font-weight="normal"><tspan x="9.8" y="18"><empty></tspan></text></g><text id="null" fill="#AF6E24" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="736" y="91">null</tspan></text><path id="Rectangle-1-Copy-3" fill="#C06334" d="M5 93V80l9 6.5"/><g id="Group" transform="translate(300 68)"><path id="Line" fill="#C06334" fill-rule="nonzero" d="M27 12l14 7-14 7-.001-6H-1v-2h27.999L27 12z"/><text id="outer" fill="#AF6E24" font-family="PTMono-Regular, PT Mono" font-size="12" font-weight="normal"><tspan x="0" y="11">outer</tspan></text></g><g id="Group" transform="translate(437 68)"><path id="Line" fill="#C06334" fill-rule="nonzero" d="M27 12l14 7-14 7-.001-6H-1v-2h27.999L27 12z"/><text id="outer" fill="#AF6E24" font-family="PTMono-Regular, PT Mono" font-size="12" font-weight="normal"><tspan x="0" y="11">outer</tspan></text></g><g id="Group" transform="translate(690 68)"><path id="Line" fill="#C06334" fill-rule="nonzero" d="M27 12l14 7-14 7-.001-6H-1v-2h27.999L27 12z"/><text id="outer" fill="#AF6E24" font-family="PTMono-Regular, PT Mono" font-size="12" font-weight="normal"><tspan x="0" y="11">outer</tspan></text></g><g id="Group-3" transform="translate(493 60)"><path id="Rectangle-1" fill="#FBF2EC" stroke="#DBAF88" stroke-width="2" d="M1 1h187v48H1z"/><text id="makeCounter:-functio" fill="#AF6E24" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="6" y="21">makeCounter: function</tspan> <tspan x="6" y="36">counter: function</tspan></text></g></g></g></svg> \ No newline at end of file diff --git a/1-js/06-advanced-functions/03-closure/closure-makecounter.svg b/1-js/06-advanced-functions/03-closure/closure-makecounter.svg new file mode 100644 index 000000000..2ca06455a --- /dev/null +++ b/1-js/06-advanced-functions/03-closure/closure-makecounter.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" width="711" height="173" viewBox="0 0 711 173"><defs><style>@import url(https://fonts.googleapis.com/css?family=Open+Sans:bold,italic,bolditalic%7CPT+Mono);@font-face{font-family:'PT Mono';font-weight:700;font-style:normal;src:local('PT MonoBold'),url(/font/PTMonoBold.woff2) format('woff2'),url(/font/PTMonoBold.woff) format('woff'),url(/font/PTMonoBold.ttf) format('truetype')}</style></defs><g id="closure" fill="none" fill-rule="evenodd" stroke="none" stroke-width="1"><g id="closure-makecounter.svg"><g id="function-makeCounter" fill-rule="nonzero" transform="translate(26.12 12.032)"><path id="function" fill="#1C85B5" d="M.112 9.968V9.03h1.666V3.906H.112v-.938h1.666v-.392c0-.877.229-1.512.686-1.904.457-.392 1.11-.588 1.96-.588.308 0 .583.019.826.056.243.037.504.112.784.224l-.252.91a2.862 2.862 0 00-.7-.203 4.295 4.295 0 00-.616-.049c-.616 0-1.036.152-1.26.455-.224.303-.336.8-.336 1.491h2.898v.938H2.87V9.03h2.898v.938H.112zm12.25-7h1.988v4.774c0 .457.028.896.084 1.316h.938v.91H13.51l-.042-1.19h-.056a2.938 2.938 0 01-.966.98c-.401.252-.887.378-1.456.378-.43 0-.796-.049-1.099-.147a1.556 1.556 0 01-.749-.511c-.196-.243-.34-.567-.434-.973-.093-.406-.14-.912-.14-1.519v-3.08H7.63v-.938h2.03v3.794c0 .383.016.726.049 1.029.033.303.1.56.203.77.103.21.254.369.455.476.2.107.469.161.805.161.485 0 .908-.159 1.267-.476.36-.317.632-.714.819-1.19V3.906h-.896v-.938zm4.62 2.45a14.05 14.05 0 00-.063-1.176 4.657 4.657 0 00-.049-.364h-.938v-.91h1.876l.126 1.134h.07c.093-.159.217-.315.371-.469a2.91 2.91 0 011.225-.721c.252-.075.518-.112.798-.112.43 0 .81.047 1.141.14.331.093.607.259.826.497.22.238.385.56.497.966.112.406.168.922.168 1.547v4.018h-1.092V6.16c0-.775-.126-1.358-.378-1.75-.252-.392-.71-.588-1.372-.588-.243 0-.478.049-.707.147a2.44 2.44 0 00-.623.385c-.187.159-.35.343-.49.553-.14.21-.243.432-.308.665v4.396h-1.078v-4.55zm13.244-1.372a5.531 5.531 0 00-.693-.189 3.61 3.61 0 00-.735-.077c-.915 0-1.596.215-2.044.644-.448.43-.672 1.11-.672 2.044 0 .41.065.777.196 1.099.13.322.317.595.56.819.243.224.534.397.875.518.34.121.716.182 1.127.182.439 0 .866-.075 1.281-.224.415-.15.763-.345 1.043-.588l.49.812c-.13.112-.294.229-.49.35a4.837 4.837 0 01-1.533.602 4.962 4.962 0 01-1.015.098c-.607 0-1.141-.086-1.603-.259a3.045 3.045 0 01-1.155-.742 3.176 3.176 0 01-.7-1.162 4.525 4.525 0 01-.238-1.505c0-.588.082-1.11.245-1.568.163-.457.399-.84.707-1.148a3.08 3.08 0 011.12-.707 4.187 4.187 0 011.47-.245c.69 0 1.253.06 1.687.182.434.121.8.257 1.099.406l-.014.042v1.946h-1.008v-1.33zm2.688-1.078h1.666V1.582l1.092-.308v1.694h3.738v.938h-3.738V7.21c0 .681.166 1.185.497 1.512.331.327.805.49 1.421.49.42 0 .786-.08 1.099-.238.313-.159.595-.331.847-.518l.364.826a3.938 3.938 0 01-1.169.63 4.182 4.182 0 01-1.393.238 3.41 3.41 0 01-1.057-.161 2.426 2.426 0 01-.875-.497 2.38 2.38 0 01-.602-.861c-.15-.35-.224-.768-.224-1.253V3.906h-1.666v-.938zm9.436 7V9.03h2.436V3.906H42.35v-.938h3.556V9.03h2.38v.938H42.35zM44.408.98c0-.252.084-.469.252-.651a.838.838 0 01.644-.273c.27 0 .497.091.679.273a.889.889 0 01.273.651.806.806 0 01-.273.616.963.963 0 01-.679.252.872.872 0 01-.644-.252.838.838 0 01-.252-.616zm5.67 5.488c0-1.13.294-2.023.882-2.681.588-.658 1.428-.987 2.52-.987.588 0 1.094.096 1.519.287.425.191.777.45 1.057.777.28.327.488.714.623 1.162.135.448.203.929.203 1.442 0 .56-.075 1.066-.224 1.519-.15.453-.369.838-.658 1.155-.29.317-.646.562-1.071.735a3.82 3.82 0 01-1.449.259c-.579 0-1.083-.096-1.512-.287a2.967 2.967 0 01-1.064-.777 3.168 3.168 0 01-.623-1.162 4.963 4.963 0 01-.203-1.442zm1.162 0c0 .327.04.653.119.98.08.327.208.62.385.882.177.261.408.471.693.63.285.159.632.238 1.043.238.747 0 1.309-.231 1.687-.693.378-.462.567-1.141.567-2.037 0-.336-.04-.665-.119-.987a2.608 2.608 0 00-.392-.875 2.066 2.066 0 00-.7-.63c-.285-.159-.632-.238-1.043-.238-.747 0-1.307.229-1.68.686-.373.457-.56 1.139-.56 2.044zm7.742-1.05a14.05 14.05 0 00-.063-1.176 4.657 4.657 0 00-.049-.364h-.938v-.91h1.876l.126 1.134h.07c.093-.159.217-.315.371-.469a2.91 2.91 0 011.225-.721c.252-.075.518-.112.798-.112.43 0 .81.047 1.141.14.331.093.607.259.826.497.22.238.385.56.497.966.112.406.168.922.168 1.547v4.018h-1.092V6.16c0-.775-.126-1.358-.378-1.75-.252-.392-.71-.588-1.372-.588-.243 0-.478.049-.707.147a2.44 2.44 0 00-.623.385c-.187.159-.35.343-.49.553-.14.21-.243.432-.308.665v4.396h-1.078v-4.55z"/><path id="makeCounter" fill="#181717" d="M78.148 9.968V5.306c0-.196-.007-.385-.021-.567a1.9 1.9 0 00-.098-.49.786.786 0 00-.224-.343.57.57 0 00-.385-.126c-.317 0-.586.13-.805.392-.22.261-.385.588-.497.98v4.816h-1.064v-7h.728l.21.854h.056c.093-.14.184-.273.273-.399.089-.126.191-.236.308-.329.117-.093.254-.166.413-.217.159-.051.36-.077.602-.077.14 0 .285.021.434.063.15.042.287.107.413.196.126.089.236.208.329.357.093.15.154.331.182.546.215-.364.455-.649.721-.854.266-.205.632-.308 1.099-.308.308 0 .558.051.749.154.191.103.34.25.448.441.107.191.182.42.224.686.042.266.063.562.063.889v4.998h-1.064v-4.76c0-.196-.01-.38-.028-.553a1.764 1.764 0 00-.105-.455.752.752 0 00-.21-.308.536.536 0 00-.357-.112c-.327 0-.602.13-.826.392-.224.261-.392.635-.504 1.12v4.676h-1.064zm6.244-6.454a4.447 4.447 0 011.358-.504 7.423 7.423 0 011.484-.154c.476 0 .866.075 1.169.224.303.15.541.343.714.581.173.238.29.509.35.812.06.303.091.609.091.917 0 .355-.01.733-.028 1.134-.019.401-.033.803-.042 1.204 0 .467.028.91.084 1.33h.938v.91h-1.862l-.126-1.05h-.07c-.056.084-.14.191-.252.322-.112.13-.259.259-.441.385a2.749 2.749 0 01-1.589.469c-.69 0-1.237-.177-1.638-.532-.401-.355-.602-.84-.602-1.456 0-.476.105-.873.315-1.19.21-.317.511-.56.903-.728.392-.168.866-.266 1.421-.294a9.544 9.544 0 011.869.112c.047-.43.054-.786.021-1.071-.033-.285-.107-.511-.224-.679a.938.938 0 00-.49-.357 2.482 2.482 0 00-.777-.105c-.42 0-.821.058-1.204.175-.383.117-.723.236-1.022.357l-.35-.812zm2.058 5.642c.261 0 .504-.042.728-.126a2.22 2.22 0 00.588-.322 2.133 2.133 0 00.672-.868v-.98a7.92 7.92 0 00-1.344-.126c-.41 0-.765.044-1.064.133-.299.089-.532.226-.7.413-.168.187-.252.43-.252.728 0 .308.105.576.315.805.21.229.562.343 1.057.343zM91.616.168h2.268v5.796h.77l2.758-2.996h1.316l-3.094 3.318 2.548 2.744h.91v.938H97.65l-2.996-3.164h-.77v3.164h-1.078V1.106h-1.19V.168zm15.47 8.918c-.168.15-.366.29-.595.42a4.39 4.39 0 01-.749.336c-.27.093-.553.166-.847.217-.294.051-.59.077-.889.077-.56 0-1.055-.086-1.484-.259a2.858 2.858 0 01-1.078-.742 3.234 3.234 0 01-.658-1.155 4.767 4.767 0 01-.224-1.512c0-.588.082-1.11.245-1.568.163-.457.399-.84.707-1.148a3.08 3.08 0 011.12-.707 4.187 4.187 0 011.47-.245c.392 0 .78.051 1.162.154.383.103.721.296 1.015.581.294.285.52.677.679 1.176.159.5.215 1.146.168 1.939h-5.418c0 .84.226 1.468.679 1.883.453.415 1.057.623 1.813.623.252 0 .502-.03.749-.091.247-.06.483-.133.707-.217a3.72 3.72 0 00.595-.28c.173-.103.306-.196.399-.28l.434.798zm-2.954-5.362c-.308 0-.6.033-.875.098a1.995 1.995 0 00-.728.329c-.21.154-.383.355-.518.602s-.222.553-.259.917h4.354c-.047-.616-.245-1.094-.595-1.435-.35-.34-.81-.511-1.379-.511zm10.36-2.492a2.466 2.466 0 00-.525-.147 4.192 4.192 0 00-.693-.049c-.383 0-.758.07-1.127.21-.369.14-.695.369-.98.686-.285.317-.513.733-.686 1.246-.173.513-.259 1.143-.259 1.89 0 .672.077 1.26.231 1.764.154.504.369.924.644 1.26.275.336.607.588.994.756.387.168.819.252 1.295.252.243 0 .469-.021.679-.063.21-.042.404-.1.581-.175v-1.4h1.036v1.89l.014.028a3.66 3.66 0 01-1.064.539c-.43.145-.952.217-1.568.217-.588 0-1.132-.1-1.631-.301a3.41 3.41 0 01-1.295-.917c-.364-.41-.646-.936-.847-1.575-.2-.64-.301-1.398-.301-2.275 0-.915.112-1.692.336-2.331.224-.64.527-1.162.91-1.568a3.452 3.452 0 011.337-.889 4.697 4.697 0 011.631-.28c.317 0 .593.012.826.035.233.023.439.056.616.098s.334.096.469.161c.135.065.268.14.399.224h.014V2.73h-1.036V1.232zm2.786 5.236c0-1.13.294-2.023.882-2.681.588-.658 1.428-.987 2.52-.987.588 0 1.094.096 1.519.287.425.191.777.45 1.057.777.28.327.488.714.623 1.162.135.448.203.929.203 1.442 0 .56-.075 1.066-.224 1.519-.15.453-.369.838-.658 1.155-.29.317-.646.562-1.071.735a3.82 3.82 0 01-1.449.259c-.579 0-1.083-.096-1.512-.287a2.967 2.967 0 01-1.064-.777 3.168 3.168 0 01-.623-1.162 4.963 4.963 0 01-.203-1.442zm1.162 0c0 .327.04.653.119.98.08.327.208.62.385.882.177.261.408.471.693.63.285.159.632.238 1.043.238.747 0 1.309-.231 1.687-.693.378-.462.567-1.141.567-2.037 0-.336-.04-.665-.119-.987a2.608 2.608 0 00-.392-.875 2.066 2.066 0 00-.7-.63c-.285-.159-.632-.238-1.043-.238-.747 0-1.307.229-1.68.686-.373.457-.56 1.139-.56 2.044zm11.522-3.5h1.988v4.774c0 .457.028.896.084 1.316h.938v.91h-1.862l-.042-1.19h-.056a2.938 2.938 0 01-.966.98c-.401.252-.887.378-1.456.378-.43 0-.796-.049-1.099-.147a1.556 1.556 0 01-.749-.511c-.196-.243-.34-.567-.434-.973-.093-.406-.14-.912-.14-1.519v-3.08h-.938v-.938h2.03v3.794c0 .383.016.726.049 1.029.033.303.1.56.203.77.103.21.254.369.455.476.2.107.469.161.805.161.485 0 .908-.159 1.267-.476.36-.317.632-.714.819-1.19V3.906h-.896v-.938zm4.62 2.45a14.051 14.051 0 00-.063-1.176 4.657 4.657 0 00-.049-.364h-.938v-.91h1.876l.126 1.134h.07c.093-.159.217-.315.371-.469a2.91 2.91 0 011.225-.721c.252-.075.518-.112.798-.112.43 0 .81.047 1.141.14.331.093.607.259.826.497.22.238.385.56.497.966.112.406.168.922.168 1.547v4.018h-1.092V6.16c0-.775-.126-1.358-.378-1.75-.252-.392-.71-.588-1.372-.588-.243 0-.478.049-.707.147a2.44 2.44 0 00-.623.385c-.187.159-.35.343-.49.553-.14.21-.243.432-.308.665v4.396h-1.078v-4.55zm7.532-2.45h1.666V1.582l1.092-.308v1.694h3.738v.938h-3.738V7.21c0 .681.166 1.185.497 1.512.331.327.805.49 1.421.49.42 0 .786-.08 1.099-.238.313-.159.595-.331.847-.518l.364.826a3.938 3.938 0 01-1.169.63 4.182 4.182 0 01-1.393.238 3.41 3.41 0 01-1.057-.161 2.426 2.426 0 01-.875-.497 2.38 2.38 0 01-.602-.861c-.15-.35-.224-.768-.224-1.253V3.906h-1.666v-.938zm15.372 6.118c-.168.15-.366.29-.595.42a4.39 4.39 0 01-.749.336c-.27.093-.553.166-.847.217-.294.051-.59.077-.889.077-.56 0-1.055-.086-1.484-.259a2.858 2.858 0 01-1.078-.742 3.234 3.234 0 01-.658-1.155 4.767 4.767 0 01-.224-1.512c0-.588.082-1.11.245-1.568.163-.457.399-.84.707-1.148a3.08 3.08 0 011.12-.707 4.187 4.187 0 011.47-.245c.392 0 .78.051 1.162.154.383.103.721.296 1.015.581.294.285.52.677.679 1.176.159.5.215 1.146.168 1.939h-5.418c0 .84.226 1.468.679 1.883.453.415 1.057.623 1.813.623.252 0 .502-.03.749-.091.247-.06.483-.133.707-.217a3.72 3.72 0 00.595-.28c.173-.103.306-.196.399-.28l.434.798zm-2.954-5.362c-.308 0-.6.033-.875.098a1.995 1.995 0 00-.728.329c-.21.154-.383.355-.518.602s-.222.553-.259.917h4.354c-.047-.616-.245-1.094-.595-1.435-.35-.34-.81-.511-1.379-.511zm4.872 6.244V9.03h1.89V3.906h-1.89v-.938h2.618l.224.91h.07c.317-.29.672-.537 1.064-.742.392-.205.859-.308 1.4-.308.317 0 .572.06.763.182.191.121.34.299.448.532.107.233.18.516.217.847.037.331.056.707.056 1.127l-.98.014c0-.597-.058-1.036-.175-1.316-.117-.28-.329-.42-.637-.42-.29 0-.55.042-.784.126a2.565 2.565 0 00-.609.308c-.173.121-.32.243-.441.364s-.21.224-.266.308v4.13h2.688v.938h-5.656z"/><path id="(){" fill="#7E7C7B" d="M172.928 12.936a6.964 6.964 0 01-1.757-.707 5.036 5.036 0 01-1.428-1.225c-.406-.504-.728-1.12-.966-1.848s-.357-1.591-.357-2.59c0-.99.121-1.855.364-2.597s.57-1.372.98-1.89c.41-.518.889-.933 1.435-1.246a6.005 6.005 0 011.729-.665l.35.882a7.086 7.086 0 00-1.512.623 3.928 3.928 0 00-1.183 1.022c-.331.425-.588.952-.77 1.582-.182.63-.273 1.393-.273 2.289 0 .905.11 1.678.329 2.317.22.64.509 1.171.868 1.596.36.425.76.756 1.204.994.443.238.889.404 1.337.497l-.35.966zm4.354-.966a4.965 4.965 0 001.337-.497 4.15 4.15 0 001.204-.994c.36-.425.649-.957.868-1.596.22-.64.329-1.412.329-2.317 0-.896-.091-1.659-.273-2.289-.182-.63-.439-1.157-.77-1.582a3.928 3.928 0 00-1.183-1.022 7.086 7.086 0 00-1.512-.623l.35-.882c.607.13 1.183.352 1.729.665a4.984 4.984 0 011.435 1.246c.41.518.737 1.148.98 1.89s.364 1.608.364 2.597c0 .999-.119 1.862-.357 2.59-.238.728-.56 1.344-.966 1.848a5.036 5.036 0 01-1.428 1.225 6.964 6.964 0 01-1.757.707l-.35-.966zm17.878-2.45c0-.401-.068-.749-.203-1.043a2.44 2.44 0 00-.504-.735c-.2-.196-.415-.34-.644-.434a1.641 1.641 0 00-.609-.14v-.98c.177 0 .38-.04.609-.119.229-.08.443-.21.644-.392.2-.182.369-.418.504-.707.135-.29.203-.649.203-1.078V2.464c0-.336.054-.644.161-.924a2.22 2.22 0 01.448-.728c.191-.205.42-.366.686-.483.266-.117.558-.175.875-.175h2.03v.98h-1.54c-.588 0-.996.14-1.225.42-.229.28-.343.695-.343 1.246v1.358c0 .383-.07.723-.21 1.022a2.7 2.7 0 01-1.106 1.225c-.205.117-.373.184-.504.203v.084c.121.019.285.091.49.217.205.126.406.299.602.518.196.22.366.478.511.777.145.299.217.63.217.994v1.344c0 .57.121.99.364 1.26s.649.406 1.218.406h1.526v.98h-2.03c-.653 0-1.178-.194-1.575-.581-.397-.387-.595-.959-.595-1.715V9.52z"/><path id="letcount=0;" fill="#C06334" d="M17.346 17.168h2.324v7.448c0 .57.096.97.287 1.204.191.233.474.35.847.35.261 0 .511-.047.749-.14.238-.093.502-.252.791-.476l.504.77c-.15.13-.313.247-.49.35a3.638 3.638 0 01-1.106.42 2.963 2.963 0 01-1.442-.077 1.579 1.579 0 01-.679-.427 1.897 1.897 0 01-.413-.777c-.093-.322-.14-.721-.14-1.197v-6.51h-1.232v-.938zm14.14 8.918c-.168.15-.366.29-.595.42a4.39 4.39 0 01-.749.336c-.27.093-.553.166-.847.217-.294.051-.59.077-.889.077-.56 0-1.055-.086-1.484-.259a2.858 2.858 0 01-1.078-.742 3.234 3.234 0 01-.658-1.155 4.767 4.767 0 01-.224-1.512c0-.588.082-1.11.245-1.568.163-.457.399-.84.707-1.148a3.08 3.08 0 011.12-.707 4.187 4.187 0 011.47-.245c.392 0 .78.051 1.162.154.383.103.721.296 1.015.581.294.285.52.677.679 1.176.159.5.215 1.146.168 1.939H26.11c0 .84.226 1.468.679 1.883.453.415 1.057.623 1.813.623.252 0 .502-.03.749-.091.247-.06.483-.133.707-.217a3.72 3.72 0 00.595-.28c.173-.103.306-.196.399-.28l.434.798zm-2.954-5.362c-.308 0-.6.033-.875.098a1.995 1.995 0 00-.728.329c-.21.154-.383.355-.518.602s-.222.553-.259.917h4.354c-.047-.616-.245-1.094-.595-1.435-.35-.34-.81-.511-1.379-.511zm4.382-.756h1.666v-1.386l1.092-.308v1.694h3.738v.938h-3.738v3.304c0 .681.166 1.185.497 1.512.331.327.805.49 1.421.49.42 0 .786-.08 1.099-.238.313-.159.595-.331.847-.518l.364.826a3.938 3.938 0 01-1.169.63 4.182 4.182 0 01-1.393.238 3.41 3.41 0 01-1.057-.161 2.426 2.426 0 01-.875-.497 2.38 2.38 0 01-.602-.861c-.15-.35-.224-.768-.224-1.253v-3.472h-1.666v-.938zm22.512 1.078a5.531 5.531 0 00-.693-.189 3.61 3.61 0 00-.735-.077c-.915 0-1.596.215-2.044.644-.448.43-.672 1.11-.672 2.044 0 .41.065.777.196 1.099.13.322.317.595.56.819.243.224.534.397.875.518.34.121.716.182 1.127.182.439 0 .866-.075 1.281-.224.415-.15.763-.345 1.043-.588l.49.812c-.13.112-.294.229-.49.35a4.837 4.837 0 01-1.533.602 4.962 4.962 0 01-1.015.098c-.607 0-1.141-.086-1.603-.259a3.045 3.045 0 01-1.155-.742 3.176 3.176 0 01-.7-1.162 4.525 4.525 0 01-.238-1.505c0-.588.082-1.11.245-1.568.163-.457.399-.84.707-1.148a3.08 3.08 0 011.12-.707 4.187 4.187 0 011.47-.245c.69 0 1.253.06 1.687.182.434.121.8.257 1.099.406l-.014.042v1.946h-1.008v-1.33zm3.052 2.422c0-1.13.294-2.023.882-2.681.588-.658 1.428-.987 2.52-.987.588 0 1.094.096 1.519.287.425.191.777.45 1.057.777.28.327.488.714.623 1.162.135.448.203.929.203 1.442 0 .56-.075 1.066-.224 1.519-.15.453-.369.838-.658 1.155-.29.317-.646.562-1.071.735a3.82 3.82 0 01-1.449.259c-.579 0-1.083-.096-1.512-.287a2.967 2.967 0 01-1.064-.777 3.168 3.168 0 01-.623-1.162 4.963 4.963 0 01-.203-1.442zm1.162 0c0 .327.04.653.119.98.08.327.208.62.385.882.177.261.408.471.693.63.285.159.632.238 1.043.238.747 0 1.309-.231 1.687-.693.378-.462.567-1.141.567-2.037 0-.336-.04-.665-.119-.987a2.608 2.608 0 00-.392-.875 2.066 2.066 0 00-.7-.63c-.285-.159-.632-.238-1.043-.238-.747 0-1.307.229-1.68.686-.373.457-.56 1.139-.56 2.044zm11.522-3.5h1.988v4.774c0 .457.028.896.084 1.316h.938v.91H72.31l-.042-1.19h-.056a2.938 2.938 0 01-.966.98c-.401.252-.887.378-1.456.378-.43 0-.796-.049-1.099-.147a1.556 1.556 0 01-.749-.511c-.196-.243-.34-.567-.434-.973-.093-.406-.14-.912-.14-1.519v-3.08h-.938v-.938h2.03v3.794c0 .383.016.726.049 1.029.033.303.1.56.203.77.103.21.254.369.455.476.2.107.469.161.805.161.485 0 .908-.159 1.267-.476.36-.317.632-.714.819-1.19v-3.626h-.896v-.938zm4.62 2.45a14.05 14.05 0 00-.063-1.176 4.657 4.657 0 00-.049-.364h-.938v-.91h1.876l.126 1.134h.07c.093-.159.217-.315.371-.469a2.91 2.91 0 011.225-.721c.252-.075.518-.112.798-.112.43 0 .81.047 1.141.14.331.093.607.259.826.497.22.238.385.56.497.966.112.406.168.922.168 1.547v4.018h-1.092V23.16c0-.775-.126-1.358-.378-1.75-.252-.392-.71-.588-1.372-.588-.243 0-.478.049-.707.147a2.44 2.44 0 00-.623.385c-.187.159-.35.343-.49.553-.14.21-.243.432-.308.665v4.396h-1.078v-4.55zm7.532-2.45h1.666v-1.386l1.092-.308v1.694h3.738v.938h-3.738v3.304c0 .681.166 1.185.497 1.512.331.327.805.49 1.421.49.42 0 .786-.08 1.099-.238.313-.159.595-.331.847-.518l.364.826a3.938 3.938 0 01-1.169.63 4.182 4.182 0 01-1.393.238 3.41 3.41 0 01-1.057-.161 2.426 2.426 0 01-.875-.497 2.38 2.38 0 01-.602-.861c-.15-.35-.224-.768-.224-1.253v-3.472h-1.666v-.938zm17.318.602h6.496v1.008h-6.496V20.57zm0 2.296h6.496v1.008h-6.496v-1.008zm16.618-.798c0-.793.07-1.505.21-2.135.14-.63.35-1.162.63-1.596.28-.434.635-.765 1.064-.994.43-.229.938-.343 1.526-.343.625 0 1.155.112 1.589.336.434.224.786.55 1.057.98.27.43.467.959.588 1.589.121.63.182 1.351.182 2.163a9.88 9.88 0 01-.21 2.135c-.14.63-.35 1.162-.63 1.596-.28.434-.635.765-1.064.994-.43.229-.938.343-1.526.343-.616 0-1.141-.124-1.575-.371a2.956 2.956 0 01-1.064-1.043c-.275-.448-.474-.982-.595-1.603a10.713 10.713 0 01-.182-2.051zm5.698 0c0-.495-.028-.966-.084-1.414l-4.158 3.794c.159.532.397.957.714 1.274.317.317.733.476 1.246.476.821 0 1.407-.34 1.757-1.022.35-.681.525-1.717.525-3.108zm-4.536 0c0 .233.007.457.021.672.014.215.03.425.049.63l4.172-3.78c-.159-.504-.394-.905-.707-1.204-.313-.299-.735-.448-1.267-.448-.83 0-1.416.343-1.757 1.029-.34.686-.511 1.72-.511 3.101zm9.674 4.13c0-.28.091-.506.273-.679.182-.173.418-.259.707-.259.355 0 .63.124.826.371.196.247.294.595.294 1.043a2.36 2.36 0 01-.637 1.659 2.465 2.465 0 01-.588.462c-.21.117-.404.203-.581.259l-.35-.546c.336-.13.625-.317.868-.56.243-.243.364-.537.364-.882-.13.028-.233.042-.308.042-.27 0-.483-.077-.637-.231-.154-.154-.231-.38-.231-.679zm.126-5.502c0-.299.084-.53.252-.693.168-.163.392-.245.672-.245.299 0 .532.082.7.245.168.163.252.394.252.693 0 .27-.084.495-.252.672-.168.177-.401.266-.7.266-.28 0-.504-.089-.672-.266a.938.938 0 01-.252-.672z"/><path id="return" fill="#1C85B5" d="M16.604 60.968v-.938h1.89v-5.124h-1.89v-.938h2.618l.224.91h.07c.317-.29.672-.537 1.064-.742.392-.205.859-.308 1.4-.308.317 0 .572.06.763.182.191.121.34.299.448.532.107.233.18.516.217.847.037.331.056.707.056 1.127l-.98.014c0-.597-.058-1.036-.175-1.316-.117-.28-.329-.42-.637-.42-.29 0-.55.042-.784.126a2.565 2.565 0 00-.609.308c-.173.121-.32.243-.441.364s-.21.224-.266.308v4.13h2.688v.938h-5.656zm14.882-.882c-.168.15-.366.29-.595.42a4.39 4.39 0 01-.749.336c-.27.093-.553.166-.847.217-.294.051-.59.077-.889.077-.56 0-1.055-.086-1.484-.259a2.858 2.858 0 01-1.078-.742 3.234 3.234 0 01-.658-1.155 4.767 4.767 0 01-.224-1.512c0-.588.082-1.11.245-1.568.163-.457.399-.84.707-1.148a3.08 3.08 0 011.12-.707 4.187 4.187 0 011.47-.245c.392 0 .78.051 1.162.154.383.103.721.296 1.015.581.294.285.52.677.679 1.176.159.5.215 1.146.168 1.939H26.11c0 .84.226 1.468.679 1.883.453.415 1.057.623 1.813.623.252 0 .502-.03.749-.091.247-.06.483-.133.707-.217a3.72 3.72 0 00.595-.28c.173-.103.306-.196.399-.28l.434.798zm-2.954-5.362c-.308 0-.6.033-.875.098a1.995 1.995 0 00-.728.329c-.21.154-.383.355-.518.602s-.222.553-.259.917h4.354c-.047-.616-.245-1.094-.595-1.435-.35-.34-.81-.511-1.379-.511zm4.382-.756h1.666v-1.386l1.092-.308v1.694h3.738v.938h-3.738v3.304c0 .681.166 1.185.497 1.512.331.327.805.49 1.421.49.42 0 .786-.08 1.099-.238.313-.159.595-.331.847-.518l.364.826a3.938 3.938 0 01-1.169.63 4.182 4.182 0 01-1.393.238 3.41 3.41 0 01-1.057-.161 2.426 2.426 0 01-.875-.497 2.38 2.38 0 01-.602-.861c-.15-.35-.224-.768-.224-1.253v-3.472h-1.666v-.938zm13.048 0h1.988v4.774c0 .457.028.896.084 1.316h.938v.91H47.11l-.042-1.19h-.056a2.938 2.938 0 01-.966.98c-.401.252-.887.378-1.456.378-.43 0-.796-.049-1.099-.147a1.556 1.556 0 01-.749-.511c-.196-.243-.34-.567-.434-.973-.093-.406-.14-.912-.14-1.519v-3.08h-.938v-.938h2.03v3.794c0 .383.016.726.049 1.029.033.303.1.56.203.77.103.21.254.369.455.476.2.107.469.161.805.161.485 0 .908-.159 1.267-.476.36-.317.632-.714.819-1.19v-3.626h-.896v-.938zm4.242 7v-.938h1.89v-5.124h-1.89v-.938h2.618l.224.91h.07c.317-.29.672-.537 1.064-.742.392-.205.859-.308 1.4-.308.317 0 .572.06.763.182.191.121.34.299.448.532.107.233.18.516.217.847.037.331.056.707.056 1.127l-.98.014c0-.597-.058-1.036-.175-1.316-.117-.28-.329-.42-.637-.42-.29 0-.55.042-.784.126a2.565 2.565 0 00-.609.308c-.173.121-.32.243-.441.364s-.21.224-.266.308v4.13h2.688v.938h-5.656zm8.778-4.55a14.05 14.05 0 00-.063-1.176 4.657 4.657 0 00-.049-.364h-.938v-.91h1.876l.126 1.134h.07c.093-.159.217-.315.371-.469a2.91 2.91 0 011.225-.721c.252-.075.518-.112.798-.112.43 0 .81.047 1.141.14.331.093.607.259.826.497.22.238.385.56.497.966.112.406.168.922.168 1.547v4.018h-1.092V57.16c0-.775-.126-1.358-.378-1.75-.252-.392-.71-.588-1.372-.588-.243 0-.478.049-.707.147a2.44 2.44 0 00-.623.385c-.187.159-.35.343-.49.553-.14.21-.243.432-.308.665v4.396h-1.078v-4.55z"/><path id="function(){returncount++;};" fill="#7E7C7B" d="M75.712 60.968v-.938h1.666v-5.124h-1.666v-.938h1.666v-.392c0-.877.229-1.512.686-1.904.457-.392 1.11-.588 1.96-.588.308 0 .583.019.826.056.243.037.504.112.784.224l-.252.91a2.862 2.862 0 00-.7-.203 4.295 4.295 0 00-.616-.049c-.616 0-1.036.152-1.26.455-.224.303-.336.8-.336 1.491h2.898v.938H78.47v5.124h2.898v.938h-5.656zm12.25-7h1.988v4.774c0 .457.028.896.084 1.316h.938v.91H89.11l-.042-1.19h-.056a2.938 2.938 0 01-.966.98c-.401.252-.887.378-1.456.378-.43 0-.796-.049-1.099-.147a1.556 1.556 0 01-.749-.511c-.196-.243-.34-.567-.434-.973-.093-.406-.14-.912-.14-1.519v-3.08h-.938v-.938h2.03v3.794c0 .383.016.726.049 1.029.033.303.1.56.203.77.103.21.254.369.455.476.2.107.469.161.805.161.485 0 .908-.159 1.267-.476.36-.317.632-.714.819-1.19v-3.626h-.896v-.938zm4.62 2.45a14.05 14.05 0 00-.063-1.176 4.657 4.657 0 00-.049-.364h-.938v-.91h1.876l.126 1.134h.07c.093-.159.217-.315.371-.469a2.91 2.91 0 011.225-.721c.252-.075.518-.112.798-.112.43 0 .81.047 1.141.14.331.093.607.259.826.497.22.238.385.56.497.966.112.406.168.922.168 1.547v4.018h-1.092V57.16c0-.775-.126-1.358-.378-1.75-.252-.392-.71-.588-1.372-.588-.243 0-.478.049-.707.147a2.44 2.44 0 00-.623.385c-.187.159-.35.343-.49.553-.14.21-.243.432-.308.665v4.396h-1.078v-4.55zm13.244-1.372a5.531 5.531 0 00-.693-.189 3.61 3.61 0 00-.735-.077c-.915 0-1.596.215-2.044.644-.448.43-.672 1.11-.672 2.044 0 .41.065.777.196 1.099.13.322.317.595.56.819.243.224.534.397.875.518.34.121.716.182 1.127.182.439 0 .866-.075 1.281-.224.415-.15.763-.345 1.043-.588l.49.812c-.13.112-.294.229-.49.35a4.837 4.837 0 01-1.533.602 4.962 4.962 0 01-1.015.098c-.607 0-1.141-.086-1.603-.259a3.045 3.045 0 01-1.155-.742 3.176 3.176 0 01-.7-1.162 4.525 4.525 0 01-.238-1.505c0-.588.082-1.11.245-1.568.163-.457.399-.84.707-1.148a3.08 3.08 0 011.12-.707 4.187 4.187 0 011.47-.245c.69 0 1.253.06 1.687.182.434.121.8.257 1.099.406l-.014.042v1.946h-1.008v-1.33zm2.688-1.078h1.666v-1.386l1.092-.308v1.694h3.738v.938h-3.738v3.304c0 .681.166 1.185.497 1.512.331.327.805.49 1.421.49.42 0 .786-.08 1.099-.238.313-.159.595-.331.847-.518l.364.826a3.938 3.938 0 01-1.169.63 4.182 4.182 0 01-1.393.238 3.41 3.41 0 01-1.057-.161 2.426 2.426 0 01-.875-.497 2.38 2.38 0 01-.602-.861c-.15-.35-.224-.768-.224-1.253v-3.472h-1.666v-.938zm9.436 7v-.938h2.436v-5.124h-2.436v-.938h3.556v6.062h2.38v.938h-5.936zm2.058-8.988c0-.252.084-.469.252-.651a.838.838 0 01.644-.273c.27 0 .497.091.679.273a.889.889 0 01.273.651.806.806 0 01-.273.616.963.963 0 01-.679.252.872.872 0 01-.644-.252.838.838 0 01-.252-.616zm5.67 5.488c0-1.13.294-2.023.882-2.681.588-.658 1.428-.987 2.52-.987.588 0 1.094.096 1.519.287.425.191.777.45 1.057.777.28.327.488.714.623 1.162.135.448.203.929.203 1.442 0 .56-.075 1.066-.224 1.519-.15.453-.369.838-.658 1.155-.29.317-.646.562-1.071.735a3.82 3.82 0 01-1.449.259c-.579 0-1.083-.096-1.512-.287a2.967 2.967 0 01-1.064-.777 3.168 3.168 0 01-.623-1.162 4.963 4.963 0 01-.203-1.442zm1.162 0c0 .327.04.653.119.98.08.327.208.62.385.882.177.261.408.471.693.63.285.159.632.238 1.043.238.747 0 1.309-.231 1.687-.693.378-.462.567-1.141.567-2.037 0-.336-.04-.665-.119-.987a2.608 2.608 0 00-.392-.875 2.066 2.066 0 00-.7-.63c-.285-.159-.632-.238-1.043-.238-.747 0-1.307.229-1.68.686-.373.457-.56 1.139-.56 2.044zm7.742-1.05a14.051 14.051 0 00-.063-1.176 4.657 4.657 0 00-.049-.364h-.938v-.91h1.876l.126 1.134h.07c.093-.159.217-.315.371-.469a2.91 2.91 0 011.225-.721c.252-.075.518-.112.798-.112.43 0 .81.047 1.141.14.331.093.607.259.826.497.22.238.385.56.497.966.112.406.168.922.168 1.547v4.018h-1.092V57.16c0-.775-.126-1.358-.378-1.75-.252-.392-.71-.588-1.372-.588-.243 0-.478.049-.707.147a2.44 2.44 0 00-.623.385c-.187.159-.35.343-.49.553-.14.21-.243.432-.308.665v4.396h-1.078v-4.55zm13.146 7.518a6.964 6.964 0 01-1.757-.707 5.036 5.036 0 01-1.428-1.225c-.406-.504-.728-1.12-.966-1.848s-.357-1.591-.357-2.59c0-.99.121-1.855.364-2.597s.57-1.372.98-1.89c.41-.518.889-.933 1.435-1.246a6.005 6.005 0 011.729-.665l.35.882a7.086 7.086 0 00-1.512.623 3.928 3.928 0 00-1.183 1.022c-.331.425-.588.952-.77 1.582-.182.63-.273 1.393-.273 2.289 0 .905.11 1.678.329 2.317.22.64.509 1.171.868 1.596.36.425.76.756 1.204.994.443.238.889.404 1.337.497l-.35.966zm4.354-.966a4.965 4.965 0 001.337-.497 4.15 4.15 0 001.204-.994c.36-.425.649-.957.868-1.596.22-.64.329-1.412.329-2.317 0-.896-.091-1.659-.273-2.289-.182-.63-.439-1.157-.77-1.582a3.928 3.928 0 00-1.183-1.022 7.086 7.086 0 00-1.512-.623l.35-.882c.607.13 1.183.352 1.729.665a4.984 4.984 0 011.435 1.246c.41.518.737 1.148.98 1.89s.364 1.608.364 2.597c0 .999-.119 1.862-.357 2.59-.238.728-.56 1.344-.966 1.848a5.036 5.036 0 01-1.428 1.225 6.964 6.964 0 01-1.757.707l-.35-.966zm17.878-2.45c0-.401-.068-.749-.203-1.043a2.44 2.44 0 00-.504-.735c-.2-.196-.415-.34-.644-.434a1.641 1.641 0 00-.609-.14v-.98c.177 0 .38-.04.609-.119.229-.08.443-.21.644-.392.2-.182.369-.418.504-.707.135-.29.203-.649.203-1.078v-1.428c0-.336.054-.644.161-.924a2.22 2.22 0 01.448-.728c.191-.205.42-.366.686-.483.266-.117.558-.175.875-.175h2.03v.98h-1.54c-.588 0-.996.14-1.225.42-.229.28-.343.695-.343 1.246v1.358c0 .383-.07.723-.21 1.022a2.7 2.7 0 01-1.106 1.225c-.205.117-.373.184-.504.203v.084c.121.019.285.091.49.217.205.126.406.299.602.518.196.22.366.478.511.777.145.299.217.63.217.994v1.344c0 .57.121.99.364 1.26s.649.406 1.218.406h1.526v.98h-2.03c-.653 0-1.178-.194-1.575-.581-.397-.387-.595-.959-.595-1.715V60.52zM33.404 77.968v-.938h1.89v-5.124h-1.89v-.938h2.618l.224.91h.07c.317-.29.672-.537 1.064-.742.392-.205.859-.308 1.4-.308.317 0 .572.06.763.182.191.121.34.299.448.532.107.233.18.516.217.847.037.331.056.707.056 1.127l-.98.014c0-.597-.058-1.036-.175-1.316-.117-.28-.329-.42-.637-.42-.29 0-.55.042-.784.126a2.565 2.565 0 00-.609.308c-.173.121-.32.243-.441.364s-.21.224-.266.308v4.13h2.688v.938h-5.656zm14.882-.882c-.168.15-.366.29-.595.42a4.39 4.39 0 01-.749.336c-.27.093-.553.166-.847.217-.294.051-.59.077-.889.077-.56 0-1.055-.086-1.484-.259a2.858 2.858 0 01-1.078-.742 3.234 3.234 0 01-.658-1.155 4.767 4.767 0 01-.224-1.512c0-.588.082-1.11.245-1.568.163-.457.399-.84.707-1.148a3.08 3.08 0 011.12-.707 4.187 4.187 0 011.47-.245c.392 0 .78.051 1.162.154.383.103.721.296 1.015.581.294.285.52.677.679 1.176.159.5.215 1.146.168 1.939H42.91c0 .84.226 1.468.679 1.883.453.415 1.057.623 1.813.623.252 0 .502-.03.749-.091.247-.06.483-.133.707-.217a3.72 3.72 0 00.595-.28c.173-.103.306-.196.399-.28l.434.798zm-2.954-5.362c-.308 0-.6.033-.875.098a1.995 1.995 0 00-.728.329c-.21.154-.383.355-.518.602s-.222.553-.259.917h4.354c-.047-.616-.245-1.094-.595-1.435-.35-.34-.81-.511-1.379-.511zm4.382-.756h1.666v-1.386l1.092-.308v1.694h3.738v.938h-3.738v3.304c0 .681.166 1.185.497 1.512.331.327.805.49 1.421.49.42 0 .786-.08 1.099-.238.313-.159.595-.331.847-.518l.364.826a3.938 3.938 0 01-1.169.63 4.182 4.182 0 01-1.393.238 3.41 3.41 0 01-1.057-.161 2.426 2.426 0 01-.875-.497 2.38 2.38 0 01-.602-.861c-.15-.35-.224-.768-.224-1.253v-3.472h-1.666v-.938zm13.048 0h1.988v4.774c0 .457.028.896.084 1.316h.938v.91H63.91l-.042-1.19h-.056a2.938 2.938 0 01-.966.98c-.401.252-.887.378-1.456.378-.43 0-.796-.049-1.099-.147a1.556 1.556 0 01-.749-.511c-.196-.243-.34-.567-.434-.973-.093-.406-.14-.912-.14-1.519v-3.08h-.938v-.938h2.03v3.794c0 .383.016.726.049 1.029.033.303.1.56.203.77.103.21.254.369.455.476.2.107.469.161.805.161.485 0 .908-.159 1.267-.476.36-.317.632-.714.819-1.19v-3.626h-.896v-.938zm4.242 7v-.938h1.89v-5.124h-1.89v-.938h2.618l.224.91h.07c.317-.29.672-.537 1.064-.742.392-.205.859-.308 1.4-.308.317 0 .572.06.763.182.191.121.34.299.448.532.107.233.18.516.217.847.037.331.056.707.056 1.127l-.98.014c0-.597-.058-1.036-.175-1.316-.117-.28-.329-.42-.637-.42-.29 0-.55.042-.784.126a2.565 2.565 0 00-.609.308c-.173.121-.32.243-.441.364s-.21.224-.266.308v4.13h2.688v.938h-5.656zm8.778-4.55a14.05 14.05 0 00-.063-1.176 4.657 4.657 0 00-.049-.364h-.938v-.91h1.876l.126 1.134h.07c.093-.159.217-.315.371-.469a2.91 2.91 0 011.225-.721c.252-.075.518-.112.798-.112.43 0 .81.047 1.141.14.331.093.607.259.826.497.22.238.385.56.497.966.112.406.168.922.168 1.547v4.018h-1.092V74.16c0-.775-.126-1.358-.378-1.75-.252-.392-.71-.588-1.372-.588-.243 0-.478.049-.707.147a2.44 2.44 0 00-.623.385c-.187.159-.35.343-.49.553-.14.21-.243.432-.308.665v4.396h-1.078v-4.55zm21.644-1.372a5.531 5.531 0 00-.693-.189 3.61 3.61 0 00-.735-.077c-.915 0-1.596.215-2.044.644-.448.43-.672 1.11-.672 2.044 0 .41.065.777.196 1.099.13.322.317.595.56.819.243.224.534.397.875.518.34.121.716.182 1.127.182.439 0 .866-.075 1.281-.224.415-.15.763-.345 1.043-.588l.49.812c-.13.112-.294.229-.49.35a4.837 4.837 0 01-1.533.602 4.962 4.962 0 01-1.015.098c-.607 0-1.141-.086-1.603-.259a3.045 3.045 0 01-1.155-.742 3.176 3.176 0 01-.7-1.162 4.525 4.525 0 01-.238-1.505c0-.588.082-1.11.245-1.568.163-.457.399-.84.707-1.148a3.08 3.08 0 011.12-.707 4.187 4.187 0 011.47-.245c.69 0 1.253.06 1.687.182.434.121.8.257 1.099.406l-.014.042v1.946h-1.008v-1.33zm3.052 2.422c0-1.13.294-2.023.882-2.681.588-.658 1.428-.987 2.52-.987.588 0 1.094.096 1.519.287.425.191.777.45 1.057.777.28.327.488.714.623 1.162.135.448.203.929.203 1.442 0 .56-.075 1.066-.224 1.519-.15.453-.369.838-.658 1.155-.29.317-.646.562-1.071.735a3.82 3.82 0 01-1.449.259c-.579 0-1.083-.096-1.512-.287a2.967 2.967 0 01-1.064-.777 3.168 3.168 0 01-.623-1.162 4.963 4.963 0 01-.203-1.442zm1.162 0c0 .327.04.653.119.98.08.327.208.62.385.882.177.261.408.471.693.63.285.159.632.238 1.043.238.747 0 1.309-.231 1.687-.693.378-.462.567-1.141.567-2.037 0-.336-.04-.665-.119-.987a2.608 2.608 0 00-.392-.875 2.066 2.066 0 00-.7-.63c-.285-.159-.632-.238-1.043-.238-.747 0-1.307.229-1.68.686-.373.457-.56 1.139-.56 2.044zm11.522-3.5h1.988v4.774c0 .457.028.896.084 1.316h.938v.91h-1.862l-.042-1.19h-.056a2.938 2.938 0 01-.966.98c-.401.252-.887.378-1.456.378-.43 0-.796-.049-1.099-.147a1.556 1.556 0 01-.749-.511c-.196-.243-.34-.567-.434-.973-.093-.406-.14-.912-.14-1.519v-3.08h-.938v-.938h2.03v3.794c0 .383.016.726.049 1.029.033.303.1.56.203.77.103.21.254.369.455.476.2.107.469.161.805.161.485 0 .908-.159 1.267-.476.36-.317.632-.714.819-1.19v-3.626h-.896v-.938zm4.62 2.45a14.051 14.051 0 00-.063-1.176 4.657 4.657 0 00-.049-.364h-.938v-.91h1.876l.126 1.134h.07c.093-.159.217-.315.371-.469a2.91 2.91 0 011.225-.721c.252-.075.518-.112.798-.112.43 0 .81.047 1.141.14.331.093.607.259.826.497.22.238.385.56.497.966.112.406.168.922.168 1.547v4.018h-1.092V74.16c0-.775-.126-1.358-.378-1.75-.252-.392-.71-.588-1.372-.588-.243 0-.478.049-.707.147a2.44 2.44 0 00-.623.385c-.187.159-.35.343-.49.553-.14.21-.243.432-.308.665v4.396h-1.078v-4.55zm7.532-2.45h1.666v-1.386l1.092-.308v1.694h3.738v.938h-3.738v3.304c0 .681.166 1.185.497 1.512.331.327.805.49 1.421.49.42 0 .786-.08 1.099-.238.313-.159.595-.331.847-.518l.364.826a3.938 3.938 0 01-1.169.63 4.182 4.182 0 01-1.393.238 3.41 3.41 0 01-1.057-.161 2.426 2.426 0 01-.875-.497 2.38 2.38 0 01-.602-.861c-.15-.35-.224-.768-.224-1.253v-3.472h-1.666v-.938zm8.638 1.764h3.024v-3.094h1.008v3.094h3.024v1.008h-3.024v3.094h-1.008V73.74h-3.024v-1.008zm8.4 0h3.024v-3.094h1.008v3.094h3.024v1.008h-3.024v3.094h-1.008V73.74h-3.024v-1.008zm10.934 4.466c0-.28.091-.506.273-.679.182-.173.418-.259.707-.259.355 0 .63.124.826.371.196.247.294.595.294 1.043a2.36 2.36 0 01-.637 1.659 2.465 2.465 0 01-.588.462c-.21.117-.404.203-.581.259l-.35-.546c.336-.13.625-.317.868-.56.243-.243.364-.537.364-.882-.13.028-.233.042-.308.042-.27 0-.483-.077-.637-.231-.154-.154-.231-.38-.231-.679zm.126-5.502c0-.299.084-.53.252-.693.168-.163.392-.245.672-.245.299 0 .532.082.7.245.168.163.252.394.252.693 0 .27-.084.495-.252.672-.168.177-.401.266-.7.266-.28 0-.504-.089-.672-.266a.938.938 0 01-.252-.672zM21 95.892c0 .756-.198 1.328-.595 1.715-.397.387-.922.581-1.575.581H16.8v-.98h1.526c.57 0 .975-.135 1.218-.406.243-.27.364-.69.364-1.26v-1.344c0-.364.07-.695.21-.994.14-.299.308-.558.504-.777.196-.22.397-.392.602-.518.205-.126.373-.198.504-.217v-.084c-.13-.019-.299-.086-.504-.203a2.7 2.7 0 01-1.106-1.225c-.14-.299-.21-.64-.21-1.022V87.8c0-.55-.114-.966-.343-1.246-.229-.28-.637-.42-1.225-.42H16.8v-.98h2.03c.317 0 .609.058.875.175.266.117.495.278.686.483.191.205.34.448.448.728.107.28.161.588.161.924v1.428c0 .43.068.789.203 1.078.135.29.303.525.504.707.2.182.415.313.644.392.229.08.432.119.609.119v.98c-.177 0-.38.047-.609.14a2.011 2.011 0 00-.644.434 2.44 2.44 0 00-.504.735c-.135.294-.203.642-.203 1.043v1.372zm6.286-1.694c0-.28.091-.506.273-.679.182-.173.418-.259.707-.259.355 0 .63.124.826.371.196.247.294.595.294 1.043a2.36 2.36 0 01-.637 1.659 2.465 2.465 0 01-.588.462c-.21.117-.404.203-.581.259l-.35-.546c.336-.13.625-.317.868-.56.243-.243.364-.537.364-.882-.13.028-.233.042-.308.042-.27 0-.483-.077-.637-.231-.154-.154-.231-.38-.231-.679zm.126-5.502c0-.299.084-.53.252-.693.168-.163.392-.245.672-.245.299 0 .532.082.7.245.168.163.252.394.252.693 0 .27-.084.495-.252.672-.168.177-.401.266-.7.266-.28 0-.504-.089-.672-.266a.938.938 0 01-.252-.672z"/><path id="}" fill="#7E7C7B" d="M4.2 112.892c0 .756-.198 1.328-.595 1.715-.397.387-.922.581-1.575.581H0v-.98h1.526c.57 0 .975-.135 1.218-.406.243-.27.364-.69.364-1.26v-1.344c0-.364.07-.695.21-.994.14-.299.308-.558.504-.777.196-.22.397-.392.602-.518.205-.126.373-.198.504-.217v-.084c-.13-.019-.299-.086-.504-.203a2.7 2.7 0 01-1.106-1.225c-.14-.299-.21-.64-.21-1.022V104.8c0-.55-.114-.966-.343-1.246-.229-.28-.637-.42-1.225-.42H0v-.98h2.03c.317 0 .609.058.875.175.266.117.495.278.686.483.191.205.34.448.448.728.107.28.161.588.161.924v1.428c0 .43.068.789.203 1.078.135.29.303.525.504.707.2.182.415.313.644.392.229.08.432.119.609.119v.98c-.177 0-.38.047-.609.14a2.011 2.011 0 00-.644.434 2.44 2.44 0 00-.504.735c-.135.294-.203.642-.203 1.043v1.372z"/><path id="letcounter=makeCounter();" fill="#C06334" d="M.546 136.168H2.87v7.448c0 .57.096.97.287 1.204.191.233.474.35.847.35.261 0 .511-.047.749-.14.238-.093.502-.252.791-.476l.504.77c-.15.13-.313.247-.49.35a3.638 3.638 0 01-1.106.42 2.963 2.963 0 01-1.442-.077 1.579 1.579 0 01-.679-.427 1.897 1.897 0 01-.413-.777c-.093-.322-.14-.721-.14-1.197v-6.51H.546v-.938zm14.14 8.918c-.168.15-.366.29-.595.42a4.39 4.39 0 01-.749.336c-.27.093-.553.166-.847.217-.294.051-.59.077-.889.077-.56 0-1.055-.086-1.484-.259a2.858 2.858 0 01-1.078-.742 3.234 3.234 0 01-.658-1.155 4.767 4.767 0 01-.224-1.512c0-.588.082-1.11.245-1.568.163-.457.399-.84.707-1.148a3.08 3.08 0 011.12-.707 4.187 4.187 0 011.47-.245c.392 0 .78.051 1.162.154.383.103.721.296 1.015.581.294.285.52.677.679 1.176.159.5.215 1.146.168 1.939H9.31c0 .84.226 1.468.679 1.883.453.415 1.057.623 1.813.623.252 0 .502-.03.749-.091.247-.06.483-.133.707-.217a3.72 3.72 0 00.595-.28c.173-.103.306-.196.399-.28l.434.798zm-2.954-5.362c-.308 0-.6.033-.875.098a1.995 1.995 0 00-.728.329c-.21.154-.383.355-.518.602s-.222.553-.259.917h4.354c-.047-.616-.245-1.094-.595-1.435-.35-.34-.81-.511-1.379-.511zm4.382-.756h1.666v-1.386l1.092-.308v1.694h3.738v.938h-3.738v3.304c0 .681.166 1.185.497 1.512.331.327.805.49 1.421.49.42 0 .786-.08 1.099-.238.313-.159.595-.331.847-.518l.364.826a3.938 3.938 0 01-1.169.63 4.182 4.182 0 01-1.393.238 3.41 3.41 0 01-1.057-.161 2.426 2.426 0 01-.875-.497 2.38 2.38 0 01-.602-.861c-.15-.35-.224-.768-.224-1.253v-3.472h-1.666v-.938zm22.512 1.078a5.531 5.531 0 00-.693-.189 3.61 3.61 0 00-.735-.077c-.915 0-1.596.215-2.044.644-.448.43-.672 1.11-.672 2.044 0 .41.065.777.196 1.099.13.322.317.595.56.819.243.224.534.397.875.518.34.121.716.182 1.127.182.439 0 .866-.075 1.281-.224.415-.15.763-.345 1.043-.588l.49.812c-.13.112-.294.229-.49.35a4.837 4.837 0 01-1.533.602 4.962 4.962 0 01-1.015.098c-.607 0-1.141-.086-1.603-.259a3.045 3.045 0 01-1.155-.742 3.176 3.176 0 01-.7-1.162 4.525 4.525 0 01-.238-1.505c0-.588.082-1.11.245-1.568.163-.457.399-.84.707-1.148a3.08 3.08 0 011.12-.707 4.187 4.187 0 011.47-.245c.69 0 1.253.06 1.687.182.434.121.8.257 1.099.406l-.014.042v1.946h-1.008v-1.33zm3.052 2.422c0-1.13.294-2.023.882-2.681.588-.658 1.428-.987 2.52-.987.588 0 1.094.096 1.519.287.425.191.777.45 1.057.777.28.327.488.714.623 1.162.135.448.203.929.203 1.442 0 .56-.075 1.066-.224 1.519-.15.453-.369.838-.658 1.155-.29.317-.646.562-1.071.735a3.82 3.82 0 01-1.449.259c-.579 0-1.083-.096-1.512-.287a2.967 2.967 0 01-1.064-.777 3.168 3.168 0 01-.623-1.162 4.963 4.963 0 01-.203-1.442zm1.162 0c0 .327.04.653.119.98.08.327.208.62.385.882.177.261.408.471.693.63.285.159.632.238 1.043.238.747 0 1.309-.231 1.687-.693.378-.462.567-1.141.567-2.037 0-.336-.04-.665-.119-.987a2.608 2.608 0 00-.392-.875 2.066 2.066 0 00-.7-.63c-.285-.159-.632-.238-1.043-.238-.747 0-1.307.229-1.68.686-.373.457-.56 1.139-.56 2.044zm11.522-3.5h1.988v4.774c0 .457.028.896.084 1.316h.938v.91H55.51l-.042-1.19h-.056a2.938 2.938 0 01-.966.98c-.401.252-.887.378-1.456.378-.43 0-.796-.049-1.099-.147a1.556 1.556 0 01-.749-.511c-.196-.243-.34-.567-.434-.973-.093-.406-.14-.912-.14-1.519v-3.08h-.938v-.938h2.03v3.794c0 .383.016.726.049 1.029.033.303.1.56.203.77.103.21.254.369.455.476.2.107.469.161.805.161.485 0 .908-.159 1.267-.476.36-.317.632-.714.819-1.19v-3.626h-.896v-.938zm4.62 2.45a14.05 14.05 0 00-.063-1.176 4.657 4.657 0 00-.049-.364h-.938v-.91h1.876l.126 1.134h.07c.093-.159.217-.315.371-.469a2.91 2.91 0 011.225-.721c.252-.075.518-.112.798-.112.43 0 .81.047 1.141.14.331.093.607.259.826.497.22.238.385.56.497.966.112.406.168.922.168 1.547v4.018h-1.092v-3.808c0-.775-.126-1.358-.378-1.75-.252-.392-.71-.588-1.372-.588-.243 0-.478.049-.707.147a2.44 2.44 0 00-.623.385c-.187.159-.35.343-.49.553-.14.21-.243.432-.308.665v4.396h-1.078v-4.55zm7.532-2.45h1.666v-1.386l1.092-.308v1.694h3.738v.938h-3.738v3.304c0 .681.166 1.185.497 1.512.331.327.805.49 1.421.49.42 0 .786-.08 1.099-.238.313-.159.595-.331.847-.518l.364.826a3.938 3.938 0 01-1.169.63 4.182 4.182 0 01-1.393.238 3.41 3.41 0 01-1.057-.161 2.426 2.426 0 01-.875-.497 2.38 2.38 0 01-.602-.861c-.15-.35-.224-.768-.224-1.253v-3.472h-1.666v-.938zm15.372 6.118c-.168.15-.366.29-.595.42a4.39 4.39 0 01-.749.336c-.27.093-.553.166-.847.217-.294.051-.59.077-.889.077-.56 0-1.055-.086-1.484-.259a2.858 2.858 0 01-1.078-.742 3.234 3.234 0 01-.658-1.155 4.767 4.767 0 01-.224-1.512c0-.588.082-1.11.245-1.568.163-.457.399-.84.707-1.148a3.08 3.08 0 011.12-.707 4.187 4.187 0 011.47-.245c.392 0 .78.051 1.162.154.383.103.721.296 1.015.581.294.285.52.677.679 1.176.159.5.215 1.146.168 1.939H76.51c0 .84.226 1.468.679 1.883.453.415 1.057.623 1.813.623.252 0 .502-.03.749-.091.247-.06.483-.133.707-.217a3.72 3.72 0 00.595-.28c.173-.103.306-.196.399-.28l.434.798zm-2.954-5.362c-.308 0-.6.033-.875.098a1.995 1.995 0 00-.728.329c-.21.154-.383.355-.518.602s-.222.553-.259.917h4.354c-.047-.616-.245-1.094-.595-1.435-.35-.34-.81-.511-1.379-.511zm4.872 6.244v-.938h1.89v-5.124h-1.89v-.938h2.618l.224.91h.07c.317-.29.672-.537 1.064-.742.392-.205.859-.308 1.4-.308.317 0 .572.06.763.182.191.121.34.299.448.532.107.233.18.516.217.847.037.331.056.707.056 1.127l-.98.014c0-.597-.058-1.036-.175-1.316-.117-.28-.329-.42-.637-.42-.29 0-.55.042-.784.126a2.565 2.565 0 00-.609.308c-.173.121-.32.243-.441.364s-.21.224-.266.308v4.13h2.688v.938h-5.656zm16.828-6.398h6.496v1.008h-6.496v-1.008zm0 2.296h6.496v1.008h-6.496v-1.008zm19.516 4.102v-4.662c0-.196-.007-.385-.021-.567a1.9 1.9 0 00-.098-.49.786.786 0 00-.224-.343.57.57 0 00-.385-.126c-.317 0-.586.13-.805.392-.22.261-.385.588-.497.98v4.816h-1.064v-7h.728l.21.854h.056c.093-.14.184-.273.273-.399.089-.126.191-.236.308-.329.117-.093.254-.166.413-.217.159-.051.36-.077.602-.077.14 0 .285.021.434.063.15.042.287.107.413.196.126.089.236.208.329.357.093.15.154.331.182.546.215-.364.455-.649.721-.854.266-.205.632-.308 1.099-.308.308 0 .558.051.749.154.191.103.34.25.448.441.107.191.182.42.224.686.042.266.063.562.063.889v4.998h-1.064v-4.76c0-.196-.01-.38-.028-.553a1.764 1.764 0 00-.105-.455.752.752 0 00-.21-.308.536.536 0 00-.357-.112c-.327 0-.602.13-.826.392-.224.261-.392.635-.504 1.12v4.676h-1.064zm6.244-6.454a4.447 4.447 0 011.358-.504 7.423 7.423 0 011.484-.154c.476 0 .866.075 1.169.224.303.15.541.343.714.581.173.238.29.509.35.812.06.303.091.609.091.917 0 .355-.01.733-.028 1.134-.019.401-.033.803-.042 1.204 0 .467.028.91.084 1.33h.938v.91h-1.862l-.126-1.05h-.07c-.056.084-.14.191-.252.322-.112.13-.259.259-.441.385a2.749 2.749 0 01-1.589.469c-.69 0-1.237-.177-1.638-.532-.401-.355-.602-.84-.602-1.456 0-.476.105-.873.315-1.19.21-.317.511-.56.903-.728.392-.168.866-.266 1.421-.294a9.544 9.544 0 011.869.112c.047-.43.054-.786.021-1.071-.033-.285-.107-.511-.224-.679a.938.938 0 00-.49-.357 2.482 2.482 0 00-.777-.105c-.42 0-.821.058-1.204.175-.383.117-.723.236-1.022.357l-.35-.812zm2.058 5.642c.261 0 .504-.042.728-.126a2.22 2.22 0 00.588-.322 2.133 2.133 0 00.672-.868v-.98a7.92 7.92 0 00-1.344-.126c-.41 0-.765.044-1.064.133-.299.089-.532.226-.7.413-.168.187-.252.43-.252.728 0 .308.105.576.315.805.21.229.562.343 1.057.343zm5.166-8.988h2.268v5.796h.77l2.758-2.996h1.316l-3.094 3.318 2.548 2.744h.91v.938h-1.442l-2.996-3.164h-.77v3.164h-1.078v-8.862h-1.19v-.938zm15.47 8.918c-.168.15-.366.29-.595.42a4.39 4.39 0 01-.749.336c-.27.093-.553.166-.847.217-.294.051-.59.077-.889.077-.56 0-1.055-.086-1.484-.259a2.858 2.858 0 01-1.078-.742 3.234 3.234 0 01-.658-1.155 4.767 4.767 0 01-.224-1.512c0-.588.082-1.11.245-1.568.163-.457.399-.84.707-1.148a3.08 3.08 0 011.12-.707 4.187 4.187 0 011.47-.245c.392 0 .78.051 1.162.154.383.103.721.296 1.015.581.294.285.52.677.679 1.176.159.5.215 1.146.168 1.939h-5.418c0 .84.226 1.468.679 1.883.453.415 1.057.623 1.813.623.252 0 .502-.03.749-.091.247-.06.483-.133.707-.217a3.72 3.72 0 00.595-.28c.173-.103.306-.196.399-.28l.434.798zm-2.954-5.362c-.308 0-.6.033-.875.098a1.995 1.995 0 00-.728.329c-.21.154-.383.355-.518.602s-.222.553-.259.917h4.354c-.047-.616-.245-1.094-.595-1.435-.35-.34-.81-.511-1.379-.511zm10.36-2.492a2.466 2.466 0 00-.525-.147 4.192 4.192 0 00-.693-.049c-.383 0-.758.07-1.127.21-.369.14-.695.369-.98.686-.285.317-.513.733-.686 1.246-.173.513-.259 1.143-.259 1.89 0 .672.077 1.26.231 1.764.154.504.369.924.644 1.26.275.336.607.588.994.756.387.168.819.252 1.295.252.243 0 .469-.021.679-.063.21-.042.404-.1.581-.175v-1.4h1.036v1.89l.014.028a3.66 3.66 0 01-1.064.539c-.43.145-.952.217-1.568.217-.588 0-1.132-.1-1.631-.301a3.41 3.41 0 01-1.295-.917c-.364-.41-.646-.936-.847-1.575-.2-.64-.301-1.398-.301-2.275 0-.915.112-1.692.336-2.331.224-.64.527-1.162.91-1.568a3.452 3.452 0 011.337-.889 4.697 4.697 0 011.631-.28c.317 0 .593.012.826.035.233.023.439.056.616.098s.334.096.469.161c.135.065.268.14.399.224h.014v2.212h-1.036v-1.498zm2.786 5.236c0-1.13.294-2.023.882-2.681.588-.658 1.428-.987 2.52-.987.588 0 1.094.096 1.519.287.425.191.777.45 1.057.777.28.327.488.714.623 1.162.135.448.203.929.203 1.442 0 .56-.075 1.066-.224 1.519-.15.453-.369.838-.658 1.155-.29.317-.646.562-1.071.735a3.82 3.82 0 01-1.449.259c-.579 0-1.083-.096-1.512-.287a2.967 2.967 0 01-1.064-.777 3.168 3.168 0 01-.623-1.162 4.963 4.963 0 01-.203-1.442zm1.162 0c0 .327.04.653.119.98.08.327.208.62.385.882.177.261.408.471.693.63.285.159.632.238 1.043.238.747 0 1.309-.231 1.687-.693.378-.462.567-1.141.567-2.037 0-.336-.04-.665-.119-.987a2.608 2.608 0 00-.392-.875 2.066 2.066 0 00-.7-.63c-.285-.159-.632-.238-1.043-.238-.747 0-1.307.229-1.68.686-.373.457-.56 1.139-.56 2.044zm11.522-3.5h1.988v4.774c0 .457.028.896.084 1.316h.938v.91h-1.862l-.042-1.19h-.056a2.938 2.938 0 01-.966.98c-.401.252-.887.378-1.456.378-.43 0-.796-.049-1.099-.147a1.556 1.556 0 01-.749-.511c-.196-.243-.34-.567-.434-.973-.093-.406-.14-.912-.14-1.519v-3.08h-.938v-.938h2.03v3.794c0 .383.016.726.049 1.029.033.303.1.56.203.77.103.21.254.369.455.476.2.107.469.161.805.161.485 0 .908-.159 1.267-.476.36-.317.632-.714.819-1.19v-3.626h-.896v-.938zm4.62 2.45a14.051 14.051 0 00-.063-1.176 4.657 4.657 0 00-.049-.364h-.938v-.91h1.876l.126 1.134h.07c.093-.159.217-.315.371-.469a2.91 2.91 0 011.225-.721c.252-.075.518-.112.798-.112.43 0 .81.047 1.141.14.331.093.607.259.826.497.22.238.385.56.497.966.112.406.168.922.168 1.547v4.018h-1.092v-3.808c0-.775-.126-1.358-.378-1.75-.252-.392-.71-.588-1.372-.588-.243 0-.478.049-.707.147a2.44 2.44 0 00-.623.385c-.187.159-.35.343-.49.553-.14.21-.243.432-.308.665v4.396h-1.078v-4.55zm7.532-2.45h1.666v-1.386l1.092-.308v1.694h3.738v.938h-3.738v3.304c0 .681.166 1.185.497 1.512.331.327.805.49 1.421.49.42 0 .786-.08 1.099-.238.313-.159.595-.331.847-.518l.364.826a3.938 3.938 0 01-1.169.63 4.182 4.182 0 01-1.393.238 3.41 3.41 0 01-1.057-.161 2.426 2.426 0 01-.875-.497 2.38 2.38 0 01-.602-.861c-.15-.35-.224-.768-.224-1.253v-3.472h-1.666v-.938zm15.372 6.118c-.168.15-.366.29-.595.42a4.39 4.39 0 01-.749.336c-.27.093-.553.166-.847.217-.294.051-.59.077-.889.077-.56 0-1.055-.086-1.484-.259a2.858 2.858 0 01-1.078-.742 3.234 3.234 0 01-.658-1.155 4.767 4.767 0 01-.224-1.512c0-.588.082-1.11.245-1.568.163-.457.399-.84.707-1.148a3.08 3.08 0 011.12-.707 4.187 4.187 0 011.47-.245c.392 0 .78.051 1.162.154.383.103.721.296 1.015.581.294.285.52.677.679 1.176.159.5.215 1.146.168 1.939h-5.418c0 .84.226 1.468.679 1.883.453.415 1.057.623 1.813.623.252 0 .502-.03.749-.091.247-.06.483-.133.707-.217a3.72 3.72 0 00.595-.28c.173-.103.306-.196.399-.28l.434.798zm-2.954-5.362c-.308 0-.6.033-.875.098a1.995 1.995 0 00-.728.329c-.21.154-.383.355-.518.602s-.222.553-.259.917h4.354c-.047-.616-.245-1.094-.595-1.435-.35-.34-.81-.511-1.379-.511zm4.872 6.244v-.938h1.89v-5.124h-1.89v-.938h2.618l.224.91h.07c.317-.29.672-.537 1.064-.742.392-.205.859-.308 1.4-.308.317 0 .572.06.763.182.191.121.34.299.448.532.107.233.18.516.217.847.037.331.056.707.056 1.127l-.98.014c0-.597-.058-1.036-.175-1.316-.117-.28-.329-.42-.637-.42-.29 0-.55.042-.784.126a2.565 2.565 0 00-.609.308c-.173.121-.32.243-.441.364s-.21.224-.266.308v4.13h2.688v.938h-5.656zm13.524 2.968a6.964 6.964 0 01-1.757-.707 5.036 5.036 0 01-1.428-1.225c-.406-.504-.728-1.12-.966-1.848s-.357-1.591-.357-2.59c0-.99.121-1.855.364-2.597s.57-1.372.98-1.89c.41-.518.889-.933 1.435-1.246a6.005 6.005 0 011.729-.665l.35.882a7.086 7.086 0 00-1.512.623 3.928 3.928 0 00-1.183 1.022c-.331.425-.588.952-.77 1.582-.182.63-.273 1.393-.273 2.289 0 .905.11 1.678.329 2.317.22.64.509 1.171.868 1.596.36.425.76.756 1.204.994.443.238.889.404 1.337.497l-.35.966zm4.354-.966a4.965 4.965 0 001.337-.497 4.15 4.15 0 001.204-.994c.36-.425.649-.957.868-1.596.22-.64.329-1.412.329-2.317 0-.896-.091-1.659-.273-2.289-.182-.63-.439-1.157-.77-1.582a3.928 3.928 0 00-1.183-1.022 7.086 7.086 0 00-1.512-.623l.35-.882c.607.13 1.183.352 1.729.665a4.984 4.984 0 011.435 1.246c.41.518.737 1.148.98 1.89s.364 1.608.364 2.597c0 .999-.119 1.862-.357 2.59-.238.728-.56 1.344-.966 1.848a5.036 5.036 0 01-1.428 1.225 6.964 6.964 0 01-1.757.707l-.35-.966zm9.604-2.772c0-.28.091-.506.273-.679.182-.173.418-.259.707-.259.355 0 .63.124.826.371.196.247.294.595.294 1.043a2.36 2.36 0 01-.637 1.659 2.465 2.465 0 01-.588.462c-.21.117-.404.203-.581.259l-.35-.546c.336-.13.625-.317.868-.56.243-.243.364-.537.364-.882-.13.028-.233.042-.308.042-.27 0-.483-.077-.637-.231-.154-.154-.231-.38-.231-.679zm.126-5.502c0-.299.084-.53.252-.693.168-.163.392-.245.672-.245.299 0 .532.082.7.245.168.163.252.394.252.693 0 .27-.084.495-.252.672-.168.177-.401.266-.7.266-.28 0-.504-.089-.672-.266a.938.938 0 01-.252-.672z"/></g><g id="Group-3" transform="translate(434 40)"><path id="Rectangle-1" fill="#FBF2EC" stroke="#DBAF88" stroke-width="2" d="M1 1h187v48H1z"/><text id="makeCounter:-functio" fill="#AF6E24" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="6" y="21">makeCounter: function</tspan> <tspan x="6" y="36">counter: undefined</tspan></text></g><g id="Group-5" stroke="#C06334" stroke-linecap="square" transform="translate(239 28)"><path id="Line" d="M.709.967h16.789"/><path id="Line-Copy" d="M.709 86.033h16.789"/><path id="Line-Copy-2" d="M18.333.967v85.066"/></g><g id="Group-5-Copy" stroke="#C06334" stroke-linecap="square" transform="translate(425 8)"><path id="Line-Copy-2" d="M2.333 1.7v149.6"/></g><g id="Group-2" transform="translate(281 51)"><path id="Rectangle-1-Copy" fill="#FBF2EC" stroke="#DBAF88" stroke-width="2" d="M1 1h83v27H1z"/><text id="count:-0" fill="#AF6E24" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="8.5" y="18">count: 0</tspan></text></g><text id="null" fill="#AF6E24" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="677" y="68">null</tspan></text><path id="Rectangle-1-Copy" fill="#C06334" d="M3 39.774V27l9 6.387"/><text id="global-LexicalEnviro" fill="#AF6E24" font-family="PTMono-Regular, PT Mono" font-size="12" font-weight="normal"><tspan x="440" y="15">global LexicalEnvironment</tspan></text><text id="LexicalEnvironment-o" fill="#AF6E24" font-family="PTMono-Regular, PT Mono" font-size="12" font-weight="normal"><tspan x="275" y="15">LexicalEnvironment</tspan> <tspan x="275" y="29">of makeCounter() call</tspan></text><g id="Group" transform="translate(376 46)"><path id="Line" fill="#C06334" fill-rule="nonzero" d="M27 12l14 7-14 7-.001-6H-1v-2h27.999L27 12z"/><text id="outer" fill="#AF6E24" font-family="PTMono-Regular, PT Mono" font-size="12" font-weight="normal"><tspan x="0" y="11">outer</tspan></text></g><g id="Group" transform="translate(629 45)"><path id="Line" fill="#C06334" fill-rule="nonzero" d="M27 12l14 7-14 7-.001-6H-1v-2h27.999L27 12z"/><text id="outer" fill="#AF6E24" font-family="PTMono-Regular, PT Mono" font-size="12" font-weight="normal"><tspan x="0" y="11">outer</tspan></text></g></g></g></svg> \ No newline at end of file diff --git a/1-js/06-advanced-functions/03-closure/closure-variable-phrase.svg b/1-js/06-advanced-functions/03-closure/closure-variable-phrase.svg new file mode 100644 index 000000000..b9bb12fff --- /dev/null +++ b/1-js/06-advanced-functions/03-closure/closure-variable-phrase.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" width="550" height="150" viewBox="0 0 550 150"><defs><style>@import url(https://fonts.googleapis.com/css?family=Open+Sans:bold,italic,bolditalic%7CPT+Mono);@font-face{font-family:'PT Mono';font-weight:700;font-style:normal;src:local('PT MonoBold'),url(/font/PTMonoBold.woff2) format('woff2'),url(/font/PTMonoBold.woff) format('woff'),url(/font/PTMonoBold.ttf) format('truetype')}</style></defs><g id="closure" fill="none" fill-rule="evenodd" stroke="none" stroke-width="1"><g id="closure-variable-phrase.svg"><g id="Group-3" transform="translate(235 114)"><path id="Rectangle-1" fill="#FBF2EC" stroke="#DBAF88" stroke-width="2" d="M1 1h204v28H1z"/><text id="phrase:-"Bye"" fill="#AF6E24" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="8.598" y="18.51">phrase: "Bye"</tspan></text></g><g id="Group-3-Copy" transform="translate(235 79)"><path id="Rectangle-1" fill="#FBF2EC" stroke="#DBAF88" stroke-width="2" d="M1 1h204v28H1z"/><text id="phrase:-"Hello"" fill="#AF6E24" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="8.598" y="18.51">phrase: "Hello"</tspan></text></g><g id="Group-3-Copy-3" transform="translate(235 44)"><path id="Rectangle-1" fill="#FBF2EC" stroke="#DBAF88" stroke-width="2" d="M1 1h204v28H1z"/><text id="phrase:-undefined" fill="#AF6E24" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="7" y="19.51">phrase: undefined</tspan></text></g><g id="Group-3-Copy-2" fill="#FBF2EC" stroke="#DBAF88" stroke-width="2" transform="translate(235 9)"><path id="Rectangle-1" d="M1 1h204v28H1z"/></g><text id="phrase:-<uninitializ" fill="#AF6E24" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="242" y="28">phrase: <uninitialized></tspan></text><g id="Group" transform="translate(450 3)"><path id="Line" fill="#C06334" fill-rule="nonzero" d="M27.5 13.5l14 7-14 7v-6h-28v-2h28v-6z"/><text id="outer" fill="#AF6E24" font-family="PTMono-Regular, PT Mono" font-size="12" font-weight="normal"><tspan x="0" y="11">outer</tspan></text></g><text id="null" fill="#AF6E24" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="497" y="27">null</tspan></text><g id="let-phrase;" fill-rule="nonzero" transform="translate(19 53)"><path id="let" fill="#1C85B5" d="M1.372 0h2.324v7.448c0 .57.096.97.287 1.204.191.233.474.35.847.35.261 0 .511-.047.749-.14.238-.093.502-.252.791-.476l.504.77c-.15.13-.313.247-.49.35a3.638 3.638 0 01-1.106.42 2.963 2.963 0 01-1.442-.077 1.579 1.579 0 01-.679-.427 1.897 1.897 0 01-.413-.777c-.093-.322-.14-.721-.14-1.197V.938H1.372V0zm14.14 8.918c-.168.15-.366.29-.595.42a4.39 4.39 0 01-.749.336c-.27.093-.553.166-.847.217-.294.051-.59.077-.889.077-.56 0-1.055-.086-1.484-.259a2.858 2.858 0 01-1.078-.742 3.234 3.234 0 01-.658-1.155A4.767 4.767 0 018.988 6.3c0-.588.082-1.11.245-1.568.163-.457.399-.84.707-1.148a3.08 3.08 0 011.12-.707 4.187 4.187 0 011.47-.245c.392 0 .78.051 1.162.154.383.103.721.296 1.015.581.294.285.52.677.679 1.176.159.5.215 1.146.168 1.939h-5.418c0 .84.226 1.468.679 1.883.453.415 1.057.623 1.813.623.252 0 .502-.03.749-.091.247-.06.483-.133.707-.217a3.72 3.72 0 00.595-.28c.173-.103.306-.196.399-.28l.434.798zm-2.954-5.362c-.308 0-.6.033-.875.098a1.995 1.995 0 00-.728.329c-.21.154-.383.355-.518.602s-.222.553-.259.917h4.354c-.047-.616-.245-1.094-.595-1.435-.35-.34-.81-.511-1.379-.511zM16.94 2.8h1.666V1.414l1.092-.308V2.8h3.738v.938h-3.738v3.304c0 .681.166 1.185.497 1.512.331.327.805.49 1.421.49.42 0 .786-.08 1.099-.238.313-.159.595-.331.847-.518l.364.826a3.938 3.938 0 01-1.169.63 4.182 4.182 0 01-1.393.238 3.41 3.41 0 01-1.057-.161 2.426 2.426 0 01-.875-.497 2.38 2.38 0 01-.602-.861c-.15-.35-.224-.768-.224-1.253V3.738H16.94V2.8z"/><path id="phrase" fill="#181717" d="M34.65 5.25a14.05 14.05 0 00-.063-1.176 4.657 4.657 0 00-.049-.364H33.6V2.8h1.862l.14.98h.07c.252-.327.572-.6.959-.819.387-.22.861-.329 1.421-.329.999 0 1.75.275 2.254.826.504.55.756 1.451.756 2.702 0 .588-.086 1.118-.259 1.589a3.34 3.34 0 01-.735 1.197 3.24 3.24 0 01-1.148.756 3.999 3.999 0 01-1.484.266c-.196 0-.371-.007-.525-.021a4.613 4.613 0 01-.42-.056 3.31 3.31 0 01-.371-.091 5.103 5.103 0 01-.392-.14v2.94H34.65V5.25zm3.22-1.596c-.28 0-.544.051-.791.154a2.36 2.36 0 00-1.127.966c-.121.205-.196.41-.224.616v3.192c.205.14.436.25.693.329.257.08.595.119 1.015.119.747 0 1.344-.245 1.792-.735.448-.49.672-1.206.672-2.149 0-.793-.156-1.407-.469-1.841-.313-.434-.833-.651-1.561-.651zM41.762 0h2.184v3.668h.07c.29-.327.625-.581 1.008-.763.383-.182.859-.273 1.428-.273.448 0 .838.047 1.169.14.331.093.602.257.812.49.21.233.366.553.469.959.103.406.154.922.154 1.547V9.8h-1.092V5.978c0-.401-.023-.751-.07-1.05a1.829 1.829 0 00-.273-.749c-.135-.2-.32-.352-.553-.455-.233-.103-.532-.154-.896-.154-.252 0-.5.044-.742.133-.243.089-.464.21-.665.364-.2.154-.373.34-.518.56-.145.22-.245.46-.301.721V9.8h-1.078V.938h-1.106V0zm9.268 9.8v-.938h1.89V3.738h-1.89V2.8h2.618l.224.91h.07c.317-.29.672-.537 1.064-.742.392-.205.859-.308 1.4-.308.317 0 .572.06.763.182.191.121.34.299.448.532.107.233.18.516.217.847.037.331.056.707.056 1.127l-.98.014c0-.597-.058-1.036-.175-1.316-.117-.28-.329-.42-.637-.42-.29 0-.55.042-.784.126a2.565 2.565 0 00-.609.308c-.173.121-.32.243-.441.364s-.21.224-.266.308v4.13h2.688V9.8H51.03zm8.988-6.454a4.447 4.447 0 011.358-.504 7.423 7.423 0 011.484-.154c.476 0 .866.075 1.169.224.303.15.541.343.714.581.173.238.29.509.35.812.06.303.091.609.091.917 0 .355-.01.733-.028 1.134-.019.401-.033.803-.042 1.204 0 .467.028.91.084 1.33h.938v.91h-1.862l-.126-1.05h-.07c-.056.084-.14.191-.252.322-.112.13-.259.259-.441.385a2.749 2.749 0 01-1.589.469c-.69 0-1.237-.177-1.638-.532-.401-.355-.602-.84-.602-1.456 0-.476.105-.873.315-1.19.21-.317.511-.56.903-.728.392-.168.866-.266 1.421-.294a9.544 9.544 0 011.869.112c.047-.43.054-.786.021-1.071-.033-.285-.107-.511-.224-.679a.938.938 0 00-.49-.357 2.482 2.482 0 00-.777-.105c-.42 0-.821.058-1.204.175-.383.117-.723.236-1.022.357l-.35-.812zm2.058 5.642c.261 0 .504-.042.728-.126a2.22 2.22 0 00.588-.322 2.133 2.133 0 00.672-.868v-.98a7.92 7.92 0 00-1.344-.126c-.41 0-.765.044-1.064.133-.299.089-.532.226-.7.413-.168.187-.252.43-.252.728 0 .308.105.576.315.805.21.229.562.343 1.057.343zM73.038 7.91a.796.796 0 00-.35-.693 2.872 2.872 0 00-.868-.392 16.056 16.056 0 00-1.127-.273 6.502 6.502 0 01-1.127-.336 2.525 2.525 0 01-.868-.567c-.233-.238-.35-.572-.35-1.001 0-.355.077-.658.231-.91a1.94 1.94 0 01.609-.623c.252-.163.546-.285.882-.364.336-.08.686-.119 1.05-.119.653 0 1.216.082 1.687.245.471.163.847.334 1.127.511l-.448.882a11.79 11.79 0 00-1.001-.483c-.36-.154-.81-.231-1.351-.231-.205 0-.408.021-.609.063-.2.042-.383.105-.546.189a1.088 1.088 0 00-.392.329.825.825 0 00-.147.497c0 .243.117.43.35.56.233.13.523.24.868.329.345.089.721.173 1.127.252.406.08.782.194 1.127.343.345.15.635.35.868.602.233.252.35.593.35 1.022 0 .644-.254 1.176-.763 1.596-.509.42-1.272.63-2.289.63-.308 0-.611-.028-.91-.084a5.52 5.52 0 01-.84-.224 5.054 5.054 0 01-.714-.315 3.002 3.002 0 01-.532-.357l.56-.91c.112.112.261.226.448.343a4.229 4.229 0 001.337.539 3.76 3.76 0 001.484.021c.22-.042.413-.107.581-.196a1.08 1.08 0 00.399-.35.914.914 0 00.147-.525zm9.674 1.008c-.168.15-.366.29-.595.42a4.39 4.39 0 01-.749.336c-.27.093-.553.166-.847.217-.294.051-.59.077-.889.077-.56 0-1.055-.086-1.484-.259a2.858 2.858 0 01-1.078-.742 3.234 3.234 0 01-.658-1.155 4.767 4.767 0 01-.224-1.512c0-.588.082-1.11.245-1.568.163-.457.399-.84.707-1.148a3.08 3.08 0 011.12-.707 4.187 4.187 0 011.47-.245c.392 0 .78.051 1.162.154.383.103.721.296 1.015.581.294.285.52.677.679 1.176.159.5.215 1.146.168 1.939h-5.418c0 .84.226 1.468.679 1.883.453.415 1.057.623 1.813.623.252 0 .502-.03.749-.091.247-.06.483-.133.707-.217a3.72 3.72 0 00.595-.28c.173-.103.306-.196.399-.28l.434.798zm-2.954-5.362c-.308 0-.6.033-.875.098a1.995 1.995 0 00-.728.329c-.21.154-.383.355-.518.602s-.222.553-.259.917h4.354c-.047-.616-.245-1.094-.595-1.435-.35-.34-.81-.511-1.379-.511z"/><path id=";" fill="#7E7C7B" d="M86.912 9.03c0-.28.091-.506.273-.679.182-.173.418-.259.707-.259.355 0 .63.124.826.371.196.247.294.595.294 1.043a2.36 2.36 0 01-.637 1.659 2.465 2.465 0 01-.588.462c-.21.117-.404.203-.581.259l-.35-.546c.336-.13.625-.317.868-.56.243-.243.364-.537.364-.882-.13.028-.233.042-.308.042-.27 0-.483-.077-.637-.231-.154-.154-.231-.38-.231-.679zm.126-5.502c0-.299.084-.53.252-.693.168-.163.392-.245.672-.245.299 0 .532.082.7.245.168.163.252.394.252.693 0 .27-.084.495-.252.672-.168.177-.401.266-.7.266-.28 0-.504-.089-.672-.266a.938.938 0 01-.252-.672z"/><path id="phrase" fill="#181717" d="M1.05 39.25a14.05 14.05 0 00-.063-1.176 4.657 4.657 0 00-.049-.364H0v-.91h1.862l.14.98h.07c.252-.327.572-.6.959-.819.387-.22.861-.329 1.421-.329.999 0 1.75.275 2.254.826.504.55.756 1.451.756 2.702 0 .588-.086 1.118-.259 1.589a3.34 3.34 0 01-.735 1.197 3.24 3.24 0 01-1.148.756 3.999 3.999 0 01-1.484.266c-.196 0-.371-.007-.525-.021a4.613 4.613 0 01-.42-.056 3.31 3.31 0 01-.371-.091 5.103 5.103 0 01-.392-.14v2.94H1.05v-7.35zm3.22-1.596c-.28 0-.544.051-.791.154a2.36 2.36 0 00-1.127.966c-.121.205-.196.41-.224.616v3.192c.205.14.436.25.693.329.257.08.595.119 1.015.119.747 0 1.344-.245 1.792-.735.448-.49.672-1.206.672-2.149 0-.793-.156-1.407-.469-1.841-.313-.434-.833-.651-1.561-.651zM8.162 34h2.184v3.668h.07c.29-.327.625-.581 1.008-.763.383-.182.859-.273 1.428-.273.448 0 .838.047 1.169.14.331.093.602.257.812.49.21.233.366.553.469.959.103.406.154.922.154 1.547V43.8h-1.092v-3.822c0-.401-.023-.751-.07-1.05a1.829 1.829 0 00-.273-.749c-.135-.2-.32-.352-.553-.455-.233-.103-.532-.154-.896-.154-.252 0-.5.044-.742.133-.243.089-.464.21-.665.364-.2.154-.373.34-.518.56-.145.22-.245.46-.301.721V43.8H9.268v-8.862H8.162V34zm9.268 9.8v-.938h1.89v-5.124h-1.89V36.8h2.618l.224.91h.07c.317-.29.672-.537 1.064-.742.392-.205.859-.308 1.4-.308.317 0 .572.06.763.182.191.121.34.299.448.532.107.233.18.516.217.847.037.331.056.707.056 1.127l-.98.014c0-.597-.058-1.036-.175-1.316-.117-.28-.329-.42-.637-.42-.29 0-.55.042-.784.126a2.565 2.565 0 00-.609.308c-.173.121-.32.243-.441.364s-.21.224-.266.308v4.13h2.688v.938H17.43zm8.988-6.454a4.447 4.447 0 011.358-.504 7.423 7.423 0 011.484-.154c.476 0 .866.075 1.169.224.303.15.541.343.714.581.173.238.29.509.35.812.06.303.091.609.091.917 0 .355-.01.733-.028 1.134-.019.401-.033.803-.042 1.204 0 .467.028.91.084 1.33h.938v.91h-1.862l-.126-1.05h-.07c-.056.084-.14.191-.252.322-.112.13-.259.259-.441.385a2.749 2.749 0 01-1.589.469c-.69 0-1.237-.177-1.638-.532-.401-.355-.602-.84-.602-1.456 0-.476.105-.873.315-1.19.21-.317.511-.56.903-.728.392-.168.866-.266 1.421-.294a9.544 9.544 0 011.869.112c.047-.43.054-.786.021-1.071-.033-.285-.107-.511-.224-.679a.938.938 0 00-.49-.357 2.482 2.482 0 00-.777-.105c-.42 0-.821.058-1.204.175-.383.117-.723.236-1.022.357l-.35-.812zm2.058 5.642c.261 0 .504-.042.728-.126a2.22 2.22 0 00.588-.322 2.133 2.133 0 00.672-.868v-.98a7.92 7.92 0 00-1.344-.126c-.41 0-.765.044-1.064.133-.299.089-.532.226-.7.413-.168.187-.252.43-.252.728 0 .308.105.576.315.805.21.229.562.343 1.057.343zm10.962-1.078a.796.796 0 00-.35-.693 2.872 2.872 0 00-.868-.392 16.056 16.056 0 00-1.127-.273 6.502 6.502 0 01-1.127-.336 2.525 2.525 0 01-.868-.567c-.233-.238-.35-.572-.35-1.001 0-.355.077-.658.231-.91a1.94 1.94 0 01.609-.623c.252-.163.546-.285.882-.364.336-.08.686-.119 1.05-.119.653 0 1.216.082 1.687.245.471.163.847.334 1.127.511l-.448.882a11.79 11.79 0 00-1.001-.483c-.36-.154-.81-.231-1.351-.231-.205 0-.408.021-.609.063-.2.042-.383.105-.546.189a1.088 1.088 0 00-.392.329.825.825 0 00-.147.497c0 .243.117.43.35.56.233.13.523.24.868.329.345.089.721.173 1.127.252.406.08.782.194 1.127.343.345.15.635.35.868.602.233.252.35.593.35 1.022 0 .644-.254 1.176-.763 1.596-.509.42-1.272.63-2.289.63-.308 0-.611-.028-.91-.084a5.52 5.52 0 01-.84-.224 5.054 5.054 0 01-.714-.315 3.002 3.002 0 01-.532-.357l.56-.91c.112.112.261.226.448.343a4.229 4.229 0 001.337.539 3.76 3.76 0 001.484.021c.22-.042.413-.107.581-.196a1.08 1.08 0 00.399-.35.914.914 0 00.147-.525zm9.674 1.008c-.168.15-.366.29-.595.42a4.39 4.39 0 01-.749.336c-.27.093-.553.166-.847.217-.294.051-.59.077-.889.077-.56 0-1.055-.086-1.484-.259a2.858 2.858 0 01-1.078-.742 3.234 3.234 0 01-.658-1.155 4.767 4.767 0 01-.224-1.512c0-.588.082-1.11.245-1.568.163-.457.399-.84.707-1.148a3.08 3.08 0 011.12-.707 4.187 4.187 0 011.47-.245c.392 0 .78.051 1.162.154.383.103.721.296 1.015.581.294.285.52.677.679 1.176.159.5.215 1.146.168 1.939h-5.418c0 .84.226 1.468.679 1.883.453.415 1.057.623 1.813.623.252 0 .502-.03.749-.091.247-.06.483-.133.707-.217a3.72 3.72 0 00.595-.28c.173-.103.306-.196.399-.28l.434.798zm-2.954-5.362c-.308 0-.6.033-.875.098a1.995 1.995 0 00-.728.329c-.21.154-.383.355-.518.602s-.222.553-.259.917h4.354c-.047-.616-.245-1.094-.595-1.435-.35-.34-.81-.511-1.379-.511z"/><path id="=" fill="#DBAF88" d="M59.458 37.402h6.496v1.008h-6.496v-1.008zm0 2.296h6.496v1.008h-6.496v-1.008z"/><path id=""Hello"" fill="#478964" d="M80.332 34h1.232l-.434 4.242h-.798V34zm-2.898 0h1.232l-.434 4.242h-.798V34zm12.67 5.306h-4.396V43.8h-1.162V34h1.162v4.27h4.396V34h1.162v9.8h-1.162v-4.494zm9.408 3.612c-.168.15-.366.29-.595.42a4.39 4.39 0 01-.749.336c-.27.093-.553.166-.847.217-.294.051-.59.077-.889.077-.56 0-1.055-.086-1.484-.259a2.858 2.858 0 01-1.078-.742 3.234 3.234 0 01-.658-1.155 4.767 4.767 0 01-.224-1.512c0-.588.082-1.11.245-1.568.163-.457.399-.84.707-1.148a3.08 3.08 0 011.12-.707 4.187 4.187 0 011.47-.245c.392 0 .78.051 1.162.154.383.103.721.296 1.015.581.294.285.52.677.679 1.176.159.5.215 1.146.168 1.939h-5.418c0 .84.226 1.468.679 1.883.453.415 1.057.623 1.813.623.252 0 .502-.03.749-.091.247-.06.483-.133.707-.217a3.72 3.72 0 00.595-.28c.173-.103.306-.196.399-.28l.434.798zm-2.954-5.362c-.308 0-.6.033-.875.098a1.995 1.995 0 00-.728.329c-.21.154-.383.355-.518.602s-.222.553-.259.917h4.354c-.047-.616-.245-1.094-.595-1.435-.35-.34-.81-.511-1.379-.511zM102.172 34h2.324v7.448c0 .57.096.97.287 1.204.191.233.474.35.847.35.261 0 .511-.047.749-.14.238-.093.502-.252.791-.476l.504.77c-.15.13-.313.247-.49.35a3.638 3.638 0 01-1.106.42 2.963 2.963 0 01-1.442-.077 1.579 1.579 0 01-.679-.427 1.897 1.897 0 01-.413-.777c-.093-.322-.14-.721-.14-1.197v-6.51h-1.232V34zm8.4 0h2.324v7.448c0 .57.096.97.287 1.204.191.233.474.35.847.35.261 0 .511-.047.749-.14.238-.093.502-.252.791-.476l.504.77c-.15.13-.313.247-.49.35a3.638 3.638 0 01-1.106.42 2.963 2.963 0 01-1.442-.077 1.579 1.579 0 01-.679-.427 1.897 1.897 0 01-.413-.777c-.093-.322-.14-.721-.14-1.197v-6.51h-1.232V34zm7.532 6.3c0-1.13.294-2.023.882-2.681.588-.658 1.428-.987 2.52-.987.588 0 1.094.096 1.519.287.425.191.777.45 1.057.777.28.327.488.714.623 1.162.135.448.203.929.203 1.442 0 .56-.075 1.066-.224 1.519-.15.453-.369.838-.658 1.155-.29.317-.646.562-1.071.735a3.82 3.82 0 01-1.449.259c-.579 0-1.083-.096-1.512-.287a2.967 2.967 0 01-1.064-.777 3.168 3.168 0 01-.623-1.162 4.963 4.963 0 01-.203-1.442zm1.162 0c0 .327.04.653.119.98.08.327.208.62.385.882.177.261.408.471.693.63.285.159.632.238 1.043.238.747 0 1.309-.231 1.687-.693.378-.462.567-1.141.567-2.037 0-.336-.04-.665-.119-.987a2.608 2.608 0 00-.392-.875 2.066 2.066 0 00-.7-.63c-.285-.159-.632-.238-1.043-.238-.747 0-1.307.229-1.68.686-.373.457-.56 1.139-.56 2.044zm11.466-6.3h1.232l-.434 4.242h-.798V34zm-2.898 0h1.232l-.434 4.242h-.798V34z"/><path id=";" fill="#7E7C7B" d="M137.312 43.03c0-.28.091-.506.273-.679.182-.173.418-.259.707-.259.355 0 .63.124.826.371.196.247.294.595.294 1.043a2.36 2.36 0 01-.637 1.659 2.465 2.465 0 01-.588.462c-.21.117-.404.203-.581.259l-.35-.546c.336-.13.625-.317.868-.56.243-.243.364-.537.364-.882-.13.028-.233.042-.308.042-.27 0-.483-.077-.637-.231-.154-.154-.231-.38-.231-.679zm.126-5.502c0-.299.084-.53.252-.693.168-.163.392-.245.672-.245.299 0 .532.082.7.245.168.163.252.394.252.693 0 .27-.084.495-.252.672-.168.177-.401.266-.7.266-.28 0-.504-.089-.672-.266a.938.938 0 01-.252-.672z"/><path id="phrase" fill="#181717" d="M1.05 73.25a14.05 14.05 0 00-.063-1.176 4.657 4.657 0 00-.049-.364H0v-.91h1.862l.14.98h.07c.252-.327.572-.6.959-.819.387-.22.861-.329 1.421-.329.999 0 1.75.275 2.254.826.504.55.756 1.451.756 2.702 0 .588-.086 1.118-.259 1.589a3.34 3.34 0 01-.735 1.197 3.24 3.24 0 01-1.148.756 3.999 3.999 0 01-1.484.266c-.196 0-.371-.007-.525-.021a4.613 4.613 0 01-.42-.056 3.31 3.31 0 01-.371-.091 5.103 5.103 0 01-.392-.14v2.94H1.05v-7.35zm3.22-1.596c-.28 0-.544.051-.791.154a2.36 2.36 0 00-1.127.966c-.121.205-.196.41-.224.616v3.192c.205.14.436.25.693.329.257.08.595.119 1.015.119.747 0 1.344-.245 1.792-.735.448-.49.672-1.206.672-2.149 0-.793-.156-1.407-.469-1.841-.313-.434-.833-.651-1.561-.651zM8.162 68h2.184v3.668h.07c.29-.327.625-.581 1.008-.763.383-.182.859-.273 1.428-.273.448 0 .838.047 1.169.14.331.093.602.257.812.49.21.233.366.553.469.959.103.406.154.922.154 1.547V77.8h-1.092v-3.822c0-.401-.023-.751-.07-1.05a1.829 1.829 0 00-.273-.749c-.135-.2-.32-.352-.553-.455-.233-.103-.532-.154-.896-.154-.252 0-.5.044-.742.133-.243.089-.464.21-.665.364-.2.154-.373.34-.518.56-.145.22-.245.46-.301.721V77.8H9.268v-8.862H8.162V68zm9.268 9.8v-.938h1.89v-5.124h-1.89V70.8h2.618l.224.91h.07c.317-.29.672-.537 1.064-.742.392-.205.859-.308 1.4-.308.317 0 .572.06.763.182.191.121.34.299.448.532.107.233.18.516.217.847.037.331.056.707.056 1.127l-.98.014c0-.597-.058-1.036-.175-1.316-.117-.28-.329-.42-.637-.42-.29 0-.55.042-.784.126a2.565 2.565 0 00-.609.308c-.173.121-.32.243-.441.364s-.21.224-.266.308v4.13h2.688v.938H17.43zm8.988-6.454a4.447 4.447 0 011.358-.504 7.423 7.423 0 011.484-.154c.476 0 .866.075 1.169.224.303.15.541.343.714.581.173.238.29.509.35.812.06.303.091.609.091.917 0 .355-.01.733-.028 1.134-.019.401-.033.803-.042 1.204 0 .467.028.91.084 1.33h.938v.91h-1.862l-.126-1.05h-.07c-.056.084-.14.191-.252.322-.112.13-.259.259-.441.385a2.749 2.749 0 01-1.589.469c-.69 0-1.237-.177-1.638-.532-.401-.355-.602-.84-.602-1.456 0-.476.105-.873.315-1.19.21-.317.511-.56.903-.728.392-.168.866-.266 1.421-.294a9.544 9.544 0 011.869.112c.047-.43.054-.786.021-1.071-.033-.285-.107-.511-.224-.679a.938.938 0 00-.49-.357 2.482 2.482 0 00-.777-.105c-.42 0-.821.058-1.204.175-.383.117-.723.236-1.022.357l-.35-.812zm2.058 5.642c.261 0 .504-.042.728-.126a2.22 2.22 0 00.588-.322 2.133 2.133 0 00.672-.868v-.98a7.92 7.92 0 00-1.344-.126c-.41 0-.765.044-1.064.133-.299.089-.532.226-.7.413-.168.187-.252.43-.252.728 0 .308.105.576.315.805.21.229.562.343 1.057.343zm10.962-1.078a.796.796 0 00-.35-.693 2.872 2.872 0 00-.868-.392 16.056 16.056 0 00-1.127-.273 6.502 6.502 0 01-1.127-.336 2.525 2.525 0 01-.868-.567c-.233-.238-.35-.572-.35-1.001 0-.355.077-.658.231-.91a1.94 1.94 0 01.609-.623c.252-.163.546-.285.882-.364.336-.08.686-.119 1.05-.119.653 0 1.216.082 1.687.245.471.163.847.334 1.127.511l-.448.882a11.79 11.79 0 00-1.001-.483c-.36-.154-.81-.231-1.351-.231-.205 0-.408.021-.609.063-.2.042-.383.105-.546.189a1.088 1.088 0 00-.392.329.825.825 0 00-.147.497c0 .243.117.43.35.56.233.13.523.24.868.329.345.089.721.173 1.127.252.406.08.782.194 1.127.343.345.15.635.35.868.602.233.252.35.593.35 1.022 0 .644-.254 1.176-.763 1.596-.509.42-1.272.63-2.289.63-.308 0-.611-.028-.91-.084a5.52 5.52 0 01-.84-.224 5.054 5.054 0 01-.714-.315 3.002 3.002 0 01-.532-.357l.56-.91c.112.112.261.226.448.343a4.229 4.229 0 001.337.539 3.76 3.76 0 001.484.021c.22-.042.413-.107.581-.196a1.08 1.08 0 00.399-.35.914.914 0 00.147-.525zm9.674 1.008c-.168.15-.366.29-.595.42a4.39 4.39 0 01-.749.336c-.27.093-.553.166-.847.217-.294.051-.59.077-.889.077-.56 0-1.055-.086-1.484-.259a2.858 2.858 0 01-1.078-.742 3.234 3.234 0 01-.658-1.155 4.767 4.767 0 01-.224-1.512c0-.588.082-1.11.245-1.568.163-.457.399-.84.707-1.148a3.08 3.08 0 011.12-.707 4.187 4.187 0 011.47-.245c.392 0 .78.051 1.162.154.383.103.721.296 1.015.581.294.285.52.677.679 1.176.159.5.215 1.146.168 1.939h-5.418c0 .84.226 1.468.679 1.883.453.415 1.057.623 1.813.623.252 0 .502-.03.749-.091.247-.06.483-.133.707-.217a3.72 3.72 0 00.595-.28c.173-.103.306-.196.399-.28l.434.798zm-2.954-5.362c-.308 0-.6.033-.875.098a1.995 1.995 0 00-.728.329c-.21.154-.383.355-.518.602s-.222.553-.259.917h4.354c-.047-.616-.245-1.094-.595-1.435-.35-.34-.81-.511-1.379-.511z"/><path id="=" fill="#AF6E24" d="M59.458 71.402h6.496v1.008h-6.496v-1.008zm0 2.296h6.496v1.008h-6.496v-1.008z"/><path id=""Bye"" fill="#478964" d="M80.332 68h1.232l-.434 4.242h-.798V68zm-2.898 0h1.232l-.434 4.242h-.798V68zm13.58 2.24a2.42 2.42 0 01-.448 1.393c-.15.21-.34.394-.574.553-.233.159-.509.28-.826.364v.056c.28.047.548.126.805.238a2.19 2.19 0 011.155 1.176c.121.28.182.611.182.994 0 .504-.105.94-.315 1.309-.21.369-.485.67-.826.903-.34.233-.73.406-1.169.518a5.411 5.411 0 01-1.344.168h-.56c-.215 0-.439-.007-.672-.021a17.67 17.67 0 01-.7-.056 4.007 4.007 0 01-.616-.105v-9.646c.345-.056.747-.103 1.204-.14.457-.037.957-.056 1.498-.056.364 0 .735.03 1.113.091.378.06.721.177 1.029.35.308.173.562.413.763.721.2.308.301.705.301 1.19zm-3.248 6.664c.299 0 .588-.037.868-.112.28-.075.527-.187.742-.336.215-.15.385-.336.511-.56.126-.224.189-.49.189-.798 0-.383-.077-.69-.231-.924a1.613 1.613 0 00-.602-.546 2.605 2.605 0 00-.833-.266 6.16 6.16 0 00-.924-.07h-1.218v3.514c.065.019.159.033.28.042.121.01.252.019.392.028a12.308 12.308 0 00.826.028zm-.77-4.592c.159 0 .35-.005.574-.014.224-.01.41-.023.56-.042a3.83 3.83 0 00.63-.273c.196-.107.371-.236.525-.385.154-.15.275-.317.364-.504.089-.187.133-.392.133-.616 0-.308-.058-.565-.175-.77a1.35 1.35 0 00-.469-.49 1.932 1.932 0 00-.672-.252 4.22 4.22 0 00-.77-.07c-.308 0-.59.007-.847.021a4.04 4.04 0 00-.581.063v3.332h.728zm9.464 4.41h.532l1.736-5.922h1.134l-1.946 6.286c-.103.327-.208.698-.315 1.113a5.2 5.2 0 01-.455 1.169 2.807 2.807 0 01-.798.924c-.336.252-.775.378-1.316.378-.121 0-.25-.014-.385-.042a3.856 3.856 0 01-.399-.105 2.574 2.574 0 01-.364-.147.977.977 0 01-.252-.168l.392-1.008c.056.047.133.093.231.14.098.047.205.086.322.119.117.033.231.06.343.084.112.023.205.035.28.035.7 0 1.176-.593 1.428-1.778h-.938l-2.94-7h1.26l2.45 5.922zm11.452.196c-.168.15-.366.29-.595.42a4.39 4.39 0 01-.749.336c-.27.093-.553.166-.847.217-.294.051-.59.077-.889.077-.56 0-1.055-.086-1.484-.259a2.858 2.858 0 01-1.078-.742 3.234 3.234 0 01-.658-1.155 4.767 4.767 0 01-.224-1.512c0-.588.082-1.11.245-1.568.163-.457.399-.84.707-1.148a3.08 3.08 0 011.12-.707 4.187 4.187 0 011.47-.245c.392 0 .78.051 1.162.154.383.103.721.296 1.015.581.294.285.52.677.679 1.176.159.5.215 1.146.168 1.939h-5.418c0 .84.226 1.468.679 1.883.453.415 1.057.623 1.813.623.252 0 .502-.03.749-.091.247-.06.483-.133.707-.217a3.72 3.72 0 00.595-.28c.173-.103.306-.196.399-.28l.434.798zm-2.954-5.362c-.308 0-.6.033-.875.098a1.995 1.995 0 00-.728.329c-.21.154-.383.355-.518.602s-.222.553-.259.917h4.354c-.047-.616-.245-1.094-.595-1.435-.35-.34-.81-.511-1.379-.511zM113.932 68h1.232l-.434 4.242h-.798V68zm-2.898 0h1.232l-.434 4.242h-.798V68z"/><path id=";" fill="#7E7C7B" d="M120.512 77.03c0-.28.091-.506.273-.679.182-.173.418-.259.707-.259.355 0 .63.124.826.371.196.247.294.595.294 1.043a2.36 2.36 0 01-.637 1.659 2.465 2.465 0 01-.588.462c-.21.117-.404.203-.581.259l-.35-.546c.336-.13.625-.317.868-.56.243-.243.364-.537.364-.882-.13.028-.233.042-.308.042-.27 0-.483-.077-.637-.231-.154-.154-.231-.38-.231-.679zm.126-5.502c0-.299.084-.53.252-.693.168-.163.392-.245.672-.245.299 0 .532.082.7.245.168.163.252.394.252.693 0 .27-.084.495-.252.672-.168.177-.401.266-.7.266-.28 0-.504-.089-.672-.266a.938.938 0 01-.252-.672z"/></g><text id="execution-start" fill="#7E7C7B" font-family="PTMono-Regular, PT Mono" font-size="12" font-weight="normal"><tspan x="20" y="28">execution start</tspan></text><path id="Line-Copy" stroke="#7E7C7B" stroke-dasharray="2,4,2,4" stroke-linecap="square" d="M166.5 58.5h50"/><path id="Line-Copy-2" stroke="#7E7C7B" stroke-dasharray="2,4,2,4" stroke-linecap="square" d="M166.5 92.5h50"/><path id="Line-Copy-3" stroke="#7E7C7B" stroke-dasharray="2,4,2,4" stroke-linecap="square" d="M166.5 126.5h50"/><path id="Line-Copy-4" stroke="#7E7C7B" stroke-dasharray="2,4,2,4" stroke-linecap="square" d="M166.5 126.5h50"/><path id="Line" stroke="#7E7C7B" stroke-dasharray="2,4,2,4" stroke-linecap="square" d="M166.5 24.5h50"/></g></g></svg> \ No newline at end of file diff --git a/1-js/06-advanced-functions/03-closure/variable-scope-lookup.svg b/1-js/06-advanced-functions/03-closure/variable-scope-lookup.svg new file mode 100644 index 000000000..f1f1d3b1d --- /dev/null +++ b/1-js/06-advanced-functions/03-closure/variable-scope-lookup.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" width="374" height="191" viewBox="0 0 374 191"><defs><style>@import url(https://fonts.googleapis.com/css?family=Open+Sans:bold,italic,bolditalic%7CPT+Mono);@font-face{font-family:'PT Mono';font-weight:700;font-style:normal;src:local('PT MonoBold'),url(/font/PTMonoBold.woff2) format('woff2'),url(/font/PTMonoBold.woff) format('woff'),url(/font/PTMonoBold.ttf) format('truetype')}</style></defs><g id="closure" fill="none" fill-rule="evenodd" stroke="none" stroke-width="1"><g id="variable-scope-lookup.svg"><text id="function" fill="#1C85B5" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="13" y="30">function</tspan></text><text id="Use" fill="#181717" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="88" y="30">Use</tspan></text><text id="r" fill="#181717" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="113" y="30">r</tspan></text><text id="(" fill="#7E7C7B" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="122" y="30">(</tspan></text><text id="nam" fill="#181717" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="130" y="30">nam</tspan></text><text id="e" fill="#181717" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="155" y="30">e</tspan></text><text id=")" fill="#7E7C7B" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="164" y="30">)</tspan></text><text id="{" fill="#7E7C7B" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="180" y="30">{</tspan></text><text id="thi" fill="#1C85B5" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="29" y="62">thi</tspan></text><text id="s" fill="#1C85B5" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="54" y="62">s</tspan></text><text id="." fill="#7E7C7B" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="63" y="62">.</tspan></text><text id="sayHi" fill="#181717" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="71" y="62">sayHi</tspan></text><text id="=" fill="#DBAF88" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="122" y="62">=</tspan></text><text id="functio" fill="#1C85B5" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="138" y="62">functio</tspan></text><text id="n" fill="#1C85B5" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="197" y="62">n</tspan></text><text id="(" fill="#7E7C7B" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="206" y="62">(</tspan></text><text id=")" fill="#7E7C7B" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="214" y="62">)</tspan></text><text id="{" fill="#7E7C7B" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="231" y="62">{</tspan></text><text id="aler" fill="#181717" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="46" y="77">aler</tspan></text><text id="t" fill="#181717" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="80" y="77">t</tspan></text><text id="(" fill="#7E7C7B" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="88" y="77">(</tspan></text><text id="nam" fill="#181717" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="96" y="77">nam</tspan></text><text id="e" fill="#181717" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="122" y="77">e</tspan></text><text id=")" fill="#7E7C7B" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="130" y="77">)</tspan></text><text id=";" fill="#7E7C7B" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="138" y="77">;</tspan></text><text id="}" fill="#7E7C7B" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="29" y="93">}</tspan></text><text id=";" fill="#7E7C7B" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="38" y="93">;</tspan></text><text id="}" fill="#7E7C7B" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="13" y="124">}</tspan></text><text id="let" fill="#1C85B5" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="13" y="156">let</tspan></text><text id="user" fill="#181717" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="46" y="156">user</tspan></text><text id="=" fill="#DBAF88" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="88" y="156">=</tspan></text><text id="new" fill="#1C85B5" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="105" y="156">new</tspan></text><text id="Use" fill="#181717" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="138" y="156">Use</tspan></text><text id="r" fill="#181717" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="164" y="156">r</tspan></text><text id="(" fill="#7E7C7B" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="172" y="156">(</tspan></text><text id=""John" fill="#478964" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="180" y="156">"John</tspan></text><text id=""" fill="#478964" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="222" y="156">"</tspan></text><text id=")" fill="#7E7C7B" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="231" y="156">)</tspan></text><text id=";" fill="#7E7C7B" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="239" y="156">;</tspan></text><text id="use" fill="#181717" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="13" y="171">use</tspan></text><text id="r" fill="#181717" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="38" y="171">r</tspan></text><text id="." fill="#7E7C7B" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="46" y="171">.</tspan></text><text id="sayH" fill="#181717" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="54" y="171">sayH</tspan></text><text id="i" fill="#181717" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="88" y="171">i</tspan></text><text id="(" fill="#7E7C7B" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="96" y="171">(</tspan></text><text id=")" fill="#7E7C7B" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="105" y="171">)</tspan></text><text id=";" fill="#7E7C7B" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="113" y="171">;</tspan></text><g id="Group-5" stroke="#C06334" stroke-linecap="square" transform="translate(247 49)"><path id="Line" d="M.129.5h7.742"/><path id="Line-Copy" d="M.129 55.5h7.742"/><path id="Line-Copy-2" d="M8.5.622v54.756"/></g><g id="Group-5-Copy" stroke="#C06334" stroke-linecap="square" transform="translate(293 17)"><path id="Line" d="M.129.5h7.742"/><path id="Line-Copy" d="M.129 109.5h7.742"/><path id="Line-Copy-2" d="M8.5 1.222v107.556"/></g><g id="Group-5-Copy" stroke="#C06334" stroke-linecap="square" transform="matrix(-1 0 0 1 345 3)"><path id="Line-Copy-2" d="M3 2.078v182.844"/></g><path id="Line" fill="#C06334" fill-rule="nonzero" d="M279.5 69.5l14 7-14 7v-6h-14v-2h14v-6zM322.5 69.5l14 7-14 7v-6h-14v-2h14v-6z"/></g></g></svg> \ No newline at end of file diff --git a/1-js/06-advanced-functions/04-var/article.md b/1-js/06-advanced-functions/04-var/article.md index 0a3666641..28d7a76ec 100644 --- a/1-js/06-advanced-functions/04-var/article.md +++ b/1-js/06-advanced-functions/04-var/article.md @@ -1,41 +1,38 @@ # The old "var" +```smart header="This article is for understanding old scripts" +The information in this article is useful for understanding old scripts. + +That's not how we write new code. +``` + In the very first chapter about [variables](info:variables), we mentioned three ways of variable declaration: 1. `let` 2. `const` 3. `var` -`let` and `const` behave exactly the same way in terms of Lexical Environments. - -But `var` is a very different beast, that originates from very old times. It's generally not used in modern scripts, but still lurks in the old ones. - -If you don't plan on meeting such scripts you may even skip this chapter or postpone it, but then there's a chance that it bites you later. - -From the first sight, `var` behaves similar to `let`. That is, declares a variable: +The `var` declaration is similar to `let`. Most of the time we can replace `let` by `var` or vice-versa and expect things to work: ```js run -function sayHi() { - var phrase = "Hello"; // local variable, "var" instead of "let" +var message = "Hi"; +alert(message); // Hi +``` - alert(phrase); // Hello -} +But internally `var` is a very different beast, that originates from very old times. It's generally not used in modern scripts, but still lurks in the old ones. -sayHi(); +If you don't plan on meeting such scripts you may even skip this chapter or postpone it. -alert(phrase); // Error, phrase is not defined -``` - -...But here are the differences. +On the other hand, it's important to understand differences when migrating old scripts from `var` to `let`, to avoid odd errors. ## "var" has no block scope -`var` variables are either function-wide or global, they are visible through blocks. +Variables, declared with `var`, are either function-scoped or global-scoped. They are visible through blocks. For instance: -```js +```js run if (true) { var test = true; // use "var" instead of "let" } @@ -45,23 +42,37 @@ alert(test); // true, the variable lives after if */!* ``` -If we used `let test` on the 2nd line, then it wouldn't be visible to `alert`. But `var` ignores code blocks, so we've got a global `test`. +As `var` ignores code blocks, we've got a global variable `test`. + +If we used `let test` instead of `var test`, then the variable would only be visible inside `if`: + +```js run +if (true) { + let test = true; // use "let" +} + +*!* +alert(test); // ReferenceError: test is not defined +*/!* +``` The same thing for loops: `var` cannot be block- or loop-local: -```js +```js run for (var i = 0; i < 10; i++) { + var one = 1; // ... } *!* -alert(i); // 10, "i" is visible after loop, it's a global variable +alert(i); // 10, "i" is visible after loop, it's a global variable +alert(one); // 1, "one" is visible after loop, it's a global variable */!* ``` If a code block is inside a function, then `var` becomes a function-level variable: -```js +```js run function sayHi() { if (true) { var phrase = "Hello"; @@ -71,12 +82,32 @@ function sayHi() { } sayHi(); -alert(phrase); // Error: phrase is not defined +alert(phrase); // ReferenceError: phrase is not defined ``` -As we can see, `var` pierces through `if`, `for` or other code blocks. That's because a long time ago in JavaScript blocks had no Lexical Environments. And `var` is a remnant of that. +As we can see, `var` pierces through `if`, `for` or other code blocks. That's because a long time ago in JavaScript, blocks had no Lexical Environments, and `var` is a remnant of that. + +## "var" tolerates redeclarations + +If we declare the same variable with `let` twice in the same scope, that's an error: + +```js run +let user; +let user; // SyntaxError: 'user' has already been declared +``` -## "var" are processed at the function start +With `var`, we can redeclare a variable any number of times. If we use `var` with an already-declared variable, it's just ignored: + +```js run +var user = "Pete"; + +var user = "John"; // this "var" does nothing (already declared) +// ...it doesn't trigger an error + +alert(user); // John +``` + +## "var" variables can be declared below their use `var` declarations are processed when the function starts (or script starts for globals). @@ -84,7 +115,7 @@ In other words, `var` variables are defined from the beginning of the function, So this code: -```js +```js run function sayHi() { phrase = "Hello"; @@ -94,11 +125,12 @@ function sayHi() { var phrase; */!* } +sayHi(); ``` ...Is technically the same as this (moved `var phrase` above): -```js +```js run function sayHi() { *!* var phrase; @@ -108,11 +140,12 @@ function sayHi() { alert(phrase); } +sayHi(); ``` ...Or even as this (remember, code blocks are ignored): -```js +```js run function sayHi() { phrase = "Hello"; // (*) @@ -124,6 +157,7 @@ function sayHi() { alert(phrase); } +sayHi(); ``` People also call such behavior "hoisting" (raising), because all `var` are "hoisted" (raised) to the top of the function. @@ -132,11 +166,11 @@ So in the example above, `if (false)` branch never executes, but that doesn't ma **Declarations are hoisted, but assignments are not.** -That's better to demonstrate with an example, like this: +That's best demonstrated with an example: ```js run function sayHi() { - alert(phrase); + alert(phrase); *!* var phrase = "Hello"; @@ -171,15 +205,83 @@ sayHi(); Because all `var` declarations are processed at the function start, we can reference them at any place. But variables are undefined until the assignments. -In both examples above `alert` runs without an error, because the variable `phrase` exists. But its value is not yet assigned, so it shows `undefined`. +In both examples above, `alert` runs without an error, because the variable `phrase` exists. But its value is not yet assigned, so it shows `undefined`. + +## IIFE + +In the past, as there was only `var`, and it has no block-level visibility, programmers invented a way to emulate it. What they did was called "immediately-invoked function expressions" (abbreviated as IIFE). + +That's not something we should use nowadays, but you can find them in old scripts. + +An IIFE looks like this: + +```js run +(function() { + + var message = "Hello"; + + alert(message); // Hello + +})(); +``` + +Here, a Function Expression is created and immediately called. So the code executes right away and has its own private variables. + +The Function Expression is wrapped with parenthesis `(function {...})`, because when JavaScript engine encounters `"function"` in the main code, it understands it as the start of a Function Declaration. But a Function Declaration must have a name, so this kind of code will give an error: + +```js run +// Tries to declare and immediately call a function +function() { // <-- SyntaxError: Function statements require a function name + + var message = "Hello"; + + alert(message); // Hello + +}(); +``` + +Even if we say: "okay, let's add a name", that won't work, as JavaScript does not allow Function Declarations to be called immediately: + +```js run +// syntax error because of parentheses below +function go() { + +}(); // <-- can't call Function Declaration immediately +``` + +So, the parentheses around the function is a trick to show JavaScript that the function is created in the context of another expression, and hence it's a Function Expression: it needs no name and can be called immediately. + +There exist other ways besides parentheses to tell JavaScript that we mean a Function Expression: + +```js run +// Ways to create IIFE + +*!*(*/!*function() { + alert("Parentheses around the function"); +}*!*)*/!*(); + +*!*(*/!*function() { + alert("Parentheses around the whole thing"); +}()*!*)*/!*; + +*!*!*/!*function() { + alert("Bitwise NOT operator starts the expression"); +}(); + +*!*+*/!*function() { + alert("Unary plus starts the expression"); +}(); +``` + +In all the above cases we declare a Function Expression and run it immediately. Let's note again: nowadays there's no reason to write such code. ## Summary -There are two main differences of `var`: +There are two main differences of `var` compared to `let/const`: -1. Variables have no block scope, they are visible minimum at the function level. -2. Variable declarations are processed at function start. +1. `var` variables have no block scope, their visibility is scoped to current function, or global, if declared outside function. +2. `var` declarations are processed at function start (script start for globals). -There's one more minor difference related to the global object, we'll cover that in the next chapter. +There's one more very minor difference related to the global object, that we'll cover in the next chapter. -These differences are actually a bad thing most of the time. Block-level variables is such a great thing. That's why `let` was introduced in the standard long ago, and is now a major way (along with `const`) to declare a variable. +These differences make `var` worse than `let` most of the time. Block-level variables is such a great thing. That's why `let` was introduced in the standard long ago, and is now a major way (along with `const`) to declare a variable. diff --git a/1-js/06-advanced-functions/05-global-object/article.md b/1-js/06-advanced-functions/05-global-object/article.md index da4adc2b6..cf4839d94 100644 --- a/1-js/06-advanced-functions/05-global-object/article.md +++ b/1-js/06-advanced-functions/05-global-object/article.md @@ -1,155 +1,89 @@ # Global object -The global object provides variables and functions that are available anywhere. Mostly, the ones that are built into the language or the host environment. +The global object provides variables and functions that are available anywhere. By default, those that are built into the language or the environment. -In a browser it is named "window", for Node.js it is "global", for other environments it may have another name. +In a browser it is named `window`, for Node.js it is `global`, for other environments it may have another name. -For instance, we can call `alert` as a method of `window`: +Recently, `globalThis` was added to the language, as a standardized name for a global object, that should be supported across all environments. It's supported in all major browsers. + +We'll use `window` here, assuming that our environment is a browser. If your script may run in other environments, it's better to use `globalThis` instead. + +All properties of the global object can be accessed directly: ```js run alert("Hello"); - -// the same as +// is the same as window.alert("Hello"); ``` -We can reference other built-in functions like `Array` as `window.Array` and create our own properties on it. - -## Browser: the "window" object - -For historical reasons, in-browser `window` object is a bit messed up. - -1. It provides the "browser window" functionality, besides playing the role of a global object. - - We can use `window` to access properties and methods, specific to the browser window: - - ```js run - alert(window.innerHeight); // shows the browser window height - - window.open('http://google.com'); // opens a new browser window - ``` - -2. Top-level `var` variables and function declarations automatically become properties of `window`. - - For instance: - ```js untrusted run no-strict refresh - var x = 5; - - alert(window.x); // 5 (var x becomes a property of window) - - window.x = 0; - - alert(x); // 0, variable modified - ``` - - Please note, that doesn't happen with more modern `let/const` declarations: - - ```js untrusted run no-strict refresh - let x = 5; - - alert(window.x); // undefined ("let" doesn't create a window property) - ``` - -3. Also, all scripts share the same global scope, so variables declared in one `<script>` become visible in another ones: - - ```html run - <script> - var a = 1; - let b = 2; - </script> +In a browser, global functions and variables declared with `var` (not `let/const`!) become the property of the global object: - <script> - alert(a); // 1 - alert(b); // 2 - </script> - ``` +```js run untrusted refresh +var gVar = 5; -4. And, a minor thing, but still: the value of `this` in the global scope is `window`. - - ```js untrusted run no-strict refresh - alert(this); // window - ``` - -Why was it made like this? At the time of the language creation, the idea to merge multiple aspects into a single `window` object was to "make things simple". But since then many things changed. Tiny scripts became big applications that require proper architecture. - -Is it good that different scripts (possibly from different sources) see variables of each other? - -No, it's not, because it may lead to naming conflicts: the same variable name can be used in two scripts for different purposes, so they will conflict with each other. - -As of now, the multi-purpose `window` is considered a design mistake in the language. - -Luckily, there's a "road out of hell", called "JavaScript modules". - -If we set `type="module"` attribute on a `<script>` tag, then such script is considered a separate "module" with its own top-level scope (lexical environment), not interfering with `window`. - -- In a module, `var x` does not become a property of `window`: - - ```html run - <script type="module"> - var x = 5; - - alert(window.x); // undefined - </script> - ``` +alert(window.gVar); // 5 (became a property of the global object) +``` -- Two modules that do not see variables of each other: +Function declarations have the same effect (statements with `function` keyword in the main code flow, not function expressions). - ```html run - <script type="module"> - let x = 5; - </script> +Please don't rely on that! This behavior exists for compatibility reasons. Modern scripts use [JavaScript modules](info:modules) where such a thing doesn't happen. - <script type="module"> - alert(window.x); // undefined - alert(x); // Error: undeclared variable - </script> - ``` +If we used `let` instead, such thing wouldn't happen: -- And, the last minor thing, the top-level value of `this` in a module is `undefined` (why should it be `window` anyway?): +```js run untrusted refresh +let gLet = 5; - ```html run - <script type="module"> - alert(this); // undefined - </script> - ``` +alert(window.gLet); // undefined (doesn't become a property of the global object) +``` -**Using `<script type="module">` fixes the design flaw of the language by separating top-level scope from `window`.** +If a value is so important that you'd like to make it available globally, write it directly as a property: -We'll cover more features of modules later, in the chapter [](info:modules). +```js run +*!* +// make current user information global, to let all scripts access it +window.currentUser = { + name: "John" +}; +*/!* + +// somewhere else in code +alert(currentUser.name); // John + +// or, if we have a local variable with the name "currentUser" +// get it from window explicitly (safe!) +alert(window.currentUser.name); // John +``` -## Valid uses of the global object +That said, using global variables is generally discouraged. There should be as few global variables as possible. The code design where a function gets "input" variables and produces certain "outcome" is clearer, less prone to errors and easier to test than if it uses outer or global variables. -1. Using global variables is generally discouraged. There should be as few global variables as possible, but if we need to make something globally visible, we may want to put it into `window` (or `global` in Node.js). +## Using for polyfills - Here we put the information about the current user into a global object, to be accessible from all other scripts: +We use the global object to test for support of modern language features. - ```js run - // explicitly assign it to `window` - window.currentUser = { - name: "John", - age: 30 - }; +For instance, test if a built-in `Promise` object exists (it doesn't in really old browsers): +```js run +if (!window.Promise) { + alert("Your browser is really old!"); +} +``` - // then, elsewhere, in another script - alert(window.currentUser.name); // John - ``` +If there's none (say, we're in an old browser), we can create "polyfills": add functions that are not supported by the environment, but exist in the modern standard. -2. We can test the global object for support of modern language features. +```js run +if (!window.Promise) { + window.Promise = ... // custom implementation of the modern language feature +} +``` - For instance, test if a build-in `Promise` object exists (it doesn't in really old browsers): - ```js run - if (!window.Promise) { - alert("Your browser is really old!"); - } - ``` +## Summary -3. We can create "polyfills": add functions that are not supported by the environment (say, an old browser), but exist in the modern standard. +- The global object holds variables that should be available everywhere. - ```js run - if (!window.Promise) { - window.Promise = ... // custom implementation of the modern language feature - } - ``` + That includes JavaScript built-ins, such as `Array` and environment-specific values, such as `window.innerHeight` -- the window height in the browser. +- The global object has a universal name `globalThis`. -...And of course, if we're in a browser, using `window` to access browser window features (not as a global object) is completely fine. + ...But more often is referred by "old-school" environment-specific names, such as `window` (browser) and `global` (Node.js). +- We should store values in the global object only if they're truly global for our project. And keep their number at minimum. +- In-browser, unless we're using [modules](info:modules), global functions and variables declared with `var` become a property of the global object. +- To make our code future-proof and easier to understand, we should access properties of the global object directly, as `window.x`. diff --git a/1-js/06-advanced-functions/06-function-object/2-counter-inc-dec/task.md b/1-js/06-advanced-functions/06-function-object/2-counter-inc-dec/task.md index 0177c8f6e..a11821d67 100644 --- a/1-js/06-advanced-functions/06-function-object/2-counter-inc-dec/task.md +++ b/1-js/06-advanced-functions/06-function-object/2-counter-inc-dec/task.md @@ -7,8 +7,8 @@ importance: 5 Modify the code of `makeCounter()` so that the counter can also decrease and set the number: - `counter()` should return the next number (as before). -- `counter.set(value)` should set the `count` to `value`. -- `counter.decrease()` should decrease the `count` by 1. +- `counter.set(value)` should set the counter to `value`. +- `counter.decrease()` should decrease the counter by 1. See the sandbox code for the complete usage example. diff --git a/1-js/06-advanced-functions/06-function-object/5-sum-many-brackets/_js.view/solution.js b/1-js/06-advanced-functions/06-function-object/5-sum-many-brackets/_js.view/solution.js new file mode 100644 index 000000000..c7d7d734e --- /dev/null +++ b/1-js/06-advanced-functions/06-function-object/5-sum-many-brackets/_js.view/solution.js @@ -0,0 +1,15 @@ +function sum(a) { + + let currentSum = a; + + function f(b) { + currentSum += b; + return f; + } + + f.toString = function() { + return currentSum; + }; + + return f; +} diff --git a/1-js/06-advanced-functions/06-function-object/5-sum-many-brackets/_js.view/source.js b/1-js/06-advanced-functions/06-function-object/5-sum-many-brackets/_js.view/source.js new file mode 100644 index 000000000..f10dca5dc --- /dev/null +++ b/1-js/06-advanced-functions/06-function-object/5-sum-many-brackets/_js.view/source.js @@ -0,0 +1,12 @@ +function sum(a){ + // Your code goes here. + +} + +/* +sum(1)(2) == 3; // 1 + 2 +sum(1)(2)(3) == 6; // 1 + 2 + 3 +sum(5)(-1)(2) == 6 +sum(6)(-1)(-2)(-3) == 0 +sum(0)(1)(2)(3)(4)(5) == 15 +*/ diff --git a/1-js/06-advanced-functions/06-function-object/5-sum-many-brackets/_js.view/test.js b/1-js/06-advanced-functions/06-function-object/5-sum-many-brackets/_js.view/test.js new file mode 100644 index 000000000..ed567d330 --- /dev/null +++ b/1-js/06-advanced-functions/06-function-object/5-sum-many-brackets/_js.view/test.js @@ -0,0 +1,19 @@ +describe("sum", function(){ + + it("sum(1)(2) == 3", function(){ + assert.equal(3, sum(1)(2)); + }); + + it("sum(5)(-1)(2) == 6", function(){ + assert.equal(6, sum(5)(-1)(2)); + }); + + it("sum(6)(-1)(-2)(-3) == 0", function(){ + assert.equal(0, sum(6)(-1)(-2)(-3)); + }); + + it("sum(0)(1)(2)(3)(4)(5) == 15", function(){ + assert.equal(15, sum(0)(1)(2)(3)(4)(5)); + }); +}); + diff --git a/1-js/06-advanced-functions/06-function-object/5-sum-many-brackets/solution.md b/1-js/06-advanced-functions/06-function-object/5-sum-many-brackets/solution.md index 5c9326912..e97039f72 100644 --- a/1-js/06-advanced-functions/06-function-object/5-sum-many-brackets/solution.md +++ b/1-js/06-advanced-functions/06-function-object/5-sum-many-brackets/solution.md @@ -5,7 +5,7 @@ Now the code: -```js run +```js demo run function sum(a) { let currentSum = a; @@ -52,4 +52,4 @@ function f(b) { } ``` -This `f` will be used in the next call, again return itself, so many times as needed. Then, when used as a number or a string -- the `toString` returns the `currentSum`. We could also use `Symbol.toPrimitive` or `valueOf` here for the conversion. +This `f` will be used in the next call, again return itself, as many times as needed. Then, when used as a number or a string -- the `toString` returns the `currentSum`. We could also use `Symbol.toPrimitive` or `valueOf` here for the conversion. diff --git a/1-js/06-advanced-functions/06-function-object/article.md b/1-js/06-advanced-functions/06-function-object/article.md index 37839779c..8419ae763 100644 --- a/1-js/06-advanced-functions/06-function-object/article.md +++ b/1-js/06-advanced-functions/06-function-object/article.md @@ -1,7 +1,7 @@ # Function object, NFE -As we already know, functions in JavaScript are values. +As we already know, a function in JavaScript is a value. Every value in JavaScript has a type. What type is a function? @@ -12,7 +12,7 @@ A good way to imagine functions is as callable "action objects". We can not only ## The "name" property -Function objects contain a few useable properties. +Function objects contain some useable properties. For instance, a function's name is accessible as the "name" property: @@ -24,14 +24,14 @@ function sayHi() { alert(sayHi.name); // sayHi ``` -What's more funny, the name-assigning logic is smart. It also assigns the correct name to functions that are used in assignments: +What's kind of funny, the name-assigning logic is smart. It also assigns the correct name to a function even if it's created without one, and then immediately assigned: ```js run let sayHi = function() { alert("Hi"); -} +}; -alert(sayHi.name); // sayHi (works!) +alert(sayHi.name); // sayHi (there's a name!) ``` It also works if the assignment is done via a default value: @@ -67,7 +67,7 @@ alert(user.sayBye.name); // sayBye There's no magic though. There are cases when there's no way to figure out the right name. In that case, the name property is empty, like here: -```js +```js run // function created inside array let arr = [function() {}]; @@ -93,7 +93,7 @@ alert(many.length); // 2 Here we can see that rest parameters are not counted. -The `length` property is sometimes used for introspection in functions that operate on other functions. +The `length` property is sometimes used for [introspection](https://en.wikipedia.org/wiki/Type_introspection) in functions that operate on other functions. For instance, in the code below the `ask` function accepts a `question` to ask and an arbitrary number of `handler` functions to call. @@ -102,9 +102,9 @@ Once a user provides their answer, the function calls the handlers. We can pass - A zero-argument function, which is only called when the user gives a positive answer. - A function with arguments, which is called in either case and returns an answer. -The idea is that we have a simple, no-arguments handler syntax for positive cases (most frequent variant), but are able to provide universal handlers as well. +To call `handler` the right way, we examine the `handler.length` property. -To call `handlers` the right way, we examine the `length` property: +The idea is that we have a simple, no-arguments handler syntax for positive cases (most frequent variant), but are able to support universal handlers as well: ```js run function ask(question, ...handlers) { @@ -153,7 +153,7 @@ alert( `Called ${sayHi.counter} times` ); // Called 2 times ```warn header="A property is not a variable" A property assigned to a function like `sayHi.counter = 0` does *not* define a local variable `counter` inside it. In other words, a property `counter` and a variable `let counter` are two unrelated things. -We can treat a function as an object, store properties in it, but that has no effect on its execution. Variables never use function properties and vice versa. These are just parallel worlds. +We can treat a function as an object, store properties in it, but that has no effect on its execution. Variables are not function properties and vice versa. These are just parallel worlds. ``` Function properties can replace closures sometimes. For instance, we can rewrite the counter function example from the chapter <info:closure> to use a function property: @@ -241,7 +241,7 @@ let sayHi = function *!*func*/!*(who) { sayHi("John"); // Hello, John ``` -There are two special things about the name `func`: +There are two special things about the name `func`, that are the reasons for it: 1. It allows the function to reference itself internally. 2. It is not visible outside of the function. @@ -282,7 +282,7 @@ let sayHi = function(who) { }; ``` -The problem with that code is that the value of `sayHi` may change. The function may go to another variable, and the code will start to give errors: +The problem with that code is that `sayHi` may change in the outer code. If the function gets assigned to another variable instead, the code will start to give errors: ```js run let sayHi = function(who) { @@ -326,10 +326,10 @@ welcome(); // Hello, Guest (nested call works) Now it works, because the name `"func"` is function-local. It is not taken from outside (and not visible there). The specification guarantees that it will always reference the current function. -The outer code still has it's variable `sayHi` or `welcome`. And `func` is an "internal function name", how the function can call itself internally. +The outer code still has its variable `sayHi` or `welcome`. And `func` is an "internal function name", the way for the function to call itself reliably. ```smart header="There's no such thing for Function Declaration" -The "internal name" feature described here is only available for Function Expressions, not to Function Declarations. For Function Declarations, there's just no syntax possibility to add a one more "internal" name. +The "internal name" feature described here is only available for Function Expressions, not for Function Declarations. For Function Declarations, there is no syntax for adding an "internal" name. Sometimes, when we need a reliable internal name, it's the reason to rewrite a Function Declaration to Named Function Expression form. ``` @@ -340,13 +340,14 @@ Functions are objects. Here we covered their properties: -- `name` -- the function name. Exists not only when given in the function definition, but also for assignments and object properties. +- `name` -- the function name. Usually taken from the function definition, but if there's none, JavaScript tries to guess it from the context (e.g. an assignment). - `length` -- the number of arguments in the function definition. Rest parameters are not counted. If the function is declared as a Function Expression (not in the main code flow), and it carries the name, then it is called a Named Function Expression. The name can be used inside to reference itself, for recursive calls or such. Also, functions may carry additional properties. Many well-known JavaScript libraries make great use of this feature. -They create a "main" function and attach many other "helper" functions to it. For instance, the [jquery](https://jquery.com) library creates a function named `$`. The [lodash](https://lodash.com) library creates a function `_`. And then adds `_.clone`, `_.keyBy` and other properties to (see the [docs](https://lodash.com/docs) when you want learn more about them). Actually, they do it to lessen their pollution of the global space, so that a single library gives only one global variable. That reduces the possibility of naming conflicts. +They create a "main" function and attach many other "helper" functions to it. For instance, the [jQuery](https://jquery.com) library creates a function named `$`. The [lodash](https://lodash.com) library creates a function `_`, and then adds `_.clone`, `_.keyBy` and other properties to it (see the [docs](https://lodash.com/docs) when you want to learn more about them). Actually, they do it to lessen their pollution of the global space, so that a single library gives only one global variable. That reduces the possibility of naming conflicts. + So, a function can do a useful job by itself and also carry a bunch of other functionality in properties. diff --git a/1-js/06-advanced-functions/07-new-function/article.md b/1-js/06-advanced-functions/07-new-function/article.md index e0750e321..ffe264a4e 100644 --- a/1-js/06-advanced-functions/07-new-function/article.md +++ b/1-js/06-advanced-functions/07-new-function/article.md @@ -8,20 +8,20 @@ There's one more way to create a function. It's rarely used, but sometimes there The syntax for creating a function: ```js -let func = new Function ([arg1[, arg2[, ...argN]],] functionBody) +let func = new Function ([arg1, arg2, ...argN], functionBody); ``` -In other words, function parameters (or, more precisely, names for them) go first, and the body is last. All arguments are strings. +The function is created with the arguments `arg1...argN` and the given `functionBody`. It's easier to understand by looking at an example. Here's a function with two arguments: ```js run -let sum = new Function('a', 'b', 'return a + b'); +let sum = new Function('a', 'b', 'return a + b'); alert( sum(1, 2) ); // 3 ``` -If there are no arguments, then there's only a single argument, the function body: +And here there's a function without arguments, with only the function body: ```js run let sayHi = new Function('alert("Hello")'); @@ -29,7 +29,7 @@ let sayHi = new Function('alert("Hello")'); sayHi(); // Hello ``` -The major difference from other ways we've seen is that the function is created literally from a string, that is passed at run time. +The major difference from other ways we've seen is that the function is created literally from a string, that is passed at run time. All previous declarations required us, programmers, to write the function code in the script. @@ -42,16 +42,17 @@ let func = new Function(str); func(); ``` -It is used in very specific cases, like when we receive code from a server, or to dynamically compile a function from a template. The need for that usually arises at advanced stages of development. +It is used in very specific cases, like when we receive code from a server, or to dynamically compile a function from a template, in complex web-applications. ## Closure -Usually, a function remembers where it was born in the special property `[[Environment]]`. It references the Lexical Environment from where it's created. +Usually, a function remembers where it was born in the special property `[[Environment]]`. It references the Lexical Environment from where it's created (we covered that in the chapter <info:closure>). -But when a function is created using `new Function`, its `[[Environment]]` references not the current Lexical Environment, but instead the global one. +But when a function is created using `new Function`, its `[[Environment]]` is set to reference not the current Lexical Environment, but the global one. -```js run +So, such function doesn't have access to outer variables, only to the global ones. +```js run function getFunc() { let value = "test"; @@ -67,7 +68,7 @@ getFunc()(); // error: value is not defined Compare it with the regular behavior: -```js run +```js run function getFunc() { let value = "test"; @@ -87,51 +88,36 @@ Imagine that we must create a function from a string. The code of that function Our new function needs to interact with the main script. -Perhaps we want it to be able to access outer local variables? +What if it could access the outer variables? The problem is that before JavaScript is published to production, it's compressed using a *minifier* -- a special program that shrinks code by removing extra comments, spaces and -- what's important, renames local variables into shorter ones. -For instance, if a function has `let userName`, minifier replaces it `let a` (or another letter if this one is occupied), and does it everywhere. That's usually a safe thing to do, because the variable is local, nothing outside the function can access it. And inside the function, minifier replaces every mention of it. Minifiers are smart, they analyze the code structure, so they don't break anything. They're not just a dumb find-and-replace. +For instance, if a function has `let userName`, minifier replaces it with `let a` (or another letter if this one is occupied), and does it everywhere. That's usually a safe thing to do, because the variable is local, nothing outside the function can access it. And inside the function, minifier replaces every mention of it. Minifiers are smart, they analyze the code structure, so they don't break anything. They're not just a dumb find-and-replace. -But, if `new Function` could access outer variables, then it would be unable to find `userName`, since this is passed in as a string *after* the code is minified. +So if `new Function` had access to outer variables, it would be unable to find renamed `userName`. -**Even if we could access outer lexical environment in `new Function`, we would have problems with minifiers.** +**If `new Function` had access to outer variables, it would have problems with minifiers.** -The "special feature" of `new Function` saves us from mistakes. +Besides, such code would be architecturally bad and prone to errors. -And it enforces better code. If we need to pass something to a function created by `new Function`, we should pass it explicitly as an argument. - -Our "sum" function actually does that right: - -```js run -*!* -let sum = new Function('a', 'b', 'return a + b'); -*/!* - -let a = 1, b = 2; - -*!* -// outer values are passed as arguments -alert( sum(a, b) ); // 3 -*/!* -``` +To pass something to a function, created as `new Function`, we should use its arguments. ## Summary The syntax: ```js -let func = new Function(arg1, arg2, ..., body); +let func = new Function ([arg1, arg2, ...argN], functionBody); ``` -For historical reasons, arguments can also be given as a comma-separated list. +For historical reasons, arguments can also be given as a comma-separated list. -These three mean the same: +These three declarations mean the same: -```js +```js new Function('a', 'b', 'return a + b'); // basic syntax new Function('a,b', 'return a + b'); // comma-separated new Function('a , b', 'return a + b'); // comma-separated with spaces ``` -Functions created with `new Function`, have `[[Environment]]` referencing the global Lexical Environment, not the outer one. Hence, they cannot use outer variables. But that's actually good, because it saves us from errors. Passing parameters explicitly is a much better method architecturally and causes no problems with minifiers. +Functions created with `new Function`, have `[[Environment]]` referencing the global Lexical Environment, not the outer one. Hence, they cannot use outer variables. But that's actually good, because it insures us from errors. Passing parameters explicitly is a much better method architecturally and causes no problems with minifiers. diff --git a/1-js/06-advanced-functions/08-settimeout-setinterval/1-output-numbers-100ms/solution.md b/1-js/06-advanced-functions/08-settimeout-setinterval/1-output-numbers-100ms/solution.md index 13f01debf..b5b1da7a6 100644 --- a/1-js/06-advanced-functions/08-settimeout-setinterval/1-output-numbers-100ms/solution.md +++ b/1-js/06-advanced-functions/08-settimeout-setinterval/1-output-numbers-100ms/solution.md @@ -18,7 +18,7 @@ function printNumbers(from, to) { printNumbers(5, 10); ``` -Using recursive `setTimeout`: +Using nested `setTimeout`: ```js run @@ -38,5 +38,27 @@ function printNumbers(from, to) { printNumbers(5, 10); ``` -Note that in both solutions, there is an initial delay before the first output. Sometimes we need to add a line to make the first output immediately, that's easy to do. +Note that in both solutions, there is an initial delay before the first output. The function is called after `1000ms` the first time. +If we also want the function to run immediately, then we can add an additional call on a separate line, like this: + +```js run +function printNumbers(from, to) { + let current = from; + + function go() { + alert(current); + if (current == to) { + clearInterval(timerId); + } + current++; + } + +*!* + go(); +*/!* + let timerId = setInterval(go, 1000); +} + +printNumbers(5, 10); +``` diff --git a/1-js/06-advanced-functions/08-settimeout-setinterval/1-output-numbers-100ms/task.md b/1-js/06-advanced-functions/08-settimeout-setinterval/1-output-numbers-100ms/task.md index 87e723c67..84bb0c39c 100644 --- a/1-js/06-advanced-functions/08-settimeout-setinterval/1-output-numbers-100ms/task.md +++ b/1-js/06-advanced-functions/08-settimeout-setinterval/1-output-numbers-100ms/task.md @@ -9,5 +9,4 @@ Write a function `printNumbers(from, to)` that outputs a number every second, st Make two variants of the solution. 1. Using `setInterval`. -2. Using recursive `setTimeout`. - +2. Using nested `setTimeout`. diff --git a/1-js/06-advanced-functions/08-settimeout-setinterval/3-rewrite-settimeout/solution.md b/1-js/06-advanced-functions/08-settimeout-setinterval/3-rewrite-settimeout/solution.md deleted file mode 100644 index 735a446f7..000000000 --- a/1-js/06-advanced-functions/08-settimeout-setinterval/3-rewrite-settimeout/solution.md +++ /dev/null @@ -1,22 +0,0 @@ - - -```js run -let i = 0; - -let start = Date.now(); - -let timer = setInterval(count); - -function count() { - - for(let j = 0; j < 1000000; j++) { - i++; - } - - if (i == 1000000000) { - alert("Done in " + (Date.now() - start) + 'ms'); - clearInterval(timer); - } - -} -``` diff --git a/1-js/06-advanced-functions/08-settimeout-setinterval/3-rewrite-settimeout/task.md b/1-js/06-advanced-functions/08-settimeout-setinterval/3-rewrite-settimeout/task.md deleted file mode 100644 index c3455c2a1..000000000 --- a/1-js/06-advanced-functions/08-settimeout-setinterval/3-rewrite-settimeout/task.md +++ /dev/null @@ -1,32 +0,0 @@ -importance: 4 - ---- - -# Rewrite setTimeout with setInterval - -Here's the function that uses nested `setTimeout` to split a job into pieces. - -Rewrite it to `setInterval`: - -```js run -let i = 0; - -let start = Date.now(); - -function count() { - - if (i == 1000000000) { - alert("Done in " + (Date.now() - start) + 'ms'); - } else { - setTimeout(count); - } - - // a piece of heavy job - for(let j = 0; j < 1000000; j++) { - i++; - } - -} - -count(); -``` diff --git a/1-js/06-advanced-functions/08-settimeout-setinterval/article.md b/1-js/06-advanced-functions/08-settimeout-setinterval/article.md index a79ab0308..f96959988 100644 --- a/1-js/06-advanced-functions/08-settimeout-setinterval/article.md +++ b/1-js/06-advanced-functions/08-settimeout-setinterval/article.md @@ -4,12 +4,11 @@ We may decide to execute a function not right now, but at a certain time later. There are two methods for it: -- `setTimeout` allows to run a function once after the interval of time. -- `setInterval` allows to run a function regularly with the interval between the runs. +- `setTimeout` allows us to run a function once after the interval of time. +- `setInterval` allows us to run a function repeatedly, starting after the interval of time, then repeating continuously at that interval. These methods are not a part of JavaScript specification. But most environments have the internal scheduler and provide these methods. In particular, they are supported in all browsers and Node.js. - ## setTimeout The syntax: @@ -28,7 +27,7 @@ Usually, that's a function. For historical reasons, a string of code can be pass : The delay before run, in milliseconds (1000 ms = 1 second), by default 0. `arg1`, `arg2`... -: Arguments for the function (not supported in IE9-) +: Arguments for the function For instance, this code calls `sayHi()` after one second: @@ -62,7 +61,7 @@ So, this will also work: setTimeout("alert('Hello')", 1000); ``` -But using strings is not recommended, use functions instead of them, like this: +But using strings is not recommended, use arrow functions instead of them, like this: ```js run no-beautify setTimeout(() => alert('Hello'), 1000); @@ -75,7 +74,7 @@ Novice developers sometimes make a mistake by adding brackets `()` after the fun // wrong! setTimeout(sayHi(), 1000); ``` -That doesn't work, because `setTimeout` expects a reference to function. And here `sayHi()` runs the function, and the *result of its execution* is passed to `setTimeout`. In our case the result of `sayHi()` is `undefined` (the function returns nothing), so nothing is scheduled. +That doesn't work, because `setTimeout` expects a reference to a function. And here `sayHi()` runs the function, and the *result of its execution* is passed to `setTimeout`. In our case the result of `sayHi()` is `undefined` (the function returns nothing), so nothing is scheduled. ```` ### Canceling with clearTimeout @@ -103,7 +102,7 @@ As we can see from `alert` output, in a browser the timer identifier is a number Again, there is no universal specification for these methods, so that's fine. -For browsers, timers are described in the [timers section](https://www.w3.org/TR/html5/webappapis.html#timers) of HTML5 standard. +For browsers, timers are described in the [timers section](https://html.spec.whatwg.org/multipage/timers-and-user-prompts.html#timers) of HTML Living Standard. ## setInterval @@ -127,17 +126,17 @@ let timerId = setInterval(() => alert('tick'), 2000); setTimeout(() => { clearInterval(timerId); alert('stop'); }, 5000); ``` -```smart header="Modal windows freeze time in Chrome/Opera/Safari" -In browsers IE and Firefox the internal timer continues "ticking" while showing `alert/confirm/prompt`, but in Chrome, Opera and Safari the internal timer becomes "frozen". +```smart header="Time goes on while `alert` is shown" +In most browsers, including Chrome and Firefox the internal timer continues "ticking" while showing `alert/confirm/prompt`. -So if you run the code above and don't dismiss the `alert` window for some time, then in Firefox/IE next `alert` will be shown immediately as you do it (2 seconds passed from the previous invocation), and in Chrome/Opera/Safari -- after 2 more seconds (timer did not tick during the `alert`). +So if you run the code above and don't dismiss the `alert` window for some time, then the next `alert` will be shown immediately as you do it. The actual interval between alerts will be shorter than 2 seconds. ``` -## Recursive setTimeout +## Nested setTimeout There are two ways of running something regularly. -One is `setInterval`. The other one is a recursive `setTimeout`, like this: +One is `setInterval`. The other one is a nested `setTimeout`, like this: ```js /** instead of: @@ -154,7 +153,7 @@ let timerId = setTimeout(function tick() { The `setTimeout` above schedules the next call right at the end of the current one `(*)`. -The recursive `setTimeout` is a more flexible method than `setInterval`. This way the next call may be scheduled differently, depending on the results of the current one. +The nested `setTimeout` is a more flexible method than `setInterval`. This way the next call may be scheduled differently, depending on the results of the current one. For instance, we need to write a service that sends a request to the server every 5 seconds asking for data, but in case the server is overloaded, it should increase the interval to 10, 20, 40 seconds... @@ -176,30 +175,30 @@ let timerId = setTimeout(function request() { ``` -And if we regularly have CPU-hungry tasks, then we can measure the time taken by the execution and plan the next call sooner or later. +And if the functions that we're scheduling are CPU-hungry, then we can measure the time taken by the execution and plan the next call sooner or later. -**Recursive `setTimeout` guarantees a delay between the executions, `setInterval` -- does not.** +**Nested `setTimeout` allows to set the delay between the executions more precisely than `setInterval`.** Let's compare two code fragments. The first one uses `setInterval`: ```js let i = 1; setInterval(function() { - func(i); + func(i++); }, 100); ``` -The second one uses recursive `setTimeout`: +The second one uses nested `setTimeout`: ```js let i = 1; setTimeout(function run() { - func(i); + func(i++); setTimeout(run, 100); }, 100); ``` -For `setInterval` the internal scheduler will run `func(i)` every 100ms: +For `setInterval` the internal scheduler will run `func(i++)` every 100ms:  @@ -215,15 +214,15 @@ In this case the engine waits for `func` to complete, then checks the scheduler In the edge case, if the function always executes longer than `delay` ms, then the calls will happen without a pause at all. -And here is the picture for the recursive `setTimeout`: +And here is the picture for the nested `setTimeout`:  -**The recursive `setTimeout` guarantees the fixed delay (here 100ms).** +**The nested `setTimeout` guarantees the fixed delay (here 100ms).** That's because a new call is planned at the end of the previous one. -````smart header="Garbage collection" +````smart header="Garbage collection and setInterval/setTimeout callback" When a function is passed in `setInterval/setTimeout`, an internal reference is created to it and saved in the scheduler. It prevents the function from being garbage collected, even if there are no other references to it. ```js @@ -233,16 +232,16 @@ setTimeout(function() {...}, 100); For `setInterval` the function stays in memory until `clearInterval` is called. -There's a side-effect. A function references the outer lexical environment, so, while it lives, outer variables live too. They may take much more memory than the function itself. So when we don't need the scheduled function anymore, it's better to cancel it, even if it's very small. +There's a side effect. A function references the outer lexical environment, so, while it lives, outer variables live too. They may take much more memory than the function itself. So when we don't need the scheduled function anymore, it's better to cancel it, even if it's very small. ```` -## setTimeout(...,0) +## Zero delay setTimeout There's a special use case: `setTimeout(func, 0)`, or just `setTimeout(func)`. -This schedules the execution of `func` as soon as possible. But scheduler will invoke it only after the current code is complete. +This schedules the execution of `func` as soon as possible. But the scheduler will invoke it only after the currently executing script is complete. -So the function is scheduled to run "right after" the current code. In other words, *asynchronously*. +So the function is scheduled to run "right after" the current script. For instance, this outputs "Hello", then immediately "World": @@ -252,116 +251,14 @@ setTimeout(() => alert("World")); alert("Hello"); ``` -The first line "puts the call into calendar after 0ms". But the scheduler will only "check the calendar" after the current code is complete, so `"Hello"` is first, and `"World"` -- after it. - -### Splitting CPU-hungry tasks - -There's a trick to split CPU-hungry tasks using `setTimeout`. - -For instance, a syntax-highlighting script (used to colorize code examples on this page) is quite CPU-heavy. To highlight the code, it performs the analysis, creates many colored elements, adds them to the document -- for a big text that takes a lot. It may even cause the browser to "hang", which is unacceptable. - -So we can split the long text into pieces. First 100 lines, then plan another 100 lines using `setTimeout(..., 0)`, and so on. - -For clarity, let's take a simpler example for consideration. We have a function to count from `1` to `1000000000`. - -If you run it, the CPU will hang. For server-side JS that's clearly noticeable, and if you are running it in-browser, then try to click other buttons on the page -- you'll see that whole JavaScript actually is paused, no other actions work until it finishes. - -```js run -let i = 0; - -let start = Date.now(); - -function count() { - - // do a heavy job - for (let j = 0; j < 1e9; j++) { - i++; - } - - alert("Done in " + (Date.now() - start) + 'ms'); -} - -count(); -``` - -The browser may even show "the script takes too long" warning (but hopefully it won't, because the number is not very big). - -Let's split the job using the nested `setTimeout`: - -```js run -let i = 0; - -let start = Date.now(); - -function count() { - - // do a piece of the heavy job (*) - do { - i++; - } while (i % 1e6 != 0); - - if (i == 1e9) { - alert("Done in " + (Date.now() - start) + 'ms'); - } else { - setTimeout(count); // schedule the new call (**) - } - -} - -count(); -``` - -Now the browser UI is fully functional during the "counting" process. - -We do a part of the job `(*)`: - -1. First run: `i=1...1000000`. -2. Second run: `i=1000001..2000000`. -3. ...and so on, the `while` checks if `i` is evenly divided by `1000000`. - -Then the next call is scheduled in `(**)` if we're not done yet. - -Pauses between `count` executions provide just enough "breath" for the JavaScript engine to do something else, to react to other user actions. - -The notable thing is that both variants -- with and without splitting the job by `setTimeout` -- are comparable in speed. There's no much difference in the overall counting time. - -To make them closer, let's make an improvement. - -We'll move the scheduling in the beginning of the `count()`: - -```js run -let i = 0; - -let start = Date.now(); - -function count() { - - // move the scheduling at the beginning - if (i < 1e9 - 1e6) { - setTimeout(count); // schedule the new call - } - - do { - i++; - } while (i % 1e6 != 0); - - if (i == 1e9) { - alert("Done in " + (Date.now() - start) + 'ms'); - } - -} - -count(); -``` - -Now when we start to `count()` and know that we'll need to `count()` more, we schedule that immediately, before doing the job. +The first line "puts the call into calendar after 0ms". But the scheduler will only "check the calendar" after the current script is complete, so `"Hello"` is first, and `"World"` -- after it. -If you run it, it's easy to notice that it takes significantly less time. +There are also advanced browser-related use cases of zero-delay timeout, that we'll discuss in the chapter <info:event-loop>. -````smart header="Minimal delay of nested timers in-browser" -In the browser, there's a limitation of how often nested timers can run. The [HTML5 standard](https://www.w3.org/TR/html5/webappapis.html#timers) says: "after five nested timers, the interval is forced to be at least four milliseconds.". +````smart header="Zero delay is in fact not zero (in a browser)" +In the browser, there's a limitation of how often nested timers can run. The [HTML Living Standard](https://html.spec.whatwg.org/multipage/timers-and-user-prompts.html#timers) says: "after five nested timers, the interval is forced to be at least 4 milliseconds.". -Let's demonstrate what it means with the example below. The `setTimeout` call in it re-schedules itself after `0ms`. Each call remembers the real time from the previous one in the `times` array. What do the real delays look like? Let's see: +Let's demonstrate what it means with the example below. The `setTimeout` call in it re-schedules itself with zero delay. Each call remembers the real time from the previous one in the `times` array. What do the real delays look like? Let's see: ```js run let start = Date.now(); @@ -378,85 +275,28 @@ setTimeout(function run() { // 1,1,1,1,9,15,20,24,30,35,40,45,50,55,59,64,70,75,80,85,90,95,100 ``` -First timers run immediately (just as written in the spec), and then the delay comes into play and we see `9, 15, 20, 24...`. +First timers run immediately (just as written in the spec), and then we see `9, 15, 20, 24...`. The 4+ ms obligatory delay between invocations comes into play. + +The similar thing happens if we use `setInterval` instead of `setTimeout`: `setInterval(f)` runs `f` few times with zero-delay, and afterwards with 4+ ms delay. That limitation comes from ancient times and many scripts rely on it, so it exists for historical reasons. -For server-side JavaScript, that limitation does not exist, and there exist other ways to schedule an immediate asynchronous job, like [process.nextTick](https://nodejs.org/api/process.html) and [setImmediate](https://nodejs.org/api/timers.html) for Node.js. So the notion is browser-specific only. +For server-side JavaScript, that limitation does not exist, and there exist other ways to schedule an immediate asynchronous job, like [setImmediate](https://nodejs.org/api/timers.html#timers_setimmediate_callback_args) for Node.js. So this note is browser-specific. ```` -### Allowing the browser to render - -Another benefit for in-browser scripts is that they can show a progress bar or something to the user. That's because the browser usually does all "repainting" after the script is complete. - -So if we do a single huge function then even if it changes something, the changes are not reflected in the document till it finishes. - -Here's the demo: -```html run -<div id="progress"></div> - -<script> - let i = 0; - - function count() { - for (let j = 0; j < 1e6; j++) { - i++; - // put the current i into the <div> - // (we'll talk more about innerHTML in the specific chapter, should be obvious here) - progress.innerHTML = i; - } - } - - count(); -</script> -``` - -If you run it, the changes to `i` will show up after the whole count finishes. - -And if we use `setTimeout` to split it into pieces then changes are applied in-between the runs, so this looks better: - -```html run -<div id="progress"></div> - -<script> - let i = 0; - - function count() { - - // do a piece of the heavy job (*) - do { - i++; - progress.innerHTML = i; - } while (i % 1e3 != 0); - - if (i < 1e9) { - setTimeout(count); - } - - } - - count(); -</script> -``` - -Now the `<div>` shows increasing values of `i`. - ## Summary -- Methods `setInterval(func, delay, ...args)` and `setTimeout(func, delay, ...args)` allow to run the `func` regularly/once after `delay` milliseconds. -- To cancel the execution, we should call `clearInterval/clearTimeout` with the value returned by `setInterval/setTimeout`. -- Nested `setTimeout` calls is a more flexible alternative to `setInterval`. Also they can guarantee the minimal time *between* the executions. -- Zero-timeout scheduling `setTimeout(...,0)` is used to schedule the call "as soon as possible, but after the current code is complete". - -Some use cases of `setTimeout(...,0)`: -- To split CPU-hungry tasks into pieces, so that the script doesn't "hang" -- To let the browser do something else while the process is going on (paint the progress bar). +- Methods `setTimeout(func, delay, ...args)` and `setInterval(func, delay, ...args)` allow us to run the `func` once/regularly after `delay` milliseconds. +- To cancel the execution, we should call `clearTimeout/clearInterval` with the value returned by `setTimeout/setInterval`. +- Nested `setTimeout` calls are a more flexible alternative to `setInterval`, allowing us to set the time *between* executions more precisely. +- Zero delay scheduling with `setTimeout(func, 0)` (the same as `setTimeout(func)`) is used to schedule the call "as soon as possible, but after the current script is complete". +- The browser limits the minimal delay for five or more nested calls of `setTimeout` or for `setInterval` (after 5th call) to 4ms. That's for historical reasons. -Please note that all scheduling methods do not *guarantee* the exact delay. We should not rely on that in the scheduled code. +Please note that all scheduling methods do not *guarantee* the exact delay. For example, the in-browser timer may slow down for a lot of reasons: - The CPU is overloaded. - The browser tab is in the background mode. -- The laptop is on battery. +- The laptop is on battery saving mode. -All that may increase the minimal timer resolution (the minimal delay) to 300ms or even 1000ms depending on the browser and settings. +All that may increase the minimal timer resolution (the minimal delay) to 300ms or even 1000ms depending on the browser and OS-level performance settings. diff --git a/1-js/06-advanced-functions/09-call-apply-decorators/01-spy-decorator/_js.view/solution.js b/1-js/06-advanced-functions/09-call-apply-decorators/01-spy-decorator/_js.view/solution.js index 9ef503703..d5a09efb3 100644 --- a/1-js/06-advanced-functions/09-call-apply-decorators/01-spy-decorator/_js.view/solution.js +++ b/1-js/06-advanced-functions/09-call-apply-decorators/01-spy-decorator/_js.view/solution.js @@ -1,11 +1,12 @@ function spy(func) { function wrapper(...args) { + // using ...args instead of arguments to store "real" array in wrapper.calls wrapper.calls.push(args); - return func.apply(this, arguments); + return func.apply(this, args); } wrapper.calls = []; return wrapper; -} \ No newline at end of file +} diff --git a/1-js/06-advanced-functions/09-call-apply-decorators/01-spy-decorator/solution.md b/1-js/06-advanced-functions/09-call-apply-decorators/01-spy-decorator/solution.md index 19a072014..0c8a211b4 100644 --- a/1-js/06-advanced-functions/09-call-apply-decorators/01-spy-decorator/solution.md +++ b/1-js/06-advanced-functions/09-call-apply-decorators/01-spy-decorator/solution.md @@ -1 +1 @@ -Here we can use `calls.push(args)` to store all arguments in the log and `f.apply(this, args)` to forward the call. +The wrapper returned by `spy(f)` should store all arguments and then use `f.apply` to forward the call. diff --git a/1-js/06-advanced-functions/09-call-apply-decorators/03-debounce/_js.view/solution.js b/1-js/06-advanced-functions/09-call-apply-decorators/03-debounce/_js.view/solution.js index 065a77d1f..661dd0cf4 100644 --- a/1-js/06-advanced-functions/09-call-apply-decorators/03-debounce/_js.view/solution.js +++ b/1-js/06-advanced-functions/09-call-apply-decorators/03-debounce/_js.view/solution.js @@ -1,15 +1,7 @@ -function debounce(f, ms) { - - let isCooldown = false; - +function debounce(func, ms) { + let timeout; return function() { - if (isCooldown) return; - - f.apply(this, arguments); - - isCooldown = true; - - setTimeout(() => isCooldown = false, ms); + clearTimeout(timeout); + timeout = setTimeout(() => func.apply(this, arguments), ms); }; - -} \ No newline at end of file +} diff --git a/1-js/06-advanced-functions/09-call-apply-decorators/03-debounce/_js.view/test.js b/1-js/06-advanced-functions/09-call-apply-decorators/03-debounce/_js.view/test.js index 16dc171e1..750e649f8 100644 --- a/1-js/06-advanced-functions/09-call-apply-decorators/03-debounce/_js.view/test.js +++ b/1-js/06-advanced-functions/09-call-apply-decorators/03-debounce/_js.view/test.js @@ -1,41 +1,48 @@ -describe("debounce", function() { - before(function() { +describe('debounce', function () { + before(function () { this.clock = sinon.useFakeTimers(); }); - after(function() { + after(function () { this.clock.restore(); }); - it("calls the function at maximum once in ms milliseconds", function() { - let log = ''; + it('for one call - runs it after given ms', function () { + const f = sinon.spy(); + const debounced = debounce(f, 1000); - function f(a) { - log += a; - } + debounced('test'); + assert(f.notCalled, 'not called immediately'); + this.clock.tick(1000); + assert(f.calledOnceWith('test'), 'called after 1000ms'); + }); - f = debounce(f, 1000); + it('for 3 calls - runs the last one after given ms', function () { + const f = sinon.spy(); + const debounced = debounce(f, 1000); - f(1); // runs at once - f(2); // ignored + debounced('a'); + setTimeout(() => debounced('b'), 200); // ignored (too early) + setTimeout(() => debounced('c'), 500); // runs (1000 ms passed) + this.clock.tick(1000); - setTimeout(() => f(3), 100); // ignored (too early) - setTimeout(() => f(4), 1100); // runs (1000 ms passed) - setTimeout(() => f(5), 1500); // ignored (less than 1000 ms from the last run) + assert(f.notCalled, 'not called after 1000ms'); - this.clock.tick(5000); - assert.equal(log, "14"); + this.clock.tick(500); + + assert(f.calledOnceWith('c'), 'called after 1500ms'); }); - it("keeps the context of the call", function() { + it('keeps the context of the call', function () { let obj = { f() { assert.equal(this, obj); - } + }, }; obj.f = debounce(obj.f, 1000); - obj.f("test"); + obj.f('test'); + this.clock.tick(5000); }); - -}); \ No newline at end of file + +}); diff --git a/1-js/06-advanced-functions/09-call-apply-decorators/03-debounce/debounce.svg b/1-js/06-advanced-functions/09-call-apply-decorators/03-debounce/debounce.svg new file mode 100644 index 000000000..e624ce020 --- /dev/null +++ b/1-js/06-advanced-functions/09-call-apply-decorators/03-debounce/debounce.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" width="500" height="183" viewBox="0 0 500 183"><defs><style>@import url(https://fonts.googleapis.com/css?family=Open+Sans:bold,italic,bolditalic%7CPT+Mono);@font-face{font-family:'PT Mono';font-weight:700;font-style:normal;src:local('PT MonoBold'),url(/font/PTMonoBold.woff2) format('woff2'),url(/font/PTMonoBold.woff) format('woff'),url(/font/PTMonoBold.ttf) format('truetype')}</style></defs><g id="combined" fill="none" fill-rule="evenodd" stroke="none" stroke-width="1"><g id="debounce.svg"><text id="200ms" fill="#AF6E24" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="117" y="142">200ms</tspan></text><text id="1500ms" fill="#AF6E24" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="321" y="142">1500ms</tspan></text><text id="1000ms" fill="#AF6E24" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="242" y="80">1000ms</tspan></text><path id="Shape" fill="#C06334" stroke="#C06334" stroke-linecap="square" stroke-width="3" d="M343.378 28.32L350.92 12 331 33.024l9.674 2.932L334.797 52 353 31.253l-9.622-2.932zm4.369-11.617l-5.669 12.226 9.206 2.767-13.887 15.989 4.525-12.338-9.206-2.766 15.031-15.878z"/><text id="0" fill="#AF6E24" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="93" y="142">0</tspan></text><text id="c" fill="#C06334" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="333" y="72">c</tspan></text><text id="f(a)" fill="#C06334" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="81" y="164">f(a)</tspan></text><text id="f(b)" fill="#C06334" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="121" y="164">f(b)</tspan></text><text id="f(c)" fill="#C06334" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="181" y="164">f(c)</tspan></text><text id="500ms" fill="#AF6E24" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="177" y="142">500ms</tspan></text><text id="time" fill="#AF6E24" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="427" y="125">time</tspan></text><text id="calls:" fill="#AF6E24" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="7" y="164">calls:</tspan></text><path id="Line" fill="#DBAF88" fill-rule="nonzero" d="M432.369 94.388l.871.49 12 6.75 1.55.872-1.55.872-12 6.75-.871.49-.98-1.743.87-.49 8.673-4.879H48v-2h392.932l-8.672-4.878-.872-.49.98-1.744z"/><text id="after-1000ms" fill="#AF6E24" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="358" y="36"> after 1000ms</tspan></text><path id="Line-Copy" stroke="#DBAF88" stroke-linecap="square" stroke-width="2" d="M137.5 125V80M97.5 125V80M197.5 125V80"/><path id="Line-2" stroke="#C06334" stroke-linecap="square" stroke-width="3" d="M337.5 125V80"/><path id="Line-25" fill="#DBAF88" fill-rule="nonzero" d="M212.631 77.888l.98 1.743-.87.49L204.066 85H206v2h-1.933l8.673 4.878.872.49-.98 1.744-.872-.49-12-6.75-1.55-.872 1.55-.872 12-6.75.871-.49zm108.738 0l.871.49 12 6.75 1.55.872-1.55.872-12 6.75-.871.49-.98-1.743.87-.49L329.933 87H329v-2h.932l-8.672-4.878-.872-.49.98-1.744zM214 85v2h-5v-2h5zm8 0v2h-5v-2h5zm8 0v2h-5v-2h5zm8 0v2h-5v-2h5zm8 0v2h-5v-2h5zm8 0v2h-5v-2h5zm8 0v2h-5v-2h5zm8 0v2h-5v-2h5zm8 0v2h-5v-2h5zm8 0v2h-5v-2h5zm8 0v2h-5v-2h5zm8 0v2h-5v-2h5zm8 0v2h-5v-2h5zm8 0v2h-5v-2h5zm8 0v2h-5v-2h5z"/></g></g></svg> \ No newline at end of file diff --git a/1-js/06-advanced-functions/09-call-apply-decorators/03-debounce/debounce.view/index.html b/1-js/06-advanced-functions/09-call-apply-decorators/03-debounce/debounce.view/index.html new file mode 100644 index 000000000..e3b4d5842 --- /dev/null +++ b/1-js/06-advanced-functions/09-call-apply-decorators/03-debounce/debounce.view/index.html @@ -0,0 +1,24 @@ +<!doctype html> +<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.11/lodash.js"></script> + +Function <code>handler</code> is called on this input: +<br> +<input id="input1" placeholder="type here"> + +<p> + +Debounced function <code>debounce(handler, 1000)</code> is called on this input: +<br> +<input id="input2" placeholder="type here"> + +<p> +<button id="result">The <code>handler</code> puts the result here</button> + +<script> + function handler(event) { + result.innerHTML = event.target.value; + } + + input1.oninput = handler; + input2.oninput = _.debounce(handler, 1000); +</script> \ No newline at end of file diff --git a/1-js/06-advanced-functions/09-call-apply-decorators/03-debounce/solution.md b/1-js/06-advanced-functions/09-call-apply-decorators/03-debounce/solution.md index 4f5867ded..83e75f315 100644 --- a/1-js/06-advanced-functions/09-call-apply-decorators/03-debounce/solution.md +++ b/1-js/06-advanced-functions/09-call-apply-decorators/03-debounce/solution.md @@ -1,28 +1,13 @@ ```js demo -function debounce(f, ms) { - - let isCooldown = false; - +function debounce(func, ms) { + let timeout; return function() { - if (isCooldown) return; - - f.apply(this, arguments); - - isCooldown = true; - - setTimeout(() => isCooldown = false, ms); + clearTimeout(timeout); + timeout = setTimeout(() => func.apply(this, arguments), ms); }; - } -``` - -A call to `debounce` returns a wrapper. There may be two states: -- `isCooldown = false` -- ready to run. -- `isCooldown = true` -- waiting for the timeout. - -In the first call `isCooldown` is falsy, so the call proceeds, and the state changes to `true`. +``` -While `isCooldown` is true, all other calls are ignored. +A call to `debounce` returns a wrapper. When called, it schedules the original function call after given `ms` and cancels the previous such timeout. -Then `setTimeout` reverts it to `false` after the given delay. diff --git a/1-js/06-advanced-functions/09-call-apply-decorators/03-debounce/task.md b/1-js/06-advanced-functions/09-call-apply-decorators/03-debounce/task.md index 466c6bc3f..5b0fcc5f8 100644 --- a/1-js/06-advanced-functions/09-call-apply-decorators/03-debounce/task.md +++ b/1-js/06-advanced-functions/09-call-apply-decorators/03-debounce/task.md @@ -4,21 +4,48 @@ importance: 5 # Debounce decorator -The result of `debounce(f, ms)` decorator should be a wrapper that passes the call to `f` at maximum once per `ms` milliseconds. +The result of `debounce(f, ms)` decorator is a wrapper that suspends calls to `f` until there's `ms` milliseconds of inactivity (no calls, "cooldown period"), then invokes `f` once with the latest arguments. -In other words, when we call a "debounced" function, it guarantees that all other future in the closest `ms` milliseconds will be ignored. +In other words, `debounce` is like a secretary that accepts "phone calls", and waits until there's `ms` milliseconds of being quiet. And only then it transfers the latest call information to "the boss" (calls the actual `f`). -For instance: +For instance, we had a function `f` and replaced it with `f = debounce(f, 1000)`. -```js no-beautify -let f = debounce(alert, 1000); +Then if the wrapped function is called at 0ms, 200ms and 500ms, and then there are no calls, then the actual `f` will be only called once, at 1500ms. That is: after the cooldown period of 1000ms from the last call. -f(1); // runs immediately -f(2); // ignored + -setTimeout( () => f(3), 100); // ignored ( only 100 ms passed ) -setTimeout( () => f(4), 1100); // runs -setTimeout( () => f(5), 1500); // ignored (less than 1000 ms from the last run) +...And it will get the arguments of the very last call, other calls are ignored. + +Here's the code for it (uses the debounce decorator from the [Lodash library](https://lodash.com/docs/4.17.15#debounce)): + +```js +let f = _.debounce(alert, 1000); + +f("a"); +setTimeout( () => f("b"), 200); +setTimeout( () => f("c"), 500); +// debounced function waits 1000ms after the last call and then runs: alert("c") +``` + +Now a practical example. Let's say, the user types something, and we'd like to send a request to the server when the input is finished. + +There's no point in sending the request for every character typed. Instead we'd like to wait, and then process the whole result. + +In a web-browser, we can setup an event handler -- a function that's called on every change of an input field. Normally, an event handler is called very often, for every typed key. But if we `debounce` it by 1000ms, then it will be only called once, after 1000ms after the last input. + +```online + +In this live example, the handler puts the result into a box below, try it: + +[iframe border=1 src="debounce" height=200] + +See? The second input calls the debounced function, so its content is processed after 1000ms from the last input. ``` -In practice `debounce` is useful for functions that retrieve/update something when we know that nothing new can be done in such a short period of time, so it's better not to waste resources. \ No newline at end of file +So, `debounce` is a great way to process a sequence of events: be it a sequence of key presses, mouse movements or something else. + +It waits the given time after the last call, and then runs its function, that can process the result. + +The task is to implement `debounce` decorator. + +Hint: that's just a few lines if you think about it :) diff --git a/1-js/06-advanced-functions/09-call-apply-decorators/04-throttle/_js.view/test.js b/1-js/06-advanced-functions/09-call-apply-decorators/04-throttle/_js.view/test.js index 5339c8d11..e671438f6 100644 --- a/1-js/06-advanced-functions/09-call-apply-decorators/04-throttle/_js.view/test.js +++ b/1-js/06-advanced-functions/09-call-apply-decorators/04-throttle/_js.view/test.js @@ -7,8 +7,8 @@ describe("throttle(f, 1000)", function() { } before(function() { - f1000 = throttle(f, 1000); this.clock = sinon.useFakeTimers(); + f1000 = throttle(f, 1000); }); it("the first call runs now", function() { @@ -44,4 +44,20 @@ describe("throttle(f, 1000)", function() { this.clock.restore(); }); -}); \ No newline at end of file +}); + +describe('throttle', () => { + + it('runs a forwarded call once', done => { + let log = ''; + const f = str => log += str; + const f10 = throttle(f, 10); + f10('once'); + + setTimeout(() => { + assert.equal(log, 'once'); + done(); + }, 20); + }); + +}); diff --git a/1-js/06-advanced-functions/09-call-apply-decorators/04-throttle/solution.md b/1-js/06-advanced-functions/09-call-apply-decorators/04-throttle/solution.md index c844016d3..6950664be 100644 --- a/1-js/06-advanced-functions/09-call-apply-decorators/04-throttle/solution.md +++ b/1-js/06-advanced-functions/09-call-apply-decorators/04-throttle/solution.md @@ -12,11 +12,10 @@ function throttle(func, ms) { savedThis = this; return; } + isThrottled = true; func.apply(this, arguments); // (1) - isThrottled = true; - setTimeout(function() { isThrottled = false; // (3) if (savedArgs) { @@ -33,7 +32,7 @@ function throttle(func, ms) { A call to `throttle(func, ms)` returns `wrapper`. 1. During the first call, the `wrapper` just runs `func` and sets the cooldown state (`isThrottled = true`). -2. In this state all calls memorized in `savedArgs/savedThis`. Please note that both the context and the arguments are equally important and should be memorized. We need them simultaneously to reproduce the call. -3. ...Then after `ms` milliseconds pass, `setTimeout` triggers. The cooldown state is removed (`isThrottled = false`). And if we had ignored calls, then `wrapper` is executed with last memorized arguments and context. +2. In this state all calls are memorized in `savedArgs/savedThis`. Please note that both the context and the arguments are equally important and should be memorized. We need them simultaneously to reproduce the call. +3. After `ms` milliseconds pass, `setTimeout` triggers. The cooldown state is removed (`isThrottled = false`) and, if we had ignored calls, `wrapper` is executed with the last memorized arguments and context. The 3rd step runs not `func`, but `wrapper`, because we not only need to execute `func`, but once again enter the cooldown state and setup the timeout to reset it. diff --git a/1-js/06-advanced-functions/09-call-apply-decorators/04-throttle/task.md b/1-js/06-advanced-functions/09-call-apply-decorators/04-throttle/task.md index 8dd77368d..cbd473196 100644 --- a/1-js/06-advanced-functions/09-call-apply-decorators/04-throttle/task.md +++ b/1-js/06-advanced-functions/09-call-apply-decorators/04-throttle/task.md @@ -4,35 +4,40 @@ importance: 5 # Throttle decorator -Create a "throttling" decorator `throttle(f, ms)` -- that returns a wrapper, passing the call to `f` at maximum once per `ms` milliseconds. Those calls that fall into the "cooldown" period, are ignored. +Create a "throttling" decorator `throttle(f, ms)` -- that returns a wrapper. -**The difference with `debounce` -- if an ignored call is the last during the cooldown, then it executes at the end of the delay.** +When it's called multiple times, it passes the call to `f` at maximum once per `ms` milliseconds. + +Compared to the debounce decorator, the behavior is completely different: +- `debounce` runs the function once after the "cooldown" period. Good for processing the final result. +- `throttle` runs it not more often than given `ms` time. Good for regular updates that shouldn't be very often. + +In other words, `throttle` is like a secretary that accepts phone calls, but bothers the boss (calls the actual `f`) not more often than once per `ms` milliseconds. Let's check the real-life application to better understand that requirement and to see where it comes from. **For instance, we want to track mouse movements.** -In browser we can setup a function to run at every mouse movement and get the pointer location as it moves. During an active mouse usage, this function usually runs very frequently, can be something like 100 times per second (every 10 ms). - -**The tracking function should update some information on the web-page.** +In a browser we can setup a function to run at every mouse movement and get the pointer location as it moves. During an active mouse usage, this function usually runs very frequently, can be something like 100 times per second (every 10 ms). +**We'd like to update some information on the web-page when the pointer moves.** -Updating function `update()` is too heavy to do it on every micro-movement. There is also no sense in making it more often than once per 100ms. +...But updating function `update()` is too heavy to do it on every micro-movement. There is also no sense in updating more often than once per 100ms. -So we'll wrap it into the decorator: use `throttle(update, 100)` as the function to run on each mouse move instead of the original `update()`. The decorator will be called often, but `update()` will be called at maximum once per 100ms. +So we'll wrap it into the decorator: use `throttle(update, 100)` as the function to run on each mouse move instead of the original `update()`. The decorator will be called often, but forward the call to `update()` at maximum once per 100ms. Visually, it will look like this: -1. For the first mouse movement the decorated variant passes the call to `update`. That's important, the user sees our reaction to their move immediately. +1. For the first mouse movement the decorated variant immediately passes the call to `update`. That's important, the user sees our reaction to their move immediately. 2. Then as the mouse moves on, until `100ms` nothing happens. The decorated variant ignores calls. -3. At the end of `100ms` -- one more `update` happens with the last coordinates. -4. Then, finally, the mouse stops somewhere. The decorated variant waits until `100ms` expire and then runs `update` with last coordinates. So, perhaps the most important, the final mouse coordinates are processed. +3. At the end of `100ms` -- one more `update` happens with the last coordinates. +4. Then, finally, the mouse stops somewhere. The decorated variant waits until `100ms` expire and then runs `update` with last coordinates. So, quite important, the final mouse coordinates are processed. A code example: ```js function f(a) { - console.log(a) -}; + console.log(a); +} // f1000 passes calls to f at maximum once per 1000 ms let f1000 = throttle(f, 1000); diff --git a/1-js/06-advanced-functions/09-call-apply-decorators/article.md b/1-js/06-advanced-functions/09-call-apply-decorators/article.md index f2182b6fd..c5d785493 100644 --- a/1-js/06-advanced-functions/09-call-apply-decorators/article.md +++ b/1-js/06-advanced-functions/09-call-apply-decorators/article.md @@ -6,9 +6,9 @@ JavaScript gives exceptional flexibility when dealing with functions. They can b Let's say we have a function `slow(x)` which is CPU-heavy, but its results are stable. In other words, for the same `x` it always returns the same result. -If the function is called often, we may want to cache (remember) the results for different `x` to avoid spending extra-time on recalculations. +If the function is called often, we may want to cache (remember) the results to avoid spending extra-time on recalculations. -But instead of adding that functionality into `slow()` we'll create a wrapper. As we'll see, there are many benefits of doing so. +But instead of adding that functionality into `slow()` we'll create a wrapper function, that adds caching. As we'll see, there are many benefits of doing so. Here's the code, and explanations follow: @@ -23,24 +23,24 @@ function cachingDecorator(func) { let cache = new Map(); return function(x) { - if (cache.has(x)) { // if the result is in the map - return cache.get(x); // return it + if (cache.has(x)) { // if there's such key in cache + return cache.get(x); // read the result from it } - let result = func(x); // otherwise call func + let result = func(x); // otherwise call func - cache.set(x, result); // and cache (remember) the result + cache.set(x, result); // and cache (remember) the result return result; }; } slow = cachingDecorator(slow); -alert( slow(1) ); // slow(1) is cached -alert( "Again: " + slow(1) ); // the same +alert( slow(1) ); // slow(1) is cached and the result returned +alert( "Again: " + slow(1) ); // slow(1) result returned from cache -alert( slow(2) ); // slow(2) is cached -alert( "Again: " + slow(2) ); // the same as the previous line +alert( slow(2) ); // slow(2) is cached and the result returned +alert( "Again: " + slow(2) ); // slow(2) result returned from cache ``` In the code above `cachingDecorator` is a *decorator*: a special function that takes another function and alters its behavior. @@ -49,21 +49,18 @@ The idea is that we can call `cachingDecorator` for any function, and it will re By separating caching from the main function code we also keep the main code simpler. -Now let's get into details of how it works. - The result of `cachingDecorator(func)` is a "wrapper": `function(x)` that "wraps" the call of `func(x)` into caching logic:  -As we can see, the wrapper returns the result of `func(x)` "as is". From an outside code, the wrapped `slow` function still does the same. It just got a caching aspect added to its behavior. +From an outside code, the wrapped `slow` function still does the same. It just got a caching aspect added to its behavior. To summarize, there are several benefits of using a separate `cachingDecorator` instead of altering the code of `slow` itself: - The `cachingDecorator` is reusable. We can apply it to another function. -- The caching logic is separate, it did not increase the complexity of `slow` itself (if there were any). +- The caching logic is separate, it did not increase the complexity of `slow` itself (if there was any). - We can combine multiple decorators if needed (other decorators will follow). - ## Using "func.call" for the context The caching decorator mentioned above is not suited to work with object methods. @@ -78,7 +75,7 @@ let worker = { }, slow(x) { - // actually, there can be a scary CPU-heavy task here + // scary CPU-heavy task here alert("Called with " + x); return x * this.someMethod(); // (*) } @@ -152,8 +149,8 @@ let user = { name: "John" }; let admin = { name: "Admin" }; // use call to pass different objects as "this" -sayHi.call( user ); // this = John -sayHi.call( admin ); // this = Admin +sayHi.call( user ); // John +sayHi.call( admin ); // Admin ``` And here we use `call` to call `say` with the given context and phrase: @@ -170,10 +167,8 @@ let user = { name: "John" }; say.call( user, "Hello" ); // John: Hello ``` - In our case, we can use `call` in the wrapper to pass the context to the original function: - ```js run let worker = { someMethod() { @@ -214,7 +209,7 @@ To make it all clear, let's see more deeply how `this` is passed along: 2. So when `worker.slow(2)` is executed, the wrapper gets `2` as an argument and `this=worker` (it's the object before dot). 3. Inside the wrapper, assuming the result is not yet cached, `func.call(this, x)` passes the current `this` (`=worker`) and the current argument (`=2`) to the original method. -## Going multi-argument with "func.apply" +## Going multi-argument Now let's make `cachingDecorator` even more universal. Till now it was working only with single-argument functions. @@ -231,9 +226,7 @@ let worker = { worker.slow = cachingDecorator(worker.slow); ``` -We have two tasks to solve here. - -First is how to use both arguments `min` and `max` for the key in `cache` map. Previously, for a single argument `x` we could just `cache.set(x, result)` to save the result and `cache.get(x)` to retrieve it. But now we need to remember the result for a *combination of arguments* `(min,max)`. The native `Map` takes single value only as the key. +Previously, for a single argument `x` we could just `cache.set(x, result)` to save the result and `cache.get(x)` to retrieve it. But now we need to remember the result for a *combination of arguments* `(min,max)`. The native `Map` takes single value only as the key. There are many solutions possible: @@ -241,85 +234,11 @@ There are many solutions possible: 2. Use nested maps: `cache.set(min)` will be a `Map` that stores the pair `(max, result)`. So we can get `result` as `cache.get(min).get(max)`. 3. Join two values into one. In our particular case we can just use a string `"min,max"` as the `Map` key. For flexibility, we can allow to provide a *hashing function* for the decorator, that knows how to make one value from many. - For many practical applications, the 3rd variant is good enough, so we'll stick to it. -The second task to solve is how to pass many arguments to `func`. Currently, the wrapper `function(x)` assumes a single argument, and `func.call(this, x)` passes it. - -Here we can use another built-in method [func.apply](mdn:js/Function/apply). - -The syntax is: - -```js -func.apply(context, args) -``` - -It runs the `func` setting `this=context` and using an array-like object `args` as the list of arguments. - - -For instance, these two calls are almost the same: - -```js -func(1, 2, 3); -func.apply(context, [1, 2, 3]) -``` - -Both run `func` giving it arguments `1,2,3`. But `apply` also sets `this=context`. - -For instance, here `say` is called with `this=user` and `messageData` as a list of arguments: - -```js run -function say(time, phrase) { - alert(`[${time}] ${this.name}: ${phrase}`); -} - -let user = { name: "John" }; - -let messageData = ['10:00', 'Hello']; // become time and phrase - -*!* -// user becomes this, messageData is passed as a list of arguments (time, phrase) -say.apply(user, messageData); // [10:00] John: Hello (this=user) -*/!* -``` - -The only syntax difference between `call` and `apply` is that `call` expects a list of arguments, while `apply` takes an array-like object with them. - -We already know the spread operator `...` from the chapter <info:rest-parameters-spread-operator> that can pass an array (or any iterable) as a list of arguments. So if we use it with `call`, we can achieve almost the same as `apply`. - -These two calls are almost equivalent: - -```js -let args = [1, 2, 3]; - -*!* -func.call(context, ...args); // pass an array as list with spread operator -func.apply(context, args); // is same as using apply -*/!* -``` - -If we look more closely, there's a minor difference between such uses of `call` and `apply`. - -- The spread operator `...` allows to pass *iterable* `args` as the list to `call`. -- The `apply` accepts only *array-like* `args`. - -So, these calls complement each other. Where we expect an iterable, `call` works, where we expect an array-like, `apply` works. - -And if `args` is both iterable and array-like, like a real array, then we technically could use any of them, but `apply` will probably be faster, because it's a single operation. Most JavaScript engines internally optimize it better than a pair `call + spread`. - -One of the most important uses of `apply` is passing the call to another function, like this: - -```js -let wrapper = function() { - return anotherFunction.apply(this, arguments); -}; -``` - -That's called *call forwarding*. The `wrapper` passes everything it gets: the context `this` and arguments to `anotherFunction` and returns back its result. +Also we need to pass not just `x`, but all arguments in `func.call`. Let's recall that in a `function()` we can get a pseudo-array of its arguments as `arguments`, so `func.call(this, x)` should be replaced with `func.call(this, ...arguments)`. -When an external code calls such `wrapper`, it is indistinguishable from the call of the original function. - -Now let's bake it all into the more powerful `cachingDecorator`: +Here's a more powerful `cachingDecorator`: ```js run let worker = { @@ -340,7 +259,7 @@ function cachingDecorator(func, hash) { } *!* - let result = func.apply(this, arguments); // (**) + let result = func.call(this, ...arguments); // (**) */!* cache.set(key, result); @@ -358,13 +277,54 @@ alert( worker.slow(3, 5) ); // works alert( "Again " + worker.slow(3, 5) ); // same (cached) ``` -Now the wrapper operates with any number of arguments. +Now it works with any number of arguments (though the hash function would also need to be adjusted to allow any number of arguments. An interesting way to handle this will be covered below). There are two changes: - In the line `(*)` it calls `hash` to create a single key from `arguments`. Here we use a simple "joining" function that turns arguments `(3, 5)` into the key `"3,5"`. More complex cases may require other hashing functions. -- Then `(**)` uses `func.apply` to pass both the context and all arguments the wrapper got (no matter how many) to the original function. +- Then `(**)` uses `func.call(this, ...arguments)` to pass both the context and all arguments the wrapper got (not just the first one) to the original function. + +## func.apply + +Instead of `func.call(this, ...arguments)` we could use `func.apply(this, arguments)`. + +The syntax of built-in method [func.apply](mdn:js/Function/apply) is: + +```js +func.apply(context, args) +``` + +It runs the `func` setting `this=context` and using an array-like object `args` as the list of arguments. + +The only syntax difference between `call` and `apply` is that `call` expects a list of arguments, while `apply` takes an array-like object with them. + +So these two calls are almost equivalent: + +```js +func.call(context, ...args); +func.apply(context, args); +``` + +They perform the same call of `func` with given context and arguments. + +There's only a subtle difference regarding `args`: + +- The spread syntax `...` allows to pass *iterable* `args` as the list to `call`. +- The `apply` accepts only *array-like* `args`. +...And for objects that are both iterable and array-like, such as a real array, we can use any of them, but `apply` will probably be faster, because most JavaScript engines internally optimize it better. + +Passing all arguments along with the context to another function is called *call forwarding*. + +That's the simplest form of it: + +```js +let wrapper = function() { + return func.apply(this, arguments); +}; +``` + +When an external code calls such `wrapper`, it is indistinguishable from the call of the original function `func`. ## Borrowing a method [#method-borrowing] @@ -386,7 +346,7 @@ function hash(args) { } ``` -...Unfortunately, that won't work. Because we are calling `hash(arguments)` and `arguments` object is both iterable and array-like, but not a real array. +...Unfortunately, that won't work. Because we are calling `hash(arguments)`, and `arguments` object is both iterable and array-like, but not a real array. So calling `join` on it would fail, as we can see below: @@ -414,7 +374,7 @@ hash(1, 2); The trick is called *method borrowing*. -We take (borrow) a join method from a regular array `[].join`. And use `[].join.call` to run it in the context of `arguments`. +We take (borrow) a join method from a regular array (`[].join`) and use `[].join.call` to run it in the context of `arguments`. Why does it work? @@ -432,12 +392,20 @@ Taken from the specification almost "as-is": So, technically it takes `this` and joins `this[0]`, `this[1]` ...etc together. It's intentionally written in a way that allows any array-like `this` (not a coincidence, many methods follow this practice). That's why it also works with `this=arguments`. +## Decorators and function properties + +It is generally safe to replace a function or a method with a decorated one, except for one little thing. If the original function had properties on it, like `func.calledCount` or whatever, then the decorated one will not provide them. Because that is a wrapper. So one needs to be careful if one uses them. + +E.g. in the example above if `slow` function had any properties on it, then `cachingDecorator(slow)` is a wrapper without them. + +Some decorators may provide their own properties. E.g. a decorator may count how many times a function was invoked and how much time it took, and expose this information via wrapper properties. + +There exists a way to create decorators that keep access to function properties, but this requires using a special `Proxy` object to wrap a function. We'll discuss it later in the article <info:proxy#proxy-apply>. + ## Summary *Decorator* is a wrapper around a function that alters its behavior. The main job is still carried out by the function. -It is generally safe to replace a function or a method with a decorated one, except for one little thing. If the original function had properties on it, like `func.calledCount` or whatever, then the decorated one will not provide them. Because that is a wrapper. So one needs to be careful if one uses them. Some decorators provide their own properties. - Decorators can be seen as "features" or "aspects" that can be added to a function. We can add one or add many. And all this without changing its code! To implement `cachingDecorator`, we studied methods: @@ -450,10 +418,9 @@ The generic *call forwarding* is usually done with `apply`: ```js let wrapper = function() { return original.apply(this, arguments); -} +}; ``` -We also saw an example of *method borrowing* when we take a method from an object and `call` it in the context of another object. It is quite common to take array methods and apply them to arguments. The alternative is to use rest parameters object that is a real array. - +We also saw an example of *method borrowing* when we take a method from an object and `call` it in the context of another object. It is quite common to take array methods and apply them to `arguments`. The alternative is to use rest parameters object that is a real array. There are many decorators there in the wild. Check how well you got them by solving the tasks of this chapter. diff --git a/1-js/06-advanced-functions/10-bind/4-function-property-after-bind/task.md b/1-js/06-advanced-functions/10-bind/4-function-property-after-bind/task.md index 8cd18ec56..d6cfb44bf 100644 --- a/1-js/06-advanced-functions/10-bind/4-function-property-after-bind/task.md +++ b/1-js/06-advanced-functions/10-bind/4-function-property-after-bind/task.md @@ -4,7 +4,7 @@ importance: 5 # Function property after bind -There's a value in the property of a function. Will it change after `bind`? Why, elaborate? +There's a value in the property of a function. Will it change after `bind`? Why, or why not? ```js run function sayHi() { diff --git a/1-js/06-advanced-functions/10-bind/5-question-use-bind/solution.md b/1-js/06-advanced-functions/10-bind/5-question-use-bind/solution.md index 0cb673b12..4a381c0b4 100644 --- a/1-js/06-advanced-functions/10-bind/5-question-use-bind/solution.md +++ b/1-js/06-advanced-functions/10-bind/5-question-use-bind/solution.md @@ -1,5 +1,5 @@ -The error occurs because `ask` gets functions `loginOk/loginFail` without the object. +The error occurs because `askPassword` gets functions `loginOk/loginFail` without the object. When it calls them, they naturally assume `this=undefined`. @@ -38,6 +38,6 @@ An alternative solution could be: askPassword(() => user.loginOk(), () => user.loginFail()); ``` -Usually that also works, but may fail in more complex situations where `user` has a chance of being overwritten between the moments of asking and running `() => user.loginOk()`. - +Usually that also works and looks good. +It's a bit less reliable though in more complex situations where `user` variable might change *after* `askPassword` is called, but *before* the visitor answers and calls `() => user.loginOk()`. diff --git a/1-js/06-advanced-functions/10-bind/5-question-use-bind/task.md b/1-js/06-advanced-functions/10-bind/5-question-use-bind/task.md index eb19e6644..fe6a9b4eb 100644 --- a/1-js/06-advanced-functions/10-bind/5-question-use-bind/task.md +++ b/1-js/06-advanced-functions/10-bind/5-question-use-bind/task.md @@ -2,7 +2,7 @@ importance: 5 --- -# Ask losing this +# Fix a function that loses "this" The call to `askPassword()` in the code below should check the password and then call `user.loginOk/loginFail` depending on the answer. @@ -34,5 +34,3 @@ let user = { askPassword(user.loginOk, user.loginFail); */!* ``` - - diff --git a/1-js/06-advanced-functions/11-currying-partials/1-ask-currying/solution.md b/1-js/06-advanced-functions/10-bind/6-ask-partial/solution.md similarity index 100% rename from 1-js/06-advanced-functions/11-currying-partials/1-ask-currying/solution.md rename to 1-js/06-advanced-functions/10-bind/6-ask-partial/solution.md diff --git a/1-js/06-advanced-functions/11-currying-partials/1-ask-currying/task.md b/1-js/06-advanced-functions/10-bind/6-ask-partial/task.md similarity index 82% rename from 1-js/06-advanced-functions/11-currying-partials/1-ask-currying/task.md rename to 1-js/06-advanced-functions/10-bind/6-ask-partial/task.md index f8b83d7a2..c90851c2b 100644 --- a/1-js/06-advanced-functions/11-currying-partials/1-ask-currying/task.md +++ b/1-js/06-advanced-functions/10-bind/6-ask-partial/task.md @@ -8,7 +8,7 @@ The task is a little more complex variant of <info:task/question-use-bind>. The `user` object was modified. Now instead of two functions `loginOk/loginFail`, it has a single function `user.login(true/false)`. -What to pass `askPassword` in the code below, so that it calls `user.login(true)` as `ok` and `user.login(false)` as `fail`? +What should we pass `askPassword` in the code below, so that it calls `user.login(true)` as `ok` and `user.login(false)` as `fail`? ```js function askPassword(ok, fail) { diff --git a/1-js/06-advanced-functions/10-bind/article.md b/1-js/06-advanced-functions/10-bind/article.md index 06e2000ff..7a6e47b90 100644 --- a/1-js/06-advanced-functions/10-bind/article.md +++ b/1-js/06-advanced-functions/10-bind/article.md @@ -5,13 +5,13 @@ libs: # Function binding -When using `setTimeout` with object methods or passing object methods along, there's a known problem: "losing `this`". +When passing object methods as callbacks, for instance to `setTimeout`, there's a known problem: "losing `this`". -Suddenly, `this` just stops working right. The situation is typical for novice developers, but happens with experienced ones as well. +In this chapter we'll see the ways to fix it. ## Losing "this" -We already know that in JavaScript it's easy to lose `this`. Once a method is passed somewhere separately from the object -- `this` is lost. +We've already seen examples of losing `this`. Once a method is passed somewhere separately from the object -- `this` is lost. Here's how it may happen with `setTimeout`: @@ -37,7 +37,7 @@ let f = user.sayHi; setTimeout(f, 1000); // lost user context ``` -The method `setTimeout` in-browser is a little special: it sets `this=window` for the function call (for Node.js, `this` becomes the timer object, but doesn't really matter here). So for `this.firstName` it tries to get `window.firstName`, which does not exist. In other similar cases as we'll see, usually `this` just becomes `undefined`. +The method `setTimeout` in-browser is a little special: it sets `this=window` for the function call (for Node.js, `this` becomes the timer object, but doesn't really matter here). So for `this.firstName` it tries to get `window.firstName`, which does not exist. In other similar cases, usually `this` just becomes `undefined`. The task is quite typical -- we want to pass an object method somewhere else (here -- to the scheduler) where it will be called. How to make sure that it will be called in the right context? @@ -83,10 +83,12 @@ let user = { setTimeout(() => user.sayHi(), 1000); -// ...within 1 second -user = { sayHi() { alert("Another user in setTimeout!"); } }; +// ...the value of user changes within 1 second +user = { + sayHi() { alert("Another user in setTimeout!"); } +}; -// Another user in setTimeout?!? +// Another user in setTimeout! ``` The next solution guarantees that such thing won't happen. @@ -98,7 +100,7 @@ Functions provide a built-in method [bind](mdn:js/Function/bind) that allows to The basic syntax is: ```js -// more complex syntax will be little later +// more complex syntax will come a little later let boundFunc = func.bind(context); ``` @@ -123,7 +125,7 @@ funcUser(); // John */!* ``` -Here `func.bind(user)` as a "bound variant" of `func`, with fixed `this=user`. +Here `func.bind(user)` is a "bound variant" of `func`, with fixed `this=user`. All arguments are passed to the original `func` "as is", for instance: @@ -159,9 +161,16 @@ let user = { let sayHi = user.sayHi.bind(user); // (*) */!* +// can run it without an object sayHi(); // Hello, John! setTimeout(sayHi, 1000); // Hello, John! + +// even if the value of user changes within 1 second +// sayHi uses the pre-bound value which is reference to the old user object +user = { + sayHi() { alert("Another user in setTimeout!"); } +}; ``` In the line `(*)` we take the method `user.sayHi` and bind it to `user`. The `sayHi` is a "bound" function, that can be called alone or passed to `setTimeout` -- doesn't matter, the context will be right. @@ -178,8 +187,8 @@ let user = { let say = user.say.bind(user); -say("Hello"); // Hello, John ("Hello" argument is passed to say) -say("Bye"); // Bye, John ("Bye" is passed to say) +say("Hello"); // Hello, John! ("Hello" argument is passed to say) +say("Bye"); // Bye, John! ("Bye" is passed to say) ``` ````smart header="Convenience method: `bindAll`" @@ -193,11 +202,127 @@ for (let key in user) { } ``` -JavaScript libraries also provide functions for convenient mass binding , e.g. [_.bindAll(obj)](http://lodash.com/docs#bindAll) in lodash. +JavaScript libraries also provide functions for convenient mass binding , e.g. [_.bindAll(object, methodNames)](https://lodash.com/docs#bindAll) in lodash. ```` +## Partial functions + +Until now we have only been talking about binding `this`. Let's take it a step further. + +We can bind not only `this`, but also arguments. That's rarely done, but sometimes can be handy. + +The full syntax of `bind`: + +```js +let bound = func.bind(context, [arg1], [arg2], ...); +``` + +It allows to bind context as `this` and starting arguments of the function. + +For instance, we have a multiplication function `mul(a, b)`: + +```js +function mul(a, b) { + return a * b; +} +``` + +Let's use `bind` to create a function `double` on its base: + +```js run +function mul(a, b) { + return a * b; +} + +*!* +let double = mul.bind(null, 2); +*/!* + +alert( double(3) ); // = mul(2, 3) = 6 +alert( double(4) ); // = mul(2, 4) = 8 +alert( double(5) ); // = mul(2, 5) = 10 +``` + +The call to `mul.bind(null, 2)` creates a new function `double` that passes calls to `mul`, fixing `null` as the context and `2` as the first argument. Further arguments are passed "as is". + +That's called [partial function application](https://en.wikipedia.org/wiki/Partial_application) -- we create a new function by fixing some parameters of the existing one. + +Please note that we actually don't use `this` here. But `bind` requires it, so we must put in something like `null`. + +The function `triple` in the code below triples the value: + +```js run +function mul(a, b) { + return a * b; +} + +*!* +let triple = mul.bind(null, 3); +*/!* + +alert( triple(3) ); // = mul(3, 3) = 9 +alert( triple(4) ); // = mul(3, 4) = 12 +alert( triple(5) ); // = mul(3, 5) = 15 +``` + +Why do we usually make a partial function? + +The benefit is that we can create an independent function with a readable name (`double`, `triple`). We can use it and not provide the first argument every time as it's fixed with `bind`. + +In other cases, partial application is useful when we have a very generic function and want a less universal variant of it for convenience. + +For instance, we have a function `send(from, to, text)`. Then, inside a `user` object we may want to use a partial variant of it: `sendTo(to, text)` that sends from the current user. + +## Going partial without context + +What if we'd like to fix some arguments, but not the context `this`? For example, for an object method. + +The native `bind` does not allow that. We can't just omit the context and jump to arguments. + +Fortunately, a function `partial` for binding only arguments can be easily implemented. + +Like this: + +```js run +*!* +function partial(func, ...argsBound) { + return function(...args) { // (*) + return func.call(this, ...argsBound, ...args); + } +} +*/!* + +// Usage: +let user = { + firstName: "John", + say(time, phrase) { + alert(`[${time}] ${this.firstName}: ${phrase}!`); + } +}; + +// add a partial method with fixed time +user.sayNow = partial(user.say, new Date().getHours() + ':' + new Date().getMinutes()); + +user.sayNow("Hello"); +// Something like: +// [10:00] John: Hello! +``` + +The result of `partial(func[, arg1, arg2...])` call is a wrapper `(*)` that calls `func` with: +- Same `this` as it gets (for `user.sayNow` call it's `user`) +- Then gives it `...argsBound` -- arguments from the `partial` call (`"10:00"`) +- Then gives it `...args` -- arguments given to the wrapper (`"Hello"`) + +So easy to do it with the spread syntax, right? + +Also there's a ready [_.partial](https://lodash.com/docs#partial) implementation from lodash library. + ## Summary Method `func.bind(context, ...args)` returns a "bound variant" of function `func` that fixes the context `this` and first arguments if given. -Usually we apply `bind` to fix `this` in an object method, so that we can pass it somewhere. For example, to `setTimeout`. There are more reasons to `bind` in the modern development, we'll meet them later. +Usually we apply `bind` to fix `this` for an object method, so that we can pass it somewhere. For example, to `setTimeout`. + +When we fix some arguments of an existing function, the resulting (less universal) function is called *partially applied* or *partial*. + +Partials are convenient when we don't want to repeat the same argument over and over again. Like if we have a `send(from, to)` function, and `from` should always be the same for our task, we can get a partial and go on with it. diff --git a/1-js/06-advanced-functions/11-currying-partials/article.md b/1-js/06-advanced-functions/11-currying-partials/article.md deleted file mode 100644 index b97e6a5fc..000000000 --- a/1-js/06-advanced-functions/11-currying-partials/article.md +++ /dev/null @@ -1,309 +0,0 @@ -libs: - - lodash - ---- - -# Currying and partials - -Until now we have only been talking about binding `this`. Let's take it a step further. - -We can bind not only `this`, but also arguments. That's rarely done, but sometimes can be handy. - -The full syntax of `bind`: - -```js -let bound = func.bind(context, arg1, arg2, ...); -``` - -It allows to bind context as `this` and starting arguments of the function. - -For instance, we have a multiplication function `mul(a, b)`: - -```js -function mul(a, b) { - return a * b; -} -``` - -Let's use `bind` to create a function `double` on its base: - -```js run -function mul(a, b) { - return a * b; -} - -*!* -let double = mul.bind(null, 2); -*/!* - -alert( double(3) ); // = mul(2, 3) = 6 -alert( double(4) ); // = mul(2, 4) = 8 -alert( double(5) ); // = mul(2, 5) = 10 -``` - -The call to `mul.bind(null, 2)` creates a new function `double` that passes calls to `mul`, fixing `null` as the context and `2` as the first argument. Further arguments are passed "as is". - -That's called [partial function application](https://en.wikipedia.org/wiki/Partial_application) -- we create a new function by fixing some parameters of the existing one. - -Please note that here we actually don't use `this` here. But `bind` requires it, so we must put in something like `null`. - -The function `triple` in the code below triples the value: - -```js run -function mul(a, b) { - return a * b; -} - -*!* -let triple = mul.bind(null, 3); -*/!* - -alert( triple(3) ); // = mul(3, 3) = 9 -alert( triple(4) ); // = mul(3, 4) = 12 -alert( triple(5) ); // = mul(3, 5) = 15 -``` - -Why do we usually make a partial function? - -The benefit is that we can create an independent function with a readable name (`double`, `triple`). We can use it and not provide first argument of every time as it's fixed with `bind`. - -In other cases, partial application is useful when we have a very generic function and want a less universal variant of it for convenience. - -For instance, we have a function `send(from, to, text)`. Then, inside a `user` object we may want to use a partial variant of it: `sendTo(to, text)` that sends from the current user. - -## Going partial without context - -What if we'd like to fix some arguments, but not bind `this`? - -The native `bind` does not allow that. We can't just omit the context and jump to arguments. - -Fortunately, a `partial` function for binding only arguments can be easily implemented. - -Like this: - -```js run -*!* -function partial(func, ...argsBound) { - return function(...args) { // (*) - return func.call(this, ...argsBound, ...args); - } -} -*/!* - -// Usage: -let user = { - firstName: "John", - say(time, phrase) { - alert(`[${time}] ${this.firstName}: ${phrase}!`); - } -}; - -// add a partial method that says something now by fixing the first argument -user.sayNow = partial(user.say, new Date().getHours() + ':' + new Date().getMinutes()); - -user.sayNow("Hello"); -// Something like: -// [10:00] John: Hello! -``` - -The result of `partial(func[, arg1, arg2...])` call is a wrapper `(*)` that calls `func` with: -- Same `this` as it gets (for `user.sayNow` call it's `user`) -- Then gives it `...argsBound` -- arguments from the `partial` call (`"10:00"`) -- Then gives it `...args` -- arguments given to the wrapper (`"Hello"`) - -So easy to do it with the spread operator, right? - -Also there's a ready [_.partial](https://lodash.com/docs#partial) implementation from lodash library. - -## Currying - -Sometimes people mix up partial function application mentioned above with another thing named "currying". That's another interesting technique of working with functions that we just have to mention here. - -[Currying](https://en.wikipedia.org/wiki/Currying) is a transformation of functions that translates a function from callable as `f(a, b, c)` into callable as `f(a)(b)(c)`. In JavaScript, we usually make a wrapper to keep the original function. - -Currying doesn't call a function. It just transforms it. - -Let's create a helper `curry(f)` function that performs currying for a two-argument `f`. In other words, `curry(f)` for two-argument `f(a, b)` translates it into `f(a)(b)` - -```js run -*!* -function curry(f) { // curry(f) does the currying transform - return function(a) { - return function(b) { - return f(a, b); - }; - }; -} -*/!* - -// usage -function sum(a, b) { - return a + b; -} - -let carriedSum = curry(sum); - -alert( carriedSum(1)(2) ); // 3 -``` - -As you can see, the implementation is a series of wrappers. - -- The result of `curry(func)` is a wrapper `function(a)`. -- When it is called like `sum(1)`, the argument is saved in the Lexical Environment, and a new wrapper is returned `function(b)`. -- Then `sum(1)(2)` finally calls `function(b)` providing `2`, and it passes the call to the original multi-argument `sum`. - -More advanced implementations of currying like [_.curry](https://lodash.com/docs#curry) from lodash library do something more sophisticated. They return a wrapper that allows a function to be called normally when all arguments are supplied *or* returns a partial otherwise. - -```js -function curry(f) { - return function(...args) { - // if args.length == f.length (as many arguments as f has), - // then pass the call to f - // otherwise return a partial function that fixes args as first arguments - }; -} -``` - -## Currying? What for? - -To understand the benefits we definitely need a worthy real-life example. - -Advanced currying allows the function to be both callable normally and partially. - -For instance, we have the logging function `log(date, importance, message)` that formats and outputs the information. In real projects such functions also have many other useful features like sending logs over the network: - -```js -function log(date, importance, message) { - alert(`[${date.getHours()}:${date.getMinutes()}] [${importance}] ${message}`); -} -``` - -Let's curry it! - -```js -log = _.curry(log); -``` - -After that `log` still works the normal way: - -```js -log(new Date(), "DEBUG", "some debug"); -``` - -...But also can be called in the curried form: - -```js -log(new Date())("DEBUG")("some debug"); // log(a)(b)(c) -``` - -Let's get a convenience function for today's logs: - -```js -// todayLog will be the partial of log with fixed first argument -let todayLog = log(new Date()); - -// use it -todayLog("INFO", "message"); // [HH:mm] INFO message -``` - -And now a convenience function for today's debug messages: - -```js -let todayDebug = todayLog("DEBUG"); - -todayDebug("message"); // [HH:mm] DEBUG message -``` - -So: -1. We didn't lose anything after currying: `log` is still callable normally. -2. We were able to generate partial functions such as for today's logs. - -## Advanced curry implementation - -In case you'd like to get in details (not obligatory!), here's the "advanced" curry implementation that we could use above. - -It's pretty short: - -```js -function curry(func) { - - return function curried(...args) { - if (args.length >= func.length) { - return func.apply(this, args); - } else { - return function(...args2) { - return curried.apply(this, args.concat(args2)); - } - } - }; - -} -``` - -Usage examples: - -```js -function sum(a, b, c) { - return a + b + c; -} - -let curriedSum = curry(sum); - -alert( curriedSum(1, 2, 3) ); // 6, still callable normally -alert( curriedSum(1)(2,3) ); // 6, currying of 1st arg -alert( curriedSum(1)(2)(3) ); // 6, full currying -``` - -The new `curry` may look complicated, but it's actually easy to understand. - -The result of `curry(func)` is the wrapper `curried` that looks like this: - -```js -// func is the function to transform -function curried(...args) { - if (args.length >= func.length) { // (1) - return func.apply(this, args); - } else { - return function pass(...args2) { // (2) - return curried.apply(this, args.concat(args2)); - } - } -}; -``` - -When we run it, there are two branches: - -1. Call now: if passed `args` count is the same as the original function has in its definition (`func.length`) or longer, then just pass the call to it. -2. Get a partial: otherwise, `func` is not called yet. Instead, another wrapper `pass` is returned, that will re-apply `curried` providing previous arguments together with the new ones. Then on a new call, again, we'll get either a new partial (if not enough arguments) or, finally, the result. - -For instance, let's see what happens in the case of `sum(a, b, c)`. Three arguments, so `sum.length = 3`. - -For the call `curried(1)(2)(3)`: - -1. The first call `curried(1)` remembers `1` in its Lexical Environment, and returns a wrapper `pass`. -2. The wrapper `pass` is called with `(2)`: it takes previous args (`1`), concatenates them with what it got `(2)` and calls `curried(1, 2)` with them together. - - As the argument count is still less than 3, `curry` returns `pass`. -3. The wrapper `pass` is called again with `(3)`, for the next call `pass(3)` takes previous args (`1`, `2`) and adds `3` to them, making the call `curried(1, 2, 3)` -- there are `3` arguments at last, they are given to the original function. - -If that's still not obvious, just trace the calls sequence in your mind or on the paper. - -```smart header="Fixed-length functions only" -The currying requires the function to have a known fixed number of arguments. -``` - -```smart header="A little more than currying" -By definition, currying should convert `sum(a, b, c)` into `sum(a)(b)(c)`. - -But most implementations of currying in JavaScript are advanced, as described: they also keep the function callable in the multi-argument variant. -``` - -## Summary - -- When we fix some arguments of an existing function, the resulting (less universal) function is called *a partial*. We can use `bind` to get a partial, but there are other ways also. - - Partials are convenient when we don't want to repeat the same argument over and over again. Like if we have a `send(from, to)` function, and `from` should always be the same for our task, we can get a partial and go on with it. - -- *Currying* is a transform that makes `f(a,b,c)` callable as `f(a)(b)(c)`. JavaScript implementations usually both keep the function callable normally and return the partial if arguments count is not enough. - - Currying is great when we want easy partials. As we've seen in the logging example: the universal function `log(date, importance, message)` after currying gives us partials when called with one argument like `log(date)` or two arguments `log(date, importance)`. diff --git a/1-js/06-advanced-functions/12-arrow-functions/article.md b/1-js/06-advanced-functions/12-arrow-functions/article.md index 1ade1a419..8730277ad 100644 --- a/1-js/06-advanced-functions/12-arrow-functions/article.md +++ b/1-js/06-advanced-functions/12-arrow-functions/article.md @@ -2,9 +2,9 @@ Let's revisit arrow functions. -Arrow functions are not just a "shorthand" for writing small stuff. +Arrow functions are not just a "shorthand" for writing small stuff. They have some very specific and useful features. -JavaScript is full of situations where we need to write a small function, that's executed somewhere else. +JavaScript is full of situations where we need to write a small function that's executed somewhere else. For instance: @@ -14,7 +14,7 @@ For instance: It's in the very spirit of JavaScript to create a function and pass it somewhere. -And in such functions we usually don't want to leave the current context. +And in such functions we usually don't want to leave the current context. That's where arrow functions come in handy. ## Arrow functions have no "this" @@ -52,7 +52,7 @@ let group = { *!* this.students.forEach(function(student) { // Error: Cannot read property 'title' of undefined - alert(this.title + ': ' + student) + alert(this.title + ': ' + student); }); */!* } @@ -87,7 +87,7 @@ For instance, `defer(f, ms)` gets a function and returns a wrapper around it tha ```js run function defer(f, ms) { return function() { - setTimeout(() => f.apply(this, arguments), ms) + setTimeout(() => f.apply(this, arguments), ms); }; } @@ -118,9 +118,9 @@ Here we had to create additional variables `args` and `ctx` so that the function Arrow functions: -- Do not have `this`. -- Do not have `arguments`. -- Can't be called with `new`. -- (They also don't have `super`, but we didn't study it. Will be in the chapter <info:class-inheritance>). +- Do not have `this` +- Do not have `arguments` +- Can't be called with `new` +- They also don't have `super`, but we didn't study it yet. We will on the chapter <info:class-inheritance> -That's because they are meant for short pieces of code that do not have their own "context", but rather works in the current one. And they really shine in that use case. +That's because they are meant for short pieces of code that do not have their own "context", but rather work in the current one. And they really shine in that use case. diff --git a/1-js/07-object-properties/01-property-descriptors/article.md b/1-js/07-object-properties/01-property-descriptors/article.md index 7768b3557..0a945b377 100644 --- a/1-js/07-object-properties/01-property-descriptors/article.md +++ b/1-js/07-object-properties/01-property-descriptors/article.md @@ -3,7 +3,7 @@ As we know, objects can store properties. -Till now, a property was a simple "key-value" pair to us. But an object property is actually a more flexible and powerful thing. +Until now, a property was a simple "key-value" pair to us. But an object property is actually a more flexible and powerful thing. In this chapter we'll study additional configuration options, and in the next we'll see how to invisibly turn them into getter/setter functions. @@ -11,7 +11,7 @@ In this chapter we'll study additional configuration options, and in the next we Object properties, besides a **`value`**, have three special attributes (so-called "flags"): -- **`writable`** -- if `true`, can be changed, otherwise it's read-only. +- **`writable`** -- if `true`, the value can be changed, otherwise it's read-only. - **`enumerable`** -- if `true`, then listed in loops, otherwise not listed. - **`configurable`** -- if `true`, the property can be deleted and these attributes can be modified, otherwise not. @@ -19,7 +19,7 @@ We didn't see them yet, because generally they do not show up. When we create a First, let's see how to get those flags. -The method [Object.getOwnPropertyDescriptor](mdn:js/Object/getOwnPropertyDescriptor) allows to query the *full* information about a property. +The method [Object.getOwnPropertyDescriptor](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/getOwnPropertyDescriptor) allows to query the *full* information about a property. The syntax is: ```js @@ -54,7 +54,7 @@ alert( JSON.stringify(descriptor, null, 2 ) ); */ ``` -To change the flags, we can use [Object.defineProperty](mdn:js/Object/defineProperty). +To change the flags, we can use [Object.defineProperty](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/defineProperty). The syntax is: @@ -63,10 +63,10 @@ Object.defineProperty(obj, propertyName, descriptor) ``` `obj`, `propertyName` -: The object and property to work on. +: The object and its property to apply the descriptor. `descriptor` -: Property descriptor to apply. +: Property descriptor object to apply. If the property exists, `defineProperty` updates its flags. Otherwise, it creates the property with the given value and flags; in that case, if a flag is not supplied, it is assumed `false`. @@ -100,9 +100,9 @@ Compare it with "normally created" `user.name` above: now all flags are falsy. I Now let's see effects of the flags by example. -## Read-only +## Non-writable -Let's make `user.name` read-only by changing `writable` flag: +Let's make `user.name` non-writable (can't be reassigned) by changing `writable` flag: ```js run let user = { @@ -116,36 +116,39 @@ Object.defineProperty(user, "name", { }); *!* -user.name = "Pete"; // Error: Cannot assign to read only property 'name'... +user.name = "Pete"; // Error: Cannot assign to read only property 'name' */!* ``` Now no one can change the name of our user, unless they apply their own `defineProperty` to override ours. -Here's the same operation, but for the case when a property doesn't exist: +```smart header="Errors appear only in strict mode" +In non-strict mode, no errors occur when writing to non-writable properties and such. But the operation still won't succeed. Flag-violating actions are just silently ignored in non-strict. +``` + +Here's the same example, but the property is created from scratch: ```js run let user = { }; Object.defineProperty(user, "name", { *!* - value: "Pete", - // for new properties need to explicitly list what's true + value: "John", + // for new properties we need to explicitly list what's true enumerable: true, configurable: true */!* }); -alert(user.name); // Pete -user.name = "Alice"; // Error +alert(user.name); // John +user.name = "Pete"; // Error ``` - ## Non-enumerable Now let's add a custom `toString` to `user`. -Normally, a built-in `toString` for objects is non-enumerable, it does not show up in `for..in`. But if we add `toString` of our own, then by default it shows up in `for..in`, like this: +Normally, a built-in `toString` for objects is non-enumerable, it does not show up in `for..in`. But if we add a `toString` of our own, then by default it shows up in `for..in`, like this: ```js run let user = { @@ -159,7 +162,7 @@ let user = { for (let key in user) alert(key); // name, toString ``` -If we don't like it, then we can set `enumerable:false`. Then it won't appear in `for..in` loop, just like the built-in one: +If we don't like it, then we can set `enumerable:false`. Then it won't appear in a `for..in` loop, just like the built-in one: ```js run let user = { @@ -191,9 +194,9 @@ alert(Object.keys(user)); // name The non-configurable flag (`configurable:false`) is sometimes preset for built-in objects and properties. -A non-configurable property can not be deleted or altered with `defineProperty`. +A non-configurable property can't be deleted, its attributes can't be modified. -For instance, `Math.PI` is read-only, non-enumerable and non-configurable: +For instance, `Math.PI` is non-writable, non-enumerable and non-configurable: ```js run let descriptor = Object.getOwnPropertyDescriptor(Math, 'PI'); @@ -211,41 +214,67 @@ alert( JSON.stringify(descriptor, null, 2 ) ); So, a programmer is unable to change the value of `Math.PI` or overwrite it. ```js run -Math.PI = 3; // Error +Math.PI = 3; // Error, because it has writable: false // delete Math.PI won't work either ``` -Making a property non-configurable is a one-way road. We cannot change it back, because `defineProperty` doesn't work on non-configurable properties. +We also can't change `Math.PI` to be `writable` again: + +```js run +// Error, because of configurable: false +Object.defineProperty(Math, "PI", { writable: true }); +``` + +There's absolutely nothing we can do with `Math.PI`. -Here we are making `user.name` a "forever sealed" constant: +Making a property non-configurable is a one-way road. We cannot change it back with `defineProperty`. + +**Please note: `configurable: false` prevents changes of property flags and its deletion, while allowing to change its value.** + +Here `user.name` is non-configurable, but we can still change it (as it's writable): ```js run -let user = { }; +let user = { + name: "John" +}; + +Object.defineProperty(user, "name", { + configurable: false +}); + +user.name = "Pete"; // works fine +delete user.name; // Error +``` + +And here we make `user.name` a "forever sealed" constant, just like the built-in `Math.PI`: + +```js run +let user = { + name: "John" +}; Object.defineProperty(user, "name", { - value: "John", writable: false, configurable: false }); -*!* // won't be able to change user.name or its flags // all this won't work: -// user.name = "Pete" -// delete user.name -// defineProperty(user, "name", ...) -Object.defineProperty(user, "name", {writable: true}); // Error -*/!* +user.name = "Pete"; +delete user.name; +Object.defineProperty(user, "name", { value: "Pete" }); ``` -```smart header="Errors appear only in use strict" -In the non-strict mode, no errors occur when writing to read-only properties and such. But the operation still won't succeed. Flag-violating actions are just silently ignored in non-strict. +```smart header="The only attribute change possible: writable true -> false" +There's a minor exception about changing flags. + +We can change `writable: true` to `false` for a non-configurable property, thus preventing its value modification (to add another layer of protection). Not the other way around though. ``` ## Object.defineProperties -There's a method [Object.defineProperties(obj, descriptors)](mdn:js/Object/defineProperties) that allows to define many properties at once. +There's a method [Object.defineProperties(obj, descriptors)](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/defineProperties) that allows to define many properties at once. The syntax is: @@ -271,7 +300,7 @@ So, we can set many properties at once. ## Object.getOwnPropertyDescriptors -To get all property descriptors at once, we can use the method [Object.getOwnPropertyDescriptors(obj)](mdn:js/Object/getOwnPropertyDescriptors). +To get all property descriptors at once, we can use the method [Object.getOwnPropertyDescriptors(obj)](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/getOwnPropertyDescriptors). Together with `Object.defineProperties` it can be used as a "flags-aware" way of cloning an object: @@ -289,7 +318,7 @@ for (let key in user) { ...But that does not copy flags. So if we want a "better" clone then `Object.defineProperties` is preferred. -Another difference is that `for..in` ignores symbolic properties, but `Object.getOwnPropertyDescriptors` returns *all* property descriptors including symbolic ones. +Another difference is that `for..in` ignores symbolic and non-enumerable properties, but `Object.getOwnPropertyDescriptors` returns *all* property descriptors including symbolic and non-enumerable ones. ## Sealing an object globally @@ -297,23 +326,24 @@ Property descriptors work at the level of individual properties. There are also methods that limit access to the *whole* object: -[Object.preventExtensions(obj)](mdn:js/Object/preventExtensions) +[Object.preventExtensions(obj)](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/preventExtensions) : Forbids the addition of new properties to the object. -[Object.seal(obj)](mdn:js/Object/seal) +[Object.seal(obj)](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/seal) : Forbids adding/removing of properties. Sets `configurable: false` for all existing properties. -[Object.freeze(obj)](mdn:js/Object/freeze) +[Object.freeze(obj)](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/freeze) : Forbids adding/removing/changing of properties. Sets `configurable: false, writable: false` for all existing properties. + And also there are tests for them: -[Object.isExtensible(obj)](mdn:js/Object/isExtensible) +[Object.isExtensible(obj)](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/isExtensible) : Returns `false` if adding properties is forbidden, otherwise `true`. -[Object.isSealed(obj)](mdn:js/Object/isSealed) +[Object.isSealed(obj)](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/isSealed) : Returns `true` if adding/removing properties is forbidden, and all existing properties have `configurable: false`. -[Object.isFrozen(obj)](mdn:js/Object/isFrozen) +[Object.isFrozen(obj)](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/isFrozen) : Returns `true` if adding/removing/changing properties is forbidden, and all current properties are `configurable: false, writable: false`. These methods are rarely used in practice. diff --git a/1-js/07-object-properties/02-property-accessors/article.md b/1-js/07-object-properties/02-property-accessors/article.md index 43cd5ae6d..c2aa35d53 100644 --- a/1-js/07-object-properties/02-property-accessors/article.md +++ b/1-js/07-object-properties/02-property-accessors/article.md @@ -1,11 +1,11 @@ # Property getters and setters -There are two kinds of properties. +There are two kinds of object properties. -The first kind is *data properties*. We already know how to work with them. Actually, all properties that we've been using till now were data properties. +The first kind is *data properties*. We already know how to work with them. All properties that we've been using until now were data properties. -The second type of properties is something new. It's *accessor properties*. They are essentially functions that work on getting and setting a value, but look like regular properties to an external code. +The second type of property is something new. It's an *accessor property*. They are essentially functions that execute on getting and setting a value, but look like regular properties to an external code. ## Getters and setters @@ -27,14 +27,14 @@ The getter works when `obj.propName` is read, the setter -- when it is assigned. For instance, we have a `user` object with `name` and `surname`: -```js run +```js let user = { name: "John", surname: "Smith" }; ``` -Now we want to add a "fullName" property, that should be "John Smith". Of course, we don't want to copy-paste existing information, so we can implement it as an accessor: +Now we want to add a `fullName` property, that should be `"John Smith"`. Of course, we don't want to copy-paste existing information, so we can implement it as an accessor: ```js run let user = { @@ -53,9 +53,21 @@ alert(user.fullName); // John Smith */!* ``` -From outside, an accessor property looks like a regular one. That's the idea of accessor properties. We don't *call* `user.fullName` as a function, we *read* it normally: the getter runs behind the scenes. +From the outside, an accessor property looks like a regular one. That's the idea of accessor properties. We don't *call* `user.fullName` as a function, we *read* it normally: the getter runs behind the scenes. + +As of now, `fullName` has only a getter. If we attempt to assign `user.fullName=`, there will be an error: -As of now, `fullName` has only a getter. If we attempt to assign `user.fullName=`, there will be an error. +```js run +let user = { + get fullName() { + return `...`; + } +}; + +*!* +user.fullName = "Test"; // Error (property has only a getter) +*/!* +``` Let's fix it by adding a setter for `user.fullName`: @@ -82,25 +94,15 @@ alert(user.name); // Alice alert(user.surname); // Cooper ``` -Now we have a "virtual" property. It is readable and writable, but in fact does not exist. - -```smart header="Accessor properties are only accessible with get/set" -Once a property is defined with `get prop()` or `set prop()`, it's an accessor property, not a data properety any more. - -- If there's a getter -- we can read `object.prop`, othrewise we can't. -- If there's a setter -- we can set `object.prop=...`, othrewise we can't. - -And in either case we can't `delete` an accessor property. -``` - +As the result, we have a "virtual" property `fullName`. It is readable and writable. ## Accessor descriptors -Descriptors for accessor properties are different -- as compared with data properties. +Descriptors for accessor properties are different from those for data properties. -For accessor properties, there is no `value` and `writable`, but instead there are `get` and `set` functions. +For accessor properties, there is no `value` or `writable`, but instead there are `get` and `set` functions. -So an accessor descriptor may have: +That is, an accessor descriptor may have: - **`get`** -- a function without arguments, that works when a property is read, - **`set`** -- a function with one argument, that is called when the property is set, @@ -132,7 +134,7 @@ alert(user.fullName); // John Smith for(let key in user) alert(key); // name, surname ``` -Please note once again that a property can be either an accessor or a data property, not both. +Please note that a property can be either an accessor (has `get/set` methods) or a data property (has a `value`), not both. If we try to supply both `get` and `value` in the same descriptor, there will be an error: @@ -151,9 +153,9 @@ Object.defineProperty({}, 'prop', { ## Smarter getters/setters -Getters/setters can be used as wrappers over "real" property values to gain more control over them. +Getters/setters can be used as wrappers over "real" property values to gain more control over operations with them. -For instance, if we want to forbid too short names for `user`, we can store `name` in a special property `_name`. And filter assignments in the setter: +For instance, if we want to forbid too short names for `user`, we can have a setter `name` and keep the value in a separate property `_name`: ```js run let user = { @@ -176,14 +178,16 @@ alert(user.name); // Pete user.name = ""; // Name is too short... ``` -Technically, the external code may still access the name directly by using `user._name`. But there is a widely known agreement that properties starting with an underscore `"_"` are internal and should not be touched from outside the object. +So, the name is stored in `_name` property, and the access is done via getter and setter. + +Technically, external code is able to access the name directly by using `user._name`. But there is a widely known convention that properties starting with an underscore `"_"` are internal and should not be touched from outside the object. ## Using for compatibility -One of the great ideas behind getters and setters -- they allow to take control over a "normal" data property and tweak it at any moment. +One of the great uses of accessors is that they allow to take control over a "regular" data property at any moment by replacing it with a getter and a setter and tweak its behavior. -For instance, we started implementing user objects using data properties `name` and `age`: +Imagine we started implementing user objects using data properties `name` and `age`: ```js function User(name, age) { @@ -209,9 +213,11 @@ let john = new User("John", new Date(1992, 6, 1)); Now what to do with the old code that still uses `age` property? -We can try to find all such places and fix them, but that takes time and can be hard to do if that code is written by other people. And besides, `age` is a nice thing to have in `user`, right? In some places it's just what we want. +We can try to find all such places and fix them, but that takes time and can be hard to do if that code is used by many other people. And besides, `age` is a nice thing to have in `user`, right? + +Let's keep it. -Adding a getter for `age` mitigates the problem: +Adding a getter for `age` solves the problem: ```js run no-beautify function User(name, birthday) { diff --git a/1-js/08-prototypes/01-prototype-inheritance/2-search-algorithm/task.md b/1-js/08-prototypes/01-prototype-inheritance/2-search-algorithm/task.md index 002b24b8a..bc2db47fe 100644 --- a/1-js/08-prototypes/01-prototype-inheritance/2-search-algorithm/task.md +++ b/1-js/08-prototypes/01-prototype-inheritance/2-search-algorithm/task.md @@ -6,7 +6,7 @@ importance: 5 The task has two parts. -We have an object: +Given the following objects: ```js let head = { diff --git a/1-js/08-prototypes/01-prototype-inheritance/3-proto-and-this/solution.md b/1-js/08-prototypes/01-prototype-inheritance/3-proto-and-this/solution.md index c7d147b9c..4d6ea2653 100644 --- a/1-js/08-prototypes/01-prototype-inheritance/3-proto-and-this/solution.md +++ b/1-js/08-prototypes/01-prototype-inheritance/3-proto-and-this/solution.md @@ -3,4 +3,5 @@ That's because `this` is an object before the dot, so `rabbit.eat()` modifies `rabbit`. Property lookup and execution are two different things. -The method `rabbit.eat` is first found in the prototype, then executed with `this=rabbit` + +The method `rabbit.eat` is first found in the prototype, then executed with `this=rabbit`. diff --git a/1-js/08-prototypes/01-prototype-inheritance/3-proto-and-this/task.md b/1-js/08-prototypes/01-prototype-inheritance/3-proto-and-this/task.md index b37499bad..ed8482c07 100644 --- a/1-js/08-prototypes/01-prototype-inheritance/3-proto-and-this/task.md +++ b/1-js/08-prototypes/01-prototype-inheritance/3-proto-and-this/task.md @@ -2,7 +2,7 @@ importance: 5 --- -# Where it writes? +# Where does it write? We have `rabbit` inheriting from `animal`. diff --git a/1-js/08-prototypes/01-prototype-inheritance/4-hamster-proto/solution.md b/1-js/08-prototypes/01-prototype-inheritance/4-hamster-proto/solution.md index fad4b8860..c141b2ecd 100644 --- a/1-js/08-prototypes/01-prototype-inheritance/4-hamster-proto/solution.md +++ b/1-js/08-prototypes/01-prototype-inheritance/4-hamster-proto/solution.md @@ -10,7 +10,7 @@ Let's look carefully at what's going on in the call `speedy.eat("apple")`. So all hamsters share a single stomach! -Every time the `stomach` is taken from the prototype, then `stomach.push` modifies it "at place". +Both for `lazy.stomach.push(...)` and `speedy.stomach.push()`, the property `stomach` is found in the prototype (as it's not in the object itself), then the new data is pushed into it. Please note that such thing doesn't happen in case of a simple assignment `this.stomach=`: @@ -44,7 +44,7 @@ alert( lazy.stomach ); // <nothing> Now all works fine, because `this.stomach=` does not perform a lookup of `stomach`. The value is written directly into `this` object. -Also we can totally evade the problem by making sure that each hamster has their own stomach: +Also we can totally avoid the problem by making sure that each hamster has their own stomach: ```js run let hamster = { @@ -77,4 +77,4 @@ alert( speedy.stomach ); // apple alert( lazy.stomach ); // <nothing> ``` -As a common solution, all properties that describe the state of a particular object, like `stomach` above, are usually written into that object. That prevents such problems. +As a common solution, all properties that describe the state of a particular object, like `stomach` above, should be written into that object. That prevents such problems. diff --git a/1-js/08-prototypes/01-prototype-inheritance/4-hamster-proto/task.md b/1-js/08-prototypes/01-prototype-inheritance/4-hamster-proto/task.md index 6f9fb279e..50171123d 100644 --- a/1-js/08-prototypes/01-prototype-inheritance/4-hamster-proto/task.md +++ b/1-js/08-prototypes/01-prototype-inheritance/4-hamster-proto/task.md @@ -2,11 +2,11 @@ importance: 5 --- -# Why two hamsters are full? +# Why are both hamsters full? We have two hamsters: `speedy` and `lazy` inheriting from the general `hamster` object. -When we feed one of them, the other one is also full. Why? How to fix it? +When we feed one of them, the other one is also full. Why? How can we fix it? ```js run let hamster = { diff --git a/1-js/08-prototypes/01-prototype-inheritance/article.md b/1-js/08-prototypes/01-prototype-inheritance/article.md index 7c106b1f7..ef6c7ffeb 100644 --- a/1-js/08-prototypes/01-prototype-inheritance/article.md +++ b/1-js/08-prototypes/01-prototype-inheritance/article.md @@ -12,11 +12,11 @@ In JavaScript, objects have a special hidden property `[[Prototype]]` (as named  -That `[[Prototype]]` has a "magical" meaning. When we want to read a property from `object`, and it's missing, JavaScript automatically takes it from the prototype. In programming, such thing is called "prototypal inheritance". Many cool language features and programming techniques are based on it. +When we read a property from `object`, and it's missing, JavaScript automatically takes it from the prototype. In programming, this is called "prototypal inheritance". And soon we'll study many examples of such inheritance, as well as cooler language features built upon it. The property `[[Prototype]]` is internal and hidden, but there are many ways to set it. -One of them is to use `__proto__`, like this: +One of them is to use the special name `__proto__`, like this: ```js run let animal = { @@ -27,23 +27,15 @@ let rabbit = { }; *!* -rabbit.__proto__ = animal; +rabbit.__proto__ = animal; // sets rabbit.[[Prototype]] = animal */!* ``` -```smart header="`__proto__` is a historical getter/setter for `[[Prototype]]`" -Please note that `__proto__` is *not the same* as `[[Prototype]]`. That's a getter/setter for it. - -It exists for historical reasons, in modern language it is replaced with functions `Object.getPrototypeOf/Object.setPrototypeOf` that also get/set the prototype. We'll study the reasons for that and these functions later. - -By the specification, `__proto__` must only be supported by browsers, but in fact all environments including server-side support it. For now, as `__proto__` notation is a little bit more intuitively obvious, we'll use it in the examples. -``` - -If we look for a property in `rabbit`, and it's missing, JavaScript automatically takes it from `animal`. +Now if we read a property from `rabbit`, and it's missing, JavaScript will automatically take it from `animal`. For instance: -```js run +```js let animal = { eats: true }; @@ -62,7 +54,7 @@ alert( rabbit.eats ); // true (**) alert( rabbit.jumps ); // true ``` -Here the line `(*)` sets `animal` to be a prototype of `rabbit`. +Here the line `(*)` sets `animal` to be the prototype of `rabbit`. Then, when `alert` tries to read property `rabbit.eats` `(**)`, it's not in `rabbit`, so JavaScript follows the `[[Prototype]]` reference and finds it in `animal` (look from the bottom up): @@ -101,7 +93,6 @@ The method is automatically taken from the prototype, like this: The prototype chain can be longer: - ```js run let animal = { eats: true, @@ -131,13 +122,27 @@ alert(longEar.jumps); // true (from rabbit)  -There are actually only two limitations: +Now if we read something from `longEar`, and it's missing, JavaScript will look for it in `rabbit`, and then in `animal`. + +There are only two limitations: 1. The references can't go in circles. JavaScript will throw an error if we try to assign `__proto__` in a circle. -2. The value of `__proto__` can be either an object or `null`, other types (like primitives) are ignored. +2. The value of `__proto__` can be either an object or `null`. Other types are ignored. Also it may be obvious, but still: there can be only one `[[Prototype]]`. An object may not inherit from two others. +```smart header="`__proto__` is a historical getter/setter for `[[Prototype]]`" +It's a common mistake of novice developers not to know the difference between these two. + +Please note that `__proto__` is *not the same* as the internal `[[Prototype]]` property. It's a getter/setter for `[[Prototype]]`. Later we'll see situations where it matters, for now let's just keep it in mind, as we build our understanding of JavaScript language. + +The `__proto__` property is a bit outdated. It exists for historical reasons, modern JavaScript suggests that we should use `Object.getPrototypeOf/Object.setPrototypeOf` functions instead that get/set the prototype. We'll also cover these functions later. + +By the specification, `__proto__` must only be supported by browsers. In fact though, all environments including server-side support `__proto__`, so we're quite safe using it. + +As the `__proto__` notation is a bit more intuitively obvious, we use it in the examples. +``` + ## Writing doesn't use prototype The prototype is only used for reading properties. @@ -171,7 +176,7 @@ From now on, `rabbit.walk()` call finds the method immediately in the object and  -That's for data properties only, not for accessors. If a property is a getter/setter, then it behaves like a function: getters/setters are looked up in the prototype. +Accessor properties are an exception, as assignment is handled by a setter function. So writing to such a property is actually the same as calling a function. For that reason `admin.fullName` works correctly in the code below: @@ -198,13 +203,16 @@ alert(admin.fullName); // John Smith (*) // setter triggers! admin.fullName = "Alice Cooper"; // (**) + +alert(admin.fullName); // Alice Cooper, state of admin modified +alert(user.fullName); // John Smith, state of user protected ``` Here in the line `(*)` the property `admin.fullName` has a getter in the prototype `user`, so it is called. And in the line `(**)` the property has a setter in the prototype, so it is called. ## The value of "this" -An interesting question may arise in the example above: what's the value of `this` inside `set fullName(value)`? Where the properties `this.name` and `this.surname` are written: into `user` or `admin`? +An interesting question may arise in the example above: what's the value of `this` inside `set fullName(value)`? Where are the properties `this.name` and `this.surname` written: into `user` or `admin`? The answer is simple: `this` is not affected by prototypes at all. @@ -212,7 +220,7 @@ The answer is simple: `this` is not affected by prototypes at all. So, the setter call `admin.fullName=` uses `admin` as `this`, not `user`. -That is actually a super-important thing, because we may have a big object with many methods and inherit from it. Then inherited objects can run its methods, and they will modify the state of these objects, not the big one. +That is actually a super-important thing, because we may have a big object with many methods, and have objects that inherit from it. And when the inheriting objects run the inherited methods, they will modify only their own states, not the state of the big object. For instance, here `animal` represents a "method storage", and `rabbit` makes use of it. @@ -247,14 +255,84 @@ The resulting picture:  -If we had other objects like `bird`, `snake` etc inheriting from `animal`, they would also gain access to methods of `animal`. But `this` in each method would be the corresponding object, evaluated at the call-time (before dot), not `animal`. So when we write data into `this`, it is stored into these objects. +If we had other objects, like `bird`, `snake`, etc., inheriting from `animal`, they would also gain access to methods of `animal`. But `this` in each method call would be the corresponding object, evaluated at the call-time (before dot), not `animal`. So when we write data into `this`, it is stored into these objects. As a result, methods are shared, but the object state is not. +## for..in loop + +The `for..in` loop iterates over inherited properties too. + +For instance: + +```js run +let animal = { + eats: true +}; + +let rabbit = { + jumps: true, + __proto__: animal +}; + +*!* +// Object.keys only returns own keys +alert(Object.keys(rabbit)); // jumps +*/!* + +*!* +// for..in loops over both own and inherited keys +for(let prop in rabbit) alert(prop); // jumps, then eats +*/!* +``` + +If that's not what we want, and we'd like to exclude inherited properties, there's a built-in method [obj.hasOwnProperty(key)](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/hasOwnProperty): it returns `true` if `obj` has its own (not inherited) property named `key`. + +So we can filter out inherited properties (or do something else with them): + +```js run +let animal = { + eats: true +}; + +let rabbit = { + jumps: true, + __proto__: animal +}; + +for(let prop in rabbit) { + let isOwn = rabbit.hasOwnProperty(prop); + + if (isOwn) { + alert(`Our: ${prop}`); // Our: jumps + } else { + alert(`Inherited: ${prop}`); // Inherited: eats + } +} +``` + +Here we have the following inheritance chain: `rabbit` inherits from `animal`, that inherits from `Object.prototype` (because `animal` is a literal object `{...}`, so it's by default), and then `null` above it: + + + +Note, there's one funny thing. Where is the method `rabbit.hasOwnProperty` coming from? We did not define it. Looking at the chain we can see that the method is provided by `Object.prototype.hasOwnProperty`. In other words, it's inherited. + +...But why does `hasOwnProperty` not appear in the `for..in` loop like `eats` and `jumps` do, if `for..in` lists inherited properties? + +The answer is simple: it's not enumerable. Just like all other properties of `Object.prototype`, it has `enumerable:false` flag. And `for..in` only lists enumerable properties. That's why it and the rest of the `Object.prototype` properties are not listed. + +```smart header="Almost all other key/value-getting methods ignore inherited properties" +Almost all other key/value-getting methods, such as `Object.keys`, `Object.values` and so on ignore inherited properties. + +They only operate on the object itself. Properties from the prototype are *not* taken into account. +``` + ## Summary - In JavaScript, all objects have a hidden `[[Prototype]]` property that's either another object or `null`. - We can use `obj.__proto__` to access it (a historical getter/setter, there are other ways, to be covered soon). - The object referenced by `[[Prototype]]` is called a "prototype". -- If we want to read a property of `obj` or call a method, and it doesn't exist, then JavaScript tries to find it in the prototype. Write/delete operations work directly on the object, they don't use the prototype (unless the property is actually a setter). +- If we want to read a property of `obj` or call a method, and it doesn't exist, then JavaScript tries to find it in the prototype. +- Write/delete operations act directly on the object, they don't use the prototype (assuming it's a data property, not a setter). - If we call `obj.method()`, and the `method` is taken from the prototype, `this` still references `obj`. So methods always work with the current object even if they are inherited. +- The `for..in` loop iterates over both its own and its inherited properties. All other key/value-getting methods only operate on the object itself. diff --git a/1-js/08-prototypes/01-prototype-inheritance/rabbit-animal-object.svg b/1-js/08-prototypes/01-prototype-inheritance/rabbit-animal-object.svg new file mode 100644 index 000000000..32a9858f8 --- /dev/null +++ b/1-js/08-prototypes/01-prototype-inheritance/rabbit-animal-object.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" width="233" height="344" viewBox="0 0 233 344"><defs><style>@import url(https://fonts.googleapis.com/css?family=Open+Sans:bold,italic,bolditalic%7CPT+Mono);@font-face{font-family:'PT Mono';font-weight:700;font-style:normal;src:local('PT MonoBold'),url(/font/PTMonoBold.woff2) format('woff2'),url(/font/PTMonoBold.woff) format('woff'),url(/font/PTMonoBold.ttf) format('truetype')}</style></defs><g id="inheritance" fill="none" fill-rule="evenodd" stroke="none" stroke-width="1"><g id="rabbit-animal-object.svg"><path id="Rectangle-1" fill="#FBF2EC" stroke="#DBAF88" stroke-width="2" d="M14 96h218v58H14z"/><text id="toString:-function" fill="#AF6E24" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="24" y="113">toString: function</tspan> <tspan x="24" y="128">hasOwnProperty: function</tspan> <tspan x="24" y="143">...</tspan></text><text id="Object.prototype" fill="#AF6E24" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="13" y="88">Object.prototype</tspan></text><path id="Rectangle-1" fill="#FBF2EC" stroke="#DBAF88" stroke-width="2" d="M14 213h218v28H14z"/><text id="animal" fill="#AF6E24" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="13" y="205">animal</tspan></text><path id="Line" fill="#C06334" fill-rule="nonzero" d="M73.5 162.5l7 14h-6v28h-2v-28h-6l7-14z"/><text id="[[Prototype]]" fill="#AF6E24" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="83" y="184">[[Prototype]]</tspan></text><text id="[[Prototype]]-Copy" fill="#AF6E24" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="83" y="274">[[Prototype]]</tspan></text><path id="Line-2" fill="#C06334" fill-rule="nonzero" d="M73.5 30.5l7 14h-6v28h-2v-28h-6l7-14z"/><text id="[[Prototype]]" fill="#AF6E24" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="83" y="52">[[Prototype]]</tspan></text><text id="null" fill="#AF6E24" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="59" y="19">null</tspan></text><text id="eats:-true" fill="#AF6E24" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="24" y="231">eats: true</tspan></text><path id="Rectangle-1-Copy" fill="#FBF2EC" stroke="#DBAF88" stroke-width="2" d="M14 302h218v28H14z"/><text id="rabbit-copy" fill="#AF6E24" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="13" y="294">rabbit</tspan></text><path id="Line-Copy" fill="#C06334" fill-rule="nonzero" d="M73.5 251.5l7 14h-6v28h-2v-28h-6l7-14z"/><text id="jumps:-true" fill="#AF6E24" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="24" y="320">jumps: true</tspan></text></g></g></svg> \ No newline at end of file diff --git a/1-js/08-prototypes/02-function-prototype/1-changing-prototype/solution.md b/1-js/08-prototypes/02-function-prototype/1-changing-prototype/solution.md index 771e3061c..ebbdf3a7c 100644 --- a/1-js/08-prototypes/02-function-prototype/1-changing-prototype/solution.md +++ b/1-js/08-prototypes/02-function-prototype/1-changing-prototype/solution.md @@ -7,7 +7,7 @@ Answers: 2. `false`. - Objects are assigned by reference. The object from `Rabbit.prototype` is not duplicated, it's still a single object is referenced both by `Rabbit.prototype` and by the `[[Prototype]]` of `rabbit`. + Objects are assigned by reference. The object from `Rabbit.prototype` is not duplicated, it's still a single object referenced both by `Rabbit.prototype` and by the `[[Prototype]]` of `rabbit`. So when we change its content through one reference, it is visible through the other one. diff --git a/1-js/08-prototypes/02-function-prototype/1-changing-prototype/task.md b/1-js/08-prototypes/02-function-prototype/1-changing-prototype/task.md index 4b8522d3d..2838c125a 100644 --- a/1-js/08-prototypes/02-function-prototype/1-changing-prototype/task.md +++ b/1-js/08-prototypes/02-function-prototype/1-changing-prototype/task.md @@ -20,7 +20,7 @@ alert( rabbit.eats ); // true ``` -1. We added one more string (emphasized), what `alert` shows now? +1. We added one more string (emphasized). What will `alert` show now? ```js function Rabbit() {} @@ -54,7 +54,7 @@ alert( rabbit.eats ); // true alert( rabbit.eats ); // ? ``` -3. Like this (replaced one line)? +3. And like this (replaced one line)? ```js function Rabbit() {} diff --git a/1-js/08-prototypes/02-function-prototype/4-new-object-same-constructor/solution.md b/1-js/08-prototypes/02-function-prototype/4-new-object-same-constructor/solution.md index 43190e163..372d50dd6 100644 --- a/1-js/08-prototypes/02-function-prototype/4-new-object-same-constructor/solution.md +++ b/1-js/08-prototypes/02-function-prototype/4-new-object-same-constructor/solution.md @@ -15,7 +15,7 @@ alert( user2.name ); // Pete (worked!) It worked, because `User.prototype.constructor == User`. -..But if someone, so to say, overwrites `User.prototype` and forgets to recreate `"constructor"`, then it would fail. +..But if someone, so to speak, overwrites `User.prototype` and forgets to recreate `constructor` to reference `User`, then it would fail. For instance: @@ -38,7 +38,12 @@ Why `user2.name` is `undefined`? Here's how `new user.constructor('Pete')` works: 1. First, it looks for `constructor` in `user`. Nothing. -2. Then it follows the prototype chain. The prototype of `user` is `User.prototype`, and it also has nothing. -3. The value of `User.prototype` is a plain object `{}`, its prototype is `Object.prototype`. And there is `Object.prototype.constructor == Object`. So it is used. +2. Then it follows the prototype chain. The prototype of `user` is `User.prototype`, and it also has no `constructor` (because we "forgot" to set it right!). +3. Going further up the chain, `User.prototype` is a plain object, its prototype is the built-in `Object.prototype`. +4. Finally, for the built-in `Object.prototype`, there's a built-in `Object.prototype.constructor == Object`. So it is used. -At the end, we have `let user2 = new Object('Pete')`. The built-in `Object` constructor ignores arguments, it always creates an empty object -- that's what we have in `user2` after all. +Finally, at the end, we have `let user2 = new Object('Pete')`. + +Probably, that's not what we want. We'd like to create `new User`, not `new Object`. That's the outcome of the missing `constructor`. + +(Just in case you're curious, the `new Object(...)` call converts its argument to an object. That's a theoretical thing, in practice no one calls `new Object` with a value, and generally we don't use `new Object` to make objects at all). \ No newline at end of file diff --git a/1-js/08-prototypes/02-function-prototype/article.md b/1-js/08-prototypes/02-function-prototype/article.md index 5511c8ee0..b1ef51826 100644 --- a/1-js/08-prototypes/02-function-prototype/article.md +++ b/1-js/08-prototypes/02-function-prototype/article.md @@ -2,7 +2,7 @@ Remember, new objects can be created with a constructor function, like `new F()`. -If `F.prototype` is an object, then `new` operator uses it to set `[[Prototype]]` for the new object. +If `F.prototype` is an object, then the `new` operator uses it to set `[[Prototype]]` for the new object. ```smart JavaScript had prototypal inheritance from the beginning. It was one of the core features of the language. @@ -41,7 +41,7 @@ That's the resulting picture: On the picture, `"prototype"` is a horizontal arrow, meaning a regular property, and `[[Prototype]]` is vertical, meaning the inheritance of `rabbit` from `animal`. ```smart header="`F.prototype` only used at `new F` time" -`F.prototype` property is only used when `new F` is called, it assigns `[[Prototype]]` of the new object. After that, there's no connection between `F.prototype` and the new object. Think of it as a "one-time gift". +`F.prototype` property is only used when `new F` is called, it assigns `[[Prototype]]` of the new object. If, after the creation, `F.prototype` property changes (`F.prototype = <another object>`), then new objects created by `new F` will have another object as `[[Prototype]]`, but already existing objects keep the old one. ``` @@ -158,11 +158,11 @@ Rabbit.prototype = { In this chapter we briefly described the way of setting a `[[Prototype]]` for objects created via a constructor function. Later we'll see more advanced programming patterns that rely on it. -Everything is quite simple, just few notes to make things clear: +Everything is quite simple, just a few notes to make things clear: -- The `F.prototype` property is not the same as `[[Prototype]]`. The only thing `F.prototype` does: it sets `[[Prototype]]` of new objects when `new F()` is called. -- The value of `F.prototype` should be either an object or null: other values won't work. -- The `"prototype"` property only has such a special effect when is set to a constructor function, and invoked with `new`. +- The `F.prototype` property (don't mistake it for `[[Prototype]]`) sets `[[Prototype]]` of new objects when `new F()` is called. +- The value of `F.prototype` should be either an object or `null`: other values won't work. +- The `"prototype"` property only has such a special effect when set on a constructor function, and invoked with `new`. On regular objects the `prototype` is nothing special: ```js diff --git a/1-js/08-prototypes/03-native-prototypes/2-defer-to-prototype-extended/solution.md b/1-js/08-prototypes/03-native-prototypes/2-defer-to-prototype-extended/solution.md index e3651683f..99c358c9b 100644 --- a/1-js/08-prototypes/03-native-prototypes/2-defer-to-prototype-extended/solution.md +++ b/1-js/08-prototypes/03-native-prototypes/2-defer-to-prototype-extended/solution.md @@ -15,3 +15,27 @@ function f(a, b) { f.defer(1000)(1, 2); // shows 3 after 1 sec ``` + +Please note: we use `this` in `f.apply` to make our decoration work for object methods. + +So if the wrapper function is called as an object method, then `this` is passed to the original method `f`. + +```js run +Function.prototype.defer = function(ms) { + let f = this; + return function(...args) { + setTimeout(() => f.apply(this, args), ms); + } +}; + +let user = { + name: "John", + sayHi() { + alert(this.name); + } +} + +user.sayHi = user.sayHi.defer(1000); + +user.sayHi(); +``` diff --git a/1-js/08-prototypes/03-native-prototypes/article.md b/1-js/08-prototypes/03-native-prototypes/article.md index c5e0dbd60..bdfc86dd8 100644 --- a/1-js/08-prototypes/03-native-prototypes/article.md +++ b/1-js/08-prototypes/03-native-prototypes/article.md @@ -2,7 +2,7 @@ The `"prototype"` property is widely used by the core of JavaScript itself. All built-in constructor functions use it. -We'll see how it is for plain objects first, and then for more complex ones. +First we'll look at the details, and then how to use it for adding new capabilities to built-in objects. ## Object.prototype @@ -33,10 +33,12 @@ We can check it like this: let obj = {}; alert(obj.__proto__ === Object.prototype); // true -// obj.toString === obj.__proto__.toString == Object.prototype.toString + +alert(obj.toString === obj.__proto__.toString); //true +alert(obj.toString === Object.prototype.toString); //true ``` -Please note that there is no additional `[[Prototype]]` in the chain above `Object.prototype`: +Please note that there is no more `[[Prototype]]` in the chain above `Object.prototype`: ```js run alert(Object.prototype.__proto__); // null @@ -46,9 +48,9 @@ alert(Object.prototype.__proto__); // null Other built-in objects such as `Array`, `Date`, `Function` and others also keep methods in prototypes. -For instance, when we create an array `[1, 2, 3]`, the default `new Array()` constructor is used internally. So the array data is written into the new object, and `Array.prototype` becomes its prototype and provides methods. That's very memory-efficient. +For instance, when we create an array `[1, 2, 3]`, the default `new Array()` constructor is used internally. So `Array.prototype` becomes its prototype and provides methods. That's very memory-efficient. -By specification, all of the built-in prototypes have `Object.prototype` on the top. Sometimes people say that "everything inherits from objects". +By specification, all of the built-in prototypes have `Object.prototype` on the top. That's why some people say that "everything inherits from objects". Here's the overall picture (for 3 built-ins to fit): @@ -99,12 +101,12 @@ alert(f.__proto__.__proto__ == Object.prototype); // true, inherit from objects The most intricate thing happens with strings, numbers and booleans. -As we remember, they are not objects. But if we try to access their properties, then temporary wrapper objects are created using built-in constructors `String`, `Number`, `Boolean`, they provide the methods and disappear. +As we remember, they are not objects. But if we try to access their properties, temporary wrapper objects are created using built-in constructors `String`, `Number` and `Boolean`. They provide the methods and disappear. These objects are created invisibly to us and most engines optimize them out, but the specification describes it exactly this way. Methods of these objects also reside in prototypes, available as `String.prototype`, `Number.prototype` and `Boolean.prototype`. ```warn header="Values `null` and `undefined` have no object wrappers" -Special values `null` and `undefined` stand apart. They have no object wrappers, so methods and properties are not available for them. And there are no corresponding prototypes too. +Special values `null` and `undefined` stand apart. They have no object wrappers, so methods and properties are not available for them. And there are no corresponding prototypes either. ``` ## Changing native prototypes [#native-prototype-change] @@ -122,16 +124,16 @@ String.prototype.show = function() { During the process of development, we may have ideas for new built-in methods we'd like to have, and we may be tempted to add them to native prototypes. But that is generally a bad idea. ```warn -Prototypes are global, so it's easy to get a conflict. If two libraries add a method `String.prototype.show`, then one of them will be overwriting the other. +Prototypes are global, so it's easy to get a conflict. If two libraries add a method `String.prototype.show`, then one of them will be overwriting the method of the other. So, generally, modifying a native prototype is considered a bad idea. ``` **In modern programming, there is only one case where modifying native prototypes is approved. That's polyfilling.** -Polyfilling is a term for making a substitute for a method that exists in JavaScript specification, but not yet supported by current JavaScript engine. +Polyfilling is a term for making a substitute for a method that exists in the JavaScript specification, but is not yet supported by a particular JavaScript engine. -Then we may implement it manually and populate the built-in prototype with it. +We may then implement it manually and populate the built-in prototype with it. For instance: @@ -161,7 +163,7 @@ That's when we take a method from one object and copy it into another. Some methods of native prototypes are often borrowed. -For instance, if we're making an array-like object, we may want to copy some array methods to it. +For instance, if we're making an array-like object, we may want to copy some `Array` methods to it. E.g. @@ -179,18 +181,18 @@ obj.join = Array.prototype.join; alert( obj.join(',') ); // Hello,world! ``` -It works, because the internal algorithm of the built-in `join` method only cares about the correct indexes and the `length` property, it doesn't check that the object is indeed the array. And many built-in methods are like that. +It works because the internal algorithm of the built-in `join` method only cares about the correct indexes and the `length` property. It doesn't check if the object is indeed an array. Many built-in methods are like that. Another possibility is to inherit by setting `obj.__proto__` to `Array.prototype`, so all `Array` methods are automatically available in `obj`. But that's impossible if `obj` already inherits from another object. Remember, we only can inherit from one object at a time. -Borrowing methods is flexible, it allows to mix functionality from different objects if needed. +Borrowing methods is flexible, it allows to mix functionalities from different objects if needed. ## Summary - All built-in objects follow the same pattern: - - The methods are stored in the prototype (`Array.prototype`, `Object.prototype`, `Date.prototype` etc). - - The object itself stores only the data (array items, object properties, the date). -- Primitives also store methods in prototypes of wrapper objects: `Number.prototype`, `String.prototype`, `Boolean.prototype`. Only `undefined` and `null` do not have wrapper objects. -- Built-in prototypes can be modified or populated with new methods. But it's not recommended to change them. Probably the only allowable cause is when we add-in a new standard, but not yet supported by the engine JavaScript method. + - The methods are stored in the prototype (`Array.prototype`, `Object.prototype`, `Date.prototype`, etc.) + - The object itself stores only the data (array items, object properties, the date) +- Primitives also store methods in prototypes of wrapper objects: `Number.prototype`, `String.prototype` and `Boolean.prototype`. Only `undefined` and `null` do not have wrapper objects +- Built-in prototypes can be modified or populated with new methods. But it's not recommended to change them. The only allowable case is probably when we add-in a new standard, but it's not yet supported by the JavaScript engine diff --git a/1-js/08-prototypes/04-prototype-methods/2-dictionary-tostring/solution.md b/1-js/08-prototypes/04-prototype-methods/2-dictionary-tostring/solution.md index a92e17900..f3c9cf0e5 100644 --- a/1-js/08-prototypes/04-prototype-methods/2-dictionary-tostring/solution.md +++ b/1-js/08-prototypes/04-prototype-methods/2-dictionary-tostring/solution.md @@ -28,4 +28,4 @@ alert(dictionary); // "apple,__proto__" When we create a property using a descriptor, its flags are `false` by default. So in the code above, `dictionary.toString` is non-enumerable. -See the the chapter [](info:property-descriptors) for review. +See the chapter [](info:property-descriptors) for review. diff --git a/1-js/08-prototypes/04-prototype-methods/article.md b/1-js/08-prototypes/04-prototype-methods/article.md index a0bf20735..e2e9e9416 100644 --- a/1-js/08-prototypes/04-prototype-methods/article.md +++ b/1-js/08-prototypes/04-prototype-methods/article.md @@ -3,15 +3,18 @@ In the first chapter of this section, we mentioned that there are modern methods to setup a prototype. -The `__proto__` is considered outdated and somewhat deprecated (in browser-only part of the JavaScript standard). +Setting or reading the prototype with `obj.__proto__` is considered outdated and somewhat deprecated (moved to the so-called "Annex B" of the JavaScript standard, meant for browsers only). -The modern methods are: +The modern methods to get/set a prototype are: -- [Object.create(proto[, descriptors])](mdn:js/Object/create) -- creates an empty object with given `proto` as `[[Prototype]]` and optional property descriptors. - [Object.getPrototypeOf(obj)](mdn:js/Object/getPrototypeOf) -- returns the `[[Prototype]]` of `obj`. - [Object.setPrototypeOf(obj, proto)](mdn:js/Object/setPrototypeOf) -- sets the `[[Prototype]]` of `obj` to `proto`. -These should be used instead of `__proto__`. +The only usage of `__proto__`, that's not frowned upon, is as a property when creating a new object: `{ __proto__: ... }`. + +Although, there's a special method for this too: + +- [Object.create(proto[, descriptors])](mdn:js/Object/create) -- creates an empty object with given `proto` as `[[Prototype]]` and optional property descriptors. For instance: @@ -22,12 +25,13 @@ let animal = { // create a new object with animal as a prototype *!* -let rabbit = Object.create(animal); +let rabbit = Object.create(animal); // same as {__proto__: animal} */!* alert(rabbit.eats); // true + *!* -alert(Object.getPrototypeOf(rabbit) === animal); // get the prototype of rabbit +alert(Object.getPrototypeOf(rabbit) === animal); // true */!* *!* @@ -35,7 +39,9 @@ Object.setPrototypeOf(rabbit, {}); // change the prototype of rabbit to {} */!* ``` -`Object.create` has an optional second argument: property descriptors. We can provide additional properties to the new object there, like this: +The `Object.create` method is a bit more powerful, as it has an optional second argument: property descriptors. + +We can provide additional properties to the new object there, like this: ```js run let animal = { @@ -56,35 +62,42 @@ The descriptors are in the same format as described in the chapter <info:propert We can use `Object.create` to perform an object cloning more powerful than copying properties in `for..in`: ```js -// fully identical shallow clone of obj -let clone = Object.create(Object.getPrototypeOf(obj), Object.getOwnPropertyDescriptors(obj)); +let clone = Object.create( + Object.getPrototypeOf(obj), Object.getOwnPropertyDescriptors(obj) +); ``` This call makes a truly exact copy of `obj`, including all properties: enumerable and non-enumerable, data properties and setters/getters -- everything, and with the right `[[Prototype]]`. -## Brief history -If we count all the ways to manage `[[Prototype]]`, there's a lot! Many ways to do the same! +## Brief history -Why so? +There're so many ways to manage `[[Prototype]]`. How did that happen? Why? That's for historical reasons. -- The `"prototype"` property of a constructor function works since very ancient times. -- Later in the year 2012: `Object.create` appeared in the standard. It allowed to create objects with the given prototype, but did not allow to get/set it. So browsers implemented non-standard `__proto__` accessor that allowed to get/set a prototype at any time. -- Later in the year 2015: `Object.setPrototypeOf` and `Object.getPrototypeOf` were added to the standard. The `__proto__` was de-facto implemented everywhere, so it made its way to the Annex B of the standard, that is optional for non-browser environments. +The prototypal inheritance was in the language since its dawn, but the ways to manage it evolved over time. + +- The `prototype` property of a constructor function has worked since very ancient times. It's the oldest way to create objects with a given prototype. +- Later, in the year 2012, `Object.create` appeared in the standard. It gave the ability to create objects with a given prototype, but did not provide the ability to get/set it. Some browsers implemented the non-standard `__proto__` accessor that allowed the user to get/set a prototype at any time, to give more flexibility to developers. +- Later, in the year 2015, `Object.setPrototypeOf` and `Object.getPrototypeOf` were added to the standard, to perform the same functionality as `__proto__`. As `__proto__` was de-facto implemented everywhere, it was kind-of deprecated and made its way to the Annex B of the standard, that is: optional for non-browser environments. +- Later, in the year 2022, it was officially allowed to use `__proto__` in object literals `{...}` (moved out of Annex B), but not as a getter/setter `obj.__proto__` (still in Annex B). + +Why was `__proto__` replaced by the functions `getPrototypeOf/setPrototypeOf`? + +Why was `__proto__` partially rehabilitated and its usage allowed in `{...}`, but not as a getter/setter? -As of now we have all these ways at our disposal. +That's an interesting question, requiring us to understand why `__proto__` is bad. -Why was `__proto__` replaced by the functions? That's an interesting question, requiring us to understand why `__proto__` is bad. Read on to get the answer. +And soon we'll get the answer. -```warn header="Don't reset `[[Prototype]]` unless the speed doesn't matter" -Technically, we can get/set `[[Prototype]]` at any time. But usually we only set it once at the object creation time, and then do not modify: `rabbit` inherits from `animal`, and that is not going to change. +```warn header="Don't change `[[Prototype]]` on existing objects if speed matters" +Technically, we can get/set `[[Prototype]]` at any time. But usually we only set it once at the object creation time and don't modify it anymore: `rabbit` inherits from `animal`, and that is not going to change. -And JavaScript engines are highly optimized to that. Changing a prototype "on-the-fly" with `Object.setPrototypeOf` or `obj.__proto__=` is a very slow operation, it breaks internal optimizations for object property access operations. So evade it unless you know what you're doing, or JavaScript speed totally doesn't matter for you. +And JavaScript engines are highly optimized for this. Changing a prototype "on-the-fly" with `Object.setPrototypeOf` or `obj.__proto__=` is a very slow operation as it breaks internal optimizations for object property access operations. So avoid it unless you know what you're doing, or JavaScript speed totally doesn't matter for you. ``` -## "Very plain" objects +## "Very plain" objects [#very-plain] As we know, objects can be used as associative arrays to store key/value pairs. @@ -101,37 +114,52 @@ obj[key] = "some value"; alert(obj[key]); // [object Object], not "some value"! ``` -Here if the user types in `__proto__`, the assignment is ignored! +Here, if the user types in `__proto__`, the assignment in line 4 is ignored! -That shouldn't surprise us. The `__proto__` property is special: it must be either an object or `null`, a string can not become a prototype. +That could surely be surprising for a non-developer, but pretty understandable for us. The `__proto__` property is special: it must be either an object or `null`. A string can not become a prototype. That's why assigning a string to `__proto__` is ignored. But we didn't *intend* to implement such behavior, right? We want to store key/value pairs, and the key named `"__proto__"` was not properly saved. So that's a bug! -Here the consequences are not terrible. But in other cases the prototype may indeed be changed, so the execution may go wrong in totally unexpected ways. +Here the consequences are not terrible. But in other cases we may be storing objects instead of strings in `obj`, and then the prototype will indeed be changed. As a result, the execution will go wrong in totally unexpected ways. -What's worst -- usually developers do not think about such possibility at all. That makes such bugs hard to notice and even turn them into vulnerabilities, especially when JavaScript is used on server-side. +What's worse -- usually developers do not think about such possibility at all. That makes such bugs hard to notice and even turn them into vulnerabilities, especially when JavaScript is used on server-side. -Unexpected things also may happen when accessing `toString` property -- that's a function by default, and other built-in properties. +Unexpected things also may happen when assigning to `obj.toString`, as it's a built-in object method. -How to evade the problem? +How can we avoid this problem? -First, we can just switch to using `Map`, then everything's fine. +First, we can just switch to using `Map` for storage instead of plain objects, then everything's fine: -But `Object` also can serve us well here, because language creators gave a thought to that problem long ago. +```js run +let map = new Map(); + +let key = prompt("What's the key?", "__proto__"); +map.set(key, "some value"); + +<<<<<<< HEAD +======= +alert(map.get(key)); // "some value" (as intended) +``` -The `__proto__` is not a property of an object, but an accessor property of `Object.prototype`: +...But `Object` syntax is often more appealing, as it's more concise. +Fortunately, we *can* use objects, because language creators gave thought to that problem long ago. + +As we know, `__proto__` is not a property of an object, but an accessor property of `Object.prototype`: + +>>>>>>> 540d753e90789205fc6e75c502f68382c87dea9b  So, if `obj.__proto__` is read or set, the corresponding getter/setter is called from its prototype, and it gets/sets `[[Prototype]]`. As it was said in the beginning of this tutorial section: `__proto__` is a way to access `[[Prototype]]`, it is not `[[Prototype]]` itself. -Now, if we want to use an object as an associative array, we can do it with a little trick: +Now, if we intend to use an object as an associative array and be free of such problems, we can do it with a little trick: ```js run *!* let obj = Object.create(null); +// or: obj = { __proto__: null } */!* let key = prompt("What's the key?", "__proto__"); @@ -146,7 +174,7 @@ alert(obj[key]); // "some value" So, there is no inherited getter/setter for `__proto__`. Now it is processed as a regular data property, so the example above works right. -We can call such object "very plain" or "pure dictionary objects", because they are even simpler than regular plain object `{...}`. +We can call such objects "very plain" or "pure dictionary" objects, because they are even simpler than the regular plain object `{...}`. A downside is that such objects lack any built-in object methods, e.g. `toString`: @@ -160,7 +188,7 @@ alert(obj); // Error (no toString) ...But that's usually fine for associative arrays. -Please note that most object-related methods are `Object.something(...)`, like `Object.keys(obj)` -- they are not in the prototype, so they will keep working on such objects: +Note that most object-related methods are `Object.something(...)`, like `Object.keys(obj)` -- they are not in the prototype, so they will keep working on such objects: ```js run @@ -173,31 +201,26 @@ alert(Object.keys(chineseDictionary)); // hello,bye ## Summary -Modern methods to setup and directly access the prototype are: - -- [Object.create(proto[, descriptors])](mdn:js/Object/create) -- creates an empty object with given `proto` as `[[Prototype]]` (can be `null`) and optional property descriptors. -- [Object.getPrototypeOf(obj)](mdn:js/Object.getPrototypeOf) -- returns the `[[Prototype]]` of `obj` (same as `__proto__` getter). -- [Object.setPrototypeOf(obj, proto)](mdn:js/Object.setPrototypeOf) -- sets the `[[Prototype]]` of `obj` to `proto` (same as `__proto__` setter). +- To create an object with the given prototype, use: -The built-in `__proto__` getter/setter is unsafe if we'd want to put user-generated keys in to an object. Just because a user may enter "__proto__" as the key, and there'll be an error with hopefully easy, but generally unpredictable consequences. + - literal syntax: `{ __proto__: ... }`, allows to specify multiple properties + - or [Object.create(proto[, descriptors])](mdn:js/Object/create), allows to specify property descriptors. -So we can either use `Object.create(null)` to create a "very plain" object without `__proto__`, or stick to `Map` objects for that. + The `Object.create` provides an easy way to shallow-copy an object with all descriptors: -Also, `Object.create` provides an easy way to shallow-copy an object with all descriptors: + ```js + let clone = Object.create(Object.getPrototypeOf(obj), Object.getOwnPropertyDescriptors(obj)); + ``` -```js -let clone = Object.create(Object.getPrototypeOf(obj), Object.getOwnPropertyDescriptors(obj)); -``` +- Modern methods to get/set the prototype are: + - [Object.getPrototypeOf(obj)](mdn:js/Object/getPrototypeOf) -- returns the `[[Prototype]]` of `obj` (same as `__proto__` getter). + - [Object.setPrototypeOf(obj, proto)](mdn:js/Object/setPrototypeOf) -- sets the `[[Prototype]]` of `obj` to `proto` (same as `__proto__` setter). -- [Object.keys(obj)](mdn:js/Object/keys) / [Object.values(obj)](mdn:js/Object/values) / [Object.entries(obj)](mdn:js/Object/entries) -- returns an array of enumerable own string property names/values/key-value pairs. -- [Object.getOwnPropertySymbols(obj)](mdn:js/Object/getOwnPropertySymbols) -- returns an array of all own symbolic property names. -- [Object.getOwnPropertyNames(obj)](mdn:js/Object/getOwnPropertyNames) -- returns an array of all own string property names. -- [Reflect.ownKeys(obj)](mdn:js/Reflect/ownKeys) -- returns an array of all own property names. -- [obj.hasOwnProperty(key)](mdn:js/Object/hasOwnProperty): it returns `true` if `obj` has its own (not inherited) property named `key`. +- Getting/setting the prototype using the built-in `__proto__` getter/setter isn't recommended, it's now in the Annex B of the specification. -We also made it clear that `__proto__` is a getter/setter for `[[Prototype]]` and resides in `Object.prototype`, just as other methods. +- We also covered prototype-less objects, created with `Object.create(null)` or `{__proto__: null}`. -We can create an object without a prototype by `Object.create(null)`. Such objects are used as "pure dictionaries", they have no issues with `"__proto__"` as the key. + These objects are used as dictionaries, to store any (possibly user-generated) keys. -All methods that return object properties (like `Object.keys` and others) -- return "own" properties. If we want inherited ones, then we can use `for..in`. + Normally, objects inherit built-in methods and `__proto__` getter/setter from `Object.prototype`, making corresponding keys "occupied" and potentially causing side effects. With `null` prototype, objects are truly empty. diff --git a/1-js/09-classes/01-class/1-rewrite-to-class/task.md b/1-js/09-classes/01-class/1-rewrite-to-class/task.md index 05365e410..4477de679 100644 --- a/1-js/09-classes/01-class/1-rewrite-to-class/task.md +++ b/1-js/09-classes/01-class/1-rewrite-to-class/task.md @@ -4,6 +4,6 @@ importance: 5 # Rewrite to class -The `Clock` class is written in functional style. Rewrite it the "class" syntax. +The `Clock` class (see the sandbox) is written in functional style. Rewrite it in the "class" syntax. P.S. The clock ticks in the console, open it to see. diff --git a/1-js/09-classes/01-class/article.md b/1-js/09-classes/01-class/article.md index b8bd4f339..c33873af6 100644 --- a/1-js/09-classes/01-class/article.md +++ b/1-js/09-classes/01-class/article.md @@ -25,7 +25,7 @@ class MyClass { } ``` -Then `new MyClass()` creates a new object with all the listed methods. +Then use `new MyClass()` to create a new object with all the listed methods. The `constructor()` method is called automatically by `new`, so we can initialize the object there. @@ -51,9 +51,9 @@ user.sayHi(); When `new User("John")` is called: 1. A new object is created. -2. The `constructor` runs with the given argument and assigns `this.name` to it. +2. The `constructor` runs with the given argument and assigns it to `this.name`. -...Then we can call methods, such as `user.sayHi`. +...Then we can call object methods, such as `user.sayHi()`. ```warn header="No comma between class methods" @@ -64,11 +64,11 @@ The notation here is not to be confused with object literals. Within the class, ## What is a class? -So, what exactly is a `class`? That's not an entirely new language-level entity, as one might think. +So, what exactly is a `class`? That's not an entirely new language-level entity, as one might think. Let's unveil any magic and see what a class really is. That'll help in understanding many complex aspects. -In JavaScript, a class is a kind of a function. +In JavaScript, a class is a kind of function. Here, take a look: @@ -85,19 +85,21 @@ alert(typeof User); // function ``` What `class User {...}` construct really does is: -1. Creates a function named `User`, that becomes the result of the class declaration. - - The function code is taken from the `constructor` method (assumed empty if we don't write such method). -3. Stores all methods, such as `sayHi`, in `User.prototype`. -Afterwards, for new objects, when we call a method, it's taken from the prototype, just as described in the chapter <info:function-prototype>. So `new User` object has access to class methods. +1. Creates a function named `User`, that becomes the result of the class declaration. The function code is taken from the `constructor` method (assumed empty if we don't write such method). +2. Stores class methods, such as `sayHi`, in `User.prototype`. -We can illustrate the result of `class User` as: +After `new User` object is created, when we call its method, it's taken from the prototype, just as described in the chapter <info:function-prototype>. So the object has access to class methods. +<<<<<<< HEAD +======= +We can illustrate the result of `class User` declaration as: + +>>>>>>> 540d753e90789205fc6e75c502f68382c87dea9b  Here's the code to introspect it: - ```js run class User { constructor(name) { this.name = name; } @@ -111,15 +113,15 @@ alert(typeof User); // function alert(User === User.prototype.constructor); // true // The methods are in User.prototype, e.g: -alert(User.prototype.sayHi); // alert(this.name); +alert(User.prototype.sayHi); // the code of the sayHi method // there are exactly two methods in the prototype alert(Object.getOwnPropertyNames(User.prototype)); // constructor, sayHi ``` -## Not just a syntax sugar +## Not just a syntactic sugar -Sometimes people say that `class` is a "syntax sugar" in JavaScript, because we could actually declare the same without `class` keyword at all: +Sometimes people say that `class` is a "syntactic sugar" (syntax that is designed to make things easier to read, but doesn't introduce anything new), because we could actually declare the same thing without using the `class` keyword at all: ```js run // rewriting class User in pure functions @@ -128,7 +130,7 @@ Sometimes people say that `class` is a "syntax sugar" in JavaScript, because we function User(name) { this.name = name; } -// any function prototype has constructor property by default, +// a function prototype has "constructor" property by default, // so we don't need to create it // 2. Add the method to prototype @@ -141,13 +143,13 @@ let user = new User("John"); user.sayHi(); ``` -The result of this definition is about the same. So, there are indeed reasons why `class` can be considered a syntax sugar to define a constructor together with its prototype methods. +The result of this definition is about the same. So, there are indeed reasons why `class` can be considered a syntactic sugar to define a constructor together with its prototype methods. -Although, there are important differences. +Still, there are important differences. -1. First, a function created by `class` is labelled by a special internal property `[[FunctionKind]]:"classConstructor"`. So it's not entirely the same as creating it manually. +1. First, a function created by `class` is labelled by a special internal property `[[IsClassConstructor]]: true`. So it's not entirely the same as creating it manually. - Unlike a regular function, a class constructor can't be called without `new`: + The language checks for that property in a variety of places. For example, unlike a regular function, it must be called with `new`: ```js run class User { @@ -167,21 +169,21 @@ Although, there are important differences. alert(User); // class User { ... } ``` + There are other differences, we'll see them soon. -2. Class methods are non-enumerable +2. Class methods are non-enumerable. A class definition sets `enumerable` flag to `false` for all methods in the `"prototype"`. That's good, because if we `for..in` over an object, we usually don't want its class methods. -3. Classes always `use strict` +3. Classes always `use strict`. All code inside the class construct is automatically in strict mode. - -Also, in addition to its basic operation, the `class` syntax brings many other features with it which we'll explore later. +Besides, `class` syntax brings many other features that we'll explore later. ## Class Expression -Just like functions, classes can be defined inside another expression, passed around, returned, assigned etc. +Just like functions, classes can be defined inside another expression, passed around, returned, assigned, etc. Here's an example of a class expression: @@ -193,24 +195,24 @@ let User = class { }; ``` -Similar to Named Function Expressions, class expressions may or may not have a name. +Similar to Named Function Expressions, class expressions may have a name. If a class expression has a name, it's visible inside the class only: ```js run -// "Named Class Expression" (alas, no such term, but that's what's going on) +// "Named Class Expression" +// (no such term in the spec, but that's similar to Named Function Expression) let User = class *!*MyClass*/!* { sayHi() { - alert(MyClass); // MyClass is visible only inside the class + alert(MyClass); // MyClass name is visible only inside the class } }; new User().sayHi(); // works, shows MyClass definition -alert(MyClass); // error, MyClass not visible outside of the class +alert(MyClass); // error, MyClass name isn't visible outside of the class ``` - We can even make classes dynamically "on-demand", like this: ```js run @@ -219,7 +221,7 @@ function makeClass(phrase) { return class { sayHi() { alert(phrase); - }; + } }; } @@ -230,9 +232,9 @@ new User().sayHi(); // Hello ``` -## Getters/setters, other shorthands +## Getters/setters -Classes also include getters/setters, generators, computed properties etc. +Just like literal objects, classes may include getters/setters, computed properties etc. Here's an example for `user.name` implemented using `get/set`: @@ -241,7 +243,7 @@ class User { constructor(name) { // invokes the setter - this._name = name; + this.name = name; } *!* @@ -265,31 +267,21 @@ class User { let user = new User("John"); alert(user.name); // John -user = new User(""); // Name too short. +user = new User(""); // Name is too short. ``` -Internally, getters and setters are created on `User.prototype`, like this: +Technically, such class declaration works by creating getters and setters in `User.prototype`. -```js -Object.defineProperties(User.prototype, { - name: { - get() { - return this._name - }, - set(name) { - // ... - } - } -}); -``` +## Computed names [...] -Here's an example with computed properties: +Here's an example with a computed method name using brackets `[...]`: ```js run -function f() { return "sayHi"; } - class User { - [f()]() { + +*!* + ['say' + 'Hi']() { +*/!* alert("Hello"); } @@ -298,56 +290,127 @@ class User { new User().sayHi(); ``` -For a generator method, similarly, prepend it with `*`. +Such features are easy to remember, as they resemble that of literal objects. -## Class properties +## Class fields ```warn header="Old browsers may need a polyfill" -Class-level properties are a recent addition to the language. +Class fields are a recent addition to the language. ``` -In the example above, `User` only had methods. Let's add a property: +Previously, our classes only had methods. + +"Class fields" is a syntax that allows to add any properties. + +For instance, let's add `name` property to `class User`: ```js run class User { - name = "Anonymous"; +*!* + name = "John"; +*/!* sayHi() { alert(`Hello, ${this.name}!`); } } -new User().sayHi(); +new User().sayHi(); // Hello, John! ``` -The property is not placed into `User.prototype`. Instead, it is created by `new`, separately for every object. So, the property will never be shared between different objects of the same class. +So, we just write "<property name> = <value>" in the declaration, and that's it. +The important difference of class fields is that they are set on individual objects, not `User.prototype`: -## Summary +```js run +class User { +*!* + name = "John"; +*/!* +} -JavaScript provides many ways to create a class. +let user = new User(); +alert(user.name); // John +alert(User.prototype.name); // undefined +``` -First, as per the general object-oriented terminology, a class is something that provides "object templates", allows to create same-structured objects. +We can also assign values using more complex expressions and function calls: -When we say "a class", that doesn't necessary means the `class` keyword. +```js run +class User { +*!* + name = prompt("Name, please?", "John"); +*/!* +} -This is a class: +let user = new User(); +alert(user.name); // John +``` -```js -function User(name) { - this.sayHi = function() { - alert(name); + +### Making bound methods with class fields + +As demonstrated in the chapter <info:bind> functions in JavaScript have a dynamic `this`. It depends on the context of the call. + +So if an object method is passed around and called in another context, `this` won't be a reference to its object any more. + +For instance, this code will show `undefined`: + +```js run +class Button { + constructor(value) { + this.value = value; + } + + click() { + alert(this.value); + } +} + +let button = new Button("hello"); + +*!* +setTimeout(button.click, 1000); // undefined +*/!* +``` + +The problem is called "losing `this`". + +There are two approaches to fixing it, as discussed in the chapter <info:bind>: + +1. Pass a wrapper-function, such as `setTimeout(() => button.click(), 1000)`. +2. Bind the method to object, e.g. in the constructor. + +Class fields provide another, quite elegant syntax: + +```js run +class Button { + constructor(value) { + this.value = value; } +*!* + click = () => { + alert(this.value); + } +*/!* } + +let button = new Button("hello"); + +setTimeout(button.click, 1000); // hello ``` -...But in most cases `class` keyword is used, as it provides great syntax and many additional features. +The class field `click = () => {...}` is created on a per-object basis, there's a separate function for each `Button` object, with `this` inside it referencing that object. We can pass `button.click` around anywhere, and the value of `this` will always be correct. + +That's especially useful in browser environment, for event listeners. + +## Summary The basic class syntax looks like this: ```js class MyClass { - prop = value; // field + prop = value; // property constructor(...) { // constructor // ... @@ -358,11 +421,11 @@ class MyClass { get something(...) {} // getter method set something(...) {} // setter method - [Symbol.iterator]() {} // method with computed name/symbol name + [Symbol.iterator]() {} // method with computed name (symbol here) // ... } ``` -`MyClass` is technically a function, while methods are written to `MyClass.prototype`. +`MyClass` is technically a function (the one that we provide as `constructor`), while methods, getters and setters are written to `MyClass.prototype`. In the next chapters we'll learn more about classes, including inheritance and other features. diff --git a/1-js/09-classes/02-class-inheritance/2-clock-class-extended/solution.view/extended-clock.js b/1-js/09-classes/02-class-inheritance/2-clock-class-extended/solution.view/extended-clock.js index ca613ca5e..be2053cfc 100644 --- a/1-js/09-classes/02-class-inheritance/2-clock-class-extended/solution.view/extended-clock.js +++ b/1-js/09-classes/02-class-inheritance/2-clock-class-extended/solution.view/extended-clock.js @@ -1,7 +1,7 @@ class ExtendedClock extends Clock { constructor(options) { super(options); - let { precision=1000 } = options; + let { precision = 1000 } = options; this.precision = precision; } diff --git a/1-js/09-classes/02-class-inheritance/article.md b/1-js/09-classes/02-class-inheritance/article.md index 4b281bafe..b917c3bb9 100644 --- a/1-js/09-classes/02-class-inheritance/article.md +++ b/1-js/09-classes/02-class-inheritance/article.md @@ -1,9 +1,13 @@ # Class inheritance -Let's say we have two classes. +Class inheritance is a way for one class to extend another class. -`Animal`: +So we can create new functionality on top of the existing. + +## The "extends" keyword + +Let's say we have class `Animal`: ```js class Animal { @@ -12,24 +16,36 @@ class Animal { this.name = name; } run(speed) { - this.speed += speed; + this.speed = speed; alert(`${this.name} runs with speed ${this.speed}.`); } stop() { this.speed = 0; - alert(`${this.name} stopped.`); + alert(`${this.name} stands still.`); } } let animal = new Animal("My animal"); ``` +<<<<<<< HEAD  +======= +Here's how we can represent `animal` object and `Animal` class graphically: +>>>>>>> 540d753e90789205fc6e75c502f68382c87dea9b + + + +...And we would like to create another `class Rabbit`. +As rabbits are animals, `Rabbit` class should be based on `Animal`, have access to animal methods, so that rabbits can do what "generic" animals can do. -...And `Rabbit`: +The syntax to extend another class is: `class Child extends Parent`. + +Let's create `class Rabbit` that inherits from `Animal`: ```js +<<<<<<< HEAD class Rabbit { constructor(name) { this.name = name; @@ -70,6 +86,8 @@ class Animal { } // Inherit from Animal by specifying "extends Animal" +======= +>>>>>>> 540d753e90789205fc6e75c502f68382c87dea9b *!* class Rabbit extends Animal { */!* @@ -84,15 +102,18 @@ rabbit.run(5); // White Rabbit runs with speed 5. rabbit.hide(); // White Rabbit hides! ``` -Now the `Rabbit` code became a bit shorter, as it uses `Animal` constructor by default, and it also can `run`, as animals do. +Object of `Rabbit` class have access both to `Rabbit` methods, such as `rabbit.hide()`, and also to `Animal` methods, such as `rabbit.run()`. -Internally, `extends` keyword adds `[[Prototype]]` reference from `Rabbit.prototype` to `Animal.prototype`: +Internally, `extends` keyword works using the good old prototype mechanics. It sets `Rabbit.prototype.[[Prototype]]` to `Animal.prototype`. So, if a method is not found in `Rabbit.prototype`, JavaScript takes it from `Animal.prototype`.  -So, if a method is not found in `Rabbit.prototype`, JavaScript takes it from `Animal.prototype`. +For instance, to find `rabbit.run` method, the engine checks (bottom-up on the picture): +1. The `rabbit` object (has no `run`). +2. Its prototype, that is `Rabbit.prototype` (has `hide`, but not `run`). +3. Its prototype, that is (due to `extends`) `Animal.prototype`, that finally has the `run` method. -As we can recall from the chapter <info:native-prototypes>, JavaScript uses the same prototypal inheritance for build-in objects. E.g. `Date.prototype.[[Prototype]]` is `Object.prototype`, so dates have generic object methods. +As we can recall from the chapter <info:native-prototypes>, JavaScript itself uses prototypal inheritance for built-in objects. E.g. `Date.prototype.[[Prototype]]` is `Object.prototype`. That's why dates have access to generic object methods. ````smart header="Any expression is allowed after `extends`" Class syntax allows to specify not just a class, but any expression after `extends`. @@ -102,8 +123,8 @@ For instance, a function call that generates the parent class: ```js run function f(phrase) { return class { - sayHi() { alert(phrase) } - } + sayHi() { alert(phrase); } + }; } *!* @@ -119,20 +140,20 @@ That may be useful for advanced programming patterns when we use functions to ge ## Overriding a method -Now let's move forward and override a method. As of now, `Rabbit` inherits the `stop` method that sets `this.speed = 0` from `Animal`. +Now let's move forward and override a method. By default, all methods that are not specified in `class Rabbit` are taken directly "as is" from `class Animal`. -If we specify our own `stop` in `Rabbit`, then it will be used instead: +But if we specify our own method in `Rabbit`, such as `stop()` then it will be used instead: ```js class Rabbit extends Animal { stop() { - // ...this will be used for rabbit.stop() + // ...now this will be used for rabbit.stop() + // instead of stop() from class Animal } } ``` - -...But usually we don't want to totally replace a parent method, but rather to build on top of it, tweak or extend its functionality. We do something in our method, but call the parent method before/after it or in the process. +Usually, however, we don't want to totally replace a parent method, but rather to build on top of it to tweak or extend its functionality. We do something in our method, but call the parent method before/after it or in the process. Classes provide `"super"` keyword for that. @@ -150,13 +171,13 @@ class Animal { } run(speed) { - this.speed += speed; + this.speed = speed; alert(`${this.name} runs with speed ${this.speed}.`); } stop() { this.speed = 0; - alert(`${this.name} stopped.`); + alert(`${this.name} stands still.`); } } @@ -177,7 +198,7 @@ class Rabbit extends Animal { let rabbit = new Rabbit("White Rabbit"); rabbit.run(5); // White Rabbit runs with speed 5. -rabbit.stop(); // White Rabbit stopped. White rabbit hides! +rabbit.stop(); // White Rabbit stands still. White Rabbit hides! ``` Now `Rabbit` has the `stop` method that calls the parent `super.stop()` in the process. @@ -186,6 +207,7 @@ Now `Rabbit` has the `stop` method that calls the parent `super.stop()` in the p As was mentioned in the chapter <info:arrow-functions>, arrow functions do not have `super`. If accessed, it's taken from the outer function. For instance: + ```js class Rabbit extends Animal { stop() { @@ -202,14 +224,13 @@ setTimeout(function() { super.stop() }, 1000); ``` ```` - ## Overriding constructor With constructors it gets a little bit tricky. -Till now, `Rabbit` did not have its own `constructor`. +Until now, `Rabbit` did not have its own `constructor`. -According to the [specification](https://tc39.github.io/ecma262/#sec-runtime-semantics-classdefinitionevaluation), if a class extends another class and has no `constructor`, then the following `constructor` is generated: +According to the [specification](https://tc39.github.io/ecma262/#sec-runtime-semantics-classdefinitionevaluation), if a class extends another class and has no `constructor`, then the following "empty" `constructor` is generated: ```js class Rabbit extends Animal { @@ -256,22 +277,24 @@ let rabbit = new Rabbit("White Rabbit", 10); // Error: this is not defined. Whoops! We've got an error. Now we can't create rabbits. What went wrong? -The short answer is: constructors in inheriting classes must call `super(...)`, and (!) do it before using `this`. +The short answer is: + +- **Constructors in inheriting classes must call `super(...)`, and (!) do it before using `this`.** ...But why? What's going on here? Indeed, the requirement seems strange. -Of course, there's an explanation. Let's get into details, so you'd really understand what's going on. +Of course, there's an explanation. Let's get into details, so you'll really understand what's going on. -In JavaScript, there's a distinction between a "constructor function of an inheriting class" and all others. In an inheriting class, the corresponding constructor function is labelled with a special internal property `[[ConstructorKind]]:"derived"`. +In JavaScript, there's a distinction between a constructor function of an inheriting class (so-called "derived constructor") and other functions. A derived constructor has a special internal property `[[ConstructorKind]]:"derived"`. That's a special internal label. -The difference is: +That label affects its behavior with `new`. -- When a normal constructor runs, it creates an empty object as `this` and continues with it. -- But when a derived constructor runs, it doesn't do it. It expects the parent constructor to do this job. +- When a regular function is executed with `new`, it creates an empty object and assigns it to `this`. +- But when a derived constructor runs, it doesn't do this. It expects the parent constructor to do this job. -So if we're making a constructor of our own, then we must call `super`, because otherwise the object with `this` reference to it won't be created. And we'll get an error. +So a derived constructor must call `super` in order to execute its parent (base) constructor, otherwise the object for `this` won't be created. And we'll get an error. -For `Rabbit` to work, we need to call `super()` before using `this`, like here: +For the `Rabbit` constructor to work, it needs to call `super()` before using `this`, like here: ```js run class Animal { @@ -304,20 +327,121 @@ alert(rabbit.earLength); // 10 */!* ``` +### Overriding class fields: a tricky note + +```warn header="Advanced note" +This note assumes you have a certain experience with classes, maybe in other programming languages. + +It provides better insight into the language and also explains the behavior that might be a source of bugs (but not very often). + +If you find it difficult to understand, just go on, continue reading, then return to it some time later. +``` + +We can override not only methods, but also class fields. + +Although, there's a tricky behavior when we access an overridden field in parent constructor, quite different from most other programming languages. + +Consider this example: + +```js run +class Animal { + name = 'animal'; + + constructor() { + alert(this.name); // (*) + } +} + +class Rabbit extends Animal { + name = 'rabbit'; +} + +new Animal(); // animal +*!* +new Rabbit(); // animal +*/!* +``` + +Here, class `Rabbit` extends `Animal` and overrides the `name` field with its own value. + +There's no own constructor in `Rabbit`, so `Animal` constructor is called. + +What's interesting is that in both cases: `new Animal()` and `new Rabbit()`, the `alert` in the line `(*)` shows `animal`. + +**In other words, the parent constructor always uses its own field value, not the overridden one.** + +What's odd about it? + +If it's not clear yet, please compare with methods. + +Here's the same code, but instead of `this.name` field we call `this.showName()` method: + +```js run +class Animal { + showName() { // instead of this.name = 'animal' + alert('animal'); + } + + constructor() { + this.showName(); // instead of alert(this.name); + } +} + +class Rabbit extends Animal { + showName() { + alert('rabbit'); + } +} + +new Animal(); // animal +*!* +new Rabbit(); // rabbit +*/!* +``` + +Please note: now the output is different. + +And that's what we naturally expect. When the parent constructor is called in the derived class, it uses the overridden method. + +...But for class fields it's not so. As said, the parent constructor always uses the parent field. + +Why is there a difference? + +Well, the reason is the field initialization order. The class field is initialized: +- Before constructor for the base class (that doesn't extend anything), +- Immediately after `super()` for the derived class. + +In our case, `Rabbit` is the derived class. There's no `constructor()` in it. As said previously, that's the same as if there was an empty constructor with only `super(...args)`. + +So, `new Rabbit()` calls `super()`, thus executing the parent constructor, and (per the rule for derived classes) only after that its class fields are initialized. At the time of the parent constructor execution, there are no `Rabbit` class fields yet, that's why `Animal` fields are used. + +This subtle difference between fields and methods is specific to JavaScript. + +Luckily, this behavior only reveals itself if an overridden field is used in the parent constructor. Then it may be difficult to understand what's going on, so we're explaining it here. + +If it becomes a problem, one can fix it by using methods or getters/setters instead of fields. ## Super: internals, [[HomeObject]] -Let's get a little deeper under the hood of `super`. We'll see some interesting things by the way. +```warn header="Advanced information" +If you're reading the tutorial for the first time - this section may be skipped. -First to say, from all that we've learned till now, it's impossible for `super` to work. +It's about the internal mechanisms behind inheritance and `super`. +``` -Yeah, indeed, let's ask ourselves, how it could technically work? When an object method runs, it gets the current object as `this`. If we call `super.method()` then, how to retrieve the `method`? Naturally, we need to take the `method` from the prototype of the current object. How, technically, we (or a JavaScript engine) can do it? +Let's get a little deeper under the hood of `super`. We'll see some interesting things along the way. -Maybe we can get the method from `[[Prototype]]` of `this`, as `this.__proto__.method`? Unfortunately, that doesn't work. +First to say, from all that we've learned till now, it's impossible for `super` to work at all! -Let's try to do it. Without classes, using plain objects for the sake of simplicity. +Yeah, indeed, let's ask ourselves, how it should technically work? When an object method runs, it gets the current object as `this`. If we call `super.method()` then, the engine needs to get the `method` from the prototype of the current object. But how? -Here, `rabbit.eat()` should call `animal.eat()` method of the parent object: +The task may seem simple, but it isn't. The engine knows the current object `this`, so it could get the parent `method` as `this.__proto__.method`. Unfortunately, such a "naive" solution won't work. + +Let's demonstrate the problem. Without classes, using plain objects for the sake of simplicity. + +You may skip this part and go below to the `[[HomeObject]]` subsection if you don't want to know the details. That won't harm. Or read on if you're interested in understanding things in-depth. + +In the example below, `rabbit.__proto__ = animal`. Now let's try: in `rabbit.eat()` we'll call `animal.eat()`, using `this.__proto__`: ```js run let animal = { @@ -414,18 +538,16 @@ The problem can't be solved by using `this` alone. To provide the solution, JavaScript adds one more special internal property for functions: `[[HomeObject]]`. -**When a function is specified as a class or object method, its `[[HomeObject]]` property becomes that object.** - -This actually violates the idea of "unbound" functions, because methods remember their objects. And `[[HomeObject]]` can't be changed, so this bound is forever. So that's a very important change in the language. +When a function is specified as a class or object method, its `[[HomeObject]]` property becomes that object. -But this change is safe. `[[HomeObject]]` is used only for calling parent methods in `super`, to resolve the prototype. So it doesn't break compatibility. +Then `super` uses it to resolve the parent prototype and its methods. -Let's see how it works for `super` -- again, using plain objects: +Let's see how it works, first with plain objects: ```js run let animal = { name: "Animal", - eat() { // [[HomeObject]] == animal + eat() { // animal.eat.[[HomeObject]] == animal alert(`${this.name} eats.`); } }; @@ -433,7 +555,7 @@ let animal = { let rabbit = { __proto__: animal, name: "Rabbit", - eat() { // [[HomeObject]] == rabbit + eat() { // rabbit.eat.[[HomeObject]] == rabbit super.eat(); } }; @@ -441,25 +563,85 @@ let rabbit = { let longEar = { __proto__: rabbit, name: "Long Ear", - eat() { // [[HomeObject]] == longEar + eat() { // longEar.eat.[[HomeObject]] == longEar super.eat(); } }; *!* +// works correctly longEar.eat(); // Long Ear eats. */!* ``` -Every method remembers its object in the internal `[[HomeObject]]` property. Then `super` uses it to resolve the parent prototype. +It works as intended, due to `[[HomeObject]]` mechanics. A method, such as `longEar.eat`, knows its `[[HomeObject]]` and takes the parent method from its prototype. Without any use of `this`. + +### Methods are not "free" + +As we've known before, generally functions are "free", not bound to objects in JavaScript. So they can be copied between objects and called with another `this`. + +The very existence of `[[HomeObject]]` violates that principle, because methods remember their objects. `[[HomeObject]]` can't be changed, so this bond is forever. -`[[HomeObject]]` is defined for methods defined both in classes and in plain objects. But for objects, methods must be specified exactly the given way: as `method()`, not as `"method: function()"`. +The only place in the language where `[[HomeObject]]` is used -- is `super`. So, if a method does not use `super`, then we can still consider it free and copy between objects. But with `super` things may go wrong. + +Here's the demo of a wrong `super` result after copying: + +```js run +let animal = { + sayHi() { + alert(`I'm an animal`); + } +}; + +// rabbit inherits from animal +let rabbit = { + __proto__: animal, + sayHi() { + super.sayHi(); + } +}; + +let plant = { + sayHi() { + alert("I'm a plant"); + } +}; + +// tree inherits from plant +let tree = { + __proto__: plant, +*!* + sayHi: rabbit.sayHi // (*) +*/!* +}; + +*!* +tree.sayHi(); // I'm an animal (?!?) +*/!* +``` + +A call to `tree.sayHi()` shows "I'm an animal". Definitely wrong. + +The reason is simple: +- In the line `(*)`, the method `tree.sayHi` was copied from `rabbit`. Maybe we just wanted to avoid code duplication? +- Its `[[HomeObject]]` is `rabbit`, as it was created in `rabbit`. There's no way to change `[[HomeObject]]`. +- The code of `tree.sayHi()` has `super.sayHi()` inside. It goes up from `rabbit` and takes the method from `animal`. + +Here's the diagram of what happens: + + + +### Methods, not function properties + +`[[HomeObject]]` is defined for methods both in classes and in plain objects. But for objects, methods must be specified exactly as `method()`, not as `"method: function()"`. + +The difference may be non-essential for us, but it's important for JavaScript. In the example below a non-method syntax is used for comparison. `[[HomeObject]]` property is not set and the inheritance doesn't work: ```js run let animal = { - eat: function() { // should be the short syntax: eat() {...} + eat: function() { // intentionally writing like this instead of eat() {... // ... } }; @@ -475,3 +657,18 @@ let rabbit = { rabbit.eat(); // Error calling super (because there's no [[HomeObject]]) */!* ``` + +## Summary + +1. To extend a class: `class Child extends Parent`: + - That means `Child.prototype.__proto__` will be `Parent.prototype`, so methods are inherited. +2. When overriding a constructor: + - We must call parent constructor as `super()` in `Child` constructor before using `this`. +3. When overriding another method: + - We can use `super.method()` in a `Child` method to call `Parent` method. +4. Internals: + - Methods remember their class/object in the internal `[[HomeObject]]` property. That's how `super` resolves parent methods. + - So it's not safe to copy a method with `super` from one object to another. + +Also: +- Arrow functions don't have their own `this` or `super`, so they transparently fit into the surrounding context. diff --git a/1-js/09-classes/02-class-inheritance/super-homeobject-wrong.svg b/1-js/09-classes/02-class-inheritance/super-homeobject-wrong.svg new file mode 100644 index 000000000..f6450ddc4 --- /dev/null +++ b/1-js/09-classes/02-class-inheritance/super-homeobject-wrong.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" width="395" height="192" viewBox="0 0 395 192"><defs><style>@import url(https://fonts.googleapis.com/css?family=Open+Sans:bold,italic,bolditalic%7CPT+Mono);@font-face{font-family:'PT Mono';font-weight:700;font-style:normal;src:local('PT MonoBold'),url(/font/PTMonoBold.woff2) format('woff2'),url(/font/PTMonoBold.woff) format('woff'),url(/font/PTMonoBold.ttf) format('truetype')}</style></defs><g id="inheritance" fill="none" fill-rule="evenodd" stroke="none" stroke-width="1"><g id="super-homeobject-wrong.svg"><path id="Rectangle-1" fill="#FBF2EC" stroke="#DBAF88" stroke-width="2" d="M335 30v28h-98V30h98z"/><text id="sayHi" fill="#AF6E24" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="247" y="48">sayHi</tspan></text><text id="plant" fill="#AF6E24" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="241" y="22">plant</tspan></text><path id="Rectangle-1-Copy-4" fill="#FBF2EC" stroke="#DBAF88" stroke-width="2" d="M335 143v28h-98v-28h98z"/><text id="sayHi" fill="#AF6E24" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="247" y="162">sayHi</tspan></text><text id="tree" fill="#AF6E24" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="241" y="135">tree</tspan></text><path id="Line" fill="#C06334" fill-rule="nonzero" d="M287.5 70.5l7 14h-6v28h-2v-28h-6l7-14z"/><path id="Line-Copy" fill="#C06334" fill-rule="nonzero" d="M121.025 150.55l-.022 6.001 124 .449 1 .004-.007 2-1-.004-124-.449-.021 6L107 157.5l14.025-6.95z"/><path id="Rectangle-1-Copy-3" fill="#FBF2EC" stroke="#DBAF88" stroke-width="2" d="M8 30h98v28H8z"/><text id="sayHi" fill="#AF6E24" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="18" y="48">sayHi</tspan></text><path id="Rectangle-1-Copy-2" fill="#FBF2EC" stroke="#DBAF88" stroke-width="2" d="M8 143h98v28H8z"/><text id="animal" fill="#AF6E24" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="12" y="22">animal</tspan></text><text id="rabbit" fill="#AF6E24" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="12" y="131">rabbit</tspan></text><path id="Line-Copy-4" fill="#C06334" fill-rule="nonzero" d="M58.5 72.5l7 14h-6v28h-2v-28h-6l7-14z"/><text id="[[HomeObject]]" fill="#AF6E24" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="115" y="142">[[HomeObject]]</tspan></text><text id="sayHi" fill="#AF6E24" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="16" y="162">sayHi</tspan></text></g></g></svg> \ No newline at end of file diff --git a/1-js/09-classes/02-class-inheritance/3-class-extend-object/rabbit-extends-object.svg b/1-js/09-classes/03-static-properties-methods/3-class-extend-object/rabbit-extends-object.svg similarity index 54% rename from 1-js/09-classes/02-class-inheritance/3-class-extend-object/rabbit-extends-object.svg rename to 1-js/09-classes/03-static-properties-methods/3-class-extend-object/rabbit-extends-object.svg index 8ab568291..8f948e447 100644 --- a/1-js/09-classes/02-class-inheritance/3-class-extend-object/rabbit-extends-object.svg +++ b/1-js/09-classes/03-static-properties-methods/3-class-extend-object/rabbit-extends-object.svg @@ -1,3 +1,4 @@ +<<<<<<< HEAD:1-js/09-classes/02-class-inheritance/3-class-extend-object/rabbit-extends-object.svg <?xml version="1.0" encoding="UTF-8"?> <svg width="458px" height="344px" viewBox="0 0 458 344" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <!-- Generator: sketchtool 55.2 (78181) - https://sketchapp.com --> @@ -64,4 +65,7 @@ </text> </g> </g> -</svg> \ No newline at end of file +</svg> +======= +<svg xmlns="http://www.w3.org/2000/svg" width="458" height="344" viewBox="0 0 458 344"><defs><style>@import url(https://fonts.googleapis.com/css?family=Open+Sans:bold,italic,bolditalic%7CPT+Mono);@font-face{font-family:'PT Mono';font-weight:700;font-style:normal;src:local('PT MonoBold'),url(/font/PTMonoBold.woff2) format('woff2'),url(/font/PTMonoBold.woff) format('woff'),url(/font/PTMonoBold.ttf) format('truetype')}</style></defs><g id="inheritance" fill="none" fill-rule="evenodd" stroke="none" stroke-width="1"><g id="rabbit-extends-object.svg"><path id="Rectangle-1" fill="#FBF2EC" stroke="#DBAF88" stroke-width="2" d="M406 61v68H228V61h178z"/><text id="call:-function-bind:" fill="#AF6E24" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="238" y="80">call: function</tspan> <tspan x="238" y="95">bind: function</tspan> <tspan x="238" y="110">...</tspan></text><path id="Rectangle-1-Copy" fill="#FBF2EC" stroke="#DBAF88" stroke-width="2" d="M228 303h178v28H228z"/><text id="Function.prototype" fill="#AF6E24" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="227" y="53">Function.prototype</tspan></text><path id="Rectangle-1-Copy-4" fill="#FBF2EC" stroke="#DBAF88" stroke-width="2" d="M406 202v28H228v-28h178z"/><text id="constructor" fill="#AF6E24" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="238" y="220">constructor</tspan></text><text id="Object" fill="#AF6E24" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="227" y="194">Object</tspan></text><text id="Rabbit" fill="#AF6E24" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="233" y="292">Rabbit</tspan></text><path id="Line" fill="#C06334" fill-rule="nonzero" d="M316.5 143.5l7 14h-6v28h-2v-28h-6l7-14z"/><text id="[[Prototype]]" fill="#AF6E24" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="326" y="167">[[Prototype]]</tspan></text><path id="Line-Copy-3" fill="#C06334" fill-rule="nonzero" d="M316.5 247.5l7 14h-6v28h-2v-28h-6l7-14z"/><text id="[[Prototype]]-Copy" fill="#AF6E24" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="326" y="271">[[Prototype]]</tspan></text><text id="constructor-copy" fill="#AF6E24" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="236" y="321">constructor</tspan></text><path id="Rectangle-1-Copy-3" fill="#FBF2EC" stroke="#DBAF88" stroke-width="2" d="M8 61h178v68H8z"/><text id="call:-function-bind:-copy" fill="#AF6E24" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="18" y="80">call: function</tspan> <tspan x="18" y="95">bind: function</tspan> <tspan x="18" y="110">...</tspan></text><path id="Rectangle-1-Copy-2" fill="#FBF2EC" stroke="#DBAF88" stroke-width="2" d="M8 201h178v28H8z"/><text id="Function.prototype-Copy" fill="#AF6E24" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="7" y="53">Function.prototype</tspan></text><text id="Rabbit-Copy" fill="#AF6E24" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="13" y="190">Rabbit</tspan></text><path id="Line-Copy-4" fill="#C06334" fill-rule="nonzero" d="M96.5 145.5l7 14h-6v28h-2v-28h-6l7-14z"/><text id="[[Prototype]]-Copy-2" fill="#AF6E24" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="106" y="169">[[Prototype]]</tspan></text><text id="constructor-copy-2" fill="#AF6E24" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="16" y="219">constructor</tspan></text><text id="class-Rabbit" fill="#C06334" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="14" y="18">class Rabbit</tspan></text><text id="class-Rabbit-extends" fill="#C06334" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="224" y="18">class Rabbit extends Object</tspan></text></g></g></svg> +>>>>>>> 540d753e90789205fc6e75c502f68382c87dea9b:1-js/09-classes/03-static-properties-methods/3-class-extend-object/rabbit-extends-object.svg diff --git a/1-js/09-classes/02-class-inheritance/3-class-extend-object/solution.md b/1-js/09-classes/03-static-properties-methods/3-class-extend-object/solution.md similarity index 76% rename from 1-js/09-classes/02-class-inheritance/3-class-extend-object/solution.md rename to 1-js/09-classes/03-static-properties-methods/3-class-extend-object/solution.md index fa26ec834..cb9829ce0 100644 --- a/1-js/09-classes/02-class-inheritance/3-class-extend-object/solution.md +++ b/1-js/09-classes/03-static-properties-methods/3-class-extend-object/solution.md @@ -21,14 +21,14 @@ alert( rabbit.hasOwnProperty('name') ); // true But that's not all yet. -Even after the fix, there's still important difference in `"class Rabbit extends Object"` versus `class Rabbit`. +Even after the fix, there's still an important difference between `"class Rabbit extends Object"` and `class Rabbit`. As we know, the "extends" syntax sets up two prototypes: 1. Between `"prototype"` of the constructor functions (for methods). -2. Between the constructor functions itself (for static methods). +2. Between the constructor functions themselves (for static methods). -In our case, for `class Rabbit extends Object` it means: +In the case of `class Rabbit extends Object` it means: ```js run class Rabbit extends Object {} @@ -37,7 +37,7 @@ alert( Rabbit.prototype.__proto__ === Object.prototype ); // (1) true alert( Rabbit.__proto__ === Object ); // (2) true ``` -So `Rabbit` now provides access to static methods of `Object` via `Rabbit`, like this: +So `Rabbit` now provides access to the static methods of `Object` via `Rabbit`, like this: ```js run class Rabbit extends Object {} @@ -67,7 +67,7 @@ alert ( Rabbit.getOwnPropertyNames({a: 1, b: 2})); // Error So `Rabbit` doesn't provide access to static methods of `Object` in that case. -By the way, `Function.prototype` has "generic" function methods, like `call`, `bind` etc. They are ultimately available in both cases, because for the built-in `Object` constructor, `Object.__proto__ === Function.prototype`. +By the way, `Function.prototype` also has "generic" function methods, like `call`, `bind` etc. They are ultimately available in both cases, because for the built-in `Object` constructor, `Object.__proto__ === Function.prototype`. Here's the picture: diff --git a/1-js/09-classes/02-class-inheritance/3-class-extend-object/task.md b/1-js/09-classes/03-static-properties-methods/3-class-extend-object/task.md similarity index 88% rename from 1-js/09-classes/02-class-inheritance/3-class-extend-object/task.md rename to 1-js/09-classes/03-static-properties-methods/3-class-extend-object/task.md index ca6628edf..1d0f98a74 100644 --- a/1-js/09-classes/02-class-inheritance/3-class-extend-object/task.md +++ b/1-js/09-classes/03-static-properties-methods/3-class-extend-object/task.md @@ -1,4 +1,4 @@ -importance: 5 +importance: 3 --- @@ -19,7 +19,6 @@ let rabbit = new Rabbit("Rab"); *!* // hasOwnProperty method is from Object.prototype -// rabbit.__proto__ === Object.prototype alert( rabbit.hasOwnProperty('name') ); // true */!* ``` @@ -39,5 +38,5 @@ class Rabbit extends Object { let rabbit = new Rabbit("Rab"); -alert( rabbit.hasOwnProperty('name') ); // true +alert( rabbit.hasOwnProperty('name') ); // Error ``` diff --git a/1-js/09-classes/03-static-properties-methods/article.md b/1-js/09-classes/03-static-properties-methods/article.md index 6ccf4fd71..0cfc07797 100644 --- a/1-js/09-classes/03-static-properties-methods/article.md +++ b/1-js/09-classes/03-static-properties-methods/article.md @@ -1,9 +1,9 @@ # Static properties and methods -We can also assign a method to the class function, not to its `"prototype"`. Such methods are called *static*. +We can also assign a method to the class as a whole. Such methods are called *static*. -An example: +In a class declaration, they are prepended by `static` keyword, like this: ```js run class User { @@ -17,21 +17,25 @@ class User { User.staticMethod(); // true ``` -That actually does the same as assigning it as a function property: +That actually does the same as assigning it as a property directly: -```js -function User() { } +```js run +class User { } User.staticMethod = function() { alert(this === User); }; + +User.staticMethod(); // true ``` -The value of `this` inside `User.staticMethod()` is the class constructor `User` itself (the "object before dot" rule). +The value of `this` in `User.staticMethod()` call is the class constructor `User` itself (the "object before dot" rule). + +Usually, static methods are used to implement functions that belong to the class as a whole, but not to any particular object of it. -Usually, static methods are used to implement functions that belong to the class, but not to any particular object of it. +For instance, we have `Article` objects and need a function to compare them. -For instance, we have `Article` objects and need a function to compare them. The natural choice would be `Article.compare`, like this: +A natural solution would be to add `Article.compare` static method: ```js run class Article { @@ -49,8 +53,8 @@ class Article { // usage let articles = [ - new Article("Mind", new Date(2019, 1, 1)), - new Article("Body", new Date(2019, 0, 1)), + new Article("HTML", new Date(2019, 1, 1)), + new Article("CSS", new Date(2019, 0, 1)), new Article("JavaScript", new Date(2019, 11, 1)) ]; @@ -58,20 +62,22 @@ let articles = [ articles.sort(Article.compare); */!* -alert( articles[0].title ); // Body +alert( articles[0].title ); // CSS ``` -Here `Article.compare` stands "over" the articles, as a means to compare them. It's not a method of an article, but rather of the whole class. +Here `Article.compare` method stands "above" articles, as a means to compare them. It's not a method of an article, but rather of the whole class. -Another example would be a so-called "factory" method. Imagine, we need few ways to create an article: +Another example would be a so-called "factory" method. + +Let's say, we need multiple ways to create an article: 1. Create by given parameters (`title`, `date` etc). 2. Create an empty article with today's date. -3. ... +3. ...or else somehow. The first way can be implemented by the constructor. And for the second one we can make a static method of the class. -Like `Article.createTodays()` here: +Such as `Article.createTodays()` here: ```js run class Article { @@ -90,7 +96,7 @@ class Article { let article = Article.createTodays(); -alert( article.title ); // Todays digest +alert( article.title ); // Today's digest ``` Now every time we need to create a today's digest, we can call `Article.createTodays()`. Once again, that's not a method of an article, but a method of the whole class. @@ -99,15 +105,26 @@ Static methods are also used in database-related classes to search/save/remove e ```js // assuming Article is a special class for managing articles -// static method to remove the article: +// static method to remove the article by id: Article.remove({id: 12345}); ``` +````warn header="Static methods aren't available for individual objects" +Static methods are callable on classes, not on individual objects. + +E.g. such code won't work: + +```js +// ... +article.createTodays(); /// Error: article.createTodays is not a function +``` +```` + ## Static properties [recent browser=Chrome] -Static properties are also possible, just like regular class properties: +Static properties are also possible, they look like regular class properties, but prepended by `static`: ```js run class Article { @@ -123,14 +140,15 @@ That is the same as a direct assignment to `Article`: Article.publisher = "Ilya Kantor"; ``` -## Statics and inheritance +## Inheritance of static properties and methods [#statics-and-inheritance] -Statics are inherited, we can access `Parent.method` as `Child.method`. +Static properties and methods are inherited. -For instance, `Animal.compare` in the code below is inherited and accessible as `Rabbit.compare`: +For instance, `Animal.compare` and `Animal.planet` in the code below are inherited and accessible as `Rabbit.compare` and `Rabbit.planet`: ```js run class Animal { + static planet = "Earth"; constructor(name, speed) { this.speed = speed; @@ -167,38 +185,47 @@ rabbits.sort(Rabbit.compare); */!* rabbits[0].run(); // Black Rabbit runs with speed 5. + +alert(Rabbit.planet); // Earth ``` -Now we can call `Rabbit.compare` assuming that the inherited `Animal.compare` will be called. +Now when we call `Rabbit.compare`, the inherited `Animal.compare` will be called. -How does it work? Again, using prototypes. As you might have already guessed, extends also gives `Rabbit` the `[[Prototype]]` reference to `Animal`. +How does it work? Again, using prototypes. As you might have already guessed, `extends` gives `Rabbit` the `[[Prototype]]` reference to `Animal`. + +<<<<<<< HEAD  +======= +So, `Rabbit extends Animal` creates two `[[Prototype]]` references: +>>>>>>> 540d753e90789205fc6e75c502f68382c87dea9b + +1. `Rabbit` function prototypally inherits from `Animal` function. +2. `Rabbit.prototype` prototypally inherits from `Animal.prototype`. -So, `Rabbit` function now inherits from `Animal` function. And `Animal` function normally has `[[Prototype]]` referencing `Function.prototype`, because it doesn't `extend` anything. +As a result, inheritance works both for regular and static methods. -Here, let's check that: +Here, let's check that by code: ```js run class Animal {} class Rabbit extends Animal {} -// for static properties and methods +// for statics alert(Rabbit.__proto__ === Animal); // true -// and the next step is Function.prototype -alert(Animal.__proto__ === Function.prototype); // true - -// that's in addition to the "normal" prototype chain for object methods -alert(Rabbit.prototype.__proto__ === Animal.prototype); +// for regular methods +alert(Rabbit.prototype.__proto__ === Animal.prototype); // true ``` -This way `Rabbit` has access to all static methods of `Animal`. - ## Summary -Static methods are used for the functionality that doesn't relate to a concrete class instance, doesn't require an instance to exist, but rather belongs to the class as a whole, like `Article.compare` -- a generic method to compare two articles. +Static methods are used for the functionality that belongs to the class "as a whole". It doesn't relate to a concrete class instance. + +For example, a method for comparison `Article.compare(article1, article2)` or a factory method `Article.createTodays()`. + +They are labeled by the word `static` in class declaration. Static properties are used when we'd like to store class-level data, also not bound to an instance. @@ -214,13 +241,13 @@ class MyClass { } ``` -That's technically the same as assigning to the class itself: +Technically, static declaration is the same as assigning to the class itself: ```js MyClass.property = ... MyClass.method = ... ``` -Static properties are inherited. +Static properties and methods are inherited. -Technically, for `class B extends A` the prototype of the class `B` itself points to `A`: `B.[[Prototype]] = A`. So if a field is not found in `B`, the search continues in `A`. +For `class B extends A` the prototype of the class `B` itself points to `A`: `B.[[Prototype]] = A`. So if a field is not found in `B`, the search continues in `A`. diff --git a/1-js/09-classes/04-private-protected-properties-methods/article.md b/1-js/09-classes/04-private-protected-properties-methods/article.md index ea6753419..91efb89ee 100644 --- a/1-js/09-classes/04-private-protected-properties-methods/article.md +++ b/1-js/09-classes/04-private-protected-properties-methods/article.md @@ -48,16 +48,16 @@ So, all we need to use an object is to know its external interface. We may be co That was a general introduction. -In JavaScript, there are three types of properties and members: +In JavaScript, there are two types of object fields (properties and methods): -- Public: accessible from anywhere. They comprise the external interface. Till now we were only using public properties and methods. +- Public: accessible from anywhere. They comprise the external interface. Until now we were only using public properties and methods. - Private: accessible only from inside the class. These are for the internal interface. -In many other languages there also exist "protected" fields: accessible only from inside the class and those extending it. They are also useful for the internal interface. They are in a sense more widespread than private ones, because we usually want inheriting classes to gain access to properly do the extension. +In many other languages there also exist "protected" fields: accessible only from inside the class and those extending it (like private, but plus access from inheriting classes). They are also useful for the internal interface. They are in a sense more widespread than private ones, because we usually want inheriting classes to gain access to them. Protected fields are not implemented in JavaScript on the language level, but in practice they are very convenient, so they are emulated. -In the next step we'll make a coffee machine in JavaScript with all these types of properties. A coffee machine has a lot of details, we won't model them to stay simple (though we could). +Now we'll make a coffee machine in JavaScript with all these types of properties. A coffee machine has a lot of details, we won't model them to stay simple (though we could). ## Protecting "waterAmount" @@ -87,7 +87,7 @@ Let's change `waterAmount` property to protected to have more control over it. F **Protected properties are usually prefixed with an underscore `_`.** -That is not enforced on the language level, but there's a convention that such properties and methods should not be accessed from the outside. Most programmers follow it. +That is not enforced on the language level, but there's a well-known convention between programmers that such properties and methods should not be accessed from the outside. So our property will be called `_waterAmount`: @@ -96,7 +96,9 @@ class CoffeeMachine { _waterAmount = 0; set waterAmount(value) { - if (value < 0) throw new Error("Negative water"); + if (value < 0) { + value = 0; + } this._waterAmount = value; } @@ -114,10 +116,10 @@ class CoffeeMachine { let coffeeMachine = new CoffeeMachine(100); // add water -coffeeMachine.waterAmount = -10; // Error: Negative water +coffeeMachine.waterAmount = -10; // _waterAmount will become 0, not -10 ``` -Now the access is under control, so setting the water below zero fails. +Now the access is under control, so setting the water amount below zero becomes impossible. ## Read-only "power" @@ -159,21 +161,21 @@ class CoffeeMachine { _waterAmount = 0; *!*setWaterAmount(value)*/!* { - if (value < 0) throw new Error("Negative water"); + if (value < 0) value = 0; this._waterAmount = value; } *!*getWaterAmount()*/!* { - return this.waterAmount; + return this._waterAmount; } } new CoffeeMachine().setWaterAmount(100); ``` -That looks a bit longer, but functions are more flexible. They can accept multiple arguments (even if we don't need them right now). So, for the future, just in case we need to refactor something, functions are a safer choice. +That looks a bit longer, but functions are more flexible. They can accept multiple arguments (even if we don't need them right now). -Surely, there's a tradeoff. On the other hand, get/set syntax is shorter, so ultimately there's no strict rule, it's up to you to decide. +On the other hand, get/set syntax is shorter, so ultimately there's no strict rule, it's up to you to decide. ```` ```smart header="Protected fields are inherited" @@ -190,32 +192,23 @@ There's a finished JavaScript proposal, almost in the standard, that provides la Privates should start with `#`. They are only accessible from inside the class. -For instance, here we add a private `#waterLimit` property and extract the water-checking logic into a separate method: +For instance, here's a private `#waterLimit` property and the water-checking private method `#fixWaterAmount`: -```js +```js run class CoffeeMachine { *!* #waterLimit = 200; */!* *!* - #checkWater(value) { - if (value < 0) throw new Error("Negative water"); - if (value > this.#waterLimit) throw new Error("Too much water"); + #fixWaterAmount(value) { + if (value < 0) return 0; + if (value > this.#waterLimit) return this.#waterLimit; } */!* - _waterAmount = 0; - - set waterAmount(value) { -*!* - this.#checkWater(value); -*/!* - this._waterAmount = value; - } - - get waterAmount() { - return this.waterAmount; + setWaterAmount(value) { + this.#waterLimit = this.#fixWaterAmount(value); } } @@ -223,11 +216,10 @@ class CoffeeMachine { let coffeeMachine = new CoffeeMachine(); *!* -coffeeMachine.#checkWater(); // Error +// can't access privates from outside of the class +coffeeMachine.#fixWaterAmount(123); // Error coffeeMachine.#waterLimit = 1000; // Error */!* - -coffeeMachine.waterAmount = 100; // Works ``` On the language level, `#` is a special sign that the field is private. We can't access it from outside or from inheriting classes. @@ -246,7 +238,7 @@ class CoffeeMachine { } set waterAmount(value) { - if (value < 0) throw new Error("Negative water"); + if (value < 0) value = 0; this.#waterAmount = value; } } @@ -262,7 +254,7 @@ Unlike protected ones, private fields are enforced by the language itself. That' But if we inherit from `CoffeeMachine`, then we'll have no direct access to `#waterAmount`. We'll need to rely on `waterAmount` getter/setter: ```js -class CoffeeMachine extends CoffeeMachine() { +class MegaCoffeeMachine extends CoffeeMachine { method() { *!* alert( this.#waterAmount ); // Error: can only access from CoffeeMachine @@ -271,19 +263,19 @@ class CoffeeMachine extends CoffeeMachine() { } ``` -In many scenarios such limitation is too severe. If we extend a `CoffeeMachine`, we may have legitimate reason to access its internals. That's why protected fields are used most of the time, even though they are not supported by the language syntax. +In many scenarios such limitation is too severe. If we extend a `CoffeeMachine`, we may have legitimate reasons to access its internals. That's why protected fields are used more often, even though they are not supported by the language syntax. -````warn +````warn header="Private fields are not available as this[name]" Private fields are special. -Remember, usually we can access fields by this[name]: +As we know, usually we can access fields using `this[name]`: ```js class User { ... sayHi() { let fieldName = "name"; - alert(`Hello, ${this[fieldName]}`); + alert(`Hello, ${*!*this[fieldName]*/!*}`); } } ``` @@ -293,11 +285,11 @@ With private fields that's impossible: `this['#name']` doesn't work. That's a sy ## Summary -In terms of OOP, delimiting of the internal interface from the external one is called [encapsulation]("https://en.wikipedia.org/wiki/Encapsulation_(computer_programming)"). +In terms of OOP, delimiting of the internal interface from the external one is called [encapsulation](https://en.wikipedia.org/wiki/Encapsulation_(computer_programming)). It gives the following benefits: -Protection for users, so that they don't shoot themselves in the feet +Protection for users, so that they don't shoot themselves in the foot : Imagine, there's a team of developers using a coffee machine. It was made by the "Best CoffeeMachine" company, and works fine, but a protective cover was removed. So the internal interface is exposed. All developers are civilized -- they use the coffee machine as intended. But one of them, John, decided that he's the smartest one, and made some tweaks in the coffee machine internals. So the coffee machine failed two days later. @@ -309,22 +301,22 @@ Protection for users, so that they don't shoot themselves in the feet Supportable : The situation in programming is more complex than with a real-life coffee machine, because we don't just buy it once. The code constantly undergoes development and improvement. - **If we strictly delimit the internal interface, then the developer of the class can freely change its internal properties and methods, even without informing the users..** + **If we strictly delimit the internal interface, then the developer of the class can freely change its internal properties and methods, even without informing the users.** - It's much easier to develop, if you know that certain methods can be renamed, their parameters can be changed, and even removed, because no external code depends on them. + If you're a developer of such class, it's great to know that private methods can be safely renamed, their parameters can be changed, and even removed, because no external code depends on them. - For users, when a new version comes out, it may be a total overhaul, but still simple to upgrade if the external interface is the same. + For users, when a new version comes out, it may be a total overhaul internally, but still simple to upgrade if the external interface is the same. Hiding complexity -: People adore to use things that are simple. At least from outside. What's inside is a different thing. +: People adore using things that are simple. At least from outside. What's inside is a different thing. Programmers are not an exception. **It's always convenient when implementation details are hidden, and a simple, well-documented external interface is available.** -To hide internal interface we use either protected or public properties: +To hide an internal interface we use either protected or private properties: - Protected fields start with `_`. That's a well-known convention, not enforced at the language level. Programmers should only access a field starting with `_` from its class and classes inheriting from it. -- Private fields start with `#`. JavaScript makes sure we only can access those from inside the class. +- Private fields start with `#`. JavaScript makes sure we can only access those from inside the class. Right now, private fields are not well-supported among browsers, but can be polyfilled. diff --git a/1-js/09-classes/05-extend-natives/article.md b/1-js/09-classes/05-extend-natives/article.md index 4cf1c2bdd..28b4c6eb6 100644 --- a/1-js/09-classes/05-extend-natives/article.md +++ b/1-js/09-classes/05-extend-natives/article.md @@ -21,21 +21,20 @@ alert(filteredArr); // 10, 50 alert(filteredArr.isEmpty()); // false ``` -Please note a very interesting thing. Built-in methods like `filter`, `map` and others -- return new objects of exactly the inherited type. They rely on the `constructor` property to do so. +Please note a very interesting thing. Built-in methods like `filter`, `map` and others -- return new objects of exactly the inherited type `PowerArray`. Their internal implementation uses the object's `constructor` property for that. In the example above, ```js arr.constructor === PowerArray ``` -So when `arr.filter()` is called, it internally creates the new array of results exactly as `new PowerArray`. -That's actually very cool, because we can keep using `PowerArray` methods further on the result. +When `arr.filter()` is called, it internally creates the new array of results using exactly `arr.constructor`, not basic `Array`. That's actually very cool, because we can keep using `PowerArray` methods further on the result. Even more, we can customize that behavior. -There's a special static getter `Symbol.species`, if exists, it returns the constructor to use in such cases. +We can add a special static getter `Symbol.species` to the class. If it exists, it should return the constructor that JavaScript will use internally to create new entities in `map`, `filter` and so on. -If we'd like built-in methods like `map`, `filter` will return regular arrays, we can return `Array` in `Symbol.species`, like here: +If we'd like built-in methods like `map` or `filter` to return regular arrays, we can return `Array` in `Symbol.species`, like here: ```js run class PowerArray extends Array { @@ -65,18 +64,26 @@ alert(filteredArr.isEmpty()); // Error: filteredArr.isEmpty is not a function As you can see, now `.filter` returns `Array`. So the extended functionality is not passed any further. +```smart header="Other collections work similarly" +Other collections, such as `Map` and `Set`, work alike. They also use `Symbol.species`. +``` + ## No static inheritance in built-ins Built-in objects have their own static methods, for instance `Object.keys`, `Array.isArray` etc. -And we've already been talking about native classes extending each other: `Array.[[Prototype]] = Object`. +As we already know, native classes extend each other. For instance, `Array` extends `Object`. -But statics are an exception. Built-in classes don't inherit static properties from each other. +Normally, when one class extends another, both static and non-static methods are inherited. That was thoroughly explained in the article [](info:static-properties-methods#statics-and-inheritance). -In other words, the prototype of built-in constructor `Array` does not point to `Object`. This way `Array` and `Date` do not have `Array.keys` or `Date.keys`. And that feels natural. +But built-in classes are an exception. They don't inherit statics from each other. + +For example, both `Array` and `Date` inherit from `Object`, so their instances have methods from `Object.prototype`. But `Array.[[Prototype]]` does not reference `Object`, so there's no, for instance, `Array.keys()` (or `Date.keys()`) static method. Here's the picture structure for `Date` and `Object`:  -Note, there's no link between `Date` and `Object`. Both `Object` and `Date` exist independently. `Date.prototype` inherits from `Object.prototype`, but that's all. +As you can see, there's no link between `Date` and `Object`. They are independent, only `Date.prototype` inherits from `Object.prototype`. + +That's an important difference of inheritance between built-in objects compared to what we get with `extends`. diff --git a/1-js/09-classes/06-instanceof/1-strange-instanceof/task.md b/1-js/09-classes/06-instanceof/1-strange-instanceof/task.md index e9481912a..5b8dc7de3 100644 --- a/1-js/09-classes/06-instanceof/1-strange-instanceof/task.md +++ b/1-js/09-classes/06-instanceof/1-strange-instanceof/task.md @@ -4,7 +4,7 @@ importance: 5 # Strange instanceof -Why `instanceof` below returns `true`? We can easily see that `a` is not created by `B()`. +In the code below, why does `instanceof` return `true`? We can easily see that `a` is not created by `B()`. ```js run function A() {} diff --git a/1-js/09-classes/06-instanceof/article.md b/1-js/09-classes/06-instanceof/article.md index 50adef552..f9db989ca 100644 --- a/1-js/09-classes/06-instanceof/article.md +++ b/1-js/09-classes/06-instanceof/article.md @@ -2,7 +2,7 @@ The `instanceof` operator allows to check whether an object belongs to a certain class. It also takes inheritance into account. -Such a check may be necessary in many cases, here we'll use it for building a *polymorphic* function, the one that treats arguments differently depending on their type. +Such a check may be necessary in many cases. For example, it can be used for building a *polymorphic* function, the one that treats arguments differently depending on their type. ## The instanceof operator [#ref-instanceof] @@ -11,7 +11,7 @@ The syntax is: obj instanceof Class ``` -It returns `true` if `obj` belongs to the `Class` (or a class inheriting from it). +It returns `true` if `obj` belongs to the `Class` or a class inheriting from it. For instance: @@ -44,16 +44,19 @@ alert( arr instanceof Array ); // true alert( arr instanceof Object ); // true ``` -Please note that `arr` also belongs to the `Object` class. That's because `Array` prototypally inherits from `Object`. +Please note that `arr` also belongs to the `Object` class. That's because `Array` prototypically inherits from `Object`. -The `instanceof` operator examines the prototype chain for the check, and is also fine-tunable using the static method `Symbol.hasInstance`. +Normally, `instanceof` examines the prototype chain for the check. We can also set a custom logic in the static method `Symbol.hasInstance`. The algorithm of `obj instanceof Class` works roughly as follows: -1. If there's a static method `Symbol.hasInstance`, then use it. Like this: +1. If there's a static method `Symbol.hasInstance`, then just call it: `Class[Symbol.hasInstance](obj)`. It should return either `true` or `false`, and we're done. That's how we can customize the behavior of `instanceof`. + + For example: ```js run - // assume anything that canEat is an animal + // setup instanceOf check that assumes that + // anything with canEat property is an animal class Animal { static [Symbol.hasInstance](obj) { if (obj.canEat) return true; @@ -61,22 +64,25 @@ The algorithm of `obj instanceof Class` works roughly as follows: } let obj = { canEat: true }; + alert(obj instanceof Animal); // true: Animal[Symbol.hasInstance](obj) is called ``` -2. Most classes do not have `Symbol.hasInstance`. In that case, check if `Class.prototype` equals to one of prototypes in the `obj` prototype chain. +2. Most classes do not have `Symbol.hasInstance`. In that case, the standard logic is used: `obj instanceOf Class` checks whether `Class.prototype` is equal to one of the prototypes in the `obj` prototype chain. - In other words, compare: + In other words, compare one after another: ```js - obj.__proto__ === Class.prototype - obj.__proto__.__proto__ === Class.prototype - obj.__proto__.__proto__.__proto__ === Class.prototype + obj.__proto__ === Class.prototype? + obj.__proto__.__proto__ === Class.prototype? + obj.__proto__.__proto__.__proto__ === Class.prototype? ... + // if any answer is true, return true + // otherwise, if we reached the end of the chain, return false ``` - In the example above `Rabbit.prototype === rabbit.__proto__`, so that gives the answer immediately. + In the example above `rabbit.__proto__ === Rabbit.prototype`, so that gives the answer immediately. - In the case of an inheritance, `rabbit` is an instance of the parent class as well: + In the case of an inheritance, the match will be at the second step: ```js run class Animal {} @@ -86,8 +92,11 @@ The algorithm of `obj instanceof Class` works roughly as follows: *!* alert(rabbit instanceof Animal); // true */!* - // rabbit.__proto__ === Rabbit.prototype + + // rabbit.__proto__ === Animal.prototype (no match) + *!* // rabbit.__proto__.__proto__ === Animal.prototype (match!) + */!* ``` Here's the illustration of what `rabbit instanceof Animal` compares with `Animal.prototype`: @@ -96,9 +105,9 @@ Here's the illustration of what `rabbit instanceof Animal` compares with `Animal By the way, there's also a method [objA.isPrototypeOf(objB)](mdn:js/object/isPrototypeOf), that returns `true` if `objA` is somewhere in the chain of prototypes for `objB`. So the test of `obj instanceof Class` can be rephrased as `Class.prototype.isPrototypeOf(obj)`. -That's funny, but the `Class` constructor itself does not participate in the check! Only the chain of prototypes and `Class.prototype` matters. +It's funny, but the `Class` constructor itself does not participate in the check! Only the chain of prototypes and `Class.prototype` matters. -That can lead to interesting consequences when `prototype` is changed. +That can lead to interesting consequences when a `prototype` property is changed after the object is created. Like here: @@ -115,9 +124,7 @@ alert( rabbit instanceof Rabbit ); // false */!* ``` -That's one of the reasons to avoid changing `prototype`. Just to keep safe. - -## Bonus: Object toString for the type +## Bonus: Object.prototype.toString for the type We already know that plain objects are converted to string as `[object Object]`: @@ -150,7 +157,7 @@ let objectToString = Object.prototype.toString; // what type is this? let arr = []; -alert( objectToString.call(arr) ); // [object Array] +alert( objectToString.call(arr) ); // [object *!*Array*/!*] ``` Here we used [call](mdn:js/function/call) as described in the chapter [](info:call-apply-decorators) to execute the function `objectToString` in the context `this=arr`. @@ -179,11 +186,11 @@ let user = { alert( {}.toString.call(user) ); // [object User] ``` -For most environment-specific objects, there is such a property. Here are few browser specific examples: +For most environment-specific objects, there is such a property. Here are some browser specific examples: ```js run // toStringTag for the environment-specific object and class: -alert( window[Symbol.toStringTag]); // window +alert( window[Symbol.toStringTag]); // Window alert( XMLHttpRequest.prototype[Symbol.toStringTag] ); // XMLHttpRequest alert( {}.toString.call(window) ); // [object Window] @@ -194,11 +201,11 @@ As you can see, the result is exactly `Symbol.toStringTag` (if exists), wrapped At the end we have "typeof on steroids" that not only works for primitive data types, but also for built-in objects and even can be customized. -It can be used instead of `instanceof` for built-in objects when we want to get the type as a string rather than just to check. +We can use `{}.toString.call` instead of `instanceof` for built-in objects when we want to get the type as a string rather than just to check. ## Summary -Let's recap the type-checking methods that we know: +Let's summarize the type-checking methods that we know: | | works for | returns | |---------------|-------------|---------------| diff --git a/1-js/09-classes/07-mixins/article.md b/1-js/09-classes/07-mixins/article.md index 7b6d9ebad..21c1097d0 100644 --- a/1-js/09-classes/07-mixins/article.md +++ b/1-js/09-classes/07-mixins/article.md @@ -2,19 +2,19 @@ In JavaScript we can only inherit from a single object. There can be only one `[[Prototype]]` for an object. And a class may extend only one other class. -But sometimes that feels limiting. For instance, I have a class `StreetSweeper` and a class `Bicycle`, and want to make a `StreetSweepingBicycle`. +But sometimes that feels limiting. For instance, we have a class `StreetSweeper` and a class `Bicycle`, and want to make their mix: a `StreetSweepingBicycle`. -Or, talking about programming, we have a class `Renderer` that implements templating and a class `EventEmitter` that implements event handling, and want to merge these functionalities together with a class `Page`, to make a page that can use templates and emit events. +Or we have a class `User` and a class `EventEmitter` that implements event generation, and we'd like to add the functionality of `EventEmitter` to `User`, so that our users can emit events. There's a concept that can help here, called "mixins". -As defined in Wikipedia, a [mixin](https://en.wikipedia.org/wiki/Mixin) is a class that contains methods for use by other classes without having to be the parent class of those other classes. +As defined in Wikipedia, a [mixin](https://en.wikipedia.org/wiki/Mixin) is a class containing methods that can be used by other classes without a need to inherit from it. In other words, a *mixin* provides methods that implement a certain behavior, but we do not use it alone, we use it to add the behavior to other classes. ## A mixin example -The simplest way to make a mixin in JavaScript is to make an object with useful methods, so that we can easily merge them into a prototype of any class. +The simplest way to implement a mixin in JavaScript is to make an object with useful methods, so that we can easily merge them into a prototype of any class. For instance here the mixin `sayHiMixin` is used to add some "speech" for `User`: @@ -47,7 +47,7 @@ Object.assign(User.prototype, sayHiMixin); new User("Dude").sayHi(); // Hello Dude! ``` -There's no inheritance, but a simple method copying. So `User` may extend some other class and also include the mixin to "mix-in" the additional methods, like this: +There's no inheritance, but a simple method copying. So `User` may inherit from another class and also include the mixin to "mix-in" the additional methods, like this: ```js class User extends Person { @@ -69,16 +69,16 @@ let sayMixin = { }; let sayHiMixin = { - __proto__: sayMixin, // (or we could use Object.create to set the prototype here) + __proto__: sayMixin, // (or we could use Object.setPrototypeOf to set the prototype here) sayHi() { *!* // call parent method */!* - super.say(`Hello ${this.name}`); + super.say(`Hello ${this.name}`); // (*) }, sayBye() { - super.say(`Bye ${this.name}`); + super.say(`Bye ${this.name}`); // (*) } }; @@ -95,27 +95,35 @@ Object.assign(User.prototype, sayHiMixin); new User("Dude").sayHi(); // Hello Dude! ``` -Please note that the call to the parent method `super.say()` from `sayHiMixin` looks for the method in the prototype of that mixin, not the class. +Please note that the call to the parent method `super.say()` from `sayHiMixin` (at lines labelled with `(*)`) looks for the method in the prototype of that mixin, not the class. +<<<<<<< HEAD  +======= +Here's the diagram (see the right part): +>>>>>>> 540d753e90789205fc6e75c502f68382c87dea9b -That's because methods from `sayHiMixin` have `[[HomeObject]]` set to it. So `super` actually means `sayHiMixin.__proto__`, not `User.__proto__`. + + +That's because methods `sayHi` and `sayBye` were initially created in `sayHiMixin`. So even though they got copied, their `[[HomeObject]]` internal property references `sayHiMixin`, as shown in the picture above. + +As `super` looks for parent methods in `[[HomeObject]].[[Prototype]]`, that means it searches `sayHiMixin.[[Prototype]]`. ## EventMixin Now let's make a mixin for real life. -The important feature of many objects is working with events. +An important feature of many browser objects (for instance) is that they can generate events. Events are a great way to "broadcast information" to anyone who wants it. So let's make a mixin that allows us to easily add event-related functions to any class/object. -That is: an object should have a method to "generate an event" when something important happens to it, and other objects should be able to "listen" to such events. +- The mixin will provide a method `.trigger(name, [...data])` to "generate an event" when something important happens to it. The `name` argument is a name of the event, optionally followed by additional arguments with event data. +- Also the method `.on(name, handler)` that adds `handler` function as the listener to events with the given name. It will be called when an event with the given `name` triggers, and get the arguments from the `.trigger` call. +- ...And the method `.off(name, handler)` that removes the `handler` listener. -An event must have a name and, optionally, bundle some additional data. +After adding the mixin, an object `user` will be able to generate an event `"login"` when the visitor logs in. And another object, say, `calendar` may want to listen for such events to load the calendar for the logged-in person. -For instance, an object `user` can generate an event `"login"` when the visitor logs in. And another object `calendar` may want to receive such events to load the calendar for the logged-in person. +Or, a `menu` can generate the event `"select"` when a menu item is selected, and other objects may assign handlers to react on that event. And so on. -Or, a `menu` can generate the event `"select"` when a menu item is selected, and other objects may want to get that information and react on that event. - -Events is a way to "share information" with anyone who wants it. They can be useful in any class, so let's make a mixin for them: +Here's the code: ```js run let eventMixin = { @@ -136,7 +144,7 @@ let eventMixin = { * menu.off('select', handler) */ off(eventName, handler) { - let handlers = this._eventHandlers && this._eventHandlers[eventName]; + let handlers = this._eventHandlers?.[eventName]; if (!handlers) return; for (let i = 0; i < handlers.length; i++) { if (handlers[i] === handler) { @@ -146,11 +154,11 @@ let eventMixin = { }, /** - * Generate the event and attach the data to it + * Generate an event with the given name and data * this.trigger('select', data1, data2); */ trigger(eventName, ...args) { - if (!this._eventHandlers || !this._eventHandlers[eventName]) { + if (!this._eventHandlers?.[eventName]) { return; // no handlers for that event name } @@ -160,12 +168,10 @@ let eventMixin = { }; ``` -There are 3 methods here: - -1. `.on(eventName, handler)` -- assigns function `handler` to run when the event with that name happens. The handlers are stored in the `_eventHandlers` property. -2. `.off(eventName, handler)` -- removes the function from the handlers list. -3. `.trigger(eventName, ...args)` -- generates the event: all assigned handlers are called and `args` are passed as arguments to them. +- `.on(eventName, handler)` -- assigns function `handler` to run when the event with that name occurs. Technically, there's an `_eventHandlers` property that stores an array of handlers for each event name, and it just adds it to the list. +- `.off(eventName, handler)` -- removes the function from the handlers list. +- `.trigger(eventName, ...args)` -- generates the event: all handlers from `_eventHandlers[eventName]` are called, with a list of arguments `...args`. Usage: @@ -176,30 +182,31 @@ class Menu { this.trigger("select", value); } } -// Add the mixin +// Add the mixin with event-related methods Object.assign(Menu.prototype, eventMixin); let menu = new Menu(); -// call the handler on selection: +// add a handler, to be called on selection: *!* menu.on("select", value => alert(`Value selected: ${value}`)); */!* -// triggers the event => shows Value selected: 123 -menu.choose("123"); // value selected +// triggers the event => the handler above runs and shows: +// Value selected: 123 +menu.choose("123"); ``` -Now if we have the code interested to react on user selection, we can bind it with `menu.on(...)`. +Now, if we'd like any code to react to a menu selection, we can listen for it with `menu.on(...)`. -And the `eventMixin` can add such behavior to as many classes as we'd like, without interfering with the inheritance chain. +And `eventMixin` mixin makes it easy to add such behavior to as many classes as we'd like, without interfering with the inheritance chain. ## Summary *Mixin* -- is a generic object-oriented programming term: a class that contains methods for other classes. -Some other languages like e.g. python allow to create mixins using multiple inheritance. JavaScript does not support multiple inheritance, but mixins can be implemented by copying them into the prototype. +Some other languages allow multiple inheritance. JavaScript does not support multiple inheritance, but mixins can be implemented by copying methods into prototype. -We can use mixins as a way to augment a class by multiple behaviors, like event-handling as we have seen above. +We can use mixins as a way to augment a class by adding multiple behaviors, like event-handling as we have seen above. -Mixins may become a point of conflict if they occasionally overwrite native class methods. So generally one should think well about the naming for a mixin, to minimize such possibility. +Mixins may become a point of conflict if they accidentally overwrite existing class methods. So generally one should think well about the naming methods of a mixin, to minimize the probability of that happening. diff --git a/1-js/09-classes/07-mixins/head.html b/1-js/09-classes/07-mixins/head.html index 77ea38b20..20e3a6354 100644 --- a/1-js/09-classes/07-mixins/head.html +++ b/1-js/09-classes/07-mixins/head.html @@ -18,7 +18,7 @@ * menu.off('select', handler) */ off(eventName, handler) { - let handlers = this._eventHandlers && this._eventHandlers[eventName]; + let handlers = this._eventHandlers?.[eventName]; if (!handlers) return; for(let i = 0; i < handlers.length; i++) { if (handlers[i] == handler) { diff --git a/1-js/10-error-handling/1-try-catch/1-finally-or-code-after/solution.md b/1-js/10-error-handling/1-try-catch/1-finally-or-code-after/solution.md index 05ba72e00..ec0dabc9a 100644 --- a/1-js/10-error-handling/1-try-catch/1-finally-or-code-after/solution.md +++ b/1-js/10-error-handling/1-try-catch/1-finally-or-code-after/solution.md @@ -1,8 +1,8 @@ The difference becomes obvious when we look at the code inside a function. -The behavior is different if there's a "jump out" of `try..catch`. +The behavior is different if there's a "jump out" of `try...catch`. -For instance, when there's a `return` inside `try..catch`. The `finally` clause works in case of *any* exit from `try..catch`, even via the `return` statement: right after `try..catch` is done, but before the calling code gets the control. +For instance, when there's a `return` inside `try...catch`. The `finally` clause works in case of *any* exit from `try...catch`, even via the `return` statement: right after `try...catch` is done, but before the calling code gets the control. ```js run function f() { @@ -11,7 +11,7 @@ function f() { *!* return "result"; */!* - } catch (e) { + } catch (err) { /// ... } finally { alert('cleanup!'); @@ -28,11 +28,11 @@ function f() { try { alert('start'); throw new Error("an error"); - } catch (e) { + } catch (err) { // ... if("can't handle the error") { *!* - throw e; + throw err; */!* } @@ -44,4 +44,4 @@ function f() { f(); // cleanup! ``` -It's `finally` that guarantees the cleanup here. If we just put the code at the end of `f`, it wouldn't run. +It's `finally` that guarantees the cleanup here. If we just put the code at the end of `f`, it wouldn't run in these situations. diff --git a/1-js/10-error-handling/1-try-catch/1-finally-or-code-after/task.md b/1-js/10-error-handling/1-try-catch/1-finally-or-code-after/task.md index e84687343..b6dc81326 100644 --- a/1-js/10-error-handling/1-try-catch/1-finally-or-code-after/task.md +++ b/1-js/10-error-handling/1-try-catch/1-finally-or-code-after/task.md @@ -6,12 +6,12 @@ importance: 5 Compare the two code fragments. -1. The first one uses `finally` to execute the code after `try..catch`: +1. The first one uses `finally` to execute the code after `try...catch`: ```js try { work work - } catch (e) { + } catch (err) { handle errors } finally { *!* @@ -19,12 +19,12 @@ Compare the two code fragments. */!* } ``` -2. The second fragment puts the cleaning right after `try..catch`: +2. The second fragment puts the cleaning right after `try...catch`: ```js try { work work - } catch (e) { + } catch (err) { handle errors } @@ -33,6 +33,6 @@ Compare the two code fragments. */!* ``` -We definitely need the cleanup after the work has started, doesn't matter if there was an error or not. +We definitely need the cleanup after the work, doesn't matter if there was an error or not. Is there an advantage here in using `finally` or both code fragments are equal? If there is such an advantage, then give an example when it matters. diff --git a/1-js/10-error-handling/1-try-catch/article.md b/1-js/10-error-handling/1-try-catch/article.md index d2a42dddc..cad2e1a3e 100644 --- a/1-js/10-error-handling/1-try-catch/article.md +++ b/1-js/10-error-handling/1-try-catch/article.md @@ -1,14 +1,14 @@ -# Error handling, "try..catch" +# Error handling, "try...catch" -No matter how great we are at programming, sometimes our scripts have errors. They may occur because of our mistakes, an unexpected user input, an erroneous server response and for a thousand of other reasons. +No matter how great we are at programming, sometimes our scripts have errors. They may occur because of our mistakes, an unexpected user input, an erroneous server response, and for a thousand other reasons. Usually, a script "dies" (immediately stops) in case of an error, printing it to console. -But there's a syntax construct `try..catch` that allows to "catch" errors and, instead of dying, do something more reasonable. +But there's a syntax construct `try...catch` that allows us to "catch" errors so the script can, instead of dying, do something more reasonable. -## The "try..catch" syntax +## The "try...catch" syntax -The `try..catch` construct has two main blocks: `try`, and then `catch`: +The `try...catch` construct has two main blocks: `try`, and then `catch`: ```js try { @@ -25,14 +25,14 @@ try { It works like this: 1. First, the code in `try {...}` is executed. -2. If there were no errors, then `catch(err)` is ignored: the execution reaches the end of `try` and then jumps over `catch`. -3. If an error occurs, then `try` execution is stopped, and the control flows to the beginning of `catch(err)`. The `err` variable (can use any name for it) contains an error object with details about what's happened. +2. If there were no errors, then `catch (err)` is ignored: the execution reaches the end of `try` and goes on, skipping `catch`. +3. If an error occurs, then the `try` execution is stopped, and control flows to the beginning of `catch (err)`. The `err` variable (we can use any name for it) will contain an error object with details about what happened.  -So, an error inside the `try {…}` block does not kill the script: we have a chance to handle it in `catch`. +So, an error inside the `try {...}` block does not kill the script -- we have a chance to handle it in `catch`. -Let's see more examples. +Let's look at some examples. - An errorless example: shows `alert` `(1)` and `(2)`: @@ -45,13 +45,11 @@ Let's see more examples. alert('End of try runs'); // *!*(2) <--*/!* - } catch(err) { + } catch (err) { alert('Catch is ignored, because there are no errors'); // (3) } - - alert("...Then the execution continues"); ``` - An example with an error: shows `(1)` and `(3)`: @@ -66,55 +64,53 @@ Let's see more examples. alert('End of try (never reached)'); // (2) - } catch(err) { + } catch (err) { alert(`Error has occurred!`); // *!*(3) <--*/!* } - - alert("...Then the execution continues"); ``` -````warn header="`try..catch` only works for runtime errors" -For `try..catch` to work, the code must be runnable. In other words, it should be valid JavaScript. +````warn header="`try...catch` only works for runtime errors" +For `try...catch` to work, the code must be runnable. In other words, it should be valid JavaScript. It won't work if the code is syntactically wrong, for instance it has unmatched curly braces: ```js run try { {{{{{{{{{{{{ -} catch(e) { +} catch (err) { alert("The engine can't understand this code, it's invalid"); } ``` -The JavaScript engine first reads the code, and then runs it. The errors that occur on the reading phrase are called "parse-time" errors and are unrecoverable (from inside that code). That's because the engine can't understand the code. +The JavaScript engine first reads the code, and then runs it. The errors that occur on the reading phase are called "parse-time" errors and are unrecoverable (from inside that code). That's because the engine can't understand the code. -So, `try..catch` can only handle errors that occur in the valid code. Such errors are called "runtime errors" or, sometimes, "exceptions". +So, `try...catch` can only handle errors that occur in valid code. Such errors are called "runtime errors" or, sometimes, "exceptions". ```` -````warn header="`try..catch` works synchronously" -If an exception happens in "scheduled" code, like in `setTimeout`, then `try..catch` won't catch it: +````warn header="`try...catch` works synchronously" +If an exception happens in "scheduled" code, like in `setTimeout`, then `try...catch` won't catch it: ```js run try { setTimeout(function() { noSuchVariable; // script will die here }, 1000); -} catch (e) { +} catch (err) { alert( "won't work" ); } ``` -That's because `try..catch` actually wraps the `setTimeout` call that schedules the function. But the function itself is executed later, when the engine has already left the `try..catch` construct. +That's because the function itself is executed later, when the engine has already left the `try...catch` construct. -To catch an exception inside a scheduled function, `try..catch` must be inside that function: +To catch an exception inside a scheduled function, `try...catch` must be inside that function: ```js run setTimeout(function() { try { - noSuchVariable; // try..catch handles the error! + noSuchVariable; // try...catch handles the error! } catch { alert( "error is caught here!" ); } @@ -129,15 +125,15 @@ When an error occurs, JavaScript generates an object containing the details abou ```js try { // ... -} catch(err) { // <-- the "error object", could use another word instead of err +} catch (err) { // <-- the "error object", could use another word instead of err // ... } ``` -For all built-in errors, the error object inside `catch` block has two main properties: +For all built-in errors, the error object has two main properties: `name` -: Error name. For an undefined variable that's `"ReferenceError"`. +: Error name. For instance, for an undefined variable that's `"ReferenceError"`. `message` : Textual message about error details. @@ -154,10 +150,10 @@ try { *!* lalala; // error, variable is not defined! */!* -} catch(err) { +} catch (err) { alert(err.name); // ReferenceError alert(err.message); // lalala is not defined - alert(err.stack); // ReferenceError: lalala is not defined at ... + alert(err.stack); // ReferenceError: lalala is not defined at (...call stack) // Can also show an error as a whole // The error is converted to string as "name: message" @@ -174,20 +170,20 @@ If we don't need error details, `catch` may omit it: ```js try { // ... -} catch { - // error object omitted +} catch { // <-- without (err) + // ... } ``` -## Using "try..catch" +## Using "try...catch" -Let's explore a real-life use case of `try..catch`. +Let's explore a real-life use case of `try...catch`. As we already know, JavaScript supports the [JSON.parse(str)](mdn:js/JSON/parse) method to read JSON-encoded values. Usually it's used to decode data received over the network, from the server or another source. -We receive it and call `JSON.parse`, like this: +We receive it and call `JSON.parse` like this: ```js run let json = '{"name":"John", "age": 30}'; // data from the server @@ -205,11 +201,11 @@ You can find more detailed information about JSON in the <info:json> chapter. **If `json` is malformed, `JSON.parse` generates an error, so the script "dies".** -Should we be satisfied with that? Of course, not! +Should we be satisfied with that? Of course not! This way, if something's wrong with the data, the visitor will never know that (unless they open the developer console). And people really don't like when something "just dies" without any error message. -Let's use `try..catch` to handle the error: +Let's use `try...catch` to handle the error: ```js run let json = "{ bad json }"; @@ -221,12 +217,12 @@ try { */!* alert( user.name ); // doesn't work -} catch (e) { +} catch (err) { *!* // ...the execution jumps here alert( "Our apologies, the data has errors, we'll try to request it one more time." ); - alert( e.name ); - alert( e.message ); + alert( err.name ); + alert( err.message ); */!* } ``` @@ -249,7 +245,7 @@ try { alert( user.name ); // no name! */!* -} catch (e) { +} catch (err) { alert( "doesn't execute" ); } ``` @@ -298,17 +294,17 @@ Let's see what kind of error `JSON.parse` generates: ```js run try { JSON.parse("{ bad json o_O }"); -} catch(e) { +} catch (err) { *!* - alert(e.name); // SyntaxError + alert(err.name); // SyntaxError */!* - alert(e.message); // Unexpected token o in JSON at position 0 + alert(err.message); // Unexpected token b in JSON at position 2 } ``` As we can see, that's a `SyntaxError`. -And in our case, the absence of `name` could be treated as a syntax error also, assuming that users must have a `name`. +And in our case, the absence of `name` is an error, as users must have a `name`. So let's throw it: @@ -327,8 +323,8 @@ try { alert( user.name ); -} catch(e) { - alert( "JSON Error: " + e.message ); // JSON Error: Incomplete data: no name +} catch (err) { + alert( "JSON Error: " + err.message ); // JSON Error: Incomplete data: no name } ``` @@ -338,9 +334,9 @@ Now `catch` became a single place for all error handling: both for `JSON.parse` ## Rethrowing -In the example above we use `try..catch` to handle incorrect data. But is it possible that *another unexpected error* occurs within the `try {...}` block? Like a variable is undefined or something else, not just that "incorrect data" thing. +In the example above we use `try...catch` to handle incorrect data. But is it possible that *another unexpected error* occurs within the `try {...}` block? Like a programming error (variable is not defined) or something else, not just this "incorrect data" thing. -Like this: +For example: ```js run let json = '{ "age": 30 }'; // incomplete data @@ -349,37 +345,41 @@ try { user = JSON.parse(json); // <-- forgot to put "let" before user // ... -} catch(err) { +} catch (err) { alert("JSON Error: " + err); // JSON Error: ReferenceError: user is not defined // (no JSON Error actually) } ``` -Of course, everything's possible! Programmers do make mistakes. Even in open-source utilities used by millions for decades -- suddenly a crazy bug may be discovered that leads to terrible hacks (like it happened with the `ssh` tool). +Of course, everything's possible! Programmers do make mistakes. Even in open-source utilities used by millions for decades -- suddenly a bug may be discovered that leads to terrible hacks. + +In our case, `try...catch` is placed to catch "incorrect data" errors. But by its nature, `catch` gets *all* errors from `try`. Here it gets an unexpected error, but still shows the same `"JSON Error"` message. That's wrong and also makes the code more difficult to debug. + +To avoid such problems, we can employ the "rethrowing" technique. The rule is simple: + +**Catch should only process errors that it knows and "rethrow" all others.** + +The "rethrowing" technique can be explained in more detail as: -In our case, `try..catch` is meant to catch "incorrect data" errors. But by its nature, `catch` gets *all* errors from `try`. Here it gets an unexpected error, but still shows the same `"JSON Error"` message. That's wrong and also makes the code more difficult to debug. +1. Catch gets all errors. +2. In the `catch (err) {...}` block we analyze the error object `err`. +3. If we don't know how to handle it, we do `throw err`. -Fortunately, we can find out which error we get, for instance from its `name`: +Usually, we can check the error type using the `instanceof` operator: ```js run try { user = { /*...*/ }; -} catch(e) { +} catch (err) { *!* - alert(e.name); // "ReferenceError" for accessing an undefined variable + if (err instanceof ReferenceError) { */!* + alert('ReferenceError'); // "ReferenceError" for accessing an undefined variable + } } ``` -The rule is simple: - -**Catch should only process errors that it knows and "rethrow" all others.** - -The "rethrowing" technique can be explained in more detail as: - -1. Catch gets all errors. -2. In `catch(err) {...}` block we analyze the error object `err`. -2. If we don't know how to handle it, then we do `throw err`. +We can also get the error class name from `err.name` property. All native errors have it. Another option is to read `err.constructor.name`. In the code below, we use rethrowing so that `catch` only handles `SyntaxError`: @@ -399,24 +399,24 @@ try { alert( user.name ); -} catch(e) { +} catch (err) { *!* - if (e.name == "SyntaxError") { - alert( "JSON Error: " + e.message ); + if (err instanceof SyntaxError) { + alert( "JSON Error: " + err.message ); } else { - throw e; // rethrow (*) + throw err; // rethrow (*) } */!* } ``` -The error throwing on line `(*)` from inside `catch` block "falls out" of `try..catch` and can be either caught by an outer `try..catch` construct (if it exists), or it kills the script. +The error throwing on line `(*)` from inside `catch` block "falls out" of `try...catch` and can be either caught by an outer `try...catch` construct (if it exists), or it kills the script. So the `catch` block actually handles only errors that it knows how to deal with and "skips" all others. -The example below demonstrates how such errors can be caught by one more level of `try..catch`: +The example below demonstrates how such errors can be caught by one more level of `try...catch`: ```js run function readData() { @@ -427,11 +427,11 @@ function readData() { *!* blabla(); // error! */!* - } catch (e) { + } catch (err) { // ... - if (e.name != 'SyntaxError') { + if (!(err instanceof SyntaxError)) { *!* - throw e; // rethrow (don't know how to deal with it) + throw err; // rethrow (don't know how to deal with it) */!* } } @@ -439,20 +439,20 @@ function readData() { try { readData(); -} catch (e) { +} catch (err) { *!* - alert( "External catch got: " + e ); // caught it! + alert( "External catch got: " + err ); // caught it! */!* } ``` -Here `readData` only knows how to handle `SyntaxError`, while the outer `try..catch` knows how to handle everything. +Here `readData` only knows how to handle `SyntaxError`, while the outer `try...catch` knows how to handle everything. -## try..catch..finally +## try...catch...finally Wait, that's not all. -The `try..catch` construct may have one more code clause: `finally`. +The `try...catch` construct may have one more code clause: `finally`. If it exists, it runs in all cases: @@ -464,7 +464,7 @@ The extended syntax looks like this: ```js *!*try*/!* { ... try to execute the code ... -} *!*catch*/!*(e) { +} *!*catch*/!* (err) { ... handle errors ... } *!*finally*/!* { ... execute always ... @@ -477,7 +477,7 @@ Try running this code: try { alert( 'try' ); if (confirm('Make an error?')) BAD_CODE(); -} catch (e) { +} catch (err) { alert( 'catch' ); } finally { alert( 'finally' ); @@ -489,7 +489,7 @@ The code has two ways of execution: 1. If you answer "Yes" to "Make an error?", then `try -> catch -> finally`. 2. If you say "No", then `try -> finally`. -The `finally` clause is often used when we start doing something before `try..catch` and want to finalize it in any case of outcome. +The `finally` clause is often used when we start doing something and want to finalize it in any case of outcome. For instance, we want to measure the time that a Fibonacci numbers function `fib(n)` takes. Naturally, we can start measuring before it runs and finish afterwards. But what if there's an error during the function call? In particular, the implementation of `fib(n)` in the code below returns an error for negative or non-integer numbers. @@ -513,7 +513,7 @@ let start = Date.now(); try { result = fib(num); -} catch (e) { +} catch (err) { result = 0; *!* } finally { @@ -521,24 +521,24 @@ try { } */!* -alert(result || "error occured"); +alert(result || "error occurred"); alert( `execution took ${diff}ms` ); ``` -You can check by running the code with entering `35` into `prompt` -- it executes normally, `finally` after `try`. And then enter `-1` -- there will be an immediate error, an the execution will take `0ms`. Both measurements are done correctly. +You can check by running the code with entering `35` into `prompt` -- it executes normally, `finally` after `try`. And then enter `-1` -- there will be an immediate error, and the execution will take `0ms`. Both measurements are done correctly. -In other words, there may be two ways to exit a function: either a `return` or `throw`. The `finally` clause handles them both. +In other words, the function may finish with `return` or `throw`, that doesn't matter. The `finally` clause executes in both cases. -```smart header="Variables are local inside `try..catch..finally`" -Please note that `result` and `diff` variables in the code above are declared *before* `try..catch`. +```smart header="Variables are local inside `try...catch...finally`" +Please note that `result` and `diff` variables in the code above are declared *before* `try...catch`. -Otherwise, if `let` were made inside the `{...}` block, it would only be visible inside of it. +Otherwise, if we declared `let` in `try` block, it would only be visible inside of it. ``` ````smart header="`finally` and `return`" -The `finally` clause works for *any* exit from `try..catch`. That includes an explicit `return`. +The `finally` clause works for *any* exit from `try...catch`. That includes an explicit `return`. In the example below, there's a `return` in `try`. In this case, `finally` is executed just before the control returns to the outer code. @@ -550,7 +550,7 @@ function func() { return 1; */!* - } catch (e) { + } catch (err) { /* ... */ } finally { *!* @@ -563,9 +563,9 @@ alert( func() ); // first works alert from finally, and then this one ``` ```` -````smart header="`try..finally`" +````smart header="`try...finally`" -The `try..finally` construct, without `catch` clause, is also useful. We apply it when we don't want to handle errors right here, but want to be sure that processes that we started are finalized. +The `try...finally` construct, without `catch` clause, is also useful. We apply it when we don't want to handle errors here (let them fall through), but want to be sure that processes that we started are finalized. ```js function func() { @@ -577,7 +577,7 @@ function func() { } } ``` -In the code above, an error inside `try` always falls out, because there's no `catch`. But `finally` works before the execution flow jumps outside. +In the code above, an error inside `try` always falls out, because there's no `catch`. But `finally` works before the execution flow leaves the function. ```` ## Global catch @@ -586,11 +586,11 @@ In the code above, an error inside `try` always falls out, because there's no `c The information from this section is not a part of the core JavaScript. ``` -Let's imagine we've got a fatal error outside of `try..catch`, and the script died. Like a programming error or something else terrible. +Let's imagine we've got a fatal error outside of `try...catch`, and the script died. Like a programming error or some other terrible thing. -Is there a way to react on such occurrences? We may want to log the error, show something to the user (normally they don't see error messages) etc. +Is there a way to react on such occurrences? We may want to log the error, show something to the user (normally they don't see error messages), etc. -There is none in the specification, but environments usually provide it, because it's really useful. For instance, Node.js has [process.on('uncaughtException')](https://nodejs.org/api/process.html#process_event_uncaughtexception) for that. And in the browser we can assign a function to special [window.onerror](mdn:api/GlobalEventHandlers/onerror) property. It will run in case of an uncaught error. +There is none in the specification, but environments usually provide it, because it's really useful. For instance, Node.js has [`process.on("uncaughtException")`](https://nodejs.org/api/process.html#process_event_uncaughtexception) for that. And in the browser we can assign a function to the special [window.onerror](mdn:api/GlobalEventHandlers/onerror) property, that will run in case of an uncaught error. The syntax: @@ -632,25 +632,25 @@ For instance: The role of the global handler `window.onerror` is usually not to recover the script execution -- that's probably impossible in case of programming errors, but to send the error message to developers. -There are also web-services that provide error-logging for such cases, like <https://errorception.com> or <http://www.muscula.com>. +There are also web-services that provide error-logging for such cases, like <https://muscula.com> or <https://www.sentry.io>. They work like this: 1. We register at the service and get a piece of JS (or a script URL) from them to insert on pages. -2. That JS script has a custom `window.onerror` function. +2. That JS script sets a custom `window.onerror` function. 3. When an error occurs, it sends a network request about it to the service. 4. We can log in to the service web interface and see errors. ## Summary -The `try..catch` construct allows to handle runtime errors. It literally allows to try running the code and catch errors that may occur in it. +The `try...catch` construct allows to handle runtime errors. It literally allows to "try" running the code and "catch" errors that may occur in it. The syntax is: ```js try { // run this code -} catch(err) { +} catch (err) { // if an error happened, then jump here // err is the error object } finally { @@ -658,18 +658,18 @@ try { } ``` -There may be no `catch` section or no `finally`, so `try..catch` and `try..finally` are also valid. +There may be no `catch` section or no `finally`, so shorter constructs `try...catch` and `try...finally` are also valid. Error objects have following properties: - `message` -- the human-readable error message. - `name` -- the string with error name (error constructor name). -- `stack` (non-standard) -- the stack at the moment of error creation. +- `stack` (non-standard, but well-supported) -- the stack at the moment of error creation. -If error is not needed, we can omit it by using `catch {` instead of `catch(err) {`. +If an error object is not needed, we can omit it by using `catch {` instead of `catch (err) {`. We can also generate our own errors using the `throw` operator. Technically, the argument of `throw` can be anything, but usually it's an error object inheriting from the built-in `Error` class. More on extending errors in the next chapter. -Rethrowing is a basic pattern of error handling: a `catch` block usually expects and knows how to handle the particular error type, so it should rethrow errors it doesn't know. +*Rethrowing* is a very important pattern of error handling: a `catch` block usually expects and knows how to handle the particular error type, so it should rethrow errors it doesn't know. -Even if we don't have `try..catch`, most environments allow to setup a "global" error handler to catch errors that "fall out". In-browser that's `window.onerror`. +Even if we don't have `try...catch`, most environments allow us to setup a "global" error handler to catch errors that "fall out". In-browser, that's `window.onerror`. diff --git a/1-js/10-error-handling/2-custom-errors/1-format-error/solution.md b/1-js/10-error-handling/2-custom-errors/1-format-error/solution.md index bb6b74cfa..754e68f9a 100644 --- a/1-js/10-error-handling/2-custom-errors/1-format-error/solution.md +++ b/1-js/10-error-handling/2-custom-errors/1-format-error/solution.md @@ -2,7 +2,7 @@ class FormatError extends SyntaxError { constructor(message) { super(message); - this.name = "FormatError"; + this.name = this.constructor.name; } } diff --git a/1-js/10-error-handling/2-custom-errors/article.md b/1-js/10-error-handling/2-custom-errors/article.md index 5079c746d..d28b07439 100644 --- a/1-js/10-error-handling/2-custom-errors/article.md +++ b/1-js/10-error-handling/2-custom-errors/article.md @@ -2,11 +2,11 @@ When we develop something, we often need our own error classes to reflect specific things that may go wrong in our tasks. For errors in network operations we may need `HttpError`, for database operations `DbError`, for searching operations `NotFoundError` and so on. -Our errors should support basic error properties like `message`, `name` and, preferably, `stack`. But they also may have other properties of their own, e.g. `HttpError` objects may have `statusCode` property with a value like `404` or `403` or `500`. +Our errors should support basic error properties like `message`, `name` and, preferably, `stack`. But they also may have other properties of their own, e.g. `HttpError` objects may have a `statusCode` property with a value like `404` or `403` or `500`. JavaScript allows to use `throw` with any argument, so technically our custom error classes don't need to inherit from `Error`. But if we inherit, then it becomes possible to use `obj instanceof Error` to identify error objects. So it's better to inherit from it. -As we build our application, our own errors naturally form a hierarchy, for instance `HttpTimeoutError` may inherit from `HttpError`, and so on. +As the application grows, our own errors naturally form a hierarchy. For instance, `HttpTimeoutError` may inherit from `HttpError`, and so on. ## Extending Error @@ -17,17 +17,13 @@ Here's an example of how a valid `json` may look: let json = `{ "name": "John", "age": 30 }`; ``` -Internally, we'll use `JSON.parse`. If it receives malformed `json`, then it throws `SyntaxError`. - -But even if `json` is syntactically correct, that doesn't mean that it's a valid user, right? It may miss the necessary data. For instance, it may not have `name` and `age` properties that are essential for our users. +Internally, we'll use `JSON.parse`. If it receives malformed `json`, then it throws `SyntaxError`. But even if `json` is syntactically correct, that doesn't mean that it's a valid user, right? It may miss the necessary data. For instance, it may not have `name` and `age` properties that are essential for our users. Our function `readUser(json)` will not only read JSON, but check ("validate") the data. If there are no required fields, or the format is wrong, then that's an error. And that's not a `SyntaxError`, because the data is syntactically correct, but another kind of error. We'll call it `ValidationError` and create a class for it. An error of that kind should also carry the information about the offending field. -Our `ValidationError` class should inherit from the built-in `Error` class. - -That class is built-in, but we should have its approximate code before our eyes, to understand what we're extending. +Our `ValidationError` class should inherit from the `Error` class. -So here you are: +The `Error` class is built-in, but here's its approximate code so we can understand what we're extending: ```js // The "pseudocode" for the built-in Error class defined by JavaScript itself @@ -35,14 +31,14 @@ class Error { constructor(message) { this.message = message; this.name = "Error"; // (different names for different built-in error classes) - this.stack = <nested calls>; // non-standard, but most environments support it + this.stack = <call stack>; // non-standard, but most environments support it } } ``` -Now let's go on and inherit `ValidationError` from it: +Now let's inherit `ValidationError` from it and try it in action: -```js run untrusted +```js run *!* class ValidationError extends Error { */!* @@ -65,10 +61,9 @@ try { } ``` -Please take a look at the constructor: +Please note: in the line `(1)` we call the parent constructor. JavaScript requires us to call `super` in the child constructor, so that's obligatory. The parent constructor sets the `message` property. -1. In the line `(1)` we call the parent constructor. JavaScript requires us to call `super` in the child constructor, so that's obligatory. The parent constructor sets the `message` property. -2. The parent constructor also sets the `name` property to `"Error"`, so in the line `(2)` we reset it to the right value. +The parent constructor also sets the `name` property to `"Error"`, so in the line `(2)` we reset it to the right value. Let's try to use it in `readUser(json)`: @@ -122,15 +117,15 @@ We could also look at `err.name`, like this: // instead of (err instanceof SyntaxError) } else if (err.name == "SyntaxError") { // (*) // ... -``` +``` The `instanceof` version is much better, because in the future we are going to extend `ValidationError`, make subtypes of it, like `PropertyRequiredError`. And `instanceof` check will continue to work for new inheriting classes. So that's future-proof. -Also it's important that if `catch` meets an unknown error, then it rethrows it in the line `(**)`. The `catch` only knows how to handle validation and syntax errors, other kinds (due to a typo in the code or such) should fall through. +Also it's important that if `catch` meets an unknown error, then it rethrows it in the line `(**)`. The `catch` block only knows how to handle validation and syntax errors, other kinds (caused by a typo in the code or other unknown reasons) should fall through. ## Further inheritance -The `ValidationError` class is very generic. Many things may go wrong. The property may be absent or it may be in a wrong format (like a string value for `age`). Let's make a more concrete class `PropertyRequiredError`, exactly for absent properties. It will carry additional information about the property that's missing. +The `ValidationError` class is very generic. Many things may go wrong. The property may be absent or it may be in a wrong format (like a string value for `age` instead of a number). Let's make a more concrete class `PropertyRequiredError`, exactly for absent properties. It will carry additional information about the property that's missing. ```js run class ValidationError extends Error { @@ -185,7 +180,7 @@ try { The new class `PropertyRequiredError` is easy to use: we only need to pass the property name: `new PropertyRequiredError(property)`. The human-readable `message` is generated by the constructor. -Please note that `this.name` in `PropertyRequiredError` constructor is again assigned manually. That may become a bit tedious -- to assign `this.name = <class name>` when creating each custom error. But there's a way out. We can make our own "basic error" class that removes this burden from our shoulders by using `this.constructor.name` for `this.name` in the constructor. And then inherit from it. +Please note that `this.name` in `PropertyRequiredError` constructor is again assigned manually. That may become a bit tedious -- to assign `this.name = <class name>` in every custom error class. We can avoid it by making our own "basic error" class that assigns `this.name = this.constructor.name`. And then inherit all our custom errors from it. Let's call it `MyError`. @@ -218,13 +213,41 @@ Now custom errors are much shorter, especially `ValidationError`, as we got rid ## Wrapping exceptions -The purpose of the function `readUser` in the code above is "to read the user data", right? There may occur different kinds of errors in the process. Right now we have `SyntaxError` and `ValidationError`, but in the future `readUser` function may grow: the new code will probably generate other kinds of errors. +The purpose of the function `readUser` in the code above is "to read the user data". There may occur different kinds of errors in the process. Right now we have `SyntaxError` and `ValidationError`, but in the future `readUser` function may grow and probably generate other kinds of errors. + +The code which calls `readUser` should handle these errors. Right now it uses multiple `if`s in the `catch` block, that check the class and handle known errors and rethrow the unknown ones. + +The scheme is like this: + +```js +try { + ... + readUser() // the potential error source + ... +} catch (err) { + if (err instanceof ValidationError) { + // handle validation errors + } else if (err instanceof SyntaxError) { + // handle syntax errors + } else { + throw err; // unknown error, rethrow it + } +} +``` + +In the code above we can see two types of errors, but there can be more. + +If the `readUser` function generates several kinds of errors, then we should ask ourselves: do we really want to check for all error types one-by-one every time? + +Often the answer is "No": we'd like to be "one level above all that". We just want to know if there was a "data reading error" -- why exactly it happened is often irrelevant (the error message describes it). Or, even better, we'd like to have a way to get the error details, but only if we need to. -The code which calls `readUser` should handle these errors. Right now it uses multiple `if` in the `catch` block to check for different error types and rethrow the unknown ones. But if `readUser` function generates several kinds of errors -- then we should ask ourselves: do we really want to check for all error types one-by-one in every code that calls `readUser`? +The technique that we describe here is called "wrapping exceptions". -Often the answer is "No": the outer code wants to be "one level above all that". It wants to have some kind of "data reading error". Why exactly it happened -- is often irrelevant (the error message describes it). Or, even better if there is a way to get error details, but only if we need to. +1. We'll make a new class `ReadError` to represent a generic "data reading" error. +2. The function `readUser` will catch data reading errors that occur inside it, such as `ValidationError` and `SyntaxError`, and generate a `ReadError` instead. +3. The `ReadError` object will keep the reference to the original error in its `cause` property. -So let's make a new class `ReadError` to represent such errors. If an error occurs inside `readUser`, we'll catch it there and generate `ReadError`. We'll also keep the reference to the original error in its `cause` property. Then the outer code will only have to check for `ReadError`. +Then the code that calls `readUser` will only have to check for `ReadError`, not for every kind of data reading errors. And if it needs more details of an error, it can check its `cause` property. Here's the code that defines `ReadError` and demonstrates its use in `readUser` and `try..catch`: @@ -296,12 +319,12 @@ try { In the code above, `readUser` works exactly as described -- catches syntax and validation errors and throws `ReadError` errors instead (unknown errors are rethrown as usual). -So the outer code checks `instanceof ReadError` and that's it. No need to list possible all error types. +So the outer code checks `instanceof ReadError` and that's it. No need to list all possible error types. -The approach is called "wrapping exceptions", because we take "low level exceptions" and "wrap" them into `ReadError` that is more abstract and more convenient to use for the calling code. It is widely used in object-oriented programming. +The approach is called "wrapping exceptions", because we take "low level" exceptions and "wrap" them into `ReadError` that is more abstract. It is widely used in object-oriented programming. ## Summary -- We can inherit from `Error` and other built-in error classes normally, just need to take care of `name` property and don't forget to call `super`. -- Most of the time, we should use `instanceof` to check for particular errors. It also works with inheritance. But sometimes we have an error object coming from the 3rd-party library and there's no easy way to get the class. Then `name` property can be used for such checks. -- Wrapping exceptions is a widespread technique when a function handles low-level exceptions and makes a higher-level object to report about the errors. Low-level exceptions sometimes become properties of that object like `err.cause` in the examples above, but that's not strictly required. +- We can inherit from `Error` and other built-in error classes normally. We just need to take care of the `name` property and don't forget to call `super`. +- We can use `instanceof` to check for particular errors. It also works with inheritance. But sometimes we have an error object coming from a 3rd-party library and there's no easy way to get its class. Then `name` property can be used for such checks. +- Wrapping exceptions is a widespread technique: a function handles low-level exceptions and creates higher-level errors instead of various low-level ones. Low-level exceptions sometimes become properties of that object like `err.cause` in the examples above, but that's not strictly required. diff --git a/1-js/11-async/01-callbacks/article.md b/1-js/11-async/01-callbacks/article.md index a9183c80f..18039db17 100644 --- a/1-js/11-async/01-callbacks/article.md +++ b/1-js/11-async/01-callbacks/article.md @@ -2,38 +2,53 @@ # Introduction: callbacks -Many actions in JavaScript are *asynchronous*. +```warn header="We use browser methods in examples here" +To demonstrate the use of callbacks, promises and other abstract concepts, we'll be using some browser methods: specifically, loading scripts and performing simple document manipulations. -For instance, take a look at the function `loadScript(src)`: +If you're not familiar with these methods, and their usage in the examples is confusing, you may want to read a few chapters from the [next part](/document) of the tutorial. + +Although, we'll try to make things clear anyway. There won't be anything really complex browser-wise. +``` + +Many functions are provided by JavaScript host environments that allow you to schedule *asynchronous* actions. In other words, actions that we initiate now, but they finish later. + +For instance, one such function is the `setTimeout` function. + +There are other real-world examples of asynchronous actions, e.g. loading scripts and modules (we'll cover them in later chapters). + +Take a look at the function `loadScript(src)`, that loads a script with the given `src`: ```js function loadScript(src) { + // creates a <script> tag and append it to the page + // this causes the script with given src to start loading and run when complete let script = document.createElement('script'); script.src = src; document.head.append(script); } ``` -The purpose of the function is to load a new script. When it adds the `<script src="…">` to the document, the browser loads and executes it. +It inserts into the document a new, dynamically created, tag `<script src="…">` with the given `src`. The browser automatically starts loading it and executes when complete. -We can use it like this: +We can use this function like this: ```js -// loads and executes the script +// load and execute the script at the given path loadScript('/my/script.js'); ``` -The function is called "asynchronously," because the action (script loading) finishes not now, but later. +The script is executed "asynchronously", as it starts loading now, but runs later, when the function has already finished. -The call initiates the script loading, then the execution continues. While the script is loading, the code below may finish executing, and if the loading takes time, other scripts may run meanwhile too. +If there's any code below `loadScript(…)`, it doesn't wait until the script loading finishes. ```js loadScript('/my/script.js'); -// the code below loadScript doesn't wait for the script loading to finish +// the code below loadScript +// doesn't wait for the script loading to finish // ... ``` -Now let's say we want to use the new script when it loads. It probably declares new functions, so we'd like to run them. +Let's say we need to use the new script as soon as it loads. It declares new functions, and we want to run them. But if we do that immediately after the `loadScript(…)` call, that wouldn't work: @@ -45,7 +60,7 @@ newFunction(); // no such function! */!* ``` -Naturally, the browser probably didn't have time to load the script. So the immediate call to the new function fails. As of now, the `loadScript` function doesn't provide a way to track the load completion. The script loads and eventually runs, that's all. But we'd like to know when it happens, to use new functions and variables from that script. +Naturally, the browser probably didn't have time to load the script. As of now, the `loadScript` function doesn't provide a way to track the load completion. The script loads and eventually runs, that's all. But we'd like to know when it happens, to use new functions and variables from that script. Let's add a `callback` function as a second argument to `loadScript` that should execute when the script loads: @@ -62,6 +77,8 @@ function loadScript(src, *!*callback*/!*) { } ``` +The `onload` event is described in the article <info:onload-onerror#loading-a-script>, it basically executes a function after the script is loaded and executed. + Now if we want to call new functions from the script, we should write that in the callback: ```js @@ -86,15 +103,15 @@ function loadScript(src, callback) { *!* loadScript('https://cdnjs.cloudflare.com/ajax/libs/lodash.js/3.2.0/lodash.js', script => { - alert(`Cool, the ${script.src} is loaded`); - alert( _ ); // function declared in the loaded script + alert(`Cool, the script ${script.src} is loaded`); + alert( _ ); // _ is a function declared in the loaded script }); */!* ``` That's called a "callback-based" style of asynchronous programming. A function that does something asynchronously should provide a `callback` argument where we put the function to run after it's complete. -Here we did it in `loadScript`, but of course, it's a general approach. +Here we did it in `loadScript`, but of course it's a general approach. ## Callback in callback @@ -131,7 +148,7 @@ loadScript('/my/script.js', function(script) { }); */!* - }) + }); }); ``` @@ -144,7 +161,7 @@ In the above examples we didn't consider errors. What if the script loading fail Here's an improved version of `loadScript` that tracks loading errors: -```js run +```js function loadScript(src, callback) { let script = document.createElement('script'); script.src = src; @@ -181,9 +198,9 @@ So the single `callback` function is used both for reporting errors and passing ## Pyramid of Doom -From the first look, it's a viable way of asynchronous coding. And indeed it is. For one or maybe two nested calls it looks fine. +At first glance, it looks like a viable approach to asynchronous coding. And indeed it is. For one or maybe two nested calls it looks fine. -But for multiple asynchronous actions that follow one after another we'll have code like this: +But for multiple asynchronous actions that follow one after another, we'll have code like this: ```js loadScript('1.js', function(error, script) { @@ -208,20 +225,47 @@ loadScript('1.js', function(error, script) { }); } - }) + }); } }); ``` In the code above: -1. We load `1.js`, then if there's no error. -2. We load `2.js`, then if there's no error. +1. We load `1.js`, then if there's no error... +2. We load `2.js`, then if there's no error... 3. We load `3.js`, then if there's no error -- do something else `(*)`. -As calls become more nested, the code becomes deeper and increasingly more difficult to manage, especially if we have a real code instead of `...`, that may include more loops, conditional statements and so on. +As calls become more nested, the code becomes deeper and increasingly more difficult to manage, especially if we have real code instead of `...` that may include more loops, conditional statements and so on. That's sometimes called "callback hell" or "pyramid of doom." +<<<<<<< HEAD +======= +<!-- +loadScript('1.js', function(error, script) { + if (error) { + handleError(error); + } else { + // ... + loadScript('2.js', function(error, script) { + if (error) { + handleError(error); + } else { + // ... + loadScript('3.js', function(error, script) { + if (error) { + handleError(error); + } else { + // ... + } + }); + } + }); + } +}); +--> + +>>>>>>> 540d753e90789205fc6e75c502f68382c87dea9b  The "pyramid" of nested calls grows to the right with every asynchronous action. Soon it spirals out of control. @@ -257,15 +301,15 @@ function step3(error, script) { } else { // ...continue after all scripts are loaded (*) } -}; +} ``` -See? It does the same, and there's no deep nesting now because we made every action a separate top-level function. +See? It does the same thing, and there's no deep nesting now because we made every action a separate top-level function. It works, but the code looks like a torn apart spreadsheet. It's difficult to read, and you probably noticed that one needs to eye-jump between pieces while reading it. That's inconvenient, especially if the reader is not familiar with the code and doesn't know where to eye-jump. -Also, the functions named `step*` are all of single use, they are created only to avoid the "pyramid of doom." No one is going to reuse them outside of the action chain. So there's a bit of a namespace cluttering here. +Also, the functions named `step*` are all of single use, they are created only to avoid the "pyramid of doom." No one is going to reuse them outside of the action chain. So there's a bit of namespace cluttering here. We'd like to have something better. -Luckily, there are other ways to avoid such pyramids. One of the best ways is to use "promises," described in the next chapter. +Luckily, there are other ways to avoid such pyramids. One of the best ways is to use "promises", described in the next chapter. diff --git a/1-js/11-async/02-promise-basics/03-animate-circle-promise/solution.view/index.html b/1-js/11-async/02-promise-basics/03-animate-circle-promise/solution.view/index.html index 3229daf89..6052f009e 100644 --- a/1-js/11-async/02-promise-basics/03-animate-circle-promise/solution.view/index.html +++ b/1-js/11-async/02-promise-basics/03-animate-circle-promise/solution.view/index.html @@ -10,7 +10,7 @@ text-align: center; } .circle { - transition-property: width, height, margin-left, margin-top; + transition-property: width, height; transition-duration: 2s; position: fixed; transform: translateX(-50%) translateY(-50%); diff --git a/1-js/11-async/02-promise-basics/article.md b/1-js/11-async/02-promise-basics/article.md index 7e05a2ee8..232dbadae 100644 --- a/1-js/11-async/02-promise-basics/article.md +++ b/1-js/11-async/02-promise-basics/article.md @@ -1,14 +1,14 @@ # Promise -Imagine that you're a top singer, and fans ask day and night for your upcoming single. +Imagine that you're a top singer, and fans ask day and night for your upcoming song. -To get some relief, you promise to send it to them when it's published. You give your fans a list to which they can subscribe for updates. They can fill in their email addresses, so that when the song becomes available, all subscribed parties instantly receive it. And even if something goes very wrong, say, if plans to publish the song are cancelled, they will still be notified. +To get some relief, you promise to send it to them when it's published. You give your fans a list. They can fill in their email addresses, so that when the song becomes available, all subscribed parties instantly receive it. And even if something goes very wrong, say, a fire in the studio, so that you can't publish the song, they will still be notified. -Everyone is happy, because the people don't crowd you any more, and fans, because they won't miss the single. +Everyone is happy: you, because the people don't crowd you anymore, and fans, because they won't miss the song. This is a real-life analogy for things we often have in programming: -1. A "producing code" that does something and takes time. For instance, the code loads a remote script. That's a "singer". +1. A "producing code" that does something and takes time. For instance, some code that loads the data over a network. That's a "singer". 2. A "consuming code" that wants the result of the "producing code" once it's ready. Many functions may need that result. These are the "fans". 3. A *promise* is a special JavaScript object that links the "producing code" and the "consuming code" together. In terms of our analogy: this is the "subscription list". The "producing code" takes whatever time it needs to produce the promised result, and the "promise" makes that result available to all of the subscribed code when it's ready. @@ -22,29 +22,35 @@ let promise = new Promise(function(resolve, reject) { }); ``` -The function passed to `new Promise` is called the *executor*. When the promise is created, this executor function runs automatically. It contains the producing code, that should eventually produce a result. In terms of the analogy above: the executor is the "singer". +The function passed to `new Promise` is called the *executor*. When `new Promise` is created, the executor runs automatically. It contains the producing code which should eventually produce the result. In terms of the analogy above: the executor is the "singer". -The resulting `promise` object has internal properties: +Its arguments `resolve` and `reject` are callbacks provided by JavaScript itself. Our code is only inside the executor. -- `state` — initially "pending", then changes to either "fulfilled" or "rejected", -- `result` — an arbitrary value of your choosing, initially `undefined`. +When the executor obtains the result, be it soon or late, doesn't matter, it should call one of these callbacks: -When the executor finishes the job, it should call one of the functions that it gets as arguments: +- `resolve(value)` — if the job is finished successfully, with result `value`. +- `reject(error)` — if an error has occurred, `error` is the error object. -- `resolve(value)` — to indicate that the job finished successfully: - - sets `state` to `"fulfilled"`, - - sets `result` to `value`. -- `reject(error)` — to indicate that an error occurred: - - sets `state` to `"rejected"`, - - sets `result` to `error`. +So to summarize: the executor runs automatically and attempts to perform a job. When it is finished with the attempt, it calls `resolve` if it was successful or `reject` if there was an error. +<<<<<<< HEAD  +======= +The `promise` object returned by the `new Promise` constructor has these internal properties: +>>>>>>> 540d753e90789205fc6e75c502f68382c87dea9b -Later we'll see how these changes become known to "fans". +- `state` — initially `"pending"`, then changes to either `"fulfilled"` when `resolve` is called or `"rejected"` when `reject` is called. +- `result` — initially `undefined`, then changes to `value` when `resolve(value)` is called or `error` when `reject(error)` is called. -Here's an example of a Promise constructor and a simple executor function with its "producing code" (the `setTimeout`): +So the executor eventually moves `promise` to one of these states: -```js run + + +Later we'll see how "fans" can subscribe to these changes. + +Here's an example of a promise constructor and a simple executor function with "producing code" that takes time (via `setTimeout`): + +```js let promise = new Promise(function(resolve, reject) { // the function is executed automatically when the promise is constructed @@ -55,12 +61,16 @@ let promise = new Promise(function(resolve, reject) { We can see two things by running the code above: -1. The executor is called automatically and immediately (by the `new Promise`). -2. The executor receives two arguments: `resolve` and `reject` — these functions are pre-defined by the JavaScript engine. So we don't need to create them. Instead, we should write the executor to call them when ready. +1. The executor is called automatically and immediately (by `new Promise`). +2. The executor receives two arguments: `resolve` and `reject`. These functions are pre-defined by the JavaScript engine, so we don't need to create them. We should only call one of them when ready. -After one second of "processing" the executor calls `resolve("done")` to produce the result: + After one second of "processing", the executor calls `resolve("done")` to produce the result. This changes the state of the `promise` object: +<<<<<<< HEAD  +======= +  +>>>>>>> 540d753e90789205fc6e75c502f68382c87dea9b That was an example of a successful job completion, a "fulfilled promise". @@ -73,20 +83,28 @@ let promise = new Promise(function(resolve, reject) { }); ``` +<<<<<<< HEAD  +======= +The call to `reject(...)` moves the promise object to `"rejected"` state: +>>>>>>> 540d753e90789205fc6e75c502f68382c87dea9b -To summarize, the executor should do a job (something that takes time usually) and then call `resolve` or `reject` to change the state of the corresponding Promise object. + -The Promise that is either resolved or rejected is called "settled", as opposed to a "pending" Promise. +To summarize, the executor should perform a job (usually something that takes time) and then call `resolve` or `reject` to change the state of the corresponding promise object. + +A promise that is either resolved or rejected is called "settled", as opposed to an initially "pending" promise. ````smart header="There can be only a single result or an error" -The executor should call only one `resolve` or one `reject`. The promise's state change is final. +The executor should call only one `resolve` or one `reject`. Any state change is final. All further calls of `resolve` and `reject` are ignored: ```js let promise = new Promise(function(resolve, reject) { +*!* resolve("done"); +*/!* reject(new Error("…")); // ignored setTimeout(() => resolve("…")); // ignored @@ -99,7 +117,7 @@ Also, `resolve`/`reject` expect only one argument (or none) and will ignore addi ```` ```smart header="Reject with `Error` objects" -In case something goes wrong, we can call `reject` with any type of argument (just like `resolve`). But it is recommended to use `Error` objects (or objects that inherit from `Error`). The reasoning for that will soon become apparent. +In case something goes wrong, the executor should call `reject`. That can be done with any type of argument (just like `resolve`). But it is recommended to use `Error` objects (or objects that inherit from `Error`). The reasoning for that will soon become apparent. ``` ````smart header="Immediately calling `resolve`/`reject`" @@ -112,18 +130,18 @@ let promise = new Promise(function(resolve, reject) { }); ``` -For instance, this might happen when we start to do a job but then see that everything has already been completed. +For instance, this might happen when we start to do a job but then see that everything has already been completed and cached. -That's fine. We immediately have a resolved Promise, nothing wrong with that. +That's fine. We immediately have a resolved promise. ```` ```smart header="The `state` and `result` are internal" -The properties `state` and `result` of the Promise object are internal. We can't directly access them from our "consuming code". We can use the methods `.then`/`.catch`/`.finally` for that. They are described below. +The properties `state` and `result` of the Promise object are internal. We can't directly access them. We can use the methods `.then`/`.catch`/`.finally` for that. They are described below. ``` -## Consumers: then, catch, finally +## Consumers: then, catch -A Promise object serves as a link between the executor (the "producing code" or "singer") and the consuming functions (the "fans"), which will receive the result or error. Consuming functions can be registered (subscribed) using methods `.then`, `.catch` and `.finally`. +A Promise object serves as a link between the executor (the "producing code" or "singer") and the consuming functions (the "fans"), which will receive the result or error. Consuming functions can be registered (subscribed) using the methods `.then` and `.catch`. ### then @@ -138,15 +156,9 @@ promise.then( ); ``` -The first argument of `.then` is a function that: +The first argument of `.then` is a function that runs when the promise is resolved and receives the result. -1. runs when the Promise is resolved, and -2. receives the result. - -The second argument of `.then` is a function that: - -1. runs when the Promise is rejected, and -2. receives the error. +The second argument of `.then` is a function that runs when the promise is rejected and receives the error. For instance, here's a reaction to a successfully resolved promise: @@ -166,7 +178,7 @@ promise.then( The first function was executed. -And in the case of a rejection -- the second one: +And in the case of a rejection, the second one: ```js run let promise = new Promise(function(resolve, reject) { @@ -212,73 +224,99 @@ promise.catch(alert); // shows "Error: Whoops!" after 1 second The call `.catch(f)` is a complete analog of `.then(null, f)`, it's just a shorthand. -### finally +## Cleanup: finally Just like there's a `finally` clause in a regular `try {...} catch {...}`, there's `finally` in promises. -The call `.finally(f)` is similar to `.then(f, f)` in the sense that it always runs when the promise is settled: be it resolve or reject. +The call `.finally(f)` is similar to `.then(f, f)` in the sense that `f` runs always, when the promise is settled: be it resolve or reject. + +The idea of `finally` is to set up a handler for performing cleanup/finalizing after the previous operations are complete. -`finally` is a good handler for performing cleanup, e.g. stopping our loading indicators, as they are not needed any more, no matter what the outcome is. +E.g. stopping loading indicators, closing no longer needed connections, etc. -Like this: +Think of it as a party finisher. Irresepective of whether a party was good or bad, how many friends were in it, we still need (or at least should) do a cleanup after it. + +The code may look like this: ```js new Promise((resolve, reject) => { - /* do something that takes time, and then call resolve/reject */ + /* do something that takes time, and then call resolve or maybe reject */ }) *!* // runs when the promise is settled, doesn't matter successfully or not .finally(() => stop loading indicator) + // so the loading indicator is always stopped before we go on */!* .then(result => show result, err => show error) ``` -It's not exactly an alias though. There are several important differences: +Please note that `finally(f)` isn't exactly an alias of `then(f,f)` though. + +There are important differences: 1. A `finally` handler has no arguments. In `finally` we don't know whether the promise is successful or not. That's all right, as our task is usually to perform "general" finalizing procedures. -2. Finally passes through results and errors to the next handler. + + Please take a look at the example above: as you can see, the `finally` handler has no arguments, and the promise outcome is handled by the next handler. +2. A `finally` handler "passes through" the result or error to the next suitable handler. For instance, here the result is passed through `finally` to `then`: + ```js run new Promise((resolve, reject) => { - setTimeout(() => resolve("result"), 2000) + setTimeout(() => resolve("value"), 2000); }) - .finally(() => alert("Promise ready")) - .then(result => alert(result)); // <-- .then handles the result + .finally(() => alert("Promise ready")) // triggers first + .then(result => alert(result)); // <-- .then shows "value" ``` - And here there's an error in the promise, passed through `finally` to `catch`: + As you can see, the `value` returned by the first promise is passed through `finally` to the next `then`. + + That's very convenient, because `finally` is not meant to process a promise result. As said, it's a place to do generic cleanup, no matter what the outcome was. + + And here's an example of an error, for us to see how it's passed through `finally` to `catch`: ```js run new Promise((resolve, reject) => { throw new Error("error"); }) - .finally(() => alert("Promise ready")) - .catch(err => alert(err)); // <-- .catch handles the error object - ``` + .finally(() => alert("Promise ready")) // triggers first + .catch(err => alert(err)); // <-- .catch shows the error + ``` + +3. A `finally` handler also shouldn't return anything. If it does, the returned value is silently ignored. + + The only exception to this rule is when a `finally` handler throws an error. Then this error goes to the next handler, instead of any previous outcome. - That's very convenient, because finally is not meant to process promise results. So it passes them through. +To summarize: - We'll talk more about promise chaining and result-passing between handlers in the next chapter. +- A `finally` handler doesn't get the outcome of the previous handler (it has no arguments). This outcome is passed through instead, to the next suitable handler. +- If a `finally` handler returns something, it's ignored. +- When `finally` throws an error, then the execution goes to the nearest error handler. -3. Last, but not least, `.finally(f)` is a more convenient syntax than `.then(f, f)`: no need to duplicate the function. +These features are helpful and make things work just the right way if we use `finally` how it's supposed to be used: for generic cleanup procedures. -````smart header="On settled promises handlers runs immediately" -If a promise is pending, `.then/catch/finally` handlers wait for the result. Otherwise, if a promise has already settled, they execute immediately: +````smart header="We can attach handlers to settled promises" +If a promise is pending, `.then/catch/finally` handlers wait for its outcome. + +Sometimes, it might be that a promise is already settled when we add a handler to it. + +In such case, these handlers just run immediately: ```js run -// an immediately resolved promise +// the promise becomes resolved immediately upon creation let promise = new Promise(resolve => resolve("done!")); promise.then(alert); // done! (shows up right now) ``` -The good thing is: a `.then` handler is guaranteed to run whether the promise takes time or settles it immediately. +Note that this makes promises more powerful than the real life "subscription list" scenario. If the singer has already released their song and then a person signs up on the subscription list, they probably won't receive that song. Subscriptions in real life must be done prior to the event. + +Promises are more flexible. We can add handlers any time: if the result is already there, they just execute. ```` -Next, let's see more practical examples of how promises can help us to write asynchronous code. +## Example: loadScript [#loadscript] -## Example: loadScript +Next, let's see more practical examples of how promises can help us write asynchronous code. We've got the `loadScript` function for loading a script from the previous chapter. @@ -301,7 +339,7 @@ Let's rewrite it using Promises. The new function `loadScript` will not require a callback. Instead, it will create and return a Promise object that resolves when the loading is complete. The outer code can add handlers (subscribing functions) to it using `.then`: ```js run -function loadScript(src) { +function loadScript(src) { return new Promise(function(resolve, reject) { let script = document.createElement('script'); script.src = src; @@ -324,7 +362,7 @@ promise.then( error => alert(`Error: ${error.message}`) ); -promise.then(script => alert('One more handler to do something else!')); +promise.then(script => alert('Another handler...')); ``` We can immediately see a few benefits over the callback-based pattern: @@ -335,4 +373,4 @@ We can immediately see a few benefits over the callback-based pattern: | Promises allow us to do things in the natural order. First, we run `loadScript(script)`, and `.then` we write what to do with the result. | We must have a `callback` function at our disposal when calling `loadScript(script, callback)`. In other words, we must know what to do with the result *before* `loadScript` is called. | | We can call `.then` on a Promise as many times as we want. Each time, we're adding a new "fan", a new subscribing function, to the "subscription list". More about this in the next chapter: [](info:promise-chaining). | There can be only one callback. | -So Promises give us better code flow and flexibility. But there's more. We'll see that in the next chapters. +So promises give us better code flow and flexibility. But there's more. We'll see that in the next chapters. diff --git a/1-js/11-async/02-promise-basics/promise-reject-1.svg b/1-js/11-async/02-promise-basics/promise-reject-1.svg index 1ed00b191..73601c5f9 100644 --- a/1-js/11-async/02-promise-basics/promise-reject-1.svg +++ b/1-js/11-async/02-promise-basics/promise-reject-1.svg @@ -1 +1,5 @@ -<svg xmlns="http://www.w3.org/2000/svg" width="535" height="106" viewBox="0 0 535 106"><defs><style>@import url(https://fonts.googleapis.com/css?family=Open+Sans:bold,italic,bolditalic%7CPT+Mono);@font-face{font-family:'PT Mono';font-weight:700;font-style:normal;src:local('PT MonoBold'),url(/font/PTMonoBold.woff2) format('woff2'),url(/font/PTMonoBold.woff) format('woff'),url(/font/PTMonoBold.ttf) format('truetype')}</style></defs><g id="promise" fill="none" fill-rule="evenodd" stroke="none" stroke-width="1"><g id="promise-reject-1.svg"><path id="Rectangle-1" fill="#FBF2EC" stroke="#DBAF88" stroke-width="2" d="M184 34v58H9V34h175z"/><text id="new-Promise(executor" fill="#7E7C7B" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="10" y="22">new Promise(executor)</tspan></text><text id="state:-"pending"-res" fill="#AF6E24" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="21" y="54">state: "pending"</tspan> <tspan x="21" y="74">result: undefined</tspan></text><text id="reject(error)" fill="#C06334" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="212.4" y="49">reject(error)</tspan></text><path id="Rectangle-1-Copy-3" fill="#FEF1F0" stroke="#D35155" stroke-width="2" d="M353 34h175v58H353z"/><text id="state:-"rejected"-re" fill="#AF6E24" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="368" y="55">state: "rejected"</tspan> <tspan x="368" y="75">result: error</tspan></text><path id="Line-Copy" fill="#C06334" fill-rule="nonzero" d="M329 53l14 7-14 7v-6H196v-2h133v-6z"/></g></g></svg> \ No newline at end of file +<<<<<<< HEAD +<svg xmlns="http://www.w3.org/2000/svg" width="535" height="106" viewBox="0 0 535 106"><defs><style>@import url(https://fonts.googleapis.com/css?family=Open+Sans:bold,italic,bolditalic%7CPT+Mono);@font-face{font-family:'PT Mono';font-weight:700;font-style:normal;src:local('PT MonoBold'),url(/font/PTMonoBold.woff2) format('woff2'),url(/font/PTMonoBold.woff) format('woff'),url(/font/PTMonoBold.ttf) format('truetype')}</style></defs><g id="promise" fill="none" fill-rule="evenodd" stroke="none" stroke-width="1"><g id="promise-reject-1.svg"><path id="Rectangle-1" fill="#FBF2EC" stroke="#DBAF88" stroke-width="2" d="M184 34v58H9V34h175z"/><text id="new-Promise(executor" fill="#7E7C7B" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="10" y="22">new Promise(executor)</tspan></text><text id="state:-"pending"-res" fill="#AF6E24" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="21" y="54">state: "pending"</tspan> <tspan x="21" y="74">result: undefined</tspan></text><text id="reject(error)" fill="#C06334" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="212.4" y="49">reject(error)</tspan></text><path id="Rectangle-1-Copy-3" fill="#FEF1F0" stroke="#D35155" stroke-width="2" d="M353 34h175v58H353z"/><text id="state:-"rejected"-re" fill="#AF6E24" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="368" y="55">state: "rejected"</tspan> <tspan x="368" y="75">result: error</tspan></text><path id="Line-Copy" fill="#C06334" fill-rule="nonzero" d="M329 53l14 7-14 7v-6H196v-2h133v-6z"/></g></g></svg> +======= +<svg xmlns="http://www.w3.org/2000/svg" width="535" height="106" viewBox="0 0 535 106"><defs><style>@import url(https://fonts.googleapis.com/css?family=Open+Sans:bold,italic,bolditalic%7CPT+Mono);@font-face{font-family:'PT Mono';font-weight:700;font-style:normal;src:local('PT MonoBold'),url(/font/PTMonoBold.woff2) format('woff2'),url(/font/PTMonoBold.woff) format('woff'),url(/font/PTMonoBold.ttf) format('truetype')}</style></defs><g id="promise" fill="none" fill-rule="evenodd" stroke="none" stroke-width="1"><g id="promise-reject-1.svg"><path id="Rectangle-1" fill="#FBF2EC" stroke="#DBAF88" stroke-width="2" d="M184 34v58H9V34h175z"/><text id="new-Promise(executor" fill="#7E7C7B" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="10" y="22">new Promise(executor)</tspan></text><text id="state:-"pending"-res" fill="#AF6E24" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="21" y="54">state: "pending"</tspan> <tspan x="21" y="74">result: undefined</tspan></text><text id="reject(error)" fill="#C06334" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="212.4" y="49">reject(error)</tspan></text><path id="Rectangle-1-Copy-3" fill="#FEF1F0" stroke="#D35155" stroke-width="2" d="M353 34h175v58H353z"/><text id="state:-"rejected"-re" fill="#AF6E24" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="368" y="55">state: "rejected"</tspan> <tspan x="368" y="75">result: error</tspan></text><path id="Line-Copy" fill="#C06334" fill-rule="nonzero" d="M329 53l14 7-14 7v-6H196v-2h133v-6z" transform="matrix(1 0 0 -1 0 120)"/></g></g></svg> +>>>>>>> 540d753e90789205fc6e75c502f68382c87dea9b diff --git a/1-js/11-async/02-promise-basics/promise-resolve-1.svg b/1-js/11-async/02-promise-basics/promise-resolve-1.svg index bb0b918db..8d95ce794 100644 --- a/1-js/11-async/02-promise-basics/promise-resolve-1.svg +++ b/1-js/11-async/02-promise-basics/promise-resolve-1.svg @@ -1 +1,5 @@ -<svg xmlns="http://www.w3.org/2000/svg" width="538" height="106" viewBox="0 0 538 106"><defs><style>@import url(https://fonts.googleapis.com/css?family=Open+Sans:bold,italic,bolditalic%7CPT+Mono);@font-face{font-family:'PT Mono';font-weight:700;font-style:normal;src:local('PT MonoBold'),url(/font/PTMonoBold.woff2) format('woff2'),url(/font/PTMonoBold.woff) format('woff'),url(/font/PTMonoBold.ttf) format('truetype')}</style></defs><g id="promise" fill="none" fill-rule="evenodd" stroke="none" stroke-width="1"><g id="promise-resolve-1.svg"><path id="Rectangle-1" fill="#FBF2EC" stroke="#DBAF88" stroke-width="2" d="M187 34v58H6V34h181z"/><text id="new-Promise(executor" fill="#7E7C7B" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="8" y="22">new Promise(executor)</tspan></text><text id="state:-"pending"-res" fill="#AF6E24" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="19" y="54">state: "pending"</tspan> <tspan x="19" y="74">result: undefined</tspan></text><path id="Line-Copy" fill="#C06334" fill-rule="nonzero" d="M329 53l14 7-14 7v-6H196v-2h133v-6z"/><text id="resolve("done")" fill="#C06334" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="200.5" y="49">resolve("done")</tspan></text><path id="Rectangle-1-Copy" fill="#FBF2EC" stroke="#478964" stroke-width="2" d="M353 35h181v57H353z"/><text id="state:-"fulfilled"-r" fill="#478964" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="368" y="55">state: "fulfilled"</tspan> <tspan x="368" y="75">result: "done"</tspan></text></g></g></svg> \ No newline at end of file +<<<<<<< HEAD +<svg xmlns="http://www.w3.org/2000/svg" width="538" height="106" viewBox="0 0 538 106"><defs><style>@import url(https://fonts.googleapis.com/css?family=Open+Sans:bold,italic,bolditalic%7CPT+Mono);@font-face{font-family:'PT Mono';font-weight:700;font-style:normal;src:local('PT MonoBold'),url(/font/PTMonoBold.woff2) format('woff2'),url(/font/PTMonoBold.woff) format('woff'),url(/font/PTMonoBold.ttf) format('truetype')}</style></defs><g id="promise" fill="none" fill-rule="evenodd" stroke="none" stroke-width="1"><g id="promise-resolve-1.svg"><path id="Rectangle-1" fill="#FBF2EC" stroke="#DBAF88" stroke-width="2" d="M187 34v58H6V34h181z"/><text id="new-Promise(executor" fill="#7E7C7B" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="8" y="22">new Promise(executor)</tspan></text><text id="state:-"pending"-res" fill="#AF6E24" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="19" y="54">state: "pending"</tspan> <tspan x="19" y="74">result: undefined</tspan></text><path id="Line-Copy" fill="#C06334" fill-rule="nonzero" d="M329 53l14 7-14 7v-6H196v-2h133v-6z"/><text id="resolve("done")" fill="#C06334" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="200.5" y="49">resolve("done")</tspan></text><path id="Rectangle-1-Copy" fill="#FBF2EC" stroke="#478964" stroke-width="2" d="M353 35h181v57H353z"/><text id="state:-"fulfilled"-r" fill="#478964" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="368" y="55">state: "fulfilled"</tspan> <tspan x="368" y="75">result: "done"</tspan></text></g></g></svg> +======= +<svg xmlns="http://www.w3.org/2000/svg" width="538" height="106" viewBox="0 0 538 106"><defs><style>@import url(https://fonts.googleapis.com/css?family=Open+Sans:bold,italic,bolditalic%7CPT+Mono);@font-face{font-family:'PT Mono';font-weight:700;font-style:normal;src:local('PT MonoBold'),url(/font/PTMonoBold.woff2) format('woff2'),url(/font/PTMonoBold.woff) format('woff'),url(/font/PTMonoBold.ttf) format('truetype')}</style></defs><g id="promise" fill="none" fill-rule="evenodd" stroke="none" stroke-width="1"><g id="promise-resolve-1.svg"><path id="Rectangle-1" fill="#FBF2EC" stroke="#DBAF88" stroke-width="2" d="M187 34v58H6V34h181z"/><text id="new-Promise(executor" fill="#7E7C7B" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="8" y="22">new Promise(executor)</tspan></text><text id="state:-"pending"-res" fill="#AF6E24" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="19" y="54">state: "pending"</tspan> <tspan x="19" y="74">result: undefined</tspan></text><path id="Line-Copy" fill="#C06334" fill-rule="nonzero" d="M329 53l14 7-14 7v-6H196v-2h133v-6z" transform="matrix(1 0 0 -1 0 120)"/><text id="resolve("done")" fill="#C06334" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="200.5" y="49">resolve("done")</tspan></text><path id="Rectangle-1-Copy" fill="#FBF2EC" stroke="#478964" stroke-width="2" d="M353 35h181v57H353z"/><text id="state:-"fulfilled"-r" fill="#478964" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="368" y="55">state: "fulfilled"</tspan> <tspan x="368" y="75">result: "done"</tspan></text></g></g></svg> +>>>>>>> 540d753e90789205fc6e75c502f68382c87dea9b diff --git a/1-js/11-async/03-promise-chaining/01-then-vs-catch/solution.md b/1-js/11-async/03-promise-chaining/01-then-vs-catch/solution.md index 5a00f348f..bdd1c643b 100644 --- a/1-js/11-async/03-promise-chaining/01-then-vs-catch/solution.md +++ b/1-js/11-async/03-promise-chaining/01-then-vs-catch/solution.md @@ -1,4 +1,4 @@ -The short answer is: **no, they are not the equal**: +The short answer is: **no, they are not equal**: The difference is that if an error happens in `f1`, then it is handled by `.catch` here: @@ -17,4 +17,4 @@ promise That's because an error is passed down the chain, and in the second code piece there's no chain below `f1`. -In other words, `.then` passes results/errors to the next `.then/catch`. So in the first example, there's a `catch` below, and in the second one -- there isn't, so the error is unhandled. +In other words, `.then` passes results/errors to the next `.then/catch`. So in the first example, there's a `catch` below, and in the second one there isn't, so the error is unhandled. diff --git a/1-js/11-async/03-promise-chaining/article.md b/1-js/11-async/03-promise-chaining/article.md index 0747842f1..a33ca258c 100644 --- a/1-js/11-async/03-promise-chaining/article.md +++ b/1-js/11-async/03-promise-chaining/article.md @@ -1,7 +1,7 @@ # Promises chaining -Let's return to the problem mentioned in the chapter <info:callbacks>: we have a sequence of asynchronous tasks to be done one after another. For instance, loading scripts. How can we code it well? +Let's return to the problem mentioned in the chapter <info:callbacks>: we have a sequence of asynchronous tasks to be performed one after another — for instance, loading scripts. How can we code it well? Promises provide a couple of recipes to do that. @@ -36,36 +36,18 @@ The idea is that the result is passed through the chain of `.then` handlers. Here the flow is: 1. The initial promise resolves in 1 second `(*)`, -2. Then the `.then` handler is called `(**)`. -3. The value that it returns is passed to the next `.then` handler `(***)` +2. Then the `.then` handler is called `(**)`, which in turn creates a new promise (resolved with `2` value). +3. The next `then` `(***)` gets the result of the previous one, processes it (doubles) and passes it to the next handler. 4. ...and so on. As the result is passed along the chain of handlers, we can see a sequence of `alert` calls: `1` -> `2` -> `4`.  -The whole thing works, because a call to `promise.then` returns a promise, so that we can call the next `.then` on it. +The whole thing works, because every call to a `.then` returns a new promise, so that we can call the next `.then` on it. When a handler returns a value, it becomes the result of that promise, so the next `.then` is called with it. -To make these words more clear, here's the start of the chain: - -```js run -new Promise(function(resolve, reject) { - - setTimeout(() => resolve(1), 1000); - -}).then(function(result) { - - alert(result); - return result * 2; // <-- (1) - -}) // <-- (2) -// .then… -``` - -The value returned by `.then` is a promise, that's why we are able to add another `.then` at `(2)`. When the value is returned in `(1)`, that promise becomes resolved, so the next handler runs with the value. - **A classic newbie error: technically we can also add many `.then` to a single promise. This is not chaining.** For example: @@ -90,7 +72,7 @@ promise.then(function(result) { }); ``` -What we did here is just several handlers to one promise. They don't pass the result to each other, instead they process it independently. +What we did here is just adding several handlers to one promise. They don't pass the result to each other; instead they process it independently. Here's the picture (compare it with the chaining above): @@ -102,9 +84,9 @@ In practice we rarely need multiple handlers for one promise. Chaining is used m ## Returning promises -Normally, a value returned by a `.then` handler is immediately passed to the next handler. But there's an exception. +A handler, used in `.then(handler)` may create and return a promise. -If the returned value is a promise, then the further execution is suspended until it settles. After that, the result of that promise is given to the next `.then` handler. +In that case further handlers wait until it settles, and then get its result. For instance: @@ -138,15 +120,15 @@ new Promise(function(resolve, reject) { }); ``` -Here the first `.then` shows `1` returns `new Promise(…)` in the line `(*)`. After one second it resolves, and the result (the argument of `resolve`, here it's `result*2`) is passed on to handler of the second `.then` in the line `(**)`. It shows `2` and does the same thing. +Here the first `.then` shows `1` and returns `new Promise(…)` in the line `(*)`. After one second it resolves, and the result (the argument of `resolve`, here it's `result * 2`) is passed on to the handler of the second `.then`. That handler is in the line `(**)`, it shows `2` and does the same thing. -So the output is again 1 -> 2 -> 4, but now with 1 second delay between `alert` calls. +So the output is the same as in the previous example: 1 -> 2 -> 4, but now with 1 second delay between `alert` calls. Returning promises allows us to build chains of asynchronous actions. ## Example: loadScript -Let's use this feature with `loadScript` to load scripts one by one, in sequence: +Let's use this feature with the promisified `loadScript`, defined in the [previous chapter](info:promise-basics#loadscript), to load scripts one by one, in sequence: ```js run loadScript("/article/promise-chaining/one.js") @@ -182,9 +164,9 @@ loadScript("/article/promise-chaining/one.js") Here each `loadScript` call returns a promise, and the next `.then` runs when it resolves. Then it initiates the loading of the next script. So scripts are loaded one after another. -We can add more asynchronous actions to the chain. Please note that code is still "flat", it grows down, not to the right. There are no signs of "pyramid of doom". +We can add more asynchronous actions to the chain. Please note that the code is still "flat" — it grows down, not to the right. There are no signs of the "pyramid of doom". -Please note that technically we can add `.then` directly to each `loadScript`, like this: +Technically, we could add `.then` directly to each `loadScript`, like this: ```js run loadScript("/article/promise-chaining/one.js").then(script1 => { @@ -207,11 +189,9 @@ Sometimes it's ok to write `.then` directly, because the nested function has acc ````smart header="Thenables" -To be precise, `.then` may return an arbitrary "thenable" object, and it will be treated the same way as a promise. +To be precise, a handler may return not exactly a promise, but a so-called "thenable" object - an arbitrary object that has a method `.then`. It will be treated the same way as a promise. -A "thenable" object is any object with a method `.then`. - -The idea is that 3rd-party libraries may implement "promise-compatible" objects of their own. They can have extended set of methods, but also be compatible with native promises, because they implement `.then`. +The idea is that 3rd-party libraries may implement "promise-compatible" objects of their own. They can have an extended set of methods, but also be compatible with native promises, because they implement `.then`. Here's an example of a thenable object: @@ -229,22 +209,24 @@ class Thenable { new Promise(resolve => resolve(1)) .then(result => { +*!* return new Thenable(result); // (*) +*/!* }) .then(alert); // shows 2 after 1000ms ``` -JavaScript checks the object returned by `.then` handler in the line `(*)`: if it has a callable method named `then`, then it calls that method providing native functions `resolve`, `reject` as arguments (similar to executor) and waits until one of them is called. In the example above `resolve(2)` is called after 1 second `(**)`. Then the result is passed further down the chain. +JavaScript checks the object returned by the `.then` handler in line `(*)`: if it has a callable method named `then`, then it calls that method providing native functions `resolve`, `reject` as arguments (similar to an executor) and waits until one of them is called. In the example above `resolve(2)` is called after 1 second `(**)`. Then the result is passed further down the chain. -This feature allows to integrate custom objects with promise chains without having to inherit from `Promise`. +This feature allows us to integrate custom objects with promise chains without having to inherit from `Promise`. ```` ## Bigger example: fetch -In frontend programming promises are often used for network requests. So let's see an extended example of that. +In frontend programming, promises are often used for network requests. So let's see an extended example of that. -We'll use the [fetch](mdn:api/WindowOrWorkerGlobalScope/fetch) method to load the information about the user from the remote server. The method is quite complex, it has many optional parameters, but the basic usage is quite simple: +We'll use the [fetch](info:fetch) method to load the information about the user from the remote server. It has a lot of optional parameters covered in [separate chapters](info:fetch), but the basic syntax is quite simple: ```js let promise = fetch(url); @@ -252,7 +234,7 @@ let promise = fetch(url); This makes a network request to the `url` and returns a promise. The promise resolves with a `response` object when the remote server responds with headers, but *before the full response is downloaded*. -To read the full response, we should call a method `response.text()`: it returns a promise that resolves when the full text downloaded from the remote server, with that text as a result. +To read the full response, we should call the method `response.text()`: it returns a promise that resolves when the full text is downloaded from the remote server, with that text as a result. The code below makes a request to `user.json` and loads its text from the server: @@ -261,16 +243,16 @@ fetch('/article/promise-chaining/user.json') // .then below runs when the remote server responds .then(function(response) { // response.text() returns a new promise that resolves with the full response text - // when we finish downloading it + // when it loads return response.text(); }) .then(function(text) { // ...and here's the content of the remote file - alert(text); // {"name": "iliakan", isAdmin: true} + alert(text); // {"name": "iliakan", "isAdmin": true} }); ``` -There is also a method `response.json()` that reads the remote data and parses it as JSON. In our case that's even more convenient, so let's switch to it. +The `response` object returned from `fetch` also includes the method `response.json()` that reads the remote data and parses it as JSON. In our case that's even more convenient, so let's switch to it. We'll also use arrow functions for brevity: @@ -278,7 +260,7 @@ We'll also use arrow functions for brevity: // same as above, but response.json() parses the remote content as JSON fetch('/article/promise-chaining/user.json') .then(response => response.json()) - .then(user => alert(user.name)); // iliakan + .then(user => alert(user.name)); // iliakan, got user name ``` Now let's do something with the loaded user. @@ -305,7 +287,7 @@ fetch('/article/promise-chaining/user.json') }); ``` -The code works, see comments about the details, but it should be quite self-descriptive. Although, there's a potential problem in it, a typical error of those who begin to use promises. +The code works; see comments about the details. However, there's a potential problem in it, a typical error for those who begin to use promises. Look at the line `(*)`: how can we do something *after* the avatar has finished showing and gets removed? For instance, we'd like to show a form for editing that user or something else. As of now, there's no way. @@ -319,7 +301,7 @@ fetch('/article/promise-chaining/user.json') .then(user => fetch(`https://api.github.com/users/${user.name}`)) .then(response => response.json()) *!* - .then(githubUser => new Promise(function(resolve, reject) { + .then(githubUser => new Promise(function(resolve, reject) { // (*) */!* let img = document.createElement('img'); img.src = githubUser.avatar_url; @@ -329,7 +311,7 @@ fetch('/article/promise-chaining/user.json') setTimeout(() => { img.remove(); *!* - resolve(githubUser); + resolve(githubUser); // (**) */!* }, 3000); })) @@ -337,11 +319,9 @@ fetch('/article/promise-chaining/user.json') .then(githubUser => alert(`Finished showing ${githubUser.name}`)); ``` -Now right after `setTimeout` runs `img.remove()`, it calls `resolve(githubUser)`, thus passing the control to the next `.then` in the chain and passing forward the user data. +That is, the `.then` handler in line `(*)` now returns `new Promise`, that becomes settled only after the call of `resolve(githubUser)` in `setTimeout` `(**)`. The next `.then` in the chain will wait for that. -As a rule, an asynchronous action should always return a promise. - -That makes it possible to plan actions after it. Even if we don't plan to extend the chain now, we may need it later. +As a good practice, an asynchronous action should always return a promise. That makes it possible to plan actions after it; even if we don't plan to extend the chain now, we may need it later. Finally, we can split the code into reusable functions: @@ -352,8 +332,7 @@ function loadJson(url) { } function loadGithubUser(name) { - return fetch(`https://api.github.com/users/${name}`) - .then(response => response.json()); + return loadJson(`https://api.github.com/users/${name}`); } function showAvatar(githubUser) { diff --git a/1-js/11-async/03-promise-chaining/head.html b/1-js/11-async/03-promise-chaining/head.html index 31c6b4271..0a0075fb9 100644 --- a/1-js/11-async/03-promise-chaining/head.html +++ b/1-js/11-async/03-promise-chaining/head.html @@ -10,25 +10,6 @@ document.head.append(script); }); } - -class HttpError extends Error { - constructor(response) { - super(`${response.status} for ${response.url}`); - this.name = 'HttpError'; - this.response = response; - } -} - -function loadJson(url) { - return fetch(url) - .then(response => { - if (response.status == 200) { - return response.json(); - } else { - throw new HttpError(response); - } - }) -} </script> <style> diff --git a/1-js/11-async/04-promise-error-handling/article.md b/1-js/11-async/04-promise-error-handling/article.md index ca67202aa..c5b4206ab 100644 --- a/1-js/11-async/04-promise-error-handling/article.md +++ b/1-js/11-async/04-promise-error-handling/article.md @@ -1,11 +1,9 @@ # Error handling with promises -Asynchronous actions may sometimes fail: in case of an error the corresponding promise becomes rejected. For instance, `fetch` fails if the remote server is not available. We can use `.catch` to handle errors (rejections). +Promise chains are great at error handling. When a promise rejects, the control jumps to the closest rejection handler. That's very convenient in practice. -Promise chaining is great at that aspect. When a promise rejects, the control jumps to the closest rejection handler down the chain. That's very convenient in practice. - -For instance, in the code below the URL is wrong (no such server) and `.catch` handles the error: +For instance, in the code below the URL to `fetch` is wrong (no such site) and `.catch` handles the error: ```js run *!* @@ -15,17 +13,9 @@ fetch('https://no-such-server.blabla') // rejects .catch(err => alert(err)) // TypeError: failed to fetch (the text may vary) ``` -Or, maybe, everything is all right with the server, but the response is not valid JSON: +As you can see, the `.catch` doesn't have to be immediate. It may appear after one or maybe several `.then`. -```js run -fetch('/') // fetch works fine now, the server responds successfully -*!* - .then(response => response.json()) // rejects: the page is HTML, not a valid json -*/!* - .catch(err => alert(err)) // SyntaxError: Unexpected token < in JSON at position 0 -``` - -The easiest way to catch all errors is to append `.catch` to the end of chain: +Or, maybe, everything is all right with the site, but the response is not valid JSON. The easiest way to catch all errors is to append `.catch` to the end of chain: ```js run fetch('/article/promise-chaining/user.json') @@ -48,11 +38,11 @@ fetch('/article/promise-chaining/user.json') */!* ``` -Normally, `.catch` doesn't trigger at all, because there are no errors. But if any of the promises above rejects (a network problem or invalid json or whatever), then it would catch it. +Normally, such `.catch` doesn't trigger at all. But if any of the promises above rejects (a network problem or invalid json or whatever), then it would catch it. ## Implicit try..catch -The code of a promise executor and promise handlers has an "invisible `try..catch`" around it. If an error happens, it gets caught and treated as a rejection. +The code of a promise executor and promise handlers has an "invisible `try..catch`" around it. If an exception happens, it gets caught and treated as a rejection. For instance, this code: @@ -70,13 +60,13 @@ new Promise((resolve, reject) => { new Promise((resolve, reject) => { *!* reject(new Error("Whoops!")); -*/!* +*/!* }).catch(alert); // Error: Whoops! ``` -The "invisible `try..catch`" around the executor automatically catches the error and treats it as a rejection. +The "invisible `try..catch`" around the executor automatically catches the error and turns it into rejected promise. -This happens not only in the executor, but in its handlers as well. If we `throw` inside a `.then` handler, that means a rejected promise, so the control jumps to the nearest error handler. +This happens not only in the executor function, but in its handlers as well. If we `throw` inside a `.then` handler, that means a rejected promise, so the control jumps to the nearest error handler. Here's an example: @@ -102,15 +92,15 @@ new Promise((resolve, reject) => { }).catch(alert); // ReferenceError: blabla is not defined ``` -The final `.catch` not only catches explicit rejections, but also occasional errors in the handlers above. +The final `.catch` not only catches explicit rejections, but also accidental errors in the handlers above. ## Rethrowing -As we already noticed, `.catch` behaves like `try..catch`. We may have as many `.then` handlers as we want, and then use a single `.catch` at the end to handle errors in all of them. +As we already noticed, `.catch` at the end of the chain is similar to `try..catch`. We may have as many `.then` handlers as we want, and then use a single `.catch` at the end to handle errors in all of them. -In a regular `try..catch` we can analyze the error and maybe rethrow it if can't handle. The same thing is possible for promises. +In a regular `try..catch` we can analyze the error and maybe rethrow it if it can't be handled. The same thing is possible for promises. -If we `throw` inside `.catch`, then the control goes to the next closest error handler. And if we handle the error and finish normally, then it continues to the closest successful `.then` handler. +If we `throw` inside `.catch`, then the control goes to the next closest error handler. And if we handle the error and finish normally, then it continues to the next closest successful `.then` handler. In the example below the `.catch` successfully handles the error: @@ -120,7 +110,7 @@ new Promise((resolve, reject) => { throw new Error("Whoops!"); -}).catch(function(error) { +}).catch(function(error) { alert("The error is handled, continue normally"); @@ -132,7 +122,7 @@ Here the `.catch` block finishes normally. So the next successful `.then` handle In the example below we see the other situation with `.catch`. The handler `(*)` catches the error and just can't handle it (e.g. it only knows how to handle `URIError`), so it throws it again: ```js run -// the execution: catch -> catch -> then +// the execution: catch -> catch new Promise((resolve, reject) => { throw new Error("Whoops!"); @@ -150,7 +140,7 @@ new Promise((resolve, reject) => { } }).then(function() { - /* never runs here */ + /* doesn't run here */ }).catch(error => { // (**) alert(`The unknown error has occurred: ${error}`); @@ -159,116 +149,28 @@ new Promise((resolve, reject) => { }); ``` -Then the execution jumps from the first `.catch` `(*)` to the next one `(**)` down the chain. - -In the section below we'll see a practical example of rethrowing. - -## Fetch error handling example - -Let's improve error handling for the user-loading example. - -The promise returned by [fetch](mdn:api/WindowOrWorkerGlobalScope/fetch) rejects when it's impossible to make a request. For instance, a remote server is not available, or the URL is malformed. But if the remote server responds with error 404, or even error 500, then it's considered a valid response. - -What if the server returns a non-JSON page with error 500 in the line `(*)`? What if there's no such user, and github returns a page with error 404 at `(**)`? - -```js run -fetch('no-such-user.json') // (*) - .then(response => response.json()) - .then(user => fetch(`https://api.github.com/users/${user.name}`)) // (**) - .then(response => response.json()) - .catch(alert); // SyntaxError: Unexpected token < in JSON at position 0 - // ... -``` - - -As of now, the code tries to load the response as JSON no matter what and dies with a syntax error. You can see that by running the example above, as the file `no-such-user.json` doesn't exist. - -That's not good, because the error just falls through the chain, without details: what failed and where. - -So let's add one more step: we should check the `response.status` property that has HTTP status, and if it's not 200, then throw an error. - -```js run -class HttpError extends Error { // (1) - constructor(response) { - super(`${response.status} for ${response.url}`); - this.name = 'HttpError'; - this.response = response; - } -} - -function loadJson(url) { // (2) - return fetch(url) - .then(response => { - if (response.status == 200) { - return response.json(); - } else { - throw new HttpError(response); - } - }) -} - -loadJson('no-such-user.json') // (3) - .catch(alert); // HttpError: 404 for .../no-such-user.json -``` - -1. We make a custom class for HTTP Errors to distinguish them from other types of errors. Besides, the new class has a constructor that accepts `response` object and saves it in the error. So error-handling code will be able to access it. -2. Then we put together the requesting and error-handling code into a function that fetches the `url` *and* treats any non-200 status as an error. That's convenient, because we often need such logic. -3. Now `alert` shows a more helpful descriptive message. - -The great thing about having our own class for errors is that we can easily check for it in error-handling code. - -For instance, we can make a request, and then if we get 404 -- ask the user to modify the information. - -The code below loads a user with the given name from github. If there's no such user, then it asks for the correct name: - -```js run -function demoGithubUser() { - let name = prompt("Enter a name?", "iliakan"); - - return loadJson(`https://api.github.com/users/${name}`) - .then(user => { - alert(`Full name: ${user.name}.`); - return user; - }) - .catch(err => { -*!* - if (err instanceof HttpError && err.response.status == 404) { -*/!* - alert("No such user, please reenter."); - return demoGithubUser(); - } else { - throw err; // (*) - } - }); -} - -demoGithubUser(); -``` - -Please note: `.catch` here catches all errors, but it "knows how to handle" only `HttpError 404`. In that particular case it means that there's no such user, and `.catch` just retries in that case. - -For other errors, it has no idea what could go wrong. Maybe a programming error or something. So it just rethrows it in the line `(*)`. +The execution jumps from the first `.catch` `(*)` to the next one `(**)` down the chain. ## Unhandled rejections -What happens when an error is not handled? For instance, after the rethrow `(*)` in the example above. - -Or we could just forget to append an error handler to the end of the chain, like here: +What happens when an error is not handled? For instance, we forgot to append `.catch` to the end of the chain, like here: ```js untrusted run refresh new Promise(function() { noSuchFunction(); // Error here (no such function) }) .then(() => { - // zero or many promise handlers + // successful promise handlers, one or more }); // without .catch at the end! ``` -In case of an error, the promise state becomes "rejected", and the execution should jump to the closest rejection handler. But there is no such handler in the examples above. So the error gets "stuck". +In case of an error, the promise becomes rejected, and the execution should jump to the closest rejection handler. But there is none. So the error gets "stuck". There's no code to handle it. + +In practice, just like with regular unhandled errors in code, it means that something has gone terribly wrong. -In practice, just like with a regular unhandled errors, it means that something has terribly gone wrong, the script probably died. +What happens when a regular error occurs and is not caught by `try..catch`? The script dies with a message in the console. A similar thing happens with unhandled promise rejections. -Most JavaScript engines track such situations and generate a global error in that case. We can see it in the console. +The JavaScript engine tracks such rejections and generates a global error in that case. You can see it in the console if you run the example above. In the browser we can catch such errors using the event `unhandledrejection`: @@ -292,52 +194,12 @@ If an error occurs, and there's no `.catch`, the `unhandledrejection` handler tr Usually such errors are unrecoverable, so our best way out is to inform the user about the problem and probably report the incident to the server. -In non-browser environments like Node.js there are other similar ways to track unhandled errors. - +In non-browser environments like Node.js there are other ways to track unhandled errors. ## Summary -- `.catch` handles promise rejections of all kinds: be it a `reject()` call, or an error thrown in a handler. -- We should place `.catch` exactly in places where we want to handle errors and know how to handle them. The handler should analyze errors (custom error classes help) and rethrow unknown ones. -- It's normal not to use `.catch` if we don't know how to handle errors (all errors are unrecoverable). -- In any case we should have the `unhandledrejection` event handler (for browsers, and analogs for other environments), to track unhandled errors and inform the user (and probably our server) about the them, so that our app never "just dies". - -And finally, if we have load-indication, then `.finally` is a great handler to stop it when the fetch is complete: - -```js run -function demoGithubUser() { - let name = prompt("Enter a name?", "iliakan"); - -*!* - document.body.style.opacity = 0.3; // (1) start the indication -*/!* - - return loadJson(`https://api.github.com/users/${name}`) -*!* - .finally(() => { // (2) stop the indication - document.body.style.opacity = ''; - return new Promise(resolve => setTimeout(resolve, 0)); // (*) - }) -*/!* - .then(user => { - alert(`Full name: ${user.name}.`); - return user; - }) - .catch(err => { - if (err instanceof HttpError && err.response.status == 404) { - alert("No such user, please reenter."); - return demoGithubUser(); - } else { - throw err; - } - }); -} - -demoGithubUser(); -``` - -Here on the line `(1)` we indicate loading by dimming the document. The method doesn't matter, could use any type of indication instead. - -When the promise is settled, be it a successful fetch or an error, `finally` triggers at the line `(2)` and stops the indication. - -There's a little browser trick `(*)` with returning a zero-timeout promise from `finally`. That's because some browsers (like Chrome) need "a bit time" outside promise handlers to paint document changes. So it ensures that the indication is visually stopped before going further on the chain. +- `.catch` handles errors in promises of all kinds: be it a `reject()` call, or an error thrown in a handler. +- `.then` also catches errors in the same manner, if given the second argument (which is the error handler). +- We should place `.catch` exactly in places where we want to handle errors and know how to handle them. The handler should analyze errors (custom error classes help) and rethrow unknown ones (maybe they are programming mistakes). +- It's ok not to use `.catch` at all, if there's no way to recover from an error. +- In any case we should have the `unhandledrejection` event handler (for browsers, and analogs for other environments) to track unhandled errors and inform the user (and probably our server) about them, so that our app never "just dies". diff --git a/1-js/11-async/04-promise-error-handling/head.html b/1-js/11-async/04-promise-error-handling/head.html index 31c6b4271..a0b741962 100644 --- a/1-js/11-async/04-promise-error-handling/head.html +++ b/1-js/11-async/04-promise-error-handling/head.html @@ -1,16 +1,4 @@ <script> -function loadScript(src) { - return new Promise(function(resolve, reject) { - let script = document.createElement('script'); - script.src = src; - - script.onload = () => resolve(script); - script.onerror = () => reject(new Error("Script load error: " + src)); - - document.head.append(script); - }); -} - class HttpError extends Error { constructor(response) { super(`${response.status} for ${response.url}`); diff --git a/1-js/11-async/05-promise-api/01-promise-errors-as-results/solution.md b/1-js/11-async/05-promise-api/01-promise-errors-as-results/solution.md deleted file mode 100644 index 17ac6ba5d..000000000 --- a/1-js/11-async/05-promise-api/01-promise-errors-as-results/solution.md +++ /dev/null @@ -1,44 +0,0 @@ -The solution is actually pretty simple. - -Take a look at this: - -```js -Promise.all( - fetch('https://api.github.com/users/iliakan'), - fetch('https://api.github.com/users/remy'), - fetch('http://no-such-url') -) -``` - -Here we have an array of `fetch(...)` promises that goes to `Promise.all`. - -We can't change the way `Promise.all` works: if it detects an error, then it rejects with it. So we need to prevent any error from occurring. Instead, if a `fetch` error happens, we need to treat it as a "normal" result. - -Here's how: - -```js -Promise.all( - fetch('https://api.github.com/users/iliakan').catch(err => err), - fetch('https://api.github.com/users/remy').catch(err => err), - fetch('http://no-such-url').catch(err => err) -) -``` - -In other words, the `.catch` takes an error for all of the promises and returns it normally. By the rules of how promises work, if a `.then/catch` handler returns a value (doesn't matter if it's an error object or something else), then the execution continues the "normal" flow. - -So the `.catch` returns the error as a "normal" result into the outer `Promise.all`. - -This code: -```js -Promise.all( - urls.map(url => fetch(url)) -) -``` - -Can be rewritten as: - -```js -Promise.all( - urls.map(url => fetch(url).catch(err => err)) -) -``` diff --git a/1-js/11-async/05-promise-api/01-promise-errors-as-results/solution.view/index.html b/1-js/11-async/05-promise-api/01-promise-errors-as-results/solution.view/index.html deleted file mode 100644 index 209e60640..000000000 --- a/1-js/11-async/05-promise-api/01-promise-errors-as-results/solution.view/index.html +++ /dev/null @@ -1,24 +0,0 @@ -<!DOCTYPE HTML> -<html> -<body> - - <script> - - let urls = [ - 'https://api.github.com/users/iliakan', - 'https://api.github.com/users/remy', - 'http://no-such-url' - ]; - - Promise.all( - urls.map(url => fetch(url).catch(err => err)) - ) - .then(responses => { - alert(responses[0].status); // 200 - alert(responses[1].status); // 200 - alert(responses[2]); // TypeError: failed to fetch (text may vary) - }); - </script> - -</body> -</html> diff --git a/1-js/11-async/05-promise-api/01-promise-errors-as-results/source.view/index.html b/1-js/11-async/05-promise-api/01-promise-errors-as-results/source.view/index.html deleted file mode 100644 index c760ad8cd..000000000 --- a/1-js/11-async/05-promise-api/01-promise-errors-as-results/source.view/index.html +++ /dev/null @@ -1,28 +0,0 @@ -<!DOCTYPE HTML> -<html> -<body> - - <script> - - // if any of URLs fails, other results are ignored - // change that: - // make errors appear as members of the responses array, together with normal results - - let urls = [ - 'https://api.github.com/users/iliakan', - 'https://api.github.com/users/remy', - 'http://no-such-url' - ]; - - // Fix me: - Promise.all(urls.map(url => fetch(url))) - // Demo output (no need to change): - .then(responses => { - alert(responses[0].status); // 200 - alert(responses[1].status); // 200 - alert(responses[2]); // TypeError: failed to fetch (text may vary) - }); - </script> - -</body> -</html> diff --git a/1-js/11-async/05-promise-api/01-promise-errors-as-results/task.md b/1-js/11-async/05-promise-api/01-promise-errors-as-results/task.md deleted file mode 100644 index c37ad56e3..000000000 --- a/1-js/11-async/05-promise-api/01-promise-errors-as-results/task.md +++ /dev/null @@ -1,48 +0,0 @@ -# Fault-tolerant Promise.all - -We'd like to fetch multiple URLs in parallel. - -Here's the code to do that: - -```js run -let urls = [ - 'https://api.github.com/users/iliakan', - 'https://api.github.com/users/remy', - 'https://api.github.com/users/jeresig' -]; - -Promise.all(urls.map(url => fetch(url))) - // for each response show its status - .then(responses => { // (*) - for(let response of responses) { - alert(`${response.url}: ${response.status}`); - } - }); -``` - -The problem is that if any of requests fails, then `Promise.all` rejects with the error, and we lose the results of all the other requests. - -That's not good. - -Modify the code so that the array `responses` in the line `(*)` would include the response objects for successful fetches and error objects for failed ones. - -For instance, if one of the URLs is bad, then it should be like: - -```js -let urls = [ - 'https://api.github.com/users/iliakan', - 'https://api.github.com/users/remy', - 'http://no-such-url' -]; - -Promise.all(...) // your code to fetch URLs... - // ...and pass fetch errors as members of the resulting array... - .then(responses => { - // 3 urls => 3 array members - alert(responses[0].status); // 200 - alert(responses[1].status); // 200 - alert(responses[2]); // TypeError: failed to fetch (text may vary) - }); -``` - -P.S. In this task you don't have to load the full response using `response.text()` or `response.json()`. Just handle fetch errors the right way. diff --git a/1-js/11-async/05-promise-api/02-promise-errors-as-results-2/solution.view/index.html b/1-js/11-async/05-promise-api/02-promise-errors-as-results-2/solution.view/index.html deleted file mode 100644 index 744efd2b7..000000000 --- a/1-js/11-async/05-promise-api/02-promise-errors-as-results-2/solution.view/index.html +++ /dev/null @@ -1,29 +0,0 @@ -<!DOCTYPE HTML> -<html> -<body> - - <script> - - let urls = [ - 'https://api.github.com/users/iliakan', - '/', - 'http://no-such-url' - ]; - - Promise.all( - urls.map(url => fetch(url).catch(err => err)) - ) - .then(responses => Promise.all( - // if it's an error then pass on - // otherwise response.json() and catch errors as results - responses.map(r => r instanceof Error ? r : r.json().catch(err => err)) - )) - .then(results => { - alert(results[0].name); // Ilya Kantor - alert(results[1]); // SyntaxError: Unexpected token < in JSON at position 0 - alert(results[2]); // TypeError: failed to fetch (text may vary) - }); - </script> - -</body> -</html> diff --git a/1-js/11-async/05-promise-api/02-promise-errors-as-results-2/source.view/index.html b/1-js/11-async/05-promise-api/02-promise-errors-as-results-2/source.view/index.html deleted file mode 100644 index adb86d41f..000000000 --- a/1-js/11-async/05-promise-api/02-promise-errors-as-results-2/source.view/index.html +++ /dev/null @@ -1,33 +0,0 @@ -<!DOCTYPE HTML> -<html> -<body> - - <script> - - // the whole promise chain fails with an error here - // change that: - // make errors appear as members of the results array - - let urls = [ - 'https://api.github.com/users/iliakan', - // this URL is HTML page, it's invalid JSON, so response.json() fails - '/', - // this URL is invalid, so fetch fails - 'http://no-such-url' - ]; - - // Fix it: - Promise.all(urls.map(url => fetch(url))) - .then(responses => Promise.all( - responses.map(r => r.json()) - )) - // Demo output (no need to change): - .then(results => { - alert(results[0].name); // Ilya Kantor - alert(results[1]); // SyntaxError: Unexpected token < in JSON at position 0 - alert(results[2]); // TypeError: failed to fetch (text may vary) - }); - </script> - -</body> -</html> diff --git a/1-js/11-async/05-promise-api/02-promise-errors-as-results-2/task.md b/1-js/11-async/05-promise-api/02-promise-errors-as-results-2/task.md deleted file mode 100644 index d28cf87e7..000000000 --- a/1-js/11-async/05-promise-api/02-promise-errors-as-results-2/task.md +++ /dev/null @@ -1,34 +0,0 @@ -# Fault-tolerant fetch with JSON - -Improve the solution of the previous task <info:task/promise-errors-as-results>. Now we need not just to call `fetch`, but to load the JSON objects from the given URLs. - -Here's the example code to do that: - -```js run -let urls = [ - 'https://api.github.com/users/iliakan', - 'https://api.github.com/users/remy', - 'https://api.github.com/users/jeresig' -]; - -// make fetch requests -Promise.all(urls.map(url => fetch(url))) - // map each response to response.json() - .then(responses => Promise.all( - responses.map(r => r.json()) - )) - // show name of each user - .then(users => { // (*) - for(let user of users) { - alert(user.name); - } - }); -``` - -The problem is that if any of requests fails, then `Promise.all` rejects with the error, and we lose results of all the other requests. So the code above is not fault-tolerant, just like the one in the previous task. - -Modify the code so that the array in the line `(*)` would include parsed JSON for successful requests and error for errored ones. - -Please note that the error may occur both in `fetch` (if the network request fails) and in `response.json()` (if the response is invalid JSON). In both cases the error should become a member of the results object. - -The sandbox has both of these cases. diff --git a/1-js/11-async/05-promise-api/article.md b/1-js/11-async/05-promise-api/article.md index d049f3b09..7be84ce2c 100644 --- a/1-js/11-async/05-promise-api/article.md +++ b/1-js/11-async/05-promise-api/article.md @@ -1,83 +1,24 @@ # Promise API -There are 4 static methods in the `Promise` class. We'll quickly cover their use cases here. - -## Promise.resolve - -The syntax: - -```js -let promise = Promise.resolve(value); -``` - -Returns a resolved promise with the given `value`. - -Same as: - -```js -let promise = new Promise(resolve => resolve(value)); -``` - -The method is used when we already have a value, but would like to have it "wrapped" into a promise. - -For instance, the `loadCached` function below fetches the `url` and remembers the result, so that future calls on the same URL return it immediately: - -```js -function loadCached(url) { - let cache = loadCached.cache || (loadCached.cache = new Map()); - - if (cache.has(url)) { -*!* - return Promise.resolve(cache.get(url)); // (*) -*/!* - } - - return fetch(url) - .then(response => response.text()) - .then(text => { - cache.set(url,text); - return text; - }); -} -``` - -We can use `loadCached(url).then(…)`, because the function is guaranteed to return a promise. That's the purpose `Promise.resolve` serves in the line `(*)`: it makes sure the interface is unified. We can always use `.then` after `loadCached`. - -## Promise.reject - -The syntax: - -```js -let promise = Promise.reject(error); -``` - -Create a rejected promise with the `error`. - -Same as: - -```js -let promise = new Promise((resolve, reject) => reject(error)); -``` - -We cover it here for completeness, rarely used in real code. +There are 6 static methods in the `Promise` class. We'll quickly cover their use cases here. ## Promise.all -Let's say we want to run many promises to execute in parallel, and wait till all of them are ready. +Let's say we want many promises to execute in parallel and wait until all of them are ready. -For instance, download several URLs in parallel and process the content when all are done. +For instance, download several URLs in parallel and process the content once they are all done. That's what `Promise.all` is for. The syntax is: ```js -let promise = Promise.all([...promises...]); +let promise = Promise.all(iterable); ``` -It takes an array of promises (technically can be any iterable, but usually an array) and returns a new promise. +`Promise.all` takes an iterable (usually, an array of promises) and returns a new promise. -The new promise resolves when all listed promises are settled and has an array of their results. +The new promise resolves when all listed promises are resolved, and the array of their results becomes its result. For instance, the `Promise.all` below settles after 3 seconds, and then its result is an array `[1, 2, 3]`: @@ -89,7 +30,7 @@ Promise.all([ ]).then(alert); // 1,2,3 when promises are ready: each promise contributes an array member ``` -Please note that the relative order is the same. Even though the first promise takes the longest time to resolve, it is still first in the array of results. +Please note that the order of the resulting array members is the same as in its source promises. Even though the first promise takes the longest time to resolve, it's still first in the array of results. A common trick is to map an array of job data into an array of promises, and then wrap that into `Promise.all`. @@ -102,7 +43,7 @@ let urls = [ 'https://api.github.com/users/jeresig' ]; -// map every url to the promise fetch(github url) +// map every url to the promise of the fetch let requests = urls.map(url => fetch(url)); // Promise.all waits until all jobs are resolved @@ -112,7 +53,7 @@ Promise.all(requests) )); ``` -A more real-life example with fetching user information for an array of github users by their names (or we could fetch an array of goods by their ids, the logic is same): +A bigger example with fetching user information for an array of GitHub users by their names (we could fetch an array of goods by their ids, the logic is identical): ```js run let names = ['iliakan', 'remy', 'jeresig']; @@ -121,20 +62,20 @@ let requests = names.map(name => fetch(`https://api.github.com/users/${name}`)); Promise.all(requests) .then(responses => { - // all responses are ready, we can show HTTP status codes + // all responses are resolved successfully for(let response of responses) { alert(`${response.url}: ${response.status}`); // shows 200 for every url } return responses; }) - // map array of responses into array of response.json() to read their content + // map array of responses into an array of response.json() to read their content .then(responses => Promise.all(responses.map(r => r.json()))) // all JSON answers are parsed: "users" is the array of them .then(users => users.forEach(user => alert(user.name))); ``` -If any of the promises is rejected, `Promise.all` immediately rejects with that error. +**If any of the promises is rejected, the promise returned by `Promise.all` immediately rejects with that error.** For instance: @@ -148,14 +89,18 @@ Promise.all([ ]).catch(alert); // Error: Whoops! ``` -Here the second promise rejects in two seconds. That leads to immediate rejection of `Promise.all`, so `.catch` executes: the rejection error becomes the outcome of the whole `Promise.all`. +Here the second promise rejects in two seconds. That leads to an immediate rejection of `Promise.all`, so `.catch` executes: the rejection error becomes the outcome of the entire `Promise.all`. -The important detail is that promises provide no way to "cancel" or "abort" their execution. So other promises continue to execute, and then eventually settle, but all their results are ignored. +```warn header="In case of an error, other promises are ignored" +If one promise rejects, `Promise.all` immediately rejects, completely forgetting about the other ones in the list. Their results are ignored. -There are ways to avoid this: we can either write additional code to `clearTimeout` (or otherwise cancel) the promises in case of an error, or we can make errors show up as members in the resulting array (see the task below this chapter about it). +For example, if there are multiple `fetch` calls, like in the example above, and one fails, the others will still continue to execute, but `Promise.all` won't watch them anymore. They will probably settle, but their results will be ignored. -````smart header="`Promise.all(...)` allows non-promise items in `iterable`" -Normally, `Promise.all(...)` accepts an iterable (in most cases an array) of promises. But if any of those objects is not a promise, it's wrapped in `Promise.resolve`. +`Promise.all` does nothing to cancel them, as there's no concept of "cancellation" in promises. In [another chapter](info:fetch-abort) we'll cover `AbortController` that can help with that, but it's not a part of the Promise API. +``` + +````smart header="`Promise.all(iterable)` allows non-promise \"regular\" values in `iterable`" +Normally, `Promise.all(...)` accepts an iterable (in most cases an array) of promises. But if any of those objects is not a promise, it's passed to the resulting array "as is". For instance, here the results are `[1, 2, 3]`: @@ -164,18 +109,94 @@ Promise.all([ new Promise((resolve, reject) => { setTimeout(() => resolve(1), 1000) }), - 2, // treated as Promise.resolve(2) - 3 // treated as Promise.resolve(3) + 2, + 3 ]).then(alert); // 1, 2, 3 ``` -So we are able to pass non-promise values to `Promise.all` where convenient. - +So we are able to pass ready values to `Promise.all` where convenient. ```` +## Promise.allSettled + +[recent browser="new"] + +`Promise.all` rejects as a whole if any promise rejects. That's good for "all or nothing" cases, when we need *all* results successful to proceed: + +```js +Promise.all([ + fetch('/template.html'), + fetch('/style.css'), + fetch('/data.json') +]).then(render); // render method needs results of all fetches +``` + +`Promise.allSettled` just waits for all promises to settle, regardless of the result. The resulting array has: + +- `{status:"fulfilled", value:result}` for successful responses, +- `{status:"rejected", reason:error}` for errors. + +For example, we'd like to fetch the information about multiple users. Even if one request fails, we're still interested in the others. + +Let's use `Promise.allSettled`: + +```js run +let urls = [ + 'https://api.github.com/users/iliakan', + 'https://api.github.com/users/remy', + 'https://no-such-url' +]; + +Promise.allSettled(urls.map(url => fetch(url))) + .then(results => { // (*) + results.forEach((result, num) => { + if (result.status == "fulfilled") { + alert(`${urls[num]}: ${result.value.status}`); + } + if (result.status == "rejected") { + alert(`${urls[num]}: ${result.reason}`); + } + }); + }); +``` + +The `results` in the line `(*)` above will be: +```js +[ + {status: 'fulfilled', value: ...response...}, + {status: 'fulfilled', value: ...response...}, + {status: 'rejected', reason: ...error object...} +] +``` + +So for each promise we get its status and `value/error`. + +### Polyfill + +If the browser doesn't support `Promise.allSettled`, it's easy to polyfill: + +```js +if (!Promise.allSettled) { + const rejectHandler = reason => ({ status: 'rejected', reason }); + + const resolveHandler = value => ({ status: 'fulfilled', value }); + + Promise.allSettled = function (promises) { + const convertedPromises = promises.map(p => Promise.resolve(p).then(resolveHandler, rejectHandler)); + return Promise.all(convertedPromises); + }; +} +``` + +In this code, `promises.map` takes input values, turns them into promises (just in case a non-promise was passed) with `p => Promise.resolve(p)`, and then adds `.then` handler to every one. + +That handler turns a successful result `value` into `{status:'fulfilled', value}`, and an error `reason` into `{status:'rejected', reason}`. That's exactly the format of `Promise.allSettled`. + +Now we can use `Promise.allSettled` to get the results of *all* given promises, even if some of them reject. + ## Promise.race -Similar to `Promise.all`, it takes an iterable of promises, but instead of waiting for all of them to finish, it waits for the first result (or error), and goes on with it. +Similar to `Promise.all`, but waits only for the first settled promise and gets its result (or error). The syntax is: @@ -193,15 +214,110 @@ Promise.race([ ]).then(alert); // 1 ``` -So, the first result/error becomes the result of the whole `Promise.race`. After the first settled promise "wins the race", all further results/errors are ignored. +The first promise here was fastest, so it became the result. After the first settled promise "wins the race", all further results/errors are ignored. + + +## Promise.any + +Similar to `Promise.race`, but waits only for the first fulfilled promise and gets its result. If all of the given promises are rejected, then the returned promise is rejected with [`AggregateError`](mdn:js/AggregateError) - a special error object that stores all promise errors in its `errors` property. + +The syntax is: + +```js +let promise = Promise.any(iterable); +``` + +For instance, here the result will be `1`: + +```js run +Promise.any([ + new Promise((resolve, reject) => setTimeout(() => reject(new Error("Whoops!")), 1000)), + new Promise((resolve, reject) => setTimeout(() => resolve(1), 2000)), + new Promise((resolve, reject) => setTimeout(() => resolve(3), 3000)) +]).then(alert); // 1 +``` + +The first promise here was fastest, but it was rejected, so the second promise became the result. After the first fulfilled promise "wins the race", all further results are ignored. + +Here's an example when all promises fail: + +```js run +Promise.any([ + new Promise((resolve, reject) => setTimeout(() => reject(new Error("Ouch!")), 1000)), + new Promise((resolve, reject) => setTimeout(() => reject(new Error("Error!")), 2000)) +]).catch(error => { + console.log(error.constructor.name); // AggregateError + console.log(error.errors[0]); // Error: Ouch! + console.log(error.errors[1]); // Error: Error! +}); +``` + +As you can see, error objects for failed promises are available in the `errors` property of the `AggregateError` object. + +## Promise.resolve/reject + +Methods `Promise.resolve` and `Promise.reject` are rarely needed in modern code, because `async/await` syntax (we'll cover it [a bit later](info:async-await)) makes them somewhat obsolete. + +We cover them here for completeness and for those who can't use `async/await` for some reason. + +### Promise.resolve + +`Promise.resolve(value)` creates a resolved promise with the result `value`. + +Same as: + +```js +let promise = new Promise(resolve => resolve(value)); +``` + +The method is used for compatibility, when a function is expected to return a promise. + +For example, the `loadCached` function below fetches a URL and remembers (caches) its content. For future calls with the same URL it immediately gets the previous content from cache, but uses `Promise.resolve` to make a promise of it, so the returned value is always a promise: + +```js +let cache = new Map(); + +function loadCached(url) { + if (cache.has(url)) { +*!* + return Promise.resolve(cache.get(url)); // (*) +*/!* + } + + return fetch(url) + .then(response => response.text()) + .then(text => { + cache.set(url,text); + return text; + }); +} +``` + +We can write `loadCached(url).then(…)`, because the function is guaranteed to return a promise. We can always use `.then` after `loadCached`. That's the purpose of `Promise.resolve` in the line `(*)`. + +### Promise.reject + +`Promise.reject(error)` creates a rejected promise with `error`. + +Same as: + +```js +let promise = new Promise((resolve, reject) => reject(error)); +``` + +In practice, this method is almost never used. ## Summary -There are 4 static methods of `Promise` class: +There are 6 static methods of `Promise` class: -1. `Promise.resolve(value)` -- makes a resolved promise with the given value. -2. `Promise.reject(error)` -- makes a rejected promise with the given error. -3. `Promise.all(promises)` -- waits for all promises to resolve and returns an array of their results. If any of the given promises rejects, then it becomes the error of `Promise.all`, and all other results are ignored. -4. `Promise.race(promises)` -- waits for the first promise to settle, and its result/error becomes the outcome. +1. `Promise.all(promises)` -- waits for all promises to resolve and returns an array of their results. If any of the given promises rejects, it becomes the error of `Promise.all`, and all other results are ignored. +2. `Promise.allSettled(promises)` (recently added method) -- waits for all promises to settle and returns their results as an array of objects with: + - `status`: `"fulfilled"` or `"rejected"` + - `value` (if fulfilled) or `reason` (if rejected). +3. `Promise.race(promises)` -- waits for the first promise to settle, and its result/error becomes the outcome. +4. `Promise.any(promises)` (recently added method) -- waits for the first promise to fulfill, and its result becomes the outcome. If all of the given promises are rejected, [`AggregateError`](mdn:js/AggregateError) becomes the error of `Promise.any`. +5. `Promise.resolve(value)` -- makes a resolved promise with the given value. +6. `Promise.reject(error)` -- makes a rejected promise with the given error. -Of these four, `Promise.all` is the most common in practice. +Of all these, `Promise.all` is probably the most common in practice. diff --git a/1-js/11-async/06-promisify/article.md b/1-js/11-async/06-promisify/article.md index e72329ce1..855678e5b 100644 --- a/1-js/11-async/06-promisify/article.md +++ b/1-js/11-async/06-promisify/article.md @@ -1,10 +1,10 @@ # Promisification -Promisification -- is a long word for a simple transform. It's conversion of a function that accepts a callback into a function returning a promise. +"Promisification" is a long word for a simple transformation. It's the conversion of a function that accepts a callback into a function that returns a promise. -In other words, we create a wrapper-function that does the same, internally calling the original one, but returns a promise. +Such transformations are often required in real-life, as many functions and libraries are callback-based. But promises are more convenient, so it makes sense to promisify them. -Such transforms are often needed in real-life, as many functions and libraries are callback-based. But promises are more convenient. So it makes sense to promisify those. +For better understanding, let's see an example. For instance, we have `loadScript(src, callback)` from the chapter <info:callbacks>. @@ -23,61 +23,73 @@ function loadScript(src, callback) { // loadScript('path/script.js', (err, script) => {...}) ``` -Let's promisify it. The new `loadScriptPromise(src)` function will do the same, but accept only `src` (no callback) and return a promise. +The function loads a script with the given `src`, and then calls `callback(err)` in case of an error, or `callback(null, script)` in case of successful loading. That's a widespread agreement for using callbacks, we saw it before. +Let's promisify it. + +We'll make a new function `loadScriptPromise(src)`, that does the same (loads the script), but returns a promise instead of using callbacks. + +In other words, we pass it only `src` (no `callback`) and get a promise in return, that resolves with `script` when the load is successful, and rejects with the error otherwise. + +Here it is: ```js let loadScriptPromise = function(src) { return new Promise((resolve, reject) => { loadScript(src, (err, script) => { - if (err) reject(err) + if (err) reject(err); else resolve(script); }); - }) -} + }); +}; // usage: // loadScriptPromise('path/script.js').then(...) ``` -Now `loadScriptPromise` fits well in our promise-based code. - -As we can see, it delegates all the work to the original `loadScript`, providing its own callback that translates to promise `resolve/reject`. +As we can see, the new function is a wrapper around the original `loadScript` function. It calls it providing its own callback that translates to promise `resolve/reject`. -As we may need to promisify many functions, it makes sense to use a helper. +Now `loadScriptPromise` fits well in promise-based code. If we like promises more than callbacks (and soon we'll see more reasons for that), then we will use it instead. -That's actually very simple -- `promisify(f)` below takes a to-promisify function `f` and returns a wrapper function. +In practice we may need to promisify more than one function, so it makes sense to use a helper. -That wrapper does the same as in the code above: returns a promise and passes the call to the original `f`, tracking the result in a custom callback: +We'll call it `promisify(f)`: it accepts a to-promisify function `f` and returns a wrapper function. ```js function promisify(f) { - return function (...args) { // return a wrapper-function + return function (...args) { // return a wrapper-function (*) return new Promise((resolve, reject) => { - function callback(err, result) { // our custom callback for f + function callback(err, result) { // our custom callback for f (**) if (err) { - return reject(err); + reject(err); } else { resolve(result); } } - args.push(callback); // append our custom callback to the end of arguments + args.push(callback); // append our custom callback to the end of f arguments f.call(this, ...args); // call the original function }); }; -}; +} // usage: let loadScriptPromise = promisify(loadScript); loadScriptPromise(...).then(...); ``` -Here we assume that the original function expects a callback with two arguments `(err, result)`. That's what we encounter most often. Then our custom callback is in exactly the right format, and `promisify` works great for such a case. +The code may look a bit complex, but it's essentially the same that we wrote above, while promisifying `loadScript` function. + +A call to `promisify(f)` returns a wrapper around `f` `(*)`. That wrapper returns a promise and forwards the call to the original `f`, tracking the result in the custom callback `(**)`. + +Here, `promisify` assumes that the original function expects a callback with exactly two arguments `(err, result)`. That's what we encounter most often. Then our custom callback is in exactly the right format, and `promisify` works great for such a case. + +But what if the original `f` expects a callback with more arguments `callback(err, res1, res2, ...)`? -But what if the original `f` expects a callback with more arguments `callback(err, res1, res2)`? +We can improve our helper. Let's make a more advanced version of `promisify`. -Here's a modification of `promisify` that returns an array of multiple callback results: +- When called as `promisify(f)` it should work similar to the version above. +- When called as `promisify(f, true)`, it should return the promise that resolves with the array of callback results. That's exactly for callbacks with many arguments. ```js // promisify(f, true) to get array of results @@ -86,7 +98,7 @@ function promisify(f, manyArgs = false) { return new Promise((resolve, reject) => { function *!*callback(err, ...results*/!*) { // our custom callback for f if (err) { - return reject(err); + reject(err); } else { // resolve with all callback results if manyArgs is specified *!*resolve(manyArgs ? results : results[0]);*/!* @@ -98,19 +110,21 @@ function promisify(f, manyArgs = false) { f.call(this, ...args); }); }; -}; +} // usage: f = promisify(f, true); -f(...).then(arrayOfResults => ..., err => ...) +f(...).then(arrayOfResults => ..., err => ...); ``` -In some cases, `err` may be absent at all: `callback(result)`, or there's something exotic in the callback format, then we can promisify such functions manually. +As you can see it's essentially the same as above, but `resolve` is called with only one or all arguments depending on whether `manyArgs` is truthy. + +For more exotic callback formats, like those without `err` at all: `callback(result)`, we can promisify such functions manually without using the helper. There are also modules with a bit more flexible promisification functions, e.g. [es6-promisify](https://github.com/digitaldesignlabs/es6-promisify). In Node.js, there's a built-in `util.promisify` function for that. ```smart -Promisification is a great approach, especially when you use `async/await` (see the next chapter), but not a total replacement for callbacks. +Promisification is a great approach, especially when you use `async/await` (covered later in the chapter <info:async-await>), but not a total replacement for callbacks. Remember, a promise may have only one result, but a callback may technically be called many times. diff --git a/1-js/11-async/07-microtask-queue/article.md b/1-js/11-async/07-microtask-queue/article.md index 296fc977b..6a67c5e90 100644 --- a/1-js/11-async/07-microtask-queue/article.md +++ b/1-js/11-async/07-microtask-queue/article.md @@ -1,46 +1,46 @@ -# Microtasks and event loop +# Microtasks Promise handlers `.then`/`.catch`/`.finally` are always asynchronous. -Even when a Promise is immediately resolved, the code on the lines *below* your `.then`/`.catch`/`.finally` will still execute first. +Even when a Promise is immediately resolved, the code on the lines *below* `.then`/`.catch`/`.finally` will still execute before these handlers. -Here's the code that demonstrates it: +Here's a demo: ```js run let promise = Promise.resolve(); -promise.then(() => alert("promise done")); +promise.then(() => alert("promise done!")); alert("code finished"); // this alert shows first ``` -If you run it, you see `code finished` first, and then `promise done`. +If you run it, you see `code finished` first, and then `promise done!`. That's strange, because the promise is definitely done from the beginning. Why did the `.then` trigger afterwards? What's going on? -# Microtasks +## Microtasks queue -Asynchronous tasks need proper management. For that, the standard specifies an internal queue `PromiseJobs`, more often referred to as "microtask queue" (v8 term). +Asynchronous tasks need proper management. For that, the ECMA standard specifies an internal queue `PromiseJobs`, more often referred to as the "microtask queue" (V8 term). -As said in the [specification](https://tc39.github.io/ecma262/#sec-jobs-and-job-queues): +As stated in the [specification](https://tc39.github.io/ecma262/#sec-jobs-and-job-queues): - The queue is first-in-first-out: tasks enqueued first are run first. - Execution of a task is initiated only when nothing else is running. -Or, to say that simply, when a promise is ready, its `.then/catch/finally` handlers are put into the queue. They are not executed yet. JavaScript engine takes a task from the queue and executes it, when it becomes free from the current code. +Or, to put it more simply, when a promise is ready, its `.then/catch/finally` handlers are put into the queue; they are not executed yet. When the JavaScript engine becomes free from the current code, it takes a task from the queue and executes it. That's why "code finished" in the example above shows first.  -Promise handlers always go through that internal queue. +Promise handlers always go through this internal queue. -If there's a chain with multiple `.then/catch/finally`, then every one of them is executed asynchronously. That is, it first gets queued, and executed when the current code is complete and previously queued handlers are finished. +If there's a chain with multiple `.then/catch/finally`, then every one of them is executed asynchronously. That is, it first gets queued, then executed when the current code is complete and previously queued handlers are finished. -**What if the order matters for us? How can we make `code finished` work after `promise done`?** +**What if the order matters for us? How can we make `code finished` appear after `promise done`?** Easy, just put it into the queue with `.then`: @@ -52,6 +52,7 @@ Promise.resolve() Now the order is as intended. +<<<<<<< HEAD ## Event loop In-browser JavaScript, as well as Node.js, is based on an *event loop*. @@ -123,68 +124,63 @@ Naturally, `promise` shows up first, because `setTimeout` macrotask awaits in th As a logical consequence, macrotasks are handled only when promises give the engine a "free time". So if we have a promise chain that doesn't wait for anything, then things like `setTimeout` or event handlers can never get in the middle. +======= +>>>>>>> 540d753e90789205fc6e75c502f68382c87dea9b ## Unhandled rejection -Remember "unhandled rejection" event from the chapter <info:promise-error-handling>? +Remember the `unhandledrejection` event from the article <info:promise-error-handling>? -Now, with the understanding of microtasks, we can formalize it. +Now we can see exactly how JavaScript finds out that there was an unhandled rejection. -**"Unhandled rejection" is when a promise error is not handled at the end of the microtask queue.** +**An "unhandled rejection" occurs when a promise error is not handled at the end of the microtask queue.** -For instance, consider this code: +Normally, if we expect an error, we add `.catch` to the promise chain to handle it: ```js run let promise = Promise.reject(new Error("Promise Failed!")); +*!* +promise.catch(err => alert('caught')); +*/!* -window.addEventListener('unhandledrejection', event => { - alert(event.reason); // Promise Failed! -}); +// doesn't run: error handled +window.addEventListener('unhandledrejection', event => alert(event.reason)); ``` -We create a rejected `promise` and do not handle the error. So we have the "unhandled rejection" event (printed in browser console too). - -We wouldn't have it if we added `.catch`, like this: +But if we forget to add `.catch`, then, after the microtask queue is empty, the engine triggers the event: ```js run let promise = Promise.reject(new Error("Promise Failed!")); -*!* -promise.catch(err => alert('caught')); -*/!* -// no error, all quiet +// Promise Failed! window.addEventListener('unhandledrejection', event => alert(event.reason)); ``` -Now let's say, we'll be catching the error, but after `setTimeout`: +What if we handle the error later? Like this: ```js run let promise = Promise.reject(new Error("Promise Failed!")); *!* -setTimeout(() => promise.catch(err => alert('caught'))); +setTimeout(() => promise.catch(err => alert('caught')), 1000); */!* // Error: Promise Failed! window.addEventListener('unhandledrejection', event => alert(event.reason)); ``` -Now the unhandled rejection appears again. Why? Because `unhandledrejection` triggers when the microtask queue is complete. The engine examines promises and, if any of them is in "rejected" state, then the event is generated. +Now, if we run it, we'll see `Promise Failed!` first and then `caught`. -In the example, the `.catch` added by `setTimeout` triggers too, of course it does, but later, after `unhandledrejection` has already occurred. +If we didn't know about the microtasks queue, we could wonder: "Why did `unhandledrejection` handler run? We did catch and handle the error!" -## Summary +But now we understand that `unhandledrejection` is generated when the microtask queue is complete: the engine examines promises and, if any of them is in the "rejected" state, then the event triggers. -- Promise handling is always asynchronous, as all promise actions pass through the internal "promise jobs" queue, also called "microtask queue" (v8 term). +In the example above, `.catch` added by `setTimeout` also triggers. But it does so later, after `unhandledrejection` has already occurred, so it doesn't change anything. - **So, `.then/catch/finally` are called after the current code is finished.** - - If we need to guarantee that a piece of code is executed after `.then/catch/finally`, it's best to add it into a chained `.then` call. - -- There's also a "macrotask queue" that keeps various events, network operation results, `setTimeout`-scheduled calls, and so on. These are also called "macrotasks" (v8 term). +## Summary - The engine uses the macrotask queue to handle them in the appearance order. +Promise handling is always asynchronous, as all promise actions pass through the internal "promise jobs" queue, also called "microtask queue" (V8 term). - **Macrotasks run after the code is finished *and* after the microtask queue is empty.** +So `.then/catch/finally` handlers are always called after the current code is finished. - In other words, they have lower priority. +If we need to guarantee that a piece of code is executed after `.then/catch/finally`, we can add it into a chained `.then` call. -So the order is: regular code, then promise handling, then everything else, like events etc. +In most Javascript engines, including browsers and Node.js, the concept of microtasks is closely tied with the "event loop" and "macrotasks". As these have no direct relation to promises, they are covered in another part of the tutorial, in the article <info:event-loop>. diff --git a/1-js/11-async/08-async-await/01-rewrite-async/solution.md b/1-js/11-async/08-async-await/01-rewrite-async/solution.md index c736defe9..3337ef3c4 100644 --- a/1-js/11-async/08-async-await/01-rewrite-async/solution.md +++ b/1-js/11-async/08-async-await/01-rewrite-async/solution.md @@ -13,13 +13,13 @@ async function loadJson(url) { // (1) throw new Error(response.status); } -loadJson('no-such-user.json') +loadJson('https://javascript.info/no-such-user.json') .catch(alert); // Error: 404 (4) ``` Notes: -1. The function `loadUrl` becomes `async`. +1. The function `loadJson` becomes `async`. 2. All `.then` inside are replaced with `await`. 3. We can `return response.json()` instead of awaiting for it, like this: diff --git a/1-js/11-async/08-async-await/01-rewrite-async/task.md b/1-js/11-async/08-async-await/01-rewrite-async/task.md index bf54e6f63..0c31737da 100644 --- a/1-js/11-async/08-async-await/01-rewrite-async/task.md +++ b/1-js/11-async/08-async-await/01-rewrite-async/task.md @@ -1,7 +1,7 @@ # Rewrite using async/await -Rewrite the one of examples from the chapter <info:promise-chaining> using `async/await` instead of `.then/catch`: +Rewrite this example code from the chapter <info:promise-chaining> using `async/await` instead of `.then/catch`: ```js run function loadJson(url) { @@ -12,9 +12,9 @@ function loadJson(url) { } else { throw new Error(response.status); } - }) + }); } -loadJson('no-such-user.json') // (3) +loadJson('https://javascript.info/no-such-user.json') .catch(alert); // Error: 404 ``` diff --git a/1-js/11-async/08-async-await/02-rewrite-async-2/solution.md b/1-js/11-async/08-async-await/02-rewrite-async-2/solution.md index 105948833..aa462dbf7 100644 --- a/1-js/11-async/08-async-await/02-rewrite-async-2/solution.md +++ b/1-js/11-async/08-async-await/02-rewrite-async-2/solution.md @@ -1,5 +1,5 @@ -There are no tricks here. Just replace `.catch` with `try...catch` inside `demoGithubUser` and add `async/await` where needed: +There are no tricks here. Just replace `.catch` with `try..catch` inside `demoGithubUser` and add `async/await` where needed: ```js run class HttpError extends Error { diff --git a/1-js/11-async/08-async-await/02-rewrite-async-2/task.md b/1-js/11-async/08-async-await/02-rewrite-async-2/task.md index 94af2e579..13d625d2a 100644 --- a/1-js/11-async/08-async-await/02-rewrite-async-2/task.md +++ b/1-js/11-async/08-async-await/02-rewrite-async-2/task.md @@ -1,7 +1,7 @@ -# Rewrite "rethrow" async/await +# Rewrite "rethrow" with async/await -Below you can find the "rethrow" example from the chapter <info:promise-chaining>. Rewrite it using `async/await` instead of `.then/catch`. +Below you can find the "rethrow" example. Rewrite it using `async/await` instead of `.then/catch`. And get rid of the recursion in favour of a loop in `demoGithubUser`: with `async/await` that becomes easy to do. @@ -22,7 +22,7 @@ function loadJson(url) { } else { throw new HttpError(response); } - }) + }); } // Ask for a user name until github returns a valid user diff --git a/1-js/11-async/08-async-await/03-async-from-regular/task.md b/1-js/11-async/08-async-await/03-async-from-regular/task.md index 18d0e2ce7..ca7c186ff 100644 --- a/1-js/11-async/08-async-await/03-async-from-regular/task.md +++ b/1-js/11-async/08-async-await/03-async-from-regular/task.md @@ -1,7 +1,7 @@ # Call async from non-async -We have a "regular" function. How to call `async` from it and use its result? +We have a "regular" function called `f`. How can you call the `async` function `wait()` and use its result inside of `f`? ```js async function wait() { @@ -11,7 +11,7 @@ async function wait() { } function f() { - // ...what to write here? + // ...what should you write here? // we need to call async wait() and wait to get 10 // remember, we can't use "await" } diff --git a/1-js/11-async/08-async-await/04-promise-all-failure/solution.md b/1-js/11-async/08-async-await/04-promise-all-failure/solution.md new file mode 100644 index 000000000..9fda8e000 --- /dev/null +++ b/1-js/11-async/08-async-await/04-promise-all-failure/solution.md @@ -0,0 +1,113 @@ + +The root of the problem is that `Promise.all` immediately rejects when one of its promises rejects, but it do nothing to cancel the other promises. + +In our case, the second query fails, so `Promise.all` rejects, and the `try...catch` block catches this error.Meanwhile, other promises are *not affected* - they independently continue their execution. In our case, the third query throws an error of its own after a bit of time. And that error is never caught, we can see it in the console. + +The problem is especially dangerous in server-side environments, such as Node.js, when an uncaught error may cause the process to crash. + +How to fix it? + +An ideal solution would be to cancel all unfinished queries when one of them fails. This way we avoid any potential errors. + +However, the bad news is that service calls (such as `database.query`) are often implemented by a 3rd-party library which doesn't support cancellation. Then there's no way to cancel a call. + +As an alternative, we can write our own wrapper function around `Promise.all` which adds a custom `then/catch` handler to each promise to track them: results are gathered and, if an error occurs, all subsequent promises are ignored. + +```js +function customPromiseAll(promises) { + return new Promise((resolve, reject) => { + const results = []; + let resultsCount = 0; + let hasError = false; // we'll set it to true upon first error + + promises.forEach((promise, index) => { + promise + .then(result => { + if (hasError) return; // ignore the promise if already errored + results[index] = result; + resultsCount++; + if (resultsCount === promises.length) { + resolve(results); // when all results are ready - successs + } + }) + .catch(error => { + if (hasError) return; // ignore the promise if already errored + hasError = true; // wops, error! + reject(error); // fail with rejection + }); + }); + }); +} +``` + +This approach has an issue of its own - it's often undesirable to `disconnect()` when queries are still in the process. + +It may be important that all queries complete, especially if some of them make important updates. + +So we should wait until all promises are settled before going further with the execution and eventually disconnecting. + +Here's another implementation. It behaves similar to `Promise.all` - also resolves with the first error, but waits until all promises are settled. + +```js +function customPromiseAllWait(promises) { + return new Promise((resolve, reject) => { + const results = new Array(promises.length); + let settledCount = 0; + let firstError = null; + + promises.forEach((promise, index) => { + Promise.resolve(promise) + .then(result => { + results[index] = result; + }) + .catch(error => { + if (firstError === null) { + firstError = error; + } + }) + .finally(() => { + settledCount++; + if (settledCount === promises.length) { + if (firstError !== null) { + reject(firstError); + } else { + resolve(results); + } + } + }); + }); + }); +} +``` + +Now `await customPromiseAllWait(...)` will stall the execution until all queries are processed. + +This is a more reliable approach, as it guarantees a predictable execution flow. + +Lastly, if we'd like to process all errors, we can use either use `Promise.allSettled` or write a wrapper around it to gathers all errors in a single [AggregateError](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/AggregateError) object and rejects with it. + +```js +// wait for all promises to settle +// return results if no errors +// throw AggregateError with all errors if any +function allOrAggregateError(promises) { + return Promise.allSettled(promises).then(results => { + const errors = []; + const values = []; + + results.forEach((res, i) => { + if (res.status === 'fulfilled') { + values[i] = res.value; + } else { + errors.push(res.reason); + } + }); + + if (errors.length > 0) { + throw new AggregateError(errors, 'One or more promises failed'); + } + + return values; + }); +} +``` diff --git a/1-js/11-async/08-async-await/04-promise-all-failure/task.md b/1-js/11-async/08-async-await/04-promise-all-failure/task.md new file mode 100644 index 000000000..74571c43e --- /dev/null +++ b/1-js/11-async/08-async-await/04-promise-all-failure/task.md @@ -0,0 +1,79 @@ + +# Dangerous Promise.all + +`Promise.all` is a great way to parallelize multiple operations. It's especially useful when we need to make parallel requests to multiple services. + +However, there's a hidden danger. We'll see an example in this task and explore how to avoid it. + +Let's say we have a connection to a remote service, such as a database. + +There're two functions: `connect()` and `disconnect()`. + +When connected, we can send requests using `database.query(...)` - an async function which usually returns the result but also may throw an error. + +Here's a simple implementation: + +```js +let database; + +function connect() { + database = { + async query(isOk) { + if (!isOk) throw new Error('Query failed'); + } + }; +} + +function disconnect() { + database = null; +} + +// intended usage: +// connect() +// ... +// database.query(true) to emulate a successful call +// database.query(false) to emulate a failed call +// ... +// disconnect() +``` + +Now here's the problem. + +We wrote the code to connect and send 3 queries in parallel (all of them take different time, e.g. 100, 200 and 300ms), then disconnect: + +```js +// Helper function to call async function `fn` after `ms` milliseconds +function delay(fn, ms) { + return new Promise((resolve, reject) => { + setTimeout(() => fn().then(resolve, reject), ms); + }); +} + +async function run() { + connect(); + + try { + await Promise.all([ + // these 3 parallel jobs take different time: 100, 200 and 300 ms + // we use the `delay` helper to achieve this effect +*!* + delay(() => database.query(true), 100), + delay(() => database.query(false), 200), + delay(() => database.query(false), 300) +*/!* + ]); + } catch(error) { + console.log('Error handled (or was it?)'); + } + + disconnect(); +} + +run(); +``` + +Two of these queries happen to be unsuccessful, but we're smart enough to wrap the `Promise.all` call into a `try..catch` block. + +However, this doesn't help! This script actually leads to an uncaught error in console! + +Why? How to avoid it? \ No newline at end of file diff --git a/1-js/11-async/08-async-await/article.md b/1-js/11-async/08-async-await/article.md index 041a5a465..e679b1c4c 100644 --- a/1-js/11-async/08-async-await/article.md +++ b/1-js/11-async/08-async-await/article.md @@ -12,9 +12,9 @@ async function f() { } ``` -The word "async" before a function means one simple thing: a function always returns a promise. Even If a function actually returns a non-promise value, prepending the function definition with the "async" keyword directs JavaScript to automatically wrap that value in a resolved promise. +The word "async" before a function means one simple thing: a function always returns a promise. Other values are wrapped in a resolved promise automatically. -For instance, the code above returns a resolved promise with the result of `1`, let's test it: +For instance, this function returns a resolved promise with the result of `1`; let's test it: ```js run async function f() { @@ -24,7 +24,7 @@ async function f() { f().then(alert); // 1 ``` -...We could explicitly return a promise, that would be the same as: +...We could explicitly return a promise, which would be the same: ```js run async function f() { @@ -56,7 +56,7 @@ async function f() { }); *!* - let result = await promise; // wait till the promise resolves (*) + let result = await promise; // wait until the promise resolves (*) */!* alert(result); // "done!" @@ -67,12 +67,12 @@ f(); The function execution "pauses" at the line `(*)` and resumes when the promise settles, with `result` becoming its result. So the code above shows "done!" in one second. -Let's emphasize: `await` literally makes JavaScript wait until the promise settles, and then go on with the result. That doesn't cost any CPU resources, because the engine can do other jobs meanwhile: execute other scripts, handle events etc. +Let's emphasize: `await` literally suspends the function execution until the promise settles, and then resumes it with the promise result. That doesn't cost any CPU resources, because the JavaScript engine can do other jobs in the meantime: execute other scripts, handle events, etc. -It's just a more elegant syntax of getting the promise result than `promise.then`, easier to read and write. +It's just a more elegant syntax of getting the promise result than `promise.then`. And, it's easier to read and write. ````warn header="Can't use `await` in regular functions" -If we try to use `await` in non-async function, there would be a syntax error: +If we try to use `await` in a non-async function, there would be a syntax error: ```js run function f() { @@ -83,7 +83,7 @@ function f() { } ``` -We will get this error if we do not put `async` before a function. As said, `await` only works inside an `async function`. +We may get this error if we forget to put `async` before a function. As stated earlier, `await` only works inside an `async` function. ```` Let's take the `showAvatar()` example from the chapter <info:promise-chaining> and rewrite it using `async/await`: @@ -121,18 +121,24 @@ showAvatar(); Pretty clean and easy to read, right? Much better than before. -````smart header="`await` won't work in the top-level code" -People who are just starting to use `await` tend to forget the fact that we can't use `await` in top-level code. For example, this will not work: +````smart header="Modern browsers allow top-level `await` in modules" +In modern browsers, `await` on top level works just fine, when we're inside a module. We'll cover modules in article <info:modules-intro>. -```js run -// syntax error in top-level code +For instance: + +```js run module +// we assume this code runs at top level, inside a module let response = await fetch('/article/promise-chaining/user.json'); let user = await response.json(); + +console.log(user); ``` -We can wrap it into an anonymous async function, like this: +If we're not using modules, or [older browsers](https://caniuse.com/mdn-javascript_operators_await_top_level) must be supported, there's a universal recipe: wrapping into an anonymous async function. -```js run +Like this: + +```js (async () => { let response = await fetch('/article/promise-chaining/user.json'); let user = await response.json(); @@ -140,12 +146,12 @@ We can wrap it into an anonymous async function, like this: })(); ``` - ```` + ````smart header="`await` accepts \"thenables\"" -Like `promise.then`, `await` allows to use thenable objects (those with a callable `then` method). The idea is that a 3rd-party object may not be a promise, but promise-compatible: if it supports `.then`, that's enough to use with `await`. +Like `promise.then`, `await` allows us to use thenable objects (those with a callable `then` method). The idea is that a third-party object may not be a promise, but promise-compatible: if it supports `.then`, that's enough to use it with `await`. -Here's a demo `Thenable` class, the `await` below accepts its instances: +Here's a demo `Thenable` class; the `await` below accepts its instances: ```js run class Thenable { @@ -157,7 +163,7 @@ class Thenable { // resolve with this.num*2 after 1000ms setTimeout(() => resolve(this.num * 2), 1000); // (*) } -}; +} async function f() { // waits for 1 second, then result becomes 2 @@ -168,10 +174,10 @@ async function f() { f(); ``` -If `await` gets a non-promise object with `.then`, it calls that method providing native functions `resolve`, `reject` as arguments. Then `await` waits until one of them is called (in the example above it happens in the line `(*)`) and then proceeds with the result. +If `await` gets a non-promise object with `.then`, it calls that method providing the built-in functions `resolve` and `reject` as arguments (just as it does for a regular `Promise` executor). Then `await` waits until one of them is called (in the example above it happens in the line `(*)`) and then proceeds with the result. ```` -````smart header="Async methods" +````smart header="Async class methods" To declare an async class method, just prepend it with `async`: ```js run @@ -185,14 +191,14 @@ class Waiter { new Waiter() .wait() - .then(alert); // 1 + .then(alert); // 1 (this is the same as (result => alert(result))) ``` The meaning is the same: it ensures that the returned value is a promise and enables `await`. ```` ## Error handling -If a promise resolves normally, then `await promise` returns the result. But in case of a rejection, it throws the error, just as if there were a `throw` statement at that line. +If a promise resolves normally, then `await promise` returns the result. But in the case of a rejection, it throws the error, just as if there were a `throw` statement at that line. This code: @@ -204,7 +210,7 @@ async function f() { } ``` -...Is the same as this: +...is the same as this: ```js async function f() { @@ -214,7 +220,7 @@ async function f() { } ``` -In real situations, the promise may take some time before it rejects. So `await` will wait, and then throw an error. +In real situations, the promise may take some time before it rejects. In that case there will be a delay before `await` throws an error. We can catch that error using `try..catch`, the same way as a regular `throw`: @@ -233,7 +239,7 @@ async function f() { f(); ``` -In case of an error, the control jumps to the `catch` block. We can also wrap multiple lines: +In the case of an error, the control jumps to the `catch` block. We can also wrap multiple lines: ```js run async function f() { @@ -263,15 +269,13 @@ f().catch(alert); // TypeError: failed to fetch // (*) */!* ``` -If we forget to add `.catch` there, then we get an unhandled promise error (viewable in the console). We can catch such errors using a global event handler as described in the chapter <info:promise-error-handling>. +If we forget to add `.catch` there, then we get an unhandled promise error (viewable in the console). We can catch such errors using a global `unhandledrejection` event handler as described in the chapter <info:promise-error-handling>. ```smart header="`async/await` and `promise.then/catch`" -When we use `async/await`, we rarely need `.then`, because `await` handles the waiting for us. And we can use a regular `try..catch` instead of `.catch`. That's usually (not always) more convenient. +When we use `async/await`, we rarely need `.then`, because `await` handles the waiting for us. And we can use a regular `try..catch` instead of `.catch`. That's usually (but not always) more convenient. -But at the top level of the code, when we're outside of any `async` function, we're syntactically unable to use `await`, so it's a normal practice to add `.then/catch` to handle the final result or falling-through errors. - -Like in the line `(*)` of the example above. +But at the top level of the code, when we're outside any `async` function, we're syntactically unable to use `await`, so it's a normal practice to add `.then/catch` to handle the final result or falling-through error, like in the line `(*)` of the example above. ``` ````smart header="`async/await` works well with `Promise.all`" @@ -286,50 +290,22 @@ let results = await Promise.all([ ]); ``` -In case of an error, it propagates as usual: from the failed promise to `Promise.all`, and then becomes an exception that we can catch using `try..catch` around the call. +In the case of an error, it propagates as usual, from the failed promise to `Promise.all`, and then becomes an exception that we can catch using `try..catch` around the call. ```` -## Microtask queue [#microtask-queue] - -As we've seen in the chapter <info:microtask-queue>, promise handlers are executed asynchronously. Every `.then/catch/finally` handler first gets into the "microtask queue" and executed after the current code is complete. - -`Async/await` is based on promises, so it uses the same microtask queue internally, and has the similar priority over macrotasks. - -For instance, we have: -- `setTimeout(handler, 0)`, that should run `handler` with zero delay. -- `let x = await f()`, function `f()` is async, but returns immediately. - -Which one runs first if `await` is *below* `setTimeout` in the code? - -```js run -async function f() { - return 1; -} - -(async () => { - setTimeout(() => alert('timeout'), 0); - - await f(); - - alert('await'); -})(); -``` - -There's no ambiguity here: `await` always finishes first, because (as a microtask) it has a higher priority than `setTimeout` handling. - ## Summary The `async` keyword before a function has two effects: 1. Makes it always return a promise. -2. Allows to use `await` in it. +2. Allows `await` to be used in it. The `await` keyword before a promise makes JavaScript wait until that promise settles, and then: -1. If it's an error, the exception is generated, same as if `throw error` were called at that very place. -2. Otherwise, it returns the result, so we can assign it to a value. +1. If it's an error, an exception is generated — same as if `throw error` were called at that very place. +2. Otherwise, it returns the result. -Together they provide a great framework to write asynchronous code that is easy both to read and write. +Together they provide a great framework to write asynchronous code that is easy to both read and write. -With `async/await` we rarely need to write `promise.then/catch`, but we still shouldn't forget that they are based on promises, because sometimes (e.g. in the outermost scope) we have to use these methods. Also `Promise.all` is a nice thing to wait for many tasks simultaneously. +With `async/await` we rarely need to write `promise.then/catch`, but we still shouldn't forget that they are based on promises, because sometimes (e.g. in the outermost scope) we have to use these methods. Also `Promise.all` is nice when we are waiting for many tasks simultaneously. diff --git a/1-js/12-generators-iterators/1-generators/01-pseudo-random-generator/solution.md b/1-js/12-generators-iterators/1-generators/01-pseudo-random-generator/solution.md index 8bb521506..4355d0cfc 100644 --- a/1-js/12-generators-iterators/1-generators/01-pseudo-random-generator/solution.md +++ b/1-js/12-generators-iterators/1-generators/01-pseudo-random-generator/solution.md @@ -3,7 +3,7 @@ function* pseudoRandom(seed) { let value = seed; while(true) { - value = value * 16807 % 2147483647 + value = value * 16807 % 2147483647; yield value; } @@ -35,4 +35,4 @@ alert(generator()); // 282475249 alert(generator()); // 1622650073 ``` -That's fine for this context. But then we loose ability to iterate with `for..of` and to use generator composition, that may be useful elsewhere. +That also works. But then we lose ability to iterate with `for..of` and to use generator composition, that may be useful elsewhere. diff --git a/1-js/12-generators-iterators/1-generators/01-pseudo-random-generator/task.md b/1-js/12-generators-iterators/1-generators/01-pseudo-random-generator/task.md index c2ac53181..e7c251ad3 100644 --- a/1-js/12-generators-iterators/1-generators/01-pseudo-random-generator/task.md +++ b/1-js/12-generators-iterators/1-generators/01-pseudo-random-generator/task.md @@ -3,11 +3,11 @@ There are many areas where we need random data. -One of them is testing. We may need random data: text, numbers etc, to test things out well. +One of them is testing. We may need random data: text, numbers, etc. to test things out well. In JavaScript, we could use `Math.random()`. But if something goes wrong, we'd like to be able to repeat the test, using exactly the same data. -For that, so called "seeded pseudo-random generators" are used. They take a "seed", the first value, and then generate next ones using a formula. So that the same seed yields the same sequence, and hence the whole flow is easily reproducible. We only need to remember the seed to repeat it. +For that, so called "seeded pseudo-random generators" are used. They take a "seed", the first value, and then generate the next ones using a formula so that the same seed yields the same sequence, and hence the whole flow is easily reproducible. We only need to remember the seed to repeat it. An example of such formula, that generates somewhat uniformly distributed values: diff --git a/1-js/12-generators-iterators/1-generators/article.md b/1-js/12-generators-iterators/1-generators/article.md index f6fcfb00d..1f83a7e0c 100644 --- a/1-js/12-generators-iterators/1-generators/article.md +++ b/1-js/12-generators-iterators/1-generators/article.md @@ -1,9 +1,8 @@ - # Generators Regular functions return only one, single value (or nothing). -Generators can return ("yield") multiple values, possibly an infinite number of values, one after another, on-demand. They work great with [iterables](info:iterable), allowing to create data streams with ease. +Generators can return ("yield") multiple values, one after another, on-demand. They work great with [iterables](info:iterable), allowing to create data streams with ease. ## Generator functions @@ -19,20 +18,33 @@ function* generateSequence() { } ``` -When `generateSequence()` is called, it does not execute the code. Instead, it returns a special object, called "generator". +Generator functions behave differently from regular ones. When such function is called, it doesn't run its code. Instead it returns a special object, called "generator object", to manage the execution. + +Here, take a look: + +```js run +function* generateSequence() { + yield 1; + yield 2; + return 3; +} -```js // "generator function" creates "generator object" let generator = generateSequence(); +*!* +alert(generator); // [object Generator] +*/!* ``` -The `generator` object can be perceived as a "frozen function call": +The function code execution hasn't started yet:  -Upon creation, the code execution is paused at the very beginning. +The main method of a generator is `next()`. When called, it runs the execution until the nearest `yield <value>` statement (`value` can be omitted, then it's `undefined`). Then the function execution pauses, and the yielded `value` is returned to the outer code. -The main method of a generator is `next()`. When called, it resumes execution till the nearest `yield <value>` statement. Then the execution pauses, and the value is returned to the outer code. +The result of `next()` is always an object with two properties: +- `value`: the yielded value. +- `done`: `true` if the function code has finished, otherwise `false`. For instance, here we create the generator and get its first yielded value: @@ -52,15 +64,17 @@ let one = generator.next(); alert(JSON.stringify(one)); // {value: 1, done: false} ``` -The result of `next()` is always an object: -- `value`: the yielded value. -- `done`: `false` if the code is not finished yet, otherwise `true`. +As of now, we got the first value only, and the function execution is on the second line: -As of now, we got the first value only: + +<<<<<<< HEAD  Let's call `generator.next()` again. It resumes the execution and returns the next `yield`: +======= +Let's call `generator.next()` again. It resumes the code execution and returns the next `yield`: +>>>>>>> 540d753e90789205fc6e75c502f68382c87dea9b ```js let two = generator.next(); @@ -70,7 +84,7 @@ alert(JSON.stringify(two)); // {value: 2, done: false}  -And, if we call it the third time, then the execution reaches `return` statement that finishes the function: +And, if we call it a third time, the execution reaches the `return` statement that finishes the function: ```js let three = generator.next(); @@ -82,14 +96,10 @@ alert(JSON.stringify(three)); // {value: 3, *!*done: true*/!*} Now the generator is done. We should see it from `done:true` and process `value:3` as the final result. -New calls `generator.next()` don't make sense any more. If we make them, they return the same object: `{done: true}`. - -There's no way to "roll back" a generator. But we can create another one by calling `generateSequence()`. - -So far, the most important thing to understand is that generator functions, unlike regular function, do not run the code. They serve as "generator factories". Running `function*` returns a generator, and then we ask it for values. +New calls to `generator.next()` don't make sense any more. If we do them, they return the same object: `{done: true}`. ```smart header="`function* f(…)` or `function *f(…)`?" -That's a minor religious question, both syntaxes are correct. +Both syntaxes are correct. But usually the first syntax is preferred, as the star `*` denotes that it's a generator function, it describes the kind, not the name, so it should stick with the `function` keyword. ``` @@ -98,7 +108,7 @@ But usually the first syntax is preferred, as the star `*` denotes that it's a g As you probably already guessed looking at the `next()` method, generators are [iterable](info:iterable). -We can get loop over values by `for..of`: +We can loop over their values using `for..of`: ```js run function* generateSequence() { @@ -114,11 +124,11 @@ for(let value of generator) { } ``` -That's a much better-looking way to work with generators than calling `.next().value`, right? +Looks a lot nicer than calling `.next().value`, right? ...But please note: the example above shows `1`, then `2`, and that's all. It doesn't show `3`! -It's because for-of iteration ignores the last `value`, when `done: true`. So, if we want all results to be shown by `for..of`, we must return them with `yield`: +It's because `for..of` iteration ignores the last `value`, when `done: true`. So, if we want all results to be shown by `for..of`, we must return them with `yield`: ```js run function* generateSequence() { @@ -136,7 +146,7 @@ for(let value of generator) { } ``` -Naturally, as generators are iterable, we can call all related functionality, e.g. the spread operator `...`: +As generators are iterable, we can call all related functionality, e.g. the spread syntax `...`: ```js run function* generateSequence() { @@ -150,9 +160,9 @@ let sequence = [0, ...generateSequence()]; alert(sequence); // 0, 1, 2, 3 ``` -In the code above, `...generateSequence()` turns the iterable into array of items (read more about the spread operator in the chapter [](info:rest-parameters-spread-operator#spread-operator)) +In the code above, `...generateSequence()` turns the iterable generator object into an array of items (read more about the spread syntax in the chapter [](info:rest-parameters-spread#spread-syntax)) -## Using generators instead of iterables +## Using generators for iterables Some time ago, in the chapter [](info:iterable) we created an iterable `range` object that returns values `from..to`. @@ -163,7 +173,7 @@ let range = { from: 1, to: 5, - // for..of calls this method once in the very beginning + // for..of range calls this method once in the very beginning [Symbol.iterator]() { // ...it returns the iterator object: // onward, for..of works only with that object, asking it for next values @@ -184,28 +194,13 @@ let range = { } }; +// iteration over range returns numbers from range.from to range.to alert([...range]); // 1,2,3,4,5 ``` -Using a generator to make iterable sequences is so much more elegant: - -```js run -function* generateSequence(start, end) { - for (let i = start; i <= end; i++) { - yield i; - } -} - -let sequence = [...generateSequence(1,5)]; - -alert(sequence); // 1, 2, 3, 4, 5 -``` - -...But what if we'd like to keep a custom `range` object? +We can use a generator function for iteration by providing it as `Symbol.iterator`. -## Converting Symbol.iterator to generator - -We can get the best from both worlds by providing a generator as `Symbol.iterator`: +Here's the same `range`, but much more compact: ```js run let range = { @@ -222,39 +217,44 @@ let range = { alert( [...range] ); // 1,2,3,4,5 ``` -The `range` object is now iterable. - -That works pretty well, because when `range[Symbol.iterator]` is called: -- it returns an object (now a generator) -- that has `.next()` method (yep, a generator has it) -- that returns values in the form `{value: ..., done: true/false}` (check, exactly what generator does). +That works, because `range[Symbol.iterator]()` now returns a generator, and generator methods are exactly what `for..of` expects: +- it has a `.next()` method +- that returns values in the form `{value: ..., done: true/false}` -That's not a coincidence, of course. Generators aim to make iterables easier, so we can see that. +That's not a coincidence, of course. Generators were added to JavaScript language with iterators in mind, to implement them easily. -The last variant with a generator is much more concise than the original iterable code, and keeps the same functionality. +The variant with a generator is much more concise than the original iterable code of `range`, and keeps the same functionality. -```smart header="Generators may continue forever" +```smart header="Generators may generate values forever" In the examples above we generated finite sequences, but we can also make a generator that yields values forever. For instance, an unending sequence of pseudo-random numbers. -That surely would require a `break` in `for..of`, otherwise the loop would repeat forever and hang. +That surely would require a `break` (or `return`) in `for..of` over such generator. Otherwise, the loop would repeat forever and hang. ``` ## Generator composition Generator composition is a special feature of generators that allows to transparently "embed" generators in each other. -For instance, we'd like to generate a sequence of: -- digits `0..9` (character codes 48..57), -- followed by alphabet letters `a..z` (character codes 65..90) -- followed by uppercased letters `A..Z` (character codes 97..122) +For instance, we have a function that generates a sequence of numbers: -Then we plan to create passwords by selecting characters from it (could add syntax characters as well), but need to generate the sequence first. +```js +function* generateSequence(start, end) { + for (let i = start; i <= end; i++) yield i; +} +``` -We already have `function* generateSequence(start, end)`. Let's reuse it to deliver 3 sequences one after another, together they are exactly what we need. +Now we'd like to reuse it to generate a more complex sequence: +- first, digits `0..9` (with character codes 48..57), +- followed by uppercase alphabet letters `A..Z` (character codes 65..90) +- followed by lowercase alphabet letters `a..z` (character codes 97..122) + +We can use this sequence e.g. to create passwords by selecting characters from it (could add syntax characters as well), but let's generate it first. In a regular function, to combine results from multiple other functions, we call them, store the results, and then join at the end. -For generators, we can do better, like this: +For generators, there's a special `yield*` syntax to "embed" (compose) one generator into another. + +The composed generator: ```js run function* generateSequence(start, end) { @@ -285,7 +285,7 @@ for(let code of generatePasswordCodes()) { alert(str); // 0..9A..Za..z ``` -The special `yield*` directive in the example is responsible for the composition. It *delegates* the execution to another generator. Or, to say it simple, it runs generators and transparently forwards their yields outside, as if they were done by the calling generator itself. +The `yield*` directive *delegates* the execution to another generator. This term means that `yield* gen` iterates over the generator `gen` and transparently forwards its yields outside. As if the values were yielded by the outer generator. The result is the same as if we inlined the code from nested generators: @@ -318,17 +318,13 @@ for(let code of generateAlphaNum()) { alert(str); // 0..9A..Za..z ``` -A generator composition is a natural way to insert a flow of one generator into another. - -It works even if the flow of values from the nested generator is infinite. It's simple and doesn't use extra memory to store intermediate results. +A generator composition is a natural way to insert a flow of one generator into another. It doesn't use extra memory to store intermediate results. -## "yield" is a two-way road +## "yield" is a two-way street -Till this moment, generators were like "iterators on steroids". And that's how they are often used. +Until this moment, generators were similar to iterable objects, with a special syntax to generate values. But in fact they are much more powerful and flexible. -But in fact they are much more powerful and flexible. - -That's because `yield` is a two-way road: it not only returns the result outside, but also can pass the value inside the generator. +That's because `yield` is a two-way street: it not only returns the result to the outside, but also can pass the value inside the generator. To do so, we should call `generator.next(arg)`, with an argument. That argument becomes the result of `yield`. @@ -338,7 +334,7 @@ Let's see an example: function* gen() { *!* // Pass a question to the outer code and wait for an answer - let result = yield "2 + 2?"; // (*) + let result = yield "2 + 2 = ?"; // (*) */!* alert(result); @@ -353,37 +349,39 @@ generator.next(4); // --> pass the result into the generator  -1. The first call `generator.next()` is always without an argument. It starts the execution and returns the result of the first `yield` ("2+2?"). At this point the generator pauses the execution (still on that line). +1. The first call `generator.next()` should be always made without an argument (the argument is ignored if passed). It starts the execution and returns the result of the first `yield "2+2=?"`. At this point the generator pauses the execution, while staying on the line `(*)`. 2. Then, as shown at the picture above, the result of `yield` gets into the `question` variable in the calling code. 3. On `generator.next(4)`, the generator resumes, and `4` gets in as the result: `let result = 4`. -Please note, the outer code does not have to immediately call`next(4)`. It may take time to calculate the value. This is also a valid code: +Please note, the outer code does not have to immediately call `next(4)`. It may take time. That's not a problem: the generator will wait. + +For instance: ```js // resume the generator after some time setTimeout(() => generator.next(4), 1000); ``` -The syntax may seem a bit odd. It's quite uncommon for a function and the calling code to pass values around to each other. But that's exactly what's going on. +As we can see, unlike regular functions, a generator and the calling code can exchange results by passing values in `next/yield`. To make things more obvious, here's another example, with more calls: ```js run function* gen() { - let ask1 = yield "2 + 2?"; + let ask1 = yield "2 + 2 = ?"; alert(ask1); // 4 - let ask2 = yield "3 * 3?" + let ask2 = yield "3 * 3 = ?" alert(ask2); // 9 } let generator = gen(); -alert( generator.next().value ); // "2 + 2?" +alert( generator.next().value ); // "2 + 2 = ?" -alert( generator.next(4).value ); // "3 * 3?" +alert( generator.next(4).value ); // "3 * 3 = ?" alert( generator.next(9).done ); // true ``` @@ -408,12 +406,12 @@ As we observed in the examples above, the outer code may pass a value into the g To pass an error into a `yield`, we should call `generator.throw(err)`. In that case, the `err` is thrown in the line with that `yield`. -For instance, here the yield of `"2 + 2?"` leads to an error: +For instance, here the yield of `"2 + 2 = ?"` leads to an error: ```js run function* gen() { try { - let result = yield "2 + 2?"; // (1) + let result = yield "2 + 2 = ?"; // (1) alert("The execution does not reach here, because the exception is thrown above"); } catch(e) { @@ -430,7 +428,7 @@ generator.throw(new Error("The answer is not found in my database")); // (2) */!* ``` -The error, thrown into the generator at the line `(2)` leads to an exception in the line `(1)` with `yield`. In the example above, `try..catch` catches it and shows. +The error, thrown into the generator at line `(2)` leads to an exception in line `(1)` with `yield`. In the example above, `try..catch` catches it and shows it. If we don't catch it, then just like any exception, it "falls out" the generator into the calling code. @@ -438,7 +436,7 @@ The current line of the calling code is the line with `generator.throw`, labelle ```js run function* generate() { - let result = yield "2 + 2?"; // Error in this line + let result = yield "2 + 2 = ?"; // Error in this line } let generator = generate(); @@ -456,14 +454,36 @@ try { If we don't catch the error there, then, as usual, it falls through to the outer calling code (if any) and, if uncaught, kills the script. +## generator.return + +`generator.return(value)` finishes the generator execution and return the given `value`. + +```js +function* gen() { + yield 1; + yield 2; + yield 3; +} + +const g = gen(); + +g.next(); // { value: 1, done: false } +g.return('foo'); // { value: "foo", done: true } +g.next(); // { value: undefined, done: true } +``` + +If we again use `generator.return()` in a completed generator, it will return that value again ([MDN](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Generator/return)). + +Often we don't use it, as most of time we want to get all returning values, but it can be useful when we want to stop generator in a specific condition. + ## Summary -- Generators are created by generator functions `function*(…) {…}`. +- Generators are created by generator functions `function* f(…) {…}`. - Inside generators (only) there exists a `yield` operator. - The outer code and the generator may exchange results via `next/yield` calls. -In modern JavaScript, generators are rarely used. But sometimes they come in handy, because the ability of a function to exchange data with the calling code during the execution is quite unique. +In modern JavaScript, generators are rarely used. But sometimes they come in handy, because the ability of a function to exchange data with the calling code during the execution is quite unique. And, surely, they are great for making iterable objects. -Also, in the next chapter we'll learn async generators, which are used to read streams of asynchronously generated data in `for` loop. +Also, in the next chapter we'll learn async generators, which are used to read streams of asynchronously generated data (e.g paginated fetches over a network) in `for await ... of` loops. -In web-programming we often work with streamed data, e.g. need to fetch paginated results, so that's a very important use case. +In web-programming we often work with streamed data, so that's another very important use case. diff --git a/1-js/12-generators-iterators/1-generators/generateSequence-2.svg b/1-js/12-generators-iterators/1-generators/generateSequence-2.svg index 4c64e983e..b598c6d30 100644 --- a/1-js/12-generators-iterators/1-generators/generateSequence-2.svg +++ b/1-js/12-generators-iterators/1-generators/generateSequence-2.svg @@ -1 +1,5 @@ -<svg xmlns="http://www.w3.org/2000/svg" width="519" height="150" viewBox="0 0 519 150"><defs><style>@import url(https://fonts.googleapis.com/css?family=Open+Sans:bold,italic,bolditalic%7CPT+Mono);@font-face{font-family:'PT Mono';font-weight:700;font-style:normal;src:local('PT MonoBold'),url(/font/PTMonoBold.woff2) format('woff2'),url(/font/PTMonoBold.woff) format('woff'),url(/font/PTMonoBold.ttf) format('truetype')}</style></defs><g id="generator" fill="none" fill-rule="evenodd" stroke="none" stroke-width="1"><g id="generateSequence-2.svg"><path id="Rectangle-1" fill="#FBF2EC" stroke="#DBAF88" stroke-width="2" d="M26 17h271v110H26z"/><g id="function*-generateSe" fill-rule="nonzero" transform="translate(40.12 26.99)"><path id="function" fill="#1C85B5" d="M.112 10.01v-.938h1.666V3.948H.112V3.01h1.666v-.392c0-.877.229-1.512.686-1.904.457-.392 1.11-.588 1.96-.588.308 0 .583.019.826.056.243.037.504.112.784.224l-.252.91a2.862 2.862 0 00-.7-.203 4.295 4.295 0 00-.616-.049c-.616 0-1.036.152-1.26.455-.224.303-.336.8-.336 1.491h2.898v.938H2.87v5.124h2.898v.938H.112zm12.25-7h1.988v4.774c0 .457.028.896.084 1.316h.938v.91H13.51l-.042-1.19h-.056a2.938 2.938 0 01-.966.98c-.401.252-.887.378-1.456.378-.43 0-.796-.049-1.099-.147a1.556 1.556 0 01-.749-.511c-.196-.243-.34-.567-.434-.973-.093-.406-.14-.912-.14-1.519v-3.08H7.63V3.01h2.03v3.794c0 .383.016.726.049 1.029.033.303.1.56.203.77.103.21.254.369.455.476.2.107.469.161.805.161.485 0 .908-.159 1.267-.476.36-.317.632-.714.819-1.19V3.948h-.896V3.01zm4.62 2.45a14.05 14.05 0 00-.063-1.176 4.657 4.657 0 00-.049-.364h-.938v-.91h1.876l.126 1.134h.07c.093-.159.217-.315.371-.469a2.91 2.91 0 011.225-.721c.252-.075.518-.112.798-.112.43 0 .81.047 1.141.14.331.093.607.259.826.497.22.238.385.56.497.966.112.406.168.922.168 1.547v4.018h-1.092V6.202c0-.775-.126-1.358-.378-1.75-.252-.392-.71-.588-1.372-.588-.243 0-.478.049-.707.147a2.44 2.44 0 00-.623.385c-.187.159-.35.343-.49.553-.14.21-.243.432-.308.665v4.396h-1.078V5.46zm13.244-1.372a5.531 5.531 0 00-.693-.189 3.61 3.61 0 00-.735-.077c-.915 0-1.596.215-2.044.644-.448.43-.672 1.11-.672 2.044 0 .41.065.777.196 1.099.13.322.317.595.56.819.243.224.534.397.875.518.34.121.716.182 1.127.182.439 0 .866-.075 1.281-.224.415-.15.763-.345 1.043-.588l.49.812c-.13.112-.294.229-.49.35a4.837 4.837 0 01-1.533.602 4.962 4.962 0 01-1.015.098c-.607 0-1.141-.086-1.603-.259a3.045 3.045 0 01-1.155-.742 3.176 3.176 0 01-.7-1.162 4.525 4.525 0 01-.238-1.505c0-.588.082-1.11.245-1.568.163-.457.399-.84.707-1.148a3.08 3.08 0 011.12-.707 4.187 4.187 0 011.47-.245c.69 0 1.253.06 1.687.182.434.121.8.257 1.099.406l-.014.042v1.946h-1.008v-1.33zm2.688-1.078h1.666V1.624l1.092-.308V3.01h3.738v.938h-3.738v3.304c0 .681.166 1.185.497 1.512.331.327.805.49 1.421.49.42 0 .786-.08 1.099-.238.313-.159.595-.331.847-.518l.364.826a3.938 3.938 0 01-1.169.63 4.182 4.182 0 01-1.393.238 3.41 3.41 0 01-1.057-.161 2.426 2.426 0 01-.875-.497 2.38 2.38 0 01-.602-.861c-.15-.35-.224-.768-.224-1.253V3.948h-1.666V3.01zm9.436 7v-.938h2.436V3.948H42.35V3.01h3.556v6.062h2.38v.938H42.35zm2.058-8.988c0-.252.084-.469.252-.651a.838.838 0 01.644-.273c.27 0 .497.091.679.273a.889.889 0 01.273.651.806.806 0 01-.273.616.963.963 0 01-.679.252.872.872 0 01-.644-.252.838.838 0 01-.252-.616zm5.67 5.488c0-1.13.294-2.023.882-2.681.588-.658 1.428-.987 2.52-.987.588 0 1.094.096 1.519.287.425.191.777.45 1.057.777.28.327.488.714.623 1.162.135.448.203.929.203 1.442 0 .56-.075 1.066-.224 1.519-.15.453-.369.838-.658 1.155-.29.317-.646.562-1.071.735a3.82 3.82 0 01-1.449.259c-.579 0-1.083-.096-1.512-.287a2.967 2.967 0 01-1.064-.777 3.168 3.168 0 01-.623-1.162 4.963 4.963 0 01-.203-1.442zm1.162 0c0 .327.04.653.119.98.08.327.208.62.385.882.177.261.408.471.693.63.285.159.632.238 1.043.238.747 0 1.309-.231 1.687-.693.378-.462.567-1.141.567-2.037 0-.336-.04-.665-.119-.987a2.608 2.608 0 00-.392-.875 2.066 2.066 0 00-.7-.63c-.285-.159-.632-.238-1.043-.238-.747 0-1.307.229-1.68.686-.373.457-.56 1.139-.56 2.044zm7.742-1.05a14.05 14.05 0 00-.063-1.176 4.657 4.657 0 00-.049-.364h-.938v-.91h1.876l.126 1.134h.07c.093-.159.217-.315.371-.469a2.91 2.91 0 011.225-.721c.252-.075.518-.112.798-.112.43 0 .81.047 1.141.14.331.093.607.259.826.497.22.238.385.56.497.966.112.406.168.922.168 1.547v4.018h-1.092V6.202c0-.775-.126-1.358-.378-1.75-.252-.392-.71-.588-1.372-.588-.243 0-.478.049-.707.147a2.44 2.44 0 00-.623.385c-.187.159-.35.343-.49.553-.14.21-.243.432-.308.665v4.396h-1.078V5.46z"/><path id="*" fill="#DBAF88" d="M69.062.014l1.246 2.45L71.512 0l.966.518-1.694 2.366 2.842-.21v1.134l-2.758-.224 1.624 2.254-.938.546-1.302-2.506-1.232 2.506-1.008-.546 1.694-2.254-2.772.224V2.674l2.772.238L68.096.56z"/><path id="generateSequence" fill="#181717" d="M90.216 10.36c0 .439-.084.824-.252 1.155a2.269 2.269 0 01-.693.819 3.127 3.127 0 01-1.029.483 4.81 4.81 0 01-1.274.161c-.55 0-1.031-.056-1.442-.168a4.29 4.29 0 01-1.064-.434l.532-.994c.084.075.194.147.329.217s.292.135.469.196c.177.06.366.11.567.147.2.037.399.056.595.056.41 0 .754-.037 1.029-.112.275-.075.497-.191.665-.35.168-.159.29-.364.364-.616a3.29 3.29 0 00.112-.924v-.784h-.056a2.18 2.18 0 01-.826.714c-.336.168-.77.252-1.302.252-1.064 0-1.846-.296-2.345-.889-.5-.593-.749-1.514-.749-2.765 0-1.195.317-2.098.952-2.709.635-.611 1.577-.917 2.828-.917.579 0 1.071.04 1.477.119.406.08.777.18 1.113.301v7.042zm-3.122-1.12c.57 0 1.017-.147 1.344-.441.327-.294.555-.744.686-1.351V4.13c-.41-.196-.985-.294-1.722-.294-.747 0-1.335.22-1.764.658-.43.439-.644 1.11-.644 2.016 0 .401.037.768.112 1.099.075.331.194.618.357.861.163.243.378.432.644.567.266.135.595.203.987.203zm11.592-.112c-.168.15-.366.29-.595.42a4.39 4.39 0 01-.749.336c-.27.093-.553.166-.847.217-.294.051-.59.077-.889.077-.56 0-1.055-.086-1.484-.259a2.858 2.858 0 01-1.078-.742 3.234 3.234 0 01-.658-1.155 4.767 4.767 0 01-.224-1.512c0-.588.082-1.11.245-1.568.163-.457.399-.84.707-1.148a3.08 3.08 0 011.12-.707 4.187 4.187 0 011.47-.245c.392 0 .78.051 1.162.154.383.103.721.296 1.015.581.294.285.52.677.679 1.176.159.5.215 1.146.168 1.939H93.31c0 .84.226 1.468.679 1.883.453.415 1.057.623 1.813.623.252 0 .502-.03.749-.091.247-.06.483-.133.707-.217a3.72 3.72 0 00.595-.28c.173-.103.306-.196.399-.28l.434.798zm-2.954-5.362c-.308 0-.6.033-.875.098a1.995 1.995 0 00-.728.329c-.21.154-.383.355-.518.602s-.222.553-.259.917h4.354c-.047-.616-.245-1.094-.595-1.435-.35-.34-.81-.511-1.379-.511zm5.25 1.694a14.051 14.051 0 00-.063-1.176 4.657 4.657 0 00-.049-.364h-.938v-.91h1.876l.126 1.134h.07c.093-.159.217-.315.371-.469a2.91 2.91 0 011.225-.721c.252-.075.518-.112.798-.112.43 0 .81.047 1.141.14.331.093.607.259.826.497.22.238.385.56.497.966.112.406.168.922.168 1.547v4.018h-1.092V6.202c0-.775-.126-1.358-.378-1.75-.252-.392-.71-.588-1.372-.588-.243 0-.478.049-.707.147a2.44 2.44 0 00-.623.385c-.187.159-.35.343-.49.553-.14.21-.243.432-.308.665v4.396h-1.078V5.46zm14.504 3.668c-.168.15-.366.29-.595.42a4.39 4.39 0 01-.749.336c-.27.093-.553.166-.847.217-.294.051-.59.077-.889.077-.56 0-1.055-.086-1.484-.259a2.858 2.858 0 01-1.078-.742 3.234 3.234 0 01-.658-1.155 4.767 4.767 0 01-.224-1.512c0-.588.082-1.11.245-1.568.163-.457.399-.84.707-1.148a3.08 3.08 0 011.12-.707 4.187 4.187 0 011.47-.245c.392 0 .78.051 1.162.154.383.103.721.296 1.015.581.294.285.52.677.679 1.176.159.5.215 1.146.168 1.939h-5.418c0 .84.226 1.468.679 1.883.453.415 1.057.623 1.813.623.252 0 .502-.03.749-.091.247-.06.483-.133.707-.217a3.72 3.72 0 00.595-.28c.173-.103.306-.196.399-.28l.434.798zm-2.954-5.362c-.308 0-.6.033-.875.098a1.995 1.995 0 00-.728.329c-.21.154-.383.355-.518.602s-.222.553-.259.917h4.354c-.047-.616-.245-1.094-.595-1.435-.35-.34-.81-.511-1.379-.511zm4.872 6.244v-.938h1.89V3.948h-1.89V3.01h2.618l.224.91h.07c.317-.29.672-.537 1.064-.742.392-.205.859-.308 1.4-.308.317 0 .572.06.763.182.191.121.34.299.448.532.107.233.18.516.217.847.037.331.056.707.056 1.127l-.98.014c0-.597-.058-1.036-.175-1.316-.117-.28-.329-.42-.637-.42-.29 0-.55.042-.784.126a2.565 2.565 0 00-.609.308c-.173.121-.32.243-.441.364s-.21.224-.266.308v4.13h2.688v.938h-5.656zm8.988-6.454a4.447 4.447 0 011.358-.504 7.423 7.423 0 011.484-.154c.476 0 .866.075 1.169.224.303.15.541.343.714.581.173.238.29.509.35.812.06.303.091.609.091.917 0 .355-.01.733-.028 1.134-.019.401-.033.803-.042 1.204 0 .467.028.91.084 1.33h.938v.91h-1.862l-.126-1.05h-.07c-.056.084-.14.191-.252.322-.112.13-.259.259-.441.385a2.749 2.749 0 01-1.589.469c-.69 0-1.237-.177-1.638-.532-.401-.355-.602-.84-.602-1.456 0-.476.105-.873.315-1.19.21-.317.511-.56.903-.728.392-.168.866-.266 1.421-.294a9.544 9.544 0 011.869.112c.047-.43.054-.786.021-1.071-.033-.285-.107-.511-.224-.679a.938.938 0 00-.49-.357 2.482 2.482 0 00-.777-.105c-.42 0-.821.058-1.204.175-.383.117-.723.236-1.022.357l-.35-.812zm2.058 5.642c.261 0 .504-.042.728-.126a2.22 2.22 0 00.588-.322 2.133 2.133 0 00.672-.868v-.98a7.92 7.92 0 00-1.344-.126c-.41 0-.765.044-1.064.133-.299.089-.532.226-.7.413-.168.187-.252.43-.252.728 0 .308.105.576.315.805.21.229.562.343 1.057.343zm5.264-6.188h1.666V1.624l1.092-.308V3.01h3.738v.938h-3.738v3.304c0 .681.166 1.185.497 1.512.331.327.805.49 1.421.49.42 0 .786-.08 1.099-.238.313-.159.595-.331.847-.518l.364.826a3.938 3.938 0 01-1.169.63 4.182 4.182 0 01-1.393.238 3.41 3.41 0 01-1.057-.161 2.426 2.426 0 01-.875-.497 2.38 2.38 0 01-.602-.861c-.15-.35-.224-.768-.224-1.253V3.948h-1.666V3.01zm15.372 6.118c-.168.15-.366.29-.595.42a4.39 4.39 0 01-.749.336c-.27.093-.553.166-.847.217-.294.051-.59.077-.889.077-.56 0-1.055-.086-1.484-.259a2.858 2.858 0 01-1.078-.742 3.234 3.234 0 01-.658-1.155 4.767 4.767 0 01-.224-1.512c0-.588.082-1.11.245-1.568.163-.457.399-.84.707-1.148a3.08 3.08 0 011.12-.707 4.187 4.187 0 011.47-.245c.392 0 .78.051 1.162.154.383.103.721.296 1.015.581.294.285.52.677.679 1.176.159.5.215 1.146.168 1.939h-5.418c0 .84.226 1.468.679 1.883.453.415 1.057.623 1.813.623.252 0 .502-.03.749-.091.247-.06.483-.133.707-.217a3.72 3.72 0 00.595-.28c.173-.103.306-.196.399-.28l.434.798zm-2.954-5.362c-.308 0-.6.033-.875.098a1.995 1.995 0 00-.728.329c-.21.154-.383.355-.518.602s-.222.553-.259.917h4.354c-.047-.616-.245-1.094-.595-1.435-.35-.34-.81-.511-1.379-.511zm6.048 4.858c.28.15.595.273.945.371.35.098.702.147 1.057.147.308 0 .597-.03.868-.091.27-.06.506-.159.707-.294.2-.135.36-.306.476-.511a1.45 1.45 0 00.175-.728c0-.383-.128-.695-.385-.938a3.824 3.824 0 00-.959-.644 17.73 17.73 0 00-1.246-.546 7.417 7.417 0 01-1.246-.63 3.498 3.498 0 01-.959-.889c-.257-.35-.385-.796-.385-1.337 0-.383.077-.728.231-1.036a2.24 2.24 0 01.651-.784c.28-.215.618-.38 1.015-.497a4.68 4.68 0 011.323-.175c.56 0 1.069.04 1.526.119.457.08.821.184 1.092.315l.028-.014V.49h.014l-.014.042v2.24h-1.036V1.274a7.635 7.635 0 00-.77-.14 6.788 6.788 0 00-.896-.056c-.308 0-.586.037-.833.112a2.08 2.08 0 00-.63.301 1.37 1.37 0 00-.399.441 1.08 1.08 0 00-.14.532c0 .364.128.667.385.91s.576.46.959.651.798.38 1.246.567c.448.187.863.404 1.246.651s.702.544.959.889.385.775.385 1.288c0 .42-.077.798-.231 1.134a2.494 2.494 0 01-.658.868 2.97 2.97 0 01-1.05.56c-.415.13-.884.196-1.407.196-.355 0-.69-.028-1.008-.084a6.883 6.883 0 01-1.589-.476 7.642 7.642 0 01-.497-.238l.014-.042V7.07h1.036v1.554zm13.706.504c-.168.15-.366.29-.595.42a4.39 4.39 0 01-.749.336c-.27.093-.553.166-.847.217-.294.051-.59.077-.889.077-.56 0-1.055-.086-1.484-.259a2.858 2.858 0 01-1.078-.742 3.234 3.234 0 01-.658-1.155 4.767 4.767 0 01-.224-1.512c0-.588.082-1.11.245-1.568.163-.457.399-.84.707-1.148a3.08 3.08 0 011.12-.707 4.187 4.187 0 011.47-.245c.392 0 .78.051 1.162.154.383.103.721.296 1.015.581.294.285.52.677.679 1.176.159.5.215 1.146.168 1.939h-5.418c0 .84.226 1.468.679 1.883.453.415 1.057.623 1.813.623.252 0 .502-.03.749-.091.247-.06.483-.133.707-.217a3.72 3.72 0 00.595-.28c.173-.103.306-.196.399-.28l.434.798zm-2.954-5.362c-.308 0-.6.033-.875.098a1.995 1.995 0 00-.728.329c-.21.154-.383.355-.518.602s-.222.553-.259.917h4.354c-.047-.616-.245-1.094-.595-1.435-.35-.34-.81-.511-1.379-.511zm11.158 9.044h-1.092V9.226h-.056c-.215.308-.49.544-.826.707-.336.163-.77.245-1.302.245-1.064 0-1.846-.296-2.345-.889-.5-.593-.749-1.514-.749-2.765 0-1.195.317-2.098.952-2.709.635-.611 1.577-.917 2.828-.917.55 0 1.064.047 1.54.14.476.093.826.191 1.05.294v9.478zm-3.108-3.57c1.11 0 1.783-.583 2.016-1.75V4.116a2.435 2.435 0 00-.735-.217 6.723 6.723 0 00-.973-.063c-.747 0-1.335.215-1.764.644-.43.43-.644 1.106-.644 2.03 0 .401.035.768.105 1.099.07.331.189.618.357.861.168.243.385.432.651.567.266.135.595.203.987.203zm9.38-6.23h1.988v4.774c0 .457.028.896.084 1.316h.938v.91h-1.862l-.042-1.19h-.056a2.938 2.938 0 01-.966.98c-.401.252-.887.378-1.456.378-.43 0-.796-.049-1.099-.147a1.556 1.556 0 01-.749-.511c-.196-.243-.34-.567-.434-.973-.093-.406-.14-.912-.14-1.519v-3.08h-.938V3.01h2.03v3.794c0 .383.016.726.049 1.029.033.303.1.56.203.77.103.21.254.369.455.476.2.107.469.161.805.161.485 0 .908-.159 1.267-.476.36-.317.632-.714.819-1.19V3.948h-.896V3.01zm10.724 6.118c-.168.15-.366.29-.595.42a4.39 4.39 0 01-.749.336c-.27.093-.553.166-.847.217-.294.051-.59.077-.889.077-.56 0-1.055-.086-1.484-.259a2.858 2.858 0 01-1.078-.742 3.234 3.234 0 01-.658-1.155 4.767 4.767 0 01-.224-1.512c0-.588.082-1.11.245-1.568.163-.457.399-.84.707-1.148a3.08 3.08 0 011.12-.707 4.187 4.187 0 011.47-.245c.392 0 .78.051 1.162.154.383.103.721.296 1.015.581.294.285.52.677.679 1.176.159.5.215 1.146.168 1.939h-5.418c0 .84.226 1.468.679 1.883.453.415 1.057.623 1.813.623.252 0 .502-.03.749-.091.247-.06.483-.133.707-.217a3.72 3.72 0 00.595-.28c.173-.103.306-.196.399-.28l.434.798zm-2.954-5.362c-.308 0-.6.033-.875.098a1.995 1.995 0 00-.728.329c-.21.154-.383.355-.518.602s-.222.553-.259.917h4.354c-.047-.616-.245-1.094-.595-1.435-.35-.34-.81-.511-1.379-.511zm5.25 1.694a14.051 14.051 0 00-.063-1.176 4.657 4.657 0 00-.049-.364h-.938v-.91h1.876l.126 1.134h.07c.093-.159.217-.315.371-.469A2.91 2.91 0 01196 2.954c.252-.075.518-.112.798-.112.43 0 .81.047 1.141.14.331.093.607.259.826.497.22.238.385.56.497.966.112.406.168.922.168 1.547v4.018h-1.092V6.202c0-.775-.126-1.358-.378-1.75-.252-.392-.71-.588-1.372-.588-.243 0-.478.049-.707.147a2.44 2.44 0 00-.623.385c-.187.159-.35.343-.49.553-.14.21-.243.432-.308.665v4.396h-1.078V5.46zm13.244-1.372a5.531 5.531 0 00-.693-.189 3.61 3.61 0 00-.735-.077c-.915 0-1.596.215-2.044.644-.448.43-.672 1.11-.672 2.044 0 .41.065.777.196 1.099.13.322.317.595.56.819.243.224.534.397.875.518.34.121.716.182 1.127.182.439 0 .866-.075 1.281-.224.415-.15.763-.345 1.043-.588l.49.812c-.13.112-.294.229-.49.35a4.837 4.837 0 01-1.533.602 4.962 4.962 0 01-1.015.098c-.607 0-1.141-.086-1.603-.259a3.045 3.045 0 01-1.155-.742 3.176 3.176 0 01-.7-1.162 4.525 4.525 0 01-.238-1.505c0-.588.082-1.11.245-1.568.163-.457.399-.84.707-1.148a3.08 3.08 0 011.12-.707 4.187 4.187 0 011.47-.245c.69 0 1.253.06 1.687.182.434.121.8.257 1.099.406l-.014.042v1.946h-1.008v-1.33zm9.66 5.04c-.168.15-.366.29-.595.42a4.39 4.39 0 01-.749.336c-.27.093-.553.166-.847.217-.294.051-.59.077-.889.077-.56 0-1.055-.086-1.484-.259a2.858 2.858 0 01-1.078-.742 3.234 3.234 0 01-.658-1.155 4.767 4.767 0 01-.224-1.512c0-.588.082-1.11.245-1.568.163-.457.399-.84.707-1.148a3.08 3.08 0 011.12-.707 4.187 4.187 0 011.47-.245c.392 0 .78.051 1.162.154.383.103.721.296 1.015.581.294.285.52.677.679 1.176.159.5.215 1.146.168 1.939h-5.418c0 .84.226 1.468.679 1.883.453.415 1.057.623 1.813.623.252 0 .502-.03.749-.091.247-.06.483-.133.707-.217a3.72 3.72 0 00.595-.28c.173-.103.306-.196.399-.28l.434.798zm-2.954-5.362c-.308 0-.6.033-.875.098a1.995 1.995 0 00-.728.329c-.21.154-.383.355-.518.602s-.222.553-.259.917h4.354c-.047-.616-.245-1.094-.595-1.435-.35-.34-.81-.511-1.379-.511z"/><path id="(){" fill="#7E7C7B" d="M223.328 12.978a6.964 6.964 0 01-1.757-.707 5.036 5.036 0 01-1.428-1.225c-.406-.504-.728-1.12-.966-1.848s-.357-1.591-.357-2.59c0-.99.121-1.855.364-2.597s.57-1.372.98-1.89c.41-.518.889-.933 1.435-1.246a6.005 6.005 0 011.729-.665l.35.882a7.086 7.086 0 00-1.512.623 3.928 3.928 0 00-1.183 1.022c-.331.425-.588.952-.77 1.582-.182.63-.273 1.393-.273 2.289 0 .905.11 1.678.329 2.317.22.64.509 1.171.868 1.596.36.425.76.756 1.204.994.443.238.889.404 1.337.497l-.35.966zm4.354-.966a4.965 4.965 0 001.337-.497 4.15 4.15 0 001.204-.994c.36-.425.649-.957.868-1.596.22-.64.329-1.412.329-2.317 0-.896-.091-1.659-.273-2.289-.182-.63-.439-1.157-.77-1.582a3.928 3.928 0 00-1.183-1.022 7.086 7.086 0 00-1.512-.623l.35-.882c.607.13 1.183.352 1.729.665a4.984 4.984 0 011.435 1.246c.41.518.737 1.148.98 1.89s.364 1.608.364 2.597c0 .999-.119 1.862-.357 2.59-.238.728-.56 1.344-.966 1.848a5.036 5.036 0 01-1.428 1.225 6.964 6.964 0 01-1.757.707l-.35-.966zm17.878-2.45c0-.401-.068-.749-.203-1.043a2.44 2.44 0 00-.504-.735c-.2-.196-.415-.34-.644-.434a1.641 1.641 0 00-.609-.14v-.98c.177 0 .38-.04.609-.119.229-.08.443-.21.644-.392.2-.182.369-.418.504-.707.135-.29.203-.649.203-1.078V2.506c0-.336.054-.644.161-.924a2.22 2.22 0 01.448-.728c.191-.205.42-.366.686-.483.266-.117.558-.175.875-.175h2.03v.98h-1.54c-.588 0-.996.14-1.225.42-.229.28-.343.695-.343 1.246V4.2c0 .383-.07.723-.21 1.022a2.7 2.7 0 01-1.106 1.225c-.205.117-.373.184-.504.203v.084c.121.019.285.091.49.217.205.126.406.299.602.518.196.22.366.478.511.777.145.299.217.63.217.994v1.344c0 .57.121.99.364 1.26s.649.406 1.218.406h1.526v.98h-2.03c-.653 0-1.178-.194-1.575-.581-.397-.387-.595-.959-.595-1.715V9.562z"/><path id="yield" fill="#1C85B5" d="M20.034 25.932h.532l1.736-5.922h1.134l-1.946 6.286c-.103.327-.208.698-.315 1.113a5.2 5.2 0 01-.455 1.169 2.807 2.807 0 01-.798.924c-.336.252-.775.378-1.316.378-.121 0-.25-.014-.385-.042a3.856 3.856 0 01-.399-.105 2.574 2.574 0 01-.364-.147.977.977 0 01-.252-.168l.392-1.008c.056.047.133.093.231.14.098.047.205.086.322.119.117.033.231.06.343.084.112.023.205.035.28.035.7 0 1.176-.593 1.428-1.778h-.938l-2.94-7h1.26l2.45 5.922zm5.516 1.078v-.938h2.436v-5.124H25.55v-.938h3.556v6.062h2.38v.938H25.55zm2.058-8.988c0-.252.084-.469.252-.651a.838.838 0 01.644-.273c.27 0 .497.091.679.273a.889.889 0 01.273.651.806.806 0 01-.273.616.963.963 0 01-.679.252.872.872 0 01-.644-.252.838.838 0 01-.252-.616zm12.278 8.106c-.168.15-.366.29-.595.42a4.39 4.39 0 01-.749.336c-.27.093-.553.166-.847.217-.294.051-.59.077-.889.077-.56 0-1.055-.086-1.484-.259a2.858 2.858 0 01-1.078-.742 3.234 3.234 0 01-.658-1.155 4.767 4.767 0 01-.224-1.512c0-.588.082-1.11.245-1.568.163-.457.399-.84.707-1.148a3.08 3.08 0 011.12-.707 4.187 4.187 0 011.47-.245c.392 0 .78.051 1.162.154.383.103.721.296 1.015.581.294.285.52.677.679 1.176.159.5.215 1.146.168 1.939H34.51c0 .84.226 1.468.679 1.883.453.415 1.057.623 1.813.623.252 0 .502-.03.749-.091.247-.06.483-.133.707-.217a3.72 3.72 0 00.595-.28c.173-.103.306-.196.399-.28l.434.798zm-2.954-5.362c-.308 0-.6.033-.875.098a1.995 1.995 0 00-.728.329c-.21.154-.383.355-.518.602s-.222.553-.259.917h4.354c-.047-.616-.245-1.094-.595-1.435-.35-.34-.81-.511-1.379-.511zm5.614-3.556h2.324v7.448c0 .57.096.97.287 1.204.191.233.474.35.847.35.261 0 .511-.047.749-.14.238-.093.502-.252.791-.476l.504.77c-.15.13-.313.247-.49.35a3.638 3.638 0 01-1.106.42 2.963 2.963 0 01-1.442-.077 1.579 1.579 0 01-.679-.427 1.897 1.897 0 01-.413-.777c-.093-.322-.14-.721-.14-1.197v-6.51h-1.232v-.938zm11.62 0h2.268v7.406c0 .084.005.189.014.315a15.6 15.6 0 00.084.812c.019.135.037.254.056.357h.938v.91h-1.862l-.14-1.078h-.056c-.205.355-.511.651-.917.889s-.875.357-1.407.357c-1.055 0-1.832-.296-2.331-.889-.5-.593-.749-1.514-.749-2.765 0-.588.084-1.108.252-1.561.168-.453.408-.83.721-1.134a3.118 3.118 0 011.127-.693 4.298 4.298 0 011.47-.238c.196 0 .371.005.525.014.154.01.296.023.427.042.13.019.254.044.371.077.117.033.245.068.385.105v-1.988h-1.176v-.938zm-.84 9.03c.57 0 1.017-.147 1.344-.441.327-.294.55-.735.672-1.323v-3.248a2.168 2.168 0 00-.693-.308c-.257-.065-.595-.098-1.015-.098-.747 0-1.335.217-1.764.651-.43.434-.644 1.118-.644 2.051 0 .383.035.74.105 1.071.07.331.187.618.35.861.163.243.38.434.651.574.27.14.602.21.994.21z"/><path id="1" fill="#A7333A" d="M67.858 26.002h2.198v-7.364l-2.24 1.568-.546-.798 3.08-2.198h.784v8.792h2.156v1.008h-5.432z"/><path id=";" fill="#7E7C7B" d="M77.686 26.24c0-.28.091-.506.273-.679.182-.173.418-.259.707-.259.355 0 .63.124.826.371.196.247.294.595.294 1.043a2.36 2.36 0 01-.637 1.659 2.465 2.465 0 01-.588.462c-.21.117-.404.203-.581.259l-.35-.546c.336-.13.625-.317.868-.56.243-.243.364-.537.364-.882-.13.028-.233.042-.308.042-.27 0-.483-.077-.637-.231-.154-.154-.231-.38-.231-.679zm.126-5.502c0-.299.084-.53.252-.693.168-.163.392-.245.672-.245.299 0 .532.082.7.245.168.163.252.394.252.693 0 .27-.084.495-.252.672-.168.177-.401.266-.7.266-.28 0-.504-.089-.672-.266a.938.938 0 01-.252-.672z"/><path id="yield" fill="#1C85B5" d="M20.034 42.932h.532l1.736-5.922h1.134l-1.946 6.286c-.103.327-.208.698-.315 1.113a5.2 5.2 0 01-.455 1.169 2.807 2.807 0 01-.798.924c-.336.252-.775.378-1.316.378-.121 0-.25-.014-.385-.042a3.856 3.856 0 01-.399-.105 2.574 2.574 0 01-.364-.147.977.977 0 01-.252-.168l.392-1.008c.056.047.133.093.231.14.098.047.205.086.322.119.117.033.231.06.343.084.112.023.205.035.28.035.7 0 1.176-.593 1.428-1.778h-.938l-2.94-7h1.26l2.45 5.922zm5.516 1.078v-.938h2.436v-5.124H25.55v-.938h3.556v6.062h2.38v.938H25.55zm2.058-8.988c0-.252.084-.469.252-.651a.838.838 0 01.644-.273c.27 0 .497.091.679.273a.889.889 0 01.273.651.806.806 0 01-.273.616.963.963 0 01-.679.252.872.872 0 01-.644-.252.838.838 0 01-.252-.616zm12.278 8.106c-.168.15-.366.29-.595.42a4.39 4.39 0 01-.749.336c-.27.093-.553.166-.847.217-.294.051-.59.077-.889.077-.56 0-1.055-.086-1.484-.259a2.858 2.858 0 01-1.078-.742 3.234 3.234 0 01-.658-1.155 4.767 4.767 0 01-.224-1.512c0-.588.082-1.11.245-1.568.163-.457.399-.84.707-1.148a3.08 3.08 0 011.12-.707 4.187 4.187 0 011.47-.245c.392 0 .78.051 1.162.154.383.103.721.296 1.015.581.294.285.52.677.679 1.176.159.5.215 1.146.168 1.939H34.51c0 .84.226 1.468.679 1.883.453.415 1.057.623 1.813.623.252 0 .502-.03.749-.091.247-.06.483-.133.707-.217a3.72 3.72 0 00.595-.28c.173-.103.306-.196.399-.28l.434.798zm-2.954-5.362c-.308 0-.6.033-.875.098a1.995 1.995 0 00-.728.329c-.21.154-.383.355-.518.602s-.222.553-.259.917h4.354c-.047-.616-.245-1.094-.595-1.435-.35-.34-.81-.511-1.379-.511zm5.614-3.556h2.324v7.448c0 .57.096.97.287 1.204.191.233.474.35.847.35.261 0 .511-.047.749-.14.238-.093.502-.252.791-.476l.504.77c-.15.13-.313.247-.49.35a3.638 3.638 0 01-1.106.42 2.963 2.963 0 01-1.442-.077 1.579 1.579 0 01-.679-.427 1.897 1.897 0 01-.413-.777c-.093-.322-.14-.721-.14-1.197v-6.51h-1.232v-.938zm11.62 0h2.268v7.406c0 .084.005.189.014.315a15.6 15.6 0 00.084.812c.019.135.037.254.056.357h.938v.91h-1.862l-.14-1.078h-.056c-.205.355-.511.651-.917.889s-.875.357-1.407.357c-1.055 0-1.832-.296-2.331-.889-.5-.593-.749-1.514-.749-2.765 0-.588.084-1.108.252-1.561.168-.453.408-.83.721-1.134a3.118 3.118 0 011.127-.693 4.298 4.298 0 011.47-.238c.196 0 .371.005.525.014.154.01.296.023.427.042.13.019.254.044.371.077.117.033.245.068.385.105v-1.988h-1.176v-.938zm-.84 9.03c.57 0 1.017-.147 1.344-.441.327-.294.55-.735.672-1.323v-3.248a2.168 2.168 0 00-.693-.308c-.257-.065-.595-.098-1.015-.098-.747 0-1.335.217-1.764.651-.43.434-.644 1.118-.644 2.051 0 .383.035.74.105 1.071.07.331.187.618.35.861.163.243.38.434.651.574.27.14.602.21.994.21z"/><path id="2" fill="#A7333A" d="M73.08 36.688c0 .859-.406 1.815-1.218 2.87-.812 1.055-1.946 2.203-3.402 3.444h4.928v1.008h-6.216v-1.008c.177-.168.42-.387.728-.658.308-.27.64-.572.994-.903a29.01 29.01 0 001.085-1.071c.369-.383.702-.775 1.001-1.176.299-.401.541-.803.728-1.204a2.75 2.75 0 00.28-1.162c0-.56-.147-1.001-.441-1.323-.294-.322-.735-.483-1.323-.483-.504 0-.929.056-1.274.168a3.101 3.101 0 00-.938.49l-.476-.77c.42-.299.866-.518 1.337-.658s.987-.21 1.547-.21c.877 0 1.54.238 1.988.714.448.476.672 1.12.672 1.932z"/><path id=";" fill="#7E7C7B" d="M77.686 43.24c0-.28.091-.506.273-.679.182-.173.418-.259.707-.259.355 0 .63.124.826.371.196.247.294.595.294 1.043a2.36 2.36 0 01-.637 1.659 2.465 2.465 0 01-.588.462c-.21.117-.404.203-.581.259l-.35-.546c.336-.13.625-.317.868-.56.243-.243.364-.537.364-.882-.13.028-.233.042-.308.042-.27 0-.483-.077-.637-.231-.154-.154-.231-.38-.231-.679zm.126-5.502c0-.299.084-.53.252-.693.168-.163.392-.245.672-.245.299 0 .532.082.7.245.168.163.252.394.252.693 0 .27-.084.495-.252.672-.168.177-.401.266-.7.266-.28 0-.504-.089-.672-.266a.938.938 0 01-.252-.672z"/><path id="return" fill="#1C85B5" d="M16.604 61.01v-.938h1.89v-5.124h-1.89v-.938h2.618l.224.91h.07c.317-.29.672-.537 1.064-.742.392-.205.859-.308 1.4-.308.317 0 .572.06.763.182.191.121.34.299.448.532.107.233.18.516.217.847.037.331.056.707.056 1.127l-.98.014c0-.597-.058-1.036-.175-1.316-.117-.28-.329-.42-.637-.42-.29 0-.55.042-.784.126a2.565 2.565 0 00-.609.308c-.173.121-.32.243-.441.364s-.21.224-.266.308v4.13h2.688v.938h-5.656zm14.882-.882c-.168.15-.366.29-.595.42a4.39 4.39 0 01-.749.336c-.27.093-.553.166-.847.217-.294.051-.59.077-.889.077-.56 0-1.055-.086-1.484-.259a2.858 2.858 0 01-1.078-.742 3.234 3.234 0 01-.658-1.155 4.767 4.767 0 01-.224-1.512c0-.588.082-1.11.245-1.568.163-.457.399-.84.707-1.148a3.08 3.08 0 011.12-.707 4.187 4.187 0 011.47-.245c.392 0 .78.051 1.162.154.383.103.721.296 1.015.581.294.285.52.677.679 1.176.159.5.215 1.146.168 1.939H26.11c0 .84.226 1.468.679 1.883.453.415 1.057.623 1.813.623.252 0 .502-.03.749-.091.247-.06.483-.133.707-.217a3.72 3.72 0 00.595-.28c.173-.103.306-.196.399-.28l.434.798zm-2.954-5.362c-.308 0-.6.033-.875.098a1.995 1.995 0 00-.728.329c-.21.154-.383.355-.518.602s-.222.553-.259.917h4.354c-.047-.616-.245-1.094-.595-1.435-.35-.34-.81-.511-1.379-.511zm4.382-.756h1.666v-1.386l1.092-.308v1.694h3.738v.938h-3.738v3.304c0 .681.166 1.185.497 1.512.331.327.805.49 1.421.49.42 0 .786-.08 1.099-.238.313-.159.595-.331.847-.518l.364.826a3.938 3.938 0 01-1.169.63 4.182 4.182 0 01-1.393.238 3.41 3.41 0 01-1.057-.161 2.426 2.426 0 01-.875-.497 2.38 2.38 0 01-.602-.861c-.15-.35-.224-.768-.224-1.253v-3.472h-1.666v-.938zm13.048 0h1.988v4.774c0 .457.028.896.084 1.316h.938v.91H47.11l-.042-1.19h-.056a2.938 2.938 0 01-.966.98c-.401.252-.887.378-1.456.378-.43 0-.796-.049-1.099-.147a1.556 1.556 0 01-.749-.511c-.196-.243-.34-.567-.434-.973-.093-.406-.14-.912-.14-1.519v-3.08h-.938v-.938h2.03v3.794c0 .383.016.726.049 1.029.033.303.1.56.203.77.103.21.254.369.455.476.2.107.469.161.805.161.485 0 .908-.159 1.267-.476.36-.317.632-.714.819-1.19v-3.626h-.896v-.938zm4.242 7v-.938h1.89v-5.124h-1.89v-.938h2.618l.224.91h.07c.317-.29.672-.537 1.064-.742.392-.205.859-.308 1.4-.308.317 0 .572.06.763.182.191.121.34.299.448.532.107.233.18.516.217.847.037.331.056.707.056 1.127l-.98.014c0-.597-.058-1.036-.175-1.316-.117-.28-.329-.42-.637-.42-.29 0-.55.042-.784.126a2.565 2.565 0 00-.609.308c-.173.121-.32.243-.441.364s-.21.224-.266.308v4.13h2.688v.938h-5.656zm8.778-4.55a14.05 14.05 0 00-.063-1.176 4.657 4.657 0 00-.049-.364h-.938v-.91h1.876l.126 1.134h.07c.093-.159.217-.315.371-.469a2.91 2.91 0 011.225-.721c.252-.075.518-.112.798-.112.43 0 .81.047 1.141.14.331.093.607.259.826.497.22.238.385.56.497.966.112.406.168.922.168 1.547v4.018h-1.092v-3.808c0-.775-.126-1.358-.378-1.75-.252-.392-.71-.588-1.372-.588-.243 0-.478.049-.707.147a2.44 2.44 0 00-.623.385c-.187.159-.35.343-.49.553-.14.21-.243.432-.308.665v4.396h-1.078v-4.55z"/><path id="3" fill="#A7333A" d="M77.952 60.212c.373 0 .716-.049 1.029-.147a2.65 2.65 0 00.819-.413 1.9 1.9 0 00.546-.644c.13-.252.196-.532.196-.84 0-.644-.226-1.104-.679-1.379-.453-.275-1.062-.413-1.827-.413h-.896v-.672l2.758-3.486h-4.186V51.21h5.53v1.008l-2.758 3.234h.224c.43 0 .821.06 1.176.182.355.121.663.294.924.518.261.224.464.495.609.812.145.317.217.677.217 1.078 0 .504-.098.952-.294 1.344a2.89 2.89 0 01-.798.987c-.336.266-.73.467-1.183.602a5.034 5.034 0 01-1.449.203c-.476 0-.889-.035-1.239-.105-.35-.07-.67-.156-.959-.259l.28-.98c.243.112.527.203.854.273a5.3 5.3 0 001.106.105z"/><path id=";}" fill="#7E7C7B" d="M86.086 60.24c0-.28.091-.506.273-.679.182-.173.418-.259.707-.259.355 0 .63.124.826.371.196.247.294.595.294 1.043a2.36 2.36 0 01-.637 1.659 2.465 2.465 0 01-.588.462c-.21.117-.404.203-.581.259l-.35-.546c.336-.13.625-.317.868-.56.243-.243.364-.537.364-.882-.13.028-.233.042-.308.042-.27 0-.483-.077-.637-.231-.154-.154-.231-.38-.231-.679zm.126-5.502c0-.299.084-.53.252-.693.168-.163.392-.245.672-.245.299 0 .532.082.7.245.168.163.252.394.252.693 0 .27-.084.495-.252.672-.168.177-.401.266-.7.266-.28 0-.504-.089-.672-.266a.938.938 0 01-.252-.672zM4.2 78.934c0 .756-.198 1.328-.595 1.715-.397.387-.922.581-1.575.581H0v-.98h1.526c.57 0 .975-.135 1.218-.406.243-.27.364-.69.364-1.26V77.24c0-.364.07-.695.21-.994.14-.299.308-.558.504-.777.196-.22.397-.392.602-.518.205-.126.373-.198.504-.217v-.084c-.13-.019-.299-.086-.504-.203a2.7 2.7 0 01-1.106-1.225c-.14-.299-.21-.64-.21-1.022v-1.358c0-.55-.114-.966-.343-1.246-.229-.28-.637-.42-1.225-.42H0v-.98h2.03c.317 0 .609.058.875.175.266.117.495.278.686.483.191.205.34.448.448.728.107.28.161.588.161.924v1.428c0 .43.068.789.203 1.078.135.29.303.525.504.707.2.182.415.313.644.392.229.08.432.119.609.119v.98c-.177 0-.38.047-.609.14a2.011 2.011 0 00-.644.434 2.44 2.44 0 00-.504.735c-.135.294-.203.642-.203 1.043v1.372z"/></g><path id="Line" fill="#C06334" fill-rule="nonzero" d="M286.5 42.5v6h32v2h-32v6l-14-7 14-7z"/><text id="{value:-1,-done:-fal" fill="#AF6E24" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="326" y="54">{value: 1, done: false}</tspan></text></g></g></svg> \ No newline at end of file +<<<<<<< HEAD +<svg xmlns="http://www.w3.org/2000/svg" width="519" height="150" viewBox="0 0 519 150"><defs><style>@import url(https://fonts.googleapis.com/css?family=Open+Sans:bold,italic,bolditalic%7CPT+Mono);@font-face{font-family:'PT Mono';font-weight:700;font-style:normal;src:local('PT MonoBold'),url(/font/PTMonoBold.woff2) format('woff2'),url(/font/PTMonoBold.woff) format('woff'),url(/font/PTMonoBold.ttf) format('truetype')}</style></defs><g id="generator" fill="none" fill-rule="evenodd" stroke="none" stroke-width="1"><g id="generateSequence-2.svg"><path id="Rectangle-1" fill="#FBF2EC" stroke="#DBAF88" stroke-width="2" d="M26 17h271v110H26z"/><g id="function*-generateSe" fill-rule="nonzero" transform="translate(40.12 26.99)"><path id="function" fill="#1C85B5" d="M.112 10.01v-.938h1.666V3.948H.112V3.01h1.666v-.392c0-.877.229-1.512.686-1.904.457-.392 1.11-.588 1.96-.588.308 0 .583.019.826.056.243.037.504.112.784.224l-.252.91a2.862 2.862 0 00-.7-.203 4.295 4.295 0 00-.616-.049c-.616 0-1.036.152-1.26.455-.224.303-.336.8-.336 1.491h2.898v.938H2.87v5.124h2.898v.938H.112zm12.25-7h1.988v4.774c0 .457.028.896.084 1.316h.938v.91H13.51l-.042-1.19h-.056a2.938 2.938 0 01-.966.98c-.401.252-.887.378-1.456.378-.43 0-.796-.049-1.099-.147a1.556 1.556 0 01-.749-.511c-.196-.243-.34-.567-.434-.973-.093-.406-.14-.912-.14-1.519v-3.08H7.63V3.01h2.03v3.794c0 .383.016.726.049 1.029.033.303.1.56.203.77.103.21.254.369.455.476.2.107.469.161.805.161.485 0 .908-.159 1.267-.476.36-.317.632-.714.819-1.19V3.948h-.896V3.01zm4.62 2.45a14.05 14.05 0 00-.063-1.176 4.657 4.657 0 00-.049-.364h-.938v-.91h1.876l.126 1.134h.07c.093-.159.217-.315.371-.469a2.91 2.91 0 011.225-.721c.252-.075.518-.112.798-.112.43 0 .81.047 1.141.14.331.093.607.259.826.497.22.238.385.56.497.966.112.406.168.922.168 1.547v4.018h-1.092V6.202c0-.775-.126-1.358-.378-1.75-.252-.392-.71-.588-1.372-.588-.243 0-.478.049-.707.147a2.44 2.44 0 00-.623.385c-.187.159-.35.343-.49.553-.14.21-.243.432-.308.665v4.396h-1.078V5.46zm13.244-1.372a5.531 5.531 0 00-.693-.189 3.61 3.61 0 00-.735-.077c-.915 0-1.596.215-2.044.644-.448.43-.672 1.11-.672 2.044 0 .41.065.777.196 1.099.13.322.317.595.56.819.243.224.534.397.875.518.34.121.716.182 1.127.182.439 0 .866-.075 1.281-.224.415-.15.763-.345 1.043-.588l.49.812c-.13.112-.294.229-.49.35a4.837 4.837 0 01-1.533.602 4.962 4.962 0 01-1.015.098c-.607 0-1.141-.086-1.603-.259a3.045 3.045 0 01-1.155-.742 3.176 3.176 0 01-.7-1.162 4.525 4.525 0 01-.238-1.505c0-.588.082-1.11.245-1.568.163-.457.399-.84.707-1.148a3.08 3.08 0 011.12-.707 4.187 4.187 0 011.47-.245c.69 0 1.253.06 1.687.182.434.121.8.257 1.099.406l-.014.042v1.946h-1.008v-1.33zm2.688-1.078h1.666V1.624l1.092-.308V3.01h3.738v.938h-3.738v3.304c0 .681.166 1.185.497 1.512.331.327.805.49 1.421.49.42 0 .786-.08 1.099-.238.313-.159.595-.331.847-.518l.364.826a3.938 3.938 0 01-1.169.63 4.182 4.182 0 01-1.393.238 3.41 3.41 0 01-1.057-.161 2.426 2.426 0 01-.875-.497 2.38 2.38 0 01-.602-.861c-.15-.35-.224-.768-.224-1.253V3.948h-1.666V3.01zm9.436 7v-.938h2.436V3.948H42.35V3.01h3.556v6.062h2.38v.938H42.35zm2.058-8.988c0-.252.084-.469.252-.651a.838.838 0 01.644-.273c.27 0 .497.091.679.273a.889.889 0 01.273.651.806.806 0 01-.273.616.963.963 0 01-.679.252.872.872 0 01-.644-.252.838.838 0 01-.252-.616zm5.67 5.488c0-1.13.294-2.023.882-2.681.588-.658 1.428-.987 2.52-.987.588 0 1.094.096 1.519.287.425.191.777.45 1.057.777.28.327.488.714.623 1.162.135.448.203.929.203 1.442 0 .56-.075 1.066-.224 1.519-.15.453-.369.838-.658 1.155-.29.317-.646.562-1.071.735a3.82 3.82 0 01-1.449.259c-.579 0-1.083-.096-1.512-.287a2.967 2.967 0 01-1.064-.777 3.168 3.168 0 01-.623-1.162 4.963 4.963 0 01-.203-1.442zm1.162 0c0 .327.04.653.119.98.08.327.208.62.385.882.177.261.408.471.693.63.285.159.632.238 1.043.238.747 0 1.309-.231 1.687-.693.378-.462.567-1.141.567-2.037 0-.336-.04-.665-.119-.987a2.608 2.608 0 00-.392-.875 2.066 2.066 0 00-.7-.63c-.285-.159-.632-.238-1.043-.238-.747 0-1.307.229-1.68.686-.373.457-.56 1.139-.56 2.044zm7.742-1.05a14.05 14.05 0 00-.063-1.176 4.657 4.657 0 00-.049-.364h-.938v-.91h1.876l.126 1.134h.07c.093-.159.217-.315.371-.469a2.91 2.91 0 011.225-.721c.252-.075.518-.112.798-.112.43 0 .81.047 1.141.14.331.093.607.259.826.497.22.238.385.56.497.966.112.406.168.922.168 1.547v4.018h-1.092V6.202c0-.775-.126-1.358-.378-1.75-.252-.392-.71-.588-1.372-.588-.243 0-.478.049-.707.147a2.44 2.44 0 00-.623.385c-.187.159-.35.343-.49.553-.14.21-.243.432-.308.665v4.396h-1.078V5.46z"/><path id="*" fill="#DBAF88" d="M69.062.014l1.246 2.45L71.512 0l.966.518-1.694 2.366 2.842-.21v1.134l-2.758-.224 1.624 2.254-.938.546-1.302-2.506-1.232 2.506-1.008-.546 1.694-2.254-2.772.224V2.674l2.772.238L68.096.56z"/><path id="generateSequence" fill="#181717" d="M90.216 10.36c0 .439-.084.824-.252 1.155a2.269 2.269 0 01-.693.819 3.127 3.127 0 01-1.029.483 4.81 4.81 0 01-1.274.161c-.55 0-1.031-.056-1.442-.168a4.29 4.29 0 01-1.064-.434l.532-.994c.084.075.194.147.329.217s.292.135.469.196c.177.06.366.11.567.147.2.037.399.056.595.056.41 0 .754-.037 1.029-.112.275-.075.497-.191.665-.35.168-.159.29-.364.364-.616a3.29 3.29 0 00.112-.924v-.784h-.056a2.18 2.18 0 01-.826.714c-.336.168-.77.252-1.302.252-1.064 0-1.846-.296-2.345-.889-.5-.593-.749-1.514-.749-2.765 0-1.195.317-2.098.952-2.709.635-.611 1.577-.917 2.828-.917.579 0 1.071.04 1.477.119.406.08.777.18 1.113.301v7.042zm-3.122-1.12c.57 0 1.017-.147 1.344-.441.327-.294.555-.744.686-1.351V4.13c-.41-.196-.985-.294-1.722-.294-.747 0-1.335.22-1.764.658-.43.439-.644 1.11-.644 2.016 0 .401.037.768.112 1.099.075.331.194.618.357.861.163.243.378.432.644.567.266.135.595.203.987.203zm11.592-.112c-.168.15-.366.29-.595.42a4.39 4.39 0 01-.749.336c-.27.093-.553.166-.847.217-.294.051-.59.077-.889.077-.56 0-1.055-.086-1.484-.259a2.858 2.858 0 01-1.078-.742 3.234 3.234 0 01-.658-1.155 4.767 4.767 0 01-.224-1.512c0-.588.082-1.11.245-1.568.163-.457.399-.84.707-1.148a3.08 3.08 0 011.12-.707 4.187 4.187 0 011.47-.245c.392 0 .78.051 1.162.154.383.103.721.296 1.015.581.294.285.52.677.679 1.176.159.5.215 1.146.168 1.939H93.31c0 .84.226 1.468.679 1.883.453.415 1.057.623 1.813.623.252 0 .502-.03.749-.091.247-.06.483-.133.707-.217a3.72 3.72 0 00.595-.28c.173-.103.306-.196.399-.28l.434.798zm-2.954-5.362c-.308 0-.6.033-.875.098a1.995 1.995 0 00-.728.329c-.21.154-.383.355-.518.602s-.222.553-.259.917h4.354c-.047-.616-.245-1.094-.595-1.435-.35-.34-.81-.511-1.379-.511zm5.25 1.694a14.051 14.051 0 00-.063-1.176 4.657 4.657 0 00-.049-.364h-.938v-.91h1.876l.126 1.134h.07c.093-.159.217-.315.371-.469a2.91 2.91 0 011.225-.721c.252-.075.518-.112.798-.112.43 0 .81.047 1.141.14.331.093.607.259.826.497.22.238.385.56.497.966.112.406.168.922.168 1.547v4.018h-1.092V6.202c0-.775-.126-1.358-.378-1.75-.252-.392-.71-.588-1.372-.588-.243 0-.478.049-.707.147a2.44 2.44 0 00-.623.385c-.187.159-.35.343-.49.553-.14.21-.243.432-.308.665v4.396h-1.078V5.46zm14.504 3.668c-.168.15-.366.29-.595.42a4.39 4.39 0 01-.749.336c-.27.093-.553.166-.847.217-.294.051-.59.077-.889.077-.56 0-1.055-.086-1.484-.259a2.858 2.858 0 01-1.078-.742 3.234 3.234 0 01-.658-1.155 4.767 4.767 0 01-.224-1.512c0-.588.082-1.11.245-1.568.163-.457.399-.84.707-1.148a3.08 3.08 0 011.12-.707 4.187 4.187 0 011.47-.245c.392 0 .78.051 1.162.154.383.103.721.296 1.015.581.294.285.52.677.679 1.176.159.5.215 1.146.168 1.939h-5.418c0 .84.226 1.468.679 1.883.453.415 1.057.623 1.813.623.252 0 .502-.03.749-.091.247-.06.483-.133.707-.217a3.72 3.72 0 00.595-.28c.173-.103.306-.196.399-.28l.434.798zm-2.954-5.362c-.308 0-.6.033-.875.098a1.995 1.995 0 00-.728.329c-.21.154-.383.355-.518.602s-.222.553-.259.917h4.354c-.047-.616-.245-1.094-.595-1.435-.35-.34-.81-.511-1.379-.511zm4.872 6.244v-.938h1.89V3.948h-1.89V3.01h2.618l.224.91h.07c.317-.29.672-.537 1.064-.742.392-.205.859-.308 1.4-.308.317 0 .572.06.763.182.191.121.34.299.448.532.107.233.18.516.217.847.037.331.056.707.056 1.127l-.98.014c0-.597-.058-1.036-.175-1.316-.117-.28-.329-.42-.637-.42-.29 0-.55.042-.784.126a2.565 2.565 0 00-.609.308c-.173.121-.32.243-.441.364s-.21.224-.266.308v4.13h2.688v.938h-5.656zm8.988-6.454a4.447 4.447 0 011.358-.504 7.423 7.423 0 011.484-.154c.476 0 .866.075 1.169.224.303.15.541.343.714.581.173.238.29.509.35.812.06.303.091.609.091.917 0 .355-.01.733-.028 1.134-.019.401-.033.803-.042 1.204 0 .467.028.91.084 1.33h.938v.91h-1.862l-.126-1.05h-.07c-.056.084-.14.191-.252.322-.112.13-.259.259-.441.385a2.749 2.749 0 01-1.589.469c-.69 0-1.237-.177-1.638-.532-.401-.355-.602-.84-.602-1.456 0-.476.105-.873.315-1.19.21-.317.511-.56.903-.728.392-.168.866-.266 1.421-.294a9.544 9.544 0 011.869.112c.047-.43.054-.786.021-1.071-.033-.285-.107-.511-.224-.679a.938.938 0 00-.49-.357 2.482 2.482 0 00-.777-.105c-.42 0-.821.058-1.204.175-.383.117-.723.236-1.022.357l-.35-.812zm2.058 5.642c.261 0 .504-.042.728-.126a2.22 2.22 0 00.588-.322 2.133 2.133 0 00.672-.868v-.98a7.92 7.92 0 00-1.344-.126c-.41 0-.765.044-1.064.133-.299.089-.532.226-.7.413-.168.187-.252.43-.252.728 0 .308.105.576.315.805.21.229.562.343 1.057.343zm5.264-6.188h1.666V1.624l1.092-.308V3.01h3.738v.938h-3.738v3.304c0 .681.166 1.185.497 1.512.331.327.805.49 1.421.49.42 0 .786-.08 1.099-.238.313-.159.595-.331.847-.518l.364.826a3.938 3.938 0 01-1.169.63 4.182 4.182 0 01-1.393.238 3.41 3.41 0 01-1.057-.161 2.426 2.426 0 01-.875-.497 2.38 2.38 0 01-.602-.861c-.15-.35-.224-.768-.224-1.253V3.948h-1.666V3.01zm15.372 6.118c-.168.15-.366.29-.595.42a4.39 4.39 0 01-.749.336c-.27.093-.553.166-.847.217-.294.051-.59.077-.889.077-.56 0-1.055-.086-1.484-.259a2.858 2.858 0 01-1.078-.742 3.234 3.234 0 01-.658-1.155 4.767 4.767 0 01-.224-1.512c0-.588.082-1.11.245-1.568.163-.457.399-.84.707-1.148a3.08 3.08 0 011.12-.707 4.187 4.187 0 011.47-.245c.392 0 .78.051 1.162.154.383.103.721.296 1.015.581.294.285.52.677.679 1.176.159.5.215 1.146.168 1.939h-5.418c0 .84.226 1.468.679 1.883.453.415 1.057.623 1.813.623.252 0 .502-.03.749-.091.247-.06.483-.133.707-.217a3.72 3.72 0 00.595-.28c.173-.103.306-.196.399-.28l.434.798zm-2.954-5.362c-.308 0-.6.033-.875.098a1.995 1.995 0 00-.728.329c-.21.154-.383.355-.518.602s-.222.553-.259.917h4.354c-.047-.616-.245-1.094-.595-1.435-.35-.34-.81-.511-1.379-.511zm6.048 4.858c.28.15.595.273.945.371.35.098.702.147 1.057.147.308 0 .597-.03.868-.091.27-.06.506-.159.707-.294.2-.135.36-.306.476-.511a1.45 1.45 0 00.175-.728c0-.383-.128-.695-.385-.938a3.824 3.824 0 00-.959-.644 17.73 17.73 0 00-1.246-.546 7.417 7.417 0 01-1.246-.63 3.498 3.498 0 01-.959-.889c-.257-.35-.385-.796-.385-1.337 0-.383.077-.728.231-1.036a2.24 2.24 0 01.651-.784c.28-.215.618-.38 1.015-.497a4.68 4.68 0 011.323-.175c.56 0 1.069.04 1.526.119.457.08.821.184 1.092.315l.028-.014V.49h.014l-.014.042v2.24h-1.036V1.274a7.635 7.635 0 00-.77-.14 6.788 6.788 0 00-.896-.056c-.308 0-.586.037-.833.112a2.08 2.08 0 00-.63.301 1.37 1.37 0 00-.399.441 1.08 1.08 0 00-.14.532c0 .364.128.667.385.91s.576.46.959.651.798.38 1.246.567c.448.187.863.404 1.246.651s.702.544.959.889.385.775.385 1.288c0 .42-.077.798-.231 1.134a2.494 2.494 0 01-.658.868 2.97 2.97 0 01-1.05.56c-.415.13-.884.196-1.407.196-.355 0-.69-.028-1.008-.084a6.883 6.883 0 01-1.589-.476 7.642 7.642 0 01-.497-.238l.014-.042V7.07h1.036v1.554zm13.706.504c-.168.15-.366.29-.595.42a4.39 4.39 0 01-.749.336c-.27.093-.553.166-.847.217-.294.051-.59.077-.889.077-.56 0-1.055-.086-1.484-.259a2.858 2.858 0 01-1.078-.742 3.234 3.234 0 01-.658-1.155 4.767 4.767 0 01-.224-1.512c0-.588.082-1.11.245-1.568.163-.457.399-.84.707-1.148a3.08 3.08 0 011.12-.707 4.187 4.187 0 011.47-.245c.392 0 .78.051 1.162.154.383.103.721.296 1.015.581.294.285.52.677.679 1.176.159.5.215 1.146.168 1.939h-5.418c0 .84.226 1.468.679 1.883.453.415 1.057.623 1.813.623.252 0 .502-.03.749-.091.247-.06.483-.133.707-.217a3.72 3.72 0 00.595-.28c.173-.103.306-.196.399-.28l.434.798zm-2.954-5.362c-.308 0-.6.033-.875.098a1.995 1.995 0 00-.728.329c-.21.154-.383.355-.518.602s-.222.553-.259.917h4.354c-.047-.616-.245-1.094-.595-1.435-.35-.34-.81-.511-1.379-.511zm11.158 9.044h-1.092V9.226h-.056c-.215.308-.49.544-.826.707-.336.163-.77.245-1.302.245-1.064 0-1.846-.296-2.345-.889-.5-.593-.749-1.514-.749-2.765 0-1.195.317-2.098.952-2.709.635-.611 1.577-.917 2.828-.917.55 0 1.064.047 1.54.14.476.093.826.191 1.05.294v9.478zm-3.108-3.57c1.11 0 1.783-.583 2.016-1.75V4.116a2.435 2.435 0 00-.735-.217 6.723 6.723 0 00-.973-.063c-.747 0-1.335.215-1.764.644-.43.43-.644 1.106-.644 2.03 0 .401.035.768.105 1.099.07.331.189.618.357.861.168.243.385.432.651.567.266.135.595.203.987.203zm9.38-6.23h1.988v4.774c0 .457.028.896.084 1.316h.938v.91h-1.862l-.042-1.19h-.056a2.938 2.938 0 01-.966.98c-.401.252-.887.378-1.456.378-.43 0-.796-.049-1.099-.147a1.556 1.556 0 01-.749-.511c-.196-.243-.34-.567-.434-.973-.093-.406-.14-.912-.14-1.519v-3.08h-.938V3.01h2.03v3.794c0 .383.016.726.049 1.029.033.303.1.56.203.77.103.21.254.369.455.476.2.107.469.161.805.161.485 0 .908-.159 1.267-.476.36-.317.632-.714.819-1.19V3.948h-.896V3.01zm10.724 6.118c-.168.15-.366.29-.595.42a4.39 4.39 0 01-.749.336c-.27.093-.553.166-.847.217-.294.051-.59.077-.889.077-.56 0-1.055-.086-1.484-.259a2.858 2.858 0 01-1.078-.742 3.234 3.234 0 01-.658-1.155 4.767 4.767 0 01-.224-1.512c0-.588.082-1.11.245-1.568.163-.457.399-.84.707-1.148a3.08 3.08 0 011.12-.707 4.187 4.187 0 011.47-.245c.392 0 .78.051 1.162.154.383.103.721.296 1.015.581.294.285.52.677.679 1.176.159.5.215 1.146.168 1.939h-5.418c0 .84.226 1.468.679 1.883.453.415 1.057.623 1.813.623.252 0 .502-.03.749-.091.247-.06.483-.133.707-.217a3.72 3.72 0 00.595-.28c.173-.103.306-.196.399-.28l.434.798zm-2.954-5.362c-.308 0-.6.033-.875.098a1.995 1.995 0 00-.728.329c-.21.154-.383.355-.518.602s-.222.553-.259.917h4.354c-.047-.616-.245-1.094-.595-1.435-.35-.34-.81-.511-1.379-.511zm5.25 1.694a14.051 14.051 0 00-.063-1.176 4.657 4.657 0 00-.049-.364h-.938v-.91h1.876l.126 1.134h.07c.093-.159.217-.315.371-.469A2.91 2.91 0 01196 2.954c.252-.075.518-.112.798-.112.43 0 .81.047 1.141.14.331.093.607.259.826.497.22.238.385.56.497.966.112.406.168.922.168 1.547v4.018h-1.092V6.202c0-.775-.126-1.358-.378-1.75-.252-.392-.71-.588-1.372-.588-.243 0-.478.049-.707.147a2.44 2.44 0 00-.623.385c-.187.159-.35.343-.49.553-.14.21-.243.432-.308.665v4.396h-1.078V5.46zm13.244-1.372a5.531 5.531 0 00-.693-.189 3.61 3.61 0 00-.735-.077c-.915 0-1.596.215-2.044.644-.448.43-.672 1.11-.672 2.044 0 .41.065.777.196 1.099.13.322.317.595.56.819.243.224.534.397.875.518.34.121.716.182 1.127.182.439 0 .866-.075 1.281-.224.415-.15.763-.345 1.043-.588l.49.812c-.13.112-.294.229-.49.35a4.837 4.837 0 01-1.533.602 4.962 4.962 0 01-1.015.098c-.607 0-1.141-.086-1.603-.259a3.045 3.045 0 01-1.155-.742 3.176 3.176 0 01-.7-1.162 4.525 4.525 0 01-.238-1.505c0-.588.082-1.11.245-1.568.163-.457.399-.84.707-1.148a3.08 3.08 0 011.12-.707 4.187 4.187 0 011.47-.245c.69 0 1.253.06 1.687.182.434.121.8.257 1.099.406l-.014.042v1.946h-1.008v-1.33zm9.66 5.04c-.168.15-.366.29-.595.42a4.39 4.39 0 01-.749.336c-.27.093-.553.166-.847.217-.294.051-.59.077-.889.077-.56 0-1.055-.086-1.484-.259a2.858 2.858 0 01-1.078-.742 3.234 3.234 0 01-.658-1.155 4.767 4.767 0 01-.224-1.512c0-.588.082-1.11.245-1.568.163-.457.399-.84.707-1.148a3.08 3.08 0 011.12-.707 4.187 4.187 0 011.47-.245c.392 0 .78.051 1.162.154.383.103.721.296 1.015.581.294.285.52.677.679 1.176.159.5.215 1.146.168 1.939h-5.418c0 .84.226 1.468.679 1.883.453.415 1.057.623 1.813.623.252 0 .502-.03.749-.091.247-.06.483-.133.707-.217a3.72 3.72 0 00.595-.28c.173-.103.306-.196.399-.28l.434.798zm-2.954-5.362c-.308 0-.6.033-.875.098a1.995 1.995 0 00-.728.329c-.21.154-.383.355-.518.602s-.222.553-.259.917h4.354c-.047-.616-.245-1.094-.595-1.435-.35-.34-.81-.511-1.379-.511z"/><path id="(){" fill="#7E7C7B" d="M223.328 12.978a6.964 6.964 0 01-1.757-.707 5.036 5.036 0 01-1.428-1.225c-.406-.504-.728-1.12-.966-1.848s-.357-1.591-.357-2.59c0-.99.121-1.855.364-2.597s.57-1.372.98-1.89c.41-.518.889-.933 1.435-1.246a6.005 6.005 0 011.729-.665l.35.882a7.086 7.086 0 00-1.512.623 3.928 3.928 0 00-1.183 1.022c-.331.425-.588.952-.77 1.582-.182.63-.273 1.393-.273 2.289 0 .905.11 1.678.329 2.317.22.64.509 1.171.868 1.596.36.425.76.756 1.204.994.443.238.889.404 1.337.497l-.35.966zm4.354-.966a4.965 4.965 0 001.337-.497 4.15 4.15 0 001.204-.994c.36-.425.649-.957.868-1.596.22-.64.329-1.412.329-2.317 0-.896-.091-1.659-.273-2.289-.182-.63-.439-1.157-.77-1.582a3.928 3.928 0 00-1.183-1.022 7.086 7.086 0 00-1.512-.623l.35-.882c.607.13 1.183.352 1.729.665a4.984 4.984 0 011.435 1.246c.41.518.737 1.148.98 1.89s.364 1.608.364 2.597c0 .999-.119 1.862-.357 2.59-.238.728-.56 1.344-.966 1.848a5.036 5.036 0 01-1.428 1.225 6.964 6.964 0 01-1.757.707l-.35-.966zm17.878-2.45c0-.401-.068-.749-.203-1.043a2.44 2.44 0 00-.504-.735c-.2-.196-.415-.34-.644-.434a1.641 1.641 0 00-.609-.14v-.98c.177 0 .38-.04.609-.119.229-.08.443-.21.644-.392.2-.182.369-.418.504-.707.135-.29.203-.649.203-1.078V2.506c0-.336.054-.644.161-.924a2.22 2.22 0 01.448-.728c.191-.205.42-.366.686-.483.266-.117.558-.175.875-.175h2.03v.98h-1.54c-.588 0-.996.14-1.225.42-.229.28-.343.695-.343 1.246V4.2c0 .383-.07.723-.21 1.022a2.7 2.7 0 01-1.106 1.225c-.205.117-.373.184-.504.203v.084c.121.019.285.091.49.217.205.126.406.299.602.518.196.22.366.478.511.777.145.299.217.63.217.994v1.344c0 .57.121.99.364 1.26s.649.406 1.218.406h1.526v.98h-2.03c-.653 0-1.178-.194-1.575-.581-.397-.387-.595-.959-.595-1.715V9.562z"/><path id="yield" fill="#1C85B5" d="M20.034 25.932h.532l1.736-5.922h1.134l-1.946 6.286c-.103.327-.208.698-.315 1.113a5.2 5.2 0 01-.455 1.169 2.807 2.807 0 01-.798.924c-.336.252-.775.378-1.316.378-.121 0-.25-.014-.385-.042a3.856 3.856 0 01-.399-.105 2.574 2.574 0 01-.364-.147.977.977 0 01-.252-.168l.392-1.008c.056.047.133.093.231.14.098.047.205.086.322.119.117.033.231.06.343.084.112.023.205.035.28.035.7 0 1.176-.593 1.428-1.778h-.938l-2.94-7h1.26l2.45 5.922zm5.516 1.078v-.938h2.436v-5.124H25.55v-.938h3.556v6.062h2.38v.938H25.55zm2.058-8.988c0-.252.084-.469.252-.651a.838.838 0 01.644-.273c.27 0 .497.091.679.273a.889.889 0 01.273.651.806.806 0 01-.273.616.963.963 0 01-.679.252.872.872 0 01-.644-.252.838.838 0 01-.252-.616zm12.278 8.106c-.168.15-.366.29-.595.42a4.39 4.39 0 01-.749.336c-.27.093-.553.166-.847.217-.294.051-.59.077-.889.077-.56 0-1.055-.086-1.484-.259a2.858 2.858 0 01-1.078-.742 3.234 3.234 0 01-.658-1.155 4.767 4.767 0 01-.224-1.512c0-.588.082-1.11.245-1.568.163-.457.399-.84.707-1.148a3.08 3.08 0 011.12-.707 4.187 4.187 0 011.47-.245c.392 0 .78.051 1.162.154.383.103.721.296 1.015.581.294.285.52.677.679 1.176.159.5.215 1.146.168 1.939H34.51c0 .84.226 1.468.679 1.883.453.415 1.057.623 1.813.623.252 0 .502-.03.749-.091.247-.06.483-.133.707-.217a3.72 3.72 0 00.595-.28c.173-.103.306-.196.399-.28l.434.798zm-2.954-5.362c-.308 0-.6.033-.875.098a1.995 1.995 0 00-.728.329c-.21.154-.383.355-.518.602s-.222.553-.259.917h4.354c-.047-.616-.245-1.094-.595-1.435-.35-.34-.81-.511-1.379-.511zm5.614-3.556h2.324v7.448c0 .57.096.97.287 1.204.191.233.474.35.847.35.261 0 .511-.047.749-.14.238-.093.502-.252.791-.476l.504.77c-.15.13-.313.247-.49.35a3.638 3.638 0 01-1.106.42 2.963 2.963 0 01-1.442-.077 1.579 1.579 0 01-.679-.427 1.897 1.897 0 01-.413-.777c-.093-.322-.14-.721-.14-1.197v-6.51h-1.232v-.938zm11.62 0h2.268v7.406c0 .084.005.189.014.315a15.6 15.6 0 00.084.812c.019.135.037.254.056.357h.938v.91h-1.862l-.14-1.078h-.056c-.205.355-.511.651-.917.889s-.875.357-1.407.357c-1.055 0-1.832-.296-2.331-.889-.5-.593-.749-1.514-.749-2.765 0-.588.084-1.108.252-1.561.168-.453.408-.83.721-1.134a3.118 3.118 0 011.127-.693 4.298 4.298 0 011.47-.238c.196 0 .371.005.525.014.154.01.296.023.427.042.13.019.254.044.371.077.117.033.245.068.385.105v-1.988h-1.176v-.938zm-.84 9.03c.57 0 1.017-.147 1.344-.441.327-.294.55-.735.672-1.323v-3.248a2.168 2.168 0 00-.693-.308c-.257-.065-.595-.098-1.015-.098-.747 0-1.335.217-1.764.651-.43.434-.644 1.118-.644 2.051 0 .383.035.74.105 1.071.07.331.187.618.35.861.163.243.38.434.651.574.27.14.602.21.994.21z"/><path id="1" fill="#A7333A" d="M67.858 26.002h2.198v-7.364l-2.24 1.568-.546-.798 3.08-2.198h.784v8.792h2.156v1.008h-5.432z"/><path id=";" fill="#7E7C7B" d="M77.686 26.24c0-.28.091-.506.273-.679.182-.173.418-.259.707-.259.355 0 .63.124.826.371.196.247.294.595.294 1.043a2.36 2.36 0 01-.637 1.659 2.465 2.465 0 01-.588.462c-.21.117-.404.203-.581.259l-.35-.546c.336-.13.625-.317.868-.56.243-.243.364-.537.364-.882-.13.028-.233.042-.308.042-.27 0-.483-.077-.637-.231-.154-.154-.231-.38-.231-.679zm.126-5.502c0-.299.084-.53.252-.693.168-.163.392-.245.672-.245.299 0 .532.082.7.245.168.163.252.394.252.693 0 .27-.084.495-.252.672-.168.177-.401.266-.7.266-.28 0-.504-.089-.672-.266a.938.938 0 01-.252-.672z"/><path id="yield" fill="#1C85B5" d="M20.034 42.932h.532l1.736-5.922h1.134l-1.946 6.286c-.103.327-.208.698-.315 1.113a5.2 5.2 0 01-.455 1.169 2.807 2.807 0 01-.798.924c-.336.252-.775.378-1.316.378-.121 0-.25-.014-.385-.042a3.856 3.856 0 01-.399-.105 2.574 2.574 0 01-.364-.147.977.977 0 01-.252-.168l.392-1.008c.056.047.133.093.231.14.098.047.205.086.322.119.117.033.231.06.343.084.112.023.205.035.28.035.7 0 1.176-.593 1.428-1.778h-.938l-2.94-7h1.26l2.45 5.922zm5.516 1.078v-.938h2.436v-5.124H25.55v-.938h3.556v6.062h2.38v.938H25.55zm2.058-8.988c0-.252.084-.469.252-.651a.838.838 0 01.644-.273c.27 0 .497.091.679.273a.889.889 0 01.273.651.806.806 0 01-.273.616.963.963 0 01-.679.252.872.872 0 01-.644-.252.838.838 0 01-.252-.616zm12.278 8.106c-.168.15-.366.29-.595.42a4.39 4.39 0 01-.749.336c-.27.093-.553.166-.847.217-.294.051-.59.077-.889.077-.56 0-1.055-.086-1.484-.259a2.858 2.858 0 01-1.078-.742 3.234 3.234 0 01-.658-1.155 4.767 4.767 0 01-.224-1.512c0-.588.082-1.11.245-1.568.163-.457.399-.84.707-1.148a3.08 3.08 0 011.12-.707 4.187 4.187 0 011.47-.245c.392 0 .78.051 1.162.154.383.103.721.296 1.015.581.294.285.52.677.679 1.176.159.5.215 1.146.168 1.939H34.51c0 .84.226 1.468.679 1.883.453.415 1.057.623 1.813.623.252 0 .502-.03.749-.091.247-.06.483-.133.707-.217a3.72 3.72 0 00.595-.28c.173-.103.306-.196.399-.28l.434.798zm-2.954-5.362c-.308 0-.6.033-.875.098a1.995 1.995 0 00-.728.329c-.21.154-.383.355-.518.602s-.222.553-.259.917h4.354c-.047-.616-.245-1.094-.595-1.435-.35-.34-.81-.511-1.379-.511zm5.614-3.556h2.324v7.448c0 .57.096.97.287 1.204.191.233.474.35.847.35.261 0 .511-.047.749-.14.238-.093.502-.252.791-.476l.504.77c-.15.13-.313.247-.49.35a3.638 3.638 0 01-1.106.42 2.963 2.963 0 01-1.442-.077 1.579 1.579 0 01-.679-.427 1.897 1.897 0 01-.413-.777c-.093-.322-.14-.721-.14-1.197v-6.51h-1.232v-.938zm11.62 0h2.268v7.406c0 .084.005.189.014.315a15.6 15.6 0 00.084.812c.019.135.037.254.056.357h.938v.91h-1.862l-.14-1.078h-.056c-.205.355-.511.651-.917.889s-.875.357-1.407.357c-1.055 0-1.832-.296-2.331-.889-.5-.593-.749-1.514-.749-2.765 0-.588.084-1.108.252-1.561.168-.453.408-.83.721-1.134a3.118 3.118 0 011.127-.693 4.298 4.298 0 011.47-.238c.196 0 .371.005.525.014.154.01.296.023.427.042.13.019.254.044.371.077.117.033.245.068.385.105v-1.988h-1.176v-.938zm-.84 9.03c.57 0 1.017-.147 1.344-.441.327-.294.55-.735.672-1.323v-3.248a2.168 2.168 0 00-.693-.308c-.257-.065-.595-.098-1.015-.098-.747 0-1.335.217-1.764.651-.43.434-.644 1.118-.644 2.051 0 .383.035.74.105 1.071.07.331.187.618.35.861.163.243.38.434.651.574.27.14.602.21.994.21z"/><path id="2" fill="#A7333A" d="M73.08 36.688c0 .859-.406 1.815-1.218 2.87-.812 1.055-1.946 2.203-3.402 3.444h4.928v1.008h-6.216v-1.008c.177-.168.42-.387.728-.658.308-.27.64-.572.994-.903a29.01 29.01 0 001.085-1.071c.369-.383.702-.775 1.001-1.176.299-.401.541-.803.728-1.204a2.75 2.75 0 00.28-1.162c0-.56-.147-1.001-.441-1.323-.294-.322-.735-.483-1.323-.483-.504 0-.929.056-1.274.168a3.101 3.101 0 00-.938.49l-.476-.77c.42-.299.866-.518 1.337-.658s.987-.21 1.547-.21c.877 0 1.54.238 1.988.714.448.476.672 1.12.672 1.932z"/><path id=";" fill="#7E7C7B" d="M77.686 43.24c0-.28.091-.506.273-.679.182-.173.418-.259.707-.259.355 0 .63.124.826.371.196.247.294.595.294 1.043a2.36 2.36 0 01-.637 1.659 2.465 2.465 0 01-.588.462c-.21.117-.404.203-.581.259l-.35-.546c.336-.13.625-.317.868-.56.243-.243.364-.537.364-.882-.13.028-.233.042-.308.042-.27 0-.483-.077-.637-.231-.154-.154-.231-.38-.231-.679zm.126-5.502c0-.299.084-.53.252-.693.168-.163.392-.245.672-.245.299 0 .532.082.7.245.168.163.252.394.252.693 0 .27-.084.495-.252.672-.168.177-.401.266-.7.266-.28 0-.504-.089-.672-.266a.938.938 0 01-.252-.672z"/><path id="return" fill="#1C85B5" d="M16.604 61.01v-.938h1.89v-5.124h-1.89v-.938h2.618l.224.91h.07c.317-.29.672-.537 1.064-.742.392-.205.859-.308 1.4-.308.317 0 .572.06.763.182.191.121.34.299.448.532.107.233.18.516.217.847.037.331.056.707.056 1.127l-.98.014c0-.597-.058-1.036-.175-1.316-.117-.28-.329-.42-.637-.42-.29 0-.55.042-.784.126a2.565 2.565 0 00-.609.308c-.173.121-.32.243-.441.364s-.21.224-.266.308v4.13h2.688v.938h-5.656zm14.882-.882c-.168.15-.366.29-.595.42a4.39 4.39 0 01-.749.336c-.27.093-.553.166-.847.217-.294.051-.59.077-.889.077-.56 0-1.055-.086-1.484-.259a2.858 2.858 0 01-1.078-.742 3.234 3.234 0 01-.658-1.155 4.767 4.767 0 01-.224-1.512c0-.588.082-1.11.245-1.568.163-.457.399-.84.707-1.148a3.08 3.08 0 011.12-.707 4.187 4.187 0 011.47-.245c.392 0 .78.051 1.162.154.383.103.721.296 1.015.581.294.285.52.677.679 1.176.159.5.215 1.146.168 1.939H26.11c0 .84.226 1.468.679 1.883.453.415 1.057.623 1.813.623.252 0 .502-.03.749-.091.247-.06.483-.133.707-.217a3.72 3.72 0 00.595-.28c.173-.103.306-.196.399-.28l.434.798zm-2.954-5.362c-.308 0-.6.033-.875.098a1.995 1.995 0 00-.728.329c-.21.154-.383.355-.518.602s-.222.553-.259.917h4.354c-.047-.616-.245-1.094-.595-1.435-.35-.34-.81-.511-1.379-.511zm4.382-.756h1.666v-1.386l1.092-.308v1.694h3.738v.938h-3.738v3.304c0 .681.166 1.185.497 1.512.331.327.805.49 1.421.49.42 0 .786-.08 1.099-.238.313-.159.595-.331.847-.518l.364.826a3.938 3.938 0 01-1.169.63 4.182 4.182 0 01-1.393.238 3.41 3.41 0 01-1.057-.161 2.426 2.426 0 01-.875-.497 2.38 2.38 0 01-.602-.861c-.15-.35-.224-.768-.224-1.253v-3.472h-1.666v-.938zm13.048 0h1.988v4.774c0 .457.028.896.084 1.316h.938v.91H47.11l-.042-1.19h-.056a2.938 2.938 0 01-.966.98c-.401.252-.887.378-1.456.378-.43 0-.796-.049-1.099-.147a1.556 1.556 0 01-.749-.511c-.196-.243-.34-.567-.434-.973-.093-.406-.14-.912-.14-1.519v-3.08h-.938v-.938h2.03v3.794c0 .383.016.726.049 1.029.033.303.1.56.203.77.103.21.254.369.455.476.2.107.469.161.805.161.485 0 .908-.159 1.267-.476.36-.317.632-.714.819-1.19v-3.626h-.896v-.938zm4.242 7v-.938h1.89v-5.124h-1.89v-.938h2.618l.224.91h.07c.317-.29.672-.537 1.064-.742.392-.205.859-.308 1.4-.308.317 0 .572.06.763.182.191.121.34.299.448.532.107.233.18.516.217.847.037.331.056.707.056 1.127l-.98.014c0-.597-.058-1.036-.175-1.316-.117-.28-.329-.42-.637-.42-.29 0-.55.042-.784.126a2.565 2.565 0 00-.609.308c-.173.121-.32.243-.441.364s-.21.224-.266.308v4.13h2.688v.938h-5.656zm8.778-4.55a14.05 14.05 0 00-.063-1.176 4.657 4.657 0 00-.049-.364h-.938v-.91h1.876l.126 1.134h.07c.093-.159.217-.315.371-.469a2.91 2.91 0 011.225-.721c.252-.075.518-.112.798-.112.43 0 .81.047 1.141.14.331.093.607.259.826.497.22.238.385.56.497.966.112.406.168.922.168 1.547v4.018h-1.092v-3.808c0-.775-.126-1.358-.378-1.75-.252-.392-.71-.588-1.372-.588-.243 0-.478.049-.707.147a2.44 2.44 0 00-.623.385c-.187.159-.35.343-.49.553-.14.21-.243.432-.308.665v4.396h-1.078v-4.55z"/><path id="3" fill="#A7333A" d="M77.952 60.212c.373 0 .716-.049 1.029-.147a2.65 2.65 0 00.819-.413 1.9 1.9 0 00.546-.644c.13-.252.196-.532.196-.84 0-.644-.226-1.104-.679-1.379-.453-.275-1.062-.413-1.827-.413h-.896v-.672l2.758-3.486h-4.186V51.21h5.53v1.008l-2.758 3.234h.224c.43 0 .821.06 1.176.182.355.121.663.294.924.518.261.224.464.495.609.812.145.317.217.677.217 1.078 0 .504-.098.952-.294 1.344a2.89 2.89 0 01-.798.987c-.336.266-.73.467-1.183.602a5.034 5.034 0 01-1.449.203c-.476 0-.889-.035-1.239-.105-.35-.07-.67-.156-.959-.259l.28-.98c.243.112.527.203.854.273a5.3 5.3 0 001.106.105z"/><path id=";}" fill="#7E7C7B" d="M86.086 60.24c0-.28.091-.506.273-.679.182-.173.418-.259.707-.259.355 0 .63.124.826.371.196.247.294.595.294 1.043a2.36 2.36 0 01-.637 1.659 2.465 2.465 0 01-.588.462c-.21.117-.404.203-.581.259l-.35-.546c.336-.13.625-.317.868-.56.243-.243.364-.537.364-.882-.13.028-.233.042-.308.042-.27 0-.483-.077-.637-.231-.154-.154-.231-.38-.231-.679zm.126-5.502c0-.299.084-.53.252-.693.168-.163.392-.245.672-.245.299 0 .532.082.7.245.168.163.252.394.252.693 0 .27-.084.495-.252.672-.168.177-.401.266-.7.266-.28 0-.504-.089-.672-.266a.938.938 0 01-.252-.672zM4.2 78.934c0 .756-.198 1.328-.595 1.715-.397.387-.922.581-1.575.581H0v-.98h1.526c.57 0 .975-.135 1.218-.406.243-.27.364-.69.364-1.26V77.24c0-.364.07-.695.21-.994.14-.299.308-.558.504-.777.196-.22.397-.392.602-.518.205-.126.373-.198.504-.217v-.084c-.13-.019-.299-.086-.504-.203a2.7 2.7 0 01-1.106-1.225c-.14-.299-.21-.64-.21-1.022v-1.358c0-.55-.114-.966-.343-1.246-.229-.28-.637-.42-1.225-.42H0v-.98h2.03c.317 0 .609.058.875.175.266.117.495.278.686.483.191.205.34.448.448.728.107.28.161.588.161.924v1.428c0 .43.068.789.203 1.078.135.29.303.525.504.707.2.182.415.313.644.392.229.08.432.119.609.119v.98c-.177 0-.38.047-.609.14a2.011 2.011 0 00-.644.434 2.44 2.44 0 00-.504.735c-.135.294-.203.642-.203 1.043v1.372z"/></g><path id="Line" fill="#C06334" fill-rule="nonzero" d="M286.5 42.5v6h32v2h-32v6l-14-7 14-7z"/><text id="{value:-1,-done:-fal" fill="#AF6E24" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="326" y="54">{value: 1, done: false}</tspan></text></g></g></svg> +======= +<svg xmlns="http://www.w3.org/2000/svg" width="519" height="150" viewBox="0 0 519 150"><defs><style>@import url(https://fonts.googleapis.com/css?family=Open+Sans:bold,italic,bolditalic%7CPT+Mono);@font-face{font-family:'PT Mono';font-weight:700;font-style:normal;src:local('PT MonoBold'),url(/font/PTMonoBold.woff2) format('woff2'),url(/font/PTMonoBold.woff) format('woff'),url(/font/PTMonoBold.ttf) format('truetype')}</style></defs><g id="generator" fill="none" fill-rule="evenodd" stroke="none" stroke-width="1"><g id="generateSequence-2.svg"><path id="Rectangle-1" fill="#FBF2EC" stroke="#DBAF88" stroke-width="2" d="M26 17h271v110H26z"/><g id="function*-generateSe" fill-rule="nonzero" transform="translate(40.12 26.99)"><path id="function" fill="#1C85B5" d="M.112 10.01v-.938h1.666V3.948H.112V3.01h1.666v-.392c0-.877.229-1.512.686-1.904.457-.392 1.11-.588 1.96-.588.308 0 .583.019.826.056.243.037.504.112.784.224l-.252.91a2.862 2.862 0 00-.7-.203 4.295 4.295 0 00-.616-.049c-.616 0-1.036.152-1.26.455-.224.303-.336.8-.336 1.491h2.898v.938H2.87v5.124h2.898v.938H.112zm12.25-7h1.988v4.774c0 .457.028.896.084 1.316h.938v.91H13.51l-.042-1.19h-.056a2.938 2.938 0 01-.966.98c-.401.252-.887.378-1.456.378-.43 0-.796-.049-1.099-.147a1.556 1.556 0 01-.749-.511c-.196-.243-.34-.567-.434-.973-.093-.406-.14-.912-.14-1.519v-3.08H7.63V3.01h2.03v3.794c0 .383.016.726.049 1.029.033.303.1.56.203.77.103.21.254.369.455.476.2.107.469.161.805.161.485 0 .908-.159 1.267-.476.36-.317.632-.714.819-1.19V3.948h-.896V3.01zm4.62 2.45a14.05 14.05 0 00-.063-1.176 4.657 4.657 0 00-.049-.364h-.938v-.91h1.876l.126 1.134h.07c.093-.159.217-.315.371-.469a2.91 2.91 0 011.225-.721c.252-.075.518-.112.798-.112.43 0 .81.047 1.141.14.331.093.607.259.826.497.22.238.385.56.497.966.112.406.168.922.168 1.547v4.018h-1.092V6.202c0-.775-.126-1.358-.378-1.75-.252-.392-.71-.588-1.372-.588-.243 0-.478.049-.707.147a2.44 2.44 0 00-.623.385c-.187.159-.35.343-.49.553-.14.21-.243.432-.308.665v4.396h-1.078V5.46zm13.244-1.372a5.531 5.531 0 00-.693-.189 3.61 3.61 0 00-.735-.077c-.915 0-1.596.215-2.044.644-.448.43-.672 1.11-.672 2.044 0 .41.065.777.196 1.099.13.322.317.595.56.819.243.224.534.397.875.518.34.121.716.182 1.127.182.439 0 .866-.075 1.281-.224.415-.15.763-.345 1.043-.588l.49.812c-.13.112-.294.229-.49.35a4.837 4.837 0 01-1.533.602 4.962 4.962 0 01-1.015.098c-.607 0-1.141-.086-1.603-.259a3.045 3.045 0 01-1.155-.742 3.176 3.176 0 01-.7-1.162 4.525 4.525 0 01-.238-1.505c0-.588.082-1.11.245-1.568.163-.457.399-.84.707-1.148a3.08 3.08 0 011.12-.707 4.187 4.187 0 011.47-.245c.69 0 1.253.06 1.687.182.434.121.8.257 1.099.406l-.014.042v1.946h-1.008v-1.33zm2.688-1.078h1.666V1.624l1.092-.308V3.01h3.738v.938h-3.738v3.304c0 .681.166 1.185.497 1.512.331.327.805.49 1.421.49.42 0 .786-.08 1.099-.238.313-.159.595-.331.847-.518l.364.826a3.938 3.938 0 01-1.169.63 4.182 4.182 0 01-1.393.238 3.41 3.41 0 01-1.057-.161 2.426 2.426 0 01-.875-.497 2.38 2.38 0 01-.602-.861c-.15-.35-.224-.768-.224-1.253V3.948h-1.666V3.01zm9.436 7v-.938h2.436V3.948H42.35V3.01h3.556v6.062h2.38v.938H42.35zm2.058-8.988c0-.252.084-.469.252-.651a.838.838 0 01.644-.273c.27 0 .497.091.679.273a.889.889 0 01.273.651.806.806 0 01-.273.616.963.963 0 01-.679.252.872.872 0 01-.644-.252.838.838 0 01-.252-.616zm5.67 5.488c0-1.13.294-2.023.882-2.681.588-.658 1.428-.987 2.52-.987.588 0 1.094.096 1.519.287.425.191.777.45 1.057.777.28.327.488.714.623 1.162.135.448.203.929.203 1.442 0 .56-.075 1.066-.224 1.519-.15.453-.369.838-.658 1.155-.29.317-.646.562-1.071.735a3.82 3.82 0 01-1.449.259c-.579 0-1.083-.096-1.512-.287a2.967 2.967 0 01-1.064-.777 3.168 3.168 0 01-.623-1.162 4.963 4.963 0 01-.203-1.442zm1.162 0c0 .327.04.653.119.98.08.327.208.62.385.882.177.261.408.471.693.63.285.159.632.238 1.043.238.747 0 1.309-.231 1.687-.693.378-.462.567-1.141.567-2.037 0-.336-.04-.665-.119-.987a2.608 2.608 0 00-.392-.875 2.066 2.066 0 00-.7-.63c-.285-.159-.632-.238-1.043-.238-.747 0-1.307.229-1.68.686-.373.457-.56 1.139-.56 2.044zm7.742-1.05a14.05 14.05 0 00-.063-1.176 4.657 4.657 0 00-.049-.364h-.938v-.91h1.876l.126 1.134h.07c.093-.159.217-.315.371-.469a2.91 2.91 0 011.225-.721c.252-.075.518-.112.798-.112.43 0 .81.047 1.141.14.331.093.607.259.826.497.22.238.385.56.497.966.112.406.168.922.168 1.547v4.018h-1.092V6.202c0-.775-.126-1.358-.378-1.75-.252-.392-.71-.588-1.372-.588-.243 0-.478.049-.707.147a2.44 2.44 0 00-.623.385c-.187.159-.35.343-.49.553-.14.21-.243.432-.308.665v4.396h-1.078V5.46z"/><path id="*" fill="#DBAF88" d="M69.062.014l1.246 2.45L71.512 0l.966.518-1.694 2.366 2.842-.21v1.134l-2.758-.224 1.624 2.254-.938.546-1.302-2.506-1.232 2.506-1.008-.546 1.694-2.254-2.772.224V2.674l2.772.238L68.096.56z"/><path id="generateSequence" fill="#181717" d="M90.216 10.36c0 .439-.084.824-.252 1.155a2.269 2.269 0 01-.693.819 3.127 3.127 0 01-1.029.483 4.81 4.81 0 01-1.274.161c-.55 0-1.031-.056-1.442-.168a4.29 4.29 0 01-1.064-.434l.532-.994c.084.075.194.147.329.217s.292.135.469.196c.177.06.366.11.567.147.2.037.399.056.595.056.41 0 .754-.037 1.029-.112.275-.075.497-.191.665-.35.168-.159.29-.364.364-.616a3.29 3.29 0 00.112-.924v-.784h-.056a2.18 2.18 0 01-.826.714c-.336.168-.77.252-1.302.252-1.064 0-1.846-.296-2.345-.889-.5-.593-.749-1.514-.749-2.765 0-1.195.317-2.098.952-2.709.635-.611 1.577-.917 2.828-.917.579 0 1.071.04 1.477.119.406.08.777.18 1.113.301v7.042zm-3.122-1.12c.57 0 1.017-.147 1.344-.441.327-.294.555-.744.686-1.351V4.13c-.41-.196-.985-.294-1.722-.294-.747 0-1.335.22-1.764.658-.43.439-.644 1.11-.644 2.016 0 .401.037.768.112 1.099.075.331.194.618.357.861.163.243.378.432.644.567.266.135.595.203.987.203zm11.592-.112c-.168.15-.366.29-.595.42a4.39 4.39 0 01-.749.336c-.27.093-.553.166-.847.217-.294.051-.59.077-.889.077-.56 0-1.055-.086-1.484-.259a2.858 2.858 0 01-1.078-.742 3.234 3.234 0 01-.658-1.155 4.767 4.767 0 01-.224-1.512c0-.588.082-1.11.245-1.568.163-.457.399-.84.707-1.148a3.08 3.08 0 011.12-.707 4.187 4.187 0 011.47-.245c.392 0 .78.051 1.162.154.383.103.721.296 1.015.581.294.285.52.677.679 1.176.159.5.215 1.146.168 1.939H93.31c0 .84.226 1.468.679 1.883.453.415 1.057.623 1.813.623.252 0 .502-.03.749-.091.247-.06.483-.133.707-.217a3.72 3.72 0 00.595-.28c.173-.103.306-.196.399-.28l.434.798zm-2.954-5.362c-.308 0-.6.033-.875.098a1.995 1.995 0 00-.728.329c-.21.154-.383.355-.518.602s-.222.553-.259.917h4.354c-.047-.616-.245-1.094-.595-1.435-.35-.34-.81-.511-1.379-.511zm5.25 1.694a14.051 14.051 0 00-.063-1.176 4.657 4.657 0 00-.049-.364h-.938v-.91h1.876l.126 1.134h.07c.093-.159.217-.315.371-.469a2.91 2.91 0 011.225-.721c.252-.075.518-.112.798-.112.43 0 .81.047 1.141.14.331.093.607.259.826.497.22.238.385.56.497.966.112.406.168.922.168 1.547v4.018h-1.092V6.202c0-.775-.126-1.358-.378-1.75-.252-.392-.71-.588-1.372-.588-.243 0-.478.049-.707.147a2.44 2.44 0 00-.623.385c-.187.159-.35.343-.49.553-.14.21-.243.432-.308.665v4.396h-1.078V5.46zm14.504 3.668c-.168.15-.366.29-.595.42a4.39 4.39 0 01-.749.336c-.27.093-.553.166-.847.217-.294.051-.59.077-.889.077-.56 0-1.055-.086-1.484-.259a2.858 2.858 0 01-1.078-.742 3.234 3.234 0 01-.658-1.155 4.767 4.767 0 01-.224-1.512c0-.588.082-1.11.245-1.568.163-.457.399-.84.707-1.148a3.08 3.08 0 011.12-.707 4.187 4.187 0 011.47-.245c.392 0 .78.051 1.162.154.383.103.721.296 1.015.581.294.285.52.677.679 1.176.159.5.215 1.146.168 1.939h-5.418c0 .84.226 1.468.679 1.883.453.415 1.057.623 1.813.623.252 0 .502-.03.749-.091.247-.06.483-.133.707-.217a3.72 3.72 0 00.595-.28c.173-.103.306-.196.399-.28l.434.798zm-2.954-5.362c-.308 0-.6.033-.875.098a1.995 1.995 0 00-.728.329c-.21.154-.383.355-.518.602s-.222.553-.259.917h4.354c-.047-.616-.245-1.094-.595-1.435-.35-.34-.81-.511-1.379-.511zm4.872 6.244v-.938h1.89V3.948h-1.89V3.01h2.618l.224.91h.07c.317-.29.672-.537 1.064-.742.392-.205.859-.308 1.4-.308.317 0 .572.06.763.182.191.121.34.299.448.532.107.233.18.516.217.847.037.331.056.707.056 1.127l-.98.014c0-.597-.058-1.036-.175-1.316-.117-.28-.329-.42-.637-.42-.29 0-.55.042-.784.126a2.565 2.565 0 00-.609.308c-.173.121-.32.243-.441.364s-.21.224-.266.308v4.13h2.688v.938h-5.656zm8.988-6.454a4.447 4.447 0 011.358-.504 7.423 7.423 0 011.484-.154c.476 0 .866.075 1.169.224.303.15.541.343.714.581.173.238.29.509.35.812.06.303.091.609.091.917 0 .355-.01.733-.028 1.134-.019.401-.033.803-.042 1.204 0 .467.028.91.084 1.33h.938v.91h-1.862l-.126-1.05h-.07c-.056.084-.14.191-.252.322-.112.13-.259.259-.441.385a2.749 2.749 0 01-1.589.469c-.69 0-1.237-.177-1.638-.532-.401-.355-.602-.84-.602-1.456 0-.476.105-.873.315-1.19.21-.317.511-.56.903-.728.392-.168.866-.266 1.421-.294a9.544 9.544 0 011.869.112c.047-.43.054-.786.021-1.071-.033-.285-.107-.511-.224-.679a.938.938 0 00-.49-.357 2.482 2.482 0 00-.777-.105c-.42 0-.821.058-1.204.175-.383.117-.723.236-1.022.357l-.35-.812zm2.058 5.642c.261 0 .504-.042.728-.126a2.22 2.22 0 00.588-.322 2.133 2.133 0 00.672-.868v-.98a7.92 7.92 0 00-1.344-.126c-.41 0-.765.044-1.064.133-.299.089-.532.226-.7.413-.168.187-.252.43-.252.728 0 .308.105.576.315.805.21.229.562.343 1.057.343zm5.264-6.188h1.666V1.624l1.092-.308V3.01h3.738v.938h-3.738v3.304c0 .681.166 1.185.497 1.512.331.327.805.49 1.421.49.42 0 .786-.08 1.099-.238.313-.159.595-.331.847-.518l.364.826a3.938 3.938 0 01-1.169.63 4.182 4.182 0 01-1.393.238 3.41 3.41 0 01-1.057-.161 2.426 2.426 0 01-.875-.497 2.38 2.38 0 01-.602-.861c-.15-.35-.224-.768-.224-1.253V3.948h-1.666V3.01zm15.372 6.118c-.168.15-.366.29-.595.42a4.39 4.39 0 01-.749.336c-.27.093-.553.166-.847.217-.294.051-.59.077-.889.077-.56 0-1.055-.086-1.484-.259a2.858 2.858 0 01-1.078-.742 3.234 3.234 0 01-.658-1.155 4.767 4.767 0 01-.224-1.512c0-.588.082-1.11.245-1.568.163-.457.399-.84.707-1.148a3.08 3.08 0 011.12-.707 4.187 4.187 0 011.47-.245c.392 0 .78.051 1.162.154.383.103.721.296 1.015.581.294.285.52.677.679 1.176.159.5.215 1.146.168 1.939h-5.418c0 .84.226 1.468.679 1.883.453.415 1.057.623 1.813.623.252 0 .502-.03.749-.091.247-.06.483-.133.707-.217a3.72 3.72 0 00.595-.28c.173-.103.306-.196.399-.28l.434.798zm-2.954-5.362c-.308 0-.6.033-.875.098a1.995 1.995 0 00-.728.329c-.21.154-.383.355-.518.602s-.222.553-.259.917h4.354c-.047-.616-.245-1.094-.595-1.435-.35-.34-.81-.511-1.379-.511zm6.048 4.858c.28.15.595.273.945.371.35.098.702.147 1.057.147.308 0 .597-.03.868-.091.27-.06.506-.159.707-.294.2-.135.36-.306.476-.511a1.45 1.45 0 00.175-.728c0-.383-.128-.695-.385-.938a3.824 3.824 0 00-.959-.644 17.73 17.73 0 00-1.246-.546 7.417 7.417 0 01-1.246-.63 3.498 3.498 0 01-.959-.889c-.257-.35-.385-.796-.385-1.337 0-.383.077-.728.231-1.036a2.24 2.24 0 01.651-.784c.28-.215.618-.38 1.015-.497a4.68 4.68 0 011.323-.175c.56 0 1.069.04 1.526.119.457.08.821.184 1.092.315l.028-.014V.49h.014l-.014.042v2.24h-1.036V1.274a7.635 7.635 0 00-.77-.14 6.788 6.788 0 00-.896-.056c-.308 0-.586.037-.833.112a2.08 2.08 0 00-.63.301 1.37 1.37 0 00-.399.441 1.08 1.08 0 00-.14.532c0 .364.128.667.385.91s.576.46.959.651.798.38 1.246.567c.448.187.863.404 1.246.651s.702.544.959.889.385.775.385 1.288c0 .42-.077.798-.231 1.134a2.494 2.494 0 01-.658.868 2.97 2.97 0 01-1.05.56c-.415.13-.884.196-1.407.196-.355 0-.69-.028-1.008-.084a6.883 6.883 0 01-1.589-.476 7.642 7.642 0 01-.497-.238l.014-.042V7.07h1.036v1.554zm13.706.504c-.168.15-.366.29-.595.42a4.39 4.39 0 01-.749.336c-.27.093-.553.166-.847.217-.294.051-.59.077-.889.077-.56 0-1.055-.086-1.484-.259a2.858 2.858 0 01-1.078-.742 3.234 3.234 0 01-.658-1.155 4.767 4.767 0 01-.224-1.512c0-.588.082-1.11.245-1.568.163-.457.399-.84.707-1.148a3.08 3.08 0 011.12-.707 4.187 4.187 0 011.47-.245c.392 0 .78.051 1.162.154.383.103.721.296 1.015.581.294.285.52.677.679 1.176.159.5.215 1.146.168 1.939h-5.418c0 .84.226 1.468.679 1.883.453.415 1.057.623 1.813.623.252 0 .502-.03.749-.091.247-.06.483-.133.707-.217a3.72 3.72 0 00.595-.28c.173-.103.306-.196.399-.28l.434.798zm-2.954-5.362c-.308 0-.6.033-.875.098a1.995 1.995 0 00-.728.329c-.21.154-.383.355-.518.602s-.222.553-.259.917h4.354c-.047-.616-.245-1.094-.595-1.435-.35-.34-.81-.511-1.379-.511zm11.158 9.044h-1.092V9.226h-.056c-.215.308-.49.544-.826.707-.336.163-.77.245-1.302.245-1.064 0-1.846-.296-2.345-.889-.5-.593-.749-1.514-.749-2.765 0-1.195.317-2.098.952-2.709.635-.611 1.577-.917 2.828-.917.55 0 1.064.047 1.54.14.476.093.826.191 1.05.294v9.478zm-3.108-3.57c1.11 0 1.783-.583 2.016-1.75V4.116a2.435 2.435 0 00-.735-.217 6.723 6.723 0 00-.973-.063c-.747 0-1.335.215-1.764.644-.43.43-.644 1.106-.644 2.03 0 .401.035.768.105 1.099.07.331.189.618.357.861.168.243.385.432.651.567.266.135.595.203.987.203zm9.38-6.23h1.988v4.774c0 .457.028.896.084 1.316h.938v.91h-1.862l-.042-1.19h-.056a2.938 2.938 0 01-.966.98c-.401.252-.887.378-1.456.378-.43 0-.796-.049-1.099-.147a1.556 1.556 0 01-.749-.511c-.196-.243-.34-.567-.434-.973-.093-.406-.14-.912-.14-1.519v-3.08h-.938V3.01h2.03v3.794c0 .383.016.726.049 1.029.033.303.1.56.203.77.103.21.254.369.455.476.2.107.469.161.805.161.485 0 .908-.159 1.267-.476.36-.317.632-.714.819-1.19V3.948h-.896V3.01zm10.724 6.118c-.168.15-.366.29-.595.42a4.39 4.39 0 01-.749.336c-.27.093-.553.166-.847.217-.294.051-.59.077-.889.077-.56 0-1.055-.086-1.484-.259a2.858 2.858 0 01-1.078-.742 3.234 3.234 0 01-.658-1.155 4.767 4.767 0 01-.224-1.512c0-.588.082-1.11.245-1.568.163-.457.399-.84.707-1.148a3.08 3.08 0 011.12-.707 4.187 4.187 0 011.47-.245c.392 0 .78.051 1.162.154.383.103.721.296 1.015.581.294.285.52.677.679 1.176.159.5.215 1.146.168 1.939h-5.418c0 .84.226 1.468.679 1.883.453.415 1.057.623 1.813.623.252 0 .502-.03.749-.091.247-.06.483-.133.707-.217a3.72 3.72 0 00.595-.28c.173-.103.306-.196.399-.28l.434.798zm-2.954-5.362c-.308 0-.6.033-.875.098a1.995 1.995 0 00-.728.329c-.21.154-.383.355-.518.602s-.222.553-.259.917h4.354c-.047-.616-.245-1.094-.595-1.435-.35-.34-.81-.511-1.379-.511zm5.25 1.694a14.051 14.051 0 00-.063-1.176 4.657 4.657 0 00-.049-.364h-.938v-.91h1.876l.126 1.134h.07c.093-.159.217-.315.371-.469A2.91 2.91 0 01196 2.954c.252-.075.518-.112.798-.112.43 0 .81.047 1.141.14.331.093.607.259.826.497.22.238.385.56.497.966.112.406.168.922.168 1.547v4.018h-1.092V6.202c0-.775-.126-1.358-.378-1.75-.252-.392-.71-.588-1.372-.588-.243 0-.478.049-.707.147a2.44 2.44 0 00-.623.385c-.187.159-.35.343-.49.553-.14.21-.243.432-.308.665v4.396h-1.078V5.46zm13.244-1.372a5.531 5.531 0 00-.693-.189 3.61 3.61 0 00-.735-.077c-.915 0-1.596.215-2.044.644-.448.43-.672 1.11-.672 2.044 0 .41.065.777.196 1.099.13.322.317.595.56.819.243.224.534.397.875.518.34.121.716.182 1.127.182.439 0 .866-.075 1.281-.224.415-.15.763-.345 1.043-.588l.49.812c-.13.112-.294.229-.49.35a4.837 4.837 0 01-1.533.602 4.962 4.962 0 01-1.015.098c-.607 0-1.141-.086-1.603-.259a3.045 3.045 0 01-1.155-.742 3.176 3.176 0 01-.7-1.162 4.525 4.525 0 01-.238-1.505c0-.588.082-1.11.245-1.568.163-.457.399-.84.707-1.148a3.08 3.08 0 011.12-.707 4.187 4.187 0 011.47-.245c.69 0 1.253.06 1.687.182.434.121.8.257 1.099.406l-.014.042v1.946h-1.008v-1.33zm9.66 5.04c-.168.15-.366.29-.595.42a4.39 4.39 0 01-.749.336c-.27.093-.553.166-.847.217-.294.051-.59.077-.889.077-.56 0-1.055-.086-1.484-.259a2.858 2.858 0 01-1.078-.742 3.234 3.234 0 01-.658-1.155 4.767 4.767 0 01-.224-1.512c0-.588.082-1.11.245-1.568.163-.457.399-.84.707-1.148a3.08 3.08 0 011.12-.707 4.187 4.187 0 011.47-.245c.392 0 .78.051 1.162.154.383.103.721.296 1.015.581.294.285.52.677.679 1.176.159.5.215 1.146.168 1.939h-5.418c0 .84.226 1.468.679 1.883.453.415 1.057.623 1.813.623.252 0 .502-.03.749-.091.247-.06.483-.133.707-.217a3.72 3.72 0 00.595-.28c.173-.103.306-.196.399-.28l.434.798zm-2.954-5.362c-.308 0-.6.033-.875.098a1.995 1.995 0 00-.728.329c-.21.154-.383.355-.518.602s-.222.553-.259.917h4.354c-.047-.616-.245-1.094-.595-1.435-.35-.34-.81-.511-1.379-.511z"/><path id="(){" fill="#7E7C7B" d="M223.328 12.978a6.964 6.964 0 01-1.757-.707 5.036 5.036 0 01-1.428-1.225c-.406-.504-.728-1.12-.966-1.848s-.357-1.591-.357-2.59c0-.99.121-1.855.364-2.597s.57-1.372.98-1.89c.41-.518.889-.933 1.435-1.246a6.005 6.005 0 011.729-.665l.35.882a7.086 7.086 0 00-1.512.623 3.928 3.928 0 00-1.183 1.022c-.331.425-.588.952-.77 1.582-.182.63-.273 1.393-.273 2.289 0 .905.11 1.678.329 2.317.22.64.509 1.171.868 1.596.36.425.76.756 1.204.994.443.238.889.404 1.337.497l-.35.966zm4.354-.966a4.965 4.965 0 001.337-.497 4.15 4.15 0 001.204-.994c.36-.425.649-.957.868-1.596.22-.64.329-1.412.329-2.317 0-.896-.091-1.659-.273-2.289-.182-.63-.439-1.157-.77-1.582a3.928 3.928 0 00-1.183-1.022 7.086 7.086 0 00-1.512-.623l.35-.882c.607.13 1.183.352 1.729.665a4.984 4.984 0 011.435 1.246c.41.518.737 1.148.98 1.89s.364 1.608.364 2.597c0 .999-.119 1.862-.357 2.59-.238.728-.56 1.344-.966 1.848a5.036 5.036 0 01-1.428 1.225 6.964 6.964 0 01-1.757.707l-.35-.966zm17.878-2.45c0-.401-.068-.749-.203-1.043a2.44 2.44 0 00-.504-.735c-.2-.196-.415-.34-.644-.434a1.641 1.641 0 00-.609-.14v-.98c.177 0 .38-.04.609-.119.229-.08.443-.21.644-.392.2-.182.369-.418.504-.707.135-.29.203-.649.203-1.078V2.506c0-.336.054-.644.161-.924a2.22 2.22 0 01.448-.728c.191-.205.42-.366.686-.483.266-.117.558-.175.875-.175h2.03v.98h-1.54c-.588 0-.996.14-1.225.42-.229.28-.343.695-.343 1.246V4.2c0 .383-.07.723-.21 1.022a2.7 2.7 0 01-1.106 1.225c-.205.117-.373.184-.504.203v.084c.121.019.285.091.49.217.205.126.406.299.602.518.196.22.366.478.511.777.145.299.217.63.217.994v1.344c0 .57.121.99.364 1.26s.649.406 1.218.406h1.526v.98h-2.03c-.653 0-1.178-.194-1.575-.581-.397-.387-.595-.959-.595-1.715V9.562z"/><path id="yield" fill="#1C85B5" d="M20.034 25.932h.532l1.736-5.922h1.134l-1.946 6.286c-.103.327-.208.698-.315 1.113a5.2 5.2 0 01-.455 1.169 2.807 2.807 0 01-.798.924c-.336.252-.775.378-1.316.378-.121 0-.25-.014-.385-.042a3.856 3.856 0 01-.399-.105 2.574 2.574 0 01-.364-.147.977.977 0 01-.252-.168l.392-1.008c.056.047.133.093.231.14.098.047.205.086.322.119.117.033.231.06.343.084.112.023.205.035.28.035.7 0 1.176-.593 1.428-1.778h-.938l-2.94-7h1.26l2.45 5.922zm5.516 1.078v-.938h2.436v-5.124H25.55v-.938h3.556v6.062h2.38v.938H25.55zm2.058-8.988c0-.252.084-.469.252-.651a.838.838 0 01.644-.273c.27 0 .497.091.679.273a.889.889 0 01.273.651.806.806 0 01-.273.616.963.963 0 01-.679.252.872.872 0 01-.644-.252.838.838 0 01-.252-.616zm12.278 8.106c-.168.15-.366.29-.595.42a4.39 4.39 0 01-.749.336c-.27.093-.553.166-.847.217-.294.051-.59.077-.889.077-.56 0-1.055-.086-1.484-.259a2.858 2.858 0 01-1.078-.742 3.234 3.234 0 01-.658-1.155 4.767 4.767 0 01-.224-1.512c0-.588.082-1.11.245-1.568.163-.457.399-.84.707-1.148a3.08 3.08 0 011.12-.707 4.187 4.187 0 011.47-.245c.392 0 .78.051 1.162.154.383.103.721.296 1.015.581.294.285.52.677.679 1.176.159.5.215 1.146.168 1.939H34.51c0 .84.226 1.468.679 1.883.453.415 1.057.623 1.813.623.252 0 .502-.03.749-.091.247-.06.483-.133.707-.217a3.72 3.72 0 00.595-.28c.173-.103.306-.196.399-.28l.434.798zm-2.954-5.362c-.308 0-.6.033-.875.098a1.995 1.995 0 00-.728.329c-.21.154-.383.355-.518.602s-.222.553-.259.917h4.354c-.047-.616-.245-1.094-.595-1.435-.35-.34-.81-.511-1.379-.511zm5.614-3.556h2.324v7.448c0 .57.096.97.287 1.204.191.233.474.35.847.35.261 0 .511-.047.749-.14.238-.093.502-.252.791-.476l.504.77c-.15.13-.313.247-.49.35a3.638 3.638 0 01-1.106.42 2.963 2.963 0 01-1.442-.077 1.579 1.579 0 01-.679-.427 1.897 1.897 0 01-.413-.777c-.093-.322-.14-.721-.14-1.197v-6.51h-1.232v-.938zm11.62 0h2.268v7.406c0 .084.005.189.014.315a15.6 15.6 0 00.084.812c.019.135.037.254.056.357h.938v.91h-1.862l-.14-1.078h-.056c-.205.355-.511.651-.917.889s-.875.357-1.407.357c-1.055 0-1.832-.296-2.331-.889-.5-.593-.749-1.514-.749-2.765 0-.588.084-1.108.252-1.561.168-.453.408-.83.721-1.134a3.118 3.118 0 011.127-.693 4.298 4.298 0 011.47-.238c.196 0 .371.005.525.014.154.01.296.023.427.042.13.019.254.044.371.077.117.033.245.068.385.105v-1.988h-1.176v-.938zm-.84 9.03c.57 0 1.017-.147 1.344-.441.327-.294.55-.735.672-1.323v-3.248a2.168 2.168 0 00-.693-.308c-.257-.065-.595-.098-1.015-.098-.747 0-1.335.217-1.764.651-.43.434-.644 1.118-.644 2.051 0 .383.035.74.105 1.071.07.331.187.618.35.861.163.243.38.434.651.574.27.14.602.21.994.21z"/><path id="1" fill="#A7333A" d="M67.858 26.002h2.198v-7.364l-2.24 1.568-.546-.798 3.08-2.198h.784v8.792h2.156v1.008h-5.432z"/><path id=";" fill="#7E7C7B" d="M77.686 26.24c0-.28.091-.506.273-.679.182-.173.418-.259.707-.259.355 0 .63.124.826.371.196.247.294.595.294 1.043a2.36 2.36 0 01-.637 1.659 2.465 2.465 0 01-.588.462c-.21.117-.404.203-.581.259l-.35-.546c.336-.13.625-.317.868-.56.243-.243.364-.537.364-.882-.13.028-.233.042-.308.042-.27 0-.483-.077-.637-.231-.154-.154-.231-.38-.231-.679zm.126-5.502c0-.299.084-.53.252-.693.168-.163.392-.245.672-.245.299 0 .532.082.7.245.168.163.252.394.252.693 0 .27-.084.495-.252.672-.168.177-.401.266-.7.266-.28 0-.504-.089-.672-.266a.938.938 0 01-.252-.672z"/><path id="yield" fill="#1C85B5" d="M20.034 42.932h.532l1.736-5.922h1.134l-1.946 6.286c-.103.327-.208.698-.315 1.113a5.2 5.2 0 01-.455 1.169 2.807 2.807 0 01-.798.924c-.336.252-.775.378-1.316.378-.121 0-.25-.014-.385-.042a3.856 3.856 0 01-.399-.105 2.574 2.574 0 01-.364-.147.977.977 0 01-.252-.168l.392-1.008c.056.047.133.093.231.14.098.047.205.086.322.119.117.033.231.06.343.084.112.023.205.035.28.035.7 0 1.176-.593 1.428-1.778h-.938l-2.94-7h1.26l2.45 5.922zm5.516 1.078v-.938h2.436v-5.124H25.55v-.938h3.556v6.062h2.38v.938H25.55zm2.058-8.988c0-.252.084-.469.252-.651a.838.838 0 01.644-.273c.27 0 .497.091.679.273a.889.889 0 01.273.651.806.806 0 01-.273.616.963.963 0 01-.679.252.872.872 0 01-.644-.252.838.838 0 01-.252-.616zm12.278 8.106c-.168.15-.366.29-.595.42a4.39 4.39 0 01-.749.336c-.27.093-.553.166-.847.217-.294.051-.59.077-.889.077-.56 0-1.055-.086-1.484-.259a2.858 2.858 0 01-1.078-.742 3.234 3.234 0 01-.658-1.155 4.767 4.767 0 01-.224-1.512c0-.588.082-1.11.245-1.568.163-.457.399-.84.707-1.148a3.08 3.08 0 011.12-.707 4.187 4.187 0 011.47-.245c.392 0 .78.051 1.162.154.383.103.721.296 1.015.581.294.285.52.677.679 1.176.159.5.215 1.146.168 1.939H34.51c0 .84.226 1.468.679 1.883.453.415 1.057.623 1.813.623.252 0 .502-.03.749-.091.247-.06.483-.133.707-.217a3.72 3.72 0 00.595-.28c.173-.103.306-.196.399-.28l.434.798zm-2.954-5.362c-.308 0-.6.033-.875.098a1.995 1.995 0 00-.728.329c-.21.154-.383.355-.518.602s-.222.553-.259.917h4.354c-.047-.616-.245-1.094-.595-1.435-.35-.34-.81-.511-1.379-.511zm5.614-3.556h2.324v7.448c0 .57.096.97.287 1.204.191.233.474.35.847.35.261 0 .511-.047.749-.14.238-.093.502-.252.791-.476l.504.77c-.15.13-.313.247-.49.35a3.638 3.638 0 01-1.106.42 2.963 2.963 0 01-1.442-.077 1.579 1.579 0 01-.679-.427 1.897 1.897 0 01-.413-.777c-.093-.322-.14-.721-.14-1.197v-6.51h-1.232v-.938zm11.62 0h2.268v7.406c0 .084.005.189.014.315a15.6 15.6 0 00.084.812c.019.135.037.254.056.357h.938v.91h-1.862l-.14-1.078h-.056c-.205.355-.511.651-.917.889s-.875.357-1.407.357c-1.055 0-1.832-.296-2.331-.889-.5-.593-.749-1.514-.749-2.765 0-.588.084-1.108.252-1.561.168-.453.408-.83.721-1.134a3.118 3.118 0 011.127-.693 4.298 4.298 0 011.47-.238c.196 0 .371.005.525.014.154.01.296.023.427.042.13.019.254.044.371.077.117.033.245.068.385.105v-1.988h-1.176v-.938zm-.84 9.03c.57 0 1.017-.147 1.344-.441.327-.294.55-.735.672-1.323v-3.248a2.168 2.168 0 00-.693-.308c-.257-.065-.595-.098-1.015-.098-.747 0-1.335.217-1.764.651-.43.434-.644 1.118-.644 2.051 0 .383.035.74.105 1.071.07.331.187.618.35.861.163.243.38.434.651.574.27.14.602.21.994.21z"/><path id="2" fill="#A7333A" d="M73.08 36.688c0 .859-.406 1.815-1.218 2.87-.812 1.055-1.946 2.203-3.402 3.444h4.928v1.008h-6.216v-1.008c.177-.168.42-.387.728-.658.308-.27.64-.572.994-.903a29.01 29.01 0 001.085-1.071c.369-.383.702-.775 1.001-1.176.299-.401.541-.803.728-1.204a2.75 2.75 0 00.28-1.162c0-.56-.147-1.001-.441-1.323-.294-.322-.735-.483-1.323-.483-.504 0-.929.056-1.274.168a3.101 3.101 0 00-.938.49l-.476-.77c.42-.299.866-.518 1.337-.658s.987-.21 1.547-.21c.877 0 1.54.238 1.988.714.448.476.672 1.12.672 1.932z"/><path id=";" fill="#7E7C7B" d="M77.686 43.24c0-.28.091-.506.273-.679.182-.173.418-.259.707-.259.355 0 .63.124.826.371.196.247.294.595.294 1.043a2.36 2.36 0 01-.637 1.659 2.465 2.465 0 01-.588.462c-.21.117-.404.203-.581.259l-.35-.546c.336-.13.625-.317.868-.56.243-.243.364-.537.364-.882-.13.028-.233.042-.308.042-.27 0-.483-.077-.637-.231-.154-.154-.231-.38-.231-.679zm.126-5.502c0-.299.084-.53.252-.693.168-.163.392-.245.672-.245.299 0 .532.082.7.245.168.163.252.394.252.693 0 .27-.084.495-.252.672-.168.177-.401.266-.7.266-.28 0-.504-.089-.672-.266a.938.938 0 01-.252-.672z"/><path id="return" fill="#1C85B5" d="M16.604 61.01v-.938h1.89v-5.124h-1.89v-.938h2.618l.224.91h.07c.317-.29.672-.537 1.064-.742.392-.205.859-.308 1.4-.308.317 0 .572.06.763.182.191.121.34.299.448.532.107.233.18.516.217.847.037.331.056.707.056 1.127l-.98.014c0-.597-.058-1.036-.175-1.316-.117-.28-.329-.42-.637-.42-.29 0-.55.042-.784.126a2.565 2.565 0 00-.609.308c-.173.121-.32.243-.441.364s-.21.224-.266.308v4.13h2.688v.938h-5.656zm14.882-.882c-.168.15-.366.29-.595.42a4.39 4.39 0 01-.749.336c-.27.093-.553.166-.847.217-.294.051-.59.077-.889.077-.56 0-1.055-.086-1.484-.259a2.858 2.858 0 01-1.078-.742 3.234 3.234 0 01-.658-1.155 4.767 4.767 0 01-.224-1.512c0-.588.082-1.11.245-1.568.163-.457.399-.84.707-1.148a3.08 3.08 0 011.12-.707 4.187 4.187 0 011.47-.245c.392 0 .78.051 1.162.154.383.103.721.296 1.015.581.294.285.52.677.679 1.176.159.5.215 1.146.168 1.939H26.11c0 .84.226 1.468.679 1.883.453.415 1.057.623 1.813.623.252 0 .502-.03.749-.091.247-.06.483-.133.707-.217a3.72 3.72 0 00.595-.28c.173-.103.306-.196.399-.28l.434.798zm-2.954-5.362c-.308 0-.6.033-.875.098a1.995 1.995 0 00-.728.329c-.21.154-.383.355-.518.602s-.222.553-.259.917h4.354c-.047-.616-.245-1.094-.595-1.435-.35-.34-.81-.511-1.379-.511zm4.382-.756h1.666v-1.386l1.092-.308v1.694h3.738v.938h-3.738v3.304c0 .681.166 1.185.497 1.512.331.327.805.49 1.421.49.42 0 .786-.08 1.099-.238.313-.159.595-.331.847-.518l.364.826a3.938 3.938 0 01-1.169.63 4.182 4.182 0 01-1.393.238 3.41 3.41 0 01-1.057-.161 2.426 2.426 0 01-.875-.497 2.38 2.38 0 01-.602-.861c-.15-.35-.224-.768-.224-1.253v-3.472h-1.666v-.938zm13.048 0h1.988v4.774c0 .457.028.896.084 1.316h.938v.91H47.11l-.042-1.19h-.056a2.938 2.938 0 01-.966.98c-.401.252-.887.378-1.456.378-.43 0-.796-.049-1.099-.147a1.556 1.556 0 01-.749-.511c-.196-.243-.34-.567-.434-.973-.093-.406-.14-.912-.14-1.519v-3.08h-.938v-.938h2.03v3.794c0 .383.016.726.049 1.029.033.303.1.56.203.77.103.21.254.369.455.476.2.107.469.161.805.161.485 0 .908-.159 1.267-.476.36-.317.632-.714.819-1.19v-3.626h-.896v-.938zm4.242 7v-.938h1.89v-5.124h-1.89v-.938h2.618l.224.91h.07c.317-.29.672-.537 1.064-.742.392-.205.859-.308 1.4-.308.317 0 .572.06.763.182.191.121.34.299.448.532.107.233.18.516.217.847.037.331.056.707.056 1.127l-.98.014c0-.597-.058-1.036-.175-1.316-.117-.28-.329-.42-.637-.42-.29 0-.55.042-.784.126a2.565 2.565 0 00-.609.308c-.173.121-.32.243-.441.364s-.21.224-.266.308v4.13h2.688v.938h-5.656zm8.778-4.55a14.05 14.05 0 00-.063-1.176 4.657 4.657 0 00-.049-.364h-.938v-.91h1.876l.126 1.134h.07c.093-.159.217-.315.371-.469a2.91 2.91 0 011.225-.721c.252-.075.518-.112.798-.112.43 0 .81.047 1.141.14.331.093.607.259.826.497.22.238.385.56.497.966.112.406.168.922.168 1.547v4.018h-1.092v-3.808c0-.775-.126-1.358-.378-1.75-.252-.392-.71-.588-1.372-.588-.243 0-.478.049-.707.147a2.44 2.44 0 00-.623.385c-.187.159-.35.343-.49.553-.14.21-.243.432-.308.665v4.396h-1.078v-4.55z"/><path id="3" fill="#A7333A" d="M77.952 60.212c.373 0 .716-.049 1.029-.147a2.65 2.65 0 00.819-.413 1.9 1.9 0 00.546-.644c.13-.252.196-.532.196-.84 0-.644-.226-1.104-.679-1.379-.453-.275-1.062-.413-1.827-.413h-.896v-.672l2.758-3.486h-4.186V51.21h5.53v1.008l-2.758 3.234h.224c.43 0 .821.06 1.176.182.355.121.663.294.924.518.261.224.464.495.609.812.145.317.217.677.217 1.078 0 .504-.098.952-.294 1.344a2.89 2.89 0 01-.798.987c-.336.266-.73.467-1.183.602a5.034 5.034 0 01-1.449.203c-.476 0-.889-.035-1.239-.105-.35-.07-.67-.156-.959-.259l.28-.98c.243.112.527.203.854.273a5.3 5.3 0 001.106.105z"/><path id=";}" fill="#7E7C7B" d="M86.086 60.24c0-.28.091-.506.273-.679.182-.173.418-.259.707-.259.355 0 .63.124.826.371.196.247.294.595.294 1.043a2.36 2.36 0 01-.637 1.659 2.465 2.465 0 01-.588.462c-.21.117-.404.203-.581.259l-.35-.546c.336-.13.625-.317.868-.56.243-.243.364-.537.364-.882-.13.028-.233.042-.308.042-.27 0-.483-.077-.637-.231-.154-.154-.231-.38-.231-.679zm.126-5.502c0-.299.084-.53.252-.693.168-.163.392-.245.672-.245.299 0 .532.082.7.245.168.163.252.394.252.693 0 .27-.084.495-.252.672-.168.177-.401.266-.7.266-.28 0-.504-.089-.672-.266a.938.938 0 01-.252-.672zM4.2 78.934c0 .756-.198 1.328-.595 1.715-.397.387-.922.581-1.575.581H0v-.98h1.526c.57 0 .975-.135 1.218-.406.243-.27.364-.69.364-1.26V77.24c0-.364.07-.695.21-.994.14-.299.308-.558.504-.777.196-.22.397-.392.602-.518.205-.126.373-.198.504-.217v-.084c-.13-.019-.299-.086-.504-.203a2.7 2.7 0 01-1.106-1.225c-.14-.299-.21-.64-.21-1.022v-1.358c0-.55-.114-.966-.343-1.246-.229-.28-.637-.42-1.225-.42H0v-.98h2.03c.317 0 .609.058.875.175.266.117.495.278.686.483.191.205.34.448.448.728.107.28.161.588.161.924v1.428c0 .43.068.789.203 1.078.135.29.303.525.504.707.2.182.415.313.644.392.229.08.432.119.609.119v.98c-.177 0-.38.047-.609.14a2.011 2.011 0 00-.644.434 2.44 2.44 0 00-.504.735c-.135.294-.203.642-.203 1.043v1.372z"/></g><path id="Line" fill="#C06334" fill-rule="nonzero" d="M286.5 42.5v6h32v2h-32v6l-14-7 14-7z" transform="matrix(-1 0 0 1 590 0)"/><text id="{value:-1,-done:-fal" fill="#AF6E24" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="326" y="54">{value: 1, done: false}</tspan></text></g></g></svg> +>>>>>>> 540d753e90789205fc6e75c502f68382c87dea9b diff --git a/1-js/12-generators-iterators/1-generators/generateSequence-3.svg b/1-js/12-generators-iterators/1-generators/generateSequence-3.svg index 0af8e9efd..720c88d52 100644 --- a/1-js/12-generators-iterators/1-generators/generateSequence-3.svg +++ b/1-js/12-generators-iterators/1-generators/generateSequence-3.svg @@ -1 +1,5 @@ -<svg xmlns="http://www.w3.org/2000/svg" width="519" height="150" viewBox="0 0 519 150"><defs><style>@import url(https://fonts.googleapis.com/css?family=Open+Sans:bold,italic,bolditalic%7CPT+Mono);@font-face{font-family:'PT Mono';font-weight:700;font-style:normal;src:local('PT MonoBold'),url(/font/PTMonoBold.woff2) format('woff2'),url(/font/PTMonoBold.woff) format('woff'),url(/font/PTMonoBold.ttf) format('truetype')}</style></defs><g id="generator" fill="none" fill-rule="evenodd" stroke="none" stroke-width="1"><g id="generateSequence-3.svg"><path id="Rectangle-1" fill="#FBF2EC" stroke="#DBAF88" stroke-width="2" d="M26 17h271v110H26z"/><g id="function*-generateSe" fill-rule="nonzero" transform="translate(40.12 25.99)"><path id="function" fill="#1C85B5" d="M.112 10.01v-.938h1.666V3.948H.112V3.01h1.666v-.392c0-.877.229-1.512.686-1.904.457-.392 1.11-.588 1.96-.588.308 0 .583.019.826.056.243.037.504.112.784.224l-.252.91a2.862 2.862 0 00-.7-.203 4.295 4.295 0 00-.616-.049c-.616 0-1.036.152-1.26.455-.224.303-.336.8-.336 1.491h2.898v.938H2.87v5.124h2.898v.938H.112zm12.25-7h1.988v4.774c0 .457.028.896.084 1.316h.938v.91H13.51l-.042-1.19h-.056a2.938 2.938 0 01-.966.98c-.401.252-.887.378-1.456.378-.43 0-.796-.049-1.099-.147a1.556 1.556 0 01-.749-.511c-.196-.243-.34-.567-.434-.973-.093-.406-.14-.912-.14-1.519v-3.08H7.63V3.01h2.03v3.794c0 .383.016.726.049 1.029.033.303.1.56.203.77.103.21.254.369.455.476.2.107.469.161.805.161.485 0 .908-.159 1.267-.476.36-.317.632-.714.819-1.19V3.948h-.896V3.01zm4.62 2.45a14.05 14.05 0 00-.063-1.176 4.657 4.657 0 00-.049-.364h-.938v-.91h1.876l.126 1.134h.07c.093-.159.217-.315.371-.469a2.91 2.91 0 011.225-.721c.252-.075.518-.112.798-.112.43 0 .81.047 1.141.14.331.093.607.259.826.497.22.238.385.56.497.966.112.406.168.922.168 1.547v4.018h-1.092V6.202c0-.775-.126-1.358-.378-1.75-.252-.392-.71-.588-1.372-.588-.243 0-.478.049-.707.147a2.44 2.44 0 00-.623.385c-.187.159-.35.343-.49.553-.14.21-.243.432-.308.665v4.396h-1.078V5.46zm13.244-1.372a5.531 5.531 0 00-.693-.189 3.61 3.61 0 00-.735-.077c-.915 0-1.596.215-2.044.644-.448.43-.672 1.11-.672 2.044 0 .41.065.777.196 1.099.13.322.317.595.56.819.243.224.534.397.875.518.34.121.716.182 1.127.182.439 0 .866-.075 1.281-.224.415-.15.763-.345 1.043-.588l.49.812c-.13.112-.294.229-.49.35a4.837 4.837 0 01-1.533.602 4.962 4.962 0 01-1.015.098c-.607 0-1.141-.086-1.603-.259a3.045 3.045 0 01-1.155-.742 3.176 3.176 0 01-.7-1.162 4.525 4.525 0 01-.238-1.505c0-.588.082-1.11.245-1.568.163-.457.399-.84.707-1.148a3.08 3.08 0 011.12-.707 4.187 4.187 0 011.47-.245c.69 0 1.253.06 1.687.182.434.121.8.257 1.099.406l-.014.042v1.946h-1.008v-1.33zm2.688-1.078h1.666V1.624l1.092-.308V3.01h3.738v.938h-3.738v3.304c0 .681.166 1.185.497 1.512.331.327.805.49 1.421.49.42 0 .786-.08 1.099-.238.313-.159.595-.331.847-.518l.364.826a3.938 3.938 0 01-1.169.63 4.182 4.182 0 01-1.393.238 3.41 3.41 0 01-1.057-.161 2.426 2.426 0 01-.875-.497 2.38 2.38 0 01-.602-.861c-.15-.35-.224-.768-.224-1.253V3.948h-1.666V3.01zm9.436 7v-.938h2.436V3.948H42.35V3.01h3.556v6.062h2.38v.938H42.35zm2.058-8.988c0-.252.084-.469.252-.651a.838.838 0 01.644-.273c.27 0 .497.091.679.273a.889.889 0 01.273.651.806.806 0 01-.273.616.963.963 0 01-.679.252.872.872 0 01-.644-.252.838.838 0 01-.252-.616zm5.67 5.488c0-1.13.294-2.023.882-2.681.588-.658 1.428-.987 2.52-.987.588 0 1.094.096 1.519.287.425.191.777.45 1.057.777.28.327.488.714.623 1.162.135.448.203.929.203 1.442 0 .56-.075 1.066-.224 1.519-.15.453-.369.838-.658 1.155-.29.317-.646.562-1.071.735a3.82 3.82 0 01-1.449.259c-.579 0-1.083-.096-1.512-.287a2.967 2.967 0 01-1.064-.777 3.168 3.168 0 01-.623-1.162 4.963 4.963 0 01-.203-1.442zm1.162 0c0 .327.04.653.119.98.08.327.208.62.385.882.177.261.408.471.693.63.285.159.632.238 1.043.238.747 0 1.309-.231 1.687-.693.378-.462.567-1.141.567-2.037 0-.336-.04-.665-.119-.987a2.608 2.608 0 00-.392-.875 2.066 2.066 0 00-.7-.63c-.285-.159-.632-.238-1.043-.238-.747 0-1.307.229-1.68.686-.373.457-.56 1.139-.56 2.044zm7.742-1.05a14.05 14.05 0 00-.063-1.176 4.657 4.657 0 00-.049-.364h-.938v-.91h1.876l.126 1.134h.07c.093-.159.217-.315.371-.469a2.91 2.91 0 011.225-.721c.252-.075.518-.112.798-.112.43 0 .81.047 1.141.14.331.093.607.259.826.497.22.238.385.56.497.966.112.406.168.922.168 1.547v4.018h-1.092V6.202c0-.775-.126-1.358-.378-1.75-.252-.392-.71-.588-1.372-.588-.243 0-.478.049-.707.147a2.44 2.44 0 00-.623.385c-.187.159-.35.343-.49.553-.14.21-.243.432-.308.665v4.396h-1.078V5.46z"/><path id="*" fill="#DBAF88" d="M69.062.014l1.246 2.45L71.512 0l.966.518-1.694 2.366 2.842-.21v1.134l-2.758-.224 1.624 2.254-.938.546-1.302-2.506-1.232 2.506-1.008-.546 1.694-2.254-2.772.224V2.674l2.772.238L68.096.56z"/><path id="generateSequence" fill="#181717" d="M90.216 10.36c0 .439-.084.824-.252 1.155a2.269 2.269 0 01-.693.819 3.127 3.127 0 01-1.029.483 4.81 4.81 0 01-1.274.161c-.55 0-1.031-.056-1.442-.168a4.29 4.29 0 01-1.064-.434l.532-.994c.084.075.194.147.329.217s.292.135.469.196c.177.06.366.11.567.147.2.037.399.056.595.056.41 0 .754-.037 1.029-.112.275-.075.497-.191.665-.35.168-.159.29-.364.364-.616a3.29 3.29 0 00.112-.924v-.784h-.056a2.18 2.18 0 01-.826.714c-.336.168-.77.252-1.302.252-1.064 0-1.846-.296-2.345-.889-.5-.593-.749-1.514-.749-2.765 0-1.195.317-2.098.952-2.709.635-.611 1.577-.917 2.828-.917.579 0 1.071.04 1.477.119.406.08.777.18 1.113.301v7.042zm-3.122-1.12c.57 0 1.017-.147 1.344-.441.327-.294.555-.744.686-1.351V4.13c-.41-.196-.985-.294-1.722-.294-.747 0-1.335.22-1.764.658-.43.439-.644 1.11-.644 2.016 0 .401.037.768.112 1.099.075.331.194.618.357.861.163.243.378.432.644.567.266.135.595.203.987.203zm11.592-.112c-.168.15-.366.29-.595.42a4.39 4.39 0 01-.749.336c-.27.093-.553.166-.847.217-.294.051-.59.077-.889.077-.56 0-1.055-.086-1.484-.259a2.858 2.858 0 01-1.078-.742 3.234 3.234 0 01-.658-1.155 4.767 4.767 0 01-.224-1.512c0-.588.082-1.11.245-1.568.163-.457.399-.84.707-1.148a3.08 3.08 0 011.12-.707 4.187 4.187 0 011.47-.245c.392 0 .78.051 1.162.154.383.103.721.296 1.015.581.294.285.52.677.679 1.176.159.5.215 1.146.168 1.939H93.31c0 .84.226 1.468.679 1.883.453.415 1.057.623 1.813.623.252 0 .502-.03.749-.091.247-.06.483-.133.707-.217a3.72 3.72 0 00.595-.28c.173-.103.306-.196.399-.28l.434.798zm-2.954-5.362c-.308 0-.6.033-.875.098a1.995 1.995 0 00-.728.329c-.21.154-.383.355-.518.602s-.222.553-.259.917h4.354c-.047-.616-.245-1.094-.595-1.435-.35-.34-.81-.511-1.379-.511zm5.25 1.694a14.051 14.051 0 00-.063-1.176 4.657 4.657 0 00-.049-.364h-.938v-.91h1.876l.126 1.134h.07c.093-.159.217-.315.371-.469a2.91 2.91 0 011.225-.721c.252-.075.518-.112.798-.112.43 0 .81.047 1.141.14.331.093.607.259.826.497.22.238.385.56.497.966.112.406.168.922.168 1.547v4.018h-1.092V6.202c0-.775-.126-1.358-.378-1.75-.252-.392-.71-.588-1.372-.588-.243 0-.478.049-.707.147a2.44 2.44 0 00-.623.385c-.187.159-.35.343-.49.553-.14.21-.243.432-.308.665v4.396h-1.078V5.46zm14.504 3.668c-.168.15-.366.29-.595.42a4.39 4.39 0 01-.749.336c-.27.093-.553.166-.847.217-.294.051-.59.077-.889.077-.56 0-1.055-.086-1.484-.259a2.858 2.858 0 01-1.078-.742 3.234 3.234 0 01-.658-1.155 4.767 4.767 0 01-.224-1.512c0-.588.082-1.11.245-1.568.163-.457.399-.84.707-1.148a3.08 3.08 0 011.12-.707 4.187 4.187 0 011.47-.245c.392 0 .78.051 1.162.154.383.103.721.296 1.015.581.294.285.52.677.679 1.176.159.5.215 1.146.168 1.939h-5.418c0 .84.226 1.468.679 1.883.453.415 1.057.623 1.813.623.252 0 .502-.03.749-.091.247-.06.483-.133.707-.217a3.72 3.72 0 00.595-.28c.173-.103.306-.196.399-.28l.434.798zm-2.954-5.362c-.308 0-.6.033-.875.098a1.995 1.995 0 00-.728.329c-.21.154-.383.355-.518.602s-.222.553-.259.917h4.354c-.047-.616-.245-1.094-.595-1.435-.35-.34-.81-.511-1.379-.511zm4.872 6.244v-.938h1.89V3.948h-1.89V3.01h2.618l.224.91h.07c.317-.29.672-.537 1.064-.742.392-.205.859-.308 1.4-.308.317 0 .572.06.763.182.191.121.34.299.448.532.107.233.18.516.217.847.037.331.056.707.056 1.127l-.98.014c0-.597-.058-1.036-.175-1.316-.117-.28-.329-.42-.637-.42-.29 0-.55.042-.784.126a2.565 2.565 0 00-.609.308c-.173.121-.32.243-.441.364s-.21.224-.266.308v4.13h2.688v.938h-5.656zm8.988-6.454a4.447 4.447 0 011.358-.504 7.423 7.423 0 011.484-.154c.476 0 .866.075 1.169.224.303.15.541.343.714.581.173.238.29.509.35.812.06.303.091.609.091.917 0 .355-.01.733-.028 1.134-.019.401-.033.803-.042 1.204 0 .467.028.91.084 1.33h.938v.91h-1.862l-.126-1.05h-.07c-.056.084-.14.191-.252.322-.112.13-.259.259-.441.385a2.749 2.749 0 01-1.589.469c-.69 0-1.237-.177-1.638-.532-.401-.355-.602-.84-.602-1.456 0-.476.105-.873.315-1.19.21-.317.511-.56.903-.728.392-.168.866-.266 1.421-.294a9.544 9.544 0 011.869.112c.047-.43.054-.786.021-1.071-.033-.285-.107-.511-.224-.679a.938.938 0 00-.49-.357 2.482 2.482 0 00-.777-.105c-.42 0-.821.058-1.204.175-.383.117-.723.236-1.022.357l-.35-.812zm2.058 5.642c.261 0 .504-.042.728-.126a2.22 2.22 0 00.588-.322 2.133 2.133 0 00.672-.868v-.98a7.92 7.92 0 00-1.344-.126c-.41 0-.765.044-1.064.133-.299.089-.532.226-.7.413-.168.187-.252.43-.252.728 0 .308.105.576.315.805.21.229.562.343 1.057.343zm5.264-6.188h1.666V1.624l1.092-.308V3.01h3.738v.938h-3.738v3.304c0 .681.166 1.185.497 1.512.331.327.805.49 1.421.49.42 0 .786-.08 1.099-.238.313-.159.595-.331.847-.518l.364.826a3.938 3.938 0 01-1.169.63 4.182 4.182 0 01-1.393.238 3.41 3.41 0 01-1.057-.161 2.426 2.426 0 01-.875-.497 2.38 2.38 0 01-.602-.861c-.15-.35-.224-.768-.224-1.253V3.948h-1.666V3.01zm15.372 6.118c-.168.15-.366.29-.595.42a4.39 4.39 0 01-.749.336c-.27.093-.553.166-.847.217-.294.051-.59.077-.889.077-.56 0-1.055-.086-1.484-.259a2.858 2.858 0 01-1.078-.742 3.234 3.234 0 01-.658-1.155 4.767 4.767 0 01-.224-1.512c0-.588.082-1.11.245-1.568.163-.457.399-.84.707-1.148a3.08 3.08 0 011.12-.707 4.187 4.187 0 011.47-.245c.392 0 .78.051 1.162.154.383.103.721.296 1.015.581.294.285.52.677.679 1.176.159.5.215 1.146.168 1.939h-5.418c0 .84.226 1.468.679 1.883.453.415 1.057.623 1.813.623.252 0 .502-.03.749-.091.247-.06.483-.133.707-.217a3.72 3.72 0 00.595-.28c.173-.103.306-.196.399-.28l.434.798zm-2.954-5.362c-.308 0-.6.033-.875.098a1.995 1.995 0 00-.728.329c-.21.154-.383.355-.518.602s-.222.553-.259.917h4.354c-.047-.616-.245-1.094-.595-1.435-.35-.34-.81-.511-1.379-.511zm6.048 4.858c.28.15.595.273.945.371.35.098.702.147 1.057.147.308 0 .597-.03.868-.091.27-.06.506-.159.707-.294.2-.135.36-.306.476-.511a1.45 1.45 0 00.175-.728c0-.383-.128-.695-.385-.938a3.824 3.824 0 00-.959-.644 17.73 17.73 0 00-1.246-.546 7.417 7.417 0 01-1.246-.63 3.498 3.498 0 01-.959-.889c-.257-.35-.385-.796-.385-1.337 0-.383.077-.728.231-1.036a2.24 2.24 0 01.651-.784c.28-.215.618-.38 1.015-.497a4.68 4.68 0 011.323-.175c.56 0 1.069.04 1.526.119.457.08.821.184 1.092.315l.028-.014V.49h.014l-.014.042v2.24h-1.036V1.274a7.635 7.635 0 00-.77-.14 6.788 6.788 0 00-.896-.056c-.308 0-.586.037-.833.112a2.08 2.08 0 00-.63.301 1.37 1.37 0 00-.399.441 1.08 1.08 0 00-.14.532c0 .364.128.667.385.91s.576.46.959.651.798.38 1.246.567c.448.187.863.404 1.246.651s.702.544.959.889.385.775.385 1.288c0 .42-.077.798-.231 1.134a2.494 2.494 0 01-.658.868 2.97 2.97 0 01-1.05.56c-.415.13-.884.196-1.407.196-.355 0-.69-.028-1.008-.084a6.883 6.883 0 01-1.589-.476 7.642 7.642 0 01-.497-.238l.014-.042V7.07h1.036v1.554zm13.706.504c-.168.15-.366.29-.595.42a4.39 4.39 0 01-.749.336c-.27.093-.553.166-.847.217-.294.051-.59.077-.889.077-.56 0-1.055-.086-1.484-.259a2.858 2.858 0 01-1.078-.742 3.234 3.234 0 01-.658-1.155 4.767 4.767 0 01-.224-1.512c0-.588.082-1.11.245-1.568.163-.457.399-.84.707-1.148a3.08 3.08 0 011.12-.707 4.187 4.187 0 011.47-.245c.392 0 .78.051 1.162.154.383.103.721.296 1.015.581.294.285.52.677.679 1.176.159.5.215 1.146.168 1.939h-5.418c0 .84.226 1.468.679 1.883.453.415 1.057.623 1.813.623.252 0 .502-.03.749-.091.247-.06.483-.133.707-.217a3.72 3.72 0 00.595-.28c.173-.103.306-.196.399-.28l.434.798zm-2.954-5.362c-.308 0-.6.033-.875.098a1.995 1.995 0 00-.728.329c-.21.154-.383.355-.518.602s-.222.553-.259.917h4.354c-.047-.616-.245-1.094-.595-1.435-.35-.34-.81-.511-1.379-.511zm11.158 9.044h-1.092V9.226h-.056c-.215.308-.49.544-.826.707-.336.163-.77.245-1.302.245-1.064 0-1.846-.296-2.345-.889-.5-.593-.749-1.514-.749-2.765 0-1.195.317-2.098.952-2.709.635-.611 1.577-.917 2.828-.917.55 0 1.064.047 1.54.14.476.093.826.191 1.05.294v9.478zm-3.108-3.57c1.11 0 1.783-.583 2.016-1.75V4.116a2.435 2.435 0 00-.735-.217 6.723 6.723 0 00-.973-.063c-.747 0-1.335.215-1.764.644-.43.43-.644 1.106-.644 2.03 0 .401.035.768.105 1.099.07.331.189.618.357.861.168.243.385.432.651.567.266.135.595.203.987.203zm9.38-6.23h1.988v4.774c0 .457.028.896.084 1.316h.938v.91h-1.862l-.042-1.19h-.056a2.938 2.938 0 01-.966.98c-.401.252-.887.378-1.456.378-.43 0-.796-.049-1.099-.147a1.556 1.556 0 01-.749-.511c-.196-.243-.34-.567-.434-.973-.093-.406-.14-.912-.14-1.519v-3.08h-.938V3.01h2.03v3.794c0 .383.016.726.049 1.029.033.303.1.56.203.77.103.21.254.369.455.476.2.107.469.161.805.161.485 0 .908-.159 1.267-.476.36-.317.632-.714.819-1.19V3.948h-.896V3.01zm10.724 6.118c-.168.15-.366.29-.595.42a4.39 4.39 0 01-.749.336c-.27.093-.553.166-.847.217-.294.051-.59.077-.889.077-.56 0-1.055-.086-1.484-.259a2.858 2.858 0 01-1.078-.742 3.234 3.234 0 01-.658-1.155 4.767 4.767 0 01-.224-1.512c0-.588.082-1.11.245-1.568.163-.457.399-.84.707-1.148a3.08 3.08 0 011.12-.707 4.187 4.187 0 011.47-.245c.392 0 .78.051 1.162.154.383.103.721.296 1.015.581.294.285.52.677.679 1.176.159.5.215 1.146.168 1.939h-5.418c0 .84.226 1.468.679 1.883.453.415 1.057.623 1.813.623.252 0 .502-.03.749-.091.247-.06.483-.133.707-.217a3.72 3.72 0 00.595-.28c.173-.103.306-.196.399-.28l.434.798zm-2.954-5.362c-.308 0-.6.033-.875.098a1.995 1.995 0 00-.728.329c-.21.154-.383.355-.518.602s-.222.553-.259.917h4.354c-.047-.616-.245-1.094-.595-1.435-.35-.34-.81-.511-1.379-.511zm5.25 1.694a14.051 14.051 0 00-.063-1.176 4.657 4.657 0 00-.049-.364h-.938v-.91h1.876l.126 1.134h.07c.093-.159.217-.315.371-.469A2.91 2.91 0 01196 2.954c.252-.075.518-.112.798-.112.43 0 .81.047 1.141.14.331.093.607.259.826.497.22.238.385.56.497.966.112.406.168.922.168 1.547v4.018h-1.092V6.202c0-.775-.126-1.358-.378-1.75-.252-.392-.71-.588-1.372-.588-.243 0-.478.049-.707.147a2.44 2.44 0 00-.623.385c-.187.159-.35.343-.49.553-.14.21-.243.432-.308.665v4.396h-1.078V5.46zm13.244-1.372a5.531 5.531 0 00-.693-.189 3.61 3.61 0 00-.735-.077c-.915 0-1.596.215-2.044.644-.448.43-.672 1.11-.672 2.044 0 .41.065.777.196 1.099.13.322.317.595.56.819.243.224.534.397.875.518.34.121.716.182 1.127.182.439 0 .866-.075 1.281-.224.415-.15.763-.345 1.043-.588l.49.812c-.13.112-.294.229-.49.35a4.837 4.837 0 01-1.533.602 4.962 4.962 0 01-1.015.098c-.607 0-1.141-.086-1.603-.259a3.045 3.045 0 01-1.155-.742 3.176 3.176 0 01-.7-1.162 4.525 4.525 0 01-.238-1.505c0-.588.082-1.11.245-1.568.163-.457.399-.84.707-1.148a3.08 3.08 0 011.12-.707 4.187 4.187 0 011.47-.245c.69 0 1.253.06 1.687.182.434.121.8.257 1.099.406l-.014.042v1.946h-1.008v-1.33zm9.66 5.04c-.168.15-.366.29-.595.42a4.39 4.39 0 01-.749.336c-.27.093-.553.166-.847.217-.294.051-.59.077-.889.077-.56 0-1.055-.086-1.484-.259a2.858 2.858 0 01-1.078-.742 3.234 3.234 0 01-.658-1.155 4.767 4.767 0 01-.224-1.512c0-.588.082-1.11.245-1.568.163-.457.399-.84.707-1.148a3.08 3.08 0 011.12-.707 4.187 4.187 0 011.47-.245c.392 0 .78.051 1.162.154.383.103.721.296 1.015.581.294.285.52.677.679 1.176.159.5.215 1.146.168 1.939h-5.418c0 .84.226 1.468.679 1.883.453.415 1.057.623 1.813.623.252 0 .502-.03.749-.091.247-.06.483-.133.707-.217a3.72 3.72 0 00.595-.28c.173-.103.306-.196.399-.28l.434.798zm-2.954-5.362c-.308 0-.6.033-.875.098a1.995 1.995 0 00-.728.329c-.21.154-.383.355-.518.602s-.222.553-.259.917h4.354c-.047-.616-.245-1.094-.595-1.435-.35-.34-.81-.511-1.379-.511z"/><path id="(){" fill="#7E7C7B" d="M223.328 12.978a6.964 6.964 0 01-1.757-.707 5.036 5.036 0 01-1.428-1.225c-.406-.504-.728-1.12-.966-1.848s-.357-1.591-.357-2.59c0-.99.121-1.855.364-2.597s.57-1.372.98-1.89c.41-.518.889-.933 1.435-1.246a6.005 6.005 0 011.729-.665l.35.882a7.086 7.086 0 00-1.512.623 3.928 3.928 0 00-1.183 1.022c-.331.425-.588.952-.77 1.582-.182.63-.273 1.393-.273 2.289 0 .905.11 1.678.329 2.317.22.64.509 1.171.868 1.596.36.425.76.756 1.204.994.443.238.889.404 1.337.497l-.35.966zm4.354-.966a4.965 4.965 0 001.337-.497 4.15 4.15 0 001.204-.994c.36-.425.649-.957.868-1.596.22-.64.329-1.412.329-2.317 0-.896-.091-1.659-.273-2.289-.182-.63-.439-1.157-.77-1.582a3.928 3.928 0 00-1.183-1.022 7.086 7.086 0 00-1.512-.623l.35-.882c.607.13 1.183.352 1.729.665a4.984 4.984 0 011.435 1.246c.41.518.737 1.148.98 1.89s.364 1.608.364 2.597c0 .999-.119 1.862-.357 2.59-.238.728-.56 1.344-.966 1.848a5.036 5.036 0 01-1.428 1.225 6.964 6.964 0 01-1.757.707l-.35-.966zm17.878-2.45c0-.401-.068-.749-.203-1.043a2.44 2.44 0 00-.504-.735c-.2-.196-.415-.34-.644-.434a1.641 1.641 0 00-.609-.14v-.98c.177 0 .38-.04.609-.119.229-.08.443-.21.644-.392.2-.182.369-.418.504-.707.135-.29.203-.649.203-1.078V2.506c0-.336.054-.644.161-.924a2.22 2.22 0 01.448-.728c.191-.205.42-.366.686-.483.266-.117.558-.175.875-.175h2.03v.98h-1.54c-.588 0-.996.14-1.225.42-.229.28-.343.695-.343 1.246V4.2c0 .383-.07.723-.21 1.022a2.7 2.7 0 01-1.106 1.225c-.205.117-.373.184-.504.203v.084c.121.019.285.091.49.217.205.126.406.299.602.518.196.22.366.478.511.777.145.299.217.63.217.994v1.344c0 .57.121.99.364 1.26s.649.406 1.218.406h1.526v.98h-2.03c-.653 0-1.178-.194-1.575-.581-.397-.387-.595-.959-.595-1.715V9.562z"/><path id="yield" fill="#1C85B5" d="M20.034 25.932h.532l1.736-5.922h1.134l-1.946 6.286c-.103.327-.208.698-.315 1.113a5.2 5.2 0 01-.455 1.169 2.807 2.807 0 01-.798.924c-.336.252-.775.378-1.316.378-.121 0-.25-.014-.385-.042a3.856 3.856 0 01-.399-.105 2.574 2.574 0 01-.364-.147.977.977 0 01-.252-.168l.392-1.008c.056.047.133.093.231.14.098.047.205.086.322.119.117.033.231.06.343.084.112.023.205.035.28.035.7 0 1.176-.593 1.428-1.778h-.938l-2.94-7h1.26l2.45 5.922zm5.516 1.078v-.938h2.436v-5.124H25.55v-.938h3.556v6.062h2.38v.938H25.55zm2.058-8.988c0-.252.084-.469.252-.651a.838.838 0 01.644-.273c.27 0 .497.091.679.273a.889.889 0 01.273.651.806.806 0 01-.273.616.963.963 0 01-.679.252.872.872 0 01-.644-.252.838.838 0 01-.252-.616zm12.278 8.106c-.168.15-.366.29-.595.42a4.39 4.39 0 01-.749.336c-.27.093-.553.166-.847.217-.294.051-.59.077-.889.077-.56 0-1.055-.086-1.484-.259a2.858 2.858 0 01-1.078-.742 3.234 3.234 0 01-.658-1.155 4.767 4.767 0 01-.224-1.512c0-.588.082-1.11.245-1.568.163-.457.399-.84.707-1.148a3.08 3.08 0 011.12-.707 4.187 4.187 0 011.47-.245c.392 0 .78.051 1.162.154.383.103.721.296 1.015.581.294.285.52.677.679 1.176.159.5.215 1.146.168 1.939H34.51c0 .84.226 1.468.679 1.883.453.415 1.057.623 1.813.623.252 0 .502-.03.749-.091.247-.06.483-.133.707-.217a3.72 3.72 0 00.595-.28c.173-.103.306-.196.399-.28l.434.798zm-2.954-5.362c-.308 0-.6.033-.875.098a1.995 1.995 0 00-.728.329c-.21.154-.383.355-.518.602s-.222.553-.259.917h4.354c-.047-.616-.245-1.094-.595-1.435-.35-.34-.81-.511-1.379-.511zm5.614-3.556h2.324v7.448c0 .57.096.97.287 1.204.191.233.474.35.847.35.261 0 .511-.047.749-.14.238-.093.502-.252.791-.476l.504.77c-.15.13-.313.247-.49.35a3.638 3.638 0 01-1.106.42 2.963 2.963 0 01-1.442-.077 1.579 1.579 0 01-.679-.427 1.897 1.897 0 01-.413-.777c-.093-.322-.14-.721-.14-1.197v-6.51h-1.232v-.938zm11.62 0h2.268v7.406c0 .084.005.189.014.315a15.6 15.6 0 00.084.812c.019.135.037.254.056.357h.938v.91h-1.862l-.14-1.078h-.056c-.205.355-.511.651-.917.889s-.875.357-1.407.357c-1.055 0-1.832-.296-2.331-.889-.5-.593-.749-1.514-.749-2.765 0-.588.084-1.108.252-1.561.168-.453.408-.83.721-1.134a3.118 3.118 0 011.127-.693 4.298 4.298 0 011.47-.238c.196 0 .371.005.525.014.154.01.296.023.427.042.13.019.254.044.371.077.117.033.245.068.385.105v-1.988h-1.176v-.938zm-.84 9.03c.57 0 1.017-.147 1.344-.441.327-.294.55-.735.672-1.323v-3.248a2.168 2.168 0 00-.693-.308c-.257-.065-.595-.098-1.015-.098-.747 0-1.335.217-1.764.651-.43.434-.644 1.118-.644 2.051 0 .383.035.74.105 1.071.07.331.187.618.35.861.163.243.38.434.651.574.27.14.602.21.994.21z"/><path id="1" fill="#A7333A" d="M67.858 26.002h2.198v-7.364l-2.24 1.568-.546-.798 3.08-2.198h.784v8.792h2.156v1.008h-5.432z"/><path id=";" fill="#7E7C7B" d="M77.686 26.24c0-.28.091-.506.273-.679.182-.173.418-.259.707-.259.355 0 .63.124.826.371.196.247.294.595.294 1.043a2.36 2.36 0 01-.637 1.659 2.465 2.465 0 01-.588.462c-.21.117-.404.203-.581.259l-.35-.546c.336-.13.625-.317.868-.56.243-.243.364-.537.364-.882-.13.028-.233.042-.308.042-.27 0-.483-.077-.637-.231-.154-.154-.231-.38-.231-.679zm.126-5.502c0-.299.084-.53.252-.693.168-.163.392-.245.672-.245.299 0 .532.082.7.245.168.163.252.394.252.693 0 .27-.084.495-.252.672-.168.177-.401.266-.7.266-.28 0-.504-.089-.672-.266a.938.938 0 01-.252-.672z"/><path id="yield" fill="#1C85B5" d="M20.034 42.932h.532l1.736-5.922h1.134l-1.946 6.286c-.103.327-.208.698-.315 1.113a5.2 5.2 0 01-.455 1.169 2.807 2.807 0 01-.798.924c-.336.252-.775.378-1.316.378-.121 0-.25-.014-.385-.042a3.856 3.856 0 01-.399-.105 2.574 2.574 0 01-.364-.147.977.977 0 01-.252-.168l.392-1.008c.056.047.133.093.231.14.098.047.205.086.322.119.117.033.231.06.343.084.112.023.205.035.28.035.7 0 1.176-.593 1.428-1.778h-.938l-2.94-7h1.26l2.45 5.922zm5.516 1.078v-.938h2.436v-5.124H25.55v-.938h3.556v6.062h2.38v.938H25.55zm2.058-8.988c0-.252.084-.469.252-.651a.838.838 0 01.644-.273c.27 0 .497.091.679.273a.889.889 0 01.273.651.806.806 0 01-.273.616.963.963 0 01-.679.252.872.872 0 01-.644-.252.838.838 0 01-.252-.616zm12.278 8.106c-.168.15-.366.29-.595.42a4.39 4.39 0 01-.749.336c-.27.093-.553.166-.847.217-.294.051-.59.077-.889.077-.56 0-1.055-.086-1.484-.259a2.858 2.858 0 01-1.078-.742 3.234 3.234 0 01-.658-1.155 4.767 4.767 0 01-.224-1.512c0-.588.082-1.11.245-1.568.163-.457.399-.84.707-1.148a3.08 3.08 0 011.12-.707 4.187 4.187 0 011.47-.245c.392 0 .78.051 1.162.154.383.103.721.296 1.015.581.294.285.52.677.679 1.176.159.5.215 1.146.168 1.939H34.51c0 .84.226 1.468.679 1.883.453.415 1.057.623 1.813.623.252 0 .502-.03.749-.091.247-.06.483-.133.707-.217a3.72 3.72 0 00.595-.28c.173-.103.306-.196.399-.28l.434.798zm-2.954-5.362c-.308 0-.6.033-.875.098a1.995 1.995 0 00-.728.329c-.21.154-.383.355-.518.602s-.222.553-.259.917h4.354c-.047-.616-.245-1.094-.595-1.435-.35-.34-.81-.511-1.379-.511zm5.614-3.556h2.324v7.448c0 .57.096.97.287 1.204.191.233.474.35.847.35.261 0 .511-.047.749-.14.238-.093.502-.252.791-.476l.504.77c-.15.13-.313.247-.49.35a3.638 3.638 0 01-1.106.42 2.963 2.963 0 01-1.442-.077 1.579 1.579 0 01-.679-.427 1.897 1.897 0 01-.413-.777c-.093-.322-.14-.721-.14-1.197v-6.51h-1.232v-.938zm11.62 0h2.268v7.406c0 .084.005.189.014.315a15.6 15.6 0 00.084.812c.019.135.037.254.056.357h.938v.91h-1.862l-.14-1.078h-.056c-.205.355-.511.651-.917.889s-.875.357-1.407.357c-1.055 0-1.832-.296-2.331-.889-.5-.593-.749-1.514-.749-2.765 0-.588.084-1.108.252-1.561.168-.453.408-.83.721-1.134a3.118 3.118 0 011.127-.693 4.298 4.298 0 011.47-.238c.196 0 .371.005.525.014.154.01.296.023.427.042.13.019.254.044.371.077.117.033.245.068.385.105v-1.988h-1.176v-.938zm-.84 9.03c.57 0 1.017-.147 1.344-.441.327-.294.55-.735.672-1.323v-3.248a2.168 2.168 0 00-.693-.308c-.257-.065-.595-.098-1.015-.098-.747 0-1.335.217-1.764.651-.43.434-.644 1.118-.644 2.051 0 .383.035.74.105 1.071.07.331.187.618.35.861.163.243.38.434.651.574.27.14.602.21.994.21z"/><path id="2" fill="#A7333A" d="M73.08 36.688c0 .859-.406 1.815-1.218 2.87-.812 1.055-1.946 2.203-3.402 3.444h4.928v1.008h-6.216v-1.008c.177-.168.42-.387.728-.658.308-.27.64-.572.994-.903a29.01 29.01 0 001.085-1.071c.369-.383.702-.775 1.001-1.176.299-.401.541-.803.728-1.204a2.75 2.75 0 00.28-1.162c0-.56-.147-1.001-.441-1.323-.294-.322-.735-.483-1.323-.483-.504 0-.929.056-1.274.168a3.101 3.101 0 00-.938.49l-.476-.77c.42-.299.866-.518 1.337-.658s.987-.21 1.547-.21c.877 0 1.54.238 1.988.714.448.476.672 1.12.672 1.932z"/><path id=";" fill="#7E7C7B" d="M77.686 43.24c0-.28.091-.506.273-.679.182-.173.418-.259.707-.259.355 0 .63.124.826.371.196.247.294.595.294 1.043a2.36 2.36 0 01-.637 1.659 2.465 2.465 0 01-.588.462c-.21.117-.404.203-.581.259l-.35-.546c.336-.13.625-.317.868-.56.243-.243.364-.537.364-.882-.13.028-.233.042-.308.042-.27 0-.483-.077-.637-.231-.154-.154-.231-.38-.231-.679zm.126-5.502c0-.299.084-.53.252-.693.168-.163.392-.245.672-.245.299 0 .532.082.7.245.168.163.252.394.252.693 0 .27-.084.495-.252.672-.168.177-.401.266-.7.266-.28 0-.504-.089-.672-.266a.938.938 0 01-.252-.672z"/><path id="return" fill="#1C85B5" d="M16.604 61.01v-.938h1.89v-5.124h-1.89v-.938h2.618l.224.91h.07c.317-.29.672-.537 1.064-.742.392-.205.859-.308 1.4-.308.317 0 .572.06.763.182.191.121.34.299.448.532.107.233.18.516.217.847.037.331.056.707.056 1.127l-.98.014c0-.597-.058-1.036-.175-1.316-.117-.28-.329-.42-.637-.42-.29 0-.55.042-.784.126a2.565 2.565 0 00-.609.308c-.173.121-.32.243-.441.364s-.21.224-.266.308v4.13h2.688v.938h-5.656zm14.882-.882c-.168.15-.366.29-.595.42a4.39 4.39 0 01-.749.336c-.27.093-.553.166-.847.217-.294.051-.59.077-.889.077-.56 0-1.055-.086-1.484-.259a2.858 2.858 0 01-1.078-.742 3.234 3.234 0 01-.658-1.155 4.767 4.767 0 01-.224-1.512c0-.588.082-1.11.245-1.568.163-.457.399-.84.707-1.148a3.08 3.08 0 011.12-.707 4.187 4.187 0 011.47-.245c.392 0 .78.051 1.162.154.383.103.721.296 1.015.581.294.285.52.677.679 1.176.159.5.215 1.146.168 1.939H26.11c0 .84.226 1.468.679 1.883.453.415 1.057.623 1.813.623.252 0 .502-.03.749-.091.247-.06.483-.133.707-.217a3.72 3.72 0 00.595-.28c.173-.103.306-.196.399-.28l.434.798zm-2.954-5.362c-.308 0-.6.033-.875.098a1.995 1.995 0 00-.728.329c-.21.154-.383.355-.518.602s-.222.553-.259.917h4.354c-.047-.616-.245-1.094-.595-1.435-.35-.34-.81-.511-1.379-.511zm4.382-.756h1.666v-1.386l1.092-.308v1.694h3.738v.938h-3.738v3.304c0 .681.166 1.185.497 1.512.331.327.805.49 1.421.49.42 0 .786-.08 1.099-.238.313-.159.595-.331.847-.518l.364.826a3.938 3.938 0 01-1.169.63 4.182 4.182 0 01-1.393.238 3.41 3.41 0 01-1.057-.161 2.426 2.426 0 01-.875-.497 2.38 2.38 0 01-.602-.861c-.15-.35-.224-.768-.224-1.253v-3.472h-1.666v-.938zm13.048 0h1.988v4.774c0 .457.028.896.084 1.316h.938v.91H47.11l-.042-1.19h-.056a2.938 2.938 0 01-.966.98c-.401.252-.887.378-1.456.378-.43 0-.796-.049-1.099-.147a1.556 1.556 0 01-.749-.511c-.196-.243-.34-.567-.434-.973-.093-.406-.14-.912-.14-1.519v-3.08h-.938v-.938h2.03v3.794c0 .383.016.726.049 1.029.033.303.1.56.203.77.103.21.254.369.455.476.2.107.469.161.805.161.485 0 .908-.159 1.267-.476.36-.317.632-.714.819-1.19v-3.626h-.896v-.938zm4.242 7v-.938h1.89v-5.124h-1.89v-.938h2.618l.224.91h.07c.317-.29.672-.537 1.064-.742.392-.205.859-.308 1.4-.308.317 0 .572.06.763.182.191.121.34.299.448.532.107.233.18.516.217.847.037.331.056.707.056 1.127l-.98.014c0-.597-.058-1.036-.175-1.316-.117-.28-.329-.42-.637-.42-.29 0-.55.042-.784.126a2.565 2.565 0 00-.609.308c-.173.121-.32.243-.441.364s-.21.224-.266.308v4.13h2.688v.938h-5.656zm8.778-4.55a14.05 14.05 0 00-.063-1.176 4.657 4.657 0 00-.049-.364h-.938v-.91h1.876l.126 1.134h.07c.093-.159.217-.315.371-.469a2.91 2.91 0 011.225-.721c.252-.075.518-.112.798-.112.43 0 .81.047 1.141.14.331.093.607.259.826.497.22.238.385.56.497.966.112.406.168.922.168 1.547v4.018h-1.092v-3.808c0-.775-.126-1.358-.378-1.75-.252-.392-.71-.588-1.372-.588-.243 0-.478.049-.707.147a2.44 2.44 0 00-.623.385c-.187.159-.35.343-.49.553-.14.21-.243.432-.308.665v4.396h-1.078v-4.55z"/><path id="3" fill="#A7333A" d="M77.952 60.212c.373 0 .716-.049 1.029-.147a2.65 2.65 0 00.819-.413 1.9 1.9 0 00.546-.644c.13-.252.196-.532.196-.84 0-.644-.226-1.104-.679-1.379-.453-.275-1.062-.413-1.827-.413h-.896v-.672l2.758-3.486h-4.186V51.21h5.53v1.008l-2.758 3.234h.224c.43 0 .821.06 1.176.182.355.121.663.294.924.518.261.224.464.495.609.812.145.317.217.677.217 1.078 0 .504-.098.952-.294 1.344a2.89 2.89 0 01-.798.987c-.336.266-.73.467-1.183.602a5.034 5.034 0 01-1.449.203c-.476 0-.889-.035-1.239-.105-.35-.07-.67-.156-.959-.259l.28-.98c.243.112.527.203.854.273a5.3 5.3 0 001.106.105z"/><path id=";}" fill="#7E7C7B" d="M86.086 60.24c0-.28.091-.506.273-.679.182-.173.418-.259.707-.259.355 0 .63.124.826.371.196.247.294.595.294 1.043a2.36 2.36 0 01-.637 1.659 2.465 2.465 0 01-.588.462c-.21.117-.404.203-.581.259l-.35-.546c.336-.13.625-.317.868-.56.243-.243.364-.537.364-.882-.13.028-.233.042-.308.042-.27 0-.483-.077-.637-.231-.154-.154-.231-.38-.231-.679zm.126-5.502c0-.299.084-.53.252-.693.168-.163.392-.245.672-.245.299 0 .532.082.7.245.168.163.252.394.252.693 0 .27-.084.495-.252.672-.168.177-.401.266-.7.266-.28 0-.504-.089-.672-.266a.938.938 0 01-.252-.672zM4.2 78.934c0 .756-.198 1.328-.595 1.715-.397.387-.922.581-1.575.581H0v-.98h1.526c.57 0 .975-.135 1.218-.406.243-.27.364-.69.364-1.26V77.24c0-.364.07-.695.21-.994.14-.299.308-.558.504-.777.196-.22.397-.392.602-.518.205-.126.373-.198.504-.217v-.084c-.13-.019-.299-.086-.504-.203a2.7 2.7 0 01-1.106-1.225c-.14-.299-.21-.64-.21-1.022v-1.358c0-.55-.114-.966-.343-1.246-.229-.28-.637-.42-1.225-.42H0v-.98h2.03c.317 0 .609.058.875.175.266.117.495.278.686.483.191.205.34.448.448.728.107.28.161.588.161.924v1.428c0 .43.068.789.203 1.078.135.29.303.525.504.707.2.182.415.313.644.392.229.08.432.119.609.119v.98c-.177 0-.38.047-.609.14a2.011 2.011 0 00-.644.434 2.44 2.44 0 00-.504.735c-.135.294-.203.642-.203 1.043v1.372z"/></g><path id="Line" fill="#C06334" fill-rule="nonzero" d="M287.5 57.5v6h32v2h-32v6l-14-7 14-7z"/><text id="{value:-2,-done:-fal" fill="#AF6E24" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="326" y="69">{value: 2, done: false}</tspan></text></g></g></svg> \ No newline at end of file +<<<<<<< HEAD +<svg xmlns="http://www.w3.org/2000/svg" width="519" height="150" viewBox="0 0 519 150"><defs><style>@import url(https://fonts.googleapis.com/css?family=Open+Sans:bold,italic,bolditalic%7CPT+Mono);@font-face{font-family:'PT Mono';font-weight:700;font-style:normal;src:local('PT MonoBold'),url(/font/PTMonoBold.woff2) format('woff2'),url(/font/PTMonoBold.woff) format('woff'),url(/font/PTMonoBold.ttf) format('truetype')}</style></defs><g id="generator" fill="none" fill-rule="evenodd" stroke="none" stroke-width="1"><g id="generateSequence-3.svg"><path id="Rectangle-1" fill="#FBF2EC" stroke="#DBAF88" stroke-width="2" d="M26 17h271v110H26z"/><g id="function*-generateSe" fill-rule="nonzero" transform="translate(40.12 25.99)"><path id="function" fill="#1C85B5" d="M.112 10.01v-.938h1.666V3.948H.112V3.01h1.666v-.392c0-.877.229-1.512.686-1.904.457-.392 1.11-.588 1.96-.588.308 0 .583.019.826.056.243.037.504.112.784.224l-.252.91a2.862 2.862 0 00-.7-.203 4.295 4.295 0 00-.616-.049c-.616 0-1.036.152-1.26.455-.224.303-.336.8-.336 1.491h2.898v.938H2.87v5.124h2.898v.938H.112zm12.25-7h1.988v4.774c0 .457.028.896.084 1.316h.938v.91H13.51l-.042-1.19h-.056a2.938 2.938 0 01-.966.98c-.401.252-.887.378-1.456.378-.43 0-.796-.049-1.099-.147a1.556 1.556 0 01-.749-.511c-.196-.243-.34-.567-.434-.973-.093-.406-.14-.912-.14-1.519v-3.08H7.63V3.01h2.03v3.794c0 .383.016.726.049 1.029.033.303.1.56.203.77.103.21.254.369.455.476.2.107.469.161.805.161.485 0 .908-.159 1.267-.476.36-.317.632-.714.819-1.19V3.948h-.896V3.01zm4.62 2.45a14.05 14.05 0 00-.063-1.176 4.657 4.657 0 00-.049-.364h-.938v-.91h1.876l.126 1.134h.07c.093-.159.217-.315.371-.469a2.91 2.91 0 011.225-.721c.252-.075.518-.112.798-.112.43 0 .81.047 1.141.14.331.093.607.259.826.497.22.238.385.56.497.966.112.406.168.922.168 1.547v4.018h-1.092V6.202c0-.775-.126-1.358-.378-1.75-.252-.392-.71-.588-1.372-.588-.243 0-.478.049-.707.147a2.44 2.44 0 00-.623.385c-.187.159-.35.343-.49.553-.14.21-.243.432-.308.665v4.396h-1.078V5.46zm13.244-1.372a5.531 5.531 0 00-.693-.189 3.61 3.61 0 00-.735-.077c-.915 0-1.596.215-2.044.644-.448.43-.672 1.11-.672 2.044 0 .41.065.777.196 1.099.13.322.317.595.56.819.243.224.534.397.875.518.34.121.716.182 1.127.182.439 0 .866-.075 1.281-.224.415-.15.763-.345 1.043-.588l.49.812c-.13.112-.294.229-.49.35a4.837 4.837 0 01-1.533.602 4.962 4.962 0 01-1.015.098c-.607 0-1.141-.086-1.603-.259a3.045 3.045 0 01-1.155-.742 3.176 3.176 0 01-.7-1.162 4.525 4.525 0 01-.238-1.505c0-.588.082-1.11.245-1.568.163-.457.399-.84.707-1.148a3.08 3.08 0 011.12-.707 4.187 4.187 0 011.47-.245c.69 0 1.253.06 1.687.182.434.121.8.257 1.099.406l-.014.042v1.946h-1.008v-1.33zm2.688-1.078h1.666V1.624l1.092-.308V3.01h3.738v.938h-3.738v3.304c0 .681.166 1.185.497 1.512.331.327.805.49 1.421.49.42 0 .786-.08 1.099-.238.313-.159.595-.331.847-.518l.364.826a3.938 3.938 0 01-1.169.63 4.182 4.182 0 01-1.393.238 3.41 3.41 0 01-1.057-.161 2.426 2.426 0 01-.875-.497 2.38 2.38 0 01-.602-.861c-.15-.35-.224-.768-.224-1.253V3.948h-1.666V3.01zm9.436 7v-.938h2.436V3.948H42.35V3.01h3.556v6.062h2.38v.938H42.35zm2.058-8.988c0-.252.084-.469.252-.651a.838.838 0 01.644-.273c.27 0 .497.091.679.273a.889.889 0 01.273.651.806.806 0 01-.273.616.963.963 0 01-.679.252.872.872 0 01-.644-.252.838.838 0 01-.252-.616zm5.67 5.488c0-1.13.294-2.023.882-2.681.588-.658 1.428-.987 2.52-.987.588 0 1.094.096 1.519.287.425.191.777.45 1.057.777.28.327.488.714.623 1.162.135.448.203.929.203 1.442 0 .56-.075 1.066-.224 1.519-.15.453-.369.838-.658 1.155-.29.317-.646.562-1.071.735a3.82 3.82 0 01-1.449.259c-.579 0-1.083-.096-1.512-.287a2.967 2.967 0 01-1.064-.777 3.168 3.168 0 01-.623-1.162 4.963 4.963 0 01-.203-1.442zm1.162 0c0 .327.04.653.119.98.08.327.208.62.385.882.177.261.408.471.693.63.285.159.632.238 1.043.238.747 0 1.309-.231 1.687-.693.378-.462.567-1.141.567-2.037 0-.336-.04-.665-.119-.987a2.608 2.608 0 00-.392-.875 2.066 2.066 0 00-.7-.63c-.285-.159-.632-.238-1.043-.238-.747 0-1.307.229-1.68.686-.373.457-.56 1.139-.56 2.044zm7.742-1.05a14.05 14.05 0 00-.063-1.176 4.657 4.657 0 00-.049-.364h-.938v-.91h1.876l.126 1.134h.07c.093-.159.217-.315.371-.469a2.91 2.91 0 011.225-.721c.252-.075.518-.112.798-.112.43 0 .81.047 1.141.14.331.093.607.259.826.497.22.238.385.56.497.966.112.406.168.922.168 1.547v4.018h-1.092V6.202c0-.775-.126-1.358-.378-1.75-.252-.392-.71-.588-1.372-.588-.243 0-.478.049-.707.147a2.44 2.44 0 00-.623.385c-.187.159-.35.343-.49.553-.14.21-.243.432-.308.665v4.396h-1.078V5.46z"/><path id="*" fill="#DBAF88" d="M69.062.014l1.246 2.45L71.512 0l.966.518-1.694 2.366 2.842-.21v1.134l-2.758-.224 1.624 2.254-.938.546-1.302-2.506-1.232 2.506-1.008-.546 1.694-2.254-2.772.224V2.674l2.772.238L68.096.56z"/><path id="generateSequence" fill="#181717" d="M90.216 10.36c0 .439-.084.824-.252 1.155a2.269 2.269 0 01-.693.819 3.127 3.127 0 01-1.029.483 4.81 4.81 0 01-1.274.161c-.55 0-1.031-.056-1.442-.168a4.29 4.29 0 01-1.064-.434l.532-.994c.084.075.194.147.329.217s.292.135.469.196c.177.06.366.11.567.147.2.037.399.056.595.056.41 0 .754-.037 1.029-.112.275-.075.497-.191.665-.35.168-.159.29-.364.364-.616a3.29 3.29 0 00.112-.924v-.784h-.056a2.18 2.18 0 01-.826.714c-.336.168-.77.252-1.302.252-1.064 0-1.846-.296-2.345-.889-.5-.593-.749-1.514-.749-2.765 0-1.195.317-2.098.952-2.709.635-.611 1.577-.917 2.828-.917.579 0 1.071.04 1.477.119.406.08.777.18 1.113.301v7.042zm-3.122-1.12c.57 0 1.017-.147 1.344-.441.327-.294.555-.744.686-1.351V4.13c-.41-.196-.985-.294-1.722-.294-.747 0-1.335.22-1.764.658-.43.439-.644 1.11-.644 2.016 0 .401.037.768.112 1.099.075.331.194.618.357.861.163.243.378.432.644.567.266.135.595.203.987.203zm11.592-.112c-.168.15-.366.29-.595.42a4.39 4.39 0 01-.749.336c-.27.093-.553.166-.847.217-.294.051-.59.077-.889.077-.56 0-1.055-.086-1.484-.259a2.858 2.858 0 01-1.078-.742 3.234 3.234 0 01-.658-1.155 4.767 4.767 0 01-.224-1.512c0-.588.082-1.11.245-1.568.163-.457.399-.84.707-1.148a3.08 3.08 0 011.12-.707 4.187 4.187 0 011.47-.245c.392 0 .78.051 1.162.154.383.103.721.296 1.015.581.294.285.52.677.679 1.176.159.5.215 1.146.168 1.939H93.31c0 .84.226 1.468.679 1.883.453.415 1.057.623 1.813.623.252 0 .502-.03.749-.091.247-.06.483-.133.707-.217a3.72 3.72 0 00.595-.28c.173-.103.306-.196.399-.28l.434.798zm-2.954-5.362c-.308 0-.6.033-.875.098a1.995 1.995 0 00-.728.329c-.21.154-.383.355-.518.602s-.222.553-.259.917h4.354c-.047-.616-.245-1.094-.595-1.435-.35-.34-.81-.511-1.379-.511zm5.25 1.694a14.051 14.051 0 00-.063-1.176 4.657 4.657 0 00-.049-.364h-.938v-.91h1.876l.126 1.134h.07c.093-.159.217-.315.371-.469a2.91 2.91 0 011.225-.721c.252-.075.518-.112.798-.112.43 0 .81.047 1.141.14.331.093.607.259.826.497.22.238.385.56.497.966.112.406.168.922.168 1.547v4.018h-1.092V6.202c0-.775-.126-1.358-.378-1.75-.252-.392-.71-.588-1.372-.588-.243 0-.478.049-.707.147a2.44 2.44 0 00-.623.385c-.187.159-.35.343-.49.553-.14.21-.243.432-.308.665v4.396h-1.078V5.46zm14.504 3.668c-.168.15-.366.29-.595.42a4.39 4.39 0 01-.749.336c-.27.093-.553.166-.847.217-.294.051-.59.077-.889.077-.56 0-1.055-.086-1.484-.259a2.858 2.858 0 01-1.078-.742 3.234 3.234 0 01-.658-1.155 4.767 4.767 0 01-.224-1.512c0-.588.082-1.11.245-1.568.163-.457.399-.84.707-1.148a3.08 3.08 0 011.12-.707 4.187 4.187 0 011.47-.245c.392 0 .78.051 1.162.154.383.103.721.296 1.015.581.294.285.52.677.679 1.176.159.5.215 1.146.168 1.939h-5.418c0 .84.226 1.468.679 1.883.453.415 1.057.623 1.813.623.252 0 .502-.03.749-.091.247-.06.483-.133.707-.217a3.72 3.72 0 00.595-.28c.173-.103.306-.196.399-.28l.434.798zm-2.954-5.362c-.308 0-.6.033-.875.098a1.995 1.995 0 00-.728.329c-.21.154-.383.355-.518.602s-.222.553-.259.917h4.354c-.047-.616-.245-1.094-.595-1.435-.35-.34-.81-.511-1.379-.511zm4.872 6.244v-.938h1.89V3.948h-1.89V3.01h2.618l.224.91h.07c.317-.29.672-.537 1.064-.742.392-.205.859-.308 1.4-.308.317 0 .572.06.763.182.191.121.34.299.448.532.107.233.18.516.217.847.037.331.056.707.056 1.127l-.98.014c0-.597-.058-1.036-.175-1.316-.117-.28-.329-.42-.637-.42-.29 0-.55.042-.784.126a2.565 2.565 0 00-.609.308c-.173.121-.32.243-.441.364s-.21.224-.266.308v4.13h2.688v.938h-5.656zm8.988-6.454a4.447 4.447 0 011.358-.504 7.423 7.423 0 011.484-.154c.476 0 .866.075 1.169.224.303.15.541.343.714.581.173.238.29.509.35.812.06.303.091.609.091.917 0 .355-.01.733-.028 1.134-.019.401-.033.803-.042 1.204 0 .467.028.91.084 1.33h.938v.91h-1.862l-.126-1.05h-.07c-.056.084-.14.191-.252.322-.112.13-.259.259-.441.385a2.749 2.749 0 01-1.589.469c-.69 0-1.237-.177-1.638-.532-.401-.355-.602-.84-.602-1.456 0-.476.105-.873.315-1.19.21-.317.511-.56.903-.728.392-.168.866-.266 1.421-.294a9.544 9.544 0 011.869.112c.047-.43.054-.786.021-1.071-.033-.285-.107-.511-.224-.679a.938.938 0 00-.49-.357 2.482 2.482 0 00-.777-.105c-.42 0-.821.058-1.204.175-.383.117-.723.236-1.022.357l-.35-.812zm2.058 5.642c.261 0 .504-.042.728-.126a2.22 2.22 0 00.588-.322 2.133 2.133 0 00.672-.868v-.98a7.92 7.92 0 00-1.344-.126c-.41 0-.765.044-1.064.133-.299.089-.532.226-.7.413-.168.187-.252.43-.252.728 0 .308.105.576.315.805.21.229.562.343 1.057.343zm5.264-6.188h1.666V1.624l1.092-.308V3.01h3.738v.938h-3.738v3.304c0 .681.166 1.185.497 1.512.331.327.805.49 1.421.49.42 0 .786-.08 1.099-.238.313-.159.595-.331.847-.518l.364.826a3.938 3.938 0 01-1.169.63 4.182 4.182 0 01-1.393.238 3.41 3.41 0 01-1.057-.161 2.426 2.426 0 01-.875-.497 2.38 2.38 0 01-.602-.861c-.15-.35-.224-.768-.224-1.253V3.948h-1.666V3.01zm15.372 6.118c-.168.15-.366.29-.595.42a4.39 4.39 0 01-.749.336c-.27.093-.553.166-.847.217-.294.051-.59.077-.889.077-.56 0-1.055-.086-1.484-.259a2.858 2.858 0 01-1.078-.742 3.234 3.234 0 01-.658-1.155 4.767 4.767 0 01-.224-1.512c0-.588.082-1.11.245-1.568.163-.457.399-.84.707-1.148a3.08 3.08 0 011.12-.707 4.187 4.187 0 011.47-.245c.392 0 .78.051 1.162.154.383.103.721.296 1.015.581.294.285.52.677.679 1.176.159.5.215 1.146.168 1.939h-5.418c0 .84.226 1.468.679 1.883.453.415 1.057.623 1.813.623.252 0 .502-.03.749-.091.247-.06.483-.133.707-.217a3.72 3.72 0 00.595-.28c.173-.103.306-.196.399-.28l.434.798zm-2.954-5.362c-.308 0-.6.033-.875.098a1.995 1.995 0 00-.728.329c-.21.154-.383.355-.518.602s-.222.553-.259.917h4.354c-.047-.616-.245-1.094-.595-1.435-.35-.34-.81-.511-1.379-.511zm6.048 4.858c.28.15.595.273.945.371.35.098.702.147 1.057.147.308 0 .597-.03.868-.091.27-.06.506-.159.707-.294.2-.135.36-.306.476-.511a1.45 1.45 0 00.175-.728c0-.383-.128-.695-.385-.938a3.824 3.824 0 00-.959-.644 17.73 17.73 0 00-1.246-.546 7.417 7.417 0 01-1.246-.63 3.498 3.498 0 01-.959-.889c-.257-.35-.385-.796-.385-1.337 0-.383.077-.728.231-1.036a2.24 2.24 0 01.651-.784c.28-.215.618-.38 1.015-.497a4.68 4.68 0 011.323-.175c.56 0 1.069.04 1.526.119.457.08.821.184 1.092.315l.028-.014V.49h.014l-.014.042v2.24h-1.036V1.274a7.635 7.635 0 00-.77-.14 6.788 6.788 0 00-.896-.056c-.308 0-.586.037-.833.112a2.08 2.08 0 00-.63.301 1.37 1.37 0 00-.399.441 1.08 1.08 0 00-.14.532c0 .364.128.667.385.91s.576.46.959.651.798.38 1.246.567c.448.187.863.404 1.246.651s.702.544.959.889.385.775.385 1.288c0 .42-.077.798-.231 1.134a2.494 2.494 0 01-.658.868 2.97 2.97 0 01-1.05.56c-.415.13-.884.196-1.407.196-.355 0-.69-.028-1.008-.084a6.883 6.883 0 01-1.589-.476 7.642 7.642 0 01-.497-.238l.014-.042V7.07h1.036v1.554zm13.706.504c-.168.15-.366.29-.595.42a4.39 4.39 0 01-.749.336c-.27.093-.553.166-.847.217-.294.051-.59.077-.889.077-.56 0-1.055-.086-1.484-.259a2.858 2.858 0 01-1.078-.742 3.234 3.234 0 01-.658-1.155 4.767 4.767 0 01-.224-1.512c0-.588.082-1.11.245-1.568.163-.457.399-.84.707-1.148a3.08 3.08 0 011.12-.707 4.187 4.187 0 011.47-.245c.392 0 .78.051 1.162.154.383.103.721.296 1.015.581.294.285.52.677.679 1.176.159.5.215 1.146.168 1.939h-5.418c0 .84.226 1.468.679 1.883.453.415 1.057.623 1.813.623.252 0 .502-.03.749-.091.247-.06.483-.133.707-.217a3.72 3.72 0 00.595-.28c.173-.103.306-.196.399-.28l.434.798zm-2.954-5.362c-.308 0-.6.033-.875.098a1.995 1.995 0 00-.728.329c-.21.154-.383.355-.518.602s-.222.553-.259.917h4.354c-.047-.616-.245-1.094-.595-1.435-.35-.34-.81-.511-1.379-.511zm11.158 9.044h-1.092V9.226h-.056c-.215.308-.49.544-.826.707-.336.163-.77.245-1.302.245-1.064 0-1.846-.296-2.345-.889-.5-.593-.749-1.514-.749-2.765 0-1.195.317-2.098.952-2.709.635-.611 1.577-.917 2.828-.917.55 0 1.064.047 1.54.14.476.093.826.191 1.05.294v9.478zm-3.108-3.57c1.11 0 1.783-.583 2.016-1.75V4.116a2.435 2.435 0 00-.735-.217 6.723 6.723 0 00-.973-.063c-.747 0-1.335.215-1.764.644-.43.43-.644 1.106-.644 2.03 0 .401.035.768.105 1.099.07.331.189.618.357.861.168.243.385.432.651.567.266.135.595.203.987.203zm9.38-6.23h1.988v4.774c0 .457.028.896.084 1.316h.938v.91h-1.862l-.042-1.19h-.056a2.938 2.938 0 01-.966.98c-.401.252-.887.378-1.456.378-.43 0-.796-.049-1.099-.147a1.556 1.556 0 01-.749-.511c-.196-.243-.34-.567-.434-.973-.093-.406-.14-.912-.14-1.519v-3.08h-.938V3.01h2.03v3.794c0 .383.016.726.049 1.029.033.303.1.56.203.77.103.21.254.369.455.476.2.107.469.161.805.161.485 0 .908-.159 1.267-.476.36-.317.632-.714.819-1.19V3.948h-.896V3.01zm10.724 6.118c-.168.15-.366.29-.595.42a4.39 4.39 0 01-.749.336c-.27.093-.553.166-.847.217-.294.051-.59.077-.889.077-.56 0-1.055-.086-1.484-.259a2.858 2.858 0 01-1.078-.742 3.234 3.234 0 01-.658-1.155 4.767 4.767 0 01-.224-1.512c0-.588.082-1.11.245-1.568.163-.457.399-.84.707-1.148a3.08 3.08 0 011.12-.707 4.187 4.187 0 011.47-.245c.392 0 .78.051 1.162.154.383.103.721.296 1.015.581.294.285.52.677.679 1.176.159.5.215 1.146.168 1.939h-5.418c0 .84.226 1.468.679 1.883.453.415 1.057.623 1.813.623.252 0 .502-.03.749-.091.247-.06.483-.133.707-.217a3.72 3.72 0 00.595-.28c.173-.103.306-.196.399-.28l.434.798zm-2.954-5.362c-.308 0-.6.033-.875.098a1.995 1.995 0 00-.728.329c-.21.154-.383.355-.518.602s-.222.553-.259.917h4.354c-.047-.616-.245-1.094-.595-1.435-.35-.34-.81-.511-1.379-.511zm5.25 1.694a14.051 14.051 0 00-.063-1.176 4.657 4.657 0 00-.049-.364h-.938v-.91h1.876l.126 1.134h.07c.093-.159.217-.315.371-.469A2.91 2.91 0 01196 2.954c.252-.075.518-.112.798-.112.43 0 .81.047 1.141.14.331.093.607.259.826.497.22.238.385.56.497.966.112.406.168.922.168 1.547v4.018h-1.092V6.202c0-.775-.126-1.358-.378-1.75-.252-.392-.71-.588-1.372-.588-.243 0-.478.049-.707.147a2.44 2.44 0 00-.623.385c-.187.159-.35.343-.49.553-.14.21-.243.432-.308.665v4.396h-1.078V5.46zm13.244-1.372a5.531 5.531 0 00-.693-.189 3.61 3.61 0 00-.735-.077c-.915 0-1.596.215-2.044.644-.448.43-.672 1.11-.672 2.044 0 .41.065.777.196 1.099.13.322.317.595.56.819.243.224.534.397.875.518.34.121.716.182 1.127.182.439 0 .866-.075 1.281-.224.415-.15.763-.345 1.043-.588l.49.812c-.13.112-.294.229-.49.35a4.837 4.837 0 01-1.533.602 4.962 4.962 0 01-1.015.098c-.607 0-1.141-.086-1.603-.259a3.045 3.045 0 01-1.155-.742 3.176 3.176 0 01-.7-1.162 4.525 4.525 0 01-.238-1.505c0-.588.082-1.11.245-1.568.163-.457.399-.84.707-1.148a3.08 3.08 0 011.12-.707 4.187 4.187 0 011.47-.245c.69 0 1.253.06 1.687.182.434.121.8.257 1.099.406l-.014.042v1.946h-1.008v-1.33zm9.66 5.04c-.168.15-.366.29-.595.42a4.39 4.39 0 01-.749.336c-.27.093-.553.166-.847.217-.294.051-.59.077-.889.077-.56 0-1.055-.086-1.484-.259a2.858 2.858 0 01-1.078-.742 3.234 3.234 0 01-.658-1.155 4.767 4.767 0 01-.224-1.512c0-.588.082-1.11.245-1.568.163-.457.399-.84.707-1.148a3.08 3.08 0 011.12-.707 4.187 4.187 0 011.47-.245c.392 0 .78.051 1.162.154.383.103.721.296 1.015.581.294.285.52.677.679 1.176.159.5.215 1.146.168 1.939h-5.418c0 .84.226 1.468.679 1.883.453.415 1.057.623 1.813.623.252 0 .502-.03.749-.091.247-.06.483-.133.707-.217a3.72 3.72 0 00.595-.28c.173-.103.306-.196.399-.28l.434.798zm-2.954-5.362c-.308 0-.6.033-.875.098a1.995 1.995 0 00-.728.329c-.21.154-.383.355-.518.602s-.222.553-.259.917h4.354c-.047-.616-.245-1.094-.595-1.435-.35-.34-.81-.511-1.379-.511z"/><path id="(){" fill="#7E7C7B" d="M223.328 12.978a6.964 6.964 0 01-1.757-.707 5.036 5.036 0 01-1.428-1.225c-.406-.504-.728-1.12-.966-1.848s-.357-1.591-.357-2.59c0-.99.121-1.855.364-2.597s.57-1.372.98-1.89c.41-.518.889-.933 1.435-1.246a6.005 6.005 0 011.729-.665l.35.882a7.086 7.086 0 00-1.512.623 3.928 3.928 0 00-1.183 1.022c-.331.425-.588.952-.77 1.582-.182.63-.273 1.393-.273 2.289 0 .905.11 1.678.329 2.317.22.64.509 1.171.868 1.596.36.425.76.756 1.204.994.443.238.889.404 1.337.497l-.35.966zm4.354-.966a4.965 4.965 0 001.337-.497 4.15 4.15 0 001.204-.994c.36-.425.649-.957.868-1.596.22-.64.329-1.412.329-2.317 0-.896-.091-1.659-.273-2.289-.182-.63-.439-1.157-.77-1.582a3.928 3.928 0 00-1.183-1.022 7.086 7.086 0 00-1.512-.623l.35-.882c.607.13 1.183.352 1.729.665a4.984 4.984 0 011.435 1.246c.41.518.737 1.148.98 1.89s.364 1.608.364 2.597c0 .999-.119 1.862-.357 2.59-.238.728-.56 1.344-.966 1.848a5.036 5.036 0 01-1.428 1.225 6.964 6.964 0 01-1.757.707l-.35-.966zm17.878-2.45c0-.401-.068-.749-.203-1.043a2.44 2.44 0 00-.504-.735c-.2-.196-.415-.34-.644-.434a1.641 1.641 0 00-.609-.14v-.98c.177 0 .38-.04.609-.119.229-.08.443-.21.644-.392.2-.182.369-.418.504-.707.135-.29.203-.649.203-1.078V2.506c0-.336.054-.644.161-.924a2.22 2.22 0 01.448-.728c.191-.205.42-.366.686-.483.266-.117.558-.175.875-.175h2.03v.98h-1.54c-.588 0-.996.14-1.225.42-.229.28-.343.695-.343 1.246V4.2c0 .383-.07.723-.21 1.022a2.7 2.7 0 01-1.106 1.225c-.205.117-.373.184-.504.203v.084c.121.019.285.091.49.217.205.126.406.299.602.518.196.22.366.478.511.777.145.299.217.63.217.994v1.344c0 .57.121.99.364 1.26s.649.406 1.218.406h1.526v.98h-2.03c-.653 0-1.178-.194-1.575-.581-.397-.387-.595-.959-.595-1.715V9.562z"/><path id="yield" fill="#1C85B5" d="M20.034 25.932h.532l1.736-5.922h1.134l-1.946 6.286c-.103.327-.208.698-.315 1.113a5.2 5.2 0 01-.455 1.169 2.807 2.807 0 01-.798.924c-.336.252-.775.378-1.316.378-.121 0-.25-.014-.385-.042a3.856 3.856 0 01-.399-.105 2.574 2.574 0 01-.364-.147.977.977 0 01-.252-.168l.392-1.008c.056.047.133.093.231.14.098.047.205.086.322.119.117.033.231.06.343.084.112.023.205.035.28.035.7 0 1.176-.593 1.428-1.778h-.938l-2.94-7h1.26l2.45 5.922zm5.516 1.078v-.938h2.436v-5.124H25.55v-.938h3.556v6.062h2.38v.938H25.55zm2.058-8.988c0-.252.084-.469.252-.651a.838.838 0 01.644-.273c.27 0 .497.091.679.273a.889.889 0 01.273.651.806.806 0 01-.273.616.963.963 0 01-.679.252.872.872 0 01-.644-.252.838.838 0 01-.252-.616zm12.278 8.106c-.168.15-.366.29-.595.42a4.39 4.39 0 01-.749.336c-.27.093-.553.166-.847.217-.294.051-.59.077-.889.077-.56 0-1.055-.086-1.484-.259a2.858 2.858 0 01-1.078-.742 3.234 3.234 0 01-.658-1.155 4.767 4.767 0 01-.224-1.512c0-.588.082-1.11.245-1.568.163-.457.399-.84.707-1.148a3.08 3.08 0 011.12-.707 4.187 4.187 0 011.47-.245c.392 0 .78.051 1.162.154.383.103.721.296 1.015.581.294.285.52.677.679 1.176.159.5.215 1.146.168 1.939H34.51c0 .84.226 1.468.679 1.883.453.415 1.057.623 1.813.623.252 0 .502-.03.749-.091.247-.06.483-.133.707-.217a3.72 3.72 0 00.595-.28c.173-.103.306-.196.399-.28l.434.798zm-2.954-5.362c-.308 0-.6.033-.875.098a1.995 1.995 0 00-.728.329c-.21.154-.383.355-.518.602s-.222.553-.259.917h4.354c-.047-.616-.245-1.094-.595-1.435-.35-.34-.81-.511-1.379-.511zm5.614-3.556h2.324v7.448c0 .57.096.97.287 1.204.191.233.474.35.847.35.261 0 .511-.047.749-.14.238-.093.502-.252.791-.476l.504.77c-.15.13-.313.247-.49.35a3.638 3.638 0 01-1.106.42 2.963 2.963 0 01-1.442-.077 1.579 1.579 0 01-.679-.427 1.897 1.897 0 01-.413-.777c-.093-.322-.14-.721-.14-1.197v-6.51h-1.232v-.938zm11.62 0h2.268v7.406c0 .084.005.189.014.315a15.6 15.6 0 00.084.812c.019.135.037.254.056.357h.938v.91h-1.862l-.14-1.078h-.056c-.205.355-.511.651-.917.889s-.875.357-1.407.357c-1.055 0-1.832-.296-2.331-.889-.5-.593-.749-1.514-.749-2.765 0-.588.084-1.108.252-1.561.168-.453.408-.83.721-1.134a3.118 3.118 0 011.127-.693 4.298 4.298 0 011.47-.238c.196 0 .371.005.525.014.154.01.296.023.427.042.13.019.254.044.371.077.117.033.245.068.385.105v-1.988h-1.176v-.938zm-.84 9.03c.57 0 1.017-.147 1.344-.441.327-.294.55-.735.672-1.323v-3.248a2.168 2.168 0 00-.693-.308c-.257-.065-.595-.098-1.015-.098-.747 0-1.335.217-1.764.651-.43.434-.644 1.118-.644 2.051 0 .383.035.74.105 1.071.07.331.187.618.35.861.163.243.38.434.651.574.27.14.602.21.994.21z"/><path id="1" fill="#A7333A" d="M67.858 26.002h2.198v-7.364l-2.24 1.568-.546-.798 3.08-2.198h.784v8.792h2.156v1.008h-5.432z"/><path id=";" fill="#7E7C7B" d="M77.686 26.24c0-.28.091-.506.273-.679.182-.173.418-.259.707-.259.355 0 .63.124.826.371.196.247.294.595.294 1.043a2.36 2.36 0 01-.637 1.659 2.465 2.465 0 01-.588.462c-.21.117-.404.203-.581.259l-.35-.546c.336-.13.625-.317.868-.56.243-.243.364-.537.364-.882-.13.028-.233.042-.308.042-.27 0-.483-.077-.637-.231-.154-.154-.231-.38-.231-.679zm.126-5.502c0-.299.084-.53.252-.693.168-.163.392-.245.672-.245.299 0 .532.082.7.245.168.163.252.394.252.693 0 .27-.084.495-.252.672-.168.177-.401.266-.7.266-.28 0-.504-.089-.672-.266a.938.938 0 01-.252-.672z"/><path id="yield" fill="#1C85B5" d="M20.034 42.932h.532l1.736-5.922h1.134l-1.946 6.286c-.103.327-.208.698-.315 1.113a5.2 5.2 0 01-.455 1.169 2.807 2.807 0 01-.798.924c-.336.252-.775.378-1.316.378-.121 0-.25-.014-.385-.042a3.856 3.856 0 01-.399-.105 2.574 2.574 0 01-.364-.147.977.977 0 01-.252-.168l.392-1.008c.056.047.133.093.231.14.098.047.205.086.322.119.117.033.231.06.343.084.112.023.205.035.28.035.7 0 1.176-.593 1.428-1.778h-.938l-2.94-7h1.26l2.45 5.922zm5.516 1.078v-.938h2.436v-5.124H25.55v-.938h3.556v6.062h2.38v.938H25.55zm2.058-8.988c0-.252.084-.469.252-.651a.838.838 0 01.644-.273c.27 0 .497.091.679.273a.889.889 0 01.273.651.806.806 0 01-.273.616.963.963 0 01-.679.252.872.872 0 01-.644-.252.838.838 0 01-.252-.616zm12.278 8.106c-.168.15-.366.29-.595.42a4.39 4.39 0 01-.749.336c-.27.093-.553.166-.847.217-.294.051-.59.077-.889.077-.56 0-1.055-.086-1.484-.259a2.858 2.858 0 01-1.078-.742 3.234 3.234 0 01-.658-1.155 4.767 4.767 0 01-.224-1.512c0-.588.082-1.11.245-1.568.163-.457.399-.84.707-1.148a3.08 3.08 0 011.12-.707 4.187 4.187 0 011.47-.245c.392 0 .78.051 1.162.154.383.103.721.296 1.015.581.294.285.52.677.679 1.176.159.5.215 1.146.168 1.939H34.51c0 .84.226 1.468.679 1.883.453.415 1.057.623 1.813.623.252 0 .502-.03.749-.091.247-.06.483-.133.707-.217a3.72 3.72 0 00.595-.28c.173-.103.306-.196.399-.28l.434.798zm-2.954-5.362c-.308 0-.6.033-.875.098a1.995 1.995 0 00-.728.329c-.21.154-.383.355-.518.602s-.222.553-.259.917h4.354c-.047-.616-.245-1.094-.595-1.435-.35-.34-.81-.511-1.379-.511zm5.614-3.556h2.324v7.448c0 .57.096.97.287 1.204.191.233.474.35.847.35.261 0 .511-.047.749-.14.238-.093.502-.252.791-.476l.504.77c-.15.13-.313.247-.49.35a3.638 3.638 0 01-1.106.42 2.963 2.963 0 01-1.442-.077 1.579 1.579 0 01-.679-.427 1.897 1.897 0 01-.413-.777c-.093-.322-.14-.721-.14-1.197v-6.51h-1.232v-.938zm11.62 0h2.268v7.406c0 .084.005.189.014.315a15.6 15.6 0 00.084.812c.019.135.037.254.056.357h.938v.91h-1.862l-.14-1.078h-.056c-.205.355-.511.651-.917.889s-.875.357-1.407.357c-1.055 0-1.832-.296-2.331-.889-.5-.593-.749-1.514-.749-2.765 0-.588.084-1.108.252-1.561.168-.453.408-.83.721-1.134a3.118 3.118 0 011.127-.693 4.298 4.298 0 011.47-.238c.196 0 .371.005.525.014.154.01.296.023.427.042.13.019.254.044.371.077.117.033.245.068.385.105v-1.988h-1.176v-.938zm-.84 9.03c.57 0 1.017-.147 1.344-.441.327-.294.55-.735.672-1.323v-3.248a2.168 2.168 0 00-.693-.308c-.257-.065-.595-.098-1.015-.098-.747 0-1.335.217-1.764.651-.43.434-.644 1.118-.644 2.051 0 .383.035.74.105 1.071.07.331.187.618.35.861.163.243.38.434.651.574.27.14.602.21.994.21z"/><path id="2" fill="#A7333A" d="M73.08 36.688c0 .859-.406 1.815-1.218 2.87-.812 1.055-1.946 2.203-3.402 3.444h4.928v1.008h-6.216v-1.008c.177-.168.42-.387.728-.658.308-.27.64-.572.994-.903a29.01 29.01 0 001.085-1.071c.369-.383.702-.775 1.001-1.176.299-.401.541-.803.728-1.204a2.75 2.75 0 00.28-1.162c0-.56-.147-1.001-.441-1.323-.294-.322-.735-.483-1.323-.483-.504 0-.929.056-1.274.168a3.101 3.101 0 00-.938.49l-.476-.77c.42-.299.866-.518 1.337-.658s.987-.21 1.547-.21c.877 0 1.54.238 1.988.714.448.476.672 1.12.672 1.932z"/><path id=";" fill="#7E7C7B" d="M77.686 43.24c0-.28.091-.506.273-.679.182-.173.418-.259.707-.259.355 0 .63.124.826.371.196.247.294.595.294 1.043a2.36 2.36 0 01-.637 1.659 2.465 2.465 0 01-.588.462c-.21.117-.404.203-.581.259l-.35-.546c.336-.13.625-.317.868-.56.243-.243.364-.537.364-.882-.13.028-.233.042-.308.042-.27 0-.483-.077-.637-.231-.154-.154-.231-.38-.231-.679zm.126-5.502c0-.299.084-.53.252-.693.168-.163.392-.245.672-.245.299 0 .532.082.7.245.168.163.252.394.252.693 0 .27-.084.495-.252.672-.168.177-.401.266-.7.266-.28 0-.504-.089-.672-.266a.938.938 0 01-.252-.672z"/><path id="return" fill="#1C85B5" d="M16.604 61.01v-.938h1.89v-5.124h-1.89v-.938h2.618l.224.91h.07c.317-.29.672-.537 1.064-.742.392-.205.859-.308 1.4-.308.317 0 .572.06.763.182.191.121.34.299.448.532.107.233.18.516.217.847.037.331.056.707.056 1.127l-.98.014c0-.597-.058-1.036-.175-1.316-.117-.28-.329-.42-.637-.42-.29 0-.55.042-.784.126a2.565 2.565 0 00-.609.308c-.173.121-.32.243-.441.364s-.21.224-.266.308v4.13h2.688v.938h-5.656zm14.882-.882c-.168.15-.366.29-.595.42a4.39 4.39 0 01-.749.336c-.27.093-.553.166-.847.217-.294.051-.59.077-.889.077-.56 0-1.055-.086-1.484-.259a2.858 2.858 0 01-1.078-.742 3.234 3.234 0 01-.658-1.155 4.767 4.767 0 01-.224-1.512c0-.588.082-1.11.245-1.568.163-.457.399-.84.707-1.148a3.08 3.08 0 011.12-.707 4.187 4.187 0 011.47-.245c.392 0 .78.051 1.162.154.383.103.721.296 1.015.581.294.285.52.677.679 1.176.159.5.215 1.146.168 1.939H26.11c0 .84.226 1.468.679 1.883.453.415 1.057.623 1.813.623.252 0 .502-.03.749-.091.247-.06.483-.133.707-.217a3.72 3.72 0 00.595-.28c.173-.103.306-.196.399-.28l.434.798zm-2.954-5.362c-.308 0-.6.033-.875.098a1.995 1.995 0 00-.728.329c-.21.154-.383.355-.518.602s-.222.553-.259.917h4.354c-.047-.616-.245-1.094-.595-1.435-.35-.34-.81-.511-1.379-.511zm4.382-.756h1.666v-1.386l1.092-.308v1.694h3.738v.938h-3.738v3.304c0 .681.166 1.185.497 1.512.331.327.805.49 1.421.49.42 0 .786-.08 1.099-.238.313-.159.595-.331.847-.518l.364.826a3.938 3.938 0 01-1.169.63 4.182 4.182 0 01-1.393.238 3.41 3.41 0 01-1.057-.161 2.426 2.426 0 01-.875-.497 2.38 2.38 0 01-.602-.861c-.15-.35-.224-.768-.224-1.253v-3.472h-1.666v-.938zm13.048 0h1.988v4.774c0 .457.028.896.084 1.316h.938v.91H47.11l-.042-1.19h-.056a2.938 2.938 0 01-.966.98c-.401.252-.887.378-1.456.378-.43 0-.796-.049-1.099-.147a1.556 1.556 0 01-.749-.511c-.196-.243-.34-.567-.434-.973-.093-.406-.14-.912-.14-1.519v-3.08h-.938v-.938h2.03v3.794c0 .383.016.726.049 1.029.033.303.1.56.203.77.103.21.254.369.455.476.2.107.469.161.805.161.485 0 .908-.159 1.267-.476.36-.317.632-.714.819-1.19v-3.626h-.896v-.938zm4.242 7v-.938h1.89v-5.124h-1.89v-.938h2.618l.224.91h.07c.317-.29.672-.537 1.064-.742.392-.205.859-.308 1.4-.308.317 0 .572.06.763.182.191.121.34.299.448.532.107.233.18.516.217.847.037.331.056.707.056 1.127l-.98.014c0-.597-.058-1.036-.175-1.316-.117-.28-.329-.42-.637-.42-.29 0-.55.042-.784.126a2.565 2.565 0 00-.609.308c-.173.121-.32.243-.441.364s-.21.224-.266.308v4.13h2.688v.938h-5.656zm8.778-4.55a14.05 14.05 0 00-.063-1.176 4.657 4.657 0 00-.049-.364h-.938v-.91h1.876l.126 1.134h.07c.093-.159.217-.315.371-.469a2.91 2.91 0 011.225-.721c.252-.075.518-.112.798-.112.43 0 .81.047 1.141.14.331.093.607.259.826.497.22.238.385.56.497.966.112.406.168.922.168 1.547v4.018h-1.092v-3.808c0-.775-.126-1.358-.378-1.75-.252-.392-.71-.588-1.372-.588-.243 0-.478.049-.707.147a2.44 2.44 0 00-.623.385c-.187.159-.35.343-.49.553-.14.21-.243.432-.308.665v4.396h-1.078v-4.55z"/><path id="3" fill="#A7333A" d="M77.952 60.212c.373 0 .716-.049 1.029-.147a2.65 2.65 0 00.819-.413 1.9 1.9 0 00.546-.644c.13-.252.196-.532.196-.84 0-.644-.226-1.104-.679-1.379-.453-.275-1.062-.413-1.827-.413h-.896v-.672l2.758-3.486h-4.186V51.21h5.53v1.008l-2.758 3.234h.224c.43 0 .821.06 1.176.182.355.121.663.294.924.518.261.224.464.495.609.812.145.317.217.677.217 1.078 0 .504-.098.952-.294 1.344a2.89 2.89 0 01-.798.987c-.336.266-.73.467-1.183.602a5.034 5.034 0 01-1.449.203c-.476 0-.889-.035-1.239-.105-.35-.07-.67-.156-.959-.259l.28-.98c.243.112.527.203.854.273a5.3 5.3 0 001.106.105z"/><path id=";}" fill="#7E7C7B" d="M86.086 60.24c0-.28.091-.506.273-.679.182-.173.418-.259.707-.259.355 0 .63.124.826.371.196.247.294.595.294 1.043a2.36 2.36 0 01-.637 1.659 2.465 2.465 0 01-.588.462c-.21.117-.404.203-.581.259l-.35-.546c.336-.13.625-.317.868-.56.243-.243.364-.537.364-.882-.13.028-.233.042-.308.042-.27 0-.483-.077-.637-.231-.154-.154-.231-.38-.231-.679zm.126-5.502c0-.299.084-.53.252-.693.168-.163.392-.245.672-.245.299 0 .532.082.7.245.168.163.252.394.252.693 0 .27-.084.495-.252.672-.168.177-.401.266-.7.266-.28 0-.504-.089-.672-.266a.938.938 0 01-.252-.672zM4.2 78.934c0 .756-.198 1.328-.595 1.715-.397.387-.922.581-1.575.581H0v-.98h1.526c.57 0 .975-.135 1.218-.406.243-.27.364-.69.364-1.26V77.24c0-.364.07-.695.21-.994.14-.299.308-.558.504-.777.196-.22.397-.392.602-.518.205-.126.373-.198.504-.217v-.084c-.13-.019-.299-.086-.504-.203a2.7 2.7 0 01-1.106-1.225c-.14-.299-.21-.64-.21-1.022v-1.358c0-.55-.114-.966-.343-1.246-.229-.28-.637-.42-1.225-.42H0v-.98h2.03c.317 0 .609.058.875.175.266.117.495.278.686.483.191.205.34.448.448.728.107.28.161.588.161.924v1.428c0 .43.068.789.203 1.078.135.29.303.525.504.707.2.182.415.313.644.392.229.08.432.119.609.119v.98c-.177 0-.38.047-.609.14a2.011 2.011 0 00-.644.434 2.44 2.44 0 00-.504.735c-.135.294-.203.642-.203 1.043v1.372z"/></g><path id="Line" fill="#C06334" fill-rule="nonzero" d="M287.5 57.5v6h32v2h-32v6l-14-7 14-7z"/><text id="{value:-2,-done:-fal" fill="#AF6E24" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="326" y="69">{value: 2, done: false}</tspan></text></g></g></svg> +======= +<svg xmlns="http://www.w3.org/2000/svg" width="519" height="150" viewBox="0 0 519 150"><defs><style>@import url(https://fonts.googleapis.com/css?family=Open+Sans:bold,italic,bolditalic%7CPT+Mono);@font-face{font-family:'PT Mono';font-weight:700;font-style:normal;src:local('PT MonoBold'),url(/font/PTMonoBold.woff2) format('woff2'),url(/font/PTMonoBold.woff) format('woff'),url(/font/PTMonoBold.ttf) format('truetype')}</style></defs><g id="generator" fill="none" fill-rule="evenodd" stroke="none" stroke-width="1"><g id="generateSequence-3.svg"><path id="Rectangle-1" fill="#FBF2EC" stroke="#DBAF88" stroke-width="2" d="M26 17h271v110H26z"/><g id="function*-generateSe" fill-rule="nonzero" transform="translate(40.12 25.99)"><path id="function" fill="#1C85B5" d="M.112 10.01v-.938h1.666V3.948H.112V3.01h1.666v-.392c0-.877.229-1.512.686-1.904.457-.392 1.11-.588 1.96-.588.308 0 .583.019.826.056.243.037.504.112.784.224l-.252.91a2.862 2.862 0 00-.7-.203 4.295 4.295 0 00-.616-.049c-.616 0-1.036.152-1.26.455-.224.303-.336.8-.336 1.491h2.898v.938H2.87v5.124h2.898v.938H.112zm12.25-7h1.988v4.774c0 .457.028.896.084 1.316h.938v.91H13.51l-.042-1.19h-.056a2.938 2.938 0 01-.966.98c-.401.252-.887.378-1.456.378-.43 0-.796-.049-1.099-.147a1.556 1.556 0 01-.749-.511c-.196-.243-.34-.567-.434-.973-.093-.406-.14-.912-.14-1.519v-3.08H7.63V3.01h2.03v3.794c0 .383.016.726.049 1.029.033.303.1.56.203.77.103.21.254.369.455.476.2.107.469.161.805.161.485 0 .908-.159 1.267-.476.36-.317.632-.714.819-1.19V3.948h-.896V3.01zm4.62 2.45a14.05 14.05 0 00-.063-1.176 4.657 4.657 0 00-.049-.364h-.938v-.91h1.876l.126 1.134h.07c.093-.159.217-.315.371-.469a2.91 2.91 0 011.225-.721c.252-.075.518-.112.798-.112.43 0 .81.047 1.141.14.331.093.607.259.826.497.22.238.385.56.497.966.112.406.168.922.168 1.547v4.018h-1.092V6.202c0-.775-.126-1.358-.378-1.75-.252-.392-.71-.588-1.372-.588-.243 0-.478.049-.707.147a2.44 2.44 0 00-.623.385c-.187.159-.35.343-.49.553-.14.21-.243.432-.308.665v4.396h-1.078V5.46zm13.244-1.372a5.531 5.531 0 00-.693-.189 3.61 3.61 0 00-.735-.077c-.915 0-1.596.215-2.044.644-.448.43-.672 1.11-.672 2.044 0 .41.065.777.196 1.099.13.322.317.595.56.819.243.224.534.397.875.518.34.121.716.182 1.127.182.439 0 .866-.075 1.281-.224.415-.15.763-.345 1.043-.588l.49.812c-.13.112-.294.229-.49.35a4.837 4.837 0 01-1.533.602 4.962 4.962 0 01-1.015.098c-.607 0-1.141-.086-1.603-.259a3.045 3.045 0 01-1.155-.742 3.176 3.176 0 01-.7-1.162 4.525 4.525 0 01-.238-1.505c0-.588.082-1.11.245-1.568.163-.457.399-.84.707-1.148a3.08 3.08 0 011.12-.707 4.187 4.187 0 011.47-.245c.69 0 1.253.06 1.687.182.434.121.8.257 1.099.406l-.014.042v1.946h-1.008v-1.33zm2.688-1.078h1.666V1.624l1.092-.308V3.01h3.738v.938h-3.738v3.304c0 .681.166 1.185.497 1.512.331.327.805.49 1.421.49.42 0 .786-.08 1.099-.238.313-.159.595-.331.847-.518l.364.826a3.938 3.938 0 01-1.169.63 4.182 4.182 0 01-1.393.238 3.41 3.41 0 01-1.057-.161 2.426 2.426 0 01-.875-.497 2.38 2.38 0 01-.602-.861c-.15-.35-.224-.768-.224-1.253V3.948h-1.666V3.01zm9.436 7v-.938h2.436V3.948H42.35V3.01h3.556v6.062h2.38v.938H42.35zm2.058-8.988c0-.252.084-.469.252-.651a.838.838 0 01.644-.273c.27 0 .497.091.679.273a.889.889 0 01.273.651.806.806 0 01-.273.616.963.963 0 01-.679.252.872.872 0 01-.644-.252.838.838 0 01-.252-.616zm5.67 5.488c0-1.13.294-2.023.882-2.681.588-.658 1.428-.987 2.52-.987.588 0 1.094.096 1.519.287.425.191.777.45 1.057.777.28.327.488.714.623 1.162.135.448.203.929.203 1.442 0 .56-.075 1.066-.224 1.519-.15.453-.369.838-.658 1.155-.29.317-.646.562-1.071.735a3.82 3.82 0 01-1.449.259c-.579 0-1.083-.096-1.512-.287a2.967 2.967 0 01-1.064-.777 3.168 3.168 0 01-.623-1.162 4.963 4.963 0 01-.203-1.442zm1.162 0c0 .327.04.653.119.98.08.327.208.62.385.882.177.261.408.471.693.63.285.159.632.238 1.043.238.747 0 1.309-.231 1.687-.693.378-.462.567-1.141.567-2.037 0-.336-.04-.665-.119-.987a2.608 2.608 0 00-.392-.875 2.066 2.066 0 00-.7-.63c-.285-.159-.632-.238-1.043-.238-.747 0-1.307.229-1.68.686-.373.457-.56 1.139-.56 2.044zm7.742-1.05a14.05 14.05 0 00-.063-1.176 4.657 4.657 0 00-.049-.364h-.938v-.91h1.876l.126 1.134h.07c.093-.159.217-.315.371-.469a2.91 2.91 0 011.225-.721c.252-.075.518-.112.798-.112.43 0 .81.047 1.141.14.331.093.607.259.826.497.22.238.385.56.497.966.112.406.168.922.168 1.547v4.018h-1.092V6.202c0-.775-.126-1.358-.378-1.75-.252-.392-.71-.588-1.372-.588-.243 0-.478.049-.707.147a2.44 2.44 0 00-.623.385c-.187.159-.35.343-.49.553-.14.21-.243.432-.308.665v4.396h-1.078V5.46z"/><path id="*" fill="#DBAF88" d="M69.062.014l1.246 2.45L71.512 0l.966.518-1.694 2.366 2.842-.21v1.134l-2.758-.224 1.624 2.254-.938.546-1.302-2.506-1.232 2.506-1.008-.546 1.694-2.254-2.772.224V2.674l2.772.238L68.096.56z"/><path id="generateSequence" fill="#181717" d="M90.216 10.36c0 .439-.084.824-.252 1.155a2.269 2.269 0 01-.693.819 3.127 3.127 0 01-1.029.483 4.81 4.81 0 01-1.274.161c-.55 0-1.031-.056-1.442-.168a4.29 4.29 0 01-1.064-.434l.532-.994c.084.075.194.147.329.217s.292.135.469.196c.177.06.366.11.567.147.2.037.399.056.595.056.41 0 .754-.037 1.029-.112.275-.075.497-.191.665-.35.168-.159.29-.364.364-.616a3.29 3.29 0 00.112-.924v-.784h-.056a2.18 2.18 0 01-.826.714c-.336.168-.77.252-1.302.252-1.064 0-1.846-.296-2.345-.889-.5-.593-.749-1.514-.749-2.765 0-1.195.317-2.098.952-2.709.635-.611 1.577-.917 2.828-.917.579 0 1.071.04 1.477.119.406.08.777.18 1.113.301v7.042zm-3.122-1.12c.57 0 1.017-.147 1.344-.441.327-.294.555-.744.686-1.351V4.13c-.41-.196-.985-.294-1.722-.294-.747 0-1.335.22-1.764.658-.43.439-.644 1.11-.644 2.016 0 .401.037.768.112 1.099.075.331.194.618.357.861.163.243.378.432.644.567.266.135.595.203.987.203zm11.592-.112c-.168.15-.366.29-.595.42a4.39 4.39 0 01-.749.336c-.27.093-.553.166-.847.217-.294.051-.59.077-.889.077-.56 0-1.055-.086-1.484-.259a2.858 2.858 0 01-1.078-.742 3.234 3.234 0 01-.658-1.155 4.767 4.767 0 01-.224-1.512c0-.588.082-1.11.245-1.568.163-.457.399-.84.707-1.148a3.08 3.08 0 011.12-.707 4.187 4.187 0 011.47-.245c.392 0 .78.051 1.162.154.383.103.721.296 1.015.581.294.285.52.677.679 1.176.159.5.215 1.146.168 1.939H93.31c0 .84.226 1.468.679 1.883.453.415 1.057.623 1.813.623.252 0 .502-.03.749-.091.247-.06.483-.133.707-.217a3.72 3.72 0 00.595-.28c.173-.103.306-.196.399-.28l.434.798zm-2.954-5.362c-.308 0-.6.033-.875.098a1.995 1.995 0 00-.728.329c-.21.154-.383.355-.518.602s-.222.553-.259.917h4.354c-.047-.616-.245-1.094-.595-1.435-.35-.34-.81-.511-1.379-.511zm5.25 1.694a14.051 14.051 0 00-.063-1.176 4.657 4.657 0 00-.049-.364h-.938v-.91h1.876l.126 1.134h.07c.093-.159.217-.315.371-.469a2.91 2.91 0 011.225-.721c.252-.075.518-.112.798-.112.43 0 .81.047 1.141.14.331.093.607.259.826.497.22.238.385.56.497.966.112.406.168.922.168 1.547v4.018h-1.092V6.202c0-.775-.126-1.358-.378-1.75-.252-.392-.71-.588-1.372-.588-.243 0-.478.049-.707.147a2.44 2.44 0 00-.623.385c-.187.159-.35.343-.49.553-.14.21-.243.432-.308.665v4.396h-1.078V5.46zm14.504 3.668c-.168.15-.366.29-.595.42a4.39 4.39 0 01-.749.336c-.27.093-.553.166-.847.217-.294.051-.59.077-.889.077-.56 0-1.055-.086-1.484-.259a2.858 2.858 0 01-1.078-.742 3.234 3.234 0 01-.658-1.155 4.767 4.767 0 01-.224-1.512c0-.588.082-1.11.245-1.568.163-.457.399-.84.707-1.148a3.08 3.08 0 011.12-.707 4.187 4.187 0 011.47-.245c.392 0 .78.051 1.162.154.383.103.721.296 1.015.581.294.285.52.677.679 1.176.159.5.215 1.146.168 1.939h-5.418c0 .84.226 1.468.679 1.883.453.415 1.057.623 1.813.623.252 0 .502-.03.749-.091.247-.06.483-.133.707-.217a3.72 3.72 0 00.595-.28c.173-.103.306-.196.399-.28l.434.798zm-2.954-5.362c-.308 0-.6.033-.875.098a1.995 1.995 0 00-.728.329c-.21.154-.383.355-.518.602s-.222.553-.259.917h4.354c-.047-.616-.245-1.094-.595-1.435-.35-.34-.81-.511-1.379-.511zm4.872 6.244v-.938h1.89V3.948h-1.89V3.01h2.618l.224.91h.07c.317-.29.672-.537 1.064-.742.392-.205.859-.308 1.4-.308.317 0 .572.06.763.182.191.121.34.299.448.532.107.233.18.516.217.847.037.331.056.707.056 1.127l-.98.014c0-.597-.058-1.036-.175-1.316-.117-.28-.329-.42-.637-.42-.29 0-.55.042-.784.126a2.565 2.565 0 00-.609.308c-.173.121-.32.243-.441.364s-.21.224-.266.308v4.13h2.688v.938h-5.656zm8.988-6.454a4.447 4.447 0 011.358-.504 7.423 7.423 0 011.484-.154c.476 0 .866.075 1.169.224.303.15.541.343.714.581.173.238.29.509.35.812.06.303.091.609.091.917 0 .355-.01.733-.028 1.134-.019.401-.033.803-.042 1.204 0 .467.028.91.084 1.33h.938v.91h-1.862l-.126-1.05h-.07c-.056.084-.14.191-.252.322-.112.13-.259.259-.441.385a2.749 2.749 0 01-1.589.469c-.69 0-1.237-.177-1.638-.532-.401-.355-.602-.84-.602-1.456 0-.476.105-.873.315-1.19.21-.317.511-.56.903-.728.392-.168.866-.266 1.421-.294a9.544 9.544 0 011.869.112c.047-.43.054-.786.021-1.071-.033-.285-.107-.511-.224-.679a.938.938 0 00-.49-.357 2.482 2.482 0 00-.777-.105c-.42 0-.821.058-1.204.175-.383.117-.723.236-1.022.357l-.35-.812zm2.058 5.642c.261 0 .504-.042.728-.126a2.22 2.22 0 00.588-.322 2.133 2.133 0 00.672-.868v-.98a7.92 7.92 0 00-1.344-.126c-.41 0-.765.044-1.064.133-.299.089-.532.226-.7.413-.168.187-.252.43-.252.728 0 .308.105.576.315.805.21.229.562.343 1.057.343zm5.264-6.188h1.666V1.624l1.092-.308V3.01h3.738v.938h-3.738v3.304c0 .681.166 1.185.497 1.512.331.327.805.49 1.421.49.42 0 .786-.08 1.099-.238.313-.159.595-.331.847-.518l.364.826a3.938 3.938 0 01-1.169.63 4.182 4.182 0 01-1.393.238 3.41 3.41 0 01-1.057-.161 2.426 2.426 0 01-.875-.497 2.38 2.38 0 01-.602-.861c-.15-.35-.224-.768-.224-1.253V3.948h-1.666V3.01zm15.372 6.118c-.168.15-.366.29-.595.42a4.39 4.39 0 01-.749.336c-.27.093-.553.166-.847.217-.294.051-.59.077-.889.077-.56 0-1.055-.086-1.484-.259a2.858 2.858 0 01-1.078-.742 3.234 3.234 0 01-.658-1.155 4.767 4.767 0 01-.224-1.512c0-.588.082-1.11.245-1.568.163-.457.399-.84.707-1.148a3.08 3.08 0 011.12-.707 4.187 4.187 0 011.47-.245c.392 0 .78.051 1.162.154.383.103.721.296 1.015.581.294.285.52.677.679 1.176.159.5.215 1.146.168 1.939h-5.418c0 .84.226 1.468.679 1.883.453.415 1.057.623 1.813.623.252 0 .502-.03.749-.091.247-.06.483-.133.707-.217a3.72 3.72 0 00.595-.28c.173-.103.306-.196.399-.28l.434.798zm-2.954-5.362c-.308 0-.6.033-.875.098a1.995 1.995 0 00-.728.329c-.21.154-.383.355-.518.602s-.222.553-.259.917h4.354c-.047-.616-.245-1.094-.595-1.435-.35-.34-.81-.511-1.379-.511zm6.048 4.858c.28.15.595.273.945.371.35.098.702.147 1.057.147.308 0 .597-.03.868-.091.27-.06.506-.159.707-.294.2-.135.36-.306.476-.511a1.45 1.45 0 00.175-.728c0-.383-.128-.695-.385-.938a3.824 3.824 0 00-.959-.644 17.73 17.73 0 00-1.246-.546 7.417 7.417 0 01-1.246-.63 3.498 3.498 0 01-.959-.889c-.257-.35-.385-.796-.385-1.337 0-.383.077-.728.231-1.036a2.24 2.24 0 01.651-.784c.28-.215.618-.38 1.015-.497a4.68 4.68 0 011.323-.175c.56 0 1.069.04 1.526.119.457.08.821.184 1.092.315l.028-.014V.49h.014l-.014.042v2.24h-1.036V1.274a7.635 7.635 0 00-.77-.14 6.788 6.788 0 00-.896-.056c-.308 0-.586.037-.833.112a2.08 2.08 0 00-.63.301 1.37 1.37 0 00-.399.441 1.08 1.08 0 00-.14.532c0 .364.128.667.385.91s.576.46.959.651.798.38 1.246.567c.448.187.863.404 1.246.651s.702.544.959.889.385.775.385 1.288c0 .42-.077.798-.231 1.134a2.494 2.494 0 01-.658.868 2.97 2.97 0 01-1.05.56c-.415.13-.884.196-1.407.196-.355 0-.69-.028-1.008-.084a6.883 6.883 0 01-1.589-.476 7.642 7.642 0 01-.497-.238l.014-.042V7.07h1.036v1.554zm13.706.504c-.168.15-.366.29-.595.42a4.39 4.39 0 01-.749.336c-.27.093-.553.166-.847.217-.294.051-.59.077-.889.077-.56 0-1.055-.086-1.484-.259a2.858 2.858 0 01-1.078-.742 3.234 3.234 0 01-.658-1.155 4.767 4.767 0 01-.224-1.512c0-.588.082-1.11.245-1.568.163-.457.399-.84.707-1.148a3.08 3.08 0 011.12-.707 4.187 4.187 0 011.47-.245c.392 0 .78.051 1.162.154.383.103.721.296 1.015.581.294.285.52.677.679 1.176.159.5.215 1.146.168 1.939h-5.418c0 .84.226 1.468.679 1.883.453.415 1.057.623 1.813.623.252 0 .502-.03.749-.091.247-.06.483-.133.707-.217a3.72 3.72 0 00.595-.28c.173-.103.306-.196.399-.28l.434.798zm-2.954-5.362c-.308 0-.6.033-.875.098a1.995 1.995 0 00-.728.329c-.21.154-.383.355-.518.602s-.222.553-.259.917h4.354c-.047-.616-.245-1.094-.595-1.435-.35-.34-.81-.511-1.379-.511zm11.158 9.044h-1.092V9.226h-.056c-.215.308-.49.544-.826.707-.336.163-.77.245-1.302.245-1.064 0-1.846-.296-2.345-.889-.5-.593-.749-1.514-.749-2.765 0-1.195.317-2.098.952-2.709.635-.611 1.577-.917 2.828-.917.55 0 1.064.047 1.54.14.476.093.826.191 1.05.294v9.478zm-3.108-3.57c1.11 0 1.783-.583 2.016-1.75V4.116a2.435 2.435 0 00-.735-.217 6.723 6.723 0 00-.973-.063c-.747 0-1.335.215-1.764.644-.43.43-.644 1.106-.644 2.03 0 .401.035.768.105 1.099.07.331.189.618.357.861.168.243.385.432.651.567.266.135.595.203.987.203zm9.38-6.23h1.988v4.774c0 .457.028.896.084 1.316h.938v.91h-1.862l-.042-1.19h-.056a2.938 2.938 0 01-.966.98c-.401.252-.887.378-1.456.378-.43 0-.796-.049-1.099-.147a1.556 1.556 0 01-.749-.511c-.196-.243-.34-.567-.434-.973-.093-.406-.14-.912-.14-1.519v-3.08h-.938V3.01h2.03v3.794c0 .383.016.726.049 1.029.033.303.1.56.203.77.103.21.254.369.455.476.2.107.469.161.805.161.485 0 .908-.159 1.267-.476.36-.317.632-.714.819-1.19V3.948h-.896V3.01zm10.724 6.118c-.168.15-.366.29-.595.42a4.39 4.39 0 01-.749.336c-.27.093-.553.166-.847.217-.294.051-.59.077-.889.077-.56 0-1.055-.086-1.484-.259a2.858 2.858 0 01-1.078-.742 3.234 3.234 0 01-.658-1.155 4.767 4.767 0 01-.224-1.512c0-.588.082-1.11.245-1.568.163-.457.399-.84.707-1.148a3.08 3.08 0 011.12-.707 4.187 4.187 0 011.47-.245c.392 0 .78.051 1.162.154.383.103.721.296 1.015.581.294.285.52.677.679 1.176.159.5.215 1.146.168 1.939h-5.418c0 .84.226 1.468.679 1.883.453.415 1.057.623 1.813.623.252 0 .502-.03.749-.091.247-.06.483-.133.707-.217a3.72 3.72 0 00.595-.28c.173-.103.306-.196.399-.28l.434.798zm-2.954-5.362c-.308 0-.6.033-.875.098a1.995 1.995 0 00-.728.329c-.21.154-.383.355-.518.602s-.222.553-.259.917h4.354c-.047-.616-.245-1.094-.595-1.435-.35-.34-.81-.511-1.379-.511zm5.25 1.694a14.051 14.051 0 00-.063-1.176 4.657 4.657 0 00-.049-.364h-.938v-.91h1.876l.126 1.134h.07c.093-.159.217-.315.371-.469A2.91 2.91 0 01196 2.954c.252-.075.518-.112.798-.112.43 0 .81.047 1.141.14.331.093.607.259.826.497.22.238.385.56.497.966.112.406.168.922.168 1.547v4.018h-1.092V6.202c0-.775-.126-1.358-.378-1.75-.252-.392-.71-.588-1.372-.588-.243 0-.478.049-.707.147a2.44 2.44 0 00-.623.385c-.187.159-.35.343-.49.553-.14.21-.243.432-.308.665v4.396h-1.078V5.46zm13.244-1.372a5.531 5.531 0 00-.693-.189 3.61 3.61 0 00-.735-.077c-.915 0-1.596.215-2.044.644-.448.43-.672 1.11-.672 2.044 0 .41.065.777.196 1.099.13.322.317.595.56.819.243.224.534.397.875.518.34.121.716.182 1.127.182.439 0 .866-.075 1.281-.224.415-.15.763-.345 1.043-.588l.49.812c-.13.112-.294.229-.49.35a4.837 4.837 0 01-1.533.602 4.962 4.962 0 01-1.015.098c-.607 0-1.141-.086-1.603-.259a3.045 3.045 0 01-1.155-.742 3.176 3.176 0 01-.7-1.162 4.525 4.525 0 01-.238-1.505c0-.588.082-1.11.245-1.568.163-.457.399-.84.707-1.148a3.08 3.08 0 011.12-.707 4.187 4.187 0 011.47-.245c.69 0 1.253.06 1.687.182.434.121.8.257 1.099.406l-.014.042v1.946h-1.008v-1.33zm9.66 5.04c-.168.15-.366.29-.595.42a4.39 4.39 0 01-.749.336c-.27.093-.553.166-.847.217-.294.051-.59.077-.889.077-.56 0-1.055-.086-1.484-.259a2.858 2.858 0 01-1.078-.742 3.234 3.234 0 01-.658-1.155 4.767 4.767 0 01-.224-1.512c0-.588.082-1.11.245-1.568.163-.457.399-.84.707-1.148a3.08 3.08 0 011.12-.707 4.187 4.187 0 011.47-.245c.392 0 .78.051 1.162.154.383.103.721.296 1.015.581.294.285.52.677.679 1.176.159.5.215 1.146.168 1.939h-5.418c0 .84.226 1.468.679 1.883.453.415 1.057.623 1.813.623.252 0 .502-.03.749-.091.247-.06.483-.133.707-.217a3.72 3.72 0 00.595-.28c.173-.103.306-.196.399-.28l.434.798zm-2.954-5.362c-.308 0-.6.033-.875.098a1.995 1.995 0 00-.728.329c-.21.154-.383.355-.518.602s-.222.553-.259.917h4.354c-.047-.616-.245-1.094-.595-1.435-.35-.34-.81-.511-1.379-.511z"/><path id="(){" fill="#7E7C7B" d="M223.328 12.978a6.964 6.964 0 01-1.757-.707 5.036 5.036 0 01-1.428-1.225c-.406-.504-.728-1.12-.966-1.848s-.357-1.591-.357-2.59c0-.99.121-1.855.364-2.597s.57-1.372.98-1.89c.41-.518.889-.933 1.435-1.246a6.005 6.005 0 011.729-.665l.35.882a7.086 7.086 0 00-1.512.623 3.928 3.928 0 00-1.183 1.022c-.331.425-.588.952-.77 1.582-.182.63-.273 1.393-.273 2.289 0 .905.11 1.678.329 2.317.22.64.509 1.171.868 1.596.36.425.76.756 1.204.994.443.238.889.404 1.337.497l-.35.966zm4.354-.966a4.965 4.965 0 001.337-.497 4.15 4.15 0 001.204-.994c.36-.425.649-.957.868-1.596.22-.64.329-1.412.329-2.317 0-.896-.091-1.659-.273-2.289-.182-.63-.439-1.157-.77-1.582a3.928 3.928 0 00-1.183-1.022 7.086 7.086 0 00-1.512-.623l.35-.882c.607.13 1.183.352 1.729.665a4.984 4.984 0 011.435 1.246c.41.518.737 1.148.98 1.89s.364 1.608.364 2.597c0 .999-.119 1.862-.357 2.59-.238.728-.56 1.344-.966 1.848a5.036 5.036 0 01-1.428 1.225 6.964 6.964 0 01-1.757.707l-.35-.966zm17.878-2.45c0-.401-.068-.749-.203-1.043a2.44 2.44 0 00-.504-.735c-.2-.196-.415-.34-.644-.434a1.641 1.641 0 00-.609-.14v-.98c.177 0 .38-.04.609-.119.229-.08.443-.21.644-.392.2-.182.369-.418.504-.707.135-.29.203-.649.203-1.078V2.506c0-.336.054-.644.161-.924a2.22 2.22 0 01.448-.728c.191-.205.42-.366.686-.483.266-.117.558-.175.875-.175h2.03v.98h-1.54c-.588 0-.996.14-1.225.42-.229.28-.343.695-.343 1.246V4.2c0 .383-.07.723-.21 1.022a2.7 2.7 0 01-1.106 1.225c-.205.117-.373.184-.504.203v.084c.121.019.285.091.49.217.205.126.406.299.602.518.196.22.366.478.511.777.145.299.217.63.217.994v1.344c0 .57.121.99.364 1.26s.649.406 1.218.406h1.526v.98h-2.03c-.653 0-1.178-.194-1.575-.581-.397-.387-.595-.959-.595-1.715V9.562z"/><path id="yield" fill="#1C85B5" d="M20.034 25.932h.532l1.736-5.922h1.134l-1.946 6.286c-.103.327-.208.698-.315 1.113a5.2 5.2 0 01-.455 1.169 2.807 2.807 0 01-.798.924c-.336.252-.775.378-1.316.378-.121 0-.25-.014-.385-.042a3.856 3.856 0 01-.399-.105 2.574 2.574 0 01-.364-.147.977.977 0 01-.252-.168l.392-1.008c.056.047.133.093.231.14.098.047.205.086.322.119.117.033.231.06.343.084.112.023.205.035.28.035.7 0 1.176-.593 1.428-1.778h-.938l-2.94-7h1.26l2.45 5.922zm5.516 1.078v-.938h2.436v-5.124H25.55v-.938h3.556v6.062h2.38v.938H25.55zm2.058-8.988c0-.252.084-.469.252-.651a.838.838 0 01.644-.273c.27 0 .497.091.679.273a.889.889 0 01.273.651.806.806 0 01-.273.616.963.963 0 01-.679.252.872.872 0 01-.644-.252.838.838 0 01-.252-.616zm12.278 8.106c-.168.15-.366.29-.595.42a4.39 4.39 0 01-.749.336c-.27.093-.553.166-.847.217-.294.051-.59.077-.889.077-.56 0-1.055-.086-1.484-.259a2.858 2.858 0 01-1.078-.742 3.234 3.234 0 01-.658-1.155 4.767 4.767 0 01-.224-1.512c0-.588.082-1.11.245-1.568.163-.457.399-.84.707-1.148a3.08 3.08 0 011.12-.707 4.187 4.187 0 011.47-.245c.392 0 .78.051 1.162.154.383.103.721.296 1.015.581.294.285.52.677.679 1.176.159.5.215 1.146.168 1.939H34.51c0 .84.226 1.468.679 1.883.453.415 1.057.623 1.813.623.252 0 .502-.03.749-.091.247-.06.483-.133.707-.217a3.72 3.72 0 00.595-.28c.173-.103.306-.196.399-.28l.434.798zm-2.954-5.362c-.308 0-.6.033-.875.098a1.995 1.995 0 00-.728.329c-.21.154-.383.355-.518.602s-.222.553-.259.917h4.354c-.047-.616-.245-1.094-.595-1.435-.35-.34-.81-.511-1.379-.511zm5.614-3.556h2.324v7.448c0 .57.096.97.287 1.204.191.233.474.35.847.35.261 0 .511-.047.749-.14.238-.093.502-.252.791-.476l.504.77c-.15.13-.313.247-.49.35a3.638 3.638 0 01-1.106.42 2.963 2.963 0 01-1.442-.077 1.579 1.579 0 01-.679-.427 1.897 1.897 0 01-.413-.777c-.093-.322-.14-.721-.14-1.197v-6.51h-1.232v-.938zm11.62 0h2.268v7.406c0 .084.005.189.014.315a15.6 15.6 0 00.084.812c.019.135.037.254.056.357h.938v.91h-1.862l-.14-1.078h-.056c-.205.355-.511.651-.917.889s-.875.357-1.407.357c-1.055 0-1.832-.296-2.331-.889-.5-.593-.749-1.514-.749-2.765 0-.588.084-1.108.252-1.561.168-.453.408-.83.721-1.134a3.118 3.118 0 011.127-.693 4.298 4.298 0 011.47-.238c.196 0 .371.005.525.014.154.01.296.023.427.042.13.019.254.044.371.077.117.033.245.068.385.105v-1.988h-1.176v-.938zm-.84 9.03c.57 0 1.017-.147 1.344-.441.327-.294.55-.735.672-1.323v-3.248a2.168 2.168 0 00-.693-.308c-.257-.065-.595-.098-1.015-.098-.747 0-1.335.217-1.764.651-.43.434-.644 1.118-.644 2.051 0 .383.035.74.105 1.071.07.331.187.618.35.861.163.243.38.434.651.574.27.14.602.21.994.21z"/><path id="1" fill="#A7333A" d="M67.858 26.002h2.198v-7.364l-2.24 1.568-.546-.798 3.08-2.198h.784v8.792h2.156v1.008h-5.432z"/><path id=";" fill="#7E7C7B" d="M77.686 26.24c0-.28.091-.506.273-.679.182-.173.418-.259.707-.259.355 0 .63.124.826.371.196.247.294.595.294 1.043a2.36 2.36 0 01-.637 1.659 2.465 2.465 0 01-.588.462c-.21.117-.404.203-.581.259l-.35-.546c.336-.13.625-.317.868-.56.243-.243.364-.537.364-.882-.13.028-.233.042-.308.042-.27 0-.483-.077-.637-.231-.154-.154-.231-.38-.231-.679zm.126-5.502c0-.299.084-.53.252-.693.168-.163.392-.245.672-.245.299 0 .532.082.7.245.168.163.252.394.252.693 0 .27-.084.495-.252.672-.168.177-.401.266-.7.266-.28 0-.504-.089-.672-.266a.938.938 0 01-.252-.672z"/><path id="yield" fill="#1C85B5" d="M20.034 42.932h.532l1.736-5.922h1.134l-1.946 6.286c-.103.327-.208.698-.315 1.113a5.2 5.2 0 01-.455 1.169 2.807 2.807 0 01-.798.924c-.336.252-.775.378-1.316.378-.121 0-.25-.014-.385-.042a3.856 3.856 0 01-.399-.105 2.574 2.574 0 01-.364-.147.977.977 0 01-.252-.168l.392-1.008c.056.047.133.093.231.14.098.047.205.086.322.119.117.033.231.06.343.084.112.023.205.035.28.035.7 0 1.176-.593 1.428-1.778h-.938l-2.94-7h1.26l2.45 5.922zm5.516 1.078v-.938h2.436v-5.124H25.55v-.938h3.556v6.062h2.38v.938H25.55zm2.058-8.988c0-.252.084-.469.252-.651a.838.838 0 01.644-.273c.27 0 .497.091.679.273a.889.889 0 01.273.651.806.806 0 01-.273.616.963.963 0 01-.679.252.872.872 0 01-.644-.252.838.838 0 01-.252-.616zm12.278 8.106c-.168.15-.366.29-.595.42a4.39 4.39 0 01-.749.336c-.27.093-.553.166-.847.217-.294.051-.59.077-.889.077-.56 0-1.055-.086-1.484-.259a2.858 2.858 0 01-1.078-.742 3.234 3.234 0 01-.658-1.155 4.767 4.767 0 01-.224-1.512c0-.588.082-1.11.245-1.568.163-.457.399-.84.707-1.148a3.08 3.08 0 011.12-.707 4.187 4.187 0 011.47-.245c.392 0 .78.051 1.162.154.383.103.721.296 1.015.581.294.285.52.677.679 1.176.159.5.215 1.146.168 1.939H34.51c0 .84.226 1.468.679 1.883.453.415 1.057.623 1.813.623.252 0 .502-.03.749-.091.247-.06.483-.133.707-.217a3.72 3.72 0 00.595-.28c.173-.103.306-.196.399-.28l.434.798zm-2.954-5.362c-.308 0-.6.033-.875.098a1.995 1.995 0 00-.728.329c-.21.154-.383.355-.518.602s-.222.553-.259.917h4.354c-.047-.616-.245-1.094-.595-1.435-.35-.34-.81-.511-1.379-.511zm5.614-3.556h2.324v7.448c0 .57.096.97.287 1.204.191.233.474.35.847.35.261 0 .511-.047.749-.14.238-.093.502-.252.791-.476l.504.77c-.15.13-.313.247-.49.35a3.638 3.638 0 01-1.106.42 2.963 2.963 0 01-1.442-.077 1.579 1.579 0 01-.679-.427 1.897 1.897 0 01-.413-.777c-.093-.322-.14-.721-.14-1.197v-6.51h-1.232v-.938zm11.62 0h2.268v7.406c0 .084.005.189.014.315a15.6 15.6 0 00.084.812c.019.135.037.254.056.357h.938v.91h-1.862l-.14-1.078h-.056c-.205.355-.511.651-.917.889s-.875.357-1.407.357c-1.055 0-1.832-.296-2.331-.889-.5-.593-.749-1.514-.749-2.765 0-.588.084-1.108.252-1.561.168-.453.408-.83.721-1.134a3.118 3.118 0 011.127-.693 4.298 4.298 0 011.47-.238c.196 0 .371.005.525.014.154.01.296.023.427.042.13.019.254.044.371.077.117.033.245.068.385.105v-1.988h-1.176v-.938zm-.84 9.03c.57 0 1.017-.147 1.344-.441.327-.294.55-.735.672-1.323v-3.248a2.168 2.168 0 00-.693-.308c-.257-.065-.595-.098-1.015-.098-.747 0-1.335.217-1.764.651-.43.434-.644 1.118-.644 2.051 0 .383.035.74.105 1.071.07.331.187.618.35.861.163.243.38.434.651.574.27.14.602.21.994.21z"/><path id="2" fill="#A7333A" d="M73.08 36.688c0 .859-.406 1.815-1.218 2.87-.812 1.055-1.946 2.203-3.402 3.444h4.928v1.008h-6.216v-1.008c.177-.168.42-.387.728-.658.308-.27.64-.572.994-.903a29.01 29.01 0 001.085-1.071c.369-.383.702-.775 1.001-1.176.299-.401.541-.803.728-1.204a2.75 2.75 0 00.28-1.162c0-.56-.147-1.001-.441-1.323-.294-.322-.735-.483-1.323-.483-.504 0-.929.056-1.274.168a3.101 3.101 0 00-.938.49l-.476-.77c.42-.299.866-.518 1.337-.658s.987-.21 1.547-.21c.877 0 1.54.238 1.988.714.448.476.672 1.12.672 1.932z"/><path id=";" fill="#7E7C7B" d="M77.686 43.24c0-.28.091-.506.273-.679.182-.173.418-.259.707-.259.355 0 .63.124.826.371.196.247.294.595.294 1.043a2.36 2.36 0 01-.637 1.659 2.465 2.465 0 01-.588.462c-.21.117-.404.203-.581.259l-.35-.546c.336-.13.625-.317.868-.56.243-.243.364-.537.364-.882-.13.028-.233.042-.308.042-.27 0-.483-.077-.637-.231-.154-.154-.231-.38-.231-.679zm.126-5.502c0-.299.084-.53.252-.693.168-.163.392-.245.672-.245.299 0 .532.082.7.245.168.163.252.394.252.693 0 .27-.084.495-.252.672-.168.177-.401.266-.7.266-.28 0-.504-.089-.672-.266a.938.938 0 01-.252-.672z"/><path id="return" fill="#1C85B5" d="M16.604 61.01v-.938h1.89v-5.124h-1.89v-.938h2.618l.224.91h.07c.317-.29.672-.537 1.064-.742.392-.205.859-.308 1.4-.308.317 0 .572.06.763.182.191.121.34.299.448.532.107.233.18.516.217.847.037.331.056.707.056 1.127l-.98.014c0-.597-.058-1.036-.175-1.316-.117-.28-.329-.42-.637-.42-.29 0-.55.042-.784.126a2.565 2.565 0 00-.609.308c-.173.121-.32.243-.441.364s-.21.224-.266.308v4.13h2.688v.938h-5.656zm14.882-.882c-.168.15-.366.29-.595.42a4.39 4.39 0 01-.749.336c-.27.093-.553.166-.847.217-.294.051-.59.077-.889.077-.56 0-1.055-.086-1.484-.259a2.858 2.858 0 01-1.078-.742 3.234 3.234 0 01-.658-1.155 4.767 4.767 0 01-.224-1.512c0-.588.082-1.11.245-1.568.163-.457.399-.84.707-1.148a3.08 3.08 0 011.12-.707 4.187 4.187 0 011.47-.245c.392 0 .78.051 1.162.154.383.103.721.296 1.015.581.294.285.52.677.679 1.176.159.5.215 1.146.168 1.939H26.11c0 .84.226 1.468.679 1.883.453.415 1.057.623 1.813.623.252 0 .502-.03.749-.091.247-.06.483-.133.707-.217a3.72 3.72 0 00.595-.28c.173-.103.306-.196.399-.28l.434.798zm-2.954-5.362c-.308 0-.6.033-.875.098a1.995 1.995 0 00-.728.329c-.21.154-.383.355-.518.602s-.222.553-.259.917h4.354c-.047-.616-.245-1.094-.595-1.435-.35-.34-.81-.511-1.379-.511zm4.382-.756h1.666v-1.386l1.092-.308v1.694h3.738v.938h-3.738v3.304c0 .681.166 1.185.497 1.512.331.327.805.49 1.421.49.42 0 .786-.08 1.099-.238.313-.159.595-.331.847-.518l.364.826a3.938 3.938 0 01-1.169.63 4.182 4.182 0 01-1.393.238 3.41 3.41 0 01-1.057-.161 2.426 2.426 0 01-.875-.497 2.38 2.38 0 01-.602-.861c-.15-.35-.224-.768-.224-1.253v-3.472h-1.666v-.938zm13.048 0h1.988v4.774c0 .457.028.896.084 1.316h.938v.91H47.11l-.042-1.19h-.056a2.938 2.938 0 01-.966.98c-.401.252-.887.378-1.456.378-.43 0-.796-.049-1.099-.147a1.556 1.556 0 01-.749-.511c-.196-.243-.34-.567-.434-.973-.093-.406-.14-.912-.14-1.519v-3.08h-.938v-.938h2.03v3.794c0 .383.016.726.049 1.029.033.303.1.56.203.77.103.21.254.369.455.476.2.107.469.161.805.161.485 0 .908-.159 1.267-.476.36-.317.632-.714.819-1.19v-3.626h-.896v-.938zm4.242 7v-.938h1.89v-5.124h-1.89v-.938h2.618l.224.91h.07c.317-.29.672-.537 1.064-.742.392-.205.859-.308 1.4-.308.317 0 .572.06.763.182.191.121.34.299.448.532.107.233.18.516.217.847.037.331.056.707.056 1.127l-.98.014c0-.597-.058-1.036-.175-1.316-.117-.28-.329-.42-.637-.42-.29 0-.55.042-.784.126a2.565 2.565 0 00-.609.308c-.173.121-.32.243-.441.364s-.21.224-.266.308v4.13h2.688v.938h-5.656zm8.778-4.55a14.05 14.05 0 00-.063-1.176 4.657 4.657 0 00-.049-.364h-.938v-.91h1.876l.126 1.134h.07c.093-.159.217-.315.371-.469a2.91 2.91 0 011.225-.721c.252-.075.518-.112.798-.112.43 0 .81.047 1.141.14.331.093.607.259.826.497.22.238.385.56.497.966.112.406.168.922.168 1.547v4.018h-1.092v-3.808c0-.775-.126-1.358-.378-1.75-.252-.392-.71-.588-1.372-.588-.243 0-.478.049-.707.147a2.44 2.44 0 00-.623.385c-.187.159-.35.343-.49.553-.14.21-.243.432-.308.665v4.396h-1.078v-4.55z"/><path id="3" fill="#A7333A" d="M77.952 60.212c.373 0 .716-.049 1.029-.147a2.65 2.65 0 00.819-.413 1.9 1.9 0 00.546-.644c.13-.252.196-.532.196-.84 0-.644-.226-1.104-.679-1.379-.453-.275-1.062-.413-1.827-.413h-.896v-.672l2.758-3.486h-4.186V51.21h5.53v1.008l-2.758 3.234h.224c.43 0 .821.06 1.176.182.355.121.663.294.924.518.261.224.464.495.609.812.145.317.217.677.217 1.078 0 .504-.098.952-.294 1.344a2.89 2.89 0 01-.798.987c-.336.266-.73.467-1.183.602a5.034 5.034 0 01-1.449.203c-.476 0-.889-.035-1.239-.105-.35-.07-.67-.156-.959-.259l.28-.98c.243.112.527.203.854.273a5.3 5.3 0 001.106.105z"/><path id=";}" fill="#7E7C7B" d="M86.086 60.24c0-.28.091-.506.273-.679.182-.173.418-.259.707-.259.355 0 .63.124.826.371.196.247.294.595.294 1.043a2.36 2.36 0 01-.637 1.659 2.465 2.465 0 01-.588.462c-.21.117-.404.203-.581.259l-.35-.546c.336-.13.625-.317.868-.56.243-.243.364-.537.364-.882-.13.028-.233.042-.308.042-.27 0-.483-.077-.637-.231-.154-.154-.231-.38-.231-.679zm.126-5.502c0-.299.084-.53.252-.693.168-.163.392-.245.672-.245.299 0 .532.082.7.245.168.163.252.394.252.693 0 .27-.084.495-.252.672-.168.177-.401.266-.7.266-.28 0-.504-.089-.672-.266a.938.938 0 01-.252-.672zM4.2 78.934c0 .756-.198 1.328-.595 1.715-.397.387-.922.581-1.575.581H0v-.98h1.526c.57 0 .975-.135 1.218-.406.243-.27.364-.69.364-1.26V77.24c0-.364.07-.695.21-.994.14-.299.308-.558.504-.777.196-.22.397-.392.602-.518.205-.126.373-.198.504-.217v-.084c-.13-.019-.299-.086-.504-.203a2.7 2.7 0 01-1.106-1.225c-.14-.299-.21-.64-.21-1.022v-1.358c0-.55-.114-.966-.343-1.246-.229-.28-.637-.42-1.225-.42H0v-.98h2.03c.317 0 .609.058.875.175.266.117.495.278.686.483.191.205.34.448.448.728.107.28.161.588.161.924v1.428c0 .43.068.789.203 1.078.135.29.303.525.504.707.2.182.415.313.644.392.229.08.432.119.609.119v.98c-.177 0-.38.047-.609.14a2.011 2.011 0 00-.644.434 2.44 2.44 0 00-.504.735c-.135.294-.203.642-.203 1.043v1.372z"/></g><path id="Line" fill="#C06334" fill-rule="nonzero" d="M287.5 57.5v6h32v2h-32v6l-14-7 14-7z" transform="matrix(-1 0 0 1 592 0)"/><text id="{value:-2,-done:-fal" fill="#AF6E24" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="326" y="69">{value: 2, done: false}</tspan></text></g></g></svg> +>>>>>>> 540d753e90789205fc6e75c502f68382c87dea9b diff --git a/1-js/12-generators-iterators/2-async-iterators-generators/article.md b/1-js/12-generators-iterators/2-async-iterators-generators/article.md index 43b214a0f..d4e9f7861 100644 --- a/1-js/12-generators-iterators/2-async-iterators-generators/article.md +++ b/1-js/12-generators-iterators/2-async-iterators-generators/article.md @@ -1,35 +1,48 @@ -# Async iterators and generators +# Async iteration and generators -Asynchronous iterators allow to iterate over data that comes asynchronously, on-demand. +Asynchronous iteration allow us to iterate over data that comes asynchronously, on-demand. Like, for instance, when we download something chunk-by-chunk over a network. And asynchronous generators make it even more convenient. -For instance, when we download something chunk-by-chunk, or just expect events to come asynchronously and would like to iterate over them -- async iterators and generators may come in handy. Let's see a simple example first, to grasp the syntax, and then review a real-life use case. +Let's see a simple example first, to grasp the syntax, and then review a real-life use case. -## Async iterators +## Recall iterables -Asynchronous iterators are totally similar to regular iterators, with a few syntactic differences. +Let's recall the topic about iterables. -"Regular" iterable object from the chapter <info:iterable> look like this: +The idea is that we have an object, such as `range` here: +```js +let range = { + from: 1, + to: 5 +}; +``` + +...And we'd like to use `for..of` loop on it, such as `for(value of range)`, to get values from `1` to `5`. + +In other words, we want to add an *iteration ability* to the object. + +That can be implemented using a special method with the name `Symbol.iterator`: + +- This method is called in by the `for..of` construct when the loop is started, and it should return an object with the `next` method. +- For each iteration, the `next()` method is invoked for the next value. +- The `next()` should return a value in the form `{done: true/false, value:<loop value>}`, where `done:true` means the end of the loop. + +Here's an implementation for the iterable `range`: ```js run let range = { from: 1, to: 5, - // for..of calls this method once in the very beginning *!* - [Symbol.iterator]() { + [Symbol.iterator]() { // called once, in the beginning of for..of */!* - // ...it returns the iterator object: - // onward, for..of works only with that object, asking it for next values return { current: this.from, last: this.to, - // next() is called on each iteration by the for..of loop *!* - next() { // (2) - // it should return the value as an object {done:.., value :...} + next() { // called every iteration, to get the next value */!* if (this.current <= this.last) { return { done: false, value: this.current++ }; @@ -46,39 +59,46 @@ for(let value of range) { } ``` -If necessary, please refer to the [chapter about iterables](info:iterable) for details about regular iterators. +If anything is unclear, please visit the chapter [](info:iterable), it gives all the details about regular iterables. + +## Async iterables + +Asynchronous iteration is needed when values come asynchronously: after `setTimeout` or another kind of delay. -To make the object iterable asynchronously: -1. We need to use `Symbol.asyncIterator` instead of `Symbol.iterator`. -2. `next()` should return a promise. -3. To iterate over such an object, we should use `for await (let item of iterable)` loop. +The most common case is that the object needs to make a network request to deliver the next value, we'll see a real-life example of it a bit later. -Let's make an iterable `range` object, like the one before, but now it will return values asynchronously, one per second: +To make an object iterable asynchronously: + +1. Use `Symbol.asyncIterator` instead of `Symbol.iterator`. +2. The `next()` method should return a promise (to be fulfilled with the next value). + - The `async` keyword handles it, we can simply make `async next()`. +3. To iterate over such an object, we should use a `for await (let item of iterable)` loop. + - Note the `await` word. + +As a starting example, let's make an iterable `range` object, similar like the one before, but now it will return values asynchronously, one per second. + +All we need to do is to perform a few replacements in the code above: ```js run let range = { from: 1, to: 5, - // for await..of calls this method once in the very beginning *!* [Symbol.asyncIterator]() { // (1) */!* - // ...it returns the iterator object: - // onward, for await..of works only with that object, asking it for next values return { current: this.from, last: this.to, - // next() is called on each iteration by the for..of loop *!* async next() { // (2) - // it should return the value as an object {done:.., value :...} - // (automatically wrapped into a promise by async) */!* - // can use await inside, do async stuff: +*!* + // note: we can use "await" inside the async next: await new Promise(resolve => setTimeout(resolve, 1000)); // (3) +*/!* if (this.current <= this.last) { return { done: false, value: this.current++ }; @@ -101,38 +121,43 @@ let range = { })() ``` -As we can see, the components are similar to regular iterators: +As we can see, the structure is similar to regular iterators: 1. To make an object asynchronously iterable, it must have a method `Symbol.asyncIterator` `(1)`. -2. It must return the object with `next()` method returning a promise `(2)`. -3. The `next()` method doesn't have to be `async`, it may be a regular method returning a promise, but `async` allows to use `await` inside. Here we just delay for a second `(3)`. +2. This method must return the object with `next()` method returning a promise `(2)`. +3. The `next()` method doesn't have to be `async`, it may be a regular method returning a promise, but `async` allows us to use `await`, so that's convenient. Here we just delay for a second `(3)`. 4. To iterate, we use `for await(let value of range)` `(4)`, namely add "await" after "for". It calls `range[Symbol.asyncIterator]()` once, and then its `next()` for values. -Here's a small cheatsheet: +Here's a small table with the differences: | | Iterators | Async iterators | |-------|-----------|-----------------| -| Object method to provide iteraterable | `Symbol.iterator` | `Symbol.asyncIterator` | +| Object method to provide iterator | `Symbol.iterator` | `Symbol.asyncIterator` | | `next()` return value is | any value | `Promise` | | to loop, use | `for..of` | `for await..of` | - -````warn header="The spread operator doesn't work asynchronously" +````warn header="The spread syntax `...` doesn't work asynchronously" Features that require regular, synchronous iterators, don't work with asynchronous ones. -For instance, a spread operator won't work: +For instance, a spread syntax won't work: ```js alert( [...range] ); // Error, no Symbol.iterator ``` -That's natural, as it expects to find `Symbol.iterator`, same as `for..of` without `await`. +That's natural, as it expects to find `Symbol.iterator`, not `Symbol.asyncIterator`. + +It's also the case for `for..of`: the syntax without `await` needs `Symbol.iterator`. ```` -## Async generators +## Recall generators -JavaScript also provides generators, that are also iterable. +Now let's recall generators, as they allow to make iteration code much shorter. Most of the time, when we'd like to make an iterable, we'll use generators. -Let's recall a sequence generator from the chapter [](info:generators). It generates a sequence of values from `start` to `end` (could be anything else): +For sheer simplicity, omitting some important stuff, they are "functions that generate (yield) values". They are explained in detail in the chapter [](info:generators). + +Generators are labelled with `function*` (note the star) and use `yield` to generate a value, then we can use `for..of` to loop over them. + +This example generates a sequence of values from `start` to `end`: ```js run function* generateSequence(start, end) { @@ -146,12 +171,54 @@ for(let value of generateSequence(1, 5)) { } ``` +As we already know, to make an object iterable, we should add `Symbol.iterator` to it. + +```js +let range = { + from: 1, + to: 5, +*!* + [Symbol.iterator]() { + return <object with next to make range iterable> + } +*/!* +} +``` + +A common practice for `Symbol.iterator` is to return a generator, it makes the code shorter, as you can see: + +```js run +let range = { + from: 1, + to: 5, + + *[Symbol.iterator]() { // a shorthand for [Symbol.iterator]: function*() + for(let value = this.from; value <= this.to; value++) { + yield value; + } + } +}; + +for(let value of range) { + alert(value); // 1, then 2, then 3, then 4, then 5 +} +``` -Normally, we can't use `await` in generators. All values must come synchronously: there's no place for delay in `for..of`. +Please see the chapter [](info:generators) if you'd like more details. -But what if we need to use `await` in the generator body? To perform network requests, for instance. +In regular generators we can't use `await`. All values must come synchronously, as required by the `for..of` construct. -No problem, just prepend it with `async`, like this: +What if we'd like to generate values asynchronously? From network requests, for instance. + +Let's switch to asynchronous generators to make it possible. + +## Async generators (finally) + +For most practical applications, when we'd like to make an object that asynchronously generates a sequence of values, we can use an asynchronous generator. + +The syntax is simple: prepend `function*` with `async`. That makes the generator asynchronous. + +And then use `for await (...)` to iterate over it, like this: ```js run *!*async*/!* function* generateSequence(start, end) { @@ -159,7 +226,7 @@ No problem, just prepend it with `async`, like this: for (let i = start; i <= end; i++) { *!* - // yay, can use await! + // Wow, can use await! await new Promise(resolve => setTimeout(resolve, 1000)); */!* @@ -172,70 +239,43 @@ No problem, just prepend it with `async`, like this: let generator = generateSequence(1, 5); for *!*await*/!* (let value of generator) { - alert(value); // 1, then 2, then 3, then 4, then 5 + alert(value); // 1, then 2, then 3, then 4, then 5 (with delay between) } })(); ``` -Now we have an the async generator, iteratable with `for await...of`. +As the generator is asynchronous, we can use `await` inside it, rely on promises, perform network requests and so on. -It's indeed very simple. We add the `async` keyword, and the generator now can use `await` inside of it, rely on promises and other async functions. +````smart header="Under-the-hood difference" +Technically, if you're an advanced reader who remembers the details about generators, there's an internal difference. -Technically, another the difference of an async generator is that its `generator.next()` method is now asynchronous also, it returns promises. +For async generators, the `generator.next()` method is asynchronous, it returns promises. -Instead of `result = generator.next()` for a regular, non-async generator, values can be obtained like this: +In a regular generator we'd use `result = generator.next()` to get values. In an async generator, we should add `await`, like this: ```js result = await generator.next(); // result = {value: ..., done: true/false} ``` +That's why async generators work with `for await...of`. +```` -## Iterables via async generators - -When we'd like to make an object iterable, we should add `Symbol.iterator` to it. - -```js -let range = { - from: 1, - to: 5, -*!* - [Symbol.iterator]() { ...return object with next to make range iterable... } -*/!* -} -``` - -A common practice for `Symbol.iterator` is to return a generator, rather than a plain object with `next` as in the example before. - -Let's recall an example from the chapter [](info:generators): - -```js run -let range = { - from: 1, - to: 5, - - *[Symbol.iterator]() { // a shorthand for [Symbol.iterator]: function*() - for(let value = this.from; value <= this.to; value++) { - yield value; - } - } -}; +### Async iterable range -for(let value of range) { - alert(value); // 1, then 2, then 3, then 4, then 5 -} -``` +Regular generators can be used as `Symbol.iterator` to make the iteration code shorter. -Here a custom object `range` is iterable, and the generator `*[Symbol.iterator]` implements the logic for listing values. +Similar to that, async generators can be used as `Symbol.asyncIterator` to implement the asynchronous iteration. -If we'd like to add async actions into the generator, then we should replace `Symbol.iterator` with async `Symbol.asyncIterator`: +For instance, we can make the `range` object generate values asynchronously, once per second, by replacing synchronous `Symbol.iterator` with asynchronous `Symbol.asyncIterator`: ```js run let range = { from: 1, to: 5, + // this line is same as [Symbol.asyncIterator]: async function*() { *!* - async *[Symbol.asyncIterator]() { // same as [Symbol.asyncIterator]: async function*() + async *[Symbol.asyncIterator]() { */!* for(let value = this.from; value <= this.to; value++) { @@ -258,31 +298,39 @@ let range = { Now values come with a delay of 1 second between them. -## Real-life example +```smart +Technically, we can add both `Symbol.iterator` and `Symbol.asyncIterator` to the object, so it's both synchronously (`for..of`) and asynchronously (`for await..of`) iterable. + +In practice though, that would be a weird thing to do. +``` + +## Real-life example: paginated data -So far we've seen simple examples, to gain basic understanding. Now let's review a real-life use case. +So far we've seen basic examples, to gain understanding. Now let's review a real-life use case. -There are many online APIs that deliver paginated data. For instance, when we need a list of users, then we can fetch it page-by-page: a request returns a pre-defined count (e.g. 100 users), and provides an URL to the next page. +There are many online services that deliver paginated data. For instance, when we need a list of users, a request returns a pre-defined count (e.g. 100 users) - "one page", and provides a URL to the next page. -The pattern is very common, it's not about users, but just about anything. For instance, GitHub allows to retrieve commits in the same, paginated fashion: +This pattern is very common. It's not about users, but just about anything. -- We should make a request to URL in the form `https://api.github.com/repos/<repo>/commits`. +For instance, GitHub allows us to retrieve commits in the same, paginated fashion: + +- We should make a request to `fetch` in the form `https://api.github.com/repos/<repo>/commits`. - It responds with a JSON of 30 commits, and also provides a link to the next page in the `Link` header. - Then we can use that link for the next request, to get more commits, and so on. -What we'd like to have is an iterable source of commits, so that we could use it like this: +For our code, we'd like to have a simpler way to get commits. -```js -let repo = 'javascript-tutorial/en.javascript.info'; // GitHub repository to get commits from +Let's make a function `fetchCommits(repo)` that gets commits for us, making requests whenever needed. And let it care about all pagination stuff. For us it'll be a simple async iteration `for await..of`. + +So the usage will be like this: -for await (let commit of fetchCommits(repo)) { +```js +for await (let commit of fetchCommits("username/repository")) { // process commit } ``` -We'd like `fetchCommits` to get commits for us, making requests whenever needed. And let it care about all pagination stuff, for us it'll be a simple `for await..of`. - -With async generators that's pretty easy to implement: +Here's such function, implemented as async generator: ```js async function* fetchCommits(repo) { @@ -290,14 +338,14 @@ async function* fetchCommits(repo) { while (url) { const response = await fetch(url, { // (1) - headers: {'User-Agent': 'Our script'}, // github requires user-agent header + headers: {'User-Agent': 'Our script'}, // github needs any user-agent header }); - const body = await response.json(); // (2) parses response as JSON (array of commits) + const body = await response.json(); // (2) response is JSON (array of commits) // (3) the URL of the next page is in the headers, extract it let nextPage = response.headers.get('Link').match(/<(.*?)>; rel="next"/); - nextPage = nextPage && nextPage[1]; + nextPage = nextPage?.[1]; url = nextPage; @@ -308,10 +356,16 @@ async function* fetchCommits(repo) { } ``` -1. We use the browser `fetch` method to download from a remote URL. It allows to supply authorization and other headers if needed, here GitHub requires `User-Agent`. -2. The fetch result is parsed as JSON, that's again a `fetch`-specific method. -3. We can get the next page URL from the `Link` header of the response. It has a special format, so we use a regexp for that. The next page URL may look like this: `https://api.github.com/repositories/93253246/commits?page=2`, it's generated by GitHub itself. -4. Then we yield all commits received, and when they finish -- the next `while(url)` iteration will trigger, making one more request. +More explanations about how it works: + +1. We use the browser [fetch](info:fetch) method to download the commits. + + - The initial URL is `https://api.github.com/repos/<repo>/commits`, and the next page will be in the `Link` header of the response. + - The `fetch` method allows us to supply authorization and other headers if needed -- here GitHub requires `User-Agent`. +2. The commits are returned in JSON format. +3. We should get the next page URL from the `Link` header of the response. It has a special format, so we use a regular expression for that (we will learn this feature in [Regular expressions](info:regular-expressions)). + - The next page URL may look like `https://api.github.com/repositories/93253246/commits?page=2`. It's generated by GitHub itself. +4. Then we yield the received commits one by one, and when they finish, the next `while(url)` iteration will trigger, making one more request. An example of use (shows commit authors in console): @@ -330,9 +384,13 @@ An example of use (shows commit authors in console): } })(); + +// Note: If you are running this in an external sandbox, you'll need to paste here the function fetchCommits described above ``` -That's just what we wanted. The internal pagination mechanics is invisible from the outside. For us it's just an async generator that returns commits. +That's just what we wanted. + +The internal mechanics of paginated requests is invisible from the outside. For us it's just an async generator that returns commits. ## Summary @@ -342,20 +400,18 @@ When we expect the data to come asynchronously, with delays, their async counter Syntax differences between async and regular iterators: -| | Iterators | Async iterators | +| | Iterable | Async Iterable | |-------|-----------|-----------------| -| Object method to provide iteraterable | `Symbol.iterator` | `Symbol.asyncIterator` | -| `next()` return value is | any value | `Promise` | +| Method to provide iterator | `Symbol.iterator` | `Symbol.asyncIterator` | +| `next()` return value is | `{value:…, done: true/false}` | `Promise` that resolves to `{value:…, done: true/false}` | Syntax differences between async and regular generators: | | Generators | Async generators | |-------|-----------|-----------------| | Declaration | `function*` | `async function*` | -| `generator.next()` returns | `{value:…, done: true/false}` | `Promise` that resolves to `{value:…, done: true/false}` | +| `next()` return value is | `{value:…, done: true/false}` | `Promise` that resolves to `{value:…, done: true/false}` | In web-development we often meet streams of data, when it flows chunk-by-chunk. For instance, downloading or uploading a big file. -We could use async generators to process such data, but there's also another API called Streams, that may be more convenient, as it provides special interfaces to transform the data and to pass it from one stream to another (e.g. download from one place and immediately send elsewhere). But they are also more complex. - -Streams API not a part of JavaScript language standard. Streams and async generators complement each other, both are great ways to handle async data flows. +We can use async generators to process such data. It's also noteworthy that in some environments, like in browsers, there's also another API called Streams, that provides special interfaces to work with such streams, to transform the data and to pass it from one stream to another (e.g. download from one place and immediately send elsewhere). diff --git a/1-js/12-generators-iterators/2-async-iterators-generators/head.html b/1-js/12-generators-iterators/2-async-iterators-generators/head.html index 74d66a8b8..03f21e2bd 100644 --- a/1-js/12-generators-iterators/2-async-iterators-generators/head.html +++ b/1-js/12-generators-iterators/2-async-iterators-generators/head.html @@ -11,7 +11,7 @@ // the URL of the next page is in the headers, extract it let nextPage = response.headers.get('Link').match(/<(.*?)>; rel="next"/); - nextPage = nextPage && nextPage[1]; + nextPage = nextPage?.[1]; url = nextPage; diff --git a/1-js/13-modules/01-modules-intro/article.md b/1-js/13-modules/01-modules-intro/article.md index ad4f21068..5ad70d151 100644 --- a/1-js/13-modules/01-modules-intro/article.md +++ b/1-js/13-modules/01-modules-intro/article.md @@ -1,29 +1,30 @@ # Modules, introduction -As our application grows bigger, we want to split it into multiple files, so called 'modules'. -A module usually contains a class or a library of useful functions. +As our application grows bigger, we want to split it into multiple files, so called "modules". A module may contain a class or a library of functions for a specific purpose. -For a long time, JavaScript existed without a language-level module syntax. That wasn't a problem, because initially scripts were small and simple. So there was no need. +For a long time, JavaScript existed without a language-level module syntax. That wasn't a problem, because initially scripts were small and simple, so there was no need. -But eventually scripts became more and more complex, so the community invented a variety of ways to organize code into modules. +But eventually scripts became more and more complex, so the community invented a variety of ways to organize code into modules, special libraries to load modules on demand. -For instance: +To name some (for historical reasons): -- [AMD](https://en.wikipedia.org/wiki/Asynchronous_module_definition) -- one of the most ancient module systems, initially implemented by the library [require.js](http://requirejs.org/). -- [CommonJS](http://wiki.commonjs.org/wiki/Modules/1.1) -- the module system created for Node.js server. +- [AMD](https://en.wikipedia.org/wiki/Asynchronous_module_definition) -- one of the most ancient module systems, initially implemented by the library [require.js](https://requirejs.org/). +- [CommonJS](https://wiki.commonjs.org/wiki/Modules/1.1) -- the module system created for Node.js server. - [UMD](https://github.com/umdjs/umd) -- one more module system, suggested as a universal one, compatible with AMD and CommonJS. -Now all these slowly become a part of history, but we still can find them in old scripts. The language-level module system appeared in the standard in 2015, gradually evolved since then, and is now supported by all major browsers and in Node.js. +Now these all slowly became a part of history, but we still can find them in old scripts. + +The language-level module system appeared in the standard in 2015, gradually evolved since then, and is now supported by all major browsers and in Node.js. So we'll study the modern JavaScript modules from now on. ## What is a module? -A module is just a file, a single script, as simple as that. +A module is just a file. One script is one module. As simple as that. -Directives `export` and `import` allow to interchange functionality between modules: +Modules can load each other and use special directives `export` and `import` to interchange functionality, call functions of one module from another one: -- `export` keyword labels variables and functions that should be accessible from outside the file. -- `import` allows to import functionality from other modules. +- `export` keyword labels variables and functions that should be accessible from outside the current module. +- `import` allows the import of functionality from other modules. For instance, if we have a file `sayHi.js` exporting a function: @@ -44,13 +45,21 @@ alert(sayHi); // function... sayHi('John'); // Hello, John! ``` -In this tutorial we concentrate on the language itself, but we use browser as the demo environment, so let's see how modules work in the browser. +The `import` directive loads the module by path `./sayHi.js` relative to the current file, and assigns exported function `sayHi` to the corresponding variable. + +Let's run the example in-browser. -To use modules, we must set the attribute `<script type="module">`, like this: +As modules support special keywords and features, we must tell the browser that a script should be treated as a module, by using the attribute `<script type="module">`. + +Like this: [codetabs src="say" height="140" current="index.html"] -The browser automatically fetches and evaluates imports, then runs the script. +The browser automatically fetches and evaluates the imported module (and its imports if needed), and then runs the script. + +```warn header="Modules work only via HTTP(s), not locally" +If you try to open a web-page locally, via `file://` protocol, you'll find that `import/export` directives don't work. Use a local web-server, such as [static-server](https://www.npmjs.com/package/static-server#getting-started) or use the "live server" capability of your editor, such as VS Code [Live Server Extension](https://marketplace.visualstudio.com/items?itemName=ritwickdey.LiveServer) to test modules. +``` ## Core module features @@ -60,7 +69,7 @@ There are core features, valid both for browser and server-side JavaScript. ### Always "use strict" -Modules always `use strict`. E.g. assigning to an undeclared variable will give an error. +Modules always work in strict mode. E.g. assigning to an undeclared variable will give an error. ```html run <script type="module"> @@ -68,25 +77,28 @@ Modules always `use strict`. E.g. assigning to an undeclared variable will give </script> ``` -Here we can see it in the browser, but the same is true for any module. - ### Module-level scope Each module has its own top-level scope. In other words, top-level variables and functions from a module are not seen in other scripts. -In the example below, two scripts are imported, and `hello.js` tries to use `user` variable declared in `user.js`, and fails: +In the example below, two scripts are imported, and `hello.js` tries to use `user` variable declared in `user.js`. It fails, because it's a separate module (you'll see the error in the console): [codetabs src="scopes" height="140" current="index.html"] -Modules are expected to `export` what they want to be accessible from outside and `import` what they need. +Modules should `export` what they want to be accessible from outside and `import` what they need. + +- `user.js` should export the `user` variable. +- `hello.js` should import it from `user.js` module. -So we should import `user.js` directly into `hello.js` instead of `index.html`. +In other words, with modules we use import/export instead of relying on global variables. -That's the correct variant: +This is the correct variant: [codetabs src="scopes-working" height="140" current="hello.js"] -In the browser, independant top-level scope also exists for each `<script type="module">`: +In the browser, if we talk about HTML pages, independent top-level scope also exists for each `<script type="module">`. + +Here are two scripts on the same page, both `type="module"`. They don't see each other's top-level variables: ```html run <script type="module"> @@ -101,13 +113,21 @@ In the browser, independant top-level scope also exists for each `<script type=" </script> ``` -If we really need to make a "global" in-browser variable, we can explicitly assign it to `window` and access as `window.user`. But that's an exception requiring a good reason. +```smart +In the browser, we can make a variable window-level global by explicitly assigning it to a `window` property, e.g. `window.user = "John"`. + +Then all scripts will see it, both with `type="module"` and without it. + +That said, making such global variables is frowned upon. Please try to avoid them. +``` ### A module code is evaluated only the first time when imported -If the same module is imported into multiple other places, its code is executed only the first time, then exports are given to all importers. +If the same module is imported into multiple other modules, its code is executed only once, upon the first import. Then its exports are given to all further importers. + +The one-time evaluation has important consequences, that we should be aware of. -That has important consequences. Let's see that on examples. +Let's see a couple of examples. First, if executing a module code brings side-effects, like showing a message, then importing it multiple times will trigger it only once -- the first time: @@ -123,12 +143,14 @@ alert("Module is evaluated!"); import `./alert.js`; // Module is evaluated! // 📁 2.js -import `./alert.js`; // (nothing) +import `./alert.js`; // (shows nothing) ``` -In practice, top-level module code is mostly used for initialization. We create data structures, pre-fill them, and if we want something to be reusable -- export it. +The second import shows nothing, because the module has already been evaluated. -Now, a more advanced example. +There's a rule: top-level module code should be used for initialization, creation of module-specific internal data structures. If we need to make something callable multiple times - we should export it as a function, like we did with `sayHi` above. + +Now, let's consider a deeper example. Let's say, a module exports an object: @@ -153,60 +175,77 @@ import {admin} from './admin.js'; alert(admin.name); // Pete *!* -// Both 1.js and 2.js imported the same object +// Both 1.js and 2.js reference the same admin object // Changes made in 1.js are visible in 2.js */!* ``` -So, let's reiterate -- the module is executed only once. Exports are generated, and then they are shared between importers, so if something changes the `admin` object, other modules will see that . +As you can see, when `1.js` changes the `name` property in the imported `admin`, then `2.js` can see the new `admin.name`. + +That's exactly because the module is executed only once. Exports are generated, and then they are shared between importers, so if something changes the `admin` object, other importers will see that. -Such behavior is great for modules that require configuration. We can set required properties on the first import, and then in further imports it's ready. +**Such behavior is actually very convenient, because it allows us to *configure* modules.** -For instance, `admin.js` module may provide certain functionality, but expect the credentials to come into the `admin` object from outside: +In other words, a module can provide a generic functionality that needs a setup. E.g. authentication needs credentials. Then it can export a configuration object expecting the outer code to assign to it. + +Here's the classical pattern: +1. A module exports some means of configuration, e.g. a configuration object. +2. On the first import we initialize it, write to its properties. The top-level application script may do that. +3. Further imports use the module. + +For instance, the `admin.js` module may provide certain functionality (e.g. authentication), but expect the credentials to come into the `config` object from outside: ```js // 📁 admin.js -export let admin = { }; +export let config = { }; export function sayHi() { - alert(`Ready to serve, ${admin.name}!`); + alert(`Ready to serve, ${config.user}!`); } ``` -Now, in `init.js`, the first script of our app, we set `admin.name`. Then everyone will see it, including calls made from inside `admin.js` itself: +Here, `admin.js` exports the `config` object (initially empty, but may have default properties too). + +Then in `init.js`, the first script of our app, we import `config` from it and set `config.user`: ```js // 📁 init.js -import {admin} from './admin.js'; -admin.name = "Pete"; +import {config} from './admin.js'; +config.user = "Pete"; ``` -```js -// 📁 other.js -import {admin, sayHi} from './admin.js'; +...Now the module `admin.js` is configured. + +Further importers can call it, and it correctly shows the current user: -alert(admin.name); // *!*Pete*/!* +```js +// 📁 another.js +import {sayHi} from './admin.js'; sayHi(); // Ready to serve, *!*Pete*/!*! ``` + ### import.meta The object `import.meta` contains the information about the current module. -Its content depends on the environment. In the browser, it contains the url of the script, or a current webpage url if inside HTML: +Its content depends on the environment. In the browser, it contains the URL of the script, or a current webpage URL if inside HTML: ```html run height=0 <script type="module"> - alert(import.meta.url); // script url (url of the html page for an inline script) + alert(import.meta.url); // script URL + // for an inline script - the URL of the current HTML-page </script> ``` -### Top-level "this" is undefined +### In a module, "this" is undefined That's kind of a minor feature, but for completeness we should mention it. -In a module, top-level `this` is undefined, as opposed to a global object in non-module scripts: +In a module, top-level `this` is undefined. + +Compare it to non-module scripts, where `this` is a global object: ```html run height=0 <script> @@ -222,18 +261,18 @@ In a module, top-level `this` is undefined, as opposed to a global object in non There are also several browser-specific differences of scripts with `type="module"` compared to regular ones. -You may want skip those for now if you're reading for the first time, or if you don't use JavaScript in a browser. +You may want to skip this section for now if you're reading for the first time, or if you don't use JavaScript in a browser. ### Module scripts are deferred Module scripts are *always* deferred, same effect as `defer` attribute (described in the chapter [](info:script-async-defer)), for both external and inline scripts. In other words: -- external module scripts `<script type="module" src="...">` don't block HTML processing. -- module scripts wait until the HTML document is fully ready. -- relative order is maintained: scripts that go first in the document, execute first. +- downloading external module scripts `<script type="module" src="...">` doesn't block HTML processing, they load in parallel with other resources. +- module scripts wait until the HTML document is fully ready (even if they are tiny and load faster than HTML), and then run. +- relative order of scripts is maintained: scripts that go first in the document, execute first. -As a side-effect, module scripts always see HTML elements below them. +As a side effect, module scripts always "see" the fully loaded HTML-page, including HTML elements below them. For instance: @@ -245,9 +284,11 @@ For instance: // as modules are deferred, the script runs after the whole page is loaded </script> +Compare to regular script below: + <script> *!* - alert(typeof button); // Error: button is undefined, the script can't see elements below + alert(typeof button); // button is undefined, the script can't see elements below */!* // regular scripts run immediately, before the rest of the page is processed </script> @@ -255,19 +296,21 @@ For instance: <button id="button">Button</button> ``` -Please note: the second script actually works before the first! So we'll see `undefined` first, and then `object`. +Please note: the second script actually runs before the first! So we'll see `undefined` first, and then `object`. -That's because modules are deferred, so way wait for the document to be processed. The regular scripts runs immediately, so we saw its output first. +That's because modules are deferred, so we wait for the document to be processed. The regular script runs immediately, so we see its output first. -When using modules, we should be aware that HTML-document can show up before the JavaScript application is ready. Some functionality may not work yet. We should put transparent overlays or "loading indicators", or otherwise ensure that the visitor won't be confused because of it. +When using modules, we should be aware that the HTML page shows up as it loads, and JavaScript modules run after that, so the user may see the page before the JavaScript application is ready. Some functionality may not work yet. We should put "loading indicators", or otherwise ensure that the visitor won't be confused by that. ### Async works on inline scripts -Async attribute `<script async type="module">` is allowed on both inline and external scripts. Async scripts run immediately when imported modules are processed, independantly of other scripts or the HTML document. +For non-module scripts, the `async` attribute only works on external scripts. Async scripts run immediately when ready, independently of other scripts or the HTML document. + +For module scripts, it works on inline scripts as well. -For example, the script below has `async`, so it doesn't wait for anyone. +For example, the inline script below has `async`, so it doesn't wait for anything. -It performs the import (fetches `./analytics.js`) and runs when ready, even if HTML document is not finished yet, or if other scripts are still pending. +It performs the import (fetches `./analytics.js`) and runs when ready, even if the HTML document is not finished yet, or if other scripts are still pending. That's good for functionality that doesn't depend on anything, like counters, ads, document-level event listeners. @@ -283,16 +326,16 @@ That's good for functionality that doesn't depend on anything, like counters, ad ### External scripts -There are two notable differences of external module scripts: +External scripts that have `type="module"` are different in two aspects: -1. External scripts with same `src` run only once: +1. External scripts with the same `src` run only once: ```html <!-- the script my.js is fetched and executed only once --> <script type="module" src="my.js"></script> <script type="module" src="my.js"></script> ``` -2. External scripts that are fetched from another domain require [CORS](mdn:Web/HTTP/CORS) headers. In other words, if a module script is fetched from another domain, the remote server must supply a header `Access-Control-Allow-Origin: *` (may use fetching domain instead of `*`) to indicate that the fetch is allowed. +2. External scripts that are fetched from another origin (e.g. another site) require [CORS](mdn:Web/HTTP/CORS) headers, as described in the chapter <info:fetch-crossorigin>. In other words, if a module script is fetched from another origin, the remote server must supply a header `Access-Control-Allow-Origin` allowing the fetch. ```html <!-- another-site.com must supply Access-Control-Allow-Origin --> <!-- otherwise, the script won't execute --> @@ -301,21 +344,21 @@ There are two notable differences of external module scripts: That ensures better security by default. -### No bare modules allowed +### No "bare" modules allowed -In the browser, in scripts (not in HTML), `import` must get either a relative or absolute URL. So-called "bare" modules, without a path, are not allowed. +In the browser, `import` must get either a relative or absolute URL. Modules without any path are called "bare" modules. Such modules are not allowed in `import`. For instance, this `import` is invalid: ```js import {sayHi} from 'sayHi'; // Error, "bare" module -// must be './sayHi.js' or wherever the module is +// the module must have a path, e.g. './sayHi.js' or wherever the module is ``` -Certain environments, like Node.js or bundle tools allow bare modules, as they have own ways for finding modules and hooks to fine-tune them. But browsers do not support bare modules yet. +Certain environments, like Node.js or bundle tools allow bare modules, without any path, as they have their own ways for finding modules and hooks to fine-tune them. But browsers do not support bare modules yet. ### Compatibility, "nomodule" -Old browsers do not understand `type="module"`. Scripts of the unknown type are just ignored. For them, it's possible to provide a fallback using `nomodule` attribute: +Old browsers do not understand `type="module"`. Scripts of an unknown type are just ignored. For them, it's possible to provide a fallback using the `nomodule` attribute: ```html run <script type="module"> @@ -328,13 +371,6 @@ Old browsers do not understand `type="module"`. Scripts of the unknown type are </script> ``` -If we use bundle tools, then as modules are bundled together, their `import/export` statements are replaced by special bundler calls, so the resulting build does not require `type="module"`, and we can put it into a regular script: - -```html -<!-- Assuming we got bundle.js from a tool like Webpack --> -<script src="bundle.js"></script> -``` - ## Build tools In real-life, browser modules are rarely used in their "raw" form. Usually, we bundle them together with a special tool such as [Webpack](https://webpack.js.org/) and deploy to the production server. @@ -346,12 +382,19 @@ Build tools do the following: 1. Take a "main" module, the one intended to be put in `<script type="module">` in HTML. 2. Analyze its dependencies: imports and then imports of imports etc. 3. Build a single file with all modules (or multiple files, that's tunable), replacing native `import` calls with bundler functions, so that it works. "Special" module types like HTML/CSS modules are also supported. -4. In the process, other transforms and optimizations may be applied: +4. In the process, other transformations and optimizations may be applied: - Unreachable code removed. - Unused exports removed ("tree-shaking"). - Development-specific statements like `console` and `debugger` removed. - Modern, bleeding-edge JavaScript syntax may be transformed to older one with similar functionality using [Babel](https://babeljs.io/). - - The resulting file is minified (spaces removed, variables replaced with shorter named etc). + - The resulting file is minified (spaces removed, variables replaced with shorter names, etc). + +If we use bundle tools, then as scripts are bundled together into a single file (or few files), `import/export` statements inside those scripts are replaced by special bundler functions. So the resulting "bundled" script does not contain any `import/export`, it doesn't require `type="module"`, and we can put it into a regular script: + +```html +<!-- Assuming we got bundle.js from a tool like Webpack --> +<script src="bundle.js"></script> +``` That said, native modules are also usable. So we won't be using Webpack here: you can configure it later. @@ -359,16 +402,16 @@ That said, native modules are also usable. So we won't be using Webpack here: yo To summarize, the core concepts are: -1. A module is a file. To make `import/export` work, browsers need `<script type="module">`, that implies several differences: +1. A module is a file. To make `import/export` work, browsers need `<script type="module">`. Modules have several differences: - Deferred by default. - Async works on inline scripts. - - External scripts need CORS headers. + - To load external scripts from another origin (domain/protocol/port), CORS headers are needed. - Duplicate external scripts are ignored. 2. Modules have their own, local top-level scope and interchange functionality via `import/export`. 3. Modules always `use strict`. 4. Module code is executed only once. Exports are created once and shared between importers. -So, generally, when we use modules, each module implements the functionality and exports it. Then we use `import` to directly import it where it's needed. Browser loads and evaluates the scripts automatically. +When we use modules, each module implements the functionality and exports it. Then we use `import` to directly import it where it's needed. The browser loads and evaluates the scripts automatically. In production, people often use bundlers such as [Webpack](https://webpack.js.org) to bundle modules together for performance and other reasons. diff --git a/1-js/13-modules/02-import-export/article.md b/1-js/13-modules/02-import-export/article.md index d485a25b0..c383fa0a0 100644 --- a/1-js/13-modules/02-import-export/article.md +++ b/1-js/13-modules/02-import-export/article.md @@ -1,9 +1,14 @@ - # Export and Import +<<<<<<< HEAD Export og import direktiver er veldig allsidige. I forrige kapittel så vi en enklere bruk av disse, la oss nå utforske flere eksempler. +======= +Export and import directives have several syntax variants. + +In the previous article we saw a simple use, now let's explore more examples. +>>>>>>> 540d753e90789205fc6e75c502f68382c87dea9b ## Export før deklareringer @@ -27,12 +32,20 @@ For eksempel, alle disse er gyldig bruk av eksportering: ``` ````smart header="No semicolons after export class/function" +<<<<<<< HEAD Vennligst legg merke til at `export` før en klasse, eller en funksjon vil ikke gjøre den til et [funksjons utrykk](info:function-expressions-arrows). Det er fremdeles en deklarasjon av en funksjon, bare eksportert. De fleste JavaScript stilguidene anbefaler bruk av semikolon etter utrykk, men ikke etter deklarering av funskjoner og klasser. That's why there should be no semicolons at the end of `export class` and `export function`. Dette er fordi det aldri skal være semikolon etter slutten av `export class` og `export function`. +======= +Please note that `export` before a class or a function does not make it a [function expression](info:function-expressions). It's still a function declaration, albeit exported. + +Most JavaScript style guides don't recommend semicolons after function and class declarations. + +That's why there's no need for a semicolon at the end of `export class` and `export function`: +>>>>>>> 540d753e90789205fc6e75c502f68382c87dea9b ```js export function seyHi(user) { @@ -48,7 +61,7 @@ Vi kan også sette `export` separat fra et utrykk. Først deklarerer vi, også eksporterer vi: -```js +```js // 📁 say.js export function sayHi(user) { alert(`Hi, ${user}!`); @@ -67,7 +80,11 @@ export {sayHi, sayGoodbye}; // en liste av eksporterte variabler ## Import * +<<<<<<< HEAD Vanligvis, kan vi putte en liste av hva som skal importeres inni `import {...}`, slik som dette: +======= +Usually, we put a list of what to import in curly braces `import {...}`, like this: +>>>>>>> 540d753e90789205fc6e75c502f68382c87dea9b ```js // 📁 main.js @@ -78,7 +95,11 @@ sayHi('John'); // Hi, John! sayGoodbye('John'); // Goodbye, John! ``` +<<<<<<< HEAD Men hvis denne listen er lang, kan vi importere alt som et objekt ved å bruke `import * as <obj>`, for eksempel: +======= +But if there's a lot to import, we can import everything as an object using `import * as <obj>`, for instance: +>>>>>>> 540d753e90789205fc6e75c502f68382c87dea9b ```js // 📁 main.js @@ -94,6 +115,7 @@ Ved første øyekast, "importer alt" virker som en kul ting å gjøre, kort å s Vel, det er noen få grunner. +<<<<<<< HEAD 1. Moderne byggverktøy ([webpack](http://webpack.github.io) og andre) pakker moduler sammen og optimaliserer de til å kunne raske laste og fjeren unyttige ting. La oss si, at vi la til et 3. partibibliotek `lib.js` inn i prosjektet med mange funksjoner: @@ -118,6 +140,22 @@ Vel, det er noen få grunner. Vi kan også bruke `as` til å importere under forskjellige alias. For eksempel, la oss importere `siHei` inn i den lokale variabelen `hei` for korthet i koden, og det samme for `siFarvel`: +======= +1. Explicitly listing what to import gives shorter names: `sayHi()` instead of `say.sayHi()`. +2. Explicit list of imports gives better overview of the code structure: what is used and where. It makes code support and refactoring easier. + +```smart header="Don't be afraid to import too much" +Modern build tools, such as [webpack](https://webpack.js.org/) and others, bundle modules together and optimize them to speedup loading. They also remove unused imports. + +For instance, if you `import * as library` from a huge code library, and then use only few methods, then unused ones [will not be included](https://github.com/webpack/webpack/tree/main/examples/harmony-unused#examplejs) into the optimized bundle. +``` + +## Import "as" + +We can also use `as` to import under different names. + +For instance, let's import `sayHi` into the local variable `hi` for brevity, and import `sayBye` as `bye`: +>>>>>>> 540d753e90789205fc6e75c502f68382c87dea9b ```js // 📁 main.js @@ -141,26 +179,43 @@ La oss eksportere funksjoner som `hei` og `farvel`: export {sayHi as hi, sayGoodbye as goodbye}; ``` +<<<<<<< HEAD Nå er `hi` og `goodbye` offisielle navn for parter utenfor: +======= +Now `hi` and `bye` are official names for outsiders, to be used in imports: +>>>>>>> 540d753e90789205fc6e75c502f68382c87dea9b ```js // 📁 main.js import * as say from './say.js'; +<<<<<<< HEAD say.hi('John'); // Hi, John! say.goodbye('John'); // Goodbye, John! +======= +say.*!*hi*/!*('John'); // Hello, John! +say.*!*bye*/!*('John'); // Bye, John! +>>>>>>> 540d753e90789205fc6e75c502f68382c87dea9b ``` -## export default +## Export default +<<<<<<< HEAD Så langt har vi sett på hvordan man importerer/eksporterer flere ting, valgfritt som (`as`) andre navn. I praksis, modulere inneholder enten: - Et bibliotek, samling av funksjoner, som `lib.js`. - Eller et objekt som `class User` er beskrevet i `user.js`, hele modulen har kun denne klassen. +======= +In practice, there are mainly two kinds of modules. + +1. Modules that contain a library, pack of functions, like `say.js` above. +2. Modules that declare a single entity, e.g. a module `user.js` exports only `class User`. +>>>>>>> 540d753e90789205fc6e75c502f68382c87dea9b Som oftest, er den andre måten å ta ibruk foretrukket, sånn at hver "ting" oppholdes i sin egen modul. +<<<<<<< HEAD Naturligvis, dette krever en hel del filer, som alle vil ha sin egen modul, men dette er ikke et problem. Faktisk, så blir navigering av kodebasen lettere, hvis filene er gitt bra navn og strukturert godt i egne mapper. Moduler gir spesielle `export default` syntaks for å gjøre at "en ting per modul" ser bedre ut. @@ -171,6 +226,13 @@ Det krever følgende `export` og `import` uttrykk: 2. Kall `import` uten krøllparenteser. For eksempel, her `bruker.js` exports `class Bruker`: +======= +Naturally, that requires a lot of files, as everything wants its own module, but that's not a problem at all. Actually, code navigation becomes easier if files are well-named and structured into folders. + +Modules provide a special `export default` ("the default export") syntax to make the "one thing per module" way look better. + +Put `export default` before the entity to export: +>>>>>>> 540d753e90789205fc6e75c502f68382c87dea9b ```js // 📁 user.js @@ -181,7 +243,13 @@ export *!*default*/!* class User { // kun tilføy "default" } ``` +<<<<<<< HEAD ...Og `main.js` importerer det: +======= +There may be only one `export default` per file. + +...And then import it without curly braces: +>>>>>>> 540d753e90789205fc6e75c502f68382c87dea9b ```js // 📁 main.js @@ -189,18 +257,28 @@ import *!*User*/!* from './user.js'; // ikke {User}, kun User new User('John'); ``` +<<<<<<< HEAD Importsetninger uten krøllparentes ser finere ut. En vanlig feil når man begynner å bruke moduler er å glemme krøllparentes helt. Så, husk, `import` trenger krøllparentes for navngitte importsetninger og trenger dem ikke ikke default import. +======= +Imports without curly braces look nicer. A common mistake when starting to use modules is to forget curly braces at all. So, remember, `import` needs curly braces for named exports and doesn't need them for the default one. +>>>>>>> 540d753e90789205fc6e75c502f68382c87dea9b | Navngitt export | Default export | |--------------|----------------| | `export class User {...}` | `export default class User {...}` | | `import { User } from ...` | `import User from ...`| +<<<<<<< HEAD Naturligvis kan det kun være en "default" export per fil. Vi kan ha både default og navngitt eksporteringer i en enkelt modul, men i praksis vil folk blande disse to. En modul har enten navngitte eksporteringer eller en default. **En annen ting å bite seg merke i er at navngitt eksporteringer må (naturligvis) ha et navn, mens `export default` kan være anonym.** +======= +Technically, we may have both default and named exports in a single module, but in practice people usually don't mix them. A module has either named exports or the default one. + +As there may be at most one default export per file, the exported entity may have no name. +>>>>>>> 540d753e90789205fc6e75c502f68382c87dea9b For eksempel, disse er alle helt gyldige eksporteringer: @@ -208,17 +286,36 @@ For eksempel, disse er alle helt gyldige eksporteringer: export default class { // ingen klassenavn constructor() { ... } } +``` +<<<<<<< HEAD export default function(user) { // ingen funksjonsnavn alert(`Hi, ${user}!`); +======= +```js +export default function(user) { // no function name + alert(`Hello, ${user}!`); +>>>>>>> 540d753e90789205fc6e75c502f68382c87dea9b } +``` +<<<<<<< HEAD // eksporter en enkelt verdi, uten å definere en variabel export default ['Jan', 'Feb', 'Mar','Apr', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']; ``` Det går helt fint, fordi `export default` finnes det kun en av per fil, så `import` vet alltid hva som skal importeres. I motsetning til det, og utelater et navn for navngitte importeringer ville vært en feil i koden: +======= +```js +// export a single value, without making a variable +export default ['Jan', 'Feb', 'Mar','Apr', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']; +``` + +Not giving a name is fine, because there is only one `export default` per file, so `import` without curly braces knows what to import. + +Without `default`, such an export would give an error: +>>>>>>> 540d753e90789205fc6e75c502f68382c87dea9b ```js export class { // Feil! (ikke-default eksportering trenger et navn) @@ -226,22 +323,36 @@ export class { // Feil! (ikke-default eksportering trenger et navn) } ``` -### "Default" alias +### The "default" name +<<<<<<< HEAD Stikkordet "default" er et slags alias for default export, for når vi trenger å angi en referanse for den. For example, if we already have a function declared, that's how to `export default` it: For eksempel, når vi allerede har deklarert en funksjon, er dette hvordan `export default` den: +======= +In some situations the `default` keyword is used to reference the default export. + +For example, to export a function separately from its definition: +>>>>>>> 540d753e90789205fc6e75c502f68382c87dea9b ```js function sayHi(user) { alert(`Hi, ${user}!`); } +<<<<<<< HEAD export {sayHi as default}; // samme som hvis vi hadde lagt til "export default" før funksjonen ``` Eller, la oss si at modulen `user.js` eksporterer en hoved "default" ting og et par navngitte noen (sjeldent tilfelle, men skjer av og til): +======= +// same as if we added "export default" before the function +export {sayHi as default}; +``` + +Or, another situation, let's say a module `user.js` exports one main "default" thing, and a few named ones (rarely the case, but it happens): +>>>>>>> 540d753e90789205fc6e75c502f68382c87dea9b ```js // 📁 user.js @@ -265,16 +376,21 @@ import { *!*defualt as User*/!*, sayHi } from './user.js'; new User('John'); ``` +<<<<<<< HEAD Eller hvis vi vurderer å importere `*` som et objekt, da må `default` egenskapen være eksagt default export: +======= +And, finally, if importing everything `*` as an object, then the `default` property is exactly the default export: +>>>>>>> 540d753e90789205fc6e75c502f68382c87dea9b ```js // 📁 main.js import * as User from './user.js'; -let User = user.default; +let User = user.default; // the default export new User('John'); ``` +<<<<<<< HEAD ### Burde jeg bruker default exports? Vi må være forsiktige når vi bruker default exports, fordi disse kan være til en viss grad veldig annerledes å vedlikeholde. @@ -295,6 +411,30 @@ import MyUser from './user.js'; // dette kunne vært importer hvasomhelst... , o Slik at det blir så lite frihet som mulig til at dette kan brukes feil, slik at team medlemmer kan bruke forskjellige navn for den samme tingen. Vanligvis, for å unngå dette og holde koden mer konsistent, er det regel for at importerte variabler burde stemmer overens med sitt filnavn, f.eks: +======= +### A word against default exports + +Named exports are explicit. They exactly name what they import, so we have that information from them; that's a good thing. + +Named exports force us to use exactly the right name to import: + +```js +import {User} from './user.js'; +// import {MyUser} won't work, the name must be {User} +``` + +...While for a default export, we always choose the name when importing: + +```js +import User from './user.js'; // works +import MyUser from './user.js'; // works too +// could be import Anything... and it'll still work +``` + +So team members may use different names to import the same thing, and that's not good. + +Usually, to avoid that and keep the code consistent, there's a rule that imported variables should correspond to file names, e.g: +>>>>>>> 540d753e90789205fc6e75c502f68382c87dea9b ```js import User from './user.js'; @@ -303,7 +443,11 @@ import func from '/path/to/func.js'; ... ``` +<<<<<<< HEAD En annen løsning ville vært å bruke navngitte exports overalt. Til og med hvis kun en enkelt fil er eksportert, er den fremdeles eksportert under et navn, uten `default`. +======= +Still, some teams consider it a serious drawback of default exports. So they prefer to always use named exports. Even if only a single thing is exported, it's still exported under a name, without `default`. +>>>>>>> 540d753e90789205fc6e75c502f68382c87dea9b Dette gjør også re-export (se under) litt enklere å forstå. @@ -313,6 +457,7 @@ Dette gjør også re-export (se under) litt enklere å forstå. ```js +<<<<<<< HEAD export { sayHi } from './say.js'; export { default as User } from './user.js'; ``` @@ -322,72 +467,136 @@ Hva er poenget, hvorfor trenger vi dette? La oss se på et praktisk bruksområde Se for deg, vi skriver en "pakke": en mappe med mange moduler, mest til bruk internt, med noe funksjonalitet eksportert utad (verktøy som NPM lar oss publisere og distribuere pakker, men det har ikke noe å si her). En mappestruktur kan være slik: +======= +export {sayHi} from './say.js'; // re-export sayHi + +export {default as User} from './user.js'; // re-export default +``` + +Why would that be needed? Let's see a practical use case. + +Imagine, we're writing a "package": a folder with a lot of modules, with some of the functionality exported outside (tools like NPM allow us to publish and distribute such packages, but we don't have to use them), and many modules are just "helpers", for internal use in other package modules. + +The file structure could be like this: +>>>>>>> 540d753e90789205fc6e75c502f68382c87dea9b ``` auth/ - index.js - user.js - helpers.js - tests/ - login.js - providers/ - github.js - facebook.js - ... + index.js + user.js + helpers.js + tests/ + login.js + providers/ + github.js + facebook.js + ... ``` +<<<<<<< HEAD Vi vil eksponere pakkens funksjonalitet via et enkelt entry point, "hovedfilen" `auth/inde.js`, kan være slik: +======= +We'd like to expose the package functionality via a single entry point. + +In other words, a person who would like to use our package, should import only from the "main file" `auth/index.js`. + +Like this: +>>>>>>> 540d753e90789205fc6e75c502f68382c87dea9b ```js import {login, logout} from 'auth/index.js' ``` +<<<<<<< HEAD Ideen er at parter fra utsiden, utviklere som bruker pakken vår, ikke bør tenke på dens interne struktur. De skal ikke måtte lete etter filer inne i vår pakke. Vi eksportert kun det som er nødvendig gjennom `auth/inde.js` og holder resten skjult fra nysgjerrige øyne Nå som den faktiske eksporterte funksjonaliteten er spredt blant pakken, kan vi samle og "re-export" den i `auth/index.js`: +======= +The "main file", `auth/index.js` exports all the functionality that we'd like to provide in our package. + +The idea is that outsiders, other programmers who use our package, should not meddle with its internal structure, search for files inside our package folder. We export only what's necessary in `auth/index.js` and keep the rest hidden from prying eyes. + +As the actual exported functionality is scattered among the package, we can import it into `auth/index.js` and export from it: +>>>>>>> 540d753e90789205fc6e75c502f68382c87dea9b ```js // 📁 auth/index.js + +// import login/logout and immediately export them import {login, logout} from './helpers.js'; export {login, logout}; +// import default as User and export it import User from './user.js'; export {User}; - -import Github from './providers/github.js'; -export {Github}; ... ``` +<<<<<<< HEAD "Re-eksportering" er bare en måte å gjøre slik på: +======= +Now users of our package can `import {login} from "auth/index.js"`. + +The syntax `export ... from ...` is just a shorter notation for such import-export: +>>>>>>> 540d753e90789205fc6e75c502f68382c87dea9b ```js // 📁 auth/index.js +// re-export login/logout export {login, logout} from './helpers.js'; -// or, to re-export all helpers, we could use: -// export * from './helpers.js'; +// re-export the default export as User export {default as User} from './user.js'; - -export {default as Github} from './providers/github.js'; ... ``` +<<<<<<< HEAD ````warn header="Re-eksporering default kan være vrient" Vær grei å merk: `export User from './user.js'` vill ikke virke. Dette er faktisk en syntaks feil. For å re-export en default export, må vi referensere den eksplisitt slik som `{default as ...}`, slik som eksempelet over. I tillegg, er det en annen særhet: `export * from './user.js'` re-exports er kun navngitte eksporteringer, ekskludert standard eksport. Men igjen, vi må nevne den eksplisitt. For eksempel, for å re-export alt, trenger vi to uttrykk: +======= +The notable difference of `export ... from` compared to `import/export` is that re-exported modules aren't available in the current file. So inside the above example of `auth/index.js` we can't use re-exported `login/logout` functions. + +### Re-exporting the default export + +The default export needs separate handling when re-exporting. + +Let's say we have `user.js` with the `export default class User` and would like to re-export it: + +>>>>>>> 540d753e90789205fc6e75c502f68382c87dea9b ```js -export * from './module.js'; // to re-export named exports -export {default} from './module.js'; // to re-export default +// 📁 user.js +export default class User { + // ... +} ``` +<<<<<<< HEAD Standarden burde være nevnt eksplisitt kun når man re-eksporterer: `import * as obj` virker fint. Dette importerer en standard export som `obj.default`. Slik at det er en liten asymmetry mellom import og export konstruksjoner her. ```` +======= +We can come across two problems with it: + +1. `export User from './user.js'` won't work. That would lead to a syntax error. + + To re-export the default export, we have to write `export {default as User}`, as in the example above. + +2. `export * from './user.js'` re-exports only named exports, but ignores the default one. + + If we'd like to re-export both named and default exports, then two statements are needed: + ```js + export * from './user.js'; // to re-export named exports + export {default} from './user.js'; // to re-export the default export + ``` + +Such oddities of re-exporting a default export are one of the reasons why some developers don't like default exports and prefer named ones. +>>>>>>> 540d753e90789205fc6e75c502f68382c87dea9b ## Sammendrag +<<<<<<< HEAD Det er følgende typer av `export`: - Før deklarering: @@ -410,9 +619,36 @@ Import: - `import * as obj from "mod"` - Kun hent/evaluer modulen, ikke importer: - `import "mod"` +======= +Here are all types of `export` that we covered in this and previous articles. + +You can check yourself by reading them and recalling what they mean: + +- Before declaration of a class/function/..: + - `export [default] class/function/variable ...` +- Standalone export: + - `export {x [as y], ...}`. +- Re-export: + - `export {x [as y], ...} from "module"` + - `export * from "module"` (doesn't re-export default). + - `export {default [as y]} from "module"` (re-export default). + +Import: -We can put import/export statements below or after other code, that doesn't matter. +- Importing named exports: + - `import {x [as y], ...} from "module"` +- Importing the default export: + - `import x from "module"` + - `import {default as x} from "module"` +- Import all: + - `import * as obj from "module"` +- Import the module (its code runs), but do not assign any of its exports to variables: + - `import "module"` +>>>>>>> 540d753e90789205fc6e75c502f68382c87dea9b +We can put `import/export` statements at the top or at the bottom of a script, that doesn't matter. + +<<<<<<< HEAD Så dette er teknisk rett: ```js sayHi(); @@ -421,6 +657,18 @@ import {sayHi} from './say.js'; // import på slutten av filen ``` I praksis så er imports vanligvis deklarert i begynnelsen av hver enkelt filt, men det er kun av praktiske årsaker. +======= +So, technically this code is fine: +```js +sayHi(); + +// ... + +import {sayHi} from './say.js'; // import at the end of the file +``` + +In practice imports are usually at the start of the file, but that's only for more convenience. +>>>>>>> 540d753e90789205fc6e75c502f68382c87dea9b **Vær grei å legg merke til at import/export uttrykk ikke vil hvis de er plasser inne i `{...}`.** @@ -433,4 +681,8 @@ if (something) { ...Men hva hvis vi virkelig trenger å importere noe basert på en betingelse? Eller på riktig tidspunkt i koden? Slik som, laste inn en modul på forespørsel, når den virkelig trengs? +<<<<<<< HEAD Vi skal se på dynamiske import i neste kapittel. +======= +We'll see dynamic imports in the next article. +>>>>>>> 540d753e90789205fc6e75c502f68382c87dea9b diff --git a/1-js/13-modules/03-modules-dynamic-imports/article.md b/1-js/13-modules/03-modules-dynamic-imports/article.md index 5d2538729..e48144a3e 100644 --- a/1-js/13-modules/03-modules-dynamic-imports/article.md +++ b/1-js/13-modules/03-modules-dynamic-imports/article.md @@ -1,9 +1,6 @@ - # Dynamic imports -Export and import statements that we covered in previous chaters are called "static". - -That's because they are indeed static. The syntax is very strict. +Export and import statements that we covered in previous chapters are called "static". The syntax is very simple and strict. First, we can't dynamically generate any parameters of `import`. @@ -25,30 +22,77 @@ if(...) { } ``` -That's because, import/export aim to provide a backbone for the code structure. That's a good thing, as code structure can be analyzed, modules can be gathered and bundled together, unused exports can be removed (tree-shaken). That's possible only because everything is fixed. +That's because `import`/`export` aim to provide a backbone for the code structure. That's a good thing, as code structure can be analyzed, modules can be gathered and bundled into one file by special tools, unused exports can be removed ("tree-shaken"). That's possible only because the structure of imports/exports is simple and fixed. -But how do we import a module dynamically, on-demand? +But how can we import a module dynamically, on-demand? -## The import() function +## The import() expression -The `import(module)` function can be called from anywhere. It returns a promise that resolves into a module object. +The `import(module)` expression loads the module and returns a promise that resolves into a module object that contains all its exports. It can be called from any place in the code. -The usage pattern looks like this: +We can use it dynamically in any place of the code, for instance: -```js run -let modulePath = prompt("Module path?"); +```js +let modulePath = prompt("Which module to load?"); import(modulePath) .then(obj => <module object>) - .catch(err => <loading error, no such module?>) + .catch(err => <loading error, e.g. if no such module>) ``` Or, we could use `let module = await import(modulePath)` if inside an async function. -Like this: +For instance, if we have the following module `say.js`: + +```js +// 📁 say.js +export function hi() { + alert(`Hello`); +} + +export function bye() { + alert(`Bye`); +} +``` + +...Then dynamic import can be like this: + +```js +let {hi, bye} = await import('./say.js'); + +hi(); +bye(); +``` + +Or, if `say.js` has the default export: + +```js +// 📁 say.js +export default function() { + alert("Module loaded (export default)!"); +} +``` + +...Then, in order to access it, we can use `default` property of the module object: + +```js +let obj = await import('./say.js'); +let say = obj.default; +// or, in one line: let {default: say} = await import('./say.js'); + +say(); +``` + +Here's the full example: [codetabs src="say" current="index.html"] -So, dynamic imports are very simple to use. +```smart +Dynamic imports work in regular scripts, they don't require `script type="module"`. +``` + +```smart +Although `import()` looks like a function call, it's a special syntax that just happens to use parentheses (similar to `super()`). -Also, dynamic imports work in regular scripts, they don't require `script type="module"`. +So we can't copy `import` to a variable or use `call/apply` with it. It's not a function. +``` diff --git a/1-js/99-js-misc/01-proxy/01-error-nonexisting/solution.md b/1-js/99-js-misc/01-proxy/01-error-nonexisting/solution.md new file mode 100644 index 000000000..9db69cb2f --- /dev/null +++ b/1-js/99-js-misc/01-proxy/01-error-nonexisting/solution.md @@ -0,0 +1,23 @@ + +```js run +let user = { + name: "John" +}; + +function wrap(target) { + return new Proxy(target, { + get(target, prop, receiver) { + if (prop in target) { + return Reflect.get(target, prop, receiver); + } else { + throw new ReferenceError(`Property doesn't exist: "${prop}"`) + } + } + }); +} + +user = wrap(user); + +alert(user.name); // John +alert(user.age); // ReferenceError: Property doesn't exist: "age" +``` diff --git a/1-js/99-js-misc/01-proxy/01-error-nonexisting/task.md b/1-js/99-js-misc/01-proxy/01-error-nonexisting/task.md new file mode 100644 index 000000000..47985e1a7 --- /dev/null +++ b/1-js/99-js-misc/01-proxy/01-error-nonexisting/task.md @@ -0,0 +1,32 @@ +# Error on reading non-existent property + +Usually, an attempt to read a non-existent property returns `undefined`. + +Create a proxy that throws an error for an attempt to read of a non-existent property instead. + +That can help to detect programming mistakes early. + +Write a function `wrap(target)` that takes an object `target` and return a proxy that adds this functionality aspect. + +That's how it should work: + +```js +let user = { + name: "John" +}; + +function wrap(target) { + return new Proxy(target, { +*!* + /* your code */ +*/!* + }); +} + +user = wrap(user); + +alert(user.name); // John +*!* +alert(user.age); // ReferenceError: Property doesn't exist: "age" +*/!* +``` diff --git a/1-js/99-js-misc/01-proxy/02-array-negative/solution.md b/1-js/99-js-misc/01-proxy/02-array-negative/solution.md new file mode 100644 index 000000000..207205501 --- /dev/null +++ b/1-js/99-js-misc/01-proxy/02-array-negative/solution.md @@ -0,0 +1,19 @@ + +```js run +let array = [1, 2, 3]; + +array = new Proxy(array, { + get(target, prop, receiver) { + if (prop < 0) { + // even if we access it like arr[1] + // prop is a string, so need to convert it to number + prop = +prop + target.length; + } + return Reflect.get(target, prop, receiver); + } +}); + + +alert(array[-1]); // 3 +alert(array[-2]); // 2 +``` diff --git a/1-js/99-js-misc/01-proxy/02-array-negative/task.md b/1-js/99-js-misc/01-proxy/02-array-negative/task.md new file mode 100644 index 000000000..9b0b13f58 --- /dev/null +++ b/1-js/99-js-misc/01-proxy/02-array-negative/task.md @@ -0,0 +1,33 @@ + +# Accessing array[-1] + +In some programming languages, we can access array elements using negative indexes, counted from the end. + +Like this: + +```js +let array = [1, 2, 3]; + +array[-1]; // 3, the last element +array[-2]; // 2, one step from the end +array[-3]; // 1, two steps from the end +``` + +In other words, `array[-N]` is the same as `array[array.length - N]`. + +Create a proxy to implement that behavior. + +That's how it should work: + +```js +let array = [1, 2, 3]; + +array = new Proxy(array, { + /* your code */ +}); + +alert( array[-1] ); // 3 +alert( array[-2] ); // 2 + +// Other array functionality should be kept "as is" +``` diff --git a/1-js/99-js-misc/01-proxy/03-observable/solution.md b/1-js/99-js-misc/01-proxy/03-observable/solution.md new file mode 100644 index 000000000..c0797a856 --- /dev/null +++ b/1-js/99-js-misc/01-proxy/03-observable/solution.md @@ -0,0 +1,40 @@ +The solution consists of two parts: + +1. Whenever `.observe(handler)` is called, we need to remember the handler somewhere, to be able to call it later. We can store handlers right in the object, using our symbol as the property key. +2. We need a proxy with `set` trap to call handlers in case of any change. + +```js run +let handlers = Symbol('handlers'); + +function makeObservable(target) { + // 1. Initialize handlers store + target[handlers] = []; + + // Store the handler function in array for future calls + target.observe = function(handler) { + this[handlers].push(handler); + }; + + // 2. Create a proxy to handle changes + return new Proxy(target, { + set(target, property, value, receiver) { + let success = Reflect.set(...arguments); // forward the operation to object + if (success) { // if there were no error while setting the property + // call all handlers + target[handlers].forEach(handler => handler(property, value)); + } + return success; + } + }); +} + +let user = {}; + +user = makeObservable(user); + +user.observe((key, value) => { + alert(`SET ${key}=${value}`); +}); + +user.name = "John"; +``` diff --git a/1-js/99-js-misc/01-proxy/03-observable/task.md b/1-js/99-js-misc/01-proxy/03-observable/task.md new file mode 100644 index 000000000..754d9f3bd --- /dev/null +++ b/1-js/99-js-misc/01-proxy/03-observable/task.md @@ -0,0 +1,27 @@ + +# Observable + +Create a function `makeObservable(target)` that "makes the object observable" by returning a proxy. + +Here's how it should work: + +```js run +function makeObservable(target) { + /* your code */ +} + +let user = {}; +user = makeObservable(user); + +user.observe((key, value) => { + alert(`SET ${key}=${value}`); +}); + +user.name = "John"; // alerts: SET name=John +``` + +In other words, an object returned by `makeObservable` is just like the original one, but also has the method `observe(handler)` that sets `handler` function to be called on any property change. + +Whenever a property changes, `handler(key, value)` is called with the name and value of the property. + +P.S. In this task, please only take care about writing to a property. Other operations can be implemented in a similar way. diff --git a/1-js/99-js-misc/01-proxy/article.md b/1-js/99-js-misc/01-proxy/article.md new file mode 100644 index 000000000..1f84912e5 --- /dev/null +++ b/1-js/99-js-misc/01-proxy/article.md @@ -0,0 +1,1034 @@ +# Proxy and Reflect + +A `Proxy` object wraps another object and intercepts operations, like reading/writing properties and others, optionally handling them on its own, or transparently allowing the object to handle them. + +Proxies are used in many libraries and some browser frameworks. We'll see many practical applications in this article. + +## Proxy + +The syntax: + +```js +let proxy = new Proxy(target, handler) +``` + +- `target` -- is an object to wrap, can be anything, including functions. +- `handler` -- proxy configuration: an object with "traps", methods that intercept operations. - e.g. `get` trap for reading a property of `target`, `set` trap for writing a property into `target`, and so on. + +For operations on `proxy`, if there's a corresponding trap in `handler`, then it runs, and the proxy has a chance to handle it, otherwise the operation is performed on `target`. + +As a starting example, let's create a proxy without any traps: + +```js run +let target = {}; +let proxy = new Proxy(target, {}); // empty handler + +proxy.test = 5; // writing to proxy (1) +alert(target.test); // 5, the property appeared in target! + +alert(proxy.test); // 5, we can read it from proxy too (2) + +for(let key in proxy) alert(key); // test, iteration works (3) +``` + +As there are no traps, all operations on `proxy` are forwarded to `target`. + +1. A writing operation `proxy.test=` sets the value on `target`. +2. A reading operation `proxy.test` returns the value from `target`. +3. Iteration over `proxy` returns values from `target`. + +As we can see, without any traps, `proxy` is a transparent wrapper around `target`. + + + +`Proxy` is a special "exotic object". It doesn't have own properties. With an empty `handler` it transparently forwards operations to `target`. + +To activate more capabilities, let's add traps. + +What can we intercept with them? + +For most operations on objects, there's a so-called "internal method" in the JavaScript specification that describes how it works at the lowest level. For instance `[[Get]]`, the internal method to read a property, `[[Set]]`, the internal method to write a property, and so on. These methods are only used in the specification, we can't call them directly by name. + +Proxy traps intercept invocations of these methods. They are listed in the [Proxy specification](https://tc39.es/ecma262/#sec-proxy-object-internal-methods-and-internal-slots) and in the table below. + +For every internal method, there's a trap in this table: the name of the method that we can add to the `handler` parameter of `new Proxy` to intercept the operation: + +| Internal Method | Handler Method | Triggers when... | +|-----------------|----------------|-------------| +| `[[Get]]` | `get` | reading a property | +| `[[Set]]` | `set` | writing to a property | +| `[[HasProperty]]` | `has` | `in` operator | +| `[[Delete]]` | `deleteProperty` | `delete` operator | +| `[[Call]]` | `apply` | function call | +| `[[Construct]]` | `construct` | `new` operator | +| `[[GetPrototypeOf]]` | `getPrototypeOf` | [Object.getPrototypeOf](mdn:/JavaScript/Reference/Global_Objects/Object/getPrototypeOf) | +| `[[SetPrototypeOf]]` | `setPrototypeOf` | [Object.setPrototypeOf](mdn:/JavaScript/Reference/Global_Objects/Object/setPrototypeOf) | +| `[[IsExtensible]]` | `isExtensible` | [Object.isExtensible](mdn:/JavaScript/Reference/Global_Objects/Object/isExtensible) | +| `[[PreventExtensions]]` | `preventExtensions` | [Object.preventExtensions](mdn:/JavaScript/Reference/Global_Objects/Object/preventExtensions) | +| `[[DefineOwnProperty]]` | `defineProperty` | [Object.defineProperty](mdn:/JavaScript/Reference/Global_Objects/Object/defineProperty), [Object.defineProperties](mdn:/JavaScript/Reference/Global_Objects/Object/defineProperties) | +| `[[GetOwnProperty]]` | `getOwnPropertyDescriptor` | [Object.getOwnPropertyDescriptor](mdn:/JavaScript/Reference/Global_Objects/Object/getOwnPropertyDescriptor), `for..in`, `Object.keys/values/entries` | +| `[[OwnPropertyKeys]]` | `ownKeys` | [Object.getOwnPropertyNames](mdn:/JavaScript/Reference/Global_Objects/Object/getOwnPropertyNames), [Object.getOwnPropertySymbols](mdn:/JavaScript/Reference/Global_Objects/Object/getOwnPropertySymbols), `for..in`, `Object.keys/values/entries` | + +```warn header="Invariants" +JavaScript enforces some invariants -- conditions that must be fulfilled by internal methods and traps. + +Most of them are for return values: +- `[[Set]]` must return `true` if the value was written successfully, otherwise `false`. +- `[[Delete]]` must return `true` if the value was deleted successfully, otherwise `false`. +- ...and so on, we'll see more in examples below. + +There are some other invariants, like: +- `[[GetPrototypeOf]]`, applied to the proxy object must return the same value as `[[GetPrototypeOf]]` applied to the proxy object's target object. In other words, reading prototype of a proxy must always return the prototype of the target object. + +Traps can intercept these operations, but they must follow these rules. + +Invariants ensure correct and consistent behavior of language features. The full invariants list is in [the specification](https://tc39.es/ecma262/#sec-proxy-object-internal-methods-and-internal-slots). You probably won't violate them if you're not doing something weird. +``` + +Let's see how that works in practical examples. + +## Default value with "get" trap + +The most common traps are for reading/writing properties. + +To intercept reading, the `handler` should have a method `get(target, property, receiver)`. + +It triggers when a property is read, with following arguments: + +- `target` -- is the target object, the one passed as the first argument to `new Proxy`, +- `property` -- property name, +- `receiver` -- if the target property is a getter, then `receiver` is the object that's going to be used as `this` in its call. Usually that's the `proxy` object itself (or an object that inherits from it, if we inherit from proxy). Right now we don't need this argument, so it will be explained in more detail later. + +Let's use `get` to implement default values for an object. + +We'll make a numeric array that returns `0` for nonexistent values. + +Usually when one tries to get a non-existing array item, they get `undefined`, but we'll wrap a regular array into the proxy that traps reading and returns `0` if there's no such property: + +```js run +let numbers = [0, 1, 2]; + +numbers = new Proxy(numbers, { + get(target, prop) { + if (prop in target) { + return target[prop]; + } else { + return 0; // default value + } + } +}); + +*!* +alert( numbers[1] ); // 1 +alert( numbers[123] ); // 0 (no such item) +*/!* +``` + +As we can see, it's quite easy to do with a `get` trap. + +We can use `Proxy` to implement any logic for "default" values. + +Imagine we have a dictionary, with phrases and their translations: + +```js run +let dictionary = { + 'Hello': 'Hola', + 'Bye': 'Adiós' +}; + +alert( dictionary['Hello'] ); // Hola +alert( dictionary['Welcome'] ); // undefined +``` + +Right now, if there's no phrase, reading from `dictionary` returns `undefined`. But in practice, leaving a phrase untranslated is usually better than `undefined`. So let's make it return an untranslated phrase in that case instead of `undefined`. + +To achieve that, we'll wrap `dictionary` in a proxy that intercepts reading operations: + +```js run +let dictionary = { + 'Hello': 'Hola', + 'Bye': 'Adiós' +}; + +dictionary = new Proxy(dictionary, { +*!* + get(target, phrase) { // intercept reading a property from dictionary +*/!* + if (phrase in target) { // if we have it in the dictionary + return target[phrase]; // return the translation + } else { + // otherwise, return the non-translated phrase + return phrase; + } + } +}); + +// Look up arbitrary phrases in the dictionary! +// At worst, they're not translated. +alert( dictionary['Hello'] ); // Hola +*!* +alert( dictionary['Welcome to Proxy']); // Welcome to Proxy (no translation) +*/!* +``` + +````smart +Please note how the proxy overwrites the variable: + +```js +dictionary = new Proxy(dictionary, ...); +``` + +The proxy should totally replace the target object everywhere. No one should ever reference the target object after it got proxied. Otherwise it's easy to mess up. +```` + +## Validation with "set" trap + +Let's say we want an array exclusively for numbers. If a value of another type is added, there should be an error. + +The `set` trap triggers when a property is written. + +`set(target, property, value, receiver)`: + +- `target` -- is the target object, the one passed as the first argument to `new Proxy`, +- `property` -- property name, +- `value` -- property value, +- `receiver` -- similar to `get` trap, matters only for setter properties. + +The `set` trap should return `true` if setting is successful, and `false` otherwise (triggers `TypeError`). + +Let's use it to validate new values: + +```js run +let numbers = []; + +numbers = new Proxy(numbers, { // (*) +*!* + set(target, prop, val) { // to intercept property writing +*/!* + if (typeof val == 'number') { + target[prop] = val; + return true; + } else { + return false; + } + } +}); + +numbers.push(1); // added successfully +numbers.push(2); // added successfully +alert("Length is: " + numbers.length); // 2 + +*!* +numbers.push("test"); // TypeError ('set' on proxy returned false) +*/!* + +alert("This line is never reached (error in the line above)"); +``` + +Please note: the built-in functionality of arrays is still working! Values are added by `push`. The `length` property auto-increases when values are added. Our proxy doesn't break anything. + +We don't have to override value-adding array methods like `push` and `unshift`, and so on, to add checks in there, because internally they use the `[[Set]]` operation that's intercepted by the proxy. + +So the code is clean and concise. + +```warn header="Don't forget to return `true`" +As said above, there are invariants to be held. + +For `set`, it must return `true` for a successful write. + +If we forget to do it or return any falsy value, the operation triggers `TypeError`. +``` + +## Iteration with "ownKeys" and "getOwnPropertyDescriptor" + +`Object.keys`, `for..in` loop and most other methods that iterate over object properties use `[[OwnPropertyKeys]]` internal method (intercepted by `ownKeys` trap) to get a list of properties. + +Such methods differ in details: +- `Object.getOwnPropertyNames(obj)` returns non-symbol keys. +- `Object.getOwnPropertySymbols(obj)` returns symbol keys. +- `Object.keys/values()` returns non-symbol keys/values with `enumerable` flag (property flags were explained in the article <info:property-descriptors>). +- `for..in` loops over non-symbol keys with `enumerable` flag, and also prototype keys. + +...But all of them start with that list. + +In the example below we use `ownKeys` trap to make `for..in` loop over `user`, and also `Object.keys` and `Object.values`, to skip properties starting with an underscore `_`: + +```js run +let user = { + name: "John", + age: 30, + _password: "***" +}; + +user = new Proxy(user, { +*!* + ownKeys(target) { +*/!* + return Object.keys(target).filter(key => !key.startsWith('_')); + } +}); + +// "ownKeys" filters out _password +for(let key in user) alert(key); // name, then: age + +// same effect on these methods: +alert( Object.keys(user) ); // name,age +alert( Object.values(user) ); // John,30 +``` + +So far, it works. + +Although, if we return a key that doesn't exist in the object, `Object.keys` won't list it: + +```js run +let user = { }; + +user = new Proxy(user, { +*!* + ownKeys(target) { +*/!* + return ['a', 'b', 'c']; + } +}); + +alert( Object.keys(user) ); // <empty> +``` + +Why? The reason is simple: `Object.keys` returns only properties with the `enumerable` flag. To check for it, it calls the internal method `[[GetOwnProperty]]` for every property to get [its descriptor](info:property-descriptors). And here, as there's no property, its descriptor is empty, no `enumerable` flag, so it's skipped. + +For `Object.keys` to return a property, we need it to either exist in the object, with the `enumerable` flag, or we can intercept calls to `[[GetOwnProperty]]` (the trap `getOwnPropertyDescriptor` does it), and return a descriptor with `enumerable: true`. + +Here's an example of that: + +```js run +let user = { }; + +user = new Proxy(user, { + ownKeys(target) { // called once to get a list of properties + return ['a', 'b', 'c']; + }, + + getOwnPropertyDescriptor(target, prop) { // called for every property + return { + enumerable: true, + configurable: true + /* ...other flags, probable "value:..." */ + }; + } + +}); + +alert( Object.keys(user) ); // a, b, c +``` + +Let's note once again: we only need to intercept `[[GetOwnProperty]]` if the property is absent in the object. + +## Protected properties with "deleteProperty" and other traps + +There's a widespread convention that properties and methods prefixed by an underscore `_` are internal. They shouldn't be accessed from outside the object. + +Technically that's possible though: + +```js run +let user = { + name: "John", + _password: "secret" +}; + +alert(user._password); // secret +``` + +Let's use proxies to prevent any access to properties starting with `_`. + +We'll need the traps: +- `get` to throw an error when reading such property, +- `set` to throw an error when writing, +- `deleteProperty` to throw an error when deleting, +- `ownKeys` to exclude properties starting with `_` from `for..in` and methods like `Object.keys`. + +Here's the code: + +```js run +let user = { + name: "John", + _password: "***" +}; + +user = new Proxy(user, { +*!* + get(target, prop) { +*/!* + if (prop.startsWith('_')) { + throw new Error("Access denied"); + } + let value = target[prop]; + return (typeof value === 'function') ? value.bind(target) : value; // (*) + }, +*!* + set(target, prop, val) { // to intercept property writing +*/!* + if (prop.startsWith('_')) { + throw new Error("Access denied"); + } else { + target[prop] = val; + return true; + } + }, +*!* + deleteProperty(target, prop) { // to intercept property deletion +*/!* + if (prop.startsWith('_')) { + throw new Error("Access denied"); + } else { + delete target[prop]; + return true; + } + }, +*!* + ownKeys(target) { // to intercept property list +*/!* + return Object.keys(target).filter(key => !key.startsWith('_')); + } +}); + +// "get" doesn't allow to read _password +try { + alert(user._password); // Error: Access denied +} catch(e) { alert(e.message); } + +// "set" doesn't allow to write _password +try { + user._password = "test"; // Error: Access denied +} catch(e) { alert(e.message); } + +// "deleteProperty" doesn't allow to delete _password +try { + delete user._password; // Error: Access denied +} catch(e) { alert(e.message); } + +// "ownKeys" filters out _password +for(let key in user) alert(key); // name +``` + +Please note the important detail in the `get` trap, in the line `(*)`: + +```js +get(target, prop) { + // ... + let value = target[prop]; +*!* + return (typeof value === 'function') ? value.bind(target) : value; // (*) +*/!* +} +``` + +Why do we need a function to call `value.bind(target)`? + +The reason is that object methods, such as `user.checkPassword()`, must be able to access `_password`: + +```js +user = { + // ... + checkPassword(value) { + // object method must be able to read _password + return value === this._password; + } +} +``` + + +A call to `user.checkPassword()` gets proxied `user` as `this` (the object before dot becomes `this`), so when it tries to access `this._password`, the `get` trap activates (it triggers on any property read) and throws an error. + +So we bind the context of object methods to the original object, `target`, in the line `(*)`. Then their future calls will use `target` as `this`, without any traps. + +That solution usually works, but isn't ideal, as a method may pass the unproxied object somewhere else, and then we'll get messed up: where's the original object, and where's the proxied one? + +Besides, an object may be proxied multiple times (multiple proxies may add different "tweaks" to the object), and if we pass an unwrapped object to a method, there may be unexpected consequences. + +So, such a proxy shouldn't be used everywhere. + +```smart header="Private properties of a class" +Modern JavaScript engines natively support private properties in classes, prefixed with `#`. They are described in the article <info:private-protected-properties-methods>. No proxies required. + +Such properties have their own issues though. In particular, they are not inherited. +``` + +## "In range" with "has" trap + +Let's see more examples. + +We have a range object: + +```js +let range = { + start: 1, + end: 10 +}; +``` + +We'd like to use the `in` operator to check that a number is in `range`. + +The `has` trap intercepts `in` calls. + +`has(target, property)` + +- `target` -- is the target object, passed as the first argument to `new Proxy`, +- `property` -- property name + +Here's the demo: + +```js run +let range = { + start: 1, + end: 10 +}; + +range = new Proxy(range, { +*!* + has(target, prop) { +*/!* + return prop >= target.start && prop <= target.end; + } +}); + +*!* +alert(5 in range); // true +alert(50 in range); // false +*/!* +``` + +Nice syntactic sugar, isn't it? And very simple to implement. + +## Wrapping functions: "apply" [#proxy-apply] + +We can wrap a proxy around a function as well. + +The `apply(target, thisArg, args)` trap handles calling a proxy as function: + +- `target` is the target object (function is an object in JavaScript), +- `thisArg` is the value of `this`. +- `args` is a list of arguments. + +For example, let's recall `delay(f, ms)` decorator, that we did in the article <info:call-apply-decorators>. + +In that article we did it without proxies. A call to `delay(f, ms)` returned a function that forwards all calls to `f` after `ms` milliseconds. + +Here's the previous, function-based implementation: + +```js run +function delay(f, ms) { + // return a wrapper that passes the call to f after the timeout + return function() { // (*) + setTimeout(() => f.apply(this, arguments), ms); + }; +} + +function sayHi(user) { + alert(`Hello, ${user}!`); +} + +// after this wrapping, calls to sayHi will be delayed for 3 seconds +sayHi = delay(sayHi, 3000); + +sayHi("John"); // Hello, John! (after 3 seconds) +``` + +As we've seen already, that mostly works. The wrapper function `(*)` performs the call after the timeout. + +But a wrapper function does not forward property read/write operations or anything else. After the wrapping, the access is lost to properties of the original functions, such as `name`, `length` and others: + +```js run +function delay(f, ms) { + return function() { + setTimeout(() => f.apply(this, arguments), ms); + }; +} + +function sayHi(user) { + alert(`Hello, ${user}!`); +} + +*!* +alert(sayHi.length); // 1 (function length is the arguments count in its declaration) +*/!* + +sayHi = delay(sayHi, 3000); + +*!* +alert(sayHi.length); // 0 (in the wrapper declaration, there are zero arguments) +*/!* +``` + +`Proxy` is much more powerful, as it forwards everything to the target object. + +Let's use `Proxy` instead of a wrapping function: + +```js run +function delay(f, ms) { + return new Proxy(f, { + apply(target, thisArg, args) { + setTimeout(() => target.apply(thisArg, args), ms); + } + }); +} + +function sayHi(user) { + alert(`Hello, ${user}!`); +} + +sayHi = delay(sayHi, 3000); + +*!* +alert(sayHi.length); // 1 (*) proxy forwards "get length" operation to the target +*/!* + +sayHi("John"); // Hello, John! (after 3 seconds) +``` + +The result is the same, but now not only calls, but all operations on the proxy are forwarded to the original function. So `sayHi.length` is returned correctly after the wrapping in the line `(*)`. + +We've got a "richer" wrapper. + +Other traps exist: the full list is in the beginning of this article. Their usage pattern is similar to the above. + +## Reflect + +`Reflect` is a built-in object that simplifies creation of `Proxy`. + +It was said previously that internal methods, such as `[[Get]]`, `[[Set]]` and others are specification-only, they can't be called directly. + +The `Reflect` object makes that somewhat possible. Its methods are minimal wrappers around the internal methods. + +Here are examples of operations and `Reflect` calls that do the same: + +| Operation | `Reflect` call | Internal method | +|-----------------|----------------|-------------| +| `obj[prop]` | `Reflect.get(obj, prop)` | `[[Get]]` | +| `obj[prop] = value` | `Reflect.set(obj, prop, value)` | `[[Set]]` | +| `delete obj[prop]` | `Reflect.deleteProperty(obj, prop)` | `[[Delete]]` | +| `new F(value)` | `Reflect.construct(F, value)` | `[[Construct]]` | +| ... | ... | ... | + +For example: + +```js run +let user = {}; + +Reflect.set(user, 'name', 'John'); + +alert(user.name); // John +``` + +In particular, `Reflect` allows us to call operators (`new`, `delete`...) as functions (`Reflect.construct`, `Reflect.deleteProperty`, ...). That's an interesting capability, but here another thing is important. + +**For every internal method, trappable by `Proxy`, there's a corresponding method in `Reflect`, with the same name and arguments as the `Proxy` trap.** + +So we can use `Reflect` to forward an operation to the original object. + +In this example, both traps `get` and `set` transparently (as if they didn't exist) forward reading/writing operations to the object, showing a message: + +```js run +let user = { + name: "John", +}; + +user = new Proxy(user, { + get(target, prop, receiver) { + alert(`GET ${prop}`); +*!* + return Reflect.get(target, prop, receiver); // (1) +*/!* + }, + set(target, prop, val, receiver) { + alert(`SET ${prop}=${val}`); +*!* + return Reflect.set(target, prop, val, receiver); // (2) +*/!* + } +}); + +let name = user.name; // shows "GET name" +user.name = "Pete"; // shows "SET name=Pete" +``` + +Here: + +- `Reflect.get` reads an object property. +- `Reflect.set` writes an object property and returns `true` if successful, `false` otherwise. + +That is, everything's simple: if a trap wants to forward the call to the object, it's enough to call `Reflect.<method>` with the same arguments. + +In most cases we can do the same without `Reflect`, for instance, reading a property `Reflect.get(target, prop, receiver)` can be replaced by `target[prop]`. There are important nuances though. + +### Proxying a getter + +Let's see an example that demonstrates why `Reflect.get` is better. And we'll also see why `get/set` have the third argument `receiver`, that we didn't use before. + +We have an object `user` with `_name` property and a getter for it. + +Here's a proxy around it: + +```js run +let user = { + _name: "Guest", + get name() { + return this._name; + } +}; + +*!* +let userProxy = new Proxy(user, { + get(target, prop, receiver) { + return target[prop]; + } +}); +*/!* + +alert(userProxy.name); // Guest +``` + +The `get` trap is "transparent" here, it returns the original property, and doesn't do anything else. That's enough for our example. + +Everything seems to be all right. But let's make the example a little bit more complex. + +After inheriting another object `admin` from `user`, we can observe the incorrect behavior: + +```js run +let user = { + _name: "Guest", + get name() { + return this._name; + } +}; + +let userProxy = new Proxy(user, { + get(target, prop, receiver) { + return target[prop]; // (*) target = user + } +}); + +*!* +let admin = { + __proto__: userProxy, + _name: "Admin" +}; + +// Expected: Admin +alert(admin.name); // outputs: Guest (?!?) +*/!* +``` + +Reading `admin.name` should return `"Admin"`, not `"Guest"`! + +What's the matter? Maybe we did something wrong with the inheritance? + +But if we remove the proxy, then everything will work as expected. + +The problem is actually in the proxy, in the line `(*)`. + +1. When we read `admin.name`, as `admin` object doesn't have such own property, the search goes to its prototype. +2. The prototype is `userProxy`. +3. When reading `name` property from the proxy, its `get` trap triggers and returns it from the original object as `target[prop]` in the line `(*)`. + + A call to `target[prop]`, when `prop` is a getter, runs its code in the context `this=target`. So the result is `this._name` from the original object `target`, that is: from `user`. + +To fix such situations, we need `receiver`, the third argument of `get` trap. It keeps the correct `this` to be passed to a getter. In our case that's `admin`. + +How to pass the context for a getter? For a regular function we could use `call/apply`, but that's a getter, it's not "called", just accessed. + +`Reflect.get` can do that. Everything will work right if we use it. + +Here's the corrected variant: + +```js run +let user = { + _name: "Guest", + get name() { + return this._name; + } +}; + +let userProxy = new Proxy(user, { + get(target, prop, receiver) { // receiver = admin +*!* + return Reflect.get(target, prop, receiver); // (*) +*/!* + } +}); + + +let admin = { + __proto__: userProxy, + _name: "Admin" +}; + +*!* +alert(admin.name); // Admin +*/!* +``` + +Now `receiver` that keeps a reference to the correct `this` (that is `admin`), is passed to the getter using `Reflect.get` in the line `(*)`. + +We can rewrite the trap even shorter: + +```js +get(target, prop, receiver) { + return Reflect.get(*!*...arguments*/!*); +} +``` + + +`Reflect` calls are named exactly the same way as traps and accept the same arguments. They were specifically designed this way. + +So, `return Reflect...` provides a safe no-brainer to forward the operation and make sure we don't forget anything related to that. + +## Proxy limitations + +Proxies provide a unique way to alter or tweak the behavior of the existing objects at the lowest level. Still, it's not perfect. There are limitations. + +### Built-in objects: Internal slots + +Many built-in objects, for example `Map`, `Set`, `Date`, `Promise` and others make use of so-called "internal slots". + +These are like properties, but reserved for internal, specification-only purposes. For instance, `Map` stores items in the internal slot `[[MapData]]`. Built-in methods access them directly, not via `[[Get]]/[[Set]]` internal methods. So `Proxy` can't intercept that. + +Why care? They're internal anyway! + +Well, here's the issue. After a built-in object like that gets proxied, the proxy doesn't have these internal slots, so built-in methods will fail. + +For example: + +```js run +let map = new Map(); + +let proxy = new Proxy(map, {}); + +*!* +proxy.set('test', 1); // Error +*/!* +``` + +Internally, a `Map` stores all data in its `[[MapData]]` internal slot. The proxy doesn't have such a slot. The [built-in method `Map.prototype.set`](https://tc39.es/ecma262/#sec-map.prototype.set) method tries to access the internal property `this.[[MapData]]`, but because `this=proxy`, can't find it in `proxy` and just fails. + +Fortunately, there's a way to fix it: + +```js run +let map = new Map(); + +let proxy = new Proxy(map, { + get(target, prop, receiver) { + let value = Reflect.get(...arguments); +*!* + return typeof value == 'function' ? value.bind(target) : value; +*/!* + } +}); + +proxy.set('test', 1); +alert(proxy.get('test')); // 1 (works!) +``` + +Now it works fine, because `get` trap binds function properties, such as `map.set`, to the target object (`map`) itself. + +Unlike the previous example, the value of `this` inside `proxy.set(...)` will be not `proxy`, but the original `map`. So when the internal implementation of `set` tries to access `this.[[MapData]]` internal slot, it succeeds. + +```smart header="`Array` has no internal slots" +A notable exception: built-in `Array` doesn't use internal slots. That's for historical reasons, as it appeared so long ago. + +So there's no such problem when proxying an array. +``` + +### Private fields + +A similar thing happens with private class fields. + +For example, `getName()` method accesses the private `#name` property and breaks after proxying: + +```js run +class User { + #name = "Guest"; + + getName() { + return this.#name; + } +} + +let user = new User(); + +user = new Proxy(user, {}); + +*!* +alert(user.getName()); // Error +*/!* +``` + +The reason is that private fields are implemented using internal slots. JavaScript does not use `[[Get]]/[[Set]]` when accessing them. + +In the call `getName()` the value of `this` is the proxied `user`, and it doesn't have the slot with private fields. + +Once again, the solution with binding the method makes it work: + +```js run +class User { + #name = "Guest"; + + getName() { + return this.#name; + } +} + +let user = new User(); + +user = new Proxy(user, { + get(target, prop, receiver) { + let value = Reflect.get(...arguments); + return typeof value == 'function' ? value.bind(target) : value; + } +}); + +alert(user.getName()); // Guest +``` + +That said, the solution has drawbacks, as explained previously: it exposes the original object to the method, potentially allowing it to be passed further and breaking other proxied functionality. + +### Proxy != target + +The proxy and the original object are different objects. That's natural, right? + +So if we use the original object as a key, and then proxy it, then the proxy can't be found: + +```js run +let allUsers = new Set(); + +class User { + constructor(name) { + this.name = name; + allUsers.add(this); + } +} + +let user = new User("John"); + +alert(allUsers.has(user)); // true + +user = new Proxy(user, {}); + +*!* +alert(allUsers.has(user)); // false +*/!* +``` + +As we can see, after proxying we can't find `user` in the set `allUsers`, because the proxy is a different object. + +```warn header="Proxies can't intercept a strict equality test `===`" +Proxies can intercept many operators, such as `new` (with `construct`), `in` (with `has`), `delete` (with `deleteProperty`) and so on. + +But there's no way to intercept a strict equality test for objects. An object is strictly equal to itself only, and no other value. + +So all operations and built-in classes that compare objects for equality will differentiate between the object and the proxy. No transparent replacement here. +``` + +## Revocable proxies + +A *revocable* proxy is a proxy that can be disabled. + +Let's say we have a resource, and would like to close access to it any moment. + +What we can do is to wrap it into a revocable proxy, without any traps. Such a proxy will forward operations to object, and we can disable it at any moment. + +The syntax is: + +```js +let {proxy, revoke} = Proxy.revocable(target, handler) +``` + +The call returns an object with the `proxy` and `revoke` function to disable it. + +Here's an example: + +```js run +let object = { + data: "Valuable data" +}; + +let {proxy, revoke} = Proxy.revocable(object, {}); + +// pass the proxy somewhere instead of object... +alert(proxy.data); // Valuable data + +// later in our code +revoke(); + +// the proxy isn't working any more (revoked) +alert(proxy.data); // Error +``` + +A call to `revoke()` removes all internal references to the target object from the proxy, so they are no longer connected. + +Initially, `revoke` is separate from `proxy`, so that we can pass `proxy` around while leaving `revoke` in the current scope. + +We can also bind `revoke` method to proxy by setting `proxy.revoke = revoke`. + +Another option is to create a `WeakMap` that has `proxy` as the key and the corresponding `revoke` as the value, that allows to easily find `revoke` for a proxy: + +```js run +*!* +let revokes = new WeakMap(); +*/!* + +let object = { + data: "Valuable data" +}; + +let {proxy, revoke} = Proxy.revocable(object, {}); + +revokes.set(proxy, revoke); + +// ..somewhere else in our code.. +revoke = revokes.get(proxy); +revoke(); + +alert(proxy.data); // Error (revoked) +``` + +We use `WeakMap` instead of `Map` here because it won't block garbage collection. If a proxy object becomes "unreachable" (e.g. no variable references it any more), `WeakMap` allows it to be wiped from memory together with its `revoke` that we won't need any more. + +## References + +- Specification: [Proxy](https://tc39.es/ecma262/#sec-proxy-object-internal-methods-and-internal-slots). +- MDN: [Proxy](mdn:/JavaScript/Reference/Global_Objects/Proxy). + +## Summary + +`Proxy` is a wrapper around an object, that forwards operations on it to the object, optionally trapping some of them. + +It can wrap any kind of object, including classes and functions. + +The syntax is: + +```js +let proxy = new Proxy(target, { + /* traps */ +}); +``` + +...Then we should use `proxy` everywhere instead of `target`. A proxy doesn't have its own properties or methods. It traps an operation if the trap is provided, otherwise forwards it to `target` object. + +We can trap: +- Reading (`get`), writing (`set`), deleting (`deleteProperty`) a property (even a non-existing one). +- Calling a function (`apply` trap). +- The `new` operator (`construct` trap). +- Many other operations (the full list is at the beginning of the article and in the [docs](mdn:/JavaScript/Reference/Global_Objects/Proxy)). + +That allows us to create "virtual" properties and methods, implement default values, observable objects, function decorators and so much more. + +We can also wrap an object multiple times in different proxies, decorating it with various aspects of functionality. + +The [Reflect](mdn:/JavaScript/Reference/Global_Objects/Reflect) API is designed to complement [Proxy](mdn:/JavaScript/Reference/Global_Objects/Proxy). For any `Proxy` trap, there's a `Reflect` call with same arguments. We should use those to forward calls to target objects. + +Proxies have some limitations: + +- Built-in objects have "internal slots", access to those can't be proxied. See the workaround above. +- The same holds true for private class fields, as they are internally implemented using slots. So proxied method calls must have the target object as `this` to access them. +- Object equality tests `===` can't be intercepted. +- Performance: benchmarks depend on an engine, but generally accessing a property using a simplest proxy takes a few times longer. In practice that only matters for some "bottleneck" objects though. diff --git a/1-js/99-js-misc/01-proxy/proxy-inherit-admin.svg b/1-js/99-js-misc/01-proxy/proxy-inherit-admin.svg new file mode 100644 index 000000000..3fba64606 --- /dev/null +++ b/1-js/99-js-misc/01-proxy/proxy-inherit-admin.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" width="241" height="285" viewBox="0 0 241 285"><defs><style>@import url(https://fonts.googleapis.com/css?family=Open+Sans:bold,italic,bolditalic%7CPT+Mono);@font-face{font-family:'PT Mono';font-weight:700;font-style:normal;src:local('PT MonoBold'),url(/font/PTMonoBold.woff2) format('woff2'),url(/font/PTMonoBold.woff) format('woff'),url(/font/PTMonoBold.ttf) format('truetype')}</style></defs><g id="misc" fill="none" fill-rule="evenodd" stroke="none" stroke-width="1"><g id="proxy-inherit-admin.svg"><path id="Oval" stroke="#DBAF88" stroke-dasharray="5" stroke-width="2" d="M116 181c43.63 0 79-30.668 79-68.5S159.63 44 116 44s-79 30.668-79 68.5S72.37 181 116 181z"/><path id="Rectangle-2" fill="#FBF2EC" stroke="#DBAF88" stroke-width="2" d="M52 96h130v48H52z"/><text id="_name:-"Guest"-name:" fill="#AF6E24" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="59" y="116">_name: "Guest"</tspan> <tspan x="59" y="131">name: getter</tspan></text><path id="Rectangle-2-Copy" fill="#FBF2EC" stroke="#DBAF88" stroke-width="2" d="M52 242h130v28H52z"/><text id="_name:-"Admin"" fill="#AF6E24" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="59" y="260">_name: "Admin"</tspan></text><text id="user-(proxied)" fill="#181717" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="57" y="29">user (proxied)</tspan></text><text id="original-user" fill="#181717" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="61" y="87">original user</tspan></text><path id="Line-Copy-3" fill="#C06334" fill-rule="nonzero" d="M115.963 180.5l9.5 19h-8V241h-3v-41.5h-8l9.5-19z" transform="matrix(-1 0 0 1 232 0)"/><text id="admin" fill="#181717" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="51" y="233">admin</tspan></text><text id="[[Prototype]]" fill="#181717" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="122" y="217">[[Prototype]]</tspan></text></g></g></svg> \ No newline at end of file diff --git a/1-js/99-js-misc/01-proxy/proxy-inherit.svg b/1-js/99-js-misc/01-proxy/proxy-inherit.svg new file mode 100644 index 000000000..6c34c0f4e --- /dev/null +++ b/1-js/99-js-misc/01-proxy/proxy-inherit.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" width="230" height="206" viewBox="0 0 230 206"><defs><style>@import url(https://fonts.googleapis.com/css?family=Open+Sans:bold,italic,bolditalic%7CPT+Mono);@font-face{font-family:'PT Mono';font-weight:700;font-style:normal;src:local('PT MonoBold'),url(/font/PTMonoBold.woff2) format('woff2'),url(/font/PTMonoBold.woff) format('woff'),url(/font/PTMonoBold.ttf) format('truetype')}</style></defs><g id="misc" fill="none" fill-rule="evenodd" stroke="none" stroke-width="1"><g id="proxy-inherit.svg"><path id="Oval" stroke="#DBAF88" stroke-dasharray="5" stroke-width="2" d="M116 181c43.63 0 79-30.668 79-68.5S159.63 44 116 44s-79 30.668-79 68.5S72.37 181 116 181z"/><path id="Rectangle-2" fill="#FBF2EC" stroke="#DBAF88" stroke-width="2" d="M52 96h130v48H52z"/><text id="_name:-"Guest"-name:" fill="#AF6E24" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="59" y="116">_name: "Guest"</tspan> <tspan x="59" y="131">name: getter</tspan></text><text id="user-(proxied)" fill="#181717" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="57" y="29">user (proxied)</tspan></text><text id="original-user" fill="#181717" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="61" y="87">original user</tspan></text></g></g></svg> \ No newline at end of file diff --git a/1-js/99-js-misc/01-proxy/proxy.svg b/1-js/99-js-misc/01-proxy/proxy.svg new file mode 100644 index 000000000..6b2224cfd --- /dev/null +++ b/1-js/99-js-misc/01-proxy/proxy.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" width="292" height="180" viewBox="0 0 292 180"><defs><style>@import url(https://fonts.googleapis.com/css?family=Open+Sans:bold,italic,bolditalic%7CPT+Mono);@font-face{font-family:'PT Mono';font-weight:700;font-style:normal;src:local('PT MonoBold'),url(/font/PTMonoBold.woff2) format('woff2'),url(/font/PTMonoBold.woff) format('woff'),url(/font/PTMonoBold.ttf) format('truetype')}</style></defs><g id="misc" fill="none" fill-rule="evenodd" stroke="none" stroke-width="1"><g id="proxy.svg"><path id="Rectangle-2" fill="#FBF2EC" stroke="#DBAF88" stroke-width="2" d="M191 81h73v26h-73z"/><text id="test:-5" fill="#AF6E24" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="198" y="98">test: 5</tspan></text><text id="proxy" fill="#181717" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="186" y="17">proxy</tspan></text><text id="target" fill="#181717" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="198" y="74">target</tspan></text><path id="Line" fill="#C06334" fill-rule="nonzero" d="M116.537 72.5l19 9.5-19 9.5-.001-8H4.463v-3h112.073v-8z"/><path id="Line-Copy-4" fill="#C06334" fill-rule="nonzero" d="M22 98.5v8h114.574v3H22v8L3 108l19-9.5z"/><path id="Line-Copy" fill="#C06334" fill-rule="nonzero" d="M190.478 89l-14-7v14l14-7zM146 88v2h-4v-2h4zm7 0v2h-4v-2h4zm7 0v2h-4v-2h4zm7 0v2h-4v-2h4zm7 0v2h-4v-2h4z"/><path id="Line-Copy-2" fill="#C06334" fill-rule="nonzero" d="M157 93v6h2v2h-2v6l-14-7 14-7zm9 6v2h-4v-2h4zm7 0v2h-4v-2h4zm7 0v2h-4v-2h4zm7 0v2h-4v-2h4z"/><text id="get-proxy.test" fill="#181717" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="7" y="70">get proxy.test</tspan></text><text id="5" fill="#181717" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="71" y="128">5</tspan></text><path id="Oval" stroke="#DBAF88" stroke-dasharray="5" stroke-width="2" d="M207 160c36.45 0 66-29.55 66-66s-29.55-66-66-66-66 29.55-66 66 29.55 66 66 66z"/></g></g></svg> \ No newline at end of file diff --git a/1-js/99-js-misc/02-eval/1-eval-calculator/solution.md b/1-js/99-js-misc/02-eval/1-eval-calculator/solution.md new file mode 100644 index 000000000..24d40c9b8 --- /dev/null +++ b/1-js/99-js-misc/02-eval/1-eval-calculator/solution.md @@ -0,0 +1,11 @@ +Let's use `eval` to calculate the maths expression: + +```js demo run +let expr = prompt("Type an arithmetic expression?", '2*3+2'); + +alert( eval(expr) ); +``` + +The user can input any text or code though. + +To make things safe, and limit it to arithmetics only, we can check the `expr` using a [regular expression](info:regular-expressions), so that it only may contain digits and operators. diff --git a/1-js/99-js-misc/02-eval/1-eval-calculator/task.md b/1-js/99-js-misc/02-eval/1-eval-calculator/task.md new file mode 100644 index 000000000..ece43ec9e --- /dev/null +++ b/1-js/99-js-misc/02-eval/1-eval-calculator/task.md @@ -0,0 +1,11 @@ +importance: 4 + +--- + +# Eval-calculator + +Create a calculator that prompts for an arithmetic expression and returns its result. + +There's no need to check the expression for correctness in this task. Just evaluate and return the result. + +[demo] diff --git a/1-js/99-js-misc/02-eval/article.md b/1-js/99-js-misc/02-eval/article.md new file mode 100644 index 000000000..1fdafeeec --- /dev/null +++ b/1-js/99-js-misc/02-eval/article.md @@ -0,0 +1,114 @@ +# Eval: run a code string + +The built-in `eval` function allows to execute a string of code. + +The syntax is: + +```js +let result = eval(code); +``` + +For example: + +```js run +let code = 'alert("Hello")'; +eval(code); // Hello +``` + +A string of code may be long, contain line breaks, function declarations, variables and so on. + +The result of `eval` is the result of the last statement. + +For example: +```js run +let value = eval('1+1'); +alert(value); // 2 +``` + +```js run +let value = eval('let i = 0; ++i'); +alert(value); // 1 +``` + +The eval'ed code is executed in the current lexical environment, so it can see outer variables: + +```js run no-beautify +let a = 1; + +function f() { + let a = 2; + +*!* + eval('alert(a)'); // 2 +*/!* +} + +f(); +``` + +It can change outer variables as well: + +```js untrusted refresh run +let x = 5; +eval("x = 10"); +alert(x); // 10, value modified +``` + +In strict mode, `eval` has its own lexical environment. So functions and variables, declared inside eval, are not visible outside: + +```js untrusted refresh run +// reminder: 'use strict' is enabled in runnable examples by default + +eval("let x = 5; function f() {}"); + +alert(typeof x); // undefined (no such variable) +// function f is also not visible +``` + +Without `use strict`, `eval` doesn't have its own lexical environment, so we would see `x` and `f` outside. + +## Using "eval" + +In modern programming `eval` is used very sparingly. It's often said that "eval is evil". + +The reason is simple: long, long time ago JavaScript was a much weaker language, many things could only be done with `eval`. But that time passed a decade ago. + +Right now, there's almost no reason to use `eval`. If someone is using it, there's a good chance they can replace it with a modern language construct or a [JavaScript Module](info:modules). + +Please note that its ability to access outer variables has side-effects. + +Code minifiers (tools used before JS gets to production, to compress it) rename local variables into shorter ones (like `a`, `b` etc) to make the code smaller. That's usually safe, but not if `eval` is used, as local variables may be accessed from eval'ed code string. So minifiers don't do that renaming for all variables potentially visible from `eval`. That negatively affects code compression ratio. + +Using outer local variables inside `eval` is also considered a bad programming practice, as it makes maintaining the code more difficult. + +There are two ways how to be totally safe from such problems. + +**If eval'ed code doesn't use outer variables, please call `eval` as `window.eval(...)`:** + +This way the code is executed in the global scope: + +```js untrusted refresh run +let x = 1; +{ + let x = 5; + window.eval('alert(x)'); // 1 (global variable) +} +``` + +**If eval'ed code needs local variables, change `eval` to `new Function` and pass them as arguments:** + +```js run +let f = new Function('a', 'alert(a)'); + +f(5); // 5 +``` + +The `new Function` construct is explained in the chapter <info:new-function>. It creates a function from a string, also in the global scope. So it can't see local variables. But it's so much clearer to pass them explicitly as arguments, like in the example above. + +## Summary + +A call to `eval(code)` runs the string of code and returns the result of the last statement. +- Rarely used in modern JavaScript, as there's usually no need. +- Can access outer local variables. That's considered bad practice. +- Instead, to `eval` the code in the global scope, use `window.eval(code)`. +- Or, if your code needs some data from the outer scope, use `new Function` and pass it as arguments. diff --git a/1-js/99-js-misc/03-currying-partials/article.md b/1-js/99-js-misc/03-currying-partials/article.md new file mode 100644 index 000000000..d71ac23f8 --- /dev/null +++ b/1-js/99-js-misc/03-currying-partials/article.md @@ -0,0 +1,188 @@ +libs: + - lodash + +--- + +# Currying + +[Currying](https://en.wikipedia.org/wiki/Currying) is an advanced technique of working with functions. It's used not only in JavaScript, but in other languages as well. + +Currying is a transformation of functions that translates a function from callable as `f(a, b, c)` into callable as `f(a)(b)(c)`. + +Currying doesn't call a function. It just transforms it. + +Let's see an example first, to better understand what we're talking about, and then practical applications. + +We'll create a helper function `curry(f)` that performs currying for a two-argument `f`. In other words, `curry(f)` for two-argument `f(a, b)` translates it into a function that runs as `f(a)(b)`: + +```js run +*!* +function curry(f) { // curry(f) does the currying transform + return function(a) { + return function(b) { + return f(a, b); + }; + }; +} +*/!* + +// usage +function sum(a, b) { + return a + b; +} + +let curriedSum = curry(sum); + +alert( curriedSum(1)(2) ); // 3 +``` + +As you can see, the implementation is straightforward: it's just two wrappers. + +- The result of `curry(func)` is a wrapper `function(a)`. +- When it is called like `curriedSum(1)`, the argument is saved in the Lexical Environment, and a new wrapper is returned `function(b)`. +- Then this wrapper is called with `2` as an argument, and it passes the call to the original `sum`. + +More advanced implementations of currying, such as [_.curry](https://lodash.com/docs#curry) from lodash library, return a wrapper that allows a function to be called both normally and partially: + +```js run +function sum(a, b) { + return a + b; +} + +let curriedSum = _.curry(sum); // using _.curry from lodash library + +alert( curriedSum(1, 2) ); // 3, still callable normally +alert( curriedSum(1)(2) ); // 3, called partially +``` + +## Currying? What for? + +To understand the benefits we need a worthy real-life example. + +For instance, we have the logging function `log(date, importance, message)` that formats and outputs the information. In real projects such functions have many useful features like sending logs over the network, here we'll just use `alert`: + +```js +function log(date, importance, message) { + alert(`[${date.getHours()}:${date.getMinutes()}] [${importance}] ${message}`); +} +``` + +Let's curry it! + +```js +log = _.curry(log); +``` + +After that `log` works normally: + +```js +log(new Date(), "DEBUG", "some debug"); // log(a, b, c) +``` + +...But also works in the curried form: + +```js +log(new Date())("DEBUG")("some debug"); // log(a)(b)(c) +``` + +Now we can easily make a convenience function for current logs: + +```js +// logNow will be the partial of log with fixed first argument +let logNow = log(new Date()); + +// use it +logNow("INFO", "message"); // [HH:mm] INFO message +``` + +Now `logNow` is `log` with fixed first argument, in other words "partially applied function" or "partial" for short. + +We can go further and make a convenience function for current debug logs: + +```js +let debugNow = logNow("DEBUG"); + +debugNow("message"); // [HH:mm] DEBUG message +``` + +So: +1. We didn't lose anything after currying: `log` is still callable normally. +2. We can easily generate partial functions such as for today's logs. + +## Advanced curry implementation + +In case you'd like to get in to the details, here's the "advanced" curry implementation for multi-argument functions that we could use above. + +It's pretty short: + +```js +function curry(func) { + + return function curried(...args) { + if (args.length >= func.length) { + return func.apply(this, args); + } else { + return function(...args2) { + return curried.apply(this, args.concat(args2)); + } + } + }; + +} +``` + +Usage examples: + +```js +function sum(a, b, c) { + return a + b + c; +} + +let curriedSum = curry(sum); + +alert( curriedSum(1, 2, 3) ); // 6, still callable normally +alert( curriedSum(1)(2,3) ); // 6, currying of 1st arg +alert( curriedSum(1)(2)(3) ); // 6, full currying +``` + +The new `curry` may look complicated, but it's actually easy to understand. + +The result of `curry(func)` call is the wrapper `curried` that looks like this: + +```js +// func is the function to transform +function curried(...args) { + if (args.length >= func.length) { // (1) + return func.apply(this, args); + } else { + return function(...args2) { // (2) + return curried.apply(this, args.concat(args2)); + } + } +}; +``` + +When we run it, there are two `if` execution branches: + +1. If passed `args` count is the same or more than the original function has in its definition (`func.length`) , then just pass the call to it using `func.apply`. +2. Otherwise, get a partial: we don't call `func` just yet. Instead, another wrapper is returned, that will re-apply `curried` providing previous arguments together with the new ones. + +Then, if we call it, again, we'll get either a new partial (if not enough arguments) or, finally, the result. + +```smart header="Fixed-length functions only" +The currying requires the function to have a fixed number of arguments. + +A function that uses rest parameters, such as `f(...args)`, can't be curried this way. +``` + +```smart header="A little more than currying" +By definition, currying should convert `sum(a, b, c)` into `sum(a)(b)(c)`. + +But most implementations of currying in JavaScript are advanced, as described: they also keep the function callable in the multi-argument variant. +``` + +## Summary + +*Currying* is a transform that makes `f(a,b,c)` callable as `f(a)(b)(c)`. JavaScript implementations usually both keep the function callable normally and return the partial if the arguments count is not enough. + +Currying allows us to easily get partials. As we've seen in the logging example, after currying the three argument universal function `log(date, importance, message)` gives us partials when called with one argument (like `log(date)`) or two arguments (like `log(date, importance)`). diff --git a/1-js/04-object-basics/04-object-methods/2-check-syntax/solution.md b/1-js/99-js-misc/04-reference-type/2-check-syntax/solution.md similarity index 61% rename from 1-js/04-object-basics/04-object-methods/2-check-syntax/solution.md rename to 1-js/99-js-misc/04-reference-type/2-check-syntax/solution.md index e2e87de7c..ba5d3bf04 100644 --- a/1-js/04-object-basics/04-object-methods/2-check-syntax/solution.md +++ b/1-js/99-js-misc/04-reference-type/2-check-syntax/solution.md @@ -11,17 +11,17 @@ let user = { (user.go)() // error! ``` -The error message in most browsers does not give understanding what went wrong. +The error message in most browsers does not give us much of a clue about what went wrong. **The error appears because a semicolon is missing after `user = {...}`.** -JavaScript does not assume a semicolon before a bracket `(user.go)()`, so it reads the code like: +JavaScript does not auto-insert a semicolon before a bracket `(user.go)()`, so it reads the code like: ```js no-beautify let user = { go:... }(user.go)() ``` -Then we can also see that such a joint expression is syntactically a call of the object `{ go: ... }` as a function with the argument `(user.go)`. And that also happens on the same line with `let user`, so the `user` object has not yet even been defined, hence the error. +Then we can also see that such a joint expression is syntactically a call of the object `{ go: ... }` as a function with the argument `(user.go)`. And that also happens on the same line with `let user`, so the `user` object has not yet even been defined, hence the error. If we insert the semicolon, all is fine: @@ -34,10 +34,4 @@ let user = { (user.go)() // John ``` -Please note that brackets around `(user.go)` do nothing here. Usually they setup the order of operations, but here the dot `.` works first anyway, so there's no effect. Only the semicolon thing matters. - - - - - - +Please note that parentheses around `(user.go)` do nothing here. Usually they setup the order of operations, but here the dot `.` works first anyway, so there's no effect. Only the semicolon thing matters. diff --git a/1-js/04-object-basics/04-object-methods/2-check-syntax/task.md b/1-js/99-js-misc/04-reference-type/2-check-syntax/task.md similarity index 100% rename from 1-js/04-object-basics/04-object-methods/2-check-syntax/task.md rename to 1-js/99-js-misc/04-reference-type/2-check-syntax/task.md diff --git a/1-js/04-object-basics/04-object-methods/3-why-this/solution.md b/1-js/99-js-misc/04-reference-type/3-why-this/solution.md similarity index 65% rename from 1-js/04-object-basics/04-object-methods/3-why-this/solution.md rename to 1-js/99-js-misc/04-reference-type/3-why-this/solution.md index 89bc0d722..e4ee78748 100644 --- a/1-js/04-object-basics/04-object-methods/3-why-this/solution.md +++ b/1-js/99-js-misc/04-reference-type/3-why-this/solution.md @@ -3,9 +3,9 @@ Here's the explanations. 1. That's a regular object method call. -2. The same, brackets do not change the order of operations here, the dot is first anyway. +2. The same, parentheses do not change the order of operations here, the dot is first anyway. -3. Here we have a more complex call `(expression).method()`. The call works as if it were split into two lines: +3. Here we have a more complex call `(expression)()`. The call works as if it were split into two lines: ```js no-beautify f = obj.go; // calculate the expression @@ -14,7 +14,7 @@ Here's the explanations. Here `f()` is executed as a function, without `this`. -4. The similar thing as `(3)`, to the left of the dot `.` we have an expression. +4. The similar thing as `(3)`, to the left of the parentheses `()` we have an expression. To explain the behavior of `(3)` and `(4)` we need to recall that property accessors (dot or square brackets) return a value of the Reference Type. diff --git a/1-js/04-object-basics/04-object-methods/3-why-this/task.md b/1-js/99-js-misc/04-reference-type/3-why-this/task.md similarity index 84% rename from 1-js/04-object-basics/04-object-methods/3-why-this/task.md rename to 1-js/99-js-misc/04-reference-type/3-why-this/task.md index f22de29cc..e2c073f62 100644 --- a/1-js/04-object-basics/04-object-methods/3-why-this/task.md +++ b/1-js/99-js-misc/04-reference-type/3-why-this/task.md @@ -4,7 +4,7 @@ importance: 3 # Explain the value of "this" -In the code below we intend to call `user.go()` method 4 times in a row. +In the code below we intend to call `obj.go()` method 4 times in a row. But calls `(1)` and `(2)` works differently from `(3)` and `(4)`. Why? diff --git a/1-js/99-js-misc/04-reference-type/article.md b/1-js/99-js-misc/04-reference-type/article.md new file mode 100644 index 000000000..894db8fc6 --- /dev/null +++ b/1-js/99-js-misc/04-reference-type/article.md @@ -0,0 +1,108 @@ + +# Reference Type + +```warn header="In-depth language feature" +This article covers an advanced topic, to understand certain edge-cases better. + +It's not important. Many experienced developers live fine without knowing it. Read on if you want to know how things work under the hood. +``` + +A dynamically evaluated method call can lose `this`. + +For instance: + +```js run +let user = { + name: "John", + hi() { alert(this.name); }, + bye() { alert("Bye"); } +}; + +user.hi(); // works + +// now let's call user.hi or user.bye depending on the name +*!* +(user.name == "John" ? user.hi : user.bye)(); // Error! +*/!* +``` + +On the last line there is a conditional operator that chooses either `user.hi` or `user.bye`. In this case the result is `user.hi`. + +Then the method is immediately called with parentheses `()`. But it doesn't work correctly! + +As you can see, the call results in an error, because the value of `"this"` inside the call becomes `undefined`. + +This works (object dot method): +```js +user.hi(); +``` + +This doesn't (evaluated method): +```js +(user.name == "John" ? user.hi : user.bye)(); // Error! +``` + +Why? If we want to understand why it happens, let's get under the hood of how `obj.method()` call works. + +## Reference type explained + +Looking closely, we may notice two operations in `obj.method()` statement: + +1. First, the dot `'.'` retrieves the property `obj.method`. +2. Then parentheses `()` execute it. + +So, how does the information about `this` get passed from the first part to the second one? + +If we put these operations on separate lines, then `this` will be lost for sure: + +```js run +let user = { + name: "John", + hi() { alert(this.name); } +}; + +*!* +// split getting and calling the method in two lines +let hi = user.hi; +hi(); // Error, because this is undefined +*/!* +``` + +Here `hi = user.hi` puts the function into the variable, and then on the last line it is completely standalone, and so there's no `this`. + +**To make `user.hi()` calls work, JavaScript uses a trick -- the dot `'.'` returns not a function, but a value of the special [Reference Type](https://tc39.github.io/ecma262/#sec-reference-specification-type).** + +The Reference Type is a "specification type". We can't explicitly use it, but it is used internally by the language. + +The value of Reference Type is a three-value combination `(base, name, strict)`, where: + +- `base` is the object. +- `name` is the property name. +- `strict` is true if `use strict` is in effect. + +The result of a property access `user.hi` is not a function, but a value of Reference Type. For `user.hi` in strict mode it is: + +```js +// Reference Type value +(user, "hi", true) +``` + +When parentheses `()` are called on the Reference Type, they receive the full information about the object and its method, and can set the right `this` (`user` in this case). + +Reference type is a special "intermediary" internal type, with the purpose to pass information from dot `.` to calling parentheses `()`. + +Any other operation like assignment `hi = user.hi` discards the reference type as a whole, takes the value of `user.hi` (a function) and passes it on. So any further operation "loses" `this`. + +So, as the result, the value of `this` is only passed the right way if the function is called directly using a dot `obj.method()` or square brackets `obj['method']()` syntax (they do the same here). There are various ways to solve this problem such as [func.bind()](/bind#solution-2-bind). + +## Summary + +Reference Type is an internal type of the language. + +Reading a property, such as with dot `.` in `obj.method()` returns not exactly the property value, but a special "reference type" value that stores both the property value and the object it was taken from. + +That's for the subsequent method call `()` to get the object and set `this` to it. + +For all other operations, the reference type automatically becomes the property value (a function in our case). + +The whole mechanics is hidden from our eyes. It only matters in subtle cases, such as when a method is obtained dynamically from the object, using an expression. diff --git a/1-js/99-js-misc/05-bigint/article.md b/1-js/99-js-misc/05-bigint/article.md new file mode 100644 index 000000000..2a1cfc843 --- /dev/null +++ b/1-js/99-js-misc/05-bigint/article.md @@ -0,0 +1,130 @@ +# BigInt + +[recent caniuse="bigint"] + +`BigInt` is a special numeric type that provides support for integers of arbitrary length. + +A bigint is created by appending `n` to the end of an integer literal or by calling the function `BigInt` that creates bigints from strings, numbers etc. + +```js +const bigint = 1234567890123456789012345678901234567890n; + +const sameBigint = BigInt("1234567890123456789012345678901234567890"); + +const bigintFromNumber = BigInt(10); // same as 10n +``` + +## Math operators + +`BigInt` can mostly be used like a regular number, for example: + +```js run +alert(1n + 2n); // 3 + +alert(5n / 2n); // 2 +``` + +Please note: the division `5/2` returns the result rounded towards zero, without the decimal part. All operations on bigints return bigints. + +We can't mix bigints and regular numbers: + +```js run +alert(1n + 2); // Error: Cannot mix BigInt and other types +``` + +We should explicitly convert them if needed: using either `BigInt()` or `Number()`, like this: + +```js run +let bigint = 1n; +let number = 2; + +// number to bigint +alert(bigint + BigInt(number)); // 3 + +// bigint to number +alert(Number(bigint) + number); // 3 +``` + +The conversion operations are always silent, never give errors, but if the bigint is too huge and won't fit the number type, then extra bits will be cut off, so we should be careful doing such conversion. + +````smart header="The unary plus is not supported on bigints" +The unary plus operator `+value` is a well-known way to convert `value` to a number. + +In order to avoid confusion, it's not supported on bigints: +```js run +let bigint = 1n; + +alert( +bigint ); // error +``` +So we should use `Number()` to convert a bigint to a number. +```` + +## Comparisons + +Comparisons, such as `<`, `>` work with bigints and numbers just fine: + +```js run +alert( 2n > 1n ); // true + +alert( 2n > 1 ); // true +``` + +Please note though, as numbers and bigints belong to different types, they can be equal `==`, but not strictly equal `===`: + +```js run +alert( 1 == 1n ); // true + +alert( 1 === 1n ); // false +``` + +## Boolean operations + +When inside `if` or other boolean operations, bigints behave like numbers. + +For instance, in `if`, bigint `0n` is falsy, other values are truthy: + +```js run +if (0n) { + // never executes +} +``` + +Boolean operators, such as `||`, `&&` and others also work with bigints similar to numbers: + +```js run +alert( 1n || 2 ); // 1 (1n is considered truthy) + +alert( 0n || 2 ); // 2 (0n is considered falsy) +``` + +## Polyfills + +Polyfilling bigints is tricky. The reason is that many JavaScript operators, such as `+`, `-` and so on behave differently with bigints compared to regular numbers. + +For example, division of bigints always returns a bigint (rounded if necessary). + +To emulate such behavior, a polyfill would need to analyze the code and replace all such operators with its functions. But doing so is cumbersome and would cost a lot of performance. + +So, there's no well-known good polyfill. + +Although, the other way around is proposed by the developers of [JSBI](https://github.com/GoogleChromeLabs/jsbi) library. + +This library implements big numbers using its own methods. We can use them instead of native bigints: + +| Operation | native `BigInt` | JSBI | +|-----------|-----------------|------| +| Creation from Number | `a = BigInt(789)` | `a = JSBI.BigInt(789)` | +| Addition | `c = a + b` | `c = JSBI.add(a, b)` | +| Subtraction | `c = a - b` | `c = JSBI.subtract(a, b)` | +| ... | ... | ... | + +...And then use the polyfill (Babel plugin) to convert JSBI calls to native bigints for those browsers that support them. + +In other words, this approach suggests that we write code in JSBI instead of native bigints. But JSBI works with numbers as with bigints internally, emulates them closely following the specification, so the code will be "bigint-ready". + +We can use such JSBI code "as is" for engines that don't support bigints and for those that do support - the polyfill will convert the calls to native bigints. + +## References + +- [MDN docs on BigInt](mdn:/JavaScript/Reference/Global_Objects/BigInt). +- [Specification](https://tc39.es/ecma262/#sec-bigint-objects). diff --git a/1-js/99-js-misc/06-unicode/article.md b/1-js/99-js-misc/06-unicode/article.md new file mode 100644 index 000000000..4f144f824 --- /dev/null +++ b/1-js/99-js-misc/06-unicode/article.md @@ -0,0 +1,172 @@ + +# Unicode, String internals + +```warn header="Advanced knowledge" +The section goes deeper into string internals. This knowledge will be useful for you if you plan to deal with emoji, rare mathematical or hieroglyphic characters, or other rare symbols. +``` + +As we already know, JavaScript strings are based on [Unicode](https://en.wikipedia.org/wiki/Unicode): each character is represented by a byte sequence of 1-4 bytes. + +JavaScript allows us to insert a character into a string by specifying its hexadecimal Unicode code with one of these three notations: + +- `\xXX` + + `XX` must be two hexadecimal digits with a value between `00` and `FF`, then `\xXX` is the character whose Unicode code is `XX`. + + Because the `\xXX` notation supports only two hexadecimal digits, it can be used only for the first 256 Unicode characters. + + These first 256 characters include the Latin alphabet, most basic syntax characters, and some others. For example, `"\x7A"` is the same as `"z"` (Unicode `U+007A`). + + ```js run + alert( "\x7A" ); // z + alert( "\xA9" ); // ©, the copyright symbol + ``` + +- `\uXXXX` + `XXXX` must be exactly 4 hex digits with the value between `0000` and `FFFF`, then `\uXXXX` is the character whose Unicode code is `XXXX`. + + Characters with Unicode values greater than `U+FFFF` can also be represented with this notation, but in this case, we will need to use a so called surrogate pair (we will talk about surrogate pairs later in this chapter). + + ```js run + alert( "\u00A9" ); // ©, the same as \xA9, using the 4-digit hex notation + alert( "\u044F" ); // я, the Cyrillic alphabet letter + alert( "\u2191" ); // ↑, the arrow up symbol + ``` + +- `\u{X…XXXXXX}` + + `X…XXXXXX` must be a hexadecimal value of 1 to 6 bytes between `0` and `10FFFF` (the highest code point defined by Unicode). This notation allows us to easily represent all existing Unicode characters. + + ```js run + alert( "\u{20331}" ); // 佫, a rare Chinese character (long Unicode) + alert( "\u{1F60D}" ); // 😍, a smiling face symbol (another long Unicode) + ``` + +## Surrogate pairs + +All frequently used characters have 2-byte codes (4 hex digits). Letters in most European languages, numbers, and the basic unified CJK ideographic sets (CJK -- from Chinese, Japanese, and Korean writing systems), have a 2-byte representation. + +Initially, JavaScript was based on UTF-16 encoding that only allowed 2 bytes per character. But 2 bytes only allow 65536 combinations and that's not enough for every possible symbol of Unicode. + +So rare symbols that require more than 2 bytes are encoded with a pair of 2-byte characters called "a surrogate pair". + +As a side effect, the length of such symbols is `2`: + +```js run +alert( '𝒳'.length ); // 2, MATHEMATICAL SCRIPT CAPITAL X +alert( '😂'.length ); // 2, FACE WITH TEARS OF JOY +alert( '𩷶'.length ); // 2, a rare Chinese character +``` + +That's because surrogate pairs did not exist at the time when JavaScript was created, and thus are not correctly processed by the language! + +We actually have a single symbol in each of the strings above, but the `length` property shows a length of `2`. + +Getting a symbol can also be tricky, because most language features treat surrogate pairs as two characters. + +For example, here we can see two odd characters in the output: + +```js run +alert( '𝒳'[0] ); // shows strange symbols... +alert( '𝒳'[1] ); // ...pieces of the surrogate pair +``` + +Pieces of a surrogate pair have no meaning without each other. So the alerts in the example above actually display garbage. + +Technically, surrogate pairs are also detectable by their codes: if a character has the code in the interval of `0xd800..0xdbff`, then it is the first part of the surrogate pair. The next character (second part) must have the code in interval `0xdc00..0xdfff`. These intervals are reserved exclusively for surrogate pairs by the standard. + +So the methods [String.fromCodePoint](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/fromCodePoint) and [str.codePointAt](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/codePointAt) were added in JavaScript to deal with surrogate pairs. + +They are essentially the same as [String.fromCharCode](mdn:js/String/fromCharCode) and [str.charCodeAt](mdn:js/String/charCodeAt), but they treat surrogate pairs correctly. + +One can see the difference here: + +```js run +// charCodeAt is not surrogate-pair aware, so it gives codes for the 1st part of 𝒳: + +alert( '𝒳'.charCodeAt(0).toString(16) ); // d835 + +// codePointAt is surrogate-pair aware +alert( '𝒳'.codePointAt(0).toString(16) ); // 1d4b3, reads both parts of the surrogate pair +``` + +That said, if we take from position 1 (and that's rather incorrect here), then they both return only the 2nd part of the pair: + +```js run +alert( '𝒳'.charCodeAt(1).toString(16) ); // dcb3 +alert( '𝒳'.codePointAt(1).toString(16) ); // dcb3 +// meaningless 2nd half of the pair +``` + +You will find more ways to deal with surrogate pairs later in the chapter <info:iterable>. There are probably special libraries for that too, but nothing famous enough to suggest here. + +````warn header="Takeaway: splitting strings at an arbitrary point is dangerous" +We can't just split a string at an arbitrary position, e.g. take `str.slice(0, 4)` and expect it to be a valid string, e.g.: + +```js run +alert( 'hi 😂'.slice(0, 4) ); // hi [?] +``` + +Here we can see a garbage character (first half of the smile surrogate pair) in the output. + +Just be aware of it if you intend to reliably work with surrogate pairs. May not be a big problem, but at least you should understand what happens. +```` + +## Diacritical marks and normalization + +In many languages, there are symbols that are composed of the base character with a mark above/under it. + +For instance, the letter `a` can be the base character for these characters: `àáâäãåā`. + +Most common "composite" characters have their own code in the Unicode table. But not all of them, because there are too many possible combinations. + +To support arbitrary compositions, the Unicode standard allows us to use several Unicode characters: the base character followed by one or many "mark" characters that "decorate" it. + +For instance, if we have `S` followed by the special "dot above" character (code `\u0307`), it is shown as Ṡ. + +```js run +alert( 'S\u0307' ); // Ṡ +``` + +If we need an additional mark above the letter (or below it) -- no problem, just add the necessary mark character. + +For instance, if we append a character "dot below" (code `\u0323`), then we'll have "S with dots above and below": `Ṩ`. + +For example: + +```js run +alert( 'S\u0307\u0323' ); // Ṩ +``` + +This provides great flexibility, but also an interesting problem: two characters may visually look the same, but be represented with different Unicode compositions. + +For instance: + +```js run +let s1 = 'S\u0307\u0323'; // Ṩ, S + dot above + dot below +let s2 = 'S\u0323\u0307'; // Ṩ, S + dot below + dot above + +alert( `s1: ${s1}, s2: ${s2}` ); + +alert( s1 == s2 ); // false though the characters look identical (?!) +``` + +To solve this, there exists a "Unicode normalization" algorithm that brings each string to the single "normal" form. + +It is implemented by [str.normalize()](mdn:js/String/normalize). + +```js run +alert( "S\u0307\u0323".normalize() == "S\u0323\u0307".normalize() ); // true +``` + +It's funny that in our situation `normalize()` actually brings together a sequence of 3 characters to one: `\u1e68` (S with two dots). + +```js run +alert( "S\u0307\u0323".normalize().length ); // 1 + +alert( "S\u0307\u0323".normalize() == "\u1e68" ); // true +``` + +In reality, this is not always the case. The reason is that the symbol `Ṩ` is "common enough", so Unicode creators included it in the main table and gave it the code. + +If you want to learn more about normalization rules and variants -- they are described in the appendix of the Unicode standard: [Unicode Normalization Forms](https://www.unicode.org/reports/tr15/), but for most practical purposes the information from this section is enough. diff --git a/1-js/99-js-misc/07-weakref-finalizationregistry/article.md b/1-js/99-js-misc/07-weakref-finalizationregistry/article.md new file mode 100644 index 000000000..777bf703c --- /dev/null +++ b/1-js/99-js-misc/07-weakref-finalizationregistry/article.md @@ -0,0 +1,483 @@ + +# WeakRef and FinalizationRegistry + +```warn header="\"Hidden\" features of the language" +This article covers a very narrowly focused topic, that most developers extremely rarely encounter in practice (and may not even be aware of its existence). + +We recommend skipping this chapter if you have just started learning JavaScript. +``` + +Recalling the basic concept of the *reachability principle* from the <info:garbage-collection> chapter, +we can note that the JavaScript engine is guaranteed to keep values in memory that are accessible or in use. + +For example: + + +```js +// the user variable holds a strong reference to the object +let user = { name: "John" }; + +// let's overwrite the value of the user variable +user = null; + +// the reference is lost and the object will be deleted from memory + +``` + +Or a similar, but slightly more complicated code with two strong references: + +```js +// the user variable holds a strong reference to the object +let user = { name: "John" }; + +// copied the strong reference to the object into the admin variable +*!* +let admin = user; +*/!* + +// let's overwrite the value of the user variable +user = null; + +// the object is still reachable through the admin variable +``` +The object `{ name: "John" }` would only be deleted from memory if there were no strong references to it (if we also overwrote the value of the `admin` variable). + +In JavaScript, there is a concept called `WeakRef`, which behaves slightly differently in this case. + + +````smart header="Terms: \"Strong reference\", \"Weak reference\"" +**Strong reference** - is a reference to an object or value, that prevents them from being deleted by the garbage collector. Thereby, keeping the object or value in memory, to which it points. + +This means, that the object or value remains in memory and is not collected by the garbage collector as long, as there are active strong references to it. + +In JavaScript, ordinary references to objects are strong references. For example: + +```js +// the user variable holds a strong reference to this object +let user = { name: "John" }; +``` +**Weak reference** - is a reference to an object or value, that does *not* prevent them from being deleted by the garbage collector. +An object or value can be deleted by the garbage collector if, the only remaining references to them are weak references. +```` + +## WeakRef + + +````warn header="Note of caution" +Before we dive into it, it is worth noting that the correct use of the structures discussed in this article requires very careful thought, and they are best avoided if possible. +```` + +`WeakRef` - is an object, that contains a weak reference to another object, called `target` or `referent`. + +The peculiarity of `WeakRef` is that it does not prevent the garbage collector from deleting its referent-object. In other words, a `WeakRef` object does not keep the `referent` object alive. + +Now let's take the `user` variable as the "referent" and create a weak reference from it to the `admin` variable. +To create a weak reference, you need to use the `WeakRef` constructor, passing in the target object (the object you want a weak reference to). + +In our case — this is the `user` variable: + + +```js +// the user variable holds a strong reference to the object +let user = { name: "John" }; + +// the admin variable holds a weak reference to the object +*!* +let admin = new WeakRef(user); +*/!* + +``` + +The diagram below depicts two types of references: a strong reference using the `user` variable and a weak reference using the `admin` variable: + + + +Then, at some point, we stop using the `user` variable - it gets overwritten, goes out of scope, etc., while keeping the `WeakRef` instance in the `admin` variable: + +```js +// let's overwrite the value of the user variable +user = null; +``` + +A weak reference to an object is not enough to keep it "alive". When the only remaining references to a referent-object are weak references, the garbage collector is free to destroy this object and use its memory for something else. + +However, until the object is actually destroyed, the weak reference may return it, even if there are no more strong references to this object. +That is, our object becomes a kind of "[Schrödinger's cat](https://en.wikipedia.org/wiki/Schr%C3%B6dinger%27s_cat)" – we cannot know for sure whether it's "alive" or "dead": + + + +At this point, to get the object from the `WeakRef` instance, we will use its `deref()` method. + +The `deref()` method returns the referent-object that the `WeakRef` points to, if the object is still in memory. If the object has been deleted by the garbage collector, then the `deref()` method will return `undefined`: + + +```js +let ref = admin.deref(); + +if (ref) { + // the object is still accessible: we can perform any manipulations with it +} else { + // the object has been collected by the garbage collector +} +``` + +## WeakRef use cases + +`WeakRef` is typically used to create caches or [associative arrays](https://en.wikipedia.org/wiki/Associative_array) that store resource-intensive objects. +This allows one to avoid preventing these objects from being collected by the garbage collector solely based on their presence in the cache or associative array. + +One of the primary examples - is a situation when we have numerous binary image objects (for instance, represented as `ArrayBuffer` or `Blob`), and we want to associate a name or path with each image. +Existing data structures are not quite suitable for these purposes: + +- Using `Map` to create associations between names and images, or vice versa, will keep the image objects in memory since they are present in the `Map` as keys or values. +- `WeakMap` is ineligible for this goal either: because the objects represented as `WeakMap` keys use weak references, and are not protected from deletion by the garbage collector. + +But, in this situation, we need a data structure that would use weak references in its values. + +For this purpose, we can use a `Map` collection, whose values are `WeakRef` instances referring to the large objects we need. +Consequently, we will not keep these large and unnecessary objects in memory longer than they should be. + +Otherwise, this is a way to get the image object from the cache if it is still reachable. +If it has been garbage collected, we will re-generate or re-download it again. + +This way, less memory is used in some situations. + +## Example №1: using WeakRef for caching + +Below is a code snippet that demonstrates the technique of using `WeakRef`. + +In short, we use a `Map` with string keys and `WeakRef` objects as their values. +If the `WeakRef` object has not been collected by the garbage collector, we get it from the cache. +Otherwise, we re-download it again and put it in the cache for further possible reuse: + +```js +function fetchImg() { + // abstract function for downloading images... +} + +function weakRefCache(fetchImg) { // (1) + const imgCache = new Map(); // (2) + + return (imgName) => { // (3) + const cachedImg = imgCache.get(imgName); // (4) + + if (cachedImg?.deref()) { // (5) + return cachedImg?.deref(); + } + + const newImg = fetchImg(imgName); // (6) + imgCache.set(imgName, new WeakRef(newImg)); // (7) + + return newImg; + }; +} + +const getCachedImg = weakRefCache(fetchImg); +``` + +Let's delve into the details of what happened here: +1. `weakRefCache` - is a higher-order function that takes another function, `fetchImg`, as an argument. In this example, we can neglect a detailed description of the `fetchImg` function, since it can be any logic for downloading images. +2. `imgCache` - is a cache of images, that stores cached results of the `fetchImg` function, in the form of string keys (image name) and `WeakRef` objects as their values. +3. Return an anonymous function that takes the image name as an argument. This argument will be used as a key for the cached image. +4. Trying to get the cached result from the cache, using the provided key (image name). +5. If the cache contains a value for the specified key, and the `WeakRef` object has not been deleted by the garbage collector, return the cached result. +6. If there is no entry in the cache with the requested key, or `deref()` method returns `undefined` (meaning that the `WeakRef` object has been garbage collected), the `fetchImg` function downloads the image again. +7. Put the downloaded image into the cache as a `WeakRef` object. + +Now we have a `Map` collection, where the keys - are image names as strings, and values - are `WeakRef` objects containing the images themselves. + +This technique helps to avoid allocating a large amount of memory for resource-intensive objects, that nobody uses anymore. +It also saves memory and time in case of reusing cached objects. + +Here is a visual representation of what this code looks like: + + + +But, this implementation has its drawbacks: over time, `Map` will be filled with strings as keys, that point to a `WeakRef`, whose referent-object has already been garbage collected: + + + +One way to handle this problem - is to periodically scavenge the cache and clear out "dead" entries. +Another way - is to use finalizers, which we will explore next. + + +## Example №2: Using WeakRef to track DOM objects + +Another use case for `WeakRef` - is tracking DOM objects. + +Let's imagine a scenario where some third-party code or library interacts with elements on our page as long as they exist in the DOM. +For example, it could be an external utility for monitoring and notifying about the system's state (commonly so-called "logger" – a program that sends informational messages called "logs"). + +Interactive example: + +[codetabs height=420 src="weakref-dom"] + +When the "Start sending messages" button is clicked, in the so-called "logs display window" (an element with the `.window__body` class), messages (logs) start to appear. + +But, as soon as this element is deleted from the DOM, the logger should stop sending messages. +To reproduce the removal of this element, just click the "Close" button in the top right corner. + +In order not to complicate our work, and not to notify third-party code every time our DOM-element is available, and when it is not, it will be enough to create a weak reference to it using `WeakRef`. + +Once the element is removed from the DOM, the logger will notice it and stop sending messages. + +Now let's take a closer look at the source code (*tab `index.js`*): + +1. Get the DOM-element of the "Start sending messages" button. +2. Get the DOM-element of the "Close" button. +3. Get the DOM-element of the logs display window using the `new WeakRef()` constructor. This way, the `windowElementRef` variable holds a weak reference to the DOM-element. +4. Add an event listener on the "Start sending messages" button, responsible for starting the logger when clicked. +5. Add an event listener on the "Close" button, responsible for closing the logs display window when clicked. +6. Use `setInterval` to start displaying a new message every second. +7. If the DOM-element of the logs display window is still accessible and kept in memory, create and send a new message. +8. If the `deref()` method returns `undefined`, it means that the DOM-element has been deleted from memory. In this case, the logger stops displaying messages and clears the timer. +9. `alert`, which will be called, after the DOM-element of the logs display window is deleted from memory (i.e. after clicking the "Close" button). **Note, that deletion from memory may not happen immediately, as it depends only on the internal mechanisms of the garbage collector.** + + We cannot control this process directly from the code. However, despite this, we still have the option to force garbage collection from the browser. + + In Google Chrome, for example, to do this, you need to open the developer tools (`key:Ctrl` + `key:Shift` + `key:J` on Windows/Linux or `key:Option` + `key:⌘` + `key:J` on macOS), go to the "Performance" tab, and click on the bin icon button – "Collect garbage": + +  + + <br> + This functionality is supported in most modern browsers. After the actions are taken, the <code>alert</code> will trigger immediately. + +## FinalizationRegistry + +Now it is time to talk about finalizers. Before we move on, let's clarify the terminology: + +**Cleanup callback (finalizer)** - is a function that is executed, when an object, registered in the `FinalizationRegistry`, is deleted from memory by the garbage collector. + +Its purpose - is to provide the ability to perform additional operations, related to the object, after it has been finally deleted from memory. + +**Registry** (or `FinalizationRegistry`) - is a special object in JavaScript that manages the registration and unregistration of objects and their cleanup callbacks. + +This mechanism allows registering an object to track and associate a cleanup callback with it. +Essentially it is a structure that stores information about registered objects and their cleanup callbacks, and then automatically invokes those callbacks when the objects are deleted from memory. + +To create an instance of the `FinalizationRegistry`, it needs to call its constructor, which takes a single argument - the cleanup callback (finalizer). + +Syntax: + +```js +function cleanupCallback(heldValue) { + // cleanup callback code +} + +const registry = new FinalizationRegistry(cleanupCallback); +``` + +Here: + +- `cleanupCallback` - a cleanup callback that will be automatically called when a registered object is deleted from memory. +- `heldValue` - the value that is passed as an argument to the cleanup callback. If `heldValue` is an object, the registry keeps a strong reference to it. +- `registry` - an instance of `FinalizationRegistry`. + +`FinalizationRegistry` methods: + +- `register(target, heldValue [, unregisterToken])` - used to register objects in the registry. + + `target` - the object being registered for tracking. If the `target` is garbage collected, the cleanup callback will be called with `heldValue` as its argument. + + Optional `unregisterToken` – an unregistration token. It can be passed to unregister an object before the garbage collector deletes it. Typically, the `target` object is used as `unregisterToken`, which is the standard practice. +- `unregister(unregisterToken)` - the `unregister` method is used to unregister an object from the registry. It takes one argument - `unregisterToken` (the unregister token that was obtained when registering the object). + +Now let's move on to a simple example. Let's use the already-known `user` object and create an instance of `FinalizationRegistry`: + +```js +let user = { name: "John" }; + +const registry = new FinalizationRegistry((heldValue) => { + console.log(`${heldValue} has been collected by the garbage collector.`); +}); +``` + +Then, we will register the object, that requires a cleanup callback by calling the `register` method: + +```js +registry.register(user, user.name); +``` + +The registry does not keep a strong reference to the object being registered, as this would defeat its purpose. If the registry kept a strong reference, then the object would never be garbage collected. + +If the object is deleted by the garbage collector, our cleanup callback may be called at some point in the future, with the `heldValue` passed to it: + +```js +// When the user object is deleted by the garbage collector, the following message will be printed in the console: +"John has been collected by the garbage collector." +``` + +There are also situations where, even in implementations that use a cleanup callback, there is a chance that it will not be called. + +For example: +- When the program fully terminates its operation (for example, when closing a tab in a browser). +- When the `FinalizationRegistry` instance itself is no longer reachable to JavaScript code. + If the object that creates the `FinalizationRegistry` instance goes out of scope or is deleted, the cleanup callbacks registered in that registry might also not be invoked. + +## Caching with FinalizationRegistry + +Returning to our *weak* cache example, we can notice the following: +- Even though the values wrapped in the `WeakRef` have been collected by the garbage collector, there is still an issue of "memory leakage" in the form of the remaining keys, whose values have been collected by the garbage collector. + +Here is an improved caching example using `FinalizationRegistry`: + +```js +function fetchImg() { + // abstract function for downloading images... +} + +function weakRefCache(fetchImg) { + const imgCache = new Map(); + + *!* + const registry = new FinalizationRegistry((imgName) => { // (1) + const cachedImg = imgCache.get(imgName); + if (cachedImg && !cachedImg.deref()) imgCache.delete(imgName); + }); + */!* + + return (imgName) => { + const cachedImg = imgCache.get(imgName); + + if (cachedImg?.deref()) { + return cachedImg?.deref(); + } + + const newImg = fetchImg(imgName); + imgCache.set(imgName, new WeakRef(newImg)); + *!* + registry.register(newImg, imgName); // (2) + */!* + + return newImg; + }; +} + +const getCachedImg = weakRefCache(fetchImg); +``` + +1. To manage the cleanup of "dead" cache entries, when the associated `WeakRef` objects are collected by the garbage collector, we create a `FinalizationRegistry` cleanup registry. + + The important point here is, that in the cleanup callback, it should be checked, if the entry was deleted by the garbage collector and not re-added, in order not to delete a "live" entry. +2. Once the new value (image) is downloaded and put into the cache, we register it in the finalizer registry to track the `WeakRef` object. + +This implementation contains only actual or "live" key/value pairs. +In this case, each `WeakRef` object is registered in the `FinalizationRegistry`. +And after the objects are cleaned up by the garbage collector, the cleanup callback will delete all `undefined` values. + +Here is a visual representation of the updated code: + + + +A key aspect of the updated implementation is that finalizers allow parallel processes to be created between the "main" program and cleanup callbacks. +In the context of JavaScript, the "main" program - is our JavaScript-code, that runs and executes in our application or web page. + +Hence, from the moment an object is marked for deletion by the garbage collector, and to the actual execution of the cleanup callback, there may be a certain time gap. +It is important to understand that during this time gap, the main program can make any changes to the object or even bring it back to memory. + +That's why, in the cleanup callback, we must check to see if an entry has been added back to the cache by the main program to avoid deleting "live" entries. +Similarly, when searching for a key in the cache, there is a chance that the value has been deleted by the garbage collector, but the cleanup callback has not been executed yet. + +Such situations require special attention if you are working with `FinalizationRegistry`. + +## Using WeakRef and FinalizationRegistry in practice + +Moving from theory to practice, imagine a real-life scenario, where a user synchronizes their photos on a mobile device with some cloud service +(such as [iCloud](https://en.wikipedia.org/wiki/ICloud) or [Google Photos](https://en.wikipedia.org/wiki/Google_Photos)), +and wants to view them from other devices. In addition to the basic functionality of viewing photos, such services offer a lot of additional features, for example: + +- Photo editing and video effects. +- Creating "memories" and albums. +- Video montage from a series of photos. +- ...and much more. + +Here, as an example, we will use a fairly primitive implementation of such a service. +The main point - is to show a possible scenario of using `WeakRef` and `FinalizationRegistry` together in real life. + +Here is what it looks like: + + + +<br> +On the left side, there is a cloud library of photos (they are displayed as thumbnails). +We can select the images we need and create a collage, by clicking the "Create collage" button on the right side of the page. +Then, the resulting collage can be downloaded as an image. +</br><br> + +To increase page loading speed, it would be reasonable to download and display photo thumbnails in *compressed* quality. +But, to create a collage from selected photos, download and use them in *full-size* quality. + +Below, we can see, that the intrinsic size of the thumbnails is 240x240 pixels. +The size was chosen on purpose to increase loading speed. +Moreover, we do not need full-size photos in preview mode. + + + +<br> +Let's assume, that we need to create a collage of 4 photos: we select them, and then click the "Create collage" button. +At this stage, the already known to us <code>weakRefCache</code> function checks whether the required image is in the cache. +If not, it downloads it from the cloud and puts it in the cache for further use. +This happens for each selected image: +</br><br> + + + +</br> + +Paying attention to the output in the console, you can see, which of the photos were downloaded from the cloud - this is indicated by <span style="background-color:#133159;color:white;font-weight:500">FETCHED_IMAGE</span>. +Since this is the first attempt to create a collage, this means, that at this stage the "weak cache" was still empty, and all the photos were downloaded from the cloud and put in it. + +But, along with the process of downloading images, there is also a process of memory cleanup by the garbage collector. +This means, that the object stored in the cache, which we refer to, using a weak reference, is deleted by the garbage collector. +And our finalizer executes successfully, thereby deleting the key, by which the image was stored in the cache. +<span style="background-color:#901e30;color:white;font-weight:500;">CLEANED_IMAGE</span> notifies us about it: + + + +<br> +Next, we realize that we do not like the resulting collage, and decide to change one of the images and create a new one. +To do this, just deselect the unnecessary image, select another one, and click the "Create collage" button again: +</br><br> + + + +<br> +But this time not all images were downloaded from the network, and one of them was taken from the weak cache: the <span style="background-color:#385950;color:white;font-weight:500;">CACHED_IMAGE</span> message tells us about it. +This means that at the time of collage creation, the garbage collector had not yet deleted our image, and we boldly took it from the cache, +thereby reducing the number of network requests and speeding up the overall time of the collage creation process: +</br><br> + + + +<br> +Let's "play around" a little more, by replacing one of the images again and creating a new collage: +</br><br> + + + +<br> +This time the result is even more impressive. Of the 4 images selected, 3 of them were taken from the weak cache, and only one had to be downloaded from the network. +The reduction in network load was about 75%. Impressive, isn't it? +</br><br> + + + +</br> + +Of course, it is important to remember, that such behavior is not guaranteed, and depends on the specific implementation and operation of the garbage collector. + +Based on this, a completely logical question immediately arises: why do not we use an ordinary cache, where we can manage its entities ourselves, instead of relying on the garbage collector? +That's right, in the vast majority of cases there is no need to use `WeakRef` and `FinalizationRegistry`. + +Here, we simply demonstrated an alternative implementation of similar functionality, using a non-trivial approach with interesting language features. +Still, we cannot rely on this example, if we need a constant and predictable result. + +You can [open this example in the sandbox](sandbox:weakref-finalizationregistry). + +## Summary + +`WeakRef` - designed to create weak references to objects, allowing them to be deleted from memory by the garbage collector if there are no longer strong references to them. +This is beneficial for addressing excessive memory usage and optimizing the utilization of system resources in applications. + +`FinalizationRegistry` - is a tool for registering callbacks, that are executed when objects that are no longer strongly referenced, are destroyed. +This allows releasing resources associated with the object or performing other necessary operations before deleting the object from memory. \ No newline at end of file diff --git a/1-js/99-js-misc/07-weakref-finalizationregistry/google-chrome-developer-tools.png b/1-js/99-js-misc/07-weakref-finalizationregistry/google-chrome-developer-tools.png new file mode 100644 index 000000000..021637342 Binary files /dev/null and b/1-js/99-js-misc/07-weakref-finalizationregistry/google-chrome-developer-tools.png differ diff --git a/1-js/99-js-misc/07-weakref-finalizationregistry/weakref-dom.view/index.css b/1-js/99-js-misc/07-weakref-finalizationregistry/weakref-dom.view/index.css new file mode 100644 index 000000000..f6df812d0 --- /dev/null +++ b/1-js/99-js-misc/07-weakref-finalizationregistry/weakref-dom.view/index.css @@ -0,0 +1,49 @@ +.app { + display: flex; + flex-direction: column; + gap: 16px; +} + +.start-messages { + width: fit-content; +} + +.window { + width: 100%; + border: 2px solid #464154; + overflow: hidden; +} + +.window__header { + position: sticky; + padding: 8px; + display: flex; + justify-content: space-between; + align-items: center; + background-color: #736e7e; +} + +.window__title { + margin: 0; + font-size: 24px; + font-weight: 700; + color: white; + letter-spacing: 1px; +} + +.window__button { + padding: 4px; + background: #4f495c; + outline: none; + border: 2px solid #464154; + color: white; + font-size: 16px; + cursor: pointer; +} + +.window__body { + height: 250px; + padding: 16px; + overflow: scroll; + background-color: #736e7e33; +} \ No newline at end of file diff --git a/1-js/99-js-misc/07-weakref-finalizationregistry/weakref-dom.view/index.html b/1-js/99-js-misc/07-weakref-finalizationregistry/weakref-dom.view/index.html new file mode 100644 index 000000000..7f93af4c7 --- /dev/null +++ b/1-js/99-js-misc/07-weakref-finalizationregistry/weakref-dom.view/index.html @@ -0,0 +1,28 @@ +<!DOCTYPE HTML> +<html lang="en"> + +<head> + <meta charset="utf-8"> + <link rel="stylesheet" href="index.css"> + <title>WeakRef DOM Logger</title> +</head> + +<body> + +<div class="app"> + <button class="start-messages">Start sending messages</button> + <div class="window"> + <div class="window__header"> + <p class="window__title">Messages:</p> + <button class="window__button">Close</button> + </div> + <div class="window__body"> + No messages. + </div> + </div> +</div> + + +<script type="module" src="index.js"></script> +</body> +</html> diff --git a/1-js/99-js-misc/07-weakref-finalizationregistry/weakref-dom.view/index.js b/1-js/99-js-misc/07-weakref-finalizationregistry/weakref-dom.view/index.js new file mode 100644 index 000000000..ea55b4478 --- /dev/null +++ b/1-js/99-js-misc/07-weakref-finalizationregistry/weakref-dom.view/index.js @@ -0,0 +1,24 @@ +const startMessagesBtn = document.querySelector('.start-messages'); // (1) +const closeWindowBtn = document.querySelector('.window__button'); // (2) +const windowElementRef = new WeakRef(document.querySelector(".window__body")); // (3) + +startMessagesBtn.addEventListener('click', () => { // (4) + startMessages(windowElementRef); + startMessagesBtn.disabled = true; +}); + +closeWindowBtn.addEventListener('click', () => document.querySelector(".window__body").remove()); // (5) + + +const startMessages = (element) => { + const timerId = setInterval(() => { // (6) + if (element.deref()) { // (7) + const payload = document.createElement("p"); + payload.textContent = `Message: System status OK: ${new Date().toLocaleTimeString()}`; + element.deref().append(payload); + } else { // (8) + alert("The element has been deleted."); // (9) + clearInterval(timerId); + } + }, 1000); +}; \ No newline at end of file diff --git a/1-js/99-js-misc/07-weakref-finalizationregistry/weakref-finalizationregistry-01.svg b/1-js/99-js-misc/07-weakref-finalizationregistry/weakref-finalizationregistry-01.svg new file mode 100644 index 000000000..2a507dbcd --- /dev/null +++ b/1-js/99-js-misc/07-weakref-finalizationregistry/weakref-finalizationregistry-01.svg @@ -0,0 +1,32 @@ +<?xml version="1.0" encoding="utf-8"?> +<svg viewBox="-38.324 -109.673 191.121 281.642" width="191.121px" height="281.642px" xmlns="http://www.w3.org/2000/svg" xmlns:bx="https://boxy-svg.com"> + <defs> + <style bx:fonts="Open Sans">@import url(https://fonts.googleapis.com/css2?family=Open+Sans%3Aital%2Cwght%400%2C300%3B0%2C400%3B0%2C500%3B0%2C600%3B0%2C700%3B0%2C800%3B1%2C300%3B1%2C400%3B1%2C500%3B1%2C600%3B1%2C700%3B1%2C800&display=swap);</style> + </defs> + <g id="garbage-collection" fill="none" fill-rule="evenodd" stroke="none" stroke-width="1" transform="matrix(1.6492669582366946, 0, 0, 1.6492669582366946, -81.42222595214844, 62.8305015563965)" style=""> + <g id="memory-user-john-admin.svg" transform="matrix(1, 0, 0, 1, -1.759865, 4.803441)"> + <text id="user" style="fill: rgb(175, 110, 36); font-family: 'Open Sans'; font-size: 14px; font-weight: 600; white-space: pre;" transform="matrix(0.735667, 0, 0, 0.753868, 7.56361, 10.722544)" x="31.917" y="-40.191">user</text> + <path id="Rectangle-4" fill="#FBF2EC" stroke="#DBAF88" stroke-width="2" d="M 39.02 4.206 L 125.8 4.206 L 125.8 48.227 L 39.02 48.227 L 39.02 4.206 Z" style=""/> + <text id="name:-"John"" style="fill: rgb(175, 110, 36); font-family: 'Open Sans'; font-size: 9px; font-weight: 500; white-space: pre;" x="54.086" y="34.58">name: "John"</text> + <text id="Object" style="fill: rgb(175, 110, 36); font-family: 'Open Sans'; font-size: 10.5px; font-weight: 500; white-space: pre;" x="64.679" y="23.487">Object</text> + <path id="Rectangle-1" fill="#FBF2EC" stroke="#DBAF88" stroke-width="2" d="M 36.398 -102.608 L 129.398 -102.608 L 129.398 -76.608 L 36.398 -76.608 L 36.398 -102.608 Z"/> + <text id="<global>" style="fill: rgb(175, 110, 36); font-family: 'Open Sans'; font-size: 10.6px; font-weight: 500; white-space: pre;" x="59.233" y="-86.001"> <global></text> + <path d="M 105.999 1.57 L 113.013 13.895 L 98.985 13.895 L 105.999 1.57 Z" style="fill-rule: nonzero; fill: rgb(172, 67, 67);" transform="matrix(1, 0, 0, -1, 0, 0)" bx:shape="triangle 98.985 1.57 14.028 12.325 0.5 0 1@df7d9fa9"/> + <g> + <rect x="105.024" y="-69.436" width="1.99" height="5.009" style="paint-order: stroke; stroke: rgb(53, 81, 138); stroke-width: 0px; fill: rgb(172, 67, 67);"/> + <rect x="105.014" y="-59.02" width="1.99" height="5.009" style="paint-order: stroke; stroke: rgb(53, 81, 138); stroke-width: 0px; fill: rgb(172, 67, 67);"/> + <rect x="105.014" y="-48.877" width="1.99" height="5.009" style="paint-order: stroke; stroke: rgb(53, 81, 138); stroke-width: 0px; fill: rgb(172, 67, 67);"/> + </g> + <g transform="matrix(1, 0, 0, 1.024052, -0.03572, 31.45084)" style=""> + <rect x="105.024" y="-69.051" width="1.99" height="5.009" style="paint-order: stroke; stroke: rgb(53, 81, 138); stroke-width: 0px; fill: rgb(172, 67, 67);"/> + <rect x="105.014" y="-59.02" width="1.99" height="5.009" style="paint-order: stroke; stroke: rgb(53, 81, 138); stroke-width: 0px; fill: rgb(172, 67, 67);"/> + <rect x="105.014" y="-48.877" width="1.99" height="5.009" style="paint-order: stroke; stroke: rgb(53, 81, 138); stroke-width: 0px; fill: rgb(172, 67, 67);"/> + </g> + <g transform="matrix(1, 0, 0, 1, -9.930843, 12.564639)"> + <path d="M 66.874 14.118 L 73.888 26.443 L 59.86 26.443 L 66.874 14.118 Z" style="fill-rule: nonzero; fill: rgb(192, 99, 52);" transform="matrix(1, 0, 0, -1, 0, 0)" bx:shape="triangle 59.86 14.118 14.028 12.325 0.5 0 1@9d4d6098"/> + <rect x="65.833" y="-81.984" width="2.056" height="55.884" style="paint-order: stroke; stroke: rgb(53, 81, 138); stroke-width: 0px; fill: rgb(192, 99, 52);"/> + </g> + <text id="text-1" style="fill: rgb(172, 67, 67); font-family: 'Open Sans'; font-size: 14px; font-weight: 600; white-space: pre;" transform="matrix(0.735667, 0, 0, 0.753868, 87.03299, 10.790039)" x="31.917" y="-40.191">admin</text> + </g> + </g> +</svg> \ No newline at end of file diff --git a/1-js/99-js-misc/07-weakref-finalizationregistry/weakref-finalizationregistry-02.svg b/1-js/99-js-misc/07-weakref-finalizationregistry/weakref-finalizationregistry-02.svg new file mode 100644 index 000000000..6cc199a12 --- /dev/null +++ b/1-js/99-js-misc/07-weakref-finalizationregistry/weakref-finalizationregistry-02.svg @@ -0,0 +1,33 @@ +<?xml version="1.0" encoding="utf-8"?> +<svg viewBox="-56.888 -212.944 192.167 294.011" width="178.044px" height="272.403px" xmlns="http://www.w3.org/2000/svg" xmlns:bx="https://boxy-svg.com"> + <defs> + <style bx:fonts="Open Sans">@import url(https://fonts.googleapis.com/css2?family=Open+Sans%3Aital%2Cwght%400%2C300%3B0%2C400%3B0%2C500%3B0%2C600%3B0%2C700%3B0%2C800%3B1%2C300%3B1%2C400%3B1%2C500%3B1%2C600%3B1%2C700%3B1%2C800&display=swap);</style> + </defs> + <g id="garbage-collection" fill="none" fill-rule="evenodd" stroke="none" stroke-width="1" transform="matrix(1.708757996559143, 0, 0, 1.708757996559143, -109.71231842041016, -35.19435119628906)" style=""> + <g id="memory-user-john-admin.svg" transform="matrix(1, 0, 0, 1, -1.759865, 4.803441)"> + <path id="Rectangle-4" fill="#FBF2EC" stroke="#DBAF88" stroke-width="2" d="M 39.02 4.206 L 125.8 4.206 L 125.8 48.227 L 39.02 48.227 L 39.02 4.206 Z" style=""/> + <path id="Rectangle-1" fill="#FBF2EC" stroke="#DBAF88" stroke-width="2" d="M 36.398 -102.608 L 129.398 -102.608 L 129.398 -76.608 L 36.398 -76.608 L 36.398 -102.608 Z"/> + <text id="<global>" style="fill: rgb(175, 110, 36); font-family: 'Open Sans'; font-size: 10.8px; font-weight: 500; white-space: pre;" x="57.977" y="-85.926"> <global></text> + <path d="M 105.999 1.57 L 113.013 13.895 L 98.985 13.895 L 105.999 1.57 Z" style="fill-rule: nonzero; fill: rgb(172, 67, 67);" transform="matrix(1, 0, 0, -1, 0, 0)" bx:shape="triangle 98.985 1.57 14.028 12.325 0.5 0 1@df7d9fa9"/> + <g style="" transform="matrix(0.7989, 0, 0, 0.7989, 13.076554, 6.083323)"> + <text id="name:-"John"" style="fill: rgb(175, 110, 36); font-family: 'Open Sans'; font-size: 12px; font-weight: 500; white-space: pre;" x="48.212" y="37.89">name: "John"</text> + <text id="Object" style="fill: rgb(175, 110, 36); font-family: 'Open Sans'; font-size: 14px; font-weight: 500; white-space: pre;" x="61.598" y="23.794">Object</text> + </g> + <g> + <rect x="105.024" y="-69.436" width="1.99" height="5.009" style="paint-order: stroke; stroke: rgb(53, 81, 138); stroke-width: 0px; fill: rgb(172, 67, 67);"/> + <rect x="105.014" y="-59.02" width="1.99" height="5.009" style="paint-order: stroke; stroke: rgb(53, 81, 138); stroke-width: 0px; fill: rgb(172, 67, 67);"/> + <rect x="105.014" y="-48.877" width="1.99" height="5.009" style="paint-order: stroke; stroke: rgb(53, 81, 138); stroke-width: 0px; fill: rgb(172, 67, 67);"/> + </g> + <g transform="matrix(1, 0, 0, 1.024052, -0.03572, 31.45084)" style=""> + <rect x="105.024" y="-69.051" width="1.99" height="5.009" style="paint-order: stroke; stroke: rgb(53, 81, 138); stroke-width: 0px; fill: rgb(172, 67, 67);"/> + <rect x="105.014" y="-59.02" width="1.99" height="5.009" style="paint-order: stroke; stroke: rgb(53, 81, 138); stroke-width: 0px; fill: rgb(172, 67, 67);"/> + <rect x="105.014" y="-48.877" width="1.99" height="5.009" style="paint-order: stroke; stroke: rgb(53, 81, 138); stroke-width: 0px; fill: rgb(172, 67, 67);"/> + </g> + <text id="text-1" style="fill: rgb(172, 67, 67); font-family: 'Open Sans'; font-size: 14px; font-weight: 600; white-space: pre;" transform="matrix(0.735667, 0, 0, 0.753868, 86.426659, 10.790039)" x="31.917" y="-40.191">admin</text> + </g> + </g> + <g transform="matrix(0.529145, 0, 0, 0.529145, -21.841589, -83.135681)" style=""> + <path d="M80.179,13.758c-18.342-18.342-48.08-18.342-66.422,0c-18.342,18.341-18.342,48.08,0,66.421 c18.342,18.342,48.08,18.342,66.422,0C98.521,61.837,98.521,32.099,80.179,13.758z M44.144,83.117 c-4.057,0-7.001-3.071-7.001-7.305c0-4.291,2.987-7.404,7.102-7.404c4.123,0,7.001,3.044,7.001,7.404 C51.246,80.113,48.326,83.117,44.144,83.117z M54.73,44.921c-4.15,4.905-5.796,9.117-5.503,14.088l0.097,2.495 c0.011,0.062,0.017,0.125,0.017,0.188c0,0.58-0.47,1.051-1.05,1.051c-0.004-0.001-0.008-0.001-0.012,0h-7.867 c-0.549,0-1.005-0.423-1.047-0.97l-0.202-2.623c-0.676-6.082,1.508-12.218,6.494-18.202c4.319-5.087,6.816-8.865,6.816-13.145 c0-4.829-3.036-7.536-8.548-7.624c-3.403,0-7.242,1.171-9.534,2.913c-0.264,0.201-0.607,0.264-0.925,0.173 s-0.575-0.327-0.693-0.636l-2.42-6.354c-0.169-0.442-0.02-0.943,0.364-1.224c3.538-2.573,9.441-4.235,15.041-4.235 c12.36,0,17.894,7.975,17.894,15.877C63.652,33.765,59.785,38.919,54.73,44.921z" style="fill: rgb(172, 67, 67);"/> + </g> + <rect x="-52.271" y="-25.92" width="160.339" height="87.431" style="fill: rgba(216, 216, 216, 0); stroke: rgb(172, 67, 67); stroke-width: 3px;"/> +</svg> \ No newline at end of file diff --git a/1-js/99-js-misc/07-weakref-finalizationregistry/weakref-finalizationregistry-03.svg b/1-js/99-js-misc/07-weakref-finalizationregistry/weakref-finalizationregistry-03.svg new file mode 100644 index 000000000..949a14f9f --- /dev/null +++ b/1-js/99-js-misc/07-weakref-finalizationregistry/weakref-finalizationregistry-03.svg @@ -0,0 +1,75 @@ +<?xml version="1.0" encoding="utf-8"?> +<svg viewBox="-46.534 -212.944 529.701 256.516" width="540.055px" height="256.516px" xmlns="http://www.w3.org/2000/svg" xmlns:bx="https://boxy-svg.com"> + <defs> + <style bx:fonts="Open Sans">@import url(https://fonts.googleapis.com/css2?family=Open+Sans%3Aital%2Cwght%400%2C300%3B0%2C400%3B0%2C500%3B0%2C600%3B0%2C700%3B0%2C800%3B1%2C300%3B1%2C400%3B1%2C500%3B1%2C600%3B1%2C700%3B1%2C800&display=swap);</style> + </defs> + <g id="memory-user-john-admin.svg" transform="matrix(1.7087579965591428, 0, 0, 1.7087579965591428, -443.0394287109375, -47.16891479492199)" fill="none" fill-rule="evenodd" stroke="none" stroke-width="1"> + <path id="path-1" fill="#FBF2EC" stroke="#DBAF88" stroke-width="2" d="M 234.068 -87.403 L 333.494 -87.403 L 333.494 -57.762 L 234.068 -57.762 L 234.068 -87.403 Z" style=""/> + <path id="path-2" fill="#FBF2EC" stroke="#DBAF88" stroke-width="2" d="M 336.651 -87.403 L 492.549 -87.403 L 492.549 -57.762 L 336.651 -57.762 L 336.651 -87.403 Z" style=""/> + <path id="path-3" fill="#FBF2EC" stroke="#DBAF88" stroke-width="2" d="M 234.068 -53.711 L 333.494 -53.711 L 333.494 -24.07 L 234.068 -24.07 L 234.068 -53.711 Z" style=""/> + <path id="path-4" fill="#FBF2EC" stroke="#DBAF88" stroke-width="2" d="M 336.651 -53.711 L 492.783 -53.711 L 492.783 -24.07 L 336.651 -24.07 L 336.651 -53.711 Z" style=""/> + <path id="path-5" fill="#FBF2EC" stroke="#DBAF88" stroke-width="2" d="M 234.189 -20.462 L 333.615 -20.462 L 333.615 9.179 L 234.189 9.179 L 234.189 -20.462 Z" style=""/> + <path id="path-6" fill="#FBF2EC" stroke="#DBAF88" stroke-width="2" d="M 336.791 -20.462 L 493.057 -20.462 L 493.057 9.179 L 336.791 9.179 L 336.791 -20.462 Z" style=""/> + <path id="path-7" fill="#FBF2EC" stroke="#DBAF88" stroke-width="2" d="M 234.068 13.088 L 333.494 13.088 L 333.494 43.59 L 234.068 43.59 L 234.068 13.088 Z" style=""/> + <path id="path-8" fill="#FBF2EC" stroke="#DBAF88" stroke-width="2" d="M 336.651 13.088 L 493.054 13.088 L 493.054 43.59 L 336.651 43.59 L 336.651 13.088 Z" style=""/> + <text id="<global>" style="fill: rgb(175, 110, 36); font-family: 'Open Sans'; font-size: 11.5772px; font-weight: 600; line-height: 19.9484px; white-space: pre;" transform="matrix(1.374145, 0, 0, 1.314286, -102.41082, 25.040792)" x="263.861" y="-70.535">key</text> + <text id="text-2" style="fill: rgb(175, 110, 36); font-family: 'Open Sans'; font-size: 11.5772px; font-weight: 600; line-height: 19.9484px; white-space: pre;" transform="matrix(1.374145, 0, 0, 1.314286, 13.577469, 25.203112)" x="263.861" y="-70.535">value</text> + <text id="text-3" style="fill: rgb(175, 110, 36); font-family: 'Open Sans'; font-size: 14px; white-space: pre;" transform="matrix(1.071654, 0, 0, 1.142641, -43.57296, 46.390514)" x="263.861" y="-70.535">image-01.jpg</text> + <text id="text-4" style="fill: rgb(175, 110, 36); font-family: 'Open Sans'; font-size: 14px; white-space: pre;" transform="matrix(1.054877, 0, 0, 1.142641, -39.02475, 80.086914)" x="263.861" y="-70.535">image-02.jpg</text> + <text id="text-5" style="fill: rgb(175, 110, 36); font-family: 'Open Sans'; font-size: 14px; white-space: pre;" transform="matrix(1.054877, 0, 0, 1.142641, -39.468063, 113.637062)" x="263.861" y="-70.535">image-03.jpg</text> + <g transform="matrix(0.000041, -1, 1.521843, 0.000133, 289.017426, 2.750529)" style="transform-origin: 105.999px -35.503px;"> + <path d="M 105.537 7.964 L 110.918 13.895 L 100.155 13.895 L 105.537 7.964 Z" style="fill-rule: nonzero; fill: rgb(172, 67, 67);" transform="matrix(1, 0, 0, -1, 0, 0)" bx:shape="triangle 100.155 7.964 10.763 5.931 0.5 0 1@87a4267a"/> + <g> + <rect x="105.024" y="-69.436" width="1.99" height="5.009" style="paint-order: stroke; stroke: rgb(53, 81, 138); stroke-width: 0px; fill: rgb(172, 67, 67);"/> + <rect x="105.014" y="-59.02" width="1.99" height="5.009" style="paint-order: stroke; stroke: rgb(53, 81, 138); stroke-width: 0px; fill: rgb(172, 67, 67);"/> + <rect x="105.014" y="-48.877" width="1.99" height="5.009" style="paint-order: stroke; stroke: rgb(53, 81, 138); stroke-width: 0px; fill: rgb(172, 67, 67);"/> + </g> + <g transform="matrix(1, 0, 0, 1.024052, -0.03572, 31.45084)" style=""> + <rect x="105.024" y="-69.051" width="1.99" height="5.009" style="paint-order: stroke; stroke: rgb(53, 81, 138); stroke-width: 0px; fill: rgb(172, 67, 67);"/> + <rect x="105.014" y="-59.02" width="1.99" height="5.009" style="paint-order: stroke; stroke: rgb(53, 81, 138); stroke-width: 0px; fill: rgb(172, 67, 67);"/> + <rect x="105.014" y="-48.877" width="1.99" height="5.009" style="paint-order: stroke; stroke: rgb(53, 81, 138); stroke-width: 0px; fill: rgb(172, 67, 67);"/> + </g> + </g> + <text id="text-6" style="fill: rgb(172, 67, 67); font-family: 'Open Sans'; font-size: 9.73113px; font-style: italic; white-space: pre;" transform="matrix(1.038937, 0, 0, 1.142641, 69.710487, 42.749538)" x="263.861" y="-70.535">WeakRef object</text> + <g transform="matrix(0.441364, 0, 0, 0.412845, 420.761139, -59.372555)" style=""> + <g> + <path d=" M 58.15 23.65 L 58.15 20 54.25 20 Q 50.95 20 49.35 22.2 47.75 24.4 47.75 27.7 L 47.05 41.45 Q 46.8 43.25 46.1 44.6 45.45 46.05 44.35 47.05 43.9 47.55 43.2 47.75 42.8 47.95 41.85 48.15 L 41.85 51.6 Q 42.95 51.8 43.2 51.9 43.9 52.1 44.35 52.45 45.45 53.25 46.05 54.55 47.65 58.15 47.65 61.65 L 47.65 72.1 Q 47.65 75.7 49.45 77.85 51.25 80 54.1 80 L 58.15 80 58.15 76.25 55.25 76.25 Q 54.1 76.25 53.35 75.65 52.55 74.95 52.2 74 L 51.65 71.75 51.5 69.45 51.35 59.8 Q 51.35 57.55 50.8 55.8 50.15 53.65 49.65 52.8 48.8 51.5 47.9 50.8 47.05 50.1 46.1 49.75 47 49.3 47.8 48.7 48.95 47.85 49.6 46.75 50.1 45.8 50.75 43.7 51.35 41.85 51.35 39.45 L 51.55 28.05 52 25.9 Q 52.35 24.85 53.15 24.2 53.9 23.65 55.25 23.65 L 58.15 23.65 Z" style="fill: rgb(175, 110, 36);"/> + </g> + </g> + <g transform="matrix(-0.441364, 0, 0, -0.412845, 414.750092, -88.816727)" style="transform-origin: 50px 50px;"> + <g> + <path d="M 14.392 23.65 L 14.392 20 L 10.492 20 C 8.292 20 6.659 20.733 5.592 22.2 C 4.525 23.667 3.992 25.5 3.992 27.7 L 3.292 41.45 C 3.125 42.65 2.809 43.7 2.342 44.6 C 1.909 45.567 1.325 46.383 0.592 47.05 C 0.292 47.383 -0.091 47.617 -0.558 47.75 C -0.825 47.883 -1.275 48.017 -1.908 48.15 L -1.908 51.6 C -1.175 51.733 -0.725 51.833 -0.558 51.9 C -0.091 52.033 0.292 52.217 0.592 52.45 C 1.325 52.983 1.892 53.683 2.292 54.55 C 3.359 56.95 3.892 59.317 3.892 61.65 L 3.892 72.1 C 3.892 74.5 4.492 76.417 5.692 77.85 C 6.892 79.283 8.442 80 10.342 80 L 14.392 80 L 14.392 76.25 L 11.492 76.25 C 10.725 76.25 10.092 76.05 9.592 75.65 C 9.059 75.183 8.675 74.633 8.442 74 L 7.892 71.75 L 7.742 69.45 L 7.592 59.8 C 7.592 58.3 7.409 56.967 7.042 55.8 C 6.609 54.367 6.225 53.367 5.892 52.8 C 5.325 51.933 4.742 51.267 4.142 50.8 C 3.575 50.333 2.975 49.983 2.342 49.75 C 2.942 49.45 3.509 49.1 4.042 48.7 C 4.809 48.133 5.409 47.483 5.842 46.75 C 6.175 46.117 6.559 45.1 6.992 43.7 C 7.392 42.467 7.592 41.05 7.592 39.45 L 7.792 28.05 L 8.242 25.9 C 8.475 25.2 8.859 24.633 9.392 24.2 C 9.892 23.833 10.592 23.65 11.492 23.65 L 14.392 23.65 Z" style="fill: rgb(175, 110, 36);"/> + <path d="M 255.632 27.46 L 268.667 47.91 L 242.597 47.91 L 255.632 27.46 Z" style="fill-rule: nonzero; fill: rgb(172, 67, 67);" transform="matrix(-0.000038, 1, 1, 0.000093, 86.522967, -302.258205)" bx:shape="triangle 242.597 27.46 26.07 20.45 0.5 0 1@97f9cc39"/> + <rect x="254.391" y="-239.419" width="4.82" height="17.271" style="paint-order: stroke; stroke: rgb(53, 81, 138); stroke-width: 0px; fill: rgb(172, 67, 67);" transform="matrix(-0.000038, 1, -1, -0.000093, 86.522728, -302.258331)"/> + <rect x="254.367" y="-203.504" width="4.82" height="17.271" style="paint-order: stroke; stroke: rgb(53, 81, 138); stroke-width: 0px; fill: rgb(172, 67, 67);" transform="matrix(-0.000038, 1, -1, -0.000093, 86.522728, -302.258331)"/> + <rect x="254.367" y="-168.53" width="4.82" height="17.271" style="paint-order: stroke; stroke: rgb(53, 81, 138); stroke-width: 0px; fill: rgb(172, 67, 67);" transform="matrix(-0.000038, 1, -1, -0.000093, 86.522728, -302.258331)"/> + <rect x="254.391" y="-243.818" width="4.82" height="17.687" style="paint-order: stroke; stroke: rgb(53, 81, 138); stroke-width: 0px; fill: rgb(172, 67, 67);" transform="matrix(-0.000038, 1, -1, -0.000093, -21.921179, -302.35498)"/> + <rect x="254.367" y="-208.398" width="4.82" height="17.687" style="paint-order: stroke; stroke: rgb(53, 81, 138); stroke-width: 0px; fill: rgb(172, 67, 67);" transform="matrix(-0.000038, 1, -1, -0.000093, -21.921179, -302.35498)"/> + <rect x="254.367" y="-172.584" width="4.82" height="17.687" style="paint-order: stroke; stroke: rgb(53, 81, 138); stroke-width: 0px; fill: rgb(172, 67, 67);" transform="matrix(-0.000038, 1, -1, -0.000093, -21.921179, -302.35498)"/> + <text id="text-7" style="fill: rgb(172, 67, 67); font-family: 'Open Sans'; font-size: 9.73113px; font-style: italic; white-space: pre;" transform="matrix(-2.353923, 0, 0, -2.767724, 945.975708, -228.376572)" x="263.861" y="-70.535">WeakRef object</text> + <path d="M 108.749 -57.365 L 108.749 -61.015 L 104.849 -61.015 C 102.649 -61.015 101.015 -60.281 99.949 -58.815 C 98.882 -57.348 98.349 -55.515 98.349 -53.315 L 97.649 -39.565 C 97.482 -38.365 97.165 -37.315 96.699 -36.415 C 96.265 -35.448 95.682 -34.631 94.949 -33.965 C 94.649 -33.631 94.265 -33.398 93.799 -33.265 C 93.532 -33.131 93.082 -32.998 92.449 -32.865 L 92.449 -29.415 C 93.182 -29.281 93.632 -29.181 93.799 -29.115 C 94.265 -28.981 94.649 -28.798 94.949 -28.565 C 95.682 -28.031 96.249 -27.331 96.649 -26.465 C 97.715 -24.065 98.249 -21.698 98.249 -19.365 L 98.249 -8.915 C 98.249 -6.515 98.849 -4.598 100.049 -3.165 C 101.249 -1.731 102.799 -1.015 104.699 -1.015 L 108.749 -1.015 L 108.749 -4.765 L 105.849 -4.765 C 105.082 -4.765 104.449 -4.965 103.949 -5.365 C 103.415 -5.831 103.032 -6.381 102.799 -7.015 L 102.249 -9.265 L 102.099 -11.565 L 101.949 -21.215 C 101.949 -22.715 101.765 -24.048 101.399 -25.215 C 100.965 -26.648 100.582 -27.648 100.249 -28.215 C 99.682 -29.081 99.099 -29.748 98.499 -30.215 C 97.932 -30.681 97.332 -31.031 96.699 -31.265 C 97.299 -31.565 97.865 -31.915 98.399 -32.315 C 99.165 -32.881 99.765 -33.531 100.199 -34.265 C 100.532 -34.898 100.915 -35.915 101.349 -37.315 C 101.749 -38.548 101.949 -39.965 101.949 -41.565 L 102.149 -52.965 L 102.599 -55.115 C 102.832 -55.815 103.215 -56.381 103.749 -56.815 C 104.249 -57.181 104.949 -57.365 105.849 -57.365 L 108.749 -57.365 Z" style="fill: rgb(175, 110, 36); transform-box: fill-box; transform-origin: 50% 50%;" transform="matrix(-1, 0, 0, -1, -0.000004, -0.000028)"/> + <path d="M 15.325 -57.155 L 15.325 -60.805 L 11.425 -60.805 C 9.225 -60.805 7.591 -60.072 6.525 -58.605 C 5.458 -57.139 4.925 -55.305 4.925 -53.105 L 4.225 -39.355 C 4.058 -38.155 3.741 -37.105 3.275 -36.205 C 2.841 -35.239 2.258 -34.422 1.525 -33.755 C 1.225 -33.422 0.841 -33.189 0.375 -33.055 C 0.108 -32.922 -0.342 -32.789 -0.975 -32.655 L -0.975 -29.205 C -0.242 -29.072 0.208 -28.972 0.375 -28.905 C 0.841 -28.772 1.225 -28.589 1.525 -28.355 C 2.258 -27.822 2.825 -27.122 3.225 -26.255 C 4.291 -23.855 4.825 -21.489 4.825 -19.155 L 4.825 -8.705 C 4.825 -6.305 5.425 -4.389 6.625 -2.955 C 7.825 -1.522 9.375 -0.805 11.275 -0.805 L 15.325 -0.805 L 15.325 -4.555 L 12.425 -4.555 C 11.658 -4.555 11.025 -4.755 10.525 -5.155 C 9.991 -5.622 9.608 -6.172 9.375 -6.805 L 8.825 -9.055 L 8.675 -11.355 L 8.525 -21.005 C 8.525 -22.505 8.341 -23.839 7.975 -25.005 C 7.541 -26.439 7.158 -27.439 6.825 -28.005 C 6.258 -28.872 5.675 -29.539 5.075 -30.005 C 4.508 -30.472 3.908 -30.822 3.275 -31.055 C 3.875 -31.355 4.441 -31.705 4.975 -32.105 C 5.741 -32.672 6.341 -33.322 6.775 -34.055 C 7.108 -34.689 7.491 -35.705 7.925 -37.105 C 8.325 -38.339 8.525 -39.755 8.525 -41.355 L 8.725 -52.755 L 9.175 -54.905 C 9.408 -55.605 9.791 -56.172 10.325 -56.605 C 10.825 -56.972 11.525 -57.155 12.425 -57.155 L 15.325 -57.155 Z" style="fill: rgb(175, 110, 36);"/> + </g> + </g> + </g> + <g transform="matrix(0.3355039954185486, 0, 0, 0.3355039954185486, 67.31304168701172, -387.90008544921875)" style=""> + <g transform="matrix(0.178489, 0, 0, 0.175502, 747.077209, 776.317017)" style=""> + <path d="M 267.184 437.8 C 267.184 466.3 290.384 489.4 318.784 489.4 L 704.984 489.4 C 733.484 489.4 756.584 466.2 756.584 437.8 L 756.584 51.6 C 756.584 23.1 733.384 0 704.984 0 L 318.784 0 C 290.284 0 267.184 23.2 267.184 51.6 C 267.184 51.6 267.184 437.8 267.184 437.8 Z M 704.984 464.9 L 318.784 464.9 C 303.884 464.9 291.684 452.7 291.684 437.8 L 291.684 373.3 L 384.484 280.5 L 463.784 359.8 C 468.584 364.6 476.284 364.6 481.084 359.8 L 624.284 216.6 L 732.084 324.4 L 732.084 437.8 C 732.084 452.7 719.884 464.9 704.984 464.9 Z M 318.784 24.5 L 704.984 24.5 C 719.884 24.5 732.084 36.7 732.084 51.6 L 732.084 289.7 L 632.884 190.6 C 628.084 185.8 620.384 185.8 615.584 190.6 L 472.384 333.8 L 393.084 254.5 C 388.284 249.7 380.584 249.7 375.784 254.5 L 291.684 338.6 L 291.684 51.6 C 291.684 36.7 303.884 24.5 318.784 24.5 Z" style="fill: rgb(175, 110, 36);"/> + <path d="M 418.884 196.1 C 453.284 196.1 481.184 168.1 481.184 133.8 C 481.184 99.5 453.184 71.5 418.884 71.5 C 384.584 71.5 356.584 99.5 356.584 133.8 C 356.584 168.1 384.484 196.1 418.884 196.1 Z M 418.884 96 C 439.784 96 456.684 113 456.684 133.8 C 456.684 154.6 439.684 171.6 418.884 171.6 C 398.084 171.6 381.084 154.6 381.084 133.8 C 381.084 113 397.984 96 418.884 96 Z" style="fill: rgb(175, 110, 36);"/> + </g> + </g> + <path d="M -161.945 -20.71 L -152.75 -5.287 L -171.141 -5.287 L -161.945 -20.71 Z" style="fill-rule: nonzero; fill: rgb(172, 67, 67);" transform="matrix(0.00004100000296602957, -0.9999999999999999, -0.9999999999999999, -0.00008700000762473792, 281.6644897460937, -149.34440612792974)" bx:shape="triangle -171.141 -20.71 18.391 15.423 0.5 0 1@d86e5ee8"/> + <rect x="179.461" y="-180.566" width="3.4" height="13.026" style="paint-order: stroke; stroke: rgb(53, 81, 138); stroke-width: 0px; fill: rgb(172, 67, 67);" transform="matrix(0.00004100000296602957, -0.9999999999999999, 0.9999999999999999, 0.00008700000762473792, 323.0706176757812, 192.94052124023426)"/> + <rect x="179.444" y="-153.479" width="3.4" height="13.026" style="paint-order: stroke; stroke: rgb(53, 81, 138); stroke-width: 0px; fill: rgb(172, 67, 67);" transform="matrix(0.00004100000296602957, -0.9999999999999999, 0.9999999999999999, 0.00008700000762473792, 323.0706176757812, 192.94052124023426)"/> + <rect x="179.444" y="-127.103" width="3.4" height="13.026" style="paint-order: stroke; stroke: rgb(53, 81, 138); stroke-width: 0px; fill: rgb(172, 67, 67);" transform="matrix(0.00004100000296602957, -0.9999999999999999, 0.9999999999999999, 0.00008700000762473792, 323.0706176757812, 192.94052124023426)"/> + <rect x="179.461" y="-183.883" width="3.4" height="13.339" style="paint-order: stroke; stroke: rgb(53, 81, 138); stroke-width: 0px; fill: rgb(172, 67, 67);" transform="matrix(0.00004100000296602957, -0.9999999999999999, 0.9999999999999999, 0.00008700000762473792, 404.85729980468744, 193.00871276855457)"/> + <rect x="179.444" y="-157.171" width="3.4" height="13.339" style="paint-order: stroke; stroke: rgb(53, 81, 138); stroke-width: 0px; fill: rgb(172, 67, 67);" transform="matrix(0.00004100000296602957, -0.9999999999999999, 0.9999999999999999, 0.00008700000762473792, 404.85729980468744, 193.00871276855457)"/> + <rect x="179.444" y="-130.16" width="3.4" height="13.339" style="paint-order: stroke; stroke: rgb(53, 81, 138); stroke-width: 0px; fill: rgb(172, 67, 67);" transform="matrix(0.00004100000296602957, -0.9999999999999999, 0.9999999999999999, 0.00008700000762473792, 404.85729980468744, 193.00871276855457)"/> + <text id="text-8" style="fill: rgb(172, 67, 67); font-family: 'Open Sans'; font-size: 9.73113px; font-style: italic; white-space: pre;" transform="matrix(1.7752919197082517, 0, 0, 1.9524970054626463, -325.1152648925781, 140.82048034667957)" x="263.861" y="-70.535">WeakRef object</text> + <path d="M 318.601 -16.998 L 318.601 -19.573 L 315.66 -19.573 C 314.001 -19.573 312.769 -19.055 311.964 -18.021 C 311.16 -16.986 310.758 -15.693 310.758 -14.141 L 310.23 -4.441 C 310.104 -3.594 309.865 -2.853 309.513 -2.218 C 309.186 -1.536 308.746 -0.96 308.193 -0.49 C 307.967 -0.255 307.678 -0.09 307.326 0.004 C 307.125 0.098 306.786 0.192 306.308 0.286 L 306.308 2.72 C 306.861 2.814 307.2 2.884 307.326 2.931 C 307.678 3.025 307.967 3.155 308.193 3.319 C 308.746 3.696 309.174 4.189 309.475 4.801 C 310.28 6.494 310.682 8.163 310.682 9.81 L 310.682 17.181 C 310.682 18.875 311.135 20.227 312.04 21.238 C 312.945 22.249 314.114 22.755 315.547 22.755 L 318.601 22.755 L 318.601 20.109 L 316.414 20.109 C 315.836 20.109 315.358 19.968 314.981 19.686 C 314.579 19.357 314.29 18.969 314.114 18.522 L 313.699 16.935 L 313.586 15.312 L 313.473 8.504 C 313.473 7.446 313.334 6.506 313.058 5.683 C 312.731 4.671 312.442 3.966 312.191 3.566 C 311.763 2.955 311.323 2.485 310.871 2.155 C 310.443 1.826 309.991 1.579 309.513 1.415 C 309.966 1.203 310.393 0.956 310.795 0.674 C 311.373 0.274 311.826 -0.184 312.153 -0.702 C 312.404 -1.148 312.693 -1.866 313.02 -2.853 C 313.322 -3.723 313.473 -4.723 313.473 -5.852 L 313.623 -13.894 L 313.963 -15.41 C 314.139 -15.904 314.428 -16.304 314.83 -16.61 C 315.207 -16.868 315.735 -16.998 316.414 -16.998 L 318.601 -16.998 Z" style="fill: rgb(175, 110, 36);" transform="matrix(0.9999999999999999, 0, 0, 0.9999999999999999, 0, -1.1368683772161603e-13)"/> + <path d="M 389.058 -17.145 L 389.058 -19.72 L 386.117 -19.72 C 384.458 -19.72 383.226 -19.203 382.421 -18.168 C 381.617 -17.134 381.215 -15.84 381.215 -14.288 L 380.687 -4.588 C 380.561 -3.742 380.322 -3.001 379.97 -2.366 C 379.644 -1.684 379.204 -1.108 378.651 -0.638 C 378.424 -0.403 378.135 -0.238 377.783 -0.144 C 377.582 -0.05 377.243 0.044 376.765 0.138 L 376.765 2.572 C 377.318 2.666 377.658 2.737 377.783 2.784 C 378.135 2.878 378.424 3.007 378.651 3.172 C 379.204 3.548 379.631 4.042 379.933 4.653 C 380.737 6.346 381.139 8.016 381.139 9.662 L 381.139 17.034 C 381.139 18.727 381.592 20.079 382.497 21.09 C 383.402 22.101 384.571 22.607 386.004 22.607 L 389.058 22.607 L 389.058 19.961 L 386.871 19.961 C 386.293 19.961 385.815 19.82 385.438 19.538 C 385.036 19.209 384.747 18.821 384.571 18.374 L 384.156 16.787 L 384.043 15.164 L 383.93 8.357 C 383.93 7.299 383.792 6.358 383.515 5.535 C 383.188 4.524 382.899 3.818 382.648 3.419 C 382.22 2.807 381.78 2.337 381.328 2.008 C 380.901 1.679 380.448 1.432 379.97 1.267 C 380.423 1.055 380.85 0.808 381.253 0.526 C 381.831 0.127 382.283 -0.332 382.61 -0.849 C 382.861 -1.296 383.151 -2.013 383.477 -3.001 C 383.779 -3.871 383.93 -4.87 383.93 -5.999 L 384.081 -14.041 L 384.42 -15.558 C 384.596 -16.052 384.885 -16.452 385.287 -16.757 C 385.664 -17.016 386.192 -17.145 386.871 -17.145 L 389.058 -17.145 Z" style="fill: rgb(175, 110, 36); transform-origin: 382.912px 1.4435px;" transform="matrix(-1, 0, 0, -1, 0, -0.000015020371)"/> + <path d="M 333.236 -45.236 C 333.236 -43.558 334.625 -42.198 336.326 -42.198 L 359.453 -42.198 C 361.16 -42.198 362.543 -43.564 362.543 -45.236 L 362.543 -67.977 C 362.543 -69.655 361.154 -71.015 359.453 -71.015 L 336.326 -71.015 C 334.619 -71.015 333.236 -69.649 333.236 -67.977 C 333.236 -67.977 333.236 -45.236 333.236 -45.236 Z M 359.453 -43.641 L 336.326 -43.641 C 335.434 -43.641 334.703 -44.359 334.703 -45.236 L 334.703 -49.034 L 340.26 -54.499 L 345.009 -49.829 C 345.297 -49.547 345.758 -49.547 346.045 -49.829 L 354.62 -58.261 L 361.076 -51.914 L 361.076 -45.236 C 361.076 -44.359 360.345 -43.641 359.453 -43.641 Z M 336.326 -69.572 L 359.453 -69.572 C 360.345 -69.572 361.076 -68.854 361.076 -67.977 L 361.076 -53.957 L 355.135 -59.792 C 354.848 -60.075 354.387 -60.075 354.099 -59.792 L 345.524 -51.36 L 340.775 -56.029 C 340.488 -56.312 340.027 -56.312 339.739 -56.029 L 334.703 -51.077 L 334.703 -67.977 C 334.703 -68.854 335.434 -69.572 336.326 -69.572 Z" style="fill: rgb(175, 110, 36);" transform="matrix(0.9999999999999999, 0, 0, 0.9999999999999999, 0, -1.1368683772161603e-13)"/> + <path d="M 341.32 -59.468 C 343.38 -59.468 345.051 -61.117 345.051 -63.137 C 345.051 -65.156 343.374 -66.805 341.32 -66.805 C 339.266 -66.805 337.59 -65.156 337.59 -63.137 C 337.59 -61.117 339.26 -59.468 341.32 -59.468 Z M 341.32 -65.362 C 342.572 -65.362 343.584 -64.361 343.584 -63.137 C 343.584 -61.912 342.566 -60.911 341.32 -60.911 C 340.075 -60.911 339.057 -61.912 339.057 -63.137 C 339.057 -64.361 340.069 -65.362 341.32 -65.362 Z" style="fill: rgb(175, 110, 36);" transform="matrix(0.9999999999999999, 0, 0, 0.9999999999999999, 0, -1.1368683772161603e-13)"/> + <path d="M 333.305 13.146 C 333.305 14.824 334.694 16.184 336.395 16.184 L 359.522 16.184 C 361.229 16.184 362.612 14.818 362.612 13.146 L 362.612 -9.594 C 362.612 -11.272 361.223 -12.633 359.522 -12.633 L 336.395 -12.633 C 334.688 -12.633 333.305 -11.267 333.305 -9.594 C 333.305 -9.594 333.305 13.146 333.305 13.146 Z M 359.522 14.742 L 336.395 14.742 C 335.503 14.742 334.772 14.023 334.772 13.146 L 334.772 9.348 L 340.329 3.884 L 345.078 8.553 C 345.366 8.836 345.827 8.836 346.114 8.553 L 354.69 0.121 L 361.145 6.469 L 361.145 13.146 C 361.145 14.023 360.415 14.742 359.522 14.742 Z M 336.395 -11.19 L 359.522 -11.19 C 360.415 -11.19 361.145 -10.472 361.145 -9.594 L 361.145 4.426 L 355.205 -1.41 C 354.917 -1.692 354.456 -1.692 354.169 -1.41 L 345.593 7.022 L 340.844 2.353 C 340.557 2.07 340.096 2.07 339.809 2.353 L 334.772 7.305 L 334.772 -9.594 C 334.772 -10.472 335.503 -11.19 336.395 -11.19 Z" style="fill: rgb(175, 110, 36);" transform="matrix(0.9999999999999999, 0, 0, 0.9999999999999999, 0, -1.1368683772161603e-13)"/> + <path d="M 341.39 -1.086 C 343.45 -1.086 345.12 -2.735 345.12 -4.754 C 345.12 -6.774 343.444 -8.423 341.39 -8.423 C 339.335 -8.423 337.659 -6.774 337.659 -4.754 C 337.659 -2.735 339.329 -1.086 341.39 -1.086 Z M 341.39 -6.98 C 342.641 -6.98 343.653 -5.979 343.653 -4.754 C 343.653 -3.529 342.635 -2.528 341.39 -2.528 C 340.144 -2.528 339.126 -3.529 339.126 -4.754 C 339.126 -5.979 340.138 -6.98 341.39 -6.98 Z" style="fill: rgb(175, 110, 36);" transform="matrix(0.9999999999999999, 0, 0, 0.9999999999999999, 0, -1.1368683772161603e-13)"/> +</svg> \ No newline at end of file diff --git a/1-js/99-js-misc/07-weakref-finalizationregistry/weakref-finalizationregistry-04.svg b/1-js/99-js-misc/07-weakref-finalizationregistry/weakref-finalizationregistry-04.svg new file mode 100644 index 000000000..1177d6580 --- /dev/null +++ b/1-js/99-js-misc/07-weakref-finalizationregistry/weakref-finalizationregistry-04.svg @@ -0,0 +1,77 @@ +<?xml version="1.0" encoding="utf-8"?> +<svg viewBox="-44.887 -212.944 528.054 256.516" width="540.055px" height="256.516px" xmlns="http://www.w3.org/2000/svg" xmlns:bx="https://boxy-svg.com"> + <defs> + <style bx:fonts="Open Sans">@import url(https://fonts.googleapis.com/css2?family=Open+Sans%3Aital%2Cwght%400%2C300%3B0%2C400%3B0%2C500%3B0%2C600%3B0%2C700%3B0%2C800%3B1%2C300%3B1%2C400%3B1%2C500%3B1%2C600%3B1%2C700%3B1%2C800&display=swap);</style> + </defs> + <g id="memory-user-john-admin.svg" transform="matrix(1.708757996559143, 0, 0, 1.708757996559143, -443.0394287109375, -47.168914794921875)" fill="none" fill-rule="evenodd" stroke="none" stroke-width="1"> + <text id="name:-"John"" fill="#AF6E24" font-family="PTMono-Regular, PT Mono" font-size="12" font-weight="normal" style="white-space: pre;" x="19.382" y="-93.28"><tspan x="49.382" y="36.72" style="font-size: 12px; word-spacing: 0px;">name: "John"</tspan></text> + <text id="Object" fill="#AF6E24" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal" style="white-space: pre;" x="17.598" y="-86.206"><tspan x="61.598" y="23.794" style="font-size: 14px; word-spacing: 0px;">Object</tspan></text> + <path id="Rectangle-1" fill="#FBF2EC" stroke="#DBAF88" stroke-width="2" d="M 40.047 -102 L 133.047 -102 L 133.047 -76 L 40.047 -76 L 40.047 -102 Z"/> + <text id="text-1" style="fill: rgb(172, 67, 67); font-family: PTMono-Regular, 'PT Mono'; font-size: 14px; white-space: pre;" transform="matrix(0.735667, 0, 0, 0.753868, 86.426659, 10.790039)" x="31.917" y="-40.191">admin</text> + <path id="path-1" fill="#FBF2EC" stroke="#DBAF88" stroke-width="2" d="M 234.068 -87.403 L 333.494 -87.403 L 333.494 -57.762 L 234.068 -57.762 L 234.068 -87.403 Z" style=""/> + <path id="path-2" fill="#FBF2EC" stroke="#DBAF88" stroke-width="2" d="M 336.651 -87.403 L 492.549 -87.403 L 492.549 -57.762 L 336.651 -57.762 L 336.651 -87.403 Z" style=""/> + <path id="path-3" fill="#FBF2EC" stroke="#DBAF88" stroke-width="2" d="M 234.068 -53.711 L 333.494 -53.711 L 333.494 -24.07 L 234.068 -24.07 L 234.068 -53.711 Z" style=""/> + <path id="path-4" fill="#FBF2EC" stroke="#DBAF88" stroke-width="2" d="M 336.651 -53.711 L 492.783 -53.711 L 492.783 -24.07 L 336.651 -24.07 L 336.651 -53.711 Z" style=""/> + <path id="path-5" fill="#FBF2EC" stroke="#DBAF88" stroke-width="2" d="M 234.189 -20.462 L 333.615 -20.462 L 333.615 9.179 L 234.189 9.179 L 234.189 -20.462 Z" style=""/> + <path id="path-6" fill="#FBF2EC" stroke="#DBAF88" stroke-width="2" d="M 336.791 -20.462 L 493.057 -20.462 L 493.057 9.179 L 336.791 9.179 L 336.791 -20.462 Z" style=""/> + <path id="path-7" fill="#FBF2EC" stroke="#DBAF88" stroke-width="2" d="M 234.068 13.088 L 333.494 13.088 L 333.494 43.59 L 234.068 43.59 L 234.068 13.088 Z" style=""/> + <path id="path-8" fill="#FBF2EC" stroke="#DBAF88" stroke-width="2" d="M 336.651 13.088 L 493.054 13.088 L 493.054 43.59 L 336.651 43.59 L 336.651 13.088 Z" style=""/> + <text id="<global>" style="fill: rgb(175, 110, 36); font-family: 'Open Sans'; font-size: 11.5772px; font-weight: 600; line-height: 19.9484px; white-space: pre;" transform="matrix(1.374145, 0, 0, 1.314286, -102.41082, 25.040792)" x="263.861" y="-70.535">key</text> + <text id="text-2" style="fill: rgb(175, 110, 36); font-family: 'Open Sans'; font-size: 11.5772px; font-weight: 600; line-height: 19.9484px; white-space: pre;" transform="matrix(1.374145, 0, 0, 1.314286, 13.577469, 25.203112)" x="263.861" y="-70.535">value</text> + <text id="text-3" style="fill: rgb(175, 110, 36); font-family: 'Open Sans'; font-size: 14px; white-space: pre;" transform="matrix(1.071654, 0, 0, 1.142641, -43.57296, 46.390514)" x="263.861" y="-70.535">image-01.jpg</text> + <text id="text-4" style="fill: rgb(175, 110, 36); font-family: 'Open Sans'; font-size: 14px; white-space: pre;" transform="matrix(1.054877, 0, 0, 1.142641, -39.02475, 80.086914)" x="263.861" y="-70.535">image-02.jpg</text> + <text id="text-5" style="fill: rgb(175, 110, 36); font-family: 'Open Sans'; font-size: 14px; white-space: pre;" transform="matrix(1.054877, 0, 0, 1.142641, -39.468063, 113.637062)" x="263.861" y="-70.535">image-03.jpg</text> + <g transform="matrix(0.000041, -1, 1.521843, 0.000133, 289.017426, 2.750529)" style="transform-origin: 105.999px -35.503px;"> + <path d="M 105.537 7.964 L 110.918 13.895 L 100.155 13.895 L 105.537 7.964 Z" style="fill-rule: nonzero; fill: rgb(172, 67, 67);" transform="matrix(1, 0, 0, -1, 0, 0)" bx:shape="triangle 100.155 7.964 10.763 5.931 0.5 0 1@87a4267a"/> + <g> + <rect x="105.024" y="-69.436" width="1.99" height="5.009" style="paint-order: stroke; stroke: rgb(53, 81, 138); stroke-width: 0px; fill: rgb(172, 67, 67);"/> + <rect x="105.014" y="-59.02" width="1.99" height="5.009" style="paint-order: stroke; stroke: rgb(53, 81, 138); stroke-width: 0px; fill: rgb(172, 67, 67);"/> + <rect x="105.014" y="-48.877" width="1.99" height="5.009" style="paint-order: stroke; stroke: rgb(53, 81, 138); stroke-width: 0px; fill: rgb(172, 67, 67);"/> + </g> + <g transform="matrix(1, 0, 0, 1.024052, -0.03572, 31.45084)" style=""> + <rect x="105.024" y="-69.051" width="1.99" height="5.009" style="paint-order: stroke; stroke: rgb(53, 81, 138); stroke-width: 0px; fill: rgb(172, 67, 67);"/> + <rect x="105.014" y="-59.02" width="1.99" height="5.009" style="paint-order: stroke; stroke: rgb(53, 81, 138); stroke-width: 0px; fill: rgb(172, 67, 67);"/> + <rect x="105.014" y="-48.877" width="1.99" height="5.009" style="paint-order: stroke; stroke: rgb(53, 81, 138); stroke-width: 0px; fill: rgb(172, 67, 67);"/> + </g> + </g> + <text id="text-6" style="fill: rgb(172, 67, 67); font-family: 'Open Sans'; font-size: 9.73113px; font-style: italic; white-space: pre;" transform="matrix(1.038937, 0, 0, 1.142641, 69.710487, 42.749538)" x="263.861" y="-70.535">WeakRef object</text> + <g transform="matrix(0.441364, 0, 0, 0.412845, 420.761139, -59.372555)" style=""> + <g> + <path d=" M 58.15 23.65 L 58.15 20 54.25 20 Q 50.95 20 49.35 22.2 47.75 24.4 47.75 27.7 L 47.05 41.45 Q 46.8 43.25 46.1 44.6 45.45 46.05 44.35 47.05 43.9 47.55 43.2 47.75 42.8 47.95 41.85 48.15 L 41.85 51.6 Q 42.95 51.8 43.2 51.9 43.9 52.1 44.35 52.45 45.45 53.25 46.05 54.55 47.65 58.15 47.65 61.65 L 47.65 72.1 Q 47.65 75.7 49.45 77.85 51.25 80 54.1 80 L 58.15 80 58.15 76.25 55.25 76.25 Q 54.1 76.25 53.35 75.65 52.55 74.95 52.2 74 L 51.65 71.75 51.5 69.45 51.35 59.8 Q 51.35 57.55 50.8 55.8 50.15 53.65 49.65 52.8 48.8 51.5 47.9 50.8 47.05 50.1 46.1 49.75 47 49.3 47.8 48.7 48.95 47.85 49.6 46.75 50.1 45.8 50.75 43.7 51.35 41.85 51.35 39.45 L 51.55 28.05 52 25.9 Q 52.35 24.85 53.15 24.2 53.9 23.65 55.25 23.65 L 58.15 23.65 Z" style="fill: rgb(175, 110, 36);"/> + </g> + </g> + <g transform="matrix(-0.441364, 0, 0, -0.412845, 414.750092, -88.816727)" style="transform-origin: 50px 50px;"> + <g> + <path d="M 14.392 23.65 L 14.392 20 L 10.492 20 C 8.292 20 6.659 20.733 5.592 22.2 C 4.525 23.667 3.992 25.5 3.992 27.7 L 3.292 41.45 C 3.125 42.65 2.809 43.7 2.342 44.6 C 1.909 45.567 1.325 46.383 0.592 47.05 C 0.292 47.383 -0.091 47.617 -0.558 47.75 C -0.825 47.883 -1.275 48.017 -1.908 48.15 L -1.908 51.6 C -1.175 51.733 -0.725 51.833 -0.558 51.9 C -0.091 52.033 0.292 52.217 0.592 52.45 C 1.325 52.983 1.892 53.683 2.292 54.55 C 3.359 56.95 3.892 59.317 3.892 61.65 L 3.892 72.1 C 3.892 74.5 4.492 76.417 5.692 77.85 C 6.892 79.283 8.442 80 10.342 80 L 14.392 80 L 14.392 76.25 L 11.492 76.25 C 10.725 76.25 10.092 76.05 9.592 75.65 C 9.059 75.183 8.675 74.633 8.442 74 L 7.892 71.75 L 7.742 69.45 L 7.592 59.8 C 7.592 58.3 7.409 56.967 7.042 55.8 C 6.609 54.367 6.225 53.367 5.892 52.8 C 5.325 51.933 4.742 51.267 4.142 50.8 C 3.575 50.333 2.975 49.983 2.342 49.75 C 2.942 49.45 3.509 49.1 4.042 48.7 C 4.809 48.133 5.409 47.483 5.842 46.75 C 6.175 46.117 6.559 45.1 6.992 43.7 C 7.392 42.467 7.592 41.05 7.592 39.45 L 7.792 28.05 L 8.242 25.9 C 8.475 25.2 8.859 24.633 9.392 24.2 C 9.892 23.833 10.592 23.65 11.492 23.65 L 14.392 23.65 Z" style="fill: rgb(175, 110, 36);"/> + <path d="M 255.632 27.46 L 268.667 47.91 L 242.597 47.91 L 255.632 27.46 Z" style="fill-rule: nonzero; fill: rgb(172, 67, 67);" transform="matrix(-0.000038, 1, 1, 0.000093, 86.522967, -302.258205)" bx:shape="triangle 242.597 27.46 26.07 20.45 0.5 0 1@97f9cc39"/> + <rect x="254.391" y="-239.419" width="4.82" height="17.271" style="paint-order: stroke; stroke: rgb(53, 81, 138); stroke-width: 0px; fill: rgb(172, 67, 67);" transform="matrix(-0.000038, 1, -1, -0.000093, 86.522728, -302.258331)"/> + <rect x="254.367" y="-203.504" width="4.82" height="17.271" style="paint-order: stroke; stroke: rgb(53, 81, 138); stroke-width: 0px; fill: rgb(172, 67, 67);" transform="matrix(-0.000038, 1, -1, -0.000093, 86.522728, -302.258331)"/> + <rect x="254.367" y="-168.53" width="4.82" height="17.271" style="paint-order: stroke; stroke: rgb(53, 81, 138); stroke-width: 0px; fill: rgb(172, 67, 67);" transform="matrix(-0.000038, 1, -1, -0.000093, 86.522728, -302.258331)"/> + <rect x="254.391" y="-243.818" width="4.82" height="17.687" style="paint-order: stroke; stroke: rgb(53, 81, 138); stroke-width: 0px; fill: rgb(172, 67, 67);" transform="matrix(-0.000038, 1, -1, -0.000093, -21.921179, -302.35498)"/> + <rect x="254.367" y="-208.398" width="4.82" height="17.687" style="paint-order: stroke; stroke: rgb(53, 81, 138); stroke-width: 0px; fill: rgb(172, 67, 67);" transform="matrix(-0.000038, 1, -1, -0.000093, -21.921179, -302.35498)"/> + <rect x="254.367" y="-172.584" width="4.82" height="17.687" style="paint-order: stroke; stroke: rgb(53, 81, 138); stroke-width: 0px; fill: rgb(172, 67, 67);" transform="matrix(-0.000038, 1, -1, -0.000093, -21.921179, -302.35498)"/> + <text id="text-7" style="fill: rgb(172, 67, 67); font-family: 'Open Sans'; font-size: 9.73113px; font-style: italic; white-space: pre;" transform="matrix(-2.353923, 0, 0, -2.767724, 945.975708, -228.376572)" x="263.861" y="-70.535">WeakRef object</text> + <path d="M 108.749 -57.365 L 108.749 -61.015 L 104.849 -61.015 C 102.649 -61.015 101.015 -60.281 99.949 -58.815 C 98.882 -57.348 98.349 -55.515 98.349 -53.315 L 97.649 -39.565 C 97.482 -38.365 97.165 -37.315 96.699 -36.415 C 96.265 -35.448 95.682 -34.631 94.949 -33.965 C 94.649 -33.631 94.265 -33.398 93.799 -33.265 C 93.532 -33.131 93.082 -32.998 92.449 -32.865 L 92.449 -29.415 C 93.182 -29.281 93.632 -29.181 93.799 -29.115 C 94.265 -28.981 94.649 -28.798 94.949 -28.565 C 95.682 -28.031 96.249 -27.331 96.649 -26.465 C 97.715 -24.065 98.249 -21.698 98.249 -19.365 L 98.249 -8.915 C 98.249 -6.515 98.849 -4.598 100.049 -3.165 C 101.249 -1.731 102.799 -1.015 104.699 -1.015 L 108.749 -1.015 L 108.749 -4.765 L 105.849 -4.765 C 105.082 -4.765 104.449 -4.965 103.949 -5.365 C 103.415 -5.831 103.032 -6.381 102.799 -7.015 L 102.249 -9.265 L 102.099 -11.565 L 101.949 -21.215 C 101.949 -22.715 101.765 -24.048 101.399 -25.215 C 100.965 -26.648 100.582 -27.648 100.249 -28.215 C 99.682 -29.081 99.099 -29.748 98.499 -30.215 C 97.932 -30.681 97.332 -31.031 96.699 -31.265 C 97.299 -31.565 97.865 -31.915 98.399 -32.315 C 99.165 -32.881 99.765 -33.531 100.199 -34.265 C 100.532 -34.898 100.915 -35.915 101.349 -37.315 C 101.749 -38.548 101.949 -39.965 101.949 -41.565 L 102.149 -52.965 L 102.599 -55.115 C 102.832 -55.815 103.215 -56.381 103.749 -56.815 C 104.249 -57.181 104.949 -57.365 105.849 -57.365 L 108.749 -57.365 Z" style="fill: rgb(175, 110, 36); transform-box: fill-box; transform-origin: 50% 50%;" transform="matrix(-1, 0, 0, -1, -0.000004, -0.000028)"/> + <path d="M 15.325 -57.155 L 15.325 -60.805 L 11.425 -60.805 C 9.225 -60.805 7.591 -60.072 6.525 -58.605 C 5.458 -57.139 4.925 -55.305 4.925 -53.105 L 4.225 -39.355 C 4.058 -38.155 3.741 -37.105 3.275 -36.205 C 2.841 -35.239 2.258 -34.422 1.525 -33.755 C 1.225 -33.422 0.841 -33.189 0.375 -33.055 C 0.108 -32.922 -0.342 -32.789 -0.975 -32.655 L -0.975 -29.205 C -0.242 -29.072 0.208 -28.972 0.375 -28.905 C 0.841 -28.772 1.225 -28.589 1.525 -28.355 C 2.258 -27.822 2.825 -27.122 3.225 -26.255 C 4.291 -23.855 4.825 -21.489 4.825 -19.155 L 4.825 -8.705 C 4.825 -6.305 5.425 -4.389 6.625 -2.955 C 7.825 -1.522 9.375 -0.805 11.275 -0.805 L 15.325 -0.805 L 15.325 -4.555 L 12.425 -4.555 C 11.658 -4.555 11.025 -4.755 10.525 -5.155 C 9.991 -5.622 9.608 -6.172 9.375 -6.805 L 8.825 -9.055 L 8.675 -11.355 L 8.525 -21.005 C 8.525 -22.505 8.341 -23.839 7.975 -25.005 C 7.541 -26.439 7.158 -27.439 6.825 -28.005 C 6.258 -28.872 5.675 -29.539 5.075 -30.005 C 4.508 -30.472 3.908 -30.822 3.275 -31.055 C 3.875 -31.355 4.441 -31.705 4.975 -32.105 C 5.741 -32.672 6.341 -33.322 6.775 -34.055 C 7.108 -34.689 7.491 -35.705 7.925 -37.105 C 8.325 -38.339 8.525 -39.755 8.525 -41.355 L 8.725 -52.755 L 9.175 -54.905 C 9.408 -55.605 9.791 -56.172 10.325 -56.605 C 10.825 -56.972 11.525 -57.155 12.425 -57.155 L 15.325 -57.155 Z" style="fill: rgb(175, 110, 36);"/> + </g> + </g> + <text id="text-9" style="fill: rgb(175, 110, 36); font-family: 'Open Sans'; font-size: 4.89804px; font-weight: 700; line-height: 19.9484px; white-space: pre;" transform="matrix(1.374145, 0, 0, 1.314286, 83.283821, 89.215279)" x="263.861" y="-70.535">undefined</text> + <text id="text-10" style="fill: rgb(175, 110, 36); font-family: 'Open Sans'; font-size: 4.89804px; font-weight: 700; line-height: 19.9484px; white-space: pre;" transform="matrix(1.374145, 0, 0, 1.314286, 82.957924, 122.90126)" x="263.861" y="-70.535">undefined</text> + </g> + <g transform="matrix(0.3355039954185486, 0, 0, 0.3355039954185486, 67.31304168701172, -387.90008544921875)" style=""> + <g transform="matrix(0.178489, 0, 0, 0.175502, 747.077209, 776.317017)" style=""> + <path d="M 267.184 437.8 C 267.184 466.3 290.384 489.4 318.784 489.4 L 704.984 489.4 C 733.484 489.4 756.584 466.2 756.584 437.8 L 756.584 51.6 C 756.584 23.1 733.384 0 704.984 0 L 318.784 0 C 290.284 0 267.184 23.2 267.184 51.6 C 267.184 51.6 267.184 437.8 267.184 437.8 Z M 704.984 464.9 L 318.784 464.9 C 303.884 464.9 291.684 452.7 291.684 437.8 L 291.684 373.3 L 384.484 280.5 L 463.784 359.8 C 468.584 364.6 476.284 364.6 481.084 359.8 L 624.284 216.6 L 732.084 324.4 L 732.084 437.8 C 732.084 452.7 719.884 464.9 704.984 464.9 Z M 318.784 24.5 L 704.984 24.5 C 719.884 24.5 732.084 36.7 732.084 51.6 L 732.084 289.7 L 632.884 190.6 C 628.084 185.8 620.384 185.8 615.584 190.6 L 472.384 333.8 L 393.084 254.5 C 388.284 249.7 380.584 249.7 375.784 254.5 L 291.684 338.6 L 291.684 51.6 C 291.684 36.7 303.884 24.5 318.784 24.5 Z" style="fill: rgb(175, 110, 36);"/> + <path d="M 418.884 196.1 C 453.284 196.1 481.184 168.1 481.184 133.8 C 481.184 99.5 453.184 71.5 418.884 71.5 C 384.584 71.5 356.584 99.5 356.584 133.8 C 356.584 168.1 384.484 196.1 418.884 196.1 Z M 418.884 96 C 439.784 96 456.684 113 456.684 133.8 C 456.684 154.6 439.684 171.6 418.884 171.6 C 398.084 171.6 381.084 154.6 381.084 133.8 C 381.084 113 397.984 96 418.884 96 Z" style="fill: rgb(175, 110, 36);"/> + </g> + </g> + <path d="M -161.945 -20.71 L -152.75 -5.287 L -171.141 -5.287 L -161.945 -20.71 Z" style="fill-rule: nonzero; fill: rgb(172, 67, 67);" transform="matrix(0.00004100000296602957, -1, -1, -0.00008700000762473792, 281.66448974609375, -149.3444061279297)" bx:shape="triangle -171.141 -20.71 18.391 15.423 0.5 0 1@d86e5ee8"/> + <rect x="179.461" y="-180.566" width="3.4" height="13.026" style="paint-order: stroke; stroke: rgb(53, 81, 138); stroke-width: 0px; fill: rgb(172, 67, 67);" transform="matrix(0.00004100000296602957, -1, 1, 0.00008700000762473792, 323.07061767578125, 192.94052124023438)"/> + <rect x="179.444" y="-153.479" width="3.4" height="13.026" style="paint-order: stroke; stroke: rgb(53, 81, 138); stroke-width: 0px; fill: rgb(172, 67, 67);" transform="matrix(0.00004100000296602957, -1, 1, 0.00008700000762473792, 323.07061767578125, 192.94052124023438)"/> + <rect x="179.444" y="-127.103" width="3.4" height="13.026" style="paint-order: stroke; stroke: rgb(53, 81, 138); stroke-width: 0px; fill: rgb(172, 67, 67);" transform="matrix(0.00004100000296602957, -1, 1, 0.00008700000762473792, 323.07061767578125, 192.94052124023438)"/> + <rect x="179.461" y="-183.883" width="3.4" height="13.339" style="paint-order: stroke; stroke: rgb(53, 81, 138); stroke-width: 0px; fill: rgb(172, 67, 67);" transform="matrix(0.00004100000296602957, -1, 1, 0.00008700000762473792, 404.8572998046875, 193.0087127685547)"/> + <rect x="179.444" y="-157.171" width="3.4" height="13.339" style="paint-order: stroke; stroke: rgb(53, 81, 138); stroke-width: 0px; fill: rgb(172, 67, 67);" transform="matrix(0.00004100000296602957, -1, 1, 0.00008700000762473792, 404.8572998046875, 193.0087127685547)"/> + <rect x="179.444" y="-130.16" width="3.4" height="13.339" style="paint-order: stroke; stroke: rgb(53, 81, 138); stroke-width: 0px; fill: rgb(172, 67, 67);" transform="matrix(0.00004100000296602957, -1, 1, 0.00008700000762473792, 404.8572998046875, 193.0087127685547)"/> + <text id="text-8" style="fill: rgb(172, 67, 67); font-family: 'Open Sans'; font-size: 9.73113px; font-style: italic; white-space: pre;" transform="matrix(1.775291919708252, 0, 0, 1.9524970054626465, -325.1152648925781, 140.8204803466797)" x="263.861" y="-70.535">WeakRef object</text> + <path d="M 318.601 -16.998 L 318.601 -19.573 L 315.66 -19.573 C 314.001 -19.573 312.769 -19.055 311.964 -18.021 C 311.16 -16.986 310.758 -15.693 310.758 -14.141 L 310.23 -4.441 C 310.104 -3.594 309.865 -2.853 309.513 -2.218 C 309.186 -1.536 308.746 -0.96 308.193 -0.49 C 307.967 -0.255 307.678 -0.09 307.326 0.004 C 307.125 0.098 306.786 0.192 306.308 0.286 L 306.308 2.72 C 306.861 2.814 307.2 2.884 307.326 2.931 C 307.678 3.025 307.967 3.155 308.193 3.319 C 308.746 3.696 309.174 4.189 309.475 4.801 C 310.28 6.494 310.682 8.163 310.682 9.81 L 310.682 17.181 C 310.682 18.875 311.135 20.227 312.04 21.238 C 312.945 22.249 314.114 22.755 315.547 22.755 L 318.601 22.755 L 318.601 20.109 L 316.414 20.109 C 315.836 20.109 315.358 19.968 314.981 19.686 C 314.579 19.357 314.29 18.969 314.114 18.522 L 313.699 16.935 L 313.586 15.312 L 313.473 8.504 C 313.473 7.446 313.334 6.506 313.058 5.683 C 312.731 4.671 312.442 3.966 312.191 3.566 C 311.763 2.955 311.323 2.485 310.871 2.155 C 310.443 1.826 309.991 1.579 309.513 1.415 C 309.966 1.203 310.393 0.956 310.795 0.674 C 311.373 0.274 311.826 -0.184 312.153 -0.702 C 312.404 -1.148 312.693 -1.866 313.02 -2.853 C 313.322 -3.723 313.473 -4.723 313.473 -5.852 L 313.623 -13.894 L 313.963 -15.41 C 314.139 -15.904 314.428 -16.304 314.83 -16.61 C 315.207 -16.868 315.735 -16.998 316.414 -16.998 L 318.601 -16.998 Z" style="fill: rgb(175, 110, 36);"/> + <path d="M 389.058 -17.145 L 389.058 -19.72 L 386.117 -19.72 C 384.458 -19.72 383.226 -19.203 382.421 -18.168 C 381.617 -17.134 381.215 -15.84 381.215 -14.288 L 380.687 -4.588 C 380.561 -3.742 380.322 -3.001 379.97 -2.366 C 379.644 -1.684 379.204 -1.108 378.651 -0.638 C 378.424 -0.403 378.135 -0.238 377.783 -0.144 C 377.582 -0.05 377.243 0.044 376.765 0.138 L 376.765 2.572 C 377.318 2.666 377.658 2.737 377.783 2.784 C 378.135 2.878 378.424 3.007 378.651 3.172 C 379.204 3.548 379.631 4.042 379.933 4.653 C 380.737 6.346 381.139 8.016 381.139 9.662 L 381.139 17.034 C 381.139 18.727 381.592 20.079 382.497 21.09 C 383.402 22.101 384.571 22.607 386.004 22.607 L 389.058 22.607 L 389.058 19.961 L 386.871 19.961 C 386.293 19.961 385.815 19.82 385.438 19.538 C 385.036 19.209 384.747 18.821 384.571 18.374 L 384.156 16.787 L 384.043 15.164 L 383.93 8.357 C 383.93 7.299 383.792 6.358 383.515 5.535 C 383.188 4.524 382.899 3.818 382.648 3.419 C 382.22 2.807 381.78 2.337 381.328 2.008 C 380.901 1.679 380.448 1.432 379.97 1.267 C 380.423 1.055 380.85 0.808 381.253 0.526 C 381.831 0.127 382.283 -0.332 382.61 -0.849 C 382.861 -1.296 383.151 -2.013 383.477 -3.001 C 383.779 -3.871 383.93 -4.87 383.93 -5.999 L 384.081 -14.041 L 384.42 -15.558 C 384.596 -16.052 384.885 -16.452 385.287 -16.757 C 385.664 -17.016 386.192 -17.145 386.871 -17.145 L 389.058 -17.145 Z" style="fill: rgb(175, 110, 36); transform-origin: 382.912px 1.4435px;" transform="matrix(-1, 0, 0, -1, 0, -0.000015020371)"/> +</svg> \ No newline at end of file diff --git a/1-js/99-js-misc/07-weakref-finalizationregistry/weakref-finalizationregistry-05.svg b/1-js/99-js-misc/07-weakref-finalizationregistry/weakref-finalizationregistry-05.svg new file mode 100644 index 000000000..e738f8e7e --- /dev/null +++ b/1-js/99-js-misc/07-weakref-finalizationregistry/weakref-finalizationregistry-05.svg @@ -0,0 +1,103 @@ +<?xml version="1.0" encoding="utf-8"?> +<svg viewBox="-56.888 -599965.495 896063.875 604140.645" width="420.466px" height="300.516px" xmlns="http://www.w3.org/2000/svg" xmlns:bx="https://boxy-svg.com"> + <defs> + <style bx:fonts="Open Sans">@import url(https://fonts.googleapis.com/css2?family=Open+Sans%3Aital%2Cwght%400%2C300%3B0%2C400%3B0%2C500%3B0%2C600%3B0%2C700%3B0%2C800%3B1%2C300%3B1%2C400%3B1%2C500%3B1%2C600%3B1%2C700%3B1%2C800&display=swap);</style> + </defs> + <g id="memory-user-john-admin.svg" transform="matrix(3405.68798828125, 0, 0, 3405.68798828125, -789862.25, -296077.03124999994)" fill="none" fill-rule="evenodd" stroke="none" stroke-width="1" style=""> + <path id="path-1" fill="#FBF2EC" stroke="#DBAF88" stroke-width="2" d="M 234.068 -87.403 L 333.494 -87.403 L 333.494 -57.762 L 234.068 -57.762 L 234.068 -87.403 Z" style=""/> + <path id="path-2" fill="#FBF2EC" stroke="#DBAF88" stroke-width="2" d="M 336.651 -87.403 L 492.549 -87.403 L 492.549 -57.762 L 336.651 -57.762 L 336.651 -87.403 Z" style=""/> + <path id="path-3" fill="#FBF2EC" stroke="#DBAF88" stroke-width="2" d="M 234.068 -53.711 L 333.494 -53.711 L 333.494 -24.07 L 234.068 -24.07 L 234.068 -53.711 Z" style=""/> + <path id="path-4" fill="#FBF2EC" stroke="#DBAF88" stroke-width="2" d="M 336.651 -53.711 L 492.783 -53.711 L 492.783 -24.07 L 336.651 -24.07 L 336.651 -53.711 Z" style=""/> + <g transform="matrix(1, 0, 0, 1, 0, 42.135864)"> + <path id="path-5" fill="#FBF2EC" stroke="#DBAF88" stroke-width="2" d="M 234.189 -20.462 L 333.615 -20.462 L 333.615 9.179 L 234.189 9.179 L 234.189 -20.462 Z" style=""/> + <path id="path-6" fill="#FBF2EC" stroke="#DBAF88" stroke-width="2" d="M 336.791 -20.462 L 493.057 -20.462 L 493.057 9.179 L 336.791 9.179 L 336.791 -20.462 Z" style=""/> + <path id="path-7" fill="#FBF2EC" stroke="#DBAF88" stroke-width="2" d="M 234.068 13.088 L 333.494 13.088 L 333.494 43.59 L 234.068 43.59 L 234.068 13.088 Z" style=""/> + <path id="path-8" fill="#FBF2EC" stroke="#DBAF88" stroke-width="2" d="M 336.651 13.088 L 493.054 13.088 L 493.054 43.59 L 336.651 43.59 L 336.651 13.088 Z" style=""/> + <text id="text-4" style="fill: rgb(175, 110, 36); font-family: 'Open Sans'; font-size: 14px; white-space: pre;" transform="matrix(1.054877, 0, 0, 1.142641, -39.02475, 80.086914)" x="263.861" y="-70.535">image-02.jpg</text> + <text id="text-5" style="fill: rgb(175, 110, 36); font-family: 'Open Sans'; font-size: 14px; white-space: pre;" transform="matrix(1.054877, 0, 0, 1.142641, -39.468063, 113.637062)" x="263.861" y="-70.535">image-03.jpg</text> + </g> + <text id="<global>" style="fill: rgb(175, 110, 36); font-family: 'Open Sans'; font-size: 11.5772px; font-weight: 600; line-height: 19.9484px; white-space: pre;" transform="matrix(1.374145, 0, 0, 1.314286, -102.41082, 25.040792)" x="263.861" y="-70.535">key</text> + <text id="text-2" style="fill: rgb(175, 110, 36); font-family: 'Open Sans'; font-size: 11.5772px; font-weight: 600; line-height: 19.9484px; white-space: pre;" transform="matrix(1.374145, 0, 0, 1.314286, 13.577469, 25.203112)" x="263.861" y="-70.535">value</text> + <text id="text-3" style="fill: rgb(175, 110, 36); font-family: 'Open Sans'; font-size: 14px; white-space: pre;" transform="matrix(1.071654, 0, 0, 1.142641, -43.57296, 46.390514)" x="263.861" y="-70.535">image-01.jpg</text> + <g transform="matrix(0.000041, -1, 1.521843, 0.000133, 289.017426, 2.750529)" style="transform-origin: 105.999px -35.503px;"> + <path d="M 105.537 7.964 L 110.918 13.895 L 100.155 13.895 L 105.537 7.964 Z" style="fill-rule: nonzero; fill: rgb(172, 67, 67);" transform="matrix(1, 0, 0, -1, 0, 0)" bx:shape="triangle 100.155 7.964 10.763 5.931 0.5 0 1@87a4267a"/> + <g> + <rect x="105.024" y="-69.436" width="1.99" height="5.009" style="paint-order: stroke; stroke: rgb(53, 81, 138); stroke-width: 0px; fill: rgb(172, 67, 67);"/> + <rect x="105.014" y="-59.02" width="1.99" height="5.009" style="paint-order: stroke; stroke: rgb(53, 81, 138); stroke-width: 0px; fill: rgb(172, 67, 67);"/> + <rect x="105.014" y="-48.877" width="1.99" height="5.009" style="paint-order: stroke; stroke: rgb(53, 81, 138); stroke-width: 0px; fill: rgb(172, 67, 67);"/> + <g transform="matrix(1, 0, 0, 1, 10.348016, -60.719521)"/> + <g transform="matrix(1, 0, 0, 1, 10.356147, 0.41661)"/> + <g transform="matrix(1, 0, 0, 1, 10.161898, 52.045895)"/> + <g transform="matrix(1, 0, 0, 1, -23.594774, -60.719116)"> + <rect x="79.597" y="-80.351" width="1.99" height="5.009" style="paint-order: stroke; stroke: rgb(53, 81, 138); stroke-width: 0px; fill: rgb(172, 67, 67);"/> + <rect x="79.587" y="-69.935" width="1.99" height="5.009" style="paint-order: stroke; stroke: rgb(53, 81, 138); stroke-width: 0px; fill: rgb(172, 67, 67);"/> + <rect x="79.587" y="-59.792" width="1.99" height="5.009" style="paint-order: stroke; stroke: rgb(53, 81, 138); stroke-width: 0px; fill: rgb(172, 67, 67);"/> + <rect x="79.561" y="-50.176" width="1.99" height="5.129" style="paint-order: stroke; stroke: rgb(53, 81, 138); stroke-width: 0px; fill: rgb(172, 67, 67);"/> + <rect x="79.551" y="-39.904" width="1.99" height="5.129" style="paint-order: stroke; stroke: rgb(53, 81, 138); stroke-width: 0px; fill: rgb(172, 67, 67);"/> + <rect x="79.551" y="-29.517" width="1.99" height="5.129" style="paint-order: stroke; stroke: rgb(53, 81, 138); stroke-width: 0px; fill: rgb(172, 67, 67);"/> + </g> + <g transform="matrix(1, 0, 0, 1, -23.586773, 0.417928)"> + <rect x="79.597" y="-80.351" width="1.99" height="5.009" style="paint-order: stroke; stroke: rgb(53, 81, 138); stroke-width: 0px; fill: rgb(172, 67, 67);"/> + <rect x="79.587" y="-69.935" width="1.99" height="5.009" style="paint-order: stroke; stroke: rgb(53, 81, 138); stroke-width: 0px; fill: rgb(172, 67, 67);"/> + <rect x="79.587" y="-59.792" width="1.99" height="5.009" style="paint-order: stroke; stroke: rgb(53, 81, 138); stroke-width: 0px; fill: rgb(172, 67, 67);"/> + <rect x="79.561" y="-50.176" width="1.99" height="5.129" style="paint-order: stroke; stroke: rgb(53, 81, 138); stroke-width: 0px; fill: rgb(172, 67, 67);"/> + <rect x="79.551" y="-39.904" width="1.99" height="5.129" style="paint-order: stroke; stroke: rgb(53, 81, 138); stroke-width: 0px; fill: rgb(172, 67, 67);"/> + </g> + <g transform="matrix(1, 0, 0, 1, -23.780775, 52.046886)"> + <rect x="79.798" y="-80.298" width="1.99" height="5.009" style="paint-order: stroke; stroke: rgb(53, 81, 138); stroke-width: 0px; fill: rgb(172, 67, 67);"/> + <rect x="79.587" y="-69.935" width="1.99" height="5.009" style="paint-order: stroke; stroke: rgb(53, 81, 138); stroke-width: 0px; fill: rgb(172, 67, 67);"/> + <rect x="79.587" y="-59.792" width="1.99" height="5.009" style="paint-order: stroke; stroke: rgb(53, 81, 138); stroke-width: 0px; fill: rgb(172, 67, 67);"/> + <rect x="79.561" y="-50.176" width="1.99" height="5.129" style="paint-order: stroke; stroke: rgb(53, 81, 138); stroke-width: 0px; fill: rgb(172, 67, 67);"/> + <rect x="79.551" y="-39.904" width="1.99" height="5.129" style="paint-order: stroke; stroke: rgb(53, 81, 138); stroke-width: 0px; fill: rgb(172, 67, 67);"/> + <rect x="79.551" y="-29.517" width="1.99" height="5.129" style="paint-order: stroke; stroke: rgb(53, 81, 138); stroke-width: 0px; fill: rgb(172, 67, 67);"/> + </g> + </g> + <g transform="matrix(1, 0, 0, 1.024052, -0.03572, 31.45084)" style=""> + <rect x="105.024" y="-69.051" width="1.99" height="5.009" style="paint-order: stroke; stroke: rgb(53, 81, 138); stroke-width: 0px; fill: rgb(172, 67, 67);"/> + <rect x="105.014" y="-59.02" width="1.99" height="5.009" style="paint-order: stroke; stroke: rgb(53, 81, 138); stroke-width: 0px; fill: rgb(172, 67, 67);"/> + <rect x="105.014" y="-48.877" width="1.99" height="5.009" style="paint-order: stroke; stroke: rgb(53, 81, 138); stroke-width: 0px; fill: rgb(172, 67, 67);"/> + </g> + </g> + <text id="text-6" style="fill: rgb(172, 67, 67); font-family: 'Open Sans'; font-size: 9.73113px; font-style: italic; white-space: pre;" transform="matrix(1.038937, 0, 0, 1.142641, 69.710487, 42.749538)" x="263.861" y="-70.535">WeakRef object</text> + <g transform="matrix(0.441364, 0, 0, 0.412845, 420.761139, -59.372555)" style=""> + <g> + <path d=" M 58.15 23.65 L 58.15 20 54.25 20 Q 50.95 20 49.35 22.2 47.75 24.4 47.75 27.7 L 47.05 41.45 Q 46.8 43.25 46.1 44.6 45.45 46.05 44.35 47.05 43.9 47.55 43.2 47.75 42.8 47.95 41.85 48.15 L 41.85 51.6 Q 42.95 51.8 43.2 51.9 43.9 52.1 44.35 52.45 45.45 53.25 46.05 54.55 47.65 58.15 47.65 61.65 L 47.65 72.1 Q 47.65 75.7 49.45 77.85 51.25 80 54.1 80 L 58.15 80 58.15 76.25 55.25 76.25 Q 54.1 76.25 53.35 75.65 52.55 74.95 52.2 74 L 51.65 71.75 51.5 69.45 51.35 59.8 Q 51.35 57.55 50.8 55.8 50.15 53.65 49.65 52.8 48.8 51.5 47.9 50.8 47.05 50.1 46.1 49.75 47 49.3 47.8 48.7 48.95 47.85 49.6 46.75 50.1 45.8 50.75 43.7 51.35 41.85 51.35 39.45 L 51.55 28.05 52 25.9 Q 52.35 24.85 53.15 24.2 53.9 23.65 55.25 23.65 L 58.15 23.65 Z" style="fill: rgb(175, 110, 36);"/> + </g> + </g> + <g transform="matrix(-0.441364, 0, 0, -0.412845, 414.750092, -88.816727)" style="transform-origin: 50px 50px;"> + <g> + <path d="M 14.392 23.65 L 14.392 20 L 10.492 20 C 8.292 20 6.659 20.733 5.592 22.2 C 4.525 23.667 3.992 25.5 3.992 27.7 L 3.292 41.45 C 3.125 42.65 2.809 43.7 2.342 44.6 C 1.909 45.567 1.325 46.383 0.592 47.05 C 0.292 47.383 -0.091 47.617 -0.558 47.75 C -0.825 47.883 -1.275 48.017 -1.908 48.15 L -1.908 51.6 C -1.175 51.733 -0.725 51.833 -0.558 51.9 C -0.091 52.033 0.292 52.217 0.592 52.45 C 1.325 52.983 1.892 53.683 2.292 54.55 C 3.359 56.95 3.892 59.317 3.892 61.65 L 3.892 72.1 C 3.892 74.5 4.492 76.417 5.692 77.85 C 6.892 79.283 8.442 80 10.342 80 L 14.392 80 L 14.392 76.25 L 11.492 76.25 C 10.725 76.25 10.092 76.05 9.592 75.65 C 9.059 75.183 8.675 74.633 8.442 74 L 7.892 71.75 L 7.742 69.45 L 7.592 59.8 C 7.592 58.3 7.409 56.967 7.042 55.8 C 6.609 54.367 6.225 53.367 5.892 52.8 C 5.325 51.933 4.742 51.267 4.142 50.8 C 3.575 50.333 2.975 49.983 2.342 49.75 C 2.942 49.45 3.509 49.1 4.042 48.7 C 4.809 48.133 5.409 47.483 5.842 46.75 C 6.175 46.117 6.559 45.1 6.992 43.7 C 7.392 42.467 7.592 41.05 7.592 39.45 L 7.792 28.05 L 8.242 25.9 C 8.475 25.2 8.859 24.633 9.392 24.2 C 9.892 23.833 10.592 23.65 11.492 23.65 L 14.392 23.65 Z" style="fill: rgb(175, 110, 36);"/> + <path d="M 255.632 27.46 L 268.667 47.91 L 242.597 47.91 L 255.632 27.46 Z" style="fill-rule: nonzero; fill: rgb(172, 67, 67);" transform="matrix(-0.000038, 1, 1, 0.000093, 86.522967, -404.320629)" bx:shape="triangle 242.597 27.46 26.07 20.45 0.5 0 1@97f9cc39"/> + <rect x="254.391" y="-239.419" width="4.82" height="17.271" style="paint-order: stroke; stroke: rgb(53, 81, 138); stroke-width: 0px; fill: rgb(172, 67, 67);" transform="matrix(-0.000038, 1, -1, -0.000093, 86.522728, -404.32132)"/> + <rect x="254.367" y="-203.504" width="4.82" height="17.271" style="paint-order: stroke; stroke: rgb(53, 81, 138); stroke-width: 0px; fill: rgb(172, 67, 67);" transform="matrix(-0.000038, 1, -1, -0.000093, 86.522728, -404.32132)"/> + <rect x="254.367" y="-168.53" width="4.82" height="17.271" style="paint-order: stroke; stroke: rgb(53, 81, 138); stroke-width: 0px; fill: rgb(172, 67, 67);" transform="matrix(-0.000038, 1, -1, -0.000093, 86.522728, -404.32132)"/> + <rect x="254.391" y="-243.818" width="4.82" height="17.687" style="paint-order: stroke; stroke: rgb(53, 81, 138); stroke-width: 0px; fill: rgb(172, 67, 67);" transform="matrix(-0.000038, 1, -1, -0.000093, -21.921179, -404.417969)"/> + <rect x="254.367" y="-208.398" width="4.82" height="17.687" style="paint-order: stroke; stroke: rgb(53, 81, 138); stroke-width: 0px; fill: rgb(172, 67, 67);" transform="matrix(-0.000038, 1, -1, -0.000093, -21.921179, -404.417969)"/> + <rect x="254.367" y="-172.584" width="4.82" height="17.687" style="paint-order: stroke; stroke: rgb(53, 81, 138); stroke-width: 0px; fill: rgb(172, 67, 67);" transform="matrix(-0.000038, 1, -1, -0.000093, -21.921179, -404.417969)"/> + <text id="text-7" style="fill: rgb(172, 67, 67); font-family: 'Open Sans'; font-size: 9.73113px; font-style: italic; white-space: pre;" transform="matrix(-2.353923, 0, 0, -2.767724, 945.975708, -330.43927)" x="263.861" y="-70.535">WeakRef object</text> + <path d="M 108.749 -159.455 L 108.749 -163.105 L 104.849 -163.105 C 102.649 -163.105 101.015 -162.371 99.949 -160.905 C 98.882 -159.438 98.349 -157.605 98.349 -155.405 L 97.649 -141.655 C 97.482 -140.455 97.165 -139.405 96.699 -138.505 C 96.265 -137.538 95.682 -136.721 94.949 -136.055 C 94.649 -135.721 94.265 -135.488 93.799 -135.355 C 93.532 -135.221 93.082 -135.088 92.449 -134.955 L 92.449 -131.505 C 93.182 -131.371 93.632 -131.271 93.799 -131.205 C 94.265 -131.071 94.649 -130.888 94.949 -130.655 C 95.682 -130.121 96.249 -129.421 96.649 -128.555 C 97.715 -126.155 98.249 -123.788 98.249 -121.455 L 98.249 -111.005 C 98.249 -108.605 98.849 -106.688 100.049 -105.255 C 101.249 -103.821 102.799 -103.105 104.699 -103.105 L 108.749 -103.105 L 108.749 -106.855 L 105.849 -106.855 C 105.082 -106.855 104.449 -107.055 103.949 -107.455 C 103.415 -107.921 103.032 -108.471 102.799 -109.105 L 102.249 -111.355 L 102.099 -113.655 L 101.949 -123.305 C 101.949 -124.805 101.765 -126.138 101.399 -127.305 C 100.965 -128.738 100.582 -129.738 100.249 -130.305 C 99.682 -131.171 99.099 -131.838 98.499 -132.305 C 97.932 -132.771 97.332 -133.121 96.699 -133.355 C 97.299 -133.655 97.865 -134.005 98.399 -134.405 C 99.165 -134.971 99.765 -135.621 100.199 -136.355 C 100.532 -136.988 100.915 -138.005 101.349 -139.405 C 101.749 -140.638 101.949 -142.055 101.949 -143.655 L 102.149 -155.055 L 102.599 -157.205 C 102.832 -157.905 103.215 -158.471 103.749 -158.905 C 104.249 -159.271 104.949 -159.455 105.849 -159.455 L 108.749 -159.455 Z" style="fill: rgb(175, 110, 36); transform-box: fill-box; transform-origin: 50% 50%;" transform="matrix(-1, 0, 0, -1, -0.000041, -0.000044)"/> + <path d="M 15.325 -159.251 L 15.325 -162.901 L 11.425 -162.901 C 9.225 -162.901 7.591 -162.168 6.525 -160.701 C 5.458 -159.235 4.925 -157.401 4.925 -155.201 L 4.225 -141.451 C 4.058 -140.251 3.741 -139.201 3.275 -138.301 C 2.841 -137.335 2.258 -136.518 1.525 -135.851 C 1.225 -135.518 0.841 -135.285 0.375 -135.151 C 0.108 -135.018 -0.342 -134.885 -0.975 -134.751 L -0.975 -131.301 C -0.242 -131.168 0.208 -131.068 0.375 -131.001 C 0.841 -130.868 1.225 -130.685 1.525 -130.451 C 2.258 -129.918 2.825 -129.218 3.225 -128.351 C 4.291 -125.951 4.825 -123.585 4.825 -121.251 L 4.825 -110.801 C 4.825 -108.401 5.425 -106.485 6.625 -105.051 C 7.825 -103.618 9.375 -102.901 11.275 -102.901 L 15.325 -102.901 L 15.325 -106.651 L 12.425 -106.651 C 11.658 -106.651 11.025 -106.851 10.525 -107.251 C 9.991 -107.718 9.608 -108.268 9.375 -108.901 L 8.825 -111.151 L 8.675 -113.451 L 8.525 -123.101 C 8.525 -124.601 8.341 -125.935 7.975 -127.101 C 7.541 -128.535 7.158 -129.535 6.825 -130.101 C 6.258 -130.968 5.675 -131.635 5.075 -132.101 C 4.508 -132.568 3.908 -132.918 3.275 -133.151 C 3.875 -133.451 4.441 -133.801 4.975 -134.201 C 5.741 -134.768 6.341 -135.418 6.775 -136.151 C 7.108 -136.785 7.491 -137.801 7.925 -139.201 C 8.325 -140.435 8.525 -141.851 8.525 -143.451 L 8.725 -154.851 L 9.175 -157.001 C 9.408 -157.701 9.791 -158.268 10.325 -158.701 C 10.825 -159.068 11.525 -159.251 12.425 -159.251 L 15.325 -159.251 Z" style="fill: rgb(175, 110, 36);"/> + </g> + </g> + <text id="text-9" style="fill: rgb(175, 110, 36); font-family: 'Open Sans'; font-size: 4.89804px; font-weight: 700; line-height: 19.9484px; white-space: pre;" transform="matrix(1.374145, 0, 0, 1.314286, 83.283821, 131.351151)" x="263.861" y="-70.535">undefined</text> + <text id="text-10" style="fill: rgb(175, 110, 36); font-family: 'Open Sans'; font-size: 4.89804px; font-weight: 700; line-height: 19.9484px; white-space: pre;" transform="matrix(1.374145, 0, 0, 1.314286, 82.957924, 165.037125)" x="263.861" y="-70.535">undefined</text> + <text id="text-11" style="fill: rgb(172, 67, 67); font-family: 'Open Sans'; font-size: 9.73113px; font-style: italic; white-space: pre;" transform="matrix(1.038937, 0, 0, 1.142641, -18.813889, 90.723404)" x="263.861" y="-70.535">Deleted by FinalizationRegistry cleanup callback</text> + </g> + <g transform="matrix(668.68603515625, 0, 0, 668.68603515625, 227309.90625, -975180.6875)" style=""> + <g transform="matrix(0.178489, 0, 0, 0.175502, 747.077209, 776.317017)" style=""> + <path d="M 267.184 437.8 C 267.184 466.3 290.384 489.4 318.784 489.4 L 704.984 489.4 C 733.484 489.4 756.584 466.2 756.584 437.8 L 756.584 51.6 C 756.584 23.1 733.384 0 704.984 0 L 318.784 0 C 290.284 0 267.184 23.2 267.184 51.6 C 267.184 51.6 267.184 437.8 267.184 437.8 Z M 704.984 464.9 L 318.784 464.9 C 303.884 464.9 291.684 452.7 291.684 437.8 L 291.684 373.3 L 384.484 280.5 L 463.784 359.8 C 468.584 364.6 476.284 364.6 481.084 359.8 L 624.284 216.6 L 732.084 324.4 L 732.084 437.8 C 732.084 452.7 719.884 464.9 704.984 464.9 Z M 318.784 24.5 L 704.984 24.5 C 719.884 24.5 732.084 36.7 732.084 51.6 L 732.084 289.7 L 632.884 190.6 C 628.084 185.8 620.384 185.8 615.584 190.6 L 472.384 333.8 L 393.084 254.5 C 388.284 249.7 380.584 249.7 375.784 254.5 L 291.684 338.6 L 291.684 51.6 C 291.684 36.7 303.884 24.5 318.784 24.5 Z" style="fill: rgb(175, 110, 36);"/> + <path d="M 418.884 196.1 C 453.284 196.1 481.184 168.1 481.184 133.8 C 481.184 99.5 453.184 71.5 418.884 71.5 C 384.584 71.5 356.584 99.5 356.584 133.8 C 356.584 168.1 384.484 196.1 418.884 196.1 Z M 418.884 96 C 439.784 96 456.684 113 456.684 133.8 C 456.684 154.6 439.684 171.6 418.884 171.6 C 398.084 171.6 381.084 154.6 381.084 133.8 C 381.084 113 397.984 96 418.884 96 Z" style="fill: rgb(175, 110, 36);"/> + </g> + </g> + <path d="M 359424.367 41276.336 L 377751.896 72015.889 L 341096.837 72015.889 L 359424.367 41276.336 Z" style="fill-rule: nonzero; fill: rgb(172, 67, 67);" transform="matrix(0.00004100000296602957, -1, -1, -0.00008700000762473792, 737054.1250000001, 325983.1250000001)" bx:shape="triangle 341096.837 41276.336 36655.059 30739.553 0.5 0 1@d50babe8"/> + <rect x="357681.08" y="-359881.579" width="6776.286" height="25963.08" style="paint-order: stroke; stroke: rgb(53, 81, 138); stroke-width: 0px; fill: rgb(172, 67, 67);" transform="matrix(0.00004100000296602957, -1, 1, 0.00008700000762473792, 737054.6250000001, 325981.3125000001)"/> + <rect x="357644.501" y="-305895.331" width="6776.286" height="25963.08" style="paint-order: stroke; stroke: rgb(53, 81, 138); stroke-width: 0px; fill: rgb(172, 67, 67);" transform="matrix(0.00004100000296602957, -1, 1, 0.00008700000762473792, 737054.6250000001, 325981.3125000001)"/> + <rect x="357644.501" y="-253326.04" width="6776.286" height="25963.08" style="paint-order: stroke; stroke: rgb(53, 81, 138); stroke-width: 0px; fill: rgb(172, 67, 67);" transform="matrix(0.00004100000296602957, -1, 1, 0.00008700000762473792, 737054.6250000001, 325981.3125000001)"/> + <rect x="357681.08" y="-366492.978" width="6776.286" height="26586.395" style="paint-order: stroke; stroke: rgb(53, 81, 138); stroke-width: 0px; fill: rgb(172, 67, 67);" transform="matrix(0.00004100000296602957, -1, 1, 0.00008700000762473792, 900061.8125000001, 326117.2187500001)"/> + <rect x="357644.501" y="-313254.567" width="6776.286" height="26586.395" style="paint-order: stroke; stroke: rgb(53, 81, 138); stroke-width: 0px; fill: rgb(172, 67, 67);" transform="matrix(0.00004100000296602957, -1, 1, 0.00008700000762473792, 900061.8125000001, 326117.2187500001)"/> + <rect x="357644.501" y="-259418.129" width="6776.286" height="26586.395" style="paint-order: stroke; stroke: rgb(53, 81, 138); stroke-width: 0px; fill: rgb(172, 67, 67);" transform="matrix(0.00004100000296602957, -1, 1, 0.00008700000762473792, 900061.8125000001, 326117.2187500001)"/> + <text id="text-8" style="fill: rgb(172, 67, 67); font-family: 'Open Sans'; font-size: 9.73113px; font-style: italic; white-space: pre;" transform="matrix(3538.295166015625, 0, 0, 3891.478759765625, -554830.25, 222101.96875)" x="263.861" y="-70.535">WeakRef object</text> + <path d="M 728146.338 -92443.632 L 728146.338 -97574.712 L 722284.793 -97574.712 C 718978.199 -97574.712 716523.314 -96542.53 714919.193 -94480.927 C 713316.016 -92418.404 712514.341 -89841.53 712514.341 -86748.938 L 711462.052 -67415.4 C 711210.096 -65727.244 710734.892 -64250.108 710033.283 -62985.482 C 709382.304 -61626.233 708504.597 -60478.003 707402.151 -59541.042 C 706951.752 -59072.499 706375.587 -58743.915 705673.655 -58556.036 C 705273.289 -58368.007 704596.909 -58181.644 703645.158 -57993.168 L 703645.158 -53141.856 C 704747.605 -52953.853 705423.812 -52816.007 705673.655 -52721.682 C 706375.587 -52533.653 706951.752 -52275.956 707402.151 -51947.819 C 708504.597 -51196.774 709359.189 -50215.843 709957.252 -48995.062 C 711561.373 -45621.509 712363.794 -42293.888 712363.794 -39012.547 L 712363.794 -24320.941 C 712363.794 -20946.169 713265.063 -18250.364 715069.292 -16236.209 C 716874.118 -14219.916 719201.895 -13211.347 722059.73 -13211.347 L 728146.338 -13211.347 L 728146.338 -18485.095 L 723786.735 -18485.095 C 722635.597 -18485.095 721683.847 -18767.275 720932.205 -19327.881 C 720129.784 -19984.452 719554.812 -20757.843 719201.895 -21648.25 L 718377.253 -24810.511 L 718150.525 -28045.597 L 717925.463 -41615.096 C 717925.463 -43722.656 717648.726 -45597.921 717099.007 -47236.193 C 716447.133 -49254.872 715870.968 -50660.078 715370.511 -51456.161 C 714517.162 -52674.979 713641.12 -53612.089 712740.149 -54268.661 C 711885.582 -54925.978 710986.4 -55416.741 710033.283 -55743.536 C 710935.472 -56166.271 711786.261 -56657.059 712587.937 -57219.753 C 713740.267 -58016.755 714644.122 -58930.278 715294.33 -59961.987 C 715794.787 -60852.37 716371.101 -62282.655 717022.975 -64250.108 C 717625.611 -65984.196 717925.463 -67976.901 717925.463 -70227.453 L 718225.811 -86255.615 L 718902.938 -89277.444 C 719252.823 -90261.705 719829.908 -91059.9 720629.445 -91669.769 C 721380.938 -92183.673 722434.122 -92443.632 723786.735 -92443.632 L 728146.338 -92443.632 Z" style="fill: rgb(175, 110, 36);"/> + <path d="M 868579.948 -92734.348 L 868579.948 -97866.322 L 862717.955 -97866.322 C 859411.336 -97866.322 856954.786 -96837.173 855350.69 -94775.421 C 853747.488 -92713.793 852947.926 -90134.359 852947.926 -87041.916 L 851895.661 -67707.906 C 851643.706 -66022.185 851168.054 -64545.67 850465.228 -63278.459 C 849816.809 -61920.428 848939.872 -60773.094 847838.32 -59836.43 C 847385.039 -59366.993 846807.506 -59039.453 846107.264 -58850.977 C 845705.979 -58662.948 845032.333 -58476.734 844077.55 -58288.705 L 844077.55 -53438.165 C 845180.295 -53250.136 845856.974 -53108.363 846107.264 -53014.659 C 846807.506 -52828.296 847385.039 -52570.897 847838.32 -52242.462 C 848939.872 -51491.715 849788.996 -50508.374 850393.421 -49291.196 C 851994.957 -45916.599 852795.738 -42588.531 852795.738 -39308.084 L 852795.738 -24614.217 C 852795.738 -21238.7 853699.12 -18545.753 855503.051 -16529.485 C 857306.038 -14515.33 859635.504 -13506.885 862491.674 -13506.885 L 868579.948 -13506.885 L 868579.948 -18781.23 L 864220.319 -18781.23 C 863067.542 -18781.23 862114.424 -19061.47 861364.149 -19624.164 C 860562.474 -20278.623 859988.421 -21052.486 859635.504 -21943.639 L 858809.496 -25105.899 L 858584.135 -28341.01 L 858357.407 -41908.844 C 858357.407 -44017.15 858082.336 -45890.452 857532.617 -47532.477 C 856880.42 -49546.483 856302.887 -50953.801 855803.201 -51749.114 C 854950.299 -52969.622 854074.73 -53906.708 853171.77 -54561.937 C 852320.832 -55217.589 851420.01 -55710.191 850465.228 -56038.154 C 851368.61 -56462.579 852219.573 -56952.447 853024.106 -57514.843 C 854174.772 -58310.926 855075.594 -59225.667 855727.194 -60256.63 C 856228.546 -61147.784 856806.351 -62576.08 857456.585 -64545.67 C 858057.531 -66279.609 858357.407 -68270.177 858357.407 -70520.281 L 858660.316 -86548.145 L 859335.33 -89573.007 C 859685.662 -90557.094 860263.045 -91354.096 861063.055 -91962.3 C 861814.548 -92479.061 862866.066 -92734.348 864220.319 -92734.348 L 868579.948 -92734.348 Z" style="fill: rgb(175, 110, 36); transform-origin: 856323px -55686.3px;" transform="matrix(-1, 0, 0, -1, 0.87500000055, -0.046875000444)"/> + <rect x="3810.427" y="-226324.344" width="889802.927" height="226474.243" style="stroke: rgb(0, 0, 0); stroke-opacity: 0; fill: rgb(172, 67, 67); opacity: 0.76;"/> +</svg> \ No newline at end of file diff --git a/1-js/99-js-misc/07-weakref-finalizationregistry/weakref-finalizationregistry-demo-01.png b/1-js/99-js-misc/07-weakref-finalizationregistry/weakref-finalizationregistry-demo-01.png new file mode 100644 index 000000000..fc33a023a Binary files /dev/null and b/1-js/99-js-misc/07-weakref-finalizationregistry/weakref-finalizationregistry-demo-01.png differ diff --git a/1-js/99-js-misc/07-weakref-finalizationregistry/weakref-finalizationregistry-demo-02.png b/1-js/99-js-misc/07-weakref-finalizationregistry/weakref-finalizationregistry-demo-02.png new file mode 100644 index 000000000..7d8bb01e8 Binary files /dev/null and b/1-js/99-js-misc/07-weakref-finalizationregistry/weakref-finalizationregistry-demo-02.png differ diff --git a/1-js/99-js-misc/07-weakref-finalizationregistry/weakref-finalizationregistry-demo-03.gif b/1-js/99-js-misc/07-weakref-finalizationregistry/weakref-finalizationregistry-demo-03.gif new file mode 100644 index 000000000..b81966dda Binary files /dev/null and b/1-js/99-js-misc/07-weakref-finalizationregistry/weakref-finalizationregistry-demo-03.gif differ diff --git a/1-js/99-js-misc/07-weakref-finalizationregistry/weakref-finalizationregistry-demo-04.jpg b/1-js/99-js-misc/07-weakref-finalizationregistry/weakref-finalizationregistry-demo-04.jpg new file mode 100644 index 000000000..ba60f1e86 Binary files /dev/null and b/1-js/99-js-misc/07-weakref-finalizationregistry/weakref-finalizationregistry-demo-04.jpg differ diff --git a/1-js/99-js-misc/07-weakref-finalizationregistry/weakref-finalizationregistry-demo-05.gif b/1-js/99-js-misc/07-weakref-finalizationregistry/weakref-finalizationregistry-demo-05.gif new file mode 100644 index 000000000..d34bda4d7 Binary files /dev/null and b/1-js/99-js-misc/07-weakref-finalizationregistry/weakref-finalizationregistry-demo-05.gif differ diff --git a/1-js/99-js-misc/07-weakref-finalizationregistry/weakref-finalizationregistry-demo-06.jpg b/1-js/99-js-misc/07-weakref-finalizationregistry/weakref-finalizationregistry-demo-06.jpg new file mode 100644 index 000000000..b2655540f Binary files /dev/null and b/1-js/99-js-misc/07-weakref-finalizationregistry/weakref-finalizationregistry-demo-06.jpg differ diff --git a/1-js/99-js-misc/07-weakref-finalizationregistry/weakref-finalizationregistry-demo-07.gif b/1-js/99-js-misc/07-weakref-finalizationregistry/weakref-finalizationregistry-demo-07.gif new file mode 100644 index 000000000..51f874518 Binary files /dev/null and b/1-js/99-js-misc/07-weakref-finalizationregistry/weakref-finalizationregistry-demo-07.gif differ diff --git a/1-js/99-js-misc/07-weakref-finalizationregistry/weakref-finalizationregistry-demo-08.jpg b/1-js/99-js-misc/07-weakref-finalizationregistry/weakref-finalizationregistry-demo-08.jpg new file mode 100644 index 000000000..5f98aec14 Binary files /dev/null and b/1-js/99-js-misc/07-weakref-finalizationregistry/weakref-finalizationregistry-demo-08.jpg differ diff --git a/1-js/99-js-misc/07-weakref-finalizationregistry/weakref-finalizationregistry.view/index.css b/1-js/99-js-misc/07-weakref-finalizationregistry/weakref-finalizationregistry.view/index.css new file mode 100644 index 000000000..e6c9e3960 --- /dev/null +++ b/1-js/99-js-misc/07-weakref-finalizationregistry/weakref-finalizationregistry.view/index.css @@ -0,0 +1,285 @@ +:root { + --mineralGreen: 60, 98, 85; + --viridianGreen: 97, 135, 110; + --swampGreen: 166, 187, 141; + --fallGreen: 234, 231, 177; + --brinkPink: #FA7070; + --silverChalice: 178, 178, 178; + --white: 255, 255, 255; + --black: 0, 0, 0; + + --topBarHeight: 64px; + --itemPadding: 32px; + --containerGap: 8px; +} + +@keyframes zoom-in { + 0% { + transform: scale(1, 1); + } + + 100% { + transform: scale(1.30, 1.30); + } +} + +body, html { + margin: 0; + padding: 0; +} + +.app { + min-height: 100vh; + background-color: rgba(var(--viridianGreen), 0.5); +} + +.header { + height: var(--topBarHeight); + padding: 0 24px; + display: flex; + justify-content: space-between; + align-items: center; + background-color: rgba(var(--mineralGreen), 1); +} + +.header-text { + color: white; +} + +.container { + display: flex; + gap: 24px; + padding: var(--itemPadding); +} + +.item { + width: 50%; +} + +.item--scrollable { + overflow-y: scroll; + height: calc(100vh - var(--topBarHeight) - (var(--itemPadding) * 2)); +} + +.thumbnails-container { + display: flex; + flex-wrap: wrap; + gap: 8px; + justify-content: center; + align-items: center; +} + +.thumbnail-item { + width: calc(25% - var(--containerGap)); + cursor: pointer; + position: relative; +} + +.thumbnail-item:hover { + z-index: 1; + animation: zoom-in 0.1s forwards; +} + +.thumbnail-item--selected { + outline: 3px solid rgba(var(--fallGreen), 1); + outline-offset: -3px; +} + +.badge { + width: 16px; + height: 16px; + display: flex; + justify-content: center; + align-items: center; + padding: 4px; + position: absolute; + right: 8px; + bottom: 8px; + border-radius: 50%; + border: 2px solid rgba(var(--fallGreen), 1); + background-color: rgba(var(--swampGreen), 1); +} + +.check { + display: inline-block; + transform: rotate(45deg); + border-bottom: 2px solid white; + border-right: 2px solid white; + width: 6px; + height: 12px; +} + +.img { + width: 100%; + height: 100%; + object-fit: cover; +} + +.actions { + display: flex; + flex-wrap: wrap; + justify-content: center; + align-content: center; + padding: 0 0 16px 0; + gap: 8px; +} + +.select { + padding: 16px; + cursor: pointer; + font-weight: 700; + color: rgba(var(--black), 1); + border: 2px solid rgba(var(--swampGreen), 0.5); + background-color: rgba(var(--swampGreen), 1); +} + +.select:disabled { + cursor: not-allowed; + background-color: rgba(var(--silverChalice), 1); + color: rgba(var(--black), 0.5); + border: 2px solid rgba(var(--black), 0.25); +} + +.btn { + outline: none; + padding: 16px; + cursor: pointer; + font-weight: 700; + color: rgba(var(--black), 1); + border: 2px solid rgba(var(--black), 0.5); +} + +.btn--primary { + background-color: rgba(var(--mineralGreen), 1); +} + +.btn--primary:hover:not([disabled]) { + background-color: rgba(var(--mineralGreen), 0.85); +} + +.btn--secondary { + background-color: rgba(var(--viridianGreen), 0.5); +} + +.btn--secondary:hover:not([disabled]) { + background-color: rgba(var(--swampGreen), 0.25); +} + +.btn--success { + background-color: rgba(var(--fallGreen), 1); +} + +.btn--success:hover:not([disabled]) { + background-color: rgba(var(--fallGreen), 0.85); +} + +.btn:disabled { + cursor: not-allowed; + background-color: rgba(var(--silverChalice), 1); + color: rgba(var(--black), 0.5); + border: 2px solid rgba(var(--black), 0.25); +} + +.previewContainer { + margin-bottom: 16px; + display: flex; + width: 100%; + height: 40vh; + overflow: scroll; + border: 3px solid rgba(var(--black), 1); +} + +.previewContainer--disabled { + background-color: rgba(var(--black), 0.1); + cursor: not-allowed; +} + +.canvas { + margin: auto; + display: none; +} + +.canvas--ready { + display: block; +} + +.spinnerContainer { + display: flex; + gap: 8px; + flex-direction: column; + align-content: center; + align-items: center; + margin: auto; +} + +.spinnerContainer--hidden { + display: none; +} + +.spinnerText { + margin: 0; + color: rgba(var(--mineralGreen), 1); +} + +.spinner { + display: inline-block; + width: 50px; + height: 50px; + margin: auto; + border: 3px solid rgba(var(--mineralGreen), 0.3); + border-radius: 50%; + border-top-color: rgba(var(--mineralGreen), 0.9); + animation: spin 1s ease-in-out infinite; +} + +@keyframes spin { + to { + transform: rotate(360deg); + } +} + +.loggerContainer { + display: flex; + flex-direction: column; + gap: 8px; + padding: 0 8px 8px 8px; + width: 100%; + min-height: 30vh; + max-height: 30vh; + overflow: scroll; + border-left: 3px solid rgba(var(--black), 0.25); +} + +.logger-title { + display: flex; + align-items: center; + padding: 8px; + position: sticky; + height: 40px; + min-height: 40px; + top: 0; + left: 0; + background-color: rgba(var(--viridianGreen), 1); + font-size: 24px; + font-weight: 700; + margin: 0; +} + +.logger-item { + font-size: 14px; + padding: 8px; + border: 2px solid #5a5a5a; + color: white; +} + +.logger--primary { + background-color: #13315a; +} + +.logger--success { + background-color: #385a4e; +} + +.logger--error { + background-color: #5a1a24; +} \ No newline at end of file diff --git a/1-js/99-js-misc/07-weakref-finalizationregistry/weakref-finalizationregistry.view/index.html b/1-js/99-js-misc/07-weakref-finalizationregistry/weakref-finalizationregistry.view/index.html new file mode 100644 index 000000000..7ce52f927 --- /dev/null +++ b/1-js/99-js-misc/07-weakref-finalizationregistry/weakref-finalizationregistry.view/index.html @@ -0,0 +1,49 @@ +<!DOCTYPE HTML> +<html lang="en"> + +<head> + <meta charset="utf-8"> + <link rel="stylesheet" href="index.css"> + <title>Photo Library Collage</title> +</head> + +<body> + +<div class="app"> + <header class="header"> + <h1 class="header-text"> + Photo Library Collage + </h1> + </header> + <div class="container"> + <div class="item item--scrollable"> + <!--Thumbnails--> + <div class="thumbnails-container"></div> + </div> + <div class="item"> + <div> + <div class=actions> + <select class="select"></select> + <button class="btn btn--primary btn-create-collage"> Create collage </button> + <button class="btn btn--secondary btn-start-over"> Start over </button> + <button class="btn btn--success btn-download" onClick={downloadCollage}> Download </button> + </div> + <div class="previewContainer"> + <div class="spinnerContainer spinnerContainer--hidden"> + <div class="spinner"></div> + <p class="spinnerText"></p> + </div> + <canvas class="canvas"></canvas> + </div> + <div class="loggerContainer"> + <p class="logger-title">Logger:</p> + </div> + </div> + </div> + </div> +</div> + + +<script type="module" src="index.js"></script> +</body> +</html> diff --git a/1-js/99-js-misc/07-weakref-finalizationregistry/weakref-finalizationregistry.view/index.js b/1-js/99-js-misc/07-weakref-finalizationregistry/weakref-finalizationregistry.view/index.js new file mode 100644 index 000000000..983b34d9a --- /dev/null +++ b/1-js/99-js-misc/07-weakref-finalizationregistry/weakref-finalizationregistry.view/index.js @@ -0,0 +1,228 @@ +import { + createImageFile, + loadImage, + weakRefCache, + LAYOUTS, + images, + THUMBNAIL_PARAMS, + stateObj, +} from "./utils.js"; + +export const state = new Proxy(stateObj, { + set(target, property, value) { + const previousValue = target[property]; + + target[property] = value; + + if (previousValue !== value) { + handleStateChange(target); + } + + return true; + }, +}); + +// Elements. +const thumbnailsContainerEl = document.querySelector(".thumbnails-container"); +const selectEl = document.querySelector(".select"); +const previewContainerEl = document.querySelector(".previewContainer"); +const canvasEl = document.querySelector(".canvas"); +const createCollageBtn = document.querySelector(".btn-create-collage"); +const startOverBtn = document.querySelector(".btn-start-over"); +const downloadBtn = document.querySelector(".btn-download"); +const spinnerContainerEl = document.querySelector(".spinnerContainer"); +const spinnerTextEl = document.querySelector(".spinnerText"); +const loggerContainerEl = document.querySelector(".loggerContainer"); + +// Renders. +// Render thumbnails previews. +images.forEach((img) => { + const thumbnail = document.createElement("div"); + thumbnail.classList.add("thumbnail-item"); + + thumbnail.innerHTML = ` + <img src='${img.img}?${THUMBNAIL_PARAMS}' class="img"> + `; + + thumbnail.addEventListener("click", (e) => handleSelection(e, img)); + + thumbnailsContainerEl.appendChild(thumbnail); +}); +// Render layouts select. +LAYOUTS.forEach((layout) => { + const option = document.createElement("option"); + option.value = JSON.stringify(layout); + option.innerHTML = layout.name; + selectEl.appendChild(option); +}); + +const handleStateChange = (state) => { + if (state.loading) { + selectEl.disabled = true; + createCollageBtn.disabled = true; + startOverBtn.disabled = true; + downloadBtn.disabled = true; + previewContainerEl.classList.add("previewContainer--disabled"); + spinnerContainerEl.classList.remove("spinnerContainer--hidden"); + spinnerTextEl.innerText = "Loading..."; + canvasEl.classList.remove("canvas--ready"); + } else if (!state.loading) { + selectEl.disabled = false; + createCollageBtn.disabled = false; + startOverBtn.disabled = false; + downloadBtn.disabled = false; + previewContainerEl.classList.remove("previewContainer--disabled"); + spinnerContainerEl.classList.add("spinnerContainer--hidden"); + canvasEl.classList.add("canvas--ready"); + } + + if (!state.selectedImages.size) { + createCollageBtn.disabled = true; + document.querySelectorAll(".badge").forEach((item) => item.remove()); + } else if (state.selectedImages.size && !state.loading) { + createCollageBtn.disabled = false; + } + + if (!state.collageRendered) { + downloadBtn.disabled = true; + } else if (state.collageRendered) { + downloadBtn.disabled = false; + } +}; +handleStateChange(state); + +const handleSelection = (e, imgName) => { + const imgEl = e.currentTarget; + + imgEl.classList.toggle("thumbnail-item--selected"); + + if (state.selectedImages.has(imgName)) { + state.selectedImages.delete(imgName); + state.selectedImages = new Set(state.selectedImages); + imgEl.querySelector(".badge")?.remove(); + } else { + state.selectedImages = new Set(state.selectedImages.add(imgName)); + + const badge = document.createElement("div"); + badge.classList.add("badge"); + badge.innerHTML = ` + <div class="check" /> + `; + imgEl.prepend(badge); + } +}; + +// Make a wrapper function. +let getCachedImage; +(async () => { + getCachedImage = await weakRefCache(loadImage); +})(); + +const calculateGridRows = (blobsLength) => + Math.ceil(blobsLength / state.currentLayout.columns); + +const drawCollage = (images) => { + state.drawing = true; + + let context = canvasEl.getContext("2d"); + + /** + * Calculate canvas dimensions based on the current layout. + * */ + context.canvas.width = + state.currentLayout.itemWidth * state.currentLayout.columns; + context.canvas.height = + calculateGridRows(images.length) * state.currentLayout.itemHeight; + + let currentRow = 0; + let currentCanvasDx = 0; + let currentCanvasDy = 0; + + for (let i = 0; i < images.length; i++) { + /** + * Get current row of the collage. + * */ + if (i % state.currentLayout.columns === 0) { + currentRow += 1; + currentCanvasDx = 0; + + if (currentRow > 1) { + currentCanvasDy += state.currentLayout.itemHeight; + } + } + + context.drawImage( + images[i], + 0, + 0, + images[i].width, + images[i].height, + currentCanvasDx, + currentCanvasDy, + state.currentLayout.itemWidth, + state.currentLayout.itemHeight, + ); + + currentCanvasDx += state.currentLayout.itemWidth; + } + + state.drawing = false; + state.collageRendered = true; +}; + +const createCollage = async () => { + state.loading = true; + + const images = []; + + for (const image of state.selectedImages.values()) { + const blobImage = await getCachedImage(image.img); + + const url = URL.createObjectURL(blobImage); + const img = await createImageFile(url); + + images.push(img); + URL.revokeObjectURL(url); + } + + state.loading = false; + + drawCollage(images); +}; + +/** + * Clear all settled data to start over. + * */ +const startOver = () => { + state.selectedImages = new Set(); + state.collageRendered = false; + const context = canvasEl.getContext("2d"); + context.clearRect(0, 0, canvasEl.width, canvasEl.height); + + document + .querySelectorAll(".thumbnail-item--selected") + .forEach((item) => item.classList.remove("thumbnail-item--selected")); + + loggerContainerEl.innerHTML = '<p class="logger-title">Logger:</p>'; +}; + +const downloadCollage = () => { + const date = new Date(); + const fileName = `Collage-${date.getDay()}-${date.getMonth()}-${date.getFullYear()}.png`; + const img = canvasEl.toDataURL("image/png"); + const link = document.createElement("a"); + link.download = fileName; + link.href = img; + link.click(); + link.remove(); +}; + +const changeLayout = ({ target }) => { + state.currentLayout = JSON.parse(target.value); +}; + +// Listeners. +selectEl.addEventListener("change", changeLayout); +createCollageBtn.addEventListener("click", createCollage); +startOverBtn.addEventListener("click", startOver); +downloadBtn.addEventListener("click", downloadCollage); diff --git a/1-js/99-js-misc/07-weakref-finalizationregistry/weakref-finalizationregistry.view/utils.js b/1-js/99-js-misc/07-weakref-finalizationregistry/weakref-finalizationregistry.view/utils.js new file mode 100644 index 000000000..f0140c116 --- /dev/null +++ b/1-js/99-js-misc/07-weakref-finalizationregistry/weakref-finalizationregistry.view/utils.js @@ -0,0 +1,321 @@ +const loggerContainerEl = document.querySelector(".loggerContainer"); + +export const images = [ + { + img: "https://images.unsplash.com/photo-1471357674240-e1a485acb3e1", + }, + { + img: "https://images.unsplash.com/photo-1589118949245-7d38baf380d6", + }, + { + img: "https://images.unsplash.com/photo-1527631746610-bca00a040d60", + }, + { + img: "https://images.unsplash.com/photo-1500835556837-99ac94a94552", + }, + { + img: "https://images.unsplash.com/photo-1503220317375-aaad61436b1b", + }, + { + img: "https://images.unsplash.com/photo-1501785888041-af3ef285b470", + }, + { + img: "https://images.unsplash.com/photo-1528543606781-2f6e6857f318", + }, + { + img: "https://images.unsplash.com/photo-1523906834658-6e24ef2386f9", + }, + { + img: "https://images.unsplash.com/photo-1539635278303-d4002c07eae3", + }, + { + img: "https://images.unsplash.com/photo-1533105079780-92b9be482077", + }, + { + img: "https://images.unsplash.com/photo-1516483638261-f4dbaf036963", + }, + { + img: "https://images.unsplash.com/photo-1502791451862-7bd8c1df43a7", + }, + { + img: "https://plus.unsplash.com/premium_photo-1663047367140-91adf819d007", + }, + { + img: "https://images.unsplash.com/photo-1506197603052-3cc9c3a201bd", + }, + { + img: "https://images.unsplash.com/photo-1517760444937-f6397edcbbcd", + }, + { + img: "https://images.unsplash.com/photo-1518684079-3c830dcef090", + }, + { + img: "https://images.unsplash.com/photo-1505832018823-50331d70d237", + }, + { + img: "https://images.unsplash.com/photo-1524850011238-e3d235c7d4c9", + }, + { + img: "https://plus.unsplash.com/premium_photo-1661277758451-b5053309eea1", + }, + { + img: "https://images.unsplash.com/photo-1541410965313-d53b3c16ef17", + }, + { + img: "https://images.unsplash.com/photo-1528702748617-c64d49f918af", + }, + { + img: "https://images.unsplash.com/photo-1502003148287-a82ef80a6abc", + }, + { + img: "https://plus.unsplash.com/premium_photo-1661281272544-5204ea3a481a", + }, + { + img: "https://images.unsplash.com/photo-1503457574462-bd27054394c1", + }, + { + img: "https://images.unsplash.com/photo-1499363536502-87642509e31b", + }, + { + img: "https://images.unsplash.com/photo-1551918120-9739cb430c6d", + }, + { + img: "https://plus.unsplash.com/premium_photo-1661382219642-43e54f7e81d7", + }, + { + img: "https://images.unsplash.com/photo-1497262693247-aa258f96c4f5", + }, + { + img: "https://images.unsplash.com/photo-1525254134158-4fd5fdd45793", + }, + { + img: "https://plus.unsplash.com/premium_photo-1661274025419-4c54107d5c48", + }, + { + img: "https://images.unsplash.com/photo-1553697388-94e804e2f0f6", + }, + { + img: "https://images.unsplash.com/photo-1574260031597-bcd9eb192b4f", + }, + { + img: "https://images.unsplash.com/photo-1536323760109-ca8c07450053", + }, + { + img: "https://images.unsplash.com/photo-1527824404775-dce343118ebc", + }, + { + img: "https://images.unsplash.com/photo-1612278675615-7b093b07772d", + }, + { + img: "https://images.unsplash.com/photo-1522010675502-c7b3888985f6", + }, + { + img: "https://images.unsplash.com/photo-1501555088652-021faa106b9b", + }, + { + img: "https://plus.unsplash.com/premium_photo-1669223469435-27e091439169", + }, + { + img: "https://images.unsplash.com/photo-1506012787146-f92b2d7d6d96", + }, + { + img: "https://images.unsplash.com/photo-1511739001486-6bfe10ce785f", + }, + { + img: "https://images.unsplash.com/photo-1553342385-111fd6bc6ab3", + }, + { + img: "https://images.unsplash.com/photo-1516546453174-5e1098a4b4af", + }, + { + img: "https://images.unsplash.com/photo-1527142879-95b61a0b8226", + }, + { + img: "https://images.unsplash.com/photo-1520466809213-7b9a56adcd45", + }, + { + img: "https://images.unsplash.com/photo-1516939884455-1445c8652f83", + }, + { + img: "https://images.unsplash.com/photo-1545389336-cf090694435e", + }, + { + img: "https://plus.unsplash.com/premium_photo-1669223469455-b7b734c838f4", + }, + { + img: "https://images.unsplash.com/photo-1454391304352-2bf4678b1a7a", + }, + { + img: "https://images.unsplash.com/photo-1433838552652-f9a46b332c40", + }, + { + img: "https://images.unsplash.com/photo-1506125840744-167167210587", + }, + { + img: "https://images.unsplash.com/photo-1522199873717-bc67b1a5e32b", + }, + { + img: "https://images.unsplash.com/photo-1495904786722-d2b5a19a8535", + }, + { + img: "https://images.unsplash.com/photo-1614094082869-cd4e4b2905c7", + }, + { + img: "https://images.unsplash.com/photo-1474755032398-4b0ed3b2ae5c", + }, + { + img: "https://images.unsplash.com/photo-1501554728187-ce583db33af7", + }, + { + img: "https://images.unsplash.com/photo-1515859005217-8a1f08870f59", + }, + { + img: "https://images.unsplash.com/photo-1531141445733-14c2eb7d4c1f", + }, + { + img: "https://images.unsplash.com/photo-1500259783852-0ca9ce8a64dc", + }, + { + img: "https://images.unsplash.com/photo-1510662145379-13537db782dc", + }, + { + img: "https://images.unsplash.com/photo-1573790387438-4da905039392", + }, + { + img: "https://images.unsplash.com/photo-1512757776214-26d36777b513", + }, + { + img: "https://images.unsplash.com/photo-1518855706573-84de4022b69b", + }, + { + img: "https://images.unsplash.com/photo-1500049242364-5f500807cdd7", + }, + { + img: "https://images.unsplash.com/photo-1528759335187-3b683174c86a", + }, +]; +export const THUMBNAIL_PARAMS = "w=240&h=240&fit=crop&auto=format"; + +// Console styles. +export const CONSOLE_BASE_STYLES = [ + "font-size: 12px", + "padding: 4px", + "border: 2px solid #5a5a5a", + "color: white", +].join(";"); +export const CONSOLE_PRIMARY = [ + CONSOLE_BASE_STYLES, + "background-color: #13315a", +].join(";"); +export const CONSOLE_SUCCESS = [ + CONSOLE_BASE_STYLES, + "background-color: #385a4e", +].join(";"); +export const CONSOLE_ERROR = [ + CONSOLE_BASE_STYLES, + "background-color: #5a1a24", +].join(";"); + +// Layouts. +export const LAYOUT_4_COLUMNS = { + name: "Layout 4 columns", + columns: 4, + itemWidth: 240, + itemHeight: 240, +}; +export const LAYOUT_8_COLUMNS = { + name: "Layout 8 columns", + columns: 8, + itemWidth: 240, + itemHeight: 240, +}; +export const LAYOUTS = [LAYOUT_4_COLUMNS, LAYOUT_8_COLUMNS]; + +export const createImageFile = async (src) => + new Promise((resolve, reject) => { + const img = new Image(); + img.src = src; + img.onload = () => resolve(img); + img.onerror = () => reject(new Error("Failed to construct image.")); + }); + +export const loadImage = async (url) => { + try { + const response = await fetch(url); + if (!response.ok) { + throw new Error(String(response.status)); + } + + return await response.blob(); + } catch (e) { + console.log(`%cFETCHED_FAILED: ${e}`, CONSOLE_ERROR); + } +}; + +export const weakRefCache = (fetchImg) => { + const imgCache = new Map(); + const registry = new FinalizationRegistry(({ imgName, size, type }) => { + const cachedImg = imgCache.get(imgName); + if (cachedImg && !cachedImg.deref()) { + imgCache.delete(imgName); + console.log( + `%cCLEANED_IMAGE: Url: ${imgName}, Size: ${size}, Type: ${type}`, + CONSOLE_ERROR, + ); + + const logEl = document.createElement("div"); + logEl.classList.add("logger-item", "logger--error"); + logEl.innerHTML = `CLEANED_IMAGE: Url: ${imgName}, Size: ${size}, Type: ${type}`; + loggerContainerEl.appendChild(logEl); + loggerContainerEl.scrollTop = loggerContainerEl.scrollHeight; + } + }); + + return async (imgName) => { + const cachedImg = imgCache.get(imgName); + + if (cachedImg?.deref() !== undefined) { + console.log( + `%cCACHED_IMAGE: Url: ${imgName}, Size: ${cachedImg.size}, Type: ${cachedImg.type}`, + CONSOLE_SUCCESS, + ); + + const logEl = document.createElement("div"); + logEl.classList.add("logger-item", "logger--success"); + logEl.innerHTML = `CACHED_IMAGE: Url: ${imgName}, Size: ${cachedImg.size}, Type: ${cachedImg.type}`; + loggerContainerEl.appendChild(logEl); + loggerContainerEl.scrollTop = loggerContainerEl.scrollHeight; + + return cachedImg?.deref(); + } + + const newImg = await fetchImg(imgName); + console.log( + `%cFETCHED_IMAGE: Url: ${imgName}, Size: ${newImg.size}, Type: ${newImg.type}`, + CONSOLE_PRIMARY, + ); + + const logEl = document.createElement("div"); + logEl.classList.add("logger-item", "logger--primary"); + logEl.innerHTML = `FETCHED_IMAGE: Url: ${imgName}, Size: ${newImg.size}, Type: ${newImg.type}`; + loggerContainerEl.appendChild(logEl); + loggerContainerEl.scrollTop = loggerContainerEl.scrollHeight; + + imgCache.set(imgName, new WeakRef(newImg)); + registry.register(newImg, { + imgName, + size: newImg.size, + type: newImg.type, + }); + + return newImg; + }; +}; + +export const stateObj = { + loading: false, + drawing: true, + collageRendered: false, + currentLayout: LAYOUTS[0], + selectedImages: new Set(), +}; diff --git a/1-js/99-js-misc/index.md b/1-js/99-js-misc/index.md new file mode 100644 index 000000000..79cd72fe7 --- /dev/null +++ b/1-js/99-js-misc/index.md @@ -0,0 +1,2 @@ + +# Miscellaneous diff --git a/10-misc/12-mutation-observer/article.md b/10-misc/12-mutation-observer/article.md deleted file mode 100644 index 1045e87a8..000000000 --- a/10-misc/12-mutation-observer/article.md +++ /dev/null @@ -1,249 +0,0 @@ - -# Mutation observer - -`MutationObserver` is a built-in object that observes a DOM element and fires a callback in case of changes. - -We'll first see syntax, and then explore a real-world use case. - -## Syntax - -`MutationObserver` is easy to use. - -First, we create an observer with a callback-function: - -```js -let observer = new MutationObserver(callback); -``` - -And then attach it to a DOM node: - -```js -observer.observe(node, config); -``` - -`config` is an object with boolean options "what kind of changes to react on": -- `childList` -- changes in the direct children of `node`, -- `subtree` -- in all descendants of `node`, -- `attributes` -- attributes of `node`, -- `attributeOldValue` -- record the old value of attribute (infers `attributes`), -- `characterData` -- whether to observe `node.data` (text content), -- `characterDataOldValue` -- record the old value of `node.data` (infers `characterData`), -- `attributeFilter` -- an array of attribute names, to observe only selected ones. - -Then after any changes, the `callback` is executed, with a list of [MutationRecord](https://dom.spec.whatwg.org/#mutationrecord) objects as the first argument, and the observer itself as the second argument. - -[MutationRecord](https://dom.spec.whatwg.org/#mutationrecord) objects have properties: - -- `type` -- mutation type, one of - - `"attributes"` (attribute modified) - - `"characterData"` (data modified) - - `"childList"` (elements added/removed), -- `target` -- where the change occured: an element for "attributes", or text node for "characterData", or an element for a "childList" mutation, -- `addedNodes/removedNodes` -- nodes that were added/removed, -- `previousSibling/nextSibling` -- the previous and next sibling to added/removed nodes, -- `attributeName/attributeNamespace` -- the name/namespace (for XML) of the changed attribute, -- `oldValue` -- the previous value, only for attribute or text changes. - - -For example, here's a `<div>` with `contentEditable` attribute. That attribute allows us to focus on it and edit. - -```html run -<div contentEditable id="elem">Edit <b>me</b>, please</div> - -<script> -let observer = new MutationObserver(mutationRecords => { - console.log(mutationRecords); // console.log(the changes) -}); -observer.observe(elem, { - // observe everything except attributes - childList: true, - subtree: true, - characterDataOldValue: true -}); -</script> -``` - -If we change the text inside `<b>me</b>`, we'll get a single mutation: - -```js -mutationRecords = [{ - type: "characterData", - oldValue: "me", - target: <text node>, - // other properties empty -}]; -``` - -If we select and remove the `<b>me</b>` altogether, we'll get multiple mutations: - -```js -mutationRecords = [{ - type: "childList", - target: <div#elem>, - removedNodes: [<b>], - nextSibling: <text node>, - previousSibling: <text node> - // other properties empty -}, { - type: "characterData" - target: <text node> - // ...details depend on how the browser handles the change - // it may coalesce two adjacent text nodes "Edit " and ", please" into one node - // or it can just delete the extra space after "Edit". - // may be one mutation or a few -}]; -``` - -## Observer use case - -When `MutationObserver` is needed? Is there a scenario when such thing can be useful? - -Sure, we can track something like `contentEditable` and create "undo/redo" stack, but here's an example where `MutationObserver` is good from architectural standpoint. - -Let's say we're making a website about programming, like this one. Naturally, articles and other materials may contain source code snippets. - -An HTML code snippet looks like this: -```html -... -<pre class="language-javascript"><code> - // here's the code - let hello = "world"; -</code></pre> -... -``` - -There's also a JavaScript highlighting library, e.g. [Prism.js](https://prismjs.com/). A call to `Prism.highlightElem(pre)` examines the contents of such `pre` elements and adds colored syntax highlighting, similar to what you in examples here, this page. - -Generally, when a page loads, e.g. at the bottom of the page, we can search for elements `pre[class*="language"]` and call `Prism.highlightElem` on them: - -```js -// highlight all code snippets on the page -document.querySelectorAll('pre[class*="language"]').forEach(Prism.highlightElem); -``` - -Now the `<pre>` snippet looks like this (without line numbers by default): - -```js -// here's the code -let hello = "world"; -``` - -Everything's simple so far, right? There are `<pre>` code snippets in HTML, we highlight them. - -Now let's go on. Let's say we're going to dynamically fetch materials from a server. We'll study methods for that [later in the tutorial](info:fetch-basics). For now it only matters that we fetch an HTML article from a webserver and display it on demand: - -```js -let article = /* fetch new content from server */ -articleElem.innerHTML = article; -``` - -The new `article` HTML may contain code snippets. We need to call `Prism.highlightElem` on them, otherwise they won't get highlighted. - -**Who's responsibility is to call `Prism.highlightElem` for a dynamically loaded article?** - -We could append that call to the code that loads an article, like this: - -```js -let article = /* fetch new content from server */ -articleElem.innerHTML = article; - -*!* -let snippets = articleElem.querySelectorAll('pre[class*="language-"]'); -snippets.forEach(Prism.highlightElem); -*/!* -``` - -...But imagine, we have many places where we load contents with code: articles, quizzes, forum posts. Do we need to put the highlighting call everywhere? Then we need to be careful, not to forget about it. - -And what if we load the content into a third-party engine? E.g. we have a forum written by someone else, that loads contents dynamically, and we'd like to add syntax highlighting to it. No one likes to patch third-party scripts. - -Luckily, there's another option. - -We can use `MutationObserver` to automatically detect code snippets inserted in the page and highlight them. - -So we'll handle the highlighting functionality in one place, relieving us from the need to integrate it. - -## Dynamic highlight demo - -Here's the working example. - -If you run this code, it starts observing the element below and highlighting any code snippets that appear there: - -```js run -let observer = new MutationObserver(mutations => { - - for(let mutation of mutations) { - // examine new nodes - - for(let node of mutation.addedNodes) { - // skip newly added text nodes - if (!(node instanceof HTMLElement)) continue; - - // check the inserted element for being a code snippet - if (node.matches('pre[class*="language-"]')) { - Prism.highlightElement(node); - } - - // search its subtree for code snippets - for(let elem of node.querySelectorAll('pre[class*="language-"]')) { - Prism.highlightElement(elem); - } - } - } - -}); - -let demoElem = document.getElementById('highlight-demo'); - -observer.observe(demoElem, {childList: true, subtree: true}); -``` - -<p id="highlight-demo" style="border: 1px solid #ddd">Demo element with <code>id="highlight-demo"</code>, obverved by the example above.</p> - -The code below populates `innerHTML`. If you've run the code above, snippets will get highlighted: - -```js run -let demoElem = document.getElementById('highlight-demo'); - -// dynamically insert content with code snippets -demoElem.innerHTML = `A code snippet is below: - <pre class="language-javascript"><code> let hello = "world!"; </code></pre> - <div>Another one:</div> - <div> - <pre class="language-css"><code>.class { margin: 5px; } </code></pre> - </div> -`; -``` - -Now we have `MutationObserver` that can track all highlighting in observed elements or the whole `document`. We can add/remove code snippets in HTML without thinking about it. - - -## Garbage collection - -Observers use weak references to nodes internally. That is: if a node is removed from DOM, and becomes unreachable, then it becomes garbage collected, an observer doesn't prevent that. - -Still, we can release observers any time: - -- `observer.disconnect()` -- stops the observation. - -Additionally: - -- `mutationRecords = observer.takeRecords()` -- gets a list of unprocessed mutation records, those that happened, but the callback did not handle them. - -```js -// we're going to disconnect the observer -// it might have not yet handled some mutations -let mutationRecords = observer.takeRecords(); -// process mutationRecords - -// now all handled, disconnect -observer.disconnect(); -``` - -## Summary - -`MutationObserver` can react on changes in DOM: attributes, added/removed elements, text content. - -We can use it to track changes introduced by other parts of our own or 3rd-party code. - -For example, to post-process dynamically inserted content, as demo `innerHTML`, like highlighting in the example above. diff --git a/10-misc/index.md b/10-misc/index.md deleted file mode 100644 index 65ab3188a..000000000 --- a/10-misc/index.md +++ /dev/null @@ -1,4 +0,0 @@ - -# Miscellaneous - -Not yet categorized articles. diff --git a/2-ui/1-document/01-browser-environment/article.md b/2-ui/1-document/01-browser-environment/article.md index 0e123f581..eedc28fb3 100644 --- a/2-ui/1-document/01-browser-environment/article.md +++ b/2-ui/1-document/01-browser-environment/article.md @@ -1,12 +1,12 @@ # Browser environment, specs -The JavaScript language was initially created for web browsers. Since then, it has evolved and become a language with many uses and platforms. +The JavaScript language was initially created for web browsers. Since then, it has evolved into a language with many uses and platforms. -A platform may be a browser, or a web-server, or a washing machine, or another *host*. Each of them provides platform-specific functionality. The JavaScript specification calls that a *host environment*. +A platform may be a browser, or a web-server or another *host*, or even a "smart" coffee machine if it can run JavaScript. Each of these provides platform-specific functionality. The JavaScript specification calls that a *host environment*. -A host environment provides platform-specific objects and functions additional to the language core. Web browsers give a means to control web pages. Node.js provides server-side features, and so on. +A host environment provides its own objects and functions in addition to the language core. Web browsers give a means to control web pages. Node.js provides server-side features, and so on. -Here's a bird's-eye view of what we have when JavaScript runs in a web-browser: +Here's a bird's-eye view of what we have when JavaScript runs in a web browser:  @@ -15,28 +15,30 @@ There's a "root" object called `window`. It has two roles: 1. First, it is a global object for JavaScript code, as described in the chapter <info:global-object>. 2. Second, it represents the "browser window" and provides methods to control it. -For instance, here we use it as a global object: +For instance, we can use it as a global object: -```js run +```js run global function sayHi() { alert("Hello"); } -// global functions are accessible as properties of window +// global functions are methods of the global object: window.sayHi(); ``` -And here we use it as a browser window, to see the window height: +And we can use it as a browser window, to show the window height: ```js run alert(window.innerHeight); // inner window height ``` -There are more window-specific methods and properties, we'll cover them later. +There are more window-specific methods and properties, which we'll cover later. + +## DOM (Document Object Model) -## Document Object Model (DOM) +The Document Object Model, or DOM for short, represents all page content as objects that can be modified. -The `document` object gives access to the page content. We can change or create anything on the page using it. +The `document` object is the main "entry point" to the page. We can change or create anything on the page using it. For instance: ```js run @@ -47,58 +49,44 @@ document.body.style.background = "red"; setTimeout(() => document.body.style.background = "", 1000); ``` -Here we used `document.body.style`, but there's much, much more. Properties and methods are described in the specification. There happen to be two working groups who develop it: - -1. [W3C](https://en.wikipedia.org/wiki/World_Wide_Web_Consortium) -- the documentation is at <https://www.w3.org/TR/dom>. -2. [WhatWG](https://en.wikipedia.org/wiki/WHATWG), publishing at <https://dom.spec.whatwg.org>. - -As it happens, the two groups don't always agree, so it's like we have two sets of standards. But they are very similar and eventually things merge. The documentation that you can find on the given resources is very similar, with about a 99% match. There are very minor differences that you probably won't notice. - -Personally, I find <https://dom.spec.whatwg.org> more pleasant to use. - -In the ancient past, there was no standard at all -- each browser implemented however it wanted. Different browsers had different sets, methods, and properties for the same thing, and developers had to write different code for each of them. Dark, messy times. - -Even now we can sometimes meet old code that uses browser-specific properties and works around incompatibilities. But, in this tutorial we'll use modern stuff: there's no need to learn old things until you really need to (chances are high that you won't). - -Then the DOM standard appeared, in an attempt to bring everyone to an agreement. The first version was "DOM Level 1", then it was extended by DOM Level 2, then DOM Level 3, and now it's reached DOM Level 4. People from WhatWG group got tired of version numbers and are calling it just "DOM", without a number. So we'll do the same. +Here, we used `document.body.style`, but there's much, much more. Properties and methods are described in the specification: [DOM Living Standard](https://dom.spec.whatwg.org). ```smart header="DOM is not only for browsers" -The DOM specification explains the structure of a document and provides objects to manipulate it. There are non-browser instruments that use it too. +The DOM specification explains the structure of a document and provides objects to manipulate it. There are non-browser instruments that use DOM too. -For instance, server-side tools that download HTML pages and process them use the DOM. They may support only a part of the specification though. +For instance, server-side scripts that download HTML pages and process them can also use the DOM. They may support only a part of the specification though. ``` ```smart header="CSSOM for styling" -CSS rules and stylesheets are not structured like HTML. There's a separate specification [CSSOM](https://www.w3.org/TR/cssom-1/) that explains how they are represented as objects, and how to read and write them. +There's also a separate specification, [CSS Object Model (CSSOM)](https://www.w3.org/TR/cssom-1/) for CSS rules and stylesheets, that explains how they are represented as objects, and how to read and write them. -CSSOM is used together with DOM when we modify style rules for the document. In practice though, CSSOM is rarely required, because usually CSS rules are static. We rarely need to add/remove CSS rules from JavaScript, so we won't cover it right now. +The CSSOM is used together with the DOM when we modify style rules for the document. In practice though, the CSSOM is rarely required, because we rarely need to modify CSS rules from JavaScript (usually we just add/remove CSS classes, not modify their CSS rules), but that's also possible. ``` -## BOM (part of HTML spec) +## BOM (Browser Object Model) -Browser Object Model (BOM) are additional objects provided by the browser (host environment) to work with everything except the document. +The Browser Object Model (BOM) represents additional objects provided by the browser (host environment) for working with everything except the document. For instance: -- The [navigator](mdn:api/Window/navigator) object provides background information about the browser and the operating system. There are many properties, but the two most widely known are: `navigator.userAgent` -- about the current browser, and `navigator.platform` -- about the platform (can help to differ between Windows/Linux/Mac etc). +- The [navigator](mdn:api/Window/navigator) object provides background information about the browser and the operating system. There are many properties, but the two most widely known are: `navigator.userAgent` -- about the current browser, and `navigator.platform` -- about the platform (can help to differentiate between Windows/Linux/Mac etc). - The [location](mdn:api/Window/location) object allows us to read the current URL and can redirect the browser to a new one. Here's how we can use the `location` object: ```js run alert(location.href); // shows current URL -if (confirm("Go to wikipedia?")) { +if (confirm("Go to Wikipedia?")) { location.href = "https://wikipedia.org"; // redirect the browser to another URL } ``` -Functions `alert/confirm/prompt` are also a part of BOM: they are directly not related to the document, but represent pure browser methods of communicating with the user. - +The functions `alert/confirm/prompt` are also a part of the BOM: they are not directly related to the document, but represent pure browser methods for communicating with the user. -```smart header="HTML specification" -BOM is the part of the general [HTML specification](https://html.spec.whatwg.org). +```smart header="Specifications" +The BOM is a part of the general [HTML specification](https://html.spec.whatwg.org). -Yes, you heard that right. The HTML spec at <https://html.spec.whatwg.org> is not only about the "HTML language" (tags, attributes), but also covers a bunch of objects, methods and browser-specific DOM extensions. That's "HTML in broad terms". +Yes, you heard that right. The HTML spec at <https://html.spec.whatwg.org> is not only about the "HTML language" (tags, attributes), but also covers a bunch of objects, methods, and browser-specific DOM extensions. That's "HTML in broad terms". Also, some parts have additional specs listed at <https://spec.whatwg.org>. ``` ## Summary @@ -106,16 +94,20 @@ Yes, you heard that right. The HTML spec at <https://html.spec.whatwg.org> is no Talking about standards, we have: DOM specification -: Describes the document structure, manipulations and events, see <https://dom.spec.whatwg.org>. +: Describes the document structure, manipulations, and events, see <https://dom.spec.whatwg.org>. CSSOM specification -: Describes stylesheets and style rules, manipulations with them and their binding to documents, see <https://www.w3.org/TR/cssom-1/>. +: Describes stylesheets and style rules, manipulations with them, and their binding to documents, see <https://www.w3.org/TR/cssom-1/>. HTML specification : Describes the HTML language (e.g. tags) and also the BOM (browser object model) -- various browser functions: `setTimeout`, `alert`, `location` and so on, see <https://html.spec.whatwg.org>. It takes the DOM specification and extends it with many additional properties and methods. -Now we'll get down to learning DOM, because the document plays the central role in the UI. +Additionally, some classes are described separately at <https://spec.whatwg.org/>. + +Please note these links, as there's so much to learn that it's impossible to cover everything and remember it all. + +When you'd like to read about a property or a method, the Mozilla manual at <https://developer.mozilla.org/en-US/> is also a nice resource, but the corresponding spec may be better: it's more complex and longer to read, but will make your fundamental knowledge sound and complete. -Please note the links above, as there's so much stuff to learn it's impossible to cover and remember everything. +To find something, it's often convenient to use an internet search "WHATWG [term]" or "MDN [term]", e.g <https://google.com?q=whatwg+localstorage>, <https://google.com?q=mdn+localstorage>. -When you'd like to read about a property or a method, the Mozilla manual at <https://developer.mozilla.org/en-US/search> is a nice resource, but reading the corresponding spec may be better: it's more complex and longer to read, but will make your fundamental knowledge sound and complete. +Now, we'll get down to learning the DOM, because the document plays the central role in the UI. diff --git a/2-ui/1-document/02-dom-nodes/article.md b/2-ui/1-document/02-dom-nodes/article.md index 6bb34ff8c..f7f2be91d 100644 --- a/2-ui/1-document/02-dom-nodes/article.md +++ b/2-ui/1-document/02-dom-nodes/article.md @@ -6,26 +6,42 @@ libs: # DOM tree -The backbone of an HTML document are tags. +The backbone of an HTML document is tags. -According to Document Object Model (DOM), every HTML-tag is an object. Nested tags are called "children" of the enclosing one. +According to the Document Object Model (DOM), every HTML tag is an object. Nested tags are "children" of the enclosing one. The text inside a tag is an object as well. -The text inside a tag it is an object as well. +All these objects are accessible using JavaScript, and we can use them to modify the page. -All these objects are accessible using JavaScript. +For example, `document.body` is the object representing the `<body>` tag. -## An example of DOM +Running this code will make the `<body>` red for 3 seconds: -For instance, let's explore the DOM for this document: +```js run +document.body.style.background = 'red'; // make the background red + +setTimeout(() => document.body.style.background = '', 3000); // return back +``` + +Here we used `style.background` to change the background color of `document.body`, but there are many other properties, such as: + +- `innerHTML` -- HTML contents of the node. +- `offsetWidth` -- the node width (in pixels) +- ...and so on. + +Soon we'll learn more ways to manipulate the DOM, but first we need to know about its structure. + +## An example of the DOM + +Let's start with the following simple document: ```html run no-beautify <!DOCTYPE HTML> <html> <head> - <title>About elks</title> + <title>About elk</title> </head> <body> - The truth about elks. + The truth about elk. </body> </html> ``` @@ -35,7 +51,7 @@ The DOM represents HTML as a tree structure of tags. Here's how it looks: <div class="domtree"></div> <script> -let node1 = {"name":"HTML","nodeType":1,"children":[{"name":"HEAD","nodeType":1,"children":[{"name":"#text","nodeType":3,"content":"\n "},{"name":"TITLE","nodeType":1,"children":[{"name":"#text","nodeType":3,"content":"About elks"}]},{"name":"#text","nodeType":3,"content":"\n "}]},{"name":"#text","nodeType":3,"content":"\n "},{"name":"BODY","nodeType":1,"children":[{"name":"#text","nodeType":3,"content":"\n The truth about elks."}]}]} +let node1 = {"name":"HTML","nodeType":1,"children":[{"name":"HEAD","nodeType":1,"children":[{"name":"#text","nodeType":3,"content":"\n "},{"name":"TITLE","nodeType":1,"children":[{"name":"#text","nodeType":3,"content":"About elk"}]},{"name":"#text","nodeType":3,"content":"\n"}]},{"name":"#text","nodeType":3,"content":"\n"},{"name":"BODY","nodeType":1,"children":[{"name":"#text","nodeType":3,"content":"\n The truth about elk.\n"}]}]} drawHtmlTree(node1, 'div.domtree', 690, 320); </script> @@ -44,56 +60,57 @@ drawHtmlTree(node1, 'div.domtree', 690, 320); On the picture above, you can click on element nodes and their children will open/collapse. ``` -Tags are called *element nodes* (or just elements). Nested tags become children of the enclosing ones. As a result we have a tree of elements: `<html>` is at the root, then `<head>` and `<body>` are its children, etc. +Every tree node is an object. + +Tags are *element nodes* (or just elements) and form the tree structure: `<html>` is at the root, then `<head>` and `<body>` are its children, etc. The text inside elements forms *text nodes*, labelled as `#text`. A text node contains only a string. It may not have children and is always a leaf of the tree. -For instance, the `<title>` tag has the text `"About elks"`. +For instance, the `<title>` tag has the text `"About elk"`. Please note the special characters in text nodes: - a newline: `↵` (in JavaScript known as `\n`) - a space: `␣` -Spaces and newlines -- are totally valid characters, they form text nodes and become a part of the DOM. So, for instance, in the example above the `<head>` tag contains some spaces before `<title>`, and that text becomes a `#text` node (it contains a newline and some spaces only). +Spaces and newlines are totally valid characters, like letters and digits. They form text nodes and become a part of the DOM. So, for instance, in the example above the `<head>` tag contains some spaces before `<title>`, and that text becomes a `#text` node (it contains a newline and some spaces only). There are only two top-level exclusions: -1. Spaces and newlines before `<head>` are ignored for historical reasons, -2. If we put something after `</body>`, then that is automatically moved inside the `body`, at the end, as the HTML spec requires that all content must be inside `<body>`. So there may be no spaces after `</body>`. +1. Spaces and newlines before `<head>` are ignored for historical reasons. +2. If we put something after `</body>`, then that is automatically moved inside the `body`, at the end, as the HTML spec requires that all content must be inside `<body>`. So there can't be any spaces after `</body>`. -In other cases everything's straightforward -- if there are spaces (just like any character) in the document, then they become text nodes in DOM, and if we remove them, then there won't be any. +In other cases everything's straightforward -- if there are spaces (just like any character) in the document, then they become text nodes in the DOM, and if we remove them, then there won't be any. Here are no space-only text nodes: ```html no-beautify <!DOCTYPE HTML> -<html><head><title>About elks</title></head><body>The truth about elks.</body></html> +<html><head><title>About elk</title></head><body>The truth about elk.</body></html> ``` <div class="domtree"></div> <script> -let node2 = {"name":"HTML","nodeType":1,"children":[{"name":"HEAD","nodeType":1,"children":[{"name":"TITLE","nodeType":1,"children":[{"name":"#text","nodeType":3,"content":"About elks"}]}]},{"name":"BODY","nodeType":1,"children":[{"name":"#text","nodeType":3,"content":"The truth about elks."}]}]} +let node2 = {"name":"HTML","nodeType":1,"children":[{"name":"HEAD","nodeType":1,"children":[{"name":"TITLE","nodeType":1,"children":[{"name":"#text","nodeType":3,"content":"About elk"}]}]},{"name":"BODY","nodeType":1,"children":[{"name":"#text","nodeType":3,"content":"The truth about elk."}]}]} drawHtmlTree(node2, 'div.domtree', 690, 210); </script> -```smart header="Edge spaces and in-between empty text are usually hidden in tools" +```smart header="Spaces at string start/end and space-only text nodes are usually hidden in tools" Browser tools (to be covered soon) that work with DOM usually do not show spaces at the start/end of the text and empty text nodes (line-breaks) between tags. -That's because they are mainly used to decorate HTML, and do not affect how it is shown (in most cases). +Developer tools save screen space this way. -On further DOM pictures we'll sometimes omit them where they are irrelevant, to keep things short. +On further DOM pictures we'll sometimes omit them when they are irrelevant. Such spaces usually do not affect how the document is displayed. ``` - ## Autocorrection -If the browser encounters malformed HTML, it automatically corrects it when making DOM. +If the browser encounters malformed HTML, it automatically corrects it when making the DOM. -For instance, the top tag is always `<html>`. Even if it doesn't exist in the document -- it will exist in the DOM, the browser will create it. The same goes for `<body>`. +For instance, the top tag is always `<html>`. Even if it doesn't exist in the document, it will exist in the DOM, because the browser will create it. The same goes for `<body>`. -As an example, if the HTML file is a single word `"Hello"`, the browser will wrap it into `<html>` and `<body>`, add the required `<head>`, and the DOM will be: +As an example, if the HTML file is the single word `"Hello"`, the browser will wrap it into `<html>` and `<body>`, and add the required `<head>`, and the DOM will be: <div class="domtree"></div> @@ -106,7 +123,7 @@ drawHtmlTree(node3, 'div.domtree', 690, 150); While generating the DOM, browsers automatically process errors in the document, close tags and so on. -Such an "invalid" document: +A document with unclosed tags: ```html no-beautify <p>Hello @@ -115,7 +132,7 @@ Such an "invalid" document: <li>Dad ``` -...Will become a normal DOM, as the browser reads tags and restores the missing parts: +...will become a normal DOM as the browser reads tags and restores the missing parts: <div class="domtree"></div> @@ -126,7 +143,7 @@ drawHtmlTree(node4, 'div.domtree', 690, 360); </script> ````warn header="Tables always have `<tbody>`" -An interesting "special case" is tables. By the DOM specification they must have `<tbody>`, but HTML text may (officially) omit it. Then the browser creates `<tbody>` in DOM automatically. +An interesting "special case" is tables. By DOM specification they must have `<tbody>` tag, but HTML text may omit it. Then the browser creates `<tbody>` in the DOM automatically. For the HTML: @@ -143,18 +160,20 @@ let node5 = {"name":"TABLE","nodeType":1,"children":[{"name":"TBODY","nodeType": drawHtmlTree(node5, 'div.domtree', 600, 200); </script> -You see? The `<tbody>` appeared out of nowhere. You should keep this in mind while working with tables to avoid surprises. +You see? The `<tbody>` appeared out of nowhere. We should keep this in mind while working with tables to avoid surprises. ```` ## Other node types -Let's add more tags and a comment to the page: +There are some other node types besides elements and text nodes. + +For example, comments: ```html <!DOCTYPE HTML> <html> <body> - The truth about elks. + The truth about elk. <ol> <li>An elk is a smart</li> *!* @@ -169,18 +188,18 @@ Let's add more tags and a comment to the page: <div class="domtree"></div> <script> -let node6 = {"name":"HTML","nodeType":1,"children":[{"name":"HEAD","nodeType":1,"children":[]},{"name":"BODY","nodeType":1,"children":[{"name":"#text","nodeType":3,"content":"\n The truth about elks.\n "},{"name":"OL","nodeType":1,"children":[{"name":"#text","nodeType":3,"content":"\n "},{"name":"LI","nodeType":1,"children":[{"name":"#text","nodeType":3,"content":"An elk is a smart"}]},{"name":"#text","nodeType":3,"content":"\n "},{"name":"#comment","nodeType":8,"content":"comment"},{"name":"#text","nodeType":3,"content":"\n "},{"name":"LI","nodeType":1,"children":[{"name":"#text","nodeType":3,"content":"...and cunning animal!"}]},{"name":"#text","nodeType":3,"content":"\n "}]},{"name":"#text","nodeType":3,"content":"\n \n"}]}]}; +let node6 = {"name":"HTML","nodeType":1,"children":[{"name":"HEAD","nodeType":1,"children":[]},{"name":"BODY","nodeType":1,"children":[{"name":"#text","nodeType":3,"content":"\n The truth about elk.\n "},{"name":"OL","nodeType":1,"children":[{"name":"#text","nodeType":3,"content":"\n "},{"name":"LI","nodeType":1,"children":[{"name":"#text","nodeType":3,"content":"An elk is a smart"}]},{"name":"#text","nodeType":3,"content":"\n "},{"name":"#comment","nodeType":8,"content":"comment"},{"name":"#text","nodeType":3,"content":"\n "},{"name":"LI","nodeType":1,"children":[{"name":"#text","nodeType":3,"content":"...and cunning animal!"}]},{"name":"#text","nodeType":3,"content":"\n "}]},{"name":"#text","nodeType":3,"content":"\n\n\n"}]}]}; drawHtmlTree(node6, 'div.domtree', 690, 500); </script> -Here we see a new tree node type -- *comment node*, labeled as `#comment`. +We can see here a new tree node type -- *comment node*, labeled as `#comment`, between two text nodes. We may think -- why is a comment added to the DOM? It doesn't affect the visual representation in any way. But there's a rule -- if something's in HTML, then it also must be in the DOM tree. **Everything in HTML, even comments, becomes a part of the DOM.** -Even the `<!DOCTYPE...>` directive at the very beginning of HTML is also a DOM node. It's in the DOM tree right before `<html>`. We are not going to touch that node, we even don't draw it on diagrams for that reason, but it's there. +Even the `<!DOCTYPE...>` directive at the very beginning of HTML is also a DOM node. It's in the DOM tree right before `<html>`. Few people know about that. We are not going to touch that node, we even don't draw it on diagrams, but it's there. The `document` object that represents the whole document is, formally, a DOM node as well. @@ -189,31 +208,29 @@ There are [12 node types](https://dom.spec.whatwg.org/#node). In practice we usu 1. `document` -- the "entry point" into DOM. 2. element nodes -- HTML-tags, the tree building blocks. 3. text nodes -- contain text. -4. comments -- sometimes we can put the information there, it won't be shown, but JS can read it from the DOM. +4. comments -- sometimes we can put information there, it won't be shown, but JS can read it from the DOM. ## See it for yourself -To see the DOM structure in real-time, try [Live DOM Viewer](http://software.hixie.ch/utilities/js/live-dom-viewer/). Just type in the document, and it will show up DOM at an instant. - -## In the browser inspector +To see the DOM structure in real-time, try [Live DOM Viewer](https://software.hixie.ch/utilities/js/live-dom-viewer/). Just type in the document, and it will show up as a DOM at an instant. Another way to explore the DOM is to use the browser developer tools. Actually, that's what we use when developing. -To do so, open the web-page [elks.html](elks.html), turn on the browser developer tools and switch to the Elements tab. +To do so, open the web page [elk.html](elk.html), turn on the browser developer tools and switch to the Elements tab. It should look like this: - + You can see the DOM, click on elements, see their details and so on. Please note that the DOM structure in developer tools is simplified. Text nodes are shown just as text. And there are no "blank" (space only) text nodes at all. That's fine, because most of the time we are interested in element nodes. -Clicking the <span class="devtools" style="background-position:-328px -124px"></span> button in the left-upper corner allows to choose a node from the webpage using a mouse (or other pointer devices) and "inspect" it (scroll to it in the Elements tab). This works great when we have a huge HTML page (and corresponding huge DOM) and would like to see the place of a particular element in it. +Clicking the <span class="devtools" style="background-position:-328px -124px"></span> button in the left-upper corner allows us to choose a node from the webpage using a mouse (or other pointer devices) and "inspect" it (scroll to it in the Elements tab). This works great when we have a huge HTML page (and corresponding huge DOM) and would like to see the place of a particular element in it. Another way to do it would be just right-clicking on a webpage and selecting "Inspect" in the context menu. - + At the right part of the tools there are the following subtabs: - **Styles** -- we can see CSS applied to the current element rule by rule, including built-in rules (gray). Almost everything can be edited in-place, including the dimensions/margins/paddings of the box below. @@ -225,22 +242,26 @@ The best way to study them is to click around. Most values are editable in-place ## Interaction with console -As we explore the DOM, we also may want to apply JavaScript to it. Like: get a node and run some code to modify it, to see how it looks. Here are few tips to travel between the Elements tab and the console. +As we work the DOM, we also may want to apply JavaScript to it. Like: get a node and run some code to modify it, to see the result. Here are few tips to travel between the Elements tab and the console. + +For the start: -- Select the first `<li>` in the Elements tab. -- Press `key:Esc` -- it will open console right below the Elements tab. +1. Select the first `<li>` in the Elements tab. +2. Press `key:Esc` -- it will open console right below the Elements tab. Now the last selected element is available as `$0`, the previously selected is `$1` etc. We can run commands on them. For instance, `$0.style.background = 'red'` makes the selected list item red, like this: - + + +That's how to get a node from Elements in Console. -From the other side, if we're in console and have a variable referencing a DOM node, then we can use the command `inspect(node)` to see it in the Elements pane. +There's also a road back. If there's a variable referencing a DOM node, then we can use the command `inspect(node)` in Console to see it in the Elements pane. -Or we can just output it in the console and explore "at-place", like `document.body` below: +Or we can just output the DOM node in the console and explore "in-place", like `document.body` below: - + That's for debugging purposes of course. From the next chapter on we'll access and modify DOM using JavaScript. @@ -258,4 +279,4 @@ We can use developer tools to inspect DOM and modify it manually. Here we covered the basics, the most used and important actions to start with. There's an extensive documentation about Chrome Developer Tools at <https://developers.google.com/web/tools/chrome-devtools>. The best way to learn the tools is to click here and there, read menus: most options are obvious. Later, when you know them in general, read the docs and pick up the rest. -DOM nodes have properties and methods that allow to travel between them, modify, move around the page and more. We'll get down to them in the next chapters. +DOM nodes have properties and methods that allow us to travel between them, modify them, move around the page, and more. We'll get down to them in the next chapters. diff --git a/2-ui/1-document/02-dom-nodes/domconsole0.png b/2-ui/1-document/02-dom-nodes/domconsole0.png deleted file mode 100644 index 121c11d75..000000000 Binary files a/2-ui/1-document/02-dom-nodes/domconsole0.png and /dev/null differ diff --git a/2-ui/1-document/02-dom-nodes/domconsole0.svg b/2-ui/1-document/02-dom-nodes/domconsole0.svg new file mode 100644 index 000000000..eb99f193f --- /dev/null +++ b/2-ui/1-document/02-dom-nodes/domconsole0.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="699" height="450" viewBox="0 0 699 450"><defs><style>@import url(https://fonts.googleapis.com/css?family=Open+Sans:bold,italic,bolditalic%7CPT+Mono);@font-face{font-family:'PT Mono';font-weight:700;font-style:normal;src:local('PT MonoBold'),url(/font/PTMonoBold.woff2) format('woff2'),url(/font/PTMonoBold.woff) format('woff'),url(/font/PTMonoBold.ttf) format('truetype')}</style></defs><defs><path id="rect-1" d="M0 0h699v450H0z"/><path id="path-2" d="M72 305v21.429l5.25-5.358L81.625 330h1.75s1.13-1.161.875-1.786c-1.203-2.947-4.375-8.928-4.375-8.928H86L72 305z"/><filter id="filter-3" width="195.6%" height="153.8%" x="-42.9%" y="-25.8%" filterUnits="objectBoundingBox"><feMorphology in="SourceAlpha" operator="dilate" radius="1" result="shadowSpreadOuter1"/><feOffset dy="1" in="shadowSpreadOuter1" result="shadowOffsetOuter1"/><feGaussianBlur in="shadowOffsetOuter1" result="shadowBlurOuter1" stdDeviation="1.5"/><feComposite in="shadowBlurOuter1" in2="SourceAlpha" operator="out" result="shadowBlurOuter1"/><feColorMatrix in="shadowBlurOuter1" values="0 0 0 0 0.0941176471 0 0 0 0 0.0901960784 0 0 0 0 0.0901960784 0 0 0 1 0"/></filter></defs><g id="dom" fill="none" fill-rule="evenodd" stroke="none" stroke-width="1"><g id="domconsole0.svg"><g id="Bitmap"><image width="699" height="450" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABXYAAAOECAYAAAAFQmncAAAAAXNSR0IArs4c6QAAAERlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAA6ABAAMAAAABAAEAAKACAAQAAAABAAAFdqADAAQAAAABAAADhAAAAACmbANtAABAAElEQVR4AezdCbytU9048LXvaChDROYQitIgGTOXJGlEKUXl3+BVUqTB0JuKQoVEA2UeGpBkTOilDKGUmUyZ5+FO5+z/+j3us++z9z3zcJ199nd9PufuZ1zPWt/13Ft+Z+3fqtVzSQoBAgQIECBAgAABAgQIECBAgAABAgQItI3AhLZpqYYSIECAAAECBAgQIECAAAECBAgQIECAQCEgsOtFIECAAAECBAgQIECAAAECBAgQIECAQJsJCOy22YBpLgECBAgQIECAAAECBAgQIECAAAECBAR2vQMECBAgQIAAAQIECBAgQIAAAQIECBBoMwGB3TYbMM0lQIAAAQIECBAgQIAAAQIECBAgQKCzBbq6ulKtnktnM+g9AQIECBAgQIAAAQIECBAgQIAAAQIE2kvAjN32Gi+tJUCAAAECBAgQIECAAAECBAgQIECAQBLY9RIQIECAAAECBAgQIECAAAECBAgQIECgzQQEdttswDSXAAECBAgQIECAAAECBAgQIECAAAECArveAQIECBAgQIAAAQIECBAgQIAAAQIECLSRQCybJrDbRgOmqQQIECBAgAABAgQIECBAgAABAgQIEIjAbi3/UUdBgAABAgQIECBAgAABAgQIECBAgAABAu0jYMZu+4yVlhIgQIAAAQIECBAgQIAAAQIECBAgQKAQENj1IhAgQIAAAQIECBAgQIAAAQIECBAgQKDNBAR222zANJcAAQIECBAgQIAAAQIECBAgQIAAgc4W6O7utnhaZ78Cek+AAAECBAgQIECAAAECBAgQIECAQLsJ1Go1gd12GzTtJUCAAAECBAgQIECAAAECBAgQIECgswUEdjt7/PWeAAECBAgQIECAAAECBAgQIECAAIE2FRiTOXZnzZqVHnjggTYlHVvNfuaZZ9KTTz45thqVWzN9+vT08MMPj7l2tUuDbr311nTXXXf12Vy+ffI4SYAAAQIECBAgQIAAAQIECBBoa4FJQ239H//4x3TFFVcM9fbGfQsttFDac8890xNPPJH+9Kc/pXPOOSeddtppaYcddkjHHHNM4zobAxe455570vnnn5/OPvvsdOaZZ6YTTjgh7bjjjgOvYJSufPTRR9PFF1+c4t05/fTT02677Za+/e1vj9LTxle1M2fOTH/961/TeeedV/z9uOWWW9JBBx2U9tprr0ZHn3322XTppZemc889N/32t79NSyyxRLrmmmsa520QIECAAAECBAgQIECAAAECBAiMH4EhB3YjcHjYYYcNW+KlL31pet3rXpe23HLLYdelgpT233//dMABB4w5iu9///vpy1/+8phrVzs06PHHH08rrLBCevrpp3tt7ve+972mIG9cGIFdhQABAgQIECBAgAABAgQIECBAYHwKDDkVw/PPP98Q+fjHP57OOuusdOWVV6aYSXjJJZc0zsXGfvvtl+Kr49dee2264IIL0ne+851G0CmCVZtvvnm6/fbb0wc/+MGm++wMXmDvvfdO1113XVp11VUHf/Mo3vG5z30u3XjjjWmDDTYYxaeMz6oXXXTR9Nhjj6Xbbrstrbnmmj12co899iiuGYtB/R4b7CABAgQIECBAgAABAgQIECBAgMCwBIYc2I2vfUc58sgj07HHHpu22WabtM4666RVVlklvepVr2pq1NJLL10ce+Mb35i22GKL9JWvfCX95S9/aVwzceLEtNJKK6X3ve99jWNjcSPy/r797W8fM02Lr+JHSoNqmX/++dPrX//6tNlmm1UPv+jb0a7VV189bbXVVi96W0aiAfHLi0ghMq/KpEmT0sorr5w22WSTHh8Z5yMA/N73vrfH8w4SIECAAAECBAgQIECAAAECBAiML4EhB3anTZtWzLr99Kc/PSSRCP5GjtUosVhalEjLMFZLV1dX2mmnndL1118/JpoY+YgjQN7b1/Mjd/FYLGO1XYOxigD/9ttv/6Is/rbIIov02dQpU6b0ed5JAgQIECBAgAABAgQIECBAgACB9heo1+tpyIHd5557Lr3//e9PEyYMuYpilm8wzpgxY8xrfvOb3yzSSIyFht53331p2223HQtN6bg2xC8hPvShD6WHHnqo4/quwwQIECBAgAABAgQIECBAgAABAmNDoFarpSEvnhYLpy244ILD6kl8rTxSMiywwAL91hMBtfiZb775+r12pC/44Q9/mCKwO9ASs2irs48jCB6pCAJ8uOX+++8v0kH0NlN3IPXHbOv46n78jESJ3xA8/PDD6amnnkqvfOUrh1zvcNoVM6ojpcdolvgFxMc+9rG5ckiPxDPDcCTej5FoizoIECBAgAABAgQIECBAgAABAgTGvsCQp9tGLt3InTucEl8bX3/99Xutoru7O5166qnpLW95S5o8eXIRHN1www2LnL693pRPxCJTsYhYXBtf/Y+fyI17yimn9HVbj+f233//9IUvfKFxLmZqbrTRRsXPpptumiJoGyUCixdffHHacccdi+fF4nL/+Mc/ivQNEQB/9atfnT772c+mNdZYo+nnj3/8Y6PuCB63no97yhL9ijzG//rXv8pDxcJ0ZXt++tOfNo63bjzzzDPp4IMPLvK0RpA5PN/97nc35Tpuvae//ZtvvrlISRCztpdccskiv3LUu95666ULL7ywv9uL8+H3rW99q6ldMVa//e1v+7w/gsCHHnpo+sAHPpCWW265Ipi82mqrFf7HHXdcinenWs4555y5bA888MDGJT2dX2uttRr1RDvf8573NL1Dv/vd7xrvwmc+85lGXQPdiHQacV/kRA7D6Md2222Xrr766oFWMeDr4pci0f53vetdc/38z//8z4DrcSEBAgQIECBAgAABAgQIECBAgMCLLxCxryEHdke7+TNnzkyRv3eHHXZIV111VeNxMcN3l112Sb/5zW8ax6obESh905velCK4F3l8I11ElAsuuKD4Cn0EtqZPn169pdftaMMNN9yQNthgg6ZrXvayl6X4icWqnnjiiSKIHEHuzTffPJ100knFtf/+97+L+44//vhi/5ZbbilmHB9++OFFYDaCs/Hz6KOPNureY489inZHILo8H8HTskTAL4KN1dnASyyxRNGWaE8EbHsqEYyOxdQi2H3HHXc0Ljn77LOLxcwiYDzYEouHRbD6tNNOS9Huu+++O0WKiAgSXnnlleltb3tbimBpX+WRRx5JsaDeN77xjaZ2xVjFQnpxPGaytpYbb7yxCHDH4mWPP/54EdyOIO3CCy9c+O+8887FWNx+++2NW2PRtpNPPrmY8V3a/uc//2mcj/bGOxVB6fL8tdde23h+1BW/iFh11VUb98TzyndhMLmDo0/f/e53izG59NJLi/ckFj279957i8Xw1l577SLY3XjQCGzE7OyYeR4lxiV+Fl988SIw/vnPf34EnqAKAgQIECBAgAABAgQIECBAgACBeSVQpMfN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ETyOUg3sRpqFf//738Xxnv646667GofL+xsHZm888cQTrYcGtT9Y+5e//OVNC9Ttu+++vT7vqaeeSttss036y1/+0us1AzkRYxPjVaa2iPzH73vf+9Jzzz03kNtdQ4AAAQIECBAgQIAAAQIECBAgMAYFurq60qgEdp955pmm7j7//PNN+73tVANl1e3q9dXj0YGy7LrrruVmMSMxZpT2FDT97ne/W8ww/frXv56mTJnSuKevjQUXXLBxOlI9RH7U4ZRFF120cXu56Ft5IALP559/frnb4+zKCHaW5b777is3mz5nzpzZ2K9ulwdbg+9V1/Ka3j6rQdMHHnig6bIIqP/zn/9sHOstwN64oIeNWCStDGgeccQR6SUveUlxVQSRywBlHPjVr37Vw90pPfzww0WKiDi51VZbpbe85S2N6xZaaKHGdk+zfi+88MLG+diIuqql+i5Uc/5Wr+lr+4tf/GLj9EknnZQOPPDAVH2P42SMV7y/4bDXXns1rh/qxsILL5x+85vfNG6/6qqr0ic+8YliMbXGwZaNmNUbs9rDY7jve0vVdgkQIECAAAECBAgQIECAAAECBIYpEKlpRyWw2/pV7/7yoZb9ePzxx8vNFIug9VSqgbbHHnusccnmm2+eNthgg8b+b3/72xQ5Rr/1rW+ls846qwgCxjWRZ3TrrbcuAluNi/vZWGaZZZquOO+884r9U089Ne24447FdgRKH3roocZ1rQHPxom88epXv7qx+5Of/CT9+te/LoLQEdCN4GXMJi7LLbfckmLhq+oMy1VWWaU8naKfEZQNu3e9610pFjSLUrWpupY3xozQaunpmur56nYECsty1FFHpSOPPLKYPRseW2yxRZPDH//4xxSpGyIHb2vpKTAaM0ojfUCUGM+PfOQjjdvmn3/+YvZpeSCC9Jdffnm52/j8+c9/3tiuWsbBVVddtXEugvQxazasIsi79957F7NZGxfkjWOOOSY98sgjjUPVdAqXXnppuv/++4vAbARgw6G/svvuuzddEr9g2HTTTdPhhx9ejHMEsuP9iDGP/lVnoseN1fe/p19cVH+pEu9jGZR9/etf32R3yimnpM9//vM9BncjR/Vaa62V9txzz/S2t72t39QmTR2yQ4AAAQIECBAgQIAAAQIECBAgMG8EckByxMqzzz5bv/LKK+s5IBe5GBo/eYZp/Xe/+109B6V6fVYONNY322yzxj1x/1//+tem66+44oqm81tuuWU9nlmWm266qZ5ndDZdU21HbK+99tr1HBArbxnwZ9xXrWuJJZYo9nOQt54DYfUcoG06n2dc1qM9ObA21zNy0LceJtX6yu04ftppp811Li9Q1qjn3HPPbTpf1pUD1vU8O7qec7c21Z+DmfU8s7dxf54hWs+zMZvq2G+//Xpsa+Omykbr88u2x+e2225b32OPPZrqjuPf//73ixrCq3p9TotRvBs5IF0/9thj6zkYX5wPvxxsrjx1zmYO1jbqiL5fcMEFxRjkma71E044oXEuHFtLDoLP9Z5V25ODs3O9Q3nxtXqYRcm/cGjUX94XbYj37s477yyu6e+P/IuGueoo6yo/P/3pT881HjfeeGPTuObcwfUHH3yw8bh4D1vtf/nLXzbOx8Z73/vepmfn/Lv1/IuYpmtyGoyma6ItCgECBAgQIECAAAECBAgQIECAwNgSiBl7I1LyrNymYFAZoGr9zDNo53re2Wef3eu9ecZgcf0mm2zS6zURiCpLBLoi4Nv63NjPMyDreeG08tJBfcYzygBq1BWB3Qhi55QBPT6rfP4OO+zQ43MiaB2BufK6+Iw+xnMi0Bb76667bv3HP/5x/T//+c9cdeyyyy5N90bwLfqW8ws3Ha/WH/Z59mlTP6rno09lAHOuB7YcyDNLm54Twc+f/exnRTAyz4QtAuhRd9QZz63WG3382Mc+NlcANa6PwG4EePsrV199dT0C1tX2l+OTc+rWc/7dXqvIs2zrOX9t070RmM3pCop7Yjv6c8ABB9Svu+66uQKsebG4pnvjFxkRrB9MyekQ5mp/6XXmmWc2VRUB62hPta/V7XhvckqHXs+Hy7/+9a/6N7/5zV6vifemLDFW1Xczp2MoT/kkQIAAAQIECBAgQIAAAQIECBAYIwK1aEcOEo27EqkLclCuSAsQX7+P9AWTJ08eVj8j92ks2BW5eVdbbbVhLxoWKRRuvfXWFGkRllpqqbT88ssX7YvnRPqK6tf+e2p4pAGIHLvx1f0cvOvpklE9Fsa33XZbiry10fYJE5oze+QZrMXxyPnRW4kUEJESoTQdaN7jsr5I55ADxSny/obXG97whsKyPN/XZxiHYeQ8jnsnTZpUXB6pI+J9ae1Pta4Ys7gu0nQsvfTS1VOD2o40D7EQXA6mpte85jVphRVWGPZ7NagG9HJx/iVB+r//+78ip3H5XvZyqcMECBAgQIAAAQIECBAgQIAAAQLzWCBCuuM2sDuPLT2OAAECBAgQIECAAAECBAgQIECAAAEC80Qg1lUS2J0n1B5CgAABAgQIECBAgAABAgQIECBAgACBkRNo/u78yNWrJgIECBAgQIAAAQIECBAgQIAAAQIECBAYJQGB3VGCVS0BAgQIECBAgAABAgQIECBAgAABAgRGS0Bgd7Rk1UuAAAECBAgQIECAAAECBAgQIECAAIFREIgcuwK7owCrSgIECBAgQIAAAQIECBAgQIAAAQIECIyWQK1WE9gdLVz1EiBAgAABAgQIECBAgAABAgQIECBAYDQEBHZHQ1WdBAgQIECAAAECBAgQIECAAAECBAgQGGUBqRhGGVj1BAgQIECAAAECBAgQIECAAAECBAgQGGkBgd2RFlUfAQIECBAgQIAAAQIECBAgQIAAAQIERllAYHeUgVVPgAABAgQIECBAgAABAgQIECBAgACBkRYQ2B1pUfURIECAAAECBAgQIECAAAECBAgQIEBglAUEdkcZWPUECBAgQIAAAQIECBAgQIAAAQIECBAYaQGB3ZEWVR8BAgQIECBAgAABAgQIECBAgAABAgRGUaBeryeB3VEEVjUBAgQIECBAgAABAgQIECBAgAABAgRGWqBWqwnsjjSq+ggQIECAAAECBAgQIECAAAECBAgQIDDaAmbsjraw+gkQIECAAAECBAgQIECAAAECBAgQIDCCAt3d3amW8zHUR7BOVREgQIAAAQIECBAgQIAAAQIECBAgQIDAKAuYsTvKwKonQIAAAQIECBAgQIAAAQIECBAgQIDASAsI7I60qPoIECBAgAABAgQIECBAgAABAgQIECAwigKRhEFgdxSBVU2AAAECBAgQIECAAAECBAgQIECAAIHREBDYHQ1VdRIgQIAAAQIECBAgQIAAAQIECBAgQGCUBGq1mhm7o2SrWgIECBAgQIAAAQIECBAgQIAAAQIECIyagBm7o0arYgIECBAgQIAAAQIECBAgQIAAAQIECIyOgMDu6LiqlQABAgQIECBAgAABAgQIECBAgAABAqMmILA7arQqJkCAAAECBAgQIECAAAECBAgQIECAwOgICOyOjqtaCRAgQIAAAQIECBAgQIAAAQIECBAgMCoCXV1dqVbPZVRqVykBAgQIECBAgAABAgQIECBAgAABAgQIjIqAGbujwqpSAgQIECBAgAABAgQIECBAgAABAgQIjJ6AwO7o2aqZAAECBAgQIECAAAECBAgQIECAAAECoyIgsDsqrColQIAAAQIECBAgQIAAAQIECBAgQIDA6AkI7I6erZoJECBAgAABAgQIECBAgAABAgQIECAw4gKxbJrA7oizqpAAAQIECBAgQIAAAQIECBAgQIAAAQKjJxCB3Vr+oz56j1AzAQIECBAgQIAAAQIECBAgQIAAAQIECIy0gBm7Iy2qPgIECBAgQIAAAQIECBAgQIAAAQIECIyygMDuKAOrngABAgQIECBAgAABAgQIECBAgAABAiMtILA70qLqI0CAAAECBAgQIECAAAECBAgQIECAwCgKdHd3WzxtFH1VTYAAAQIECBAgQIAAAQIECBAgQIAAgREXqNVqArsjrqpCAgQIECBAgAABAgQIECBAgAABAgQIjKJABHYnjWL9qu5LYGKtr7POESBAgAABAgQIECBAgAABAgQIECAwngW66sPqnRy7w+JzMwECBAgQIECAAAECBAgQIECAAAECBOa9gMDuvDf3RAIECBAgQIAAAQIECBAgQIAAAQIECAxLQGB3WHxuJkCAAAECBAgQIECAAAECBAgQIECAwLwXENid9+aeSIAAAQIECBAgQIAAAQIECBAgQIAAgWEJCOwOi8/NwxHoSrV09XyT01N9rCM3I597YlIfFwynAfneuyZPHGYNbidAgAABAgQIECBAgAABAgQIECAw7wUEdnswf/zxx9MBBxyQdt999x7OzttDV06dmF5Rm5DuH8Xg5rzsUQRxz55vUvrMfFPSMrVaWvu5melfU5qDqw/m/p4439T0kXzN4mlC+s6kySPexJm5xnUmT04rTu8qPmNfIUCAAAECBAgQIECAAAECBAgQINAOAvV6PU1qh4bOqzY++eST6YgjjkgHHXRQevrpp9PWW289rx7d63OOqE1MD3bNSMdMnZL2nzWj1+va4cRFU6akLablPjw3q9fmbjtlajpr2vR8Tf4ZxXJ9nin8txxUjvK36TPTX3MQecMZ7e07ilyqJkCAAAECBAgQIECAAAECBAgQGEMCtTxh0ozdPCDPPPNMOvjgg9Nyyy2Xvv71rxdB3bEwTjFL98TnXgg2Hjp9Vnouz2Rt57LZzBlp1oRa+vMC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7llzpaiIFAyL5OdU0ya01tG6H+172ex8uP/N79X9UX+uY8UcgF28OetB662jvh9tuzsHbZfJQf7WBeNiZvF/c3A7FnsbTgnLm3KgfWZO6fHqnId5yvD+TRxOU9xLgAABAgQIECBAgAABAgQIEBi4wDDjZwK7A6ce2SvHWWB3ZHHURoAAAQIECBAgQIAAAQIECBAgQGCcCwwjsNvdnScejnMe3SNAgAABAgQIECBAgAABAgQIECBAgMC4EqjlNasEdsfVkOoMAQIECBAgQIAAAQIECBAgQIAAAQLjXUBgd7yPsP4RIECAAAECBAgQIECAAAECBAgQIDAuBczYHZfDqlMECBAgQIAAAQIECBAgQIAAAQIECIxnAYHd8Ty6+kaAAAECBAgQIECAAAECBAgQIECAwLgUENgdl8OqUwQIECBAgAABAgQIECBAgAABAgQIjGeBWj2X8dxBfSNAgAABAgQIECBAgAABAgQIECBAgMB4EzBjd7yNqP4QIECAAAECBAgQIECAAAECBAgQIDDuBQR2x/0Q6yABAgQIECBAgAABAgQIECBAgAABAuNJIJIwCOyOpxHVFwIECBAgQIAAAQIECBAgQIAAAQIExr1ArVYT2B33o6yDBAgQIECAAAECBAgQIECAAAECBAiMOwEzdsfdkLZfh2677bb2a/SL3OL7778/zZgx40VuRXs+fjzY3Xrrremuu+5qzwHQagIECBAgQIAAAQIECBAgQGDYAt3d3Wbslor33HNP2nvvvdOmm26allxyybTWWmulT37yk+ncc88tL/E5QgIRkLz88svTfvvtl1ZbbbW0yiqrjFDNnVHNnnvumZZZZpm03HLLJUHxwY15u9rNnDmz+DvzjW98o/g7s+qqq6bTTjut184/++yzafPNN0/xtYx999231+ucIECAAAECBAgQIECAAAECBNpTYMKECamWE+3W27P5I9fqgw8+uAjq9lbjRz/60XTUUUelBRdcsLdLHB+gwL/+9a+0xhprzHW113Aukh4PdHV1pUmTJjXOHXjggemrX/1qY99G7wLtavf444+nFVZYIT399NNNnTvooIPSXnvt1XSs3IlfSL3zne8sd9Ojjz6aXvaylzX2bRAgQIAAAQIECBAgQIAAAQLtL9DxqRiOP/74pqBuzIRrLXHNPvvs03rY/hAEVl999fTMM8+kX/7yl427X/rSlza2bfQtMHHixLTBBhs0LlpvvfUa2zb6FmhXu0UXXTQ99thjxezsNddcs+9Ozj573XXXNV330EMPNe3bIUCAAAECBAgQIECAAAECBNpbICZJdnRgN77GvtNOOxWjeNJJJ6Xp06enm2++OcXXnn/60582je7hhx+errrqqqZjdoYmEDOft9pqq6Hd7K4iPcgJJ5yQrrnmmiJ1CJKBC8RM1na0i1naK6+8ctpkk00G1NkIYldL/NumECBAgAABAgQIECBAgAABAuNLYM53usdXvwbUm5NPPrm47oYbbkive93rGvdEECXy67785S9P73nPexrHL7nkkrT22ms39m0MXWC++eZr3Dz//PM3tm30LxAznHfcccf+L3TFXALtbrfIIovM1aeeDiyxxBJNh1v3m07aIUCAAAECBAgQIECAAAECBNpOINbV6egZu8cdd1yKHKXVoG51FLfddtv01re+tXEoAsAKAQIExrpA5OStllgQUiFAgAABAgQIECBAgAABAgTGl0DHBnbvvvvuItfrpz/96T5HdP311+/zfDudnDVrVrrnnnuKn8EsVjZt2rSmbsYiVM8991zTsYHsRG7d559/fiCXDumaSKHx1FNPDeneodzUU19aF7jqq97h3h919/cV+5Eau2effXZIY95X/+NcvIeR/zXSosT7OdAyL+wG2pbhXDfU/vf3zOWXX75xyUorrZRipUyFAAECBAgQIECAAAECBAgQGF8CHftf+xH4ePDBB/tdKX6hhRZqjHhvM3sbF4zRjQsvvDDFIluTJ09O0e/4WXjhhdO73vWu9J///GeuVkew6eqrr07f+MY3iryee++9d3FNpKL4zGc+k5ZeeukUeXLf+c53pssvv3yu+6sHbr311iKtReQHja/BL7DAAmmjjTZKv/vd76qXDXn7gQceSF/60pfShhtumKZMmVL0K8Zsu+22S9dee22j3nPOOSetscYaTT8xW7ssPZ1fa621Und3d3lJ8XnHHXekH/zgB4XnG97whuJY5GX+2te+llZbbbUUz477jj322Kb7yp3h3h/1xC8lDjnkkOJ5Bx10UFl18TmSYxe2O++8c/EOvOQlLynGPPq2++67p1hQ8B//+EeKgG8E0yOoPpgSZttvv30RcIzZpKusskrxfsZ7Gu9rT2W07eKZMd6XXnpp8c6Ws1yffPLJdPDBBxfv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595yyy1ppZVWKmbtxozeWCxt/fXXT7VarV27qN0ECBAgQIAAAQIECBAgQIAAgbYWqNfrSWC3rYdQ4wkQIECAAAECBAgQIECAAAECBAgQ6EQBi6d14qjrMwECBAgQIECAAAECBAgQIECAAAECbS0gsNvWw6fxBAgQIECAAAECBAgQIECAAAECBAh0mkB3d7dUDJ026PpLgAABAgQIECBAgAABAgQIECBAgED7C5ix2/5jqAcECBAgQIAAAQIECBAgQIAAAQIECHSYgMBuhw247hIgQIAAAQIECBAgQIAAAQIECBAg0N4C9Xo9Cey29xhqPQECBAgQIECAAAECBAgQIECAAAECHSggsNuBg67LBAgQIECAAAECBAgQIECAAAECBAi0r0CtVjNjt32HT8sJECBAgAABAgQIECBAgAABAgQIEOhUATN2O3Xk9ZsAAQIECBAgQIAAAQIECBAgQIAAgbYVENht26HTcAIECBAgQIAAAQIECBAgQIAAAQIEOlVAYLdTR16/CRAgQIAAAQIECBAgQIAAAQIECBBoWwGB3bYdOg0nQIAAAQIECBAgQIAAAQIECBAgQKATBbq6ulKtnksndl6fCRAgQIAAAQIECBAgQIAAAQIECBAg0K4CZuy268hpNwECBAgQIECAAAECBAgQIECAAAECHSsgsNuxQ6/jBAgQIECAAAECBAgQIECAAAECBAi0q4DAbruOnHYTIECAAAECBAgQIECAAAECBAgQINCxAgK7HTv0Ok6AAAECBAgQIECAAAECBAgQIECAQDsKxLJpArvtOHLaTIAAAQIECBAgQIAAAQIECBAgQIBAxwpEYLeW/6h3rICOEyBAgAABAgQIECBAgAABAgQIECBAoA0FzNhtw0HTZAIECBAgQIAAAQIECBAgQIAAAQIEOltAYLezx1/vCRAgQIAAAQIECBAgQIAAAQIECBBoQwGB3TYcNE0mQIAAAQIECBAgQIAAAQIECBAgQKBzBbq7uy2e1rnDr+cECBAgQIAAAQIECBAgQIAAAQIECLSjQK1WE9htx4HTZgIECBAgQIAAAQIECBAgQIAAAQIEOldAYLdzx17PCRAgQIAAAQIECBAgQIAAAQIECBBoYwE5dtt48DSdAAECBAgQIECAAAECBAgQIECAAIHOFBDY7cxx12sCBAgQIECAAAECBAgQIECAAAECBNpYQGC3jQdP0wkQIECAAAECBAgQIECAAAECBAgQ6EwBgd3OHHe9JkCAAAECBAgQIECAAAECBAgQIECgjQUEdtt48DSdAAECBAgQIECAAAECBAgQIECAAIHOFBDY7cxx12sCBAgQIECAAAECBAgQIECAAAECBNpUoF6vJ4HdNh08zSZAgAABAgQIECBAgAABAgQIECBAoDMFarWawG5nDr1eEyBAgAABAgQIECBAgAABAgQIECDQzgJm7Lbz6Gk7AQIECBAgQIAAAQIECBAgQIAAAQIdJ9Dd3Z1qOR9DveN6rsMECBAgQIAAAQIECBAgQIAAAQIECBBoYwEzdtt48DSdAAECBAgQIECAAAECBAgQIECAAIHOFBDY7cxx12sCBAgQIECAAAECBAgQIECAAAECBNpUIJIwCOy26eBpNgECBAgQIECAAAECBAgQIECAAAECnSsgsNu5Y6/nBAgQIECAAAECBAgQIECAAAECBAi0oUCtVjNjtw3HTZMJECBAgAABAgQIECBAgAABAgQIEOhwATN2O/wF0H0CBAgQIECAAAECBAgQIECAAAECBNpPQGC3/cZMiwkQIECAAAECBAgQIECAAAECBAgQ6HABgd0OfwF0nwABAgQIECBAgAABAgQIECBAgACB9hMQ2G2/MdNiAgQIECBAgAABAgQIECBAgAABAgQ6WKCrqyvV6rl0sIGuEyBAgAABAgQIECBAgAABAgQIECBAoO0EzNhtuyHTYAIECBAgQIAAAQIECBAgQIAAAQIEOl1AYLfT3wD9J0CAAAECBAgQIECAAAECBAgQIECg7QQEdttuyDSYAAECBAgQIECAAAECBAgQIECAAIFOFxDY7fQ3QP8JECBAgAABAgQIECBAgAABAgQIEGgrgVg2TWC3rYZMYwkQIECAAAECBAgQIECAAAECBAgQ6HSBCOzW8h/1TofQfwIECBAgQIAAAQIECBAgQIAAAQIECLSTgBm77TRa2kqAAAECBAgQIECAAAECBAgQIECAAIEsILDrNSBAgAABAgQIECBAgAABAgQIECBAgECbCQjsttmAaS4BAgQIECBAgAABAgQIECBAgAABAp0t0N3dbcZuZ78Cek+AAAECBAgQIECAAAECBAgQIECAQLsJ1Go1gd12GzTtJUCAAAECBAgQIECAAAECBAgQIECgswUEdjt7/PWeAAECBAgQIECAAAECBAgQIECAAIE2FZBjt00HTrMJECBAgAABAgQIECBAgAABAgQIEOhcAYHdzh17PSdAgAABAgQIECBAgAABAgQIECBAoE0FBHbbdOA0mwABAgQIECBAgAABAgQIECBAgACBzhUQ2O3csddzAgQIECBAgAABAgQIECBAgAABAgTaVEBgt00HTrMJECBAgAABAgQIECBAgAABAgQIEOhcAYHdzh17PSdAgAABAgQIECBAgAABAgQIECBAoA0F6vV6Ethtw4HTZAIECBAgQIAAAQIECBAgQIAAAQIEOlegVqsJ7Hbu8Os5AQIECBAgQIAAAQIECBAgQIAAAQLtKmDGbruOnHYTIECAAAECBAgQIECAAAECBAgQINCRAt3d3amW8zHUO7L3Ok2AAAECBAgQIECAAAECBAgQIECAAIE2FTBjt00HTrMJECBAgAABAgQIECBAgAABAgQIEOhcAYHdzh17PSdAgAABAgQIECBAgAABAgQIECBAoA0FIgmDwG4bDpwmEyBAgAABAgQIECBAgAABAgQIECDQ2QICu509/npPgAABAgQIECBAgAABAgQIECBAgECbCdRqNTN222zMNJcAAQIECBAgQIAAAQIECBAgQIAAAQICu94BAgQIECBAgAABAgQIECBAgAABAgQItJuAVAztNmLaS4AAAQIECBAgQIAAAQIECBAgQIBAxwsI7Hb8KwCAAAECBAgQIECAAAECBAgQIECAAIF2ExDYbbcR014CBAgQIECAAAECBAgQIECAAAECBDpaoKurK9XquXS0gs4TIECAAAECBAgQIECAAAECBAgQIECgzQTM2G2zAdNcAgQIECBAgAABAgQIECBAgAABAgQICOx6BwgQIECAAAECBAgQIECAAAECBAgQINBmAgK7bTZgmkuAAAECBAgQIECAAAECBAgQIECAAAGBXe8AAQIECBAgQIAAAQIECBAgQIAAAQIE2kgglk0T2G2jAdNUAgQIECBAgAABAgQIECBAgAABAgQIRGC3lv+ooyBAgAABAgQIECBAgAABAgQIECBAgACB9hEwY7d9xkpLCRAgQIAAAQIECBAgQIAAAQIECBAgUAgI7HoRCBAgQIAAAQIECBAgQIAAAQIECBAg0GYCArttNmCaS4AAAQIECBAgQIAAAQIECBAgQIBAZwt0d3dbPK2zXwG9J0CAAAECBAgQIECAAAECBAgQIECg3QRqtZrAbrsNmvYSIECAAAECBAgQIECAAAECBAgQINDZAgK7nT3+ek+AAAECBAgQIECAAAECBAgQIECAQJsKyLHbpgOn2QQIECBAgAABAgQIECBAgAABAgQIdK6AwG7njr2eEyBAgAABAgQIECBAgAABAgQIECDQpgICu206cJpNgAABAgQIECBAgAABAgQIECBAgEDnCgjsdu7Y6zkBAgQIECBAgAABAgQIECBAgAABAm0qILDbpgOn2QQIECBAgAABAgQIECBAgAABAgQIdK6AwG7njr2eEyBAgAABAgQIECBAgAABAgQIECDQhgL1ej0J7LbhwGkyAQIECBAgQIAAAQIECBAgQIAAAQKdK1Cr1QR2O3f49ZwAAQIECBAgQIAAAQIECBAgQIAAgXYVMGO3XUdOuwkQIECAAAECBAgQIECAAAECBAgQ6EiB7u7uVMv5GOod2XudJkCAAAECBAgQIECAAAECBAgQIECAQJsKmLHbpgOn2QQIECBAgAABAgQIECBAgAABAgQIdK6AwG7njr2eEyBAgAABAgQIECBAgAABAgQIECDQhgKRhEFgtw0HTpMJECBAgAABAgQIECBAgAABAgQIEOhsAYHdzh5/vSdAgAABAgQIECBAgAABAgQIECBAoM0EarWaGbttNmaaS4AAAQIECBAgQIAAAQIECBAgQIAAAYFd7wABAgQIECBAgAABAgQIECBAgAABAgTaTUAqhnYbMe0lQIAAAQIECBAgQIAAAQIECBAgQKDjBQR2O/4VAECAAAECBAgQIECAAAECBAgQIECAQLsJCOy224hpLwECBAgQIECAAAECBAgQIECAAAECHS3Q1dWVavVcOlpB5wkQIECAAAECBAgQIECAAAECBAgQINBmAmbsttmAaS4BAgQIECBAgAABAgQIECBAgAABAgQEdr0DBAgQIECAAAECBAgQIECAAAECBAgQaDMBgd02GzDNJUCAAAECBAgQIECAAAECBAgQIECAgMCud4AAAQIECBAgQIAAAQIECBAgQIAAAQJtJBDLpgnsttGAaSoBAgQIECBAgAABAgQIECBAgAABAgQisFvLf9RRECBAgAABAgQIECBAgAABAgQIECBAgED7CJix2z5jpaUECBAgQIAAAQIECBAgQIAAAQIECBAoBAR2vQgECBAgQIAAAQIECBAgQIAAAQIECBBoMwGB3TYbMM0lQIAAAQIECBAgQIAAAQIECBAgQKCzBbq7uy2e1tmvgN4TIECAAAECBAgQIECAAAECBAgQINBuArVaTWC33QZNewkQIECAAAECBAgQIECAAAECBAgQ6GwBgd3OHn+9J0CAAAECBAgQIECAAAECBAgQIECgTQXk2G3TgdNsAgQIECBAgAABAgQIECBAgAABAgQ6V0Bgt3PHXs8JECBAgAABAgQIECBAgAABAgQIEGhTAYHdNh04zSZAgAABAgQIECBAgAABAgQIECBAoHMFBHY7d+z1nAABAgQIECBAgAABAgQIECBAgACBNhUQ2G3TgdNsAgQIECBAgAABAgQIECBAgAABAgQ6V0Bgt3PHXs8JECBAgAABAgQIECBAgAABAgQIEGhDgXq9ngR223DgNJkAAQIECBAgQIAAAQIECBAgQIAAgc4VqNVqArudO/x6ToAAAQIECBAgQIAAAQIECBAgQIBAuwqYsduuI6fdBAgQIECAAAECBAgQIECAAAECBAh0pEB3d3eq5XwM9Y7svU4TIECAAAECBAgQIECAAAECBAgQIECgTQXM2G3TgdNsAgQIECBAgAABAgQIECBAgAABAgQ6V0Bgt3PHXs8JECBAgAABAgQIECBAgAABAgQIEGhDgUjCILDbhgOnyQQIECBAgAABAgQIECBAgAABAgQIdLaAwG5nj7/eEyBAgAABAgQIECBAgAABAgQIECDQZgK1Ws2M3TYbM80lQIAAAQIECBAgQIAAAQIECBAgQICAwK53gAABAgQIECBAgAABAgQIECBAgAABAu0mIBVDu42Y9hIgQIAAAQIECBAgQIAAAQIECBAg0PECArsd/woAIECAAAECBAgQIECAAAECBAgQIECg3QQEdtttxLSXAAECBAgQIECAAAECBAgQIECAAIGOFujq6kq1ei4draDzBAgQIECAAAECBAgQIECAAAECBAgQaDMBM3bbbMA0lwABAgQIECBAgAABAgQIECBAgAABAgK73gECBAgQIECAAAECBAgQIECAAAECBAi0mYDAbpsNmOYSIECAAAECBAgQIECAAAECBAgQIEBg0vXXX0+BAAECBAgQIECAAAECBAgQIECAAAECBNpEYNKkScmM3TYZLM0kQIAAAQIECBAgQIAAAQIECBAgQIBACNTr9VR7+umn6zgIECBAgAABAgQIECBAgAABAgQIECBAoD0EJkyYYMZuewyVVhIgQIAAAQIECBAgQIAAAQIECBAgQGCOgFQMcyxsESBAgAABAgQIECBAgAABAgQIECBAYMwL1Go1M3bH/ChpIAECBAgQIECAAAECBAgQIECAAAECBCoCs2bNEtiteNgkQIAAAQIECBAgQIAAAQIECBAgQIDAmBeQY3fMD5EGEiBAgAABAgQIECBAgAABAgQIECBAoFlAYLfZwx4BAgQIECBAgAABAgQIECBAgAABAgTGvEC9XpeKYcyPkgYSIECAAAECBAgQIECAAAECBAgQIECgRWBCy75dAgQIECBAgAABAgQIECBAgAABAgQIEBjDArVazYzdMTw+mkaAAAECBAgQIECAAAECBAgQIECAAIG5BLq7u9OkuY460KfAnXfeme6444508cUX93ndYE+uuOKKafPNN0/xORrl5ptvLqpdbbXVRqN6dRIgQIAAAQIECBAgQIAAAQIECLxIAuI+LxL8i/xYqRgGOQAXXXTRiAd1owllwHiQzXE5AQIECBAgQIAAAQIECBAgQIAAAQIdKGDG7iAHPQKwUQ488MBB3tn35V/72teKgHHM2lUIECBAgAABAgQIECBAgAABAgQIECDQm0C9XpdjtzccxwkQIECAAAECBAgQIECAAAECBAgQIDAWBWLxtBGdsTvSaQrKfLOf/OQnx6KfNhEgQIAAAQIECBAgQIAAAQIECBAg0INAGSeM+F65tlQPlzk0RIEJEyaMXGD3Zz/7WZEndoht6fG2Mu1BvAhSFPRI5CABAgQIECBAgAABAgQIECBAgACBMSVQBnWjURHfK2N84nsjN0xdXV0jF9gtB0ju2ZEboE6p6fzzz0/xMg60xD8CU6ZMSX//+9/TAw88kFZYYYW0+uqrD/R213WAwPTp09Ptt9+e7rjjjuLzoYceSosttlhaaqml0hvf+Mb06le/ugMUXujiJZdckmbNmpXWXHPNtMQSS3RMv3vr6OOPP57+9Kc/pfvuuy/FezFp0qTCJf4d2WSTTdICCyzQ262Oj1OB7u7uxqKoCy+8cFp77bX77Ok999yTYsXh+eabL2244YZ9XjueT951113ptttuSy95yUvSuuuuO5672uhb/NvR2/9fia/BvexlL0tLLrlk8b81sT+vyg033FC8k08//XR6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QkAICAEhIASEgBAQAkKgiSOwatUqEbtNvA4o+0JACAgBISAEhIAQEAJCQAgIASEgBISAEBACQkAIVBgC0titsAJTcoWAEBACQkAICAEhIASEgBAQAkJACAgBISAEhIAQEALaPE11QAgIASEgBISAEBACQkAICAEhIASEgBAQAkJACAgBIVBhCEDstqywNCu5DYxA/xFLGjhGRVeNCEwa0a4as6U8CQEhIASEgBAQAkJACAgBISAEhIAQEAJCoNEQaDl58uRGi1wRVwICm1ZCIpXGMkdA7UyZF5CSJwSEgBAQAkJACAgBISAEhIAQEAJCQAhUFAKtWrXS5mkVVWJKrBAQAkJACAgBISAEhIAQEAJCQAgIASEgBISAEBACQiCFQLOUPYZvhIQQEAJCQAgIASEgBISAEBAC5YnA2LFjfcJ69epVnglUqoSAEBACQkAICAEhIAQaHIHmzZtLY7fBUVeEQkAICAEhIASEgBAQAkJACAgBISAEhIAQEAJCQAgIgToggK5u8zr4l1chIASEgBAQAkJACAgBISAEhIAQEAJCQAgIASEgBISAEGgEBETsNgLoilIICAEhIASEgBAQAkJACAgBISAEhIAQEAJCQAgIASFQLAKrV6+Wxm6x4MmfEBACQkAICAEhIASEgBAQAkJACAgBISAEhIAQEAJCoDEQaNGihYjdxgBecQoBISAEhIAQEAJCQAgIASEgBISAEBACQkAICAEhIASKRUA2dotFTv6EgBAQAkJACAgBISAEhIAQEAJCQAgIASEgBISAEBACjYiAbOw2IviKWggIASEgBISAEBACQkAICAEhIASEgBAQAkJACAgBIVAoAs2aNXMtC/Uk90KgqSGwatWqWlnGjolECAgBISAEhIAQEAJCQAgIASEgBISAEBACQkAINAYCmGKoSGL3448/diS+Y8eObp111ikYu6lTp7pPPvnEQc7tsssuBfuXh9IhMG7cOLdgwQLXpk0bt8MOO5Qu4BKF9NFHH7np06fXCm3o0KFu7bXXrnVfN4SAEBACQkAICAEhIASEgBAQAkJACAgBISAEhEB9I7B69erKI3YhdN9//32PTefOnV2/fv0KxomMI4TV2PL555+7KVOmONSny5HYrG98rAzsWGh8Y8eOdcuWLXNdunRxm222WaHec7pv3bq1a9myZv6DNMZp7+YMRA6EgBAQ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4dSZbtJbE90X879wzZo1iyV2Jz863j180j8yEt9+s/bumIdOcB0265i+/99r/uMmPzIxfc3JrNdmub8dfGfGvZNGne423LJmR9aX//Cim/jg+Iznzr3ghp27k3vl+tHp+2/ePsad8NzprnmL4hSd58yc4ya9M9G9/vwYt1nfHm7Adlu4duu2S4evEyEgBISAEBACQkAICAEhIASEgBAQAkJACAgBISAEhEAuBOBQG43YXbJwsZvw5gQ3c8oMt2rVqnRa12pTo0WbvpE6+Wrhck/qslFZj916umnPTXEfvvShWzRzkXvtxpfcd645OO184OGDXNfBXf31jBenOzY069ino9v22CFpN5ys07l9xrVd7HzhLm7CI+O9rVxI3Q0HbeR6pzSDOf/03Xleg7fzNjXhm598j2t3qNH2XblypXt/wjT/67B+B9d/8ABP9FIgEiEgBISAEBACQkAICAEhIASEgBAQAkJACAgBISAEhEA2BOAXG5TY/Wb1N+6DydPd5LcnuUULFqXTBqG5cdeNXb/B/V3nbl3S98OTgUcNcgf88VDXrHkzN/Tsnd1rN7zk/nP5v93bI992+1z9Xa/pi/veBwxIe/smdQaxu1H/jb2f9IOEk10vHu52On93132Xnu7vh9zlXR0+8mjXoUdHtyRlqmHcPe+4TyfMc8USu30G9vVmGKaOm+Lef2+a+2rZV27h5wvda8+96t544XX/bMDQLdy6HdZNSKFuCwEhIASEgBAQAkJACAgBISAEhIAQEAJCQAgIASHQ1BFo3rx5wxC7X6ZI3PFvjHcfTfvQsWObCQRm70F9XM8te7mWLbNzzDv+aGdP6prfPvv398Qu1ytSGr2t12tjj4o+dvzWpMO6XdZo867brYMPr0P39fxx+cJlRYePx9ZtWruB2w/yvwXzPncT357oZk3/2GstQ3rza79ee9cC4sZhAABAAElEQVR32/6uZ/+eGXmuU8TyLASEgBAQAkJACAgBISAEhIAQEAJCQAgIASEgBIRAVSDQYMTu6Gde9vZzQQ0C19uXTZkfaNdhnbyB7NCrU4bbtTdY4/erFNlaCmK3ZZsacrll21bpuMyebsvWNc9WLFmRflbXk44bre922ndnhybzzKkz3JR3JrsFny1wi75YlNLgHePWS5lp6NR5g7pGI/9CQAgIASEgBISAEBACQkAICAEhIASEgBAQAkJACFQRAuxbVtwuYHUAgUixqRva1c0VXJsOrV3LtSIavUHKIUZLIS1atfDBGJlLvCYtWtZEuHrlGnvA9qyux9XfrHarvl7lVq9ao81c1zDlXwgIASEgBISAEBACQkAICAEhIASEgBAQAkJACAiB6kUgwpbWT0Z3PWh3N+nNie6DSdMdhn1nTP7A/9Zut7brNbC3N8ewVuvam6bVT2pyh9pQm5jNmzXXTX5rkpv90WwH4W2y/obru/5DBkhb1wDRUQgIASEgBISAEBACQkAICAEhIASEgBAQAkJACAiBNALwlw1C7K69ztpu8O5D/O/j9z9yE9+a4D5P2ZddumSpe/e1cf7XaaNOKbuy/Vy3Xt3TG6GlU1phJyuWfZ2Y4iVfLvGbx82Y9IH7+us17lq2aul6DujlCd22a7dN9K8HQkAICAEhIASEgBAQAk0Tgf4jljTNjFdIrieNaFchKVUyhYAQEAJCQAgIgWpAgH3MGoTYDcHatFc3x2/Z0mVeW3X6hPc9wTl/3nz3yjOj3RutXneHnXZE6KXo89btazZUWzzvy6LDKMRjx+4d3YKpC9zsNz5yAw4dVMvrlLGT3dv/fSvj/gYpG7po53btsWnGfV0IASEgBISAEBACQkAICAEhUDkITJ48uXISq5QKASEgBISAEBACFY9Aq1atGp7YNdTQSt1ml239b/bMT9yEN8a7z+Z85k01mJu6Hjts0t4HMeu1WW7G81Ndt916OrOjW9ew4/xvtGVnN/356W7CoxNcnwO3cN126pHhbNniZf661VqtvAmKftv0d23a1pDPGQ51IQSEgBAQAkJACAgBISAEhIAQEAJCQAgIASEgBISAEMiCQINr7Malpctmmzh+y79a7mZOnhHnpKh7m6aI1fabtXeLZi5y9x/1N8dmaB16dvRhfe/mI1zHXp2KCjfJ05BTd3Sv3jDaLZm9xP3t4Dt9fC3WbumGnDTUDTtvd7fJ5pu4jbtv7Dp365IUhO4LASEgBISAEBACQkAICIFYBLTUPxaWMrrZr4zSoqQIASEgBISAEBACTQGB5uWUydZtWru+W6/pEDVr3iwxeeGzpM3OWrZt5Y55+EQ37NydXLsu7dxXC5e7uW/P8b/VK1amwzb/FmazFrXjTT9LGSZOknW6rOtOGX2W63NAX0/qEh8k74ovV3gvG26ykUjdJPB0XwgIASEgBISAEBACQkAICAEhIASEgBAQAkJACAiBvBCAz2z2TUryci1HQkAICAEhIASEgBAQAkJACDQ4AmPHjvVx9urVq8HjVoRCQAgIASEgBISAEBAC5YlAixYtXFlp7JYnTEqVEBACQkAICAEhIASEgBAQAkJACAgBISAEhIAQEAJCoHwQWLVqlYjd8ikOpUQICAEhIASEgBAQAkJACAgBISAEhIAQEAJCQAgIASGQG4HmzZuL2M0Nk1wIASEgBISAEBACQkAICAEhIASEgBAQAkJACAgBISAEygcBrOu2LJ/kKCVCQAgIASEgBISAEBACQkAIFIrAOuusU6gXuRcCQkAICAEh0GAILF68uMHiUkRCoCkhALErG7tNqcSVVyEgBISAEBACQkAICAEhIASEgBAQAkJACAgBISAEqgIBEbtVUYzKhBAQAkJACAgBISAEhIAQEAJCQAgIASEgBISAEBACTQWBZs2aSWO3qRS28ikEhIAQEAJCQAgIASEgBISAEBACQkAICAEhIASEQPUgII3d6ilL5UQICAEhIASEgBAQAkJACAgBISAEhIAQEAJCQAgIgSaAgDR2m0AhK4tCQAgIASEgBISAEBACQkAICAEhIASEgBAQAkJACFQXAto8rbrKU7kRAkJACAgBISAEhIAQEAJCQAgIASEgBISAEBACQqCJICBTDE2koJVNISAEhIAQEAJCQAgIASEgBISAEBACQkAICAEhIASqA4HVq1dr87TqKErlQggIASEgBISAEBACQkAICAEhIASEgBAQAkJACAiBpoJAixYtROxS2A8ee6+7aoP/ce/d93bFlf2tw27waZ/50vSyTPus1z9yH/73A7dk7uJ0+lZ9vcqnGcw/n/pp+n4lnCz86It02lcsXl4JSVYahYAQEAJCQAgIASEgBISAEBACQkAICAEhIASqDAFs7LassjwVlZ2vl33t/a36enVR/hvT04rFK3z036xY1ZjJiI17/sS57p79b/fPThp1umu38To1aU1VPJPVq9ac272yPgbp/WZ1haW9rIFV4oSAEBACQkAICIH6RGDJkiVu4sSJeUfRt29f1759ezdjxgz32WefuY022sh1797d+589e7abNWuWa9u2rdtyyy3zDlMOhYAQEAJCQAgIASFQLQg8//zz7t///rfPzp577un22muvRsmaiN1Ggb1pRDrmlld9Rnvv19ttuGXnppFp5VIICAEhIASEgBAQAmWIwLx589wDDzyQd8rOPPNMT+y+8MILnhDebbfd0sTu1KlT3eOPP+66dOmSQewuXLjQ8QzZbrvt8o5LDoWAEBACQkAINAQCK1eudGeffXY6qpNPPtltv/326WudFIfATTfd5N55551anlu3bu1uuOGGWvd1o3QINGvWTBq7pYNTIYUIYLJg3D01L/YOZ+8SPtK5EBACQkAICAEhIASEQCMisPHGG7u11147awratGmT9Xncwzlz5qTJ4yFDhjgGGxIhIASEgBAQAuWKwKpV5bfyuVyxypaur7+uWQUfdZN0P+pO18Uj0GRNMXw4baZr07aN26jrxrXQW7V8pZszbrb7ZMyHrnmrFq7LkK5ukyHdarmzGyzHn/fubDd/8jwHmdmhe0e38VZdXKd+G5mTjCOgz584z817b7ZbNPtL/2yDPht49x17dcpwG16sWrnKzX7jYzfnnU9cs+bN3CZDN3Wdt+4aOkmfj3/9Pbf5gJ5u7XWyd9jTHgo4WbJ4iZs5aYbbYrvsy+7e+strPtSuO3R1mw7bLGsMXy1c5uak8jY7hXu7jdZxm+28uevQo2Oin5Up0xlzxn7iPpv8qVv2+VK3Qb8NXZfBm7p1Oq8b6webvrPf/Nh9Pm1+ytbvIrfWum1cpxTmG27ROW0eIs4j6ZqdshE89705PuyuQ7u75i2a13K6dMlS99GUD12vgb1dy1ZSgq8FkG4IASEgBISAEBACZYXA9773Pde7d++80rTHHnt47dsNN9wwL/dyJASEgBAQAkJACDQtBOhTrFhRYyaUSd4vv6zhupoWCo2T29WrVzcdjd0lX6bsir0xwc2cMsOhft9/8IBaxO7yRV+5vx92h5v12qyMEtntl8PdsPN2z7jHBRuCPX3BI27a09NqPdvpgl3cThcOdy1S5LDJ18tWuFu2v8Etmb3EbmUcd/zxTm6Xi/d0LVqu8YMDCMbHTvuHm/789Az3Q08fmnFtFxC77415163XaT2fz+59NquTxgRk9IdTZ7pJb010X8z/woeVjdhdNn+pG/OnGjMMw87Jrq0LIX7vgben8pi5EdlR9x/jeuzVx7KUPs55Z5Z79MwH3YKpC9L37OSQ2w5z/Q4dZJf++MmbH7m7962x85vx4NuLg1N+BkT88Aj7wA8c+ze3aOaiDG+7Xjw845qLpYuWuHdGv+3GvvKO69w9tSQxRXp36rxBLXe6IQSEgBAQAkJACAiBSkOgR48elZZkpVcICAEhIASEgBBoQAQOOOAAxw957LHHvLmmBoy+SUfVokWL6iZ2ISRnTPnATX5rklv4+cKMwl5n3ZqNvMKbL1z2nL/c+cJd3Krlq9w7d73lCccXf/sft8VhW7kOm63RIv166Qo3cu+bPUnbpkNrt93pO6S0ddfz2ruv3/K6G33tfz2pC7lrsnrlau++XZd2bstDB7qOvTdwrVq3dHPHfeLw8+oNo1Pxfu32/G3NC2H+njzn4TSpu9P5O7t1N13PTX1iovdjbsLjWm3WcsuXLfck7KvPvuJe//cYt1nfHm6LIVu4dh1q5zv0G54vWbjYTXizhgwPlygQfjZ55643/ONOAzZwm+/TN5tT9/DJDzrc7Xjuzu7TlCbz+P97z7v/1yVPuVOG98rQkP00peV8595/8c879unoBh+/nde+ff+5KW7K45Pdw6c+5I7eoJ3bbNee6ThXLKohjDfetrPrvXcft16qDNkk74N/T3OTH5vkHk35adGyuev73TUayJTtPQeN9GVPWW1/+o6ueYpsf+vO191LV/wnHbadrNV6La9Fjfb27Jmf+B8a4X226ut/rdZqZU51FAJCQAgIASEgBIRARSHw4osvuo8//tj179/fDR48ODbt06ZNc2PGjHHY2DX529/+5pUBtt12WzdgwAC77ZYtW+b++9//+k3ZPvzwQ78pG5o+W2yxhdtss8xVXq+++qqbPn26GzRokBs4cKB7++233ZQpqX5f6nfuuee6Dh06pMPViRAQAkJACAiBYhD44ouUGclx4/ymoJtuuqnbYYcd3FprxXMebESKLXk2Fl2+fLn/bvXp08d16pS5+vrTTz91bDSKNG/e3H/DwrQtXbrU8e004TuYy0SSuW3o4yeffOI++OAD99FHHzl4oQ022MDb1werUslXX33l3nrrLcd+AIsWLXLrrLOO69ixo2Mj10022aROioqlSmM5h1OV68a/XPilm/h6ipCcOsOhlmwC2cZyeQi31m1a2+2M4ykvnZEiGmtMNOzwk13dLYOv9wTf9GenuG1P2SHt9vWbX0mTuif85wzXodt6Nc+O3jZlImET99hZj7iXrhzltjxqm/Szlm1buSPuPTqlido7QysXN206tfOkIQTvrr/c27Vau6Yh+XT8HDf1ySk+7MPuPNL1OXALf77VDwa7h0+8P/0snbDUySEnHebmfDTbE9pzZ831L9/0ie87fu07tvdavD36bu7JyNAf55CTH0ye7ia/PcktWrBGWxUbaRunTFf0G9zfde7WJeotfb1iyXI35sbR/nqnc3bOIGbTjoITCNrjnjzZtU6ZR0C2OXGou/eAkV4j97MJc91Gg2rigqR/7tKnvZvN99jcHXbX9x14IlsdO9g9ff4jbuxd77hnL37KnfSfM9Pxrt9nQ3fcMyfVMqex9XFD3N8PHek+fOlD99Ydr2cQu+89MDatQXz8E6e49inCHtniiK3c7XvcVEvjuv36HdwRp/8/98GkD9zUsZP9JMJXy75y7742zmtOg9uA7baopSHuA9U/ISAEhIAQEAJCQAiUMQLvv/++3zytffv2icTu559/XmvTlLFjx/pcdeu2xqQZRO7dd9+dQQAzUOTHJm3HHHOM22abbdJoMHBmMxZsAj/33HPu2WefTT+jbygRAkJACAgBIQACM2fOdP/85z/TYEDODhs2LH2ddIK/O+64I+Pxk08+6S677DIXtTUP+Xvrrbe6OLuxBx98sNdYNdvykLZhuJdffrn/lllEr732mrvvvvvs0l111VVlR+xCXDNJyyRrVB566CG39dZbu7POOiv6qOBrvvO33HJLBncXBrLvvvu6ww47LLyl8wCBqto8DUJy+qQUIZkyFwCxa8LsSNeem7oB2w5wHTda327HHrc4YmCa1MVBmw5tXe/9+rr37n/XfTl7DclJR/KlK/6DE7fnr/dNE7f+Rupf30MGuja/eNqTgx+PnuE6pIhbBBMLvfbt58+j//oeMCAd5tJPl6S0g2uI3Wn/muydtt+sveu9/xptB2y9bn/mTrHELh4gX/lhdmL6+PfdtHenelwga8c8/5p744XXXbfe3d3AoQPdOuut675M3R//xnj30bQPM16odTus63oP6uN6btnLtWyZex5g/H01pCiaruCQS8iDkbq43XT77incW3vslsxNleO3xC4kLyQsstdv90+Tuv5G6t92p+zoid35Ez9zC2cscGavuP2mHRy/OEELmzA/m/JZxuNJj9RoDW974uA0qYuDtVPawNudvL0b9ZsXMtxzQT3rtUUv/8Pm7pS3J6eI3uluxfIVbs7Hc/wPzV6w7LdNf8e5RAgI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7N69Wzbv0KFDmbvhj/pz586lnTt3yrYNGzYkX19fatGiBfXt27fM/aEBCIAACIAACIAACIBAzSEAj92acy8wExAAARAAARAAARAAARCwKQEHBwfq06cPtWvXTvabmppKcXFxcrPpQOgMBEAABEAABEAABECgygk4V/mIGNAqAl/O/oF++2OJrPvzj1+Tm5ubPH540mQ6eeo0dWjXlqa/9JxVfaESCIAACIAACIAACIBA3SRw7tw5mjFjhlw8e+sOHTqUAgICyN3dvW4CwapBAARAAARAAARAoJYQ4FBbEHZr6M1MS0ujpJOn5OwKCoqjZbCoy+UB/o1q6MwxLRAAARAAARAAARAAgZpCQIVg4Pk88MAD5O/vX1OmhnmAAAiAAAiAAAiAAAhUgICjoyMhFEMFAKIpCIAACIAACIAACIAACNRkAikpKXJ6DRo0gKhbk28U5gYCIAACIAACIAAC5SAAYbcc0NAEBEAABEAABEAABEAABOyBAD+ixxYYGGgP08UcQQAEQAAEQAAEQAAErCTASXIh7FoJC9VAAARAAARAAARAAARAAARAAARAAARAAARAAARAoKYQgLBbU+4E5gECIAACIAACIAACIAACNiaQnZ0te3RwcLBxz+gOBEAABEAABEAABECgOgnw5zsIu9V5B0oZ293NQ7uq/yDu6Wko9/Ly0q7jAARAAARAAARAAARAAARMCeTm5lJ8fLwsDggIML2McxAAARAAARAAARAAATsn4CDiMRTa+RowfRAAARAAARAAARAAARCotQR2794t19ahQwer1rho0SI6duwYnT17llSM3QkTJlBERIRV7VEJBEAABEAABEAABEDAPgg428c0MUsQAAEQAAEQAAEQAAEQAAFrCBw9elSKulzXx8eH+vXrB1HXGnCoAwIgAAIgAAIgAAJ2RgAeu3Z2wzBdEAABEAABEAABEACBukWgrB67Kq6uh0dxaK+6RQyrBQEQAAEQAAEQAIG6QQAeu3XjPmOVIAACIAACIAACIAACdYQABN06cqOxTBAAARAAARAAgTpN4MqVK0ieVqffAVg8CIAACIAACIAACIAACIAACIAACIAACIAACICA3RFwcnKCsGt3dw0TBgEQAAEQAAEQAAEQAAEQAAEQAAEQAAEQAAEQqPMEHOs8AQAAARAAARAAARAAARAAARAAARAAARAAARAAARAAATsjAGHXzm4YpgsCIAACIAACIAACIAACIAACIAACIAACIAACIAACEHbxHgABEAABEAABEAABEAABEAABEAABEAABEAABEAABOyJQWFiIGLt2dL8wVRAAARAAARAAARAAARAAARAAARAAARAAARAAARAgCLt4E4AACIAACIAACIAACIAACIAACIAACIAACIAACICAnRFwdHSEx66d3TNMFwRAAARAAARAAARAAARAAARAAARAAARAAARAAAQg7OI9AAIgAAIgAAIgAAIgAAIgAAIgAAIgAAIgAAIgAAL2RgDJ0+ztjmG+IAACIAACIAACIAACIAACIAACIAACIAACIAACdZpAQUEBOddpAlg8CIAACIAACIAACIAACNgJgd27d9vJTDFNEAABEAABEAABEACByibg7OyMUAyVDRn9gwAIgAAIgAAIgAAIgAAIgAAIgAAIgAAIgAAIgIAtCXDyNHjs2pIo+gIBEAABEAABEAABEACBSiLQunXrSuoZ3YIACIAACIAACIAACNgbAQcHB3js2ttNw3xBAARAAARAAARAAARAAARAAARAAARAAARAAATqNgEIu3X7/mP1IAACIAACIAACIAACIAACIAACIAACIAACIAACdkrA0U7njWmDAAiAAAiAAAiAAAiAAAiAAAiAAAiAAAiAAAiAQJ0kUFBQgFAMdfLOY9EgAAIgAAIgAAIgAAIgAAIgAAIgAAIgAAIgAAJ2TQAeu3Z9+zB5EAABEAABEAABEAABEAABEAABEAABEAABEACBukjAuS4uuqavueBKAfGmNwdHB3JydtIX4RgEQAAEQAAEQAAEQAAELBK4fPky8WZqPj4+xIk2YCAAAiAAAiAAAiBgSwJXrlyh7Oxssy49PDzIyQl6lhkYGxQUFhYShF0bgLR1F5s+XEfrXl9t1K1/uwAat2qCURlOQAAEQAAEQAAEQAAEQMASgQ8++IBmz55tdmnLli1Uv359s3JLBadOnaI+ffrIS2vXrqWAgABL1WxSlpubS3/99RcdOnRIfinMz8+nAQMGUK9evWzSPzoBARAAARAAARCoXAK7du2iefPmmQ0yZswY6tChg1l5VRdkZWXRyy+/LId94oknKDg4uKqnYPPxHB0dIezanKoNOmwQ2oCa9W0me7p4Mp1SDp63Qa/oAgRAAARAAARAAARAoK4QYPH2pptu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AiRAAiRAAiRAAiRAAiRAAiTgLYH4+HiJMNx2k7ytwHIZJ4DQE2d2n5TL5y5LoUpFnLxtPbWOWLynd50UhLMoUKGQ1zFvLxw5L+cPn5WClQpLTL5cnnZhbts+Y5NMfnSiEqH7bnhB4MUbbJZeHukdx/nz59NbNVPr5c3L2TszFTAbJwESIAESIIEgILB27VrVi1q1agVBb9gFEiABEiABEiABEiCBYCEQHSwdyS79wCRkhaoU9Xm40blySNFaxX2uF1s8r+Dji61Mnsyt3sMNglLUxVjSy8MXDixLAiRAAiRAAiRAAqFKYPHixfL7779LdHS0FCpUSFq2bCmNGjUK1eGw3yRAAiRAAiRAAiRAAjYCkZGRQmHXBiW7rh5df0iijHAF237bLHEL4hSGhr1uyK44OG4SIAESIAESIAESCGkCV65ckZw5c8rVq1fl2LFjMnnyZClSpIhUqFAhpMfFzpMACZAACZAACZAACTgIBHzyNIIPXgKL3pkrO/7YYXbwhr43qpAPZgYTJEACJEACJEACJEACIUOgffv2gs+RI0dk+HDHpMVxcXEUdkPmCLKjJEACJEACJEACJOCZACZPo8euZ0bZZmvBcgVVTN2cBWOkXrfrpem/WmWbsXOgJEACJEACJEACJBCuBIoXL2567rqbyDVcx85xkQAJkAAJkAAJkEC4E6CwG+5H2MvxtR92p+BDIwESIAESIAESIAESCB8CCMWAD6xYsWLhMzCOhARIgARIgARIgASyOYHExESJzOYMOHwSIAESIAESIAESIAESCFsCBw8eNMdWunRpM80ECZAACZAACZAACZBA6BOgsBv6x5AjIAESIAESIAESIAESIAGXBPbv36/yMZFanjx5XJZhJgmQAAmQAAmQAAmQQGgSoLAbmseNvSYBEiABEiABEiABEiCBNAkcPXpUlSlYsGCaZVmABEiABEiABEiABEggdAgkJSUxFEPoHC72lARIgARIgARIgARIgAR8IxATE6MqQOC9ePGib5VZmgRIgARIgARIgARIIGgJREZGUtgN2qPDjpEACZAACZAACZAACZBABgk0aNBAcNEPe+utt2TkyJGycuXKDLbK6iRAAiRAAiRAAiRAAllNICIigsJuVh8E7p8ESIAESIAESIAESIAEMotAjhw5pECBAqp5zJyMmLvnzp3LrN2xXRIgARIgARIgARIggQARSEhIkOgA7Yu7IQESIAESIAESIAESIAESCCABhF4YPny4QNAtUqSItG7dWi2LFy8ewF5wVyRAAiRAAiRAAiRAAplBAG9lUdjNDLJskwRIgARIgARIgARIgASymMDff/+tRN3o6Gjp27ev6Hi7Wdwt7p4ESIAESIAESIAESMAPBDB5WsSaNWuS/NAWmyABEiABEiABEiABEiABEiABEiABEiABEiABEiABEggAATy8d8ykEICdcRckQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAL+IRBhTJ5Aj13/sGQrJEACJEACJEACJEACJEACJEACJEACJEACJEACJJDpBCIiIuixm+mUuQMSIAESIAESIAESIAESIAESIAESIAESIAESIAES8DMBhmLwM1A2RwIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAKZSYAeu5lJl22TAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQQCYQSEpKYiiGTODKJkmABEiABEiABEiABEiABEiABEiABEiABEiABEggUwkwFEOm4mXjJEACJEACJEACJEACJEACJEACJEACJEACJEACJOBfAomJifTY9S9StkYCJEACJEACJEACJEACJEACJEACJEACJEACJEACmUsgKiqKwm7mImbrJEACJEACJEACJEACJEACJEACJEACJEACJEACJOBfAoyx61+ebI0ESIAESIAESIAESIAESIAESIAESIAESIAESIAEAkKAMXYDgpk7IQESIAESIAESIAESIAESIAESIAESIAESIAESIAH/EIiIiGAoBv+gZCskQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkEBgCDMUQGM7cCwmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAn4jUBiYiI9dv1Gkw2RAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQQAAIREVFUdgNAGfuggRIgARIgARIgARIgARIgARIgARIgARIgARIgAT8SiDar6152dicOXNk7ty5UrFiRfVp3769lzVZjARIgARIgARIgARIgARIgARIgARIgARIgARIgASyNwFMnhZwYVeLukC/e/du9UGa4i4o0EiABEiABEiABEiABEiABEiABEiABEiABEiABEjAM4H4+PjAC7vw1LUb8kJN2L1y5Yps27ZNtm/fLlu2bJH9+/dLiRIlpGzZstKkSROpU6eOfZhhuz5r1izBl6lhw4ZSvHjxsB0nB0YCJEACJEACJEACJEACJEACJEACJEACJJB9CHzxxRdKs0TUAV8Mzqxwbn388cd9qeZT2cjISIk4d+5ckk+1Mlh44MCBqVoAnMwcaKodZjBjz5498uqrr8q+ffvcttS4cWPp16+fEnrdFgqTDW3atFEjGTZsmDRv3jxMRsVhkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJZFcCEHUh0MKgW3or7qIO6sIyU/PMksnT2rVrpwZm/eMtGGudrEpDbe/Zs6cp6larVk26du0q/fv3lx49ekipUqVU11asWCHPP/+8HDt2LKu6yv2SAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAn4SMAq6qKqfd1dc1ZRF2Xs6+7qpSc/KSlJItNTMSN1EHLBKu4iHSphGA4cOCBvvvmmGn6ePHnkgw8+kNGjR8uzzz4rHTt2lMcee0y++eYb6dOnjypz6tQpGTRoUEZwsS4JkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkEAACbjSKtMSd92JuK7a8tdQAj55GjqOAWXmoPwFx96OdqNG/meffebSBRtu0Pfff78cOXJEJk+eLJs2bVLxd8uUKWNvjuskQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAJBRkCHULBqgegi1l2FZXAn6roq66+hRkREBH7yNH91PtDtYJK0efPmqd3ee++9LkVda59QBsIubPHixfLAAw9YN8uSJUvkr7/+UsLvoUOHpFKlSlKzZk259dZbpWrVqk5lIQ5PmjRJrrvuOnnyySdl+vTpglAP+MDq1asn3bt3l7p16zrVw8ry5ctlxowZaqK3gwcPSrFixaRChQpqP/CWhhBtt127dskff/yhJoXbsWOHlCxZUmrUqCHNmjWTFi1a2It7XEc84mnTpsnGjRtl7969Urt2bTXJWuvWrc2wFR4b4EYSIAESIAESIAESIAESIAESIAESIAESIAESCDABb8XdrBB1gSIxMTHwk6cF+Bj4bXdTp06Vjz76SLX3/fffeyVKJiQkiIp3YcxSh5nqYJcvX5YRI0bIr7/+qtZd/UFs3s6dO5ubFi5cKK+99pqaiK1Ro0aCvriyN954Q1q1amVuQliIL7/80ly3J+644w4ZMGCAQOHX9ssvv8iHH36oV1MtUQf9y5Url7nN3eRpEJTfe+89s5w1gVAWn376qRK0rflMkwAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkECwEPAk3KKPdq9e5GWmpy7ah9Fj18HBq7/79u1T5SBI6gnS0qroyht2/PjxpqirPW3hiYsvyciRI9Vka8OHD1feuXbvWPQBnyZNmki3bt2kYMGCyvP3hx9+kIsXL8qYMWNMYffkyZOmqNu0aVN5+OGHlbfu0aNH5bvvvpOlS5fKb7/9JhBq69Spo4aCPC3qFipUSJ555hmpUqWKoA72sWbNGlUnNjZW+vbt63H469atM0Vd7B/hKQoXLqw8hzFOxB9GbGKIz0WKFPHYFjeSAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQQFYQ8OS566o/gRB19X6zJMbunDlzZO7cuSqcAeCEQrxdhBGAlStXTrPzeYmQC/D2hd10000CD1st/oIDBFtMwHbs2DHl1QtBNEeOHE77ad68uQwZMsT0AEbYBngFf/XVV0r0PXfunOTLl082b95s1kP4hsqVK6v1EiVKSK1ateS+++5T4uratWuVsAvvYnjQwiDqfv3115I/f361jr41btxY7RfhKCZOnCidOnUSd3GD0RYmloO1bNlSjVN7BSMMRMOGDaVHjx5KjJ45c6Y89NBDqiz/kAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkECwEXAn7tr7GUhRV0UJsHcgs9e1qIv9wEsVAi/ygt3gAQuDx256DTF1tcHjVYu6Og+CrPaERTxcxPW1W8+ePU1RV2+zhl/Q/SxfvrzerERfiMXaoqOjZdSoUTJ27Fjp0KGDyt65c6cShrECT10t6uo66OvTTz+tV2XRokVm2p6Ii4sTxNaF4QutRV2VYfwpWrSoKeZOmTJFZ3NJAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAkFJQIu77joXSFEXfciSUAwQcu2GvGD32kX4BYifhw8ftnff6/X9+/ersmXLlnUbzgHerNoOHDigvGv1OpZWwVbn582bVycF3rIweNPCMxcTr0FQxgcToKF9hIDARGvFixc360FI1oY4vq4M5eH5Cw56LK7K6bAV2IZQCzq+sLWs9oCG4IwwEhkRzK3tMk0CJEACJEACJEACJEACJEACJEACJEACJEAC4U4AeluWhGKwg4XiHewGMRYGARTiqd3b1lX/MXHYiRMnpGbNmvLoo4+aojDCIbgzeMpC5ITYaRVbdfmYmBidTHOJcAjjxo1TMX3R3pYtW9RHh4NA3NvevXtLzpw5VRxd3SBi4bozcLB697oqB0Fa2+zZs3XS7fLMmTMUdt3S4QYSIAESIAESIAESIAESIAESIAESIAESIIGsJuBuEjXdL0yiFkivXeiTARd227Vrp8Iv6EFjGQrCrnXCNHi/WsMfWMei04h1O2PGDLVau3ZttdThDbDNnV29elWJutiOydEyYrly5VLhE/Clgucu4umuXr1aVq1apZqdMGGCirP78ssvi9Xr15MHrQ714En8tW7773//63EIcBtHTF8aCZAACZAACZAACZAACZAACZAACZAACZAACQQjgbREXd3nQIq7WeKxq0Mu6JAMEHp1noYQjMsbb7zR7BY8XtMSdq3xdOvXr6/qaq9feM5evnxZILzaDV8Ube4mJ9PbPS3Pnj0rEGFz586tQi4g/AI+jzzyiAqj8Morr6g4uH/++af0799fSpcubTa3a9cuNaGamZGcgOi8Y8cOteYqJIQub51gDhPAuRJuIW4jrAW8hV1x0G1xSQIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAJZRcCdqAtHShjEXKsFStzNksnTMFAIuUOHDlWfUBB10WdM+PXggw8iqcIZjBkzRhITE9W6/c/x48dl+PDhKhuiZvXq1VW6Tp06ZtGff/7ZTFsTmNBMW5UqVXTS5+XkyZMFE639+9//TlUXgnGXLl3M/PPnz0ulSpXMdYRvcGVTp041vYm1F7KrchUqVDBDK7ibHO3dd9+VJ554QgYNGuSqCeaRAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQQJYS8CTqIgIBPlrgtXYU4q7VedO6zV/pLBN2/TWAQLeDmLR6kq/vvvtO3njjDdm8ebPAkxWGJTx1IVginAHstddeU16pSDdo0ECaNGmCpEAYRiiEa9euqXV4sELsXLJkiVpH7NsCBQqodHr+YHI0GCYyGz16tFy6dMls5tSpUzJnzhy1XqxYMSVa58uXT5566imVt2LFChk2bJjokBHx8fECoXjEiBFqOzyQb7jhBrM9ewKM4BkMGz9+vHz77bfKQxnraBNi76JFi7Aqt912m1ryDwmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAkEC4G0RF3dz6wUdyMMoS1Jd4TLtAlgYjCItZhAzGqIwWuf7AwCb/fu3a3FBPUHDBjgVNZet2HDhkpY1SEKFi5cqPaJhubPn+/UHlbgIdy1a1eV/9VXXynvWwRQHjhwoCkUYyM8aZEPsVcb+nLnnXeq1StXrghCNCxfvlxvFnvfIAT/73//E2u4hTZt2qjyEIObN2+u0gg18eKLL8q6devMtlD32LFj5jo8mNGWLxPCmZWZIAESIAESIAESIAESIAESIAESIAESIAESIIFMIOCtqGvddXrqWOv7msa8VZG+Vsru5RGL9rPPPpNu3bop0VPzsIq6iGX75ZdfphJ1URb14Y7dsWNH0/tX14XwCa/Z999/3ynubHS073PcRUVFqTAHEJa1l/GePXtMUbdatWoyePBgU9RF3yCwvvPOO/Lss88K+gLTfUMbEIARKsIq6qpCyX+wT20QpT/88EN57LHHzBi7VlH3oYcekrfffpuirgbGJQmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQQFAQ0G+6WzuDkAvwznVn7jx3XbXlrg1f87PEYxcDwuRpGDA+oRJn1xVchBbAZGOYrAzerfhgwjJvDd62EDwR9xbhEDLDEEoB+8FkahBvCxcubIqtnvaHse3fv1+FatBCr6fynradOXNGicQIL4G2cuTI4ak4t5EACZAACZAACZAACZAACZAACZAACZAACZBAlhGwxslNS9S1dtLquetO7LWWT286MjJSAi7salHX2ul27dqFtLhrHQvTJEACJEACJEACJEACJEACJEACJEACJEACJEACoU8A4i4cUiHQ+mIQd6GBuppYzZd2PJVFKIaAC7uI++rKhg4d6iqbeSRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAhYCQRNj11fV2zIGJkmABEiABEiABEiABEiABEiABEiABEiABEiABEggWxFITEwM/ORpCLtgNwq7diJcJwESIAESIAESIAESIAESIAESIAESIAESIAESIAHXBKKiogIv7CIuhVXcZXxd1weHuSRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiTgikBSUlLgY+y66gjzSIAESIAESIAESIAESIAESIAESIAESIAESIAESIAEvCMQNDF2vesuS5EACZAACZAACZAACZAACZAACZAACZAACZAACZAACVDY5XeABEiABEiABEiABEiABEiABEiABEiABEiABEiABEKMAEIxRIZYn9ldEiABEiABEiABEiABEiABEiABEiABEiABEiABEsjWBBITEynsZutvAAdPAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiQQcgSioqIo7IbcUWOHSYAESIAESIAESIAESIAESIAESIAESIAESIAEsj0BhmLI9l8BAiABEiABEiABEiABEiABEiABEiABEiABEiABEgglApw8LZSOFvtKAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAgaB+Ph4hmLgN4EESIAESIAESIAESIAESIAESIAESIAESIAESIAEQolAZGQkhd1QOmDsKwmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAlQ2OV3gARIgARIgARIgARIgARIgARIgARIgARIgARIgARCjEBSUpJEh1ifve5ujcEXvC7LguFHYMvg2PAbFEdEAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAskEordu3RqmMMqE6bg4LG8IhO/32pvRswwJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkEA4E4iJiWGM3XA+wBwbCZAACZAACZAACZAACZAACZAACZAACZAACZBA+BFITEyUiHPnziWF39A4IhIgARIgARIgARIgARIgARIgARIgARIgARIgARIITwIRERH02A3PQ8tRkQAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJhDOByHAeHMdGAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAuFGICkpiR674XZQOR4SIAESIAESIAESIAESIAESIAESIAESIAESIIHwJsBQDOF9fDk6EiABEiABEiABEiABEiABEiABEiABEiABEiCBMCQQGRlJj90wPK4cEgmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQQBgTSEhIoLAbxseXQyMBEiABEiABEiABEiABEiABEiABEiABEiABEghDAvTYDcODyiGRAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmENwFMnhYd3kPk6EiABEiABEggexPImzdv9gbA0ZMACYQ9gfPnz4f9GDlAEiABEiABEiABErATgLAbac/kOgmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQQHAToLAb3MfH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CZAACZAACZAACZAACYQ0AQq7IX342HkSIAESIAESIAESIAESIAESIAESIAESIAESIIHsRoAeu9ntiHO8JEACJEACJEACJEACJEACJEACJEACJEACJEACIU8gKSlJokN+FBwACZAACZAACZCAWwKMPekWDTeQAAmQAAmQAAmQAAmQAAmQQEgTYCiGkD587DwJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkEB2I5CYmMjJ07LbQed4SYAESIAESIAESIAESIAESIAESIAESIAESIAEQptAVFQUhd3QPoTsPQmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQQHYjgBi7DMWQ3Y46x0sCJEACJEACJEACJEACJEACJEACJEACJEACJBDyBCjshvwh5ABIgARIgARIgARIgARIgARIgARIgARIgARIgASyE4GIiAiJ3rlzZ3YaM8dKAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiFNIDo6mqEYQvoIsvMkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQALZjgBi7EYYf5Ky3cg5YBIgARIgARIgARIgARIgARIgARIgARIgARIgARIIYQKMsRvCB49dJwESIAESIAESIAESIAESIAESIAESIAESIAESyJ4EKOxmz+POUZMACZAACZAACZAACZAACZAACZAACZAACZAACYQwAQq7IXzw2HUSIAESIAESIAESIAESIAESIAESIAESIAESIIHsRyAxMZGTp2W/w84RkwAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJhDKBiIgICruhfADZdxIgARIgARIgARIgARIgARIgARIgARIgARIggexHgMJu9jvmHDEJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkEAYEGCM3TA4iBwCCZAACZAACZAACZAACZAACZAACZAACZAACZBA9iJAYTd7HW+OlgRIgARIgARIgARIgARIgARIgARIgARIgARIIAwIUNgNg4PIIZAACZAACZAACZAACZAACZAACZAACZAACZAACWQvAtHZa7gcrZ3A1WvX7FkSHRUtkZERqfKZQQIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkEBwEws5j9/l/D5SRX4zzii5EzQ0bN8tPk3+RaTP+kN174iQxMcmruuFQ6PLlK9K09W2pPgsX/xUU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"/><use stroke="#7E7C7B" xlink:href="#rect-1"/></g><path id="Rectangle" stroke="#C06334" stroke-width="2" d="M4 393h209v53H4z"/><g id="Default"><use fill="#000" filter="url(#filter-3)" xlink:href="#path-2"/><path fill="#FFF" stroke="#A7333A" d="M71.5 303.775l15.69 16.01h-6.488c.886 1.695 3.06 5.91 4.01 8.24.318.776-.979 2.324-.979 2.324h0l-2.42.151-4.2-8.574-5.613 5.727v-23.878z"/></g></g></g></svg> \ No newline at end of file diff --git a/2-ui/1-document/02-dom-nodes/domconsole0@2x.png b/2-ui/1-document/02-dom-nodes/domconsole0@2x.png deleted file mode 100644 index a8953395c..000000000 Binary files a/2-ui/1-document/02-dom-nodes/domconsole0@2x.png and /dev/null differ diff --git a/2-ui/1-document/02-dom-nodes/domconsole1.png b/2-ui/1-document/02-dom-nodes/domconsole1.png deleted file mode 100644 index c04f015cf..000000000 Binary files a/2-ui/1-document/02-dom-nodes/domconsole1.png and /dev/null differ diff --git a/2-ui/1-document/02-dom-nodes/domconsole1.svg b/2-ui/1-document/02-dom-nodes/domconsole1.svg new file mode 100644 index 000000000..02ef5f0a6 --- /dev/null +++ b/2-ui/1-document/02-dom-nodes/domconsole1.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="696" height="512" viewBox="0 0 696 512"><defs><style>@import url(https://fonts.googleapis.com/css?family=Open+Sans:bold,italic,bolditalic%7CPT+Mono);@font-face{font-family:'PT Mono';font-weight:700;font-style:normal;src:local('PT MonoBold'),url(/font/PTMonoBold.woff2) format('woff2'),url(/font/PTMonoBold.woff) format('woff'),url(/font/PTMonoBold.ttf) format('truetype')}</style></defs><defs><path id="rect-1" d="M0 0h696v512H0z"/><path id="path-2" d="M66 424v21.429l5.25-5.358L75.625 449h1.75s1.13-1.161.875-1.786c-1.203-2.947-4.375-8.928-4.375-8.928H80L66 424z"/><filter id="filter-3" width="195.6%" height="153.8%" x="-42.9%" y="-25.8%" filterUnits="objectBoundingBox"><feMorphology in="SourceAlpha" operator="dilate" radius="1" result="shadowSpreadOuter1"/><feOffset dy="1" in="shadowSpreadOuter1" result="shadowOffsetOuter1"/><feGaussianBlur in="shadowOffsetOuter1" result="shadowBlurOuter1" stdDeviation="1.5"/><feComposite in="shadowBlurOuter1" in2="SourceAlpha" operator="out" result="shadowBlurOuter1"/><feColorMatrix in="shadowBlurOuter1" values="0 0 0 0 0.0941176471 0 0 0 0 0.0901960784 0 0 0 0 0.0901960784 0 0 0 1 0"/></filter></defs><g id="dom" fill="none" fill-rule="evenodd" stroke="none" stroke-width="1"><g id="domconsole1.svg"><g id="Bitmap"><image width="696" height="512" xlink:href="data:image/png;base64,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gAQkIAEJSEACEpCABCQgAQlIQAISkIAEJDAwAQXcgVEZUAISkIAEJCABCUhAAhKQgAQkIAEJSEACEpDAeAko4I6Xt2eTgAQkIAEJSEACEpCABCQgAQlIQAISkIAEJDAwAQXcgVEZUAISkIAEJCABCUhAAhKQgAQkIAEJSEACEpDAeAko4I6Xt2eTgAQkIAEJSEACEpCABCQgAQlIQAISkIAEJDAwAQXcgVEZUAISkIAEJCABCUhAAhKQgAQkIAEJSEACEpDAeAko4I6Xt2eTgAQkIAEJSEACEpCABCQgAQlIQAISkIAEJDAwAQXcgVEZUAISkIAEJCABCUhAAhKQgAQkIAEJSEACEpDAeAko4I6Xt2eTgAQkIAEJSEACEpCABCQgAQlIQAISkIAEJDAwAQXcgVEZUAISkIAEJCABCUhAAhKQgAQkIAEJSEACEpDAeAko4I6Xt2eTgAQkIAEJSEACEpCABCQgAQlIQAISkIAEJDAwAQXcgVEZUAISkIAEJCABCUhAAhKQgAQkIAEJSEACEpDAeAko4I6Xt2eTgAQkIAEJSEACEpCABCQgAQlIQAISkIAEJDAwAQXcgVEZUAISkIAEJCABCUhAAhKQgAQkIAEJSEACEpDAeAko4I6Xt2eTgAQkIAEJSEACEpCABCQgAQlIQAISkIAEJDAwAQXcgVEZUAISkIAEJCABCUhAAhKQgAQkIAEJSEACEpDAeAko4I6Xt2eTgAQkIAEJSEACEpCABCQgAQlIQAISkIAEJDAwAQXcgVEZUAISkIAEJCABCUhAAhKQgAQkIAEJSEACEpDAeAko4I6Xt2eTgAQkIAEJSEACEpCABCQgAQlIQAISkIAEJDAwAQXcgVEZUAISkIAEJCABCUhAAhKQgAQkIAEJSEACEpDAeAko4I6Xt2eTgAQkIAEJSEACEpCABCQgAQlIQAISkIAEJDAwAQXcgVEZUAISkIAEJCABCUhAAhKQgAQkIAEJSEACEpDAeAko4I6Xt2eTgAQkIAEJSEACEpCABCQgAQlIQAISkIAEJDAwAQXcgVEZUAISkIAEJCABCUhAAhKQgAQkIAEJSEACEpDAeAko4I6Xt2eTgAQkIAEJSEACEpCABCQgAQlIQAISkIAEJDAwAQXcgVEZUAISkIAEJCABCUhAAhKQgAQkIAEJSEACEpDAeAko4I6Xt2eTgAQkIAEJSEACEpCABCQgAQlIQAISkIAEJDAwgWWnnHLKwIENKAEJSEACEpCABCQgAQlIQAISkIAEJCABCUhAAuMjoAfu+Fh7JglIQAISkIAEJCABCUhAAhKQgAQkIAEJSEACQxFY7bLLLrt6qD0MLAEJSEACEpCABCQgAQlIQAISkIAEJCABCUhAAmMhoAfuWDB7EglIQAISkIAEJCABCUhAAhKQgAQkIAEJSEACwxNQwB2emXtIQAISkIAEJCABCUhAAhKQgAQkIAEJSEACEhgLAQXcsWD2JBKQgAQkIAEJSEACEpCABCQgAQlIQAISkIAEhieggDs8M/eQgAQkIAEJSEACEpCABCQgAQlIQAISkIAEJDAWAgq4Y8HsSSQgAQlIQAISkIAEJCABCUhAAhKQgAQkIAEJDE9AAXd4Zu4hAQlIQAISkIAEJCABCUhAAhKQgAQkIAEJSGAsBBRwx4LZk0hAAhKQgAQkIAEJSEACEpCABCQgAQlIQAISGJ6AAu7wzNxDAhKQgAQkIAEJSEACEpCABCQgAQlIQAISkMBYCCjgjgWzJ5GABCQgAQlIQAISkIAEJCABCUhAAhKQgAQkMDyBZcPvsrT3+PWvf12dffbZ1Ve/+tWRgrjFLW5R3ec+96mYzoedccYZ9WG33nrr+Ti8x5SABCQgAQlIQAISkIAEJCABCUhAAhJYIALqPgsEfkyn1QN3SNBf+cpXRi7eEoUIw0NGx+ASkIAEJCABCUhAAhKQgAQkIAEJSEACEpDAFBPQA3fIm4vQir3xjW8ccs/ewV/xilfUwjBeuJoEJCABCUhAAhKQgAQkIAEJSEACEpCABCQgAQjogWs6kIAEJCABCUhAAhKQgAQkIAEJSEACEpCABCQwoQRG6oE76u4F0h/s7rvvPqH4jJYEJCABCUhAAhKQgAQkIAEJSEACEpCABCTQJBCdEH0vYz81w7g8GIGRCbiHHnpo3Y/rYKcdLFS6K+CG27XAYMwMJQEJSEACEpCABCQgAQlIQAISkIAEJCCBhSQQ8ZY4oO9F41Pfm91dGZmAmxth37CzuxFLea8vfelL1VVXXTUwAh72a1/72tWPf/zj6oILLqg23XTT6ta3vvXA+xtw+glcfvnl1a9+9avq7LPPrqcXXnhhte6661Ybbrhhdfvb37661a1uNf0Q/n2FX/va16orr7yy2nbbbav1119/yVx3twu95JJLqhNPPLE677zzKtLFsmXLai7kI8uXL6+ue93rdtvV9VNK4F//+ldncNIb3vCG1U477dTzSn/7299WjPC75pprVjvvvHPPsNO88ZxzzqnOOuus6vrXv3515zvfeZovtXNt5B3dyiurrbZatc4661Q3velN63cNy+OyU089tU6Tl112WbXllltW97jHPcZ1as8zhQTKdL755ptX/PoZ5a5vfOMbnWC3uc1t6uegs8KZqSWQdyIXiGfdFltsMTHXeumll1bf//736/iQL1J/xL75zW9W//jHPyaubNwtvnWk/ZPAIiXw1a9+dZWYs26xCbg4rBLn9BKwykV1WYFOiog9ql4FRibgdomvqyXQkwAVof33379nmObGu971rvUL+Kijjqq+853vVLvuuuuSFXAR5r785S/XiO50pztVN77xjZu4ltzyueeeW73zne+s/vrXv8649j/96U91BRdB8+Y3v3n19Kc/vdpoo41mhJnGhf/7v/+rL+sGN7jBkhZwr7766uqjH/3ojApm7vfvf//76ic/+Un1uc99rnrsYx9b3ete98omp0uAwBVXXFF94hOf6Fzp9a53vZ7vFCp+5CPXuc515izgki+dcsop9bkXW0GWeH/hC1+oEL2XgoCL0P+xj32sk056zay33nrVM57xjIGEr17HGZ7DQfIAAEAASURBVGTbJz/5yeqEE07oBEVMUcDt4HBmFgTKdL7BBhtUr33ta/seBZGszEfJH2k016afAGWrOHLhKPD6179+Yi6ahvqkS+pJEXA/8pGP1HFciLIxdbeTTjqpPv+OO+5Y3ehGN+rw6hbfTgBnJDAlBIYVQRf6stPbAFOE2EHjT97IPlj2neu1KODOlaD7j4wA4uPGG2/c93hrrLFG3zBLJcA///nP6s1vfnN9uQcffPCSF3C//vWv1yJd7j9p6pa3vGV1s5vdrLr44ovrVvi///3vtfcl3Pbbb7+KirY2/QSokMY7iIrlHe94x1rQ/tvf/lYL+3hrR6C5yU1uUt32tredfiheYSsBClhvetObaoG2NcAIV9Lg9PGPf7w+4r3vfe9qnF6bI7yMJXeoa13rWrW3bS6cBiK8X3m/YAjzb3vb2+oG6vlsWMXrEa8OjPNsv/32tUd0vcI/CYyAAF+68UPI7WV47WpLj8BFF13UEW+5egRIGpEGqc8tPVrXXDF1t7z3qZ+UAu5SZTKb68bpAnvoQx/aunu/7a07uXJeCFC+bXrhDiqAzkuEhjwo9YI0UrFrhNh+11CKt+yX5bl64irgQlObCAL/9V//VT31qU+diLgYicVHAC9KvACw1Vdfvdpzzz2r7bbbbsaFPP7xj6+OOeaY6rjjjqvwujvwwAOrUXf7MuOELkwEAYQVPCYxvK9f9rKXdbww6pUr/04//fQ6PbB82GGHVe94xzuyyekSI4D3Pl6NT3ziE5fYlXu5gxK4293uVvE+aRp5zf/+7/9WP/rRj+oGIb4U4l00X5aGJ47/7Gc/u+5Sar7O5XGXLgEax/k6pZv98Y9/rH73u9912+z6KSYQT1IatTDK1gg1T3nKUyb6qqlv0mi/1VZbTVQ8KaPutttudWMuXwNp7QQQZyPQEqIp4vbb3n5U184XgXxhFhEXQTfr5uucozwucUW0La2fiBuxttyH+VFctwJuk+q/l4FOwTgJrRnsFa94xYxVKPDckH5K/IydXJCABEZGIF0FcEAEOvo0bRrC7sMf/vCKysYPfvCD2ksK4ZcWcG16Cfzyl7/sXNwjH/nIVcRbNtIv8v3vf/+KPrkR8P7yl79UfFqnLU0CCBZ3uctdxvIJ/NIkPJ1Xvfbaa1fPfOYz63cQfRnSR/B8Gp6/Mfre1SQwSgKUmRC56DbmMY95TNcvBMgvsYQfZRw81uQSIP/JvadRi7TCMt3bPeEJT6gi6k7iFfB+n0RjHAZYaoMTiJDbFHFzhH7bE87p/BJAJxuFeDm/sWw/OvoeXrODirjdxNthul5oj8k1axVwu9DhkzTgD2oRfBVwByU2v+HoW/fYY4+tRbqf/vSn1VprrVUPTMMAVvQNRyEzhjcmfXfxSTUvTTyv6NvvzDPPrAcDYT0FEfZB0KcgywBqGPcbQajbQDbf/e536wGTTjvttGrFihX1AFrEgZansmWVbfH423fffSvC06rNef785z/X8XjAAx5QPfjBD64L0Hye+Z73vKcenCrXgdcgn+EwgAnxxdiXFxefjsc7gj7J7nCHO9StldPSByyNLdwvjGtrE2/rjf/+e9CDHlSnDRYpaHIPSyM9IPDyXONRRTcL3Ot73vOeqwzOwGBGpDUGr8Hj4Pjjj68YUCb5B5+RIRq3DbTH/SWv4d7w6S2f9vP5/t3vfvf619ZdyG9+85s6HXJ8hGgEA66XfrSG7YeSz9yILwO+kVYQshl4hILtNPVdB6dYr0/USTvf+ta36koIwn5TwB2GPSLw+973vvq0eHK2iStHHnlk/bkhfe6SL2Af+MAH6jRH396cH89h8jC6AHn7299eh+GPShL5FOmAtEM6YKCZXXbZpbVvZypW3GuOxWf7DN62zTbb1F1F0K94kwviE2L2D3/4w4p5jHOwD3nRtDZ6kDfACV7vf//7qze84Q01qxrAgH/kHd/+9rfre8OnktwXniveE8n3uXc8+zx3Md4B3Aeef+437wHCP+tZz0qQevqHP/yh87UBYZuDrpE2iEPExOzMe5F7irc5aZnP78mfyNu47uZnnLwbf/GLX9T5CnkCaZG8jQYRup/pZXxWyxcR9PVHPva0pz1tleep1/6LeRtlBbru4R7w/iAtlWWOYfLdbvkBeRr3rszb3vWud9VplfcU74PYMPkW6ZGyBPb85z+/Ih+kzEO+sdlmm9Vli+RreBb//Oc/r04++eSOUM3gRQ95yEPqcgjlFPpIJg1xXNIy78FHPOIRq3T3BCPeu5SxSN/kaYg/9K/MtZCvpe9K4nb44YdXDEjJl1uE41niXcw69mHQTgRH3qlNI92TtgnPveC54P3NPjwHzXyf/bmPn//85+u0f/7559fPCs80cSNPnFajz1DyMpiRH7V1LYSIl+6JyCd4h3azYTgyvgP5DV9SUQ6HP3kXn+hTTrrd7W5XPepRj6qfLc5P+qEsiLGd91S3MtEwZbyf/exndb7JO+9xj3tcHafvfe97FetJA1wTedzee+/d+q4gzjwHGGMvNPPZesMi/SNNpNsY3m88x7x/8jxTtmga3VmRr5BWKBfxTjpn5YCYlDPoP5c8hHvXLDORrqhTUTYlj/nMZz7TGaSYZ579OB/3ZBD7n//5n9pbGNGP/Lo07hlpivTEu5i8iy5EHvjAB9b5RBmWebrios7Gs0Jex/NCvsQ+5Me8pzHeix/60Idm1N3oSiHleNIzbNIHNXlsc2DdYdLuXOondYQn+C9ibcTZTLM+06zPNOsn+NKM2oQSoKw8iIhLvawp9HJJoxJvOdbEC7gL9XlzxBcgDWoUPBdry8Kg17gYwlFpoNLNoEQxCvWf/exn6x9i2nOf+9xOhQoPGe4dFU1emhQkYhQe+fFJEMaLtzSOy6eSeHzyYo8RHoH105/+dFbVU87DD8EPMYbRu7F8csQ8lYF3v/vdzHYs8SBuFBIpMHGc0ogHxqiqGJWg5zznOTMqeKxHrOPHy4wCDIWexW4UtmJU9PoZwvUhhxyySsWaQhcVwwj0OQ4VBn4UHnn5l+egcEchiQIegk/uQ/al8nzQQQdVfK5FgTVGoY1KZ2mcHzEXb2IqB9zrUlij0kmhtTQKvUkfCAa8INZcc80ySOs8g97QWFEa5+bHtm5ezGX4xTJfjqDNJ808/219HyOEpyGleW3DsueZJl1gNNA0KyOs537xLJcCQD69RpihAEBhHqMRCuP5fu9731uLIvWKf/+RDki3/Pj8rvTgoNKAuEM/hjHix7n4kdb22GOPTlrj3AxCQnosjXPQ4EHl9aUvfWkt6JTbp2GeiuCTnvSk6sMf/nAtBvHeoFI1iMH0iCOOqO9rGZ50wA8B9JWvfGWdV5CfJH0kbBqhyJMRnrKd+4EgEUNMyzbEk6aAy/PL8ekPNcYxSAOsL438iR+VY9IAIlaMc/Ajv+TdSPxjpedn1mXKORicNBV78rE2USzhp3FKhR5DuC3F22Hz3W75AWJm0kD48V7H+JogNmy+RV6V45Jm6CuedI0hGJf5GuUbxJrSEHQR+Gl0QHwu8xCELt6h5Dekj7ynSEuUl0jXpXEuynM0qCAU8ezkfUhYGskQMxBOEIxi5FOILzlPyZ88kEFOKbuVxnkoU5HGOQ+fMccoXxC/8lp473MOfjTQTeugceuuu26dz1P2hHObgEt6ybMOh24C7rAcOSfHpmxOOib9xCjf8mMbxn0rjfcmZTnSSFkv4x4OW8ZDsCcepCvqFZQdY+TTvMcxymE77LBDNnWmaVxApJsm8ZYLTBm2HMOEdyis2NYm4JJHcO8oa3J/Skt/ywihzW7QaGzhPpC/pFEh+/I8cx/44ejysIc9rJNXJExzSv6AlQ445EW880lvpRFP8lfqZrxvKWfH2MYgf1xzaeRfxJmGeq730Y9+dP2ccA2lpYyX/IXjJQyNS7HZpN3Z1k9yzkmfRoyNOJtp1mea9Zlm/aRfn/GbPAL9RFxiPN/iLeeYeAGXSGpLgwCeShEfu10xLZptXolleCoGEW+f97zn1RVSKlOIpl/84hdrAYwCBh5BpaUigtCG1wEvcoQSCmURbvEeYT9aVXmZv/Wtb61bXqnslwIuld2It3iB4GGHxxvCBw82BVkEMgYeaxoFBFr6qUxTYSIsI6hSmGXK8Tj/q171qrrwE8EJ0YbwFLgxhCoqYNgLXvCC2lOEa6JCSN+vMKEgWnr11YEX4V8KQFTUBvUcbVasuWyYRbxFcKMQiHCCwIHYSQGKAgDiX9Ozg0IXbBE7EHgRLFimUkjlknsXAZfCZgq+3DM8gLlvVCJJNxT6qKBy7yPuUTCNeMtzQGGQFwn70K8vBV/2of9FvDx6GZXhiLecn8IMBXDS9NFHH11X0qm48yzN5wA8veI4ym1wovJEBZCCNF3gIHIgcG299dZ1mokw0HbeUbJvO37bOvIU0hTpFO+QeIhQGcCjDWMd3h3cI/IpKrGkUfZFBCSfwMhnIt6SpvFQ4fknDVKJIZ2SZ6VPT9JZKhM0eOEBRd7BOdhGeuYcr371q+vjT9sf4jdeh3jf4B3E+2CQrxVgQ1rB2IfjkO/DF28yKlM8V4jjeFzzHFNRYzuGdxfpkAYHGoTyDoF7KUJQAY7RAMm9SfpFgItIi9caxnbeE5wfI90jtCCgcf/xDqOyybuHRvNm4waiPWkR22ylFyZ5RjchgryYfIPjkXb5ooSvQpaS8d7NPSqF97nku838gDICz/d5553XEVF5J5Cmwnuu+dYBBxxQ30fSIvlJ6dXL/aTMRFmK9xeCJ2mJZ4B7n7LN/e53v1rUIg3iQQkX0hJxi3CCB2/EW953CCTk2XRj86lPfap+/yL2cK3N5zADZ/EOY1/eh4jkvEN5zyL0pDGLfIvyToRAvOLSyMGXBsSDMAw+RxmJZ4qwNMCynkY0yl+bbLJJ/R7hXckzhac57/sca9rS+vLly6sjVjZMkQ9RRo/wnuuMeEoawIOyzebCMQ0TxIM0SFqCOe/ynJs8i/Sf8hrvSe4Z5bUy75xLGY+G0Hifc52kA/JRyvWkecT8poBLvSZCIfGfJuOeJp8rGzB43nin8Mxyj9oar+GQdwrvKX6kK8o21NW4dzSa8C5JnSbs2Eb5hPcQ+QvHp35E3kNDAudmXbOMnv17TXnXRbwlb6MsT55DWYAGDN6tNBpRboxXLWXuiLdwoJ5IPYTrJx0SJ8paNAQTLxp8uHbii7EPzw5fAfSyuaRdzkc5Y5D6Sa84TOK2iLERZzPN+kyzPtOsn8RrMk6TTaCXiNsW81F63ub4Yxdwo0rnhQqESbZBPYCbfeJO8jVNatx4CfLrZQiRfDLXzXjBpjJMQYuXbIzPrSgIUPBDTEOsaBZEm560LKc7AipMVIKzD4UHKggU7qm0pmBLgeWDH/xgfVo8/crP8+ksn99LXvKSulBHwa7p0YAYgydnvHOpOPHSRYzGKMwiBPIMIcJEwKUAVB6LT3QxCgclM+KNCE5FhkoUBczy08R6p0X2h4cE1k1UGORyuG/xHCFfevGLX9xpLMAzE8GF55yCI2IXn9sjzpSGuEGaiZjCvaOwiYhLAYoCL0JiPO3YF28/9sMo3JFm+XSVCgEVfiqltMLn2aCCTqE2Hm2JGxVOjouHE40JpNc2Iz54oGAIRaTFxJcKCR54eCAl3oN6H7ada1LWcZ+4JgSJiFuI4/wwhCYEXe4phf6ykWiU7IfhQXrh3uJFn3udygPH4T7ttddenXuHaEPeglc9RiWDAippOg0cL3rRizpCMGGoaFDBoOKJGENehUdR+gwm/fJJcYxKBqwQVRBTpiHvyLU1pxS48hzwLsHDhmvvZtwbRFoM7qWXPhz5cRzCke5Ib8tXVujT0MN+LOdZZBlRAkGKvDxlJtaX+QfPKQ1MyUPIM2K88zDE6Ii33E9E+RjxQtBHtMLw/t9nn32yuZ6SFhGvyJdynhkB/r1A1xw0apJ3kY7w0ibNTKNxXxANYtwHxHPuBR6jsVTy55rvtuUHnAMBJY3PnCvlk1HkW4gSlB/oziXvurLLD4Td173udZ1zUragfBIxFrHzvve9b1DU+RVlIlggsMYSnvcfaSzGO4xyzwtf+MJ6FV/GNQVcNtBIkIGISM+ke8qKGHlZBFwEWt7BGI0lNKzHKDvBjnc1gguCDcfiXU98ee9SH+CaMa6VMsF+++1XP9OIAtMq4CKa0oAABwTxkhvl3jR6k391s7lyZAC1Mg/k3fea17ymPh15E42J5DkYaYSyOfeEe0mZjW1zLeORr2HNL1xoiKAhgWcx9YA64Mo/nEnghiUvqBem4I/3Sqz0tI2Ayza48Kx1M7pCoFE5RqM05ZK8jyhr0Kd403g2ee5TVuO9hHjO80heiYMCdaJe7+zmMblP1A0xxFvSV553yso0ylJeJhzlqtzPvHN5LsprpYGN8/PeZx/ewdRByVOpu0XAJd5x1GjGKctzTbscB0aD1E9yzsU0jRgbcTbTrM806zPN+sV0rYs5rjRk8I6ljs2vzNMX23URf+oJ0TW7xX8+xFvO1b020i0mc1zPBadvCC46P9bNptuCOUbH3aeMQLwxqDSU4m0uk4IXxssT0aI0Wu4ZxKi0UgRDFEvlKGHKT7NTuKMFF0OILSvK2YdCRVrp8QhuGq2zEW+zjQpJ+kHCC2AQo4CDUbnDS6H8FAc+iHj8UgAa5JiTGiaVsub9GSa+eFHE6Mu2yQXhlYosRqWgbXAaKqylAEPYeN0yn8ovlb8YFRvEgBgVZSojL3/5yzsVJYQCCqUYXiYR9LIPhcSkbdYlDWZ7OaXiHF40TjTjSwGTPpoxGkSmxRD38XxEEOD5S2WP66NwTeWLSiqVgnjws22U7DneMFaKt+xX3lfSYvPeIUJQIKUylTyECjeGYBgv3nrFv/9IsxgMEjaiG2IMlTS2xaikkzb5NZ+RhJmGKc9BGi8QXdvy6vI68eDDEHr4hLNppLm8TyjADmK8KzBEqNwDGqsikKa7g3hBERYvOYz7nYa5NEwhdJTCch1w5R/iP40XGI2KOVe94t9/5IlUALsZaeVNb3pTHTcqvVR+k4667bOY18OJ683vLW95S+3BjJdpygLk8xEwR5HvNvODXvxGkW/RgEB5JOJt83wIL813LmX8GF8HlMazEQ9NGn9ipD0amUvxI9vS8MByPpfPNqakyYi3WU9ZKesQ8mIp85E+yceaRhwQV8g/cw/jEEC+GjEn+5H/5auFeBtm2zRNyUeSP8TjNddXlpsQuLrZXDjyrk6ZJMfP1yUsU8Yq3+esK/Oq3MsyrrMt45E+0iDAebBS0C7Pwbbkvbx7EQWnyVLfgnXpPEG+kXdds/xQXj/5AQJu03gf5d2WL1qaYSi7NssflIsjBlPGJQ8cxmi0STmb4zSfd+oAz3jGM+r8gcZ1DG9w3vfkHW15Sr6CJGxb/sX6QaxMV7NNu4PWTwaJzySGIY8uBVlE2gi1xLff9km8pmmKU8Rbrgm9j3Iw6xazRcTtdg3zJd5yvmXdTjqu9RFto2Cn8BdVPsvjio/nWTgCDGwRMaFbLPoVgKhEYngs4aXYy5ovdwr8ba21VAYQfMsCY45LAaRpOS4VBz6XbbN4n7SJgKUonH2JFwUk4lEKsdneNuXTIj7/xWiV5jqomCDy4ClCoaspALUdZzGsQ2zBW6isrA0b73gpUmjr1g1DCpUcGyEFkaS0UpjN+rIQGGGEwm2868gD8ezl8yla4fnhEZeKLseJhzHzfM7eZjRA8HzAoQzfDEtFM4aXQluaz+f2eK6Q5tJ4kP0W8xTvDn4YwjniGKJXPGUQ5+laBA8u7m/Jcq7sh+FGWmsK9XhhYDQOkX7arCnQJV2TzvhaoJclbVBJjSj4kY98pP5qgfyRRjHyDzy1pyXv6MWDcghee3gb0y8eIkb5XJb7hh1iQbygy+3Mp/Et+X9ze3MZAZfPQck3eFdwD+I1TtokHZN28WCMaBxvxlJMyfNMvtJNjCNtp7JMpRNvyBjiSAbZy7pySp7DFx3J38iH+n0OWu4/TfOwIi/GK48KfZ6TpA+udTb5blt+0IvbKPItyhC9rO19l0YDykZt5aO2dREHEUPw4saLmWeOslTqCN3i0a2OkAassrwUMYXyT+5LeVzEaATrGOWJpGkawvPsZTtTPC5jxLl8brJ+GqaI8YhI5CX8Uh6OoEv+QNqnvNC0uXKkvNR2vyi7cH/a8uS2dJZ34VzKeGmQKa+Re86zQL6OYMn7EyNtJM00Behy/8U4T12LfB+jfMh7srQ8f7wPKVvFaaUMg2NKU4TNdvKENEbi+FAKxDREtnnisy/n4SsSjPJSW32q3tjyl/IVm7q974hX8ivCkS7j+EOjFF/HkIeR3yMIl8ck/GxtFGm3Lb9uq5/MNo7uJ4FeBNocF1gXva/Xvm5blcDYBVxuVNtNTNRSWFPQDZGlM6XSl1bb2Vw1BblUjCmoR7zsdqx4Q3bb3lzfVoBshmG5rKj1i0Mq9OVxaOUdhdGPHP3QMXANhQoK1nzim898EQPw6ClFyVGcdyGOgeBKYQnxjQpbt0JhGTf6e6QASgEPz5/cC8Sxbsa9SaWhrWDW9ALpdhzW42VLQZMuD0i7eBrhrRGPDT7lpzJJhThxY79e8aMiwzW1xY19sYg5zKdywXw3w5NhmgTc8joRQfnhwYN3BH2M5XNkPm/jc7NRsi/P3W8+FeQyXO5rWZkptzfnEUTiUYIYH1G2GS7LqZBReeFTZvr+TuWbtMIPIZM0+OQnP3ng0Z5z/MU2Jc9nMKb09UvXNt26Syqfq36cc0/68SBfS6MMjZLk2Tk2Qno+u0ToIg8hDtxnLJ9zkwbIFzEaurpZKYLgcVwKUQiS/YzzJ2+kssm7j5HEp9UQZ+N9Ocg1luljNvluW37Q67yjyLeGPWcZn7aGwXJ7OU/eS36LNw7pqLSkqXJdOR+hqFzXNl/mhYM2LiS/5Xg09pVfyrSdI/ln27bFvg6vSMo/lAd4R9KlAXwQrTGeh242KRzzTPQqQ/Ur43XLC2nsOOyww+rGhwiO5VcZyY+7MVps68t6PO+kvJfaroOwbQJur+eQ916M+lxZ5ul1/8pGb95jw1iZTkths98xKCOV/dP2Cz+b7aNIu8PUT2YTx4XeZ1iP26ZH7kLHfymev1sD7GJhgWYZvbItzmybLy/csQu4bRfYa10p6NKCudhvdq9rddvcCFDQ58XOyxTvo/KzprYj40U2H5ZKMgU9PrfpZcMUEnodp9s2KvmIDhSA6KcM7yw8BGCEqEt/dPTXm+4Wuh1n0teXYgNeImW3BW1xp6/CtO7ns/LcizYPkhyDFvZUMMsCZrYPM6UwxYB59IHLQEYpBKelnc/lGcSFT/4TN47fyyOW8FhZiK1XFH9lQZhKWC/jmSrD9wo7ydvotwxuvEPKPqnLOOOZiGCOuELBHy8wKv2jZF+ej/len9S1cc/nyhHpmsdrLiNA4omEFwzeF/2ei/KTd8RBviBAtCDfgAt9vXEs8g8ahv77v/+72mylJ/80G3kLBX0qBzQQxuOsec3cLxrveK7LPseb4VgepkGEhjga3civ+EIlo1Nzf3jH4I2EQEtZKX0XU07KOco00CtvS95B/Jr5R1taJFxpeAPTVyFiNyIPfRciWpR5cxl+qc2XDGeT75b7D8JuFPnWXN9xg8STMPQRmfcx6QUPN/IrBGSW99577857d9BjNsPxHEQMToNGM0xzubx+ypPdxLvsly87sjxtUzxLGWCKMiR5URo7yYPauizL9U8KxzwTvfLBXmU83qWkoTajn2C+VuH9iDcqX0SkMZ4uF7rt13asSV9H+SNdYsAk5ZJmvPFAhgfvJcoMTeGVcng3Kz3bc98StlcDaFk2GrRxJ8clHccGdQQhnnSjk8YbvozBs5jGVxySiCtdd83VwmC2aXeu55/0/RVvJ/0OVXX9q2z4IcaLWdPrJ97mjsyXiLsgAi6V6OZNzIW2TQmvi3UbGdc1CeAlwOA9fF5Dn7VthjBDIa3bZ/Jt+wyzLn0jUajpFgcE1bTSD3PsYcJGgKIQQcWDz3z4IdoyujkjvGIUxhe7gEuFD8EAO+aYY/oKVXi9xvisGCM9IKLiCUshsK21GqaxuXiLI5Zw/ykwcm+IQ+KBgMvAdIggxIe4lJ5QfJ7V7LqBOJGmSVdYKcTVK4q/chuVjjZhICPZUzhv41AcblHMUvilgE2/ld0E3FwIfBBwEer5jYJ9RP+cg2kqN+W6cr7Ni5w0SmUIbz7E37bP4d/73vfW4jMNE09/+tNrAQRhkevo9h5FmKSiFbGNZcRr9sFDGfGCH+ekAs9n/RiNDNMu4HKdVMbJM0gXH//4xzvPKttipBvSF/ekG2fEcJ79pkCaY7RN6UYBAZdz85UB+UHyDcKTF9A4x7nj2Vl2n0AYGhVJM2kQZ13Tym1lmidcP/GB+PBeiccy3SlgpEUEXdYvdZtrvtuWH/RiWt7D2b4z+t33XucfdBuCRMRb0jp5VpleyIfa8s9Bj1+Gw+OPZ7B8j5fbebYYqIy8EO/xfApPGMp1bQ1gCD05Xj+BtzzXYpxn0CbyfziR30SgZH15z5rXlvcK6xeS41zLeL2eB/J9hFoa+OhrmS4n0qVbsy/oJp/Ftkxf+Xkm+YqvrTzKNdF1At1RYYj9zYbNti7k6sAr/8KO5eZzRVmOMmqbQMs7Mlamu6zrNS3rhJSB2so2fFlC37/cbwZwpIwe8RaHjGYeUfbh3evc/bbNNe32O/5i3q54uzjuXsrF0f8Ws7bXTbzF2xZreuXOh4jb3pQ4QWlhMd/gCcK4ZKKSz5SOPvrozku1vHi8TukAHk+hjJxbbh/FPK2vGAWAfEJVHhfvjz322KOOA5/dzIchDnGdFCiafVMhyjEQVjy0aBlf7IZAkVFwKTAdeeSRtQDVdl1spw9CDBaI/lhZCKVA0GYZoZZtc2k5pBJERZGW+6YhDJd9D1JQLQuSCEhtdtxxx3UK1b28YfA8T0WEeLQZ3UswKE+/PlPb9p3EdbnHfO5ZivfNuFIxjQiGBxiiyWzZl5WLCBTl+TIASLmu33zSHJWn5nPNvnxKT75GGs+XAPnMnoat0ssy56Ki9IY3vKG+38STvINl0if7lEalhcE9kn5ScSnDTOM810uejcE+/cyW15r8A4+bchC8hIHrfvvtV3OmG4pBDcEjnkF5X+RcHIOvLDC6WEjllYaZ0pIGEPKpcDYNEe2EE06oVyNyDdtoQzcvEXBoOMggPzRGHX/88c3TLcnlcee7s823xn1zKCfFaHhIOsq6trwz24adhgmNYOXn0jkOFUvWk38iuPPcR3in0QoxuWm8d3lX8pv2/BAPyjDEazqezKXQ3eTD8qRwLPPN+Sjj5as/0g9OEhgNKXNp7K8PMmF/EWB4L/Uqa9I9G2VsjAFxm88PjSlt7yPKYRlAlwbkHKPE0G1Q0XJ9nGnK/XrNl33ElsfJPjhJ4CDC/aX+RF5FmSvG1zJNKwcfa27LcpNL1pfT+U675bkW07zi7WK6W1Xt3EDdgl8E3cV1BdcMwNYUaLmGdJVAPS1Cbnlt7FM6SpTbZjO/IALuIDcN4XYx3+DZ3Iylvg8vRSqg/X54R3Szhz/84R1h8oUvfGGnFZdKN4V2PBsxXr4Z4bvbsWa7ngp1XuSvetWrai+FDKSBFxT90kY0JZ3PxcqCDaICFQgK1Xj/5nM+xLh8dsu5YEFreD7FiefnXOIxCfty7yMs4QFxwAEH1N1EUOjCmCLe4REGAwxRJoOuUNjMwAiIGfTJl0/cEVG5b/G0IQ8bxouuPlnxF0EFsefDH/7wjIFQ8MyNOIeQghCHGJj+JBEhEVbx0MWIIyOfxyuSCkNbf2M5PWk/AjHpAFGaAjPGMTlOhKCI4tl3sU4ZeCRpg37qEMKaYiZCJl0GpFKa/GG27BE7I7xRGaHxKN5kcCd9DWv0i5w+sj/60Y92+k8mf0HA49piif+DHvSgzrUjzKbCQVy4zymIwId0Q95BpQmDE/lmjH1Im3l+elXess+0TKnc5blpuyby2+QfiBvkNeGEKERXNXl3McBVrMzD6aKCZzB5VsLkfZJ7V+bZyefTFyWCUzNvoguIpH8GWGOwslQa2Y9PPBO3chCnnH/Y6a677tpJ+wgZbWLZsMdc7OHHne/ONt8aN+eyH0ze23nn8uzg6YcXd6zXp9MJ02tKGSFG42ne55SFOHcaNMm381VSurvAA57yI+9njGeUPDf7kD80PxHPuaZpunz58vpykl+Q5zU9JNuudxI4zncZj7JX3gGkJyyibhuTxbou+Xk/z2veOSmH8Oz+4he/WOWSeR/RHUPqSPT1SjksZVKcTdqMMjoNoQnHM0xZOg3wxC1lpbb929ZR1s4AZTSEU/7J8Xn3lu/wNFKmrMTxIjozz344EuGRHSvzr/K9T5wpj9LI283mO+12O+8kr1e8neS7M51x6+V5GwcbrnwcIu6CdKEwnbfVq5orAVo2+fUzvCtTSGqG5VNpBh5CpEOQoQ9aKk5YBEvmX/nKVw7tZcR+g9o+++xT912KUJtBbyjk5hN3jsMAKKl8D3rcZjgKATkuogE/RLf999+/FicZiIhzMhAPlQvC4oUVFnhTIApNg9HPGvf9wAMPrIVshCdEXIwKWYS5XCtiDIWi0kgvb33rW+uweNbwa+6LNwVeiHMxvLTxDqACmYHLKGxSaS0LeQgvsYc85CF1H6TxonvRi160StwQfPEu72ccCy9BCuIZ2I59U1hlfwY1Itw0WPpRpLKA4UHCj+eH/AHRLGIb2/kMLiMLszxb9ojuCLVwJS1yvlR84U0Fp5kuOV83IzxplP5niS+CLT/Wl/FHqMjngOSJDDjGgGQ08CBcEB4r93na057WyRMZ1I8GC+LN5/DEG0GI/bMP6TWVnW7xnbb1cMWjppunHQypfHKPc2+azxX5cyl8l4OHJX3SZUP5uSmVYET/WPneQADjHiffiNibsEzZzqfpiPXcvw984AN1ZRQP86RHwlEpjUcvy7M1rpnGsXjw25XCNSTHne/ONt+a7X2fzX6USSibUFbinUTZifSaBkryqjxDVNgRePi6aDbGudKfNfku5aRm3slxiUPySDzfeGZpuKIR7qUvfemMfJzwhG3zuGHbtBne/QhleQ8s/7eg2+86J4XjfJfxaCw+4ogjOjimpXzduaBipp/nNUFprExXGwxSWL672E46ot6CleUjlimfM6BqN8PZgF+zjM47sXx/dtu/bT19OyM08z4ty4nle5KvTHLtNKYmD+HrOERlllOuK9/Nb3vb2+qyGPkJ15p8ja9U+FEfY1yBbjbfabfbeRfDevL1sr7UjHO/7c3wLkugSWBQ8Tb7RcSNk0zWsxxv3aybzfSaWtxs9pzjPv08D8k4yew1CTQJNPuCay7zYj388MM74hxiZQRLCpEIKbxAY3jKjcLKePC5JIIJIlAE5Ii3VFbwDi6FtnLfcn6QeCFY8+KPZX+6k0DMTLcSVJCogIQFIiQV7GFbqXOeSZwiWuFNRqGZQl0shSmWEfOohLW17CPOUqmj0JgKXPalsIUgh1d1OWhDeOdcg0zZhzSAl0DOQ4U1IgxpZLfddpvh8cf5aXigUs48lrhxDAq7iHPdGjfKeLI/n3OTD1OQxErxFiGHdJXz1AEW+R/CFGmjFB0plJeiJGIaYudTV3Y9Utps2ZNe4jnN8VIJ4Dw07KSbg/JcmS/vV9YxxXubvtfKzwNTmSbNI9ThdVsa+d3LX/7yTh+3hM8+VHb22muvjqcM+9HAwMBB6UeTeJN/ZB+eDxpLEHWnwfIM9rsW3hU0hnUznj2eQSqpOWaeK56zRzziEfVzXe5PfsQzneeQbc13El2AZDsVwma6KSvFbQIux2Q9z3w+E+VeJj3yDuB9RJ4zjCWNZlruS5wSF7pSKD2RynBLaX4u+W4b437sZptv5bjNdMj6Mh5t27Nvv2l5HBojk5+RLiPe4k1OmuW5iaXxJOcuj5Mwvaa77LJL3biegbWSp7EP738ElHjf5jjpjopnD8tzw/xWW21Vv5eTV7JuGiz5V/Na+GKpfIfGw7IZrm15WI7D3tu2c7KuvJbZlPG6HbdtPXlezsd7siwrtoVfrOt4NmkQ6Webb755p45Bv8l5H7If4j/PY3jluaIcw1gFlEHajPLTnnvu2TluWQ6mG5bXvva1nW3sX6ajnKs8brmdMSF4h5OuEzbxYpmyFQMLx3gXE8/Uo7i+xIf7T30ijiLkNdnG/giy2Y/lnK+MT9axfTZptzwWx5gmiyibafPasj7T5naXJTAMgTZNsp8QGxG3eZ62YzXD9FtebWVBadVOnfrt1bI9XoZ0ezCIEXlE2tK4UH7legSGQbpcKI8zivlhr2fY8M04znX/5vGay/mEvvT8aYaZxmU+y6GPNT53o4Dd/LR0HNfMp6p8fkcXERR4EEzKl/I44sDnOfQ3xSc6VFyIR7oOGMf5F+ocdH1wzspPn6gQIu6SBoYpUOPtw499y4LWKK+HT0Y5B59mUuGmANk2sFjznFwbwgjpqfyMqxlukGXSB917cI2kjVSOB9l3MYahkE2DCj8aNCiEc91NYazbtQ3LngoAn6ozpXGH+zwKo0LAfUP4RwgcJH8jTyTdkCdyzf324dkh7yLvICyMlkLeMdf7Q75P+uK5hhnPabN/z7meY7b7k27OP//8ujJNRXxU6XG28Vmq+4073x023xr3fUGcpZxCYwViRfke4h1J/GkkGZUowXuAfJny2KBlA/JB9iGOCEnDlCfGzXOSzzcpHEddxiP9pj6377771gL/JN+HhYgbjb98/UX3Enztw/uIMgnlGJ77bmXtj33sY/UAYjx3NMZjvGO5hynDjfp6ODb3lOPz6/YO531POBq6qWMRxzIs9VDKTc31c4nvqNPuXOLivpNHYBJ1n2h/0fsWQt+by53Cezb92PYTb8vzlN673UTdMvwg86NxPRzkTI0w3LRSqGVz+QlStmW62G5y43JdXCACFPRL79SFiAYvccQVfgtlCC/9hJqFitt8nhcPwbl8EpxC23zGkUrqbNIH14b3zyhsqaUPBCuEgG7eyv2YDsueyv585EMID1R4hjHyxHhhDrIflaluFapB9l+qYcj3qazxmzQj3SDcagtLYNz57rD51rjpIHzEM7Z57vl4F/MewENwGEOwbXroDrO/Ya8hMCkcR52u6JIK4505qvLZNcSm95/30WzLYjRC85svGzR98L7vFZdhylyDXsugcRv0eIaTwHwSiHjLORA0I4QuJn0PnRIRlzgjxA5qEW1hUGqdg+7fFm5kAi6esoitaXlsnqyfZ255QbmZEW8zzfrmsV2WgAQkIAEJSEACEpCABCQgAQmMiwBfweBRjJfliSeeWJ+22Y3RuOLieSQgAQlMIoFoeWXcWLfYtL1Sryyvpd98RNx+4QbdPjIBlxtQKuqDRCCiLxfVVLJzQ3PDM836QY5vGAlIQAISkIAEJCABCUhAAhKQwKgJMMAdg1DFGMPgnve8ZxadSkACEpBAC4Gm9tcSxFVdCIxMwOX4s1Wlu+0XsTbibZdrmNfV3TyK5/WkHlwCEpCABCQgAQlIQAISkIAEJpYAgi3dANA9Ed1rMFhb2X/zxEZ8gSLGAJcMVDbswH8MdEhXVHb/s0A3ztNKYA4E4rRZHkIBt6Qx3PxIBdzhTl3VbtP9+p+KiMuxy/lhz2V4CUhAAhKQgAQkIAEJSEACEpDAKAgwGBc/bTACDFw2G7vLXe5S8dMkIIHFRyAaXpwyEXSzbvFdzcLHeLWVI0xfvfDRmLwYlCPNjSt2tER080aeaxwmcTTCuV6T+0tAAhKQgAQkIAEJSEACEpCABCQgAQlUlbrPdKeC1af78mZ/dbQKjNO1m3PZEjH7++WeEpCABCQgAQlIQAISkIAEJCABCUhAAhKYRgJ64E7jXfWaJCABCUhAAhKQgAQkIAEJSEACEpCABCQggakgoAfuVNxGL0ICEpCABCQgAQlIQAISkIAEJCABCUhAAhKYRgIKuNN4V70mCUhAAhKQgAQkIAEJSEACEpCABCQgAQlIYCoIKOBOxW30IiQgAQlIQAISkIAEJCABCUhAAhKQgAQkIIFpJKCAO4131WuSgAQkIAEJSEACEpCABCQgAQlIQAISkIAEpoKAAu5U3EYvQgISkIAEJCABCUhAAhKQgAQkIAEJSEACEphGAgq403hXvSYJSEACEpCABCQgAQlIQAISkIAEJCABCUhgKggo4E7FbfQiJCABCUhAAhKQgAQkIAEJSEACEpCABCQggWkkoIA7jXfVa5KABCQgAQlIQAISkIAEJCABCUhAAhKQgASmgsCyqbgKL2LeCNxqv7/O27E98NIhcPp+11s6F+uVSkACEpCABCQgAQlIQAISkIAEJCCBERJYdsYZZ4zwcB5q+ghsNH2X5BWNnYD5zNiRe0IJSEACEpCABCQgAQlIQAISkIAEpoSAXShMyY30MiQgAQlIQAISkIAEJCABCUhAAhKQgAQkIIHpI7Da1Stt+i7LK5KABCQgAQlIQAISkMB0EDjllFPqC9liiy2m44K8CglIQAISkIAEJCCBoQjogTsULgNLQAISkIAEJCABCUhAAhKQgAQkIAEJSEACEhgfAQXc8bH2TBKQgAQkIAEJSEACEpCABCQgAQlIQAISkIAEhiKggDsULgNLQAISkIAEJCABCUhAAhKQgAQkIAEJSEACEhgfAQXc8bH2TBKQgAQkIAEJSEACEpCABCQgAQlIQAISkIAEhiKggDsULgNLQAISkIAEJCABCUhAAhKQgAQkIAEJSEACEhgfAQXc8bH2TBKQgAQkIAEJSEACEpCABCQgAQlIQAISkIAEhiKggDsULgNLQAISkIAEJCABCUhAAhKQgAQkIAEJSEACEhgfgWXjO5VnksDiJHDVVVetEvE11lhjlXWukIAEJCABCUhAAhKQgAQkIAEJSEACEpDAqAksSgH3d7/7XXX11VdXN77xjavrX//6QzP55S9/Wf3+97+vEOF23nnnofd3h9EROPXUU6tLLrmkWnPNNas73elOozvwiI7029/+tjr77LNXOdpOO+1UXfe6111lvSskIAEJSEACEpCABCQgAQlIQAISkIAEJDBKAotOwEW4/dWvflUz2GCDDaqtt956aB7/+te/6n041kLbxRdfXJ155pnVaqutNpEC5nzzyT3IdNjznXLKKdXf//73asMNN6w23XTTYXfvG/4617lOtWzZNY8JcWzzxu17EANIQAISkIAEJCABCUhAAhKQgAQkIAEJSGCWBBadgDvL65zY3f7xj39Ul19++cTGb9IjtmLFiurKK6+smM6Hrb/++hU/7LLLLqt+9KMfzcdpPKYEJCABCUhAAhKQgAQkIAEJSEACEpCABFoJOIhZKxZXSkACEpCABCQgAQlIQAISkIAEJCABCUhAAhJYeAIT6YFL/7TXuta1qpvc5CZzJvSXv/yl+sMf/lD99a9/rdZee+36U/t+B+VT+QsuuKD685//XP3zn/+s+zpdZ511qnXXXbffrhXno1sEvDXpqoF+Um9+85vP6C+VbZdeeml9rExZoG/f0m54wxvWcWZd9qHfXroLaDOukf5k6Y6Bc2J0L3DRRRfV/f3S5QQs/vSnP9Xb6EOYY62+encd/29/+1v1xz/+sb4udiJOHOfa1752fYxR/sGduF544YXVFVdcUZ9rk002WSV+5513Xt0HMudOdxjEs+THNd3sZjfrRI80RVjiT7+2zMMIBr/5zW/qe8292mKLLVY5X+cgA8yce+659T3juJoEJCABCUhAAhKQgAQkIAEJSEACEpCABOZKYGIEXAS4X//617WAh5B305vedM4C7llnnVUh9sUQSxH5eg18Rjx+/OMf15/lZz+EXATAG9zgBtV2223XKvDRN+rPfvazWgjMfkyzL0LpVlttVW9C5IuIWoZN375Zh4B961vful7kOBlMC6ERIbJpP//5zyvij8gbARfBFoESgwUibwyx9JxzzqnucIc7VPT12jT65j3//PNnrEacZp9b3epWna4FZgSYw8IPfvCDOv45BNdMnO985zvX15T13Nemcd1NfqWAy8B1TeP6Ycm+GOcjjcBjtgYv0jH95pKGN9tss04furM9pvtJQAISkIAEJCABCUhAAhKQgAQkIAEJLF0CCyrgItQi0CGqNvuBXWutteZ0V/CgjXiLoIlHJF6dCHS9+kulj9MMVIXH7pprrll7nxI/vGtPPfXUavvtt18lbt///vc714D3MAIrnrCcCy9YfrH11luv4zlabsPLtzTCxTbaaKNaGIQZguy2226bTfWUa4sQ2c1zGfEWYREW9L2LVy/9x3LNd7nLXWYcDzEYz1ss++C1iocv01/84he1EI4AOgrL/ee+IyZzn7hW4ocwG/Gbc+EJzTaM+DAPc+5XrJtXMfeEcNxLDGZ4ExMeJjDi/pNmZmPEneMQb9IfP87HAGuDeHDP5pzuIwEJSEACEpCABCQgAQlIQAISkIAEJDC9BBZEwEXUxEsx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3bqwmj/++MMGDx7sluvXr++C09WrV7e//vWvbt24cePs7rvvNp/qYfPmzaaA8JNPPum2q0fxXnvtFdYXOyMj9fRVeeWVV+y1115zPY61rDoV1B0xYoQW7cgjj3RTfiGAAAIIIIAAAggggAACCCCAAAIIIJAqAjkFb307iyKIWyYIqG3zJ2Sas4AG6FJQVgN5RYty5MYOOqZA7plnnhndzXT8ddddl2nf2GO7d+/uAqg+tcDw4cPdOVXR0KFDM9WnBfX47dOnj1v/wgsvuN60GmjtpptuCgPC2qiesVqvoK4vassxxxzjFjds2GBKrTB27Fi/2WLbpoDv//73P4umSTjooIPc/gr69urVy80rRcT1119vEydODOvSscuWLQuX1SNZdeVlYLbwYGYQQAABBBBAAAEEEEAAAQQQQAABBBBIgkBug7fRU+fnmOjx2c3TAzc7nTjblCv2iSeesL59+7rgpt8lGrxVrtnnn38+S/BW++p4daM+7rjjwt68/lgFONUL9r///W+mvLDly+c9VXG5cuVcegIFkH2v4Tlz5oTB2/bt29ttt90WBm/VNgVS77vvPrvyyitNbVHxbVMdCvQqxUM0eOt22v5L5/RFweeHHnrILrjggjAHbjR4e8YZZ9i9995L8NaDMUUAAQQQQAABBBBAAAEEEEAAAQQQSAkB/+R6tDHKeavetolKop648epKVEei9cXSA1cN1yBmujD9pEse3HiISgmgQb80aJh6q+pHA4fltqj3rAKbykurNAbJKEqBoPNoUDMFaevUqRMGVbM7n65twYIFLsWCD+hmt3922/78808XDFZaCNVVoUKF7HZnGwIIIIAAAggggAACCCCAAAIIIIAAAsUmEM1jm1PwNtrIaE/cREHd6P65mS/yAK4P3kYbd8ghh6R1EDd6LcwjgAACCCCAAAIIIIAAAggggAACCCCAQPoLKIirjqcKxOalKIirGKgCv4VRijyAq7ys8cpdd90VbzXrEEAAAQQQQAABBBBAAAEEEEAAAQQQQACBUiuQEjlw8xrFLrV3iwtHAAEEEEAAAQQQQAABBBBAAAEEEEAAgVIlUOQBXKVLiC0EcGNFWEYAAQQQQAABBBBAAAEEEEAAAQQQQAABBMyKPICrvBHRIC75b/lniAACCCCAAAIIIIAAAggggAACCCCAAAIIxBco8hy48ZvBWgQQQAABBBBAAAEEEEAAAQQQQAABBBBAAIFYgSLvgRvbAJYRQAABBBBAAAEEEEAAAQQQQAABBBBAAAEE4gsQwI3vwloEEEAAAQQQQAABBBBAAAEEEEAAAQQQQKDYBQjgFvstoAEIIIAAAggggAACCCCAAAIIIIAAAggggEB8AQK48V1YiwACCCCAAAIIIIAAAggggAACCCCAAAIIFLsAAdxivwU0AAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQiC9AADe+C2sRQAABBBBAAAEEEEAAAQQQQAABBBBAAIFiFyCAW+y3gAYggAACCCCAAAIIIIAAAggggAACCCCAAALxBQjgxndhLQIIIIAAAggggAACCCCAAAIIIIAAAgggUOwCBHCL/RbQAAQQQAABBBBAAAEEEEAAAQQQQAABBBBAIL4AAdz4LqxFAAEEEEAAAQQQQAABBBBAAAEEEEAAAQSKXaB8sbcgSQ3Y5bY1SaqZatNBYNptVdOhmbQRAQQQQAABBBBAAAEEEEAAAQQQQACBbAXKT58+Pdsd0ndj0/RtOi0vsEDJ/XddYBoqQAABBBBAAAEEEEAAAQQQQAABBBBIIwFSKKTRzaKpCCCAAAIIIIAAAggggAACCCCAAAIIIFC6BMqsWrVqW+m6ZK4WAQQQQAABBBBAAAEEEEAAAQQQQAABBBBIDwF64KbHfaKVCCCAAAIIIIAAAggggAACCCCAAAIIIFAKBQjglsKbziUjgAACCCCAAAIIIIAAAggggAACCCCAQHoIEMBNj/tEKxFAAAEEEEAAAQQQQAABBBBAAAEEEECgFAoQwC2FN51LRgABBBBAAAEEEEAAAQQQQAABBBBAAIH0ECCAmx73iVYigAACCCCAAAIIIIAAAggggAACCCCAQCkUIIBbCm86l4wAAggggAACCCCAAAIIIIAAAggggAAC6SFAADc97hOtRAABBBBAAAEEEEAAAQQQQAABBBBAAIFSKFC+FF4zl4wAAggggECpEahWrVqpuVYuFAEESqfA6tWrS+eFc9UIIIAAAgggUGoE6IFbam41F4oAAggggAACCCCAAAIIIIAAAggggAAC6SZAADfd7lg+2zt9+nTTDwUBBBBIFQFel3J3J3DKnRN7IYAAAggggAACCCCAQMkVKO2fiwjgltx/21wZAggggAACCCCAAAIIIIAAAggggAACCKS5ADlw0/wG0nwEEEAAAQQQQAABBBBAAAEEEEAAAQQQSL7AL7/8Ys8991zcEx1yyCF26KGHxt1W0JX0wC2oIMcjgAACCCCAAAIIIIAAAggggAACCCCAQIkXGDx4cMJrVHA3WSXfPXBvuummZLUp23rvuuuubLcX50bdRH+z/LRVq1auST4C75eLs52cGwEEEEAAAQQQQAABBBBAAAEEEEAAAQQKT8DHAguvxh015TuAu6OK0j3nI+9DhgyJC+Fvnu9erQCugrkEcuNysRIBBBAocgG9Ts+ePTvLeVu3bu3W8XqdhYYVCCCAAAIIIIAAAggggECpFPBxvqK++AIHcBP1iPU9dBNtz+uF+vryelwy91fwNlHgNtF5daMVzE1mXoxE52Y9AggggECGQE5fvmmv6Os7X77xLwcBBBAo+QLjx4+33377LcuFli9f3ho2bGiNGjWyWrVqWZkyZbLsUxgrJk6caBphe9WqVda2bVs74IADCqPaXNWhcy9dutSaNWtmHTp0yNUxiXb6888/bezYsW6zrqFixYqJdk2J9UOHDrXNmzdb165drUGDBinRJhqBAAIIIFC8Av7zojr1RDv0+PXZtU77+Kfw/X5ap3jgRRdd5FfleVrgAG6ez1hCDhB+9MN9Xi9Lxxb05uX1nMnYX2/OVq5caW3atLGWLVsm4xTUiQACCBSaQH5fu/2XbwRyC+1WUBECCCCQcgIffvihLVq0KMd27b///nbSSSdZlSpVctw3tzu8++679tVXX4W7z58/v0gDuJ988onNnTvX9t5770wB3Py811cguH///u5aevbsmfIB3DfffNO1tUaNGgRww3+BzCCAAAKlVyD6mVGxO30G1E9uY4A+3ucDv9HjVHdscDe30gRwcysV2U89aPVhPraoV21sdN7vp5vk5/1xWi7IzfP1FOd0wIAB9vvvv9vhhx9OALc4bwTnRgCBHAWif4hz3DnBDnrd1t8A/TEuyLenCaovttXqLTVu3Lhcn79bt25Wp04dmzJliv3666/WtGnT8AO/jJSSomrVqi4QkOtK2REBBBBIIQH1uPVl48aN9scff/hFGzFihI0ePdrOP/9822OPPcL1+Z3ZsGGD+0yg42vXrm277767VatWLb/VFepxvNcvVE4qQwABBBBIcQF9lokGXNVcrdNPXkqiY1R3bNwwt/USwM2t1Pb94gVi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"/><use stroke="#7E7C7B" xlink:href="#rect-1"/></g><g id="Default"><use fill="#000" filter="url(#filter-3)" xlink:href="#path-2"/><path fill="#FFF" stroke="#7E7C7B" d="M65.5 422.775l15.69 16.01h-6.488c.886 1.695 3.06 5.91 4.01 8.24.318.776-.979 2.324-.979 2.324h0l-2.42.151-4.2-8.574-5.613 5.727v-23.878z"/></g></g></g></svg> \ No newline at end of file diff --git a/2-ui/1-document/02-dom-nodes/domconsole1@2x.png b/2-ui/1-document/02-dom-nodes/domconsole1@2x.png deleted file mode 100644 index ce0fa0fff..000000000 Binary files a/2-ui/1-document/02-dom-nodes/domconsole1@2x.png and /dev/null differ diff --git a/2-ui/1-document/02-dom-nodes/elks.html b/2-ui/1-document/02-dom-nodes/elk.html similarity index 86% rename from 2-ui/1-document/02-dom-nodes/elks.html rename to 2-ui/1-document/02-dom-nodes/elk.html index 7d29f3d4e..dc5d65f54 100644 --- a/2-ui/1-document/02-dom-nodes/elks.html +++ b/2-ui/1-document/02-dom-nodes/elk.html @@ -1,7 +1,7 @@ <!DOCTYPE HTML> <html> <body> - The truth about elks. + The truth about elk. <ol> <li>An elk is a smart</li> <!-- comment --> diff --git a/2-ui/1-document/02-dom-nodes/elk.svg b/2-ui/1-document/02-dom-nodes/elk.svg new file mode 100644 index 000000000..448eea9d1 --- /dev/null +++ b/2-ui/1-document/02-dom-nodes/elk.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="698" height="249" viewBox="0 0 698 249"><defs><style>@import url(https://fonts.googleapis.com/css?family=Open+Sans:bold,italic,bolditalic%7CPT+Mono);@font-face{font-family:'PT Mono';font-weight:700;font-style:normal;src:local('PT MonoBold'),url(/font/PTMonoBold.woff2) format('woff2'),url(/font/PTMonoBold.woff) format('woff'),url(/font/PTMonoBold.ttf) format('truetype')}</style></defs><defs><path id="rect-1" d="M0 0h698v249H0z"/></defs><g id="dom" fill="none" fill-rule="evenodd" stroke="none" stroke-width="1"><g id="Bitmap"><image width="698" height="249" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABXQAAAHyCAYAAABLU0YUAAAAAXNSR0IArs4c6QAAAERlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAA6ABAAMAAAABAAEAAKACAAQAAAABAAAFdKADAAQAAAABAAAB8gAAAABJCifOAABAAElEQVR4AeydB7wVxdmHBwRBQRBRBKlKR6yIvaDGWGM3GhNN7C3GWBITyycx0cQYYzQmRmPsGjXR2EuwG1GxUFS6CCqCWOmClO8+g+9x7t7d08+9p/zf3++cPWfL7Oyzs7Mz/3lnptn8+fNXOpkIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiEDZE2he9jFUBEVABERABERABERABERABERABERABERABERABERABDwBCbpKCCIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiJQIQQk6FbIjVI0RUAEREAEREAEREAEREAEREAEREAEREAEREAERECCrtKACIiACIiACIiACIiACIiACIiACIiACIiACIiACFQIAQm6FXKjFE0REAEREAEREAEREAEREAEREAEREAEREAEREAERkKCrNCACIiACIiACIiACIiACIiACIiACIiACIiACIiACFUJAgm6F3ChFUwREQAREQAREQAREQAREQAREQAREQAREQAREQARaCEFuBN599103bdo09/TTT+d2YIa9N9xwQ7f77rs7lqWwSZMm+WD79+9fiuAVpgiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIQBMRkO7TROCb6LTy0M0R/FNPPVV0MZcomFCcY3S0uwiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIQA0RkIdujjcb4RW75JJLcjwy/e7nn3++F4rx0pWJgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIQBwBeejGUdE6ERABERABERABERABERABERABERABERABERABEShDAkX10C32cAQ2nuzxxx9fhugUJREQAREQAREQAREQAREQAREQAREQAREQAREQgTgC6ITW072U80bFnbva1xXNQ/eGG24o+tiy3HQ+JACZCIiACIiACIiACIiACIiACIiACIiACIiACIhA+RNAz3v66ae9rsdvdEPpe8W7b0Xz0OXmYBpbtng3p1ZC+u9//+uWL1+e9eXSqrP66qu70aNHu9mzZ7uePXu6QYMGZX28dqx+AkuWLHHvvPOOmzZtml/OmTPHdezY0XXp0sVtscUWbsCAAdUP4esrfPbZZ92yZcvcpptu6jp16lQz1510oZ9//rl75pln3MyZMx3pokWLFp4L+ciwYcPcmmuumXSo1lcpgRUrVqQapNu3b++GDh2a9krff/99xwzCrVu3djvuuGPafat54/Tp093UqVNd27Zt3bbbblvNl5q6NvKOpPJKs2bN3DrrrOPWX399/67hf2PZuHHjfJqcP3++69Onj9t5550b69Q6TxUSCNP5Rhtt5PhkMspdL7zwQmq3jTfe2D8HqRX6UbUE7J3IBdK7tnfv3mVzrXPnznWvvvqqjw/5IvVH7H//+5/78ssvy65snBRfH2l9iUCFEqgW8RYhOh/vYnNQLdWoA0UTdCs0fSnaTUyAitGll16aUyy23357/0K+++673csvv+wOP/zwmhV0EeqefPJJz2+bbbZxHTp0yIllNe783nvvuT/96U9u4cKF9S7vk08+8RVeBM6uXbu6Y4891nXr1q3ePtX455///Ke/rHbt2tW0oLty5Up3xx131Ktw2v3+8MMP3ZgxY9xDDz3kvvvd77pdd93VNmlZAwS++uor969//St1pW3atEn7TqEiSD7SqlWrggVd8qWxY8f6c1NIrCQj3o8++qhDBK8FQRfh/6677srqFq277rruuOOOy0oIyyrANDv9+9//diNGjEjtgbgiQTeFQz/yIBCm886dO7tf/epXGUNBNAvzUfJHGtFl1U+AspU5duE48Otf/7psLpqGe0uX1JNM0L3tttt8HJuibEzd7bnnnvPnHzJkiFt77bVTvJLim9pBP0SgSghYnlEpl4OYS5xZIsza0LCZ4m/HsJ8dm+mYXLdL0M2VmPYvGQHEyO7du2cMf7XVVsu4T63ssHTpUve73/3OX+4111xT84Lu888/70U7u/+kqb59+7oNNtjAffbZZ76VfvHixd47E27Dhw93VLxl1U+ACqp5D1HR3Hrrrb3AvWjRIi/0481tgs16663nBg8eXP1QdIWxBChw/fa3v/WCbewORVxJA9Q999zjQ9xtt91cY3p1FvEyai6oli1bem9cu3AajPCO5f2CIdRffvnlvsG6lA2teEWa5wvn2Xzzzb3HtMVLSxEolAA94fgg7KYzvHpltUfg008/TYm5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CIiACIiACIiACIiACIiACIiACIhALRGQoFtLd1vXKgIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiUNEEJOhW9O1T5EVABERABERABERABERABERABERABERABERABGqJgATdWrrbulYREAEREAEREAEREAEREAEREAEREAEREAEREIGKJiBBt6JvnyIvAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiJQSwQk6NbS3da1ioAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIVDSBFhUde0W+5AQGDF9Y8nPoBNVPYOLwNtV/kbpCERABERABERABERABERABERABERABEWgEAi0mTZrUCKfRKSqXQLfKjbpiXjYElM+Uza1QRERABERABERABERABERABERABERABCqcgIZcqPAbqOiLgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAjUDoFmK+usdi5XVyoCIiACIiACIiACIiAClUVg7NixPsK9e/eurIgrtiIgAiIgAiIgAiIgAiUhIA/dkmBVoCIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiJQfAISdIvPVCGKgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIQEkISNAtCVYFKgIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIALFJyBBt/hMFaIIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIlISABN2SYFWgIiACIiACIiACIiACIiACIiACIiACIiACIiACIlB8AhJ0i89UIYqACIiACIiACIiACIiACIiACIiACIiACIiACIhASQhI0C0JVgUqAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAsUn0KL4QSpEEaguAsuXL29wQauttlqDdVohAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAqUmUJGC7gcffOBWrlzpOnTo4Nq2bZszoylTprgPP/zQIcrtuOOOOR+vA4pHYNy4ce7zzz93rVu3dttss03xAi5SSO+//76bNm1ag9CGDh3q1lxzzQbrtUIEREAEREAEREAEREAEREAEREAEREAEREAESkmg4gRdhNx33nnHM+ncubPr379/znxWrFjhjyGsprbPPvvMTZ482TVr1qwsBc1S87F7YMtczzd27Fi3ePFi16VLF9ezZ89cD8+4f6tW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Liy7Ho7BI4zrMPEubv9KWUfX8el148kiiiD2co/iRPKk66H7Nx+OtfFpk/Yt5no8jfGY3HXXXR3e3njocS8RdhCds4kLXecJg7QZejYWGk/SysyZM316ItxseMKQ+BD3akhXhTLM53g858lvuPc8z7kIj/mcrymOQW6hkYy0wm8mgyP9mriZT5wIh3yVIQsIi4YEmzwwn/DSHVPMe8RwLzw3xBvhGBZxk+Oli4+2iYAIfENAgu43LPRLBERABERABERABERABMqOQGMJuqW68FtuucVPUoYn780331yq0yjcMicQFXTLPLqKngiIgAiIgAiUNYEWZR07RU4EREAEREAEREAEREAERKDiCOB5Sbd+xk286aabfPzxypSJgAiIgAiIgAiIgAgUTkCCbuEMFYIIiIAIiIAIiIAIiIAIiEBA4Lnnnqs3ARFjkjJmpEwEREAEREAEREAERKBwAhJ0C2S4bOmyBiGs1mI116x5swbrtUIEREAEREAEREAEREAEaoEAYzoyiRTjJA4ZMsRPqJZuvNtaYFLr18hkTkwQxZi/MhEQAREQAREQgcIIlPUYuh+Oet/dts+Nrk2XNu7Hb55T2JWW4Ohli79yV3S/tEHIh95xhOu9Z/8G67VCBERABERABERABERABHIlUOlj6OZ6vdpfBERABERABERABEQgPYGy9tBdsXyFj/3yRQ29YNNf1qqt7zw+0Y2//23XedMubuip22dzSG77rNbMbbT7Rqljpj01bdXvulknZSIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiJQbAJlLegWerGfvvOpG//vt9zyJcvc0EIDizm+xeot3GF3H5Xacv12V7vPp3ye+q8fIiACIiACIiACIiACIiACIiACIiACIiACIiACIlBMAs2LGZjCEgEREAEREAEREAEREAEREAEREAEREAEREAEREAERKB2BsvLQXbhgoZsxcbobtNXGsVc8f+Y89+GoGe7Tdz9zHTZcx224Wx/Xuv0a9fb9ZOIct/izRX7d59M+8csFc+a790dOr7df5y02cC3XWN2v+3TSHLfo00Wuw0Yd3cxXZrjP68LvvsOGruvQ7m7Om7Pc9Ofeca3qztNv34FujXXWrBdOLn8++mC2W/LlEtejT89cDtO+IiACIiACIiACIiACIiACIiACIiACIiACIiACIuAJNLmgu7JuvNn3psxwE9+Y4L749AvXrFmzWEF30oNvu/uP/Xe929auZzt35H0/cu17dkit/9/lz7pJD0xI/efHzFdmujv3v6XeumOfO8mtt/GqGVZf/OPzbsK9b9fb7twzbrsztncvXTUytf71G0e5Hz15kmu+Wn6OzbNnzHYTx0xwrz41yvXs18sN3GqQa7NWm1T4+iECIiACIiACIiACIiACIiACIiACIiACIiACIiAC6Qg0maC7cO4CN/718W7G5Olu+fLlqTiu3nqV12xqRd2PL+cu8WIuE5D12nkjN/XJye69F95z82bMc69c84L79uX7p3YffMgmruuWXf3/6c9Pc0xU1qFvB7fFD4ak9uFH287t6v23Pzucs6Mb/8DbfixcxNz1Nunk+tR5AvP74zfneI/dzpuvCt+OyXa5ZvtV3r3Lli1z74yf6j/t12nvBmw50Au8iNkyERABERABERABERABERABERABERABERABERABEUgi0KiC7soVK927k6a5SaMnunmfz0vFCSFz/a7ru/5bDnCdu3dJrQ9/DD58E7fPnw9yzZo3c0NP28G9cvUL7tmLn3ajbxrt9vj9d7xnL/v32Wdg6rCVdb8QdDsNWN8fk9qQ8GOn84a57c/axfXYcSP3zwNv9XsdctMRrn2vDm5h3ZAM424f4z4eP8flK+j2HdzPD7cwZdxk985bU92Xi790cz+b61558mX32jOv+m0Dhw5ya7VfKyGGWi0CIiACIiACIiACIiACIiACIiACIiACIiACIlDLBBpF0J1fJ96+/drb7v2p77kVK1akeCNc9tmkr9to496uRYv0Udn2xzt4MdcO7rv3AC/o8n9pnQdvq7Vb26a8lx2+HrphrS7feO+u1b29D699j7X9csncxXmHz4GtWrdyg7fexH8+n/OZmzB6gps57QPvpYzYzafd2u1cvy0GuI0GbFTvmgs6sQ4WAREQAREQAREQAREQAREQAREQAREQAREQARGoeALpVdQiXd7IJ1704+MSHMKtHz+2bpiBNu3bZn2G9r071tt3zXW/OfbLOpG1GIJui9arcLRYo2XqXDZebotWq7YtXbg0ta3QHx06reO233MHh+fyjCnT3eQxk9znn3zu5n0xr85jd5Rbu244ho6d1y30NDpeBERABERABERABERABERABERABERABERABESgSgjkN7tXARfPJGiMmRuOm5spuNbtW7kWq0e05yDmCKLFsNVaruaDMRGX85qt1mLVCVcs+2a8X9tW6HLFyhVu+VfL3Yrl33gvFxqmjhcBERABERABERABERABERABERABERABERABEag+AhGVtDQXuNN+u7iJr09w706c5pgQbPqkd/1nzTZrut6D+/hhF1Zv1XAytNLEJnOojTU52ZyZH7lJb0x0s96f5RC6zdZZbx03YMhAeecaEC1FQAREQAREQAREQAREQAREQAREQAREQAREQAQ8gUYRdNdsu6bbcpch/vPBO++7CW+Md5/VjR+7aOEi9+Yr4/ynY6eOdePG9nfde/dITXBWqfdo6eKvEqO+cP5CPync9Invuq+++ma/Fi1buI0G9vZC7hprrpF4vDaIgAiIgAiIgAiIgAjUJoEBwxfW5oVXyFVPHN6mQmKqaIqACIiACIiACFQ6gUYRdENI3Xp3d3wWL1rsvVOnjX/HC5ufzvnUvfTESPday1fdwSceGh6S9+9W7VZNlLZgzvy8w8jlwA49OrjPp3zuZr32vht40CYNDp08dpIb/b836q1ft26MXLxxu/bqVm+9/oiACIiACIiACIiACIiACFQOgUmTJlVOZBVTERABERABERCBiibQ6IKu0cILdfMdt/CfWTM+dONfe9t9MvsTPySD7VPosv0G7XwQM1+Z6aY/NcV133kjZ+PkFhp23PGdNu7spj01zY1/cLzru+8g1337XvV2W7xgsf/fcvWWfqiJ/psPcK3XWCU619tRf0RABERABERABERABERABERABERABERABERABEQghkCTCbphXLr03MDxWfLlEjdj0vRwU0G/u9UJqu16tnPzZsxzdx9+p2OSs/YbdfBhHvC3Q12H3h0LCj968JATtnUvXz3SLZy10N25/y3+fKut2cINOXao2+7MXdwGG27g1u+xvuvcvUv0UP0XAREQAREQAREQAREQgbQE1KU/LZ4y2Ni/DOKgKIiACIiACIiACNQCgebldJGtWrdy/Tb7piDUrHmzxOiF25ImMWuxRkt35P3HuO3O2N616dLGfTl3ifto9Gz/WbF0WSpsO97CbLZaw/OmtjVruM0CattlLXf8yFNd3336eTGX8yHuLp2/1O+y3gadJOYaLC1FQAREQAREQAREQAREQAREQAREQAREQAREQARyJtBsZZ3lfJQOEAEREAEREAEREAEREAERaBQCY8eO9efp3bt3o5xPJxEBERABERABERABEShvAmXloVveqBQ7ERABERABERABERABERABERABERABERABERABEWhaAhJ0m5a/zi4CIiACIiACIiACIiACIiACIiACIiACIiACIiACWROQoJs1Ku0oAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAk1LoEXTnl5nFwEREAEREAEREAEREAERKIRA27ZtCzlcx4qACIiACIhASQksWLCgpOErcBGoRQLy0K3Fu65rFgEREAEREAEREAEREAEREAEREAEREAEREAERqEgCEnQr8rYp0iIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgArVIQIJuLd51XbMIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiEBFEpCgW5G3TZEWAREQAREQAREQAREQAREQAREQAREQAREQARGoRQISdGvxruuaRUAEREAEREAEREAEREAEREAEREAEREAEREAEKpKABN2KvG2KtAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIQC0SkKBbi3dd1ywCIiACIiACIiACIiACIiACIiACIiACIiACIlCRBCToVuRtU6RFQAREQAREQAREQAREQAREQAREQAREQAREQARqkYAE3bq7fu8P7nCXrfsr99ZdoysuDVy/3dU+7jNemFaWcZ/56vvuvf+96xZ+tCAVv+VfLfdxhvlnUz5Ora+EH3Pf/yIV96ULllRClBVHERABERABERABERABERABERABERABERCBKiLQooquJe9L+WrxV/7Y5V+tyDuMpjpw6YKl/tQrly5vqigknvfTCR+52/e+0W8/9rmTXJv1266K68qVqWNWLP/md2plOf8I4rtyRYXFvZy5Km4iIAIiIAIiIAIlJbBw4UI3YcKErM/Rr18/165dOzd9+nT3ySefuE6dOrkePXr442fNmuVmzpzp1lhjDbfxxhtnHaZ2FAEREAEREAEREIFqIfDUU0+5p59+2l/Obrvt5nbfffdGvTQJuo2Ku7ZONuq6l/0F99mrj1tv4861dfG6WhEQAREQAREQAREoIwJz5sxx99xzT9YxOuWUU7yg+8wzz3gheOedd04JulOmTHEPP/yw69KlSz1Bd+7cuY5t2FZbbZX1ubSjCIiACIiACDQGgWXLlrnTTjstdarjjjvObb311qn/+pEfgWuvvdaNGTOmwcGtWrVyV199dYP1WlEcAhJ0i8NRoUQIMDTBuNtXPdDbnLZjZKv+ioAIiIAIiIAIiIAINBWB9ddf36255pppT9+6deu02+M2zp49OyUaDxkyxDVr1ixuN60TAREQAREQgbIgsHx5+fV0LgswOUbiq69W9XqPHpa0Prqf/udHoCYF3femznCt12jtOnVdvwG15UuWudnjZrkPR73nmrdczXUZ0tVtMKR7g/1sBd3u57w5y306aY5DxGzfo4Nbf9MurmP/TrZLveXKuuEGPp0wx815a5abN2u+37Zu33X9/h16d6y3b/hn+bLlbtZrH7jZYz50zZo3cxsM7eY6b9Y13CX1++1X33IbDtzIrdk2fUE9dUAOPxYuWOhmTJzuBm2VvnvdGze84kPtuk1X1227nmnP8OXcxW523bXNquPeplNb13OHDV37Xh0Sj1lWN0TG7LEfuk8mfewWf7bIrdt/Pddly26ubee1Yo9hzN5Zr3/gPpv6ad1YvvPc6mu1dh3rmK83qHNqGIi4A4nXrLoxgD96a7YPu+vQHq75ag2HnV60cJF7f/J7rvfgPq5Fy5p8pOLwaZ0IiIAIiIAIiECZEjjggANcnz59sordrrvu6r1t11tvvaz2104iIAIiIAIiIAK1RYAyxdKlq4YDpXF3/vxVWldtUWj8q60Z9Wnh/Lpxw14b72ZMnu5wsx+w5cAGgu6SeV+6fx58s5v5ysx6d2Ln84e57c7cpd46/jDR1+NnP+CmPj61wbbtz97RbX/OMLdanShs9tXipe66ra92C2cttFX1ltv+ZHu343m7udVafHMMOyAsPnTiv920p6bV23/oSUPr/bc/CLpvjXrTrd1xbX+dPfr2LMhDAhH6vSkz3MQ3JrgvPv3Ch5VO0F386SI36i+rhlvY7vT03rkI4Xfse2PdNdafYOzwu490vXbva5eUWs4eM9M9eMq97vMpn6fW2Y8D/36w63/QJvbXLz98/X13256rxvGtt+HrP/vXHTMwcgybGP/3nh/c6ebNmFfvsJ3OG1bvP38WzVvoxowc7ca+NMZ17lHX9bBO7O7Yed0G+2mFCIiACIiACIiACFQagV69elValBVfERABERABERCBRiSwzz77OD7YQw895IdlasTT1+ypqlrQRYicPvldN+mN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6SO8ePGixMTEqNAAECOxgFhpNyyQhri5CIdQo0YNqVXLeGLceHLcW5aamirx8fFqITbsI5YuPH0hhBdnW7x4senFDI/mAQNcP91fUGOgh25BkS0D9eLOCoXcMjDRHCIJkAAJkAAJkAAJeJkABNz69et7uVZWRwIkQAIkQAIFSwDeqe5usBZsy0VXO0TrghSuEYKCvwlyP7/00M09M5YgARIgARIgARIgARIggUIjUBo9dAsNHhsiARIgARIocgKlyUO3yGGyA2WCALx/c/L49Z6PdJlAykGSAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQgPcJWEM5ZFc7Bd3s6PAcCZAACZAACZAACZAACZAACZAACZAACZAACZAACRQwAU/FXHSDgm4BTwarJwESIAESIAESIAESIAESIAESIAESIAESIAESIAF3BHIj5qIOCrruSDKdBEiABEiABEiABEiABEiABEiABEiABEiABEiABAqQQG7FXHSFgm4BTgirJgESIAESIAESIAESIAESIAESIAESIAESIAESIAFXBPIi5qIe3y3HLrmqj2kkQAIkQAIkQAIkQAIkQALFgIBPMegDu0ACJEACJEACJEACJOBdAnkVc9ELeuh6dy5YGwmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAm4JZAfMReVUtB1i5YnSIAESIAESIAESIAESIAESIAESIAESIAESIAESMB7BPIr5qInZVrQPb0hSha0mSArB3/gvVnJQ02Rb/yq+hH1yYo8lGaR3BDYtmm9/DJnusdFzp1JlN3bt8rGtavl4N5ISTp3zuOyzEgCJEACJEACJEACJEACJEACJEACJEACJEACmoA3xFzU5asrLIvby5fS1bBTEi8U6fDTUxxxjNNTGc+4oCci/tgRqRZUI8dm0i6lyeolCyRq394seYeNHCs1atfJks4EEiABEiABEiABEigKAud4w7kosLNNEiABEiABEiABEsg1gQEDBghe+bUy7aGbX3gsXzII+Fy+LGcTT8vBfZESFxsraSkpcjTmkCQnufa2hZi78McflJjr6+cv4W3aS7uIboJ92KJf54qkO24GlAwC7CUJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkEBpIVCmPXRLyyRyHO4JJJw8IWtXLJX4uFgzU/TBfYIXrFl4W+ndf6B5Dju7tm428w8ZPkqCa9VW5ysFBsqfK5fKheRkSTiTIEHVc/b0daqYByRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiSQTwJlStBNTUqSs9FREtyqdVZs6Zfl3O44SdwaI5dS06Rq6xCp1qGB+PiVz5o3IyXp4AlVJjn2tPgHB0pgs1pStW19IzKxj9sy5yKPydkdRyTl1Hmp2q6eVDfacGUX489K8qGTUs7fV6q2D3WVRVJOnhP0oVy5clI1IkyS4o/JJcP7tEqo6zpdVlKKE8+cTpBff5glaakGk6rVpFKVKnIsNka69+0viadOyu4df0nFgAAnAheN98imP1ertJ5XDjTF3BSD6+5tm828CfHHKeiaNLhDAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRQWASKRNCNP3xAFkyfnKcxXjP2fqndoInHZS/jcfvDh+VU5C65mJgo4uPjUtDd959Fsv9/fzrVW7NnmLSfOEr8qlVySr9sxLo9MGmZ7Jvyh1M6Dupc1VTa/ut68Q0KdD5nCMYH/rtU9n6yxik9uHM9qVCjslMaDpIOHpd1d36r0vstGi8VQqplyXNwykqJ+nqjoI6uX94p5+Pi5NSeSClXfp1Ua9hIgsJbiV8l575nqaQUJ2wyFjKDmNs0vI307jdQtm/eIElnz0p42w5q1J169JZUQ6i12q6d29Qhwis0aRmu9vEeWrPkd0k8fdrMmpaWau5zhwRIgARIgARIgARIgARIgARIgARIgARIgAQKi0CRCLoQZDv0vlq2rl6Yq3GijKdibtr5c3Jy925JPBQtly9lLjbm6++Ig2ptOO1MihJza/VuJHWubiUX4hJl3+Q1cuKPQ7L96R+k0+RbrNkFQqoWc+tf31qCIhrKhdgE2ffpWjm2ZL+knp0tXafd7lTm8LfrTDEXZYK7NJKzO49K1IxMr09rgaCujaVSg6qSdPiMHJu/XcLu7G09LZcvpCoxF4lho7qoc35GSABYujHehAP71atC1aoSbAi7VRqEGVq2e89hVTAX/x06sE/S0tI8KgHv2Fp1Q+R43FE5e8YQ1T0wXz8/CWvc1IOcrrNAhNVhFcJbt1VjP3U83ljMzBE+AaX8/Suol7WGmKj96rCZIQL7lnf8eUAIRl2hYY0l5tBBdb5iQNkVyq28uE8CJEACJEACJEACJEACJEACJEACJEACJFC4BIpE0MUQ2xvibNyhA3LssENAy2nYdRo0VWWyy6e8cY2QCicjd0uK4YlpmiFkVjbioAYZHpeV6tQxk6078Kzt+P4YkfKOdeKqt68vGx6cLfErD6oQCVXa1FPZ004nyd5Jq9R+8wd6S5N/9DerCerSUNbfN1NOrY+RhD8PSFB3hycxxNc9Hy1X+Zrc3lWaP3mNo8xIkYoNgmT3O0vMOswdI2xDw5s6y66JSyV61kYJu72XUyiHEyv2mllrDmip9qs3bSZVDeE2Yd9eOb3fEFwvXpSLZ87I0XV/StzGDVLNOAdx169yVo9gszIPd5Yu+NnDnI5sf3/gUSP8wcxcl8lVATeZj8Qclpp1DEE5/qi0bNvRTS6RZCM27klD9IWF1KuvtkcOH1IhGKpVry4RhkevFnQDbKEaVGb+RwIkQAIkQAIkQAIFSCA1NbUAa2fVJEACJEACJEACJEACJYWAQ70sot4OGnufxy137HO127yphngbt97wgP1hjhzdsN4Uc/0N4bJ2x07SYsSNUv+KK92Kuai40a09TDEXxzWvaCmVmwRhV44v26O2+C/hT4eHJvbDxnXHxrTgPs2lejuHYBy/JNJMT9wWK/AChoWNM9qxWOiozpYj5906w9qrBHjpntly2Olk7E9b1XGjmztJ+cAK5rlyhgdyjdZtpOl1w6XhgKuVwOtjxNiFl/LpqINy4Ldf5eCC+ZJ48IBAAC+tBm/ksEYOD9/N69bI3OnT5Py5c3I5PV0upbv2LI4/EmPiqB0SIucMb2II1wi/cNWQ4U7hGSoEVDTzcocESIAESIAESIAESIAESIAESIAESIAESIAECotAkXno6gF6Enohp1ALsWvXOOLjGpWWK19exY8NbtlSfAM990TVHri6X5eN6ATB3RrKuQMJRgiGzNipyXFnVBYIt77Vsz52X7N7Yzm97ZgkH8ksc+GYo0zFOoFZYuGWr1xBgruGKq9e3bbeVqhdRUIGtZCjv++RI4aAi4XPYFgwDaEdYCHDHfFg1YHtv4pBQRLSvYfUVXGED0mCEV/3ghEHFt7L8Nj1N0IhBNSoYSvl2SE8bnNreSmT2zas+Xv2u0rKr/aTg3uN0BsZ8W8h7uLVpdcV0rp9J6cwFGcSHXOGhdJ8jXAMi36Zp2LwDrh2uFStHiQxhve3tiqVq+tdbkmABEiABEiABEigUAgEGb/taCRAAiRAAiRAAiRAAiRQ5IIuQi/A3MXT9STUgnUa4XOKGLLpl9KtyTnuW71cdeYKGYuhJR3JjPt64ahjv6IhtroyvxqOOLbno06Zpy9miMD+QVkFYGSqWMu98Fz/xo5K0I2etVWaPzFIeePGL9ih6q7SvIZUaxcqOfnZ+hheqZeNeLfwTvWWwXvVUw9ff8PDtYKxONvFpCRJMRYp88TKGaEvAitX9SSr2zwVAwLlioGDpWOX7rL+jxUSY3goa9uwZoXB47K07ZTpIX3hQrI6XblKVVm7YqkKv9CpWy8JbdhYpR/L8OCF569PRmgOXR+3JEACJEACJEACJEACJEACJEACJEACJEACJFAYBIpc0MUgIeq6E3SzC7WgAYX2uUJOGXFzEUYAYm6i4UmJl5/haVm9SVOp3qy5lDMW2crWDHFPjLi1VtOCpW/FzLLlKziQpadkLrRmLSOpDtHUN9DfTC6XUf6yG5H5cqqbuowagns2E3j2Xjh2Xo4vjZSQoe3l8BzHQmphYzoLPIndWbIRD/bknt1yPu6YGOqrmQ2eu8EtW+XZOxcVzflmqlmfJzvwzp3xxRRPspp5vOXRC+9aP78KEtqosVw5YIisXrpQog7sld3bNzsLuueTVNsn4o8JXhBu20V0VWmXjPfVkVhH2It6YQ3NPnKHBEiABEiABEiABEiABEiABEiABEiABEiABAqTgJOgu2XlAtlsvOqGNZOQhsYiYX0zFu/K6FF+z2c3MFehF3IKtaDr8zWEW8TKxetcbIyc2r1LkhMSJNVY5Or4ju3qFRAcLEEtjLi49UOdHrPXdaQlJolvkMO7VqddiM8IlVAv8/H6inWrqdNJsY7H83VevU3OKFOpvrWMw5s3+dhZ8TF0VbsIq8M46DqsWx/fchJ2U4Ts+XClxPywWQIb1ZCze0+qLHWuaWPNqvZTk84boRX2SKLhjZpueOVqK+frK9UaNzGE3HDxrVj24r+eOHZUmrZsbYRS8JdmrdooQVfF1DWEbsTbhSUnOwRd7GMRtL4DrjHPRe/fq8Iv4Fz9BhR0wYFGAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRQ+ARMQffYoX1KzEUX4ox9vKyCbn7P5zQ0e+iF3IZa0PVDsMUr7cIFFTP29IH9SthMPnVKktf+IRA2mxuLpNnt5B8HpM617czk9JQ0iVuyVx0HNgw20yuGOgRdxNZNjjohAY1qmucup6VL3MLdGWUyY9MG1HfEO8PCaGd2xEqVtvXNMheNEA6IuZudhRiLo0HQPbn2sES+t0hlrTe0lfgFOwvQCXv3SPzWLU5VVTJi5AaHt5LAkHpO6fk9GH7TOMPp17MQDv4VA1Rzo269U1KMefHEfMqV9ySbyzwpKRelghHm4XKGUJuSkiJnjRARwTVrqfw6nm6NWrVNwRYnKlXJDKOBRdAg/sLSjVAV27dsUPvhbdpLZSP2MI0ESIAESIAESIAESIAESIAESIAESIAESIAEioKAKegejXYssmXtBETcOoa3Liy/5631utu3hl4YNPY+d9k8SocXaq32HdTrfNxRObVrpySdPKlCMriqYN/HKySoWyPxr+kQ9aI+XSUQYGF1Bmd6wgb3aGqGQIicuFA6vDNKfDJCKkRNWaFCI6BMyPUdsFFWJTxEgjqGSMKWo7L3g6XS4YMxUt4oAwF4T4ZAq/O62lYMDZLafRtL/MqDStRFnvouFkNLMzySYeWN8BIINQGP5PIVKqg0b/9XvUamkO1p3YiJm9+4uJ60tWPLJok9dFAQ/zakXqgknjqhigUYntx7dm6T9auXqePmrdo6VVfTEHj373bEJ065mCE8G2IuQjQknHTU0aFrd6cyPCABEiABEiABEiABEiABEigeBODIkZiYKGeNRaDx2z8kJKR4dIy9IAESIAESIAEvEzAFXXjjItyCNoRd0GIu0vJ7Xteb0xZhFuqGNc0pW67OB9YNEbzS8QV/KNplWXjcrrzuY6nZNUwuxJ81vWab3d/LFHlR0MevvLR68mrZ/MRcObZkv6y49r8S1KG+nD+UIGd2H1d1N/xbhOG5m+mhixALzf/RT9bdPV2Or46SVRllEnfFSdJhR1gHl52yJIaO6qQEXSQhpm5Q9yaWs47dKvXqSWCdulKpTp0s58pSwinEDjZei36Zq4bta3jrwn75fqba4r9m4W0lvHU7pwXl6oWGmeeRNzSsscQdjTVDLVw15HrBQms0EiABEiABEiABEihtBLB2BNYMsJuv8XQbrWwSwPtBrymiCZQrV07wKm6Gfs6cOVM2bdpkdq1hw4by0EMPmcfcIQESIAESIIHSRMBnc1yaEdXVYfDIhcEb1xpuwXFWJL/ndT3FZXt63UH5845vlEDa9sUhsuW5H02vXPQx/LF+0uiuPlli3uLcqdX7ZNuLP5keuUiDtXp6gISN65FlgTWcS/hjv2x6fI5TG83u7Smpp5MketZWaf5gb2nyUH9kzWLpF9NkYcRbKj27fFkKlsGE5PPnJfrgPokx4gifTjghiJULQ1zc6kE1pWXbDhIS2sAlGZRZPH+e0zmEZujRt7/UrMM7/E5geEACJEACJEACJFAoBHzitqt2OnTIfALM2w3v2LFDvvjiiyzVvvDCC1K1atUs6Uwo/QT+/e9/y0njCUerderUScaOHWtNKhb769atk++++071pXbt2hIWFiYQdLt359N1xWKC2AkSIAESIAGvE3ASdL1ee0mr8FK6nD9gPFpvbAOa1JRy/tl7JGCBswvHz8qFI6fF34hnG4CF0MrncMc6/bIkxyQYom6yVGpWW4Ve8ATT2e2xsmbMVJW1768PSKWGmR7AnpQvy3l+nPW1NGjU1AjB0NMjDJeN+T95Il6Szp9TcXcZM9cjbMxEAiRAAiRAAiRQQAQKQ9CNioqSOXPmqBFcvHhRTp8+rfbLqqALj89PPvlEeaiOHDlSIBIWJzt69KjMnTtXypcvL/fee2+BdO2bb76RuLg4Vffx48fVuhLFVdCdPn26bN68WWrVqiVPPvlkgfBgpSRAAiRAAiRQnAhkr1gWp54WRl8MMTawuec/1hBKoULtKurlcffK+UhAWOYia56Wi/riD5W1Zs8wirmeQjPypV1KU/FvO3YxvKY9NB/jfVDTCF1BIwESIAESIAESIIGyQqBRo0byz3/+Uw0XXpnwzizrduDAAYUgKSmp2KFAjNiDBw8WaL9uueUWs/4vv/xStm93eIqbicVo55SxADasQQPXT+EVo66yKyRAAiRAAiTgFQIUdL2CsWAqOb/X8BI9eELiFu2SI7/uVo00us1zYbJgelWyak3MeEwsKA+LuJWskbK3JEACJEACJEACJEACJFA2CehYvxUKaEHoskmVoyYBEiABEijOBCjoFuPZOTRjnRyascXsYfMHekuNK1qYx9zJmUDVoCAZNnKsMGxCzqyYgwRIgARIgARIoHQROHPmjPLijImJUQOD92Lz5s0lICDAqwOFmAZv0djYWMGj+XjsvXHjxhIaGurUDkI57N+/XypWrCgQ3vCIPOLzRkREqNABOI6Pj5cWLVpI69atncrqg9yMKTo6Ws4bayuEhIRI5cqVVR/37t2r2mrWrJngZbULFy6I9srVAiHOo89WL1302T42az253Qe3ffv2CbxMEUKhWrVq0rRp0yxt4LwOgXD48GGzmZ07d5r72MF4g4zfwDB4Wx87dkz8/PzU3KtE238Ir3HkyBG12Fl4eLjtbN4OczNPeWuBpUiABEiABEigbBOgoFuM579Wr6biX72SelXrECpV2zv/KC7GXS82XfPz85catesUm/6wIyRAAiRAAiRAAiRQGARWr14t8+Y5L/SKdiGm3nnnnYIQC94wiIFTp04VxHS1W5cuXeTGG28UX1/HJQfE2mnTptmzyapVq5TAC+ERtmbNGhk9erR07drVKW9uxzRr1iwlMF9xxRXy119/mXGBUemSJUukV69eMmLECLMNiKWu+rdgwQIzD3aw2NZDDz3klJbXA8Sp3bp1q8viPXv2lBtuuME8t2HDBlm0aJF5rHfsfR40aJAMHDhQnca8IFwCDLFlIbbb7ccff1ThFKobCwg/99xz9tO5Ps7tPOW6ARcFUlJSXKQyiQRIgARIgARKLwEKusV4bmsOaCV40UiABEiABEiABEiABEjAUwIQ/X7//XeVvW7dutKhQwdJS0uTP//8U86dOyeTJ0+WZ599VnmCelqnq3zwaH377bdV3eXKlVMCbM2aNeXQoUOybds2gQAJMReirt2wyBheiMuqF2BDP+FVi+M//vjDSdDNz5hWrFihmodADA4QUNPT05VwDFFXL3gGr9Yrr7xS5YWHri7Xrl07CQ7OXAMDTL1he/bsMcVceDTDKxeCO0RYeCvbRUp4V6empqqmIY7v2rVL7es+6z5ZPY/h6ezv76/qWrt2rVx33XU6m9qiDR0bt0+fPk7n8nKQn3nKS3soAybaczkwMDCv1bAcCZAACZAACZQoAhR0S9R0sbMkQAIkQAIkQAIkQAIk4J4AHnXXXpwQMEeNGiU+PsZKvob1799fJkyYIBBi4b172223ua/IgzPz5883xVwsqGb1/ly5cqX89NNPAhGxb9++TudQ9fjx45VXLhZfQ1gAPOqPRbggzL377rsqBIDugjfGhPb0glnXX3+9vPbaa0rU3bJli8CjFYZQB0OHDlX7VkEX/feWR7OqPOM/7fkLgfiBBx6wnlIiuBa69QmIvnjBIAZrQVf3WeezbiG0d+/eXTAfEPSHDRtmvh+QD8KxNrtHtE73dOuNefK0LWu+jRs3mod6js0E7pAACZAACZBAKSVQrpSOi8MiARIgARIgARIgARIggTJHAKIdvE+1Z6wWcwECnpoIPwDbvdux4K46yMN/EDzhRQsbPHhwFsEW4QIgJsK08KgOjP/QN714VY0aNVSy9pLVnrAYg45jm98xQQS1Cn3w4tTCaEJCgu5WoW8RLxemQ1JYO4CYt1aB3Hout/vwQobBGzcyMtKpOMJbwFq1apXv2Mr5nSenjuVwgJsJ8DR/44035Pvvv1e5IVxjHDQSIAESIAESKAsEfDvWcfyQKC6DnbUmUXXlpl7VikuX2A8SIAESIAESIAESIAESKDICW+M8b1o/eo7QAm+++WaWgvDOheE8PCqxwFdezOo9ivAOiINrN4iyMCz6ZTUIy9r0vt5axU0IkBB+8zumevXq6ebMrR43Fk0rKuvWrZtERUUJFq376KOPpGPHjirsAsRtLYZ7o28QzSFoYyE1CLh64TN4RuvYx94It5DfecrNWLG4nV7sD+U6deokV111VW6qYF4SIAESIAESKNEEGHKhRE8fO08CJEACJEACJEACJEACmQQQW1UbBNvs7OLFi9mdzvactR0tDrsroOO+6vNWsVJ7qeqt9dylS5dUEWtbeRlT5cqVddPmVrenRWfzRCHutG/fXtavXy8HDx5UsYMRPxiGOLrXXnutQPC18shP1yDYTp8+XXlmJycnK29ceNTCKlWqJNa4u3ltJ7/zlJt277rrLhU6BCLyDz/8oEJHIDby888/L1WqVMlNVcxLAiRAAiRAAiWSAAXdEjlt7DQJkAAJkAAJkAAJkAAJZCWAR/VhLVu2FIheBWW6HdSP+Ll16tQpqKZEt5XXMVnDThRYJ/NQMbySETsXnrMQVxEXF57P8KJGGAGkjx49Og81Zy0C8Xj27NnKMxuL1UHgXbduncqI8BjeYJTfecraa/cpCJuBF7yP4W394YcfqlAjEHW94W3svmWeIQESIAESIIHiQYCCbvGYB/aCBEiABEiABEiABEiABPJNAMIqHkVPTHSEMctLhVavUHdevFYBF16z1uO8tJldGW+MKbv6czqnY/nmlA9iLGK7aqtevboMGTJEH7rdIhyCjvF75MgRmTFjhgozgQXLRo4c6RUvXXgkd+nSRS1Sh7ALCEORlJSk+tSjRw+3fdMntOCrQ3bodOu2qOYJ7ODVjL6dOnXK2iXukwAJkAAJkECpJcBF0Urt1HJgJEACJEACJEACJEACZY1AaGioGjIeRUeM1LyY9ZF1hANwZfCO1PFutaenq3zeSPPGmHLbDwiYWtj2NM7uuXPn1KP/EGLx2rhxY26bVULr0KFDVTmEsrCGMbBWFhAQYB5mJ7KamYyd3r17q0O8L7777ju136hRI6lWLee1SyBOw9y9H3CuKOYJ7cL0ono6TIcjlf+TAAmQAAmQQOklQEE3F3ObmHhGrhs1Tr2+mTnHLLlqzVozfcfO/K0YbFbKHRIgARIgARIgARIgARLIJYHu3burmKgoNm3aNElISHCqAaLjggULZOHChU7p1gMItXrRsBUrVpgLZ1nzYH/YsGEqCY+5w+vTavBq3b17t0yZMkU8FUSt5a373hiTtT5P97WwvXz58jyL49m1NW/ePNmxY4cKFaDzgZsWyDEPwcHB+pTT1pqOudTetk6ZbAfwoNWe1Frs79Wrly2X60Mt1kI8xnsCYrPdimqe7P3gMQmQAAmQAAmUBQIMuZCLWcYPl5gjR1UJ62Ns54zHlXS6p3fIc9Ess5IACZAACZAACZAACZCARwQgAo4ZM0amTp0qx44dkzfffFN5L2LhK4i7+jdshw4dsq0PoQJmzpypPETfe+890xt37Nix0q5dO1UWsVcRjxUhHubOnSu///671KpVS4l9aFuLfvZF0bJt2MVJb43JRdXZJkHsRAgFLFb273//Wz3Wj7i3WEDs5ptvzrasJye3bdsmq1evVmwhtKJutKUXaoNgjjRXBg/pJk2ayIEDB2TlypXqhcXf4FU8cOBAcRdGAfFl58xxOKaAq55LV21Y0/B++eWXXwThNX7++Wf1QnnEsEUMZVhRzRPa1pyw4BuNBEiABEiABMoCAXroloVZ5hhJgARIgARIgARIgATKDIFWrVrJE088IXXr1lVjxmP7UVFRpphbv3596dixY7Y8OnfurIRh7QkKcVa/dEGEJRg/frxcc801SkiElygEydjYWJUXIhvqgZgM03FYdSgDpOl9vUWaNp0fx3kZky6vt7pebHWaq3Z1viuvvFJGjRqlREukwXEDgqa7OK26Tl0+p214eLgSQcEVzBDOAGIu+nTFFVcIBPPs7LbbblPireYL72v0LzuP6E6dOplVRkRECGLremLo02OPPabmQYun6LddQM3LPHnSfk559Pt037595o2EnMrwPAmQAAmQAAmUZAI+xmM9l4vTAGatcSzgcFOvnGM5FXa/T548JQOvc6w0e8/tt8iD996puvDboiXy7Euvq/3//XeidI7I/gdyYfeb7ZEACZAACZAACZAACZRcAghpAMvJq9bVCFNSUpSnLkQ+hBCARyUWkCoIw6JgEI8hEiLmKkS23IqcnvSrMMfkSX/ykweXYhCI4T0NgRTxbDFHWjTNT92uykLwRBgMGATakJAQV9m8klaY8xQZGSmfffaZ6jc8heEp3rJlS7n22mu9MhZWQgIkQAIkQALFjQBDLhS3GWF/SIAESIAESIAESIAESMBLBCAMNmjQwEu1ZV8NRFy9eFb2OfN3tjDHlL+e5lwagjcEXLwKwxA/GQbBsyDFXLRRmPME8RYhKpYtWybwVD569GiBieIYG40ESIAESIAEipoABd2ingG2TwIkQAIkQAIkQAIkQAIkQAIFRODQoUNK4Ny4caMKiYFmBgwYUECtFV21CFOBF8weCqLoesWWSYAESIAESKBgCFDQzQXXcuUzQw77Gd4O2vBYjzbrvk7jlgRIgARIgARIgARIgARIgASKgsDixYtl165dZtNdu3YVxM8tzRYQEFCah8exkQAJkAAJkIBkKpGEkSOBIOMxss1rFmfJN7DfFS7Ts2RkAgmQAAmQAAmQAAmQAAmQAAkUIoE2bdpIYGCgVK5cWZo3b65ehdg8myIBEiABEiABEigAAhR0CwAqqyQBEiABEiABEiABEiABEiCB4kCgW7dugheNBEiABEiABEig9BDIjCFQesbEkZAACZAACZAACZAACZAACZAACZAACZAACZAACZBAqSRAQbdUTisHRQIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkUBoJUNAtjbPKMZEACZAACZAACZAACZAACZAACZAACZAACZAACZRKAhR0S+W0clAkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAKlkQAF3dI4qxwTCZAACZAACZAACZAACZAACZAACZAACZAACZBAqSRAQbdUTisHRQIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkUBoJUNAtjbPKMZEACZAACZAACZAACZAACZAACZAACZAACZAACZRKAr6lclQcFAmQAAmQAAmQAAmQAAmUUQIxMTGSlpYmVatWVS9fX/7kL6NvBQ6bBEiABEiABEiglBLgr7tS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QAIkQAIkUIAEvPdMeAF2klWTAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAkYITYJgQRIgARIgARIgARIgARIgARIgARIgARIgARIgARIoGQQ8C0Z3WQvSYAESIAESIAESIAESKBsE9ChF8o2BY6eBEiABEiABEiABEiAHrp8D5AACZAACZAACZAACZAACZAACZAACZAACZAACZBACSFAD90SMlHsJgmQAAmQAAmQAAmQQNkm0Lp167INgKMnARIgARIgARIgARJQBOihyzcCCZAACZAACZAACZAACZAACZAACZAACZAACZAACZQQAhR0S8hEsZskQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQEGX7wESIAESIAESIAESIAESIAESIAESIAESIAESIAESKCEEKOiWkIliN0mABEiABEiABEiABEiABEiABEiABEiABEiABEiAi6IV0/fAp9O+lh9//k317rtvPpMKFSqo/fvGPyFHjsZJh3ZtZcLLzxTT3rNbJEACJEACJEACJEACJEACJEACJEACJEACJEACBUGAgm5BUPVCnQkJCRJz5KiqKT39slkjxFyk165V00zjDgmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAkUFYFLly5JcnJyluYDAgKkfPnyWdKZkD8CFHTzx4+lSYAESIAESIAESIAESKDYEVi2bJncf//9UqNGDVm9enWR9W/btm0yevRo1f727dvF17foLz8iIyNl8eLFcvLkSUlJSZFy5crJq6++WmSM2DAJkAAJkAAJlAYCW7ZskZkzZ2YZyi233CIdOnTIkl7YCUlJSfLKK6+oZh955BGpX79+YXfBq+0V/S8qrw6HlZEACZAACZAACZAACZAACezcuVNBaN68eZHC2LVrl2q/WbNmxULMPXTokHz55Zcmk0qVKklYWJh5zB013mdPAABAAElEQVQSIAESIAESyA+BqVOnyoULF2Tw4MHSuHHj/FTl9bJ4EnzGjBmq3jvvvNMM7enNhho2bKiqO3v2rJw6dUrtF5fv2ZiYGHOotWrVMveL246n80RBt7jNHPtDAiRAAiRAAiRAAiRAAvkksGPHDlVDu3bt8llT/orDKxdW1P3Qo1iwYIHahVfO3XffLf7+/voUtyRAAiRAAiSQLwLnzp0TfSPTz88vX3UVROGoqCg5ePCgejKlIL7/OnfuLHjB1q9fL7Nnz1Y3c4OCggpiOLmu8/Dhw6pM1apVi/X3v6fzVC7XBFiABEiABEiABEiABEiABEigWBPAY4+w8PDwIu3n1q1bVftt27Yt0n6gcYRXwEUS7KqrrirWF3Oqk/yPBEiABEigRBHQgiE6HRISUuz6jqdUYLVr1xYfH58C7Z/+vi1OYQ30+ItTn1xNgu5nTvNED11X9IpBWsUKAWYvrH9olSo50gMDA83z3CEBEiABEiABEiABEiABTeD48eMqPiyOIeju3r1bNm/erB59ROiD/v37Zytm4lFReNYi/m1qaqo0adJE+vbtm+2jmSiDNjZt2qRi0nXv3l3gkYN4tbCWLVuqLeLW7t27VxDqoH379irN/l9sbKzgohixbbt162Y/nedjfXGJCjAmGgmQAAkUFgE8eh4XF6c++xo1auTULBaRgtckrvtbtWrldE4fHDt2TPbv368+2/G5XK1aNcGj7fgsw2elKzt//rwqoz/7IGIhjml2sczhXXr58mUVKqBixYqqz/gcP336tNStW1d5X3rD8xTfBfv27VPfS4hrivHgsfwWLVq4GoqZhkfR8f2UmJiovlcwfvQNrypVqiih0sycsZOWliYHDhwQcEAYAAitbdq0UW3a8+LGH/oFw/fnmTNn1PcY+KMM2rPqM8gXHR0tYA3D9yAMjPX3n0ow/sP3r7e8YrH4GEIrxcfHq7FjrhAzv3Xr1gLvU22YS+0xjDT8HoBhDnVoJn2sQzSB1549e1Q+fHe7WswMc6bfVwgrgUXP7KbP29/v9nz6ODfzpMtgi78L/G7Aewp9rV69umAsrgR1LbjjvYa/O/wewd8e/pYwv9m9t/Py9+TpmPIyTxi7j1HwMnaKi81ak6i6clOvasWlS+wHCZAACZAACZAACZAACRQZAe3ligs1TwyLoN11110q69/+9jf59ttvnYqhHsT4wwW03X799Vd5/PHH7cmCC7JJkya5FEKt7VkLvvDCCzJhwgSVtG7dOnWRuWLFCrn33nsFzgkbNmzIcmGMi9Thw4erC2oIzx9//LG1ynztL1q0SJYuXarG/dRTT+WrLhYmARIggdwQ+O677wSfgw0aNJDx48c7Fd24caNaSArC7Jtvvun0uXjx4kX5+uuvs4iDugKEs7n11lv1oblFnXjcPT093UzDTuXKldVnMMRZu0EsRfuwe+65R/UJgqbVIHIi9mp+7I033lAipKs60C/wsQtrGMdXX30lOpyQLguRFOcg2OJR/zFjxuhTaouYqZ9//rkgFILVwPrmm2+Wjh07WpOV+InvRxi+i+bNm+d0HsLpE0884SSavvjii4J5ysnwnWgVW3PK7+48brbOmjXLbZvPPvusuqGK8hA5//3vf7urykzH++Kll15Sx9aFwzAXeM/a7ZtvvhH8NoFwjfHbBV18l6MfsL///e9KLLXXYT3O7TyhLG6QfPHFF+YNbGt92B81apTTTWGI9ZgD2KBBg2TJkiUCwdVqeG+7erIpL39PuRlTXuYJ/aaHrnX2uE8CJEACJEACJEACJEACJZyA1RsHYu6AAQMEHrPLli2TNWvWKK+cKVOmyJNPPuk0UiyUold/7tWrl+AFT6jffvtNeeLgYg8X1FbvJNSnxWMIC2gLXknz5883xVxcDOqLWH2hBE8XeMrYF0r54YcfTO8ob4uu2lvI1cWpEwgekAAJkICXCehHqO2feWhGew3WqVPH6fMV5z777DP1+Yt93FiD5yFENNQHcROPZNsNN+bweQ9De/D6hRcivC4hbELgfOaZZ7J49up+oNzMmTOVdyq8HOvVq6c8W1G+Zs2aOJ1n0960FSpUUP1C/7VHKAQwiHT4zrnuuuvMNiDYQmTVHq8YD/qBGK3amxaZ7WzhjYqxwvAd1LVrV+XZi5BEaBPfeWAKj05tVgYQc+GRi3rR9tGjR9ViZytXrpShQ4eqIvCP7Nmzp/JqRsLy5ctVetOmTSU0NFTt4z/Mmf4eNBPzsIP+4XsYBhEWHrTwvIYYD4EVArz1Zi2E6yuvvFLlB3t9gxi/CSBOa7MK/HiCBufw5A3eZ/bvzCNHjpj1gINdzEWdYKXNPi86XW/zMk8Q0D/44AM1j2CLvwswh9ct3qfgZH+v4v2l7ffff1cezQgHBe9r7bmM3y76d4rOm5e/p9yOKS/zhP5R0NWzxC0JkAAJkAAJkAAJkAAJlAICVg+mRx99VO6//341qttuu015VkGExcWMVdDFRfErr7yi8kGgtZ6Ddxg8beFRiws5HXsOF3va0wzetP/973/NRzPhBTxx4kRVHx7x1YaLd3jnQtDFBbL1Qg9p7733nsqKBcu8uTo4vIXwWCwMHl00EiABEigsAhD98Gg8zPqZp9t3J/bCa0/fiMJnoj0cAcIH4LPNanj0XIu511xzjbrJps/jcx438yDsQeCFAGY1q5gJwey+++5zygPREJ/7+TF43sILEkKk9ebg4MGD5T//+Y96dN4q0qKtP/74wxRz8dSJ9qq99tpr5fnnnze9kK3CI7wx9dMp+MzH95oOHTBixAjlqQmhGN+HqEebngscjxw5Ut0Mxf6QIUPk5ZdfVuM/ceIEkpRhDLo8PFu1oIvx4DF+b9vatWtVlRDaH3nkESdRftiwYQLREuKgNoQ+0uLzX3/9ZQqxN954oxN/nV9vwRLhCPC92bt3b52stvA2h0EIx41fV6a/byEMIxSGO8vrPCG0BUR5jPW5555T4rZuA+97CMq1atXSSWprFXTxu2Ts2LEmqy+//FLdwEZoFKvl5e8pL2PK6zxlzrS119wnARIgARIgARIgARIgARIokQR0DD9caGkxVw9EX3zhwt0qBMALDBYREaEeJ9X5sdVlsG+9IIIXFURY2Ntvv21eLOMYMXe1IS6d1XRcXGv8PpyHBxYEDAi+CMvgTYOAjYt3mKehK7zZPusiARIouwQgEunPH6vXpiaCG2Uwu9gL4VWbqzV0IJRZvUvRhvbeRDxVLP5oNQi48IyFwRPWblYxEwKyXfCF6OQqLqm9nuyOMQ54QFrFXJ1fL56pWSEdYvjixYtVFnjYajEXCRBoddxXHFv79tNPPynxFYIfQitoMRf5EMdWxyq2c9DfcRCB4cWqDf3V9Vs9W/V5bHVZ7MOruSBMe77CK9Yq3KIt9NEqatvb1/Ob00JbKKffi7qMrgs3jPU4b7rpJpfziLz6RkR2/UG+vM6TFl7BwFVcYswVPHetpkVm/A2MHj3aiZ/+u9R/HyiX17+nvI5J91Uz92SenEeoa+CWBEiABEiABEiABEiABEigxBHAQjH6AhUXW3bTj2Liolpf4MJzDKEOYIh1Z7/Qtnq5WEVgeLTAEKfO7oETHByszuE/vSCaTsBFO2LZIg6gNlykwsMXBm8bbzyaCk8mPHoJHuACg5eVK2FEneR/JEACJFAABLTnK8Qn+2Pg8HrVAqZd/IKHJ8rg/EcffaRurkFktH4mW7sLz1YtdOFzF6EF7AbBCt63rjxttbAM78WC8C7VfcHnPbxu8d2D/uo4pvBwhVm/P3DjT8e/1aEDdD3Y6u8eCNv6Ow31/fnnnyobhFUsmmU3/V1m5YDH9XUf7F6pKI8FR2HW8AQqIeM/LcThe9YeA9iaLz/7EKIhqCJmML4zcfMUNyk9aU8Lmlqsza4fOg/mB6zAFu9D/VsB3uLZPe2iBV2EtHBneZ0n1IcbxfBERx3vvPOOXHHFFeqGdHbf7/rvsFOnTllEYIRdgEFE1ZaXv6f8jEm3m5t5oqCrqXFLAiRAAiRAAiRAAiRAAiWcgI4xiGH069cvy2j0Bbv1QkzHjkNmu0cX0vSjwtjXggMEAe1hi8VF7Ka9iJBuF3S1hyw8ieF9BQEZj9rCcA6Pw3rDEOfQ6uGG+L59+vTxRtWsgwRIgAQ8JqCFJFced1oERGVWMQnH8DDE4/w///yzEq6wqCReEAyvv/56Qdxyq1nrQigBvNyZFkL1eYim+FyH4UmNgjAIg7gRaI3zrtvRwjWOdVgf7Gt2GLOdD87jqQ6YVYDW33NIh/g5ffp07Lo0fZMTJ7XnKfbt4S3ARgvL2psT+aym+evvSes5b+1D0N+0aZMaN9rD4mSwLl26qBuW9nm1tovwATAt1lrP2fetYwBPHGMBVL1IHkI2uDOEHNA3Ua3zYs+f13lCPagXvxfwOwRtwSsWLwjIWMzO+h5Cfgit+veA/g2CdG2u5k6nIY+nf0/5GZPuS27miYKupsYtCZAACZAACZAACZAACZRwAlqcxcWXq8dCtVesNT6tvmiB15ErLx/tLQI0+jFS60WL9cJP44NnLAyP/eJlNS3w6oXRcIE4d+5clQXxELWXlbVMXvYRHw9iABbOgfcNHtvt0aOHYMEXGgmQAAkUFgH9GetK3NKfr/C6hahpN3geIswAhFzEQIUoBQELoRWsMV5RTrcDMcse6sZerzVUAc5p4RT79nNI84ZhETIt5iLeK4RjeFTiph48Y3Ucd+t3ir6hiHAPdoPHqO63VaTUafgOBL/sDIueadP8XHnYWsVed4KuzmPti67bW1s8vfL000+r9wLi2uO7Fhywj0VMX3311SxP2aBtfM9C1IR50j8suKa9ucEF708sGAYDU6sXtUq0/Kc5IMk6l5Ysajev86Truf3225UIj5u3EHYhusMzGDeIwcj628N6k9neJ/DTNwasbPT7ITd/T/kdU27niYKufjdwSwIkQAIkQAIkQAIkQAIlnIBeEM3unYJhQdRctWqVGqHVe1dffLl7jHf27NlmGS22WgVd60WTymj8px/LdOXphdh2uIiHoAsBWoduQDiEzp076yryvcVFN17wRn7//fdVfVgIKCehI98NswISIAESsBDQYXBcCYH6JptVSLIUVbsQ8SCA4oXPsE8//VSJcwgrY43zqsVP3DQbOHCgvZpsj7UQhdAF9tij2Rb08CQ+77du3apyI34p4uFazRoewiq46QXIEDPWbhCHtUhpLaMfn0d4i9xw0AKetS7dpuajhU6drrdWD97s5lLnz++2ffv2ghfCRMAzFYIuwkcgFIM99jHa0v3HvruQEThnNfyOQH246YB5AGuIvK6eyrGW0xzBytW86bx5nSddHlv8TeHmLURZ3LydM2eOOr1u3Trlsazz6j5B5LeHZdB/n8hrnfu8/D3ld0y5naest4D0iLklARIgARIgARIgARIgARIoUQT0BTNEAlzgWG3mzJnqEBdzV199tXlKP3KKMnhU0mrwekG8WxgWydGmhV0cQ2CwGvqAR0JhepEb63l4Y2nh9o033lAXojj/5JNPWrN5bd/6CGp2F5dea5AVkQAJkEAGAYSV0aEM7LHBcUNLP5ruqQiIpyt0qAX757VeIM16w83TidCCl1XQ8rSsJ/m0JzLyYlE0q0GUxCKbMAiGEAK1afENwqLVEL5Bl0G6fnoE+9qbFzFv7d+DOO/OtJjmai40H1eiPOrTQh72PRVMkTe/hu803AzVZn9P6HTtoYrve1ee4Dqfdas5wPMX4RZgCPXhahEyazkthFq/e63n9X5e50mXt24xJtzc0O8dOwc9f65udut5x40M699oXv6e8jum3M4TBV3ru4D7JEACJEACJEACJEACJFBCCcADCo8bwrC/fPlytY//fvnlF5k0aZI6vu+++5zCGlgfOcUFMgQIGC6g77nnHrWP+Hx4abNe1OIxTL3ADC6aHnzwQZ0tS/xcfUILEtoz5h//+IfTBbnO542tbgN1FeaFtjf6zjpIgARKNgH9eYpRIG64NnxW6vinSLMLqRDQ8Ci5VZhCXVioSd+405+juk5dB4RiLApmLYvPaJT75JNPzM9rXQ5b/aSGq7AQ1nx53bfeBNReyagLISQ+/vhjc5E2u+CmjyGKL1myRI3p7Nmz6skOLaJChLOKjPr7CWXwtAjyWw3fk2BvFZnBSsfI1RytZbTop0VO6znsWxdXs9/ktOfNyzH6hzAbep50HQhVoUMWQdR05Z2LvLp/uIFg56Hrsm/1e0F7QeMpHuvvAHt+faznGuIk3q/uRPW8zBPa+P7771V4CevfFvqIvxc9h/a/DS3ouppbfU6/1/Q4dN7c/D3ldUy6zdzOE0MuaHLckgAJkAAJkAAJkAAJkEAJJqDj1uohPPDAA0pQxUWtFnqRhscTrYaF0HDhggvWp556Sj788EOBZ4q+6MaK51hh3Wq4aEEcPcR1nDZtmvKUwsWeLqPz2j2xXKUjZMOdd96pT3l9qy+A8agl4+d6HS8rJAESyIYARDbEGz116pQgrADCBOCzSHvm6qIIRWO1jRs3KvEON+Pw2QpPVQhPWlxDnf369bMWUYtaQghGHjx6jhc+q/EdgBihENbQthbcdGF4yEIYhGkRS5/z1hZCKDwg0TcIkBDf0BcsAGX1GLULphgjQgWh77jhaPXK1X3TIpo+Rgxg1ANeELbxAkOIvggdAB4wq2er/p5Aur0+9FnPlzs+Vg/hL774Qo1Vf988+uijpuco6s+LoX/4fsULXqhYIA590rFfUScWKrMK29Z2sFgYvq9hr732mmKPvPAofeihh6xZzX37WBEqA0/Y5GT43gdz2JQpU9QWc1ynTh157LHH1DH+y8s84X2AUCN44f2k/2604I568ZvFeqMaZTQnLVIjnzYt6Nrfe/htlNu/p7yMSfcD29zOUzlrYe6TAAmQAAmQAAmQAAmQAAmUTAL79+9XHUfMWIQygEVGRioxFxdmL7zwgjzyyCMq3fofFkLDRZf2aMGFES4aISCMGjVKCbY6LIO1HBZf0TFy4QWLMriQevHFF1U2lHfnEWu9UMTiJfrC11q/t/b1hbq+8PNWvayHBEiABDwhcMstt5ifhRATIcThs1PHd4U4axdZEf8VIhjEKHii4okJCItIw800fJZDELUaHr9/+OGHxeppiM8/HXoAghri8NpNe7oi3VrWni8/x+jbHXfcoUIqoB4IbBBzcfMQfdZmF9UgXuIJDmusdnyvgKn+3sB3nt1wk7BTp05mMhigPfBHnX369HFa2Es/6o46EfbBalY+drFX50OdGB/4YY4wV1jgCh6jOmyEzpvXrQ4BgDrxftAiJXjce++90q1bN7dVI/zRtddeK/q7HJ6g6B/66s4QMkGfb9WqlRIb3eW1piNO/ZgxY5zeS3gf63AE1ry5nSf0W79HwRi/V7SYi7mDqP23v/3N2oQS8XWCq/nDewNmf+/l9e8pt2PSfcM2t/PkY7gpO56pstZShPuz1iSq1m/qVa0Ie8GmSYAESIAESIAESIAESKB4ENCP17Zu3TpXHcKFDwRdCAP6Aii7CrRwgIteeP9AdM3JGwdlIBggZh5iO1ovurNrCx5CeOQVAvD06dPNi8bsyuT13OTJk9UFH/hBBKCRAAmQQFEQQHgBvPDZahdwXfUHn68QmyAA47MYgp4r8ddVWYh++FzGo/oQ5lAOAlVRG0Q43ACERzC+l3IjdurQPmAHkXXixIlqOM8//7wpVNrHh+9BeOUizAAEP4iK1jip9vzF/RjzCiEX/CAiY15zwzA348MiY3pR1OwY56ZOd3lzO094X+NvA/OKm9L4nYN5zek3i7v2c0rPy99TbseUUx9cnWfIBVdUmEYCJEACJEACJEACJEACJZwAvLcgmHpq8MSBF2tuPFlRBl4tds+W7NrEIms6diQuErUHUHZl8nNOixhY4A2P7kJEwBjt3m35aYNlSYAESCAnAhBktZdlTnlxHp+N8KrFK7cGsQ+v4mZ4TP7/2TsPgKrK948/7L1ERBBliSKCe+/SNNuaWVqWWVk2bGnLfzs1KxtWmvbLynZqZWnO3Bv3YisoqIA42Jv/+7yHc7iXe0HGBQG/7+93OO8en4N07/c87/Mas5KsaJ4s4qrit3rnuitWrJBN+OWjanVqrA/+O1+d8Yz10ZDy6uu5smjMLjs4DB06tFLGpuBT3efE7iKq8qLaFHPjPmrCvbprqslcIejWhBragAAIgAAIgAAIgAAIgAAIVJkAHxLDh6OwX70ff/xRtnvooYeoU6dOVe6jphX55GvVvzAf4MZh4sSJ0n9fTftEOxAAARAAgbolwJvJ2YUPuwPil5NsjcpuAviloOpiqLxP+LqdUdPuna1QY2Ji5I4Wts5lC3G2elVdgzTt1TfO1UHQbZzPDbMGARAAARAAARAAARAAgUZD4JtvvqFly5Zp82XfvNOmTdPSdRnhA1r4IJZjx45JMYC3aur68K3LsdE3CIAACIBAzQiwWwV20XDw4EF56fbC1st8SFd9Wmnqjt8U40eOHJEH1qlrY2vyJ598UrOQVvNxbzgEIOg2nGeBmYAACIAACIAACIAACIBAkyTAlrj85ZD93LGlle5hNfWxYB53iDgtHQEEQAAEQKBxEGCLXLbA5d0d7Ee4oKBA+mnnQ8B69uzZIHwCNw6SVZslu67o0aOH5Orr60v8MpRdGyA0XAI4FK3hPhvMDARAAARAAARAAARAAASopoeiAR0IgAAIgAAIgAAIgEDTJGDeNJeFVYEACIAACIAACIAACIAACIAACIAACIAACIAACIBA0yMAQbfpPVOsCARAAARAAARAAARAAARAAARAAARAAARAAARAoIkSgKDbRB8slgUCIAACIAACIAACIAACIAACIAACIAACIAACIND0CEDQbXrPFCsCARAAARAAARAAARAAARAAARAAARAAARAAARBoogQsm+i6GvWyiouKiS/dYGZuRhaWFrpZiIMACIAACIAACIAACIAACIAACIAACIAACIAACFxnBCDoNsAHvvuzbbRt1ma9mXmEtaBJm6bo5SEBAiAAAiAAAiAAAiAAAiAAAiAAAiAAAiAAAiBwfRGAoNsAn7dra1cKGBogZ3blbDqlRVxogLPElEAABEAABEAABEAABEAABEAABEAABEAABEAABOqbAATd+iZehfFC7ulMfHGI+vs4/TVpWRVaoQoIgAAIgAAIgAAIgAAIgAAIgAAIgAAIgAAIgEBTJwBBt6k/YawPBEAABEAABEAABEAABEDA5ARKcnOpODfHoF8LF1ciMzODfGQYEsjLy6NccZUPzk5OAiEYlueCNAiAAAiAAAioBMzVCO61J5CVmUUn9h036IgPODu7/wwd+ekA7f50K0X8eZQuxqQa1KtpxvHwY5SdmV3T5mgHAiAAAiAAAiAAAiAAAteUQMLkiXTQ2prSFn5Z4TwKz56VdbheYXJyhfXqqyD5o/fpSAtPg6s4M6O+ptCgxvli4WLqNfhmemvmh1We14L/fUc33T7W4MrMyqpyH3VZ8diJCLkmXldGRmZdDoW+QQAEQAAEQKBaBJqkhW5cXBzNnz+/WiDUyk8++SQFBgaqyaveS0pK6HRMAkUeiKDLaZflm+SQHh21dtkXsujfZ/+kuLVxWp4a6T9tAPWdNoQsLC3UrBrdWdA9tvcoubq7UnC3DtQmyBdvtGtEEo1AAARAAARAAARAAASuBYEr69bLYW38K/4cnht1Qtax8PYgyxYtrsU09ca0dHUh90n3y7ysw0cpd/8Rsu3eicydnPXqXS+J4yci5VJ92/hUeclOjo50w8D+sn5M3ElKPHuOfLy9iPMbQoiKOSmn4ebmSk5ODWNODYEL5gACIAACIHDtCTRJQZcF2eHDh9O6deuqRZjbVFXMzbqSSSf2n6CE6HgqKirSxrG2tdbiLPb+8dAvlLQnSeb1fbYfOfu60ZmdCXRi2THa8dF2Mhdibj8h6tYm8Jh5OXlSUN69fheFb9xLvu38KKR7CDm44INHbdiiLQiAAAiAAAiAAAiAQN0SYMvborPK7jWb4OAKByvOziLn20eQQ1inBuHSoPnTz2tzPf/WDDonBF2nfn21vOspUlxcTPsPHZFLbte2YlG+PJNHHlIEcc7/6LMv6fc//qFOoSHlq12zdFR0rBy7U8cO12wOGBgEQAAEQAAEjBFokoIuL3TEiBHElrp8VSWwkMttKgslxSV0KuokRR2MpPRL6VpV9u/k2cqT2ncLppatvbT8hC0nNTH33t/Gk9/QIFnW5cEe5OrrSjvnbqdt72+hbo/0Jls3O61ddSN3TRpN58+co6gDkZSclCwF5pMRccSXs5uztNr1a+dPZubwQ1VdtqgPAiAAAiAAAiAAAiBQtwRyIxWXZdLy1qdNhYM533on8dUQQ8bePXJaDl27N8Tp1fmckoRlrRqC2gao0WrdjxyLkPU7hrSvVru6rHw8QrE6Dm7Xti6HQd8gAAIgAAIgUG0CTVbQZRIs0FbV9QK7WqgoZAjx9rjwjXsm9jTx22c1OLk4UduwIAroGEiWloYoY9coH0q8enhrYq7atsfkvlLQ5XTCtpPU/o4yNw1qnercWUjmq7CwkE4ej6PYozGUcSVDCs97/9tD+zaFU+u2bSi0Zyg5ujpVp2vUBQEQAAEQAAEQAAEQAAGTEChIOEVZe3ZTYWoyOfToTXbde1LO8aOyb8e+fYQBQtkRHyVFhZRTKpTqDm4b1pnMr7YlX3wmztq5jfJPJ1DB+XNkIdwgWLVqRQ59B5KFu7tud1QiLH9zDh+SVr/2vftSXnQk5R7cT/kpyWQb1I4ch44gM+G3t6LAh6Nlbtgqi+06hlZUTcsvzkin7H17qSDxDBWKMSycXMgmwJ8chgwj8aVCq8eRgpOxVCD8BVt6eZG1n3GhNO/EMSq6coUs3NzIJtjQuvVKejqdPBmv9RsUFEiODg5a2hSRmFjFNYG9vR25CVcUB4ULiqPHxXchYU/SMbg9de/audJh+HC0yFJr2OCgtpXWVQtzc7lNDB2PiJLfgfzatKa+vXuQdSXPittmZGZSrJhvZEwcZYq4p2cLCgvpQP5++i8TeE4xcafkcO3LzSk7O4dOREbJMmfhiqFduXIu4PlFlNbhdBsxP/dmbhxFAAEQAAEQAIFaE9D/xFDr7hpWB1V1vcCuFioLO9fukO4MuA4Lt+zOoIPwVXs1dwaXz1yW3fr285N33R927vbkEdaCUo+mUEbSFd2iWsV5fu06t5cXC7pstctuIVjo5fsV4ed3xH0jazUGGoMACIAACIAACIAACIBAdQiUCHEs4clH6NIPv+s1az75YSoqPUTMsUs3vbKCU2Jn3OAb9PI4ERp5Qgi6FYt+WVs3Ufxzz1L+McW6snwHYadPk2XLllp2dvheir5J2anXcsZLdH7mB1oZRxyHDaLAX5eTubOLXr6ayItWjDg4bW1EUFXr8T1lzkxKev1t3Swtbh0aTO3++pus2vhpeZeW/ibruz8ygdos+EbLVyOFSUl0opSb78IvjAq6GzZtpTkff6E2oZ++mU81taLVOikXUX3NtvFpRU+/8CodPHJMr8ZtI4fTG6+8oJenm4jTEZzbVsHCd8PGLfTa27N1u5Bx39Y+9NGsN8lXiKfGwt//rqX35nxirIhGDh9Kb8+YrpXFJ5zR4m0D/bX4mcQkeuGVNynhTCKxb925Yjxj4fDRY/TMtBla0Zz3Xtf8BWuZiIAACIAACIBADQk0aUGXmVzN9QKLuVdztaDLlv3iss9cXb+5uuW68YsnL8qkQwvjfmxdWjlLQTc9URF+dduaIl5cWCSFXJ4zAgiAAAiAAAiAAAiAAAhcCwK6Yi67VWg+fjxZe3tT8uJv6cKib7Up2XbU37FmZmNHbebNleVZwoI27ZsfZNzS109rUz6SJw5Oix6miLP2A3qR67CbyLZ9sLTSvbhiBWVt3kEWHh56zXKOK75fOZPFXD7ozLF7b7q0ZhWl/7NWWt+mfbOQPJ5/Sa+dmsg9plgYOwzpT+Z29mq20fvFVStlfoupU8iuXbAQph0oc384pX6+UArQZ15+kQJ+Wa61tesk/AWLkLF1m5anGzk/VxE1+TA2t/sn6hZp8cgoxQ+smuHna1zsVMtrcmdLWQ6qle2o228hn1Ze9PeqtVL4XLl6Hd04qD8N6NfbaPcRpda5QUI4tbO1NVpHzVy+YpUQqD+Xyd49ulHPHl0oMjKWNmzeKsea9eFn9NW8D/UOiS4WrvPemjmH1mzYLNt1DutIvbp3oWbNmlGssMJdvmIlWVhYqEPIe7Q4pI0DWx17tlB+Z3bs2ksz3plNbKHbMbgdfTjzTWreXN/iWzYSP6Ji49SovAcJK2wEEAABEAABEDAVgSYv6DKoylwvVEXMHXjbYIrcH0GnIk9KgTQ+6hTxZe9gT4GhbaXbBWsbw21YlrZW8jkVFRQZfV5FeUq+hY1Sz2ilambm5+VLdwuxx2IoJytHa82Wu/7BARTcHQ79NSiIgAAIgAAIgAAIgAAI1DmBSz8v0Sxzg5b9SXY9eskx3R+dQoecnbXxbTvoC7pWrcUW9SeeUcoXfklp9IM8FM3MouKvMFf++lPWd73vbvL79kcy0xHpmj/5rHCnEKGXx5Wzjwh3C6WBrVybPTxZppo99gSduncUXf5zFV1avbpCQTfr4AFZ36m3si61L2P31u/OIrvefcjctuz8DNfxD5J9+xBKePpZurL8H2JXE+oabUU+h/wYcRDzhQtk0by51m3ukYOU+sUimW4za06FbiFU1wBckX3BWlmZ7rsH98nGI4ePKX6QOb3g0zmai4V7776TBtx0B2fTjt3hFQq67DaBQ6fQyr+rnDyVoIm5E8aNoWeeeFS24x9dl3ekD+ctkNbB55NTyKulp1a2ZsNGTcx9+olJ9OC4sVoZRx4Qvy+pF9L08qJKRerOoR3FGom+/eFn+uqbJbIOWxy/8sLTlbp3KC+kewu3GQggAAIgAAIgYCoCFX8aMtUIDaCfilwvXM3Vgjp1e0d76ja4u7wS485QxIETdDHlImVnZdPRPUfk5d7Cndp1bU+tA9tob4Ob+TWTFrhZ58sOUFP75PvlUstc5zauutl6cXHemgx56bl6+boJ/hDF/n2jD0VRWor+BxGeF4u4PgGmfxOvOwfEQQAEQAAEQAAEQAAEQKA8ARYnz32uWFP6zH1fE3O5npmwxGRr2LTFP8lmVn4VWzBmHzks61zt0LHsUvcHlkIo1hVzZWPxwdqmVCCV6dIfGdt2yJjbhLGamKuWO99woxR02bK3opCxZ48ssgvrUlEVLd/BiAsJLnQYPFiroxvRtUbOE4fH2Q8orSc+/ye9/Yas6jZ+DDncMFS3mRZny1QO7IqAQ/++xi1kZWENfySnpEqLVW4+5bGHNDGX0+zPtm+vHrRr7z46e+48ZxkNR4+dkPnB7dsZLVczf/xNsV5mC9unH39EzZb3Xj3LXHbwWKqgyz5zP/hEcTnBInB5MZcbt/L2kpduh8dPKCIzl736xnu0qfT3ZLqwrr5HCNVXC3nC0Ebl3rFDezLHAdVXQ4ZyEAABEACBahC4LgRd5lHe9UJ1XS2oTH0CWxNfOWKbDfunPXkijgoKCqSQumvtTtpnFU6jJ4+R1d38m8n7ib9P0JB3biZzi7JDHtKiUuhSzCVZ7upTsaDr6KlYLaQnpFNWciY5eBq6b/jz6+VyDuoc+a17QEggBQs/v7b2lW9ZUtvgDgIgAAIgAAIgAAIgAAKmJpC9dYvmy9b1rnsMurfyVKwWnW8XB49VYnmbvmu3bGt/lUPHXAbfKK2B2ZVDcX4eNb//IbLv04/MbGwMxuaMorQ0af3KcQ9hKVs+WLgp2+mtg/zKF8k0H3CWs3u/jNuFhhmto5tZdOUyXV72G+VGRlBe/CkqEONzKLysGICwH11dDixKu9w5kq6sWC0OjzumCbqZ61dLdxDc1rsCn7xcxiLiT4sXcLTOQmypawIe4LabbzIYx8VZ+f7iIHY3GgssuLI/Wg4dhAVxReGCsKBl1w0cxo25SzOiUeu7uyvfvTite5D1euFvl10kcBh3z2h5v9oPPn/keGS0rLbsr3+06pMnTaiSmMsN5s5+S2uHCAiAAAiAAAiYmkCZwmjqnhtgf08++aQ2q6q4WtAqG4nYCV9KXQZ0leLtIOGSoXlLZfsT/8dfDWHjlLf0WeeyaM+nW9VsKsjJp03vKB9GnH2dqc3gAK2sfMQ1oOyDyZ4vtlHO5ezyVaQbCM708PIgngsLyjw3iLkGqJABAiAAAiAAAiAAAiBQjwSyjymWtU4jbiB2oVA+5CXEyyyHrt3KF2lpFkHVA85sOiguCLTCchGXW++Ubhk4++J3P8vDzg45OYnDyN6j4ksXy9UmyhMHrKnBftANalS7F5xVhEa7EOOuAHJPlLkasG5buXXpxW+/piMeLej0lGco5bP5UqTN3r6X8k6e0tbn2M3Qyldlo1opl+Tn05k3FetcrzdeI+vAIG2+1yISGRMnh+3epRN56LiEUOeSdDZZRtuUWgmr+eo9JlbxVctpfz9fNdvgHqMjHA/s39egnAVfNXh7lR16F1Pqy/bGwQOouY7oq9Y1dlcF5vJl/67ZoH33Kl+GNAiAAAiAAAjUJwHL+hysIYzFom5srP7BALWdl5evN/GVlytO742K17prFuRBXR/uRge/PUBbZ2+hiJURxG4YEvedIRZ5OQz5v2FkYaXvgF/rQETsmztQn2f60u7Pd1H4gr3ycvBykFUe3f4U2boIYbl/V/Jt70c2tsYtD3T7QxwEQAAEQAAEQAAEQAAE6osAW6FysA0yFB1LxEHDWeH7ZLl9SKi8G/uRL6xZ1XA18dLc3Z0ChR/arC2b6PLKFZS2dCkVnU2lpNffobS//qIOO8OFr4dSn2ai05xSQZcPUDMz4ls269gRObRtW8P5c0FOabnTLUMr9GHL9dL/WEoJjz/FUfJ+53VynzCJLIRPVTNzxb4mVlgoZ6zdRPadDQVdu46K5W/65s2y/aWfvqfc/UeID5hrMfV5mXctf0SVHmhmTIzNFd+Pjp5Qnl9r7zKRVXe+EVHKgWphQjSvzL9vYuJZ2czTo7moZ/g19kxiktZtS88WWlz1ZRvoX7FYrFUujcTqiMzsL3fUbTfTI0+9QIlnz9HKNevprttGlm+CNAiAAAiAAAjUK4HrykKXybI/3dpa51b0hFhQbde5vV7xsPdvpRveHibzUo+mUNQ/kVLMZVH23qX3U4dRV9+aNVCIvtyHR5jywYTFYL7Ydy4HHhNirkSBHyAAAiAAAiAAAiAAAg2IQG60sm3d2tNQzMvZvVNzd2ATon8gmu4ScqMUQdBx2CCjoqtuXTXOvmpbffgphR2PplbvKtasLILyQWK6IfuoYkFs7WNoPVyUmqod5uY8xNB6l/vJKT1QzbH0oDfdvnXjSR/OkUmv16aT5yuvk2WrVpqYW5iYKMVcrqCKt7ptbUvZ8MFo+TFRlPj2W7K4zez3ydzZRbeqQZx9ybLQyVfaRcXdm0GlWmYcOa48Hw+Psp2Fapfbd+9Ro9Sje1ctrhtRBd3Qjvrfo3TrcDzpvOKDtyIr279WrpVNBvTtRRY6h+GdOn1G5tsKn81VDZExigEQ++p945UXKCw0hIYPHSKbL/ifENSFUF1ZyMjIJD6Yja9UcZgdAgiAAAiAAAiYmoDhq01Tj3Cd98d+c3s91Z96PNGXrpy6SDkXc8i5tSs5tHQ08PtUESq1D+4HAQRAAARAAARAAARAAAQaCwEzcSgWh+yIMtcGnC4pLqaUxQs5KoN1QFs1anDPPqpYyTr26GlQdrUMMwcHaj75SWmhy3WLc/QPGs7cs1d2kbF1K7HFsO5Bahd//UGWsf9ch2EjZLz8j5wYxbrUysOzfJGWLk6/Ii1qOcOx30AtX42cm/2OGiVbI4e2WQUEauUx994jLY7Zothl7Dgt31iEXcHddd9EreiOW0bQ/71sWoveC2kX6dKly3KMmFjFGlsdsEjwXLr8b5m8ZfhQ8mzhoRbp3U+X+s/V9YGrV6E04SxcZ3Bg37Z8homuNW+0EGC37VT8LD84fmxpC+Xm36a1bLNzdzhNGHePXllFiRMRyouI0JAykfmxiQ/Quv82y/X+/ucKo4erqf298/5c2rJ9l0zaC1d9m1f/qRbhDgIgAAIgAAImIXDdWeiahFoNOmFR1q1tc/Lu1ZocvZyqLObWYCg0AQEQAAEQAAEQAAEQAIEGQcCu1NXCpZ+XUWGSsiWexdzUD2dr1q/S8rZU+DU26Yw9ipWnXSUHohXn5tC5N1+jvFJrXrUfPrQs+dOPZJJdFNh16aYWEZex1S4HdsuQ9d96rYwPHUt88RWZ9po2Xe+gMq2SiKgCcNrypVSQoC9oqvXMbO3UKKVv2qDFS/LyKHnW23Th6+9kHs/P0ttbK1cjfEgaHxrHQfUl3HrmnArnpLZLKLVMVdPt25UJw2pebe9xwv+vGnbuCZcWqZzmQ8k++WIRHTxyTBaPHztKrWZwtyh1O7F2/SZKTFLcKhhUEhl+QphVw3+bhABfuluR1/nM9P+TRV07hVIXcemG4PbtZHL/oSO078AhMTdllyNnxsadoudeep2ysrK1Jjx3dd7B7ctcbfi28aG777xF1lu85BdKT8/Q2pSPqFbLnN8lTH8+5esiDQIgAAIgAAI1IQAL3ZpQQxsQAAEQAAEQAAEQAAEQAIGrEnC/7wFK/vgLWe+ovz+53DmScoRPVXYfoAbH7t3VqLSSjR8/hop1DhrO2b1flp/79BNK+/1Xra7f4h/IwsVVpvOjI+n87I/kxdar9sJNQf65s5T+j7INnyv5L/iKzHS23efp+Obl8pjb7iBuy4EPK+PQUli0uj30iIwb++Fy03DpLiFr8w46FtRe+rXlet7Tp1Pzp56TTdhK2W3CWClgJ8+dR+k7dpB9xxDK2LpNj4PToEF6/n11x+OD0dS1NJs4nuz79tctNhpnsVI3BAUG6CZNEo8qPRCNO8vOzqE7xj5ILKpGiYPIOM3h49lvU7ugii2w+wkXCWx1GyPmO3r8JGKLVg4PCUvbhyeUWSHzQWg+3l7Sj+0bMz+kRd/+SC7OTrIt12cfvB/OfJOjemHiA/fS8hUrZd6Tz79Cbm6uFNohmNgymA8/47SDg73WJkn4yVVDUIA+s4cnjBd9/SvXtuSXpfT045PUqtqdXSyoVsucGRKsCMpaBURAAARAAARAwAQEYKFrAojoAgRAAARAAARAAARAAARAwJCAjbCI9V+8SCu4smK1FDF9F80nhyGKKGkX2kkrLzybSJf/XCXFSxYwVRGTK7A1rZqXtf8AWej6jxUHnTmNUPzcshh7YdG3WlvXe0dRhz07yWnk7do4sj8d37xBa/+VZdyWL3az0EpYz7Z8e7bm61avcWnC48lnyXfhl8RWxhzY0pcva582pTWUm8+sueQ66laZYIE67RvhzsHGloJWrSD3SffLfMeuhgeiqZ3Y+PmrUfKeYShaaoU6kbj4BJ0UUaC/n17aFIm4U8oYbIF75603yy7ZupXFXBZYv/x4Ng3o17vSoR5+4D56/unHKbidIvpyW768W+q7seCD0D6Z8y51LBVI+YAyFoJZAOaxv/hkNjkLgbd8YFcP3y+ap7VjsZXdM6hi7uSHH9Brcir+tJZmq1zd0EIcyPbgOMWlw5Kff6fLV67oFsv4qjUbtDw5N3GgGgIIgAAIgAAImJqAmdiqUrbnxNS916C/33cq/1Ec269yB/816BpNQAAEQAAEQAAEQAAEQKDRETh8+LCcc0hISKObuzrh4owMyj8VS2aWVmTdPviq7gLUdtW9F125LFw7JFKRGM/C1YWsvFpVeHBY0vTnKOWz+dIK1+vdOcI6uJDyoyLFHC2FoCt8pwqR2KRBfO0qOB1PhSkpZOnjI+dWlf5LhL/YmFuHE1sBt5r5FrWY/lpVml2TOlfS0ykh4Qz5+/mSk5NjncyBXSakiAPr+MAxj+bu5O3Vskru7Phr70Uh5p4Th6sVFxUT++xt6dlC7wC12k44T7jRGHHXfZp18qy3X6NhQxSxv7Z9oz0IgAAIgAAI6BKAywVdGoiDAAiAAAiAAAiAAAiAAAiYnIC5ONDKtlNXk/dbvkN2waC6YShfVj6duX+fzLLvGCbv7KvWJqQO/Z0KgdjK119e5edSWTpl7vtSzGWr4eZTplZW9ZqXuTg7U6ewjnU6D3NzMynEshhbnWAm+Ls3c5NXddpVp+66jVs0Mfe2kcMh5lYHHuqCAAiAAAhUiwAE3WrhQmUQAAEQAAEQAAEQAAEQAIHGTqA4J1vzk2vToeFZPuce3Ef5p0/TlfVrpfsI5u37yTwyd6wbq9fG/jwbyvyX/PS7nIqncM3w4jNPNJRpYR4gAAIgAAJNkAAE3Sb4ULEkEAABEAABEAABEAABEACBignwIWpqsG4XrEYbzD3ukUmUf6xsjgFLFpPjcPhibTAPqIKJfLdwHhWXFJO1lRXZ2NhUUAvZIAACIAACIFB7AhB0a88QPYAACIAACIAACIAACIAACDQiAma2ttTq3TeIXUGY29k3qJmXFBeTx733Eon/W/sHkEOPXmQVENig5ojJGCfg4NCwfpeMzxK5IAACIAACTYEABN2m8BSxBhAAARAAARAAARAAARAAgSoTsGkfQi1ebniuFngBZubmYm4zqrwWVAQBEAABEAABELj+CJhff0vGikEABEAABEAABEAABEAABEAABEAABEAABEAABECgcRKAoNs4nxtmDQIgAAIgAAIgAAIgAAIgAAIgAAIgAAIgAAIgcB0SgMuFJvDQS0pKqKigyGAlltZ4vAZQTJRRLHybFRbpMzc3MyNLSzA3EWJ000gJFBUWUUlxid7szS3MiS8EEAABEAABEAABEAABEAABEAABEACB2hOA+lR7hte8hzM74umXu5YYzGNq9HSya1Y1x/wZZ9Pp+xGLZB+P7XyabJxsDfozRcbho8cpNzdXdtW1Syd5Aqwp+q3vPhYuXkKLFv+gN2ygvy8t+2mxXp5uYvvO3fTMtBnk7uZKG1Yt1y2q8/j4h5+glJRUmvnWa9S7Z/c6Hw8DNG0ChTkFdHZ/olykd3cfsrSz0hb8+z1L6PS201qaI32e6UuD3xyul1dZYss76+no0sPU49He1OfZgZVVRRkIgAAIgAAIgAAIgAAIgAAIgAAIXHcEIOg2gUdu52pLAUMD5EryMvMoaU+Ssip9I7lKV1pSWExZ57JknfLWdZU2rEZhekYGTXx8qtbiy49nU78+vbR0Y4r4eLWkXt27yimnpKZS/GlF3KpsDQWlFr1ply5XVq1OyljM5XHz8/PrpH90Wv8ENm3ZTqvXb6QOwUH08APj6nUCx5cdoTXPryRbFxt66viLemO3DPMidXfA2X1JlHslj6rxp0j2lZeRI/8eFWTl6fWNBAiAAAiAAAiAAAiAAAiAAAiAAAiAABEE3SbwW+AR6kX3/DZBroQtbed3+qTaq7KwsSTPri1lO3NL82q3r0qD3Xv26VXbJixWG6uge/utNxNfHNZs2EivvjFTb20NLdEhuB2lpF4gR0fHhjY1zKeGBE4lnKb1G7fUu0jPLhV2frpVzrr/tEFkaVtmncuZN7yj/Lvg+H+vraJ9i/T/3XP+1YJzK1f598ixhdPVqqIcBEAABEAABBoMgfSVf1Hc6LFkP6AXtd+4vcHMq74mkpeXRwcOHZGGDpcvp5OXVwvq0bUz+bTyrq8pYBwQAAEQAAEQuG4IQNC9bh515Qt18HSkiesfr7xSLUs3b98le2CXA2wtuv6/LTT9uWfI3Nyslj2j+dUIfD539tWqoBwEqkQgdlUEpSeky7qh4xUr9So1rEalPs8NIr4QQAAEQAAEQKAxEcg5dlRO175DSGOatknmumPXXnp/7jxKFgYE5cNjE++nxx5WjE/KlyENAiAAAiAAAiBQMwIQdGvG7Zq2Oh2bQLZ2ttSilWet5sF+MFMjkw368OzkbXCAUXLiecrLzaM2bX0N6lclo6CgkLaUCrovT5tKL814R4q6kdHRFBLc3qCLqOgYSs/IJD/fNuTi7EQnIqLo4JFj4tAxC+oU2pE6h3U0aFPbjNNnEik6Jo5iT8WTm6sLtWsbKMcxN68bi2Xd+bI7iqjoWJnVytuLvIVLh9qG44JZcbH+wW3M0+kqVrpxYv1Hha/jc8JNg6WFBXm4N6PQjh2obaDi1qO28+L2/Ptw5OgxOplwhlIvXBBzcqAAPz9q3y6Qmru7m2IIvT6quqa4k6foonjZ4NumNe0XFiZnxO8Eu9bo0jmMIiKjaeeecHJxcqKhNw4SvyOuemPUdE3JySl0OjGJXFyc5e9cTk4uHTx8hI4cjyBnJ0fq3aMbBQb4y7Fi407SpctXZDzhjOJaJS3tIoXvP6g3l9CQDmQn/kZUJ1xMTqNLaZcpMCSwwmbsjmXHp9tkef/pA4XLBbsK61a34FJcGuWm5+g1c2zhTE6tnPXyOHE8/Bj5dwgge8eq+Qg36AAZIAACIAACIFAHBMzMzMn59hHkfMONddB7w+1yl/h89Pwrb8gJBvi1oTtvG0mZmZm0et1GSjx7jr7+7idqH9SWBg3o23AXgZmBAAiAAAiAQCMjAEG3kTywrIwsith3ghKi46mwsJCCu3WotaCbFp1KS276xoDAs3EvGQg15xPOU+ShCAr/by/5tvOjDj1CyMHJwaBtRRksUGVnZ8viQf36UDchkB04fJS279xjVND94JMvZfkzTzxC7Cv0mBAndcPjjzxITzzykG5WjeP5BQU0f9Fi+v6n3w366Ne7J737xivUTFgV11VgAXHKs9MpOvYk+bXxoa/mfWSSoR545EmDfuZ9+B4N7F/xh+kPPvmcfln6l0E7zpg8aQJNeXSi0bLqZPLBeLq+lMu3fe/NV+jWETeVz65xujpr+up/S2jDZsWdgDrggv99TxPGjaUffin7/fh1+V/025KvyUII3hxqs6a1/22mT75YSPy79uD4e+iJZ19Sh9bu3y2cJ18uzF/0HW3atkPL5wj/25j8zDS9vF+/+0qI40F6ecYSBeJ3P/ZIDEUfiaLc7FxydXetVNBN2BJHqUdTZFddJ5rW//Xmd9dT9Er9f+f9XuhPA18bZjB1FnSP7T0q58t/C9sE+ZKZGSz9DUAhAwRAAARAoF4JtHh5BrWo1xGrN9iCBQtoypQp1Wt0ldrFxcX01uy5slZ3ceDxvI9mkZWV8hVz9J230chR42TZjt3hEHSvwhLFIAACIAACIFAdAhB0q0OrnuuWlJRQfPQpijoQSVcuKlZ56hQcheVebYNjS2ca9Opg2U3OxWwKXxheYZf2LvayjMXkuBOx8nJp5iKFZRZ4ryamsL9cDgOFmGtjYyNExT5SsF0nxKzJkx6UZcZ+fP6VIjjzoU8Fhfn0x9+rpTC88JsldNvNN5nEJ9erb7xHG4VozGHU7bcIa9RgunAhjb7/eam0yHzx1Tfpm/mf1olriFQxzuSnX5C+xgL9fWmhEHPdhUWsKcKURx+iwtKD2L7+9serdnlYWECrYu5NNw6mLp06CitPOzoVf4aWr1hJ7BfNFCEzUzl8r13bAOrftze1aeUlXlIU0fbde6UV9/+9/T5ZWVjS8GE31Hq42qyJf+fWb9wsLUtYzOXn069Pbynsxp1KoMioGOoYEiznaIo1nRSW0S+8+pbsb/jQIdTKy4vOCMtdFpjVw+xuGTmMwkI7yDq79+6nvcIy10dYdI++81aZp/7w8PBQo0bvqWdT6Pi+45SSmEz8d0YNji6V+6zdNU+xzu0xuQexmxZThuA7O1LLMMUyPWJlhCYcGxvD2taa8nLy6LKwKN69fheFb1Re1563QgAAQABJREFUNIV0Fy+aXEw7L2PjIw8EQAAEQKB6BLL37CKxbYis/QMpc+M6Ks7KJqcRN5NlKx/K3r6Nso8cJIdefcmuZ28yK7czqjgjnbL37aWCxDNUmJJMFk4uZCN2rjgMGSZOA6n4q0z27p0k/iNHdp26kJm9PRWcOknZe3dRfvJ5sglsS043jSQz8ZlUL4jPuTkH91PWnp1k7dOG7PsOIIvm7pR/9IisZhPaSW/MosuXKC/ihF4X4gMj2feu+OV5fmw0FYoDda28vcnSp7XsO1PwsWzenByHDicLVzf9/sqlEpPOUqrq1kC8zOzSKfSqn8PVLuLi4ohF3eHDh1NgYMU7ctT6VblHih1ml4RxAgd++a+KuZx2b+ZGXcX8eJcdv0TWDTk5OcS7yfg7RDchBPPnIN6ddEHsPPIXVr6DhQGClZWVbhOxu+s4sSEG++Rt6WkoncfGnaLLV5TvTNynsV12R4+dkMYx3HEzMT/elYUAAiAAAiAAAo2RQMWfghrjaprInDOuZFBEuLDGjYkXn32LtVWxm4XA0LYU1Kkd2diW+wCq1ap6hAWZvi8OkQ3ST1+uVNANCm0n3S3EHImmuGOxlCu2hbPIvGfDbtq3KVyWdegZQk5GBCEWjDZsVKwe+/ftKcfr07M7fUZfEwtjSWIrFrsZqCj8Liwhg4T4x4H9b40cNV6KuuzC4f57766oWZXy94Tv18Tczz+aSQOE4KyGEUJQvOu+iXRIfAhdt3ET3TzMtNvnzout9o899YIUDDu0D6IFn34gt92r49f2riuU//HXSuniorI+v/3xV1ncp1d3+uA9ZducWv/pxx8WrhHS1GSt7gFCGFUtTnU7GjP6Dnr4iWcl79+WrzCJoFvTNanWyL17dtUsZj+Z8y619mklvrRcopVr1lNkTKwm6JpiTeeFiwu20P7i40V6/x4STp8hBwflhcqwIYM0ZPzvigXdwAA/eniCYv2iFRqJ5OflU/ThKIo9FiPFULUKWxmzK5UO3TuQk5uhewO13tn9Z+j0ttMy2e2Rsn8nanlt7x1GhWldZJxPr1TQvWvSaDp/5px82ZWclExF4sXFyYg4eTmLNbDVrl87fyEKwGpXg4oICIAACFwjAkVpaRQ1UDEgsPD2oKKzqXIm1kF+wjXBDXRh0bfazAJ/+5mcR43R0ilzZlLS629rad2IdWgwtfvrb7Jq46ebLeOFyckUNWiIjHcQ4uzpl6dT1mb9HS4tnn2SWn34qdY278QxirplhDY/tSDw158o7r77ZbJTagpZuJTt2spcs4pOPjhJrSrvvMZO8Ul6ebqJxFen05UVq8n7rRmUdfCAjOuWt1nwObk/8rhull6cd+uou4ns7e1o46o/hCiqV6XShK6oy8JubUOhjlCrK+Zyv7nCXVtUbJwcokOw/s4h/nz97Euvy7Kxo++k3/9YIePqj+B2benLj98nJx0jlj/+/pf+XfcfdRSH/X6z4DM9Ywt2+6D2d+/dd1GPbl3UrrR7dnYOPSI+e6th3D130fNPP6EmcQcBEAABEACBRkUAgm4DeVzsm/Jk5EkhUEQQC7pq4DfLrQJ8qEPXDuTWwjSWm2rf1b2ziBzaK0xel1IuUsTBCEo6mSjFlFNRJ4kvZ1fhB7RrMAUEB2hiCr8tZ7GKA/sD5dAuKJDshbUEu2HYISwz+YOcscCWoqqYy+XOwn8pu2xYs2EjJadcMNakWnm/LVM+PLJFpK6Yy53wG/sbBw+Qgu+OnXtNKuiydQWLucyFLSs+F9vTHIUf2WsZrCwVKwj1rjsXa2trPZFRt6y6ca+WnsSXsXDr8KFS0GUR0xRBXYt61+2zsjWppzHrWn+oLx28vRUr0oyMTK07U63plRenGnCureUIC5/sriX1XKqeNW7zls2l8NnK30dbR2WRvfOFdZUIIWNCyS3Q9H6OKxvbWFnL1l7EF+8aOHlc+L4+GiP/dqZfSqe9/+2RL5pat21DoT1DydG1cstjY/0jDwRAAARAwDQE8iLLLFidh95Atv5t6dw7syhfGC5ciPmWWr37BmXs3UPp/6ylS6tX6gm6F1etlJNoMXUK2bULJnPxWSlzfzilfr6Q8o9F0pmXX6SAX5YbTFR3TFXMdb3vbrIPCaECIcpyextfX61d7tFDFH37rVLMdRjSn5rddRflREfRhfn/08RcFpB1xVxubB3QltrMmyv7SfvjDyka8xorCiXiBSSLuRzOvjWTuE+fj2ZTsfg8fOGHHyST01OeoWYTHyEzsVvJWDh6vIxnR3EORU0PF163bh2xuFtba90OYg4sLLNYukq88O7YIVha3fLZAnPnLZD5nh7N6faRI/SWwy/G1cBi7g0D+8tdSGywwa6s2PL356V/0uPC6lcNT4jdZyzoHhfnGmwUO5iGie8JHHTF4dtGDhcirXFB/GR8vKyv/mhnwvMh1D5xBwEQAAEQAIH6ImD8k0J9jY5xNAJpyReEALFXS7s1d6P2Qhhly7mGaGXG4nK/Ef2JhWi2JI4+FEWXLlyi9Mvpch2uwh2DuxCMOGzdoQhBLVt4yEPOOI+F6hsH9ZeWjpu27qhQ0G0rrA/Lh+aCDYcr6enli6qdjhGHTHFg1w/xCYr1oW4niWfPy2REVLRudq3jEyc/o1nMznzz1Wsu5vKCRgy/QVp8sHsMdjNxgxCzw4RLAbZKNbZlrTYQ2GJj1dr1dOjwMTp77rz2LLPEFkwOaaVb92ozBret6ZrsSrdg2upsxVQZ2Ahxm4PqE1omxI/arolfcPQWluumDlv/2aIJufbC0rdtWJC8rKwVAb8q46VFpVDUighZtdeUireRVqUvU9exFNtt23VuLy9+GcYualRf43y/ItwyjLhvpKmHRX8gAAIgAAJVJJBTKuiyUOr3zY8k3sRJQZeb+3/3P3Id/yDZ/rVcCrolRYV6vbZ+dxbZ9e5D5rZlh3Byffv2IZTw9LN0Zfk/xG3Ki5+5Ece0fgrEDqMO4bvJtrNiVMAFLafPoJJsxQUUtz81+VEp5rqOupV8v/9ZG8+xWw+Kf1Sx4HTuZ/jfP7tefYgvDuk7hYsHERyEi4eKQmFCvFbkNOIGChDuvcydlN0xdqFhFDd6rCwvEru4LIVLhvKBP/smq+4WRGEHYalam2AKa122yn1RCO7vvv+xcNH1rzgfYy/1FAYc7NogQRwu69vahz6a9SbZlttdGBlZJug+99RkGj92tFzKA/eNEWdLvCQPp926faeeoMsv2ic9OJ4WL/mZPpv/tfTJy5/fn3tZsfRlUXjG9GcrFLmjYpTP/SozXaMRNQ93EAABEAABEGgsBCDoNtAnVVxUTEUFRVRcUkwW4n8NNfD85DzFfCsK/23eJovai61TupaXPsJ3Kgf2BZqekSGtb2WGzg9XVxedlBJlAYdDcal/WCW3+j/Zso9P3lUDH0pWUcgT29VNGXQFy48+nU9z339bWjOYcozq9jVQ+LNli+j1G7dIq2TVrzD7aH3y8Uk0XJSph4BVt2/d+qfiE6R1si4DLlcttnXr1jZe0zVZlB7mYWGp/NvjualB/f0rLCz7nTfFmnxbt1KHqLN7UXGRtGhlFwVW4n9VDfsWKS9lAoYGkGdnwy+YVe2nrusVC1/M/O9a1y9wXY+J/kEABEAABConkH30sKzgfvc98l5c6uOUE04jFB/whZcuyjKbVq3lXf3hMNi4tavDYMUyU61X/p599KiW1fbHn8kmJFRLc8SypbLbhuNZG9ZS7v4jHCVfYZGrKx476oxvH9ZZ1jH6Q7hByti6VRbZhXQ0WoUzc6PKrGvbfPqFJuZymU1Qe77JwJbIxkJqapoUSNWyLmEharRW99pa6wb6+xEfiLb/0BEpOK9cvU7O585bb6ZXpxkXWA8dOy7rDOjbSxNz1UWw+y/uK0bs8isfHhCW1r8u+1OOM3feV7T2v03SCph3Ab77xsuVflZNF/6YWWDmYGFhTv5+ZVba5cdBGgRAAARAAAQaOgEIug3kCTX38qB+N/eXW6PZ0vXKpSsUvnkv7dsSTi3beFGwsNZt0cr4NvVrsYQU4beSLeHOie3cuuJJM49mFCx8carWucnCpUCEODyKA2+h4stY2Bt+QNs2pVtuTma6SZPGzc3LhPJ3Zkyn28WHzvoKd4ixhgzqRy+8/AZt2rZD+g1jf1/XMvBhdew7N0YI26vXb6TwfQfomDisgkXv196cSTHCqmHqk4/WeopvvDtHWuCyUPzqtKnUtXMncfiarex3rxjz8anTaz2G2kFt12RWxd8/U6zJxaVi/7XqempyHzbmJjoefpzOJZyVvnNPiMPQ+OJdAEGd2xEfaqhaHxvrPz3xCh36/pAs6v3MAGNVrmke+wZmdwvsGzgnK0ebCwvv/sL1C/89QgABEAABELh2BDL3KDvQ7Lspu1DyxKFgHOz6dCcLd8WFT84JRdyzbVcmanKdoiuX6fKy3yg3MoLy4k9RgfDHy6FQ7AjjwC4Lylvncn76rt18I6/XphuIubJA50fyoq9kyvOFp8m8dD5qsYVbMzVKdh0rFmoLz57VfO/aBFcssuYcVyyHnW4ZStaB+j5lCxIS5Fjsg9fc2dCggQvbBvrT0h//p83JlBHVWnfKlClVPjCNz/pYJA7eZYtZDuzuoG2AL+3dd0geLLxi1RpKT8+g2e/M0PuswYeoqQepjbrdcBeNW+lnIjc3V4MlOjo40LNPPkazP5pHf/7zrywPC+lAc959ndidVmWBD7zlCwEEQAAEQAAEmgIBCLoN6Cm2DmxDfOUIH1SR+yPkAT+Fwv8UCzF88RZpv/b+0hWDg5PxN/e67hnys/PJzr3MsrC2S83KyKKog5EUHyk+UBcUaN1ZCmvGgA6BUjixEz60dAP7x1UDH/xVPiScSZJb1zdv22VU0C1f35Rp9jnWThy2xpa5Fy5eqnHXquisuguoSkdvvjpNbgfjwxh+WfoXvT/3cyFshon5BFaleZ3W4e1n6hY0tjz94NMvpRX136tW09NPTNL7QF7difDBaiwSc5j19msU1lH/S0+ScL+gBn5RwCcfmyI0hjWZm5mbYqkGfTRr4U4Dbx1ERcJ6Ne54LEUdiqTszGzpIoV9zYYLVy+t/HyEP91gcvdU3KTodnLwmz0y6dXDm1r399MtumpcfX75mXlXrVudCvy7cSb2tHT1kpaifLlX27uL9bKI6xOgb+WlluMOAiAAAiBQfwSKhUWkav1q21Gxks2NjpQT0HVhkLl/n8yzFX5y1XDx268p4fGn1KR21z1YzdHIwVdFly9J/7rcwHnkbVo7YxH2acu+ezm4lFoL69YrOJekJW3aVfyCMDdacUvEc7PyaaO1KR/JOqy8IHUdNqJ8EeWeUKyKnYdUbn1s0NDEGSzsBgZW7fPo3/+u1cRcPlxYdR01fuzdtF64M5vxzvvScCFC+LztKNx4qSH2ZJnlbZ9ePdVs7X6u9JwMv1JrWq2gNNK/Ty8ti0XfT+a8I/34apmIgAAIgAAIgMB1QACCbgN8yCyKdh3YTV5JpxIpYv8JSktOo4L8Aoo5Gi2vrgO6SZ+R5aevK+CmHDlLLq0N32yXb1OVdPThKDq4/YBeVXmokhBOWAyqKGzeulMW8Xaqz+fONqj2zfc/0RcLF8sPe3x4QvnTcQ0amDgjRBzkwIIuH+Lw0P331kis9BAHPXDgA85YsPRorlibVDZV9QCLqVMmCyuGgxR3KoFe/r936KdvvyJ7O31RvLJ+6rqMt6JNfniCFHTZRcKZxCR5WFxNx9X1O2trY2vQzcp/lS16BgUmzGgqa1IP0UtLU7apXg0Ru49Qfc1eFrsAjgsrXf77wn6wE0+ekZeXOGRs0B1DtK5yL+XQ7s93yXTfZ/pXW2B3aKlYHcdvL/vipnVei8ifXy/Xe6lkZWVFASHipVK3DmRrb/h7VYuh0BQEQAAEQKAWBPKiFPGWrXHN7BVjhOwjigsG+9BOsufi3BzK3q4YANgEK6Jp+h9LNTHX+53XyX3CJLLw8hLnSigvP2NvH0EZazeRfecuBrNTx+QCO+EDt7JQmHJeK7YUO4fKh9wjiisG6yA/smjRonyxls49roixjn37kPiPpZavFxEvIzO2bZdZdh3D9Io4kXnooMxz7NLVoKw+MvhwNL6qEz79cpGsPur2WzQxV20/sH9fNUq7wvfrCbqqm7MAvzZGP/tHRSu7+4wdDMuH0j5f6jOXB2BL3+ycHHJ2dtLGQwQEQAAEQAAErgcCdWMSdj2Qq6c18gn0w8YMpzsnjZJihXqQEVvxGgsWVhbk2bWlLDr43T66FKdvvWasTVXycjKV8Xh8Fk14PkPvvqlSMZctVvmALQ79hX9WY6FPL+WDNgt9h44oH4aN1aurvIcn3Ce7ZkH1ky++orw8fUtC9vn7sTgJed8BxaLC2DxUX1xctnjJT3TlirIN0Fjd8nl8QMT77/yfzI4/nUgffvJl+Sr1ll60eAntER+4efucGoqF2Ldm/SaZdBcWEJ6VfJlR21R292rpqRX/8fdKbSy2uPz2h1/owGHT/g40xTWpAL1LWbLF83bx74xfiFQ1uAp3C/1vHkBjHh9L3QZ3J0dnR9m0/N+VQ9+Hy3y3IDcKvDm4qt1r9TyClS+/l2KEgPzbIelvWyusRYT95HLwEK5qBt02mEZPHkNdBnSFmFsLpmgKAiAAAnVBILf0QDSn3mWfAzP2KDs/VIvd/JgoObRt906aq4GkD+fIPHaZ4PnK62TZqpUm5hYmJkoxlysYE0ZzTxyTbfnQMTPxwq+yUCRcJajBwkF5Camm+X7h159k0rF/P91sg3hWqUjt2KWbQZmaUSDmXXQ2VSatgw3/m5q+eYsssw0xFHu5gP/bxy/W1as6O8Nkx5X8qImYe0G8UM4u/T7So6sizusOwZ9x7Ut37l2+fFm3iFTB1tjnyjSxa277LkXg7yt86eoGHu+5l16XvnU9hUGF+hn8q/99r1vNaJwPrz0vDptTLz5PAAEEQAAEQAAEGjMBWOg2kqdnK3yMdu7bRV7nT58jdnNQURg4bQgtu/9XOrXpFC3q/QU5eCkWEbd9Por8hihbqApzCmjp+B+1LvIy87X4svE/kYW14l+WXTjct3wieft7k2cbT2opLPiqGtgfqhp6dTdubcBuGNTDsLbu2EU9K6in9mPqexuxlYtP1mULgx9/XU6r1/5HIR2CpTsEFnNZZOUQJny0VRSaNXMjPqCB2/+6bIW8WPzk8Mev3xk97E23r7aBAfTKi89Itwt/rVxNvXt1o5uH3ahbpdrxd2bPpVPi1F81qAeQfSAE48U//Kpm0/+99BwFBvjLNB9et0B8IOa586nJdsJSeMfucOkSgys8P/UJgxOKtY6qGGHfZveMuo2W/rlSclr/3xbqLrZLRsfEStY8tjrXKnZZabWmuCZ1wT26daWWLTykZfgz02bIf0c+3srLHPaFbMyqRW2r3tl3blBoO3llXEqni6kX1SIqEC5b9nyuWNj3mzqAzMXhIdUNfje2lS+Ykg+ep5VPrZAX/z3yDPGke36boHV35McDdHy5YrHFmSlHkmXZ4V8OUWL4Ga1etwd7UPtRYdSlf1fybe9HNuVOzNYqIgICIAACINAgCKgHotl3Ug4UK8nOopzd++XcrIOUz1a5J07ItFPp1vvi9CuamwbHfgMN1nFu9jtanm17fddNXJB9TLGqdSj12atVNhIxdynzVZt9KJycfcp2neXs3K65Y7APMxQsdbvL3KH899I2NFQ3Wy+eH6X4CZZuGbxa6ZUVntfxwdte34+wWpHdFjzy1Atqkt4S5z/cMnyolq5JhF0rsJhbVRcLumPoGgDousxS60SKMzRUwTcsVP85HTuhiPiHxcFo3I+uL3/VLy67Uhg0oK/anTS6mD7jbTp6IkIKxfM/nUMXxM64x599if5d9x+Nu2cU8QHMFYW/Vv4rjTTU8t+XLCI/34rdY6j1cAcBEAABEACBhkqgYlWwoc4Y85KHpFWGIXBEexrz032058sddGbnGco6lyWrFxeUvYkuLiqm09vKBD/d/pL2lPkLU/M9vCveZqbWKX/ftVex7mORzl9sqTIW+APcjYP600rh8oDdM7w49UlZzdxCEZRJCMrlgxkpwpJWp3yFaqbZ1UKIEDBnffipFBVVq2LuhsXmoUMGUnBQxR8Qud5zTz1Obq6u9O/aDdJ9gipK8nZ2NViU+kjlPsuHsaPvpB27wqVF86tvzBQnBXeukuuG8v2o6ZjYOM1XrZrHdz7gjC818BY1NbAVNW/f57mrlhFcxvOdJCyZR940TK1aq/tzTz8hrEyK5UEWPNY64WONAx8UN/qOW2ji41NlWvW/KhM1/FHdNak+qNVnpW7t1B3erPQ5qnW5rDZrUvtT3XDojlVZnC1f/jf/E/pt+d/075p18rmpWxjzhXuW6gYnN2fiSw3Hlx6h3Ct58oVQsBBRaxJYBL5v2YO09T3x72JjLKUnpMu/R1kts/W6S0+6bPTvEf/tUv9+cYOgEcqXf3YdgQACIAACINDwCWSGK58FbdsrrhTyo3WscR1Ld4eUuiuw66S4TzCztdMWlr5pAzkOv1mmS8QuqpS579OFr7+TaRZGLb29tbpqJDN8n4was95V66h3S5/WapRS/reIWCC2EoeV5YTvodjx92pllfVVdOEC5cfEy7q2lRyIll168JsxH7l5ERGyvVxTa19tXN1IdNxJ3SQFlb6Q18usRqImVrm63bOLMbbAZdF2+V8r6dabh4nProobssSks/TWrA9lda7Tu0eZ5XJGZqb2WZTbbhEGHTcM7C/rbtm2kxYt/kHGJ4rP5xal3wd4F9Jrb82mcLFjjvv73xcfU2ufVvIa2K+P/PzMxhkLPvtAd4p68cioWL00t0cAARAAARAAgcZMwExsdS5TnBrASn7feUXOYmy/sjfmDWBamMJ1QiA9I4POiIPaeFsbW9629PQ06turqeLgPwe8Fe2COEWaPzy7SwYtyMbGxuRLvijE3CSx1dGa/Z/6+9cZ56a4JpM/jHIdFomXPwu6fSLF1KHv3kQ9plS+1bRccyRBAARAAARMTODwYWUXQ0iIvqWjiYcxaXfsG/ews/J5vvOFVOlO4fIvP9Cphx4hj6cnk8/HX8jxYm4ZRpkbtlLw5o1k12+AzIt/5AG69MPvMs7+d+3FIaoZW7dpwikXuIrdUf5LfpF11B8lWVl0yM1NJkMOhJNNqGIZrJYbu6fOm0uJ0141KGJxVXWREHbqlHT7wJXYRcSZV6Zp9YuET9eszTtkWrp5ELuROFi3bk2tP50v4/xDXZPPnPfI4/mXtHyOXJj/GZ15bjq53H07BfyyXK9MTcz68DPinVxq2LHhH/HZqXKXEmpd9T5tmjLv2oq5an9//L1K7jBT053DOsrPdSy8quHLj2fr7cA7dOQYTX6mjB/XY1+6HE7GK8Ymd995C01/7hm5Y45dI7w580PNAGDxgk8oNER5QcBtTok29z40maP08ey3aUC/3jJe/sfocQ9rQjLP8+sv5pavgjQIgAAIgAAINCoCsNBtVI8Lk61rAs5OTnqHNtT1eA2tf7aKZT+3ur5u62qOzYTlNl91HZrimuqaWezqSM0yNuz+Mquauh4X/YMACIAACDQdAgXxp+RidH3j5pYekqa6MCgRYh2LuRxsSq14Oe4zay6VZGbR5T9XSRcN7KbBWri/Clq1gi4u/53SFv9Ejl0Vi16ur4b8U3FqlKzattPilUWaP/WsPMjs3Ny5UsDl+bqNGEF2ws3CyXETiA9E07UEzj12VHPFUL5fPqhNDc0fm6hG5T1r9155t+to6JZB5VKZD17efaWGYOFaoLpiLrc1lZCrzmP0HbfK6LwF/5OWuoePKm4lOJMPRH72ycnCBVSZGwvOjym1NOY18MG7L7z6pibkspuFO28dQU88MlGKuVx/3oKvNTGXxWFdMZfLeRcgC8DLV/wrDlr+xqige0TMS3eHGlv/IoAACIAACIBAYycAC93G/gQxfxAAARAwMQF2ySJdtAiXJ5bWeO9nYrzoDgRAAASqTaAxWuhWe5HlG4hdQwWn46kwJYUsfXzIqpzf2fLVTZEuyc0lM1tb2VXS9Oco5bP55PXGq9Ty/942RfdNtg/e1ZUsnlOq8GnrJFxptGrlRXalHMsv+p33P6aVq9dJEfblF6YSW+DGnTxFFpaWwlLXl0zhcqv8mC//37u0aZtiRT3mrtvppeefKl8FaRAAARAAARBodATwTb3RPTJMGARAAATqlgD7vq3JIWh1Oyv0DgIgAAIgcF0RELuGrHyFSyZx1VkQLrZICIlqUMXcvKgIKeZyvsvwkWox7hUQsBKHNfu08pZXBVW07BMRkTLervR8CvaTq8a1SiaMJIgDjlUx11cchjx1yqMm7B1dgQAIgAAIgMC1I1D2CebazQEjgwAIgAAIgAAIgAAIgAAIgEC9ErgkfPqm/f4rtXj4UbIJ7kBmwidtzqGDlPjWG3IeLaZOIbtefep1Tk15sBxhAa36yW0XGFAvS10mDmxTw8w3XyE+VBYBBEAABEAABJoCAQi6TeEpYg0gAAIgAAIgAAIgAAIgAALVIpB16ACx31td37dqB+6T7ievt2aqSdxNQODkyXitl4AAPy1el5GnJj9Mkyc9QBbmFmRvb1eXQ6FvEAABEAABEKhXAhB06xU3BgMBEAABEAABEAABEAABEGgIBDyfeo4cunSj3OhIKkgVvnpd3cjGz58cevcl2649GsIUm9QcbGxs6MFxY8nB0a5CH7umXjBb5NoSrHJNzRX9gQAIgAAIXHsCEHSv/TPADEAABEAABEAABEAABEAABOqZgFVAILmJC6F+CLQN9KenxYUAAiAAAiAAAiBQewLmte8CPYAACIAACIAACIAACIAACIAACIAACIAACIAACIAACNQHAQi69UEZY4AACIAACIAACIAACIAACIAACIAACIAACIAACICACQhA0DUBRHQBAiAAAiAAAiAAAiAAAiAAAiAAAiAAAiAAAiAAAvVBAIJufVDGGCAAAiAAAiAAAiAAAiAAAiAAAiAAAiAAAiAAAiBgAgIQdE0AEV2AAAiAAAiAAAiAAAiAAAiAAAiAAAiAAAiAAAiAQH0QsKyPQTBG/RLYG7OHiktKKNAzgDxcWtTv4BgNBEAABEAABEAABEDgmhPYvn07rV69miwtLcnNzY0GDhxI3bt3v+bzwgRAAARAAARAAARAAARqTwAWurVn2KB6KC4upvu/mEATvnyQtkdsa1Bzw2Tqn8BXaxfQtO+ep60nttT/4BgRBEAABEAABEDgmhHIy8sja2trKiwspNTUVPrjjz8oPj7+ms0HA4MACIAACIAACIAACJiOAARd07FETyDQ4AjsP7mPVhxcRQkppxvc3DAhEAABEAABEACBuiMwdOhQevPNN2nq1KnaIAkJCVocERAAARAAARAAARAAgcZLAIJu4312mDkIgAAIgAAIgAAIgAAIVErA09NTWupyJSsrq0rrohAEQAAEQAAEQAAEQKBxEIAP3cbxnLRZlgjfuAdPHSBHW0dq591ey2/KkfTsdDqReIJOnY+jtIw08mrmTV39u1JAy0Cjy87Ky6Ij8Yco+my02GZYQP6iXlibMAN/wrn5OXQk4Qg52DiQrZUtbT62kZo5N6cbQoeSlfA3t/noRjp94TR1D+xBvYJ6a2MdOLmfCosKyc/DnzYe/Y/yCnNpSOiN1KZ5G9oWsZWOJRwjvxa+NKLrSLIwt9DaqZHc/Fw6dvooxZ6LoUtZl6itV1vq7NuVWrga+js+m5ZIiReTqJljM7lebnPw5EHZLrhVexoYMthgjP1x+6iouEgOx7w4xKeeJPatrAZLC0vqFtA4/OhFn42izNxM8cy7kZmZmboE3EEABEAABEAABKpAID8/n/ji4OHhUYUWqAICIAACIAACIAACINDQCUDQbehPqHR+FzMu0qr9/9AvO36lmJQ4mnPfrOtC0F1z4F+a8evrlJ6XYfCkHhxwP71+z5t6+RGJx+mpr5+iM5fP6uVzYt5Dn9DIbrdq+SzWsr/h8qG7b2ch8jrS1ugdWtH8SZ/TTZ1HyPS9n42Td2cbJ21e81Z/QXf1vIOWbP9JazMp4TC9OnqGlubIUSHkvvj9C3TqguGWx88e/Jhu6X6bXv1/wv+mj1Z/Snd2vZVcHd3o+20/6pUPCR5I8x9bIARoay3/vnnjtbga4Xnpzo3zYz6LVosb9P1owlF65dfXKKhFII3rP55u63EbuQkWCCAAAiAAAiAAAlcncPZs2WeiVq1aXb0BaoAACIAACIAACIAACDR4AhB0G/AjKi4ppvCYvbR89zL6c//fejNt7tL0LSyW7viNXvv9dbnusFYhdHOXm8ndqTmdTD5Jv+78Td51oVzKvER3fDhKZrUQ9R4a9KC0vP1X+JDdL8TVqd8/T0scXKlv+/66zWR8QFBfCvAMkKIn1+Xw8KCHhAXvIdn2rz1/aoKuLBQ/XOyc6MGBD9ASIbKy4MyC6YjQm4T1tD0t37eCFm/5nqbd+RJZWSjbGyOElfHouXfL5v7NfWlcv/ukpfXm45to3fGN9OySF6RQaWx+7AeXw/g+Y8nbzZt+2/W7FK03R26jtQfX0G1CTFbD63e9RgVFBTL507afZL0bOwymXm17qVXIWkcA1jIbaKS5sJrmwC8y3vnzXXmN6n4Hjel7D/Vo25PMzeA5poE+OkwLBEAABECgARBITEyUs+AD0uzt7RvAjDAFEAABEAABEAABEACB2hKAoFtbgnXQPvVKCq3c9w/9sPUHPUvTfoG96e6+Y2hop2HSTUAdDN1guryceZneX/GBnM/dPe6kd8fN1LNCfWzYZNokRFDdsGTz9zLJlrPLX1xOLd28ZPreAePo0fmTaPfJcPr83y+MCroLJn9FttZ20k0D17u39xh67e4ZFJ9yim6aOYJ2x4brDiXjs+5/n/q060OWllb06Zp5xCLyF499Kcu2Re2glIwLdCb1tHSVwK4yZi2fKctYPF4weaEYz1am7+l/L834+VX6fc9yenfZe7Ty1VVkbm4oUs4a+y5xXQ6PDX+CHl/4GLGgu+bQWj1B98EbJso6/GN3zG75OzQgeBBNGGJojaxVbMCRwR2H0KEPDtJ/RzbQ8l3LaGfcHvmCg19yqML4bT1uN3Cp0YCXhKmBAAiAAAiAQL0RSElJkWO5urrW25gYCARAAARAAARAAARAoG4JQNCtW75V7r24uJh2RW2npUKwWnV4jdautas33dt3LI0UW/HbeLTR8iuK6AqBNlY2RqvxWEXFhUbLjGXydn4WJAtLrT6N1SmfZyF8tNbGcnLdoTWaO4Ppd72iJ+byWK6OrjSq92i9YVeE/yXT9/cfp4m5nMEcHh32KO1eFE7h8fsp+fJ58nRtqbVlIZbFXA6tm7eWwq+fh69Mt3RVRGG2wGUGuj5cWwlfvhy8S+/BXmU+jQOEf10WdDPzMmWdqLORsl9O/N/dr2tiriwUPx4aMlEKumyFelq4Y/Br4a8WyTuL1KP6KNa9nMHPeUTnm6Wge/ZSkl7d+kqwn97iUl+9VxvTTFjRst/emvzucd/s5/iOnnfK67QQyVfvXymtlNl1xay/58jrti630BjBiC2cdf8dXG1uKAcBEAABEACBpkzAxkb5PMjCbnZ2Nqx0m/LDxtpAAARAAARAAASuGwIQdBvIo45PiaeJXz2qzWZs77vprl6jqHtAj2qLUyxQspjoKFwCGAtfr/tK+mU1VmYsb9e7O4SlajyN+/x+Y8VG8xZM+oKGdR5utKwqmQkX4mW1oSE3CDcL7ldtwuKi6je3W2A3g/p86Jgakq8k6wm6LnYuahHZlQq7NlbKlkRd1wR5Bbma8MsN+CA1Dnbq3bpsG6NqfZslDvPikCD4qWH6D9PUqNF7nDj8rbygG+oTIgVR3QYql+R0xfJGt6w+4pO+mCitZasyFvu//XfGaqrJ715zZ333Ivxi4/Gbn5RWyvviwomFfLZuXnnoX3mte20N+Qv3GQggAAIgAAIgAAJEXbt2pd27d8uXqrNnzyZvb2/q1asXde/eHXhAAARAAARAAARAAAQaKQEIug30weUW5FG+EBDZj665+F91QjOHZlLQdbYvEyqr074h1I1LPiWn4eNetcM70tLTtGk3MyIAOzs4a+XnL52nTuLgMzVYmFuoUbIwV/5JWAs3Chx0LT0LiopIkXCV6lYWykFkFhZKe1ursoPJ1H5UC1a2KlXD0aQTatToPb8wzyDfo9SPrG6BOq5u3vUU538bueLfCP9bQQABEAABEAABEDBOwMrKilxcXOjSpUtS1GWfuh06dDBeGbkgAAIgAAIgAAIgAAKNggAE3QbymPw9/en3Z3+lZbuXSmvDvw+sJL54q/2EgffTLd1vpXbeZVv6K5v2rPtnU1ZuFgV5BRmt9ujwx+nhoY8YLTOWaS1cFvBhZMc/Omqs2Gge+5WtTbAVY3LIzc+tUjdWOuMVFhm6k+Ct/mpQxVo1rXs3M9NNVS1uRldvpLq/YOvpHe/trFrHDbzWN099W3WXC6U+gWvyu1ceQ/TZKFq1byX9uP1nzS0H12G/x3f3GWNg3Vy+PdIgAAIgAAIgcL0QYBcL8+bNk0Kuu7s7DR48mPju6el5vSDAOkEABEAABEAABECgSRKAoNtAHiv7Zu0a0E1eL9/1Kq0+8C/9uO1HijwfTV9u+EpeXVuH0WghWo3oejO5ObpVOPOwNmEVlnEBW6TqWqVWWrm0kOfHwm59Bf8Wypb5k6WWulcb19Wh7KAPPlSufEgTLijUoB6Wpqbr4+7bwk8Ow64w2D1EdfnXxxyrOwb7xCW+qhFq8rvH3V/MuEjrxOFvv+/6jXQtnINbtqMHBj5AI7vdQs72ZVbY1ZgSqoIACIAACIBAkyWwc+dOKeZaWlrSU089Rao/3Sa7YCwMBEAABEAABEAABK4TAtVTY64TKNd6mSxM3TvgPnkdSThMf+5eTj/u/JUOnjkqr9eXvUlfPTKfhnYadq2nWmfjt/duJ/vmQ8wikyIouFXlWwNZcA5rFSLFvv+O/idE75F6c9t6fIuWbikOmqvvEKDj03Xj0Q10U+cR9TIFFztF5LyUebFexquLQf47sp6e+OYpva4niIPvRgs/06G+nfTykQABEAABEAABECgjcOKE4uaJ/ehCzC3jghgIgAAIgAAIgAAINHYC1XPO2thX2wjnz75e37z3HTrw/gGac98sYitdDleyLhtdzdYTWyjo2XbyevprfRHMaIMGmskHqvFBWhymL5lOCakJejM9eOogzf5jpl7e/cJSk8Of+/+mHRFbtTL2X/vp6s9k+u4ed5KrQ/37Fm7dvA2N73uvnMPsP2bT0dP67isKCvNpjbDKfnfp29q8TRFp1cxHdrPy4EpiVwUlJSWm6LZe+7icdUWOx7/7/G+A/y28MfZtiLn1+hQwGAiAAAiAQGMjwO6mkpOT5bSDgoy74Wpsa8J8QQAEQAAEQAAEQAAEFAKw0G0kvwlOdo40uu8YeUUkniAbS+PuD0rEQVFqKCw29CWrljX0O2/nf2/ce3TvZ+Ok24lh791EfQJ6Cl++7hSXfFLmDQjqq7eMO3reQd9s/IZiUuJo4lePyvq21ra0OXKbVu/x4VO0eH1Hpt76HG2L2EZnLp+l0XPvpu5CrPcRgmtq+gU6Jp5pel6GJmKbam639bid5v+3kE5dSKBb59xO7MPX07kFOdg40A/P/mSqYeq0ny5+Xeifl1Zc1Uq7TieBzkEABEAABECgkRFQxVyeto+P8oK3kS0B0wUBEAABEAABEAABEKiAACx0KwDTkLM7+IRQQEvFerX8PM3Myh6pRU1O+Crf4TVMdwvoTlve2Eg3dhgsZ7H7ZDitOrxGirksTN7e/Xa92VlZWtNvLywltsLlwPVVMZetO9fPWEv+Oq4P1MPMrHT8wFoK/8IczI2wY7cOHPigOg5m5kpaZV6i06aMvVKH67MY/c9rq+jhQQ9xkvYLdxorDq6inXF7pJjLc3xosFImK4gfap/qXc3ne9kYurn68SDhumLp87/THd1uk/NmH77sg5bZNJYQ6NUWYm5jeViYJwiAAAiAQIMhEB8fL+fC/nNdXOp/d1KDAYGJgAAIgAAIgAAIgEATJGAmtmA3qD3Yv+9UtleP7YcPnk3w963GS8oryBNuF+IpIyeDmjt7kI+7T6UHi+Xm59KplJNUUFRAvh5+5GLfsH6f+GC0pLQkSklPIUdbB2rp4kWujmUHu9UYFBqCAAiAAAiAAAg0OQKHDx+WawoJCany2r7++mtiUTc0NJTGjRtX5XaoCAIgAAIgAAIgAAIg0PAJwOVCw39GmKEgYGNlQ+2821eZBbtaYEvmhhoshCVwG4828mqoc8S8QAAEQAAEQAAEGheB06dPU25uLsXGxkoxl2ffrVu3xrUIzBYEQAAEQAAEQAAEQOCqBCDoXhURKoAACIAACIAACIAACIBAwyZw+fJlWrhwod4ku3btSu3bV/2FuF5jJEAABEAABEAABEAABBosAQi6DfbRYGIgAAIgAAIgAAIgAAIgUDUCxcXFxAKujY0NOTg4kK+vLwUGGj9zoWo9ohYIgAAIgAAIgAAIgEBDJQBBt6E+GcwLBEAABEAABEAABEAABKpIoFmzZjRmzJgq1kY1EAABEAABEAABEACBxkzAvDFPHnMHARAAARAAARAAARAAARAAARAAARAAARAAARAAgeuJAATd6+lpY60gAAIgAAIgAAIgAAIgAAIgAAIgAAIgAAIgAAKNmgAE3Ub9+DB5EAABEAABEAABEAABEAABEAABEAABEAABEACB64kABN3r6WljrSAAAiAAAiAAAiAAAiAAAiAAAiAAAiAAAiAAAo2aAATdRv34MHkQAAEQAAEQAAEQAAEQAAEQAAEQAAEQAAEQAIHriQAE3evpaWOtIAACIAACIAACIAACIAACIAACIAACIAACIAACjZoABN1G/fgweRAAARAAARAAARAAARAAARAAARAAARAAARAAgeuJgOX1tNimutaSkhIqKigyWJ6lNR6vARRkgAAINDgCxcXFVFik/zfM3MyMLC0b79+w4qJi4ks3mJmbkYWlhW4W4iAAAiAAAiAAAiAAAiAAAiAAAiBQbQKN99tytZfadBuc2RFPv9y1xGCBU6Onk10ze4N8YxkZZ9Pp+xGLZNFjO58mGydbY9WQV0cE3pvzCS1fsZImT5pAUx6dWEejNK1uxz/8BKWkpNLMt16j3j27N63F1fFqNmzeSu9/+BkFBQXSgk8/qOPRrt79wsVLaNHiH/QqBvr70rKfFuvlVZYI33+QWBgO8Pcjj+bulVU1aVlS+Bkqyisk9yAPcvB01Pre/dk22jZrs5bmiEdYC5q0aYpeXmWJ2H8jaM3Lq6hlp5Y05qcHKquKMhAAARAAARAAARAAARAAARAAgeuIAATdJvCw7VxtKWBogFxJXmYeJe1JUlZVUvXFlRQWU9a5LNmgpLgaDas+BGpWQiC/oECWFuQXVlILRboEWMxNu3SZ8vPzdbMRrwKB3Nw8yc794qUq1K77Kj5eLalX965yoJTUVIo/nVitQVnInfzMNNnmjVdfpFG331Kt9jWtnBaRTD+OVETnSVse1xN0XVu7an+Xr4gXZmkRF6o9TGFugfy7nNlS+dtc7Q7QAARA4P/ZOw+4KK61jb+KIIIo2BAbCCgqNuw1aozGdJNoTGJMj+mJyb3JTTflpn0pN4k3xSQ3xXRjejPFFnvvICAqIgoqIkoRKX7znPUMs8tSFhZc9Hn9DTNz5tT/zO46z7zzntOOQGxs7Gk3Jg6IBEiABEiABEiABEjAdQIUdF1n5nElWnYPkYlfTVH9gqftWz3/43IfvRo2kOCY1qpc/QYMrewyQBaodQJdu3SW/QcOSuPGJV6Rtd6JOtpgYJMA6RwZLhHhHT1iBBddME6wwOb+NV8efuJZj+hXRZ1YNXOFyhI5LlJaRtu+P3WZbhN7CRZY/I9b5fsb5+hDlV77Nm2kvpdbdW1V6TLMSAIkQAIkQAIkQAIkQAIkQAIkcPoToKB7+p/jSo0Qrwpf/+etlcrLTCTgCQRmvPK8J3SjTvZh2JBBgoVWdQJZKYdl06cbVAUD7xxW9YrKKRk2upNcbyw0EiABEtAEIiIi9CbXJEACJEACJEACJEACZzABCrp18OTv3p4svo18pVXb4Gr1vjCvQA5sSy9VR3DPNlLfy95LN31PmuQbr2l3iAwtlb+uJ2BSucSkHRIXn6hismI8HY34nZ0M78XQDu1LDQ/5167fKFj3iO4mxwuOy6bNW2VrXLw0b95MBvbrI+3btS1VTifEJyTKpq3bJDMzU3p27ya9e/bQh2pknbh9hyTt2iW7klPEt2FDCevQTgYP7C8NjW1tGAvGgHWXqM7i61tyDHkStidJbk6udGjfTpo1C9LFBGM5cjRbwkI7SFPD6zPWYLB+0xZjMisvY2zR0qtHtJlXb6Tu3Sd796VJs6BA6RgWJkk7dhplNktW1hHDazTCEBoHipeX84mjwLi42H7yLLQd4MRLt7rnaZtxPWzaGitZR45Kz+iuxli6y8GMDMk8fFhatWghwcHV95pEH2vr2kPf96XZf979GjVy6qULz+fk3SnS2hgjztUG45x2igiXs4YNNhgckkVLlkle3jE5a+hgI2at/XeCq2PS14WnrHOycyR52y7p1q/0tWvt47r3V6rdtgPbSrvB9gys+VzdzknPliN7D9sV8/HzkeZRpa+3pNgkCWoeKM2Cay9msF3HuEMCJEACJEACJEACJEACJEACJHBKCFDQPSXYXW8052iOxK2JleSEXVJYWChd+nSttqCbkXBAZo35X6nO3Jv0oOBVX6ulJafJtg1xsnreKgntHCZd+3UT/wB/a5Y6uQ1R6qIJk1U8UWcDmHLVBLnn9lsMgbLko1Jg8L/lrn+o7M899ahgQrPc3Fy74jNefraUByTifL7x9nvy8Wez7fJ27xqlhGC7RDfsHDLioz770msyf9GSUrX5+fnJxzNfl0hDpINhTNffdq/a/vqT98x0lWD8efLZl5Tg/eSjD8glJ1+Nx7H/+8+bsm7jZrn7tptkgdHOFkNwtdqtN10rt910nTVJfpn7p7z9/scy5uwREhjYRL7+9ie744MG9JXXX3pWfLy97dKxc81Nd5RKe+Olf8twQ1h0NHefp949uysRGjxvuOYqueeOmx2bdGm/Nq89dOy3PxbIqzPetusjwi58Nes9uzTsLPh7ibzwyoxS6ReOGyPLV642Py/vffSZfPXxTGnXto3KW5UxlWrkFCRAhN6dmCzb1sXJ4YzDUq9evXIF3byMXFn1pi3cwuC73eudG//jFvnz4d/tKCAcjrM3KLZvSlD99fXzlc49oySyZyfxdvK5sauMOyRAAiRAAiRAAiRAAiRAAiRAAnWeQIlKVeeHcvoNACLDroSdEr9um2QdyrIbYOOA6scNbdy6iZz18AhVb96hXFk9c7VdG9Ydv6Z+ahdiclLsdrU0bdZUCcsQeCGA1EUrKiqyTQ5leIuOPWek8siF52rstnglNH7yxRw5lp8vj/xzmtPhPTL9WeXxev64SbI9aaf8MW+hyvfiq/9VXrBWT9NPv5xjirljR4+U/jG9JNbwAv3up1+d1l2dREx6NfnG2yXNmDgMdvklFxqet5FyNDtb1qzdKMsMUQ6ep+6yGe/YHgxA6CwoPC7f/vibErln/m+WQATUgp+1vT/nL1K74y88T0Jat5LvfvxV9XfFqrWKI8o52u03XyeFxjmDvffhp46Hy9x35Tx99tW35nkaNXyoDBnYTxJ37JLZ3/5QZv1VOVCb1x7617N7V7nlhmtUV7fFb5fFy2yCZEV9x/lJ279fcF5+NsR4PAy48dqr5QfjusWkdBB/p1x1haqmumOqqC/uPp6TlS2xa20PytB3bT6+PnrT6XrDrDUqvXnXFtJxTGeneaqa2LpPW/N7OW1zmiT8bP+QxFpv46YBStA9lntMNq3YKJtXbpLW7VqrB24t25T26LWW5TYJkAAJkAAJkAAJkAAJkAAJkEDdJUBB1wPP3dGsoxK32hAZEncZr5cXmz1EmIWI7pHSqWdnaejwSryZyYUNxM0d/I+RqsSR3YfLFXQ7de+swi0kGh5hSVu2yzHDsxUi88q/VsiaBavVsa79u0mAITDUJUNogf+88JTyprV64ULECgoMlHc/+EQJu9PuvFXwerqjtWsTIp+8/5YxMZfNW3nS5ZfITXfcJ3uMsAIJiUmCibtgEFhnGnXBrpxwifzr/nvUNv60bdNa/jvzA3PfHRsff/alKebOem+GCg2h64XoumDxUmlhhIdwp802PD07GR6fsFtumCLnXXq1EnUXLVkukydd7rSpRx6YJhMvvUgdu/n6a+TO+x9SwuFfhtjrTNCdeuO1Zj3ffv+z6SlqJpax4cp5+vjTL1QtEMEffXCa+bCiQ/u28vLrb5XRguvJtXXt6Z4h/IUOgQFhtjKCLrySpz/yT8nNy5Ohoy9UVT10351qArP27drIU8+9bITZSNRNqFAd1fk8mRXV4MaJ4hOyM36HxK/fJkcyj5gt4aFUsBHGJqpPF2ndPsRMd9w4npMvq/67TCUPuXtoqfA0jvld3W/Tt71ggW37dlO5gu7Q84bJUWMMcWvjBKF4IErvS9mnloaNGkpk907SuVeU+DQsX6B2tY/MTwIkQAIkQAIkQAIkQAIkQAIkcGoJUNA9tfzN1iEy7NhmiAzGK78QdLXVr19f2oa3k64xXSWolXsFON1GZdcQkbsP6KGWzP2HJG59nKTu2KNEBAgkWJoYr9B3juki4V3CpV59z/fahYg78iznr0yPGXWWEnTBB+EL/NqWFnSvMUIyaDEX+fr07qk8GBGC4cDBDOmKRMM2bdlqhmW45sqJtsSTfyddPt7tgu4sw7MYBvEWcX4dDZ6n7jSET9BiLuptEhAgZxmTbs39a76k7z/otCl4el560XnmMVzr5xjM4QnqGOvVzFTFDVfOE7xOYTdMudIUc7F/2cUXuFXQra1rD32vqiFmMgwPM5obXuxgo+NDh5yMIXzkaMn3VXXHVNV+4trR5uvjXLyE8Ll1zVZJ2b7b7kEZHkJF9ugk4dERdqFVdH2O661fbpRjWfniH+Ivncd3dzxc6/sBQU1kwDkD1bJnR4oSqg+mHZT8vHzZunqLxBpjbmV46yJMTrDhvUsjARIgARIgARIgARIgARIgARKo+wQo6HrIOcxIP2h4uq4yexPUIkiiDGEUk5B5ojAKcXnIuUMFQjQ8iRM2xEvmwUw5cviIGkegEY6heesW5ng8eaPYGMOyFSuNV8eXSVr6fkOA3F+quzk5OaXSkBDZMQwrOwsJbilJO5MlyyJ0pRv1wiCKtTW8eq0GQbinIbpiAi532CFDdNMxfUeNGOKOKiusIzI8rFSeFsY1DMs6UuIFac3UpVNpAU1PuJZhTLzlTqvsedpXznlqZHjIw2MVE4S5y2rj2qtOX/0ML09tjeChblxbejI9TLAHyzYmEbNadcZkrcfVbS04BwQ0dlp02e9LVXgCHITwrGKBG7HI/Zs6z++sksLjhbL0tb/VoSH3DJMGPp71E9ouvL1gKTheINs3J6oFkxmmp6bL/r375Yo7rnQ2LKaRAAmQAAmQAAmQAAmQAAmQAAnUMQKedTdax+DVZHeLi4qlqKBIik8Ui5fxz1MN/VP9NPpbFw2vkt9530OlRDp4j1rtWP5x66653aRJE3Nbb/ic9BC0hsvQQmFgYFOdzW7dooX7vK9T9+416w5uVTtxNJ2NC6IZrNgSm9TsmLHR3EnIB2+vmrnWK3ueTOHdSd/Q96Cmzs+fdVyV3a6ta6+y/XGWT59DHEBTOlsAAEAASURBVGvQwHZudJqOD11QWGAWre6YzIqqsIFrEB7EAYZ3eEWG+OQIT2CNm1tRGRxP+GGr5OzLMSaNNN5WuCqmMkVOSR6MC+JzUXFJXOBT0hE2SgIkQAIkQAIkQAIkQAIkQAIkUCMEKOjWCFbXK20R0lKGjBsqcWtiladrVmaWrF64StYsWi2tO4RIF8Nbt5UR39FTbL/h8YXJ2hCvEeKItmYtm0mXvl3rjHfu+x99Zoq50x+6X0aNGC5NmgSoV+3z8/Nl0Kjz9dCcris7F5yvr68qX5aAVFBQ6LT+qiRqD0qUPX7cuRDtar1l9VvXU188O7xGZc9To0Y2IT83N08PzW5tFS/tDlRhp7auvSp0rcpFqjumKjdsFHzq0Qcl2/Ck7xTR0Wk1wy8cIduMWLM7jdA2mNxxV/xOtfj5+6nY5Ai7UF6sWTxkW/bGElX3gDsGiU/jEu9lpw3WciIeICUn7JLEjQnqN0Q3j9jAIaFtJLp/tE7imgRIgARIgARIgARIgARIgARIoI4ToKDrQSewfUQHwZJniEkQHnbEJUmhIfTtS96rFm8fbwmL6qhCMfgH2Cbhcuy+NTzD8dzj0qi5vaepY35X9nOO5qj4jLu27ZSCghKvvAbeDSS8a4QSchv5lY4zq9vAxF/5+cf0rtw59SY1iZKZ4GTjp1/mSkLSDvMIJiuLCHcu2OhMG41X4v9aaHstGml9YnpJWTFj/5y3UBW7945bZLwRI9VqCL/gLmvdqqWqav/BQ0oAh8hiNWdhHqzHXdnGBGDaUo3J2dq1baN3y1x7WWKQ5huvazvanr1pKskq3jvmOR32Q0JsHs2Y1A6in/ZG1WPbk1ri/azTqrqurWuvqv2rSjl3jEk/HMgxQgW4YtHdupSb3a+xn/QZ0Vcte5JSJG5drBwyYoEjJMHmlZvU0rxVcyMGeJT6Hnb8jO6alygZcbZ40L2m9C+3LceD+uOef6Tk+88xT1X3M4x4uduMCd5Sd+1RIXB0PRhvVO8uEhEdKV4nvav1Ma5JgARIgARIgARIgARIgARIgATqNgEKuh54/iCKxgzvo5bUnXuMGcxjJSM9Q8VFTNycIFhihvVRs5c7dt8q4O7ftFeatg90zFKl/YSN8bJ+yTq7si2MGLnwxm0bZps4ye6gk50vvv7OjO2Kwzdfd02Fgu7i5avkz/mLzNr6xfSuUNBN3L5DPv3yG7MMhJmyBN1Dh7NUPj8nQvTvfy0w66juRrt2NlEVsW23xMbZTVS2d1+aJBh9dpchXAREXYiSs7/9UQb271th1Xh9HuXQv71paRLdNcosk7w7xe68mQdOww1rrN3Fy1faXTdJO3fJrt173Dbq2rr23NbhSlTkjjG1bGmLvZ22/4CaWLBli+aVaNm1LO0ijFizxoKHZ3jTYEdsknpIlbE/Q5b/vkzWeK+Wy6ZOsKt02euL1X7/2weIXyvnD9TsClh2GgfbQrMcST4iOenZ4h9c+bi9lmpKbS78cYGkp9getuAgHui169heuhkToAWejGFdqhATSIAESIAESIAESIAESIAESIAE6jyBkqnB6/xQTs8BtO3YTs6ZMFYuufFS6WJM4AMvXRiECGfm5e0lwTGt1aH1H62RzKQMZ9lcTsvLtrWH9tEP9Gf05WMqLea63GAtFejWpbNq6fuffpNjx/LNVlesWiNvv/+xuV/dja5RnaVrVCdVzRtv/0/y8myeevAC/c+MmdWtvlT5O2+7UaXNX7REPvz0C8FEVdrQ9qtGm1tjt+kkte4cGa7Wn3/1rTEx3AG1jbwvv/6WXb7TeScstIOMGDZYDfH/XplhTG63S21nZR2Rp597xa1Dr61rz62drqAyd4wptH3JA6IPZn0mYF+RLVm2QmKGjFbLtAcfqyi7eRwPz3oPi1Hi7VlGSAY8pILhc2m1PSuSJXVlqkrqe/Mg66FKbQeGl8TIXvnfxZJ32DXv47Iayc+1fY80btJYeR5PuPUKFbqHYm5ZxJhOAiRAAiRAAiRAAiRAAiRAAqcHAXro1pHz6NvIV3oN7q2WtN37BGEOyrLh/xwpcyZ/KTsX7JR3B/5X/ENs3mQXzrhUwkZGqGKFeQXy9dWfmlXkZ5fEWp1z9Wfi5WObAAkeX1d+c7206dhGgjsES+v2Ja/zm4Xr8Mbl4y+QNes2SFx8ogw++3zlkZmZlaXi6oZ1aOc2j0x4Cd859Ua56x8Pq/YumjBZukd3lfiE7QJPRHfbuaNHydw/5suiJcvljbfel9lzfpCozpFKSN4SF688bkcMsxemLh9/oRr3BiNkxbjxV0q/Pr1lpyFo5pUxIZy7+1xRfU8//4rsTN5tZsMEWLD/+8+b8sEnX5rpjz04rUIvbjOzk427br1RVq/bqM7LhMk3SfOgQDXZFrJat50UdSmptq49dGrz1lgl4usOpqWlq014ht9w27062fAc7yL33327ue/qhjvG1KxZkFxz5eXKy/5L47rFAu6wb7/8SJo4mfTM+sCionjPZY0JcWax5BsPdpLjd9llW/XWMrXf4+qe0jQ0yO5YZXb8WvjLoLsHy4oZy2X126vUor+Xb15ypzHJmi1Uzb71e2Th03+aVR7ebbvG09enyReXfmimt4lpJyOeGKMeriFueUBQ6ckZzczcIAESOGMJZGdny9KlS9X4u3fvLm3btq0yi2PHjsmiRbY3pgYNGiRN3ThJqKud2rJli6SmpkqHDh2ka9eurhZ3W36EoZo/f756CNi/f39p1qzk4V1Fjaxfv17i4uLkyJEjEhUVJaNGjaqoCI/XAIHiQmNSZ4vTg2rCq57U96LPUw3gZpUkQAIkQAJuJlC2Kujmhlid+whgkrTyLOLcKJnw2ZWy8s2lkrIsRc3KjvzFBSUznmOCn92LS8Qxa33aE82a1rJNK+uuW7at8X7LqtAxjmV9Q2Cu0Bzy1LfEh3UsO+6cs+WgEdf2lTfeVocWLLbd+PSM7iYvP/+kjL34CpVubbeeZQKweuXU7fhfwaGDB8h/X3leHnz8GSUQQmyFTbnqCsky/kP/4y9zjXemVVK1/4Dbqy88I9/88LO89ua7Spy0CscIQdG+nf2N3XljzpbYuAT54utvVfsQuiGkzXj5WeWlC9Hby6jXavWNUA3KHJgjzfjvsO2QzqP2jPSTdej1yWS1qlfPkVrJ0cTtSQIx2tEQWgKLttw8mzd5Vc9TZES4fPnRO+qagLAL4bh3z+5y7eQrlEj+x7yFRqgQH91clde1ee0dOZJtTv7n2GEI+NoaGxOEwbxOnod69U6eX6SdPI/6s6CvfWv85aqMSTXo8GfanbdKUGCg/Pr7X4aXdLIpqJ9wvOk6WU73CbvlXUMOzTjdbejb0C6czYGtaZL4a4LK2/9Wm/e204IVJA5/7BxpZAi7W+ZskgOb95vfy9a41PmHj5X5vWz9vm4Y4KtaC+0cVkGrPEwCJHAmEzh8+LB8/vnnCsG1115bLUE3z/ht1XWFh4efUkH366+/ll27dsnQoUPtBN0VK1YogTQyMlLQx5o2iNyzZs1SzUAsr6yg++WXX8pvv/1mdm/37t2npaBbZNx3vNPpNTXOyfOul8AI94dQMiFWcePHa7+W1GV77Er3ua2fDH5ohF0ad0iABEiABEjAEwnUM24mS97F9oAezl5mi2l6xZCmHtAbduFMIQARcLcRH7WgsEDCw8LE/6SwVRPjhzdhyp49cuToUYk0bjgaGd7XNW0HDmbIXkP0bODtreLrNm1atkffIUPATNmTKs0NT8nKTKhW030/lfUXFxdLkfHww/ukR/x1t9wtmwxv12eeeEguHDfGLV2rzWvPLR2uRCWn05h+vec72fz5JokcFymXfzq5EqNnFhIgARJwP4GNGzeqSiMiIipd+R7j/xqPPvqoyg9Bd/To0ZUu65gxMzNTpk2bppIfe+wx6dSpk2OWWtufPn26KehOnTrVbPf++++XjIwMOe+88+TKK68002tqAyL3bbfdpqp/4IEHBF7QFVl+fr7cfvvtxv8tipQA3LdvX2ncuLGMHz++oqJ17njx8SJ5u7NN0L3qj+ukWWdbWKPKDiRrZ6asen2ZMbFnfTn75fMqW8ylfEufXSCZibbwdPvW75PjWcelz619ZfDDI12qh5lJgARIgARI4FQQoIfuqaDONj2OgF+jRtLlZIzbmu4cvAlDO7Sv6Wbs6sfEUpWdXKqZ4ZWL5Uw2iO44T/Du1h7eqYYgDjEX1tGItesuq81rz119rqie02VMR1OPKDEX4x1417CKhs3jJEACJEACtUBg4sSJcujQIWnfvnb/L+WOoW3fvl2JuajrnnvukY4dO7qj2tOyjmNGvPmE77epsdWUoDv00VEmu8VPzZNNH24w97lBAiRAAiRAAp5OgIKup58h9o8ESKBWCcQnJMq0Bx8XxBTuF9NLggxxe3fKHiMG7TuqH0MG9pforlG12ic2dmoING4TIP/Y84hqvIGv96npBFslARIgARKwI1AZT1i7Ah60Y30xsnXr1h7UM3aFBEiABEiABEigrhGgoFvXzhj7SwIkUOMEEG/4zXdLJqHSDXaODJeH/3mP3uX6NCeAOM8Uck/zk8zhkcAZSACTcf3wgzHhZPPmcvPNN8svv/wiGzZskB07diga8HyFF2x5wunChQvljz/+kLS0NFWmZcuWMnLkSBk3bpwZK9+K9qgRZur777+Xbdu2yb59+yTQiJPeo0cPGTBggERHR1uzyptvvinIf80116hYvX/99ZfqH7xyZ8yYId98840kJiYKwhWMGTNG3njjDTXZK2IGwzARHGLs4g2bBx980K7u5ORk+fXXX1V55EfsW/Rj2LBh0qZNG7u82EHopblz58qmTZuMiWJ3SkFBgbRo0ULFvEWZyhrYzp49W/bv328WeeWVV6RBgwZy9tlnS+fOneWdd2wPjhG+Ye/evQLGCLUBL94777xTlUOoBsTf3bp1q+rP8ePHlacy4gZfdNFFiqvZgLHx+++/CyZg69OnjwwePFi+++47iY2NVf3AOevdu7dMmjRJsUJ7iEMML2JYq1at5IILLlCxilVCNf/kHzkm6UZYgwNb0sWvpZ+0HdRBmnSwfyMsJy1bspIzVUuHtpVMGrx3ZYpd64FhQeIX3Fil5aZny+FdmdI4JECy9x6RfWv3SnMjvEOHUeGSeyBHkhfukMLcAgkd2dEj4/jaDYw7JEACJEACJOACAQq6LsBiVhIggdOfQMeOYfLmq8/Lxi2xkpZ+QHJzctUEchERoXLu6FHq5uv0p8ARkgAJkAAJnK4EEGcWoi5it0I8Xb16td1QIYa+9NJLcssttyih0+6gsfP++++bQq4+BmEXk31BMNVxZfUxCIivv/66YBIxbegDBEQs1113nRI19bG1a9eqsATp6eny1ltvSWpqqjrUyAiPBYO4ij7qScggRkPo1HbEmGgWi6NBCEUfrYYJybBAtH388cftQiBAVH755ZdVW9Yy6BfqWbBggTW53G0ItGBuNYjSsG7duklISIh5HKLvU089pcRjHO/QwRbmCenoD9q3GlhgWbRokRJ+Y2JizMMQktFuYWGh/PTTT3ZccM4wbojUsHnz5pnlsAHu7777rmRnZ8u5555rd8zVnczEg/LNxC9UjFpr2Ys+vkw6jCgJO7Hrj0RZ+MR8axa1/d2k2XZpI587R6Kv7qXSds5PkoUP/2V3HDvdroyWXQt3Sm5arjq26o3lcuVP10pAB87TUgoWE0iABEiABOokAQq6dfK0sdMkQAI1RcDHmDhuyKABaqmpNlgvCZAACZAACZxqAhDqIOZCMLzkkkuUNyz24RELgfSLL75wKuhCCIS4etVVVynv0Pj4eOX1ChF1+fLlctlllynvTowPaRAhUR/KXH311RIaGqpESYiiEHY//vhj1TY8bq32wQcfKDHRy8tLebBGRUVZD5vbt956q/Lo/fzzz1U7yAfPXx0DHxk3b95sirloH5OQQRCGqPrVV18pUfOZZ55RfdVC8cyZM00xF6IrPGlxDB6sX3/9dSlh1eyQkw1MIjdlyhTBRHVaCMbEbd7G/zngnWu1F154QfUHgjs8bzEWhGpAOnjBwGrUqFHi6+urBO4ff/xRlXnttdfUGOB9azUtHp9zzjnSv39/Vd9HH32khHkt5KIM+hQcHKy8tXFecN7g1VtdQXfunb9Is6hm0uX2bpIRf1Div9umurf4mfly1bAbpL5XfbUf3LeNDH30LLV9ZHembP5ks9rWaWrH+BPcy3m4iu7X9DC8dI/Krvm7JPbLreLT1EcGTBsoW77crITdXfO2S48b7K8zXSfXJEACJEACJFDXCFDQrWtnjP0lARIgARIgARIgARIgATcQwOv806dPN8MkQHhEmIE///xTianwUg0ICLBrCSIkRFoIjrDw8HAVruDVV19V+/AKxev6sE8++USJgiiDEAP+/v4qHaIqRMmHH35YCaMIx+Ao6EJwDgsLk/vvv18Jvqqgkz8DBw5UqQilAMET/YFwqQ2iJDxNYRBIH3vsMXO8qB8erQjNgHwYN0IQwNMYIjAM/br77rvNMhEREdKvXz955JFH7LyOVeYy/kAkxbJlyxZT0EWICu11nJJSElIAoSAgHk+ePNl8KwiezFrMRWiFCRMmmC3hnCFsxLPPPqvSZs2aJf/4xz/M43oDYrpVmJ02bZo89NBD6jD68e9//1sJxEhA2I3MzEwl5ubl5alxQjyuqgVGBsrl31wtPo0bqiq6T+4t30z4Ug5vPywIrdAiOlilY62309enmoJu71v6V9h02yHtZMS/x0pB7nF5t9sMlX/kU2dLp/HR0tQI7fDn/b/LfiPcA40ESIAESIAEThcCtsehp8toOA4SIAESIAESIAESIAESIIFKEYDIh3jhVrPGhoWo52jnn3++KebqYz179hR40sIQ61YbwifA4LWrxVx9DPmvvfZatYuwBzoerz6OdUVirjVvWduoW4dgQHgHx/EiJi5i8cLmz7e97r9y5UqzOmeMEH/4wgsvNPO4cwOesugn4utq+/vvv9UmhFd4FzsavHzhyQtDSAqI01aDGDt27FhrkgrzoBNwzh0FW4j92nRYBr3v6rr3Tf1MMRdlW/drq7xnsZ27Pwerahvi6sK8/XzEr7Wf2g7oYEtr3KaJ2s/PKgn7oRL4hwRIgARIgATqMIGS/ynU4UGw6yRAAiRAAiRAAiRAAiRAAq4RgKeso2nPW6Q7CoNIswp92IdBJPXx8RF4c+oyEHb1NoRSTOTlaNa4uvBSbd265FV6TNjVtGn1451avV8RRsIaikH3BxO1wdCf3NxcNSkZ9hFiAYKvM0Pogjlz5jg7VK00TCznaIjBC4NwbhV6rfkw8dmqVatUEuLtIi6vNkz+5ihk4xhEdZwjeA87Gs6nu6xZZPNSVQW0bSIZWQcFk6W5w7z9Sm5rfRr7SK7xr0FD20MGr5Pr/Ox8dzTFOkiABEiABEjAIwiU/PJ5RHfYCRIgARIgARIgARIgARIggdog0LCh7RV4V9qyCr7llbN63B44cECwlGdZWVl2h9u0aWO3X9UdLdaiPCZoq8jQD93XJk1snp3OysBLtybMcdyInwuhHFaWuIxjVlHWUdDF8fLMmdhbXn5Xj/k2KR2uoYGvTWw9UXzC1eqc5q/fwFYfDuqYvF4n0/R+0XF7z2WnFTGRBEiABEiABOoIAQq6deREsZskQAIkQAIkQAIkQAIkUFcIWL1rEdPWKjg6G0N0dLRdclCQ7XV5u8Qq7FjrQVza8gzCJvIHBgaqCcysHsSO5XJy3BMqwLFeKzccQ58QgxhhD8prU4eVQJnyhGgcr207YR/Vo7abZ3skQAIkQAIkcFoSoKB7Wp5WDooESIAESIAESIAESIAETh0Ba/gEhGmwxubVvcLr/jt37lS7eiI1fcxZaAR9zJV1u3btzOyIMwux1tEw+Vt6eroKG4FYsghXgAnM4KkLUdcxvizKJyQkOFbjln0di9haGTxz4WmMCefKsqSkJPOQNdyCmciNcgnoUNKYVI1GAiRAAiRAAnWBACdFqwtnyYU+FhUWSeHxQruluKjYhRqYlQRIgARIgARIgARIgASqRwDCpBZTf/zxR0HoAEf76aef5JlnnlGLY8gFx7xV3Q8LCzMnbPvhhx+cVvPaa6+pPrz00kvqeI8ePdQagvPcuXNLlcFYyqqrVGY3JHTv3l3VggneIDQ7Gjx3f/vtN5WMUBDOBGjHMp6+7+NXEg6kNkRW/+AAhSRleYqno2H/SIAESIAESEARoKB7ii+EnPRs2b1kp+xd5Z7/PMyeOEteafOs3bL433+d4lGyeRIgARIgARIgARIggTONgA5xAO/XF154QTIzMxWC48ePy7p16wRCLwyTs2ECsuoYwhLAEhMTJSMjQ+B1C/Pz8xM90RgmZ8PEaDqUAvKgD9u3b1d5hw8frta9evUyJxX77rvv5JdffhH0GQbh+eWXX1YhGVRCLfy59NJLTVH61VdfVZOfaYF8z5498vjjj6uQDOjK9ddfXws9qvkm/EIam41smbVejtfwhGbNO9kmvzu8/bAkfLtFigoYb9c8AdwgARIgARLwSAIMuXCKT8v86b9L7JwtEnVJVxk/oH21e9O6R4g08LGd1r1rUuVYVr6U9oeodjOsgARIgARIgARIgARIgATKJdCtWzeBSLp48WLZtm2bTJs2zYwHqwvCk/f222/Xu1VeI8wAJmKDOHv//ferej7++GO1vvjii2Xt2rXqODxuscCLVQu7yIQYv5dcconKjz/o03PPPafyzJ49W7A4ljEz1/CGv7+/TJ06Vd5++22B1/Cbb76pBF6EpUBsXW1nnXWW9OzZU+/W6XVDYyK1qEu7SPx322TZC0vU0rxbC6nvXU/63jpQIs6Pcuv42o/sKC17tZQDGw/In/f/rha/1n7SsktLufCjCW5ti5WRAAmQAAmQgDsI0EPXHRSrWEdmUoYSc1F84F1DqliLfbFRT4+TiV9NUUv3SbbXxexzcI8ESIAESIAESIAESOB0J2CNxdqgQYkPhzW9sgysZax1Vab8zTffLLfccos0bmzzuLQKkF26dJGnn37a9Ia11ldRO47HJ02aZIZ4sNaDbQixEGfHjBmjBGWkWcXcESNGyBNPPCENG5a85g+v4RdffFGioqJM71hdBuLxk08+iWrcbo7j0g0MGjRIjQH9gkHY1SwxCdodd9whN910k86u1tbzZnfAxZ2q1GOdCK1e/bJnRdOxa5116axnzpERT58tzaJs3tsZsQeV4Hos65iZHZPGwep5lbRRz+vkLa6+0z3ZfnlxmdHHSz65QnpM6SEBHWzhF3LTciU3M9dsixskQAIkQAIk4EkE6hmv63iUA+fsZVmKzxVDmnoSpxrpy18P/Sxr318roSNC5cpvrnd7G/Me+UXWvLtGBt49WEZOH+v2+lkhCZAACZAACZAACZBAzRPYuHGjaiQiIqLmG6vBFiCIpqSkKFEVk6adqlivCJuAScYghGIytrJEVI0Ct0upqakq7EL79u1NUVgfr+11cXGx7N27V4nS6I9ViK7tvrA9EiABEiABEiCBU0Og5HH9qWn/tGx19/Zk8W3kK63aBpc5vuy0o0rMRYZBdw0rM9/xnHzZty5VDsbtV7Gcmke2kNa924p/cElcqTILV3AgNydXUhJ2S0T3SGngzUuhAlw8TAIkQAIkQAIkQAIkUA0CEHA7depUjRrcU7Rp06aCpbIGL1A9wVtly9RkPniaelJ/anKsrJsESIAESIAESMA5Aap4zrm4nJpzNEfi1sRKcsIuKSwslC59upYr6G74aJVqIzimtYSOdO5tsX/zPvnm+i/lSPKRUv0Z/7/Ljbi7thlvSx2sZELukRzZsGy9bFy+QVp3CJHoftHSvLVtQoBKVsFsJEACJEACJEACJEACJEACJEACJEACJEACJEACtUiAgm41YOP1q10JOyV+3TbJOmQLFaGraxxQtgftsaw8WfryEpV18N3DRMd+0mWxzjuUKx+Oelcl+Yf4S/9bBop3I2+J/X6LpK5Mle9v+kaubOYnocPDrcVc2vZp6COIF3Wi+ITsS96rFngWd+rZWS3ePrbZgl2qlJlJgARIgARIgARIgARIgARIgARIgARIgARIgARqjAAF3SqgPZp1VOJWG964ibsEMay0QQxF+AIIog19SyZV0Mf1evOn69Rmk9Am0umCrjrZbr3uvRVq37dpQ7lu7lQJaNtE7fec0le+vupT2b14tyx9aWG1BN0mzZrKhFuvkJ3bdkrixnglSh/LOyabV26SLas2S7ARMqJrv27lehrbdZo7JEACJEACJEACJEACJEACJEACJEACJEACJEACNUqAgm4l8cKLdce2HYY3bpxA0NWGGFZtw9tJ15iuEtTKNgOrPuZsXZhXIMteXawODZl2ltTXs7A6ZN402zb5RZ+b+pliLrI08PWWQXcOVYJuyrIUyd53VBqH2GZidaiiUrvof0S3CLUgpm7C+nhD4N0hx/OPS9qeNLXAkzeyRyeJ6t1FsE0jARIgARIgARIgARIgARIgARIgARIgARIgARI4NQQo6FaSe0b6QVmzwBb3FkWCWgRJVEwX6RAZqsIWVLIaif12sxzLyhd43kZP6Om0WHFRsRk3t23/DqXyhPRtb6YdTcuqlqBrVmRs+Pn7Se9hMWo5sHe/xBniddrufUrcjV2zVXkj9xrc21qE2yRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAArVIoH4ttnVaNQXRtaigSIpPlIRcqGiAKLP01UUq2+D7hkkDIyauM8s9kGMmN2rhZ27rjYZNffWmZO8tPWGaebAaG4UFhVJcWCSIE0wjARIgARIgARIgARIgARIgARIgARIgARIgARLwDAL00K3keWgR0lKGjBsqcWtiJfNgpmRlZsnqhatkzaLV0rpDiHQxvHVbGTFny7PEX+JMz9te1/QrM6uXj5d57ERBaUHVGrfXy8d9pzD7sBEbeEOc7I5PlsLCQrMP8Nzt3CtKInpEmmncIAESIAESIAESIAESIAESIAESIAESIAESIAESqH0C7lMDa7/vtd5i+4gOgiUvN0+2rY2THXFJAk/Wfcl71eLt4y1hUR1VKAb/AH+7/sHTdfmMJSptyP1DpWFgiZetXUZjxzeokZmUnV7aAzfvQK55PKCNbbI0M8GyUa9ePbV3PDvfkmq/WVBQIElbtsv2zYmSc7TEM7he/XrSNqyddDMmRQtqWXFsYPtauUcCJEACJEACJEACJEACJEACJEACJEACJEACJFATBCjoVoFqI79GEjO8j1pSd+6RuLWxkpGeIQXHCyRxc4JaYob1UV6tuvrkRTskfX2a2u19/QCd7HQNITY4prXKnzg3XjpfFG2Xb8e8RHO/cduyBV3/1rZju5bsNPNbN7IyDsvvX821C6sAIRqTn4VHR4iXV4mnsLUct0mABEiABEiABEiABEiABEiABEiABEiABEiABE4NAQq61eTetmM7wXIs75jEb9imvF0h7MKL12orZixWuzE39JHyvGp1mX439pdf7v5Jtny1WU2eFjYqUh3K2pUpf784X233uLqnNAosHWNX19GySyu1mZmYKVu/2iBdLushXt4lIi36Cc9heOO2D+8g0f2jpUmzpro41yRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAh5GoJ4h6JUO0noKOzl7WZZq/YohdVdYTNu9Txp4NxDE3YXtW79HZo35n9q+ZcWd0iyyhdou70/h8UL5aPRMyYg7qLJ1GN5BvP28Jen3JLPYVKOuoHLqwiRss8a9Z3oGo6B/iL8EdwuWiV9NkWO5xyR1V6p07NJR6tfn/HgmWG6QAAmQAAmQAAmQgAcR2Lhxo+pNRESEB/WKXSEBEiABEiABEiABEjhVBKji1QB5TJKmxVxUv+qt5aqVLpd2q5SYi8wNjMnOpvx6k8ALF7Z78W5TzA3p10amrryrXDEXZep71Zcr51wr8ApuEmoLv5CzL0dyDtli8Pr6+UpEtwiKuYBFIwESIAESIAESIAESIAESIAESIAESIAESIIE6QIAeujV8kg4lHpD3Br+lWrn2z5skJKadyy0W5hVIZtJBYwK2ImnWsUW5E6q5XDkLkAAJkAAJkAAJkAAJeDQBeuh69Olh50iABEiABEiABEig1gkwhm4NI1//4SrVQuiI0CqJuSjcoJG3tOweUsM9ZfUkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAKeToAeujV8hooKi+REYbHUNyYjQwgEGgmQAAmQAAmQAAmQAAm4QkB76LpShnlJgARIgARIgARIgAROXwL00K3hc+vVwMtwsTUWGgmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAlUkwAF3WoCZHESIAESIAESIAESIAESqA0C3bp1q41m2AYJkAAJkAAJkAAJkICHE2AMAA8/QeweCZAACZAACZAACZAACZAACZAACZAACZAACZAACWgCFHQ1Ca5JgARIgARIgARIgARIgARIgARIgARIgARIgARIwMMJUND18BPE7pEACZAACZAACZAACZAACZAACZAACZAACZAACZCAJkBBV5PgmgRIgARIgARIgARIgARIgARIgARIgARIgARIgAQ8nAAFXQ8/QeweCZAACZAACZAACZAACZAACZAACZAACZAACZAACWgCDfQG1yRAAiRAAiRAAiRAAiRAAiRQGwSys7OlsLDQrqn69etLkyZN7NK4QwIkQAIkQAIkUDcIFBUVSV5eXqnONmrUSLy8vEqlM6F6BCjoVo8fS5MACZAACZAACZAACZCAxxE4evSo9O/fX/Xr559/lsjISI/q45VXXinbt2+361O3bt3k22+/tUuriZ34+HiZN2+eZGRkyPHjxwVC8lNPPVUTTbFOEiABEiABEjhjCGzYsEG+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"/><use stroke="#7E7C7B" xlink:href="#rect-1"/></g></g></svg> \ No newline at end of file diff --git a/2-ui/1-document/02-dom-nodes/elks.png b/2-ui/1-document/02-dom-nodes/elks.png deleted file mode 100644 index 03177c40e..000000000 Binary files a/2-ui/1-document/02-dom-nodes/elks.png and /dev/null differ diff --git a/2-ui/1-document/02-dom-nodes/elks@2x.png b/2-ui/1-document/02-dom-nodes/elks@2x.png deleted file mode 100644 index e8a15bd5b..000000000 Binary files a/2-ui/1-document/02-dom-nodes/elks@2x.png and /dev/null differ diff --git a/2-ui/1-document/02-dom-nodes/inspect.png b/2-ui/1-document/02-dom-nodes/inspect.png deleted file mode 100644 index 075cf9308..000000000 Binary files a/2-ui/1-document/02-dom-nodes/inspect.png and /dev/null differ diff --git a/2-ui/1-document/02-dom-nodes/inspect.svg b/2-ui/1-document/02-dom-nodes/inspect.svg new file mode 100644 index 000000000..60696ec0d --- /dev/null +++ b/2-ui/1-document/02-dom-nodes/inspect.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="696" height="379" viewBox="0 0 696 379"><defs><style>@import url(https://fonts.googleapis.com/css?family=Open+Sans:bold,italic,bolditalic%7CPT+Mono);@font-face{font-family:'PT Mono';font-weight:700;font-style:normal;src:local('PT MonoBold'),url(/font/PTMonoBold.woff2) format('woff2'),url(/font/PTMonoBold.woff) format('woff'),url(/font/PTMonoBold.ttf) format('truetype')}</style></defs><defs><path id="rect-1" d="M0 0h696v379H0z"/><path id="path-2" d="M142 52v21.429l5.25-5.358L151.625 77h1.75s1.13-1.161.875-1.786c-1.203-2.947-4.375-8.928-4.375-8.928H156L142 52z"/><filter id="filter-3" width="195.6%" height="153.8%" x="-42.9%" y="-25.8%" filterUnits="objectBoundingBox"><feMorphology in="SourceAlpha" operator="dilate" radius="1" result="shadowSpreadOuter1"/><feOffset dy="1" in="shadowSpreadOuter1" result="shadowOffsetOuter1"/><feGaussianBlur in="shadowOffsetOuter1" result="shadowBlurOuter1" stdDeviation="1.5"/><feComposite in="shadowBlurOuter1" in2="SourceAlpha" operator="out" result="shadowBlurOuter1"/><feColorMatrix in="shadowBlurOuter1" values="0 0 0 0 0.0941176471 0 0 0 0 0.0901960784 0 0 0 0 0.0901960784 0 0 0 1 0"/></filter></defs><g id="dom" fill="none" fill-rule="evenodd" stroke="none" stroke-width="1"><g id="inspect.svg"><g id="Bitmap"><image width="696" height="379" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABXAAAAL2CAYAAADowb7lAAAAAXNSR0IArs4c6QAAAERlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAA6ABAAMAAAABAAEAAKACAAQAAAABAAAFcKADAAQAAAABAAAC9gAAAABJFtRvAABAAElEQVR4AezdBbwtVdk44HXh0kiIdEldFBAQpLtEBKSkRJH+wEAx6LpKp0pJKCANKiXSDR8gISFIg5T0pRv3f975O/PNPrlP3HvOvvOs3++wJ9asWetZcy/wnrXfGdHISlIIECBAgAABAgQIECBAgAABAgQIECBAYNgJTDDseqRDBAgQIECAAAECBAgQIECAAAECBAgQIJALCOB6EAgQIECAAAECBAgQIECAAAECBAgQIDBMBQRwh+nE6BYBAgQIECBAgAABAgQIECBAgAABAgQEcD0DBAgQIECAAAECBAgQIECAAAECBAgQGKYCArjDdGJ0iwABAgQIECBAgAABAgQIECBAgAABAgK4ngECBAgQIECAAAECBAgQIECAAAECBAgMUwEB3GE6MbpFgAABAgQIECBAgAABAgQIECBAgAABAVzPAAECBAgQIECAAAECBAgQIECAAAECBIapgADuMJ0Y3SJAgAABAgQIECBAgAABAgQIECBAgIAArmeAAAECBAgQIECAAAECBAgQIECAAAECw1RAAHeYToxuESBAgAABAgQIECBAgAABAgQIECBAQADXM0CAAAECBAgQIECAAAECBAgQIECAAIFhKiCAO0wnRrcIECBAgAABAgQIECBAgAABAgQIECAggOsZIECAAAECBAgQIECAAAECBAgQIECAwDAVEMAdphOjWwQIECBAgAABAgQIECBAgAABAgQIEBDA9QwQIECAAAECBAgQIECAAAECBAgQIEBgmAoI4A7TidEtAgQIECBAgAABAgQIECBAgAABAgQICOB6BggQIECAAAECBAgQIECAAAECBAgQIDBMBYZVAPeTTz5JL7744jClaq9uvfPOO+nNN98cdp3+8MMP0yuvvDLs+tUuHXrsscfS008/3WN3+fbI4yQBAgQIECBAgAABAgQIECBAoK0ERva1t1dccUW67bbb+npZp/pTTTVV+ulPf5reeOONdP3116fLLrssnX/++WmzzTZLJ510Uqf6DvQu8Oyzz6arrroqXXrppeniiy9OZ555Ztpiiy16v3As13jttdfSddddl+LZueCCC9IPfvCDdNBBB43lu44fzX/88cfpjjvuSFdeeWX+5+PRRx9Nhx56aNp1113LAb777rvppptuSpdffnm68MIL0wwzzJDuvvvu8rwNAgQIECBAgAABAgQIECBAgACB9hXocwA3AoRHH330gEf8mc98Jn3pS19Ka6655oDb0kBK+++/fxo9evSwozjiiCPSz3/+82HXr3bo0JgxY9Kcc86Z3n777W67e/jhhzcFc6NiBHAVAgQIECBAgAABAgQIECBAgACB8UOgzykU3n///XLkW221VbrkkkvS7bffnmJl4A033FCei4399tsvxVe+77nnnnT11Vengw8+uAwuRVBqtdVWS0888UTaeOONm66z03eB3XbbLd17771p1KhRfb94LF7x/e9/Pz344INpueWWG4t3GT+bnnbaadPrr7+eHn/88bTwwgt3OchddtklrzMcg/dddthBAgQIECBAgAABAgQIECBAgACBPgn0OYAbX9eOctxxx6VTTz01rbvuummppZZK8803X5p33nmbbj7LLLPkx7785S+n1VdfPe2+++7p1ltvLetMOOGEae65504bbrhheWw4bkRe3q9+9avDpmvxFfpIRVAtk002WVpkkUXSqquuWj085NvRrwUWWCCttdZaQ96XwehA/JIiUn+MqzJy5Mg0zzzzpJVXXrnLW8b5CPRusMEGXZ53kAABAgQIECBAgAABAgQIECBAoL0F+hzA/eCDD/JVtDvuuGO/Rh5B3siBGiVeWhYl0ikM1/Lpp5+mLbfcMt13333DoouRLzgC4d19rT5yCw/HMlz71RerCORvuummQ/IStmmmmabHrk488cQ9nneSAAECBAgQIECAAAECBAgQIECgPQX6HMB977330kYbbZQmmKDPl5ZCsWo3ykcffVQeG64bv/jFL/L0D8Ohf88//3xab731hkNXateH+GXD5ptvnl5++eXajd2ACRAgQIAAAQIECBAgQIAAAQIEhk6gzy8xixeYTTHFFAPqcXwdPFIpTD755L22E4Gz+Jl00kl7rTvYFX7961+nCOC2WmJVbHU1cQS7I4XAiBEjWm2i23ovvPBCnsahu5W33V5YORGrp+Mr9/EzGKXRaOSrUd966630+c9/vt/tDqRfsUI6UnGMzRK/aPju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17o73a/jETwsAm4d8+b2q8GxeFHkB66Wd999tynwWj3X1XasOI6ctzPPPHN5OnLKxgrYas7ieJlbd2W66abr8lTkLY48tkWJ/LORXzhWMhelq+BtcS5ebFZdvXrfffel4bDiNFuEn+cMjn5GUDpeWNdbiRW71WB7b/Wr52OFerxUL17eFwHcLH1Fp2B7tb5tAgQIECBAgAABAgQIECBAgACB4SvQNgHceBlTV6VYZRkvgKqu4OyqbhybddZZuzvV7+PxErEigNvvRvp4YcfVr61eHqkOBloKw2uvvTZ/QVas7owVtAM1iEB4rMC++OKL8y4WL1mLF8oV5fOf/3yx2elzpplmyl9kFy8hixIvPRsbpa/2L7zwQtmNCKjGS/p6K9WXpvVWt+P5WMEbP1FitW8EkPva545t2idAgAABAgQIECBAgAABAgQIEBgaga6jokPTlz7fNXuJVpk+IXKutrKysc83GaYXFGkahqJ7f/vb39LPfvazfDXpCiuskG644Ya00kor5atlr7vuugF1qchjG41kLxLL24rcu0WJOe+pRJqHIoAbK3jHRulrMLQIREdfIrXBuHxOL7vssjz37h577DE2KLRJgAABAgQIECBAgAABAgQIECAwlgWGXQ7cvoy3upo0cqb2FtzrS9sd63a3ArhjvfF9/5xzzklLLbVUHryNXLaxCjeCt4NVqjmLF1hggbzZGWecsWz+mWeeKbe72qimdphtttm6qjLgY30NnldzIEdu5rFdFltssTxtQnGfeNneQAPrRVs+CRAgQIAAAQIECBAgQIAAAQIExq1AWwdwI6haBPmC7YILLuhR76OPPkpHHXXUgL/q3+NNxtHJvq4CHYxuxcvjvvWtb+VNRcqEeIHcRBNNNBhNl238+9//LreLua3msb377rvL811tvPnmm+Xh4vrywBBtVPP2xmrl3lYGR5D6xBNPHFBvI1XDxhtvXLax/vrrp+eee67ct0GAAAECBAgQIECAAAECBAgQINAeAoMawI1cm+O6VF9cFl8T/+CDD7rsQvRtp512SkcffXSqrojssnIXB4uv83dxql+HqoHG/jQw2P1ppQ8nn3xyWS1eODY2gsjx4rEokQ83gsRRqgHcSI/wz3/+Mz/e1T+efvrp8nBxfXngvxtvvPFGx0N92u+r/fTTT9/0orh999232/u99dZbad1110233nprt3VaORFzE/NVpKSI/MQbbrhheu+991q5XB0CBAgQIECAAAECBAgQIECAAIFhIjCoAdx33nmnaVjvv/9+0353O9WAWHW7Wr96/NNPPy1P7bDDDuV2rDCMFaJdBUcPOeSQfMXo3nvvnSaeeOLymp42pphiivJ0pGiI/KUDKdNOO215efHyteJABJivuuqqYrfL1ZIR1CzK888/X2w2fX788cflfnW7ONgxyF51Lep091kNjr744otN1SJw/o9//KM81l0gvazQxUa8rKwIXB577LFpyimnzGtFsLgIRMaBP/zhD11cndIrr7ySp3aIk2uttVZacskly3pTTTVVud3VKt5rrrmmPB8b0Va1VJ+Fak7eap2etn/yk5+Up88+++x04IEHpupzHCdjvuL5DYddd921rN/fjamnnjr9+c9/Li+/884707bbbpu/1Kw82GEj/gzFKvXwGOjz3qFpuwQIECBAgAABAgQIECBAgAABAv0QGNQAbsevaPeWr7To75gxY4rNFC8j66pUA2qvv/56WWW11VZLyy23XLl/4YUXpsgBesABB6RLLrkkD/ZFncgDuvbaa+cBrLJyLxuzzjprU40rr7wy3z/vvPPSFltskW9HQPTll18u63UMbJYnso0vfOEL5e5vf/vb9Kc//SkPNkfgNoKUsTq4KI8++miKF1BVV0zON998xekU44zga9its846KV4sFqVqU3UtLowVntXSVZ3q+ep2BASLcsIJJ6TjjjsuXw0bHquvvnqTwxVXXJEi5ULkyO1YugqAxgrR+Np/lJjPb3/72+Vlk002Wb6atDgQwfhbbrml2C0/f/e735XbVcs4OGrUqPJcBONjFWxYRTB3t912y1enlhWyjZNOOim9+uqr5aFqGoSbbropvfDCC3kANgKt4dBb2XnnnZuqxC8SVllllXTMMcfk8xwB63g+Ys5jfNWV5XFh9fnv6hcU1V+exPNYBF8XWWSRJrtzzz03/ehHP+oyiBs5pBdffPH005/+NK2xxhq9piRpGpAdAgQIECBAgAABAgQIECBAgACBsSOQBSAHXN59993G7bff3sgCb5FDofzJVow2LrrookYWfOr2HllAsbHqqquW18T1d9xxR1P92267ren8mmuu2Yh7FuXhhx9uZCs0m+pU+xHbSyyxRCMLfBWXtPwZ11XbmmGGGfL9LJjbyAJejSwQ23Q+W0HZiP5kAbRO98iCu40wqbZXbMfx888/v9O57EVhZTuXX3550/mirSww3chWOzey3KpN7WdBy0a2Ure8Plvx2chWVza1sd9++3XZ1/KiykbH+xd9j8/11luvscsuuzS1HcePOOKIvIXwqtbP0lnkz0YWeG6ceuqpjSzonp8PvyyoXLnr/21mQdmyjRj71Vdfnc9BtnK1ceaZZ5bnwrFjyYLdnZ6zan+yIGynZyh7CVojzKJkv1go2y+uiz7Ec/fUU0/ldXr7R/YLhU5tFG0VnzvuuGOn+XjwwQeb5jXL7dt46aWXytvFc9jR/vTTTy/Px8YGG2zQdO8sP24j+4VLU50sfUVTneiLQoAAAQIECBAgQIAAAQIECBAgMLQCsRJvQCVbZdsU9CkCUR0/sxWxne5z6aWXdntttgIwr7/yyit3WycCTkWJgFYEdjveN/azFY2N7AVmRdU+fcY9ikBptBUB3AhWZ1/17/Jexf0322yzLu8TwekIwBX14jPGGPeJgFrsL7300o3jjz++8a9//atTG9tss03TtRFki7Fl+X+bjlfbD/tsNWnTOKrnY0xFoLLTDTscyFaKNt0ngpynnHJKHnTMVrbmgfJoO9qM+1bbjTF+97vf7RQojfoRwI1Abm/lrrvuakRgutr/Yn6ynLeNLD9ut01kq2YbWX7ZpmsjAJulGcivie0Yz+jRoxv33ntvp0Bq9tK2pmvjFxYRlO9LydIYdOp/4XXxxRc3NRWB6ehPdazV7XhuslQM3Z4Pl4ceeqjxi1/8ots68dwUJeaq+mxmaRSKUz4JECBAgAABAgQIECBAgAABAgSGSGBE3DcLCo03JVIOZMG3/Ov88bX5SDsw0UQTDWh8kZs0XpwVuXPnn3/+Ab+8K1IfPPbYYynSGcw888xpjjnmyPsX94m0E9Wv63fV8fj6fuTAja/cZ0G6rqqM1WNh/Pjjj6fIKxt9n2CC5kwc2YrU/PiEE07YbT8idUOkMihMW81LXDQYaRiygHCKvLzhteiii+aWxfmePsM4DCMncVw7cuTIvHqkfIjnpeN4qm3FnEW9SK8xyyyzVE/1aTvSM8QL2bKgafriF7+Y5pxzzgE/V33qQDeVs18GpP/93//Ncw4Xz2U3VR0mQIAAAQIECBAgQIAAAQIECBAYBwLjXQB3HJi5BQECBAgQIECAAAECBAgQIECAAAECBMaJQPPSyXFySzchQIAAAQIECBAgQIAAAQIECBAgQIAAgVYEBHBbUVKHAAECBAgQIECAAAECBAgQIECAAAECQyAggDsE6G5JgAABAgQIECBAgAABAgQIECBAgACBVgQEcFtRUocAAQIECBAgQIAAAQIECBAgQIAAAQJDICCAOwTobkmAAAECBAgQIECAAAECBAgQIECAAIFWBARwW1FShwABAgQIECBAgAABAgQIECBAgAABAkMgIIA7BOhuSYAAAQIECBAgQIAAAQIECBAgQIAAgVYEBHBbUVKHAAECBAgQIECAAAECBAgQIECAAAECQyAggDsE6G5JgAABAgQIECBAgAABAgQIECBAgACBVgQEcFtRUocAAQIECBAgQIAAAQIECBAgQIAAAQJDICCAOwTobkmAAAECBAgQIECAAAECBAgQIECAAIFWBARwW1FShwABAgQIECBAgAABAgQIECBAgAABAkMgIIA7BOhuSYAAAQIECBAgQIAAAQIECBAgQIAAgVYEBHBbUVKHAAECBAgQIECAAAECBAgQIECAAAECQyAggDsE6G5JgAABAgQIECBAgAABAgQIECBAgACBVgQEcFtRUocAAQIECBAgQIAAAQIECBAgQIAAAQJDICCAOwTobkmAAAECBAgQIECAAAECBAgQIECAAIFWBARwW1FShwABAgQIECBAgAABAgQIECBAgAABAkMgIIA7BOhuSYAAAQIECBAgQIAAAQIECBAgQIAAgVYEBHBbUVKHAAECBAgQIECAAAECBAgQIECAAAECQyAggDsE6G5JgAABAgQIECBAgAABAgQIECBAgACBVgQEcFtRUocAAQIECBAgQIAAAQIECBAgQIAAAQJDICCAOwTobkmAAAECBAgQIECAAAECBAgQIECAAIFWBARwW1FShwABAgQIECBAgAABAgQIECBAgAABAkMgIIA7BOhuSYAAAQIECBAgQIAAAQIECBAgQIAAgVYEBHBbUVKHAAECBAgQIECAAAECBAgQIECAAAECQyAggDsE6G5JgAABAgQIECBAgAABAgQIECBAgACBVgQEcFtRUocAAQIECBAgQIAAAQIECBAgQIAAAQJDICCAOwTobkmAAAECBAgQIECAAAECBAgQIECAAIFWBARwW1FShwABAgQIECBAgAABAgQIECBAgAABAkMgIIA7BOhuSYAAAQIECBAgQIAAAQIECBAgQIAAgVYEBHBbUVKHAAECBAgQIECAAAECBAgQIECAAAECQyAggDsE6G5JgAABAgQIECBAgAABAgQIECBAgACBVgQEcFtRUocAAQIECBAgQIAAAQIECBAgQIAAAQJDICCAOwTobkmAAAECBAgQIECAAAECBAgQIECAAIFWBARwW1FShwABAgQIECBAgAABAgQIECBAgAABAkMgIIA7BOhuSYAAAQIECBAgQIAAAQIECBAgQIAAgVYEBHBbUVKHAAECBAgQIECAAAECBAgQIECAAAECQyAwcgju6ZYECAxQ4IknnhhgC+Pn5fPMM8/4OTCjIkCAAAECBAgQIECAAAECBGorYAVubafewAkQIECAAAECBAgQIECAAAECBAgQGO4CArjDfYb0jwABAgQIECBAgAABAgQIECBAgACB2goI4NZ26g2cAAECBAgQIECAAAECBAgQIECAAIHhLiCAO9xnSP8IECBAgAABAgQIECBAgAABAgQIEKitgABubad+6Ab+6aefprvuuiu99dZb3Xbi448/Tm+88Ua35wd64umnnx5oE64nQIAAAQIECBAgQIAAAQIECBAgMNYFBHArxGPGjEmjR49OO++8c+Xo0GzefvvtacYZZ0wvvPDC0HRgkO8awdpLL7007bTTTmmWWWZJSyyxRHrooYea7vLSSy+ls846K22xxRZpuummSwcffHDT+cHY+eSTT9KSSy6Z5pprrvwz9hUCBAgQIECAAAECBAgQIECAAAECw1Vg5HDt2Ljs15tvvpmOPfbYdOihh6a33347rb322uPy9l3e65hjjkkvv/xyOvHEE/OgcpeV2uTgNddck9ZYY40ee/uNb3wjD/D2WGkQTt57773pzjvvzFuKzwiUL7/88oPQsiYIECBAgAABAgQIECBAgAABAgQIDL5ArVfgvvPOO+mwww5Ls88+e9p7773z4O3gE/e9xVh1e/bZZ+cXHn300em9997reyPD6IrVVlstxUrXG2+8sdteXXDBBem5555L6667brd1BuPEvPPO29TMl770paZ9OwQIECBAgAABAgQIECBAgAABAgSGk0CtA7i/+c1vUnxt/5xzzklrrrnmsJmXU045pexLrAg+99xzy/123BgxYkSacMIJ04orrphGjRrV5RAmmWSSNOuss6a11lqry/ODdXCaaaZJzz77bDr11FPzz6mnnnqwmtbOOBaIXMrf+9738sD/OL612xEgQIAAAQIECBAgQIAAAQIExplArQO4e+65ZzryyCPzlAmbbrrpOEPv6UYffvhhOu6445qqRGqHRqPRdKxdd6affvoeux6B3LFdZptttrTVVlul+FTaV+CEE05IV111Vfroo4/adxB6ToAAAQIECBAgQIAAAQIECBDoRaDWAdyqzeSTT17dHbLtCy+8MM99+5nPfKbsw6OPPpquvfbact8GgboL3HLLLelXv/pV3RmMnwABAgQIECBAgAABAgQIEKiBgADuMJvkX//613mP4gVb1SDuUUcd1eeeRt7Z+KmWWOH78ccfVw8NynY7rhDuyqcjxpgxY9Lrr7/e8fCA9uOleY888sig5jYO/3jp3fvvvz+gvg32xZHm4N///nf+0+ozEtdUxxHXVffvuuuu9P3vf3+wu6o9AgQIECBAgAABAgQIECBAgMCwFBDAHUbTEoGp22+/PW2wwQZp/vnnT7vsskvZu8svvzz985//LPe724gA7RVXXJH+53/+J332s59Nl1xySR7EPfPMM9M3v/nNNOmkk6bpppsuTyEQLw3rb4mg2mmnnZa22GKL/CVwE0wwQVpwwQXznKQRsBvs8tBDD6V11lmny59qzuBW7vv3v/897brrrrlPrOTsWMIwXm4344wz5nXCK7Y333zzFC9k649bBIL32GOPNNVUU6XIw/uFL3whTTHFFLnZQFaSvvbaa3m78803X1p22WVTvJRtlVVWSXvttVfadtttOw4tD4TGsxTnfvjDH+bn//Wvf6XDDz88fz7iJW9f+9rXUjwvRcA1At0XX3xxijQjiyyySFpqqaXSz372sxRz0l259dZb8/biOV5hhRXyn0UXXTRtv/326fnnn+/ysghAR27i1VdfPZ188skpArl/+MMf0le/+tV8XAceeGC6/vrr02abbZbefffdso2dd945n5uYn7/97W/lcRsECBAgQIAAAQIECBAgQIAAgfFBYOT4MIjxZQxF7tt4MVOUCLL94he/KId37LHHdsqPW57MNiKfbwTWquWVV17JX9B23XXXlYfjxWinn356vgr0xhtvTBNPPHF5rpWNuD76dsEFF6RVV101rb/++um+++5LN998cx7Ui+DfeeedN6gvJIsAZYxviSWWSHH/GWaYIX3r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brutxz5EUDpKBHAjsNoxUBx9mm222RrZy+M6td3bgQhOVtuL52qPPfZoREA6S+fQyFJjlOPKVqk2shXUvTWZBzEjgBu/eKgGXAu7OHfRRReVwc+TTz65y3pRP1sxnQdge5qDbbfdNn9+urpXcc8snUPeTvaiuXI8cS5L59DIVuDmfcleftfIXuKWn5933nkbWRqQxiqrrNJUv2iv+MzSdJTjKAK48YuKuL6oE58HHHBAr24qECBAgAABAgQIECBAgAABAgTaTWBEdDgLfij9FMgCSvlX0eOr2yNHjuxnK+172VNPPZXihWVTTz11WmCBBdL000/fvoPJeh6pASaccMIUqQCyFcH5C8jij8jMM8+cZpllljTBBP3LOhK5ZJ944ok8zUYWkE4TTzxxk1PkDY4XtkWajFZKtBWpMsI9yiuvvJIi7UD0NVs1m6addtpWmhlrdaJvMaYZZ5wxZatjm+4TFtHXeOnaQEqMNdJdRE7jLJib//mbZ555BtKkawkQIECAAAECBAgQIECAAAECw05AAHfYTYkOEehdIAK4SmcBAdzOJo4QIECAAAECBAgQIECAAAEC7S3Qv+WE7T1mvSdAgAABAgQIECBAgAABAgQIECBAgEBbCAjgtsU06SQBAgQIECBAgAABAgQIECBAgAABAnUUEMCt46wbMwECBAgQIECAAAECBAgQIECAAAECbSEggNsW06STBAgQIECAAAECBAgQIECAAAECBAjUUUAAt46zbswECBAgQIAAAQIECBAgQIAAAQIECLSFgABuW0yTThIgQIAAAQIECBAgQIAAAQIECBAgUEeBEY2s1HHgxkyAAAECBAgQIECAAAECBAgQIECAAIHhLmAF7nCfIf0jQIAAAQIECBAgQIAAAQIECBAgQKC2AgK4tZ16AydAgAABAgQIECBAgAABAgQIECBAYLgLCOAO9xnSPwIECBAgQIAAAQIECBAgQIAAAQIEaisggFvbqTdwAgQIECBAgAABAgQIECBAgAABAgSGu4AA7nCfofG4f48//vh4PLqxM7QXXnghffTRR2On8fG81fHB7rHHHktPP/30eD5ThkeAAAECBAgQIECAAAECBAhUBWofwH322WfTbrvtllZZZZU044wzpsUXXzxtt9126fLLL6862R4EgQg83nLLLWm//fZL888/f5pvvvkGodX6NPHTn/40zTrrrGn22WdPgt99m/d2tfv444/zPzP77LNP/mdm1KhR6fzzz+928O+++25abbXV0ogRI9K+++7bbT0nCBAgQIAAAQIECBAgQIAAgfYRGNHISvt0d3B7ethhh+XB2+5a/c53vpNOOOGENMUUU3RXxfEWBR566KG04IILdqpd48evk0VPBz799NM0cuTIssqBBx6Y9txzz3LfRvcC7Wo3ZsyYNOecc6a33367aXCHHnpo2nXXXZuOFTvxi6evf/3rxW567bXX0mc/+9ly3wYBAgQIECBAgAABAgQIECDQfgK1XYF7xhlnNAVvY2VbxxJ19thjj46H7fdDYIEFFkjvvPNOOv3008urP/OZz5TbNnoWmHDCCdNyyy1XVlpmmWXKbRs9C7Sr3bTTTptef/31fLX1wgsv3PMg/3v23nvvbar38ssvN+3bIUCAAAECBAgQIECAAAECBNpPoJYB3Pj6+ZZbbpnP1tlnn50+/PDD9Mgjj6T4uvLJJ5/cNIvHHHNMuvPOO5uO2emfQKxkXmuttfp3savytB5nnnlmuvvuu/OUH0haF4iVqe1oF6uu55lnnrTyyiu3NNgIVldL/N2mECBAgAABAgQIECBAgAABAu0t8H/fyW7vcfSp9+ecc05e//77709f+tKXymsjWBL5b6effvq0/vrrl8dvuOGGtMQSS5T7NvovMOmkk5YXTzbZZOW2jd4FYsXyFlts0XtFNToJtLvdNNNM02lMXR2YYYYZmg533G86aYcAAQIECBAgQIAAAQIECBBoC4FarsA97bTTUuQQrQZvq7O13nrrpRVWWKE8FIFehQABAsNdIHLmVku8mFEhQIAAAQIECBAgQIAAAQIE2lugdgHcZ555Js/FuuOOO/Y4c8suu2yP59vp5CeffJKeffbZ/KcvLw374IMPmoYZL4N67733mo61shO5b99///1WqvarTqS+eOutt/p1bX8u6mosHV801VO7A70+2u7tq/GDNXfvvvtuv+a8p/HHuXgOIz9rpDOJ57PVMi7sWu3LQOr1d/y93XOOOeYoq8w999xpgglq91d8OX4bBAgQIECAAAECBAgQIEBgfBGo3f/dR4DjpZde6vXN7FNNNVU5x92t1C0rDNONa665JsXLriaaaKIU446fqaeeOq2zzjrpX//6V6deR1DprrvuSvvss0+ed3O33XbL60QKiZ122inNMsssKfLYxlvub7nllk7XVw889thjeTqKyN8ZX1+ffPLJ04orrpguuuiiarV+b7/44ovpZz/7WVp++eXTxBNPnI8r5myTTTZJ99xzT9nuZZddlhZccMGmn1h9XZSuzi+++OLpP//5T1El/3zyySfTr371q9xz0UUXzY9F3uS99torzT///CnuHdedeuqpTdcVOwO9PtqJXz4ceeSR+f0OPfTQoun8czDnLmy33nrr/BmYcsop8zmPse28884pXuz3wAMPpAjsRtA8gud9KWG26aab5oHFWB0633zz5c9nPKfxvHZVxrZd3DPm+6abbsqf2WLV6ptvvpkOO+yw/HkfMWJEmn322dOPfvSjfOxFP2+88cY83UpcE8/AN77xjfTHP/6xON3psz/j79RIDweij0UJW4UAAQIECBAgQIAAAQIECBAYDwSywI/ShcC3vvWtRja9+c+VV17ZRY3hfejggw8u+/+HP/yh8dprrzUefvjhxnLLLZcfz3JjNrLVj+Ugrr322kYcK8Ycn1nQtvHzn/+86VhxPgvKNp5++uny+urG1Vdf3YjzUTcLAjeuu+66RrS/5pprNrU122yzVS9refv6668v+3rAAQc04n6/+93vmtrOXliVt5etGm7cd999jcUWW6w8v/3225f3ylay5i7bbrtteT76na0Kzeu88MILjYUXXrjp3KhRoxpZHuWmY4VLfF566aVl+wO9Pho68cQTy3kr7jN69OjyHoM5d7fddls5d3vssUduu++++3Y71uwlf2U/etuIeSv6v8suuzSygHTj+eefb/zwhz8sj//lL38pmxkXdtmK8saee+7ZiGex6Ft8ZoHZ8hmrHo/tLMVKIwtcN/W7Y52u/s7o6/hLiGyjOgdZ8L56qtN2MZYddtih0zkHCBAgQIAAAQIECBAgQIAAgfYTiK8yK10IZF8/zgM6EbwrgnldVBuWhx566KEyGLXWWms19THL51uei8BZUV555ZVGBD2LcVcDUj/5yU8aN998c/5TPV8NhBbtZKsoy/YjqFotEUytBnH7E8C9/PLL8/YjQHznnXdWm2/st99+5b2j/9nX7cvz2erZ8lxX/Y5gYnXMxZx/9NFHjb/+9a+NNdZYo+l81N1oo40al1xySePee+/Ng3rF9dVxDfT6GEC2qjcPUBdB8bhPNYA7WHOXpboo5z9byVzaxcbee+/dNP4IzO++++6NCPi2UiLgWf0FQQTOixLWxdgiOF6UcWGXrSRuHH744U3zV8xjzPmf/vSnRvx5ijrF8fhcYIEF8v1wCIN4FqvPdnUcMZ7+jL9wiM++BHBXXXXVvG/xyw2FAAECBAgQIECAAAECBAgQaH8BAdwu5jBWARbBmljd2W4l+5p72f8IKlVLlqu1PBfB6Y7l2GOPLc9HUC1WIlZLte0llliieioPUhWBrewlcE3nip1or7CtBjqL8z19xmrJIoB8xBFHdKoaK4yLtuMzVncW5fTTTy/PdRXAzdIBlOfj2iKAW1wfq3irbUdAuFqeeuqppvPRXrUM9PpoK1atFn2oBnCL+wxk7qKN448/vmy/Y/B9zJgx5bnoQ5amorhtS59ZGoSm67OUBU3XxbNUjO3VV19tOjcu7F5//fXy/tGPsI6ga7VEULvoY/zZuP3226unGx2foVj1XpSBjD/a6EsAN8vvnfczVt4rBAgQIECAAAECBAgQIECAQPsL1C4HbhaA6bFkgbuUrTjN62yzzTZp9dVX77H+cDyZrcBL2WrHvGsrr7xyUxcnnXTScj9ynXYsRf7POJ4F1fK8tdU6cawo2arD/GVUxX4WMErZasV8N/KldlXmnXferg63dOzoo49OkQ81SlcvoYtctEcddVTKVj+mLMCZ5+xtqeEWKk0//fRNtX7wgx807X/+858vzeNEvJyrWgZ6fbQ13XTTVZvstD2QuYvG7rjjjrLNjv2dZpppUhacL89HLte+lLnmmisVz2K2sjVFTtlqyQKi5W4WTC23Y6NjX/pqH230ZjfttNPmuZqjbpQsrUIaOXLk/9/57z+/+tWvlvubbbZZWmqppcr92IgxxLNXlCyAW2ymgYy/bKTFjSIPbvYLkhavUI0AAQIECBAgQIAAAQIECBAYzgLNEYrh3NNx1Lff/va36dFHH01LL710Ou6448bRXQf3NvGyseeeey5lKxnTzDPPXDYeAdfs6/jlfpZioNwuNjoG1orjxWe8lKxa4uVPE044YX7o3HPPLU995StfKberG9VAXfV4K9vFC9CylcP5i7W6uiZbOZniZ7BLby5xv4UWWihl+X7zW8dLvqploNdHW7210dv5nuYu2o+XkhUlyz9bbJaf8YuBIkCfreQuj7e6keWATdmq6KZnMl6mFy9Gi2ezKB2fy97GFdf1ZB/nW2ljsskmSz2Nq/ilSLTXXYlfIsTfH1E6ttXf8Xd3r+6OF4Hb4rO7eo4TIECAAAECBAgQIECAAAEC7SFgBW5lnv72t7+lLC9syr6mn7Lcpqm6WrVSrS02J5poojxQluUazQNkiy++eFpyySVTlut1QP3vKRCWfdW9bLsaOC4PDmAjy59bBvnmnHPOAbRU30t7mrtQ+drXvlbiZC9iK7eLjfjFQFEWXXTRYrNPn7POOmuaYIIJUvbitfSNb3wjxcrlCy64oFOws0+NjqPKEeDtrVT/zohntmMZF+MvAs1xL4UAAQIECBAgQIAAAQIECBBofwEB3P/OYawMXHfddfOvwWdvkO/0te12nOpYERspC7bccssUAdwsR2y6+OKLx8pQshyp6eWXXy7bjpW5vZWJJ564tyrl+VipWZSuUj8UGl0uzgAAQABJREFU53z2X6CaIuCyyy5Lf//735say17Wlu9HGo0vf/nLTeda3Ylfkqy44op5apI33ngj3XDDDSkC/7G6d7iXjikV+tPfcTH+SDkRK90nn3zy/nTRNQQIECBAgAABAgQIECBAgMAwExDAzSYkvur89a9/PcVXt7OXluVBz2E2T33qTgRPIwft5ptvnqdSiLQQJ510Uoqvd4+tEsG4aomA+GCW6urR+Lp95CpWBlcgVsOeeOKJZaOxIveWW25JMbennHJKOv/88/PA4FlnndUpP2x5UQ8b55xzTp439uabb05bbbVVvgp3pZVW6uGK8evUuBp/BHDnm2++8QvPaAgQIECAAAECBAgQIECAQI0Fah/A/eijj9LGG2+c7r///nTFFVekyK/a7iVeJnbMMcfkw4gXsv3P//zPWB9S8eKk4kbVnKbFsYF8zjHHHE2Xx9fueyrxsrMiX2tP9ZxrFthhhx1SrECPEiuqV1hhhRQv+IrnaNttt01PPfVUv4KD8dKzb33rW3m78Wfs97//fYo0H3Up43L8M800U/4yv7rYGicBAgQIECBAgAABAgQIEBjfBWodwI0clVtvvXUesIqVt8suu2y38x31YjViO5Sjjz667GakhRgXJb5evsACC5S3GuwXwMWL0qrB9b333ju999575f2qG6+//npaY4010m233VY9XG53XC1cnrCR4uVlkQc6Uho88MAD+Qu5/v3vf+cvOItVuNNNN12/lE4++eTyuo022qill4qVF4wH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AgQIECBAgACB/ggI4PZHzTUExiOB7CVrKcuLnI8oUm689tprPY7ulltuSVtvvXXacsste6znJAECBAgQIECAAAECBAgQIECAwMAFpFAYuKEWCLS9wPzzz5/nK46BRG7bCNBGXuH55psvTTfddHlQ94knnkjnnHNOuvnmm9Nuu+2WDjrooE45bNsewgAIECBAgAABAgQIECBAgAABAsNMQAB3mE2I7hAYCoEHH3wwrbrqqvlLy3q6fwR1999//7T55pv3VM05AgQIECBAgAABAgQIECBAgACBQRIQwB0kSM0QaHeB999/P5177rkpXlAWq20fffTRNPfcc+ercGOFbry0bNlll00jRoxo96HqPwECBAgQIECAAAECBAgQIECgbQQEcNtmqnSUAAECBAgQIECAAAECBAgQIECAAIG6CXiJWd1m3HgJECBAgAABAgQIECBAgAABAgQIEGgbAQHctpkqHSVAgAABAgQIECBAgAABAgQIECBAoG4CArh1m3HjJUCAAAECBAgQIECAAAECBAgQIECgbQQEcNtmqnSUAAECBAgQIECAAAECBAgQIECAAIG6CQjg1m3GjZcAAQIECBAgQIAAAQIECBAgQIAAgbYREMBtm6nSUQIECBAgQIAAAQIECBAgQIAAAQIE6iYggFu3GTdeAgQIECBAgAABAgQIECBAgAABAgTaRkAAt22mSkcJECBAgAABAgQIECBAgAABAgQIEKibgABu3WbceAkQIECAAAECBAgQIECAAAECBAgQaBsBAdy2mSodJUCAAAECBAgQIECAAAECBAgQIECgbgICuHWbceMlQIAAAQIECBAgQIAAAQIECBAgQKBtBARw22aqdJQAAQIECBAgQIAAAQIECBAgQIAAgboJCODWbcaNlwABAgQIECBAgAABAgQIECBAgACBthEQwG2bqdJRAgQIECBAgAABAgQIECBAgAABAgTqJiCAW7cZN14CBAgQIECAAAECBAgQIECAAAECBNpGQAC3baZKRwkQIECAAAECBAgQIECAAAECBAgQqJuAAG7dZtx4CRAgQIAAAQIECBAgQIAAAQIECBBoGwEB3LaZKh0lQIAAAQIECBAgQIAAAQIECBAgQKBuAgK4dZtx4yVAgAABAgQIECBAgAABAgQIECBAoG0EBHDbZqp0lAABAgQIECBAgAABAgQIECBAgACBugkI4NZtxo2XAAECBAgQIECAAAECBAgQIECAAIG2ERDAbZup0lECBAgQIECAAAECBAgQIECAAAECBOomIIBbtxk3XgIECBAgQIAAAQIECBAgQIAAAQIE2kZAALdtpkpHCRAgQIAAAQIECBAgQIAAAQIECBCom4AAbt1m3HgJECBAgAABAgQIECBAgAABAgQIEGgbAQHctpkqHSVAgAABAgQIECBAgAABAgQIECBAoG4CArh1m3HjJUCAAAECBAgQIECAAAECBAgQIECgbQQEcNtmqnSUAAECBAgQIECAAAECBAgQIECAAIG6CQjg1m3GjZcAAQIECBAgQIAAAQIECBAgQIAAgbYREMBtm6nSUQIECBAgQIAAAQIECBAgQIAAAQIE6iYggFu3GTdeAgQIECBAgAABAgQIECBAgAABAgTaRkAAt22mSkcJECBAgAABAgQIECBAgAABAgQIEKibgABu3WbceAkQIECAAAECBAgQIECAAAECBAgQaBsBAdy2mSodJUCAAAECBAgQIECAAAECBAgQIECgbgICuHWbceMlQIAAAQIECBAgQIAAAQIECBAgQKBtBARw22aqdJQAAQIECBAgQIAAAQIECBAgQIAAgboJCODWbcaNlwABAgQIECBAgAABAgQIECBAgACBthEQwG2bqdJRAgQIECBAgAABAgQIECBAgAABAgTqJiCAW7cZN14CBAgQIECAAAECBAgQIECAAAECBNpGQAC3baZKRwkQIECAAAECBAgQIECAAAECBAgQqJuAAG7dZtx4CRAgQIAAAQIECBAgQIAAAQIECBBoGwEB3LaZKh0lQIAAAQIECBAgQIAAAQIECBAgQKBuAgK4dZtx4yVAgAABAgQIECBAgAABAgQIECBAoG0EBHDbZqp0lAABAgQIECBAgAABAgQIECBAgACBugkI4NZtxo2XAAECBAgQIECAAAECBAgQIECAAIG2ERDAbZup0lECBAgQIECAAAECBAgQIECAAAECBOomIIBbtxk3XgIECBAgQIAAAQIECBAgQIAAAQIE2kZAALdtpkpHCRAgQIAAAQIECBAgQIAAAQIECBCom4AAbt1m3HgJECBAgAABAgQIECBAgAABAgQIEGgbAQHctpkqHSVAgAABAgQIECBAgAABAgQIECBAoG4CArh1m3HjJUCAAAECBAgQIECAAAECBAgQIECgbQQEcNtmqnSUAAECBAgQIECAAAECBAgQIECAAIG6CQjg1m3GjZcAAQIECBAgQIAAAQIECBAgQIAAgbYREMBtm6nSUQIECBAgQIAAAQIECBAgQIAAAQIE6iYggFu3GTdeAgQIECBAgAABAgQIECBAgAABAgTaRkAAt22mSkcJECBAgAABAgQIECBAgAABAgQIEKibgABu3WbceAkQIECAAAECBAgQIECAAAECBAgQaBsBAdy2mSodJUCAAAECBAgQIECAAAECBAgQIECgbgICuHWbceMlQIAAAQIECBAgQIAAAQIECBAgQKBtBARw22aqdJQAAQIECBAgQIAAAQIECBAgQIAAgboJCODWbcaNlwABAgQIECBAgAABAgQIECBAgACBthEQwG2bqdJRAgQIECBAgAABAgQIECBAgAABAgTqJiCAW7cZN14CBAgQIECAAAECBAgQIECAAAECBNpGQAC3baZKRwkQIECAAAECBAgQIECAAAECBAgQqJuAAG7dZtx4CRAgQIAAAQIECBAgQIAAAQIECBBoGwEB3LaZKh0lQIAAAQIECBAgQIAAAQIECBAgQKBuAgK4dZtx4yVAgAABAgQIECBAgAABAgQIECBAoG0EBHDbZqp0lAABAgQIECBAgAABAgQIECBAgACBugkI4NZtxo2XAAECBAgQIECAAAECBAgQIECAAIG2ERDAbZup0lECBAgQIECAAAECBAgQIECAAAECBOomIIBbtxk3XgIECBAgQIAAAQIECBAgQIAAAQIE2kZAALdtpkpHCRAgQIAAAQIECBAgQIAAAQIECBCom4AAbt1m3HgJECBAgAABAgQIECBAgAABAgQIEGgbAQHctpkqHSVAgAABAgQIECBAgAABAgQIECBAoG4CArh1m3HjJUCAAAECBAgQIECAAAECBAgQIECgbQQEcNtmqnSUAAECBAgQIECAAAECBAgQIECAAIG6CQjg1m3GjZcAAQIECBAgQIAAAQIECBAgQIAAgbYREMBtm6nSUQIECBAgQIAAAQIECBAgQIAAAQIE6iYggFu3GTdeAgQIECBAgAABAgQIECBAgAABAgTaRkAAt22mSkcJECBAgAABAgQIECBAgAABAgQIEKibgABu3WbceAkQIECAAAECBAgQIECAAAECBAgQaBsBAdy2mSodJUCAAAECBAgQIECAAAECBAgQIECgbgICuHWbceMlQIAAAQIECBAgQIAAAQIECBAgQKBtBARw22aqdJQAAQIECBAgQIAAAQIECBAgQIAAgboJCODWbcaNlwABAgQIECBAgAABAgQIECBAgACBthEQwG2bqdJRAgQIECBAgAABAgQIECBAgAABAgTqJiCAW7cZN14CBAgQIECAAAECBAgQIECAAAECBNpGQAC3baZKRwkQIECAAAECBAgQIECAAAECBAgQqJuAAG7dZtx4CRAgQIAAAQIECBAgQIAAAQIECBBoGwEB3LaZKh0lQIAAAQIECBAgQIAAAQIECBAgQKBuAgK4dZtx4yVAgAABAgQIECBAgAABAgQIECBAoG0EBHDbZqp0lAABAgQIECBAgAABAgQIECBAgACBugkI4NZtxo2XAAECBAgQIECAAAECBAgQIECAAIG2ERDAbZup0lECBAgQIECAAAECBAgQIECAAAECBOomIIBbtxk3XgIECBAgQIAAAQIECBAgQIAAAQIE2kZAALdtpkpHCRAgQIAAAQIECBAgQIAAAQIECBCom4AAbt1m3HgJECBAgAABAgQIECBAgAABAgQIEGgbAQHctpkqHSVAgAABAgQIECBAgAABAgQIECBAoG4CArh1m3HjJUCAAAECBAgQIECAAAECBAgQIECgbQQEcNtmqnSUAAECBAgQIECAAAECBAgQIECAAIG6CQjg1m3GjZcAAQIECBAgQIAAAQIECBAgQIAAgbYREMBtm6nSUQIECBAgQIAAAQIECBAgQIAAAQIE6iYggFu3GTdeAgQIECBAgAABAgQIECBAgAABAgTaRkAAt22mSkcJECBAgAABAgQIECBAgAABAgQIEKibgABu3WbceAkQIECAAAECBAgQIECAAAECBAgQaBsBAdy2mSodJUCAAAECBAgQIECAAAECBAgQIECgbgICuHWbceMlQIAAAQIECBAgQIAAAQIECBAgQKBtBARw22aqdJQAAQIECBAgQIAAAQIECBAgQIAAgboJCODWbcaNlwABAgQIECBAgAABAgQIECBAgACBthEQwG2bqdJRAgQIECBAgAABAgQIECBAgAABAgTqJiCAW7cZN14CBAgQIECAAAECBAgQIECAAAECBNpGQAC3baZKRwkQIECAAAECBAgQIECAAAECBAgQqJuAAG7dZtx4CRAgQIAAAQIECBAgQIAAAQIECBBoGwEB3LaZKh0lQIAAAQIECBAgQIAAAQIECBAgQKBuAgK4dZtx4yVAgAABAgQIECBAgAABAgQIECBAoG0EBHDbZqp0lAABAgQIECBAgAABAgQIECBAgACBugkI4NZtxo2XAAECBAgQIECAAAECBAgQIECAAIG2ERDAbZup0lECBAgQIECAAAECBAgQIECAAAECBOomIIBbtxk3XgIECBAgQIAAAQIECBAgQIAAAQIE2kZAALdtpkpHCRAgQIAAAQIECBAgQIAAAQIECBCom4AAbt1m3HgJECBAgAABAgQIECBAgAABAgQIEGgbAQHctpkqHSVAgAABAgQIECBAgAABAgQIECBAoG4CArh1m3HjJUCAAAECBAgQIECAAAECBAgQIECgbQQEcNtmqnSUAAECBAgQIECAAAECBAgQIECAAIG6CQjg1m3GjZcAAQIECBAgQIAAAQIECBAgQIAAgbYREMBtm6nSUQIECBAgQIAAAQIECBAgQIAAAQIE6iYggFu3GTdeAgQIECBAgAABAgQIECBAgAABAgTaRkAAt22mSkcJECBAgAABAgQIECBAgAABAgQIEKibgABu3WbceAkQIECAAAECBAgQIECAAAECBAgQaBsBAdy2mSodJUCAAAECBAgQIECAAAECBAgQIECgbgICuHWbceMlQIAAAQIECBAgQIAAAQIECBAgQKBtBARw22aqdJQAAQIECBAgQIAAAQIECBAgQIAAgboJCODWbcaNlwABAgQIECBAgAABAgQIECBAgACBthEQwG2bqdJRAgQIECBAgAABAgQIECBAgAABAgTqJiCAW7cZN14CBAgQIECAAAECBAgQIECAAAECBNpGQAC3baZKRwkQIECAAAECBAgQIECAAAECBAgQqJuAAG7dZtx4CRAgQIAAAQIECBAgQIAAAQIECBBoGwEB3LaZKh0lQIAAAQIECBAgQIAAAQIECBAgQKBuAgK4dZtx4yVAgAABAgQIECBAgAABAgQIECBAoG0EBHDbZqp0lAABAgQIECBAgAABAgQIECBAgACBugkI4NZtxo2XAAECBAgQIECAAAECBAgQIECAAIG2ERDAbZup0lECBAgQIECAAAECBAgQIECAAAECBOomIIBbtxk3XgIECBAgQIAAAQIECBAgQIAAAQIE2kZAALdtpkpHCRAgQIAAAQIECBAgQIAAAQIECBCom8DI++67r25jNl4CBAgQIECAAAECBAgQIECAAAECBAi0hYAVuG0xTTpJgAABAgQIECBAgAABAgQIECBAgEAdBUa8/fbbjToO3JgJECBAgAABAgQIECBAgAABAgQIECAw3AWswB3uM6R/BAgQIECAAAECBAgQIECAAAECBAjUVkAAt7ZTb+AECBAgQIAAAQIECBAgQIAAAQIECAx3AQHc4T5D+keAAAECBAgQIECAAAECBAgQIECAQG0FBHBrO/UGToAAAQIECBAgQIAAAQIECBAgQIDAcBcQwB3uM6R/BAgQIECAAAECBAgQIECAAAECBAjUVkAAt7ZTb+AECBAgQIAAAQIECBAgQIAAAQIECAx3AQHc4T5D+keAAAECBAgQIECAAAECBAgQIECAQG0FBHBrO/UGToAAAQIECBAgQIAAAQIECBAgQIDAcBcQwB3uM6R/BAgQIECAAAECBAgQIECAAAECBAjUVmBkbUfex4E/9dRT6cknn0zXXXddH6/sufpcc82VVltttRSfY6M88sgjebPzzz//2GhemwQIECBAgAABAgQIECBAgAABAkMkIO4zRPDj+LZW4LYIfu211w568DZuXQSGW+yGagQIECBAgAABAgQIECBAgAABAgQI1EjACtwWJzsCrVEOPPDAFq9ordpee+2VB4ZjFa5CgAABAgQIECBAgAABAgQIECBAgACBqoAVuFUN2wQIECBAgAABAgQIECBAgAABAgQIEBhGAoOyAnew0wsU+WC32267YUSlKwQIECBAgAABAgQIECBAgAABAgQI9CRQxAkjvle8+6mn+s71LjDgAO4pp5yS53Ht/Vat1yjSFcSESy3QupuaBAgQIECAAAECBAgQIECAAAECBIZKoAjexv0jvlfE+MT3BjYjAw7gFhMhN+zAJqKOV1911VXp008/bXno8Yd94oknTn//+9/Tiy++mOacc860wAILtHy9iuO/wIcffpieeOKJ9OSTT+afL7/8cppuuunSzDPPnL785S+nL3zhC+M/wn9HeMMNN6RPPvkkLbzwwmmGGWaozbi7G+iYMWPS9ddfn55//vkUz8XIkSNzl/h7ZOWVV06TTz55d5c6Pp4K/Oc//ylfTjr11FOnJZZYoseRPvvssyne8DvppJOm5Zdfvse64/PJp59+Oj3++ONpyimnTEsv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EAJCQAgIASEgBISAEBACQkAICAEhIASEgBAQAhWFgAjcisouJVYICAEhIASEgBAQAkJACAgBISAEhIAQEAJCQAgIgYaEgAjchpTbelchIASEgBAQAkJACAgBISAEhIAQEAJCQAgIASEgBCoKARG4FZVdSqwQEAJCQAgIASEgBISAEBACQkAICAEhIASEgBAQAg0JARG4DSm39a5CQAgIASEgBISAEBACQkAICAEhIASEgBAQAkJACFQUAo0rKrVKbK0h0O/KFbUWlyKqvwhMubJV/X05vZkQEAJCQAgIASEgBISAEBACQkAICAEhIARqAYHGU6dOrYVoFEXlIdCl8pKsFJcdAqpfyi5LlCAhIASEgBAQAkJACAgBISAEhIAQEAJCoMIQkAmFCsswJVcICAEhIASEgBAQAkJACAgBISAEhIAQEAJCQAgIgYaDQKNvE9JwXldvKgSEgBAQAkJACAgBISAEKgOBcePG+YT27NmzMhKsVAoBISAEhIAQEAJCQAjUCALSwK0RWBWoEBACQkAICAEhIASEgBAQAkJACAgBISAEhIAQEAJCoHgEROAWj6FCEAJCQAgIASEgBISAEBACQkAICAEhIASEgBAQAkJACNQIAiJwawRWBSoEhIAQEAJCQAgIASEgBISAEBACQkAICAEhIASEgBAoHgERuMVjqBCEgBAQAkJACAgBISAEhIAQEAJCQAgIASEgBISAEBACNYKACNwagVWBCgEhIASEgBAQAkJACAgBISAEhIAQEAJCQAgIASEgBIpHQARu8RgqBCEgBISAEBACQkAICAEhIASEgBAQAkJACAgBISAEhECNICACt0ZgVaBCQAgIASEgBISAEBACQkAICAEhIASEgBAQAkJACAiB4hFoXHwQCkEI1E8E1q1bV+3FNt5442r3dEMICAEhIASEgBAQAkJACAgBISAEhIAQEAJCQAjUFAIVReB+8skn7ttvv3Xt2rVzrVu3zhuT6dOnu08//dRBwu2xxx55+5eH0iEwfvx4t2TJEte8eXO38847ly7gEoU0d+5cN3PmzGqhDRs2zLVs2bLafd0QAkJACAgBISAEhIAQEAJCQAgIASEgBISAEBACNYFAxRC4ELcfffSRx6Bjx46ub9++eeOxfv1674ew6lq++OILN23aNNeoUaOyJDBrGh/LAzvmG9+4cePcqlWrXKdO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gBAQAjkj0OjbhOTsWg6FgBAQAkJACAgBISAEhIAQqBUExo0b5+Pp2bNnrcSnSISAEBACQkAICAEhIATKE4Gy0MAtT2iUKiEgBISAEBACQkAICAEhIASEgBAQAkJACAgBISAEhEDdIiACt27xV+xCQAgIASEgBISAEBACQkAICAEhIASEgBAQAkJACAiBtAiIwE0LjR4IASEgBISAEBACQkAICAEhIASEgBAQAkJACAgBISAE6haBxnUbvWIXAkJACAgBISAEhIAQEAJCoBAEWrduXYg3+RECQkAICAEhUCsILF++vFbiUSRCoCEgIA3chpDLekchIASEgBAQAkJACAgBISAEhIAQEAJCQAgIASEgBCoSARG4FZltSrQQEAJCQAgIASEgBISAEBACQkAICAEhIASEgBAQAg0BARG4DSGX9Y5CQAgIASEgBISAEBACQkAICAEhIASEgBAQAkJACFQkAiJwKzLblGghIASEgBAQAkJACAgBISAEhIAQEAJCQAgIASEgBBoCAiJwG0Iu6x2FgBAQAkJACAgBISAEhIAQEAJCQAgIASEgBISAEKhIBETgVmS2KdFCQAgIASEgBISAEBACQkAICAEhIASEgBAQAkJACDQEBETgNoRc1jsKASEgBISAEBACQkAICAEhIASEgBAQAkJACAgBIVCRCIjArchsU6KFgBAQAkJACAgBISAEhIAQEAJCQAgIASEgBISAEGgICDRoAveREx9w127+327Cgx9UXF7fsetNPu2z35xZlmmfN2aum/Ofj92KhcuT6Vv3zTqfZjD/YvpnyfuVcLJ07pfJtK9ZvroSkqw0CgEhIASEgBAQAkJACAgBISAEhIAQEAJCQAjUAwQa14N3KPgVvln1jfe77pv1BYdRVx7XLF/jo/52zbq6SkLaeBdPXujuP/gu//zU1890rbZsXZXWb79N+lm/bsN58mY5nwTp/XZ9haW9nHFV2oSAEBACQkAICIEaRWDFihVu8uTJOcfRp08f16ZNGzdr1iz3+eefuw4dOrhu3bp5//Pnz3fz5s1zLVq0cNtuu23OYcqhEBACQkAICAEhIATqCwIvv/yye+WVV/zr7Lvvvm6//farlVdr0ARurSDcACMZffs7/q17HdTLbbFtxwaIgF5ZCAgBISAEhIAQEALlgcCiRYvcww8/nHNifvazn3kC99VXX/XE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JEACJFCICTAGbiGefA6dBEiABEiABEiABEjAdwnkJAau746KPcsrAitWrFCb2JUoUULq1q2rjrxqm+2QAAmQAAmQAAl4lwAFXO/yZG0kQAIkQAIkQAIkQAIk4BUCFHC9gpGVkAAJkAAJkAAJkECBJ5ARG6DAD4UDIAESIAESIAESIAESIAESIAESIAESIAESIAESIAH/IkAB17/mk6MhARIgARIgARIgARIgARIgARIgARIgARIgARLwIwIUcP1oMjkUEiABEiABEiABEiABEiABEiABEiABEiABEiAB/yJAAde/5pOjIQESIAESIAESIAESIAESIAESIAESIAESIAES8CMCFHD9aDI5FBIgARIgARIgARIgARIgARIgARIgARIgARIgAf8iQAHXv+aToyEBEiABEiABEiABEiABEiABEiABEiABEiABEvAjAhRw/WgyORQSIAESIAESIAESIAESIAESIAESIAESIAESIAH/IlDEv4bD0ZAACZAACZAACZAACZBA4SSwd+9euXDhgoSHh6ujSBH+q184XwkcNQmQAAmQAAmQgL8R4H91/jajHA8JkAAJkAAJkAAJkEChJDBu3Dg5dOiQOfarrrpK+vXrZ97zggRIgARIgARIgARIoGASYAiFgjlv7DUJkAAJkAAJkAAJkAAJ2BBo166dtGzZUsqWLavSly1bJps3b7bJwxsSIAESIAESIAESIIGCR4AeuAVvzthjEiABEiABEiABEiABEshEoEOHDirt8uXL8tprr8mpU6ckISFBGjZsmCkvE0iABEiABEiABEiABAoOAXrgFpy5Yk9JgARIgARIgARIgARIIFsCAQEBUrVqVZXv+PHj2eZnBhIgARIgARIgARIgAd8mQAHXt+eHvSMBEiABEiABEiABEiABtwkEBwerMtjUjEYCJEACJEACJEACJFCwCVDALdjzx96TAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAn4MQEKuH48uRwaCZAACZAACZAACZBA4SaQmppauAFw9CRAAiRAAiRAAiTgBwQo4PrBJHIIJEACJEACJEACJEACJGAlUKJECXWbmJgoly5dsj7iNQmQAAmQAAmQAAmQQAEjQAG3gE0Yu0sCJEACJEACJEACJEAC2RGoVq2aygLxdsOGDdll53MSIAESIAESIAESIAEfJhBw2TAf7h+7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EiABEiABEiABEiABEiABEiABEiABEqgbBCjg1o155ChIgARIgARIgARIgARIgARIgARIgARIgARIgATqIAEKuHVwUjkkEiABEiABEiABEiABEiABEiABEiABEiABEiCBukGAAm7dmEeOggRIgARIgARIgARIgARIgARIgARIgARIgARIoA4SoIBbByeVQyIBEiABEiABEiABEiABEiABEiABEiABEiABEqgbBALrxjBOzFEcO3ZMigqKnAYfGMxpdYLCBBIggRpHoLi4WAqL7H+H+fv5SWBg7f0dVlxULNis5ufvJwGBAdYkHpMACZAACZAACZAACZAACZAACZCA2wRq77dkt4dYdzPu+HebfH3uZKcB3rHpPqnXJMwp3VXC4fRD8tlp76tLExbcJiENQl1lY1olEXjmxf/Jdz/9Kjded6XccsM1ldRK3ar2smtvlj179sqzTzwkA/v3rVuDq+TRzJwzT1546XXp0iVa3n3tv5XcWvnVT/p4srz/8ed2GaM7tpdvv/zYLq2sk6XLVwqE4E4dO0jzZk3LyurTa2lLd0hRfqE07dJcwlvWN+te9Pp8mf/cHPMcB817tpDrZt9il1bWyebfkmTGf6ZLZHykjP/yirKy8hoJkAAJkAAJkAAJkAAJkAAJkMAJQIACbi2e5HqNQqXTyZ3UCPKP5Eva4jTbaI65P6hjhcWSvStbFThW7EFB95tgzjIIHC0oUFcLjhaWkYuXrAQg3mYeOChHjx61JvPYDQJ5efmKXdP9B9zIXflZolpFyoC+CaqhPXv3yrbUnR41CuH2xtv/T5V57MF75bxxZ3hU3tvMmUm75YvTbSLzdXNvshNwG7VtZP5ezjIekGUm7fO4mcK8AvV7+Uik7XezxxWwAAmQQJ0jkJiYWOfGxAGRAAmQAAmQAAmQAAm4T4ACrvusalzO5j1ayYVTrlT9giftO/H/87iPASGB0jIhUpXzD2RIZI8BskCVE4jt1lX27N0n9euXeD1WeSdqaYONGjaQrp07SXSnjjViBOPOHCvYYDNmzpIHH3u2RvSrvE4smbRIZek8trM07277/anLxF3YS7DBNv68Xn687lt9ye19aEQ99Xu5RWwLt8swIwmQAAmQAAmQAAmQAAmQAAmQQN0lQAG37s6tWyPDq7/X/HWTW3mZiQRqAoE3X3m+JnSjVvZh2JBBgo3mPYGs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Vlgs/sbiYQhpQCMBEiABEiABEiABEiABTwhoD1xPyjAvCZAACZAACZAACZBA3SNAD9xKmtOAwADDhdbYaCRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiTgJQEKuF6CYzESIAESIAESIAESIAESqAoCcXFxVdEM2yABEiABEiABEiABEqihBPhufw2dGHaLBEiABEiABEiABEiABEiABEiABEiABEiABEiABCjg8h4gARIgARIgARIgARIgARIgARIgARIgARIgARIggRpKgAJuDZ0YdosESIAESIAESIAESIAESIAESIAESIAESIAESIAEArm6LW8CEiABEiABEiABEiABEiABEiABEiABEiABEiABEqiZBOiBWzPnhb0iARIgARIgARIgARIgARIgARIgARIgARIgARIgAfE7Zhg5kAAJuCZw5MgR1xeqObV+/frV3AM2TwIkQAIkQAIkUNkE9JtycXFxldpUUVGRHD582KkN/H8jMDDQKZ0JJEACJEACJEACJKAJ4P8Rubm5+tTc16tXTwICAsxzHlSMAP9HVjF+LE0CJEACJEACJEACJEACtZrA7Nmz5bbbbnMaw3vvvSejRo1ySvdlwtGjR+W3336TDRs2qC9/hYWFMnbsWBk+fLgvm2FdJEACJEACJEAClURg1apVMmXKFKfaL7/8cunVq5dTelUn5OTkyBNPPKGavfPOO6VNmzZV3QWftEcB1ycYWQkJkAAJkAAJkAAJkAAJ1F4CY8aMUZ3fs2ePaM/f2NjYSh/QF198IVu2bFHtwNs3IiJC2rZtW+ntsgESIAESIAES8CWBTz75RPLy8tRDyI4dO/qy6grXdeDAAfnmm29UPdddd52EhIRUuE7HCtq3b6+S8EbP/v371XG7du0cs1XL+c6dO812mzdvbh7XtIPy5okCbk2bMfaHBEiABEiABEiABEiABKqQwCmnnCLYYH/88YfAO6Vp06bSsmXLSu1FWlqaKd5eccUVUhWCcaUOiJWTAAmQAAmckAQQejEpKUmNPSgoqMYx2LZtm6SkpIi/v78EBwf7vH99+/YVbLClS5fKtGnTVAimxo0b+7wtbyrcsWOHKtawYcNKGb83fXJVprx54iJmrqgxjQRIgARIgARIgARIgAROQALr1q1To+7Tp0+lj157+kIspnhb6bjZAAmQAAmQQCUR0AIhqm/V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"/><use stroke="#7E7C7B" xlink:href="#rect-1"/></g><g id="Default"><use fill="#000" filter="url(#filter-3)" xlink:href="#path-2"/><path fill="#FFF" stroke="#A7333A" d="M141.5 50.775l15.69 16.01h-6.488c.886 1.695 3.06 5.91 4.01 8.24.318.776-.979 2.324-.979 2.324h0l-2.42.151-4.2-8.574-5.613 5.727V50.775z"/></g></g></g></svg> \ No newline at end of file diff --git a/2-ui/1-document/02-dom-nodes/inspect@2x.png b/2-ui/1-document/02-dom-nodes/inspect@2x.png deleted file mode 100644 index 8743dd297..000000000 Binary files a/2-ui/1-document/02-dom-nodes/inspect@2x.png and /dev/null differ diff --git a/2-ui/1-document/03-dom-navigation/1-dom-children/task.md b/2-ui/1-document/03-dom-navigation/1-dom-children/task.md index 4a9e741a9..d97f2748a 100644 --- a/2-ui/1-document/03-dom-navigation/1-dom-children/task.md +++ b/2-ui/1-document/03-dom-navigation/1-dom-children/task.md @@ -4,7 +4,7 @@ importance: 5 # DOM children -For the page: +Look at this page: ```html <html> @@ -18,7 +18,7 @@ For the page: </html> ``` -How to access: +For each of the following, give at least one way of how to access them: - The `<div>` DOM node? - The `<ul>` DOM node? - The second `<li>` (with Pete)? diff --git a/2-ui/1-document/03-dom-navigation/3-navigation-links-which-null/solution.md b/2-ui/1-document/03-dom-navigation/3-navigation-links-which-null/solution.md index e962eb662..d76936320 100644 --- a/2-ui/1-document/03-dom-navigation/3-navigation-links-which-null/solution.md +++ b/2-ui/1-document/03-dom-navigation/3-navigation-links-which-null/solution.md @@ -1,4 +1,6 @@ -1. Yes, true. The element `elem.lastChild` is always the last one, it has no `nextSibling`, so if there are children, then yes. -2. No, wrong, because `elem.children[0]` is the first child among elements. But there may be non-element nodes before it. So `previousSibling` may be a text node. +1. Yes, true. The element `elem.lastChild` is always the last one, it has no `nextSibling`. +2. No, wrong, because `elem.children[0]` is the first child *among elements*. But there may exist non-element nodes before it. So `previousSibling` may be a text node. -Please note that for both cases if there are no children, then there will be an error. For instance, if `elem.lastChild` is `null`, we can't access `elem.lastChild.nextSibling`. +Please note: for both cases if there are no children, then there will be an error. + +If there are no children, `elem.lastChild` is `null`, so we can't access `elem.lastChild.nextSibling`. And the collection `elem.children` is empty (like an empty array `[]`). diff --git a/2-ui/1-document/03-dom-navigation/article.md b/2-ui/1-document/03-dom-navigation/article.md index 80054f9d7..b5f03098c 100644 --- a/2-ui/1-document/03-dom-navigation/article.md +++ b/2-ui/1-document/03-dom-navigation/article.md @@ -7,9 +7,9 @@ libs: # Walking the DOM -The DOM allows us to do anything with elements and their contents, but first we need to reach the corresponding DOM object, get it into a variable, and then we are able to modify it. +The DOM allows us to do anything with elements and their contents, but first we need to reach the corresponding DOM object. -All operations on the DOM start with the `document` object. From it we can access any node. +All operations on the DOM start with the `document` object. That's the main "entry point" to DOM. From it we can access any node. Here's a picture of links that allow for travel between DOM nodes: @@ -22,7 +22,7 @@ Let's discuss them in more detail. The topmost tree nodes are available directly as `document` properties: `<html>` = `document.documentElement` -: The topmost document node is `document.documentElement`. That's DOM node of `<html>` tag. +: The topmost document node is `document.documentElement`. That's the DOM node of the `<html>` tag. `<body>` = `document.body` : Another widely used DOM node is the `<body>` element -- `document.body`. @@ -86,9 +86,9 @@ For instance, here `<body>` has children `<div>` and `<ul>` (and few blank text </html> ``` -...And if we ask for all descendants of `<body>`, then we get direct children `<div>`, `<ul>` and also more nested elements like `<li>` (being a child of `<ul>`) and `<b>` (being a child of `<li>`) -- the entire subtree. +...And descendants of `<body>` are not only direct children `<div>`, `<ul>` but also more deeply nested elements, such as `<li>` (a child of `<ul>`) and `<b>` (a child of `<li>`) -- the entire subtree. -**The `childNodes` collection provides access to all child nodes, including text nodes.** +**The `childNodes` collection lists all child nodes, including text nodes.** The example below shows children of `document.body`: @@ -149,7 +149,7 @@ There are two important consequences: The first thing is nice. The second is tolerable, because we can use `Array.from` to create a "real" array from the collection, if we want array methods: ```js run - alert( Array.from(document.body.childNodes).filter ); // now it's there + alert( Array.from(document.body.childNodes).filter ); // function ``` ```warn header="DOM collections are read-only" @@ -182,35 +182,39 @@ Please, don't. The `for..in` loop iterates over all enumerable properties. And c ## Siblings and the parent -*Siblings* are nodes that are children of the same parent. For instance, `<head>` and `<body>` are siblings: +*Siblings* are nodes that are children of the same parent. + +For instance, here `<head>` and `<body>` are siblings: + +```html +<html> + <head>...</head><body>...</body> +</html> +``` - `<body>` is said to be the "next" or "right" sibling of `<head>`, - `<head>` is said to be the "previous" or "left" sibling of `<body>`. -The parent is available as `parentNode`. +The next sibling is in `nextSibling` property, and the previous one - in `previousSibling`. -The next node in the same parent (next sibling) is `nextSibling`, and the previous one is `previousSibling`. +The parent is available as `parentNode`. -For instance: +For example: -```html run -<html><head></head><body><script> - // HTML is "dense" to evade extra "blank" text nodes. - - // parent of <body> is <html> - alert( document.body.parentNode === document.documentElement ); // true +```js run +// parent of <body> is <html> +alert( document.body.parentNode === document.documentElement ); // true - // after <head> goes <body> - alert( document.head.nextSibling ); // HTMLBodyElement +// after <head> goes <body> +alert( document.head.nextSibling ); // HTMLBodyElement - // before <body> goes <head> - alert( document.body.previousSibling ); // HTMLHeadElement -</script></body></html> +// before <body> goes <head> +alert( document.body.previousSibling ); // HTMLHeadElement ``` ## Element-only navigation -Navigation properties listed above refer to *all* nodes. For instance, in `childNodes` we can see both text nodes, element nodes, and even comment nodes if there exist. +Navigation properties listed above refer to *all* nodes. For instance, in `childNodes` we can see both text nodes, element nodes, and even comment nodes if they exist. But for many tasks we don't want text or comment nodes. We want to manipulate element nodes that represent tags and form the structure of the page. @@ -222,7 +226,7 @@ The links are similar to those given above, just with `Element` word inside: - `children` -- only those children that are element nodes. - `firstElementChild`, `lastElementChild` -- first and last element children. -- `previousElementSibling`, `nextElementSibling` -- neighbour elements. +- `previousElementSibling`, `nextElementSibling` -- neighbor elements. - `parentElement` -- parent element. ````smart header="Why `parentElement`? Can the parent be *not* an element?" @@ -235,12 +239,12 @@ alert( document.documentElement.parentNode ); // document alert( document.documentElement.parentElement ); // null ``` -In other words, the `documentElement` (`<html>`) is the root node. Formally, it has `document` as its parent. But `document` is not an element node, so `parentNode` returns it and `parentElement` does not. +The reason is that the root node `document.documentElement` (`<html>`) has `document` as its parent. But `document` is not an element node, so `parentNode` returns it and `parentElement` does not. -This loop travels up from an arbitrary element `elem` to `<html>`, but not to the `document`: +This detail may be useful when we want to travel up from an arbitrary element `elem` to `<html>`, but not to the `document`: ```js -while(elem = elem.parentElement) { - alert( elem ); // parent chain till <html> +while(elem = elem.parentElement) { // go up till <html> + alert( elem ); } ``` ```` @@ -276,12 +280,12 @@ Till now we described the basic navigation properties. Certain types of DOM elements may provide additional properties, specific to their type, for convenience. -Tables are a great example and important particular case of that. +Tables are a great example of that, and represent a particularly important case: **The `<table>`** element supports (in addition to the given above) these properties: - `table.rows` -- the collection of `<tr>` elements of the table. - `table.caption/tHead/tFoot` -- references to elements `<caption>`, `<thead>`, `<tfoot>`. -- `table.tBodies` -- the collection of `<tbody>` elements (can be many according to the standard). +- `table.tBodies` -- the collection of `<tbody>` elements (can be many according to the standard, but there will always be at least one -- even if it is not in the source HTML, the browser will put it in the DOM). **`<thead>`, `<tfoot>`, `<tbody>`** elements provide the `rows` property: - `tbody.rows` -- the collection of `<tr>` inside. @@ -307,8 +311,9 @@ An example of usage: </table> <script> - // get the content of the first row, second cell - alert( table.*!*rows[0].cells[1]*/!*.innerHTML ) // "two" + // get td with "two" (first row, second column) + let td = table.*!*rows[0].cells[1]*/!*; + td.style.backgroundColor = "red"; // highlight it </script> ``` @@ -316,9 +321,9 @@ The specification: [tabular data](https://html.spec.whatwg.org/multipage/tables. There are also additional navigation properties for HTML forms. We'll look at them later when we start working with forms. -# Summary +## Summary -Given a DOM node, we can go to its immediate neighbours using navigation properties. +Given a DOM node, we can go to its immediate neighbors using navigation properties. There are two main sets of them: diff --git a/2-ui/1-document/04-searching-elements-dom/1-find-elements/solution.md b/2-ui/1-document/04-searching-elements-dom/1-find-elements/solution.md index c7080388e..c73aecd99 100644 --- a/2-ui/1-document/04-searching-elements-dom/1-find-elements/solution.md +++ b/2-ui/1-document/04-searching-elements-dom/1-find-elements/solution.md @@ -11,15 +11,15 @@ table.getElementsByTagName('label') // or document.querySelectorAll('#age-table label') -// 3. The first td in that table (with the word "Age"). +// 3. The first td in that table (with the word "Age") table.rows[0].cells[0] // or table.getElementsByTagName('td')[0] // or table.querySelector('td') -// 4. The form with the name "search". -// assuming there's only one element with name="search" +// 4. The form with the name "search" +// assuming there's only one element with name="search" in the document let form = document.getElementsByName('search')[0] // or, form specifically document.querySelector('form[name="search"]') @@ -29,8 +29,7 @@ form.getElementsByTagName('input')[0] // or form.querySelector('input') -// 6. The last input in that form. -// there's no direct query for that -let inputs = form.querySelectorAll('input') // search all -inputs[inputs.length-1] // take last +// 6. The last input in that form +let inputs = form.querySelectorAll('input') // find all inputs +inputs[inputs.length-1] // take the last one ``` diff --git a/2-ui/1-document/04-searching-elements-dom/1-find-elements/task.md b/2-ui/1-document/04-searching-elements-dom/1-find-elements/task.md index 4d4faeb2a..f0b54beac 100644 --- a/2-ui/1-document/04-searching-elements-dom/1-find-elements/task.md +++ b/2-ui/1-document/04-searching-elements-dom/1-find-elements/task.md @@ -6,12 +6,12 @@ importance: 4 Here's the document with the table and form. -How to find? +How to find?... 1. The table with `id="age-table"`. 2. All `label` elements inside that table (there should be 3 of them). 3. The first `td` in that table (with the word "Age"). -4. The `form` with the name `search`. +4. The `form` with `name="search"`. 5. The first `input` in that form. 6. The last `input` in that form. diff --git a/2-ui/1-document/04-searching-elements-dom/article.md b/2-ui/1-document/04-searching-elements-dom/article.md index 18ce24eba..405129694 100644 --- a/2-ui/1-document/04-searching-elements-dom/article.md +++ b/2-ui/1-document/04-searching-elements-dom/article.md @@ -6,9 +6,27 @@ There are additional searching methods for that. ## document.getElementById or just id -If an element has the `id` attribute, then there's a global variable by the name from that `id`. +If an element has the `id` attribute, we can get the element using the method `document.getElementById(id)`, no matter where it is. -We can use it to immediately access the element no matter where it is: +For instance: + +```html run +<div id="elem"> + <div id="elem-content">Element</div> +</div> + +<script> + // get the element +*!* + let elem = document.getElementById('elem'); +*/!* + + // make its background red + elem.style.background = 'red'; +</script> +``` + +Also, there's a global variable named by `id` that references the element: ```html run <div id="*!*elem*/!*"> @@ -16,57 +34,44 @@ We can use it to immediately access the element no matter where it is: </div> <script> - alert(elem); // DOM-element with id="elem" - alert(window.elem); // accessing global variable like this also works + // elem is a reference to DOM-element with id="elem" + elem.style.background = 'red'; - // for elem-content things are a bit more complex - // that has a dash inside, so it can't be a variable name - alert(window['elem-content']); // ...but accessible using square brackets [...] + // id="elem-content" has a hyphen inside, so it can't be a variable name + // ...but we can access it using square brackets: window['elem-content'] </script> ``` -The behavior is described [in the specification](http://www.whatwg.org/specs/web-apps/current-work/#dom-window-nameditem), but it is supported mainly for compatibility. The browser tries to help us by mixing namespaces of JS and DOM. Good for very simple scripts, but there may be name conflicts. Also, when we look in JS and don't have HTML in view, it's not obvious where the variable comes from. - -If we declare a variable with the same name, it takes precedence: +...That's unless we declare a JavaScript variable with the same name, then it takes precedence: ```html run untrusted height=0 <div id="elem"></div> <script> - let elem = 5; + let elem = 5; // now elem is 5, not a reference to <div id="elem"> - alert(elem); // the variable overrides the element + alert(elem); // 5 </script> ``` -The better alternative is to use a special method `document.getElementById(id)`. - -For instance: +```warn header="Please don't use id-named global variables to access elements" +This behavior is described [in the specification](https://html.spec.whatwg.org/multipage/window-object.html#named-access-on-the-window-object), but it is supported mainly for compatibility. -```html run -<div id="elem"> - <div id="elem-content">Element</div> -</div> +The browser tries to help us by mixing namespaces of JS and DOM. That's fine for simple scripts, inlined into HTML, but generally isn't a good thing. There may be naming conflicts. Also, when one reads JS code and doesn't have HTML in view, it's not obvious where the variable comes from. -<script> -*!* - let elem = document.getElementById('elem'); -*/!* +Here in the tutorial we use `id` to directly reference an element for brevity, when it's obvious where the element comes from. - elem.style.background = 'red'; -</script> +In real life `document.getElementById` is the preferred method. ``` -Here in the tutorial we'll often use `id` to directly reference an element, but that's only to keep things short. In real life `document.getElementById` is the preferred method. - -```smart header="There can be only one" +```smart header="The `id` must be unique" The `id` must be unique. There can be only one element in the document with the given `id`. -If there are multiple elements with the same `id`, then the behavior of corresponding methods is unpredictable. The browser may return any of them at random. So please stick to the rule and keep `id` unique. +If there are multiple elements with the same `id`, then the behavior of methods that use it is unpredictable, e.g. `document.getElementById` may return any of such elements at random. So please stick to the rule and keep `id` unique. ``` -```warn header="Only `document.getElementById`, not `anyNode.getElementById`" -The method `getElementById` that can be called only on `document` object. It looks for the given `id` in the whole document. +```warn header="Only `document.getElementById`, not `anyElem.getElementById`" +The method `getElementById` can be called only on `document` object. It looks for the given `id` in the whole document. ``` ## querySelectorAll [#querySelectorAll] @@ -98,22 +103,22 @@ Here we look for all `<li>` elements that are last children: This method is indeed powerful, because any CSS selector can be used. ```smart header="Can use pseudo-classes as well" -Pseudo-classes in the CSS selector like `:hover` and `:active` are also supported. For instance, `document.querySelectorAll(':hover')` will return the collection with elements that the pointer is over now (in nesting order: from the outermost `<html>` to the most nested one). +Pseudo-classes in the CSS selector like `:hover` and `:active` are also supported. For instance, `document.querySelectorAll(':hover')` will return the collection with elements that the pointer is over now (in nesting order: from the outermost `<html>` to the most nested one). ``` ## querySelector [#querySelector] The call to `elem.querySelector(css)` returns the first element for the given CSS selector. -In other words, the result is the same as `elem.querySelectorAll(css)[0]`, but the latter is looking for *all* elements and picking one, while `elem.querySelector` just looks for one. So it's faster and shorter to write. +In other words, the result is the same as `elem.querySelectorAll(css)[0]`, but the latter is looking for *all* elements and picking one, while `elem.querySelector` just looks for one. So it's faster and also shorter to write. ## matches Previous methods were searching the DOM. -The [elem.matches(css)](http://dom.spec.whatwg.org/#dom-element-matches) does not look for anything, it merely checks if `elem` matches the given CSS-selector. It returns `true` or `false`. +The [elem.matches(css)](https://dom.spec.whatwg.org/#dom-element-matches) does not look for anything, it merely checks if `elem` matches the given CSS-selector. It returns `true` or `false`. -The method comes handy when we are iterating over elements (like in array or something) and trying to filter those that interest us. +The method comes in handy when we are iterating over elements (like in an array or something) and trying to filter out those that interest us. For instance: @@ -137,7 +142,7 @@ For instance: *Ancestors* of an element are: parent, the parent of parent, its parent and so on. The ancestors together form the chain of parents from the element to the top. -The method `elem.closest(css)` looks the nearest ancestor that matches the CSS-selector. The `elem` itself is also included in the search. +The method `elem.closest(css)` looks for the nearest ancestor that matches the CSS-selector. The `elem` itself is also included in the search. In other words, the method `closest` goes up from the element and checks each of parents. If it matches the selector, then the search stops, and the ancestor is returned. @@ -149,7 +154,7 @@ For instance: <div class="contents"> <ul class="book"> <li class="chapter">Chapter 1</li> - <li class="chapter">Chapter 1</li> + <li class="chapter">Chapter 2</li> </ul> </div> @@ -172,8 +177,8 @@ Today, they are mostly history, as `querySelector` is more powerful and shorter So here we cover them mainly for completeness, while you can still find them in the old scripts. - `elem.getElementsByTagName(tag)` looks for elements with the given tag and returns the collection of them. The `tag` parameter can also be a star `"*"` for "any tags". -- `elem.getElementsByClassName(className)` returns elements that have the given CSS class. Elements may have other classes too. -- `document.getElementsByName(name)` returns elements with the given `name` attribute, document-wide. very rarely used. +- `elem.getElementsByClassName(className)` returns elements that have the given CSS class. +- `document.getElementsByName(name)` returns elements with the given `name` attribute, document-wide. Very rarely used. For instance: ```js @@ -305,8 +310,6 @@ If we use it instead, then both scripts output `1`: Now we can easily see the difference. The static collection did not increase after the appearance of a new `div` in the document. -Here we used separate scripts to illustrate how the element addition affects the collection, but any DOM manipulations affect them. Soon we'll see more of them. - ## Summary There are 6 main methods to search for nodes in DOM: @@ -360,12 +363,12 @@ There are 6 main methods to search for nodes in DOM: </tbody> </table> -By far the most used are `querySelector` and `querySelectorAll`, but `getElementBy*` can be sporadically helpful or found in the old scripts. +By far the most used are `querySelector` and `querySelectorAll`, but `getElement(s)By*` can be sporadically helpful or found in the old scripts. Besides that: - There is `elem.matches(css)` to check if `elem` matches the given CSS selector. - There is `elem.closest(css)` to look for the nearest ancestor that matches the given CSS-selector. The `elem` itself is also checked. -And let's mention one more method here to check for the child-parent relationship: +And let's mention one more method here to check for the child-parent relationship, as it's sometimes useful: - `elemA.contains(elemB)` returns true if `elemB` is inside `elemA` (a descendant of `elemA`) or when `elemA==elemB`. diff --git a/2-ui/1-document/05-basic-dom-node-properties/2-tree-info/solution.md b/2-ui/1-document/05-basic-dom-node-properties/2-tree-info/solution.md index 781b7a929..0088882c2 100644 --- a/2-ui/1-document/05-basic-dom-node-properties/2-tree-info/solution.md +++ b/2-ui/1-document/05-basic-dom-node-properties/2-tree-info/solution.md @@ -6,7 +6,9 @@ for (let li of document.querySelectorAll('li')) { } ``` -In the loop we need to get the text inside every `li`. We can read it directly from the first child node, that is the text node: +In the loop we need to get the text inside every `li`. + +We can read the text from the first child node of `li`, that is the text node: ```js for (let li of document.querySelectorAll('li')) { @@ -16,4 +18,4 @@ for (let li of document.querySelectorAll('li')) { } ``` -Then we can get the number of descendants `li.getElementsByTagName('li')`. +Then we can get the number of descendants as `li.getElementsByTagName('li').length`. diff --git a/2-ui/1-document/05-basic-dom-node-properties/4-where-document-in-hierarchy/solution.md b/2-ui/1-document/05-basic-dom-node-properties/4-where-document-in-hierarchy/solution.md index db7ebc9d8..cb9456717 100644 --- a/2-ui/1-document/05-basic-dom-node-properties/4-where-document-in-hierarchy/solution.md +++ b/2-ui/1-document/05-basic-dom-node-properties/4-where-document-in-hierarchy/solution.md @@ -27,7 +27,7 @@ Also, there's a reference to the constructor function inside the `prototype`: alert(HTMLDocument.prototype.constructor === HTMLDocument); // true ``` -For built-in classes in all prototypes there's a `constructor` reference, and we can get `constructor.name` to see the name of the class. Let's do it for all objects in the `document` prototype chain: +To get a name of the class as a string, we can use `constructor.name`. Let's do it for the whole `document` prototype chain, till class `Node`: ```js run alert(HTMLDocument.prototype.constructor.name); // HTMLDocument @@ -35,4 +35,6 @@ alert(HTMLDocument.prototype.__proto__.constructor.name); // Document alert(HTMLDocument.prototype.__proto__.__proto__.constructor.name); // Node ``` +That's the hierarchy. + We also could examine the object using `console.dir(document)` and see these names by opening `__proto__`. The console takes them from `constructor` internally. diff --git a/2-ui/1-document/05-basic-dom-node-properties/article.md b/2-ui/1-document/05-basic-dom-node-properties/article.md index e43040ba7..99dde5bcd 100644 --- a/2-ui/1-document/05-basic-dom-node-properties/article.md +++ b/2-ui/1-document/05-basic-dom-node-properties/article.md @@ -2,15 +2,15 @@ Let's get a more in-depth look at DOM nodes. -In this chapter we'll see more into what they are and their most used properties. +In this chapter we'll see more into what they are and learn their most used properties. ## DOM node classes -DOM nodes have different properties depending on their class. For instance, an element node corresponding to tag `<a>` has link-related properties, and the one corresponding to `<input>` has input-related properties and so on. Text nodes are not the same as element nodes. But there are also common properties and methods between all of them, because all classes of DOM nodes form a single hierarchy. +Different DOM nodes may have different properties. For instance, an element node corresponding to tag `<a>` has link-related properties, and the one corresponding to `<input>` has input-related properties and so on. Text nodes are not the same as element nodes. But there are also common properties and methods between all of them, because all classes of DOM nodes form a single hierarchy. Each DOM node belongs to the corresponding built-in class. -The root of the hierarchy is [EventTarget](https://dom.spec.whatwg.org/#eventtarget), that is inherited by [Node](http://dom.spec.whatwg.org/#interface-node), and other DOM nodes inherit from it. +The root of the hierarchy is [EventTarget](https://dom.spec.whatwg.org/#eventtarget), that is inherited by [Node](https://dom.spec.whatwg.org/#interface-node), and other DOM nodes inherit from it. Here's the picture, explanations to follow: @@ -18,27 +18,52 @@ Here's the picture, explanations to follow: The classes are: -- [EventTarget](https://dom.spec.whatwg.org/#eventtarget) -- is the root "abstract" class. Objects of that class are never created. It serves as a base, so that all DOM nodes support so-called "events", we'll study them later. -- [Node](http://dom.spec.whatwg.org/#interface-node) -- is also an "abstract" class, serving as a base for DOM nodes. It provides the core tree functionality: `parentNode`, `nextSibling`, `childNodes` and so on (they are getters). Objects of `Node` class are never created. But there are concrete node classes that inherit from it, namely: `Text` for text nodes, `Element` for element nodes and more exotic ones like `Comment` for comment nodes. -- [Element](http://dom.spec.whatwg.org/#interface-element) -- is a base class for DOM elements. It provides element-level navigation like `nextElementSibling`, `children` and searching methods like `getElementsByTagName`, `querySelector`. In the browser there may be not only HTML, but also XML and SVG documents. The `Element` class serves as a base for more specific classes: `SVGElement`, `XMLElement` and `HTMLElement`. -- [HTMLElement](https://html.spec.whatwg.org/multipage/dom.html#htmlelement) -- is finally the basic class for all HTML elements. It is inherited by various HTML elements: +- [EventTarget](https://dom.spec.whatwg.org/#eventtarget) -- is the root "abstract" class for everything. + + Objects of that class are never created. It serves as a base, so that all DOM nodes support so-called "events", we'll study them later. + +- [Node](https://dom.spec.whatwg.org/#interface-node) -- is also an "abstract" class, serving as a base for DOM nodes. + + It provides the core tree functionality: `parentNode`, `nextSibling`, `childNodes` and so on (they are getters). Objects of `Node` class are never created. But there are other classes that inherit from it (and so inherit the `Node` functionality). + +- [Document](https://dom.spec.whatwg.org/#interface-document), for historical reasons often inherited by `HTMLDocument` (though the latest spec doesn't dictate it) -- is a document as a whole. + + The `document` global object belongs exactly to this class. It serves as an entry point to the DOM. + +- [CharacterData](https://dom.spec.whatwg.org/#interface-characterdata) -- an "abstract" class, inherited by: + - [Text](https://dom.spec.whatwg.org/#interface-text) -- the class corresponding to a text inside elements, e.g. `Hello` in `<p>Hello</p>`. + - [Comment](https://dom.spec.whatwg.org/#interface-comment) -- the class for comments. They are not shown, but each comment becomes a member of DOM. + +- [Element](https://dom.spec.whatwg.org/#interface-element) -- is the base class for DOM elements. + + It provides element-level navigation like `nextElementSibling`, `children` and searching methods like `getElementsByTagName`, `querySelector`. + + A browser supports not only HTML, but also XML and SVG. So the `Element` class serves as a base for more specific classes: `SVGElement`, `XMLElement` (we don't need them here) and `HTMLElement`. + +- Finally, [HTMLElement](https://html.spec.whatwg.org/multipage/dom.html#htmlelement) is the basic class for all HTML elements. We'll work with it most of the time. + + It is inherited by concrete HTML elements: - [HTMLInputElement](https://html.spec.whatwg.org/multipage/forms.html#htmlinputelement) -- the class for `<input>` elements, - [HTMLBodyElement](https://html.spec.whatwg.org/multipage/semantics.html#htmlbodyelement) -- the class for `<body>` elements, - - [HTMLAnchorElement](https://html.spec.whatwg.org/multipage/semantics.html#htmlanchorelement) -- the class for `<a>` elements - - ...and so on, each tag has its own class that may provide specific properties and methods. + - [HTMLAnchorElement](https://html.spec.whatwg.org/multipage/semantics.html#htmlanchorelement) -- the class for `<a>` elements, + - ...and so on. + +There are many other tags with their own classes that may have specific properties and methods, while some elements, such as `<span>`, `<section>`, `<article>` do not have any specific properties, so they are instances of `HTMLElement` class. + +So, the full set of properties and methods of a given node comes as the result of the chain of inheritance. -So, the full set of properties and methods of a given node comes as the result of the inheritance. +For example, let's consider the DOM object for an `<input>` element. It belongs to [HTMLInputElement](https://html.spec.whatwg.org/multipage/forms.html#htmlinputelement) class. -For example, let's consider the DOM object for an `<input>` element. It belongs to [HTMLInputElement](https://html.spec.whatwg.org/multipage/forms.html#htmlinputelement) class. It gets properties and methods as a superposition of: +It gets properties and methods as a superposition of (listed in inheritance order): -- `HTMLInputElement` -- this class provides input-specific properties, and inherits from... -- `HTMLElement` -- it provides common HTML element methods (and getters/setters) and inherits from... -- `Element` -- provides generic element methods and inherits from... -- `Node` -- provides common DOM node properties and inherits from... +- `HTMLInputElement` -- this class provides input-specific properties, +- `HTMLElement` -- it provides common HTML element methods (and getters/setters), +- `Element` -- provides generic element methods, +- `Node` -- provides common DOM node properties, - `EventTarget` -- gives the support for events (to be covered), -- ...and finally it inherits from `Object`, so "pure object" methods like `hasOwnProperty` are also available. +- ...and finally it inherits from `Object`, so "plain object" methods like `hasOwnProperty` are also available. -To see the DOM node class name, we can recall that an object usually has the `constructor` property. It references to the class constructor, and `constructor.name` is its name: +To see the DOM node class name, we can recall that an object usually has the `constructor` property. It references the class constructor, and `constructor.name` is its name: ```js run alert( document.body.constructor.name ); // HTMLBodyElement @@ -76,7 +101,7 @@ Try it on `document.body`. ``` ````smart header="IDL in the spec" -In the specification, classes are described not using JavaScript, but a special [Interface description language](https://en.wikipedia.org/wiki/Interface_description_language) (IDL), that is usually easy to understand. +In the specification, DOM classes aren't described by using JavaScript, but a special [Interface description language](https://en.wikipedia.org/wiki/Interface_description_language) (IDL), that is usually easy to understand. In IDL all properties are prepended with their types. For instance, `DOMString`, `boolean` and so on. @@ -91,7 +116,7 @@ interface HTMLInputElement: HTMLElement { // here go properties and methods of <input> elements *!* - // "DOMString" means that the value of these properties are strings + // "DOMString" means that the value of a property is a string */!* attribute DOMString accept; attribute DOMString alt; @@ -110,13 +135,11 @@ interface HTMLInputElement: HTMLElement { ... } ``` - -Other classes are somewhat similar. ```` ## The "nodeType" property -The `nodeType` property provides an old-fashioned way to get the "type" of a DOM node. +The `nodeType` property provides one more, "old-fashioned" way to get the "type" of a DOM node. It has a numeric value: - `elem.nodeType == 1` for element nodes, @@ -128,13 +151,13 @@ For instance: ```html run <body> - <script> + <script> let elem = document.body; - // let's examine what it is? + // let's examine: what type of node is in elem? alert(elem.nodeType); // 1 => element - // and the first child is... + // and its first child is... alert(elem.firstChild.nodeType); // 3 => text // for the document object, the type is 9 @@ -156,7 +179,7 @@ alert( document.body.nodeName ); // BODY alert( document.body.tagName ); // BODY ``` -Is there any difference between tagName and nodeName? +Is there any difference between `tagName` and `nodeName`? Sure, the difference is reflected in their names, but is indeed a bit subtle. @@ -175,20 +198,19 @@ For instance, let's compare `tagName` and `nodeName` for the `document` and a co <script> // for comment - alert( document.body.firstChild.tagName ); // undefined (no element) + alert( document.body.firstChild.tagName ); // undefined (not an element) alert( document.body.firstChild.nodeName ); // #comment // for document - alert( document.tagName ); // undefined (not element) + alert( document.tagName ); // undefined (not an element) alert( document.nodeName ); // #document </script> </body> ``` -If we only deal with elements, then `tagName` is the only thing we should use. +If we only deal with elements, then we can use both `tagName` and `nodeName` - there's no difference. - -```smart header="The tag name is always uppercase except XHTML" +```smart header="The tag name is always uppercase except in XML mode" The browser has two modes of processing documents: HTML and XML. Usually the HTML-mode is used for webpages. XML-mode is enabled when the browser receives an XML-document with the header: `Content-Type: application/xml+xhtml`. In HTML mode `tagName/nodeName` is always uppercased: it's `BODY` either for `<body>` or `<BoDy>`. @@ -199,9 +221,9 @@ In XML mode the case is kept "as is". Nowadays XML mode is rarely used. ## innerHTML: the contents -The [innerHTML](https://w3c.github.io/DOM-Parsing/#widl-Element-innerHTML) property allows to get the HTML inside the element as a string. +The [innerHTML](https://w3c.github.io/DOM-Parsing/#the-innerhtml-mixin) property allows to get the HTML inside the element as a string. -We can also modify it. So it's one of most powerful ways to change the page. +We can also modify it. So it's one of the most powerful ways to change the page. The example shows the contents of `document.body` and then replaces it completely: @@ -232,14 +254,12 @@ We can try to insert invalid HTML, the browser will fix our errors: ``` ```smart header="Scripts don't execute" -If `innerHTML` inserts a `<script>` tag into the document -- it doesn't execute. - -It becomes a part of HTML, just as a script that has already run. +If `innerHTML` inserts a `<script>` tag into the document -- it becomes a part of HTML, but doesn't execute. ``` ### Beware: "innerHTML+=" does a full overwrite -We can append "more HTML" by using `elem.innerHTML+="something"`. +We can append HTML to an element by using `elem.innerHTML+="more html"`. Like this: @@ -287,7 +307,7 @@ Here's an example: </script> ``` -**Beware: unlike `innerHTML`, writing to `outerHTML` does not change the element. Instead, it replaces it as a whole in the outer context.** +**Beware: unlike `innerHTML`, writing to `outerHTML` does not change the element. Instead, it replaces it in the DOM.** Yeah, sounds strange, and strange it is, that's why we make a separate note about it here. Take a look. @@ -302,32 +322,37 @@ Consider the example: *!* // replace div.outerHTML with <p>...</p> */!* - div.outerHTML = '<p>A new element!</p>'; // (*) + div.outerHTML = '<p>A new element</p>'; // (*) *!* - // Wow! The div is still the same! + // Wow! 'div' is still the same! */!* - alert(div.outerHTML); // <div>Hello, world!</div> + alert(div.outerHTML); // <div>Hello, world!</div> (**) </script> ``` -In the line `(*)` we take the full HTML of `<div>...</div>` and replace it by `<p>...</p>`. In the outer document we can see the new content instead of the `<div>`. But the old `div` variable is still the same. +Looks really odd, right? -The `outerHTML` assignment does not modify the DOM element, but extracts it from the outer context and inserts a new piece of HTML instead of it. +In the line `(*)` we replaced `div` with `<p>A new element</p>`. In the outer document (the DOM) we can see the new content instead of the `<div>`. But, as we can see in line `(**)`, the value of the old `div` variable hasn't changed! -Novice developers sometimes make an error here: they modify `div.outerHTML` and then continue to work with `div` as if it had the new content in it. +The `outerHTML` assignment does not modify the DOM element (the object referenced by, in this case, the variable 'div'), but removes it from the DOM and inserts the new HTML in its place. -That's possible with `innerHTML`, but not with `outerHTML`. +So what happened in `div.outerHTML=...` is: +- `div` was removed from the document. +- Another piece of HTML `<p>A new element</p>` was inserted in its place. +- `div` still has its old value. The new HTML wasn't saved to any variable. -We can write to `outerHTML`, but should keep in mind that it doesn't change the element we're writing to. It creates the new content on its place instead. We can get a reference to new elements by querying DOM. +It's so easy to make an error here: modify `div.outerHTML` and then continue to work with `div` as if it had the new content in it. But it doesn't. Such thing is correct for `innerHTML`, but not for `outerHTML`. + +We can write to `elem.outerHTML`, but should keep in mind that it doesn't change the element we're writing to ('elem'). It puts the new HTML in its place instead. We can get references to the new elements by querying the DOM. ## nodeValue/data: text node content The `innerHTML` property is only valid for element nodes. -Other node types have their counterpart: `nodeValue` and `data` properties. These two are almost the same for practical use, there are only minor specification differences. So we'll use `data`, because it's shorter. +Other node types, such as text nodes, have their counterpart: `nodeValue` and `data` properties. These two are almost the same for practical use, there are only minor specification differences. So we'll use `data`, because it's shorter. -We can read it, like this: +An example of reading the content of a text node and a comment: ```html run height="50" <body> @@ -347,7 +372,9 @@ We can read it, like this: </body> ``` -For text nodes we can imagine a reason to read or modify them, but why comments? Usually, they are not interesting at all, but sometimes developers embed information into HTML in them, like this: +For text nodes we can imagine a reason to read or modify them, but why comments? + +Sometimes developers embed information or template instructions into HTML in them, like this: ```html <!-- if isAdmin --> @@ -355,7 +382,7 @@ For text nodes we can imagine a reason to read or modify them, but why comments? <!-- /if --> ``` -...Then JavaScript can read it and process embedded instructions. +...Then JavaScript can read it from `data` property and process embedded instructions. ## textContent: pure text @@ -393,7 +420,7 @@ Compare the two: <div id="elem2"></div> <script> - let name = prompt("What's your name?", "<b>Winnie-the-pooh!</b>"); + let name = prompt("What's your name?", "<b>Winnie-the-Pooh!</b>"); elem1.innerHTML = name; elem2.textContent = name; @@ -401,7 +428,7 @@ Compare the two: ``` 1. The first `<div>` gets the name "as HTML": all tags become tags, so we see the bold name. -2. The second `<div>` gets the name "as text", so we literally see `<b>Winnie-the-pooh!</b>`. +2. The second `<div>` gets the name "as text", so we literally see `<b>Winnie-the-Pooh!</b>`. In most cases, we expect the text from a user, and want to treat it as text. We don't want unexpected HTML in our site. An assignment to `textContent` does exactly that. @@ -409,7 +436,7 @@ In most cases, we expect the text from a user, and want to treat it as text. We The "hidden" attribute and the DOM property specifies whether the element is visible or not. -We can use it in HTML or assign using JavaScript, like this: +We can use it in HTML or assign it using JavaScript, like this: ```html run height="80" <div>Both divs below are hidden</div> @@ -438,7 +465,7 @@ Here's a blinking element: ## More properties -DOM elements also have additional properties, many of them provided by the class: +DOM elements also have additional properties, in particular those that depend on the class: - `value` -- the value for `<input>`, `<select>` and `<textarea>` (`HTMLInputElement`, `HTMLSelectElement`...). - `href` -- the "href" for `<a href="...">` (`HTMLAnchorElement`). @@ -459,7 +486,7 @@ For instance: Most standard HTML attributes have the corresponding DOM property, and we can access it like that. -If we want to know the full list of supported properties for a given class, we can find them in the specification. For instance, HTMLInputElement is documented at <https://html.spec.whatwg.org/#htmlinputelement>. +If we want to know the full list of supported properties for a given class, we can find them in the specification. For instance, `HTMLInputElement` is documented at <https://html.spec.whatwg.org/#htmlinputelement>. Or if we'd like to get them fast or are interested in a concrete browser specification -- we can always output the element using `console.dir(elem)` and read the properties. Or explore "DOM properties" in the Elements tab of the browser developer tools. @@ -470,7 +497,7 @@ Each DOM node belongs to a certain class. The classes form a hierarchy. The full Main DOM node properties are: `nodeType` -: We can get `nodeType` from the DOM object class, but often we need just to see if it is a text or element node. The `nodeType` property is good for that. It has numeric values, most important are: `1` -- for elements,`3` -- for text nodes. Read-only. +: We can use it to see if a node is a text or an element node. It has a numeric value: `1` for elements,`3` for text nodes, and a few others for other node types. Read-only. `nodeName/tagName` : For elements, tag name (uppercased unless XML-mode). For non-element nodes `nodeName` describes what it is. Read-only. @@ -485,11 +512,11 @@ Main DOM node properties are: : The content of a non-element node (text, comment). These two are almost the same, usually we use `data`. Can be modified. `textContent` -: The text inside the element, basically HTML minus all `<tags>`. Writing into it puts the text inside the element, with all special characters and tags treated exactly as text. Can safely insert user-generated text and protect from unwanted HTML insertions. +: The text inside the element: HTML minus all `<tags>`. Writing into it puts the text inside the element, with all special characters and tags treated exactly as text. Can safely insert user-generated text and protect from unwanted HTML insertions. `hidden` : When set to `true`, does the same as CSS `display:none`. DOM nodes also have other properties depending on their class. For instance, `<input>` elements (`HTMLInputElement`) support `value`, `type`, while `<a>` elements (`HTMLAnchorElement`) support `href` etc. Most standard HTML attributes have a corresponding DOM property. -But HTML attributes and DOM properties are not always the same, as we'll see in the next chapter. +However, HTML attributes and DOM properties are not always the same, as we'll see in the next chapter. diff --git a/2-ui/1-document/05-basic-dom-node-properties/dom-class-hierarchy.svg b/2-ui/1-document/05-basic-dom-node-properties/dom-class-hierarchy.svg index 39f7d8f8c..4a6705272 100644 --- a/2-ui/1-document/05-basic-dom-node-properties/dom-class-hierarchy.svg +++ b/2-ui/1-document/05-basic-dom-node-properties/dom-class-hierarchy.svg @@ -1 +1,5 @@ -<svg xmlns="http://www.w3.org/2000/svg" width="478" height="364" viewBox="0 0 478 364"><defs><style>@import url(https://fonts.googleapis.com/css?family=Open+Sans:bold,italic,bolditalic%7CPT+Mono);@font-face{font-family:'PT Mono';font-weight:700;font-style:normal;src:local('PT MonoBold'),url(/font/PTMonoBold.woff2) format('woff2'),url(/font/PTMonoBold.woff) format('woff'),url(/font/PTMonoBold.ttf) format('truetype')}</style></defs><g id="dom" fill="none" fill-rule="evenodd" stroke="none" stroke-width="1"><g id="dom-class-hierarchy.svg"><path id="Rectangle-9" fill="#FBF2EC" stroke="#DBAF88" stroke-width="2" d="M181 6h118v28H181z"/><path id="Rectangle-8" fill="#FBF2EC" stroke="#DBAF88" stroke-width="2" d="M181 74h118v28H181z"/><text id="EventTarget" fill="#AF6E24" font-family="PTMono-Regular, PT Mono" font-size="12" font-weight="normal"><tspan x="200.9" y="24">EventTarget</tspan></text><text id="Node" fill="#AF6E24" font-family="PTMono-Regular, PT Mono" font-size="12" font-weight="normal"><tspan x="225.6" y="91">Node </tspan></text><path id="Line-2" fill="#C06334" fill-rule="nonzero" d="M240.5 39.5l7 14h-6v17h-2v-17h-6l7-14z"/><path id="Rectangle-8-Copy" fill="#FBF2EC" stroke="#DBAF88" stroke-width="2" d="M181 144h118v28H181z"/><text id="Element" fill="#AF6E24" font-family="PTMono-Regular, PT Mono" font-size="12" font-weight="normal"><tspan x="214.8" y="161">Element </tspan></text><path id="Line-2-Copy" fill="#C06334" fill-rule="nonzero" d="M240.5 109.5l7 14h-6v17h-2v-17h-6l7-14z"/><path id="Rectangle-8-Copy-4" fill="#FBF2EC" stroke="#DBAF88" stroke-width="2" d="M181 230h118v28H181z"/><text id="HTMLElement" fill="#AF6E24" font-family="PTMono-Regular, PT Mono" font-size="12" font-weight="normal"><tspan x="200.4" y="247">HTMLElement </tspan></text><path id="Line-2-Copy-4" fill="#C06334" fill-rule="nonzero" d="M240.5 195.5l7 14h-6v17h-2v-17h-6l7-14z"/><path id="Rectangle-8-Copy-6" fill="#FBF2EC" stroke="#DBAF88" stroke-width="2" d="M171 300h138v28H171z"/><text id="HTMLBodyElement" fill="#AF6E24" font-family="PTMono-Regular, PT Mono" font-size="12" font-weight="normal"><tspan x="186" y="317">HTMLBodyElement </tspan></text><path id="Line-2-Copy-6" fill="#C06334" fill-rule="nonzero" d="M240.5 265.5l7 14h-6v17h-2v-17h-6l7-14z"/><path id="Rectangle-8-Copy-7" fill="#FBF2EC" stroke="#DBAF88" stroke-width="2" d="M12 300h138v28H12z"/><text id="HTMLInputElement" fill="#AF6E24" font-family="PTMono-Regular, PT Mono" font-size="12" font-weight="normal"><tspan x="24.4" y="317">HTMLInputElement </tspan></text><path id="Line-2-Copy-7" fill="#C06334" fill-rule="nonzero" d="M170 261l-6.753 14.12-3.685-4.736-29.448 22.905-.79.614-1.227-1.578.79-.614 29.448-22.906-3.684-4.735L170 261z"/><path id="Rectangle-8-Copy-8" fill="#FBF2EC" stroke="#DBAF88" stroke-width="2" d="M332 300h138v28H332z"/><text id="HTMLAnchorElement" fill="#AF6E24" font-family="PTMono-Regular, PT Mono" font-size="12" font-weight="normal"><tspan x="341.3" y="317">HTMLAnchorElement </tspan></text><path id="Line-2-Copy-8" fill="#C06334" fill-rule="nonzero" d="M307 259l14.554 5.76-4.47 4.002 20.661 23.07.667.746-1.49 1.334-.667-.745-20.66-23.071-4.47 4.003L307 259z"/><path id="Rectangle-8-Copy-2" fill="#FBF2EC" stroke="#DBAF88" stroke-width="2" d="M45 126h118v28H45z"/><text id="Text" fill="#AF6E24" font-family="PTMono-Regular, PT Mono" font-size="12" font-weight="normal"><tspan x="89.6" y="144">Text </tspan></text><path id="Line-2-Copy-2" fill="#C06334" fill-rule="nonzero" d="M171 96l-6.589 14.198-3.738-4.693-18.55 14.777-.782.623-1.246-1.564.782-.623 18.549-14.778-3.738-4.692L171 96z"/><path id="Rectangle-8-Copy-3" fill="#FBF2EC" stroke="#DBAF88" stroke-width="2" d="M315 126h118v28H315z"/><text id="Comment" fill="#AF6E24" font-family="PTMono-Regular, PT Mono" font-size="12" font-weight="normal"><tspan x="348.8" y="144">Comment </tspan></text><path id="Line-2-Copy-3" fill="#C06334" fill-rule="nonzero" d="M307 96l15.338 3.123-3.701 4.723 18.98 14.867.787.616-1.233 1.575-.788-.617-18.979-14.867-3.7 4.724L307 96z"/><path id="Line-2-Copy-9" fill="#C06334" fill-rule="nonzero" d="M307 174l15.338 3.123-3.701 4.723 18.98 14.867.787.616-1.233 1.575-.788-.617-18.979-14.867-3.7 4.724L307 174z"/><path id="Rectangle-8-Copy-5" fill="#FBF2EC" stroke="#DBAF88" stroke-width="2" d="M315 205h118v28H315z"/><text id="SVGElement" fill="#AF6E24" font-family="PTMono-Regular, PT Mono" font-size="12" font-weight="normal"><tspan x="338" y="223">SVGElement </tspan></text><text id="<div>Text</div>" font-family="PTMono-Regular, PT Mono" font-size="12" font-weight="normal"><tspan x="48" y="171" fill="#AF6E24"><div></tspan> <tspan x="84" y="171" fill="#C06334">Text</tspan> <tspan x="112.8" y="171" fill="#AF6E24"></div></tspan></text><text id="<input-type="…">" fill="#C06334" font-family="PTMono-Regular, PT Mono" font-size="12" font-weight="normal"><tspan x="24.4" y="341"><input type="…"></tspan></text><text id="<body>" fill="#C06334" font-family="PTMono-Regular, PT Mono" font-size="12" font-weight="normal"><tspan x="220.4" y="341"><body></tspan></text><text id="<a-href="…">" fill="#C06334" font-family="PTMono-Regular, PT Mono" font-size="12" font-weight="normal"><tspan x="358.8" y="341"><a href="…"></tspan></text><text id="<div>Text</div>" font-family="PTMono-Regular, PT Mono" font-size="12" font-weight="normal"><tspan x="189" y="188" fill="#AF6E24"><</tspan> <tspan x="196.2" y="188" fill="#C06334">div</tspan> <tspan x="217.8" y="188" fill="#AF6E24">></tspan> <tspan x="225" y="188" fill="#DBAF88">Text</tspan> <tspan x="253.8" y="188" fill="#AF6E24"></</tspan> <tspan x="268.2" y="188" fill="#C06334">div</tspan> <tspan x="289.8" y="188" fill="#AF6E24">></tspan></text><text id="<!--comment-->" fill="#C06334" font-family="PTMono-Regular, PT Mono" font-size="12" font-weight="normal"><tspan x="327.6" y="171"><!--comment--></tspan></text></g></g></svg> \ No newline at end of file +<<<<<<< HEAD +<svg xmlns="http://www.w3.org/2000/svg" width="478" height="364" viewBox="0 0 478 364"><defs><style>@import url(https://fonts.googleapis.com/css?family=Open+Sans:bold,italic,bolditalic%7CPT+Mono);@font-face{font-family:'PT Mono';font-weight:700;font-style:normal;src:local('PT MonoBold'),url(/font/PTMonoBold.woff2) format('woff2'),url(/font/PTMonoBold.woff) format('woff'),url(/font/PTMonoBold.ttf) format('truetype')}</style></defs><g id="dom" fill="none" fill-rule="evenodd" stroke="none" stroke-width="1"><g id="dom-class-hierarchy.svg"><path id="Rectangle-9" fill="#FBF2EC" stroke="#DBAF88" stroke-width="2" d="M181 6h118v28H181z"/><path id="Rectangle-8" fill="#FBF2EC" stroke="#DBAF88" stroke-width="2" d="M181 74h118v28H181z"/><text id="EventTarget" fill="#AF6E24" font-family="PTMono-Regular, PT Mono" font-size="12" font-weight="normal"><tspan x="200.9" y="24">EventTarget</tspan></text><text id="Node" fill="#AF6E24" font-family="PTMono-Regular, PT Mono" font-size="12" font-weight="normal"><tspan x="225.6" y="91">Node </tspan></text><path id="Line-2" fill="#C06334" fill-rule="nonzero" d="M240.5 39.5l7 14h-6v17h-2v-17h-6l7-14z"/><path id="Rectangle-8-Copy" fill="#FBF2EC" stroke="#DBAF88" stroke-width="2" d="M181 144h118v28H181z"/><text id="Element" fill="#AF6E24" font-family="PTMono-Regular, PT Mono" font-size="12" font-weight="normal"><tspan x="214.8" y="161">Element </tspan></text><path id="Line-2-Copy" fill="#C06334" fill-rule="nonzero" d="M240.5 109.5l7 14h-6v17h-2v-17h-6l7-14z"/><path id="Rectangle-8-Copy-4" fill="#FBF2EC" stroke="#DBAF88" stroke-width="2" d="M181 230h118v28H181z"/><text id="HTMLElement" fill="#AF6E24" font-family="PTMono-Regular, PT Mono" font-size="12" font-weight="normal"><tspan x="200.4" y="247">HTMLElement </tspan></text><path id="Line-2-Copy-4" fill="#C06334" fill-rule="nonzero" d="M240.5 195.5l7 14h-6v17h-2v-17h-6l7-14z"/><path id="Rectangle-8-Copy-6" fill="#FBF2EC" stroke="#DBAF88" stroke-width="2" d="M171 300h138v28H171z"/><text id="HTMLBodyElement" fill="#AF6E24" font-family="PTMono-Regular, PT Mono" font-size="12" font-weight="normal"><tspan x="186" y="317">HTMLBodyElement </tspan></text><path id="Line-2-Copy-6" fill="#C06334" fill-rule="nonzero" d="M240.5 265.5l7 14h-6v17h-2v-17h-6l7-14z"/><path id="Rectangle-8-Copy-7" fill="#FBF2EC" stroke="#DBAF88" stroke-width="2" d="M12 300h138v28H12z"/><text id="HTMLInputElement" fill="#AF6E24" font-family="PTMono-Regular, PT Mono" font-size="12" font-weight="normal"><tspan x="24.4" y="317">HTMLInputElement </tspan></text><path id="Line-2-Copy-7" fill="#C06334" fill-rule="nonzero" d="M170 261l-6.753 14.12-3.685-4.736-29.448 22.905-.79.614-1.227-1.578.79-.614 29.448-22.906-3.684-4.735L170 261z"/><path id="Rectangle-8-Copy-8" fill="#FBF2EC" stroke="#DBAF88" stroke-width="2" d="M332 300h138v28H332z"/><text id="HTMLAnchorElement" fill="#AF6E24" font-family="PTMono-Regular, PT Mono" font-size="12" font-weight="normal"><tspan x="341.3" y="317">HTMLAnchorElement </tspan></text><path id="Line-2-Copy-8" fill="#C06334" fill-rule="nonzero" d="M307 259l14.554 5.76-4.47 4.002 20.661 23.07.667.746-1.49 1.334-.667-.745-20.66-23.071-4.47 4.003L307 259z"/><path id="Rectangle-8-Copy-2" fill="#FBF2EC" stroke="#DBAF88" stroke-width="2" d="M45 126h118v28H45z"/><text id="Text" fill="#AF6E24" font-family="PTMono-Regular, PT Mono" font-size="12" font-weight="normal"><tspan x="89.6" y="144">Text </tspan></text><path id="Line-2-Copy-2" fill="#C06334" fill-rule="nonzero" d="M171 96l-6.589 14.198-3.738-4.693-18.55 14.777-.782.623-1.246-1.564.782-.623 18.549-14.778-3.738-4.692L171 96z"/><path id="Rectangle-8-Copy-3" fill="#FBF2EC" stroke="#DBAF88" stroke-width="2" d="M315 126h118v28H315z"/><text id="Comment" fill="#AF6E24" font-family="PTMono-Regular, PT Mono" font-size="12" font-weight="normal"><tspan x="348.8" y="144">Comment </tspan></text><path id="Line-2-Copy-3" fill="#C06334" fill-rule="nonzero" d="M307 96l15.338 3.123-3.701 4.723 18.98 14.867.787.616-1.233 1.575-.788-.617-18.979-14.867-3.7 4.724L307 96z"/><path id="Line-2-Copy-9" fill="#C06334" fill-rule="nonzero" d="M307 174l15.338 3.123-3.701 4.723 18.98 14.867.787.616-1.233 1.575-.788-.617-18.979-14.867-3.7 4.724L307 174z"/><path id="Rectangle-8-Copy-5" fill="#FBF2EC" stroke="#DBAF88" stroke-width="2" d="M315 205h118v28H315z"/><text id="SVGElement" fill="#AF6E24" font-family="PTMono-Regular, PT Mono" font-size="12" font-weight="normal"><tspan x="338" y="223">SVGElement </tspan></text><text id="<div>Text</div>" font-family="PTMono-Regular, PT Mono" font-size="12" font-weight="normal"><tspan x="48" y="171" fill="#AF6E24"><div></tspan> <tspan x="84" y="171" fill="#C06334">Text</tspan> <tspan x="112.8" y="171" fill="#AF6E24"></div></tspan></text><text id="<input-type="…">" fill="#C06334" font-family="PTMono-Regular, PT Mono" font-size="12" font-weight="normal"><tspan x="24.4" y="341"><input type="…"></tspan></text><text id="<body>" fill="#C06334" font-family="PTMono-Regular, PT Mono" font-size="12" font-weight="normal"><tspan x="220.4" y="341"><body></tspan></text><text id="<a-href="…">" fill="#C06334" font-family="PTMono-Regular, PT Mono" font-size="12" font-weight="normal"><tspan x="358.8" y="341"><a href="…"></tspan></text><text id="<div>Text</div>" font-family="PTMono-Regular, PT Mono" font-size="12" font-weight="normal"><tspan x="189" y="188" fill="#AF6E24"><</tspan> <tspan x="196.2" y="188" fill="#C06334">div</tspan> <tspan x="217.8" y="188" fill="#AF6E24">></tspan> <tspan x="225" y="188" fill="#DBAF88">Text</tspan> <tspan x="253.8" y="188" fill="#AF6E24"></</tspan> <tspan x="268.2" y="188" fill="#C06334">div</tspan> <tspan x="289.8" y="188" fill="#AF6E24">></tspan></text><text id="<!--comment-->" fill="#C06334" font-family="PTMono-Regular, PT Mono" font-size="12" font-weight="normal"><tspan x="327.6" y="171"><!--comment--></tspan></text></g></g></svg> +======= +<svg xmlns="http://www.w3.org/2000/svg" width="552" height="403" viewBox="0 0 552 403"><defs><style>@import url(https://fonts.googleapis.com/css?family=Open+Sans:bold,italic,bolditalic%7CPT+Mono);@font-face{font-family:'PT Mono';font-weight:700;font-style:normal;src:local('PT MonoBold'),url(/font/PTMonoBold.woff2) format('woff2'),url(/font/PTMonoBold.woff) format('woff'),url(/font/PTMonoBold.ttf) format('truetype')}</style></defs><g id="dom" fill="none" fill-rule="evenodd" stroke="none" stroke-width="1"><g id="dom-class-hierarchy.svg"><path id="Rectangle-9" fill="#FBF2EC" stroke="#DBAF88" stroke-width="2" d="M181 6h118v28H181z"/><path id="Rectangle-8" fill="#FBF2EC" stroke="#DBAF88" stroke-width="2" d="M181 74h118v28H181z"/><text id="EventTarget" fill="#AF6E24" font-family="PTMono-Regular, PT Mono" font-size="12" font-weight="normal"><tspan x="200.9" y="24">EventTarget</tspan></text><text id="Node" fill="#AF6E24" font-family="PTMono-Regular, PT Mono" font-size="12" font-weight="normal"><tspan x="225.6" y="91">Node </tspan></text><path id="Line-2" fill="#C06334" fill-rule="nonzero" d="M240.5 39.5l7 14h-6v17h-2v-17h-6l7-14z"/><path id="Rectangle-8-Copy" fill="#FBF2EC" stroke="#DBAF88" stroke-width="2" d="M181 144h118v28H181z"/><text id="Element" fill="#AF6E24" font-family="PTMono-Regular, PT Mono" font-size="12" font-weight="normal"><tspan x="214.8" y="161">Element </tspan></text><path id="Line-2-Copy" fill="#C06334" fill-rule="nonzero" d="M240.5 109.5l7 14h-6v17h-2v-17h-6l7-14z"/><path id="Rectangle-8-Copy-4" fill="#FBF2EC" stroke="#DBAF88" stroke-width="2" d="M181 230h118v28H181z"/><text id="HTMLElement" fill="#AF6E24" font-family="PTMono-Regular, PT Mono" font-size="12" font-weight="normal"><tspan x="200.4" y="247">HTMLElement </tspan></text><path id="Line-2-Copy-4" fill="#C06334" fill-rule="nonzero" d="M240.5 195.5l7 14h-6v17h-2v-17h-6l7-14zM72.5 158.5l7.273 13.86-5.999.117L74 183.98l.02 1-2 .04-.02-1-.226-11.503-5.998.118L72.5 158.5z"/><path id="Rectangle-8-Copy-6" fill="#FBF2EC" stroke="#DBAF88" stroke-width="2" d="M171 300h138v28H171z"/><text id="HTMLBodyElement" fill="#AF6E24" font-family="PTMono-Regular, PT Mono" font-size="12" font-weight="normal"><tspan x="186" y="317">HTMLBodyElement </tspan></text><path id="Line-2-Copy-6" fill="#C06334" fill-rule="nonzero" d="M240.5 265.5l7 14h-6v17h-2v-17h-6l7-14z"/><path id="Rectangle-8-Copy-7" fill="#FBF2EC" stroke="#DBAF88" stroke-width="2" d="M1 300h138v28H1z"/><text id="HTMLInputElement" fill="#AF6E24" font-family="PTMono-Regular, PT Mono" font-size="12" font-weight="normal"><tspan x="13.4" y="317">HTMLInputElement </tspan></text><path id="Line-2-Copy-7" fill="#C06334" fill-rule="nonzero" d="M159 261l-6.753 14.12-3.685-4.736-29.448 22.905-.79.614-1.227-1.578.79-.614 29.448-22.906-3.684-4.735L159 261z"/><path id="Rectangle-8-Copy-8" fill="#FBF2EC" stroke="#DBAF88" stroke-width="2" d="M339 300h138v28H339z"/><text id="HTMLAnchorElement" fill="#AF6E24" font-family="PTMono-Regular, PT Mono" font-size="12" font-weight="normal"><tspan x="348.3" y="317">HTMLAnchorElement </tspan></text><path id="Line-2-Copy-8" fill="#C06334" fill-rule="nonzero" d="M312 261l15.305 3.28-3.749 4.684 29.069 23.255.78.625-1.249 1.562-.78-.625-29.069-23.254-3.748 4.685L312 261z"/><path id="Rectangle-8-Copy-2" fill="#FBF2EC" stroke="#DBAF88" stroke-width="2" d="M22 126h98v28H22z"/><text id="Document" fill="#AF6E24" font-family="PTMono-Regular, PT Mono" font-size="12" font-weight="normal"><tspan x="42.2" y="144">Document </tspan></text><path id="Rectangle-8-Copy-2" fill="#FBF2EC" stroke="#DBAF88" stroke-width="2" d="M22 192h98v28H22z"/><text id="HTMLDocument" fill="#AF6E24" font-family="PTMono-Regular, PT Mono" font-size="12" font-weight="normal"><tspan x="27.8" y="210">HTMLDocument </tspan></text><path id="Line-2-Copy-2" fill="#C06334" fill-rule="nonzero" d="M168 90l-8.862 12.902-2.905-5.251-34.749 19.224-.875.484-.968-1.75.875-.484 34.749-19.224-2.904-5.25L168 90z"/><path id="Rectangle-8-Copy-3" fill="#FBF2EC" stroke="#DBAF88" stroke-width="2" d="M369 126h118v28H369z"/><text id="CharacterData" fill="#AF6E24" font-family="PTMono-Regular, PT Mono" font-size="12" font-weight="normal"><tspan x="381.2" y="144">CharacterData </tspan></text><path id="Line-2-Copy-3" fill="#C06334" fill-rule="nonzero" d="M314 91l15.648.379-2.813 5.299 36.634 19.439.883.468-.937 1.767-.884-.469-36.633-19.439-2.812 5.301L314 91zM458 159l13.93 7.138-4.836 3.552 9.712 13.218.592.806-1.612 1.184-.592-.806-9.712-13.218-4.834 3.553L458 159zM400 158l-1.376 15.592-5.11-3.146-8.662 14.078-.524.852-1.704-1.048.524-.852 8.663-14.078-5.11-3.143L400 158z"/><text id="Document-as-a-whole" fill="#C06334" font-family="PTMono-Regular, PT Mono" font-size="12" font-weight="normal"><tspan x="6.6" y="235">Document as a whole</tspan></text><text id="<input-type="…">" fill="#C06334" font-family="PTMono-Regular, PT Mono" font-size="12" font-weight="normal"><tspan x="13.4" y="341"><input type="…"></tspan></text><text id="<body>" fill="#C06334" font-family="PTMono-Regular, PT Mono" font-size="12" font-weight="normal"><tspan x="220.4" y="341"><body></tspan></text><text id="<a-href="…">" fill="#C06334" font-family="PTMono-Regular, PT Mono" font-size="12" font-weight="normal"><tspan x="365.8" y="341"><a href="…"></tspan></text><text id="<div>...</div>" font-family="PTMono-Regular, PT Mono" font-size="12" font-weight="normal"><tspan x="192.6" y="188" fill="#AF6E24"><</tspan> <tspan x="199.8" y="188" fill="#C06334">div</tspan> <tspan x="221.4" y="188" fill="#AF6E24">></tspan> <tspan x="228.6" y="188" fill="#DBAF88">...</tspan> <tspan x="250.2" y="188" fill="#AF6E24"></</tspan> <tspan x="264.6" y="188" fill="#C06334">div</tspan> <tspan x="286.2" y="188" fill="#AF6E24">></tspan></text><path id="Rectangle-8-Copy-3" fill="#FBF2EC" stroke="#DBAF88" stroke-width="2" d="M449 192h78v28h-78z"/><text id="Comment" fill="#AF6E24" font-family="PTMono-Regular, PT Mono" font-size="12" font-weight="normal"><tspan x="463.8" y="210">Comment </tspan></text><text id="<!--comment-->" fill="#C06334" font-family="PTMono-Regular, PT Mono" font-size="12" font-weight="normal"><tspan x="442.6" y="237"><!--comment--></tspan></text><path id="Rectangle-8-Copy-3" fill="#FBF2EC" stroke="#DBAF88" stroke-width="2" d="M342 192h78v28h-78z"/><text id="Text" fill="#AF6E24" font-family="PTMono-Regular, PT Mono" font-size="12" font-weight="normal"><tspan x="365.6" y="210">Text </tspan></text><text id=""Hello"" fill="#C06334" font-family="PTMono-Regular, PT Mono" font-size="12" font-weight="normal"><tspan x="356.8" y="237">"Hello"</tspan></text></g></g></svg> +>>>>>>> 540d753e90789205fc6e75c502f68382c87dea9b diff --git a/2-ui/1-document/06-dom-attributes-and-properties/article.md b/2-ui/1-document/06-dom-attributes-and-properties/article.md index c1bcf2ce1..b02f626dc 100644 --- a/2-ui/1-document/06-dom-attributes-and-properties/article.md +++ b/2-ui/1-document/06-dom-attributes-and-properties/article.md @@ -8,7 +8,7 @@ But the attribute-property mapping is not one-to-one! In this chapter we'll pay ## DOM properties -We've already seen built-in DOM properties. There's a lot. But technically no one limits us, and if it's not enough -- we can add our own. +We've already seen built-in DOM properties. There are a lot. But technically no one limits us, and if there aren't enough, we can add our own. DOM nodes are regular JavaScript objects. We can alter them. @@ -124,7 +124,7 @@ Here's an extended demo of working with attributes: elem.setAttribute('Test', 123); // (2), writing - alert( elem.outerHTML ); // (3), see it's there + alert( elem.outerHTML ); // (3), see if the attribute is in HTML (yes) for (let attr of elem.attributes) { // (4) list all alert( `${attr.name} = ${attr.value}` ); @@ -162,7 +162,7 @@ In the example below `id` is modified as an attribute, and we can see the proper </script> ``` -But there are exclusions, for instance `input.value` synchronizes only from attribute -> to property, but not back: +But there are exclusions, for instance `input.value` synchronizes only from attribute -> property, but not back: ```html run <input> @@ -186,7 +186,7 @@ In the example above: - Changing the attribute `value` updates the property. - But the property change does not affect the attribute. -That "feature" may actually come in handy, because the user may modify `value`, and then after it, if we want to recover the "original" value from HTML, it's in the attribute. +That "feature" may actually come in handy, because the user actions may lead to `value` changes, and then after them, if we want to recover the "original" value from HTML, it's in the attribute. ## DOM properties are typed @@ -216,9 +216,9 @@ There are other examples. The `style` attribute is a string, but the `style` pro </script> ``` -That's an important difference. But even if a DOM property type is a string, it may differ from the attribute! +Most properties are strings though. -For instance, the `href` DOM property is always a *full* URL, even if the attribute contains a relative URL or just a `#hash`. +Quite rarely, even if a DOM property type is a string, it may differ from the attribute. For instance, the `href` DOM property is always a *full* URL, even if the attribute contains a relative URL or just a `#hash`. Here's an example: @@ -260,7 +260,7 @@ Like this: for(let div of document.querySelectorAll('[show-info]')) { // insert the corresponding info into the field let field = div.getAttribute('show-info'); - div.innerHTML = user[field]; // Pete, then age + div.innerHTML = user[field]; // first Pete into "name", then 25 into "age" } </script> ``` @@ -298,16 +298,16 @@ For instance, here for the order state the attribute `order-state` is used: </div> ``` -Why the attribute may be preferable to classes like `.order-state-new`, `.order-state-pending`, `order-state-canceled`? +Why would using an attribute be preferable to having classes like `.order-state-new`, `.order-state-pending`, `.order-state-canceled`? -That's because an attribute is more convenient to manage. The state can be changed as easy as: +Because an attribute is more convenient to manage. The state can be changed as easy as: ```js // a bit simpler than removing old/adding a new class div.setAttribute('order-state', 'canceled'); ``` -But there may be a possible problem with custom attributes. What if we use a non-standard attribute for our purposes and later the standard introduces it and makes it do something? The HTML language is alive, it grows, more attributes appear to suit the needs of developers. There may be unexpected effects in such case. +But there may be a possible problem with custom attributes. What if we use a non-standard attribute for our purposes and later the standard introduces it and makes it do something? The HTML language is alive, it grows, and more attributes appear to suit the needs of developers. There may be unexpected effects in such case. To avoid conflicts, there exist [data-*](https://html.spec.whatwg.org/#embedding-custom-non-visible-data-with-the-data-*-attributes) attributes. @@ -380,7 +380,7 @@ Methods to work with attributes are: - `elem.removeAttribute(name)` -- to remove the attribute. - `elem.attributes` is a collection of all attributes. -For most needs, DOM properties can serve us well. We should refer to attributes only when DOM properties do not suit us, when we need exactly attributes, for instance: +For most situations using DOM properties is preferable. We should refer to attributes only when DOM properties do not suit us, when we need exactly attributes, for instance: - We need a non-standard attribute. But if it starts with `data-`, then we should use `dataset`. - We want to read the value "as written" in HTML. The value of the DOM property may be different, for instance the `href` property is always a full URL, and we may want to get the "original" value. diff --git a/2-ui/1-document/07-modifying-document/1-createtextnode-vs-innerhtml/solution.md b/2-ui/1-document/07-modifying-document/1-createtextnode-vs-innerhtml/solution.md index 93ae862fd..a38f01645 100644 --- a/2-ui/1-document/07-modifying-document/1-createtextnode-vs-innerhtml/solution.md +++ b/2-ui/1-document/07-modifying-document/1-createtextnode-vs-innerhtml/solution.md @@ -12,7 +12,7 @@ Here's an example: let text = '<b>text</b>'; elem1.append(document.createTextNode(text)); - elem2.textContent = text; - elem3.innerHTML = text; + elem2.innerHTML = text; + elem3.textContent = text; </script> ``` diff --git a/2-ui/1-document/07-modifying-document/1-createtextnode-vs-innerhtml/task.md b/2-ui/1-document/07-modifying-document/1-createtextnode-vs-innerhtml/task.md index e127bc0ef..40c75dff3 100644 --- a/2-ui/1-document/07-modifying-document/1-createtextnode-vs-innerhtml/task.md +++ b/2-ui/1-document/07-modifying-document/1-createtextnode-vs-innerhtml/task.md @@ -6,7 +6,7 @@ importance: 5 We have an empty DOM element `elem` and a string `text`. -Which of these 3 commands do exactly the same? +Which of these 3 commands will do exactly the same? 1. `elem.append(document.createTextNode(text))` 2. `elem.innerHTML = text` diff --git a/2-ui/1-document/07-modifying-document/10-clock-setinterval/solution.md b/2-ui/1-document/07-modifying-document/10-clock-setinterval/solution.md index 15238fcf4..1414e90c1 100644 --- a/2-ui/1-document/07-modifying-document/10-clock-setinterval/solution.md +++ b/2-ui/1-document/07-modifying-document/10-clock-setinterval/solution.md @@ -39,15 +39,19 @@ The clock-managing functions: ```js let timerId; -function clockStart() { // run the clock - timerId = setInterval(update, 1000); +function clockStart() { // run the clock + if (!timerId) { // only set a new interval if the clock is not running + timerId = setInterval(update, 1000); + } update(); // (*) } function clockStop() { clearInterval(timerId); - timerId = null; + timerId = null; // (**) } ``` Please note that the call to `update()` is not only scheduled in `clockStart()`, but immediately run in the line `(*)`. Otherwise the visitor would have to wait till the first execution of `setInterval`. And the clock would be empty till then. + +Also it is important to set a new interval in `clockStart()` only when the clock is not running. Otherways clicking the start button several times would set multiple concurrent intervals. Even worse - we would only keep the `timerID` of the last interval, losing references to all others. Then we wouldn't be able to stop the clock ever again! Note that we need to clear the `timerID` when the clock is stopped in the line `(**)`, so that it can be started again by running `clockStart()`. diff --git a/2-ui/1-document/07-modifying-document/10-clock-setinterval/solution.view/index.html b/2-ui/1-document/07-modifying-document/10-clock-setinterval/solution.view/index.html index 1bf642b10..84ee26f19 100644 --- a/2-ui/1-document/07-modifying-document/10-clock-setinterval/solution.view/index.html +++ b/2-ui/1-document/07-modifying-document/10-clock-setinterval/solution.view/index.html @@ -43,15 +43,19 @@ } function clockStart() { - timerId = setInterval(update, 1000); + // set a new interval only if the clock is stopped + // otherwise we would rewrite the timerID reference to the running interval and wouldn't be able to stop the clock ever again + if (!timerId) { + timerId = setInterval(update, 1000); + } update(); // <-- start right now, don't wait 1 second till the first setInterval works } function clockStop() { clearInterval(timerId); + timerId = null; // <-- clear timerID to indicate that the clock has been stopped, so that it is possible to start it again in clockStart() } - clockStart(); </script> <!-- click on this button calls clockStart() --> diff --git a/2-ui/1-document/07-modifying-document/12-sort-table/solution.md b/2-ui/1-document/07-modifying-document/12-sort-table/solution.md index 25dd58b0c..49243e8e3 100644 --- a/2-ui/1-document/07-modifying-document/12-sort-table/solution.md +++ b/2-ui/1-document/07-modifying-document/12-sort-table/solution.md @@ -1,19 +1,18 @@ The solution is short, yet may look a bit tricky, so here I provide it with extensive comments: - ```js -let sortedRows = Array.from(table.rows) - .slice(1) - .sort((rowA, rowB) => rowA.cells[0].innerHTML > rowB.cells[0].innerHTML ? 1 : -1); +let sortedRows = Array.from(table.tBodies[0].rows) // 1 + .sort((rowA, rowB) => rowA.cells[0].innerHTML.localeCompare(rowB.cells[0].innerHTML)); -table.tBodies[0].append(...sortedRows); +table.tBodies[0].append(...sortedRows); // (3) ``` -1. Get all `<tr>`, like `table.querySelectorAll('tr')`, then make an array from them, cause we need array methods. -2. The first TR (`table.rows[0]`) is actually a table header, so we take the rest by `.slice(1)`. -3. Then sort them comparing by the content of the first `<td>` (the name field). -4. Now insert nodes in the right order by `.append(...sortedRows)`. +The step-by-step algorthm: + +1. Get all `<tr>`, from `<tbody>`. +2. Then sort them comparing by the content of the first `<td>` (the name field). +3. Now insert nodes in the right order by `.append(...sortedRows)`. - Tables always have an implicit <tbody> element, so we need to take it and insert into it: a simple `table.append(...)` would fail. +We don't have to remove row elements, just "re-insert", they leave the old place automatically. - Please note: we don't have to remove them, just "re-insert", they leave the old place automatically. +P.S. In our case, there's an explicit `<tbody>` in the table, but even if HTML table doesn't have `<tbody>`, the DOM structure always has it. diff --git a/2-ui/1-document/07-modifying-document/12-sort-table/solution.view/index.html b/2-ui/1-document/07-modifying-document/12-sort-table/solution.view/index.html index 81e985748..40692031a 100644 --- a/2-ui/1-document/07-modifying-document/12-sort-table/solution.view/index.html +++ b/2-ui/1-document/07-modifying-document/12-sort-table/solution.view/index.html @@ -1,37 +1,30 @@ <!DOCTYPE html> -<html> -<body> - <table id="table"> - <tr> - <th>Name</th> - <th>Surname</th> - <th>Age</th> - </tr> - <tr> - <td>John</td> - <td>Smith</td> - <td>10</td> - </tr> - <tr> - <td>Pete</td> - <td>Brown</td> - <td>15</td> - </tr> - <tr> - <td>Ann</td> - <td>Lee</td> - <td>5</td> - </tr> - </table> +<table id="table"> +<thead> + <tr> + <th>Name</th><th>Surname</th><th>Age</th> + </tr> +</thead> +<tbody> + <tr> + <td>John</td><td>Smith</td><td>10</td> + </tr> + <tr> + <td>Pete</td><td>Brown</td><td>15</td> + </tr> + <tr> + <td>Ann</td><td>Lee</td><td>5</td> + </tr> + <tr> + <td>...</td><td>...</td><td>...</td> + </tr> +</tbody> +</table> - <script> - let sortedRows = Array.from(table.rows) - .slice(1) - .sort((rowA, rowB) => rowA.cells[0].innerHTML > rowB.cells[0].innerHTML ? 1 : -1); +<script> + let sortedRows = Array.from(table.tBodies[0].rows) + .sort((rowA, rowB) => rowA.cells[0].innerHTML.localeCompare(rowB.cells[0].innerHTML)); - table.tBodies[0].append(...sortedRows); - </script> - -</body> -</html> + table.tBodies[0].append(...sortedRows); +</script> diff --git a/2-ui/1-document/07-modifying-document/12-sort-table/source.view/index.html b/2-ui/1-document/07-modifying-document/12-sort-table/source.view/index.html index e41eb229f..9071c88ee 100644 --- a/2-ui/1-document/07-modifying-document/12-sort-table/source.view/index.html +++ b/2-ui/1-document/07-modifying-document/12-sort-table/source.view/index.html @@ -1,33 +1,27 @@ <!DOCTYPE html> -<html> -<body> - <table id="table"> - <tr> - <th>Name</th> - <th>Surname</th> - <th>Age</th> - </tr> - <tr> - <td>John</td> - <td>Smith</td> - <td>10</td> - </tr> - <tr> - <td>Pete</td> - <td>Brown</td> - <td>15</td> - </tr> - <tr> - <td>Ann</td> - <td>Lee</td> - <td>5</td> - </tr> - </table> +<table id="table"> +<thead> + <tr> + <th>Name</th><th>Surname</th><th>Age</th> + </tr> +</thead> +<tbody> + <tr> + <td>John</td><td>Smith</td><td>10</td> + </tr> + <tr> + <td>Pete</td><td>Brown</td><td>15</td> + </tr> + <tr> + <td>Ann</td><td>Lee</td><td>5</td> + </tr> + <tr> + <td>...</td><td>...</td><td>...</td> + </tr> +</tbody> +</table> - <script> - // ... your code ... - </script> - -</body> -</html> +<script> + // ... your code ... +</script> diff --git a/2-ui/1-document/07-modifying-document/12-sort-table/task.md b/2-ui/1-document/07-modifying-document/12-sort-table/task.md index 41d6fca29..7cdba35bc 100644 --- a/2-ui/1-document/07-modifying-document/12-sort-table/task.md +++ b/2-ui/1-document/07-modifying-document/12-sort-table/task.md @@ -6,33 +6,29 @@ importance: 5 There's a table: +```html run <table> -<tr> - <th>Name</th> - <th>Surname</th> - <th>Age</th> -</tr> -<tr> - <td>John</td> - <td>Smith</td> - <td>10</td> -</tr> -<tr> - <td>Pete</td> - <td>Brown</td> - <td>15</td> -</tr> -<tr> - <td>Ann</td> - <td>Lee</td> - <td>5</td> -</tr> -<tr> - <td>...</td> - <td>...</td> - <td>...</td> -</tr> +<thead> + <tr> + <th>Name</th><th>Surname</th><th>Age</th> + </tr> +</thead> +<tbody> + <tr> + <td>John</td><td>Smith</td><td>10</td> + </tr> + <tr> + <td>Pete</td><td>Brown</td><td>15</td> + </tr> + <tr> + <td>Ann</td><td>Lee</td><td>5</td> + </tr> + <tr> + <td>...</td><td>...</td><td>...</td> + </tr> +</tbody> </table> +``` There may be more rows in it. diff --git a/2-ui/1-document/07-modifying-document/5-why-aaa/solution.md b/2-ui/1-document/07-modifying-document/5-why-aaa/solution.md index 6b85168b9..3d1f6698f 100644 --- a/2-ui/1-document/07-modifying-document/5-why-aaa/solution.md +++ b/2-ui/1-document/07-modifying-document/5-why-aaa/solution.md @@ -1,9 +1,9 @@ The HTML in the task is incorrect. That's the reason of the odd thing. -The browser has to fix it automatically. But there may be no text inside the `<table>`: according to the spec only table-specific tags are allowed. So the browser adds `"aaa"` *before* the `<table>`. +The browser has to fix it automatically. But there may be no text inside the `<table>`: according to the spec only table-specific tags are allowed. So the browser shows `"aaa"` *before* the `<table>`. Now it's obvious that when we remove the table, it remains. -The question can be easily answered by exploring the DOM using the browser tools. It shows `"aaa"` before the `<table>`. +The question can be easily answered by exploring the DOM using the browser tools. You'll see `"aaa"` before the `<table>`. The HTML standard specifies in detail how to process bad HTML, and such behavior of the browser is correct. diff --git a/2-ui/1-document/07-modifying-document/5-why-aaa/task.md b/2-ui/1-document/07-modifying-document/5-why-aaa/task.md index 03064ed2c..861f70503 100644 --- a/2-ui/1-document/07-modifying-document/5-why-aaa/task.md +++ b/2-ui/1-document/07-modifying-document/5-why-aaa/task.md @@ -4,7 +4,11 @@ importance: 1 # Why does "aaa" remain? -Run the example. Why does `table.remove()` not delete the text `"aaa"`? +In the example below, the call `table.remove()` removes the table from the document. + +But if you run it, you can see that the text `"aaa"` is still visible. + +Why does that happen? ```html height=100 run <table id="table"> @@ -18,6 +22,6 @@ Run the example. Why does `table.remove()` not delete the text `"aaa"`? alert(table); // the table, as it should be table.remove(); - // why there's still aaa in the document? + // why there's still "aaa" in the document? </script> ``` diff --git a/2-ui/1-document/07-modifying-document/6-create-list/task.md b/2-ui/1-document/07-modifying-document/6-create-list/task.md index 43b0a34a7..a57e7e2d9 100644 --- a/2-ui/1-document/07-modifying-document/6-create-list/task.md +++ b/2-ui/1-document/07-modifying-document/6-create-list/task.md @@ -10,7 +10,7 @@ For every list item: 1. Ask a user about its content using `prompt`. 2. Create the `<li>` with it and add it to `<ul>`. -3. Continue until the user cancels the input (by pressing `key:Esc` or CANCEL in prompt). +3. Continue until the user cancels the input (by pressing `key:Esc` or via an empty entry). All elements should be created dynamically. diff --git a/2-ui/1-document/07-modifying-document/7-create-object-tree/build-tree-dom.view/index.html b/2-ui/1-document/07-modifying-document/7-create-object-tree/build-tree-dom.view/index.html index aec462fe8..06d9c01b1 100755 --- a/2-ui/1-document/07-modifying-document/7-create-object-tree/build-tree-dom.view/index.html +++ b/2-ui/1-document/07-modifying-document/7-create-object-tree/build-tree-dom.view/index.html @@ -17,7 +17,7 @@ "oak": {} }, "Flowering": { - "redbud": {}, + "apple tree": {}, "magnolia": {} } } diff --git a/2-ui/1-document/07-modifying-document/7-create-object-tree/innerhtml.view/index.html b/2-ui/1-document/07-modifying-document/7-create-object-tree/innerhtml.view/index.html index fd85e6c76..0f5f6b037 100644 --- a/2-ui/1-document/07-modifying-document/7-create-object-tree/innerhtml.view/index.html +++ b/2-ui/1-document/07-modifying-document/7-create-object-tree/innerhtml.view/index.html @@ -17,7 +17,7 @@ "oak": {} }, "Flowering": { - "redbud": {}, + "apple tree": {}, "magnolia": {} } } diff --git a/2-ui/1-document/07-modifying-document/7-create-object-tree/source.view/index.html b/2-ui/1-document/07-modifying-document/7-create-object-tree/source.view/index.html index d035aec68..8586f6b24 100755 --- a/2-ui/1-document/07-modifying-document/7-create-object-tree/source.view/index.html +++ b/2-ui/1-document/07-modifying-document/7-create-object-tree/source.view/index.html @@ -28,7 +28,7 @@ </li> <li>Flowering <ul> - <li>redbud</li> + <li>apple tree</li> <li>magnolia</li> </ul> </li> @@ -51,7 +51,7 @@ "oak": {} }, "Flowering": { - "redbud": {}, + "apple tree": {}, "magnolia": {} } } diff --git a/2-ui/1-document/07-modifying-document/7-create-object-tree/task.md b/2-ui/1-document/07-modifying-document/7-create-object-tree/task.md index 6b60c096f..5ec1a01bc 100644 --- a/2-ui/1-document/07-modifying-document/7-create-object-tree/task.md +++ b/2-ui/1-document/07-modifying-document/7-create-object-tree/task.md @@ -21,7 +21,7 @@ let data = { "oak": {} }, "Flowering": { - "redbud": {}, + "apple tree": {}, "magnolia": {} } } diff --git a/2-ui/1-document/07-modifying-document/9-calendar-table/solution.md b/2-ui/1-document/07-modifying-document/9-calendar-table/solution.md index 67bb5e13d..de8be56e9 100644 --- a/2-ui/1-document/07-modifying-document/9-calendar-table/solution.md +++ b/2-ui/1-document/07-modifying-document/9-calendar-table/solution.md @@ -3,7 +3,7 @@ We'll create the table as a string: `"<table>...</table>"`, and then assign it t The algorithm: 1. Create the table header with `<th>` and weekday names. -1. Create the date object `d = new Date(year, month-1)`. That's the first day of `month` (taking into account that months in JavaScript start from `0`, not `1`). -2. First few cells till the first day of the month `d.getDay()` may be empty. Let's fill them in with `<td></td>`. -3. Increase the day in `d`: `d.setDate(d.getDate()+1)`. If `d.getMonth()` is not yet the next month, then add the new cell `<td>` to the calendar. If that's a Sunday, then add a newline <code>"</tr><tr>"</code>. -4. If the month has finished, but the table row is not yet full, add empty `<td>` into it, to make it square. +2. Create the date object `d = new Date(year, month-1)`. That's the first day of `month` (taking into account that months in JavaScript start from `0`, not `1`). +3. First few cells till the first day of the month `d.getDay()` may be empty. Let's fill them in with `<td></td>`. +4. Increase the day in `d`: `d.setDate(d.getDate()+1)`. If `d.getMonth()` is not yet the next month, then add the new cell `<td>` to the calendar. If that's a Sunday, then add a newline <code>"</tr><tr>"</code>. +5. If the month has finished, but the table row is not yet full, add empty `<td>` into it, to make it square. diff --git a/2-ui/1-document/07-modifying-document/article.md b/2-ui/1-document/07-modifying-document/article.md index 8713e1850..75ce1fbb0 100644 --- a/2-ui/1-document/07-modifying-document/article.md +++ b/2-ui/1-document/07-modifying-document/article.md @@ -1,14 +1,12 @@ # Modifying the document -DOM modifications is the key to create "live" pages. +DOM modification is the key to creating "live" pages. Here we'll see how to create new elements "on the fly" and modify the existing page content. -First we'll see a simple example and then explain the methods. - ## Example: show a message -For a start, let's see how to add a message on the page that looks nicer than `alert`. +Let's demonstrate using an example. We'll add a message on the page that looks nicer than `alert`. Here's how it will look: @@ -30,15 +28,14 @@ Here's how it will look: */!* ``` -That was an HTML example. Now let's create the same `div` with JavaScript (assuming that the styles are still in the HTML or an external CSS file). +That was the HTML example. Now let's create the same `div` with JavaScript (assuming that the styles are in the HTML/CSS already). ## Creating an element - To create DOM nodes, there are two methods: `document.createElement(tag)` -: Creates a new element with the given tag: +: Creates a new *element node* with the given tag: ```js let div = document.createElement('div'); @@ -51,23 +48,30 @@ To create DOM nodes, there are two methods: let textNode = document.createTextNode('Here I am'); ``` +Most of the time we need to create element nodes, such as the `div` for the message. + ### Creating the message -In our case we want to make a `div` with given classes and the message in it: +Creating the message div takes 3 steps: ```js +// 1. Create <div> element let div = document.createElement('div'); -div.className = "alert alert-success"; + +// 2. Set its class to "alert" +div.className = "alert"; + +// 3. Fill it with the content div.innerHTML = "<strong>Hi there!</strong> You've read an important message."; ``` -After that, we have our DOM element ready. Right now it is just in a variable and we cannot see it. That is because it's not yet inserted into the page. +We've created the element. But as of now it's only in a variable named `div`, not in the page yet. So we can't see it. ## Insertion methods -To make the `div` show up, we need to insert it somewhere into `document`. For instance, in `document.body`. +To make the `div` show up, we need to insert it somewhere into `document`. For instance, into `<body>` element, referenced by `document.body`. -There's a special method for that: `document.body.appendChild(div)`. +There's a special method `append` for that: `document.body.append(div)`. Here's the full code: @@ -84,85 +88,30 @@ Here's the full code: <script> let div = document.createElement('div'); - div.className = "alert alert-success"; + div.className = "alert"; div.innerHTML = "<strong>Hi there!</strong> You've read an important message."; *!* - document.body.appendChild(div); + document.body.append(div); */!* </script> ``` -Here's a brief list of methods to insert a node into a parent element (`parentElem` for short): - -`parentElem.appendChild(node)` -: Appends `node` as the last child of `parentElem`. - - The following example adds a new `<li>` to the end of `<ol>`: - - ```html run height=100 - <ol id="list"> - <li>0</li> - <li>1</li> - <li>2</li> - </ol> +Here we called `append` on `document.body`, but we can call `append` method on any other element, to put another element into it. For instance, we can append something to `<div>` by calling `div.append(anotherElement)`. - <script> - let newLi = document.createElement('li'); - newLi.innerHTML = 'Hello, world!'; - - list.appendChild(newLi); - </script> - ``` - -`parentElem.insertBefore(node, nextSibling)` -: Inserts `node` before `nextSibling` into `parentElem`. - - The following code inserts a new list item before the second `<li>`: - - ```html run height=100 - <ol id="list"> - <li>0</li> - <li>1</li> - <li>2</li> - </ol> - <script> - let newLi = document.createElement('li'); - newLi.innerHTML = 'Hello, world!'; - - *!* - list.insertBefore(newLi, list.children[1]); - */!* - </script> - ``` - To insert `newLi` as the first element, we can do it like this: +Here are more insertion methods, they specify different places where to insert: - ```js - list.insertBefore(newLi, list.firstChild); - ``` - -`parentElem.replaceChild(node, oldChild)` -: Replaces `oldChild` with `node` among children of `parentElem`. - -All these methods return the inserted node. In other words, `parentElem.appendChild(node)` returns `node`. But usually the returned value is not used, we just run the method. - -These methods are "old school": they exist from the ancient times and we can meet them in many old scripts. Unfortunately, there are some tasks that are hard to solve with them. - -For instance, how to insert *html* if we have it as a string? Or, given a node, how to insert another node *before* it? Of course, all that is doable, but not in an elegant way. - -So there exist two other sets of insertion methods to handle all cases easily. +- `node.append(...nodes or strings)` -- append nodes or strings *at the end* of `node`, +- `node.prepend(...nodes or strings)` -- insert nodes or strings *at the beginning* of `node`, +- `node.before(...nodes or strings)` –- insert nodes or strings *before* `node`, +- `node.after(...nodes or strings)` –- insert nodes or strings *after* `node`, +- `node.replaceWith(...nodes or strings)` –- replaces `node` with the given nodes or strings. -### prepend/append/before/after +Arguments of these methods are an arbitrary list of DOM nodes to insert, or text strings (that become text nodes automatically). -This set of methods provides more flexible insertions: +Let's see them in action. -- `node.append(...nodes or strings)` -- append nodes or strings at the end of `node`, -- `node.prepend(...nodes or strings)` -- insert nodes or strings into the beginning of `node`, -- `node.before(...nodes or strings)` –- insert nodes or strings before the `node`, -- `node.after(...nodes or strings)` –- insert nodes or strings after the `node`, -- `node.replaceWith(...nodes or strings)` –- replaces `node` with the given nodes or strings. - -Here's an example of using these methods to add more items to a list and the text before/after it: +Here's an example of using these methods to add items to a list and the text before/after it: ```html autorun <ol id="ol"> @@ -172,20 +121,20 @@ Here's an example of using these methods to add more items to a list and the tex </ol> <script> - ol.before('before'); - ol.after('after'); + ol.before('before'); // insert string "before" before <ol> + ol.after('after'); // insert string "after" after <ol> - let prepend = document.createElement('li'); - prepend.innerHTML = 'prepend'; - ol.prepend(prepend); + let liFirst = document.createElement('li'); + liFirst.innerHTML = 'prepend'; + ol.prepend(liFirst); // insert liFirst at the beginning of <ol> - let append = document.createElement('li'); - append.innerHTML = 'append'; - ol.append(append); + let liLast = document.createElement('li'); + liLast.innerHTML = 'append'; + ol.append(liLast); // insert liLast at the end of <ol> </script> ``` -Here's a small picture what methods do: +Here's a visual picture of what the methods do:  @@ -203,7 +152,7 @@ before after ``` -These methods can insert multiple lists of nodes and text pieces in a single call. +As said, these methods can insert multiple nodes and text pieces in a single call. For instance, here a string and an element are inserted: @@ -214,7 +163,7 @@ For instance, here a string and an element are inserted: </script> ``` -All text is inserted *as text*. +Please note: the text is inserted "as text", not "as HTML", with proper escaping of characters such as `<`, `>`. So the final HTML is: @@ -230,20 +179,20 @@ In other words, strings are inserted in a safe way, like `elem.textContent` does So, these methods can only be used to insert DOM nodes or text pieces. -But what if we want to insert HTML "as html", with all tags and stuff working, like `elem.innerHTML`? +But what if we'd like to insert an HTML string "as html", with all tags and stuff working, in the same manner as `elem.innerHTML` does it? -### insertAdjacentHTML/Text/Element +## insertAdjacentHTML/Text/Element -There's another, pretty versatile method: `elem.insertAdjacentHTML(where, html)`. +For that we can use another, pretty versatile method: `elem.insertAdjacentHTML(where, html)`. -The first parameter is a string, specifying where to insert. Must be one of the following: +The first parameter is a code word, specifying where to insert relative to `elem`. Must be one of the following: -- `"beforebegin"` -- insert `html` before `elem`, +- `"beforebegin"` -- insert `html` immediately before `elem`, - `"afterbegin"` -- insert `html` into `elem`, at the beginning, - `"beforeend"` -- insert `html` into `elem`, at the end, -- `"afterend"` -- insert `html` after `elem`. +- `"afterend"` -- insert `html` immediately after `elem`. -The second parameter is an HTML string, inserted "as is". +The second parameter is an HTML string, that is inserted "as HTML". For instance: @@ -263,7 +212,7 @@ For instance: <p>Bye</p> ``` -That's how we can append an arbitrary HTML to our page. +That's how we can append arbitrary HTML to the page. Here's the picture of insertion variants: @@ -292,12 +241,56 @@ So here's an alternative variant of showing a message: </style> <script> - document.body.insertAdjacentHTML("afterbegin", `<div class="alert alert-success"> + document.body.insertAdjacentHTML("afterbegin", `<div class="alert"> <strong>Hi there!</strong> You've read an important message. </div>`); </script> ``` +## Node removal + +To remove a node, there's a method `node.remove()`. + +Let's make our message disappear after a second: + +```html run untrusted +<style> +.alert { + padding: 15px; + border: 1px solid #d6e9c6; + border-radius: 4px; + color: #3c763d; + background-color: #dff0d8; +} +</style> + +<script> + let div = document.createElement('div'); + div.className = "alert"; + div.innerHTML = "<strong>Hi there!</strong> You've read an important message."; + + document.body.append(div); +*!* + setTimeout(() => div.remove(), 1000); +*/!* +</script> +``` + +Please note: if we want to *move* an element to another place -- there's no need to remove it from the old one. + +**All insertion methods automatically remove the node from the old place.** + +For instance, let's swap elements: + +```html run height=50 +<div id="first">First</div> +<div id="second">Second</div> +<script> + // no need to call remove + second.after(first); // take #second and after it insert #first +</script> +``` + ## Cloning nodes: cloneNode How to insert one more similar message? @@ -335,12 +328,11 @@ An example of copying the message: </script> ``` - ## DocumentFragment [#document-fragment] -`DocumentFragment` is a special DOM node that serves as a wrapper to pass around groups of nodes. +`DocumentFragment` is a special DOM node that serves as a wrapper to pass around lists of nodes. -We can append other nodes to it, but when we insert it somewhere, then it "disappears", leaving its content inserted instead. +We can append other nodes to it, but when we insert it somewhere, then its content is inserted instead. For example, `getListContent` below generates a fragment with `<li>` items, that are later inserted into `<ul>`: @@ -402,62 +394,84 @@ ul.append(...getListContent()); // append + "..." operator = friends! We mention `DocumentFragment` mainly because there are some concepts on top of it, like [template](info:template-element) element, that we'll cover much later. +## Old-school insert/remove methods -## Removal methods +[old] -To remove nodes, there are the following methods: +There are also "old school" DOM manipulation methods, existing for historical reasons. +These methods come from really ancient times. Nowadays, there's no reason to use them, as modern methods, such as `append`, `prepend`, `before`, `after`, `remove`, `replaceWith`, are more flexible. -`parentElem.removeChild(node)` -: Removes `node` from `parentElem` (assuming it's a child). +The only reason we list these methods here is that you can find them in many old scripts: -`node.remove()` -: Removes the `node` from its place. +`parentElem.appendChild(node)` +: Appends `node` as the last child of `parentElem`. -We can easily see that the second method is much shorter. The first one exists for historical reasons. + The following example adds a new `<li>` to the end of `<ol>`: -````smart -If we want to *move* an element to another place -- there's no need to remove it from the old one. + ```html run height=100 + <ol id="list"> + <li>0</li> + <li>1</li> + <li>2</li> + </ol> -**All insertion methods automatically remove the node from the old place.** + <script> + let newLi = document.createElement('li'); + newLi.innerHTML = 'Hello, world!'; -For instance, let's swap elements: + list.appendChild(newLi); + </script> + ``` -```html run height=50 -<div id="first">First</div> -<div id="second">Second</div> -<script> - // no need to call remove - second.after(first); // take #second and after it - insert #first -</script> -``` -```` +`parentElem.insertBefore(node, nextSibling)` +: Inserts `node` before `nextSibling` into `parentElem`. -Let's make our message disappear after a second: + The following code inserts a new list item before the second `<li>`: -```html run untrusted -<style> -.alert { - padding: 15px; - border: 1px solid #d6e9c6; - border-radius: 4px; - color: #3c763d; - background-color: #dff0d8; -} -</style> + ```html run height=100 + <ol id="list"> + <li>0</li> + <li>1</li> + <li>2</li> + </ol> + <script> + let newLi = document.createElement('li'); + newLi.innerHTML = 'Hello, world!'; -<script> - let div = document.createElement('div'); - div.className = "alert alert-success"; - div.innerHTML = "<strong>Hi there!</strong> You've read an important message."; + *!* + list.insertBefore(newLi, list.children[1]); + */!* + </script> + ``` + To insert `newLi` as the first element, we can do it like this: - document.body.append(div); -*!* - setTimeout(() => div.remove(), 1000); - // or setTimeout(() => document.body.removeChild(div), 1000); -*/!* -</script> -``` + ```js + list.insertBefore(newLi, list.firstChild); + ``` + +`parentElem.replaceChild(node, oldChild)` +: Replaces `oldChild` with `node` among children of `parentElem`. + +`parentElem.removeChild(node)` +: Removes `node` from `parentElem` (assuming `node` is its child). + + The following example removes first `<li>` from `<ol>`: + + ```html run height=100 + <ol id="list"> + <li>0</li> + <li>1</li> + <li>2</li> + </ol> + + <script> + let li = list.firstElementChild; + list.removeChild(li); + </script> + ``` + +All these methods return the inserted/removed node. In other words, `parentElem.appendChild(node)` returns `node`. But usually the returned value is not used, we just run the method. ## A word about "document.write" @@ -500,51 +514,48 @@ For instance: So it's kind of unusable at "after loaded" stage, unlike other DOM methods we covered above. -That was the downside. +That's the downside. -Technically, when `document.write` is called while the browser is still reading HTML, it appends something to it, and the browser consumes it just as it were initially there. +There's an upside also. Technically, when `document.write` is called while the browser is reading ("parsing") incoming HTML, and it writes something, the browser consumes it just as if it were initially there, in the HTML text. -That gives us the upside -- it works blazingly fast, because there's *no DOM modification*. It writes directly into the page text, while the DOM is not yet built, and the browser puts it into DOM at generation-time. +So it works blazingly fast, because there's *no DOM modification* involved. It writes directly into the page text, while the DOM is not yet built. So if we need to add a lot of text into HTML dynamically, and we're at page loading phase, and the speed matters, it may help. But in practice these requirements rarely come together. And usually we can see this method in scripts just because they are old. ## Summary -Methods to create new nodes: - -- `document.createElement(tag)` -- creates an element with the given tag, -- `document.createTextNode(value)` -- creates a text node (rarely used), -- `elem.cloneNode(deep)` -- clones the element, if `deep==true` then with all descendants. - -Insertion and removal of nodes: +- Methods to create new nodes: + - `document.createElement(tag)` -- creates an element with the given tag, + - `document.createTextNode(value)` -- creates a text node (rarely used), + - `elem.cloneNode(deep)` -- clones the element, if `deep==true` then with all descendants. -- From the parent: - - `parent.appendChild(node)` - - `parent.insertBefore(node, nextSibling)` - - `parent.removeChild(node)` - - `parent.replaceChild(newElem, node)` +- Insertion and removal: + - `node.append(...nodes or strings)` -- insert into `node`, at the end, + - `node.prepend(...nodes or strings)` -- insert into `node`, at the beginning, + - `node.before(...nodes or strings)` –- insert right before `node`, + - `node.after(...nodes or strings)` –- insert right after `node`, + - `node.replaceWith(...nodes or strings)` –- replace `node`. + - `node.remove()` –- remove the `node`. - All these methods return `node`. + Text strings are inserted "as text". -- Given a list of nodes and strings: - - `node.append(...nodes or strings)` -- insert into `node`, at the end, - - `node.prepend(...nodes or strings)` -- insert into `node`, at the beginning, - - `node.before(...nodes or strings)` –- insert right before `node`, - - `node.after(...nodes or strings)` –- insert right after `node`, - - `node.replaceWith(...nodes or strings)` –- replace `node`. - - `node.remove()` –- remove the `node`. +- There are also "old school" methods: + - `parent.appendChild(node)` + - `parent.insertBefore(node, nextSibling)` + - `parent.removeChild(node)` + - `parent.replaceChild(newElem, node)` - Text strings are inserted "as text". + All these methods return `node`. -- Given a piece of HTML: `elem.insertAdjacentHTML(where, html)`, inserts depending on where: - - `"beforebegin"` -- insert `html` right before `elem`, - - `"afterbegin"` -- insert `html` into `elem`, at the beginning, - - `"beforeend"` -- insert `html` into `elem`, at the end, - - `"afterend"` -- insert `html` right after `elem`. +- Given some HTML in `html`, `elem.insertAdjacentHTML(where, html)` inserts it depending on the value of `where`: + - `"beforebegin"` -- insert `html` right before `elem`, + - `"afterbegin"` -- insert `html` into `elem`, at the beginning, + - `"beforeend"` -- insert `html` into `elem`, at the end, + - `"afterend"` -- insert `html` right after `elem`. - Also there are similar methods `elem.insertAdjacentText` and `elem.insertAdjacentElement`, they insert text strings and elements, but they are rarely used. + Also there are similar methods, `elem.insertAdjacentText` and `elem.insertAdjacentElement`, that insert text strings and elements, but they are rarely used. - To append HTML to the page before it has finished loading: - - `document.write(html)` + - `document.write(html)` - After the page is loaded such a call erases the document. Mostly seen in old scripts. + After the page is loaded such a call erases the document. Mostly seen in old scripts. diff --git a/2-ui/1-document/08-styles-and-classes/article.md b/2-ui/1-document/08-styles-and-classes/article.md index 5159c532d..46aaa3b00 100644 --- a/2-ui/1-document/08-styles-and-classes/article.md +++ b/2-ui/1-document/08-styles-and-classes/article.md @@ -7,20 +7,21 @@ There are generally two ways to style an element: 1. Create a class in CSS and add it: `<div class="...">` 2. Write properties directly into `style`: `<div style="...">`. -CSS is always the preferred way -- not only for HTML, but in JavaScript as well. +JavaScript can modify both classes and `style` properties. -We should only manipulate the `style` property if classes "can't handle it". +We should always prefer CSS classes to `style`. The latter should only be used if classes "can't handle it". -For instance, `style` is acceptable if we calculate coordinates of an element dynamically and want to set them from JavaScript, like this: +For example, `style` is acceptable if we calculate coordinates of an element dynamically and want to set them from JavaScript, like this: ```js let top = /* complex calculations */; let left = /* complex calculations */; -elem.style.left = left; // e.g '123px' + +elem.style.left = left; // e.g '123px', calculated at run-time elem.style.top = top; // e.g '456px' ``` -For other cases, like making the text red, adding a background icon -- describe that in CSS and then apply the class. That's more flexible and easier to support. +For other cases, like making the text red, adding a background icon -- describe that in CSS and then add the class (JavaScript can do that). That's more flexible and easier to support. ## className and classList @@ -40,11 +41,11 @@ For instance: </body> ``` -If we assign something to `elem.className`, it replaces the whole strings of classes. Sometimes that's what we need, but often we want to add/remove a single class. +If we assign something to `elem.className`, it replaces the whole string of classes. Sometimes that's what we need, but often we want to add/remove a single class. There's another property for that: `elem.classList`. -The `elem.classList` is a special object with methods to `add/remove/toggle` classes. +The `elem.classList` is a special object with methods to `add/remove/toggle` a single class. For instance: @@ -66,10 +67,10 @@ So we can operate both on the full class string using `className` or on individu Methods of `classList`: - `elem.classList.add/remove("class")` -- adds/removes the class. -- `elem.classList.toggle("class")` -- if the class exists, then removes it, otherwise adds it. -- `elem.classList.contains("class")` -- returns `true/false`, checks for the given class. +- `elem.classList.toggle("class")` -- adds the class if it doesn't exist, otherwise removes it. +- `elem.classList.contains("class")` -- checks for the given class, returns `true/false`. -Besides that, `classList` is iterable, so we can list all classes like this: +Besides, `classList` is iterable, so we can list all classes with `for..of`, like this: ```html run <body class="main page"> @@ -83,7 +84,7 @@ Besides that, `classList` is iterable, so we can list all classes like this: ## Element style -The property `elem.style` is an object that corresponds to what's written in the `"style"` attribute. Setting `elem.style.width="100px"` works as if we had in the attribute `style="width:100px"`. +The property `elem.style` is an object that corresponds to what's written in the `"style"` attribute. Setting `elem.style.width="100px"` works the same as if we had in the attribute `style` a string `width:100px`. For multi-word property the camelCase is used: @@ -100,14 +101,14 @@ document.body.style.backgroundColor = prompt('background color?', 'green'); ``` ````smart header="Prefixed properties" -Browser-prefixed properties like `-moz-border-radius`, `-webkit-border-radius` also follow the same rule, for instance: +Browser-prefixed properties like `-moz-border-radius`, `-webkit-border-radius` also follow the same rule: a dash means upper case. + +For instance: ```js button.style.MozBorderRadius = '5px'; button.style.WebkitBorderRadius = '5px'; ``` - -That is: a dash `"-"` becomes an uppercase. ```` ## Resetting the style property @@ -119,13 +120,21 @@ For instance, to hide an element, we can set `elem.style.display = "none"`. Then later we may want to remove the `style.display` as if it were not set. Instead of `delete elem.style.display` we should assign an empty string to it: `elem.style.display = ""`. ```js run -// if we run this code, the <body> "blinks" +// if we run this code, the <body> will blink document.body.style.display = "none"; // hide setTimeout(() => document.body.style.display = "", 1000); // back to normal ``` -If we set `display` to an empty string, then the browser applies CSS classes and its built-in styles normally, as if there were no such `display` property at all. +If we set `style.display` to an empty string, then the browser applies CSS classes and its built-in styles normally, as if there were no such `style.display` property at all. + +Also there is a special method for that, `elem.style.removeProperty('style property')`. So, We can remove a property like this: + +```js run +document.body.style.background = 'red'; //set background to red + +setTimeout(() => document.body.style.removeProperty('background'), 1000); // remove background after 1 second +``` ````smart header="Full rewrite with `style.cssText`" Normally, we use `style.*` to assign individual style properties. We can't set the full style like `div.style="color: red; width: 100px"`, because `div.style` is an object, and it's read-only. @@ -147,14 +156,14 @@ To set the full style as a string, there's a special property `style.cssText`: </script> ``` -We rarely use it, because such assignment removes all existing styles: it does not add, but replaces them. May occasionally delete something needed. But still can be done for new elements when we know we won't delete something important. +This property is rarely used, because such assignment removes all existing styles: it does not add, but replaces them. May occasionally delete something needed. But we can safely use it for new elements, when we know we won't delete an existing style. The same can be accomplished by setting an attribute: `div.setAttribute('style', 'color: red...')`. ```` ## Mind the units -CSS units must be provided in style values. +Don't forget to add CSS units to values. For instance, we should not set `elem.style.top` to `10`, but rather to `10px`. Otherwise it wouldn't work: @@ -177,11 +186,11 @@ For instance, we should not set `elem.style.top` to `10`, but rather to `10px`. </body> ``` -Please note how the browser "unpacks" the property `style.margin` in the last lines and infers `style.marginLeft` and `style.marginTop` (and other partial margins) from it. +Please note: the browser "unpacks" the property `style.margin` in the last lines and infers `style.marginLeft` and `style.marginTop` from it. ## Computed styles: getComputedStyle -Modifying a style is easy. But how to *read* it? +So, modifying a style is easy. But how to *read* it? For instance, we want to know the size, margins, the color of an element. How to do it? @@ -207,14 +216,14 @@ For instance, here `style` doesn't see the margin: </body> ``` -...But what if we need, say, to increase the margin by 20px? We would want the current value of it. +...But what if we need, say, to increase the margin by `20px`? We would want the current value of it. There's another method for that: `getComputedStyle`. The syntax is: ```js -getComputedStyle(element[, pseudo]) +getComputedStyle(element, [pseudo]) ``` element @@ -223,7 +232,7 @@ element pseudo : A pseudo-element if required, for instance `::before`. An empty string or no argument means the element itself. -The result is an object with style properties, like `elem.style`, but now with respect to all CSS classes. +The result is an object with styles, like `elem.style`, but now with respect to all CSS classes. For instance: @@ -248,40 +257,26 @@ For instance: ```smart header="Computed and resolved values" There are two concepts in [CSS](https://drafts.csswg.org/cssom/#resolved-values): -1. A *computed* style value is the value after all CSS rules and CSS inheritance is applied, as the result of the CSS cascade. It can look like `height:1em` or `font-size:125%`. +1. A *computed* style value is the value after all CSS rules and CSS inheritance is applied, as the result of the CSS cascade. It can look like `height:1em` or `font-size:125%`. 2. A *resolved* style value is the one finally applied to the element. Values like `1em` or `125%` are relative. The browser takes the computed value and makes all units fixed and absolute, for instance: `height:20px` or `font-size:16px`. For geometry properties resolved values may have a floating point, like `width:50.5px`. A long time ago `getComputedStyle` was created to get computed values, but it turned out that resolved values are much more convenient, and the standard changed. -So nowadays `getComputedStyle` actually returns the resolved value of the property. +So nowadays `getComputedStyle` actually returns the resolved value of the property, usually in `px` for geometry. ``` ````warn header="`getComputedStyle` requires the full property name" We should always ask for the exact property that we want, like `paddingLeft` or `marginTop` or `borderTopWidth`. Otherwise the correct result is not guaranteed. For instance, if there are properties `paddingLeft/paddingTop`, then what should we get for `getComputedStyle(elem).padding`? Nothing, or maybe a "generated" value from known paddings? There's no standard rule here. - -There are other inconsistencies. As an example, some browsers (Chrome) show `10px` in the document below, and some of them (Firefox) -- do not: - -```html run -<style> - body { - margin: 10px; - } -</style> -<script> - let style = getComputedStyle(document.body); - alert(style.margin); // empty string in Firefox -</script> -``` ```` -```smart header="\"Visited\" links styles are hidden!" +```smart header="Styles applied to `:visited` links are hidden!" Visited links may be colored using `:visited` CSS pseudoclass. But `getComputedStyle` does not give access to that color, because otherwise an arbitrary page could find out whether the user visited a link by creating it on the page and checking the styles. -JavaScript may not see the styles applied by `:visited`. And also, there's a limitation in CSS that forbids to apply geometry-changing styles in `:visited`. That's to guarantee that there's no sideway for an evil page to test if a link was visited and hence to break the privacy. +JavaScript may not see the styles applied by `:visited`. And also, there's a limitation in CSS that forbids applying geometry-changing styles in `:visited`. That's to guarantee that there's no side way for an evil page to test if a link was visited and hence to break the privacy. ``` ## Summary @@ -299,4 +294,4 @@ To change the styles: To read the resolved styles (with respect to all classes, after all CSS is applied and final values are calculated): -- The `getComputedStyle(elem[, pseudo])` returns the style-like object with them. Read-only. +- The `getComputedStyle(elem, [pseudo])` returns the style-like object with them. Read-only. diff --git a/2-ui/1-document/09-size-and-scroll/1-get-scroll-height-bottom/task.md b/2-ui/1-document/09-size-and-scroll/1-get-scroll-height-bottom/task.md index b0f1f2214..796039c2a 100644 --- a/2-ui/1-document/09-size-and-scroll/1-get-scroll-height-bottom/task.md +++ b/2-ui/1-document/09-size-and-scroll/1-get-scroll-height-bottom/task.md @@ -4,7 +4,7 @@ importance: 5 # What's the scroll from the bottom? -The `elem.scrollTop` property is the size of the scrolled out part from the top. How to get "`scrollBottom`" -- the size from the bottom? +The `elem.scrollTop` property is the size of the scrolled out part from the top. How to get the size of the bottom scroll (let's call it `scrollBottom`)? Write the code that works for an arbitrary `elem`. diff --git a/2-ui/1-document/09-size-and-scroll/2-scrollbar-width/task.md b/2-ui/1-document/09-size-and-scroll/2-scrollbar-width/task.md index 67787894a..b39004cbf 100644 --- a/2-ui/1-document/09-size-and-scroll/2-scrollbar-width/task.md +++ b/2-ui/1-document/09-size-and-scroll/2-scrollbar-width/task.md @@ -6,6 +6,6 @@ importance: 3 Write the code that returns the width of a standard scrollbar. -For Windows it usually varies between `12px` and `20px`. If the browser doesn't reserves any space for it, then it may be `0px`. +For Windows it usually varies between `12px` and `20px`. If the browser doesn't reserve any space for it (the scrollbar is half-translucent over the text, also happens), then it may be `0px`. P.S. The code should work for any HTML document, do not depend on its content. diff --git a/2-ui/1-document/09-size-and-scroll/4-put-ball-in-center/ball-half/index.html b/2-ui/1-document/09-size-and-scroll/4-put-ball-in-center/ball-half/index.html index ca9c4d579..8f855ecfa 100755 --- a/2-ui/1-document/09-size-and-scroll/4-put-ball-in-center/ball-half/index.html +++ b/2-ui/1-document/09-size-and-scroll/4-put-ball-in-center/ball-half/index.html @@ -9,7 +9,7 @@ background-color: #00FF00; position: relative; } - + #ball { position: absolute; } @@ -20,7 +20,7 @@ <div id="field"> - <img src="https://js.cx/clipart/ball.svg" id="ball"> . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . + <img src="https://js.cx/clipart/ball.svg" height="40" width="40" id="ball"> . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . </div> @@ -38,4 +38,4 @@ </body> -</html> \ No newline at end of file +</html> diff --git a/2-ui/1-document/09-size-and-scroll/4-put-ball-in-center/field.svg b/2-ui/1-document/09-size-and-scroll/4-put-ball-in-center/field.svg index 4ae90b1c7..448150682 100644 --- a/2-ui/1-document/09-size-and-scroll/4-put-ball-in-center/field.svg +++ b/2-ui/1-document/09-size-and-scroll/4-put-ball-in-center/field.svg @@ -1 +1,5 @@ -<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="233" height="156" viewBox="0 0 233 156"><defs><style>@import url(https://fonts.googleapis.com/css?family=Open+Sans:bold,italic,bolditalic%7CPT+Mono);@font-face{font-family:'PT Mono';font-weight:700;font-style:normal;src:local('PT MonoBold'),url(/font/PTMonoBold.woff2) format('woff2'),url(/font/PTMonoBold.woff) format('woff'),url(/font/PTMonoBold.ttf) format('truetype')}</style></defs><g id="dom" fill="none" fill-rule="evenodd" stroke="none" stroke-width="1"><g id="field.svg"><image id="Screen-Shot-2017-02-25-at-23.45.22" width="224" height="150" x="4" y="3" opacity=".7" xlink:href="data:image/png;base64,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"/><text id="(0,0)" fill="#A7333A" font-family="PTMono-Bold, PT Mono" font-size="14" font-weight="bold"><tspan x="45" y="60">(0,0)</tspan></text><circle id="Oval" cx="15.5" cy="15.5" r="4.5" fill="#C06334"/><text id="clientWidth" fill="#A7333A" font-family="PTMono-Bold, PT Mono" font-size="14" font-weight="bold"><tspan x="73" y="114">clientWidth</tspan></text><path id="Line-9" fill="#C06334" fill-rule="nonzero" d="M24.114 22.183l20.711 4.719-5.078 6.181 13.705 11.258 1.16.952-1.905 2.318-1.16-.952-13.704-11.258-5.078 6.183-8.651-19.401z"/><path id="Line-10" fill="#C06334" fill-rule="nonzero" d="M197 118l19 9.5-19 9.5v-8H34v8l-19-9.5 19-9.5v8h163v-8z"/></g></g></svg> \ No newline at end of file +<<<<<<< HEAD +<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="233" height="156" viewBox="0 0 233 156"><defs><style>@import url(https://fonts.googleapis.com/css?family=Open+Sans:bold,italic,bolditalic%7CPT+Mono);@font-face{font-family:'PT Mono';font-weight:700;font-style:normal;src:local('PT MonoBold'),url(/font/PTMonoBold.woff2) format('woff2'),url(/font/PTMonoBold.woff) format('woff'),url(/font/PTMonoBold.ttf) format('truetype')}</style></defs><g id="dom" fill="none" fill-rule="evenodd" stroke="none" stroke-width="1"><g id="field.svg"><image id="Screen-Shot-2017-02-25-at-23.45.22" width="224" height="150" x="4" y="3" opacity=".7" xlink:href="data:image/png;base64,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"/><text id="(0,0)" fill="#A7333A" font-family="PTMono-Bold, PT Mono" font-size="14" font-weight="bold"><tspan x="45" y="60">(0,0)</tspan></text><circle id="Oval" cx="15.5" cy="15.5" r="4.5" fill="#C06334"/><text id="clientWidth" fill="#A7333A" font-family="PTMono-Bold, PT Mono" font-size="14" font-weight="bold"><tspan x="73" y="114">clientWidth</tspan></text><path id="Line-9" fill="#C06334" fill-rule="nonzero" d="M24.114 22.183l20.711 4.719-5.078 6.181 13.705 11.258 1.16.952-1.905 2.318-1.16-.952-13.704-11.258-5.078 6.183-8.651-19.401z"/><path id="Line-10" fill="#C06334" fill-rule="nonzero" d="M197 118l19 9.5-19 9.5v-8H34v8l-19-9.5 19-9.5v8h163v-8z"/></g></g></svg> +======= +<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="233" height="156" viewBox="0 0 233 156"><defs><style>@import url(https://fonts.googleapis.com/css?family=Open+Sans:bold,italic,bolditalic%7CPT+Mono);@font-face{font-family:'PT Mono';font-weight:700;font-style:normal;src:local('PT MonoBold'),url(/font/PTMonoBold.woff2) format('woff2'),url(/font/PTMonoBold.woff) format('woff'),url(/font/PTMonoBold.ttf) format('truetype')}</style></defs><g id="dom" fill="none" fill-rule="evenodd" stroke="none" stroke-width="1"><g id="field.svg"><image id="Screen-Shot-2017-02-25-at-23.45.22" width="224" height="150" x="4" y="3" opacity=".7" xlink:href="data:image/png;base64,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"/><text id="(0,0)" fill="#A7333A" font-family="PTMono-Bold, PT Mono" font-size="14" font-weight="bold"><tspan x="45" y="60">(0,0)</tspan></text><circle id="Oval" cx="15.5" cy="15.5" r="4.5" fill="#C06334"/><text id="clientWidth" fill="#A7333A" font-family="PTMono-Bold, PT Mono" font-size="14" font-weight="bold"><tspan x="73" y="114">clientWidth</tspan></text><path id="Line-9" fill="#C06334" fill-rule="nonzero" d="M24.114 22.183l20.711 4.719-5.078 6.181 13.705 11.258 1.16.952-1.905 2.318-1.16-.952-13.704-11.258-5.078 6.183-8.651-19.401z"/><path id="Line-10" fill="#C06334" fill-rule="nonzero" d="M197 118l19 9.5-19 9.5v-8H34v8l-19-9.5 19-9.5v8h163v-8z"/></g></g></svg> +>>>>>>> 540d753e90789205fc6e75c502f68382c87dea9b diff --git a/2-ui/1-document/09-size-and-scroll/4-put-ball-in-center/solution.md b/2-ui/1-document/09-size-and-scroll/4-put-ball-in-center/solution.md index 1dce9ffaa..afa1d8f50 100644 --- a/2-ui/1-document/09-size-and-scroll/4-put-ball-in-center/solution.md +++ b/2-ui/1-document/09-size-and-scroll/4-put-ball-in-center/solution.md @@ -24,19 +24,22 @@ ball.style.left = Math.round(field.clientWidth / 2 - ball.offsetWidth / 2) + 'px ball.style.top = Math.round(field.clientHeight / 2 - ball.offsetHeight / 2) + 'px'; ``` -**Attention: the pitfall!** +Now the ball is finally centered. + +````warn header="Attention: the pitfall!" The code won't work reliably while `<img>` has no width/height: ```html <img src="ball.png" id="ball"> ``` +```` When the browser does not know the width/height of an image (from tag attributes or CSS), then it assumes them to equal `0` until the image finishes loading. -In real life after the first load browser usually caches the image, and on next loads it will have the size immediately. +So the value of `ball.offsetWidth` will be `0` until the image loads. That leads to wrong coordinates in the code above. -But on the first load the value of `ball.offsetWidth` is `0`. That leads to wrong coordinates. +After the first load, the browser usually caches the image, and on reloads it will have the size immediately. But on the first load the value of `ball.offsetWidth` is `0`. We should fix that by adding `width/height` to `<img>`: diff --git a/2-ui/1-document/09-size-and-scroll/4-put-ball-in-center/solution.view/index.html b/2-ui/1-document/09-size-and-scroll/4-put-ball-in-center/solution.view/index.html index 9ebe6001e..9f21e5421 100755 --- a/2-ui/1-document/09-size-and-scroll/4-put-ball-in-center/solution.view/index.html +++ b/2-ui/1-document/09-size-and-scroll/4-put-ball-in-center/solution.view/index.html @@ -26,7 +26,7 @@ <script> - // ball.offsetWidth=0 before image loaded! + // ball.offsetWidth=0 before image loaded! // to fix: set width ball.style.left = Math.round(field.clientWidth / 2 - ball.offsetWidth / 2) + 'px' ball.style.top = Math.round(field.clientHeight / 2 - ball.offsetHeight / 2) + 'px' diff --git a/2-ui/1-document/09-size-and-scroll/4-put-ball-in-center/task.md b/2-ui/1-document/09-size-and-scroll/4-put-ball-in-center/task.md index 57746d921..f56e0858b 100644 --- a/2-ui/1-document/09-size-and-scroll/4-put-ball-in-center/task.md +++ b/2-ui/1-document/09-size-and-scroll/4-put-ball-in-center/task.md @@ -10,7 +10,7 @@ Here's how the source document looks: What are coordinates of the field center? -Calculate them and use to place the ball into the center of the field: +Calculate them and use to place the ball into the center of the green field: [iframe src="solution" height=180] diff --git a/2-ui/1-document/09-size-and-scroll/article.md b/2-ui/1-document/09-size-and-scroll/article.md index 88d671604..872e70dda 100644 --- a/2-ui/1-document/09-size-and-scroll/article.md +++ b/2-ui/1-document/09-size-and-scroll/article.md @@ -2,8 +2,7 @@ There are many JavaScript properties that allow us to read information about element width, height and other geometry features. -We often need them when moving or positioning elements in JavaScript, to correctly calculate coordinates. - +We often need them when moving or positioning elements in JavaScript. ## Sample element @@ -18,8 +17,8 @@ As a sample element to demonstrate properties we'll use the one given below: width: 300px; height: 200px; border: 25px solid #E8C48F; - padding: 20px; - overflow: auto; + padding: 20px; + overflow: auto; } </style> ``` @@ -33,38 +32,42 @@ The element looks like this: You can [open the document in the sandbox](sandbox:metric). ```smart header="Mind the scrollbar" -The picture above demonstrates the most complex case when the element has a scrollbar. Some browsers (not all) reserve the space for it by taking it from the content. +The picture above demonstrates the most complex case when the element has a scrollbar. Some browsers (not all) reserve the space for it by taking it from the content (labeled as "content width" above). -So, without scrollbar the content width would be `300px`, but if the scrollbar is `16px` wide (the width may vary between devices and browsers) then only `300 - 16 = 284px` remains, and we should take it into account. That's why examples from this chapter assume that there's a scrollbar. If there's no scrollbar, then things are just a bit simpler. +So, without scrollbar the content width would be `300px`, but if the scrollbar is `16px` wide (the width may vary between devices and browsers) then only `300 - 16 = 284px` remains, and we should take it into account. That's why examples from this chapter assume that there's a scrollbar. Without it, some calculations are simpler. ``` -```smart header="The `padding-bottom` may be filled with text" -Usually paddings are shown empty on illustrations, but if there's a lot of text in the element and it overflows, then browsers show the "overflowing" text at `padding-bottom`, so you can see that in examples. But the padding is still there, unless specified otherwise. +```smart header="The `padding-bottom` area may be filled with text" +Usually paddings are shown empty on our illustrations, but if there's a lot of text in the element and it overflows, then browsers show the "overflowing" text at `padding-bottom`, that's normal. ``` ## Geometry -Element properties that provide width, height and other geometry are always numbers. They are assumed to be in pixels. - -Here's the overall picture: +Here's the overall picture with geometry properties:  -They are many properties, it's difficult to fit them all in the single picture, but their values are simple and easy to understand. +<<<<<<< HEAD + +======= +Values of these properties are technically numbers, but these numbers are "of pixels", so these are pixel measurements. +>>>>>>> 540d753e90789205fc6e75c502f68382c87dea9b -Let's start exploring them from the outside of the element. +Let's start exploring the properties starting from the outside of the element. ## offsetParent, offsetLeft/Top These properties are rarely needed, but still they are the "most outer" geometry properties, so we'll start with them. -The `offsetParent` is the nearest ancestor that is: +The `offsetParent` is the nearest ancestor that the browser uses for calculating coordinates during rendering. -1. CSS-positioned (`position` is `absolute`, `relative`, `fixed` or `sticky`), -2. or `<td>`, `<th>`, `<table>`, -2. or `<body>`. +That's the nearest ancestor that is one of the following: -In most practical cases we can use `offsetParent` to get the nearest CSS-positioned ancestor. And `offsetLeft/offsetTop` provide x/y coordinates relative to its upper-left corner. +1. CSS-positioned (`position` is `absolute`, `relative`, `fixed` or `sticky`), or +2. `<td>`, `<th>`, or `<table>`, or +3. `<body>`. + +Properties `offsetLeft/offsetTop` provide x/y coordinates relative to `offsetParent` upper-left corner. In the example below the inner `<div>` has `<main>` as `offsetParent` and `offsetLeft/offsetTop` shifts from its upper-left corner (`180`): @@ -82,7 +85,10 @@ In the example below the inner `<div>` has `<main>` as `offsetParent` and `offse ```  +<<<<<<< HEAD +======= +>>>>>>> 540d753e90789205fc6e75c502f68382c87dea9b There are several occasions when `offsetParent` is `null`: @@ -103,12 +109,12 @@ For our sample element: - `offsetWidth = 390` -- the outer width, can be calculated as inner CSS-width (`300px`) plus paddings (`2 * 20px`) and borders (`2 * 25px`). - `offsetHeight = 290` -- the outer height. -````smart header="Geometry properties for not shown elements are zero/null" -Geometry properties are calculated only for shown elements. +````smart header="Geometry properties are zero/null for elements that are not displayed" +Geometry properties are calculated only for displayed elements. -If an element (or any of its ancestors) has `display:none` or is not in the document, then all geometry properties are zero or `null` depending on what it is. +If an element (or any of its ancestors) has `display:none` or is not in the document, then all geometry properties are zero (or `null` for `offsetParent`). -For example, `offsetParent` is `null`, and `offsetWidth`, `offsetHeight` are `0`. +For example, `offsetParent` is `null`, and `offsetWidth`, `offsetHeight` are `0` when we created an element, but haven't inserted it into the document yet, or it (or its ancestor) has `display:none`. We can use this to check if an element is hidden, like this: @@ -118,7 +124,7 @@ function isHidden(elem) { } ``` -Please note that such `isHidden` returns `true` for elements that are on-screen, but have zero sizes (like an empty `<div>`). +Please note that such `isHidden` returns `true` for elements that are on-screen, but have zero sizes. ```` ## clientTop/Left @@ -134,14 +140,19 @@ In our example:  -...But to be precise -- they are not borders, but relative coordinates of the inner side from the outer side. +...But to be precise -- these properties are not border width/height, but rather relative coordinates of the inner side from the outer side. What's the difference? It becomes visible when the document is right-to-left (the operating system is in Arabic or Hebrew languages). The scrollbar is then not on the right, but on the left, and then `clientLeft` also includes the scrollbar width. -In that case, `clientLeft` would be not `25`, but with the scrollbar width `25 + 16 = 41`: +In that case, `clientLeft` would be not `25`, but with the scrollbar width `25 + 16 = 41`. + +<<<<<<< HEAD +======= +Here's the example in hebrew: +>>>>>>> 540d753e90789205fc6e75c502f68382c87dea9b  ## clientWidth/Height @@ -152,7 +163,9 @@ They include the content width together with paddings, but without the scrollbar  -On the picture above let's first consider `clientHeight`: it's easier to evaluate. There's no horizontal scrollbar, so it's exactly the sum of what's inside the borders: CSS-height `200px` plus top and bottom paddings (`2 * 20px`) total `240px`. +On the picture above let's first consider `clientHeight`. + +There's no horizontal scrollbar, so it's exactly the sum of what's inside the borders: CSS-height `200px` plus top and bottom paddings (`2 * 20px`) total `240px`. Now `clientWidth` -- here the content width is not `300px`, but `284px`, because `16px` are occupied by the scrollbar. So the sum is `284px` plus left and right paddings, total `324px`. @@ -164,8 +177,7 @@ So when there's no padding we can use `clientWidth/clientHeight` to get the cont ## scrollWidth/Height -- Properties `clientWidth/clientHeight` only account for the visible part of the element. -- Properties `scrollWidth/scrollHeight` also include the scrolled out (hidden) parts: +These properties are like `clientWidth/clientHeight`, but they also include the scrolled out (hidden) parts:  @@ -210,16 +222,16 @@ If you click the element below, the code `elem.scrollTop += 10` executes. That m <div onclick="this.scrollTop+=10" style="cursor:pointer;border:1px solid black;width:100px;height:80px;overflow:auto">Click<br>Me<br>1<br>2<br>3<br>4<br>5<br>6<br>7<br>8<br>9</div> ``` -Setting `scrollTop` to `0` or `Infinity` will make the element scroll to the very top/bottom respectively. +Setting `scrollTop` to `0` or a big value, such as `1e9` will make the element scroll to the very top/bottom respectively. ```` ## Don't take width/height from CSS -We've just covered geometry properties of DOM elements. They are normally used to get widths, heights and calculate distances. +We've just covered geometry properties of DOM elements, that can be used to get widths, heights and calculate distances. But as we know from the chapter <info:styles-and-classes>, we can read CSS-height and width using `getComputedStyle`. -So why not to read the width of an element like this? +So why not to read the width of an element with `getComputedStyle`, like this? ```js run let elem = document.body; @@ -229,7 +241,7 @@ alert( getComputedStyle(elem).width ); // show CSS width for elem Why should we use geometry properties instead? There are two reasons: -1. First, CSS width/height depend on another property: `box-sizing` that defines "what is" CSS width and height. A change in `box-sizing` for CSS purposes may break such JavaScript. +1. First, CSS `width/height` depend on another property: `box-sizing` that defines "what is" CSS width and height. A change in `box-sizing` for CSS purposes may break such JavaScript. 2. Second, CSS `width/height` may be `auto`, for instance for an inline element: ```html run @@ -242,9 +254,9 @@ Why should we use geometry properties instead? There are two reasons: </script> ``` - From the CSS standpoint, `width:auto` is perfectly normal, but in JavaScript we need an exact size in `px` that we can use in calculations. So here CSS width is useless at all. + From the CSS standpoint, `width:auto` is perfectly normal, but in JavaScript we need an exact size in `px` that we can use in calculations. So here CSS width is useless. -And there's one more reason: a scrollbar. Sometimes the code that works fine without a scrollbar starts to bug with it, because a scrollbar takes the space from the content in some browsers. So the real width available for the content is *less* than CSS width. And `clientWidth/clientHeight` take that into account. +And there's one more reason: a scrollbar. Sometimes the code that works fine without a scrollbar becomes buggy with it, because a scrollbar takes the space from the content in some browsers. So the real width available for the content is *less* than CSS width. And `clientWidth/clientHeight` take that into account. ...But with `getComputedStyle(elem).width` the situation is different. Some browsers (e.g. Chrome) return the real inner width, minus the scrollbar, and some of them (e.g. Firefox) -- CSS width (ignore the scrollbar). Such cross-browser differences is the reason not to use `getComputedStyle`, but rather rely on geometry properties. @@ -267,9 +279,9 @@ Elements have the following geometry properties: - `offsetParent` -- is the nearest positioned ancestor or `td`, `th`, `table`, `body`. - `offsetLeft/offsetTop` -- coordinates relative to the upper-left edge of `offsetParent`. - `offsetWidth/offsetHeight` -- "outer" width/height of an element including borders. -- `clientLeft/clientTop` -- the distance from the upper-left outer corner to its upper-left inner corner. For left-to-right OS they are always the widths of left/top borders. For right-to-left OS the vertical scrollbar is on the left so `clientLeft` includes its width too. +- `clientLeft/clientTop` -- the distances from the upper-left outer corner to the upper-left inner (content + padding) corner. For left-to-right OS they are always the widths of left/top borders. For right-to-left OS the vertical scrollbar is on the left so `clientLeft` includes its width too. - `clientWidth/clientHeight` -- the width/height of the content including paddings, but without the scrollbar. -- `scrollWidth/scrollHeight` -- the width/height of the content including the scrolled out parts. Also includes paddings, but not the scrollbar. -- `scrollLeft/scrollTop` -- width/height of the scrolled out part of the element, starting from its upper-left corner. +- `scrollWidth/scrollHeight` -- the width/height of the content, just like `clientWidth/clientHeight`, but also include scrolled-out, invisible part of the element. +- `scrollLeft/scrollTop` -- width/height of the scrolled out upper part of the element, starting from its upper-left corner. -All properties are read-only except `scrollLeft/scrollTop`. They make the browser scroll the element if changed. +All properties are read-only except `scrollLeft/scrollTop` that make the browser scroll the element if changed. diff --git a/2-ui/1-document/09-size-and-scroll/metric-all.svg b/2-ui/1-document/09-size-and-scroll/metric-all.svg index a5dadb47f..ad20c645a 100644 --- a/2-ui/1-document/09-size-and-scroll/metric-all.svg +++ b/2-ui/1-document/09-size-and-scroll/metric-all.svg @@ -1 +1,5 @@ -<svg xmlns="http://www.w3.org/2000/svg" width="670" height="602" viewBox="0 0 670 602"><defs><style>@import url(https://fonts.googleapis.com/css?family=Open+Sans:bold,italic,bolditalic%7CPT+Mono);@font-face{font-family:'PT Mono';font-weight:700;font-style:normal;src:local('PT MonoBold'),url(/font/PTMonoBold.woff2) format('woff2'),url(/font/PTMonoBold.woff) format('woff'),url(/font/PTMonoBold.ttf) format('truetype')}</style></defs><defs><linearGradient id="linearGradient-1" x1="50%" x2="50%" y1="0%" y2="100%"><stop offset="0%" stop-color="#FFF"/><stop offset="100%" stop-color="#D1CFCD"/></linearGradient><linearGradient id="linearGradient-2" x1="50%" x2="50%" y1="0%" y2="100%"><stop offset="0%" stop-color="#FFF"/><stop offset="100%" stop-color="#D1CFCD"/></linearGradient></defs><g id="dom" fill="none" fill-rule="evenodd" stroke="none" stroke-width="1"><g id="metric-all.svg"><text id="Introduction" fill="#643B0C" font-family="OpenSans-Bold, Open Sans" font-size="16" font-weight="bold"><tspan x="160" y="94">Introduction</tspan> <tspan x="160" y="122" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">This Ecma Standard is based on several </tspan> <tspan x="160" y="141" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">originating technologies, the most well </tspan> <tspan x="160" y="160" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">known being JavaScript (Netscape) and </tspan> <tspan x="160" y="179" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">JScript (Microsoft). The language was </tspan> <tspan x="160" y="198" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">invented by Brendan Eich at Netscape and </tspan> <tspan x="160" y="217" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">first appeared in that company’s Navigator </tspan> <tspan x="160" y="236" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">2.0 browser. It has appeared in all </tspan> <tspan x="160" y="255" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">subsequent browsers from Netscape and </tspan> <tspan x="160" y="274" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">in all browsers from Microsoft starting with </tspan> <tspan x="160" y="293" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">Internet Explorer 3.0.</tspan> <tspan x="160" y="312" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">The development of this Standard started </tspan> <tspan x="160" y="331" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">in November 1996. The first edition of this </tspan> <tspan x="160" y="350" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">Ecma Standard was adopted by the Ecma </tspan> <tspan x="160" y="369" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">General Assembly of June 1997.</tspan> <tspan x="160" y="388" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">That Ecma Standard was submitted to ISO/</tspan> <tspan x="160" y="407" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">IEC JTC 1 for adoption under the fast-track </tspan> <tspan x="160" y="426" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">procedure, and approved as international </tspan> <tspan x="160" y="445" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">standard ISO/IEC 16262, in April 1998. The </tspan> <tspan x="160" y="464" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">Ecma General Assembly of June 1998 </tspan> <tspan x="160" y="483" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">approved the second edition of ECMA-262 </tspan> <tspan x="160" y="502" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">to keep it fully aligned with ISO/IEC 16262. </tspan> <tspan x="160" y="521" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">Changes between the first and the second </tspan> <tspan x="160" y="540" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">edition are editorial in nature.</tspan></text><path id="Rectangle-1" fill="#DBAF88" d="M491 162v290H117V162h374zm-25 25H142v240h324V187z"/><path id="Rectangle-2" stroke="#DBAF88" stroke-width="2" d="M141 62h326v500H141z"/><text id="scrollHeight" fill="#C06334" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal" transform="rotate(-90 592 310)"><tspan x="541.6" y="314.5">scrollHeight</tspan></text><text id="offsetHeight" fill="#C06334" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal" transform="rotate(-90 552 310)"><tspan x="501.6" y="314.5">offsetHeight</tspan></text><text id="scrollTop" fill="#C06334" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal" transform="rotate(-90 618 125)"><tspan x="580.2" y="129.5">scrollTop</tspan></text><path id="Line-27" stroke="#C06334" stroke-dasharray="3,6" stroke-linecap="square" stroke-width="2" d="M466.5 62H640"/><path id="Line-28" stroke="#C06334" stroke-dasharray="3,6" stroke-linecap="square" stroke-width="2" d="M492.5 163h92.14"/><path id="Line-29" stroke="#C06334" stroke-dasharray="3,6" stroke-linecap="square" stroke-width="2" d="M492.5 451h92.14"/><path id="Line-33" stroke="#C06334" stroke-dasharray="3,6" stroke-linecap="square" stroke-width="2" d="M467.5 189H640"/><path id="Line-32" stroke="#C06334" stroke-dasharray="3,6" stroke-linecap="square" stroke-width="2" d="M467.5 427h72.14"/><path id="Line-26" stroke="#C06334" stroke-dasharray="3,6" stroke-linecap="square" stroke-width="2" d="M466.5 561h148.14"/><path id="Line-25" fill="#C06334" fill-rule="nonzero" d="M605 64.5l7 14h-6v466h6l-7 14-7-14h6v-466h-6l7-14z"/><path id="Line-30" fill="#C06334" fill-rule="nonzero" d="M565 164.5l7 14h-6v255h6l-7 14-7-14h6v-255h-6l7-14z"/><text id="clientHeight" fill="#C06334" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal" transform="rotate(-90 510 304)"><tspan x="459.6" y="308.5">clientHeight</tspan></text><path id="Line-34" fill="#C06334" fill-rule="nonzero" d="M523 191.5l7 14h-6v206h6l-7 14-7-14h6v-206h-6l7-14z"/><text id="offsetTop" fill="#C06334" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal" transform="rotate(-90 104 83)"><tspan x="66.2" y="87.5">offsetTop</tspan></text><text id="clientLeft" fill="#166388" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal" transform="rotate(-90 130.5 237)"><tspan x="88.5" y="241.5">clientLeft</tspan></text><path id="Line-36" fill="#C06334" fill-rule="nonzero" d="M117 4.5l7 14h-6v128h6l-7 14-7-14h6v-128h-6l7-14z"/><path id="Line-31" fill="#C06334" fill-rule="nonzero" d="M631 64.5l7 14h-6v96.499l6 .001-7 14-7-14 6-.001V78.5h-6l7-14z"/><path id="Rectangle-14" fill="#FFF" d="M154 73h312v89H154z"/><path id="Rectangle-15" fill="#FFF" d="M154 451h312v93H154z"/><path id="Line-39" fill="#C06334" fill-rule="nonzero" d="M431 479.09l14 7-14 7-.001-6h-271.36l.001 6-14-7 14-7-.001 6h271.36l.001-6z"/><path id="Line-42" stroke="#C06334" stroke-dasharray="3,6" stroke-linecap="square" stroke-width="2" d="M445.64 510v-84"/><path id="Line-43" stroke="#C06334" stroke-dasharray="3,6" stroke-linecap="square" stroke-width="2" d="M141.64 510v-84"/><text id="clientWidth" fill="#C06334" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="261.3" y="478">clientWidth</tspan></text><path id="Line-41" fill="#C06334" fill-rule="nonzero" d="M100 156.09l14 7-14 7v-6H18.639l.001 6-14-7 14-7-.001 6H100v-6z"/><text id="clientTop" fill="#166388" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="147.7" y="178">clientTop</tspan></text><text id="offsetLeft" fill="#C06334" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="17.5" y="154">offsetLeft</tspan></text><path id="Line-40" fill="#C06334" fill-rule="nonzero" d="M475 522.09l14 7-14 7-.001-6h-340.36l.001 6-14-7 14-7-.001 6h340.36l.001-6z"/><path id="Line-45" stroke="#C06334" stroke-dasharray="3,6" stroke-linecap="square" stroke-width="2" d="M490.64 551V447"/><path id="Line-44" stroke="#C06334" stroke-dasharray="3,6" stroke-linecap="square" stroke-width="2" d="M116.64 551V447"/><text id="offsetWidth" fill="#C06334" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="258.3" y="516">offsetWidth</tspan></text><path id="Rectangle-233" stroke="#AF6E24" stroke-width="2" d="M1 1h668v600H1z"/><g id="Group" transform="translate(450 187)"><rect id="Rectangle-19" width="15" height="239" x=".5" y=".5" fill="#D1CFCD" stroke="#D1CFCD" rx="3"/><g id="Rectangle-18-+-Triangle-1"><rect id="Rectangle-18" width="15" height="19" x=".5" y=".5" fill="url(#linearGradient-1)" stroke="#D1CFCD" rx="3"/><path id="Triangle-1" fill="#7E7C7B" d="M8 7l3.2 6H4.8z"/></g><g id="Rectangle-18-+-Triangle-2" transform="matrix(1 0 0 -1 0 240)"><rect id="Rectangle-18" width="15" height="19" x=".5" y=".5" fill="url(#linearGradient-1)" stroke="#D1CFCD" rx="3"/><path id="Triangle-1" fill="#7E7C7B" d="M8 7l3.2 6H4.8z"/></g><g id="Rectangle-18-+-Triangle-3-+-Group" transform="translate(0 50)"><g id="Rectangle-18-+-Triangle-3" fill="url(#linearGradient-2)" stroke="#D1CFCD" transform="matrix(1 0 0 -1 0 51)"><rect id="Rectangle-18" width="15" height="50" x=".5" y=".5" rx="3"/></g><g id="Group" fill="#D1CFCD" stroke="#7E7C7B" transform="translate(4 20)"><path id="Rectangle-22" d="M.5.5h7v1h-7z"/><path id="Rectangle-23" d="M.5 3.5h7v1h-7z"/><path id="Rectangle-24" d="M.5 6.5h7v1h-7z"/><path id="Rectangle-25" d="M.5 9.5h7v1h-7z"/></g></g></g><g id="Group" transform="translate(115.676 162.5)"><g id="Line-4-+-Line-5" stroke="#166388" stroke-linecap="square" stroke-width="2" transform="translate(22.324 18.5)"><path id="Line-4" d="M2.5.5L0 6" transform="matrix(1 0 0 -1 0 6)"/><path id="Line-5" d="M5.5.5L3 6" transform="rotate(180 4.5 3)"/></g><g id="Line-4-+-Line-6" stroke="#166388" stroke-linecap="square" stroke-width="2" transform="matrix(1 0 0 -1 22.324 6.5)"><path id="Line-4" d="M2.5.5L0 6" transform="matrix(1 0 0 -1 0 6)"/><path id="Line-5" d="M5.5.5L3 6" transform="rotate(180 4.5 3)"/></g><path id="Line-49" fill="#166388" stroke="#166388" stroke-linecap="round" stroke-linejoin="bevel" stroke-width="2" d="M25.824 25.5h-25"/><path id="Line-50" fill="#166388" stroke="#166388" stroke-linecap="round" stroke-linejoin="bevel" stroke-width="2" d="M25.324 25V0"/><path id="Line-4" fill="#166388" fill-rule="nonzero" d="M19.328 21.676l.91.414 5.5 2.5.91.413-.589 1.296.09.198-.226.1-.102.227-.198-.09-.385.176-5.5 2.5-.91.414-.828-1.82.91-.414 4.297-1.954-3.797-1.726-.91-.413.828-1.821zM7.32 21.676l.828 1.82-.91.414-3.798 1.726 4.298 1.954.91.413-.827 1.821-.91-.414-5.5-2.5-.387-.176-.196.09-.103-.225-.225-.102.089-.198L0 25.003l.91-.413 5.5-2.5.91-.414z"/></g></g></g></svg> \ No newline at end of file +<<<<<<< HEAD +<svg xmlns="http://www.w3.org/2000/svg" width="670" height="602" viewBox="0 0 670 602"><defs><style>@import url(https://fonts.googleapis.com/css?family=Open+Sans:bold,italic,bolditalic%7CPT+Mono);@font-face{font-family:'PT Mono';font-weight:700;font-style:normal;src:local('PT MonoBold'),url(/font/PTMonoBold.woff2) format('woff2'),url(/font/PTMonoBold.woff) format('woff'),url(/font/PTMonoBold.ttf) format('truetype')}</style></defs><defs><linearGradient id="linearGradient-1" x1="50%" x2="50%" y1="0%" y2="100%"><stop offset="0%" stop-color="#FFF"/><stop offset="100%" stop-color="#D1CFCD"/></linearGradient><linearGradient id="linearGradient-2" x1="50%" x2="50%" y1="0%" y2="100%"><stop offset="0%" stop-color="#FFF"/><stop offset="100%" stop-color="#D1CFCD"/></linearGradient></defs><g id="dom" fill="none" fill-rule="evenodd" stroke="none" stroke-width="1"><g id="metric-all.svg"><text id="Introduction" fill="#643B0C" font-family="OpenSans-Bold, Open Sans" font-size="16" font-weight="bold"><tspan x="160" y="94">Introduction</tspan> <tspan x="160" y="122" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">This Ecma Standard is based on several </tspan> <tspan x="160" y="141" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">originating technologies, the most well </tspan> <tspan x="160" y="160" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">known being JavaScript (Netscape) and </tspan> <tspan x="160" y="179" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">JScript (Microsoft). The language was </tspan> <tspan x="160" y="198" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">invented by Brendan Eich at Netscape and </tspan> <tspan x="160" y="217" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">first appeared in that company’s Navigator </tspan> <tspan x="160" y="236" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">2.0 browser. It has appeared in all </tspan> <tspan x="160" y="255" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">subsequent browsers from Netscape and </tspan> <tspan x="160" y="274" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">in all browsers from Microsoft starting with </tspan> <tspan x="160" y="293" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">Internet Explorer 3.0.</tspan> <tspan x="160" y="312" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">The development of this Standard started </tspan> <tspan x="160" y="331" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">in November 1996. The first edition of this </tspan> <tspan x="160" y="350" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">Ecma Standard was adopted by the Ecma </tspan> <tspan x="160" y="369" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">General Assembly of June 1997.</tspan> <tspan x="160" y="388" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">That Ecma Standard was submitted to ISO/</tspan> <tspan x="160" y="407" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">IEC JTC 1 for adoption under the fast-track </tspan> <tspan x="160" y="426" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">procedure, and approved as international </tspan> <tspan x="160" y="445" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">standard ISO/IEC 16262, in April 1998. The </tspan> <tspan x="160" y="464" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">Ecma General Assembly of June 1998 </tspan> <tspan x="160" y="483" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">approved the second edition of ECMA-262 </tspan> <tspan x="160" y="502" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">to keep it fully aligned with ISO/IEC 16262. </tspan> <tspan x="160" y="521" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">Changes between the first and the second </tspan> <tspan x="160" y="540" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">edition are editorial in nature.</tspan></text><path id="Rectangle-1" fill="#DBAF88" d="M491 162v290H117V162h374zm-25 25H142v240h324V187z"/><path id="Rectangle-2" stroke="#DBAF88" stroke-width="2" d="M141 62h326v500H141z"/><text id="scrollHeight" fill="#C06334" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal" transform="rotate(-90 592 310)"><tspan x="541.6" y="314.5">scrollHeight</tspan></text><text id="offsetHeight" fill="#C06334" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal" transform="rotate(-90 552 310)"><tspan x="501.6" y="314.5">offsetHeight</tspan></text><text id="scrollTop" fill="#C06334" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal" transform="rotate(-90 618 125)"><tspan x="580.2" y="129.5">scrollTop</tspan></text><path id="Line-27" stroke="#C06334" stroke-dasharray="3,6" stroke-linecap="square" stroke-width="2" d="M466.5 62H640"/><path id="Line-28" stroke="#C06334" stroke-dasharray="3,6" stroke-linecap="square" stroke-width="2" d="M492.5 163h92.14"/><path id="Line-29" stroke="#C06334" stroke-dasharray="3,6" stroke-linecap="square" stroke-width="2" d="M492.5 451h92.14"/><path id="Line-33" stroke="#C06334" stroke-dasharray="3,6" stroke-linecap="square" stroke-width="2" d="M467.5 189H640"/><path id="Line-32" stroke="#C06334" stroke-dasharray="3,6" stroke-linecap="square" stroke-width="2" d="M467.5 427h72.14"/><path id="Line-26" stroke="#C06334" stroke-dasharray="3,6" stroke-linecap="square" stroke-width="2" d="M466.5 561h148.14"/><path id="Line-25" fill="#C06334" fill-rule="nonzero" d="M605 64.5l7 14h-6v466h6l-7 14-7-14h6v-466h-6l7-14z"/><path id="Line-30" fill="#C06334" fill-rule="nonzero" d="M565 164.5l7 14h-6v255h6l-7 14-7-14h6v-255h-6l7-14z"/><text id="clientHeight" fill="#C06334" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal" transform="rotate(-90 510 304)"><tspan x="459.6" y="308.5">clientHeight</tspan></text><path id="Line-34" fill="#C06334" fill-rule="nonzero" d="M523 191.5l7 14h-6v206h6l-7 14-7-14h6v-206h-6l7-14z"/><text id="offsetTop" fill="#C06334" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal" transform="rotate(-90 104 83)"><tspan x="66.2" y="87.5">offsetTop</tspan></text><text id="clientLeft" fill="#166388" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal" transform="rotate(-90 130.5 237)"><tspan x="88.5" y="241.5">clientLeft</tspan></text><path id="Line-36" fill="#C06334" fill-rule="nonzero" d="M117 4.5l7 14h-6v128h6l-7 14-7-14h6v-128h-6l7-14z"/><path id="Line-31" fill="#C06334" fill-rule="nonzero" d="M631 64.5l7 14h-6v96.499l6 .001-7 14-7-14 6-.001V78.5h-6l7-14z"/><path id="Rectangle-14" fill="#FFF" d="M154 73h312v89H154z"/><path id="Rectangle-15" fill="#FFF" d="M154 451h312v93H154z"/><path id="Line-39" fill="#C06334" fill-rule="nonzero" d="M431 479.09l14 7-14 7-.001-6h-271.36l.001 6-14-7 14-7-.001 6h271.36l.001-6z"/><path id="Line-42" stroke="#C06334" stroke-dasharray="3,6" stroke-linecap="square" stroke-width="2" d="M445.64 510v-84"/><path id="Line-43" stroke="#C06334" stroke-dasharray="3,6" stroke-linecap="square" stroke-width="2" d="M141.64 510v-84"/><text id="clientWidth" fill="#C06334" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="261.3" y="478">clientWidth</tspan></text><path id="Line-41" fill="#C06334" fill-rule="nonzero" d="M100 156.09l14 7-14 7v-6H18.639l.001 6-14-7 14-7-.001 6H100v-6z"/><text id="clientTop" fill="#166388" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="147.7" y="178">clientTop</tspan></text><text id="offsetLeft" fill="#C06334" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="17.5" y="154">offsetLeft</tspan></text><path id="Line-40" fill="#C06334" fill-rule="nonzero" d="M475 522.09l14 7-14 7-.001-6h-340.36l.001 6-14-7 14-7-.001 6h340.36l.001-6z"/><path id="Line-45" stroke="#C06334" stroke-dasharray="3,6" stroke-linecap="square" stroke-width="2" d="M490.64 551V447"/><path id="Line-44" stroke="#C06334" stroke-dasharray="3,6" stroke-linecap="square" stroke-width="2" d="M116.64 551V447"/><text id="offsetWidth" fill="#C06334" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="258.3" y="516">offsetWidth</tspan></text><path id="Rectangle-233" stroke="#AF6E24" stroke-width="2" d="M1 1h668v600H1z"/><g id="Group" transform="translate(450 187)"><rect id="Rectangle-19" width="15" height="239" x=".5" y=".5" fill="#D1CFCD" stroke="#D1CFCD" rx="3"/><g id="Rectangle-18-+-Triangle-1"><rect id="Rectangle-18" width="15" height="19" x=".5" y=".5" fill="url(#linearGradient-1)" stroke="#D1CFCD" rx="3"/><path id="Triangle-1" fill="#7E7C7B" d="M8 7l3.2 6H4.8z"/></g><g id="Rectangle-18-+-Triangle-2" transform="matrix(1 0 0 -1 0 240)"><rect id="Rectangle-18" width="15" height="19" x=".5" y=".5" fill="url(#linearGradient-1)" stroke="#D1CFCD" rx="3"/><path id="Triangle-1" fill="#7E7C7B" d="M8 7l3.2 6H4.8z"/></g><g id="Rectangle-18-+-Triangle-3-+-Group" transform="translate(0 50)"><g id="Rectangle-18-+-Triangle-3" fill="url(#linearGradient-2)" stroke="#D1CFCD" transform="matrix(1 0 0 -1 0 51)"><rect id="Rectangle-18" width="15" height="50" x=".5" y=".5" rx="3"/></g><g id="Group" fill="#D1CFCD" stroke="#7E7C7B" transform="translate(4 20)"><path id="Rectangle-22" d="M.5.5h7v1h-7z"/><path id="Rectangle-23" d="M.5 3.5h7v1h-7z"/><path id="Rectangle-24" d="M.5 6.5h7v1h-7z"/><path id="Rectangle-25" d="M.5 9.5h7v1h-7z"/></g></g></g><g id="Group" transform="translate(115.676 162.5)"><g id="Line-4-+-Line-5" stroke="#166388" stroke-linecap="square" stroke-width="2" transform="translate(22.324 18.5)"><path id="Line-4" d="M2.5.5L0 6" transform="matrix(1 0 0 -1 0 6)"/><path id="Line-5" d="M5.5.5L3 6" transform="rotate(180 4.5 3)"/></g><g id="Line-4-+-Line-6" stroke="#166388" stroke-linecap="square" stroke-width="2" transform="matrix(1 0 0 -1 22.324 6.5)"><path id="Line-4" d="M2.5.5L0 6" transform="matrix(1 0 0 -1 0 6)"/><path id="Line-5" d="M5.5.5L3 6" transform="rotate(180 4.5 3)"/></g><path id="Line-49" fill="#166388" stroke="#166388" stroke-linecap="round" stroke-linejoin="bevel" stroke-width="2" d="M25.824 25.5h-25"/><path id="Line-50" fill="#166388" stroke="#166388" stroke-linecap="round" stroke-linejoin="bevel" stroke-width="2" d="M25.324 25V0"/><path id="Line-4" fill="#166388" fill-rule="nonzero" d="M19.328 21.676l.91.414 5.5 2.5.91.413-.589 1.296.09.198-.226.1-.102.227-.198-.09-.385.176-5.5 2.5-.91.414-.828-1.82.91-.414 4.297-1.954-3.797-1.726-.91-.413.828-1.821zM7.32 21.676l.828 1.82-.91.414-3.798 1.726 4.298 1.954.91.413-.827 1.821-.91-.414-5.5-2.5-.387-.176-.196.09-.103-.225-.225-.102.089-.198L0 25.003l.91-.413 5.5-2.5.91-.414z"/></g></g></g></svg> +======= +<svg xmlns="http://www.w3.org/2000/svg" width="670" height="602" viewBox="0 0 670 602"><defs><style>@import url(https://fonts.googleapis.com/css?family=Open+Sans:bold,italic,bolditalic%7CPT+Mono);@font-face{font-family:'PT Mono';font-weight:700;font-style:normal;src:local('PT MonoBold'),url(/font/PTMonoBold.woff2) format('woff2'),url(/font/PTMonoBold.woff) format('woff'),url(/font/PTMonoBold.ttf) format('truetype')}</style></defs><defs><linearGradient id="linearGradient-1" x1="50%" x2="50%" y1="0%" y2="100%"><stop offset="0%" stop-color="#FFF"/><stop offset="100%" stop-color="#D1CFCD"/></linearGradient><linearGradient id="linearGradient-2" x1="50%" x2="50%" y1="0%" y2="100%"><stop offset="0%" stop-color="#FFF"/><stop offset="100%" stop-color="#D1CFCD"/></linearGradient></defs><g id="dom" fill="none" fill-rule="evenodd" stroke="none" stroke-width="1"><g id="metric-all.svg"><text id="Introduction" fill="#643B0C" font-family="OpenSans-Bold, Open Sans" font-size="16" font-weight="bold"><tspan x="160" y="94">Introduction</tspan> <tspan x="160" y="122" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">This Ecma Standard is based on several </tspan> <tspan x="160" y="141" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">originating technologies, the most well </tspan> <tspan x="160" y="160" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">known being JavaScript (Netscape) and </tspan> <tspan x="160" y="179" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">JScript (Microsoft). The language was </tspan> <tspan x="160" y="198" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">invented by Brendan Eich at Netscape and </tspan> <tspan x="160" y="217" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">first appeared in that company’s Navigator </tspan> <tspan x="160" y="236" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">2.0 browser. It has appeared in all </tspan> <tspan x="160" y="255" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">subsequent browsers from Netscape and </tspan> <tspan x="160" y="274" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">in all browsers from Microsoft starting with </tspan> <tspan x="160" y="293" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">Internet Explorer 3.0.</tspan> <tspan x="160" y="312" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">The development of this Standard started </tspan> <tspan x="160" y="331" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">in November 1996. The first edition of this </tspan> <tspan x="160" y="350" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">Ecma Standard was adopted by the Ecma </tspan> <tspan x="160" y="369" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">General Assembly of June 1997.</tspan> <tspan x="160" y="388" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">That Ecma Standard was submitted to ISO/</tspan> <tspan x="160" y="407" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">IEC JTC 1 for adoption under the fast-track </tspan> <tspan x="160" y="426" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">procedure, and approved as international </tspan> <tspan x="160" y="445" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">standard ISO/IEC 16262, in April 1998. The </tspan> <tspan x="160" y="464" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">Ecma General Assembly of June 1998 </tspan> <tspan x="160" y="483" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">approved the second edition of ECMA-262 </tspan> <tspan x="160" y="502" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">to keep it fully aligned with ISO/IEC 16262. </tspan> <tspan x="160" y="521" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">Changes between the first and the second </tspan> <tspan x="160" y="540" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">edition are editorial in nature.</tspan></text><path id="Rectangle-1" fill="#DBAF88" d="M491 162v290H117V162h374zm-25 25H142v240h324V187z"/><path id="Rectangle-2" stroke="#DBAF88" stroke-width="2" d="M141 62h326v500H141z"/><text id="scrollHeight" fill="#C06334" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal" transform="rotate(-90 592 310)"><tspan x="541.6" y="314.5">scrollHeight</tspan></text><text id="offsetHeight" fill="#C06334" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal" transform="rotate(-90 552 310)"><tspan x="501.6" y="314.5">offsetHeight</tspan></text><text id="scrollTop" fill="#C06334" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal" transform="rotate(-90 618 125)"><tspan x="580.2" y="129.5">scrollTop</tspan></text><path id="Line-27" stroke="#C06334" stroke-dasharray="3,6" stroke-linecap="square" stroke-width="2" d="M466.5 62H640"/><path id="Line-28" stroke="#C06334" stroke-dasharray="3,6" stroke-linecap="square" stroke-width="2" d="M492.5 163h92.14"/><path id="Line-29" stroke="#C06334" stroke-dasharray="3,6" stroke-linecap="square" stroke-width="2" d="M492.5 451h92.14"/><path id="Line-33" stroke="#C06334" stroke-dasharray="3,6" stroke-linecap="square" stroke-width="2" d="M467.5 189H640"/><path id="Line-32" stroke="#C06334" stroke-dasharray="3,6" stroke-linecap="square" stroke-width="2" d="M467.5 427h72.14"/><path id="Line-26" stroke="#C06334" stroke-dasharray="3,6" stroke-linecap="square" stroke-width="2" d="M466.5 561h148.14"/><path id="Line-25" fill="#C06334" fill-rule="nonzero" d="M605 64.5l7 14h-6v466h6l-7 14-7-14h6v-466h-6l7-14z"/><path id="Line-30" fill="#C06334" fill-rule="nonzero" d="M565 164.5l7 14h-6v255h6l-7 14-7-14h6v-255h-6l7-14z"/><text id="clientHeight" fill="#C06334" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal" transform="rotate(-90 510 304)"><tspan x="459.6" y="308.5">clientHeight</tspan></text><path id="Line-34" fill="#C06334" fill-rule="nonzero" d="M523 191.5l7 14h-6v206h6l-7 14-7-14h6v-206h-6l7-14z"/><text id="offsetTop" fill="#C06334" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal" transform="rotate(-90 104 83)"><tspan x="66.2" y="87.5">offsetTop</tspan></text><text id="clientLeft" fill="#166388" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal" transform="rotate(-90 130.5 237)"><tspan x="88.5" y="241.5">clientLeft</tspan></text><path id="Line-36" fill="#C06334" fill-rule="nonzero" d="M117 4.5l7 14h-6v128h6l-7 14-7-14h6v-128h-6l7-14z"/><path id="Line-31" fill="#C06334" fill-rule="nonzero" d="M631 64.5l7 14h-6v96.499l6 .001-7 14-7-14 6-.001V78.5h-6l7-14z"/><path id="Rectangle-14" fill="#FFF" d="M154 73h312v89H154z"/><path id="Rectangle-15" fill="#FFF" d="M154 451h312v93H154z"/><path id="Line-39" fill="#C06334" fill-rule="nonzero" d="M431 479.09l14 7-14 7-.001-6h-271.36l.001 6-14-7 14-7-.001 6h271.36l.001-6z"/><path id="Line-42" stroke="#C06334" stroke-dasharray="3,6" stroke-linecap="square" stroke-width="2" d="M445.64 510v-84"/><path id="Line-43" stroke="#C06334" stroke-dasharray="3,6" stroke-linecap="square" stroke-width="2" d="M141.64 510v-84"/><text id="clientWidth" fill="#C06334" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="261.3" y="478">clientWidth</tspan></text><path id="Line-41" fill="#C06334" fill-rule="nonzero" d="M100 156.09l14 7-14 7v-6H18.639l.001 6-14-7 14-7-.001 6H100v-6z"/><text id="clientTop" fill="#166388" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="147.7" y="178">clientTop</tspan></text><text id="offsetLeft" fill="#C06334" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="17.5" y="154">offsetLeft</tspan></text><path id="Line-40" fill="#C06334" fill-rule="nonzero" d="M475 522.09l14 7-14 7-.001-6h-340.36l.001 6-14-7 14-7-.001 6h340.36l.001-6z"/><path id="Line-45" stroke="#C06334" stroke-dasharray="3,6" stroke-linecap="square" stroke-width="2" d="M490.64 551V447"/><path id="Line-44" stroke="#C06334" stroke-dasharray="3,6" stroke-linecap="square" stroke-width="2" d="M116.64 551V447"/><text id="offsetWidth" fill="#C06334" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="258.3" y="516">offsetWidth</tspan></text><path id="Rectangle-233" stroke="#AF6E24" stroke-width="2" d="M1 1h668v600H1z"/><g id="Scrollbar" transform="translate(450 187)"><rect id="Rectangle-19" width="15" height="239" x=".5" y=".5" fill="#D1CFCD" stroke="#D1CFCD" rx="3"/><g id="Rectangle-18-+-Triangle-1"><rect id="Rectangle-18" width="15" height="19" x=".5" y=".5" fill="url(#linearGradient-1)" stroke="#D1CFCD" rx="3"/><path id="Triangle-1" fill="#7E7C7B" d="M8 7l3.2 6H4.8z"/></g><g id="Rectangle-18-+-Triangle-2" transform="matrix(1 0 0 -1 0 240)"><rect id="Rectangle-18" width="15" height="19" x=".5" y=".5" fill="url(#linearGradient-1)" stroke="#D1CFCD" rx="3"/><path id="Triangle-1" fill="#7E7C7B" d="M8 7l3.2 6H4.8z"/></g><g id="Rectangle-18-+-Triangle-3-+-Group" transform="translate(0 50)"><g id="Rectangle-18-+-Triangle-3" fill="url(#linearGradient-2)" stroke="#D1CFCD" transform="matrix(1 0 0 -1 0 51)"><rect id="Rectangle-18" width="15" height="50" x=".5" y=".5" rx="3"/></g><g id="Group" fill="#D1CFCD" stroke="#7E7C7B" transform="translate(4 20)"><path id="Rectangle-22" d="M.5.5h7v1h-7z"/><path id="Rectangle-23" d="M.5 3.5h7v1h-7z"/><path id="Rectangle-24" d="M.5 6.5h7v1h-7z"/><path id="Rectangle-25" d="M.5 9.5h7v1h-7z"/></g></g></g><g id="Group" transform="translate(115.676 162.5)"><g id="Line-4-+-Line-5" stroke="#166388" stroke-linecap="square" stroke-width="2" transform="translate(22.324 18.5)"><path id="Line-4" d="M2.5.5L0 6" transform="matrix(1 0 0 -1 0 6)"/><path id="Line-5" d="M5.5.5L3 6" transform="rotate(180 4.5 3)"/></g><g id="Line-4-+-Line-6" stroke="#166388" stroke-linecap="square" stroke-width="2" transform="matrix(1 0 0 -1 22.324 6.5)"><path id="Line-4" d="M2.5.5L0 6" transform="matrix(1 0 0 -1 0 6)"/><path id="Line-5" d="M5.5.5L3 6" transform="rotate(180 4.5 3)"/></g><path id="Line-49" fill="#166388" stroke="#166388" stroke-linecap="round" stroke-linejoin="bevel" stroke-width="2" d="M25.824 25.5h-25"/><path id="Line-50" fill="#166388" stroke="#166388" stroke-linecap="round" stroke-linejoin="bevel" stroke-width="2" d="M25.324 25V0"/><path id="Line-4" fill="#166388" fill-rule="nonzero" d="M19.328 21.676l.91.414 5.5 2.5.91.413-.589 1.296.09.198-.226.1-.102.227-.198-.09-.385.176-5.5 2.5-.91.414-.828-1.82.91-.414 4.297-1.954-3.797-1.726-.91-.413.828-1.821zM7.32 21.676l.828 1.82-.91.414-3.798 1.726 4.298 1.954.91.413-.827 1.821-.91-.414-5.5-2.5-.387-.176-.196.09-.103-.225-.225-.102.089-.198L0 25.003l.91-.413 5.5-2.5.91-.414z"/></g></g></g></svg> +>>>>>>> 540d753e90789205fc6e75c502f68382c87dea9b diff --git a/2-ui/1-document/09-size-and-scroll/metric-client-left-top-rtl.svg b/2-ui/1-document/09-size-and-scroll/metric-client-left-top-rtl.svg index dd9e17cf8..e62609f68 100644 --- a/2-ui/1-document/09-size-and-scroll/metric-client-left-top-rtl.svg +++ b/2-ui/1-document/09-size-and-scroll/metric-client-left-top-rtl.svg @@ -1 +1,5 @@ -<svg xmlns="http://www.w3.org/2000/svg" width="359" height="316" viewBox="0 0 359 316"><defs><style>@import url(https://fonts.googleapis.com/css?family=Open+Sans:bold,italic,bolditalic%7CPT+Mono);@font-face{font-family:'PT Mono';font-weight:700;font-style:normal;src:local('PT MonoBold'),url(/font/PTMonoBold.woff2) format('woff2'),url(/font/PTMonoBold.woff) format('woff'),url(/font/PTMonoBold.ttf) format('truetype')}</style></defs><defs><linearGradient id="linearGradient-1" x1="0%" x2="62.299%" y1="47.096%" y2="47.096%"><stop offset="0%" stop-color="#FFF"/><stop offset="100%" stop-color="#FFF"/></linearGradient><linearGradient id="linearGradient-2" x1="50%" x2="50%" y1="0%" y2="100%"><stop offset="0%" stop-color="#FFF"/><stop offset="100%" stop-color="#D1CFCD"/></linearGradient><linearGradient id="linearGradient-3" x1="50%" x2="50%" y1="0%" y2="100%"><stop offset="0%" stop-color="#FFF"/><stop offset="100%" stop-color="#D1CFCD"/></linearGradient></defs><g id="dom" fill="none" fill-rule="evenodd" stroke="none" stroke-width="1"><g id="metric-client-left-top-rtl.svg"><path fill="#FFF" d="M0 0h359v316H0z"/><path id="היא-שפת-תסריט-מפורשת" fill="#643B0C" d="M336.484 135v-10.031h4.047V135h-4.047zm13.594 0v-9.063c0-2.416-.206-3.856-.617-4.32-.412-.463-1.685-.695-3.82-.695h-12.047l1.547-4.625h11.171c3.136 0 5.23.458 6.282 1.375a3.733 3.733 0 011.234 1.984c.198.792.297 2.177.297 4.156V135h-4.047zm-20.39-6.266h-4.063c.73-2.666 1.094-4.573 1.094-5.718 0-.823-.36-1.474-1.078-1.954-.72-.479-1.964-.895-3.735-1.25l2.094-3.89c2.552.51 4.33 1.21 5.336 2.101 1.005.891 1.508 2.206 1.508 3.946 0 1.094-.25 2.76-.75 5l-.406 1.765zM302.063 135v-.516c0-2.677.28-4.971.843-6.882.563-1.912 1.51-3.8 2.844-5.665l-.703-.671c-1.136-1.063-2.162-1.948-3.078-2.657l3.687-2.687c2.448 1.937 5.037 4.51 7.766 7.719.625-1.084 1.039-2.032 1.242-2.844.203-.813.305-1.927.305-3.344v-1.156h4.328v.906c0 3.521-1.182 6.568-3.547 9.14a41.618 41.618 0 014.422 6.47l-3.485 2.578c-2.062-3.709-4.864-7.355-8.406-10.938-1.26 1.958-1.89 4.948-1.89 8.969V135h-4.329zm-31.954 0l-2.203-17.5 3.922-1.578 1.172 9.25c1.135-.281 1.932-.945 2.39-1.992.459-1.047.688-2.716.688-5.008v-1.875h4.344v1.719c0 3.093-.565 5.445-1.695 7.054-1.13 1.61-2.92 2.607-5.368 2.993l.282 2.312c2.718 0 4.89-.453 6.515-1.36 2.844-1.583 4.266-5.192 4.266-10.827v-1.891h4.328v1.562c0 5.615-1.58 9.875-4.742 12.782-3.162 2.906-7.794 4.359-13.899 4.359zm-21.937 0l1.39-4.234h10.47v-4.157c0-1.948-.193-3.205-.579-3.773-.385-.568-1.385-1.065-3-1.492l-2.984-.781-.235.671c-.135.396-.203.74-.203 1.032 0 1.01.87 1.583 2.61 1.718l-1.078 3.25c-3.5-.323-5.25-1.671-5.25-4.046 0-.917.374-2.438 1.125-4.563l.968-2.703 7.125 1.734c2.313.563 3.815 1.284 4.508 2.164.693.88 1.04 2.503 1.04 4.868v6.078L262.671 135h-14.5zm-22.969 0l1.547-4.625h4.031c-.823-2.115-1.234-4.708-1.234-7.781v-1.672h-2.328l1.547-4.625h8.578c3.135 0 5.229.458 6.281 1.375a3.733 3.733 0 011.234 1.984c.198.792.297 2.177.297 4.156V135h-4.047v-9.063c0-2.416-.203-3.856-.609-4.32-.406-.463-1.682-.695-3.828-.695h-3.063v1.375c0 3.354.48 6.047 1.438 8.078L233.516 135h-8.313zm-33.547 0l1.547-4.625h4.031c-.823-2.115-1.234-4.708-1.234-7.781v-1.672h-2.328l1.547-4.625h8.578c3.135 0 5.229.458 6.281 1.375a3.733 3.733 0 011.234 1.984c.198.792.297 2.177.297 4.156V135h-4.047v-9.063c0-2.416-.203-3.856-.609-4.32-.406-.463-1.682-.695-3.828-.695h-3.063v1.375c0 3.354.48 6.047 1.438 8.078L199.969 135h-8.313zm-18.265 0l-1.766-14.078h-2.516l1.547-4.625h11.078c2.094 0 3.578.078 4.453.234.876.157 1.573.469 2.094.938.875.791 1.313 2.047 1.313 3.765 0 2.292-.662 4.506-1.985 6.641s-3.104 3.854-5.343 5.156c-2.26 1.313-5.22 1.969-8.875 1.969zm3.453-4.625c2.333-.177 4.088-.687 5.265-1.531 1.938-1.407 2.907-3.25 2.907-5.531 0-.938-.328-1.57-.985-1.899-.656-.328-1.948-.492-3.875-.492h-4.469l1.157 9.453zM162.297 135v-9.063c0-2.416-.203-3.856-.61-4.32-.406-.463-1.682-.695-3.828-.695h-5.89l1.531-4.625h5.047c3.135 0 5.229.458 6.281 1.375a3.773 3.773 0 011.219 1.992c.198.797.297 2.18.297 4.148V135h-4.047zm-14.047-6.266h-4.063c.73-2.666 1.094-4.573 1.094-5.718 0-.823-.36-1.474-1.078-1.954-.719-.479-1.963-.895-3.734-1.25l2.094-3.89c2.552.51 4.33 1.21 5.335 2.101 1.006.891 1.508 2.206 1.508 3.946 0 1.094-.25 2.76-.75 5l-.406 1.765zM122.375 135l-2.234-17.688 3.921-1.39 1.797 14.453c2.667 0 4.795-.615 6.383-1.844 1.589-1.229 2.383-2.87 2.383-4.922 0-2.24-1.208-3.359-3.625-3.359-.646 0-1.339.104-2.078.313l1.406-4.36a9.102 9.102 0 012.234-.297c1.917 0 3.415.576 4.493 1.727 1.078 1.15 1.617 2.747 1.617 4.789 0 2.292-.698 4.437-2.094 6.437s-3.292 3.568-5.687 4.703c-2.01.959-4.85 1.438-8.516 1.438zm222.344 38l2.265-8.688c.417-1.593.625-2.692.625-3.296 0-1.24-1.057-2.907-3.171-5l3.609-2.094c1.146.958 2.125 2.265 2.937 3.922 1.667-2.615 3.667-3.922 6-3.922 1.76 0 3.167.67 4.22 2.008 1.051 1.338 1.676 3.257 1.874 5.757l.531 6.688-1.53 4.625h-9.032l1.547-4.625h4.922l-.36-4.797c-.25-3.354-1.349-5.031-3.297-5.031-1.125 0-2.07.56-2.836 1.68-.765 1.12-1.497 3.007-2.195 5.664L348.953 173h-4.234zm-19.344 0l1.39-4.234h10.47v-4.157c0-1.948-.193-3.205-.579-3.773-.385-.568-1.385-1.065-3-1.492l-2.984-.781-.235.671c-.135.396-.203.74-.203 1.032 0 1.01.87 1.583 2.61 1.718l-1.078 3.25c-3.5-.323-5.25-1.671-5.25-4.047 0-.916.375-2.437 1.125-4.562l.968-2.703 7.125 1.734c2.313.563 3.815 1.284 4.508 2.164.693.88 1.04 2.503 1.04 4.868v6.078L339.874 173h-14.5zm-7.14 0v-9.594c0-1.927-.32-3.252-.962-3.976-.64-.724-1.997-1.295-4.07-1.711l2-3.797c2.448.448 4.208 1.15 5.281 2.11.709.635 1.185 1.385 1.43 2.25.245.864.367 2.25.367 4.155V173h-4.047zm-11.844 0v-9.063c0-2.416-.203-3.856-.61-4.32-.406-.463-1.682-.695-3.828-.695h-5.89l1.53-4.625h5.048c3.135 0 5.229.458 6.28 1.375a3.773 3.773 0 011.22 1.992c.198.797.296 2.18.296 4.149V173h-4.046zm-30.516 0l-2.203-17.5 3.922-1.578 1.172 9.25c1.135-.281 1.932-.945 2.39-1.992.459-1.047.688-2.716.688-5.008v-1.875h4.344v1.719c0 3.093-.566 5.445-1.696 7.054-1.13 1.61-2.92 2.607-5.367 2.993l.281 2.312c2.719 0 4.89-.453 6.516-1.36 2.844-1.583 4.265-5.192 4.265-10.827v-1.891h4.329v1.562c0 5.615-1.581 9.875-4.743 12.782-3.161 2.906-7.794 4.359-13.898 4.359zM250 173l1.547-4.625h4.031c-.823-2.115-1.234-4.708-1.234-7.781v-1.672h-2.328l1.547-4.625h8.578c3.135 0 5.229.458 6.28 1.375a3.733 3.733 0 011.235 1.984c.198.792.297 2.177.297 4.156V173h-4.047v-9.063c0-2.416-.203-3.856-.61-4.32-.405-.463-1.681-.695-3.827-.695h-3.063v1.375c0 3.354.48 6.047 1.438 8.078L258.313 173H250zm-31.422 0l2.266-8.688c.416-1.593.625-2.692.625-3.296 0-1.24-1.058-2.907-3.172-5l3.61-2.094c1.145.958 2.124 2.265 2.937 3.922 1.666-2.615 3.666-3.922 6-3.922 1.76 0 3.166.67 4.219 2.008 1.052 1.338 1.677 3.257 1.875 5.757l.53 6.688-1.53 4.625h-9.032l1.547-4.625h4.922l-.36-4.797c-.25-3.354-1.348-5.031-3.296-5.031-1.125 0-2.07.56-2.836 1.68-.766 1.12-1.498 3.007-2.196 5.664L222.813 173h-4.234zm-19.25 0l1.547-4.625h9.64v-4.438c0-2.416-.202-3.856-.609-4.32-.406-.463-1.682-.695-3.828-.695h-5.828l1.547-4.625h4.953c3.135 0 5.23.458 6.281 1.375a3.734 3.734 0 011.235 1.992c.198.797.297 2.18.297 4.149v6.562h2.5L215.53 173h-16.203zm-7.516 0v-9.594c0-1.927-.32-3.252-.96-3.976-.641-.724-1.998-1.295-4.07-1.711l2-3.797c2.447.448 4.208 1.15 5.28 2.11.709.635 1.185 1.385 1.43 2.25.245.864.367 2.25.367 4.155V173h-4.047zm-23.015 0l-1.766-14.078h-2.515l1.547-4.625h11.078c2.093 0 3.578.078 4.453.234.875.157 1.573.469 2.094.938.875.791 1.312 2.047 1.312 3.765 0 2.292-.661 4.506-1.984 6.641s-3.105 3.854-5.344 5.156c-2.26 1.313-5.219 1.969-8.875 1.969zm3.453-4.625c2.333-.177 4.089-.687 5.266-1.531 1.937-1.407 2.906-3.25 2.906-5.531 0-.938-.328-1.57-.984-1.899-.657-.328-1.948-.492-3.875-.492h-4.47l1.157 9.453zM146.531 173l-1.765-14.078h-2.516l1.547-4.625h11.078c2.094 0 3.578.078 4.453.234.875.157 1.573.469 2.094.938.875.791 1.312 2.047 1.312 3.765 0 2.292-.661 4.506-1.984 6.641s-3.104 3.854-5.344 5.156c-2.26 1.313-5.218 1.969-8.875 1.969zm3.453-4.625c2.334-.177 4.089-.687 5.266-1.531 1.938-1.407 2.906-3.25 2.906-5.531 0-.938-.328-1.57-.984-1.899-.656-.328-1.948-.492-3.875-.492h-4.469l1.156 9.453zM119.531 173l1.547-4.625h4.031c-.823-2.115-1.234-4.708-1.234-7.781v-1.672h-2.328l1.547-4.625h8.578c3.135 0 5.229.458 6.281 1.375a3.733 3.733 0 011.234 1.984c.198.792.297 2.177.297 4.156V173h-4.047v-9.063c0-2.416-.203-3.856-.609-4.32-.406-.463-1.682-.695-3.828-.695h-3.063v1.375c0 3.354.48 6.047 1.438 8.078L127.844 173h-8.313zm288.766 38v-.516c0-2.677.281-4.971.844-6.882.562-1.912 1.51-3.8 2.843-5.665l-.703-.671c-1.135-1.063-2.161-1.948-3.078-2.657l3.688-2.687c2.448 1.937 5.036 4.51 7.765 7.719.625-1.084 1.04-2.032 1.242-2.844.204-.813.305-1.927.305-3.344v-1.156h4.328v.906c0 3.521-1.182 6.568-3.547 9.14a41.618 41.618 0 014.422 6.47l-3.484 2.578c-2.063-3.709-4.865-7.355-8.406-10.938-1.26 1.958-1.891 4.948-1.891 8.969V211h-4.328zm-8.438 0v-9.594c0-1.927-.32-3.252-.96-3.976-.641-.724-1.998-1.295-4.07-1.711l2-3.797c2.447.448 4.207 1.15 5.28 2.11.709.635 1.185 1.385 1.43 2.25.245.864.367 2.25.367 4.155V211h-4.047zm-23.718 0l1.546-4.625h9.641v-4.438c0-2.416-.203-3.856-.61-4.32-.406-.463-1.682-.695-3.827-.695h-5.829l1.547-4.625h4.954c3.135 0 5.229.458 6.28 1.375a3.734 3.734 0 011.235 1.992c.198.797.297 2.18.297 4.149v6.562h2.5L392.344 211H376.14zm-4.016-6.266h-4.063c.73-2.666 1.094-4.573 1.094-5.718 0-.823-.36-1.474-1.078-1.953-.719-.48-1.963-.896-3.734-1.25l2.094-3.891c2.552.51 4.33 1.21 5.335 2.101 1.006.891 1.508 2.206 1.508 3.946 0 1.094-.25 2.76-.75 5l-.406 1.765zm-11.594 0h-4.062c.729-2.666 1.094-4.573 1.094-5.718 0-.823-.36-1.474-1.079-1.953-.718-.48-1.963-.896-3.734-1.25l2.094-3.891c2.552.51 4.33 1.21 5.336 2.101 1.005.891 1.507 2.206 1.507 3.946 0 1.094-.25 2.76-.75 5l-.406 1.765zm-27.328 10.891v-14.61h4.047v14.61h-4.047zm-2.515-18.703l1.546-4.625h10.844c1.99 0 3.39.088 4.203.266.813.177 1.495.541 2.047 1.093.802.813 1.203 1.98 1.203 3.5 0 3.052-1.12 5.901-3.36 8.547-2.239 2.646-5.13 4.537-8.671 5.672l1.672-4.969c1.656-.469 3.036-1.383 4.14-2.742 1.105-1.36 1.657-2.82 1.657-4.383 0-.937-.328-1.565-.985-1.883-.656-.317-1.958-.476-3.906-.476h-10.39zM312.594 211l-2.235-17.688 3.922-1.39 1.797 14.453c2.667 0 4.794-.615 6.383-1.844 1.588-1.229 2.383-2.87 2.383-4.922 0-2.24-1.209-3.359-3.625-3.359-.646 0-1.339.104-2.078.313l1.406-4.36a9.102 9.102 0 012.234-.297c1.917 0 3.414.576 4.492 1.727 1.079 1.15 1.618 2.747 1.618 4.789 0 2.292-.698 4.437-2.094 6.437s-3.292 3.568-5.688 4.703c-2.01.959-4.849 1.438-8.515 1.438zm-6.516-6.266h-4.062c.729-2.666 1.093-4.573 1.093-5.718 0-.823-.359-1.474-1.078-1.953-.719-.48-1.963-.896-3.734-1.25l2.094-3.891c2.552.51 4.33 1.21 5.336 2.101 1.005.891 1.507 2.206 1.507 3.946 0 1.094-.25 2.76-.75 5l-.406 1.765zM277.766 211v-14.078h-2.485l1.547-4.625h10.485c3.135 0 5.229.458 6.28 1.375a3.734 3.734 0 011.235 1.992c.198.797.297 2.18.297 4.149v6.562L293.578 211h-15.812zm4.062-4.625h9.25v-4.438c0-2.427-.203-3.87-.61-4.328-.406-.458-1.682-.687-3.827-.687h-4.813v9.453zM243.86 211v-10.031h4.047V211h-4.047zm13.594 0v-9.063c0-2.416-.206-3.856-.617-4.32-.412-.463-1.685-.695-3.82-.695h-12.047l1.547-4.625h11.172c3.135 0 5.229.458 6.28 1.375a3.733 3.733 0 011.235 1.984c.198.792.297 2.177.297 4.156V211h-4.047zm-37.594 0l2.266-8.688c.417-1.593.625-2.692.625-3.296 0-1.24-1.057-2.907-3.172-5l3.61-2.094c1.145.958 2.124 2.265 2.937 3.922 1.667-2.615 3.667-3.922 6-3.922 1.76 0 3.167.67 4.219 2.008 1.052 1.338 1.677 3.257 1.875 5.757l.531 6.688-1.531 4.625h-9.031l1.546-4.625h4.922l-.36-4.797c-.25-3.354-1.348-5.031-3.296-5.031-1.125 0-2.07.56-2.836 1.68-.766 1.12-1.497 3.007-2.195 5.664L224.094 211h-4.235zm-7.453 0v-9.594c0-1.927-.32-3.252-.96-3.976-.641-.724-1.998-1.295-4.071-1.711l2-3.797c2.448.448 4.208 1.15 5.281 2.11.709.635 1.185 1.385 1.43 2.25.245.864.367 2.25.367 4.155V211h-4.047zm-27.75 0l1.547-4.625h4.031c-.823-2.115-1.234-4.708-1.234-7.781v-1.672h-2.328l1.547-4.625h8.578c3.135 0 5.229.458 6.281 1.375a3.733 3.733 0 011.234 1.984c.198.792.297 2.177.297 4.156V211h-4.047v-9.063c0-2.416-.203-3.856-.609-4.32-.406-.463-1.682-.695-3.828-.695h-3.063v1.375c0 3.354.48 6.047 1.438 8.078L192.969 211h-8.313zm-19.703 0v-.516c0-2.677.281-4.971.844-6.882.562-1.912 1.51-3.8 2.844-5.665l-.703-.671c-1.136-1.063-2.162-1.948-3.079-2.657l3.688-2.687c2.448 1.937 5.036 4.51 7.766 7.719.625-1.084 1.039-2.032 1.242-2.844.203-.813.304-1.927.304-3.344v-1.156h4.328v.906c0 3.521-1.182 6.568-3.546 9.14a41.618 41.618 0 014.422 6.47l-3.485 2.578c-2.062-3.709-4.864-7.355-8.406-10.938-1.26 1.958-1.89 4.948-1.89 8.969V211h-4.329zm-22.14 0l2.265-8.688c.417-1.593.625-2.692.625-3.296 0-1.24-1.057-2.907-3.172-5l3.61-2.094c1.145.958 2.125 2.265 2.937 3.922 1.667-2.615 3.667-3.922 6-3.922 1.76 0 3.167.67 4.219 2.008 1.052 1.338 1.677 3.257 1.875 5.757l.531 6.688-1.531 4.625h-9.031l1.547-4.625h4.921l-.359-4.797c-.25-3.354-1.349-5.031-3.297-5.031-1.125 0-2.07.56-2.836 1.68-.765 1.12-1.497 3.007-2.195 5.664L147.047 211h-4.234zm-23.282 0l1.547-4.625h4.031c-.823-2.115-1.234-4.708-1.234-7.781v-1.672h-2.328l1.547-4.625h8.578c3.135 0 5.229.458 6.281 1.375a3.733 3.733 0 011.234 1.984c.198.792.297 2.177.297 4.156V211h-4.047v-9.063c0-2.416-.203-3.856-.609-4.32-.406-.463-1.682-.695-3.828-.695h-3.063v1.375c0 3.354.48 6.047 1.438 8.078L127.844 211h-8.313zm318.844 38.39l1.594-4.718c2.041-.23 3.687-.839 4.937-1.828 1.948-1.542 2.922-3.406 2.922-5.594 0-.906-.32-1.52-.96-1.844-.641-.323-1.873-.484-3.696-.484h-5.563v-9.625l4.047-1.36v6.36h4.063c2.5 0 4.242.36 5.226 1.078.985.719 1.477 1.984 1.477 3.797 0 3.437-1.318 6.49-3.953 9.156-2.636 2.667-6 4.354-10.094 5.063zm-21.86-.39l-2.202-17.5 3.921-1.578 1.172 9.25c1.136-.281 1.933-.945 2.39-1.992.46-1.047.688-2.716.688-5.008v-1.875h4.344v1.719c0 3.093-.565 5.445-1.695 7.054-1.13 1.61-2.92 2.607-5.367 2.993l.28 2.312c2.72 0 4.891-.453 6.517-1.36 2.843-1.583 4.265-5.192 4.265-10.827v-1.891h4.328v1.562c0 5.615-1.58 9.875-4.742 12.782-3.161 2.906-7.794 4.359-13.898 4.359zm-6.546-6.266h-4.063c.73-2.666 1.094-4.573 1.094-5.718 0-.823-.36-1.474-1.078-1.953-.719-.48-1.964-.896-3.735-1.25l2.094-3.891c2.552.51 4.331 1.21 5.336 2.101s1.508 2.206 1.508 3.946c0 1.094-.25 2.76-.75 5l-.406 1.765zm-24.016 6.657l1.594-4.72c2.042-.228 3.687-.838 4.937-1.827 1.948-1.542 2.922-3.406 2.922-5.594 0-.906-.32-1.52-.96-1.844-.641-.323-1.873-.484-3.696-.484h-5.563v-9.625l4.047-1.36v6.36h4.063c2.5 0 4.242.36 5.226 1.078.985.719 1.477 1.984 1.477 3.797 0 3.437-1.318 6.49-3.953 9.156-2.636 2.667-6 4.354-10.094 5.063zm-8.89-.391v-9.594c0-1.927-.32-3.252-.961-3.976-.641-.724-1.998-1.295-4.07-1.711l2-3.797c2.447.448 4.208 1.15 5.28 2.11.709.635 1.185 1.385 1.43 2.25.245.864.367 2.25.367 4.155V249h-4.046zm-23.72 0l1.548-4.625h9.64v-4.438c0-2.416-.203-3.856-.61-4.32-.405-.463-1.681-.695-3.827-.695h-5.828l1.546-4.625h4.954c3.135 0 5.229.458 6.28 1.375a3.734 3.734 0 011.235 1.992c.198.797.297 2.18.297 4.149v6.562h2.5L369.547 249h-16.203zm-29.859 0l1.547-4.625h9.64v-4.438c0-2.416-.202-3.856-.608-4.32-.407-.463-1.683-.695-3.829-.695h-5.828l1.547-4.625h4.953c3.136 0 5.23.458 6.281 1.375a3.734 3.734 0 011.235 1.992c.198.797.297 2.18.297 4.149v6.562h2.5L339.688 249h-16.204zm-20.046 0v-.516c0-2.677.28-4.971.843-6.882.563-1.912 1.51-3.8 2.844-5.665l-.703-.671c-1.136-1.063-2.162-1.948-3.078-2.657l3.687-2.687c2.448 1.937 5.037 4.51 7.766 7.719.625-1.084 1.039-2.032 1.242-2.844.203-.813.305-1.927.305-3.344v-1.156h4.328v.906c0 3.521-1.182 6.568-3.547 9.14a41.618 41.618 0 014.422 6.47l-3.485 2.578c-2.062-3.709-4.864-7.355-8.406-10.938-1.26 1.958-1.89 4.948-1.89 8.969V249h-4.329zm-24.266 0l1.547-4.625h4.031c-.823-2.115-1.234-4.708-1.234-7.781v-1.672h-2.329l1.547-4.625h8.579c3.135 0 5.229.458 6.28 1.375a3.733 3.733 0 011.235 1.984c.198.792.297 2.177.297 4.156V249h-4.047v-9.063c0-2.416-.203-3.856-.61-4.32-.406-.463-1.682-.695-3.827-.695h-3.063v1.375c0 3.354.48 6.047 1.438 8.078L287.484 249h-8.312zm-7.094 0v-9.063c0-2.416-.203-3.856-.61-4.32-.406-.463-1.682-.695-3.827-.695h-5.891l1.531-4.625h5.047c3.136 0 5.23.458 6.281 1.375a3.773 3.773 0 011.22 1.992c.197.797.296 2.18.296 4.149V249h-4.047zm-14.047-6.266h-4.062c.729-2.666 1.094-4.573 1.094-5.718 0-.823-.36-1.474-1.079-1.953-.718-.48-1.963-.896-3.734-1.25l2.094-3.891c2.552.51 4.33 1.21 5.336 2.101 1.005.891 1.507 2.206 1.507 3.946 0 1.094-.25 2.76-.75 5l-.406 1.765zM219.86 249v-.516c0-2.677.282-4.971.844-6.882.563-1.912 1.51-3.8 2.844-5.665l-.703-.671c-1.136-1.063-2.162-1.948-3.078-2.657l3.687-2.687c2.448 1.937 5.037 4.51 7.766 7.719.625-1.084 1.039-2.032 1.242-2.844.203-.813.305-1.927.305-3.344v-1.156h4.328v.906c0 3.521-1.183 6.568-3.547 9.14a41.618 41.618 0 014.422 6.47l-3.485 2.578c-2.062-3.709-4.864-7.355-8.406-10.938-1.26 1.958-1.89 4.948-1.89 8.969V249h-4.329zm-4.937-6.266h-4.063c.73-2.666 1.094-4.573 1.094-5.718 0-.823-.36-1.474-1.078-1.953-.719-.48-1.964-.896-3.734-1.25l2.093-3.891c2.552.51 4.331 1.21 5.336 2.101 1.006.891 1.508 2.206 1.508 3.946 0 1.094-.25 2.76-.75 5l-.406 1.765zM192.75 249l1.563-4.625h5.515v-6.078c0-1.646-.354-2.724-1.062-3.234-.948-.678-2.224-1.245-3.828-1.704l1.843-3.437c1.73.427 3.297 1.047 4.703 1.86.907.53 1.532 1.182 1.875 1.952.344.771.516 1.922.516 3.453v7.188L202.328 249h-9.578zm-17.906 0l-2.235-17.688 3.922-1.39 1.797 14.453c2.667 0 4.794-.615 6.383-1.844 1.588-1.229 2.383-2.87 2.383-4.922 0-2.24-1.209-3.359-3.625-3.359-.646 0-1.339.104-2.078.313l1.406-4.36a9.102 9.102 0 012.234-.297c1.917 0 3.414.576 4.492 1.727 1.079 1.15 1.618 2.747 1.618 4.789 0 2.292-.698 4.437-2.094 6.437s-3.292 3.568-5.688 4.703c-2.01.959-4.849 1.438-8.515 1.438zm-9.938 0v-9.063c0-2.416-.203-3.856-.61-4.32-.405-.463-1.681-.695-3.827-.695h-5.89l1.53-4.625h5.047c3.136 0 5.23.458 6.281 1.375a3.773 3.773 0 011.22 1.992c.197.797.296 2.18.296 4.149V249h-4.047zm-24.625 0l1.563-4.625h5.515v-6.078c0-1.646-.354-2.724-1.062-3.234-.948-.678-2.224-1.245-3.828-1.704l1.844-3.437c1.729.427 3.296 1.047 4.703 1.86.906.53 1.53 1.182 1.875 1.952.343.771.515 1.922.515 3.453v7.188L149.86 249h-9.578zm-17.906 0l-2.234-17.688 3.921-1.39 1.797 14.453c2.667 0 4.795-.615 6.383-1.844 1.589-1.229 2.383-2.87 2.383-4.922 0-2.24-1.208-3.359-3.625-3.359-.646 0-1.339.104-2.078.313l1.406-4.36a9.102 9.102 0 012.234-.297c1.917 0 3.415.576 4.493 1.727 1.078 1.15 1.617 2.747 1.617 4.789 0 2.292-.698 4.437-2.094 6.437s-3.292 3.568-5.687 4.703c-2.01.959-4.85 1.438-8.516 1.438zm258.422 38v-9.594c0-1.927-.32-3.252-.961-3.976-.64-.724-1.997-1.295-4.07-1.711l2-3.797c2.448.448 4.208 1.15 5.28 2.11.71.635 1.186 1.385 1.43 2.25.245.864.368 2.25.368 4.156V287h-4.047zm-11.844 0v-9.063c0-2.416-.203-3.856-.61-4.32-.406-.463-1.682-.695-3.827-.695h-5.891l1.531-4.625h5.047c3.136 0 5.23.458 6.281 1.375a3.773 3.773 0 011.22 1.992c.197.797.296 2.18.296 4.149V287h-4.047zm-29.25 0l1.36-4.14h8.468c-3.833-3.709-6.713-8.162-8.64-13.36l4.093-1.578a28.973 28.973 0 004.938 8.875c1.469-1.781 2.203-3.943 2.203-6.485v-2.015h4.344v1.312c0 3.97-1.36 7.214-4.078 9.735 1.573 1.614 2.974 2.791 4.203 3.531l-1.39 4.125h-15.5zm-20.594 0v-10.031h4.047V287h-4.047zm13.594 0v-9.063c0-2.416-.206-3.856-.617-4.32-.412-.463-1.685-.695-3.82-.695h-12.047l1.547-4.625h11.171c3.136 0 5.23.458 6.282 1.375a3.733 3.733 0 011.234 1.984c.198.792.297 2.177.297 4.156V287h-4.047zm-48.61 2.781l1.563-4.672c1.667 0 3.459-.28 5.375-.843l-3.36-14.985 3.876-1.36 3.265 14.563c1.636-1.24 2.774-2.78 3.415-4.625.64-1.843.96-4.484.96-7.921v-1.641h4.344v1.156c0 3.99-.612 7.318-1.836 9.985-1.224 2.666-3.153 4.88-5.789 6.64-3.698 2.469-7.635 3.703-11.812 3.703zm-14.796-2.39l1.594-4.72c2.041-.228 3.687-.838 4.937-1.827 1.948-1.542 2.922-3.406 2.922-5.594 0-.906-.32-1.52-.96-1.844-.642-.323-1.873-.484-3.696-.484h-5.563v-9.625l4.047-1.36v6.36h4.063c2.5 0 4.242.36 5.226 1.078.985.719 1.477 1.984 1.477 3.797 0 3.437-1.318 6.49-3.953 9.156-2.636 2.667-6 4.354-10.094 5.063zm-15.938-6.657h-4.062c.729-2.666 1.094-4.573 1.094-5.718 0-.823-.36-1.474-1.078-1.954-.72-.479-1.964-.895-3.735-1.25l2.094-3.89c2.552.51 4.33 1.21 5.336 2.101 1.005.891 1.508 2.206 1.508 3.946 0 1.094-.25 2.76-.75 5l-.407 1.765zM236.656 287v-14.078h-9.531l1.547-4.625h16.094l-1.547 4.625h-2.516V287h-4.047zm-12.86-6.266h-4.062c.73-2.666 1.094-4.573 1.094-5.718 0-.823-.36-1.474-1.078-1.954-.719-.479-1.964-.895-3.734-1.25l2.093-3.89c2.552.51 4.331 1.21 5.336 2.101 1.006.891 1.508 2.206 1.508 3.946 0 1.094-.25 2.76-.75 5l-.406 1.765zM196.547 287v-14.078h-9.53l1.547-4.625h16.093l-1.547 4.625h-2.515V287h-4.047zm-28.25 0l1.392-4.234h10.468v-4.157c0-1.948-.192-3.205-.578-3.773-.385-.568-1.385-1.065-3-1.492l-2.984-.781-.235.671c-.135.396-.203.74-.203 1.032 0 1.01.87 1.583 2.61 1.718l-1.078 3.25c-3.5-.323-5.25-1.671-5.25-4.046 0-.917.374-2.438 1.125-4.563l.968-2.703 7.125 1.734c2.313.563 3.815 1.284 4.508 2.164.693.88 1.04 2.503 1.04 4.868v6.078L182.796 287h-14.5zm-8.75 0v-14.078h-9.53l1.547-4.625h16.093l-1.547 4.625h-2.515V287h-4.047zm-28.25 0l1.392-4.234h10.468v-4.157c0-1.948-.192-3.205-.578-3.773-.385-.568-1.385-1.065-3-1.492l-2.984-.781-.235.671c-.135.396-.203.74-.203 1.032 0 1.01.87 1.583 2.61 1.718l-1.078 3.25c-3.5-.323-5.25-1.671-5.25-4.046 0-.917.374-2.438 1.125-4.563l.968-2.703 7.125 1.734c2.313.563 3.815 1.284 4.508 2.164.693.88 1.04 2.503 1.04 4.868v6.078L145.796 287h-14.5zm-7.155 4.625v-14.281c0-2.032-.36-3.344-1.079-3.938-1.041-.875-2.328-1.552-3.859-2.031l1.86-3.453c1.875.562 3.53 1.37 4.968 2.422.834.614 1.401 1.364 1.703 2.25.302.885.454 2.255.454 4.11v14.921h-4.047zM426.797 325v-10.031h4.047V325h-4.047zm13.594 0v-9.063c0-2.416-.206-3.856-.618-4.32-.411-.463-1.684-.695-3.82-.695h-12.047l1.547-4.625h11.172c3.135 0 5.23.458 6.281 1.375a3.733 3.733 0 011.235 1.984c.198.792.296 2.177.296 4.156V325h-4.046zm-36.422 0v-.516c0-2.677.281-4.971.844-6.882.562-1.912 1.51-3.8 2.843-5.664l-.703-.672c-1.135-1.063-2.161-1.948-3.078-2.657l3.688-2.687c2.447 1.937 5.036 4.51 7.765 7.719.625-1.084 1.04-2.032 1.242-2.844.203-.813.305-1.927.305-3.344v-1.156h4.328v.906c0 3.521-1.182 6.568-3.547 9.14a41.618 41.618 0 014.422 6.47l-3.484 2.578c-2.063-3.709-4.865-7.355-8.406-10.938-1.26 1.958-1.891 4.948-1.891 8.969V325h-4.328zm-4.938-6.266h-4.062c.729-2.666 1.094-4.573 1.094-5.718 0-.823-.36-1.474-1.079-1.954-.718-.479-1.963-.895-3.734-1.25l2.094-3.89c2.552.51 4.33 1.21 5.336 2.101 1.005.891 1.507 2.206 1.507 3.946 0 1.094-.25 2.76-.75 5l-.406 1.765zM376.86 325l1.563-4.625h5.515v-6.078c0-1.646-.354-2.724-1.062-3.235-.948-.677-2.224-1.244-3.828-1.703l1.844-3.437c1.729.427 3.296 1.047 4.703 1.86.906.53 1.531 1.182 1.875 1.952.344.771.515 1.922.515 3.454v7.187L386.438 325h-9.579zm-17.906 0l-2.234-17.688 3.922-1.39 1.796 14.453c2.667 0 4.795-.615 6.383-1.844 1.589-1.229 2.383-2.87 2.383-4.922 0-2.24-1.208-3.359-3.625-3.359-.646 0-1.338.104-2.078.313l1.406-4.36a9.102 9.102 0 012.235-.297c1.916 0 3.414.576 4.492 1.727 1.078 1.15 1.617 2.747 1.617 4.789 0 2.292-.698 4.437-2.094 6.437s-3.291 3.568-5.687 4.704c-2.01.958-4.85 1.437-8.516 1.437zm-9.937 0v-9.063c0-2.416-.203-3.856-.61-4.32-.406-.463-1.682-.695-3.828-.695h-5.89l1.53-4.625h5.048c3.135 0 5.229.458 6.28 1.375a3.773 3.773 0 011.22 1.992c.198.797.296 2.18.296 4.149V325h-4.046zm-24.625 0l1.562-4.625h5.516v-6.078c0-1.646-.354-2.724-1.063-3.235-.948-.677-2.224-1.244-3.828-1.703l1.844-3.437c1.729.427 3.297 1.047 4.703 1.86.906.53 1.531 1.182 1.875 1.952.344.771.516 1.922.516 3.454v7.187L333.969 325h-9.578zm-17.907 0l-2.234-17.688 3.922-1.39 1.797 14.453c2.666 0 4.794-.615 6.383-1.844 1.588-1.229 2.382-2.87 2.382-4.922 0-2.24-1.208-3.359-3.625-3.359-.645 0-1.338.104-2.078.313l1.406-4.36a9.102 9.102 0 012.235-.297c1.917 0 3.414.576 4.492 1.727 1.078 1.15 1.617 2.747 1.617 4.789 0 2.292-.698 4.437-2.094 6.437-1.395 2-3.291 3.568-5.687 4.704-2.01.958-4.849 1.437-8.516 1.437zm-32.359 0l1.547-4.625h9.64v-4.438c0-2.416-.203-3.856-.609-4.32-.406-.463-1.682-.695-3.828-.695h-5.828l1.547-4.625h4.953c3.135 0 5.229.458 6.281 1.375a3.734 3.734 0 011.235 1.992c.197.797.296 2.18.296 4.149v6.562h2.5L290.33 325h-16.204zm-19.219 0l1.36-4.14h8.468c-3.833-3.709-6.713-8.162-8.64-13.36l4.094-1.578a28.973 28.973 0 004.937 8.875c1.469-1.781 2.203-3.943 2.203-6.485v-2.015h4.344v1.312c0 3.97-1.36 7.214-4.078 9.735 1.573 1.614 2.974 2.791 4.203 3.531l-1.39 4.125h-15.5zm-8.687 0v-14.078h-9.531l1.546-4.625h16.094l-1.547 4.625h-2.515V325h-4.047zm-40.422 0v-10.031h4.047V325h-4.047zm13.594 0v-9.063c0-2.416-.206-3.856-.618-4.32-.411-.463-1.684-.695-3.82-.695h-12.047l1.547-4.625h11.172c3.135 0 5.23.458 6.281 1.375a3.733 3.733 0 011.235 1.984c.198.792.297 2.177.297 4.156V325h-4.047zm-32.813.39l1.594-4.718c2.042-.23 3.687-.839 4.937-1.828 1.948-1.542 2.922-3.406 2.922-5.594 0-.906-.32-1.52-.96-1.844-.641-.323-1.873-.484-3.696-.484h-5.563v-9.625l4.047-1.36v6.36h4.063c2.5 0 4.242.36 5.226 1.078.985.719 1.477 1.984 1.477 3.797 0 3.437-1.318 6.49-3.953 9.156-2.636 2.667-6 4.354-10.094 5.063zm-21.125 4.235v-14.61h4.047v14.61h-4.047zm-2.516-18.703l1.547-4.625h10.844c1.99 0 3.39.088 4.203.265.813.178 1.495.542 2.047 1.094.802.813 1.203 1.98 1.203 3.5 0 3.052-1.12 5.901-3.36 8.547-2.239 2.646-5.13 4.537-8.671 5.672l1.672-4.969c1.656-.469 3.036-1.383 4.14-2.742 1.105-1.36 1.657-2.82 1.657-4.383 0-.937-.328-1.565-.985-1.883-.656-.317-1.958-.476-3.906-.476h-10.39zM155.625 325v-9.594c0-1.927-.32-3.252-.96-3.976-.642-.724-1.998-1.295-4.071-1.711l2-3.797c2.448.448 4.208 1.15 5.281 2.11.708.635 1.185 1.385 1.43 2.25.244.864.367 2.25.367 4.156V325h-4.047zm-25.516 0v-14.078h-2.53l1.562-4.625h10.89c3.136 0 5.23.458 6.281 1.375a3.734 3.734 0 011.235 1.992c.198.797.297 2.18.297 4.149V325h-4.047v-9.063c0-2.416-.203-3.856-.61-4.32-.406-.463-1.682-.695-3.828-.695h-5.203V325h-4.047zm-9.656 0v-5.016h5.016V325h-5.016zm249.906 38v-10.031h4.047V363h-4.047zm13.594 0v-9.063c0-2.416-.206-3.856-.617-4.32-.412-.463-1.685-.695-3.82-.695h-12.047l1.547-4.625h11.171c3.136 0 5.23.458 6.282 1.375a3.733 3.733 0 011.234 1.984c.198.792.297 2.177.297 4.156V363h-4.047zm-36.86 0l-2.202-17.5 3.921-1.578 1.172 9.25c1.136-.281 1.933-.945 2.391-1.992.458-1.047.688-2.716.688-5.008v-1.875h4.343v1.719c0 3.093-.565 5.445-1.695 7.054-1.13 1.61-2.92 2.607-5.367 2.993l.281 2.312c2.719 0 4.89-.453 6.516-1.36 2.843-1.583 4.265-5.192 4.265-10.827v-1.891h4.328v1.562c0 5.615-1.58 9.875-4.742 12.782-3.161 2.906-7.794 4.359-13.898 4.359zm-21.937 0l1.39-4.234h10.47v-4.157c0-1.948-.193-3.205-.579-3.773-.385-.568-1.385-1.065-3-1.492l-2.984-.781-.234.671c-.136.396-.203.74-.203 1.032 0 1.01.87 1.583 2.609 1.718l-1.078 3.25c-3.5-.323-5.25-1.671-5.25-4.046 0-.917.375-2.438 1.125-4.563l.969-2.703 7.125 1.734c2.312.563 3.815 1.284 4.507 2.164.693.88 1.04 2.503 1.04 4.868v6.078L339.656 363h-14.5zm-20.656 0v-10.031h4.047V363H304.5zm13.594 0v-9.063c0-2.416-.206-3.856-.617-4.32-.412-.463-1.685-.695-3.82-.695h-12.048l1.547-4.625h11.172c3.136 0 5.23.458 6.281 1.375a3.733 3.733 0 011.235 1.984c.198.792.297 2.177.297 4.156V363h-4.047zm-48.14 0l2.265-8.688c.416-1.593.625-2.692.625-3.296 0-1.24-1.058-2.907-3.172-5l3.61-2.094c1.145.958 2.124 2.265 2.937 3.922 1.666-2.615 3.666-3.922 6-3.922 1.76 0 3.166.67 4.219 2.008 1.052 1.338 1.677 3.257 1.875 5.757l.53 6.688-1.53 4.625h-9.032l1.547-4.625h4.922l-.36-4.797c-.25-3.354-1.348-5.031-3.296-5.031-1.125 0-2.07.56-2.836 1.68-.766 1.12-1.498 3.007-2.195 5.664L274.188 363h-4.235zm-7.376 0v-9.063c0-2.416-.203-3.856-.61-4.32-.406-.463-1.682-.695-3.827-.695h-5.891l1.531-4.625h5.047c3.136 0 5.23.458 6.281 1.375a3.773 3.773 0 011.22 1.992c.197.797.296 2.18.296 4.149V363h-4.047zm-31.14 0v-14.078h-2.532l1.563-4.625h10.89c3.136 0 5.23.458 6.282 1.375a3.734 3.734 0 011.234 1.992c.198.797.297 2.18.297 4.149V363h-4.047v-9.063c0-2.416-.203-3.856-.61-4.32-.406-.463-1.682-.695-3.827-.695h-5.204V363h-4.047zm-6.344-6.266h-4.063c.73-2.666 1.094-4.573 1.094-5.718 0-.823-.36-1.474-1.078-1.954-.719-.479-1.964-.895-3.734-1.25l2.093-3.89c2.552.51 4.331 1.21 5.336 2.101s1.508 2.206 1.508 3.946c0 1.094-.25 2.76-.75 5l-.406 1.765zM198.204 363l1.546-4.625h9.64v-4.438c0-2.416-.202-3.856-.609-4.32-.406-.463-1.682-.695-3.828-.695h-5.828l1.547-4.625h4.953c3.135 0 5.23.458 6.281 1.375a3.734 3.734 0 011.235 1.992c.198.797.297 2.18.297 4.149v6.562h2.5L214.405 363h-16.203zm-21.032 0v-10.031h4.047V363h-4.047zm13.594 0v-9.063c0-2.416-.206-3.856-.618-4.32-.411-.463-1.684-.695-3.82-.695h-12.047l1.547-4.625H187c3.135 0 5.23.458 6.281 1.375a3.733 3.733 0 011.235 1.984c.198.792.297 2.177.297 4.156V363h-4.047zm-46.97 0v-.516c0-2.677.282-4.971.845-6.882.562-1.912 1.51-3.8 2.843-5.664l-.703-.672c-1.135-1.063-2.161-1.948-3.078-2.657l3.688-2.687c2.448 1.937 5.036 4.51 7.765 7.719.625-1.084 1.04-2.032 1.242-2.844.204-.813.305-1.927.305-3.344v-1.156h4.328v.906c0 3.521-1.182 6.568-3.547 9.14a41.618 41.618 0 014.422 6.47l-3.484 2.578c-2.063-3.709-4.865-7.355-8.406-10.938-1.26 1.958-1.891 4.948-1.891 8.969V363h-4.328zm-24.265 0l1.547-4.625h4.031c-.823-2.115-1.234-4.708-1.234-7.781v-1.672h-2.328l1.547-4.625h8.578c3.135 0 5.229.458 6.281 1.375a3.733 3.733 0 011.234 1.984c.198.792.297 2.177.297 4.156V363h-4.047v-9.063c0-2.416-.203-3.856-.609-4.32-.406-.463-1.682-.695-3.828-.695h-3.063v1.375c0 3.354.48 6.047 1.438 8.078L127.844 363h-8.313zm285.016 31.734h-4.063c.73-2.666 1.094-4.573 1.094-5.718 0-.823-.36-1.474-1.078-1.954-.719-.479-1.964-.895-3.734-1.25l2.093-3.89c2.552.51 4.331 1.21 5.336 2.101 1.006.891 1.508 2.206 1.508 3.946 0 1.094-.25 2.76-.75 5l-.406 1.765zM378.812 401l1.532-4.625h8.734c.865-1.99 1.297-3.682 1.297-5.078 0-1.646-.38-2.787-1.14-3.422-.761-.635-2.13-.953-4.11-.953h-5.406l1.531-4.625h5.094c1.781 0 3.15.156 4.11.469.957.312 1.77.87 2.437 1.671 1.062 1.271 1.593 3.063 1.593 5.375 0 1.844-.49 4.032-1.468 6.563L391.5 401h-12.688zm-7.453 0v-9.594c0-1.927-.32-3.252-.96-3.976-.641-.724-1.998-1.295-4.07-1.711l2-3.797c2.447.448 4.207 1.15 5.28 2.11.709.635 1.185 1.385 1.43 2.25.245.864.367 2.25.367 4.156V401h-4.047zm-20.843.39l1.593-4.718c2.042-.23 3.688-.839 4.938-1.828 1.948-1.542 2.922-3.406 2.922-5.594 0-.906-.32-1.52-.961-1.844-.64-.323-1.873-.484-3.695-.484h-5.563v-9.625l4.047-1.36v6.36h4.062c2.5 0 4.243.36 5.227 1.078.984.719 1.476 1.984 1.476 3.797 0 3.437-1.317 6.49-3.953 9.156-2.635 2.667-6 4.354-10.093 5.063zm-8.891-.39v-9.594c0-1.927-.32-3.252-.96-3.976-.642-.724-1.998-1.295-4.071-1.711l2-3.797c2.448.448 4.208 1.15 5.281 2.11.708.635 1.185 1.385 1.43 2.25.244.864.367 2.25.367 4.156V401h-4.047zm-27.75 0l1.547-4.625h4.031c-.823-2.115-1.234-4.708-1.234-7.781v-1.672h-2.328l1.546-4.625h8.579c3.135 0 5.229.458 6.28 1.375a3.733 3.733 0 011.235 1.984c.198.792.297 2.177.297 4.156V401h-4.047v-9.063c0-2.416-.203-3.856-.61-4.32-.405-.463-1.681-.695-3.827-.695h-3.063v1.375c0 3.354.48 6.047 1.438 8.078L322.188 401h-8.313zm-30.688 0l-2.203-17.5 3.922-1.578 1.172 9.25c1.136-.281 1.932-.945 2.39-1.992.46-1.047.688-2.716.688-5.008v-1.875h4.344v1.719c0 3.093-.565 5.445-1.695 7.054-1.13 1.61-2.92 2.607-5.368 2.993l.282 2.312c2.719 0 4.89-.453 6.515-1.36 2.844-1.583 4.266-5.192 4.266-10.827v-1.891h4.328v1.562c0 5.615-1.58 9.875-4.742 12.782-3.162 2.906-7.794 4.359-13.899 4.359zm-21.937 0l1.39-4.234h10.47v-4.157c0-1.948-.193-3.205-.579-3.773-.385-.568-1.385-1.065-3-1.492l-2.984-.781-.235.671c-.135.396-.203.74-.203 1.032 0 1.01.87 1.583 2.61 1.718l-1.078 3.25c-3.5-.323-5.25-1.671-5.25-4.046 0-.917.375-2.438 1.125-4.563l.968-2.703 7.125 1.734c2.313.563 3.815 1.284 4.508 2.164.693.88 1.04 2.503 1.04 4.868v6.078L275.75 401h-14.5zm-22.969 0l1.547-4.625h4.031c-.823-2.115-1.234-4.708-1.234-7.781v-1.672h-2.328l1.547-4.625h8.578c3.135 0 5.229.458 6.281 1.375a3.733 3.733 0 011.235 1.984c.197.792.296 2.177.296 4.156V401h-4.046v-9.063c0-2.416-.204-3.856-.61-4.32-.406-.463-1.682-.695-3.828-.695h-3.063v1.375c0 3.354.48 6.047 1.438 8.078L246.594 401h-8.313zm-31.234 0v-10.031h4.047V401h-4.047zm13.594 0v-9.063c0-2.416-.206-3.856-.618-4.32-.411-.463-1.684-.695-3.82-.695h-12.047l1.547-4.625h11.172c3.135 0 5.23.458 6.281 1.375a3.733 3.733 0 011.235 1.984c.198.792.297 2.177.297 4.156V401h-4.047zm-39.72 0l1.548-4.625h4.031c-.823-2.115-1.234-4.708-1.234-7.781v-1.672h-2.328l1.546-4.625h8.578c3.136 0 5.23.458 6.282 1.375a3.733 3.733 0 011.234 1.984c.198.792.297 2.177.297 4.156V401h-4.047v-9.063c0-2.416-.203-3.856-.61-4.32-.406-.463-1.682-.695-3.827-.695h-3.063v1.375c0 3.354.48 6.047 1.438 8.078L189.234 401h-8.312zm-13.171.39l-1.594-3.859c2.334-1.135 4.724-2.724 7.172-4.765l-.39-2.485c-.23-1.427-.566-2.398-1.008-2.914-.443-.515-1.42-1.075-2.93-1.68l-.89-.359 1.75-3.406c2.562.844 4.317 1.687 5.265 2.531.625.563 1.055 1.177 1.29 1.844.233.667.517 2.094.85 4.281l.61 4c.448 2.938.89 5.078 1.328 6.422h-4.36c-.28-1.115-.577-2.594-.89-4.438-1.542 1.553-3.61 3.162-6.203 4.829zm-5.375-6.656h-4.063c.73-2.666 1.094-4.573 1.094-5.718 0-.823-.36-1.474-1.078-1.954-.719-.479-1.963-.895-3.734-1.25l2.094-3.89c2.552.51 4.33 1.21 5.335 2.101 1.006.891 1.508 2.206 1.508 3.946 0 1.094-.25 2.76-.75 5l-.406 1.765zM147.281 401v-9.594c0-1.927-.32-3.252-.96-3.976-.641-.724-1.998-1.295-4.071-1.711l2-3.797c2.448.448 4.208 1.15 5.281 2.11.709.635 1.185 1.385 1.43 2.25.245.864.367 2.25.367 4.156V401h-4.047zm-27.75 0l1.547-4.625h4.031c-.823-2.115-1.234-4.708-1.234-7.781v-1.672h-2.328l1.547-4.625h8.578c3.135 0 5.229.458 6.281 1.375a3.733 3.733 0 011.234 1.984c.198.792.297 2.177.297 4.156V401h-4.047v-9.063c0-2.416-.203-3.856-.609-4.32-.406-.463-1.682-.695-3.828-.695h-3.063v1.375c0 3.354.48 6.047 1.438 8.078L127.844 401h-8.313zm218.406 38v-10.031h4.047V439h-4.046zm13.594 0v-9.063c0-2.416-.205-3.856-.617-4.32-.411-.463-1.685-.695-3.82-.695h-12.047l1.547-4.625h11.172c3.135 0 5.229.458 6.28 1.375a3.733 3.733 0 011.235 1.984c.198.792.297 2.177.297 4.156V439h-4.047zm-35.687 0l1.547-4.625h9.64v-4.438c0-2.416-.203-3.856-.61-4.32-.405-.463-1.681-.695-3.827-.695h-5.828l1.546-4.625h4.954c3.135 0 5.229.458 6.28 1.375a3.734 3.734 0 011.235 1.992c.198.797.297 2.18.297 4.149v6.562h2.5L332.047 439h-16.203zm-18.61 0l-1.765-14.078h-2.516l1.547-4.625h11.078c2.094 0 3.578.078 4.453.234.875.157 1.573.469 2.094.938.875.791 1.313 2.047 1.313 3.765 0 2.292-.662 4.506-1.985 6.641s-3.104 3.854-5.344 5.156c-2.26 1.313-5.218 1.969-8.875 1.969zm3.454-4.625c2.333-.177 4.088-.687 5.265-1.531 1.938-1.407 2.906-3.25 2.906-5.531 0-.938-.328-1.57-.984-1.899-.656-.328-1.948-.492-3.875-.492h-4.469l1.156 9.453zm-11.125-1.64H285.5c.73-2.667 1.094-4.574 1.094-5.72 0-.822-.36-1.473-1.078-1.952-.72-.48-1.964-.896-3.735-1.25l2.094-3.891c2.552.51 4.33 1.21 5.336 2.101 1.005.891 1.508 2.206 1.508 3.946 0 1.094-.25 2.76-.75 5l-.406 1.765zM263.375 439l-1.766-14.078h-2.515l1.547-4.625h11.078c2.094 0 3.578.078 4.453.234.875.157 1.573.469 2.094.938.875.791 1.312 2.047 1.312 3.765 0 2.292-.661 4.506-1.984 6.641s-3.104 3.854-5.344 5.156c-2.26 1.313-5.219 1.969-8.875 1.969zm3.453-4.625c2.333-.177 4.089-.687 5.266-1.531 1.937-1.407 2.906-3.25 2.906-5.531 0-.938-.328-1.57-.984-1.899-.657-.328-1.948-.492-3.875-.492h-4.47l1.157 9.453zm-11.125-1.64h-4.062c.729-2.667 1.093-4.574 1.093-5.72 0-.822-.359-1.473-1.078-1.952-.719-.48-1.963-.896-3.734-1.25l2.094-3.891c2.552.51 4.33 1.21 5.336 2.101 1.005.891 1.507 2.206 1.507 3.946 0 1.094-.25 2.76-.75 5l-.406 1.765zM224.781 439l1.547-4.625h4.031c-.823-2.115-1.234-4.708-1.234-7.781v-1.672h-2.328l1.547-4.625h8.578c3.135 0 5.229.458 6.281 1.375a3.733 3.733 0 011.234 1.984c.198.792.297 2.177.297 4.156V439h-4.047v-9.063c0-2.416-.203-3.856-.609-4.32-.406-.463-1.682-.695-3.828-.695h-3.063v1.375c0 3.354.48 6.047 1.438 8.078L233.094 439h-8.313zm-102.89 0v-23.125h4.812v9.39h9.563v-9.39h4.812V439h-4.812v-10.547h-9.563V439h-4.812zm30.703 0v-19.953h-8.281v-3.172h21.39v3.172h-8.281V439h-4.828zm16.344 0v-23.125h6.375l5.562 16.266 5.734-16.266h5.594V439h-4.437v-17.453l-5.641 15.906h-3.875l-5.531-16.14V439h-3.781zm29.046 0v-23.125h4.813v19.844h10.422V439h-15.235zm204.094 38v-9.594c0-1.927-.32-3.252-.96-3.976-.641-.724-1.998-1.295-4.071-1.711l2-3.797c2.448.448 4.208 1.15 5.281 2.11.708.635 1.185 1.385 1.43 2.25.245.864.367 2.25.367 4.156V477h-4.047zm-25.625 0l2.266-8.688c.416-1.593.625-2.692.625-3.296 0-1.24-1.058-2.907-3.172-5l3.61-2.094c1.145.958 2.124 2.265 2.937 3.922 1.666-2.615 3.666-3.922 6-3.922 1.76 0 3.166.67 4.219 2.008 1.052 1.338 1.677 3.257 1.875 5.757l.53 6.688-1.53 4.625h-9.032l1.547-4.625h4.922l-.36-4.797c-.25-3.354-1.348-5.031-3.296-5.031-1.125 0-2.07.56-2.836 1.68-.766 1.12-1.498 3.007-2.195 5.664L380.688 477h-4.235zm-19.984 0v-.516c0-2.677.281-4.971.844-6.882.562-1.912 1.51-3.8 2.843-5.664l-.703-.672c-1.135-1.063-2.161-1.948-3.078-2.657l3.688-2.687c2.447 1.937 5.036 4.51 7.765 7.719.625-1.084 1.04-2.032 1.242-2.844.203-.813.305-1.927.305-3.344v-1.156h4.328v.906c0 3.521-1.182 6.568-3.547 9.14a41.618 41.618 0 014.422 6.47l-3.484 2.578c-2.063-3.709-4.865-7.355-8.406-10.938-1.26 1.958-1.891 4.948-1.891 8.969V477h-4.328zm-20.328 0l1.39-4.234H348v-4.157c0-1.948-.193-3.205-.578-3.773-.386-.568-1.386-1.065-3-1.492l-2.985-.781-.234.671c-.135.396-.203.74-.203 1.032 0 1.01.87 1.583 2.61 1.718l-1.079 3.25c-3.5-.323-5.25-1.671-5.25-4.046 0-.917.375-2.438 1.125-4.563l.969-2.703 7.125 1.734c2.313.563 3.815 1.284 4.508 2.164.693.88 1.039 2.503 1.039 4.868v6.078L350.64 477h-14.5zm-20.11 0l-2.203-17.5 3.922-1.578 1.172 9.25c1.135-.281 1.932-.945 2.39-1.992.459-1.047.688-2.716.688-5.008v-1.875h4.344v1.719c0 3.093-.565 5.445-1.696 7.054-1.13 1.61-2.919 2.607-5.367 2.993l.281 2.312c2.72 0 4.891-.453 6.516-1.36 2.844-1.583 4.266-5.192 4.266-10.827v-1.891h4.328v1.562c0 5.615-1.58 9.875-4.742 12.782-3.162 2.906-7.795 4.359-13.899 4.359zm-9.969 0v-9.063c0-2.416-.203-3.856-.609-4.32-.406-.463-1.682-.695-3.828-.695h-5.89l1.53-4.625h5.048c3.135 0 5.229.458 6.28 1.375a3.773 3.773 0 011.22 1.992c.197.797.296 2.18.296 4.149V477h-4.046zm-33.375 0l1.547-4.625h4.032c-.823-2.115-1.235-4.708-1.235-7.781v-1.672h-2.328l1.547-4.625h8.578c3.136 0 5.23.458 6.281 1.375a3.733 3.733 0 011.235 1.984c.198.792.297 2.177.297 4.156V477h-4.047v-9.063c0-2.416-.203-3.856-.61-4.32-.406-.463-1.682-.695-3.828-.695h-3.062v1.375c0 3.354.479 6.047 1.437 8.078L281 477h-8.313zm-29.515 0l1.547-4.625h9.64v-4.438c0-2.416-.203-3.856-.609-4.32-.406-.463-1.682-.695-3.828-.695h-5.828l1.547-4.625h4.953c3.135 0 5.229.458 6.281 1.375a3.734 3.734 0 011.234 1.992c.198.797.297 2.18.297 4.149v6.562h2.5L259.375 477h-16.203zm-18.156 0l1.53-4.625h8.735c.865-1.99 1.297-3.682 1.297-5.078 0-1.646-.38-2.787-1.14-3.422-.76-.635-2.13-.953-4.11-.953h-5.406l1.531-4.625h5.094c1.781 0 3.15.156 4.11.469.958.312 1.77.87 2.437 1.671 1.062 1.271 1.594 3.063 1.594 5.375 0 1.844-.49 4.032-1.47 6.563L237.704 477h-12.687zm-7.547 4.625v-18.703h-10l1.547-4.625h12.5v23.328h-4.047zm-36.453-4.234l1.593-4.72c2.042-.228 3.688-.838 4.938-1.827 1.948-1.542 2.922-3.406 2.922-5.594 0-.906-.32-1.52-.961-1.844-.64-.323-1.873-.484-3.696-.484h-5.562v-9.625l4.047-1.36v6.36h4.062c2.5 0 4.243.36 5.227 1.078.984.719 1.476 1.984 1.476 3.797 0 3.437-1.317 6.49-3.953 9.156-2.635 2.667-6 4.354-10.093 5.063zm-5.391-6.657h-4.063c.73-2.666 1.094-4.573 1.094-5.718 0-.823-.36-1.474-1.078-1.954-.719-.479-1.963-.895-3.734-1.25l2.094-3.89c2.552.51 4.33 1.21 5.335 2.101 1.006.891 1.508 2.206 1.508 3.946 0 1.094-.25 2.76-.75 5l-.406 1.765zM148.828 477l1.36-4.14h8.468c-3.833-3.709-6.713-8.162-8.64-13.36l4.093-1.578a28.973 28.973 0 004.938 8.875c1.469-1.781 2.203-3.943 2.203-6.485v-2.015h4.344v1.312c0 3.97-1.36 7.214-4.078 9.735 1.573 1.614 2.974 2.791 4.203 3.531l-1.39 4.125h-15.5zm-7.078 0v-9.594c0-1.927-.32-3.252-.96-3.976-.642-.724-1.998-1.295-4.071-1.711l2-3.797c2.448.448 4.208 1.15 5.281 2.11.708.635 1.185 1.385 1.43 2.25.244.864.367 2.25.367 4.156V477h-4.047zm-11.844 0v-9.063c0-2.416-.203-3.856-.61-4.32-.405-.463-1.681-.695-3.827-.695h-5.89l1.53-4.625h5.047c3.136 0 5.23.458 6.281 1.375a3.773 3.773 0 011.22 1.992c.197.797.296 2.18.296 4.149V477h-4.047zm207.406 31.734h-4.062c.73-2.666 1.094-4.573 1.094-5.718 0-.823-.36-1.474-1.078-1.954-.72-.479-1.964-.895-3.735-1.25l2.094-3.89c2.552.51 4.33 1.21 5.336 2.101 1.005.891 1.508 2.206 1.508 3.946 0 1.094-.25 2.76-.75 5l-.406 1.765zm-11.593 0h-4.063c.73-2.666 1.094-4.573 1.094-5.718 0-.823-.36-1.474-1.078-1.954-.719-.479-1.964-.895-3.735-1.25l2.094-3.89c2.552.51 4.331 1.21 5.336 2.101s1.508 2.206 1.508 3.946c0 1.094-.25 2.76-.75 5l-.406 1.765zM297.656 515l-2.203-17.5 3.922-1.578 1.172 9.25c1.135-.281 1.932-.945 2.39-1.992.459-1.047.688-2.716.688-5.008v-1.875h4.344v1.719c0 3.093-.565 5.445-1.696 7.054-1.13 1.61-2.919 2.607-5.367 2.993l.281 2.312c2.72 0 4.891-.453 6.516-1.36 2.844-1.583 4.266-5.192 4.266-10.827v-1.891h4.328v1.562c0 5.615-1.58 9.875-4.742 12.782-3.162 2.906-7.795 4.359-13.899 4.359zm-10.047 0v-9.594c0-1.927-.32-3.252-.96-3.976-.641-.724-1.998-1.295-4.07-1.711l2-3.797c2.447.448 4.207 1.15 5.28 2.11.709.635 1.185 1.385 1.43 2.25.245.864.367 2.25.367 4.156V515h-4.047zm-25.625 0l2.266-8.688c.417-1.593.625-2.692.625-3.296 0-1.24-1.057-2.907-3.172-5l3.61-2.094c1.145.958 2.124 2.265 2.937 3.922 1.667-2.615 3.667-3.922 6-3.922 1.76 0 3.167.67 4.219 2.008 1.052 1.338 1.677 3.257 1.875 5.757l.531 6.688-1.531 4.625h-9.031l1.546-4.625h4.922l-.36-4.797c-.25-3.354-1.348-5.031-3.296-5.031-1.125 0-2.07.56-2.836 1.68-.766 1.12-1.497 3.007-2.195 5.664L266.219 515h-4.235zm-3.953-6.266h-4.062c.729-2.666 1.094-4.573 1.094-5.718 0-.823-.36-1.474-1.079-1.954-.718-.479-1.963-.895-3.734-1.25l2.094-3.89c2.552.51 4.33 1.21 5.336 2.101 1.005.891 1.507 2.206 1.507 3.946 0 1.094-.25 2.76-.75 5l-.406 1.765zM219.86 515v-.516c0-2.677.282-4.971.844-6.882.563-1.912 1.51-3.8 2.844-5.664l-.703-.672c-1.136-1.063-2.162-1.948-3.078-2.657l3.687-2.687c2.448 1.937 5.037 4.51 7.766 7.719.625-1.084 1.039-2.032 1.242-2.844.203-.813.305-1.927.305-3.344v-1.156h4.328v.906c0 3.521-1.183 6.568-3.547 9.14a41.618 41.618 0 014.422 6.47l-3.485 2.578c-2.062-3.709-4.864-7.355-8.406-10.938-1.26 1.958-1.89 4.948-1.89 8.969V515h-4.329zm-4.937-6.266h-4.063c.73-2.666 1.094-4.573 1.094-5.718 0-.823-.36-1.474-1.078-1.954-.719-.479-1.964-.895-3.734-1.25l2.093-3.89c2.552.51 4.331 1.21 5.336 2.101 1.006.891 1.508 2.206 1.508 3.946 0 1.094-.25 2.76-.75 5l-.406 1.765zM192.75 515l1.563-4.625h5.515v-6.078c0-1.646-.354-2.724-1.062-3.235-.948-.677-2.224-1.244-3.828-1.703l1.843-3.437c1.73.427 3.297 1.047 4.703 1.86.907.53 1.532 1.182 1.875 1.952.344.771.516 1.922.516 3.454v7.187L202.328 515h-9.578zm-17.906 0l-2.235-17.688 3.922-1.39 1.797 14.453c2.667 0 4.794-.615 6.383-1.844 1.588-1.229 2.383-2.87 2.383-4.922 0-2.24-1.209-3.359-3.625-3.359-.646 0-1.339.104-2.078.313l1.406-4.36a9.102 9.102 0 012.234-.297c1.917 0 3.414.576 4.492 1.727 1.079 1.15 1.618 2.747 1.618 4.789 0 2.292-.698 4.437-2.094 6.437s-3.292 3.568-5.688 4.704c-2.01.958-4.849 1.437-8.515 1.437zm-9.938 0v-9.063c0-2.416-.203-3.856-.61-4.32-.405-.463-1.681-.695-3.827-.695h-5.89l1.53-4.625h5.047c3.136 0 5.23.458 6.281 1.375a3.773 3.773 0 011.22 1.992c.197.797.296 2.18.296 4.149V515h-4.047zm-24.625 0l1.563-4.625h5.515v-6.078c0-1.646-.354-2.724-1.062-3.235-.948-.677-2.224-1.244-3.828-1.703l1.844-3.437c1.729.427 3.296 1.047 4.703 1.86.906.53 1.53 1.182 1.875 1.952.343.771.515 1.922.515 3.454v7.187L149.86 515h-9.578zm-17.906 0l-2.234-17.688 3.921-1.39 1.797 14.453c2.667 0 4.795-.615 6.383-1.844 1.589-1.229 2.383-2.87 2.383-4.922 0-2.24-1.208-3.359-3.625-3.359-.646 0-1.339.104-2.078.313l1.406-4.36a9.102 9.102 0 012.234-.297c1.917 0 3.415.576 4.493 1.727 1.078 1.15 1.617 2.747 1.617 4.789 0 2.292-.698 4.437-2.094 6.437s-3.292 3.568-5.687 4.704c-2.01.958-4.85 1.437-8.516 1.437zm212.14 38l2.266-8.688c.417-1.593.625-2.692.625-3.296 0-1.24-1.057-2.907-3.172-5l3.61-2.094c1.146.958 2.125 2.265 2.937 3.922 1.667-2.615 3.667-3.922 6-3.922 1.76 0 3.167.67 4.219 2.008 1.052 1.338 1.677 3.257 1.875 5.758l.531 6.687-1.531 4.625h-9.031l1.547-4.625h4.921l-.359-4.797c-.25-3.354-1.349-5.031-3.297-5.031-1.125 0-2.07.56-2.836 1.68-.765 1.12-1.497 3.007-2.195 5.664L338.75 553h-4.234zm-23.28 0l1.546-4.625h4.031c-.822-2.115-1.234-4.708-1.234-7.781v-1.672h-2.328l1.547-4.625h8.578c3.135 0 5.23.458 6.281 1.375a3.733 3.733 0 011.235 1.984c.198.792.296 2.177.296 4.157V553h-4.046v-9.063c0-2.416-.203-3.856-.61-4.32-.406-.463-1.682-.695-3.828-.695h-3.062v1.375c0 3.354.479 6.047 1.437 8.078L319.547 553h-8.313zm-7.173 0v-9.594c0-1.927-.32-3.252-.96-3.976-.641-.724-1.998-1.295-4.07-1.711l2-3.797c2.447.448 4.208 1.15 5.28 2.11.709.635 1.185 1.385 1.43 2.25.245.864.367 2.25.367 4.155V553h-4.046zm-25.515 0v-14.078h-2.531l1.562-4.625h10.89c3.136 0 5.23.458 6.282 1.375a3.734 3.734 0 011.234 1.992c.198.797.297 2.18.297 4.149V553h-4.047v-9.063c0-2.416-.203-3.856-.609-4.32-.406-.463-1.682-.695-3.828-.695h-5.203V553h-4.047zm-20.485 0l1.532-4.625h8.734c.865-1.99 1.297-3.682 1.297-5.078 0-1.646-.38-2.787-1.14-3.422-.761-.635-2.13-.953-4.11-.953h-5.406l1.531-4.625h5.094c1.781 0 3.15.156 4.11.469.957.312 1.77.87 2.437 1.672 1.062 1.27 1.593 3.062 1.593 5.375 0 1.843-.49 4.03-1.468 6.562L270.75 553h-12.688zm-21.156 0l2.266-8.688c.417-1.593.625-2.692.625-3.296 0-1.24-1.057-2.907-3.172-5l3.61-2.094c1.145.958 2.124 2.265 2.937 3.922 1.667-2.615 3.667-3.922 6-3.922 1.76 0 3.167.67 4.219 2.008 1.052 1.338 1.677 3.257 1.875 5.758l.53 6.687-1.53 4.625h-9.032l1.547-4.625h4.922l-.36-4.797c-.25-3.354-1.348-5.031-3.296-5.031-1.125 0-2.07.56-2.836 1.68-.766 1.12-1.497 3.007-2.195 5.664L241.14 553h-4.235zm-3.953-6.266h-4.062c.729-2.666 1.093-4.573 1.093-5.718 0-.823-.359-1.474-1.078-1.953-.719-.48-1.963-.896-3.734-1.25l2.094-3.891c2.552.51 4.33 1.21 5.336 2.101 1.005.891 1.507 2.206 1.507 3.946 0 1.094-.25 2.76-.75 5l-.406 1.765zM204.641 553v-14.078h-2.485l1.547-4.625h10.484c3.136 0 5.23.458 6.282 1.375a3.734 3.734 0 011.234 1.992c.198.797.297 2.18.297 4.149v6.562L220.453 553h-15.812zm4.062-4.625h9.25v-4.438c0-2.427-.203-3.87-.61-4.328-.406-.458-1.682-.687-3.827-.687h-4.813v9.453zm-20.953-1.64h-4.063c.73-2.667 1.094-4.574 1.094-5.72 0-.822-.36-1.473-1.078-1.952-.719-.48-1.963-.896-3.734-1.25l2.094-3.891c2.552.51 4.33 1.21 5.335 2.101 1.006.891 1.508 2.206 1.508 3.946 0 1.094-.25 2.76-.75 5l-.406 1.765zM172.656 553v-9.594c0-1.927-.32-3.252-.96-3.976-.641-.724-1.998-1.295-4.071-1.711l2-3.797c2.448.448 4.208 1.15 5.281 2.11.709.635 1.185 1.385 1.43 2.25.245.864.367 2.25.367 4.155V553h-4.047zm-27.75 0l1.547-4.625h4.031c-.823-2.115-1.234-4.708-1.234-7.781v-1.672h-2.328l1.547-4.625h8.578c3.135 0 5.229.458 6.281 1.375a3.733 3.733 0 011.234 1.984c.198.792.297 2.177.297 4.157V553h-4.047v-9.063c0-2.416-.203-3.856-.609-4.32-.406-.463-1.682-.695-3.828-.695h-3.063v1.375c0 3.354.48 6.047 1.438 8.078L153.219 553h-8.313zm-7.094 0v-9.063c0-2.416-.203-3.856-.609-4.32-.406-.463-1.682-.695-3.828-.695h-5.89l1.53-4.625h5.048c3.135 0 5.229.458 6.28 1.375a3.773 3.773 0 011.22 1.992c.197.797.296 2.18.296 4.149V553h-4.047zm-17.359 0v-5.016h5.016V553h-5.016zm322.688 38.39l1.593-4.718c2.042-.23 3.688-.839 4.938-1.828 1.948-1.542 2.922-3.406 2.922-5.594 0-.906-.32-1.52-.961-1.844-.64-.323-1.873-.484-3.695-.484h-5.563v-9.625l4.047-1.36v6.36h4.062c2.5 0 4.243.36 5.227 1.078.984.719 1.476 1.984 1.476 3.797 0 3.437-1.317 6.49-3.953 9.156-2.635 2.667-6 4.354-10.093 5.063zm-22.594-.39l2.265-8.688c.417-1.593.625-2.692.625-3.296 0-1.24-1.057-2.907-3.171-5l3.609-2.094c1.146.958 2.125 2.265 2.938 3.922 1.666-2.615 3.666-3.922 6-3.922 1.76 0 3.166.67 4.218 2.008s1.677 3.257 1.875 5.758l.531 6.687-1.53 4.625h-9.032l1.547-4.625h4.922l-.36-4.797c-.25-3.354-1.349-5.031-3.296-5.031-1.126 0-2.07.56-2.836 1.68-.766 1.12-1.498 3.007-2.196 5.664L424.781 591h-4.234zm-21.625 2.781l1.562-4.672c1.667 0 3.459-.28 5.375-.843L402.5 573.28l3.875-1.36 3.266 14.563c1.635-1.24 2.773-2.78 3.414-4.625.64-1.843.96-4.484.96-7.922v-1.64h4.344v1.156c0 3.99-.612 7.318-1.836 9.985-1.224 2.666-3.153 4.88-5.789 6.64-3.698 2.469-7.635 3.703-11.812 3.703zM380.078 591l-2.203-17.5 3.922-1.578 1.172 9.25c1.135-.281 1.932-.945 2.39-1.992.459-1.047.688-2.716.688-5.008v-1.875h4.344v1.719c0 3.093-.565 5.445-1.696 7.054-1.13 1.61-2.919 2.607-5.367 2.992l.281 2.313c2.72 0 4.891-.453 6.516-1.36 2.844-1.583 4.266-5.192 4.266-10.827v-1.891h4.328v1.562c0 5.615-1.581 9.875-4.742 12.782-3.162 2.906-7.795 4.359-13.899 4.359zm-23.562 0v-10.031h4.046V591h-4.046zm13.593 0v-9.063c0-2.416-.205-3.856-.617-4.32-.411-.463-1.685-.695-3.82-.695h-12.047l1.547-4.625h11.172c3.135 0 5.229.458 6.281 1.375a3.733 3.733 0 011.234 1.984c.198.792.297 2.177.297 4.157V591h-4.047zm-21.78 0h-1.923v-5.016h5.016v3.891c0 4.094-1.672 6.14-5.016 6.14v-1.734c1.282 0 1.922-.927 1.922-2.781v-.5zm-31.204 0l1.531-4.625h8.735c.864-1.99 1.296-3.682 1.296-5.078 0-1.646-.38-2.787-1.14-3.422-.76-.635-2.13-.953-4.11-.953h-5.406l1.531-4.625h5.094c1.782 0 3.151.156 4.11.469.958.312 1.77.87 2.437 1.672 1.063 1.27 1.594 3.062 1.594 5.375 0 1.843-.49 4.03-1.469 6.562L329.813 591h-12.688zm-3.953-6.266h-4.063c.73-2.666 1.094-4.573 1.094-5.718 0-.823-.36-1.474-1.078-1.953-.719-.48-1.964-.896-3.734-1.25l2.093-3.891c2.552.51 4.331 1.21 5.336 2.101 1.006.891 1.508 2.206 1.508 3.946 0 1.094-.25 2.76-.75 5l-.406 1.765zM298.078 591v-9.594c0-1.927-.32-3.252-.96-3.976-.641-.724-1.998-1.295-4.071-1.711l2-3.797c2.448.448 4.208 1.15 5.281 2.11.708.635 1.185 1.385 1.43 2.25.245.864.367 2.25.367 4.155V591h-4.047zm-25.14 0v-14.078h-2.485l1.547-4.625h10.484c3.136 0 5.23.458 6.282 1.375a3.734 3.734 0 011.234 1.992c.198.797.297 2.18.297 4.149v6.562L288.75 591h-15.813zm4.062-4.625h9.25v-4.438c0-2.427-.203-3.87-.61-4.328-.406-.458-1.682-.687-3.827-.687H277v9.453zM265.203 591h-1.922v-5.016h5.016v3.891c0 4.094-1.672 6.14-5.016 6.14v-1.734c1.282 0 1.922-.927 1.922-2.781v-.5zm-20.484 0v-9.063c0-2.416-.203-3.856-.61-4.32-.406-.463-1.682-.695-3.828-.695h-5.89l1.53-4.625h5.048c3.135 0 5.229.458 6.281 1.375a3.773 3.773 0 011.219 1.992c.198.797.297 2.18.297 4.149V591h-4.047zm-17.547 0v-9.594c0-1.927-.32-3.252-.961-3.976-.64-.724-1.997-1.295-4.07-1.711l2-3.797c2.448.448 4.208 1.15 5.28 2.11.71.635 1.186 1.385 1.43 2.25.245.864.368 2.25.368 4.155V591h-4.047zm-23.719 0l1.547-4.625h9.64v-4.438c0-2.416-.202-3.856-.609-4.32-.406-.463-1.682-.695-3.828-.695h-5.828l1.547-4.625h4.953c3.135 0 5.23.458 6.281 1.375a3.734 3.734 0 011.235 1.992c.198.797.297 2.18.297 4.149v6.562h2.5L219.655 591h-16.203zm-30.594 0v-.516c0-2.677.282-4.971.844-6.882.563-1.912 1.51-3.8 2.844-5.664l-.703-.672c-1.136-1.063-2.162-1.948-3.078-2.657l3.687-2.687c2.448 1.937 5.037 4.51 7.766 7.719.625-1.084 1.039-2.032 1.242-2.844.203-.813.305-1.927.305-3.344v-1.156h4.328v.906c0 3.521-1.183 6.568-3.547 9.14a41.618 41.618 0 014.422 6.47l-3.485 2.578c-2.062-3.709-4.864-7.355-8.406-10.938-1.26 1.958-1.89 4.948-1.89 8.969V591h-4.329zm-24.265 0l1.547-4.625h4.03c-.822-2.115-1.233-4.708-1.233-7.781v-1.672h-2.329l1.547-4.625h8.578c3.136 0 5.23.458 6.282 1.375a3.733 3.733 0 011.234 1.984c.198.792.297 2.177.297 4.157V591H164.5v-9.063c0-2.416-.203-3.856-.61-4.32-.406-.463-1.682-.695-3.827-.695H157v1.375c0 3.354.48 6.047 1.438 8.078L156.905 591h-8.312zm-7.094 0v-9.063c0-2.416-.203-3.856-.61-4.32-.406-.463-1.682-.695-3.827-.695h-5.891l1.531-4.625h5.047c3.135 0 5.23.458 6.281 1.375a3.773 3.773 0 011.219 1.992c.198.797.297 2.18.297 4.149V591H141.5zm-14.047-6.266h-4.062c.729-2.666 1.093-4.573 1.093-5.718 0-.823-.359-1.474-1.078-1.953-.719-.48-1.963-.896-3.734-1.25l2.094-3.891c2.552.51 4.33 1.21 5.336 2.101 1.005.891 1.507 2.206 1.507 3.946 0 1.094-.25 2.76-.75 5l-.406 1.765zM406.016 629v-10.031h4.046V629h-4.046zm13.593 0v-9.063c0-2.416-.205-3.856-.617-4.32-.411-.463-1.685-.695-3.82-.695h-12.047l1.547-4.625h11.172c3.135 0 5.229.458 6.281 1.375a3.733 3.733 0 011.234 1.984c.198.792.297 2.177.297 4.157V629h-4.047zm-36.421 0v-.516c0-2.677.28-4.971.843-6.882.563-1.912 1.51-3.8 2.844-5.664l-.703-.672c-1.136-1.063-2.162-1.948-3.078-2.657l3.687-2.687c2.448 1.937 5.037 4.51 7.766 7.719.625-1.084 1.039-2.032 1.242-2.844.203-.813.305-1.927.305-3.344v-1.156h4.328v.906c0 3.521-1.182 6.568-3.547 9.14a41.618 41.618 0 014.422 6.47l-3.485 2.578c-2.062-3.709-4.864-7.355-8.406-10.938-1.26 1.958-1.89 4.948-1.89 8.969V629h-4.329zm-4.938-6.266h-4.063c.73-2.666 1.094-4.573 1.094-5.718 0-.823-.36-1.474-1.078-1.953-.719-.48-1.963-.896-3.734-1.25l2.094-3.891c2.552.51 4.33 1.21 5.335 2.101 1.006.891 1.508 2.206 1.508 3.946 0 1.094-.25 2.76-.75 5l-.406 1.765zM356.078 629l1.563-4.625h5.515v-6.078c0-1.646-.354-2.724-1.062-3.235-.948-.677-2.224-1.244-3.828-1.703l1.843-3.437c1.73.427 3.297 1.047 4.704 1.86.906.53 1.53 1.182 1.875 1.952.343.771.515 1.922.515 3.453v7.188L365.656 629h-9.578zm-17.906 0l-2.235-17.688 3.922-1.39 1.797 14.453c2.667 0 4.795-.615 6.383-1.844 1.589-1.229 2.383-2.87 2.383-4.922 0-2.24-1.208-3.359-3.625-3.359-.646 0-1.339.104-2.078.313l1.406-4.36a9.102 9.102 0 012.234-.297c1.917 0 3.414.576 4.493 1.727 1.078 1.15 1.617 2.747 1.617 4.789 0 2.292-.698 4.437-2.094 6.437s-3.292 3.568-5.688 4.703c-2.01.959-4.848 1.438-8.515 1.438zm-9.938 0v-9.063c0-2.416-.203-3.856-.609-4.32-.406-.463-1.682-.695-3.828-.695h-5.89l1.53-4.625h5.047c3.136 0 5.23.458 6.282 1.375a3.773 3.773 0 011.218 1.992c.198.797.297 2.18.297 4.149V629h-4.047zm-24.625 0l1.563-4.625h5.515v-6.078c0-1.646-.354-2.724-1.062-3.235-.948-.677-2.224-1.244-3.828-1.703l1.844-3.437c1.729.427 3.296 1.047 4.703 1.86.906.53 1.531 1.182 1.875 1.952.344.771.515 1.922.515 3.453v7.188L313.188 629h-9.579zm-17.906 0l-2.234-17.688 3.922-1.39 1.796 14.453c2.667 0 4.795-.615 6.383-1.844 1.589-1.229 2.383-2.87 2.383-4.922 0-2.24-1.208-3.359-3.625-3.359-.646 0-1.338.104-2.078.313l1.406-4.36a9.102 9.102 0 012.235-.297c1.916 0 3.414.576 4.492 1.727 1.078 1.15 1.617 2.747 1.617 4.789 0 2.292-.698 4.437-2.094 6.437s-3.291 3.568-5.687 4.703c-2.01.959-4.85 1.438-8.516 1.438zm-34.078 0v-10.031h4.047V629h-4.047zm13.594 0v-9.063c0-2.416-.206-3.856-.617-4.32-.412-.463-1.685-.695-3.82-.695h-12.048l1.547-4.625h11.172c3.136 0 5.23.458 6.281 1.375a3.733 3.733 0 011.235 1.984c.198.792.297 2.177.297 4.157V629h-4.047zm-37.594 0l2.266-8.688c.416-1.593.625-2.692.625-3.296 0-1.24-1.058-2.907-3.172-5l3.61-2.094c1.145.958 2.124 2.265 2.937 3.922 1.666-2.615 3.666-3.922 6-3.922 1.76 0 3.166.67 4.218 2.008s1.677 3.257 1.875 5.758l.532 6.687-1.532 4.625h-9.03l1.546-4.625h4.922l-.36-4.797c-.25-3.354-1.348-5.031-3.296-5.031-1.125 0-2.07.56-2.836 1.68-.766 1.12-1.498 3.007-2.196 5.664L231.86 629h-4.234zm-7.453 0v-9.594c0-1.927-.32-3.252-.961-3.976-.64-.724-1.997-1.295-4.07-1.711l2-3.797c2.448.448 4.208 1.15 5.28 2.11.71.635 1.186 1.385 1.43 2.25.245.864.368 2.25.368 4.155V629h-4.047zm-13.531 0v-14.078h-9.532l1.547-4.625h16.094l-1.547 4.625h-2.516V629h-4.046zm-16.282 0v-9.063c0-2.416-.203-3.856-.609-4.32-.406-.463-1.682-.695-3.828-.695h-5.89l1.53-4.625h5.047c3.136 0 5.23.458 6.282 1.375a3.773 3.773 0 011.218 1.992c.198.797.297 2.18.297 4.149V629h-4.047zm-24.625 0l1.563-4.625h5.516v-6.078c0-1.646-.355-2.724-1.063-3.235-.948-.677-2.224-1.244-3.828-1.703l1.844-3.437c1.729.427 3.296 1.047 4.703 1.86.906.53 1.531 1.182 1.875 1.952.344.771.515 1.922.515 3.453v7.188L175.312 629h-9.578zm-3.625-6.266h-4.062c.729-2.666 1.094-4.573 1.094-5.718 0-.823-.36-1.474-1.078-1.953-.72-.48-1.964-.896-3.735-1.25l2.094-3.891c2.552.51 4.33 1.21 5.336 2.101 1.005.891 1.508 2.206 1.508 3.946 0 1.094-.25 2.76-.75 5l-.407 1.765zm-11.593 0h-4.063c.73-2.666 1.094-4.573 1.094-5.718 0-.823-.36-1.474-1.078-1.953-.719-.48-1.964-.896-3.735-1.25l2.094-3.891c2.552.51 4.33 1.21 5.336 2.101 1.005.891 1.508 2.206 1.508 3.946 0 1.094-.25 2.76-.75 5l-.406 1.765zM122.203 629v-14.078h-2.484l1.547-4.625h10.484c3.135 0 5.23.458 6.281 1.375a3.734 3.734 0 011.235 1.992c.198.797.297 2.18.297 4.149v6.562L138.016 629h-15.813zm4.063-4.625h9.25v-4.438c0-2.427-.203-3.87-.61-4.328-.406-.458-1.682-.687-3.828-.687h-4.812v9.453zM401.844 667l2.265-8.688c.417-1.593.625-2.692.625-3.296 0-1.24-1.057-2.907-3.171-5l3.609-2.094c1.146.958 2.125 2.265 2.937 3.922 1.667-2.615 3.667-3.922 6-3.922 1.76 0 3.167.67 4.22 2.008 1.051 1.338 1.676 3.257 1.874 5.758l.531 6.687-1.53 4.625h-9.032l1.547-4.625h4.922l-.36-4.797c-.25-3.354-1.349-5.031-3.297-5.031-1.125 0-2.07.56-2.836 1.68-.765 1.12-1.497 3.007-2.195 5.664L406.078 667h-4.234zm-20.422 0l-2.203-17.5 3.922-1.578 1.171 9.25c1.136-.281 1.933-.945 2.391-1.992.458-1.047.688-2.716.688-5.008v-1.875h4.343v1.719c0 3.093-.565 5.445-1.695 7.054-1.13 1.61-2.92 2.607-5.367 2.992l.281 2.313c2.719 0 4.89-.453 6.516-1.36 2.844-1.583 4.265-5.192 4.265-10.827v-1.891h4.329v1.562c0 5.615-1.581 9.875-4.743 12.782-3.161 2.906-7.794 4.359-13.898 4.359zm-18.969.39l1.594-4.718c2.042-.23 3.687-.839 4.937-1.828 1.948-1.542 2.922-3.406 2.922-5.594 0-.906-.32-1.52-.96-1.844-.641-.323-1.873-.484-3.696-.484h-5.563v-9.625l4.047-1.36v6.36h4.063c2.5 0 4.242.36 5.226 1.078.985.719 1.477 1.984 1.477 3.797 0 3.437-1.318 6.49-3.953 9.156-2.636 2.667-6 4.354-10.094 5.063zm-20.687-.39l1.546-4.625h9.641v-4.438c0-2.416-.203-3.856-.61-4.32-.406-.463-1.682-.695-3.827-.695h-5.829l1.547-4.625h4.954c3.135 0 5.229.458 6.28 1.375a3.734 3.734 0 011.235 1.992c.198.797.297 2.18.297 4.149v6.562h2.5L357.969 667h-16.203zm-4.016-6.266h-4.063c.73-2.666 1.094-4.573 1.094-5.718 0-.823-.36-1.474-1.078-1.953-.719-.48-1.963-.896-3.734-1.25l2.094-3.891c2.552.51 4.33 1.21 5.335 2.101 1.006.891 1.508 2.206 1.508 3.946 0 1.094-.25 2.76-.75 5l-.406 1.765zM309.437 667v-14.078h-2.484l1.547-4.625h10.484c3.136 0 5.23.458 6.282 1.375a3.734 3.734 0 011.234 1.992c.198.797.297 2.18.297 4.149v6.562L325.25 667h-15.813zm4.063-4.625h9.25v-4.438c0-2.427-.203-3.87-.61-4.328-.406-.458-1.682-.687-3.827-.687H313.5v9.453zM276.078 667l-2.203-17.5 3.922-1.578 1.172 9.25c1.135-.281 1.932-.945 2.39-1.992.459-1.047.688-2.716.688-5.008v-1.875h4.344v1.719c0 3.093-.565 5.445-1.696 7.054-1.13 1.61-2.919 2.607-5.367 2.992l.281 2.313c2.72 0 4.891-.453 6.516-1.36 2.844-1.583 4.266-5.192 4.266-10.827v-1.891h4.328v1.562c0 5.615-1.581 9.875-4.742 12.782-3.162 2.906-7.795 4.359-13.899 4.359zm-21.937 0l1.39-4.234H266v-4.157c0-1.948-.193-3.205-.578-3.773-.386-.568-1.386-1.065-3-1.492l-2.985-.782-.234.672c-.135.396-.203.74-.203 1.032 0 1.01.87 1.583 2.61 1.718l-1.079 3.25c-3.5-.323-5.25-1.671-5.25-4.047 0-.916.375-2.437 1.125-4.562l.969-2.703 7.125 1.734c2.313.563 3.815 1.284 4.508 2.164.693.88 1.039 2.503 1.039 4.867v6.079L268.64 667h-14.5zm-20.657 0v-10.031h4.047V667h-4.047zm13.594 0v-9.063c0-2.416-.206-3.856-.617-4.32-.412-.463-1.685-.695-3.82-.695h-12.047l1.547-4.625h11.172c3.135 0 5.229.458 6.28 1.375a3.733 3.733 0 011.235 1.984c.198.792.297 2.177.297 4.157V667h-4.047zm-38.234 0v-7.016c0-2.354.682-4.343 2.047-5.968L206 651.938l1.719-4.016 11.094 4.719-1.672 4.062-3.125-1.36c-.75.938-1.125 2.256-1.125 3.954V667h-4.047zm-9.735 0v-9.594c0-1.927-.32-3.252-.96-3.976-.641-.724-1.998-1.295-4.07-1.711l2-3.797c2.447.448 4.207 1.15 5.28 2.11.709.635 1.185 1.385 1.43 2.25.245.864.367 2.25.367 4.155V667h-4.047zm-11.734 0v-5.016h5.016V667h-5.016zm-32.156 0v-10.031h4.047V667h-4.047zm13.594 0v-9.063c0-2.416-.206-3.856-.618-4.32-.411-.463-1.685-.695-3.82-.695h-12.047l1.547-4.625h11.172c3.135 0 5.229.458 6.281 1.375a3.733 3.733 0 011.234 1.984c.198.792.297 2.177.297 4.157V667h-4.047zm-20.391-6.266h-4.063c.73-2.666 1.094-4.573 1.094-5.718 0-.823-.36-1.474-1.078-1.953-.719-.48-1.964-.896-3.734-1.25l2.093-3.891c2.552.51 4.331 1.21 5.336 2.101 1.006.891 1.508 2.206 1.508 3.946 0 1.094-.25 2.76-.75 5l-.406 1.765zM120.797 667v-.516c0-2.677.281-4.971.844-6.882.562-1.912 1.51-3.8 2.843-5.664l-.703-.672c-1.135-1.063-2.161-1.948-3.078-2.657l3.688-2.687c2.448 1.937 5.036 4.51 7.765 7.719.625-1.084 1.04-2.032 1.242-2.844.204-.813.305-1.927.305-3.344v-1.156h4.328v.906c0 3.521-1.182 6.568-3.547 9.14a41.618 41.618 0 014.422 6.47l-3.484 2.578c-2.063-3.709-4.865-7.355-8.406-10.938-1.26 1.958-1.891 4.948-1.891 8.969V667h-4.328zm275.937 31.734h-4.062c.729-2.666 1.094-4.573 1.094-5.718 0-.823-.36-1.474-1.079-1.953-.718-.48-1.963-.896-3.734-1.25l2.094-3.891c2.552.51 4.33 1.21 5.336 2.101 1.005.891 1.508 2.206 1.508 3.946 0 1.094-.25 2.76-.75 5l-.407 1.765zM380.031 705v-14.078H370.5l1.547-4.625h16.094l-1.547 4.625h-2.516V705h-4.047zm-16.36 0v-9.594c0-1.927-.32-3.252-.96-3.976-.64-.724-1.997-1.295-4.07-1.711l2-3.797c2.448.448 4.208 1.15 5.28 2.11.71.635 1.186 1.385 1.43 2.25.245.864.368 2.25.368 4.155V705h-4.047zm-26.093 2.781l1.563-4.672c1.666 0 3.458-.28 5.375-.843l-3.36-14.985 3.875-1.36 3.266 14.563c1.635-1.24 2.773-2.78 3.414-4.625.64-1.843.96-4.484.96-7.922v-1.64h4.345v1.156c0 3.99-.612 7.318-1.836 9.985-1.224 2.666-3.154 4.88-5.79 6.64-3.697 2.469-7.635 3.703-11.812 3.703zM318.188 705v-10.031h4.046V705h-4.046zm13.593 0v-9.063c0-2.416-.205-3.856-.617-4.32-.411-.463-1.685-.695-3.82-.695h-12.047l1.547-4.625h11.172c3.135 0 5.229.458 6.28 1.375a3.733 3.733 0 011.235 1.984c.198.792.297 2.177.297 4.157V705h-4.047zm-46.234 0l1.547-4.625h9.64v-4.438c0-2.416-.203-3.856-.609-4.32-.406-.463-1.682-.695-3.828-.695h-5.828l1.547-4.625h4.953c3.135 0 5.229.458 6.281 1.375a3.734 3.734 0 011.234 1.992c.198.797.297 2.18.297 4.149v6.562h2.5L301.75 705h-16.203zm-21.688 2.781l1.563-4.672c1.667 0 3.458-.28 5.375-.843l-3.36-14.985 3.875-1.36 3.266 14.563c1.636-1.24 2.774-2.78 3.414-4.625.64-1.843.961-4.484.961-7.922v-1.64h4.344v1.156c0 3.99-.612 7.318-1.836 9.985-1.224 2.666-3.154 4.88-5.79 6.64-3.697 2.469-7.635 3.703-11.812 3.703zm-2.375-9.047h-4.062c.729-2.666 1.094-4.573 1.094-5.718 0-.823-.36-1.474-1.079-1.953-.718-.48-1.963-.896-3.734-1.25l2.094-3.891c2.552.51 4.33 1.21 5.336 2.101 1.005.891 1.508 2.206 1.508 3.946 0 1.094-.25 2.76-.75 5l-.407 1.765zm-27.328 10.891v-14.61h4.047v14.61h-4.047zm-2.515-18.703l1.547-4.625h10.843c1.99 0 3.39.088 4.203.265.813.178 1.495.542 2.047 1.094.802.813 1.203 1.98 1.203 3.5 0 3.052-1.12 5.901-3.359 8.547-2.24 2.646-5.13 4.537-8.672 5.672l1.672-4.969c1.656-.469 3.036-1.383 4.14-2.742 1.105-1.36 1.657-2.82 1.657-4.383 0-.937-.328-1.565-.984-1.883-.657-.317-1.959-.476-3.907-.476h-10.39zM224.406 705v-9.063c0-2.416-.203-3.856-.61-4.32-.405-.463-1.681-.695-3.827-.695h-5.89l1.53-4.625h5.047c3.136 0 5.23.458 6.281 1.375a3.773 3.773 0 011.22 1.992c.197.797.296 2.18.296 4.149V705h-4.047zm-38.734 0l1.531-4.625h8.734c.865-1.99 1.297-3.682 1.297-5.078 0-1.646-.38-2.787-1.14-3.422-.76-.635-2.13-.953-4.11-.953h-5.406l1.531-4.625h5.094c1.781 0 3.151.156 4.11.469.958.312 1.77.87 2.437 1.672 1.063 1.27 1.594 3.062 1.594 5.375 0 1.843-.49 4.03-1.469 6.562L198.359 705h-12.687zm-20.422 0l-2.203-17.5 3.922-1.578 1.172 9.25c1.135-.281 1.932-.945 2.39-1.992.459-1.047.688-2.716.688-5.008v-1.875h4.344v1.719c0 3.093-.566 5.445-1.696 7.054-1.13 1.61-2.92 2.607-5.367 2.992l.281 2.313c2.719 0 4.89-.453 6.516-1.36 2.844-1.583 4.266-5.192 4.266-10.827v-1.891h4.328v1.562c0 5.615-1.581 9.875-4.743 12.782-3.161 2.906-7.794 4.359-13.898 4.359zm-21.938 0l1.391-4.234h10.469v-4.157c0-1.948-.193-3.205-.578-3.773-.386-.568-1.386-1.065-3-1.492l-2.985-.782-.234.672c-.135.396-.203.74-.203 1.032 0 1.01.87 1.583 2.61 1.718l-1.079 3.25c-3.5-.323-5.25-1.671-5.25-4.047 0-.916.375-2.437 1.125-4.562l.969-2.703 7.125 1.734c2.312.563 3.815 1.284 4.508 2.164.692.88 1.039 2.503 1.039 4.867v6.079L157.813 705h-14.5zm-20.656 0v-10.031h4.047V705h-4.047zm13.594 0v-9.063c0-2.416-.206-3.856-.617-4.32-.412-.463-1.685-.695-3.82-.695h-12.047l1.546-4.625h11.172c3.136 0 5.23.458 6.282 1.375a3.733 3.733 0 011.234 1.984c.198.792.297 2.177.297 4.157V705h-4.047zm169.5 38v-10.031h4.047V743h-4.047zm13.594 0v-9.063c0-2.416-.206-3.856-.617-4.32-.412-.463-1.685-.695-3.82-.695h-12.048l1.547-4.625h11.172c3.136 0 5.23.458 6.281 1.375a3.733 3.733 0 011.235 1.984c.198.792.297 2.177.297 4.157V743h-4.047zm-37.594 0l2.266-8.688c.416-1.593.625-2.692.625-3.296 0-1.24-1.058-2.907-3.172-5l3.61-2.094c1.145.958 2.124 2.265 2.937 3.922 1.666-2.615 3.666-3.922 6-3.922 1.76 0 3.166.67 4.218 2.008s1.677 3.257 1.875 5.758l.532 6.687-1.532 4.625h-9.03l1.546-4.625h4.922l-.36-4.797c-.25-3.354-1.348-5.031-3.296-5.031-1.125 0-2.07.56-2.836 1.68-.766 1.12-1.498 3.007-2.196 5.664L285.984 743h-4.234zm-7.453 0v-9.594c0-1.927-.32-3.252-.961-3.976-.64-.724-1.997-1.295-4.07-1.711l2-3.797c2.448.448 4.208 1.15 5.28 2.11.71.635 1.186 1.385 1.43 2.25.245.864.368 2.25.368 4.155V743h-4.047zm-22.703 0l-2.235-17.688 3.922-1.39 1.797 14.453c2.667 0 4.794-.615 6.383-1.844 1.588-1.229 2.383-2.87 2.383-4.922 0-2.24-1.209-3.359-3.625-3.359-.646 0-1.339.104-2.078.313l1.406-4.36a9.102 9.102 0 012.234-.297c1.917 0 3.414.576 4.492 1.727 1.079 1.15 1.618 2.747 1.618 4.789 0 2.292-.698 4.437-2.094 6.437s-3.292 3.568-5.688 4.703c-2.01.959-4.849 1.438-8.515 1.438zm-21.813 0l1.547-4.625h9.64v-4.438c0-2.416-.202-3.856-.609-4.32-.406-.463-1.682-.695-3.828-.695h-5.828l1.547-4.625h4.953c3.136 0 5.23.458 6.281 1.375a3.734 3.734 0 011.235 1.992c.198.797.297 2.18.297 4.149v6.562h2.5L245.984 743h-16.203zm-21.687 2.781l1.562-4.672c1.667 0 3.459-.28 5.375-.843l-3.36-14.985 3.876-1.36 3.266 14.563c1.635-1.24 2.773-2.78 3.414-4.625.64-1.843.96-4.484.96-7.922v-1.64h4.344v1.156c0 3.99-.612 7.318-1.836 9.985-1.224 2.666-3.153 4.88-5.789 6.64-3.698 2.469-7.635 3.703-11.812 3.703zM186.39 743l1.547-4.625h4.03c-.822-2.115-1.234-4.708-1.234-7.781v-1.672h-2.328l1.547-4.625h8.578c3.136 0 5.23.458 6.281 1.375a3.733 3.733 0 011.235 1.984c.198.792.297 2.177.297 4.157V743h-4.047v-9.063c0-2.416-.203-3.856-.61-4.32-.406-.463-1.682-.695-3.828-.695h-3.062v1.375c0 3.354.479 6.047 1.437 8.078l-1.53 4.625h-8.313zm-29.516 0l1.547-4.625h9.64v-4.438c0-2.416-.203-3.856-.609-4.32-.406-.463-1.682-.695-3.828-.695h-5.828l1.547-4.625h4.953c3.135 0 5.229.458 6.281 1.375a3.734 3.734 0 011.234 1.992c.198.797.297 2.18.297 4.149v6.562h2.5L173.08 743h-16.204zm-9.125 0v-14.078h-9.531l1.547-4.625h16.093l-1.547 4.625h-2.515V743h-4.047zm-28.25 0l1.39-4.234h10.47v-4.157c0-1.948-.193-3.205-.579-3.773-.385-.568-1.385-1.065-3-1.492l-2.984-.782-.234.672c-.136.396-.204.74-.204 1.032 0 1.01.87 1.583 2.61 1.718l-1.078 3.25c-3.5-.323-5.25-1.671-5.25-4.047 0-.916.375-2.437 1.125-4.562l.968-2.703 7.125 1.734c2.313.563 3.815 1.284 4.508 2.164.693.88 1.04 2.503 1.04 4.867v6.079L134 743h-14.5z"/><path id="Rectangle-1" stroke="#C06334" stroke-width="2" d="M117 106h282v198H117z"/><g id="Rectangle-209-+-Rectangle-208" fill="#DBAF88" transform="translate(15 14)"><path id="Rectangle-209" d="M0 1h50v300H0z"/><path id="Rectangle-208" d="M165.5-129.5h50v311h-50z" transform="rotate(-90 190.5 26)"/></g><path id="Rectangle-5" fill="url(#linearGradient-1)" d="M45-7h275v447H45z" transform="rotate(-180 182.5 216.5)"/><path id="Rectangle-6" fill="#FFF" d="M319 8h162v399H319z"/><g id="Group-2" transform="translate(65 65)"><rect id="Rectangle-19" width="20" height="239" x=".5" y=".5" fill="#D1CFCD" stroke="#D1CFCD" rx="3"/><g id="Rectangle-18-+-Triangle-1"><rect id="Rectangle-18" width="20" height="19" x=".5" y=".5" fill="url(#linearGradient-2)" stroke="#D1CFCD" rx="3"/><path id="Triangle-1" fill="#7E7C7B" d="M10.5 7l4.2 6H6.3z"/></g><g id="Rectangle-18-+-Triangle-2" transform="matrix(1 0 0 -1 0 240)"><rect id="Rectangle-18" width="20" height="19" x=".5" y=".5" fill="url(#linearGradient-2)" stroke="#D1CFCD" rx="3"/><path id="Triangle-1" fill="#7E7C7B" d="M10.5 7l4.2 6H6.3z"/></g><g id="Rectangle-18-+-Triangle-3-+-Group" transform="translate(0 50)"><g id="Rectangle-18-+-Triangle-3" fill="url(#linearGradient-3)" stroke="#D1CFCD" transform="matrix(1 0 0 -1 0 51)"><rect id="Rectangle-18" width="20" height="50" x=".5" y=".5" rx="3"/></g><g id="Group" fill="#D1CFCD" stroke="#7E7C7B" transform="translate(5.25 20)"><path id="Rectangle-22" d="M.5.5H10v1H.5z"/><path id="Rectangle-23" d="M.5 3.5H10v1H.5z"/><path id="Rectangle-24" d="M.5 6.5H10v1H.5z"/><path id="Rectangle-25" d="M.5 9.5H10v1H.5z"/></g></g></g><path id="Line-7" fill="#C06334" fill-rule="nonzero" d="M65.41 15.68l7 14h-6.001v20h6.001l-7 14-7-14h5.999v-20H58.41l7-14z"/><path id="Line-28" fill="#C06334" fill-rule="nonzero" d="M72 57.68l14 7-14 7-.001-6h-42.59l.001 6-14-7 14-7-.001 6h42.59l.001-6z"/><text id="clientTop:25px-=-bor" font-family="PTMono-Regular, PT Mono" font-size="12" font-weight="normal"><tspan x="78.7" y="43" fill="#C06334">clientTop:</tspan> <tspan x="150.7" y="43" fill="#1C85B5">25px </tspan> <tspan x="186.7" y="43" fill="#C06334">= border</tspan></text><text id="clientLeft:41px" font-family="PTMono-Regular, PT Mono" font-size="12" font-weight="normal" transform="rotate(-90 40.32 125)"><tspan x="-13.68" y="129" fill="#C06334">clientLeft:</tspan> <tspan x="65.52" y="129" fill="#1C85B5">41px</tspan></text><g id="Rectangle-8-+-Rectangle-7" transform="translate(-42 -3)"><path id="Rectangle-8" fill="url(#linearGradient-1)" d="M86.5-85.5h275v447h-275z" transform="rotate(-90 224 138)"/><path id="Rectangle-7" fill="#FFF" d="M152 156h162v399H152z" transform="rotate(90 233 355.5)"/></g></g></g></svg> \ No newline at end of file +<<<<<<< HEAD +<svg xmlns="http://www.w3.org/2000/svg" width="359" height="316" viewBox="0 0 359 316"><defs><style>@import url(https://fonts.googleapis.com/css?family=Open+Sans:bold,italic,bolditalic%7CPT+Mono);@font-face{font-family:'PT Mono';font-weight:700;font-style:normal;src:local('PT MonoBold'),url(/font/PTMonoBold.woff2) format('woff2'),url(/font/PTMonoBold.woff) format('woff'),url(/font/PTMonoBold.ttf) format('truetype')}</style></defs><defs><linearGradient id="linearGradient-1" x1="0%" x2="62.299%" y1="47.096%" y2="47.096%"><stop offset="0%" stop-color="#FFF"/><stop offset="100%" stop-color="#FFF"/></linearGradient><linearGradient id="linearGradient-2" x1="50%" x2="50%" y1="0%" y2="100%"><stop offset="0%" stop-color="#FFF"/><stop offset="100%" stop-color="#D1CFCD"/></linearGradient><linearGradient id="linearGradient-3" x1="50%" x2="50%" y1="0%" y2="100%"><stop offset="0%" stop-color="#FFF"/><stop offset="100%" stop-color="#D1CFCD"/></linearGradient></defs><g id="dom" fill="none" fill-rule="evenodd" stroke="none" stroke-width="1"><g id="metric-client-left-top-rtl.svg"><path fill="#FFF" d="M0 0h359v316H0z"/><path id="היא-שפת-תסריט-מפורשת" fill="#643B0C" d="M336.484 135v-10.031h4.047V135h-4.047zm13.594 0v-9.063c0-2.416-.206-3.856-.617-4.32-.412-.463-1.685-.695-3.82-.695h-12.047l1.547-4.625h11.171c3.136 0 5.23.458 6.282 1.375a3.733 3.733 0 011.234 1.984c.198.792.297 2.177.297 4.156V135h-4.047zm-20.39-6.266h-4.063c.73-2.666 1.094-4.573 1.094-5.718 0-.823-.36-1.474-1.078-1.954-.72-.479-1.964-.895-3.735-1.25l2.094-3.89c2.552.51 4.33 1.21 5.336 2.101 1.005.891 1.508 2.206 1.508 3.946 0 1.094-.25 2.76-.75 5l-.406 1.765zM302.063 135v-.516c0-2.677.28-4.971.843-6.882.563-1.912 1.51-3.8 2.844-5.665l-.703-.671c-1.136-1.063-2.162-1.948-3.078-2.657l3.687-2.687c2.448 1.937 5.037 4.51 7.766 7.719.625-1.084 1.039-2.032 1.242-2.844.203-.813.305-1.927.305-3.344v-1.156h4.328v.906c0 3.521-1.182 6.568-3.547 9.14a41.618 41.618 0 014.422 6.47l-3.485 2.578c-2.062-3.709-4.864-7.355-8.406-10.938-1.26 1.958-1.89 4.948-1.89 8.969V135h-4.329zm-31.954 0l-2.203-17.5 3.922-1.578 1.172 9.25c1.135-.281 1.932-.945 2.39-1.992.459-1.047.688-2.716.688-5.008v-1.875h4.344v1.719c0 3.093-.565 5.445-1.695 7.054-1.13 1.61-2.92 2.607-5.368 2.993l.282 2.312c2.718 0 4.89-.453 6.515-1.36 2.844-1.583 4.266-5.192 4.266-10.827v-1.891h4.328v1.562c0 5.615-1.58 9.875-4.742 12.782-3.162 2.906-7.794 4.359-13.899 4.359zm-21.937 0l1.39-4.234h10.47v-4.157c0-1.948-.193-3.205-.579-3.773-.385-.568-1.385-1.065-3-1.492l-2.984-.781-.235.671c-.135.396-.203.74-.203 1.032 0 1.01.87 1.583 2.61 1.718l-1.078 3.25c-3.5-.323-5.25-1.671-5.25-4.046 0-.917.374-2.438 1.125-4.563l.968-2.703 7.125 1.734c2.313.563 3.815 1.284 4.508 2.164.693.88 1.04 2.503 1.04 4.868v6.078L262.671 135h-14.5zm-22.969 0l1.547-4.625h4.031c-.823-2.115-1.234-4.708-1.234-7.781v-1.672h-2.328l1.547-4.625h8.578c3.135 0 5.229.458 6.281 1.375a3.733 3.733 0 011.234 1.984c.198.792.297 2.177.297 4.156V135h-4.047v-9.063c0-2.416-.203-3.856-.609-4.32-.406-.463-1.682-.695-3.828-.695h-3.063v1.375c0 3.354.48 6.047 1.438 8.078L233.516 135h-8.313zm-33.547 0l1.547-4.625h4.031c-.823-2.115-1.234-4.708-1.234-7.781v-1.672h-2.328l1.547-4.625h8.578c3.135 0 5.229.458 6.281 1.375a3.733 3.733 0 011.234 1.984c.198.792.297 2.177.297 4.156V135h-4.047v-9.063c0-2.416-.203-3.856-.609-4.32-.406-.463-1.682-.695-3.828-.695h-3.063v1.375c0 3.354.48 6.047 1.438 8.078L199.969 135h-8.313zm-18.265 0l-1.766-14.078h-2.516l1.547-4.625h11.078c2.094 0 3.578.078 4.453.234.876.157 1.573.469 2.094.938.875.791 1.313 2.047 1.313 3.765 0 2.292-.662 4.506-1.985 6.641s-3.104 3.854-5.343 5.156c-2.26 1.313-5.22 1.969-8.875 1.969zm3.453-4.625c2.333-.177 4.088-.687 5.265-1.531 1.938-1.407 2.907-3.25 2.907-5.531 0-.938-.328-1.57-.985-1.899-.656-.328-1.948-.492-3.875-.492h-4.469l1.157 9.453zM162.297 135v-9.063c0-2.416-.203-3.856-.61-4.32-.406-.463-1.682-.695-3.828-.695h-5.89l1.531-4.625h5.047c3.135 0 5.229.458 6.281 1.375a3.773 3.773 0 011.219 1.992c.198.797.297 2.18.297 4.148V135h-4.047zm-14.047-6.266h-4.063c.73-2.666 1.094-4.573 1.094-5.718 0-.823-.36-1.474-1.078-1.954-.719-.479-1.963-.895-3.734-1.25l2.094-3.89c2.552.51 4.33 1.21 5.335 2.101 1.006.891 1.508 2.206 1.508 3.946 0 1.094-.25 2.76-.75 5l-.406 1.765zM122.375 135l-2.234-17.688 3.921-1.39 1.797 14.453c2.667 0 4.795-.615 6.383-1.844 1.589-1.229 2.383-2.87 2.383-4.922 0-2.24-1.208-3.359-3.625-3.359-.646 0-1.339.104-2.078.313l1.406-4.36a9.102 9.102 0 012.234-.297c1.917 0 3.415.576 4.493 1.727 1.078 1.15 1.617 2.747 1.617 4.789 0 2.292-.698 4.437-2.094 6.437s-3.292 3.568-5.687 4.703c-2.01.959-4.85 1.438-8.516 1.438zm222.344 38l2.265-8.688c.417-1.593.625-2.692.625-3.296 0-1.24-1.057-2.907-3.171-5l3.609-2.094c1.146.958 2.125 2.265 2.937 3.922 1.667-2.615 3.667-3.922 6-3.922 1.76 0 3.167.67 4.22 2.008 1.051 1.338 1.676 3.257 1.874 5.757l.531 6.688-1.53 4.625h-9.032l1.547-4.625h4.922l-.36-4.797c-.25-3.354-1.349-5.031-3.297-5.031-1.125 0-2.07.56-2.836 1.68-.765 1.12-1.497 3.007-2.195 5.664L348.953 173h-4.234zm-19.344 0l1.39-4.234h10.47v-4.157c0-1.948-.193-3.205-.579-3.773-.385-.568-1.385-1.065-3-1.492l-2.984-.781-.235.671c-.135.396-.203.74-.203 1.032 0 1.01.87 1.583 2.61 1.718l-1.078 3.25c-3.5-.323-5.25-1.671-5.25-4.047 0-.916.375-2.437 1.125-4.562l.968-2.703 7.125 1.734c2.313.563 3.815 1.284 4.508 2.164.693.88 1.04 2.503 1.04 4.868v6.078L339.874 173h-14.5zm-7.14 0v-9.594c0-1.927-.32-3.252-.962-3.976-.64-.724-1.997-1.295-4.07-1.711l2-3.797c2.448.448 4.208 1.15 5.281 2.11.709.635 1.185 1.385 1.43 2.25.245.864.367 2.25.367 4.155V173h-4.047zm-11.844 0v-9.063c0-2.416-.203-3.856-.61-4.32-.406-.463-1.682-.695-3.828-.695h-5.89l1.53-4.625h5.048c3.135 0 5.229.458 6.28 1.375a3.773 3.773 0 011.22 1.992c.198.797.296 2.18.296 4.149V173h-4.046zm-30.516 0l-2.203-17.5 3.922-1.578 1.172 9.25c1.135-.281 1.932-.945 2.39-1.992.459-1.047.688-2.716.688-5.008v-1.875h4.344v1.719c0 3.093-.566 5.445-1.696 7.054-1.13 1.61-2.92 2.607-5.367 2.993l.281 2.312c2.719 0 4.89-.453 6.516-1.36 2.844-1.583 4.265-5.192 4.265-10.827v-1.891h4.329v1.562c0 5.615-1.581 9.875-4.743 12.782-3.161 2.906-7.794 4.359-13.898 4.359zM250 173l1.547-4.625h4.031c-.823-2.115-1.234-4.708-1.234-7.781v-1.672h-2.328l1.547-4.625h8.578c3.135 0 5.229.458 6.28 1.375a3.733 3.733 0 011.235 1.984c.198.792.297 2.177.297 4.156V173h-4.047v-9.063c0-2.416-.203-3.856-.61-4.32-.405-.463-1.681-.695-3.827-.695h-3.063v1.375c0 3.354.48 6.047 1.438 8.078L258.313 173H250zm-31.422 0l2.266-8.688c.416-1.593.625-2.692.625-3.296 0-1.24-1.058-2.907-3.172-5l3.61-2.094c1.145.958 2.124 2.265 2.937 3.922 1.666-2.615 3.666-3.922 6-3.922 1.76 0 3.166.67 4.219 2.008 1.052 1.338 1.677 3.257 1.875 5.757l.53 6.688-1.53 4.625h-9.032l1.547-4.625h4.922l-.36-4.797c-.25-3.354-1.348-5.031-3.296-5.031-1.125 0-2.07.56-2.836 1.68-.766 1.12-1.498 3.007-2.196 5.664L222.813 173h-4.234zm-19.25 0l1.547-4.625h9.64v-4.438c0-2.416-.202-3.856-.609-4.32-.406-.463-1.682-.695-3.828-.695h-5.828l1.547-4.625h4.953c3.135 0 5.23.458 6.281 1.375a3.734 3.734 0 011.235 1.992c.198.797.297 2.18.297 4.149v6.562h2.5L215.53 173h-16.203zm-7.516 0v-9.594c0-1.927-.32-3.252-.96-3.976-.641-.724-1.998-1.295-4.07-1.711l2-3.797c2.447.448 4.208 1.15 5.28 2.11.709.635 1.185 1.385 1.43 2.25.245.864.367 2.25.367 4.155V173h-4.047zm-23.015 0l-1.766-14.078h-2.515l1.547-4.625h11.078c2.093 0 3.578.078 4.453.234.875.157 1.573.469 2.094.938.875.791 1.312 2.047 1.312 3.765 0 2.292-.661 4.506-1.984 6.641s-3.105 3.854-5.344 5.156c-2.26 1.313-5.219 1.969-8.875 1.969zm3.453-4.625c2.333-.177 4.089-.687 5.266-1.531 1.937-1.407 2.906-3.25 2.906-5.531 0-.938-.328-1.57-.984-1.899-.657-.328-1.948-.492-3.875-.492h-4.47l1.157 9.453zM146.531 173l-1.765-14.078h-2.516l1.547-4.625h11.078c2.094 0 3.578.078 4.453.234.875.157 1.573.469 2.094.938.875.791 1.312 2.047 1.312 3.765 0 2.292-.661 4.506-1.984 6.641s-3.104 3.854-5.344 5.156c-2.26 1.313-5.218 1.969-8.875 1.969zm3.453-4.625c2.334-.177 4.089-.687 5.266-1.531 1.938-1.407 2.906-3.25 2.906-5.531 0-.938-.328-1.57-.984-1.899-.656-.328-1.948-.492-3.875-.492h-4.469l1.156 9.453zM119.531 173l1.547-4.625h4.031c-.823-2.115-1.234-4.708-1.234-7.781v-1.672h-2.328l1.547-4.625h8.578c3.135 0 5.229.458 6.281 1.375a3.733 3.733 0 011.234 1.984c.198.792.297 2.177.297 4.156V173h-4.047v-9.063c0-2.416-.203-3.856-.609-4.32-.406-.463-1.682-.695-3.828-.695h-3.063v1.375c0 3.354.48 6.047 1.438 8.078L127.844 173h-8.313zm288.766 38v-.516c0-2.677.281-4.971.844-6.882.562-1.912 1.51-3.8 2.843-5.665l-.703-.671c-1.135-1.063-2.161-1.948-3.078-2.657l3.688-2.687c2.448 1.937 5.036 4.51 7.765 7.719.625-1.084 1.04-2.032 1.242-2.844.204-.813.305-1.927.305-3.344v-1.156h4.328v.906c0 3.521-1.182 6.568-3.547 9.14a41.618 41.618 0 014.422 6.47l-3.484 2.578c-2.063-3.709-4.865-7.355-8.406-10.938-1.26 1.958-1.891 4.948-1.891 8.969V211h-4.328zm-8.438 0v-9.594c0-1.927-.32-3.252-.96-3.976-.641-.724-1.998-1.295-4.07-1.711l2-3.797c2.447.448 4.207 1.15 5.28 2.11.709.635 1.185 1.385 1.43 2.25.245.864.367 2.25.367 4.155V211h-4.047zm-23.718 0l1.546-4.625h9.641v-4.438c0-2.416-.203-3.856-.61-4.32-.406-.463-1.682-.695-3.827-.695h-5.829l1.547-4.625h4.954c3.135 0 5.229.458 6.28 1.375a3.734 3.734 0 011.235 1.992c.198.797.297 2.18.297 4.149v6.562h2.5L392.344 211H376.14zm-4.016-6.266h-4.063c.73-2.666 1.094-4.573 1.094-5.718 0-.823-.36-1.474-1.078-1.953-.719-.48-1.963-.896-3.734-1.25l2.094-3.891c2.552.51 4.33 1.21 5.335 2.101 1.006.891 1.508 2.206 1.508 3.946 0 1.094-.25 2.76-.75 5l-.406 1.765zm-11.594 0h-4.062c.729-2.666 1.094-4.573 1.094-5.718 0-.823-.36-1.474-1.079-1.953-.718-.48-1.963-.896-3.734-1.25l2.094-3.891c2.552.51 4.33 1.21 5.336 2.101 1.005.891 1.507 2.206 1.507 3.946 0 1.094-.25 2.76-.75 5l-.406 1.765zm-27.328 10.891v-14.61h4.047v14.61h-4.047zm-2.515-18.703l1.546-4.625h10.844c1.99 0 3.39.088 4.203.266.813.177 1.495.541 2.047 1.093.802.813 1.203 1.98 1.203 3.5 0 3.052-1.12 5.901-3.36 8.547-2.239 2.646-5.13 4.537-8.671 5.672l1.672-4.969c1.656-.469 3.036-1.383 4.14-2.742 1.105-1.36 1.657-2.82 1.657-4.383 0-.937-.328-1.565-.985-1.883-.656-.317-1.958-.476-3.906-.476h-10.39zM312.594 211l-2.235-17.688 3.922-1.39 1.797 14.453c2.667 0 4.794-.615 6.383-1.844 1.588-1.229 2.383-2.87 2.383-4.922 0-2.24-1.209-3.359-3.625-3.359-.646 0-1.339.104-2.078.313l1.406-4.36a9.102 9.102 0 012.234-.297c1.917 0 3.414.576 4.492 1.727 1.079 1.15 1.618 2.747 1.618 4.789 0 2.292-.698 4.437-2.094 6.437s-3.292 3.568-5.688 4.703c-2.01.959-4.849 1.438-8.515 1.438zm-6.516-6.266h-4.062c.729-2.666 1.093-4.573 1.093-5.718 0-.823-.359-1.474-1.078-1.953-.719-.48-1.963-.896-3.734-1.25l2.094-3.891c2.552.51 4.33 1.21 5.336 2.101 1.005.891 1.507 2.206 1.507 3.946 0 1.094-.25 2.76-.75 5l-.406 1.765zM277.766 211v-14.078h-2.485l1.547-4.625h10.485c3.135 0 5.229.458 6.28 1.375a3.734 3.734 0 011.235 1.992c.198.797.297 2.18.297 4.149v6.562L293.578 211h-15.812zm4.062-4.625h9.25v-4.438c0-2.427-.203-3.87-.61-4.328-.406-.458-1.682-.687-3.827-.687h-4.813v9.453zM243.86 211v-10.031h4.047V211h-4.047zm13.594 0v-9.063c0-2.416-.206-3.856-.617-4.32-.412-.463-1.685-.695-3.82-.695h-12.047l1.547-4.625h11.172c3.135 0 5.229.458 6.28 1.375a3.733 3.733 0 011.235 1.984c.198.792.297 2.177.297 4.156V211h-4.047zm-37.594 0l2.266-8.688c.417-1.593.625-2.692.625-3.296 0-1.24-1.057-2.907-3.172-5l3.61-2.094c1.145.958 2.124 2.265 2.937 3.922 1.667-2.615 3.667-3.922 6-3.922 1.76 0 3.167.67 4.219 2.008 1.052 1.338 1.677 3.257 1.875 5.757l.531 6.688-1.531 4.625h-9.031l1.546-4.625h4.922l-.36-4.797c-.25-3.354-1.348-5.031-3.296-5.031-1.125 0-2.07.56-2.836 1.68-.766 1.12-1.497 3.007-2.195 5.664L224.094 211h-4.235zm-7.453 0v-9.594c0-1.927-.32-3.252-.96-3.976-.641-.724-1.998-1.295-4.071-1.711l2-3.797c2.448.448 4.208 1.15 5.281 2.11.709.635 1.185 1.385 1.43 2.25.245.864.367 2.25.367 4.155V211h-4.047zm-27.75 0l1.547-4.625h4.031c-.823-2.115-1.234-4.708-1.234-7.781v-1.672h-2.328l1.547-4.625h8.578c3.135 0 5.229.458 6.281 1.375a3.733 3.733 0 011.234 1.984c.198.792.297 2.177.297 4.156V211h-4.047v-9.063c0-2.416-.203-3.856-.609-4.32-.406-.463-1.682-.695-3.828-.695h-3.063v1.375c0 3.354.48 6.047 1.438 8.078L192.969 211h-8.313zm-19.703 0v-.516c0-2.677.281-4.971.844-6.882.562-1.912 1.51-3.8 2.844-5.665l-.703-.671c-1.136-1.063-2.162-1.948-3.079-2.657l3.688-2.687c2.448 1.937 5.036 4.51 7.766 7.719.625-1.084 1.039-2.032 1.242-2.844.203-.813.304-1.927.304-3.344v-1.156h4.328v.906c0 3.521-1.182 6.568-3.546 9.14a41.618 41.618 0 014.422 6.47l-3.485 2.578c-2.062-3.709-4.864-7.355-8.406-10.938-1.26 1.958-1.89 4.948-1.89 8.969V211h-4.329zm-22.14 0l2.265-8.688c.417-1.593.625-2.692.625-3.296 0-1.24-1.057-2.907-3.172-5l3.61-2.094c1.145.958 2.125 2.265 2.937 3.922 1.667-2.615 3.667-3.922 6-3.922 1.76 0 3.167.67 4.219 2.008 1.052 1.338 1.677 3.257 1.875 5.757l.531 6.688-1.531 4.625h-9.031l1.547-4.625h4.921l-.359-4.797c-.25-3.354-1.349-5.031-3.297-5.031-1.125 0-2.07.56-2.836 1.68-.765 1.12-1.497 3.007-2.195 5.664L147.047 211h-4.234zm-23.282 0l1.547-4.625h4.031c-.823-2.115-1.234-4.708-1.234-7.781v-1.672h-2.328l1.547-4.625h8.578c3.135 0 5.229.458 6.281 1.375a3.733 3.733 0 011.234 1.984c.198.792.297 2.177.297 4.156V211h-4.047v-9.063c0-2.416-.203-3.856-.609-4.32-.406-.463-1.682-.695-3.828-.695h-3.063v1.375c0 3.354.48 6.047 1.438 8.078L127.844 211h-8.313zm318.844 38.39l1.594-4.718c2.041-.23 3.687-.839 4.937-1.828 1.948-1.542 2.922-3.406 2.922-5.594 0-.906-.32-1.52-.96-1.844-.641-.323-1.873-.484-3.696-.484h-5.563v-9.625l4.047-1.36v6.36h4.063c2.5 0 4.242.36 5.226 1.078.985.719 1.477 1.984 1.477 3.797 0 3.437-1.318 6.49-3.953 9.156-2.636 2.667-6 4.354-10.094 5.063zm-21.86-.39l-2.202-17.5 3.921-1.578 1.172 9.25c1.136-.281 1.933-.945 2.39-1.992.46-1.047.688-2.716.688-5.008v-1.875h4.344v1.719c0 3.093-.565 5.445-1.695 7.054-1.13 1.61-2.92 2.607-5.367 2.993l.28 2.312c2.72 0 4.891-.453 6.517-1.36 2.843-1.583 4.265-5.192 4.265-10.827v-1.891h4.328v1.562c0 5.615-1.58 9.875-4.742 12.782-3.161 2.906-7.794 4.359-13.898 4.359zm-6.546-6.266h-4.063c.73-2.666 1.094-4.573 1.094-5.718 0-.823-.36-1.474-1.078-1.953-.719-.48-1.964-.896-3.735-1.25l2.094-3.891c2.552.51 4.331 1.21 5.336 2.101s1.508 2.206 1.508 3.946c0 1.094-.25 2.76-.75 5l-.406 1.765zm-24.016 6.657l1.594-4.72c2.042-.228 3.687-.838 4.937-1.827 1.948-1.542 2.922-3.406 2.922-5.594 0-.906-.32-1.52-.96-1.844-.641-.323-1.873-.484-3.696-.484h-5.563v-9.625l4.047-1.36v6.36h4.063c2.5 0 4.242.36 5.226 1.078.985.719 1.477 1.984 1.477 3.797 0 3.437-1.318 6.49-3.953 9.156-2.636 2.667-6 4.354-10.094 5.063zm-8.89-.391v-9.594c0-1.927-.32-3.252-.961-3.976-.641-.724-1.998-1.295-4.07-1.711l2-3.797c2.447.448 4.208 1.15 5.28 2.11.709.635 1.185 1.385 1.43 2.25.245.864.367 2.25.367 4.155V249h-4.046zm-23.72 0l1.548-4.625h9.64v-4.438c0-2.416-.203-3.856-.61-4.32-.405-.463-1.681-.695-3.827-.695h-5.828l1.546-4.625h4.954c3.135 0 5.229.458 6.28 1.375a3.734 3.734 0 011.235 1.992c.198.797.297 2.18.297 4.149v6.562h2.5L369.547 249h-16.203zm-29.859 0l1.547-4.625h9.64v-4.438c0-2.416-.202-3.856-.608-4.32-.407-.463-1.683-.695-3.829-.695h-5.828l1.547-4.625h4.953c3.136 0 5.23.458 6.281 1.375a3.734 3.734 0 011.235 1.992c.198.797.297 2.18.297 4.149v6.562h2.5L339.688 249h-16.204zm-20.046 0v-.516c0-2.677.28-4.971.843-6.882.563-1.912 1.51-3.8 2.844-5.665l-.703-.671c-1.136-1.063-2.162-1.948-3.078-2.657l3.687-2.687c2.448 1.937 5.037 4.51 7.766 7.719.625-1.084 1.039-2.032 1.242-2.844.203-.813.305-1.927.305-3.344v-1.156h4.328v.906c0 3.521-1.182 6.568-3.547 9.14a41.618 41.618 0 014.422 6.47l-3.485 2.578c-2.062-3.709-4.864-7.355-8.406-10.938-1.26 1.958-1.89 4.948-1.89 8.969V249h-4.329zm-24.266 0l1.547-4.625h4.031c-.823-2.115-1.234-4.708-1.234-7.781v-1.672h-2.329l1.547-4.625h8.579c3.135 0 5.229.458 6.28 1.375a3.733 3.733 0 011.235 1.984c.198.792.297 2.177.297 4.156V249h-4.047v-9.063c0-2.416-.203-3.856-.61-4.32-.406-.463-1.682-.695-3.827-.695h-3.063v1.375c0 3.354.48 6.047 1.438 8.078L287.484 249h-8.312zm-7.094 0v-9.063c0-2.416-.203-3.856-.61-4.32-.406-.463-1.682-.695-3.827-.695h-5.891l1.531-4.625h5.047c3.136 0 5.23.458 6.281 1.375a3.773 3.773 0 011.22 1.992c.197.797.296 2.18.296 4.149V249h-4.047zm-14.047-6.266h-4.062c.729-2.666 1.094-4.573 1.094-5.718 0-.823-.36-1.474-1.079-1.953-.718-.48-1.963-.896-3.734-1.25l2.094-3.891c2.552.51 4.33 1.21 5.336 2.101 1.005.891 1.507 2.206 1.507 3.946 0 1.094-.25 2.76-.75 5l-.406 1.765zM219.86 249v-.516c0-2.677.282-4.971.844-6.882.563-1.912 1.51-3.8 2.844-5.665l-.703-.671c-1.136-1.063-2.162-1.948-3.078-2.657l3.687-2.687c2.448 1.937 5.037 4.51 7.766 7.719.625-1.084 1.039-2.032 1.242-2.844.203-.813.305-1.927.305-3.344v-1.156h4.328v.906c0 3.521-1.183 6.568-3.547 9.14a41.618 41.618 0 014.422 6.47l-3.485 2.578c-2.062-3.709-4.864-7.355-8.406-10.938-1.26 1.958-1.89 4.948-1.89 8.969V249h-4.329zm-4.937-6.266h-4.063c.73-2.666 1.094-4.573 1.094-5.718 0-.823-.36-1.474-1.078-1.953-.719-.48-1.964-.896-3.734-1.25l2.093-3.891c2.552.51 4.331 1.21 5.336 2.101 1.006.891 1.508 2.206 1.508 3.946 0 1.094-.25 2.76-.75 5l-.406 1.765zM192.75 249l1.563-4.625h5.515v-6.078c0-1.646-.354-2.724-1.062-3.234-.948-.678-2.224-1.245-3.828-1.704l1.843-3.437c1.73.427 3.297 1.047 4.703 1.86.907.53 1.532 1.182 1.875 1.952.344.771.516 1.922.516 3.453v7.188L202.328 249h-9.578zm-17.906 0l-2.235-17.688 3.922-1.39 1.797 14.453c2.667 0 4.794-.615 6.383-1.844 1.588-1.229 2.383-2.87 2.383-4.922 0-2.24-1.209-3.359-3.625-3.359-.646 0-1.339.104-2.078.313l1.406-4.36a9.102 9.102 0 012.234-.297c1.917 0 3.414.576 4.492 1.727 1.079 1.15 1.618 2.747 1.618 4.789 0 2.292-.698 4.437-2.094 6.437s-3.292 3.568-5.688 4.703c-2.01.959-4.849 1.438-8.515 1.438zm-9.938 0v-9.063c0-2.416-.203-3.856-.61-4.32-.405-.463-1.681-.695-3.827-.695h-5.89l1.53-4.625h5.047c3.136 0 5.23.458 6.281 1.375a3.773 3.773 0 011.22 1.992c.197.797.296 2.18.296 4.149V249h-4.047zm-24.625 0l1.563-4.625h5.515v-6.078c0-1.646-.354-2.724-1.062-3.234-.948-.678-2.224-1.245-3.828-1.704l1.844-3.437c1.729.427 3.296 1.047 4.703 1.86.906.53 1.53 1.182 1.875 1.952.343.771.515 1.922.515 3.453v7.188L149.86 249h-9.578zm-17.906 0l-2.234-17.688 3.921-1.39 1.797 14.453c2.667 0 4.795-.615 6.383-1.844 1.589-1.229 2.383-2.87 2.383-4.922 0-2.24-1.208-3.359-3.625-3.359-.646 0-1.339.104-2.078.313l1.406-4.36a9.102 9.102 0 012.234-.297c1.917 0 3.415.576 4.493 1.727 1.078 1.15 1.617 2.747 1.617 4.789 0 2.292-.698 4.437-2.094 6.437s-3.292 3.568-5.687 4.703c-2.01.959-4.85 1.438-8.516 1.438zm258.422 38v-9.594c0-1.927-.32-3.252-.961-3.976-.64-.724-1.997-1.295-4.07-1.711l2-3.797c2.448.448 4.208 1.15 5.28 2.11.71.635 1.186 1.385 1.43 2.25.245.864.368 2.25.368 4.156V287h-4.047zm-11.844 0v-9.063c0-2.416-.203-3.856-.61-4.32-.406-.463-1.682-.695-3.827-.695h-5.891l1.531-4.625h5.047c3.136 0 5.23.458 6.281 1.375a3.773 3.773 0 011.22 1.992c.197.797.296 2.18.296 4.149V287h-4.047zm-29.25 0l1.36-4.14h8.468c-3.833-3.709-6.713-8.162-8.64-13.36l4.093-1.578a28.973 28.973 0 004.938 8.875c1.469-1.781 2.203-3.943 2.203-6.485v-2.015h4.344v1.312c0 3.97-1.36 7.214-4.078 9.735 1.573 1.614 2.974 2.791 4.203 3.531l-1.39 4.125h-15.5zm-20.594 0v-10.031h4.047V287h-4.047zm13.594 0v-9.063c0-2.416-.206-3.856-.617-4.32-.412-.463-1.685-.695-3.82-.695h-12.047l1.547-4.625h11.171c3.136 0 5.23.458 6.282 1.375a3.733 3.733 0 011.234 1.984c.198.792.297 2.177.297 4.156V287h-4.047zm-48.61 2.781l1.563-4.672c1.667 0 3.459-.28 5.375-.843l-3.36-14.985 3.876-1.36 3.265 14.563c1.636-1.24 2.774-2.78 3.415-4.625.64-1.843.96-4.484.96-7.921v-1.641h4.344v1.156c0 3.99-.612 7.318-1.836 9.985-1.224 2.666-3.153 4.88-5.789 6.64-3.698 2.469-7.635 3.703-11.812 3.703zm-14.796-2.39l1.594-4.72c2.041-.228 3.687-.838 4.937-1.827 1.948-1.542 2.922-3.406 2.922-5.594 0-.906-.32-1.52-.96-1.844-.642-.323-1.873-.484-3.696-.484h-5.563v-9.625l4.047-1.36v6.36h4.063c2.5 0 4.242.36 5.226 1.078.985.719 1.477 1.984 1.477 3.797 0 3.437-1.318 6.49-3.953 9.156-2.636 2.667-6 4.354-10.094 5.063zm-15.938-6.657h-4.062c.729-2.666 1.094-4.573 1.094-5.718 0-.823-.36-1.474-1.078-1.954-.72-.479-1.964-.895-3.735-1.25l2.094-3.89c2.552.51 4.33 1.21 5.336 2.101 1.005.891 1.508 2.206 1.508 3.946 0 1.094-.25 2.76-.75 5l-.407 1.765zM236.656 287v-14.078h-9.531l1.547-4.625h16.094l-1.547 4.625h-2.516V287h-4.047zm-12.86-6.266h-4.062c.73-2.666 1.094-4.573 1.094-5.718 0-.823-.36-1.474-1.078-1.954-.719-.479-1.964-.895-3.734-1.25l2.093-3.89c2.552.51 4.331 1.21 5.336 2.101 1.006.891 1.508 2.206 1.508 3.946 0 1.094-.25 2.76-.75 5l-.406 1.765zM196.547 287v-14.078h-9.53l1.547-4.625h16.093l-1.547 4.625h-2.515V287h-4.047zm-28.25 0l1.392-4.234h10.468v-4.157c0-1.948-.192-3.205-.578-3.773-.385-.568-1.385-1.065-3-1.492l-2.984-.781-.235.671c-.135.396-.203.74-.203 1.032 0 1.01.87 1.583 2.61 1.718l-1.078 3.25c-3.5-.323-5.25-1.671-5.25-4.046 0-.917.374-2.438 1.125-4.563l.968-2.703 7.125 1.734c2.313.563 3.815 1.284 4.508 2.164.693.88 1.04 2.503 1.04 4.868v6.078L182.796 287h-14.5zm-8.75 0v-14.078h-9.53l1.547-4.625h16.093l-1.547 4.625h-2.515V287h-4.047zm-28.25 0l1.392-4.234h10.468v-4.157c0-1.948-.192-3.205-.578-3.773-.385-.568-1.385-1.065-3-1.492l-2.984-.781-.235.671c-.135.396-.203.74-.203 1.032 0 1.01.87 1.583 2.61 1.718l-1.078 3.25c-3.5-.323-5.25-1.671-5.25-4.046 0-.917.374-2.438 1.125-4.563l.968-2.703 7.125 1.734c2.313.563 3.815 1.284 4.508 2.164.693.88 1.04 2.503 1.04 4.868v6.078L145.796 287h-14.5zm-7.155 4.625v-14.281c0-2.032-.36-3.344-1.079-3.938-1.041-.875-2.328-1.552-3.859-2.031l1.86-3.453c1.875.562 3.53 1.37 4.968 2.422.834.614 1.401 1.364 1.703 2.25.302.885.454 2.255.454 4.11v14.921h-4.047zM426.797 325v-10.031h4.047V325h-4.047zm13.594 0v-9.063c0-2.416-.206-3.856-.618-4.32-.411-.463-1.684-.695-3.82-.695h-12.047l1.547-4.625h11.172c3.135 0 5.23.458 6.281 1.375a3.733 3.733 0 011.235 1.984c.198.792.296 2.177.296 4.156V325h-4.046zm-36.422 0v-.516c0-2.677.281-4.971.844-6.882.562-1.912 1.51-3.8 2.843-5.664l-.703-.672c-1.135-1.063-2.161-1.948-3.078-2.657l3.688-2.687c2.447 1.937 5.036 4.51 7.765 7.719.625-1.084 1.04-2.032 1.242-2.844.203-.813.305-1.927.305-3.344v-1.156h4.328v.906c0 3.521-1.182 6.568-3.547 9.14a41.618 41.618 0 014.422 6.47l-3.484 2.578c-2.063-3.709-4.865-7.355-8.406-10.938-1.26 1.958-1.891 4.948-1.891 8.969V325h-4.328zm-4.938-6.266h-4.062c.729-2.666 1.094-4.573 1.094-5.718 0-.823-.36-1.474-1.079-1.954-.718-.479-1.963-.895-3.734-1.25l2.094-3.89c2.552.51 4.33 1.21 5.336 2.101 1.005.891 1.507 2.206 1.507 3.946 0 1.094-.25 2.76-.75 5l-.406 1.765zM376.86 325l1.563-4.625h5.515v-6.078c0-1.646-.354-2.724-1.062-3.235-.948-.677-2.224-1.244-3.828-1.703l1.844-3.437c1.729.427 3.296 1.047 4.703 1.86.906.53 1.531 1.182 1.875 1.952.344.771.515 1.922.515 3.454v7.187L386.438 325h-9.579zm-17.906 0l-2.234-17.688 3.922-1.39 1.796 14.453c2.667 0 4.795-.615 6.383-1.844 1.589-1.229 2.383-2.87 2.383-4.922 0-2.24-1.208-3.359-3.625-3.359-.646 0-1.338.104-2.078.313l1.406-4.36a9.102 9.102 0 012.235-.297c1.916 0 3.414.576 4.492 1.727 1.078 1.15 1.617 2.747 1.617 4.789 0 2.292-.698 4.437-2.094 6.437s-3.291 3.568-5.687 4.704c-2.01.958-4.85 1.437-8.516 1.437zm-9.937 0v-9.063c0-2.416-.203-3.856-.61-4.32-.406-.463-1.682-.695-3.828-.695h-5.89l1.53-4.625h5.048c3.135 0 5.229.458 6.28 1.375a3.773 3.773 0 011.22 1.992c.198.797.296 2.18.296 4.149V325h-4.046zm-24.625 0l1.562-4.625h5.516v-6.078c0-1.646-.354-2.724-1.063-3.235-.948-.677-2.224-1.244-3.828-1.703l1.844-3.437c1.729.427 3.297 1.047 4.703 1.86.906.53 1.531 1.182 1.875 1.952.344.771.516 1.922.516 3.454v7.187L333.969 325h-9.578zm-17.907 0l-2.234-17.688 3.922-1.39 1.797 14.453c2.666 0 4.794-.615 6.383-1.844 1.588-1.229 2.382-2.87 2.382-4.922 0-2.24-1.208-3.359-3.625-3.359-.645 0-1.338.104-2.078.313l1.406-4.36a9.102 9.102 0 012.235-.297c1.917 0 3.414.576 4.492 1.727 1.078 1.15 1.617 2.747 1.617 4.789 0 2.292-.698 4.437-2.094 6.437-1.395 2-3.291 3.568-5.687 4.704-2.01.958-4.849 1.437-8.516 1.437zm-32.359 0l1.547-4.625h9.64v-4.438c0-2.416-.203-3.856-.609-4.32-.406-.463-1.682-.695-3.828-.695h-5.828l1.547-4.625h4.953c3.135 0 5.229.458 6.281 1.375a3.734 3.734 0 011.235 1.992c.197.797.296 2.18.296 4.149v6.562h2.5L290.33 325h-16.204zm-19.219 0l1.36-4.14h8.468c-3.833-3.709-6.713-8.162-8.64-13.36l4.094-1.578a28.973 28.973 0 004.937 8.875c1.469-1.781 2.203-3.943 2.203-6.485v-2.015h4.344v1.312c0 3.97-1.36 7.214-4.078 9.735 1.573 1.614 2.974 2.791 4.203 3.531l-1.39 4.125h-15.5zm-8.687 0v-14.078h-9.531l1.546-4.625h16.094l-1.547 4.625h-2.515V325h-4.047zm-40.422 0v-10.031h4.047V325h-4.047zm13.594 0v-9.063c0-2.416-.206-3.856-.618-4.32-.411-.463-1.684-.695-3.82-.695h-12.047l1.547-4.625h11.172c3.135 0 5.23.458 6.281 1.375a3.733 3.733 0 011.235 1.984c.198.792.297 2.177.297 4.156V325h-4.047zm-32.813.39l1.594-4.718c2.042-.23 3.687-.839 4.937-1.828 1.948-1.542 2.922-3.406 2.922-5.594 0-.906-.32-1.52-.96-1.844-.641-.323-1.873-.484-3.696-.484h-5.563v-9.625l4.047-1.36v6.36h4.063c2.5 0 4.242.36 5.226 1.078.985.719 1.477 1.984 1.477 3.797 0 3.437-1.318 6.49-3.953 9.156-2.636 2.667-6 4.354-10.094 5.063zm-21.125 4.235v-14.61h4.047v14.61h-4.047zm-2.516-18.703l1.547-4.625h10.844c1.99 0 3.39.088 4.203.265.813.178 1.495.542 2.047 1.094.802.813 1.203 1.98 1.203 3.5 0 3.052-1.12 5.901-3.36 8.547-2.239 2.646-5.13 4.537-8.671 5.672l1.672-4.969c1.656-.469 3.036-1.383 4.14-2.742 1.105-1.36 1.657-2.82 1.657-4.383 0-.937-.328-1.565-.985-1.883-.656-.317-1.958-.476-3.906-.476h-10.39zM155.625 325v-9.594c0-1.927-.32-3.252-.96-3.976-.642-.724-1.998-1.295-4.071-1.711l2-3.797c2.448.448 4.208 1.15 5.281 2.11.708.635 1.185 1.385 1.43 2.25.244.864.367 2.25.367 4.156V325h-4.047zm-25.516 0v-14.078h-2.53l1.562-4.625h10.89c3.136 0 5.23.458 6.281 1.375a3.734 3.734 0 011.235 1.992c.198.797.297 2.18.297 4.149V325h-4.047v-9.063c0-2.416-.203-3.856-.61-4.32-.406-.463-1.682-.695-3.828-.695h-5.203V325h-4.047zm-9.656 0v-5.016h5.016V325h-5.016zm249.906 38v-10.031h4.047V363h-4.047zm13.594 0v-9.063c0-2.416-.206-3.856-.617-4.32-.412-.463-1.685-.695-3.82-.695h-12.047l1.547-4.625h11.171c3.136 0 5.23.458 6.282 1.375a3.733 3.733 0 011.234 1.984c.198.792.297 2.177.297 4.156V363h-4.047zm-36.86 0l-2.202-17.5 3.921-1.578 1.172 9.25c1.136-.281 1.933-.945 2.391-1.992.458-1.047.688-2.716.688-5.008v-1.875h4.343v1.719c0 3.093-.565 5.445-1.695 7.054-1.13 1.61-2.92 2.607-5.367 2.993l.281 2.312c2.719 0 4.89-.453 6.516-1.36 2.843-1.583 4.265-5.192 4.265-10.827v-1.891h4.328v1.562c0 5.615-1.58 9.875-4.742 12.782-3.161 2.906-7.794 4.359-13.898 4.359zm-21.937 0l1.39-4.234h10.47v-4.157c0-1.948-.193-3.205-.579-3.773-.385-.568-1.385-1.065-3-1.492l-2.984-.781-.234.671c-.136.396-.203.74-.203 1.032 0 1.01.87 1.583 2.609 1.718l-1.078 3.25c-3.5-.323-5.25-1.671-5.25-4.046 0-.917.375-2.438 1.125-4.563l.969-2.703 7.125 1.734c2.312.563 3.815 1.284 4.507 2.164.693.88 1.04 2.503 1.04 4.868v6.078L339.656 363h-14.5zm-20.656 0v-10.031h4.047V363H304.5zm13.594 0v-9.063c0-2.416-.206-3.856-.617-4.32-.412-.463-1.685-.695-3.82-.695h-12.048l1.547-4.625h11.172c3.136 0 5.23.458 6.281 1.375a3.733 3.733 0 011.235 1.984c.198.792.297 2.177.297 4.156V363h-4.047zm-48.14 0l2.265-8.688c.416-1.593.625-2.692.625-3.296 0-1.24-1.058-2.907-3.172-5l3.61-2.094c1.145.958 2.124 2.265 2.937 3.922 1.666-2.615 3.666-3.922 6-3.922 1.76 0 3.166.67 4.219 2.008 1.052 1.338 1.677 3.257 1.875 5.757l.53 6.688-1.53 4.625h-9.032l1.547-4.625h4.922l-.36-4.797c-.25-3.354-1.348-5.031-3.296-5.031-1.125 0-2.07.56-2.836 1.68-.766 1.12-1.498 3.007-2.195 5.664L274.188 363h-4.235zm-7.376 0v-9.063c0-2.416-.203-3.856-.61-4.32-.406-.463-1.682-.695-3.827-.695h-5.891l1.531-4.625h5.047c3.136 0 5.23.458 6.281 1.375a3.773 3.773 0 011.22 1.992c.197.797.296 2.18.296 4.149V363h-4.047zm-31.14 0v-14.078h-2.532l1.563-4.625h10.89c3.136 0 5.23.458 6.282 1.375a3.734 3.734 0 011.234 1.992c.198.797.297 2.18.297 4.149V363h-4.047v-9.063c0-2.416-.203-3.856-.61-4.32-.406-.463-1.682-.695-3.827-.695h-5.204V363h-4.047zm-6.344-6.266h-4.063c.73-2.666 1.094-4.573 1.094-5.718 0-.823-.36-1.474-1.078-1.954-.719-.479-1.964-.895-3.734-1.25l2.093-3.89c2.552.51 4.331 1.21 5.336 2.101s1.508 2.206 1.508 3.946c0 1.094-.25 2.76-.75 5l-.406 1.765zM198.204 363l1.546-4.625h9.64v-4.438c0-2.416-.202-3.856-.609-4.32-.406-.463-1.682-.695-3.828-.695h-5.828l1.547-4.625h4.953c3.135 0 5.23.458 6.281 1.375a3.734 3.734 0 011.235 1.992c.198.797.297 2.18.297 4.149v6.562h2.5L214.405 363h-16.203zm-21.032 0v-10.031h4.047V363h-4.047zm13.594 0v-9.063c0-2.416-.206-3.856-.618-4.32-.411-.463-1.684-.695-3.82-.695h-12.047l1.547-4.625H187c3.135 0 5.23.458 6.281 1.375a3.733 3.733 0 011.235 1.984c.198.792.297 2.177.297 4.156V363h-4.047zm-46.97 0v-.516c0-2.677.282-4.971.845-6.882.562-1.912 1.51-3.8 2.843-5.664l-.703-.672c-1.135-1.063-2.161-1.948-3.078-2.657l3.688-2.687c2.448 1.937 5.036 4.51 7.765 7.719.625-1.084 1.04-2.032 1.242-2.844.204-.813.305-1.927.305-3.344v-1.156h4.328v.906c0 3.521-1.182 6.568-3.547 9.14a41.618 41.618 0 014.422 6.47l-3.484 2.578c-2.063-3.709-4.865-7.355-8.406-10.938-1.26 1.958-1.891 4.948-1.891 8.969V363h-4.328zm-24.265 0l1.547-4.625h4.031c-.823-2.115-1.234-4.708-1.234-7.781v-1.672h-2.328l1.547-4.625h8.578c3.135 0 5.229.458 6.281 1.375a3.733 3.733 0 011.234 1.984c.198.792.297 2.177.297 4.156V363h-4.047v-9.063c0-2.416-.203-3.856-.609-4.32-.406-.463-1.682-.695-3.828-.695h-3.063v1.375c0 3.354.48 6.047 1.438 8.078L127.844 363h-8.313zm285.016 31.734h-4.063c.73-2.666 1.094-4.573 1.094-5.718 0-.823-.36-1.474-1.078-1.954-.719-.479-1.964-.895-3.734-1.25l2.093-3.89c2.552.51 4.331 1.21 5.336 2.101 1.006.891 1.508 2.206 1.508 3.946 0 1.094-.25 2.76-.75 5l-.406 1.765zM378.812 401l1.532-4.625h8.734c.865-1.99 1.297-3.682 1.297-5.078 0-1.646-.38-2.787-1.14-3.422-.761-.635-2.13-.953-4.11-.953h-5.406l1.531-4.625h5.094c1.781 0 3.15.156 4.11.469.957.312 1.77.87 2.437 1.671 1.062 1.271 1.593 3.063 1.593 5.375 0 1.844-.49 4.032-1.468 6.563L391.5 401h-12.688zm-7.453 0v-9.594c0-1.927-.32-3.252-.96-3.976-.641-.724-1.998-1.295-4.07-1.711l2-3.797c2.447.448 4.207 1.15 5.28 2.11.709.635 1.185 1.385 1.43 2.25.245.864.367 2.25.367 4.156V401h-4.047zm-20.843.39l1.593-4.718c2.042-.23 3.688-.839 4.938-1.828 1.948-1.542 2.922-3.406 2.922-5.594 0-.906-.32-1.52-.961-1.844-.64-.323-1.873-.484-3.695-.484h-5.563v-9.625l4.047-1.36v6.36h4.062c2.5 0 4.243.36 5.227 1.078.984.719 1.476 1.984 1.476 3.797 0 3.437-1.317 6.49-3.953 9.156-2.635 2.667-6 4.354-10.093 5.063zm-8.891-.39v-9.594c0-1.927-.32-3.252-.96-3.976-.642-.724-1.998-1.295-4.071-1.711l2-3.797c2.448.448 4.208 1.15 5.281 2.11.708.635 1.185 1.385 1.43 2.25.244.864.367 2.25.367 4.156V401h-4.047zm-27.75 0l1.547-4.625h4.031c-.823-2.115-1.234-4.708-1.234-7.781v-1.672h-2.328l1.546-4.625h8.579c3.135 0 5.229.458 6.28 1.375a3.733 3.733 0 011.235 1.984c.198.792.297 2.177.297 4.156V401h-4.047v-9.063c0-2.416-.203-3.856-.61-4.32-.405-.463-1.681-.695-3.827-.695h-3.063v1.375c0 3.354.48 6.047 1.438 8.078L322.188 401h-8.313zm-30.688 0l-2.203-17.5 3.922-1.578 1.172 9.25c1.136-.281 1.932-.945 2.39-1.992.46-1.047.688-2.716.688-5.008v-1.875h4.344v1.719c0 3.093-.565 5.445-1.695 7.054-1.13 1.61-2.92 2.607-5.368 2.993l.282 2.312c2.719 0 4.89-.453 6.515-1.36 2.844-1.583 4.266-5.192 4.266-10.827v-1.891h4.328v1.562c0 5.615-1.58 9.875-4.742 12.782-3.162 2.906-7.794 4.359-13.899 4.359zm-21.937 0l1.39-4.234h10.47v-4.157c0-1.948-.193-3.205-.579-3.773-.385-.568-1.385-1.065-3-1.492l-2.984-.781-.235.671c-.135.396-.203.74-.203 1.032 0 1.01.87 1.583 2.61 1.718l-1.078 3.25c-3.5-.323-5.25-1.671-5.25-4.046 0-.917.375-2.438 1.125-4.563l.968-2.703 7.125 1.734c2.313.563 3.815 1.284 4.508 2.164.693.88 1.04 2.503 1.04 4.868v6.078L275.75 401h-14.5zm-22.969 0l1.547-4.625h4.031c-.823-2.115-1.234-4.708-1.234-7.781v-1.672h-2.328l1.547-4.625h8.578c3.135 0 5.229.458 6.281 1.375a3.733 3.733 0 011.235 1.984c.197.792.296 2.177.296 4.156V401h-4.046v-9.063c0-2.416-.204-3.856-.61-4.32-.406-.463-1.682-.695-3.828-.695h-3.063v1.375c0 3.354.48 6.047 1.438 8.078L246.594 401h-8.313zm-31.234 0v-10.031h4.047V401h-4.047zm13.594 0v-9.063c0-2.416-.206-3.856-.618-4.32-.411-.463-1.684-.695-3.82-.695h-12.047l1.547-4.625h11.172c3.135 0 5.23.458 6.281 1.375a3.733 3.733 0 011.235 1.984c.198.792.297 2.177.297 4.156V401h-4.047zm-39.72 0l1.548-4.625h4.031c-.823-2.115-1.234-4.708-1.234-7.781v-1.672h-2.328l1.546-4.625h8.578c3.136 0 5.23.458 6.282 1.375a3.733 3.733 0 011.234 1.984c.198.792.297 2.177.297 4.156V401h-4.047v-9.063c0-2.416-.203-3.856-.61-4.32-.406-.463-1.682-.695-3.827-.695h-3.063v1.375c0 3.354.48 6.047 1.438 8.078L189.234 401h-8.312zm-13.171.39l-1.594-3.859c2.334-1.135 4.724-2.724 7.172-4.765l-.39-2.485c-.23-1.427-.566-2.398-1.008-2.914-.443-.515-1.42-1.075-2.93-1.68l-.89-.359 1.75-3.406c2.562.844 4.317 1.687 5.265 2.531.625.563 1.055 1.177 1.29 1.844.233.667.517 2.094.85 4.281l.61 4c.448 2.938.89 5.078 1.328 6.422h-4.36c-.28-1.115-.577-2.594-.89-4.438-1.542 1.553-3.61 3.162-6.203 4.829zm-5.375-6.656h-4.063c.73-2.666 1.094-4.573 1.094-5.718 0-.823-.36-1.474-1.078-1.954-.719-.479-1.963-.895-3.734-1.25l2.094-3.89c2.552.51 4.33 1.21 5.335 2.101 1.006.891 1.508 2.206 1.508 3.946 0 1.094-.25 2.76-.75 5l-.406 1.765zM147.281 401v-9.594c0-1.927-.32-3.252-.96-3.976-.641-.724-1.998-1.295-4.071-1.711l2-3.797c2.448.448 4.208 1.15 5.281 2.11.709.635 1.185 1.385 1.43 2.25.245.864.367 2.25.367 4.156V401h-4.047zm-27.75 0l1.547-4.625h4.031c-.823-2.115-1.234-4.708-1.234-7.781v-1.672h-2.328l1.547-4.625h8.578c3.135 0 5.229.458 6.281 1.375a3.733 3.733 0 011.234 1.984c.198.792.297 2.177.297 4.156V401h-4.047v-9.063c0-2.416-.203-3.856-.609-4.32-.406-.463-1.682-.695-3.828-.695h-3.063v1.375c0 3.354.48 6.047 1.438 8.078L127.844 401h-8.313zm218.406 38v-10.031h4.047V439h-4.046zm13.594 0v-9.063c0-2.416-.205-3.856-.617-4.32-.411-.463-1.685-.695-3.82-.695h-12.047l1.547-4.625h11.172c3.135 0 5.229.458 6.28 1.375a3.733 3.733 0 011.235 1.984c.198.792.297 2.177.297 4.156V439h-4.047zm-35.687 0l1.547-4.625h9.64v-4.438c0-2.416-.203-3.856-.61-4.32-.405-.463-1.681-.695-3.827-.695h-5.828l1.546-4.625h4.954c3.135 0 5.229.458 6.28 1.375a3.734 3.734 0 011.235 1.992c.198.797.297 2.18.297 4.149v6.562h2.5L332.047 439h-16.203zm-18.61 0l-1.765-14.078h-2.516l1.547-4.625h11.078c2.094 0 3.578.078 4.453.234.875.157 1.573.469 2.094.938.875.791 1.313 2.047 1.313 3.765 0 2.292-.662 4.506-1.985 6.641s-3.104 3.854-5.344 5.156c-2.26 1.313-5.218 1.969-8.875 1.969zm3.454-4.625c2.333-.177 4.088-.687 5.265-1.531 1.938-1.407 2.906-3.25 2.906-5.531 0-.938-.328-1.57-.984-1.899-.656-.328-1.948-.492-3.875-.492h-4.469l1.156 9.453zm-11.125-1.64H285.5c.73-2.667 1.094-4.574 1.094-5.72 0-.822-.36-1.473-1.078-1.952-.72-.48-1.964-.896-3.735-1.25l2.094-3.891c2.552.51 4.33 1.21 5.336 2.101 1.005.891 1.508 2.206 1.508 3.946 0 1.094-.25 2.76-.75 5l-.406 1.765zM263.375 439l-1.766-14.078h-2.515l1.547-4.625h11.078c2.094 0 3.578.078 4.453.234.875.157 1.573.469 2.094.938.875.791 1.312 2.047 1.312 3.765 0 2.292-.661 4.506-1.984 6.641s-3.104 3.854-5.344 5.156c-2.26 1.313-5.219 1.969-8.875 1.969zm3.453-4.625c2.333-.177 4.089-.687 5.266-1.531 1.937-1.407 2.906-3.25 2.906-5.531 0-.938-.328-1.57-.984-1.899-.657-.328-1.948-.492-3.875-.492h-4.47l1.157 9.453zm-11.125-1.64h-4.062c.729-2.667 1.093-4.574 1.093-5.72 0-.822-.359-1.473-1.078-1.952-.719-.48-1.963-.896-3.734-1.25l2.094-3.891c2.552.51 4.33 1.21 5.336 2.101 1.005.891 1.507 2.206 1.507 3.946 0 1.094-.25 2.76-.75 5l-.406 1.765zM224.781 439l1.547-4.625h4.031c-.823-2.115-1.234-4.708-1.234-7.781v-1.672h-2.328l1.547-4.625h8.578c3.135 0 5.229.458 6.281 1.375a3.733 3.733 0 011.234 1.984c.198.792.297 2.177.297 4.156V439h-4.047v-9.063c0-2.416-.203-3.856-.609-4.32-.406-.463-1.682-.695-3.828-.695h-3.063v1.375c0 3.354.48 6.047 1.438 8.078L233.094 439h-8.313zm-102.89 0v-23.125h4.812v9.39h9.563v-9.39h4.812V439h-4.812v-10.547h-9.563V439h-4.812zm30.703 0v-19.953h-8.281v-3.172h21.39v3.172h-8.281V439h-4.828zm16.344 0v-23.125h6.375l5.562 16.266 5.734-16.266h5.594V439h-4.437v-17.453l-5.641 15.906h-3.875l-5.531-16.14V439h-3.781zm29.046 0v-23.125h4.813v19.844h10.422V439h-15.235zm204.094 38v-9.594c0-1.927-.32-3.252-.96-3.976-.641-.724-1.998-1.295-4.071-1.711l2-3.797c2.448.448 4.208 1.15 5.281 2.11.708.635 1.185 1.385 1.43 2.25.245.864.367 2.25.367 4.156V477h-4.047zm-25.625 0l2.266-8.688c.416-1.593.625-2.692.625-3.296 0-1.24-1.058-2.907-3.172-5l3.61-2.094c1.145.958 2.124 2.265 2.937 3.922 1.666-2.615 3.666-3.922 6-3.922 1.76 0 3.166.67 4.219 2.008 1.052 1.338 1.677 3.257 1.875 5.757l.53 6.688-1.53 4.625h-9.032l1.547-4.625h4.922l-.36-4.797c-.25-3.354-1.348-5.031-3.296-5.031-1.125 0-2.07.56-2.836 1.68-.766 1.12-1.498 3.007-2.195 5.664L380.688 477h-4.235zm-19.984 0v-.516c0-2.677.281-4.971.844-6.882.562-1.912 1.51-3.8 2.843-5.664l-.703-.672c-1.135-1.063-2.161-1.948-3.078-2.657l3.688-2.687c2.447 1.937 5.036 4.51 7.765 7.719.625-1.084 1.04-2.032 1.242-2.844.203-.813.305-1.927.305-3.344v-1.156h4.328v.906c0 3.521-1.182 6.568-3.547 9.14a41.618 41.618 0 014.422 6.47l-3.484 2.578c-2.063-3.709-4.865-7.355-8.406-10.938-1.26 1.958-1.891 4.948-1.891 8.969V477h-4.328zm-20.328 0l1.39-4.234H348v-4.157c0-1.948-.193-3.205-.578-3.773-.386-.568-1.386-1.065-3-1.492l-2.985-.781-.234.671c-.135.396-.203.74-.203 1.032 0 1.01.87 1.583 2.61 1.718l-1.079 3.25c-3.5-.323-5.25-1.671-5.25-4.046 0-.917.375-2.438 1.125-4.563l.969-2.703 7.125 1.734c2.313.563 3.815 1.284 4.508 2.164.693.88 1.039 2.503 1.039 4.868v6.078L350.64 477h-14.5zm-20.11 0l-2.203-17.5 3.922-1.578 1.172 9.25c1.135-.281 1.932-.945 2.39-1.992.459-1.047.688-2.716.688-5.008v-1.875h4.344v1.719c0 3.093-.565 5.445-1.696 7.054-1.13 1.61-2.919 2.607-5.367 2.993l.281 2.312c2.72 0 4.891-.453 6.516-1.36 2.844-1.583 4.266-5.192 4.266-10.827v-1.891h4.328v1.562c0 5.615-1.58 9.875-4.742 12.782-3.162 2.906-7.795 4.359-13.899 4.359zm-9.969 0v-9.063c0-2.416-.203-3.856-.609-4.32-.406-.463-1.682-.695-3.828-.695h-5.89l1.53-4.625h5.048c3.135 0 5.229.458 6.28 1.375a3.773 3.773 0 011.22 1.992c.197.797.296 2.18.296 4.149V477h-4.046zm-33.375 0l1.547-4.625h4.032c-.823-2.115-1.235-4.708-1.235-7.781v-1.672h-2.328l1.547-4.625h8.578c3.136 0 5.23.458 6.281 1.375a3.733 3.733 0 011.235 1.984c.198.792.297 2.177.297 4.156V477h-4.047v-9.063c0-2.416-.203-3.856-.61-4.32-.406-.463-1.682-.695-3.828-.695h-3.062v1.375c0 3.354.479 6.047 1.437 8.078L281 477h-8.313zm-29.515 0l1.547-4.625h9.64v-4.438c0-2.416-.203-3.856-.609-4.32-.406-.463-1.682-.695-3.828-.695h-5.828l1.547-4.625h4.953c3.135 0 5.229.458 6.281 1.375a3.734 3.734 0 011.234 1.992c.198.797.297 2.18.297 4.149v6.562h2.5L259.375 477h-16.203zm-18.156 0l1.53-4.625h8.735c.865-1.99 1.297-3.682 1.297-5.078 0-1.646-.38-2.787-1.14-3.422-.76-.635-2.13-.953-4.11-.953h-5.406l1.531-4.625h5.094c1.781 0 3.15.156 4.11.469.958.312 1.77.87 2.437 1.671 1.062 1.271 1.594 3.063 1.594 5.375 0 1.844-.49 4.032-1.47 6.563L237.704 477h-12.687zm-7.547 4.625v-18.703h-10l1.547-4.625h12.5v23.328h-4.047zm-36.453-4.234l1.593-4.72c2.042-.228 3.688-.838 4.938-1.827 1.948-1.542 2.922-3.406 2.922-5.594 0-.906-.32-1.52-.961-1.844-.64-.323-1.873-.484-3.696-.484h-5.562v-9.625l4.047-1.36v6.36h4.062c2.5 0 4.243.36 5.227 1.078.984.719 1.476 1.984 1.476 3.797 0 3.437-1.317 6.49-3.953 9.156-2.635 2.667-6 4.354-10.093 5.063zm-5.391-6.657h-4.063c.73-2.666 1.094-4.573 1.094-5.718 0-.823-.36-1.474-1.078-1.954-.719-.479-1.963-.895-3.734-1.25l2.094-3.89c2.552.51 4.33 1.21 5.335 2.101 1.006.891 1.508 2.206 1.508 3.946 0 1.094-.25 2.76-.75 5l-.406 1.765zM148.828 477l1.36-4.14h8.468c-3.833-3.709-6.713-8.162-8.64-13.36l4.093-1.578a28.973 28.973 0 004.938 8.875c1.469-1.781 2.203-3.943 2.203-6.485v-2.015h4.344v1.312c0 3.97-1.36 7.214-4.078 9.735 1.573 1.614 2.974 2.791 4.203 3.531l-1.39 4.125h-15.5zm-7.078 0v-9.594c0-1.927-.32-3.252-.96-3.976-.642-.724-1.998-1.295-4.071-1.711l2-3.797c2.448.448 4.208 1.15 5.281 2.11.708.635 1.185 1.385 1.43 2.25.244.864.367 2.25.367 4.156V477h-4.047zm-11.844 0v-9.063c0-2.416-.203-3.856-.61-4.32-.405-.463-1.681-.695-3.827-.695h-5.89l1.53-4.625h5.047c3.136 0 5.23.458 6.281 1.375a3.773 3.773 0 011.22 1.992c.197.797.296 2.18.296 4.149V477h-4.047zm207.406 31.734h-4.062c.73-2.666 1.094-4.573 1.094-5.718 0-.823-.36-1.474-1.078-1.954-.72-.479-1.964-.895-3.735-1.25l2.094-3.89c2.552.51 4.33 1.21 5.336 2.101 1.005.891 1.508 2.206 1.508 3.946 0 1.094-.25 2.76-.75 5l-.406 1.765zm-11.593 0h-4.063c.73-2.666 1.094-4.573 1.094-5.718 0-.823-.36-1.474-1.078-1.954-.719-.479-1.964-.895-3.735-1.25l2.094-3.89c2.552.51 4.331 1.21 5.336 2.101s1.508 2.206 1.508 3.946c0 1.094-.25 2.76-.75 5l-.406 1.765zM297.656 515l-2.203-17.5 3.922-1.578 1.172 9.25c1.135-.281 1.932-.945 2.39-1.992.459-1.047.688-2.716.688-5.008v-1.875h4.344v1.719c0 3.093-.565 5.445-1.696 7.054-1.13 1.61-2.919 2.607-5.367 2.993l.281 2.312c2.72 0 4.891-.453 6.516-1.36 2.844-1.583 4.266-5.192 4.266-10.827v-1.891h4.328v1.562c0 5.615-1.58 9.875-4.742 12.782-3.162 2.906-7.795 4.359-13.899 4.359zm-10.047 0v-9.594c0-1.927-.32-3.252-.96-3.976-.641-.724-1.998-1.295-4.07-1.711l2-3.797c2.447.448 4.207 1.15 5.28 2.11.709.635 1.185 1.385 1.43 2.25.245.864.367 2.25.367 4.156V515h-4.047zm-25.625 0l2.266-8.688c.417-1.593.625-2.692.625-3.296 0-1.24-1.057-2.907-3.172-5l3.61-2.094c1.145.958 2.124 2.265 2.937 3.922 1.667-2.615 3.667-3.922 6-3.922 1.76 0 3.167.67 4.219 2.008 1.052 1.338 1.677 3.257 1.875 5.757l.531 6.688-1.531 4.625h-9.031l1.546-4.625h4.922l-.36-4.797c-.25-3.354-1.348-5.031-3.296-5.031-1.125 0-2.07.56-2.836 1.68-.766 1.12-1.497 3.007-2.195 5.664L266.219 515h-4.235zm-3.953-6.266h-4.062c.729-2.666 1.094-4.573 1.094-5.718 0-.823-.36-1.474-1.079-1.954-.718-.479-1.963-.895-3.734-1.25l2.094-3.89c2.552.51 4.33 1.21 5.336 2.101 1.005.891 1.507 2.206 1.507 3.946 0 1.094-.25 2.76-.75 5l-.406 1.765zM219.86 515v-.516c0-2.677.282-4.971.844-6.882.563-1.912 1.51-3.8 2.844-5.664l-.703-.672c-1.136-1.063-2.162-1.948-3.078-2.657l3.687-2.687c2.448 1.937 5.037 4.51 7.766 7.719.625-1.084 1.039-2.032 1.242-2.844.203-.813.305-1.927.305-3.344v-1.156h4.328v.906c0 3.521-1.183 6.568-3.547 9.14a41.618 41.618 0 014.422 6.47l-3.485 2.578c-2.062-3.709-4.864-7.355-8.406-10.938-1.26 1.958-1.89 4.948-1.89 8.969V515h-4.329zm-4.937-6.266h-4.063c.73-2.666 1.094-4.573 1.094-5.718 0-.823-.36-1.474-1.078-1.954-.719-.479-1.964-.895-3.734-1.25l2.093-3.89c2.552.51 4.331 1.21 5.336 2.101 1.006.891 1.508 2.206 1.508 3.946 0 1.094-.25 2.76-.75 5l-.406 1.765zM192.75 515l1.563-4.625h5.515v-6.078c0-1.646-.354-2.724-1.062-3.235-.948-.677-2.224-1.244-3.828-1.703l1.843-3.437c1.73.427 3.297 1.047 4.703 1.86.907.53 1.532 1.182 1.875 1.952.344.771.516 1.922.516 3.454v7.187L202.328 515h-9.578zm-17.906 0l-2.235-17.688 3.922-1.39 1.797 14.453c2.667 0 4.794-.615 6.383-1.844 1.588-1.229 2.383-2.87 2.383-4.922 0-2.24-1.209-3.359-3.625-3.359-.646 0-1.339.104-2.078.313l1.406-4.36a9.102 9.102 0 012.234-.297c1.917 0 3.414.576 4.492 1.727 1.079 1.15 1.618 2.747 1.618 4.789 0 2.292-.698 4.437-2.094 6.437s-3.292 3.568-5.688 4.704c-2.01.958-4.849 1.437-8.515 1.437zm-9.938 0v-9.063c0-2.416-.203-3.856-.61-4.32-.405-.463-1.681-.695-3.827-.695h-5.89l1.53-4.625h5.047c3.136 0 5.23.458 6.281 1.375a3.773 3.773 0 011.22 1.992c.197.797.296 2.18.296 4.149V515h-4.047zm-24.625 0l1.563-4.625h5.515v-6.078c0-1.646-.354-2.724-1.062-3.235-.948-.677-2.224-1.244-3.828-1.703l1.844-3.437c1.729.427 3.296 1.047 4.703 1.86.906.53 1.53 1.182 1.875 1.952.343.771.515 1.922.515 3.454v7.187L149.86 515h-9.578zm-17.906 0l-2.234-17.688 3.921-1.39 1.797 14.453c2.667 0 4.795-.615 6.383-1.844 1.589-1.229 2.383-2.87 2.383-4.922 0-2.24-1.208-3.359-3.625-3.359-.646 0-1.339.104-2.078.313l1.406-4.36a9.102 9.102 0 012.234-.297c1.917 0 3.415.576 4.493 1.727 1.078 1.15 1.617 2.747 1.617 4.789 0 2.292-.698 4.437-2.094 6.437s-3.292 3.568-5.687 4.704c-2.01.958-4.85 1.437-8.516 1.437zm212.14 38l2.266-8.688c.417-1.593.625-2.692.625-3.296 0-1.24-1.057-2.907-3.172-5l3.61-2.094c1.146.958 2.125 2.265 2.937 3.922 1.667-2.615 3.667-3.922 6-3.922 1.76 0 3.167.67 4.219 2.008 1.052 1.338 1.677 3.257 1.875 5.758l.531 6.687-1.531 4.625h-9.031l1.547-4.625h4.921l-.359-4.797c-.25-3.354-1.349-5.031-3.297-5.031-1.125 0-2.07.56-2.836 1.68-.765 1.12-1.497 3.007-2.195 5.664L338.75 553h-4.234zm-23.28 0l1.546-4.625h4.031c-.822-2.115-1.234-4.708-1.234-7.781v-1.672h-2.328l1.547-4.625h8.578c3.135 0 5.23.458 6.281 1.375a3.733 3.733 0 011.235 1.984c.198.792.296 2.177.296 4.157V553h-4.046v-9.063c0-2.416-.203-3.856-.61-4.32-.406-.463-1.682-.695-3.828-.695h-3.062v1.375c0 3.354.479 6.047 1.437 8.078L319.547 553h-8.313zm-7.173 0v-9.594c0-1.927-.32-3.252-.96-3.976-.641-.724-1.998-1.295-4.07-1.711l2-3.797c2.447.448 4.208 1.15 5.28 2.11.709.635 1.185 1.385 1.43 2.25.245.864.367 2.25.367 4.155V553h-4.046zm-25.515 0v-14.078h-2.531l1.562-4.625h10.89c3.136 0 5.23.458 6.282 1.375a3.734 3.734 0 011.234 1.992c.198.797.297 2.18.297 4.149V553h-4.047v-9.063c0-2.416-.203-3.856-.609-4.32-.406-.463-1.682-.695-3.828-.695h-5.203V553h-4.047zm-20.485 0l1.532-4.625h8.734c.865-1.99 1.297-3.682 1.297-5.078 0-1.646-.38-2.787-1.14-3.422-.761-.635-2.13-.953-4.11-.953h-5.406l1.531-4.625h5.094c1.781 0 3.15.156 4.11.469.957.312 1.77.87 2.437 1.672 1.062 1.27 1.593 3.062 1.593 5.375 0 1.843-.49 4.03-1.468 6.562L270.75 553h-12.688zm-21.156 0l2.266-8.688c.417-1.593.625-2.692.625-3.296 0-1.24-1.057-2.907-3.172-5l3.61-2.094c1.145.958 2.124 2.265 2.937 3.922 1.667-2.615 3.667-3.922 6-3.922 1.76 0 3.167.67 4.219 2.008 1.052 1.338 1.677 3.257 1.875 5.758l.53 6.687-1.53 4.625h-9.032l1.547-4.625h4.922l-.36-4.797c-.25-3.354-1.348-5.031-3.296-5.031-1.125 0-2.07.56-2.836 1.68-.766 1.12-1.497 3.007-2.195 5.664L241.14 553h-4.235zm-3.953-6.266h-4.062c.729-2.666 1.093-4.573 1.093-5.718 0-.823-.359-1.474-1.078-1.953-.719-.48-1.963-.896-3.734-1.25l2.094-3.891c2.552.51 4.33 1.21 5.336 2.101 1.005.891 1.507 2.206 1.507 3.946 0 1.094-.25 2.76-.75 5l-.406 1.765zM204.641 553v-14.078h-2.485l1.547-4.625h10.484c3.136 0 5.23.458 6.282 1.375a3.734 3.734 0 011.234 1.992c.198.797.297 2.18.297 4.149v6.562L220.453 553h-15.812zm4.062-4.625h9.25v-4.438c0-2.427-.203-3.87-.61-4.328-.406-.458-1.682-.687-3.827-.687h-4.813v9.453zm-20.953-1.64h-4.063c.73-2.667 1.094-4.574 1.094-5.72 0-.822-.36-1.473-1.078-1.952-.719-.48-1.963-.896-3.734-1.25l2.094-3.891c2.552.51 4.33 1.21 5.335 2.101 1.006.891 1.508 2.206 1.508 3.946 0 1.094-.25 2.76-.75 5l-.406 1.765zM172.656 553v-9.594c0-1.927-.32-3.252-.96-3.976-.641-.724-1.998-1.295-4.071-1.711l2-3.797c2.448.448 4.208 1.15 5.281 2.11.709.635 1.185 1.385 1.43 2.25.245.864.367 2.25.367 4.155V553h-4.047zm-27.75 0l1.547-4.625h4.031c-.823-2.115-1.234-4.708-1.234-7.781v-1.672h-2.328l1.547-4.625h8.578c3.135 0 5.229.458 6.281 1.375a3.733 3.733 0 011.234 1.984c.198.792.297 2.177.297 4.157V553h-4.047v-9.063c0-2.416-.203-3.856-.609-4.32-.406-.463-1.682-.695-3.828-.695h-3.063v1.375c0 3.354.48 6.047 1.438 8.078L153.219 553h-8.313zm-7.094 0v-9.063c0-2.416-.203-3.856-.609-4.32-.406-.463-1.682-.695-3.828-.695h-5.89l1.53-4.625h5.048c3.135 0 5.229.458 6.28 1.375a3.773 3.773 0 011.22 1.992c.197.797.296 2.18.296 4.149V553h-4.047zm-17.359 0v-5.016h5.016V553h-5.016zm322.688 38.39l1.593-4.718c2.042-.23 3.688-.839 4.938-1.828 1.948-1.542 2.922-3.406 2.922-5.594 0-.906-.32-1.52-.961-1.844-.64-.323-1.873-.484-3.695-.484h-5.563v-9.625l4.047-1.36v6.36h4.062c2.5 0 4.243.36 5.227 1.078.984.719 1.476 1.984 1.476 3.797 0 3.437-1.317 6.49-3.953 9.156-2.635 2.667-6 4.354-10.093 5.063zm-22.594-.39l2.265-8.688c.417-1.593.625-2.692.625-3.296 0-1.24-1.057-2.907-3.171-5l3.609-2.094c1.146.958 2.125 2.265 2.938 3.922 1.666-2.615 3.666-3.922 6-3.922 1.76 0 3.166.67 4.218 2.008s1.677 3.257 1.875 5.758l.531 6.687-1.53 4.625h-9.032l1.547-4.625h4.922l-.36-4.797c-.25-3.354-1.349-5.031-3.296-5.031-1.126 0-2.07.56-2.836 1.68-.766 1.12-1.498 3.007-2.196 5.664L424.781 591h-4.234zm-21.625 2.781l1.562-4.672c1.667 0 3.459-.28 5.375-.843L402.5 573.28l3.875-1.36 3.266 14.563c1.635-1.24 2.773-2.78 3.414-4.625.64-1.843.96-4.484.96-7.922v-1.64h4.344v1.156c0 3.99-.612 7.318-1.836 9.985-1.224 2.666-3.153 4.88-5.789 6.64-3.698 2.469-7.635 3.703-11.812 3.703zM380.078 591l-2.203-17.5 3.922-1.578 1.172 9.25c1.135-.281 1.932-.945 2.39-1.992.459-1.047.688-2.716.688-5.008v-1.875h4.344v1.719c0 3.093-.565 5.445-1.696 7.054-1.13 1.61-2.919 2.607-5.367 2.992l.281 2.313c2.72 0 4.891-.453 6.516-1.36 2.844-1.583 4.266-5.192 4.266-10.827v-1.891h4.328v1.562c0 5.615-1.581 9.875-4.742 12.782-3.162 2.906-7.795 4.359-13.899 4.359zm-23.562 0v-10.031h4.046V591h-4.046zm13.593 0v-9.063c0-2.416-.205-3.856-.617-4.32-.411-.463-1.685-.695-3.82-.695h-12.047l1.547-4.625h11.172c3.135 0 5.229.458 6.281 1.375a3.733 3.733 0 011.234 1.984c.198.792.297 2.177.297 4.157V591h-4.047zm-21.78 0h-1.923v-5.016h5.016v3.891c0 4.094-1.672 6.14-5.016 6.14v-1.734c1.282 0 1.922-.927 1.922-2.781v-.5zm-31.204 0l1.531-4.625h8.735c.864-1.99 1.296-3.682 1.296-5.078 0-1.646-.38-2.787-1.14-3.422-.76-.635-2.13-.953-4.11-.953h-5.406l1.531-4.625h5.094c1.782 0 3.151.156 4.11.469.958.312 1.77.87 2.437 1.672 1.063 1.27 1.594 3.062 1.594 5.375 0 1.843-.49 4.03-1.469 6.562L329.813 591h-12.688zm-3.953-6.266h-4.063c.73-2.666 1.094-4.573 1.094-5.718 0-.823-.36-1.474-1.078-1.953-.719-.48-1.964-.896-3.734-1.25l2.093-3.891c2.552.51 4.331 1.21 5.336 2.101 1.006.891 1.508 2.206 1.508 3.946 0 1.094-.25 2.76-.75 5l-.406 1.765zM298.078 591v-9.594c0-1.927-.32-3.252-.96-3.976-.641-.724-1.998-1.295-4.071-1.711l2-3.797c2.448.448 4.208 1.15 5.281 2.11.708.635 1.185 1.385 1.43 2.25.245.864.367 2.25.367 4.155V591h-4.047zm-25.14 0v-14.078h-2.485l1.547-4.625h10.484c3.136 0 5.23.458 6.282 1.375a3.734 3.734 0 011.234 1.992c.198.797.297 2.18.297 4.149v6.562L288.75 591h-15.813zm4.062-4.625h9.25v-4.438c0-2.427-.203-3.87-.61-4.328-.406-.458-1.682-.687-3.827-.687H277v9.453zM265.203 591h-1.922v-5.016h5.016v3.891c0 4.094-1.672 6.14-5.016 6.14v-1.734c1.282 0 1.922-.927 1.922-2.781v-.5zm-20.484 0v-9.063c0-2.416-.203-3.856-.61-4.32-.406-.463-1.682-.695-3.828-.695h-5.89l1.53-4.625h5.048c3.135 0 5.229.458 6.281 1.375a3.773 3.773 0 011.219 1.992c.198.797.297 2.18.297 4.149V591h-4.047zm-17.547 0v-9.594c0-1.927-.32-3.252-.961-3.976-.64-.724-1.997-1.295-4.07-1.711l2-3.797c2.448.448 4.208 1.15 5.28 2.11.71.635 1.186 1.385 1.43 2.25.245.864.368 2.25.368 4.155V591h-4.047zm-23.719 0l1.547-4.625h9.64v-4.438c0-2.416-.202-3.856-.609-4.32-.406-.463-1.682-.695-3.828-.695h-5.828l1.547-4.625h4.953c3.135 0 5.23.458 6.281 1.375a3.734 3.734 0 011.235 1.992c.198.797.297 2.18.297 4.149v6.562h2.5L219.655 591h-16.203zm-30.594 0v-.516c0-2.677.282-4.971.844-6.882.563-1.912 1.51-3.8 2.844-5.664l-.703-.672c-1.136-1.063-2.162-1.948-3.078-2.657l3.687-2.687c2.448 1.937 5.037 4.51 7.766 7.719.625-1.084 1.039-2.032 1.242-2.844.203-.813.305-1.927.305-3.344v-1.156h4.328v.906c0 3.521-1.183 6.568-3.547 9.14a41.618 41.618 0 014.422 6.47l-3.485 2.578c-2.062-3.709-4.864-7.355-8.406-10.938-1.26 1.958-1.89 4.948-1.89 8.969V591h-4.329zm-24.265 0l1.547-4.625h4.03c-.822-2.115-1.233-4.708-1.233-7.781v-1.672h-2.329l1.547-4.625h8.578c3.136 0 5.23.458 6.282 1.375a3.733 3.733 0 011.234 1.984c.198.792.297 2.177.297 4.157V591H164.5v-9.063c0-2.416-.203-3.856-.61-4.32-.406-.463-1.682-.695-3.827-.695H157v1.375c0 3.354.48 6.047 1.438 8.078L156.905 591h-8.312zm-7.094 0v-9.063c0-2.416-.203-3.856-.61-4.32-.406-.463-1.682-.695-3.827-.695h-5.891l1.531-4.625h5.047c3.135 0 5.23.458 6.281 1.375a3.773 3.773 0 011.219 1.992c.198.797.297 2.18.297 4.149V591H141.5zm-14.047-6.266h-4.062c.729-2.666 1.093-4.573 1.093-5.718 0-.823-.359-1.474-1.078-1.953-.719-.48-1.963-.896-3.734-1.25l2.094-3.891c2.552.51 4.33 1.21 5.336 2.101 1.005.891 1.507 2.206 1.507 3.946 0 1.094-.25 2.76-.75 5l-.406 1.765zM406.016 629v-10.031h4.046V629h-4.046zm13.593 0v-9.063c0-2.416-.205-3.856-.617-4.32-.411-.463-1.685-.695-3.82-.695h-12.047l1.547-4.625h11.172c3.135 0 5.229.458 6.281 1.375a3.733 3.733 0 011.234 1.984c.198.792.297 2.177.297 4.157V629h-4.047zm-36.421 0v-.516c0-2.677.28-4.971.843-6.882.563-1.912 1.51-3.8 2.844-5.664l-.703-.672c-1.136-1.063-2.162-1.948-3.078-2.657l3.687-2.687c2.448 1.937 5.037 4.51 7.766 7.719.625-1.084 1.039-2.032 1.242-2.844.203-.813.305-1.927.305-3.344v-1.156h4.328v.906c0 3.521-1.182 6.568-3.547 9.14a41.618 41.618 0 014.422 6.47l-3.485 2.578c-2.062-3.709-4.864-7.355-8.406-10.938-1.26 1.958-1.89 4.948-1.89 8.969V629h-4.329zm-4.938-6.266h-4.063c.73-2.666 1.094-4.573 1.094-5.718 0-.823-.36-1.474-1.078-1.953-.719-.48-1.963-.896-3.734-1.25l2.094-3.891c2.552.51 4.33 1.21 5.335 2.101 1.006.891 1.508 2.206 1.508 3.946 0 1.094-.25 2.76-.75 5l-.406 1.765zM356.078 629l1.563-4.625h5.515v-6.078c0-1.646-.354-2.724-1.062-3.235-.948-.677-2.224-1.244-3.828-1.703l1.843-3.437c1.73.427 3.297 1.047 4.704 1.86.906.53 1.53 1.182 1.875 1.952.343.771.515 1.922.515 3.453v7.188L365.656 629h-9.578zm-17.906 0l-2.235-17.688 3.922-1.39 1.797 14.453c2.667 0 4.795-.615 6.383-1.844 1.589-1.229 2.383-2.87 2.383-4.922 0-2.24-1.208-3.359-3.625-3.359-.646 0-1.339.104-2.078.313l1.406-4.36a9.102 9.102 0 012.234-.297c1.917 0 3.414.576 4.493 1.727 1.078 1.15 1.617 2.747 1.617 4.789 0 2.292-.698 4.437-2.094 6.437s-3.292 3.568-5.688 4.703c-2.01.959-4.848 1.438-8.515 1.438zm-9.938 0v-9.063c0-2.416-.203-3.856-.609-4.32-.406-.463-1.682-.695-3.828-.695h-5.89l1.53-4.625h5.047c3.136 0 5.23.458 6.282 1.375a3.773 3.773 0 011.218 1.992c.198.797.297 2.18.297 4.149V629h-4.047zm-24.625 0l1.563-4.625h5.515v-6.078c0-1.646-.354-2.724-1.062-3.235-.948-.677-2.224-1.244-3.828-1.703l1.844-3.437c1.729.427 3.296 1.047 4.703 1.86.906.53 1.531 1.182 1.875 1.952.344.771.515 1.922.515 3.453v7.188L313.188 629h-9.579zm-17.906 0l-2.234-17.688 3.922-1.39 1.796 14.453c2.667 0 4.795-.615 6.383-1.844 1.589-1.229 2.383-2.87 2.383-4.922 0-2.24-1.208-3.359-3.625-3.359-.646 0-1.338.104-2.078.313l1.406-4.36a9.102 9.102 0 012.235-.297c1.916 0 3.414.576 4.492 1.727 1.078 1.15 1.617 2.747 1.617 4.789 0 2.292-.698 4.437-2.094 6.437s-3.291 3.568-5.687 4.703c-2.01.959-4.85 1.438-8.516 1.438zm-34.078 0v-10.031h4.047V629h-4.047zm13.594 0v-9.063c0-2.416-.206-3.856-.617-4.32-.412-.463-1.685-.695-3.82-.695h-12.048l1.547-4.625h11.172c3.136 0 5.23.458 6.281 1.375a3.733 3.733 0 011.235 1.984c.198.792.297 2.177.297 4.157V629h-4.047zm-37.594 0l2.266-8.688c.416-1.593.625-2.692.625-3.296 0-1.24-1.058-2.907-3.172-5l3.61-2.094c1.145.958 2.124 2.265 2.937 3.922 1.666-2.615 3.666-3.922 6-3.922 1.76 0 3.166.67 4.218 2.008s1.677 3.257 1.875 5.758l.532 6.687-1.532 4.625h-9.03l1.546-4.625h4.922l-.36-4.797c-.25-3.354-1.348-5.031-3.296-5.031-1.125 0-2.07.56-2.836 1.68-.766 1.12-1.498 3.007-2.196 5.664L231.86 629h-4.234zm-7.453 0v-9.594c0-1.927-.32-3.252-.961-3.976-.64-.724-1.997-1.295-4.07-1.711l2-3.797c2.448.448 4.208 1.15 5.28 2.11.71.635 1.186 1.385 1.43 2.25.245.864.368 2.25.368 4.155V629h-4.047zm-13.531 0v-14.078h-9.532l1.547-4.625h16.094l-1.547 4.625h-2.516V629h-4.046zm-16.282 0v-9.063c0-2.416-.203-3.856-.609-4.32-.406-.463-1.682-.695-3.828-.695h-5.89l1.53-4.625h5.047c3.136 0 5.23.458 6.282 1.375a3.773 3.773 0 011.218 1.992c.198.797.297 2.18.297 4.149V629h-4.047zm-24.625 0l1.563-4.625h5.516v-6.078c0-1.646-.355-2.724-1.063-3.235-.948-.677-2.224-1.244-3.828-1.703l1.844-3.437c1.729.427 3.296 1.047 4.703 1.86.906.53 1.531 1.182 1.875 1.952.344.771.515 1.922.515 3.453v7.188L175.312 629h-9.578zm-3.625-6.266h-4.062c.729-2.666 1.094-4.573 1.094-5.718 0-.823-.36-1.474-1.078-1.953-.72-.48-1.964-.896-3.735-1.25l2.094-3.891c2.552.51 4.33 1.21 5.336 2.101 1.005.891 1.508 2.206 1.508 3.946 0 1.094-.25 2.76-.75 5l-.407 1.765zm-11.593 0h-4.063c.73-2.666 1.094-4.573 1.094-5.718 0-.823-.36-1.474-1.078-1.953-.719-.48-1.964-.896-3.735-1.25l2.094-3.891c2.552.51 4.33 1.21 5.336 2.101 1.005.891 1.508 2.206 1.508 3.946 0 1.094-.25 2.76-.75 5l-.406 1.765zM122.203 629v-14.078h-2.484l1.547-4.625h10.484c3.135 0 5.23.458 6.281 1.375a3.734 3.734 0 011.235 1.992c.198.797.297 2.18.297 4.149v6.562L138.016 629h-15.813zm4.063-4.625h9.25v-4.438c0-2.427-.203-3.87-.61-4.328-.406-.458-1.682-.687-3.828-.687h-4.812v9.453zM401.844 667l2.265-8.688c.417-1.593.625-2.692.625-3.296 0-1.24-1.057-2.907-3.171-5l3.609-2.094c1.146.958 2.125 2.265 2.937 3.922 1.667-2.615 3.667-3.922 6-3.922 1.76 0 3.167.67 4.22 2.008 1.051 1.338 1.676 3.257 1.874 5.758l.531 6.687-1.53 4.625h-9.032l1.547-4.625h4.922l-.36-4.797c-.25-3.354-1.349-5.031-3.297-5.031-1.125 0-2.07.56-2.836 1.68-.765 1.12-1.497 3.007-2.195 5.664L406.078 667h-4.234zm-20.422 0l-2.203-17.5 3.922-1.578 1.171 9.25c1.136-.281 1.933-.945 2.391-1.992.458-1.047.688-2.716.688-5.008v-1.875h4.343v1.719c0 3.093-.565 5.445-1.695 7.054-1.13 1.61-2.92 2.607-5.367 2.992l.281 2.313c2.719 0 4.89-.453 6.516-1.36 2.844-1.583 4.265-5.192 4.265-10.827v-1.891h4.329v1.562c0 5.615-1.581 9.875-4.743 12.782-3.161 2.906-7.794 4.359-13.898 4.359zm-18.969.39l1.594-4.718c2.042-.23 3.687-.839 4.937-1.828 1.948-1.542 2.922-3.406 2.922-5.594 0-.906-.32-1.52-.96-1.844-.641-.323-1.873-.484-3.696-.484h-5.563v-9.625l4.047-1.36v6.36h4.063c2.5 0 4.242.36 5.226 1.078.985.719 1.477 1.984 1.477 3.797 0 3.437-1.318 6.49-3.953 9.156-2.636 2.667-6 4.354-10.094 5.063zm-20.687-.39l1.546-4.625h9.641v-4.438c0-2.416-.203-3.856-.61-4.32-.406-.463-1.682-.695-3.827-.695h-5.829l1.547-4.625h4.954c3.135 0 5.229.458 6.28 1.375a3.734 3.734 0 011.235 1.992c.198.797.297 2.18.297 4.149v6.562h2.5L357.969 667h-16.203zm-4.016-6.266h-4.063c.73-2.666 1.094-4.573 1.094-5.718 0-.823-.36-1.474-1.078-1.953-.719-.48-1.963-.896-3.734-1.25l2.094-3.891c2.552.51 4.33 1.21 5.335 2.101 1.006.891 1.508 2.206 1.508 3.946 0 1.094-.25 2.76-.75 5l-.406 1.765zM309.437 667v-14.078h-2.484l1.547-4.625h10.484c3.136 0 5.23.458 6.282 1.375a3.734 3.734 0 011.234 1.992c.198.797.297 2.18.297 4.149v6.562L325.25 667h-15.813zm4.063-4.625h9.25v-4.438c0-2.427-.203-3.87-.61-4.328-.406-.458-1.682-.687-3.827-.687H313.5v9.453zM276.078 667l-2.203-17.5 3.922-1.578 1.172 9.25c1.135-.281 1.932-.945 2.39-1.992.459-1.047.688-2.716.688-5.008v-1.875h4.344v1.719c0 3.093-.565 5.445-1.696 7.054-1.13 1.61-2.919 2.607-5.367 2.992l.281 2.313c2.72 0 4.891-.453 6.516-1.36 2.844-1.583 4.266-5.192 4.266-10.827v-1.891h4.328v1.562c0 5.615-1.581 9.875-4.742 12.782-3.162 2.906-7.795 4.359-13.899 4.359zm-21.937 0l1.39-4.234H266v-4.157c0-1.948-.193-3.205-.578-3.773-.386-.568-1.386-1.065-3-1.492l-2.985-.782-.234.672c-.135.396-.203.74-.203 1.032 0 1.01.87 1.583 2.61 1.718l-1.079 3.25c-3.5-.323-5.25-1.671-5.25-4.047 0-.916.375-2.437 1.125-4.562l.969-2.703 7.125 1.734c2.313.563 3.815 1.284 4.508 2.164.693.88 1.039 2.503 1.039 4.867v6.079L268.64 667h-14.5zm-20.657 0v-10.031h4.047V667h-4.047zm13.594 0v-9.063c0-2.416-.206-3.856-.617-4.32-.412-.463-1.685-.695-3.82-.695h-12.047l1.547-4.625h11.172c3.135 0 5.229.458 6.28 1.375a3.733 3.733 0 011.235 1.984c.198.792.297 2.177.297 4.157V667h-4.047zm-38.234 0v-7.016c0-2.354.682-4.343 2.047-5.968L206 651.938l1.719-4.016 11.094 4.719-1.672 4.062-3.125-1.36c-.75.938-1.125 2.256-1.125 3.954V667h-4.047zm-9.735 0v-9.594c0-1.927-.32-3.252-.96-3.976-.641-.724-1.998-1.295-4.07-1.711l2-3.797c2.447.448 4.207 1.15 5.28 2.11.709.635 1.185 1.385 1.43 2.25.245.864.367 2.25.367 4.155V667h-4.047zm-11.734 0v-5.016h5.016V667h-5.016zm-32.156 0v-10.031h4.047V667h-4.047zm13.594 0v-9.063c0-2.416-.206-3.856-.618-4.32-.411-.463-1.685-.695-3.82-.695h-12.047l1.547-4.625h11.172c3.135 0 5.229.458 6.281 1.375a3.733 3.733 0 011.234 1.984c.198.792.297 2.177.297 4.157V667h-4.047zm-20.391-6.266h-4.063c.73-2.666 1.094-4.573 1.094-5.718 0-.823-.36-1.474-1.078-1.953-.719-.48-1.964-.896-3.734-1.25l2.093-3.891c2.552.51 4.331 1.21 5.336 2.101 1.006.891 1.508 2.206 1.508 3.946 0 1.094-.25 2.76-.75 5l-.406 1.765zM120.797 667v-.516c0-2.677.281-4.971.844-6.882.562-1.912 1.51-3.8 2.843-5.664l-.703-.672c-1.135-1.063-2.161-1.948-3.078-2.657l3.688-2.687c2.448 1.937 5.036 4.51 7.765 7.719.625-1.084 1.04-2.032 1.242-2.844.204-.813.305-1.927.305-3.344v-1.156h4.328v.906c0 3.521-1.182 6.568-3.547 9.14a41.618 41.618 0 014.422 6.47l-3.484 2.578c-2.063-3.709-4.865-7.355-8.406-10.938-1.26 1.958-1.891 4.948-1.891 8.969V667h-4.328zm275.937 31.734h-4.062c.729-2.666 1.094-4.573 1.094-5.718 0-.823-.36-1.474-1.079-1.953-.718-.48-1.963-.896-3.734-1.25l2.094-3.891c2.552.51 4.33 1.21 5.336 2.101 1.005.891 1.508 2.206 1.508 3.946 0 1.094-.25 2.76-.75 5l-.407 1.765zM380.031 705v-14.078H370.5l1.547-4.625h16.094l-1.547 4.625h-2.516V705h-4.047zm-16.36 0v-9.594c0-1.927-.32-3.252-.96-3.976-.64-.724-1.997-1.295-4.07-1.711l2-3.797c2.448.448 4.208 1.15 5.28 2.11.71.635 1.186 1.385 1.43 2.25.245.864.368 2.25.368 4.155V705h-4.047zm-26.093 2.781l1.563-4.672c1.666 0 3.458-.28 5.375-.843l-3.36-14.985 3.875-1.36 3.266 14.563c1.635-1.24 2.773-2.78 3.414-4.625.64-1.843.96-4.484.96-7.922v-1.64h4.345v1.156c0 3.99-.612 7.318-1.836 9.985-1.224 2.666-3.154 4.88-5.79 6.64-3.697 2.469-7.635 3.703-11.812 3.703zM318.188 705v-10.031h4.046V705h-4.046zm13.593 0v-9.063c0-2.416-.205-3.856-.617-4.32-.411-.463-1.685-.695-3.82-.695h-12.047l1.547-4.625h11.172c3.135 0 5.229.458 6.28 1.375a3.733 3.733 0 011.235 1.984c.198.792.297 2.177.297 4.157V705h-4.047zm-46.234 0l1.547-4.625h9.64v-4.438c0-2.416-.203-3.856-.609-4.32-.406-.463-1.682-.695-3.828-.695h-5.828l1.547-4.625h4.953c3.135 0 5.229.458 6.281 1.375a3.734 3.734 0 011.234 1.992c.198.797.297 2.18.297 4.149v6.562h2.5L301.75 705h-16.203zm-21.688 2.781l1.563-4.672c1.667 0 3.458-.28 5.375-.843l-3.36-14.985 3.875-1.36 3.266 14.563c1.636-1.24 2.774-2.78 3.414-4.625.64-1.843.961-4.484.961-7.922v-1.64h4.344v1.156c0 3.99-.612 7.318-1.836 9.985-1.224 2.666-3.154 4.88-5.79 6.64-3.697 2.469-7.635 3.703-11.812 3.703zm-2.375-9.047h-4.062c.729-2.666 1.094-4.573 1.094-5.718 0-.823-.36-1.474-1.079-1.953-.718-.48-1.963-.896-3.734-1.25l2.094-3.891c2.552.51 4.33 1.21 5.336 2.101 1.005.891 1.508 2.206 1.508 3.946 0 1.094-.25 2.76-.75 5l-.407 1.765zm-27.328 10.891v-14.61h4.047v14.61h-4.047zm-2.515-18.703l1.547-4.625h10.843c1.99 0 3.39.088 4.203.265.813.178 1.495.542 2.047 1.094.802.813 1.203 1.98 1.203 3.5 0 3.052-1.12 5.901-3.359 8.547-2.24 2.646-5.13 4.537-8.672 5.672l1.672-4.969c1.656-.469 3.036-1.383 4.14-2.742 1.105-1.36 1.657-2.82 1.657-4.383 0-.937-.328-1.565-.984-1.883-.657-.317-1.959-.476-3.907-.476h-10.39zM224.406 705v-9.063c0-2.416-.203-3.856-.61-4.32-.405-.463-1.681-.695-3.827-.695h-5.89l1.53-4.625h5.047c3.136 0 5.23.458 6.281 1.375a3.773 3.773 0 011.22 1.992c.197.797.296 2.18.296 4.149V705h-4.047zm-38.734 0l1.531-4.625h8.734c.865-1.99 1.297-3.682 1.297-5.078 0-1.646-.38-2.787-1.14-3.422-.76-.635-2.13-.953-4.11-.953h-5.406l1.531-4.625h5.094c1.781 0 3.151.156 4.11.469.958.312 1.77.87 2.437 1.672 1.063 1.27 1.594 3.062 1.594 5.375 0 1.843-.49 4.03-1.469 6.562L198.359 705h-12.687zm-20.422 0l-2.203-17.5 3.922-1.578 1.172 9.25c1.135-.281 1.932-.945 2.39-1.992.459-1.047.688-2.716.688-5.008v-1.875h4.344v1.719c0 3.093-.566 5.445-1.696 7.054-1.13 1.61-2.92 2.607-5.367 2.992l.281 2.313c2.719 0 4.89-.453 6.516-1.36 2.844-1.583 4.266-5.192 4.266-10.827v-1.891h4.328v1.562c0 5.615-1.581 9.875-4.743 12.782-3.161 2.906-7.794 4.359-13.898 4.359zm-21.938 0l1.391-4.234h10.469v-4.157c0-1.948-.193-3.205-.578-3.773-.386-.568-1.386-1.065-3-1.492l-2.985-.782-.234.672c-.135.396-.203.74-.203 1.032 0 1.01.87 1.583 2.61 1.718l-1.079 3.25c-3.5-.323-5.25-1.671-5.25-4.047 0-.916.375-2.437 1.125-4.562l.969-2.703 7.125 1.734c2.312.563 3.815 1.284 4.508 2.164.692.88 1.039 2.503 1.039 4.867v6.079L157.813 705h-14.5zm-20.656 0v-10.031h4.047V705h-4.047zm13.594 0v-9.063c0-2.416-.206-3.856-.617-4.32-.412-.463-1.685-.695-3.82-.695h-12.047l1.546-4.625h11.172c3.136 0 5.23.458 6.282 1.375a3.733 3.733 0 011.234 1.984c.198.792.297 2.177.297 4.157V705h-4.047zm169.5 38v-10.031h4.047V743h-4.047zm13.594 0v-9.063c0-2.416-.206-3.856-.617-4.32-.412-.463-1.685-.695-3.82-.695h-12.048l1.547-4.625h11.172c3.136 0 5.23.458 6.281 1.375a3.733 3.733 0 011.235 1.984c.198.792.297 2.177.297 4.157V743h-4.047zm-37.594 0l2.266-8.688c.416-1.593.625-2.692.625-3.296 0-1.24-1.058-2.907-3.172-5l3.61-2.094c1.145.958 2.124 2.265 2.937 3.922 1.666-2.615 3.666-3.922 6-3.922 1.76 0 3.166.67 4.218 2.008s1.677 3.257 1.875 5.758l.532 6.687-1.532 4.625h-9.03l1.546-4.625h4.922l-.36-4.797c-.25-3.354-1.348-5.031-3.296-5.031-1.125 0-2.07.56-2.836 1.68-.766 1.12-1.498 3.007-2.196 5.664L285.984 743h-4.234zm-7.453 0v-9.594c0-1.927-.32-3.252-.961-3.976-.64-.724-1.997-1.295-4.07-1.711l2-3.797c2.448.448 4.208 1.15 5.28 2.11.71.635 1.186 1.385 1.43 2.25.245.864.368 2.25.368 4.155V743h-4.047zm-22.703 0l-2.235-17.688 3.922-1.39 1.797 14.453c2.667 0 4.794-.615 6.383-1.844 1.588-1.229 2.383-2.87 2.383-4.922 0-2.24-1.209-3.359-3.625-3.359-.646 0-1.339.104-2.078.313l1.406-4.36a9.102 9.102 0 012.234-.297c1.917 0 3.414.576 4.492 1.727 1.079 1.15 1.618 2.747 1.618 4.789 0 2.292-.698 4.437-2.094 6.437s-3.292 3.568-5.688 4.703c-2.01.959-4.849 1.438-8.515 1.438zm-21.813 0l1.547-4.625h9.64v-4.438c0-2.416-.202-3.856-.609-4.32-.406-.463-1.682-.695-3.828-.695h-5.828l1.547-4.625h4.953c3.136 0 5.23.458 6.281 1.375a3.734 3.734 0 011.235 1.992c.198.797.297 2.18.297 4.149v6.562h2.5L245.984 743h-16.203zm-21.687 2.781l1.562-4.672c1.667 0 3.459-.28 5.375-.843l-3.36-14.985 3.876-1.36 3.266 14.563c1.635-1.24 2.773-2.78 3.414-4.625.64-1.843.96-4.484.96-7.922v-1.64h4.344v1.156c0 3.99-.612 7.318-1.836 9.985-1.224 2.666-3.153 4.88-5.789 6.64-3.698 2.469-7.635 3.703-11.812 3.703zM186.39 743l1.547-4.625h4.03c-.822-2.115-1.234-4.708-1.234-7.781v-1.672h-2.328l1.547-4.625h8.578c3.136 0 5.23.458 6.281 1.375a3.733 3.733 0 011.235 1.984c.198.792.297 2.177.297 4.157V743h-4.047v-9.063c0-2.416-.203-3.856-.61-4.32-.406-.463-1.682-.695-3.828-.695h-3.062v1.375c0 3.354.479 6.047 1.437 8.078l-1.53 4.625h-8.313zm-29.516 0l1.547-4.625h9.64v-4.438c0-2.416-.203-3.856-.609-4.32-.406-.463-1.682-.695-3.828-.695h-5.828l1.547-4.625h4.953c3.135 0 5.229.458 6.281 1.375a3.734 3.734 0 011.234 1.992c.198.797.297 2.18.297 4.149v6.562h2.5L173.08 743h-16.204zm-9.125 0v-14.078h-9.531l1.547-4.625h16.093l-1.547 4.625h-2.515V743h-4.047zm-28.25 0l1.39-4.234h10.47v-4.157c0-1.948-.193-3.205-.579-3.773-.385-.568-1.385-1.065-3-1.492l-2.984-.782-.234.672c-.136.396-.204.74-.204 1.032 0 1.01.87 1.583 2.61 1.718l-1.078 3.25c-3.5-.323-5.25-1.671-5.25-4.047 0-.916.375-2.437 1.125-4.562l.968-2.703 7.125 1.734c2.313.563 3.815 1.284 4.508 2.164.693.88 1.04 2.503 1.04 4.867v6.079L134 743h-14.5z"/><path id="Rectangle-1" stroke="#C06334" stroke-width="2" d="M117 106h282v198H117z"/><g id="Rectangle-209-+-Rectangle-208" fill="#DBAF88" transform="translate(15 14)"><path id="Rectangle-209" d="M0 1h50v300H0z"/><path id="Rectangle-208" d="M165.5-129.5h50v311h-50z" transform="rotate(-90 190.5 26)"/></g><path id="Rectangle-5" fill="url(#linearGradient-1)" d="M45-7h275v447H45z" transform="rotate(-180 182.5 216.5)"/><path id="Rectangle-6" fill="#FFF" d="M319 8h162v399H319z"/><g id="Group-2" transform="translate(65 65)"><rect id="Rectangle-19" width="20" height="239" x=".5" y=".5" fill="#D1CFCD" stroke="#D1CFCD" rx="3"/><g id="Rectangle-18-+-Triangle-1"><rect id="Rectangle-18" width="20" height="19" x=".5" y=".5" fill="url(#linearGradient-2)" stroke="#D1CFCD" rx="3"/><path id="Triangle-1" fill="#7E7C7B" d="M10.5 7l4.2 6H6.3z"/></g><g id="Rectangle-18-+-Triangle-2" transform="matrix(1 0 0 -1 0 240)"><rect id="Rectangle-18" width="20" height="19" x=".5" y=".5" fill="url(#linearGradient-2)" stroke="#D1CFCD" rx="3"/><path id="Triangle-1" fill="#7E7C7B" d="M10.5 7l4.2 6H6.3z"/></g><g id="Rectangle-18-+-Triangle-3-+-Group" transform="translate(0 50)"><g id="Rectangle-18-+-Triangle-3" fill="url(#linearGradient-3)" stroke="#D1CFCD" transform="matrix(1 0 0 -1 0 51)"><rect id="Rectangle-18" width="20" height="50" x=".5" y=".5" rx="3"/></g><g id="Group" fill="#D1CFCD" stroke="#7E7C7B" transform="translate(5.25 20)"><path id="Rectangle-22" d="M.5.5H10v1H.5z"/><path id="Rectangle-23" d="M.5 3.5H10v1H.5z"/><path id="Rectangle-24" d="M.5 6.5H10v1H.5z"/><path id="Rectangle-25" d="M.5 9.5H10v1H.5z"/></g></g></g><path id="Line-7" fill="#C06334" fill-rule="nonzero" d="M65.41 15.68l7 14h-6.001v20h6.001l-7 14-7-14h5.999v-20H58.41l7-14z"/><path id="Line-28" fill="#C06334" fill-rule="nonzero" d="M72 57.68l14 7-14 7-.001-6h-42.59l.001 6-14-7 14-7-.001 6h42.59l.001-6z"/><text id="clientTop:25px-=-bor" font-family="PTMono-Regular, PT Mono" font-size="12" font-weight="normal"><tspan x="78.7" y="43" fill="#C06334">clientTop:</tspan> <tspan x="150.7" y="43" fill="#1C85B5">25px </tspan> <tspan x="186.7" y="43" fill="#C06334">= border</tspan></text><text id="clientLeft:41px" font-family="PTMono-Regular, PT Mono" font-size="12" font-weight="normal" transform="rotate(-90 40.32 125)"><tspan x="-13.68" y="129" fill="#C06334">clientLeft:</tspan> <tspan x="65.52" y="129" fill="#1C85B5">41px</tspan></text><g id="Rectangle-8-+-Rectangle-7" transform="translate(-42 -3)"><path id="Rectangle-8" fill="url(#linearGradient-1)" d="M86.5-85.5h275v447h-275z" transform="rotate(-90 224 138)"/><path id="Rectangle-7" fill="#FFF" d="M152 156h162v399H152z" transform="rotate(90 233 355.5)"/></g></g></g></svg> +======= +<svg xmlns="http://www.w3.org/2000/svg" width="359" height="316" viewBox="0 0 359 316"><defs><style>@import url(https://fonts.googleapis.com/css?family=Open+Sans:bold,italic,bolditalic%7CPT+Mono);@font-face{font-family:'PT Mono';font-weight:700;font-style:normal;src:local('PT MonoBold'),url(/font/PTMonoBold.woff2) format('woff2'),url(/font/PTMonoBold.woff) format('woff'),url(/font/PTMonoBold.ttf) format('truetype')}</style></defs><defs><linearGradient id="linearGradient-1" x1="0%" x2="62.299%" y1="47.096%" y2="47.096%"><stop offset="0%" stop-color="#FFF"/><stop offset="100%" stop-color="#FFF" stop-opacity="0"/></linearGradient><linearGradient id="linearGradient-2" x1="50%" x2="50%" y1="0%" y2="100%"><stop offset="0%" stop-color="#FFF"/><stop offset="100%" stop-color="#D1CFCD"/></linearGradient><linearGradient id="linearGradient-3" x1="50%" x2="50%" y1="0%" y2="100%"><stop offset="0%" stop-color="#FFF"/><stop offset="100%" stop-color="#D1CFCD"/></linearGradient><linearGradient id="linearGradient-4" x1="0%" x2="62.299%" y1="47.096%" y2="47.096%"><stop offset="0%" stop-color="#FFF"/><stop offset="100%" stop-color="#FFF" stop-opacity="0"/></linearGradient></defs><g id="dom" fill="none" fill-rule="evenodd" stroke="none" stroke-width="1"><g id="metric-client-left-top-rtl.svg"><path fill="#FFF" d="M0 0h359v316H0z"/><path id="היא-שפת-תסריט-מפורשת" fill="#643B0C" d="M336.484 135v-10.031h4.047V135h-4.047zm13.594 0v-9.063c0-2.416-.206-3.856-.617-4.32-.412-.463-1.685-.695-3.82-.695h-12.047l1.547-4.625h11.171c3.136 0 5.23.458 6.282 1.375a3.733 3.733 0 011.234 1.984c.198.792.297 2.177.297 4.156V135h-4.047zm-20.39-6.266h-4.063c.73-2.666 1.094-4.573 1.094-5.718 0-.823-.36-1.474-1.078-1.954-.72-.479-1.964-.895-3.735-1.25l2.094-3.89c2.552.51 4.33 1.21 5.336 2.101 1.005.891 1.508 2.206 1.508 3.946 0 1.094-.25 2.76-.75 5l-.406 1.765zM302.063 135v-.516c0-2.677.28-4.971.843-6.882.563-1.912 1.51-3.8 2.844-5.665l-.703-.671c-1.136-1.063-2.162-1.948-3.078-2.657l3.687-2.687c2.448 1.937 5.037 4.51 7.766 7.719.625-1.084 1.039-2.032 1.242-2.844.203-.813.305-1.927.305-3.344v-1.156h4.328v.906c0 3.521-1.182 6.568-3.547 9.14a41.618 41.618 0 014.422 6.47l-3.485 2.578c-2.062-3.709-4.864-7.355-8.406-10.938-1.26 1.958-1.89 4.948-1.89 8.969V135h-4.329zm-31.954 0l-2.203-17.5 3.922-1.578 1.172 9.25c1.135-.281 1.932-.945 2.39-1.992.459-1.047.688-2.716.688-5.008v-1.875h4.344v1.719c0 3.093-.565 5.445-1.695 7.054-1.13 1.61-2.92 2.607-5.368 2.993l.282 2.312c2.718 0 4.89-.453 6.515-1.36 2.844-1.583 4.266-5.192 4.266-10.827v-1.891h4.328v1.562c0 5.615-1.58 9.875-4.742 12.782-3.162 2.906-7.794 4.359-13.899 4.359zm-21.937 0l1.39-4.234h10.47v-4.157c0-1.948-.193-3.205-.579-3.773-.385-.568-1.385-1.065-3-1.492l-2.984-.781-.235.671c-.135.396-.203.74-.203 1.032 0 1.01.87 1.583 2.61 1.718l-1.078 3.25c-3.5-.323-5.25-1.671-5.25-4.046 0-.917.374-2.438 1.125-4.563l.968-2.703 7.125 1.734c2.313.563 3.815 1.284 4.508 2.164.693.88 1.04 2.503 1.04 4.868v6.078L262.671 135h-14.5zm-22.969 0l1.547-4.625h4.031c-.823-2.115-1.234-4.708-1.234-7.781v-1.672h-2.328l1.547-4.625h8.578c3.135 0 5.229.458 6.281 1.375a3.733 3.733 0 011.234 1.984c.198.792.297 2.177.297 4.156V135h-4.047v-9.063c0-2.416-.203-3.856-.609-4.32-.406-.463-1.682-.695-3.828-.695h-3.063v1.375c0 3.354.48 6.047 1.438 8.078L233.516 135h-8.313zm-33.547 0l1.547-4.625h4.031c-.823-2.115-1.234-4.708-1.234-7.781v-1.672h-2.328l1.547-4.625h8.578c3.135 0 5.229.458 6.281 1.375a3.733 3.733 0 011.234 1.984c.198.792.297 2.177.297 4.156V135h-4.047v-9.063c0-2.416-.203-3.856-.609-4.32-.406-.463-1.682-.695-3.828-.695h-3.063v1.375c0 3.354.48 6.047 1.438 8.078L199.969 135h-8.313zm-18.265 0l-1.766-14.078h-2.516l1.547-4.625h11.078c2.094 0 3.578.078 4.453.234.876.157 1.573.469 2.094.938.875.791 1.313 2.047 1.313 3.765 0 2.292-.662 4.506-1.985 6.641s-3.104 3.854-5.343 5.156c-2.26 1.313-5.22 1.969-8.875 1.969zm3.453-4.625c2.333-.177 4.088-.687 5.265-1.531 1.938-1.407 2.907-3.25 2.907-5.531 0-.938-.328-1.57-.985-1.899-.656-.328-1.948-.492-3.875-.492h-4.469l1.157 9.453zM162.297 135v-9.063c0-2.416-.203-3.856-.61-4.32-.406-.463-1.682-.695-3.828-.695h-5.89l1.531-4.625h5.047c3.135 0 5.229.458 6.281 1.375a3.773 3.773 0 011.219 1.992c.198.797.297 2.18.297 4.148V135h-4.047zm-14.047-6.266h-4.063c.73-2.666 1.094-4.573 1.094-5.718 0-.823-.36-1.474-1.078-1.954-.719-.479-1.963-.895-3.734-1.25l2.094-3.89c2.552.51 4.33 1.21 5.335 2.101 1.006.891 1.508 2.206 1.508 3.946 0 1.094-.25 2.76-.75 5l-.406 1.765zM122.375 135l-2.234-17.688 3.921-1.39 1.797 14.453c2.667 0 4.795-.615 6.383-1.844 1.589-1.229 2.383-2.87 2.383-4.922 0-2.24-1.208-3.359-3.625-3.359-.646 0-1.339.104-2.078.313l1.406-4.36a9.102 9.102 0 012.234-.297c1.917 0 3.415.576 4.493 1.727 1.078 1.15 1.617 2.747 1.617 4.789 0 2.292-.698 4.437-2.094 6.437s-3.292 3.568-5.687 4.703c-2.01.959-4.85 1.438-8.516 1.438zm222.344 38l2.265-8.688c.417-1.593.625-2.692.625-3.296 0-1.24-1.057-2.907-3.171-5l3.609-2.094c1.146.958 2.125 2.265 2.937 3.922 1.667-2.615 3.667-3.922 6-3.922 1.76 0 3.167.67 4.22 2.008 1.051 1.338 1.676 3.257 1.874 5.757l.531 6.688-1.53 4.625h-9.032l1.547-4.625h4.922l-.36-4.797c-.25-3.354-1.349-5.031-3.297-5.031-1.125 0-2.07.56-2.836 1.68-.765 1.12-1.497 3.007-2.195 5.664L348.953 173h-4.234zm-19.344 0l1.39-4.234h10.47v-4.157c0-1.948-.193-3.205-.579-3.773-.385-.568-1.385-1.065-3-1.492l-2.984-.781-.235.671c-.135.396-.203.74-.203 1.032 0 1.01.87 1.583 2.61 1.718l-1.078 3.25c-3.5-.323-5.25-1.671-5.25-4.047 0-.916.375-2.437 1.125-4.562l.968-2.703 7.125 1.734c2.313.563 3.815 1.284 4.508 2.164.693.88 1.04 2.503 1.04 4.868v6.078L339.874 173h-14.5zm-7.14 0v-9.594c0-1.927-.32-3.252-.962-3.976-.64-.724-1.997-1.295-4.07-1.711l2-3.797c2.448.448 4.208 1.15 5.281 2.11.709.635 1.185 1.385 1.43 2.25.245.864.367 2.25.367 4.155V173h-4.047zm-11.844 0v-9.063c0-2.416-.203-3.856-.61-4.32-.406-.463-1.682-.695-3.828-.695h-5.89l1.53-4.625h5.048c3.135 0 5.229.458 6.28 1.375a3.773 3.773 0 011.22 1.992c.198.797.296 2.18.296 4.149V173h-4.046zm-30.516 0l-2.203-17.5 3.922-1.578 1.172 9.25c1.135-.281 1.932-.945 2.39-1.992.459-1.047.688-2.716.688-5.008v-1.875h4.344v1.719c0 3.093-.566 5.445-1.696 7.054-1.13 1.61-2.92 2.607-5.367 2.993l.281 2.312c2.719 0 4.89-.453 6.516-1.36 2.844-1.583 4.265-5.192 4.265-10.827v-1.891h4.329v1.562c0 5.615-1.581 9.875-4.743 12.782-3.161 2.906-7.794 4.359-13.898 4.359zM250 173l1.547-4.625h4.031c-.823-2.115-1.234-4.708-1.234-7.781v-1.672h-2.328l1.547-4.625h8.578c3.135 0 5.229.458 6.28 1.375a3.733 3.733 0 011.235 1.984c.198.792.297 2.177.297 4.156V173h-4.047v-9.063c0-2.416-.203-3.856-.61-4.32-.405-.463-1.681-.695-3.827-.695h-3.063v1.375c0 3.354.48 6.047 1.438 8.078L258.313 173H250zm-31.422 0l2.266-8.688c.416-1.593.625-2.692.625-3.296 0-1.24-1.058-2.907-3.172-5l3.61-2.094c1.145.958 2.124 2.265 2.937 3.922 1.666-2.615 3.666-3.922 6-3.922 1.76 0 3.166.67 4.219 2.008 1.052 1.338 1.677 3.257 1.875 5.757l.53 6.688-1.53 4.625h-9.032l1.547-4.625h4.922l-.36-4.797c-.25-3.354-1.348-5.031-3.296-5.031-1.125 0-2.07.56-2.836 1.68-.766 1.12-1.498 3.007-2.196 5.664L222.813 173h-4.234zm-19.25 0l1.547-4.625h9.64v-4.438c0-2.416-.202-3.856-.609-4.32-.406-.463-1.682-.695-3.828-.695h-5.828l1.547-4.625h4.953c3.135 0 5.23.458 6.281 1.375a3.734 3.734 0 011.235 1.992c.198.797.297 2.18.297 4.149v6.562h2.5L215.53 173h-16.203zm-7.516 0v-9.594c0-1.927-.32-3.252-.96-3.976-.641-.724-1.998-1.295-4.07-1.711l2-3.797c2.447.448 4.208 1.15 5.28 2.11.709.635 1.185 1.385 1.43 2.25.245.864.367 2.25.367 4.155V173h-4.047zm-23.015 0l-1.766-14.078h-2.515l1.547-4.625h11.078c2.093 0 3.578.078 4.453.234.875.157 1.573.469 2.094.938.875.791 1.312 2.047 1.312 3.765 0 2.292-.661 4.506-1.984 6.641s-3.105 3.854-5.344 5.156c-2.26 1.313-5.219 1.969-8.875 1.969zm3.453-4.625c2.333-.177 4.089-.687 5.266-1.531 1.937-1.407 2.906-3.25 2.906-5.531 0-.938-.328-1.57-.984-1.899-.657-.328-1.948-.492-3.875-.492h-4.47l1.157 9.453zM146.531 173l-1.765-14.078h-2.516l1.547-4.625h11.078c2.094 0 3.578.078 4.453.234.875.157 1.573.469 2.094.938.875.791 1.312 2.047 1.312 3.765 0 2.292-.661 4.506-1.984 6.641s-3.104 3.854-5.344 5.156c-2.26 1.313-5.218 1.969-8.875 1.969zm3.453-4.625c2.334-.177 4.089-.687 5.266-1.531 1.938-1.407 2.906-3.25 2.906-5.531 0-.938-.328-1.57-.984-1.899-.656-.328-1.948-.492-3.875-.492h-4.469l1.156 9.453zM119.531 173l1.547-4.625h4.031c-.823-2.115-1.234-4.708-1.234-7.781v-1.672h-2.328l1.547-4.625h8.578c3.135 0 5.229.458 6.281 1.375a3.733 3.733 0 011.234 1.984c.198.792.297 2.177.297 4.156V173h-4.047v-9.063c0-2.416-.203-3.856-.609-4.32-.406-.463-1.682-.695-3.828-.695h-3.063v1.375c0 3.354.48 6.047 1.438 8.078L127.844 173h-8.313zm288.766 38v-.516c0-2.677.281-4.971.844-6.882.562-1.912 1.51-3.8 2.843-5.665l-.703-.671c-1.135-1.063-2.161-1.948-3.078-2.657l3.688-2.687c2.448 1.937 5.036 4.51 7.765 7.719.625-1.084 1.04-2.032 1.242-2.844.204-.813.305-1.927.305-3.344v-1.156h4.328v.906c0 3.521-1.182 6.568-3.547 9.14a41.618 41.618 0 014.422 6.47l-3.484 2.578c-2.063-3.709-4.865-7.355-8.406-10.938-1.26 1.958-1.891 4.948-1.891 8.969V211h-4.328zm-8.438 0v-9.594c0-1.927-.32-3.252-.96-3.976-.641-.724-1.998-1.295-4.07-1.711l2-3.797c2.447.448 4.207 1.15 5.28 2.11.709.635 1.185 1.385 1.43 2.25.245.864.367 2.25.367 4.155V211h-4.047zm-23.718 0l1.546-4.625h9.641v-4.438c0-2.416-.203-3.856-.61-4.32-.406-.463-1.682-.695-3.827-.695h-5.829l1.547-4.625h4.954c3.135 0 5.229.458 6.28 1.375a3.734 3.734 0 011.235 1.992c.198.797.297 2.18.297 4.149v6.562h2.5L392.344 211H376.14zm-4.016-6.266h-4.063c.73-2.666 1.094-4.573 1.094-5.718 0-.823-.36-1.474-1.078-1.953-.719-.48-1.963-.896-3.734-1.25l2.094-3.891c2.552.51 4.33 1.21 5.335 2.101 1.006.891 1.508 2.206 1.508 3.946 0 1.094-.25 2.76-.75 5l-.406 1.765zm-11.594 0h-4.062c.729-2.666 1.094-4.573 1.094-5.718 0-.823-.36-1.474-1.079-1.953-.718-.48-1.963-.896-3.734-1.25l2.094-3.891c2.552.51 4.33 1.21 5.336 2.101 1.005.891 1.507 2.206 1.507 3.946 0 1.094-.25 2.76-.75 5l-.406 1.765zm-27.328 10.891v-14.61h4.047v14.61h-4.047zm-2.515-18.703l1.546-4.625h10.844c1.99 0 3.39.088 4.203.266.813.177 1.495.541 2.047 1.093.802.813 1.203 1.98 1.203 3.5 0 3.052-1.12 5.901-3.36 8.547-2.239 2.646-5.13 4.537-8.671 5.672l1.672-4.969c1.656-.469 3.036-1.383 4.14-2.742 1.105-1.36 1.657-2.82 1.657-4.383 0-.937-.328-1.565-.985-1.883-.656-.317-1.958-.476-3.906-.476h-10.39zM312.594 211l-2.235-17.688 3.922-1.39 1.797 14.453c2.667 0 4.794-.615 6.383-1.844 1.588-1.229 2.383-2.87 2.383-4.922 0-2.24-1.209-3.359-3.625-3.359-.646 0-1.339.104-2.078.313l1.406-4.36a9.102 9.102 0 012.234-.297c1.917 0 3.414.576 4.492 1.727 1.079 1.15 1.618 2.747 1.618 4.789 0 2.292-.698 4.437-2.094 6.437s-3.292 3.568-5.688 4.703c-2.01.959-4.849 1.438-8.515 1.438zm-6.516-6.266h-4.062c.729-2.666 1.093-4.573 1.093-5.718 0-.823-.359-1.474-1.078-1.953-.719-.48-1.963-.896-3.734-1.25l2.094-3.891c2.552.51 4.33 1.21 5.336 2.101 1.005.891 1.507 2.206 1.507 3.946 0 1.094-.25 2.76-.75 5l-.406 1.765zM277.766 211v-14.078h-2.485l1.547-4.625h10.485c3.135 0 5.229.458 6.28 1.375a3.734 3.734 0 011.235 1.992c.198.797.297 2.18.297 4.149v6.562L293.578 211h-15.812zm4.062-4.625h9.25v-4.438c0-2.427-.203-3.87-.61-4.328-.406-.458-1.682-.687-3.827-.687h-4.813v9.453zM243.86 211v-10.031h4.047V211h-4.047zm13.594 0v-9.063c0-2.416-.206-3.856-.617-4.32-.412-.463-1.685-.695-3.82-.695h-12.047l1.547-4.625h11.172c3.135 0 5.229.458 6.28 1.375a3.733 3.733 0 011.235 1.984c.198.792.297 2.177.297 4.156V211h-4.047zm-37.594 0l2.266-8.688c.417-1.593.625-2.692.625-3.296 0-1.24-1.057-2.907-3.172-5l3.61-2.094c1.145.958 2.124 2.265 2.937 3.922 1.667-2.615 3.667-3.922 6-3.922 1.76 0 3.167.67 4.219 2.008 1.052 1.338 1.677 3.257 1.875 5.757l.531 6.688-1.531 4.625h-9.031l1.546-4.625h4.922l-.36-4.797c-.25-3.354-1.348-5.031-3.296-5.031-1.125 0-2.07.56-2.836 1.68-.766 1.12-1.497 3.007-2.195 5.664L224.094 211h-4.235zm-7.453 0v-9.594c0-1.927-.32-3.252-.96-3.976-.641-.724-1.998-1.295-4.071-1.711l2-3.797c2.448.448 4.208 1.15 5.281 2.11.709.635 1.185 1.385 1.43 2.25.245.864.367 2.25.367 4.155V211h-4.047zm-27.75 0l1.547-4.625h4.031c-.823-2.115-1.234-4.708-1.234-7.781v-1.672h-2.328l1.547-4.625h8.578c3.135 0 5.229.458 6.281 1.375a3.733 3.733 0 011.234 1.984c.198.792.297 2.177.297 4.156V211h-4.047v-9.063c0-2.416-.203-3.856-.609-4.32-.406-.463-1.682-.695-3.828-.695h-3.063v1.375c0 3.354.48 6.047 1.438 8.078L192.969 211h-8.313zm-19.703 0v-.516c0-2.677.281-4.971.844-6.882.562-1.912 1.51-3.8 2.844-5.665l-.703-.671c-1.136-1.063-2.162-1.948-3.079-2.657l3.688-2.687c2.448 1.937 5.036 4.51 7.766 7.719.625-1.084 1.039-2.032 1.242-2.844.203-.813.304-1.927.304-3.344v-1.156h4.328v.906c0 3.521-1.182 6.568-3.546 9.14a41.618 41.618 0 014.422 6.47l-3.485 2.578c-2.062-3.709-4.864-7.355-8.406-10.938-1.26 1.958-1.89 4.948-1.89 8.969V211h-4.329zm-22.14 0l2.265-8.688c.417-1.593.625-2.692.625-3.296 0-1.24-1.057-2.907-3.172-5l3.61-2.094c1.145.958 2.125 2.265 2.937 3.922 1.667-2.615 3.667-3.922 6-3.922 1.76 0 3.167.67 4.219 2.008 1.052 1.338 1.677 3.257 1.875 5.757l.531 6.688-1.531 4.625h-9.031l1.547-4.625h4.921l-.359-4.797c-.25-3.354-1.349-5.031-3.297-5.031-1.125 0-2.07.56-2.836 1.68-.765 1.12-1.497 3.007-2.195 5.664L147.047 211h-4.234zm-23.282 0l1.547-4.625h4.031c-.823-2.115-1.234-4.708-1.234-7.781v-1.672h-2.328l1.547-4.625h8.578c3.135 0 5.229.458 6.281 1.375a3.733 3.733 0 011.234 1.984c.198.792.297 2.177.297 4.156V211h-4.047v-9.063c0-2.416-.203-3.856-.609-4.32-.406-.463-1.682-.695-3.828-.695h-3.063v1.375c0 3.354.48 6.047 1.438 8.078L127.844 211h-8.313zm318.844 38.39l1.594-4.718c2.041-.23 3.687-.839 4.937-1.828 1.948-1.542 2.922-3.406 2.922-5.594 0-.906-.32-1.52-.96-1.844-.641-.323-1.873-.484-3.696-.484h-5.563v-9.625l4.047-1.36v6.36h4.063c2.5 0 4.242.36 5.226 1.078.985.719 1.477 1.984 1.477 3.797 0 3.437-1.318 6.49-3.953 9.156-2.636 2.667-6 4.354-10.094 5.063zm-21.86-.39l-2.202-17.5 3.921-1.578 1.172 9.25c1.136-.281 1.933-.945 2.39-1.992.46-1.047.688-2.716.688-5.008v-1.875h4.344v1.719c0 3.093-.565 5.445-1.695 7.054-1.13 1.61-2.92 2.607-5.367 2.993l.28 2.312c2.72 0 4.891-.453 6.517-1.36 2.843-1.583 4.265-5.192 4.265-10.827v-1.891h4.328v1.562c0 5.615-1.58 9.875-4.742 12.782-3.161 2.906-7.794 4.359-13.898 4.359zm-6.546-6.266h-4.063c.73-2.666 1.094-4.573 1.094-5.718 0-.823-.36-1.474-1.078-1.953-.719-.48-1.964-.896-3.735-1.25l2.094-3.891c2.552.51 4.331 1.21 5.336 2.101s1.508 2.206 1.508 3.946c0 1.094-.25 2.76-.75 5l-.406 1.765zm-24.016 6.657l1.594-4.72c2.042-.228 3.687-.838 4.937-1.827 1.948-1.542 2.922-3.406 2.922-5.594 0-.906-.32-1.52-.96-1.844-.641-.323-1.873-.484-3.696-.484h-5.563v-9.625l4.047-1.36v6.36h4.063c2.5 0 4.242.36 5.226 1.078.985.719 1.477 1.984 1.477 3.797 0 3.437-1.318 6.49-3.953 9.156-2.636 2.667-6 4.354-10.094 5.063zm-8.89-.391v-9.594c0-1.927-.32-3.252-.961-3.976-.641-.724-1.998-1.295-4.07-1.711l2-3.797c2.447.448 4.208 1.15 5.28 2.11.709.635 1.185 1.385 1.43 2.25.245.864.367 2.25.367 4.155V249h-4.046zm-23.72 0l1.548-4.625h9.64v-4.438c0-2.416-.203-3.856-.61-4.32-.405-.463-1.681-.695-3.827-.695h-5.828l1.546-4.625h4.954c3.135 0 5.229.458 6.28 1.375a3.734 3.734 0 011.235 1.992c.198.797.297 2.18.297 4.149v6.562h2.5L369.547 249h-16.203zm-29.859 0l1.547-4.625h9.64v-4.438c0-2.416-.202-3.856-.608-4.32-.407-.463-1.683-.695-3.829-.695h-5.828l1.547-4.625h4.953c3.136 0 5.23.458 6.281 1.375a3.734 3.734 0 011.235 1.992c.198.797.297 2.18.297 4.149v6.562h2.5L339.688 249h-16.204zm-20.046 0v-.516c0-2.677.28-4.971.843-6.882.563-1.912 1.51-3.8 2.844-5.665l-.703-.671c-1.136-1.063-2.162-1.948-3.078-2.657l3.687-2.687c2.448 1.937 5.037 4.51 7.766 7.719.625-1.084 1.039-2.032 1.242-2.844.203-.813.305-1.927.305-3.344v-1.156h4.328v.906c0 3.521-1.182 6.568-3.547 9.14a41.618 41.618 0 014.422 6.47l-3.485 2.578c-2.062-3.709-4.864-7.355-8.406-10.938-1.26 1.958-1.89 4.948-1.89 8.969V249h-4.329zm-24.266 0l1.547-4.625h4.031c-.823-2.115-1.234-4.708-1.234-7.781v-1.672h-2.329l1.547-4.625h8.579c3.135 0 5.229.458 6.28 1.375a3.733 3.733 0 011.235 1.984c.198.792.297 2.177.297 4.156V249h-4.047v-9.063c0-2.416-.203-3.856-.61-4.32-.406-.463-1.682-.695-3.827-.695h-3.063v1.375c0 3.354.48 6.047 1.438 8.078L287.484 249h-8.312zm-7.094 0v-9.063c0-2.416-.203-3.856-.61-4.32-.406-.463-1.682-.695-3.827-.695h-5.891l1.531-4.625h5.047c3.136 0 5.23.458 6.281 1.375a3.773 3.773 0 011.22 1.992c.197.797.296 2.18.296 4.149V249h-4.047zm-14.047-6.266h-4.062c.729-2.666 1.094-4.573 1.094-5.718 0-.823-.36-1.474-1.079-1.953-.718-.48-1.963-.896-3.734-1.25l2.094-3.891c2.552.51 4.33 1.21 5.336 2.101 1.005.891 1.507 2.206 1.507 3.946 0 1.094-.25 2.76-.75 5l-.406 1.765zM219.86 249v-.516c0-2.677.282-4.971.844-6.882.563-1.912 1.51-3.8 2.844-5.665l-.703-.671c-1.136-1.063-2.162-1.948-3.078-2.657l3.687-2.687c2.448 1.937 5.037 4.51 7.766 7.719.625-1.084 1.039-2.032 1.242-2.844.203-.813.305-1.927.305-3.344v-1.156h4.328v.906c0 3.521-1.183 6.568-3.547 9.14a41.618 41.618 0 014.422 6.47l-3.485 2.578c-2.062-3.709-4.864-7.355-8.406-10.938-1.26 1.958-1.89 4.948-1.89 8.969V249h-4.329zm-4.937-6.266h-4.063c.73-2.666 1.094-4.573 1.094-5.718 0-.823-.36-1.474-1.078-1.953-.719-.48-1.964-.896-3.734-1.25l2.093-3.891c2.552.51 4.331 1.21 5.336 2.101 1.006.891 1.508 2.206 1.508 3.946 0 1.094-.25 2.76-.75 5l-.406 1.765zM192.75 249l1.563-4.625h5.515v-6.078c0-1.646-.354-2.724-1.062-3.234-.948-.678-2.224-1.245-3.828-1.704l1.843-3.437c1.73.427 3.297 1.047 4.703 1.86.907.53 1.532 1.182 1.875 1.952.344.771.516 1.922.516 3.453v7.188L202.328 249h-9.578zm-17.906 0l-2.235-17.688 3.922-1.39 1.797 14.453c2.667 0 4.794-.615 6.383-1.844 1.588-1.229 2.383-2.87 2.383-4.922 0-2.24-1.209-3.359-3.625-3.359-.646 0-1.339.104-2.078.313l1.406-4.36a9.102 9.102 0 012.234-.297c1.917 0 3.414.576 4.492 1.727 1.079 1.15 1.618 2.747 1.618 4.789 0 2.292-.698 4.437-2.094 6.437s-3.292 3.568-5.688 4.703c-2.01.959-4.849 1.438-8.515 1.438zm-9.938 0v-9.063c0-2.416-.203-3.856-.61-4.32-.405-.463-1.681-.695-3.827-.695h-5.89l1.53-4.625h5.047c3.136 0 5.23.458 6.281 1.375a3.773 3.773 0 011.22 1.992c.197.797.296 2.18.296 4.149V249h-4.047zm-24.625 0l1.563-4.625h5.515v-6.078c0-1.646-.354-2.724-1.062-3.234-.948-.678-2.224-1.245-3.828-1.704l1.844-3.437c1.729.427 3.296 1.047 4.703 1.86.906.53 1.53 1.182 1.875 1.952.343.771.515 1.922.515 3.453v7.188L149.86 249h-9.578zm-17.906 0l-2.234-17.688 3.921-1.39 1.797 14.453c2.667 0 4.795-.615 6.383-1.844 1.589-1.229 2.383-2.87 2.383-4.922 0-2.24-1.208-3.359-3.625-3.359-.646 0-1.339.104-2.078.313l1.406-4.36a9.102 9.102 0 012.234-.297c1.917 0 3.415.576 4.493 1.727 1.078 1.15 1.617 2.747 1.617 4.789 0 2.292-.698 4.437-2.094 6.437s-3.292 3.568-5.687 4.703c-2.01.959-4.85 1.438-8.516 1.438zm258.422 38v-9.594c0-1.927-.32-3.252-.961-3.976-.64-.724-1.997-1.295-4.07-1.711l2-3.797c2.448.448 4.208 1.15 5.28 2.11.71.635 1.186 1.385 1.43 2.25.245.864.368 2.25.368 4.156V287h-4.047zm-11.844 0v-9.063c0-2.416-.203-3.856-.61-4.32-.406-.463-1.682-.695-3.827-.695h-5.891l1.531-4.625h5.047c3.136 0 5.23.458 6.281 1.375a3.773 3.773 0 011.22 1.992c.197.797.296 2.18.296 4.149V287h-4.047zm-29.25 0l1.36-4.14h8.468c-3.833-3.709-6.713-8.162-8.64-13.36l4.093-1.578a28.973 28.973 0 004.938 8.875c1.469-1.781 2.203-3.943 2.203-6.485v-2.015h4.344v1.312c0 3.97-1.36 7.214-4.078 9.735 1.573 1.614 2.974 2.791 4.203 3.531l-1.39 4.125h-15.5zm-20.594 0v-10.031h4.047V287h-4.047zm13.594 0v-9.063c0-2.416-.206-3.856-.617-4.32-.412-.463-1.685-.695-3.82-.695h-12.047l1.547-4.625h11.171c3.136 0 5.23.458 6.282 1.375a3.733 3.733 0 011.234 1.984c.198.792.297 2.177.297 4.156V287h-4.047zm-48.61 2.781l1.563-4.672c1.667 0 3.459-.28 5.375-.843l-3.36-14.985 3.876-1.36 3.265 14.563c1.636-1.24 2.774-2.78 3.415-4.625.64-1.843.96-4.484.96-7.921v-1.641h4.344v1.156c0 3.99-.612 7.318-1.836 9.985-1.224 2.666-3.153 4.88-5.789 6.64-3.698 2.469-7.635 3.703-11.812 3.703zm-14.796-2.39l1.594-4.72c2.041-.228 3.687-.838 4.937-1.827 1.948-1.542 2.922-3.406 2.922-5.594 0-.906-.32-1.52-.96-1.844-.642-.323-1.873-.484-3.696-.484h-5.563v-9.625l4.047-1.36v6.36h4.063c2.5 0 4.242.36 5.226 1.078.985.719 1.477 1.984 1.477 3.797 0 3.437-1.318 6.49-3.953 9.156-2.636 2.667-6 4.354-10.094 5.063zm-15.938-6.657h-4.062c.729-2.666 1.094-4.573 1.094-5.718 0-.823-.36-1.474-1.078-1.954-.72-.479-1.964-.895-3.735-1.25l2.094-3.89c2.552.51 4.33 1.21 5.336 2.101 1.005.891 1.508 2.206 1.508 3.946 0 1.094-.25 2.76-.75 5l-.407 1.765zM236.656 287v-14.078h-9.531l1.547-4.625h16.094l-1.547 4.625h-2.516V287h-4.047zm-12.86-6.266h-4.062c.73-2.666 1.094-4.573 1.094-5.718 0-.823-.36-1.474-1.078-1.954-.719-.479-1.964-.895-3.734-1.25l2.093-3.89c2.552.51 4.331 1.21 5.336 2.101 1.006.891 1.508 2.206 1.508 3.946 0 1.094-.25 2.76-.75 5l-.406 1.765zM196.547 287v-14.078h-9.53l1.547-4.625h16.093l-1.547 4.625h-2.515V287h-4.047zm-28.25 0l1.392-4.234h10.468v-4.157c0-1.948-.192-3.205-.578-3.773-.385-.568-1.385-1.065-3-1.492l-2.984-.781-.235.671c-.135.396-.203.74-.203 1.032 0 1.01.87 1.583 2.61 1.718l-1.078 3.25c-3.5-.323-5.25-1.671-5.25-4.046 0-.917.374-2.438 1.125-4.563l.968-2.703 7.125 1.734c2.313.563 3.815 1.284 4.508 2.164.693.88 1.04 2.503 1.04 4.868v6.078L182.796 287h-14.5zm-8.75 0v-14.078h-9.53l1.547-4.625h16.093l-1.547 4.625h-2.515V287h-4.047zm-28.25 0l1.392-4.234h10.468v-4.157c0-1.948-.192-3.205-.578-3.773-.385-.568-1.385-1.065-3-1.492l-2.984-.781-.235.671c-.135.396-.203.74-.203 1.032 0 1.01.87 1.583 2.61 1.718l-1.078 3.25c-3.5-.323-5.25-1.671-5.25-4.046 0-.917.374-2.438 1.125-4.563l.968-2.703 7.125 1.734c2.313.563 3.815 1.284 4.508 2.164.693.88 1.04 2.503 1.04 4.868v6.078L145.796 287h-14.5zm-7.155 4.625v-14.281c0-2.032-.36-3.344-1.079-3.938-1.041-.875-2.328-1.552-3.859-2.031l1.86-3.453c1.875.562 3.53 1.37 4.968 2.422.834.614 1.401 1.364 1.703 2.25.302.885.454 2.255.454 4.11v14.921h-4.047zM426.797 325v-10.031h4.047V325h-4.047zm13.594 0v-9.063c0-2.416-.206-3.856-.618-4.32-.411-.463-1.684-.695-3.82-.695h-12.047l1.547-4.625h11.172c3.135 0 5.23.458 6.281 1.375a3.733 3.733 0 011.235 1.984c.198.792.296 2.177.296 4.156V325h-4.046zm-36.422 0v-.516c0-2.677.281-4.971.844-6.882.562-1.912 1.51-3.8 2.843-5.664l-.703-.672c-1.135-1.063-2.161-1.948-3.078-2.657l3.688-2.687c2.447 1.937 5.036 4.51 7.765 7.719.625-1.084 1.04-2.032 1.242-2.844.203-.813.305-1.927.305-3.344v-1.156h4.328v.906c0 3.521-1.182 6.568-3.547 9.14a41.618 41.618 0 014.422 6.47l-3.484 2.578c-2.063-3.709-4.865-7.355-8.406-10.938-1.26 1.958-1.891 4.948-1.891 8.969V325h-4.328zm-4.938-6.266h-4.062c.729-2.666 1.094-4.573 1.094-5.718 0-.823-.36-1.474-1.079-1.954-.718-.479-1.963-.895-3.734-1.25l2.094-3.89c2.552.51 4.33 1.21 5.336 2.101 1.005.891 1.507 2.206 1.507 3.946 0 1.094-.25 2.76-.75 5l-.406 1.765zM376.86 325l1.563-4.625h5.515v-6.078c0-1.646-.354-2.724-1.062-3.235-.948-.677-2.224-1.244-3.828-1.703l1.844-3.437c1.729.427 3.296 1.047 4.703 1.86.906.53 1.531 1.182 1.875 1.952.344.771.515 1.922.515 3.454v7.187L386.438 325h-9.579zm-17.906 0l-2.234-17.688 3.922-1.39 1.796 14.453c2.667 0 4.795-.615 6.383-1.844 1.589-1.229 2.383-2.87 2.383-4.922 0-2.24-1.208-3.359-3.625-3.359-.646 0-1.338.104-2.078.313l1.406-4.36a9.102 9.102 0 012.235-.297c1.916 0 3.414.576 4.492 1.727 1.078 1.15 1.617 2.747 1.617 4.789 0 2.292-.698 4.437-2.094 6.437s-3.291 3.568-5.687 4.704c-2.01.958-4.85 1.437-8.516 1.437zm-9.937 0v-9.063c0-2.416-.203-3.856-.61-4.32-.406-.463-1.682-.695-3.828-.695h-5.89l1.53-4.625h5.048c3.135 0 5.229.458 6.28 1.375a3.773 3.773 0 011.22 1.992c.198.797.296 2.18.296 4.149V325h-4.046zm-24.625 0l1.562-4.625h5.516v-6.078c0-1.646-.354-2.724-1.063-3.235-.948-.677-2.224-1.244-3.828-1.703l1.844-3.437c1.729.427 3.297 1.047 4.703 1.86.906.53 1.531 1.182 1.875 1.952.344.771.516 1.922.516 3.454v7.187L333.969 325h-9.578zm-17.907 0l-2.234-17.688 3.922-1.39 1.797 14.453c2.666 0 4.794-.615 6.383-1.844 1.588-1.229 2.382-2.87 2.382-4.922 0-2.24-1.208-3.359-3.625-3.359-.645 0-1.338.104-2.078.313l1.406-4.36a9.102 9.102 0 012.235-.297c1.917 0 3.414.576 4.492 1.727 1.078 1.15 1.617 2.747 1.617 4.789 0 2.292-.698 4.437-2.094 6.437-1.395 2-3.291 3.568-5.687 4.704-2.01.958-4.849 1.437-8.516 1.437zm-32.359 0l1.547-4.625h9.64v-4.438c0-2.416-.203-3.856-.609-4.32-.406-.463-1.682-.695-3.828-.695h-5.828l1.547-4.625h4.953c3.135 0 5.229.458 6.281 1.375a3.734 3.734 0 011.235 1.992c.197.797.296 2.18.296 4.149v6.562h2.5L290.33 325h-16.204zm-19.219 0l1.36-4.14h8.468c-3.833-3.709-6.713-8.162-8.64-13.36l4.094-1.578a28.973 28.973 0 004.937 8.875c1.469-1.781 2.203-3.943 2.203-6.485v-2.015h4.344v1.312c0 3.97-1.36 7.214-4.078 9.735 1.573 1.614 2.974 2.791 4.203 3.531l-1.39 4.125h-15.5zm-8.687 0v-14.078h-9.531l1.546-4.625h16.094l-1.547 4.625h-2.515V325h-4.047zm-40.422 0v-10.031h4.047V325h-4.047zm13.594 0v-9.063c0-2.416-.206-3.856-.618-4.32-.411-.463-1.684-.695-3.82-.695h-12.047l1.547-4.625h11.172c3.135 0 5.23.458 6.281 1.375a3.733 3.733 0 011.235 1.984c.198.792.297 2.177.297 4.156V325h-4.047zm-32.813.39l1.594-4.718c2.042-.23 3.687-.839 4.937-1.828 1.948-1.542 2.922-3.406 2.922-5.594 0-.906-.32-1.52-.96-1.844-.641-.323-1.873-.484-3.696-.484h-5.563v-9.625l4.047-1.36v6.36h4.063c2.5 0 4.242.36 5.226 1.078.985.719 1.477 1.984 1.477 3.797 0 3.437-1.318 6.49-3.953 9.156-2.636 2.667-6 4.354-10.094 5.063zm-21.125 4.235v-14.61h4.047v14.61h-4.047zm-2.516-18.703l1.547-4.625h10.844c1.99 0 3.39.088 4.203.265.813.178 1.495.542 2.047 1.094.802.813 1.203 1.98 1.203 3.5 0 3.052-1.12 5.901-3.36 8.547-2.239 2.646-5.13 4.537-8.671 5.672l1.672-4.969c1.656-.469 3.036-1.383 4.14-2.742 1.105-1.36 1.657-2.82 1.657-4.383 0-.937-.328-1.565-.985-1.883-.656-.317-1.958-.476-3.906-.476h-10.39zM155.625 325v-9.594c0-1.927-.32-3.252-.96-3.976-.642-.724-1.998-1.295-4.071-1.711l2-3.797c2.448.448 4.208 1.15 5.281 2.11.708.635 1.185 1.385 1.43 2.25.244.864.367 2.25.367 4.156V325h-4.047zm-25.516 0v-14.078h-2.53l1.562-4.625h10.89c3.136 0 5.23.458 6.281 1.375a3.734 3.734 0 011.235 1.992c.198.797.297 2.18.297 4.149V325h-4.047v-9.063c0-2.416-.203-3.856-.61-4.32-.406-.463-1.682-.695-3.828-.695h-5.203V325h-4.047zm-9.656 0v-5.016h5.016V325h-5.016zm249.906 38v-10.031h4.047V363h-4.047zm13.594 0v-9.063c0-2.416-.206-3.856-.617-4.32-.412-.463-1.685-.695-3.82-.695h-12.047l1.547-4.625h11.171c3.136 0 5.23.458 6.282 1.375a3.733 3.733 0 011.234 1.984c.198.792.297 2.177.297 4.156V363h-4.047zm-36.86 0l-2.202-17.5 3.921-1.578 1.172 9.25c1.136-.281 1.933-.945 2.391-1.992.458-1.047.688-2.716.688-5.008v-1.875h4.343v1.719c0 3.093-.565 5.445-1.695 7.054-1.13 1.61-2.92 2.607-5.367 2.993l.281 2.312c2.719 0 4.89-.453 6.516-1.36 2.843-1.583 4.265-5.192 4.265-10.827v-1.891h4.328v1.562c0 5.615-1.58 9.875-4.742 12.782-3.161 2.906-7.794 4.359-13.898 4.359zm-21.937 0l1.39-4.234h10.47v-4.157c0-1.948-.193-3.205-.579-3.773-.385-.568-1.385-1.065-3-1.492l-2.984-.781-.234.671c-.136.396-.203.74-.203 1.032 0 1.01.87 1.583 2.609 1.718l-1.078 3.25c-3.5-.323-5.25-1.671-5.25-4.046 0-.917.375-2.438 1.125-4.563l.969-2.703 7.125 1.734c2.312.563 3.815 1.284 4.507 2.164.693.88 1.04 2.503 1.04 4.868v6.078L339.656 363h-14.5zm-20.656 0v-10.031h4.047V363H304.5zm13.594 0v-9.063c0-2.416-.206-3.856-.617-4.32-.412-.463-1.685-.695-3.82-.695h-12.048l1.547-4.625h11.172c3.136 0 5.23.458 6.281 1.375a3.733 3.733 0 011.235 1.984c.198.792.297 2.177.297 4.156V363h-4.047zm-48.14 0l2.265-8.688c.416-1.593.625-2.692.625-3.296 0-1.24-1.058-2.907-3.172-5l3.61-2.094c1.145.958 2.124 2.265 2.937 3.922 1.666-2.615 3.666-3.922 6-3.922 1.76 0 3.166.67 4.219 2.008 1.052 1.338 1.677 3.257 1.875 5.757l.53 6.688-1.53 4.625h-9.032l1.547-4.625h4.922l-.36-4.797c-.25-3.354-1.348-5.031-3.296-5.031-1.125 0-2.07.56-2.836 1.68-.766 1.12-1.498 3.007-2.195 5.664L274.188 363h-4.235zm-7.376 0v-9.063c0-2.416-.203-3.856-.61-4.32-.406-.463-1.682-.695-3.827-.695h-5.891l1.531-4.625h5.047c3.136 0 5.23.458 6.281 1.375a3.773 3.773 0 011.22 1.992c.197.797.296 2.18.296 4.149V363h-4.047zm-31.14 0v-14.078h-2.532l1.563-4.625h10.89c3.136 0 5.23.458 6.282 1.375a3.734 3.734 0 011.234 1.992c.198.797.297 2.18.297 4.149V363h-4.047v-9.063c0-2.416-.203-3.856-.61-4.32-.406-.463-1.682-.695-3.827-.695h-5.204V363h-4.047zm-6.344-6.266h-4.063c.73-2.666 1.094-4.573 1.094-5.718 0-.823-.36-1.474-1.078-1.954-.719-.479-1.964-.895-3.734-1.25l2.093-3.89c2.552.51 4.331 1.21 5.336 2.101s1.508 2.206 1.508 3.946c0 1.094-.25 2.76-.75 5l-.406 1.765zM198.204 363l1.546-4.625h9.64v-4.438c0-2.416-.202-3.856-.609-4.32-.406-.463-1.682-.695-3.828-.695h-5.828l1.547-4.625h4.953c3.135 0 5.23.458 6.281 1.375a3.734 3.734 0 011.235 1.992c.198.797.297 2.18.297 4.149v6.562h2.5L214.405 363h-16.203zm-21.032 0v-10.031h4.047V363h-4.047zm13.594 0v-9.063c0-2.416-.206-3.856-.618-4.32-.411-.463-1.684-.695-3.82-.695h-12.047l1.547-4.625H187c3.135 0 5.23.458 6.281 1.375a3.733 3.733 0 011.235 1.984c.198.792.297 2.177.297 4.156V363h-4.047zm-46.97 0v-.516c0-2.677.282-4.971.845-6.882.562-1.912 1.51-3.8 2.843-5.664l-.703-.672c-1.135-1.063-2.161-1.948-3.078-2.657l3.688-2.687c2.448 1.937 5.036 4.51 7.765 7.719.625-1.084 1.04-2.032 1.242-2.844.204-.813.305-1.927.305-3.344v-1.156h4.328v.906c0 3.521-1.182 6.568-3.547 9.14a41.618 41.618 0 014.422 6.47l-3.484 2.578c-2.063-3.709-4.865-7.355-8.406-10.938-1.26 1.958-1.891 4.948-1.891 8.969V363h-4.328zm-24.265 0l1.547-4.625h4.031c-.823-2.115-1.234-4.708-1.234-7.781v-1.672h-2.328l1.547-4.625h8.578c3.135 0 5.229.458 6.281 1.375a3.733 3.733 0 011.234 1.984c.198.792.297 2.177.297 4.156V363h-4.047v-9.063c0-2.416-.203-3.856-.609-4.32-.406-.463-1.682-.695-3.828-.695h-3.063v1.375c0 3.354.48 6.047 1.438 8.078L127.844 363h-8.313zm285.016 31.734h-4.063c.73-2.666 1.094-4.573 1.094-5.718 0-.823-.36-1.474-1.078-1.954-.719-.479-1.964-.895-3.734-1.25l2.093-3.89c2.552.51 4.331 1.21 5.336 2.101 1.006.891 1.508 2.206 1.508 3.946 0 1.094-.25 2.76-.75 5l-.406 1.765zM378.812 401l1.532-4.625h8.734c.865-1.99 1.297-3.682 1.297-5.078 0-1.646-.38-2.787-1.14-3.422-.761-.635-2.13-.953-4.11-.953h-5.406l1.531-4.625h5.094c1.781 0 3.15.156 4.11.469.957.312 1.77.87 2.437 1.671 1.062 1.271 1.593 3.063 1.593 5.375 0 1.844-.49 4.032-1.468 6.563L391.5 401h-12.688zm-7.453 0v-9.594c0-1.927-.32-3.252-.96-3.976-.641-.724-1.998-1.295-4.07-1.711l2-3.797c2.447.448 4.207 1.15 5.28 2.11.709.635 1.185 1.385 1.43 2.25.245.864.367 2.25.367 4.156V401h-4.047zm-20.843.39l1.593-4.718c2.042-.23 3.688-.839 4.938-1.828 1.948-1.542 2.922-3.406 2.922-5.594 0-.906-.32-1.52-.961-1.844-.64-.323-1.873-.484-3.695-.484h-5.563v-9.625l4.047-1.36v6.36h4.062c2.5 0 4.243.36 5.227 1.078.984.719 1.476 1.984 1.476 3.797 0 3.437-1.317 6.49-3.953 9.156-2.635 2.667-6 4.354-10.093 5.063zm-8.891-.39v-9.594c0-1.927-.32-3.252-.96-3.976-.642-.724-1.998-1.295-4.071-1.711l2-3.797c2.448.448 4.208 1.15 5.281 2.11.708.635 1.185 1.385 1.43 2.25.244.864.367 2.25.367 4.156V401h-4.047zm-27.75 0l1.547-4.625h4.031c-.823-2.115-1.234-4.708-1.234-7.781v-1.672h-2.328l1.546-4.625h8.579c3.135 0 5.229.458 6.28 1.375a3.733 3.733 0 011.235 1.984c.198.792.297 2.177.297 4.156V401h-4.047v-9.063c0-2.416-.203-3.856-.61-4.32-.405-.463-1.681-.695-3.827-.695h-3.063v1.375c0 3.354.48 6.047 1.438 8.078L322.188 401h-8.313zm-30.688 0l-2.203-17.5 3.922-1.578 1.172 9.25c1.136-.281 1.932-.945 2.39-1.992.46-1.047.688-2.716.688-5.008v-1.875h4.344v1.719c0 3.093-.565 5.445-1.695 7.054-1.13 1.61-2.92 2.607-5.368 2.993l.282 2.312c2.719 0 4.89-.453 6.515-1.36 2.844-1.583 4.266-5.192 4.266-10.827v-1.891h4.328v1.562c0 5.615-1.58 9.875-4.742 12.782-3.162 2.906-7.794 4.359-13.899 4.359zm-21.937 0l1.39-4.234h10.47v-4.157c0-1.948-.193-3.205-.579-3.773-.385-.568-1.385-1.065-3-1.492l-2.984-.781-.235.671c-.135.396-.203.74-.203 1.032 0 1.01.87 1.583 2.61 1.718l-1.078 3.25c-3.5-.323-5.25-1.671-5.25-4.046 0-.917.375-2.438 1.125-4.563l.968-2.703 7.125 1.734c2.313.563 3.815 1.284 4.508 2.164.693.88 1.04 2.503 1.04 4.868v6.078L275.75 401h-14.5zm-22.969 0l1.547-4.625h4.031c-.823-2.115-1.234-4.708-1.234-7.781v-1.672h-2.328l1.547-4.625h8.578c3.135 0 5.229.458 6.281 1.375a3.733 3.733 0 011.235 1.984c.197.792.296 2.177.296 4.156V401h-4.046v-9.063c0-2.416-.204-3.856-.61-4.32-.406-.463-1.682-.695-3.828-.695h-3.063v1.375c0 3.354.48 6.047 1.438 8.078L246.594 401h-8.313zm-31.234 0v-10.031h4.047V401h-4.047zm13.594 0v-9.063c0-2.416-.206-3.856-.618-4.32-.411-.463-1.684-.695-3.82-.695h-12.047l1.547-4.625h11.172c3.135 0 5.23.458 6.281 1.375a3.733 3.733 0 011.235 1.984c.198.792.297 2.177.297 4.156V401h-4.047zm-39.72 0l1.548-4.625h4.031c-.823-2.115-1.234-4.708-1.234-7.781v-1.672h-2.328l1.546-4.625h8.578c3.136 0 5.23.458 6.282 1.375a3.733 3.733 0 011.234 1.984c.198.792.297 2.177.297 4.156V401h-4.047v-9.063c0-2.416-.203-3.856-.61-4.32-.406-.463-1.682-.695-3.827-.695h-3.063v1.375c0 3.354.48 6.047 1.438 8.078L189.234 401h-8.312zm-13.171.39l-1.594-3.859c2.334-1.135 4.724-2.724 7.172-4.765l-.39-2.485c-.23-1.427-.566-2.398-1.008-2.914-.443-.515-1.42-1.075-2.93-1.68l-.89-.359 1.75-3.406c2.562.844 4.317 1.687 5.265 2.531.625.563 1.055 1.177 1.29 1.844.233.667.517 2.094.85 4.281l.61 4c.448 2.938.89 5.078 1.328 6.422h-4.36c-.28-1.115-.577-2.594-.89-4.438-1.542 1.553-3.61 3.162-6.203 4.829zm-5.375-6.656h-4.063c.73-2.666 1.094-4.573 1.094-5.718 0-.823-.36-1.474-1.078-1.954-.719-.479-1.963-.895-3.734-1.25l2.094-3.89c2.552.51 4.33 1.21 5.335 2.101 1.006.891 1.508 2.206 1.508 3.946 0 1.094-.25 2.76-.75 5l-.406 1.765zM147.281 401v-9.594c0-1.927-.32-3.252-.96-3.976-.641-.724-1.998-1.295-4.071-1.711l2-3.797c2.448.448 4.208 1.15 5.281 2.11.709.635 1.185 1.385 1.43 2.25.245.864.367 2.25.367 4.156V401h-4.047zm-27.75 0l1.547-4.625h4.031c-.823-2.115-1.234-4.708-1.234-7.781v-1.672h-2.328l1.547-4.625h8.578c3.135 0 5.229.458 6.281 1.375a3.733 3.733 0 011.234 1.984c.198.792.297 2.177.297 4.156V401h-4.047v-9.063c0-2.416-.203-3.856-.609-4.32-.406-.463-1.682-.695-3.828-.695h-3.063v1.375c0 3.354.48 6.047 1.438 8.078L127.844 401h-8.313zm218.406 38v-10.031h4.047V439h-4.046zm13.594 0v-9.063c0-2.416-.205-3.856-.617-4.32-.411-.463-1.685-.695-3.82-.695h-12.047l1.547-4.625h11.172c3.135 0 5.229.458 6.28 1.375a3.733 3.733 0 011.235 1.984c.198.792.297 2.177.297 4.156V439h-4.047zm-35.687 0l1.547-4.625h9.64v-4.438c0-2.416-.203-3.856-.61-4.32-.405-.463-1.681-.695-3.827-.695h-5.828l1.546-4.625h4.954c3.135 0 5.229.458 6.28 1.375a3.734 3.734 0 011.235 1.992c.198.797.297 2.18.297 4.149v6.562h2.5L332.047 439h-16.203zm-18.61 0l-1.765-14.078h-2.516l1.547-4.625h11.078c2.094 0 3.578.078 4.453.234.875.157 1.573.469 2.094.938.875.791 1.313 2.047 1.313 3.765 0 2.292-.662 4.506-1.985 6.641s-3.104 3.854-5.344 5.156c-2.26 1.313-5.218 1.969-8.875 1.969zm3.454-4.625c2.333-.177 4.088-.687 5.265-1.531 1.938-1.407 2.906-3.25 2.906-5.531 0-.938-.328-1.57-.984-1.899-.656-.328-1.948-.492-3.875-.492h-4.469l1.156 9.453zm-11.125-1.64H285.5c.73-2.667 1.094-4.574 1.094-5.72 0-.822-.36-1.473-1.078-1.952-.72-.48-1.964-.896-3.735-1.25l2.094-3.891c2.552.51 4.33 1.21 5.336 2.101 1.005.891 1.508 2.206 1.508 3.946 0 1.094-.25 2.76-.75 5l-.406 1.765zM263.375 439l-1.766-14.078h-2.515l1.547-4.625h11.078c2.094 0 3.578.078 4.453.234.875.157 1.573.469 2.094.938.875.791 1.312 2.047 1.312 3.765 0 2.292-.661 4.506-1.984 6.641s-3.104 3.854-5.344 5.156c-2.26 1.313-5.219 1.969-8.875 1.969zm3.453-4.625c2.333-.177 4.089-.687 5.266-1.531 1.937-1.407 2.906-3.25 2.906-5.531 0-.938-.328-1.57-.984-1.899-.657-.328-1.948-.492-3.875-.492h-4.47l1.157 9.453zm-11.125-1.64h-4.062c.729-2.667 1.093-4.574 1.093-5.72 0-.822-.359-1.473-1.078-1.952-.719-.48-1.963-.896-3.734-1.25l2.094-3.891c2.552.51 4.33 1.21 5.336 2.101 1.005.891 1.507 2.206 1.507 3.946 0 1.094-.25 2.76-.75 5l-.406 1.765zM224.781 439l1.547-4.625h4.031c-.823-2.115-1.234-4.708-1.234-7.781v-1.672h-2.328l1.547-4.625h8.578c3.135 0 5.229.458 6.281 1.375a3.733 3.733 0 011.234 1.984c.198.792.297 2.177.297 4.156V439h-4.047v-9.063c0-2.416-.203-3.856-.609-4.32-.406-.463-1.682-.695-3.828-.695h-3.063v1.375c0 3.354.48 6.047 1.438 8.078L233.094 439h-8.313zm-102.89 0v-23.125h4.812v9.39h9.563v-9.39h4.812V439h-4.812v-10.547h-9.563V439h-4.812zm30.703 0v-19.953h-8.281v-3.172h21.39v3.172h-8.281V439h-4.828zm16.344 0v-23.125h6.375l5.562 16.266 5.734-16.266h5.594V439h-4.437v-17.453l-5.641 15.906h-3.875l-5.531-16.14V439h-3.781zm29.046 0v-23.125h4.813v19.844h10.422V439h-15.235zm204.094 38v-9.594c0-1.927-.32-3.252-.96-3.976-.641-.724-1.998-1.295-4.071-1.711l2-3.797c2.448.448 4.208 1.15 5.281 2.11.708.635 1.185 1.385 1.43 2.25.245.864.367 2.25.367 4.156V477h-4.047zm-25.625 0l2.266-8.688c.416-1.593.625-2.692.625-3.296 0-1.24-1.058-2.907-3.172-5l3.61-2.094c1.145.958 2.124 2.265 2.937 3.922 1.666-2.615 3.666-3.922 6-3.922 1.76 0 3.166.67 4.219 2.008 1.052 1.338 1.677 3.257 1.875 5.757l.53 6.688-1.53 4.625h-9.032l1.547-4.625h4.922l-.36-4.797c-.25-3.354-1.348-5.031-3.296-5.031-1.125 0-2.07.56-2.836 1.68-.766 1.12-1.498 3.007-2.195 5.664L380.688 477h-4.235zm-19.984 0v-.516c0-2.677.281-4.971.844-6.882.562-1.912 1.51-3.8 2.843-5.664l-.703-.672c-1.135-1.063-2.161-1.948-3.078-2.657l3.688-2.687c2.447 1.937 5.036 4.51 7.765 7.719.625-1.084 1.04-2.032 1.242-2.844.203-.813.305-1.927.305-3.344v-1.156h4.328v.906c0 3.521-1.182 6.568-3.547 9.14a41.618 41.618 0 014.422 6.47l-3.484 2.578c-2.063-3.709-4.865-7.355-8.406-10.938-1.26 1.958-1.891 4.948-1.891 8.969V477h-4.328zm-20.328 0l1.39-4.234H348v-4.157c0-1.948-.193-3.205-.578-3.773-.386-.568-1.386-1.065-3-1.492l-2.985-.781-.234.671c-.135.396-.203.74-.203 1.032 0 1.01.87 1.583 2.61 1.718l-1.079 3.25c-3.5-.323-5.25-1.671-5.25-4.046 0-.917.375-2.438 1.125-4.563l.969-2.703 7.125 1.734c2.313.563 3.815 1.284 4.508 2.164.693.88 1.039 2.503 1.039 4.868v6.078L350.64 477h-14.5zm-20.11 0l-2.203-17.5 3.922-1.578 1.172 9.25c1.135-.281 1.932-.945 2.39-1.992.459-1.047.688-2.716.688-5.008v-1.875h4.344v1.719c0 3.093-.565 5.445-1.696 7.054-1.13 1.61-2.919 2.607-5.367 2.993l.281 2.312c2.72 0 4.891-.453 6.516-1.36 2.844-1.583 4.266-5.192 4.266-10.827v-1.891h4.328v1.562c0 5.615-1.58 9.875-4.742 12.782-3.162 2.906-7.795 4.359-13.899 4.359zm-9.969 0v-9.063c0-2.416-.203-3.856-.609-4.32-.406-.463-1.682-.695-3.828-.695h-5.89l1.53-4.625h5.048c3.135 0 5.229.458 6.28 1.375a3.773 3.773 0 011.22 1.992c.197.797.296 2.18.296 4.149V477h-4.046zm-33.375 0l1.547-4.625h4.032c-.823-2.115-1.235-4.708-1.235-7.781v-1.672h-2.328l1.547-4.625h8.578c3.136 0 5.23.458 6.281 1.375a3.733 3.733 0 011.235 1.984c.198.792.297 2.177.297 4.156V477h-4.047v-9.063c0-2.416-.203-3.856-.61-4.32-.406-.463-1.682-.695-3.828-.695h-3.062v1.375c0 3.354.479 6.047 1.437 8.078L281 477h-8.313zm-29.515 0l1.547-4.625h9.64v-4.438c0-2.416-.203-3.856-.609-4.32-.406-.463-1.682-.695-3.828-.695h-5.828l1.547-4.625h4.953c3.135 0 5.229.458 6.281 1.375a3.734 3.734 0 011.234 1.992c.198.797.297 2.18.297 4.149v6.562h2.5L259.375 477h-16.203zm-18.156 0l1.53-4.625h8.735c.865-1.99 1.297-3.682 1.297-5.078 0-1.646-.38-2.787-1.14-3.422-.76-.635-2.13-.953-4.11-.953h-5.406l1.531-4.625h5.094c1.781 0 3.15.156 4.11.469.958.312 1.77.87 2.437 1.671 1.062 1.271 1.594 3.063 1.594 5.375 0 1.844-.49 4.032-1.47 6.563L237.704 477h-12.687zm-7.547 4.625v-18.703h-10l1.547-4.625h12.5v23.328h-4.047zm-36.453-4.234l1.593-4.72c2.042-.228 3.688-.838 4.938-1.827 1.948-1.542 2.922-3.406 2.922-5.594 0-.906-.32-1.52-.961-1.844-.64-.323-1.873-.484-3.696-.484h-5.562v-9.625l4.047-1.36v6.36h4.062c2.5 0 4.243.36 5.227 1.078.984.719 1.476 1.984 1.476 3.797 0 3.437-1.317 6.49-3.953 9.156-2.635 2.667-6 4.354-10.093 5.063zm-5.391-6.657h-4.063c.73-2.666 1.094-4.573 1.094-5.718 0-.823-.36-1.474-1.078-1.954-.719-.479-1.963-.895-3.734-1.25l2.094-3.89c2.552.51 4.33 1.21 5.335 2.101 1.006.891 1.508 2.206 1.508 3.946 0 1.094-.25 2.76-.75 5l-.406 1.765zM148.828 477l1.36-4.14h8.468c-3.833-3.709-6.713-8.162-8.64-13.36l4.093-1.578a28.973 28.973 0 004.938 8.875c1.469-1.781 2.203-3.943 2.203-6.485v-2.015h4.344v1.312c0 3.97-1.36 7.214-4.078 9.735 1.573 1.614 2.974 2.791 4.203 3.531l-1.39 4.125h-15.5zm-7.078 0v-9.594c0-1.927-.32-3.252-.96-3.976-.642-.724-1.998-1.295-4.071-1.711l2-3.797c2.448.448 4.208 1.15 5.281 2.11.708.635 1.185 1.385 1.43 2.25.244.864.367 2.25.367 4.156V477h-4.047zm-11.844 0v-9.063c0-2.416-.203-3.856-.61-4.32-.405-.463-1.681-.695-3.827-.695h-5.89l1.53-4.625h5.047c3.136 0 5.23.458 6.281 1.375a3.773 3.773 0 011.22 1.992c.197.797.296 2.18.296 4.149V477h-4.047zm207.406 31.734h-4.062c.73-2.666 1.094-4.573 1.094-5.718 0-.823-.36-1.474-1.078-1.954-.72-.479-1.964-.895-3.735-1.25l2.094-3.89c2.552.51 4.33 1.21 5.336 2.101 1.005.891 1.508 2.206 1.508 3.946 0 1.094-.25 2.76-.75 5l-.406 1.765zm-11.593 0h-4.063c.73-2.666 1.094-4.573 1.094-5.718 0-.823-.36-1.474-1.078-1.954-.719-.479-1.964-.895-3.735-1.25l2.094-3.89c2.552.51 4.331 1.21 5.336 2.101s1.508 2.206 1.508 3.946c0 1.094-.25 2.76-.75 5l-.406 1.765zM297.656 515l-2.203-17.5 3.922-1.578 1.172 9.25c1.135-.281 1.932-.945 2.39-1.992.459-1.047.688-2.716.688-5.008v-1.875h4.344v1.719c0 3.093-.565 5.445-1.696 7.054-1.13 1.61-2.919 2.607-5.367 2.993l.281 2.312c2.72 0 4.891-.453 6.516-1.36 2.844-1.583 4.266-5.192 4.266-10.827v-1.891h4.328v1.562c0 5.615-1.58 9.875-4.742 12.782-3.162 2.906-7.795 4.359-13.899 4.359zm-10.047 0v-9.594c0-1.927-.32-3.252-.96-3.976-.641-.724-1.998-1.295-4.07-1.711l2-3.797c2.447.448 4.207 1.15 5.28 2.11.709.635 1.185 1.385 1.43 2.25.245.864.367 2.25.367 4.156V515h-4.047zm-25.625 0l2.266-8.688c.417-1.593.625-2.692.625-3.296 0-1.24-1.057-2.907-3.172-5l3.61-2.094c1.145.958 2.124 2.265 2.937 3.922 1.667-2.615 3.667-3.922 6-3.922 1.76 0 3.167.67 4.219 2.008 1.052 1.338 1.677 3.257 1.875 5.757l.531 6.688-1.531 4.625h-9.031l1.546-4.625h4.922l-.36-4.797c-.25-3.354-1.348-5.031-3.296-5.031-1.125 0-2.07.56-2.836 1.68-.766 1.12-1.497 3.007-2.195 5.664L266.219 515h-4.235zm-3.953-6.266h-4.062c.729-2.666 1.094-4.573 1.094-5.718 0-.823-.36-1.474-1.079-1.954-.718-.479-1.963-.895-3.734-1.25l2.094-3.89c2.552.51 4.33 1.21 5.336 2.101 1.005.891 1.507 2.206 1.507 3.946 0 1.094-.25 2.76-.75 5l-.406 1.765zM219.86 515v-.516c0-2.677.282-4.971.844-6.882.563-1.912 1.51-3.8 2.844-5.664l-.703-.672c-1.136-1.063-2.162-1.948-3.078-2.657l3.687-2.687c2.448 1.937 5.037 4.51 7.766 7.719.625-1.084 1.039-2.032 1.242-2.844.203-.813.305-1.927.305-3.344v-1.156h4.328v.906c0 3.521-1.183 6.568-3.547 9.14a41.618 41.618 0 014.422 6.47l-3.485 2.578c-2.062-3.709-4.864-7.355-8.406-10.938-1.26 1.958-1.89 4.948-1.89 8.969V515h-4.329zm-4.937-6.266h-4.063c.73-2.666 1.094-4.573 1.094-5.718 0-.823-.36-1.474-1.078-1.954-.719-.479-1.964-.895-3.734-1.25l2.093-3.89c2.552.51 4.331 1.21 5.336 2.101 1.006.891 1.508 2.206 1.508 3.946 0 1.094-.25 2.76-.75 5l-.406 1.765zM192.75 515l1.563-4.625h5.515v-6.078c0-1.646-.354-2.724-1.062-3.235-.948-.677-2.224-1.244-3.828-1.703l1.843-3.437c1.73.427 3.297 1.047 4.703 1.86.907.53 1.532 1.182 1.875 1.952.344.771.516 1.922.516 3.454v7.187L202.328 515h-9.578zm-17.906 0l-2.235-17.688 3.922-1.39 1.797 14.453c2.667 0 4.794-.615 6.383-1.844 1.588-1.229 2.383-2.87 2.383-4.922 0-2.24-1.209-3.359-3.625-3.359-.646 0-1.339.104-2.078.313l1.406-4.36a9.102 9.102 0 012.234-.297c1.917 0 3.414.576 4.492 1.727 1.079 1.15 1.618 2.747 1.618 4.789 0 2.292-.698 4.437-2.094 6.437s-3.292 3.568-5.688 4.704c-2.01.958-4.849 1.437-8.515 1.437zm-9.938 0v-9.063c0-2.416-.203-3.856-.61-4.32-.405-.463-1.681-.695-3.827-.695h-5.89l1.53-4.625h5.047c3.136 0 5.23.458 6.281 1.375a3.773 3.773 0 011.22 1.992c.197.797.296 2.18.296 4.149V515h-4.047zm-24.625 0l1.563-4.625h5.515v-6.078c0-1.646-.354-2.724-1.062-3.235-.948-.677-2.224-1.244-3.828-1.703l1.844-3.437c1.729.427 3.296 1.047 4.703 1.86.906.53 1.53 1.182 1.875 1.952.343.771.515 1.922.515 3.454v7.187L149.86 515h-9.578zm-17.906 0l-2.234-17.688 3.921-1.39 1.797 14.453c2.667 0 4.795-.615 6.383-1.844 1.589-1.229 2.383-2.87 2.383-4.922 0-2.24-1.208-3.359-3.625-3.359-.646 0-1.339.104-2.078.313l1.406-4.36a9.102 9.102 0 012.234-.297c1.917 0 3.415.576 4.493 1.727 1.078 1.15 1.617 2.747 1.617 4.789 0 2.292-.698 4.437-2.094 6.437s-3.292 3.568-5.687 4.704c-2.01.958-4.85 1.437-8.516 1.437zm212.14 38l2.266-8.688c.417-1.593.625-2.692.625-3.296 0-1.24-1.057-2.907-3.172-5l3.61-2.094c1.146.958 2.125 2.265 2.937 3.922 1.667-2.615 3.667-3.922 6-3.922 1.76 0 3.167.67 4.219 2.008 1.052 1.338 1.677 3.257 1.875 5.758l.531 6.687-1.531 4.625h-9.031l1.547-4.625h4.921l-.359-4.797c-.25-3.354-1.349-5.031-3.297-5.031-1.125 0-2.07.56-2.836 1.68-.765 1.12-1.497 3.007-2.195 5.664L338.75 553h-4.234zm-23.28 0l1.546-4.625h4.031c-.822-2.115-1.234-4.708-1.234-7.781v-1.672h-2.328l1.547-4.625h8.578c3.135 0 5.23.458 6.281 1.375a3.733 3.733 0 011.235 1.984c.198.792.296 2.177.296 4.157V553h-4.046v-9.063c0-2.416-.203-3.856-.61-4.32-.406-.463-1.682-.695-3.828-.695h-3.062v1.375c0 3.354.479 6.047 1.437 8.078L319.547 553h-8.313zm-7.173 0v-9.594c0-1.927-.32-3.252-.96-3.976-.641-.724-1.998-1.295-4.07-1.711l2-3.797c2.447.448 4.208 1.15 5.28 2.11.709.635 1.185 1.385 1.43 2.25.245.864.367 2.25.367 4.155V553h-4.046zm-25.515 0v-14.078h-2.531l1.562-4.625h10.89c3.136 0 5.23.458 6.282 1.375a3.734 3.734 0 011.234 1.992c.198.797.297 2.18.297 4.149V553h-4.047v-9.063c0-2.416-.203-3.856-.609-4.32-.406-.463-1.682-.695-3.828-.695h-5.203V553h-4.047zm-20.485 0l1.532-4.625h8.734c.865-1.99 1.297-3.682 1.297-5.078 0-1.646-.38-2.787-1.14-3.422-.761-.635-2.13-.953-4.11-.953h-5.406l1.531-4.625h5.094c1.781 0 3.15.156 4.11.469.957.312 1.77.87 2.437 1.672 1.062 1.27 1.593 3.062 1.593 5.375 0 1.843-.49 4.03-1.468 6.562L270.75 553h-12.688zm-21.156 0l2.266-8.688c.417-1.593.625-2.692.625-3.296 0-1.24-1.057-2.907-3.172-5l3.61-2.094c1.145.958 2.124 2.265 2.937 3.922 1.667-2.615 3.667-3.922 6-3.922 1.76 0 3.167.67 4.219 2.008 1.052 1.338 1.677 3.257 1.875 5.758l.53 6.687-1.53 4.625h-9.032l1.547-4.625h4.922l-.36-4.797c-.25-3.354-1.348-5.031-3.296-5.031-1.125 0-2.07.56-2.836 1.68-.766 1.12-1.497 3.007-2.195 5.664L241.14 553h-4.235zm-3.953-6.266h-4.062c.729-2.666 1.093-4.573 1.093-5.718 0-.823-.359-1.474-1.078-1.953-.719-.48-1.963-.896-3.734-1.25l2.094-3.891c2.552.51 4.33 1.21 5.336 2.101 1.005.891 1.507 2.206 1.507 3.946 0 1.094-.25 2.76-.75 5l-.406 1.765zM204.641 553v-14.078h-2.485l1.547-4.625h10.484c3.136 0 5.23.458 6.282 1.375a3.734 3.734 0 011.234 1.992c.198.797.297 2.18.297 4.149v6.562L220.453 553h-15.812zm4.062-4.625h9.25v-4.438c0-2.427-.203-3.87-.61-4.328-.406-.458-1.682-.687-3.827-.687h-4.813v9.453zm-20.953-1.64h-4.063c.73-2.667 1.094-4.574 1.094-5.72 0-.822-.36-1.473-1.078-1.952-.719-.48-1.963-.896-3.734-1.25l2.094-3.891c2.552.51 4.33 1.21 5.335 2.101 1.006.891 1.508 2.206 1.508 3.946 0 1.094-.25 2.76-.75 5l-.406 1.765zM172.656 553v-9.594c0-1.927-.32-3.252-.96-3.976-.641-.724-1.998-1.295-4.071-1.711l2-3.797c2.448.448 4.208 1.15 5.281 2.11.709.635 1.185 1.385 1.43 2.25.245.864.367 2.25.367 4.155V553h-4.047zm-27.75 0l1.547-4.625h4.031c-.823-2.115-1.234-4.708-1.234-7.781v-1.672h-2.328l1.547-4.625h8.578c3.135 0 5.229.458 6.281 1.375a3.733 3.733 0 011.234 1.984c.198.792.297 2.177.297 4.157V553h-4.047v-9.063c0-2.416-.203-3.856-.609-4.32-.406-.463-1.682-.695-3.828-.695h-3.063v1.375c0 3.354.48 6.047 1.438 8.078L153.219 553h-8.313zm-7.094 0v-9.063c0-2.416-.203-3.856-.609-4.32-.406-.463-1.682-.695-3.828-.695h-5.89l1.53-4.625h5.048c3.135 0 5.229.458 6.28 1.375a3.773 3.773 0 011.22 1.992c.197.797.296 2.18.296 4.149V553h-4.047zm-17.359 0v-5.016h5.016V553h-5.016zm322.688 38.39l1.593-4.718c2.042-.23 3.688-.839 4.938-1.828 1.948-1.542 2.922-3.406 2.922-5.594 0-.906-.32-1.52-.961-1.844-.64-.323-1.873-.484-3.695-.484h-5.563v-9.625l4.047-1.36v6.36h4.062c2.5 0 4.243.36 5.227 1.078.984.719 1.476 1.984 1.476 3.797 0 3.437-1.317 6.49-3.953 9.156-2.635 2.667-6 4.354-10.093 5.063zm-22.594-.39l2.265-8.688c.417-1.593.625-2.692.625-3.296 0-1.24-1.057-2.907-3.171-5l3.609-2.094c1.146.958 2.125 2.265 2.938 3.922 1.666-2.615 3.666-3.922 6-3.922 1.76 0 3.166.67 4.218 2.008s1.677 3.257 1.875 5.758l.531 6.687-1.53 4.625h-9.032l1.547-4.625h4.922l-.36-4.797c-.25-3.354-1.349-5.031-3.296-5.031-1.126 0-2.07.56-2.836 1.68-.766 1.12-1.498 3.007-2.196 5.664L424.781 591h-4.234zm-21.625 2.781l1.562-4.672c1.667 0 3.459-.28 5.375-.843L402.5 573.28l3.875-1.36 3.266 14.563c1.635-1.24 2.773-2.78 3.414-4.625.64-1.843.96-4.484.96-7.922v-1.64h4.344v1.156c0 3.99-.612 7.318-1.836 9.985-1.224 2.666-3.153 4.88-5.789 6.64-3.698 2.469-7.635 3.703-11.812 3.703zM380.078 591l-2.203-17.5 3.922-1.578 1.172 9.25c1.135-.281 1.932-.945 2.39-1.992.459-1.047.688-2.716.688-5.008v-1.875h4.344v1.719c0 3.093-.565 5.445-1.696 7.054-1.13 1.61-2.919 2.607-5.367 2.992l.281 2.313c2.72 0 4.891-.453 6.516-1.36 2.844-1.583 4.266-5.192 4.266-10.827v-1.891h4.328v1.562c0 5.615-1.581 9.875-4.742 12.782-3.162 2.906-7.795 4.359-13.899 4.359zm-23.562 0v-10.031h4.046V591h-4.046zm13.593 0v-9.063c0-2.416-.205-3.856-.617-4.32-.411-.463-1.685-.695-3.82-.695h-12.047l1.547-4.625h11.172c3.135 0 5.229.458 6.281 1.375a3.733 3.733 0 011.234 1.984c.198.792.297 2.177.297 4.157V591h-4.047zm-21.78 0h-1.923v-5.016h5.016v3.891c0 4.094-1.672 6.14-5.016 6.14v-1.734c1.282 0 1.922-.927 1.922-2.781v-.5zm-31.204 0l1.531-4.625h8.735c.864-1.99 1.296-3.682 1.296-5.078 0-1.646-.38-2.787-1.14-3.422-.76-.635-2.13-.953-4.11-.953h-5.406l1.531-4.625h5.094c1.782 0 3.151.156 4.11.469.958.312 1.77.87 2.437 1.672 1.063 1.27 1.594 3.062 1.594 5.375 0 1.843-.49 4.03-1.469 6.562L329.813 591h-12.688zm-3.953-6.266h-4.063c.73-2.666 1.094-4.573 1.094-5.718 0-.823-.36-1.474-1.078-1.953-.719-.48-1.964-.896-3.734-1.25l2.093-3.891c2.552.51 4.331 1.21 5.336 2.101 1.006.891 1.508 2.206 1.508 3.946 0 1.094-.25 2.76-.75 5l-.406 1.765zM298.078 591v-9.594c0-1.927-.32-3.252-.96-3.976-.641-.724-1.998-1.295-4.071-1.711l2-3.797c2.448.448 4.208 1.15 5.281 2.11.708.635 1.185 1.385 1.43 2.25.245.864.367 2.25.367 4.155V591h-4.047zm-25.14 0v-14.078h-2.485l1.547-4.625h10.484c3.136 0 5.23.458 6.282 1.375a3.734 3.734 0 011.234 1.992c.198.797.297 2.18.297 4.149v6.562L288.75 591h-15.813zm4.062-4.625h9.25v-4.438c0-2.427-.203-3.87-.61-4.328-.406-.458-1.682-.687-3.827-.687H277v9.453zM265.203 591h-1.922v-5.016h5.016v3.891c0 4.094-1.672 6.14-5.016 6.14v-1.734c1.282 0 1.922-.927 1.922-2.781v-.5zm-20.484 0v-9.063c0-2.416-.203-3.856-.61-4.32-.406-.463-1.682-.695-3.828-.695h-5.89l1.53-4.625h5.048c3.135 0 5.229.458 6.281 1.375a3.773 3.773 0 011.219 1.992c.198.797.297 2.18.297 4.149V591h-4.047zm-17.547 0v-9.594c0-1.927-.32-3.252-.961-3.976-.64-.724-1.997-1.295-4.07-1.711l2-3.797c2.448.448 4.208 1.15 5.28 2.11.71.635 1.186 1.385 1.43 2.25.245.864.368 2.25.368 4.155V591h-4.047zm-23.719 0l1.547-4.625h9.64v-4.438c0-2.416-.202-3.856-.609-4.32-.406-.463-1.682-.695-3.828-.695h-5.828l1.547-4.625h4.953c3.135 0 5.23.458 6.281 1.375a3.734 3.734 0 011.235 1.992c.198.797.297 2.18.297 4.149v6.562h2.5L219.655 591h-16.203zm-30.594 0v-.516c0-2.677.282-4.971.844-6.882.563-1.912 1.51-3.8 2.844-5.664l-.703-.672c-1.136-1.063-2.162-1.948-3.078-2.657l3.687-2.687c2.448 1.937 5.037 4.51 7.766 7.719.625-1.084 1.039-2.032 1.242-2.844.203-.813.305-1.927.305-3.344v-1.156h4.328v.906c0 3.521-1.183 6.568-3.547 9.14a41.618 41.618 0 014.422 6.47l-3.485 2.578c-2.062-3.709-4.864-7.355-8.406-10.938-1.26 1.958-1.89 4.948-1.89 8.969V591h-4.329zm-24.265 0l1.547-4.625h4.03c-.822-2.115-1.233-4.708-1.233-7.781v-1.672h-2.329l1.547-4.625h8.578c3.136 0 5.23.458 6.282 1.375a3.733 3.733 0 011.234 1.984c.198.792.297 2.177.297 4.157V591H164.5v-9.063c0-2.416-.203-3.856-.61-4.32-.406-.463-1.682-.695-3.827-.695H157v1.375c0 3.354.48 6.047 1.438 8.078L156.905 591h-8.312zm-7.094 0v-9.063c0-2.416-.203-3.856-.61-4.32-.406-.463-1.682-.695-3.827-.695h-5.891l1.531-4.625h5.047c3.135 0 5.23.458 6.281 1.375a3.773 3.773 0 011.219 1.992c.198.797.297 2.18.297 4.149V591H141.5zm-14.047-6.266h-4.062c.729-2.666 1.093-4.573 1.093-5.718 0-.823-.359-1.474-1.078-1.953-.719-.48-1.963-.896-3.734-1.25l2.094-3.891c2.552.51 4.33 1.21 5.336 2.101 1.005.891 1.507 2.206 1.507 3.946 0 1.094-.25 2.76-.75 5l-.406 1.765zM406.016 629v-10.031h4.046V629h-4.046zm13.593 0v-9.063c0-2.416-.205-3.856-.617-4.32-.411-.463-1.685-.695-3.82-.695h-12.047l1.547-4.625h11.172c3.135 0 5.229.458 6.281 1.375a3.733 3.733 0 011.234 1.984c.198.792.297 2.177.297 4.157V629h-4.047zm-36.421 0v-.516c0-2.677.28-4.971.843-6.882.563-1.912 1.51-3.8 2.844-5.664l-.703-.672c-1.136-1.063-2.162-1.948-3.078-2.657l3.687-2.687c2.448 1.937 5.037 4.51 7.766 7.719.625-1.084 1.039-2.032 1.242-2.844.203-.813.305-1.927.305-3.344v-1.156h4.328v.906c0 3.521-1.182 6.568-3.547 9.14a41.618 41.618 0 014.422 6.47l-3.485 2.578c-2.062-3.709-4.864-7.355-8.406-10.938-1.26 1.958-1.89 4.948-1.89 8.969V629h-4.329zm-4.938-6.266h-4.063c.73-2.666 1.094-4.573 1.094-5.718 0-.823-.36-1.474-1.078-1.953-.719-.48-1.963-.896-3.734-1.25l2.094-3.891c2.552.51 4.33 1.21 5.335 2.101 1.006.891 1.508 2.206 1.508 3.946 0 1.094-.25 2.76-.75 5l-.406 1.765zM356.078 629l1.563-4.625h5.515v-6.078c0-1.646-.354-2.724-1.062-3.235-.948-.677-2.224-1.244-3.828-1.703l1.843-3.437c1.73.427 3.297 1.047 4.704 1.86.906.53 1.53 1.182 1.875 1.952.343.771.515 1.922.515 3.453v7.188L365.656 629h-9.578zm-17.906 0l-2.235-17.688 3.922-1.39 1.797 14.453c2.667 0 4.795-.615 6.383-1.844 1.589-1.229 2.383-2.87 2.383-4.922 0-2.24-1.208-3.359-3.625-3.359-.646 0-1.339.104-2.078.313l1.406-4.36a9.102 9.102 0 012.234-.297c1.917 0 3.414.576 4.493 1.727 1.078 1.15 1.617 2.747 1.617 4.789 0 2.292-.698 4.437-2.094 6.437s-3.292 3.568-5.688 4.703c-2.01.959-4.848 1.438-8.515 1.438zm-9.938 0v-9.063c0-2.416-.203-3.856-.609-4.32-.406-.463-1.682-.695-3.828-.695h-5.89l1.53-4.625h5.047c3.136 0 5.23.458 6.282 1.375a3.773 3.773 0 011.218 1.992c.198.797.297 2.18.297 4.149V629h-4.047zm-24.625 0l1.563-4.625h5.515v-6.078c0-1.646-.354-2.724-1.062-3.235-.948-.677-2.224-1.244-3.828-1.703l1.844-3.437c1.729.427 3.296 1.047 4.703 1.86.906.53 1.531 1.182 1.875 1.952.344.771.515 1.922.515 3.453v7.188L313.188 629h-9.579zm-17.906 0l-2.234-17.688 3.922-1.39 1.796 14.453c2.667 0 4.795-.615 6.383-1.844 1.589-1.229 2.383-2.87 2.383-4.922 0-2.24-1.208-3.359-3.625-3.359-.646 0-1.338.104-2.078.313l1.406-4.36a9.102 9.102 0 012.235-.297c1.916 0 3.414.576 4.492 1.727 1.078 1.15 1.617 2.747 1.617 4.789 0 2.292-.698 4.437-2.094 6.437s-3.291 3.568-5.687 4.703c-2.01.959-4.85 1.438-8.516 1.438zm-34.078 0v-10.031h4.047V629h-4.047zm13.594 0v-9.063c0-2.416-.206-3.856-.617-4.32-.412-.463-1.685-.695-3.82-.695h-12.048l1.547-4.625h11.172c3.136 0 5.23.458 6.281 1.375a3.733 3.733 0 011.235 1.984c.198.792.297 2.177.297 4.157V629h-4.047zm-37.594 0l2.266-8.688c.416-1.593.625-2.692.625-3.296 0-1.24-1.058-2.907-3.172-5l3.61-2.094c1.145.958 2.124 2.265 2.937 3.922 1.666-2.615 3.666-3.922 6-3.922 1.76 0 3.166.67 4.218 2.008s1.677 3.257 1.875 5.758l.532 6.687-1.532 4.625h-9.03l1.546-4.625h4.922l-.36-4.797c-.25-3.354-1.348-5.031-3.296-5.031-1.125 0-2.07.56-2.836 1.68-.766 1.12-1.498 3.007-2.196 5.664L231.86 629h-4.234zm-7.453 0v-9.594c0-1.927-.32-3.252-.961-3.976-.64-.724-1.997-1.295-4.07-1.711l2-3.797c2.448.448 4.208 1.15 5.28 2.11.71.635 1.186 1.385 1.43 2.25.245.864.368 2.25.368 4.155V629h-4.047zm-13.531 0v-14.078h-9.532l1.547-4.625h16.094l-1.547 4.625h-2.516V629h-4.046zm-16.282 0v-9.063c0-2.416-.203-3.856-.609-4.32-.406-.463-1.682-.695-3.828-.695h-5.89l1.53-4.625h5.047c3.136 0 5.23.458 6.282 1.375a3.773 3.773 0 011.218 1.992c.198.797.297 2.18.297 4.149V629h-4.047zm-24.625 0l1.563-4.625h5.516v-6.078c0-1.646-.355-2.724-1.063-3.235-.948-.677-2.224-1.244-3.828-1.703l1.844-3.437c1.729.427 3.296 1.047 4.703 1.86.906.53 1.531 1.182 1.875 1.952.344.771.515 1.922.515 3.453v7.188L175.312 629h-9.578zm-3.625-6.266h-4.062c.729-2.666 1.094-4.573 1.094-5.718 0-.823-.36-1.474-1.078-1.953-.72-.48-1.964-.896-3.735-1.25l2.094-3.891c2.552.51 4.33 1.21 5.336 2.101 1.005.891 1.508 2.206 1.508 3.946 0 1.094-.25 2.76-.75 5l-.407 1.765zm-11.593 0h-4.063c.73-2.666 1.094-4.573 1.094-5.718 0-.823-.36-1.474-1.078-1.953-.719-.48-1.964-.896-3.735-1.25l2.094-3.891c2.552.51 4.33 1.21 5.336 2.101 1.005.891 1.508 2.206 1.508 3.946 0 1.094-.25 2.76-.75 5l-.406 1.765zM122.203 629v-14.078h-2.484l1.547-4.625h10.484c3.135 0 5.23.458 6.281 1.375a3.734 3.734 0 011.235 1.992c.198.797.297 2.18.297 4.149v6.562L138.016 629h-15.813zm4.063-4.625h9.25v-4.438c0-2.427-.203-3.87-.61-4.328-.406-.458-1.682-.687-3.828-.687h-4.812v9.453zM401.844 667l2.265-8.688c.417-1.593.625-2.692.625-3.296 0-1.24-1.057-2.907-3.171-5l3.609-2.094c1.146.958 2.125 2.265 2.937 3.922 1.667-2.615 3.667-3.922 6-3.922 1.76 0 3.167.67 4.22 2.008 1.051 1.338 1.676 3.257 1.874 5.758l.531 6.687-1.53 4.625h-9.032l1.547-4.625h4.922l-.36-4.797c-.25-3.354-1.349-5.031-3.297-5.031-1.125 0-2.07.56-2.836 1.68-.765 1.12-1.497 3.007-2.195 5.664L406.078 667h-4.234zm-20.422 0l-2.203-17.5 3.922-1.578 1.171 9.25c1.136-.281 1.933-.945 2.391-1.992.458-1.047.688-2.716.688-5.008v-1.875h4.343v1.719c0 3.093-.565 5.445-1.695 7.054-1.13 1.61-2.92 2.607-5.367 2.992l.281 2.313c2.719 0 4.89-.453 6.516-1.36 2.844-1.583 4.265-5.192 4.265-10.827v-1.891h4.329v1.562c0 5.615-1.581 9.875-4.743 12.782-3.161 2.906-7.794 4.359-13.898 4.359zm-18.969.39l1.594-4.718c2.042-.23 3.687-.839 4.937-1.828 1.948-1.542 2.922-3.406 2.922-5.594 0-.906-.32-1.52-.96-1.844-.641-.323-1.873-.484-3.696-.484h-5.563v-9.625l4.047-1.36v6.36h4.063c2.5 0 4.242.36 5.226 1.078.985.719 1.477 1.984 1.477 3.797 0 3.437-1.318 6.49-3.953 9.156-2.636 2.667-6 4.354-10.094 5.063zm-20.687-.39l1.546-4.625h9.641v-4.438c0-2.416-.203-3.856-.61-4.32-.406-.463-1.682-.695-3.827-.695h-5.829l1.547-4.625h4.954c3.135 0 5.229.458 6.28 1.375a3.734 3.734 0 011.235 1.992c.198.797.297 2.18.297 4.149v6.562h2.5L357.969 667h-16.203zm-4.016-6.266h-4.063c.73-2.666 1.094-4.573 1.094-5.718 0-.823-.36-1.474-1.078-1.953-.719-.48-1.963-.896-3.734-1.25l2.094-3.891c2.552.51 4.33 1.21 5.335 2.101 1.006.891 1.508 2.206 1.508 3.946 0 1.094-.25 2.76-.75 5l-.406 1.765zM309.437 667v-14.078h-2.484l1.547-4.625h10.484c3.136 0 5.23.458 6.282 1.375a3.734 3.734 0 011.234 1.992c.198.797.297 2.18.297 4.149v6.562L325.25 667h-15.813zm4.063-4.625h9.25v-4.438c0-2.427-.203-3.87-.61-4.328-.406-.458-1.682-.687-3.827-.687H313.5v9.453zM276.078 667l-2.203-17.5 3.922-1.578 1.172 9.25c1.135-.281 1.932-.945 2.39-1.992.459-1.047.688-2.716.688-5.008v-1.875h4.344v1.719c0 3.093-.565 5.445-1.696 7.054-1.13 1.61-2.919 2.607-5.367 2.992l.281 2.313c2.72 0 4.891-.453 6.516-1.36 2.844-1.583 4.266-5.192 4.266-10.827v-1.891h4.328v1.562c0 5.615-1.581 9.875-4.742 12.782-3.162 2.906-7.795 4.359-13.899 4.359zm-21.937 0l1.39-4.234H266v-4.157c0-1.948-.193-3.205-.578-3.773-.386-.568-1.386-1.065-3-1.492l-2.985-.782-.234.672c-.135.396-.203.74-.203 1.032 0 1.01.87 1.583 2.61 1.718l-1.079 3.25c-3.5-.323-5.25-1.671-5.25-4.047 0-.916.375-2.437 1.125-4.562l.969-2.703 7.125 1.734c2.313.563 3.815 1.284 4.508 2.164.693.88 1.039 2.503 1.039 4.867v6.079L268.64 667h-14.5zm-20.657 0v-10.031h4.047V667h-4.047zm13.594 0v-9.063c0-2.416-.206-3.856-.617-4.32-.412-.463-1.685-.695-3.82-.695h-12.047l1.547-4.625h11.172c3.135 0 5.229.458 6.28 1.375a3.733 3.733 0 011.235 1.984c.198.792.297 2.177.297 4.157V667h-4.047zm-38.234 0v-7.016c0-2.354.682-4.343 2.047-5.968L206 651.938l1.719-4.016 11.094 4.719-1.672 4.062-3.125-1.36c-.75.938-1.125 2.256-1.125 3.954V667h-4.047zm-9.735 0v-9.594c0-1.927-.32-3.252-.96-3.976-.641-.724-1.998-1.295-4.07-1.711l2-3.797c2.447.448 4.207 1.15 5.28 2.11.709.635 1.185 1.385 1.43 2.25.245.864.367 2.25.367 4.155V667h-4.047zm-11.734 0v-5.016h5.016V667h-5.016zm-32.156 0v-10.031h4.047V667h-4.047zm13.594 0v-9.063c0-2.416-.206-3.856-.618-4.32-.411-.463-1.685-.695-3.82-.695h-12.047l1.547-4.625h11.172c3.135 0 5.229.458 6.281 1.375a3.733 3.733 0 011.234 1.984c.198.792.297 2.177.297 4.157V667h-4.047zm-20.391-6.266h-4.063c.73-2.666 1.094-4.573 1.094-5.718 0-.823-.36-1.474-1.078-1.953-.719-.48-1.964-.896-3.734-1.25l2.093-3.891c2.552.51 4.331 1.21 5.336 2.101 1.006.891 1.508 2.206 1.508 3.946 0 1.094-.25 2.76-.75 5l-.406 1.765zM120.797 667v-.516c0-2.677.281-4.971.844-6.882.562-1.912 1.51-3.8 2.843-5.664l-.703-.672c-1.135-1.063-2.161-1.948-3.078-2.657l3.688-2.687c2.448 1.937 5.036 4.51 7.765 7.719.625-1.084 1.04-2.032 1.242-2.844.204-.813.305-1.927.305-3.344v-1.156h4.328v.906c0 3.521-1.182 6.568-3.547 9.14a41.618 41.618 0 014.422 6.47l-3.484 2.578c-2.063-3.709-4.865-7.355-8.406-10.938-1.26 1.958-1.891 4.948-1.891 8.969V667h-4.328zm275.937 31.734h-4.062c.729-2.666 1.094-4.573 1.094-5.718 0-.823-.36-1.474-1.079-1.953-.718-.48-1.963-.896-3.734-1.25l2.094-3.891c2.552.51 4.33 1.21 5.336 2.101 1.005.891 1.508 2.206 1.508 3.946 0 1.094-.25 2.76-.75 5l-.407 1.765zM380.031 705v-14.078H370.5l1.547-4.625h16.094l-1.547 4.625h-2.516V705h-4.047zm-16.36 0v-9.594c0-1.927-.32-3.252-.96-3.976-.64-.724-1.997-1.295-4.07-1.711l2-3.797c2.448.448 4.208 1.15 5.28 2.11.71.635 1.186 1.385 1.43 2.25.245.864.368 2.25.368 4.155V705h-4.047zm-26.093 2.781l1.563-4.672c1.666 0 3.458-.28 5.375-.843l-3.36-14.985 3.875-1.36 3.266 14.563c1.635-1.24 2.773-2.78 3.414-4.625.64-1.843.96-4.484.96-7.922v-1.64h4.345v1.156c0 3.99-.612 7.318-1.836 9.985-1.224 2.666-3.154 4.88-5.79 6.64-3.697 2.469-7.635 3.703-11.812 3.703zM318.188 705v-10.031h4.046V705h-4.046zm13.593 0v-9.063c0-2.416-.205-3.856-.617-4.32-.411-.463-1.685-.695-3.82-.695h-12.047l1.547-4.625h11.172c3.135 0 5.229.458 6.28 1.375a3.733 3.733 0 011.235 1.984c.198.792.297 2.177.297 4.157V705h-4.047zm-46.234 0l1.547-4.625h9.64v-4.438c0-2.416-.203-3.856-.609-4.32-.406-.463-1.682-.695-3.828-.695h-5.828l1.547-4.625h4.953c3.135 0 5.229.458 6.281 1.375a3.734 3.734 0 011.234 1.992c.198.797.297 2.18.297 4.149v6.562h2.5L301.75 705h-16.203zm-21.688 2.781l1.563-4.672c1.667 0 3.458-.28 5.375-.843l-3.36-14.985 3.875-1.36 3.266 14.563c1.636-1.24 2.774-2.78 3.414-4.625.64-1.843.961-4.484.961-7.922v-1.64h4.344v1.156c0 3.99-.612 7.318-1.836 9.985-1.224 2.666-3.154 4.88-5.79 6.64-3.697 2.469-7.635 3.703-11.812 3.703zm-2.375-9.047h-4.062c.729-2.666 1.094-4.573 1.094-5.718 0-.823-.36-1.474-1.079-1.953-.718-.48-1.963-.896-3.734-1.25l2.094-3.891c2.552.51 4.33 1.21 5.336 2.101 1.005.891 1.508 2.206 1.508 3.946 0 1.094-.25 2.76-.75 5l-.407 1.765zm-27.328 10.891v-14.61h4.047v14.61h-4.047zm-2.515-18.703l1.547-4.625h10.843c1.99 0 3.39.088 4.203.265.813.178 1.495.542 2.047 1.094.802.813 1.203 1.98 1.203 3.5 0 3.052-1.12 5.901-3.359 8.547-2.24 2.646-5.13 4.537-8.672 5.672l1.672-4.969c1.656-.469 3.036-1.383 4.14-2.742 1.105-1.36 1.657-2.82 1.657-4.383 0-.937-.328-1.565-.984-1.883-.657-.317-1.959-.476-3.907-.476h-10.39zM224.406 705v-9.063c0-2.416-.203-3.856-.61-4.32-.405-.463-1.681-.695-3.827-.695h-5.89l1.53-4.625h5.047c3.136 0 5.23.458 6.281 1.375a3.773 3.773 0 011.22 1.992c.197.797.296 2.18.296 4.149V705h-4.047zm-38.734 0l1.531-4.625h8.734c.865-1.99 1.297-3.682 1.297-5.078 0-1.646-.38-2.787-1.14-3.422-.76-.635-2.13-.953-4.11-.953h-5.406l1.531-4.625h5.094c1.781 0 3.151.156 4.11.469.958.312 1.77.87 2.437 1.672 1.063 1.27 1.594 3.062 1.594 5.375 0 1.843-.49 4.03-1.469 6.562L198.359 705h-12.687zm-20.422 0l-2.203-17.5 3.922-1.578 1.172 9.25c1.135-.281 1.932-.945 2.39-1.992.459-1.047.688-2.716.688-5.008v-1.875h4.344v1.719c0 3.093-.566 5.445-1.696 7.054-1.13 1.61-2.92 2.607-5.367 2.992l.281 2.313c2.719 0 4.89-.453 6.516-1.36 2.844-1.583 4.266-5.192 4.266-10.827v-1.891h4.328v1.562c0 5.615-1.581 9.875-4.743 12.782-3.161 2.906-7.794 4.359-13.898 4.359zm-21.938 0l1.391-4.234h10.469v-4.157c0-1.948-.193-3.205-.578-3.773-.386-.568-1.386-1.065-3-1.492l-2.985-.782-.234.672c-.135.396-.203.74-.203 1.032 0 1.01.87 1.583 2.61 1.718l-1.079 3.25c-3.5-.323-5.25-1.671-5.25-4.047 0-.916.375-2.437 1.125-4.562l.969-2.703 7.125 1.734c2.312.563 3.815 1.284 4.508 2.164.692.88 1.039 2.503 1.039 4.867v6.079L157.813 705h-14.5zm-20.656 0v-10.031h4.047V705h-4.047zm13.594 0v-9.063c0-2.416-.206-3.856-.617-4.32-.412-.463-1.685-.695-3.82-.695h-12.047l1.546-4.625h11.172c3.136 0 5.23.458 6.282 1.375a3.733 3.733 0 011.234 1.984c.198.792.297 2.177.297 4.157V705h-4.047zm169.5 38v-10.031h4.047V743h-4.047zm13.594 0v-9.063c0-2.416-.206-3.856-.617-4.32-.412-.463-1.685-.695-3.82-.695h-12.048l1.547-4.625h11.172c3.136 0 5.23.458 6.281 1.375a3.733 3.733 0 011.235 1.984c.198.792.297 2.177.297 4.157V743h-4.047zm-37.594 0l2.266-8.688c.416-1.593.625-2.692.625-3.296 0-1.24-1.058-2.907-3.172-5l3.61-2.094c1.145.958 2.124 2.265 2.937 3.922 1.666-2.615 3.666-3.922 6-3.922 1.76 0 3.166.67 4.218 2.008s1.677 3.257 1.875 5.758l.532 6.687-1.532 4.625h-9.03l1.546-4.625h4.922l-.36-4.797c-.25-3.354-1.348-5.031-3.296-5.031-1.125 0-2.07.56-2.836 1.68-.766 1.12-1.498 3.007-2.196 5.664L285.984 743h-4.234zm-7.453 0v-9.594c0-1.927-.32-3.252-.961-3.976-.64-.724-1.997-1.295-4.07-1.711l2-3.797c2.448.448 4.208 1.15 5.28 2.11.71.635 1.186 1.385 1.43 2.25.245.864.368 2.25.368 4.155V743h-4.047zm-22.703 0l-2.235-17.688 3.922-1.39 1.797 14.453c2.667 0 4.794-.615 6.383-1.844 1.588-1.229 2.383-2.87 2.383-4.922 0-2.24-1.209-3.359-3.625-3.359-.646 0-1.339.104-2.078.313l1.406-4.36a9.102 9.102 0 012.234-.297c1.917 0 3.414.576 4.492 1.727 1.079 1.15 1.618 2.747 1.618 4.789 0 2.292-.698 4.437-2.094 6.437s-3.292 3.568-5.688 4.703c-2.01.959-4.849 1.438-8.515 1.438zm-21.813 0l1.547-4.625h9.64v-4.438c0-2.416-.202-3.856-.609-4.32-.406-.463-1.682-.695-3.828-.695h-5.828l1.547-4.625h4.953c3.136 0 5.23.458 6.281 1.375a3.734 3.734 0 011.235 1.992c.198.797.297 2.18.297 4.149v6.562h2.5L245.984 743h-16.203zm-21.687 2.781l1.562-4.672c1.667 0 3.459-.28 5.375-.843l-3.36-14.985 3.876-1.36 3.266 14.563c1.635-1.24 2.773-2.78 3.414-4.625.64-1.843.96-4.484.96-7.922v-1.64h4.344v1.156c0 3.99-.612 7.318-1.836 9.985-1.224 2.666-3.153 4.88-5.789 6.64-3.698 2.469-7.635 3.703-11.812 3.703zM186.39 743l1.547-4.625h4.03c-.822-2.115-1.234-4.708-1.234-7.781v-1.672h-2.328l1.547-4.625h8.578c3.136 0 5.23.458 6.281 1.375a3.733 3.733 0 011.235 1.984c.198.792.297 2.177.297 4.157V743h-4.047v-9.063c0-2.416-.203-3.856-.61-4.32-.406-.463-1.682-.695-3.828-.695h-3.062v1.375c0 3.354.479 6.047 1.437 8.078l-1.53 4.625h-8.313zm-29.516 0l1.547-4.625h9.64v-4.438c0-2.416-.203-3.856-.609-4.32-.406-.463-1.682-.695-3.828-.695h-5.828l1.547-4.625h4.953c3.135 0 5.229.458 6.281 1.375a3.734 3.734 0 011.234 1.992c.198.797.297 2.18.297 4.149v6.562h2.5L173.08 743h-16.204zm-9.125 0v-14.078h-9.531l1.547-4.625h16.093l-1.547 4.625h-2.515V743h-4.047zm-28.25 0l1.39-4.234h10.47v-4.157c0-1.948-.193-3.205-.579-3.773-.385-.568-1.385-1.065-3-1.492l-2.984-.782-.234.672c-.136.396-.204.74-.204 1.032 0 1.01.87 1.583 2.61 1.718l-1.078 3.25c-3.5-.323-5.25-1.671-5.25-4.047 0-.916.375-2.437 1.125-4.562l.968-2.703 7.125 1.734c2.313.563 3.815 1.284 4.508 2.164.693.88 1.04 2.503 1.04 4.867v6.079L134 743h-14.5z"/><path id="Rectangle-1" stroke="#C06334" stroke-width="2" d="M117 106h282v198H117z"/><g id="Rectangle-209-+-Rectangle-208" fill="#DBAF88" transform="translate(15 15)"><path id="Rectangle-209" d="M0 0h50v300H0z"/><path id="Rectangle-208" d="M165.5-130.5h50v311h-50z" transform="rotate(-90 190.5 25)"/></g><path id="Rectangle-5" fill="url(#linearGradient-1)" d="M158-7h162v447H158z" transform="rotate(-180 239 216.5)"/><path id="Rectangle-6" fill="#FFF" d="M319 8h162v399H319z"/><g id="Group-2" transform="translate(65 65)"><rect id="Rectangle-19" width="20" height="239" x=".5" y=".5" fill="#D1CFCD" stroke="#D1CFCD" rx="3"/><g id="Rectangle-18-+-Triangle-1"><rect id="Rectangle-18" width="20" height="19" x=".5" y=".5" fill="url(#linearGradient-2)" stroke="#D1CFCD" rx="3"/><path id="Triangle-1" fill="#7E7C7B" d="M10.5 7l4.2 6H6.3z"/></g><g id="Rectangle-18-+-Triangle-2" transform="matrix(1 0 0 -1 0 240)"><rect id="Rectangle-18" width="20" height="19" x=".5" y=".5" fill="url(#linearGradient-2)" stroke="#D1CFCD" rx="3"/><path id="Triangle-1" fill="#7E7C7B" d="M10.5 7l4.2 6H6.3z"/></g><g id="Rectangle-18-+-Triangle-3-+-Group" transform="translate(0 50)"><g id="Rectangle-18-+-Triangle-3" fill="url(#linearGradient-3)" stroke="#D1CFCD" transform="matrix(1 0 0 -1 0 51)"><rect id="Rectangle-18" width="20" height="50" x=".5" y=".5" rx="3"/></g><g id="Group" fill="#D1CFCD" stroke="#7E7C7B" transform="translate(5.25 20)"><path id="Rectangle-22" d="M.5.5H10v1H.5z"/><path id="Rectangle-23" d="M.5 3.5H10v1H.5z"/><path id="Rectangle-24" d="M.5 6.5H10v1H.5z"/><path id="Rectangle-25" d="M.5 9.5H10v1H.5z"/></g></g></g><path id="Line-7" fill="#C06334" fill-rule="nonzero" d="M65.41 15.68l7 14h-6.001v20h6.001l-7 14-7-14h5.999v-20H58.41l7-14z"/><path id="Line-28" fill="#C06334" fill-rule="nonzero" d="M72 57.68l14 7-14 7-.001-6h-42.59l.001 6-14-7 14-7-.001 6h42.59l.001-6z"/><text id="clientTop:25px-=-bor" font-family="PTMono-Regular, PT Mono" font-size="12" font-weight="normal"><tspan x="78.7" y="43" fill="#643B0C">clientTop:</tspan> <tspan x="150.7" y="43" fill="#166388">25px</tspan> <tspan x="179.5" y="43" fill="#1C85B5"> </tspan> <tspan x="186.7" y="43" fill="#643B0C">= border</tspan></text><text id="clientLeft:41px" font-family="PTMono-Regular, PT Mono" font-size="12" font-weight="normal" transform="rotate(-90 40.32 125)"><tspan x="-13.68" y="129" fill="#643B0C">clientLeft:</tspan> <tspan x="65.52" y="129" fill="#166388">41px</tspan></text><g id="Rectangle-8-+-Rectangle-7" transform="translate(-41.5 128.5)"><path id="Rectangle-8" fill="url(#linearGradient-4)" d="M151.5-151.5h144v447h-144z" transform="rotate(-90 223.5 72)"/><path id="Rectangle-7" fill="#FFF" d="M151.5 24.5h162v399h-162z" transform="rotate(90 232.5 224)"/></g></g></g></svg> +>>>>>>> 540d753e90789205fc6e75c502f68382c87dea9b diff --git a/2-ui/1-document/09-size-and-scroll/metric-client-left-top.svg b/2-ui/1-document/09-size-and-scroll/metric-client-left-top.svg index 968590466..f82bad607 100644 --- a/2-ui/1-document/09-size-and-scroll/metric-client-left-top.svg +++ b/2-ui/1-document/09-size-and-scroll/metric-client-left-top.svg @@ -1 +1,5 @@ -<svg xmlns="http://www.w3.org/2000/svg" width="353" height="316" viewBox="0 0 353 316"><defs><style>@import url(https://fonts.googleapis.com/css?family=Open+Sans:bold,italic,bolditalic%7CPT+Mono);@font-face{font-family:'PT Mono';font-weight:700;font-style:normal;src:local('PT MonoBold'),url(/font/PTMonoBold.woff2) format('woff2'),url(/font/PTMonoBold.woff) format('woff'),url(/font/PTMonoBold.ttf) format('truetype')}</style></defs><defs><linearGradient id="linearGradient-1" x1="0%" x2="62.299%" y1="47.096%" y2="47.096%"><stop offset="0%" stop-color="#FFF"/><stop offset="100%" stop-color="#FFF"/></linearGradient></defs><g id="dom" fill="none" fill-rule="evenodd" stroke="none" stroke-width="1"><g id="metric-client-left-top.svg"><path fill="#FFF" d="M0 0h353v316H0z"/><path id="Rectangle-206" fill="#DBAF88" d="M12 15h50v300H12z"/><path id="Rectangle-207" fill="#DBAF88" d="M177.5-115.5h50v311h-50z" transform="rotate(-90 202.5 40)"/><text id="Introduction" fill="#643B0C" font-family="OpenSans-Bold, Open Sans" font-size="32" font-weight="bold"><tspan x="102" y="134">Introduction</tspan> <tspan x="102" y="183" font-family="OpenSans-Regular, Open Sans" font-size="24" font-weight="normal">This Ecma Standard is based on </tspan> <tspan x="102" y="216" font-family="OpenSans-Regular, Open Sans" font-size="24" font-weight="normal">several originating </tspan> <tspan x="102" y="249" font-family="OpenSans-Regular, Open Sans" font-size="24" font-weight="normal">technologies, the most well </tspan> <tspan x="102" y="282" font-family="OpenSans-Regular, Open Sans" font-size="24" font-weight="normal">known being JavaScript </tspan> <tspan x="102" y="315" font-family="OpenSans-Regular, Open Sans" font-size="24" font-weight="normal">(Netscape) and JScript </tspan> <tspan x="102" y="348" font-family="OpenSans-Regular, Open Sans" font-size="24" font-weight="normal">(Microsoft). The language was </tspan> <tspan x="102" y="381" font-family="OpenSans-Regular, Open Sans" font-size="24" font-weight="normal">invented by Brendan Eich at </tspan> <tspan x="102" y="414" font-family="OpenSans-Regular, Open Sans" font-size="24" font-weight="normal">Netscape and first appeared in </tspan> <tspan x="102" y="447" font-family="OpenSans-Regular, Open Sans" font-size="24" font-weight="normal">that company’s Navigator 2.0 </tspan> <tspan x="102" y="480" font-family="OpenSans-Regular, Open Sans" font-size="24" font-weight="normal">browser. It has appeared in all </tspan> <tspan x="102" y="513" font-family="OpenSans-Regular, Open Sans" font-size="24" font-weight="normal">subsequent browsers from </tspan> <tspan x="102" y="546" font-family="OpenSans-Regular, Open Sans" font-size="24" font-weight="normal">Netscape and in all browsers </tspan> <tspan x="102" y="579" font-family="OpenSans-Regular, Open Sans" font-size="24" font-weight="normal">from Microsoft starting with </tspan> <tspan x="102" y="612" font-family="OpenSans-Regular, Open Sans" font-size="24" font-weight="normal">Internet Explorer 3.0.</tspan> <tspan x="102" y="645" font-family="OpenSans-Regular, Open Sans" font-size="24" font-weight="normal">The development of this </tspan> <tspan x="102" y="678" font-family="OpenSans-Regular, Open Sans" font-size="24" font-weight="normal">Standard started in November </tspan> <tspan x="102" y="711" font-family="OpenSans-Regular, Open Sans" font-size="24" font-weight="normal">1996. The first edition of this </tspan> <tspan x="102" y="744" font-family="OpenSans-Regular, Open Sans" font-size="24" font-weight="normal">Ecma Standard was adopted by </tspan> <tspan x="102" y="777" font-family="OpenSans-Regular, Open Sans" font-size="24" font-weight="normal">the Ecma General Assembly of </tspan> <tspan x="102" y="810" font-family="OpenSans-Regular, Open Sans" font-size="24" font-weight="normal">June 1997.</tspan></text><path id="Rectangle-5" fill="url(#linearGradient-1)" d="M42-7h275v447H42z" transform="rotate(-180 179.5 216.5)"/><path id="Rectangle-6" fill="#FFF" d="M316 8h162v399H316z"/><path id="Line-7" fill="#C06334" fill-rule="nonzero" d="M62.41 15.68l7 14h-6.001v20h6.001l-7 14-7-14h5.999v-20H55.41l7-14z"/><path id="Line-28" fill="#C06334" fill-rule="nonzero" d="M46.41 57.68l14 7-14 7-.001-6h-20l.001 6-14-7 14-7-.001 6h20l.001-6z"/><text id="clientTop:25px-=-bor" font-family="PTMono-Regular, PT Mono" font-size="12" font-weight="normal"><tspan x="75.7" y="43" fill="#C06334">clientTop:</tspan> <tspan x="147.7" y="43" fill="#1C85B5">25px </tspan> <tspan x="183.7" y="43" fill="#C06334">= border</tspan></text><text id="clientLeft:25px" font-family="PTMono-Regular, PT Mono" font-size="12" font-weight="normal" transform="rotate(-90 37.32 136)"><tspan x="-16.68" y="140" fill="#C06334">clientLeft:</tspan> <tspan x="62.52" y="140" fill="#1C85B5">25px</tspan></text><g id="Rectangle-8-+-Rectangle-7" transform="translate(-45 -3)"><path id="Rectangle-8" fill="url(#linearGradient-1)" d="M86.5-85.5h275v447h-275z" transform="rotate(-90 224 138)"/><path id="Rectangle-7" fill="#FFF" d="M152 156h162v399H152z" transform="rotate(90 233 355.5)"/></g></g></g></svg> \ No newline at end of file +<<<<<<< HEAD +<svg xmlns="http://www.w3.org/2000/svg" width="353" height="316" viewBox="0 0 353 316"><defs><style>@import url(https://fonts.googleapis.com/css?family=Open+Sans:bold,italic,bolditalic%7CPT+Mono);@font-face{font-family:'PT Mono';font-weight:700;font-style:normal;src:local('PT MonoBold'),url(/font/PTMonoBold.woff2) format('woff2'),url(/font/PTMonoBold.woff) format('woff'),url(/font/PTMonoBold.ttf) format('truetype')}</style></defs><defs><linearGradient id="linearGradient-1" x1="0%" x2="62.299%" y1="47.096%" y2="47.096%"><stop offset="0%" stop-color="#FFF"/><stop offset="100%" stop-color="#FFF"/></linearGradient></defs><g id="dom" fill="none" fill-rule="evenodd" stroke="none" stroke-width="1"><g id="metric-client-left-top.svg"><path fill="#FFF" d="M0 0h353v316H0z"/><path id="Rectangle-206" fill="#DBAF88" d="M12 15h50v300H12z"/><path id="Rectangle-207" fill="#DBAF88" d="M177.5-115.5h50v311h-50z" transform="rotate(-90 202.5 40)"/><text id="Introduction" fill="#643B0C" font-family="OpenSans-Bold, Open Sans" font-size="32" font-weight="bold"><tspan x="102" y="134">Introduction</tspan> <tspan x="102" y="183" font-family="OpenSans-Regular, Open Sans" font-size="24" font-weight="normal">This Ecma Standard is based on </tspan> <tspan x="102" y="216" font-family="OpenSans-Regular, Open Sans" font-size="24" font-weight="normal">several originating </tspan> <tspan x="102" y="249" font-family="OpenSans-Regular, Open Sans" font-size="24" font-weight="normal">technologies, the most well </tspan> <tspan x="102" y="282" font-family="OpenSans-Regular, Open Sans" font-size="24" font-weight="normal">known being JavaScript </tspan> <tspan x="102" y="315" font-family="OpenSans-Regular, Open Sans" font-size="24" font-weight="normal">(Netscape) and JScript </tspan> <tspan x="102" y="348" font-family="OpenSans-Regular, Open Sans" font-size="24" font-weight="normal">(Microsoft). The language was </tspan> <tspan x="102" y="381" font-family="OpenSans-Regular, Open Sans" font-size="24" font-weight="normal">invented by Brendan Eich at </tspan> <tspan x="102" y="414" font-family="OpenSans-Regular, Open Sans" font-size="24" font-weight="normal">Netscape and first appeared in </tspan> <tspan x="102" y="447" font-family="OpenSans-Regular, Open Sans" font-size="24" font-weight="normal">that company’s Navigator 2.0 </tspan> <tspan x="102" y="480" font-family="OpenSans-Regular, Open Sans" font-size="24" font-weight="normal">browser. It has appeared in all </tspan> <tspan x="102" y="513" font-family="OpenSans-Regular, Open Sans" font-size="24" font-weight="normal">subsequent browsers from </tspan> <tspan x="102" y="546" font-family="OpenSans-Regular, Open Sans" font-size="24" font-weight="normal">Netscape and in all browsers </tspan> <tspan x="102" y="579" font-family="OpenSans-Regular, Open Sans" font-size="24" font-weight="normal">from Microsoft starting with </tspan> <tspan x="102" y="612" font-family="OpenSans-Regular, Open Sans" font-size="24" font-weight="normal">Internet Explorer 3.0.</tspan> <tspan x="102" y="645" font-family="OpenSans-Regular, Open Sans" font-size="24" font-weight="normal">The development of this </tspan> <tspan x="102" y="678" font-family="OpenSans-Regular, Open Sans" font-size="24" font-weight="normal">Standard started in November </tspan> <tspan x="102" y="711" font-family="OpenSans-Regular, Open Sans" font-size="24" font-weight="normal">1996. The first edition of this </tspan> <tspan x="102" y="744" font-family="OpenSans-Regular, Open Sans" font-size="24" font-weight="normal">Ecma Standard was adopted by </tspan> <tspan x="102" y="777" font-family="OpenSans-Regular, Open Sans" font-size="24" font-weight="normal">the Ecma General Assembly of </tspan> <tspan x="102" y="810" font-family="OpenSans-Regular, Open Sans" font-size="24" font-weight="normal">June 1997.</tspan></text><path id="Rectangle-5" fill="url(#linearGradient-1)" d="M42-7h275v447H42z" transform="rotate(-180 179.5 216.5)"/><path id="Rectangle-6" fill="#FFF" d="M316 8h162v399H316z"/><path id="Line-7" fill="#C06334" fill-rule="nonzero" d="M62.41 15.68l7 14h-6.001v20h6.001l-7 14-7-14h5.999v-20H55.41l7-14z"/><path id="Line-28" fill="#C06334" fill-rule="nonzero" d="M46.41 57.68l14 7-14 7-.001-6h-20l.001 6-14-7 14-7-.001 6h20l.001-6z"/><text id="clientTop:25px-=-bor" font-family="PTMono-Regular, PT Mono" font-size="12" font-weight="normal"><tspan x="75.7" y="43" fill="#C06334">clientTop:</tspan> <tspan x="147.7" y="43" fill="#1C85B5">25px </tspan> <tspan x="183.7" y="43" fill="#C06334">= border</tspan></text><text id="clientLeft:25px" font-family="PTMono-Regular, PT Mono" font-size="12" font-weight="normal" transform="rotate(-90 37.32 136)"><tspan x="-16.68" y="140" fill="#C06334">clientLeft:</tspan> <tspan x="62.52" y="140" fill="#1C85B5">25px</tspan></text><g id="Rectangle-8-+-Rectangle-7" transform="translate(-45 -3)"><path id="Rectangle-8" fill="url(#linearGradient-1)" d="M86.5-85.5h275v447h-275z" transform="rotate(-90 224 138)"/><path id="Rectangle-7" fill="#FFF" d="M152 156h162v399H152z" transform="rotate(90 233 355.5)"/></g></g></g></svg> +======= +<svg xmlns="http://www.w3.org/2000/svg" width="353" height="316" viewBox="0 0 353 316"><defs><style>@import url(https://fonts.googleapis.com/css?family=Open+Sans:bold,italic,bolditalic%7CPT+Mono);@font-face{font-family:'PT Mono';font-weight:700;font-style:normal;src:local('PT MonoBold'),url(/font/PTMonoBold.woff2) format('woff2'),url(/font/PTMonoBold.woff) format('woff'),url(/font/PTMonoBold.ttf) format('truetype')}</style></defs><defs><linearGradient id="linearGradient-1" x1="0%" x2="62.299%" y1="47.096%" y2="47.096%"><stop offset="0%" stop-color="#FFF"/><stop offset="100%" stop-color="#FFF" stop-opacity="0"/></linearGradient></defs><g id="dom" fill="none" fill-rule="evenodd" stroke="none" stroke-width="1"><g id="metric-client-left-top.svg"><path fill="#FFF" d="M0 0h353v316H0z"/><path id="Rectangle-206" fill="#DBAF88" d="M12 15h50v300H12z"/><path id="Rectangle-207" fill="#DBAF88" d="M177.5-115.5h50v311h-50z" transform="rotate(-90 202.5 40)"/><text id="Introduction" fill="#643B0C" font-family="OpenSans-Bold, Open Sans" font-size="32" font-weight="bold"><tspan x="102" y="134">Introduction</tspan> <tspan x="102" y="183" font-family="OpenSans-Regular, Open Sans" font-size="24" font-weight="normal">This Ecma Standard is based on </tspan> <tspan x="102" y="216" font-family="OpenSans-Regular, Open Sans" font-size="24" font-weight="normal">several originating </tspan> <tspan x="102" y="249" font-family="OpenSans-Regular, Open Sans" font-size="24" font-weight="normal">technologies, the most well </tspan> <tspan x="102" y="282" font-family="OpenSans-Regular, Open Sans" font-size="24" font-weight="normal">known being JavaScript </tspan> <tspan x="102" y="315" font-family="OpenSans-Regular, Open Sans" font-size="24" font-weight="normal">(Netscape) and JScript </tspan> <tspan x="102" y="348" font-family="OpenSans-Regular, Open Sans" font-size="24" font-weight="normal">(Microsoft). The language was </tspan> <tspan x="102" y="381" font-family="OpenSans-Regular, Open Sans" font-size="24" font-weight="normal">invented by Brendan Eich at </tspan> <tspan x="102" y="414" font-family="OpenSans-Regular, Open Sans" font-size="24" font-weight="normal">Netscape and first appeared in </tspan> <tspan x="102" y="447" font-family="OpenSans-Regular, Open Sans" font-size="24" font-weight="normal">that company’s Navigator 2.0 </tspan> <tspan x="102" y="480" font-family="OpenSans-Regular, Open Sans" font-size="24" font-weight="normal">browser. It has appeared in all </tspan> <tspan x="102" y="513" font-family="OpenSans-Regular, Open Sans" font-size="24" font-weight="normal">subsequent browsers from </tspan> <tspan x="102" y="546" font-family="OpenSans-Regular, Open Sans" font-size="24" font-weight="normal">Netscape and in all browsers </tspan> <tspan x="102" y="579" font-family="OpenSans-Regular, Open Sans" font-size="24" font-weight="normal">from Microsoft starting with </tspan> <tspan x="102" y="612" font-family="OpenSans-Regular, Open Sans" font-size="24" font-weight="normal">Internet Explorer 3.0.</tspan> <tspan x="102" y="645" font-family="OpenSans-Regular, Open Sans" font-size="24" font-weight="normal">The development of this </tspan> <tspan x="102" y="678" font-family="OpenSans-Regular, Open Sans" font-size="24" font-weight="normal">Standard started in November </tspan> <tspan x="102" y="711" font-family="OpenSans-Regular, Open Sans" font-size="24" font-weight="normal">1996. The first edition of this </tspan> <tspan x="102" y="744" font-family="OpenSans-Regular, Open Sans" font-size="24" font-weight="normal">Ecma Standard was adopted by </tspan> <tspan x="102" y="777" font-family="OpenSans-Regular, Open Sans" font-size="24" font-weight="normal">the Ecma General Assembly of </tspan> <tspan x="102" y="810" font-family="OpenSans-Regular, Open Sans" font-size="24" font-weight="normal">June 1997.</tspan></text><path id="Rectangle-5" fill="url(#linearGradient-1)" d="M42-7h275v447H42z" transform="rotate(-180 179.5 216.5)"/><path id="Rectangle-6" fill="#FFF" d="M316 8h162v399H316z"/><g id="Rectangle-8-+-Rectangle-7" transform="translate(-44.5 -2.5)"><path id="Rectangle-8" fill="url(#linearGradient-1)" d="M86-86h275v447H86z" transform="rotate(-90 223.5 137.5)"/><path id="Rectangle-7" fill="#FFF" d="M151.5 155.5h162v399h-162z" transform="rotate(90 232.5 355)"/></g><path id="Line-7" fill="#C06334" fill-rule="nonzero" d="M62.41 15.68l7 14h-6.001v20h6.001l-7 14-7-14h5.999v-20H55.41l7-14z"/><path id="Line-28" fill="#C06334" fill-rule="nonzero" d="M46.41 57.68l14 7-14 7-.001-6h-20l.001 6-14-7 14-7-.001 6h20l.001-6z"/><text id="clientTop:25px-=-bor" font-family="PTMono-Regular, PT Mono" font-size="12" font-weight="normal"><tspan x="75.7" y="43" fill="#643B0C">clientTop:</tspan> <tspan x="147.7" y="43" fill="#166388">25px</tspan> <tspan x="176.5" y="43" fill="#643B0C"> = border</tspan></text><text id="clientLeft:25px" font-family="PTMono-Regular, PT Mono" font-size="12" font-weight="normal" transform="rotate(-90 37.32 136)"><tspan x="-16.68" y="140" fill="#643B0C">clientLeft:</tspan> <tspan x="62.52" y="140" fill="#166388">25px</tspan></text></g></g></svg> +>>>>>>> 540d753e90789205fc6e75c502f68382c87dea9b diff --git a/2-ui/1-document/09-size-and-scroll/metric-client-width-height.svg b/2-ui/1-document/09-size-and-scroll/metric-client-width-height.svg index 83864b4c5..b5a342eab 100644 --- a/2-ui/1-document/09-size-and-scroll/metric-client-width-height.svg +++ b/2-ui/1-document/09-size-and-scroll/metric-client-width-height.svg @@ -1 +1,5 @@ -<svg xmlns="http://www.w3.org/2000/svg" width="500" height="493" viewBox="0 0 500 493"><defs><style>@import url(https://fonts.googleapis.com/css?family=Open+Sans:bold,italic,bolditalic%7CPT+Mono);@font-face{font-family:'PT Mono';font-weight:700;font-style:normal;src:local('PT MonoBold'),url(/font/PTMonoBold.woff2) format('woff2'),url(/font/PTMonoBold.woff) format('woff'),url(/font/PTMonoBold.ttf) format('truetype')}</style></defs><defs><linearGradient id="linearGradient-1" x1="50%" x2="50%" y1="0%" y2="100%"><stop offset="0%" stop-color="#FFF"/><stop offset="100%" stop-color="#D1CFCD"/></linearGradient><linearGradient id="linearGradient-2" x1="50%" x2="50%" y1="0%" y2="100%"><stop offset="0%" stop-color="#FFF"/><stop offset="100%" stop-color="#D1CFCD"/></linearGradient></defs><g id="dom" fill="none" fill-rule="evenodd" stroke="none" stroke-width="1"><g id="metric-client-width-height.svg"><path id="Rectangle-2" fill="#DBAF88" d="M411 130v290H21V130h390zm-25 25H46v240h340V155z"/><path id="Rectangle-1" stroke="#C06334" stroke-width="2" d="M350 177v199H67V177h283z"/><g id="Group" transform="translate(370 155)"><rect id="Rectangle-19" width="15" height="239" x=".5" y=".5" fill="#D1CFCD" stroke="#D1CFCD" rx="3"/><g id="Rectangle-18-+-Triangle-1"><rect id="Rectangle-18" width="15" height="19" x=".5" y=".5" fill="url(#linearGradient-1)" stroke="#D1CFCD" rx="3"/><path id="Triangle-1" fill="#7E7C7B" d="M8 7l3.2 6H4.8z"/></g><g id="Rectangle-18-+-Triangle-2" transform="matrix(1 0 0 -1 0 240)"><rect id="Rectangle-18" width="15" height="19" x=".5" y=".5" fill="url(#linearGradient-1)" stroke="#D1CFCD" rx="3"/><path id="Triangle-1" fill="#7E7C7B" d="M8 7l3.2 6H4.8z"/></g><g id="Rectangle-18-+-Triangle-3-+-Group" transform="translate(0 50)"><g id="Rectangle-18-+-Triangle-3" fill="url(#linearGradient-2)" stroke="#D1CFCD" transform="matrix(1 0 0 -1 0 51)"><rect id="Rectangle-18" width="15" height="50" x=".5" y=".5" rx="3"/></g><g id="Group" fill="#D1CFCD" stroke="#7E7C7B" transform="translate(4 20)"><path id="Rectangle-22" d="M.5.5h7v1h-7z"/><path id="Rectangle-23" d="M.5 3.5h7v1h-7z"/><path id="Rectangle-24" d="M.5 6.5h7v1h-7z"/><path id="Rectangle-25" d="M.5 9.5h7v1h-7z"/></g></g></g><text id="border" font-family="PTMono-Regular, PT Mono" font-size="12" font-weight="normal"><tspan x="12.9" y="75" fill="#C06334">border</tspan> <tspan x="20.1" y="89" fill="#1C85B5">25px</tspan></text><text id="padding" font-family="PTMono-Regular, PT Mono" font-size="12" font-weight="normal"><tspan x="32.3" y="45" fill="#C06334">padding</tspan> <tspan x="43.1" y="59" fill="#1C85B5">20px</tspan></text><text id="content-width:284px" font-family="PTMono-Regular, PT Mono" font-size="12" font-weight="normal"><tspan x="139.1" y="109" fill="#C06334">content width:</tspan> <tspan x="239.9" y="109" fill="#1C85B5">284px</tspan></text><path id="Line-15" fill="#C06334" fill-rule="nonzero" d="M336.5 110l14 7-14 7v-6H82.679l.001 6-14-7 14-7-.001 6H336.5v-6z"/><path id="Line-14" stroke="#C06334" stroke-dasharray="3,6" stroke-linecap="square" stroke-width="2" d="M21.48 93v43"/><path id="Line-13" stroke="#C06334" stroke-dasharray="3,6" stroke-linecap="square" stroke-width="2" d="M47.48 93v41"/><text id="border-2" font-family="PTMono-Regular, PT Mono" font-size="12" font-weight="normal"><tspan x="376.9" y="76" fill="#C06334">border</tspan> <tspan x="384.1" y="90" fill="#1C85B5">25px</tspan></text><text id="padding-2" font-family="PTMono-Regular, PT Mono" font-size="12" font-weight="normal"><tspan x="339.3" y="16" fill="#C06334">padding</tspan> <tspan x="350.1" y="30" fill="#1C85B5">20px</tspan></text><text id="scrollbar" font-family="PTMono-Regular, PT Mono" font-size="12" font-weight="normal"><tspan x="349.1" y="48" fill="#C06334">scrollbar</tspan> <tspan x="367.1" y="62" fill="#1C85B5">16px</tspan></text><path id="Line-17" stroke="#C06334" stroke-dasharray="3,6" stroke-linecap="square" stroke-width="2" d="M371.48 93v43"/><path id="Line-20" stroke="#C06334" stroke-dasharray="3,6" stroke-linecap="square" stroke-width="2" d="M385.48 93v43"/><path id="Line-18" stroke="#C06334" stroke-dasharray="3,6" stroke-linecap="square" stroke-width="2" d="M410.48 93v41"/><path id="Line-16" stroke="#C06334" stroke-dasharray="3,6" stroke-linecap="square" stroke-width="2" d="M66.48 93v41"/><path id="Line-19" stroke="#C06334" stroke-dasharray="3,6" stroke-linecap="square" stroke-width="2" d="M353.48 93v41"/><text id="clientWidth-=-20+284" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="80.3" y="473" fill="#C06334">clientWidth = </tspan> <tspan x="197.9" y="473" fill="#1C85B5">20+284+20 </tspan> <tspan x="281.9" y="473" fill="#C06334">=</tspan> <tspan x="290.3" y="473" fill="#1C85B5"> 324px</tspan></text><path id="Line-24" stroke="#C06334" stroke-dasharray="3,6" stroke-linecap="square" stroke-width="2" d="M46.5 376v88.142"/><path id="Line-25" stroke="#C06334" stroke-dasharray="3,6" stroke-linecap="square" stroke-width="2" d="M370.5 376v88.142"/><path id="Line-22" fill="#C06334" fill-rule="nonzero" d="M354 445.071l14 7-14 7v-6.001H62v6.001l-14-7 14-7v5.999h292v-5.999z"/><text id="clientHeight:240px" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal" transform="rotate(-90 488.5 277.5)"><tspan x="412.9" y="282" fill="#C06334">clientHeight:</tspan> <tspan x="522.1" y="282" fill="#1C85B5">240px</tspan></text><path id="Line-27" stroke="#C06334" stroke-dasharray="3,6" stroke-linecap="square" stroke-width="2" d="M365.5 156h120"/><path id="Line-28" stroke="#C06334" stroke-dasharray="3,6" stroke-linecap="square" stroke-width="2" d="M365.5 394h120"/><path id="Line-26" fill="#C06334" fill-rule="nonzero" d="M476 160l7 14-6-.001V375h6l-7 14-7-14h6V173.999l-6 .001 7-14z"/><text id="height:200px" font-family="PTMono-Regular, PT Mono" font-size="12" font-weight="normal" transform="rotate(-90 422.5 274)"><tspan x="379.3" y="278" fill="#C06334">height:</tspan> <tspan x="429.7" y="278" fill="#1C85B5">200px</tspan></text><path id="Line-3" stroke="#C06334" stroke-dasharray="3,6" stroke-linecap="square" stroke-width="2" d="M353.5 175h88.142"/><path id="Line-2" stroke="#C06334" stroke-dasharray="3,6" stroke-linecap="square" stroke-width="2" d="M353.5 377h88.142"/><path id="Line" fill="#C06334" fill-rule="nonzero" d="M435 177.5l7 14h-6V360h6l-7 14-7-14h6V191.5h-6l7-14z"/><text id="Introduction" fill="#643B0C" font-family="OpenSans-Bold, Open Sans" font-size="16" font-weight="bold"><tspan x="69" y="193">Introduction</tspan> <tspan x="69" y="221" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">This Ecma Standard is based on several </tspan> <tspan x="69" y="240" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">originating technologies, the most well </tspan> <tspan x="69" y="259" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">known being JavaScript (Netscape) and </tspan> <tspan x="69" y="278" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">JScript (Microsoft). The language was </tspan> <tspan x="69" y="297" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">invented by Brendan Eich at Netscape and </tspan> <tspan x="69" y="316" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">first appeared in that company’s Navigator </tspan> <tspan x="69" y="335" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">2.0 browser. It has appeared in all </tspan> <tspan x="69" y="354" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">subsequent browsers from Netscape and </tspan> <tspan x="69" y="373" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">in all browsers from Microsoft starting with </tspan></text></g></g></svg> \ No newline at end of file +<<<<<<< HEAD +<svg xmlns="http://www.w3.org/2000/svg" width="500" height="493" viewBox="0 0 500 493"><defs><style>@import url(https://fonts.googleapis.com/css?family=Open+Sans:bold,italic,bolditalic%7CPT+Mono);@font-face{font-family:'PT Mono';font-weight:700;font-style:normal;src:local('PT MonoBold'),url(/font/PTMonoBold.woff2) format('woff2'),url(/font/PTMonoBold.woff) format('woff'),url(/font/PTMonoBold.ttf) format('truetype')}</style></defs><defs><linearGradient id="linearGradient-1" x1="50%" x2="50%" y1="0%" y2="100%"><stop offset="0%" stop-color="#FFF"/><stop offset="100%" stop-color="#D1CFCD"/></linearGradient><linearGradient id="linearGradient-2" x1="50%" x2="50%" y1="0%" y2="100%"><stop offset="0%" stop-color="#FFF"/><stop offset="100%" stop-color="#D1CFCD"/></linearGradient></defs><g id="dom" fill="none" fill-rule="evenodd" stroke="none" stroke-width="1"><g id="metric-client-width-height.svg"><path id="Rectangle-2" fill="#DBAF88" d="M411 130v290H21V130h390zm-25 25H46v240h340V155z"/><path id="Rectangle-1" stroke="#C06334" stroke-width="2" d="M350 177v199H67V177h283z"/><g id="Group" transform="translate(370 155)"><rect id="Rectangle-19" width="15" height="239" x=".5" y=".5" fill="#D1CFCD" stroke="#D1CFCD" rx="3"/><g id="Rectangle-18-+-Triangle-1"><rect id="Rectangle-18" width="15" height="19" x=".5" y=".5" fill="url(#linearGradient-1)" stroke="#D1CFCD" rx="3"/><path id="Triangle-1" fill="#7E7C7B" d="M8 7l3.2 6H4.8z"/></g><g id="Rectangle-18-+-Triangle-2" transform="matrix(1 0 0 -1 0 240)"><rect id="Rectangle-18" width="15" height="19" x=".5" y=".5" fill="url(#linearGradient-1)" stroke="#D1CFCD" rx="3"/><path id="Triangle-1" fill="#7E7C7B" d="M8 7l3.2 6H4.8z"/></g><g id="Rectangle-18-+-Triangle-3-+-Group" transform="translate(0 50)"><g id="Rectangle-18-+-Triangle-3" fill="url(#linearGradient-2)" stroke="#D1CFCD" transform="matrix(1 0 0 -1 0 51)"><rect id="Rectangle-18" width="15" height="50" x=".5" y=".5" rx="3"/></g><g id="Group" fill="#D1CFCD" stroke="#7E7C7B" transform="translate(4 20)"><path id="Rectangle-22" d="M.5.5h7v1h-7z"/><path id="Rectangle-23" d="M.5 3.5h7v1h-7z"/><path id="Rectangle-24" d="M.5 6.5h7v1h-7z"/><path id="Rectangle-25" d="M.5 9.5h7v1h-7z"/></g></g></g><text id="border" font-family="PTMono-Regular, PT Mono" font-size="12" font-weight="normal"><tspan x="12.9" y="75" fill="#C06334">border</tspan> <tspan x="20.1" y="89" fill="#1C85B5">25px</tspan></text><text id="padding" font-family="PTMono-Regular, PT Mono" font-size="12" font-weight="normal"><tspan x="32.3" y="45" fill="#C06334">padding</tspan> <tspan x="43.1" y="59" fill="#1C85B5">20px</tspan></text><text id="content-width:284px" font-family="PTMono-Regular, PT Mono" font-size="12" font-weight="normal"><tspan x="139.1" y="109" fill="#C06334">content width:</tspan> <tspan x="239.9" y="109" fill="#1C85B5">284px</tspan></text><path id="Line-15" fill="#C06334" fill-rule="nonzero" d="M336.5 110l14 7-14 7v-6H82.679l.001 6-14-7 14-7-.001 6H336.5v-6z"/><path id="Line-14" stroke="#C06334" stroke-dasharray="3,6" stroke-linecap="square" stroke-width="2" d="M21.48 93v43"/><path id="Line-13" stroke="#C06334" stroke-dasharray="3,6" stroke-linecap="square" stroke-width="2" d="M47.48 93v41"/><text id="border-2" font-family="PTMono-Regular, PT Mono" font-size="12" font-weight="normal"><tspan x="376.9" y="76" fill="#C06334">border</tspan> <tspan x="384.1" y="90" fill="#1C85B5">25px</tspan></text><text id="padding-2" font-family="PTMono-Regular, PT Mono" font-size="12" font-weight="normal"><tspan x="339.3" y="16" fill="#C06334">padding</tspan> <tspan x="350.1" y="30" fill="#1C85B5">20px</tspan></text><text id="scrollbar" font-family="PTMono-Regular, PT Mono" font-size="12" font-weight="normal"><tspan x="349.1" y="48" fill="#C06334">scrollbar</tspan> <tspan x="367.1" y="62" fill="#1C85B5">16px</tspan></text><path id="Line-17" stroke="#C06334" stroke-dasharray="3,6" stroke-linecap="square" stroke-width="2" d="M371.48 93v43"/><path id="Line-20" stroke="#C06334" stroke-dasharray="3,6" stroke-linecap="square" stroke-width="2" d="M385.48 93v43"/><path id="Line-18" stroke="#C06334" stroke-dasharray="3,6" stroke-linecap="square" stroke-width="2" d="M410.48 93v41"/><path id="Line-16" stroke="#C06334" stroke-dasharray="3,6" stroke-linecap="square" stroke-width="2" d="M66.48 93v41"/><path id="Line-19" stroke="#C06334" stroke-dasharray="3,6" stroke-linecap="square" stroke-width="2" d="M353.48 93v41"/><text id="clientWidth-=-20+284" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="80.3" y="473" fill="#C06334">clientWidth = </tspan> <tspan x="197.9" y="473" fill="#1C85B5">20+284+20 </tspan> <tspan x="281.9" y="473" fill="#C06334">=</tspan> <tspan x="290.3" y="473" fill="#1C85B5"> 324px</tspan></text><path id="Line-24" stroke="#C06334" stroke-dasharray="3,6" stroke-linecap="square" stroke-width="2" d="M46.5 376v88.142"/><path id="Line-25" stroke="#C06334" stroke-dasharray="3,6" stroke-linecap="square" stroke-width="2" d="M370.5 376v88.142"/><path id="Line-22" fill="#C06334" fill-rule="nonzero" d="M354 445.071l14 7-14 7v-6.001H62v6.001l-14-7 14-7v5.999h292v-5.999z"/><text id="clientHeight:240px" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal" transform="rotate(-90 488.5 277.5)"><tspan x="412.9" y="282" fill="#C06334">clientHeight:</tspan> <tspan x="522.1" y="282" fill="#1C85B5">240px</tspan></text><path id="Line-27" stroke="#C06334" stroke-dasharray="3,6" stroke-linecap="square" stroke-width="2" d="M365.5 156h120"/><path id="Line-28" stroke="#C06334" stroke-dasharray="3,6" stroke-linecap="square" stroke-width="2" d="M365.5 394h120"/><path id="Line-26" fill="#C06334" fill-rule="nonzero" d="M476 160l7 14-6-.001V375h6l-7 14-7-14h6V173.999l-6 .001 7-14z"/><text id="height:200px" font-family="PTMono-Regular, PT Mono" font-size="12" font-weight="normal" transform="rotate(-90 422.5 274)"><tspan x="379.3" y="278" fill="#C06334">height:</tspan> <tspan x="429.7" y="278" fill="#1C85B5">200px</tspan></text><path id="Line-3" stroke="#C06334" stroke-dasharray="3,6" stroke-linecap="square" stroke-width="2" d="M353.5 175h88.142"/><path id="Line-2" stroke="#C06334" stroke-dasharray="3,6" stroke-linecap="square" stroke-width="2" d="M353.5 377h88.142"/><path id="Line" fill="#C06334" fill-rule="nonzero" d="M435 177.5l7 14h-6V360h6l-7 14-7-14h6V191.5h-6l7-14z"/><text id="Introduction" fill="#643B0C" font-family="OpenSans-Bold, Open Sans" font-size="16" font-weight="bold"><tspan x="69" y="193">Introduction</tspan> <tspan x="69" y="221" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">This Ecma Standard is based on several </tspan> <tspan x="69" y="240" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">originating technologies, the most well </tspan> <tspan x="69" y="259" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">known being JavaScript (Netscape) and </tspan> <tspan x="69" y="278" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">JScript (Microsoft). The language was </tspan> <tspan x="69" y="297" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">invented by Brendan Eich at Netscape and </tspan> <tspan x="69" y="316" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">first appeared in that company’s Navigator </tspan> <tspan x="69" y="335" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">2.0 browser. It has appeared in all </tspan> <tspan x="69" y="354" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">subsequent browsers from Netscape and </tspan> <tspan x="69" y="373" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">in all browsers from Microsoft starting with </tspan></text></g></g></svg> +======= +<svg xmlns="http://www.w3.org/2000/svg" width="500" height="493" viewBox="0 0 500 493"><defs><style>@import url(https://fonts.googleapis.com/css?family=Open+Sans:bold,italic,bolditalic%7CPT+Mono);@font-face{font-family:'PT Mono';font-weight:700;font-style:normal;src:local('PT MonoBold'),url(/font/PTMonoBold.woff2) format('woff2'),url(/font/PTMonoBold.woff) format('woff'),url(/font/PTMonoBold.ttf) format('truetype')}</style></defs><defs><linearGradient id="linearGradient-1" x1="50%" x2="50%" y1="0%" y2="100%"><stop offset="0%" stop-color="#FFF"/><stop offset="100%" stop-color="#D1CFCD"/></linearGradient><linearGradient id="linearGradient-2" x1="50%" x2="50%" y1="0%" y2="100%"><stop offset="0%" stop-color="#FFF"/><stop offset="100%" stop-color="#D1CFCD"/></linearGradient></defs><g id="dom" fill="none" fill-rule="evenodd" stroke="none" stroke-width="1"><g id="metric-client-width-height.svg"><path id="Rectangle-2" fill="#DBAF88" d="M411 130v290H21V130h390zm-25 25H46v240h340V155z"/><path id="Rectangle-1" stroke="#C06334" stroke-width="2" d="M350 177v199H67V177h283z"/><g id="Group-2" transform="translate(370 155)"><rect id="Rectangle-19" width="15" height="239" x=".5" y=".5" fill="#D1CFCD" stroke="#D1CFCD" rx="3"/><g id="Rectangle-18-+-Triangle-1"><rect id="Rectangle-18" width="15" height="19" x=".5" y=".5" fill="url(#linearGradient-1)" stroke="#D1CFCD" rx="3"/><path id="Triangle-1" fill="#7E7C7B" d="M8 7l3.2 6H4.8z"/></g><g id="Rectangle-18-+-Triangle-2" transform="matrix(1 0 0 -1 0 240)"><rect id="Rectangle-18" width="15" height="19" x=".5" y=".5" fill="url(#linearGradient-1)" stroke="#D1CFCD" rx="3"/><path id="Triangle-1" fill="#7E7C7B" d="M8 7l3.2 6H4.8z"/></g><g id="Rectangle-18-+-Triangle-3-+-Group" transform="translate(0 50)"><g id="Rectangle-18-+-Triangle-3" fill="url(#linearGradient-2)" stroke="#D1CFCD" transform="matrix(1 0 0 -1 0 51)"><rect id="Rectangle-18" width="15" height="50" x=".5" y=".5" rx="3"/></g><g id="Group" fill="#D1CFCD" stroke="#7E7C7B" transform="translate(4 20)"><path id="Rectangle-22" d="M.5.5h7v1h-7z"/><path id="Rectangle-23" d="M.5 3.5h7v1h-7z"/><path id="Rectangle-24" d="M.5 6.5h7v1h-7z"/><path id="Rectangle-25" d="M.5 9.5h7v1h-7z"/></g></g></g><text id="border" font-family="PTMono-Regular, PT Mono" font-size="12" font-weight="normal"><tspan x="12.9" y="75" fill="#C06334">border</tspan> <tspan x="20.1" y="89" fill="#1C85B5">25px</tspan></text><text id="padding" font-family="PTMono-Regular, PT Mono" font-size="12" font-weight="normal"><tspan x="32.3" y="45" fill="#C06334">padding</tspan> <tspan x="43.1" y="59" fill="#1C85B5">20px</tspan></text><text id="content-width:284px" font-family="PTMono-Regular, PT Mono" font-size="12" font-weight="normal"><tspan x="139.1" y="109" fill="#C06334">content width:</tspan> <tspan x="239.9" y="109" fill="#1C85B5">284px</tspan></text><path id="Line-15" fill="#C06334" fill-rule="nonzero" d="M336.5 110l14 7-14 7v-6H82.679l.001 6-14-7 14-7-.001 6H336.5v-6z"/><path id="Line-14" stroke="#C06334" stroke-dasharray="3,6" stroke-linecap="square" stroke-width="2" d="M21.48 93v43"/><path id="Line-13" stroke="#C06334" stroke-dasharray="3,6" stroke-linecap="square" stroke-width="2" d="M47.48 93v41"/><text id="border-2" font-family="PTMono-Regular, PT Mono" font-size="12" font-weight="normal"><tspan x="376.9" y="76" fill="#C06334">border</tspan> <tspan x="384.1" y="90" fill="#1C85B5">25px</tspan></text><text id="padding-2" font-family="PTMono-Regular, PT Mono" font-size="12" font-weight="normal"><tspan x="339.3" y="16" fill="#C06334">padding</tspan> <tspan x="350.1" y="30" fill="#1C85B5">20px</tspan></text><text id="scrollbar" font-family="PTMono-Regular, PT Mono" font-size="12" font-weight="normal"><tspan x="349.1" y="48" fill="#C06334">scrollbar</tspan> <tspan x="367.1" y="62" fill="#1C85B5">16px</tspan></text><path id="Line-17" stroke="#C06334" stroke-dasharray="3,6" stroke-linecap="square" stroke-width="2" d="M371.48 93v43"/><path id="Line-20" stroke="#C06334" stroke-dasharray="3,6" stroke-linecap="square" stroke-width="2" d="M385.48 93v43"/><path id="Line-18" stroke="#C06334" stroke-dasharray="3,6" stroke-linecap="square" stroke-width="2" d="M410.48 93v41"/><path id="Line-16" stroke="#C06334" stroke-dasharray="3,6" stroke-linecap="square" stroke-width="2" d="M66.48 93v41"/><path id="Line-19" stroke="#C06334" stroke-dasharray="3,6" stroke-linecap="square" stroke-width="2" d="M353.48 93v41"/><text id="clientWidth-=-20+284" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="80.3" y="473" fill="#C06334">clientWidth = </tspan> <tspan x="197.9" y="473" fill="#1C85B5">20+284+20 </tspan> <tspan x="281.9" y="473" fill="#C06334">=</tspan> <tspan x="290.3" y="473" fill="#1C85B5"> 324px</tspan></text><path id="Line-24" stroke="#C06334" stroke-dasharray="3,6" stroke-linecap="square" stroke-width="2" d="M46.5 376v88.142"/><path id="Line-25" stroke="#C06334" stroke-dasharray="3,6" stroke-linecap="square" stroke-width="2" d="M370.5 376v88.142"/><path id="Line-22" fill="#C06334" fill-rule="nonzero" d="M354 445.071l14 7-14 7v-6.001H62v6.001l-14-7 14-7v5.999h292v-5.999z"/><text id="clientHeight:240px" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal" transform="rotate(-90 488.5 277.5)"><tspan x="412.9" y="282" fill="#C06334">clientHeight:</tspan> <tspan x="522.1" y="282" fill="#1C85B5">240px</tspan></text><path id="Line-27" stroke="#C06334" stroke-dasharray="3,6" stroke-linecap="square" stroke-width="2" d="M365.5 156h120"/><path id="Line-28" stroke="#C06334" stroke-dasharray="3,6" stroke-linecap="square" stroke-width="2" d="M365.5 394h120"/><path id="Line-26" fill="#C06334" fill-rule="nonzero" d="M476 160l7 14-6-.001V375h6l-7 14-7-14h6V173.999l-6 .001 7-14z"/><text id="height:200px" font-family="PTMono-Regular, PT Mono" font-size="12" font-weight="normal" transform="rotate(-90 422.5 274)"><tspan x="379.3" y="278" fill="#C06334">height:</tspan> <tspan x="429.7" y="278" fill="#1C85B5">200px</tspan></text><path id="Line-3" stroke="#C06334" stroke-dasharray="3,6" stroke-linecap="square" stroke-width="2" d="M353.5 175h88.142"/><path id="Line-2" stroke="#C06334" stroke-dasharray="3,6" stroke-linecap="square" stroke-width="2" d="M353.5 377h88.142"/><path id="Line" fill="#C06334" fill-rule="nonzero" d="M435 177.5l7 14h-6V360h6l-7 14-7-14h6V191.5h-6l7-14z"/><text id="Introduction" fill="#643B0C" font-family="OpenSans-Bold, Open Sans" font-size="16" font-weight="bold"><tspan x="69" y="193">Introduction</tspan> <tspan x="69" y="221" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">This Ecma Standard is based on several </tspan> <tspan x="69" y="240" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">originating technologies, the most well </tspan> <tspan x="69" y="259" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">known being JavaScript (Netscape) and </tspan> <tspan x="69" y="278" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">JScript (Microsoft). The language was </tspan> <tspan x="69" y="297" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">invented by Brendan Eich at Netscape and </tspan> <tspan x="69" y="316" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">first appeared in that company’s Navigator </tspan> <tspan x="69" y="335" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">2.0 browser. It has appeared in all </tspan> <tspan x="69" y="354" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">subsequent browsers from Netscape and </tspan> <tspan x="69" y="373" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">in all browsers from Microsoft starting with </tspan></text></g></g></svg> +>>>>>>> 540d753e90789205fc6e75c502f68382c87dea9b diff --git a/2-ui/1-document/09-size-and-scroll/metric-css.svg b/2-ui/1-document/09-size-and-scroll/metric-css.svg index 13aa62afd..3d2fb3781 100644 --- a/2-ui/1-document/09-size-and-scroll/metric-css.svg +++ b/2-ui/1-document/09-size-and-scroll/metric-css.svg @@ -1 +1,5 @@ -<svg xmlns="http://www.w3.org/2000/svg" width="566" height="469" viewBox="0 0 566 469"><defs><style>@import url(https://fonts.googleapis.com/css?family=Open+Sans:bold,italic,bolditalic%7CPT+Mono);@font-face{font-family:'PT Mono';font-weight:700;font-style:normal;src:local('PT MonoBold'),url(/font/PTMonoBold.woff2) format('woff2'),url(/font/PTMonoBold.woff) format('woff'),url(/font/PTMonoBold.ttf) format('truetype')}</style></defs><defs><linearGradient id="linearGradient-1" x1="50%" x2="50%" y1="0%" y2="100%"><stop offset="0%" stop-color="#FFF"/><stop offset="100%" stop-color="#D1CFCD"/></linearGradient><linearGradient id="linearGradient-2" x1="50%" x2="50%" y1="0%" y2="100%"><stop offset="0%" stop-color="#FFF"/><stop offset="100%" stop-color="#D1CFCD"/></linearGradient></defs><g id="dom" fill="none" fill-rule="evenodd" stroke="none" stroke-width="1"><g id="metric-css.svg"><path id="Rectangle-1" stroke="#C06334" stroke-width="2" d="M460 184v199H177V184h283z"/><path id="Rectangle-1" fill="#DBAF88" d="M521 139v290H131V139h390zm-25 25H156v240h340V164z"/><g id="Group" transform="translate(480 163)"><rect id="Rectangle-19" width="15" height="239" x=".5" y=".5" fill="#D1CFCD" stroke="#D1CFCD" rx="3"/><g id="Rectangle-18-+-Triangle-1"><rect id="Rectangle-18" width="15" height="19" x=".5" y=".5" fill="url(#linearGradient-1)" stroke="#D1CFCD" rx="3"/><path id="Triangle-1" fill="#7E7C7B" d="M8 7l3.2 6H4.8z"/></g><g id="Rectangle-18-+-Triangle-2" transform="matrix(1 0 0 -1 0 240)"><rect id="Rectangle-18" width="15" height="19" x=".5" y=".5" fill="url(#linearGradient-1)" stroke="#D1CFCD" rx="3"/><path id="Triangle-1" fill="#7E7C7B" d="M8 7l3.2 6H4.8z"/></g><g id="Rectangle-18-+-Triangle-3-+-Group" transform="translate(0 50)"><g id="Rectangle-18-+-Triangle-3" fill="url(#linearGradient-2)" stroke="#D1CFCD" transform="matrix(1 0 0 -1 0 51)"><rect id="Rectangle-18" width="15" height="50" x=".5" y=".5" rx="3"/></g><g id="Group" fill="#D1CFCD" stroke="#7E7C7B" transform="translate(4 20)"><path id="Rectangle-22" d="M.5.5h7v1h-7z"/><path id="Rectangle-23" d="M.5 3.5h7v1h-7z"/><path id="Rectangle-24" d="M.5 6.5h7v1h-7z"/><path id="Rectangle-25" d="M.5 9.5h7v1h-7z"/></g></g></g><text id="padding:20px" font-family="PTMono-Regular, PT Mono" font-size="12" font-weight="normal"><tspan x="7" y="176" fill="#C06334">padding:</tspan> <tspan x="64.6" y="176" fill="#1C85B5">20px</tspan></text><text id="height:200px" font-family="PTMono-Regular, PT Mono" font-size="12" font-weight="normal" transform="rotate(-90 530.5 282)"><tspan x="487.3" y="286" fill="#C06334">height:</tspan> <tspan x="537.7" y="286" fill="#1C85B5">200px</tspan></text><path id="Line" stroke="#C06334" stroke-dasharray="3,6" stroke-linecap="square" stroke-width="2" d="M461.5 183h88.142"/><path id="Line-3" stroke="#C06334" stroke-dasharray="3,6" stroke-linecap="square" stroke-width="2" d="M93.5 184h88.142"/><path id="Line-4" stroke="#C06334" stroke-dasharray="3,6" stroke-linecap="square" stroke-width="2" d="M93.5 162h88.142"/><path id="Line-2" stroke="#C06334" stroke-dasharray="3,6" stroke-linecap="square" stroke-width="2" d="M461.5 385h88.142"/><path id="Line" fill="#C06334" fill-rule="nonzero" d="M543 185.5l7 14h-6V368h6l-7 14-7-14h6V199.5h-6l7-14z"/><text id="padding:20px-2" font-family="PTMono-Regular, PT Mono" font-size="12" font-weight="normal"><tspan x="7" y="396" fill="#C06334">padding:</tspan> <tspan x="64.6" y="396" fill="#1C85B5">20px</tspan></text><path id="Line-5" stroke="#C06334" stroke-dasharray="3,6" stroke-linecap="square" stroke-width="2" d="M93.5 404h88.142"/><path id="Line-6" stroke="#C06334" stroke-dasharray="3,6" stroke-linecap="square" stroke-width="2" d="M93.5 382h88.142"/><text id="border" font-family="PTMono-Regular, PT Mono" font-size="12" font-weight="normal"><tspan x="122.9" y="83" fill="#C06334">border</tspan> <tspan x="130.1" y="97" fill="#1C85B5">25px</tspan></text><text id="padding" font-family="PTMono-Regular, PT Mono" font-size="12" font-weight="normal"><tspan x="142.3" y="53" fill="#C06334">padding</tspan> <tspan x="153.1" y="67" fill="#1C85B5">20px</tspan></text><text id="content-width:284px" font-family="PTMono-Regular, PT Mono" font-size="12" font-weight="normal"><tspan x="249.1" y="117" fill="#C06334">content width:</tspan> <tspan x="349.9" y="117" fill="#1C85B5">284px</tspan></text><path id="Line-21" fill="#C06334" fill-rule="nonzero" d="M446.5 118l14 7-14 7v-6H192.679l.001 6-14-7 14-7-.001 6H446.5v-6z"/><path id="Line-14" stroke="#C06334" stroke-dasharray="3,6" stroke-linecap="square" stroke-width="2" d="M131.48 101v43"/><path id="Line-13" stroke="#C06334" stroke-dasharray="3,6" stroke-linecap="square" stroke-width="2" d="M157.48 101v41"/><text id="border-2" font-family="PTMono-Regular, PT Mono" font-size="12" font-weight="normal"><tspan x="486.9" y="84" fill="#C06334">border</tspan> <tspan x="494.1" y="98" fill="#1C85B5">25px</tspan></text><text id="padding-2" font-family="PTMono-Regular, PT Mono" font-size="12" font-weight="normal"><tspan x="449.3" y="24" fill="#C06334">padding</tspan> <tspan x="460.1" y="38" fill="#1C85B5">20px</tspan></text><text id="scrollbar" font-family="PTMono-Regular, PT Mono" font-size="12" font-weight="normal"><tspan x="459.1" y="56" fill="#C06334">scrollbar</tspan> <tspan x="477.1" y="70" fill="#1C85B5">16px</tspan></text><text id="Introduction" fill="#643B0C" font-family="OpenSans-Bold, Open Sans" font-size="16" font-weight="bold"><tspan x="178" y="200">Introduction</tspan> <tspan x="178" y="228" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">This Ecma Standard is based on several </tspan> <tspan x="178" y="247" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">originating technologies, the most well </tspan> <tspan x="178" y="266" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">known being JavaScript (Netscape) and </tspan> <tspan x="178" y="285" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">JScript (Microsoft). The language was </tspan> <tspan x="178" y="304" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">invented by Brendan Eich at Netscape and </tspan> <tspan x="178" y="323" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">first appeared in that company’s Navigator </tspan> <tspan x="178" y="342" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">2.0 browser. It has appeared in all </tspan> <tspan x="178" y="361" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">subsequent browsers from Netscape and </tspan> <tspan x="178" y="380" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">in all browsers from Microsoft starting with</tspan> <tspan x="178" y="399" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal"> </tspan></text><path id="Line-17" stroke="#C06334" stroke-dasharray="3,6" stroke-linecap="square" stroke-width="2" d="M481.48 101v43"/><path id="Line-20" stroke="#C06334" stroke-dasharray="3,6" stroke-linecap="square" stroke-width="2" d="M495.48 101v43"/><path id="Line-18" stroke="#C06334" stroke-dasharray="3,6" stroke-linecap="square" stroke-width="2" d="M520.48 101v41"/><path id="Line-16" stroke="#C06334" stroke-dasharray="3,6" stroke-linecap="square" stroke-width="2" d="M176.48 101v41"/><path id="Line-19" stroke="#C06334" stroke-dasharray="3,6" stroke-linecap="square" stroke-width="2" d="M463.48 101v41"/></g></g></svg> \ No newline at end of file +<<<<<<< HEAD +<svg xmlns="http://www.w3.org/2000/svg" width="566" height="469" viewBox="0 0 566 469"><defs><style>@import url(https://fonts.googleapis.com/css?family=Open+Sans:bold,italic,bolditalic%7CPT+Mono);@font-face{font-family:'PT Mono';font-weight:700;font-style:normal;src:local('PT MonoBold'),url(/font/PTMonoBold.woff2) format('woff2'),url(/font/PTMonoBold.woff) format('woff'),url(/font/PTMonoBold.ttf) format('truetype')}</style></defs><defs><linearGradient id="linearGradient-1" x1="50%" x2="50%" y1="0%" y2="100%"><stop offset="0%" stop-color="#FFF"/><stop offset="100%" stop-color="#D1CFCD"/></linearGradient><linearGradient id="linearGradient-2" x1="50%" x2="50%" y1="0%" y2="100%"><stop offset="0%" stop-color="#FFF"/><stop offset="100%" stop-color="#D1CFCD"/></linearGradient></defs><g id="dom" fill="none" fill-rule="evenodd" stroke="none" stroke-width="1"><g id="metric-css.svg"><path id="Rectangle-1" stroke="#C06334" stroke-width="2" d="M460 184v199H177V184h283z"/><path id="Rectangle-1" fill="#DBAF88" d="M521 139v290H131V139h390zm-25 25H156v240h340V164z"/><g id="Group" transform="translate(480 163)"><rect id="Rectangle-19" width="15" height="239" x=".5" y=".5" fill="#D1CFCD" stroke="#D1CFCD" rx="3"/><g id="Rectangle-18-+-Triangle-1"><rect id="Rectangle-18" width="15" height="19" x=".5" y=".5" fill="url(#linearGradient-1)" stroke="#D1CFCD" rx="3"/><path id="Triangle-1" fill="#7E7C7B" d="M8 7l3.2 6H4.8z"/></g><g id="Rectangle-18-+-Triangle-2" transform="matrix(1 0 0 -1 0 240)"><rect id="Rectangle-18" width="15" height="19" x=".5" y=".5" fill="url(#linearGradient-1)" stroke="#D1CFCD" rx="3"/><path id="Triangle-1" fill="#7E7C7B" d="M8 7l3.2 6H4.8z"/></g><g id="Rectangle-18-+-Triangle-3-+-Group" transform="translate(0 50)"><g id="Rectangle-18-+-Triangle-3" fill="url(#linearGradient-2)" stroke="#D1CFCD" transform="matrix(1 0 0 -1 0 51)"><rect id="Rectangle-18" width="15" height="50" x=".5" y=".5" rx="3"/></g><g id="Group" fill="#D1CFCD" stroke="#7E7C7B" transform="translate(4 20)"><path id="Rectangle-22" d="M.5.5h7v1h-7z"/><path id="Rectangle-23" d="M.5 3.5h7v1h-7z"/><path id="Rectangle-24" d="M.5 6.5h7v1h-7z"/><path id="Rectangle-25" d="M.5 9.5h7v1h-7z"/></g></g></g><text id="padding:20px" font-family="PTMono-Regular, PT Mono" font-size="12" font-weight="normal"><tspan x="7" y="176" fill="#C06334">padding:</tspan> <tspan x="64.6" y="176" fill="#1C85B5">20px</tspan></text><text id="height:200px" font-family="PTMono-Regular, PT Mono" font-size="12" font-weight="normal" transform="rotate(-90 530.5 282)"><tspan x="487.3" y="286" fill="#C06334">height:</tspan> <tspan x="537.7" y="286" fill="#1C85B5">200px</tspan></text><path id="Line" stroke="#C06334" stroke-dasharray="3,6" stroke-linecap="square" stroke-width="2" d="M461.5 183h88.142"/><path id="Line-3" stroke="#C06334" stroke-dasharray="3,6" stroke-linecap="square" stroke-width="2" d="M93.5 184h88.142"/><path id="Line-4" stroke="#C06334" stroke-dasharray="3,6" stroke-linecap="square" stroke-width="2" d="M93.5 162h88.142"/><path id="Line-2" stroke="#C06334" stroke-dasharray="3,6" stroke-linecap="square" stroke-width="2" d="M461.5 385h88.142"/><path id="Line" fill="#C06334" fill-rule="nonzero" d="M543 185.5l7 14h-6V368h6l-7 14-7-14h6V199.5h-6l7-14z"/><text id="padding:20px-2" font-family="PTMono-Regular, PT Mono" font-size="12" font-weight="normal"><tspan x="7" y="396" fill="#C06334">padding:</tspan> <tspan x="64.6" y="396" fill="#1C85B5">20px</tspan></text><path id="Line-5" stroke="#C06334" stroke-dasharray="3,6" stroke-linecap="square" stroke-width="2" d="M93.5 404h88.142"/><path id="Line-6" stroke="#C06334" stroke-dasharray="3,6" stroke-linecap="square" stroke-width="2" d="M93.5 382h88.142"/><text id="border" font-family="PTMono-Regular, PT Mono" font-size="12" font-weight="normal"><tspan x="122.9" y="83" fill="#C06334">border</tspan> <tspan x="130.1" y="97" fill="#1C85B5">25px</tspan></text><text id="padding" font-family="PTMono-Regular, PT Mono" font-size="12" font-weight="normal"><tspan x="142.3" y="53" fill="#C06334">padding</tspan> <tspan x="153.1" y="67" fill="#1C85B5">20px</tspan></text><text id="content-width:284px" font-family="PTMono-Regular, PT Mono" font-size="12" font-weight="normal"><tspan x="249.1" y="117" fill="#C06334">content width:</tspan> <tspan x="349.9" y="117" fill="#1C85B5">284px</tspan></text><path id="Line-21" fill="#C06334" fill-rule="nonzero" d="M446.5 118l14 7-14 7v-6H192.679l.001 6-14-7 14-7-.001 6H446.5v-6z"/><path id="Line-14" stroke="#C06334" stroke-dasharray="3,6" stroke-linecap="square" stroke-width="2" d="M131.48 101v43"/><path id="Line-13" stroke="#C06334" stroke-dasharray="3,6" stroke-linecap="square" stroke-width="2" d="M157.48 101v41"/><text id="border-2" font-family="PTMono-Regular, PT Mono" font-size="12" font-weight="normal"><tspan x="486.9" y="84" fill="#C06334">border</tspan> <tspan x="494.1" y="98" fill="#1C85B5">25px</tspan></text><text id="padding-2" font-family="PTMono-Regular, PT Mono" font-size="12" font-weight="normal"><tspan x="449.3" y="24" fill="#C06334">padding</tspan> <tspan x="460.1" y="38" fill="#1C85B5">20px</tspan></text><text id="scrollbar" font-family="PTMono-Regular, PT Mono" font-size="12" font-weight="normal"><tspan x="459.1" y="56" fill="#C06334">scrollbar</tspan> <tspan x="477.1" y="70" fill="#1C85B5">16px</tspan></text><text id="Introduction" fill="#643B0C" font-family="OpenSans-Bold, Open Sans" font-size="16" font-weight="bold"><tspan x="178" y="200">Introduction</tspan> <tspan x="178" y="228" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">This Ecma Standard is based on several </tspan> <tspan x="178" y="247" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">originating technologies, the most well </tspan> <tspan x="178" y="266" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">known being JavaScript (Netscape) and </tspan> <tspan x="178" y="285" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">JScript (Microsoft). The language was </tspan> <tspan x="178" y="304" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">invented by Brendan Eich at Netscape and </tspan> <tspan x="178" y="323" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">first appeared in that company’s Navigator </tspan> <tspan x="178" y="342" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">2.0 browser. It has appeared in all </tspan> <tspan x="178" y="361" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">subsequent browsers from Netscape and </tspan> <tspan x="178" y="380" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">in all browsers from Microsoft starting with</tspan> <tspan x="178" y="399" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal"> </tspan></text><path id="Line-17" stroke="#C06334" stroke-dasharray="3,6" stroke-linecap="square" stroke-width="2" d="M481.48 101v43"/><path id="Line-20" stroke="#C06334" stroke-dasharray="3,6" stroke-linecap="square" stroke-width="2" d="M495.48 101v43"/><path id="Line-18" stroke="#C06334" stroke-dasharray="3,6" stroke-linecap="square" stroke-width="2" d="M520.48 101v41"/><path id="Line-16" stroke="#C06334" stroke-dasharray="3,6" stroke-linecap="square" stroke-width="2" d="M176.48 101v41"/><path id="Line-19" stroke="#C06334" stroke-dasharray="3,6" stroke-linecap="square" stroke-width="2" d="M463.48 101v41"/></g></g></svg> +======= +<svg xmlns="http://www.w3.org/2000/svg" width="566" height="469" viewBox="0 0 566 469"><defs><style>@import url(https://fonts.googleapis.com/css?family=Open+Sans:bold,italic,bolditalic%7CPT+Mono);@font-face{font-family:'PT Mono';font-weight:700;font-style:normal;src:local('PT MonoBold'),url(/font/PTMonoBold.woff2) format('woff2'),url(/font/PTMonoBold.woff) format('woff'),url(/font/PTMonoBold.ttf) format('truetype')}</style></defs><defs><linearGradient id="linearGradient-1" x1="50%" x2="50%" y1="0%" y2="100%"><stop offset="0%" stop-color="#FFF"/><stop offset="100%" stop-color="#D1CFCD"/></linearGradient><linearGradient id="linearGradient-2" x1="50%" x2="50%" y1="0%" y2="100%"><stop offset="0%" stop-color="#FFF"/><stop offset="100%" stop-color="#D1CFCD"/></linearGradient></defs><g id="dom" fill="none" fill-rule="evenodd" stroke="none" stroke-width="1"><g id="metric-css.svg"><path id="Rectangle-1" stroke="#C06334" stroke-width="2" d="M460 184v199H177V184h283z"/><path id="Rectangle-1" fill="#DBAF88" d="M521 139v290H131V139h390zm-25 25H156v240h340V164z"/><g id="Group-2" transform="translate(480 163)"><rect id="Rectangle-19" width="15" height="239" x=".5" y=".5" fill="#D1CFCD" stroke="#D1CFCD" rx="3"/><g id="Rectangle-18-+-Triangle-1"><rect id="Rectangle-18" width="15" height="19" x=".5" y=".5" fill="url(#linearGradient-1)" stroke="#D1CFCD" rx="3"/><path id="Triangle-1" fill="#7E7C7B" d="M8 7l3.2 6H4.8z"/></g><g id="Rectangle-18-+-Triangle-2" transform="matrix(1 0 0 -1 0 240)"><rect id="Rectangle-18" width="15" height="19" x=".5" y=".5" fill="url(#linearGradient-1)" stroke="#D1CFCD" rx="3"/><path id="Triangle-1" fill="#7E7C7B" d="M8 7l3.2 6H4.8z"/></g><g id="Rectangle-18-+-Triangle-3-+-Group" transform="translate(0 50)"><g id="Rectangle-18-+-Triangle-3" fill="url(#linearGradient-2)" stroke="#D1CFCD" transform="matrix(1 0 0 -1 0 51)"><rect id="Rectangle-18" width="15" height="50" x=".5" y=".5" rx="3"/></g><g id="Group" fill="#D1CFCD" stroke="#7E7C7B" transform="translate(4 20)"><path id="Rectangle-22" d="M.5.5h7v1h-7z"/><path id="Rectangle-23" d="M.5 3.5h7v1h-7z"/><path id="Rectangle-24" d="M.5 6.5h7v1h-7z"/><path id="Rectangle-25" d="M.5 9.5h7v1h-7z"/></g></g></g><text id="padding:20px" font-family="PTMono-Regular, PT Mono" font-size="12" font-weight="normal"><tspan x="7" y="176" fill="#C06334">padding:</tspan> <tspan x="64.6" y="176" fill="#1C85B5">20px</tspan></text><text id="height:200px" font-family="PTMono-Regular, PT Mono" font-size="12" font-weight="normal" transform="rotate(-90 530.5 282)"><tspan x="487.3" y="286" fill="#C06334">height:</tspan> <tspan x="537.7" y="286" fill="#1C85B5">200px</tspan></text><path id="Line" stroke="#C06334" stroke-dasharray="3,6" stroke-linecap="square" stroke-width="2" d="M461.5 183h88.142"/><path id="Line-3" stroke="#C06334" stroke-dasharray="3,6" stroke-linecap="square" stroke-width="2" d="M93.5 184h88.142"/><path id="Line-4" stroke="#C06334" stroke-dasharray="3,6" stroke-linecap="square" stroke-width="2" d="M93.5 162h88.142"/><path id="Line-2" stroke="#C06334" stroke-dasharray="3,6" stroke-linecap="square" stroke-width="2" d="M461.5 385h88.142"/><path id="Line" fill="#C06334" fill-rule="nonzero" d="M543 185.5l7 14h-6V368h6l-7 14-7-14h6V199.5h-6l7-14z"/><text id="padding:20px-2" font-family="PTMono-Regular, PT Mono" font-size="12" font-weight="normal"><tspan x="7" y="396" fill="#C06334">padding:</tspan> <tspan x="64.6" y="396" fill="#1C85B5">20px</tspan></text><path id="Line-5" stroke="#C06334" stroke-dasharray="3,6" stroke-linecap="square" stroke-width="2" d="M93.5 404h88.142"/><path id="Line-6" stroke="#C06334" stroke-dasharray="3,6" stroke-linecap="square" stroke-width="2" d="M93.5 382h88.142"/><text id="border" font-family="PTMono-Regular, PT Mono" font-size="12" font-weight="normal"><tspan x="122.9" y="83" fill="#C06334">border</tspan> <tspan x="130.1" y="97" fill="#1C85B5">25px</tspan></text><text id="padding" font-family="PTMono-Regular, PT Mono" font-size="12" font-weight="normal"><tspan x="142.3" y="53" fill="#C06334">padding</tspan> <tspan x="153.1" y="67" fill="#1C85B5">20px</tspan></text><text id="content-width:284px" font-family="PTMono-Regular, PT Mono" font-size="12" font-weight="normal"><tspan x="249.1" y="117" fill="#C06334">content width:</tspan> <tspan x="349.9" y="117" fill="#1C85B5">284px</tspan></text><path id="Line-21" fill="#C06334" fill-rule="nonzero" d="M446.5 118l14 7-14 7v-6H192.679l.001 6-14-7 14-7-.001 6H446.5v-6z"/><path id="Line-14" stroke="#C06334" stroke-dasharray="3,6" stroke-linecap="square" stroke-width="2" d="M131.48 101v43"/><path id="Line-13" stroke="#C06334" stroke-dasharray="3,6" stroke-linecap="square" stroke-width="2" d="M157.48 101v41"/><text id="border-2" font-family="PTMono-Regular, PT Mono" font-size="12" font-weight="normal"><tspan x="486.9" y="84" fill="#C06334">border</tspan> <tspan x="494.1" y="98" fill="#1C85B5">25px</tspan></text><text id="padding-2" font-family="PTMono-Regular, PT Mono" font-size="12" font-weight="normal"><tspan x="449.3" y="24" fill="#C06334">padding</tspan> <tspan x="460.1" y="38" fill="#1C85B5">20px</tspan></text><text id="scrollbar" font-family="PTMono-Regular, PT Mono" font-size="12" font-weight="normal"><tspan x="459.1" y="56" fill="#C06334">scrollbar</tspan> <tspan x="477.1" y="70" fill="#1C85B5">16px</tspan></text><text id="Introduction" fill="#643B0C" font-family="OpenSans-Bold, Open Sans" font-size="16" font-weight="bold"><tspan x="178" y="200">Introduction</tspan> <tspan x="178" y="228" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">This Ecma Standard is based on several </tspan> <tspan x="178" y="247" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">originating technologies, the most well </tspan> <tspan x="178" y="266" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">known being JavaScript (Netscape) and </tspan> <tspan x="178" y="285" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">JScript (Microsoft). The language was </tspan> <tspan x="178" y="304" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">invented by Brendan Eich at Netscape and </tspan> <tspan x="178" y="323" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">first appeared in that company’s Navigator </tspan> <tspan x="178" y="342" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">2.0 browser. It has appeared in all </tspan> <tspan x="178" y="361" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">subsequent browsers from Netscape and </tspan> <tspan x="178" y="380" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">in all browsers from Microsoft starting with</tspan> <tspan x="178" y="399" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal"> </tspan></text><path id="Line-17" stroke="#C06334" stroke-dasharray="3,6" stroke-linecap="square" stroke-width="2" d="M481.48 101v43"/><path id="Line-20" stroke="#C06334" stroke-dasharray="3,6" stroke-linecap="square" stroke-width="2" d="M495.48 101v43"/><path id="Line-18" stroke="#C06334" stroke-dasharray="3,6" stroke-linecap="square" stroke-width="2" d="M520.48 101v41"/><path id="Line-16" stroke="#C06334" stroke-dasharray="3,6" stroke-linecap="square" stroke-width="2" d="M176.48 101v41"/><path id="Line-19" stroke="#C06334" stroke-dasharray="3,6" stroke-linecap="square" stroke-width="2" d="M463.48 101v41"/></g></g></svg> +>>>>>>> 540d753e90789205fc6e75c502f68382c87dea9b diff --git a/2-ui/1-document/09-size-and-scroll/metric-offset-parent.svg b/2-ui/1-document/09-size-and-scroll/metric-offset-parent.svg index 9e247639b..563b7e150 100644 --- a/2-ui/1-document/09-size-and-scroll/metric-offset-parent.svg +++ b/2-ui/1-document/09-size-and-scroll/metric-offset-parent.svg @@ -1 +1,5 @@ -<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="597" height="520" viewBox="0 0 597 520"><defs><style>@import url(https://fonts.googleapis.com/css?family=Open+Sans:bold,italic,bolditalic%7CPT+Mono);@font-face{font-family:'PT Mono';font-weight:700;font-style:normal;src:local('PT MonoBold'),url(/font/PTMonoBold.woff2) format('woff2'),url(/font/PTMonoBold.woff) format('woff'),url(/font/PTMonoBold.ttf) format('truetype')}</style></defs><defs><linearGradient id="linearGradient-3" x1="50%" x2="50%" y1="0%" y2="100%"><stop offset="0%" stop-color="#FFF"/><stop offset="100%" stop-color="#D1CFCD"/></linearGradient><linearGradient id="linearGradient-4" x1="50%" x2="50%" y1="0%" y2="100%"><stop offset="0%" stop-color="#FFF"/><stop offset="100%" stop-color="#D1CFCD"/></linearGradient><pattern id="pattern-1" width="30" height="30" x="-12" y="-6" patternUnits="userSpaceOnUse"><use xlink:href="#image-2"/></pattern><image id="image-2" width="30" height="30" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB4AAAAeCAYAAAA7MK6iAAAAAXNSR0IArs4c6QAAAERlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAA6ABAAMAAAABAAEAAKACAAQAAAABAAAAHqADAAQAAAABAAAAHgAAAADKQTcFAAAA/UlEQVRIDe3VXQ6DIAwA4LUea7uCIeFdD+f2bDReYbvGbqLOmmEEAQ2T8jJeDEnTr+VPaJrmnWVZmef58+IYbdtex3G8nxkHMZIeKRKoyRT4DKfAF5gb12BOfANz4VaYA3fCsXHsuu5GiG0IIV4AUPR9X50dhzGSHiny/3Kd+iPwvdnaqeZ8szWYTvYXfwzDUEgp936VwXFoXiO6QoQiYlXXtfeq/RK36VgVQijhU/LS13lonBOmAkKTquLN7zof0sQMUHPqlDreW/aQuCmnfy9Dkh5pBtbtx9hLtXrmd97jFPhyuLjxBaal4MQ1mBPfwFy4FebAnXBsPNnL9QFH9tNXxu42ugAAAABJRU5ErkJggg=="/></defs><g id="dom" fill="none" fill-rule="evenodd" stroke="none" stroke-width="1"><g id="metric-offset-parent.svg"><path fill="#FFF" d="M0 0h597v520H0z"/><path id="Rectangle-10" fill="url(#pattern-1)" fill-opacity=".5" stroke="#D1CFCD" stroke-width="3" d="M19.5 25.5h558v479h-558z"/><path id="Rectangle-1" fill="#DBAF88" d="M552 185v290H178V185h374zm-25 25H203v240h324V210z"/><text id="offsetTop:180px" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal" transform="rotate(-90 163 104.32)"><tspan x="100" y="108.82" fill="#C06334">offsetTop:</tspan> <tspan x="184" y="108.82" fill="#1C85B5">180px</tspan></text><text id="offsetLeft:180px" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="34.3" y="179.32" fill="#C06334">offsetLeft:</tspan> <tspan x="126.7" y="179.32" fill="#1C85B5">180px</tspan></text><text id="Introduction" fill="#643B0C" font-family="OpenSans-Bold, Open Sans" font-size="16" font-weight="bold"><tspan x="223" y="247">Introduction</tspan> <tspan x="223" y="275" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">This Ecma Standard is based on several </tspan> <tspan x="223" y="294" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">originating technologies, the most well </tspan> <tspan x="223" y="313" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">known being JavaScript (Netscape) and </tspan> <tspan x="223" y="332" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">JScript (Microsoft). The language was </tspan> <tspan x="223" y="351" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">invented by Brendan Eich at Netscape </tspan> <tspan x="223" y="370" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">and first appeared in that company’s </tspan> <tspan x="223" y="389" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">Navigator 2.0 browser. It has appeared </tspan> <tspan x="223" y="408" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">in all subsequent browsers from </tspan> <tspan x="223" y="427" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">Netscape and in all browsers from </tspan> <tspan x="223" y="446" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">Microsoft</tspan></text><path id="Line-40" fill="#C06334" fill-rule="nonzero" d="M179 26.5l7 14h-6v128.82h6l-7 14-7-14h6V40.5h-6l7-14z"/><path id="Line-41" fill="#C06334" fill-rule="nonzero" d="M163.41 179.91l14 7-14 7v-6H34.589l.001 6-14-7 14-7-.001 6H163.41v-6z"/><circle id="Oval-2" cx="203" cy="211" r="2" fill="#1C85B5"/><circle id="Oval-2" cx="179" cy="186" r="3" fill="#1C85B5"/><ellipse id="Oval-6" cx="364.25" cy="104" fill="#FBF2EC" stroke="#C06334" stroke-width="2" rx="100" ry="50"/><path id="Line" fill="#C06334" fill-rule="nonzero" d="M366 156.379v11.638h6l-7 14-7-14h6v-11.638h2z"/><text id="position:-absolute;" fill="#AF6E24" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="296.5" y="95.793">position: absolute;</tspan> <tspan x="296.5" y="110.793">left: 180px;</tspan> <tspan x="296.5" y="125.793">top: 180px;</tspan></text><text id="offsetParent-<MAIN>-" fill="#AF6E24" font-family="PTMono-Bold, PT Mono" font-size="16" font-weight="bold"><tspan x="20.5" y="19.379">offsetParent <MAIN> </tspan></text><text id="<DIV>" fill="#AF6E24" font-family="PTMono-Bold, PT Mono" font-size="16" font-weight="bold"><tspan x="183.5" y="180.379"><DIV></tspan></text><g id="Group" transform="translate(511 210)"><rect id="Rectangle-19" width="15" height="239" x=".5" y=".5" fill="#D1CFCD" stroke="#D1CFCD" rx="3"/><g id="Rectangle-18-+-Triangle-1"><rect id="Rectangle-18" width="15" height="19" x=".5" y=".5" fill="url(#linearGradient-3)" stroke="#D1CFCD" rx="3"/><path id="Triangle-1" fill="#7E7C7B" d="M8 7l3.2 6H4.8z"/></g><g id="Rectangle-18-+-Triangle-2" transform="matrix(1 0 0 -1 0 240)"><rect id="Rectangle-18" width="15" height="19" x=".5" y=".5" fill="url(#linearGradient-3)" stroke="#D1CFCD" rx="3"/><path id="Triangle-1" fill="#7E7C7B" d="M8 7l3.2 6H4.8z"/></g><g id="Rectangle-18-+-Triangle-3-+-Group" transform="translate(0 50)"><g id="Rectangle-18-+-Triangle-3" fill="url(#linearGradient-4)" stroke="#D1CFCD" transform="matrix(1 0 0 -1 0 51)"><rect id="Rectangle-18" width="15" height="50" x=".5" y=".5" rx="3"/></g><g id="Group" fill="#D1CFCD" stroke="#7E7C7B" transform="translate(4 20)"><path id="Rectangle-22" d="M.5.5h7v1h-7z"/><path id="Rectangle-23" d="M.5 3.5h7v1h-7z"/><path id="Rectangle-24" d="M.5 6.5h7v1h-7z"/><path id="Rectangle-25" d="M.5 9.5h7v1h-7z"/></g></g></g></g></g></svg> \ No newline at end of file +<<<<<<< HEAD +<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="597" height="520" viewBox="0 0 597 520"><defs><style>@import url(https://fonts.googleapis.com/css?family=Open+Sans:bold,italic,bolditalic%7CPT+Mono);@font-face{font-family:'PT Mono';font-weight:700;font-style:normal;src:local('PT MonoBold'),url(/font/PTMonoBold.woff2) format('woff2'),url(/font/PTMonoBold.woff) format('woff'),url(/font/PTMonoBold.ttf) format('truetype')}</style></defs><defs><linearGradient id="linearGradient-3" x1="50%" x2="50%" y1="0%" y2="100%"><stop offset="0%" stop-color="#FFF"/><stop offset="100%" stop-color="#D1CFCD"/></linearGradient><linearGradient id="linearGradient-4" x1="50%" x2="50%" y1="0%" y2="100%"><stop offset="0%" stop-color="#FFF"/><stop offset="100%" stop-color="#D1CFCD"/></linearGradient><pattern id="pattern-1" width="30" height="30" x="-12" y="-6" patternUnits="userSpaceOnUse"><use xlink:href="#image-2"/></pattern><image id="image-2" width="30" height="30" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB4AAAAeCAYAAAA7MK6iAAAAAXNSR0IArs4c6QAAAERlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAA6ABAAMAAAABAAEAAKACAAQAAAABAAAAHqADAAQAAAABAAAAHgAAAADKQTcFAAAA/UlEQVRIDe3VXQ6DIAwA4LUea7uCIeFdD+f2bDReYbvGbqLOmmEEAQ2T8jJeDEnTr+VPaJrmnWVZmef58+IYbdtex3G8nxkHMZIeKRKoyRT4DKfAF5gb12BOfANz4VaYA3fCsXHsuu5GiG0IIV4AUPR9X50dhzGSHiny/3Kd+iPwvdnaqeZ8szWYTvYXfwzDUEgp936VwXFoXiO6QoQiYlXXtfeq/RK36VgVQijhU/LS13lonBOmAkKTquLN7zof0sQMUHPqlDreW/aQuCmnfy9Dkh5pBtbtx9hLtXrmd97jFPhyuLjxBaal4MQ1mBPfwFy4FebAnXBsPNnL9QFH9tNXxu42ugAAAABJRU5ErkJggg=="/></defs><g id="dom" fill="none" fill-rule="evenodd" stroke="none" stroke-width="1"><g id="metric-offset-parent.svg"><path fill="#FFF" d="M0 0h597v520H0z"/><path id="Rectangle-10" fill="url(#pattern-1)" fill-opacity=".5" stroke="#D1CFCD" stroke-width="3" d="M19.5 25.5h558v479h-558z"/><path id="Rectangle-1" fill="#DBAF88" d="M552 185v290H178V185h374zm-25 25H203v240h324V210z"/><text id="offsetTop:180px" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal" transform="rotate(-90 163 104.32)"><tspan x="100" y="108.82" fill="#C06334">offsetTop:</tspan> <tspan x="184" y="108.82" fill="#1C85B5">180px</tspan></text><text id="offsetLeft:180px" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="34.3" y="179.32" fill="#C06334">offsetLeft:</tspan> <tspan x="126.7" y="179.32" fill="#1C85B5">180px</tspan></text><text id="Introduction" fill="#643B0C" font-family="OpenSans-Bold, Open Sans" font-size="16" font-weight="bold"><tspan x="223" y="247">Introduction</tspan> <tspan x="223" y="275" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">This Ecma Standard is based on several </tspan> <tspan x="223" y="294" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">originating technologies, the most well </tspan> <tspan x="223" y="313" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">known being JavaScript (Netscape) and </tspan> <tspan x="223" y="332" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">JScript (Microsoft). The language was </tspan> <tspan x="223" y="351" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">invented by Brendan Eich at Netscape </tspan> <tspan x="223" y="370" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">and first appeared in that company’s </tspan> <tspan x="223" y="389" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">Navigator 2.0 browser. It has appeared </tspan> <tspan x="223" y="408" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">in all subsequent browsers from </tspan> <tspan x="223" y="427" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">Netscape and in all browsers from </tspan> <tspan x="223" y="446" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">Microsoft</tspan></text><path id="Line-40" fill="#C06334" fill-rule="nonzero" d="M179 26.5l7 14h-6v128.82h6l-7 14-7-14h6V40.5h-6l7-14z"/><path id="Line-41" fill="#C06334" fill-rule="nonzero" d="M163.41 179.91l14 7-14 7v-6H34.589l.001 6-14-7 14-7-.001 6H163.41v-6z"/><circle id="Oval-2" cx="203" cy="211" r="2" fill="#1C85B5"/><circle id="Oval-2" cx="179" cy="186" r="3" fill="#1C85B5"/><ellipse id="Oval-6" cx="364.25" cy="104" fill="#FBF2EC" stroke="#C06334" stroke-width="2" rx="100" ry="50"/><path id="Line" fill="#C06334" fill-rule="nonzero" d="M366 156.379v11.638h6l-7 14-7-14h6v-11.638h2z"/><text id="position:-absolute;" fill="#AF6E24" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="296.5" y="95.793">position: absolute;</tspan> <tspan x="296.5" y="110.793">left: 180px;</tspan> <tspan x="296.5" y="125.793">top: 180px;</tspan></text><text id="offsetParent-<MAIN>-" fill="#AF6E24" font-family="PTMono-Bold, PT Mono" font-size="16" font-weight="bold"><tspan x="20.5" y="19.379">offsetParent <MAIN> </tspan></text><text id="<DIV>" fill="#AF6E24" font-family="PTMono-Bold, PT Mono" font-size="16" font-weight="bold"><tspan x="183.5" y="180.379"><DIV></tspan></text><g id="Group" transform="translate(511 210)"><rect id="Rectangle-19" width="15" height="239" x=".5" y=".5" fill="#D1CFCD" stroke="#D1CFCD" rx="3"/><g id="Rectangle-18-+-Triangle-1"><rect id="Rectangle-18" width="15" height="19" x=".5" y=".5" fill="url(#linearGradient-3)" stroke="#D1CFCD" rx="3"/><path id="Triangle-1" fill="#7E7C7B" d="M8 7l3.2 6H4.8z"/></g><g id="Rectangle-18-+-Triangle-2" transform="matrix(1 0 0 -1 0 240)"><rect id="Rectangle-18" width="15" height="19" x=".5" y=".5" fill="url(#linearGradient-3)" stroke="#D1CFCD" rx="3"/><path id="Triangle-1" fill="#7E7C7B" d="M8 7l3.2 6H4.8z"/></g><g id="Rectangle-18-+-Triangle-3-+-Group" transform="translate(0 50)"><g id="Rectangle-18-+-Triangle-3" fill="url(#linearGradient-4)" stroke="#D1CFCD" transform="matrix(1 0 0 -1 0 51)"><rect id="Rectangle-18" width="15" height="50" x=".5" y=".5" rx="3"/></g><g id="Group" fill="#D1CFCD" stroke="#7E7C7B" transform="translate(4 20)"><path id="Rectangle-22" d="M.5.5h7v1h-7z"/><path id="Rectangle-23" d="M.5 3.5h7v1h-7z"/><path id="Rectangle-24" d="M.5 6.5h7v1h-7z"/><path id="Rectangle-25" d="M.5 9.5h7v1h-7z"/></g></g></g></g></g></svg> +======= +<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="597" height="520" viewBox="0 0 597 520"><defs><style>@import url(https://fonts.googleapis.com/css?family=Open+Sans:bold,italic,bolditalic%7CPT+Mono);@font-face{font-family:'PT Mono';font-weight:700;font-style:normal;src:local('PT MonoBold'),url(/font/PTMonoBold.woff2) format('woff2'),url(/font/PTMonoBold.woff) format('woff'),url(/font/PTMonoBold.ttf) format('truetype')}</style></defs><defs><linearGradient id="linearGradient-3" x1="50%" x2="50%" y1="0%" y2="100%"><stop offset="0%" stop-color="#FFF"/><stop offset="100%" stop-color="#D1CFCD"/></linearGradient><linearGradient id="linearGradient-4" x1="50%" x2="50%" y1="0%" y2="100%"><stop offset="0%" stop-color="#FFF"/><stop offset="100%" stop-color="#D1CFCD"/></linearGradient><pattern id="pattern-1" width="30" height="30" x="-12" y="-6" patternUnits="userSpaceOnUse"><use xlink:href="#image-2"/></pattern><image id="image-2" width="30" height="30" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB4AAAAeCAYAAAA7MK6iAAAAAXNSR0IArs4c6QAAAERlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAA6ABAAMAAAABAAEAAKACAAQAAAABAAAAHqADAAQAAAABAAAAHgAAAADKQTcFAAAA/UlEQVRIDe3VXQ6DIAwA4LUea7uCIeFdD+f2bDReYbvGbqLOmmEEAQ2T8jJeDEnTr+VPaJrmnWVZmef58+IYbdtex3G8nxkHMZIeKRKoyRT4DKfAF5gb12BOfANz4VaYA3fCsXHsuu5GiG0IIV4AUPR9X50dhzGSHiny/3Kd+iPwvdnaqeZ8szWYTvYXfwzDUEgp936VwXFoXiO6QoQiYlXXtfeq/RK36VgVQijhU/LS13lonBOmAkKTquLN7zof0sQMUHPqlDreW/aQuCmnfy9Dkh5pBtbtx9hLtXrmd97jFPhyuLjxBaal4MQ1mBPfwFy4FebAnXBsPNnL9QFH9tNXxu42ugAAAABJRU5ErkJggg=="/></defs><g id="dom" fill="none" fill-rule="evenodd" stroke="none" stroke-width="1"><g id="metric-offset-parent.svg"><path fill="#FFF" d="M0 0h597v520H0z"/><path id="Rectangle-10" fill="url(#pattern-1)" fill-opacity=".5" stroke="#D1CFCD" stroke-width="3" d="M19.5 25.5h558v479h-558z"/><path id="Rectangle-1" fill="#DBAF88" d="M552 185v290H178V185h374zm-25 25H203v240h324V210z"/><text id="offsetTop:180px" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal" transform="rotate(-90 163 104.32)"><tspan x="100" y="108.82" fill="#C06334">offsetTop:</tspan> <tspan x="184" y="108.82" fill="#1C85B5">180px</tspan></text><text id="offsetLeft:180px" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="34.3" y="179.32" fill="#C06334">offsetLeft:</tspan> <tspan x="126.7" y="179.32" fill="#1C85B5">180px</tspan></text><text id="Introduction" fill="#643B0C" font-family="OpenSans-Bold, Open Sans" font-size="16" font-weight="bold"><tspan x="223" y="247">Introduction</tspan> <tspan x="223" y="275" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">This Ecma Standard is based on several </tspan> <tspan x="223" y="294" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">originating technologies, the most well </tspan> <tspan x="223" y="313" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">known being JavaScript (Netscape) and </tspan> <tspan x="223" y="332" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">JScript (Microsoft). The language was </tspan> <tspan x="223" y="351" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">invented by Brendan Eich at Netscape </tspan> <tspan x="223" y="370" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">and first appeared in that company’s </tspan> <tspan x="223" y="389" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">Navigator 2.0 browser. It has appeared </tspan> <tspan x="223" y="408" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">in all subsequent browsers from </tspan> <tspan x="223" y="427" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">Netscape and in all browsers from </tspan> <tspan x="223" y="446" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">Microsoft</tspan></text><path id="Line-40" fill="#C06334" fill-rule="nonzero" d="M179 26.5l7 14h-6v128.82h6l-7 14-7-14h6V40.5h-6l7-14z"/><path id="Line-41" fill="#C06334" fill-rule="nonzero" d="M163.41 179.91l14 7-14 7v-6H34.589l.001 6-14-7 14-7-.001 6H163.41v-6z"/><circle id="Oval-2" cx="203" cy="211" r="2" fill="#1C85B5"/><circle id="Oval-2" cx="179" cy="186" r="3" fill="#1C85B5"/><ellipse id="Oval-6" cx="364.25" cy="104" fill="#FBF2EC" stroke="#C06334" stroke-width="2" rx="100" ry="50"/><path id="Line" fill="#C06334" fill-rule="nonzero" d="M366 156.379v11.638h6l-7 14-7-14h6v-11.638h2z"/><text id="position:-absolute;" fill="#AF6E24" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="296.5" y="95.793">position: absolute;</tspan> <tspan x="296.5" y="110.793">left: 180px;</tspan> <tspan x="296.5" y="125.793">top: 180px;</tspan></text><text id="offsetParent-<MAIN>-" fill="#AF6E24" font-family="PTMono-Bold, PT Mono" font-size="16" font-weight="bold"><tspan x="20.5" y="19.379">offsetParent <MAIN> </tspan></text><text id="<DIV>" fill="#AF6E24" font-family="PTMono-Bold, PT Mono" font-size="16" font-weight="bold"><tspan x="183.5" y="180.379"><DIV></tspan></text><g id="Scrollbar" transform="translate(511 210)"><rect id="Rectangle-19" width="15" height="239" x=".5" y=".5" fill="#D1CFCD" stroke="#D1CFCD" rx="3"/><g id="Rectangle-18-+-Triangle-1"><rect id="Rectangle-18" width="15" height="19" x=".5" y=".5" fill="url(#linearGradient-3)" stroke="#D1CFCD" rx="3"/><path id="Triangle-1" fill="#7E7C7B" d="M8 7l3.2 6H4.8z"/></g><g id="Rectangle-18-+-Triangle-2" transform="matrix(1 0 0 -1 0 240)"><rect id="Rectangle-18" width="15" height="19" x=".5" y=".5" fill="url(#linearGradient-3)" stroke="#D1CFCD" rx="3"/><path id="Triangle-1" fill="#7E7C7B" d="M8 7l3.2 6H4.8z"/></g><g id="Rectangle-18-+-Triangle-3-+-Group" transform="translate(0 50)"><g id="Rectangle-18-+-Triangle-3" fill="url(#linearGradient-4)" stroke="#D1CFCD" transform="matrix(1 0 0 -1 0 51)"><rect id="Rectangle-18" width="15" height="50" x=".5" y=".5" rx="3"/></g><g id="Group" fill="#D1CFCD" stroke="#7E7C7B" transform="translate(4 20)"><path id="Rectangle-22" d="M.5.5h7v1h-7z"/><path id="Rectangle-23" d="M.5 3.5h7v1h-7z"/><path id="Rectangle-24" d="M.5 6.5h7v1h-7z"/><path id="Rectangle-25" d="M.5 9.5h7v1h-7z"/></g></g></g></g></g></svg> +>>>>>>> 540d753e90789205fc6e75c502f68382c87dea9b diff --git a/2-ui/1-document/09-size-and-scroll/metric-offset-width-height.svg b/2-ui/1-document/09-size-and-scroll/metric-offset-width-height.svg index 49bdccda7..c7fe3ac1d 100644 --- a/2-ui/1-document/09-size-and-scroll/metric-offset-width-height.svg +++ b/2-ui/1-document/09-size-and-scroll/metric-offset-width-height.svg @@ -1 +1,5 @@ -<svg xmlns="http://www.w3.org/2000/svg" width="508" height="509" viewBox="0 0 508 509"><defs><style>@import url(https://fonts.googleapis.com/css?family=Open+Sans:bold,italic,bolditalic%7CPT+Mono);@font-face{font-family:'PT Mono';font-weight:700;font-style:normal;src:local('PT MonoBold'),url(/font/PTMonoBold.woff2) format('woff2'),url(/font/PTMonoBold.woff) format('woff'),url(/font/PTMonoBold.ttf) format('truetype')}</style></defs><defs><linearGradient id="linearGradient-1" x1="50%" x2="50%" y1="0%" y2="100%"><stop offset="0%" stop-color="#FFF"/><stop offset="100%" stop-color="#D1CFCD"/></linearGradient><linearGradient id="linearGradient-2" x1="50%" x2="50%" y1="0%" y2="100%"><stop offset="0%" stop-color="#FFF"/><stop offset="100%" stop-color="#D1CFCD"/></linearGradient></defs><g id="dom" fill="none" fill-rule="evenodd" stroke="none" stroke-width="1"><g id="metric-offset-width-height.svg"><path id="Rectangle-2" fill="#DBAF88" d="M420 130v290H30V130h390zm-25 25H55v240h340V155z"/><path id="Rectangle-1" stroke="#C06334" stroke-width="2" d="M359 177v199H76V177h283z"/><g id="Group" transform="translate(379 155)"><rect id="Rectangle-19" width="15" height="239" x=".5" y=".5" fill="#D1CFCD" stroke="#D1CFCD" rx="3"/><g id="Rectangle-18-+-Triangle-1"><rect id="Rectangle-18" width="15" height="19" x=".5" y=".5" fill="url(#linearGradient-1)" stroke="#D1CFCD" rx="3"/><path id="Triangle-1" fill="#7E7C7B" d="M8 7l3.2 6H4.8z"/></g><g id="Rectangle-18-+-Triangle-2" transform="matrix(1 0 0 -1 0 240)"><rect id="Rectangle-18" width="15" height="19" x=".5" y=".5" fill="url(#linearGradient-1)" stroke="#D1CFCD" rx="3"/><path id="Triangle-1" fill="#7E7C7B" d="M8 7l3.2 6H4.8z"/></g><g id="Rectangle-18-+-Triangle-3-+-Group" transform="translate(0 50)"><g id="Rectangle-18-+-Triangle-3" fill="url(#linearGradient-2)" stroke="#D1CFCD" transform="matrix(1 0 0 -1 0 51)"><rect id="Rectangle-18" width="15" height="50" x=".5" y=".5" rx="3"/></g><g id="Group" fill="#D1CFCD" stroke="#7E7C7B" transform="translate(4 20)"><path id="Rectangle-22" d="M.5.5h7v1h-7z"/><path id="Rectangle-23" d="M.5 3.5h7v1h-7z"/><path id="Rectangle-24" d="M.5 6.5h7v1h-7z"/><path id="Rectangle-25" d="M.5 9.5h7v1h-7z"/></g></g></g><text id="border" font-family="PTMono-Regular, PT Mono" font-size="12" font-weight="normal"><tspan x="21.9" y="75" fill="#C06334">border</tspan> <tspan x="29.1" y="89" fill="#1C85B5">25px</tspan></text><text id="padding" font-family="PTMono-Regular, PT Mono" font-size="12" font-weight="normal"><tspan x="41.3" y="45" fill="#C06334">padding</tspan> <tspan x="52.1" y="59" fill="#1C85B5">20px</tspan></text><text id="content-width:284px" font-family="PTMono-Regular, PT Mono" font-size="12" font-weight="normal"><tspan x="148.1" y="109" fill="#C06334">content width:</tspan> <tspan x="248.9" y="109" fill="#1C85B5">284px</tspan></text><text id="height:200px" font-family="PTMono-Regular, PT Mono" font-size="12" font-weight="normal" transform="rotate(-90 429.5 274)"><tspan x="386.3" y="278" fill="#C06334">height:</tspan> <tspan x="436.7" y="278" fill="#1C85B5">200px</tspan></text><path id="Line" stroke="#C06334" stroke-dasharray="3,6" stroke-linecap="square" stroke-width="2" d="M360.5 175h88.142"/><path id="Line-2" stroke="#C06334" stroke-dasharray="3,6" stroke-linecap="square" stroke-width="2" d="M360.5 377h88.142"/><path id="Line" fill="#C06334" fill-rule="nonzero" d="M442 177.5l7 14h-6V360h6l-7 14-7-14h6V191.5h-6l7-14z"/><path id="Line-15" fill="#C06334" fill-rule="nonzero" d="M345.5 110l14 7-14 7v-6H91.679l.001 6-14-7 14-7-.001 6H345.5v-6z"/><path id="Line-14" stroke="#C06334" stroke-dasharray="3,6" stroke-linecap="square" stroke-width="2" d="M30.48 93v43"/><path id="Line-13" stroke="#C06334" stroke-dasharray="3,6" stroke-linecap="square" stroke-width="2" d="M56.48 93v41"/><text id="border-2" font-family="PTMono-Regular, PT Mono" font-size="12" font-weight="normal"><tspan x="385.9" y="76" fill="#C06334">border</tspan> <tspan x="393.1" y="90" fill="#1C85B5">25px</tspan></text><text id="padding-2" font-family="PTMono-Regular, PT Mono" font-size="12" font-weight="normal"><tspan x="348.3" y="16" fill="#C06334">padding</tspan> <tspan x="359.1" y="30" fill="#1C85B5">20px</tspan></text><text id="scrollbar" font-family="PTMono-Regular, PT Mono" font-size="12" font-weight="normal"><tspan x="358.1" y="48" fill="#C06334">scrollbar</tspan> <tspan x="376.1" y="62" fill="#1C85B5">16px</tspan></text><path id="Line-17" stroke="#C06334" stroke-dasharray="3,6" stroke-linecap="square" stroke-width="2" d="M380.48 93v43"/><path id="Line-20" stroke="#C06334" stroke-dasharray="3,6" stroke-linecap="square" stroke-width="2" d="M394.48 93v43"/><path id="Line-18" stroke="#C06334" stroke-dasharray="3,6" stroke-linecap="square" stroke-width="2" d="M419.48 93v41"/><path id="Line-16" stroke="#C06334" stroke-dasharray="3,6" stroke-linecap="square" stroke-width="2" d="M75.48 93v41"/><path id="Line-19" stroke="#C06334" stroke-dasharray="3,6" stroke-linecap="square" stroke-width="2" d="M362.48 93v41"/><text id="offsetWidth-=-25+20+" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="56.5" y="484" fill="#C06334">offsetWidth = </tspan> <tspan x="174.1" y="484" fill="#1C85B5">25+20+284+20+16+25 </tspan> <tspan x="333.7" y="484" fill="#C06334">=</tspan> <tspan x="342.1" y="484" fill="#1C85B5"> 390px</tspan></text><path id="Line-24" stroke="#C06334" stroke-dasharray="3,6" stroke-linecap="square" stroke-width="2" d="M30.5 419v78"/><path id="Line-25" stroke="#C06334" stroke-dasharray="3,6" stroke-linecap="square" stroke-width="2" d="M419.5 419v80"/><path id="Line-22" fill="#C06334" fill-rule="nonzero" d="M403 456.071l14 7-14 7v-6.001H47.089l.001 6.001-14-7 14-7-.001 5.999H403v-5.999z"/><text id="offsetHeight:290px" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal" transform="rotate(-90 483.5 280.5)"><tspan x="407.9" y="285" fill="#C06334">offsetHeight:</tspan> <tspan x="517.1" y="285" fill="#1C85B5">290px</tspan></text><path id="Line-27" stroke="#C06334" stroke-dasharray="3,6" stroke-linecap="square" stroke-width="2" d="M417.5 131h88.142"/><path id="Line-28" stroke="#C06334" stroke-dasharray="3,6" stroke-linecap="square" stroke-width="2" d="M417.5 420h88.142"/><path id="Line-26" fill="#C06334" fill-rule="nonzero" d="M469 132.59l7 14-6-.001V405.41h6l-7 14-7-14h6V146.589l-6 .001 7-14z"/><text id="Introduction" fill="#643B0C" font-family="OpenSans-Bold, Open Sans" font-size="16" font-weight="bold"><tspan x="79" y="193">Introduction</tspan> <tspan x="79" y="221" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">This Ecma Standard is based on several </tspan> <tspan x="79" y="240" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">originating technologies, the most well </tspan> <tspan x="79" y="259" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">known being JavaScript (Netscape) and </tspan> <tspan x="79" y="278" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">JScript (Microsoft). The language was </tspan> <tspan x="79" y="297" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">invented by Brendan Eich at Netscape and </tspan> <tspan x="79" y="316" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">first appeared in that company’s Navigator </tspan> <tspan x="79" y="335" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">2.0 browser. It has appeared in all </tspan> <tspan x="79" y="354" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">subsequent browsers from Netscape and </tspan> <tspan x="79" y="373" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">in all browsers from Microsoft starting </tspan> <tspan x="79" y="392" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">with </tspan></text></g></g></svg> \ No newline at end of file +<<<<<<< HEAD +<svg xmlns="http://www.w3.org/2000/svg" width="508" height="509" viewBox="0 0 508 509"><defs><style>@import url(https://fonts.googleapis.com/css?family=Open+Sans:bold,italic,bolditalic%7CPT+Mono);@font-face{font-family:'PT Mono';font-weight:700;font-style:normal;src:local('PT MonoBold'),url(/font/PTMonoBold.woff2) format('woff2'),url(/font/PTMonoBold.woff) format('woff'),url(/font/PTMonoBold.ttf) format('truetype')}</style></defs><defs><linearGradient id="linearGradient-1" x1="50%" x2="50%" y1="0%" y2="100%"><stop offset="0%" stop-color="#FFF"/><stop offset="100%" stop-color="#D1CFCD"/></linearGradient><linearGradient id="linearGradient-2" x1="50%" x2="50%" y1="0%" y2="100%"><stop offset="0%" stop-color="#FFF"/><stop offset="100%" stop-color="#D1CFCD"/></linearGradient></defs><g id="dom" fill="none" fill-rule="evenodd" stroke="none" stroke-width="1"><g id="metric-offset-width-height.svg"><path id="Rectangle-2" fill="#DBAF88" d="M420 130v290H30V130h390zm-25 25H55v240h340V155z"/><path id="Rectangle-1" stroke="#C06334" stroke-width="2" d="M359 177v199H76V177h283z"/><g id="Group" transform="translate(379 155)"><rect id="Rectangle-19" width="15" height="239" x=".5" y=".5" fill="#D1CFCD" stroke="#D1CFCD" rx="3"/><g id="Rectangle-18-+-Triangle-1"><rect id="Rectangle-18" width="15" height="19" x=".5" y=".5" fill="url(#linearGradient-1)" stroke="#D1CFCD" rx="3"/><path id="Triangle-1" fill="#7E7C7B" d="M8 7l3.2 6H4.8z"/></g><g id="Rectangle-18-+-Triangle-2" transform="matrix(1 0 0 -1 0 240)"><rect id="Rectangle-18" width="15" height="19" x=".5" y=".5" fill="url(#linearGradient-1)" stroke="#D1CFCD" rx="3"/><path id="Triangle-1" fill="#7E7C7B" d="M8 7l3.2 6H4.8z"/></g><g id="Rectangle-18-+-Triangle-3-+-Group" transform="translate(0 50)"><g id="Rectangle-18-+-Triangle-3" fill="url(#linearGradient-2)" stroke="#D1CFCD" transform="matrix(1 0 0 -1 0 51)"><rect id="Rectangle-18" width="15" height="50" x=".5" y=".5" rx="3"/></g><g id="Group" fill="#D1CFCD" stroke="#7E7C7B" transform="translate(4 20)"><path id="Rectangle-22" d="M.5.5h7v1h-7z"/><path id="Rectangle-23" d="M.5 3.5h7v1h-7z"/><path id="Rectangle-24" d="M.5 6.5h7v1h-7z"/><path id="Rectangle-25" d="M.5 9.5h7v1h-7z"/></g></g></g><text id="border" font-family="PTMono-Regular, PT Mono" font-size="12" font-weight="normal"><tspan x="21.9" y="75" fill="#C06334">border</tspan> <tspan x="29.1" y="89" fill="#1C85B5">25px</tspan></text><text id="padding" font-family="PTMono-Regular, PT Mono" font-size="12" font-weight="normal"><tspan x="41.3" y="45" fill="#C06334">padding</tspan> <tspan x="52.1" y="59" fill="#1C85B5">20px</tspan></text><text id="content-width:284px" font-family="PTMono-Regular, PT Mono" font-size="12" font-weight="normal"><tspan x="148.1" y="109" fill="#C06334">content width:</tspan> <tspan x="248.9" y="109" fill="#1C85B5">284px</tspan></text><text id="height:200px" font-family="PTMono-Regular, PT Mono" font-size="12" font-weight="normal" transform="rotate(-90 429.5 274)"><tspan x="386.3" y="278" fill="#C06334">height:</tspan> <tspan x="436.7" y="278" fill="#1C85B5">200px</tspan></text><path id="Line" stroke="#C06334" stroke-dasharray="3,6" stroke-linecap="square" stroke-width="2" d="M360.5 175h88.142"/><path id="Line-2" stroke="#C06334" stroke-dasharray="3,6" stroke-linecap="square" stroke-width="2" d="M360.5 377h88.142"/><path id="Line" fill="#C06334" fill-rule="nonzero" d="M442 177.5l7 14h-6V360h6l-7 14-7-14h6V191.5h-6l7-14z"/><path id="Line-15" fill="#C06334" fill-rule="nonzero" d="M345.5 110l14 7-14 7v-6H91.679l.001 6-14-7 14-7-.001 6H345.5v-6z"/><path id="Line-14" stroke="#C06334" stroke-dasharray="3,6" stroke-linecap="square" stroke-width="2" d="M30.48 93v43"/><path id="Line-13" stroke="#C06334" stroke-dasharray="3,6" stroke-linecap="square" stroke-width="2" d="M56.48 93v41"/><text id="border-2" font-family="PTMono-Regular, PT Mono" font-size="12" font-weight="normal"><tspan x="385.9" y="76" fill="#C06334">border</tspan> <tspan x="393.1" y="90" fill="#1C85B5">25px</tspan></text><text id="padding-2" font-family="PTMono-Regular, PT Mono" font-size="12" font-weight="normal"><tspan x="348.3" y="16" fill="#C06334">padding</tspan> <tspan x="359.1" y="30" fill="#1C85B5">20px</tspan></text><text id="scrollbar" font-family="PTMono-Regular, PT Mono" font-size="12" font-weight="normal"><tspan x="358.1" y="48" fill="#C06334">scrollbar</tspan> <tspan x="376.1" y="62" fill="#1C85B5">16px</tspan></text><path id="Line-17" stroke="#C06334" stroke-dasharray="3,6" stroke-linecap="square" stroke-width="2" d="M380.48 93v43"/><path id="Line-20" stroke="#C06334" stroke-dasharray="3,6" stroke-linecap="square" stroke-width="2" d="M394.48 93v43"/><path id="Line-18" stroke="#C06334" stroke-dasharray="3,6" stroke-linecap="square" stroke-width="2" d="M419.48 93v41"/><path id="Line-16" stroke="#C06334" stroke-dasharray="3,6" stroke-linecap="square" stroke-width="2" d="M75.48 93v41"/><path id="Line-19" stroke="#C06334" stroke-dasharray="3,6" stroke-linecap="square" stroke-width="2" d="M362.48 93v41"/><text id="offsetWidth-=-25+20+" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="56.5" y="484" fill="#C06334">offsetWidth = </tspan> <tspan x="174.1" y="484" fill="#1C85B5">25+20+284+20+16+25 </tspan> <tspan x="333.7" y="484" fill="#C06334">=</tspan> <tspan x="342.1" y="484" fill="#1C85B5"> 390px</tspan></text><path id="Line-24" stroke="#C06334" stroke-dasharray="3,6" stroke-linecap="square" stroke-width="2" d="M30.5 419v78"/><path id="Line-25" stroke="#C06334" stroke-dasharray="3,6" stroke-linecap="square" stroke-width="2" d="M419.5 419v80"/><path id="Line-22" fill="#C06334" fill-rule="nonzero" d="M403 456.071l14 7-14 7v-6.001H47.089l.001 6.001-14-7 14-7-.001 5.999H403v-5.999z"/><text id="offsetHeight:290px" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal" transform="rotate(-90 483.5 280.5)"><tspan x="407.9" y="285" fill="#C06334">offsetHeight:</tspan> <tspan x="517.1" y="285" fill="#1C85B5">290px</tspan></text><path id="Line-27" stroke="#C06334" stroke-dasharray="3,6" stroke-linecap="square" stroke-width="2" d="M417.5 131h88.142"/><path id="Line-28" stroke="#C06334" stroke-dasharray="3,6" stroke-linecap="square" stroke-width="2" d="M417.5 420h88.142"/><path id="Line-26" fill="#C06334" fill-rule="nonzero" d="M469 132.59l7 14-6-.001V405.41h6l-7 14-7-14h6V146.589l-6 .001 7-14z"/><text id="Introduction" fill="#643B0C" font-family="OpenSans-Bold, Open Sans" font-size="16" font-weight="bold"><tspan x="79" y="193">Introduction</tspan> <tspan x="79" y="221" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">This Ecma Standard is based on several </tspan> <tspan x="79" y="240" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">originating technologies, the most well </tspan> <tspan x="79" y="259" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">known being JavaScript (Netscape) and </tspan> <tspan x="79" y="278" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">JScript (Microsoft). The language was </tspan> <tspan x="79" y="297" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">invented by Brendan Eich at Netscape and </tspan> <tspan x="79" y="316" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">first appeared in that company’s Navigator </tspan> <tspan x="79" y="335" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">2.0 browser. It has appeared in all </tspan> <tspan x="79" y="354" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">subsequent browsers from Netscape and </tspan> <tspan x="79" y="373" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">in all browsers from Microsoft starting </tspan> <tspan x="79" y="392" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">with </tspan></text></g></g></svg> +======= +<svg xmlns="http://www.w3.org/2000/svg" width="508" height="509" viewBox="0 0 508 509"><defs><style>@import url(https://fonts.googleapis.com/css?family=Open+Sans:bold,italic,bolditalic%7CPT+Mono);@font-face{font-family:'PT Mono';font-weight:700;font-style:normal;src:local('PT MonoBold'),url(/font/PTMonoBold.woff2) format('woff2'),url(/font/PTMonoBold.woff) format('woff'),url(/font/PTMonoBold.ttf) format('truetype')}</style></defs><defs><linearGradient id="linearGradient-1" x1="50%" x2="50%" y1="0%" y2="100%"><stop offset="0%" stop-color="#FFF"/><stop offset="100%" stop-color="#D1CFCD"/></linearGradient><linearGradient id="linearGradient-2" x1="50%" x2="50%" y1="0%" y2="100%"><stop offset="0%" stop-color="#FFF"/><stop offset="100%" stop-color="#D1CFCD"/></linearGradient></defs><g id="dom" fill="none" fill-rule="evenodd" stroke="none" stroke-width="1"><g id="metric-offset-width-height.svg"><path id="Rectangle-2" fill="#DBAF88" d="M420 130v290H30V130h390zm-25 25H55v240h340V155z"/><path id="Rectangle-1" stroke="#C06334" stroke-width="2" d="M359 177v199H76V177h283z"/><g id="scrollbar" transform="translate(379 155)"><rect id="Rectangle-19" width="15" height="239" x=".5" y=".5" fill="#D1CFCD" stroke="#D1CFCD" rx="3"/><g id="Rectangle-18-+-Triangle-1"><rect id="Rectangle-18" width="15" height="19" x=".5" y=".5" fill="url(#linearGradient-1)" stroke="#D1CFCD" rx="3"/><path id="Triangle-1" fill="#7E7C7B" d="M8 7l3.2 6H4.8z"/></g><g id="Rectangle-18-+-Triangle-2" transform="matrix(1 0 0 -1 0 240)"><rect id="Rectangle-18" width="15" height="19" x=".5" y=".5" fill="url(#linearGradient-1)" stroke="#D1CFCD" rx="3"/><path id="Triangle-1" fill="#7E7C7B" d="M8 7l3.2 6H4.8z"/></g><g id="Rectangle-18-+-Triangle-3-+-Group" transform="translate(0 50)"><g id="Rectangle-18-+-Triangle-3" fill="url(#linearGradient-2)" stroke="#D1CFCD" transform="matrix(1 0 0 -1 0 51)"><rect id="Rectangle-18" width="15" height="50" x=".5" y=".5" rx="3"/></g><g id="Group" fill="#D1CFCD" stroke="#7E7C7B" transform="translate(4 20)"><path id="Rectangle-22" d="M.5.5h7v1h-7z"/><path id="Rectangle-23" d="M.5 3.5h7v1h-7z"/><path id="Rectangle-24" d="M.5 6.5h7v1h-7z"/><path id="Rectangle-25" d="M.5 9.5h7v1h-7z"/></g></g></g><text id="border" font-family="PTMono-Regular, PT Mono" font-size="12" font-weight="normal"><tspan x="21.9" y="75" fill="#C06334">border</tspan> <tspan x="29.1" y="89" fill="#1C85B5">25px</tspan></text><text id="padding" font-family="PTMono-Regular, PT Mono" font-size="12" font-weight="normal"><tspan x="41.3" y="45" fill="#C06334">padding</tspan> <tspan x="52.1" y="59" fill="#1C85B5">20px</tspan></text><text id="content-width:284px" font-family="PTMono-Regular, PT Mono" font-size="12" font-weight="normal"><tspan x="148.1" y="109" fill="#C06334">content width:</tspan> <tspan x="248.9" y="109" fill="#1C85B5">284px</tspan></text><text id="height:200px" font-family="PTMono-Regular, PT Mono" font-size="12" font-weight="normal" transform="rotate(-90 429.5 274)"><tspan x="386.3" y="278" fill="#C06334">height:</tspan> <tspan x="436.7" y="278" fill="#1C85B5">200px</tspan></text><path id="Line" stroke="#C06334" stroke-dasharray="3,6" stroke-linecap="square" stroke-width="2" d="M360.5 175h88.142"/><path id="Line-2" stroke="#C06334" stroke-dasharray="3,6" stroke-linecap="square" stroke-width="2" d="M360.5 377h88.142"/><path id="Line" fill="#C06334" fill-rule="nonzero" d="M442 177.5l7 14h-6V360h6l-7 14-7-14h6V191.5h-6l7-14z"/><path id="Line-15" fill="#C06334" fill-rule="nonzero" d="M345.5 110l14 7-14 7v-6H91.679l.001 6-14-7 14-7-.001 6H345.5v-6z"/><path id="Line-14" stroke="#C06334" stroke-dasharray="3,6" stroke-linecap="square" stroke-width="2" d="M30.48 93v43"/><path id="Line-13" stroke="#C06334" stroke-dasharray="3,6" stroke-linecap="square" stroke-width="2" d="M56.48 93v41"/><text id="border-2" font-family="PTMono-Regular, PT Mono" font-size="12" font-weight="normal"><tspan x="385.9" y="76" fill="#C06334">border</tspan> <tspan x="393.1" y="90" fill="#1C85B5">25px</tspan></text><text id="padding-2" font-family="PTMono-Regular, PT Mono" font-size="12" font-weight="normal"><tspan x="348.3" y="16" fill="#C06334">padding</tspan> <tspan x="359.1" y="30" fill="#1C85B5">20px</tspan></text><text id="scrollbar" font-family="PTMono-Regular, PT Mono" font-size="12" font-weight="normal"><tspan x="358.1" y="48" fill="#C06334">scrollbar</tspan> <tspan x="376.1" y="62" fill="#1C85B5">16px</tspan></text><path id="Line-17" stroke="#C06334" stroke-dasharray="3,6" stroke-linecap="square" stroke-width="2" d="M380.48 93v43"/><path id="Line-20" stroke="#C06334" stroke-dasharray="3,6" stroke-linecap="square" stroke-width="2" d="M394.48 93v43"/><path id="Line-18" stroke="#C06334" stroke-dasharray="3,6" stroke-linecap="square" stroke-width="2" d="M419.48 93v41"/><path id="Line-16" stroke="#C06334" stroke-dasharray="3,6" stroke-linecap="square" stroke-width="2" d="M75.48 93v41"/><path id="Line-19" stroke="#C06334" stroke-dasharray="3,6" stroke-linecap="square" stroke-width="2" d="M362.48 93v41"/><text id="offsetWidth-=-25+20+" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="56.5" y="484" fill="#C06334">offsetWidth = </tspan> <tspan x="174.1" y="484" fill="#1C85B5">25+20+284+20+16+25 </tspan> <tspan x="333.7" y="484" fill="#C06334">=</tspan> <tspan x="342.1" y="484" fill="#1C85B5"> 390px</tspan></text><path id="Line-24" stroke="#C06334" stroke-dasharray="3,6" stroke-linecap="square" stroke-width="2" d="M30.5 419v78"/><path id="Line-25" stroke="#C06334" stroke-dasharray="3,6" stroke-linecap="square" stroke-width="2" d="M419.5 419v80"/><path id="Line-22" fill="#C06334" fill-rule="nonzero" d="M403 456.071l14 7-14 7v-6.001H47.089l.001 6.001-14-7 14-7-.001 5.999H403v-5.999z"/><text id="offsetHeight:290px" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal" transform="rotate(-90 483.5 280.5)"><tspan x="407.9" y="285" fill="#C06334">offsetHeight:</tspan> <tspan x="517.1" y="285" fill="#1C85B5">290px</tspan></text><path id="Line-27" stroke="#C06334" stroke-dasharray="3,6" stroke-linecap="square" stroke-width="2" d="M417.5 131h88.142"/><path id="Line-28" stroke="#C06334" stroke-dasharray="3,6" stroke-linecap="square" stroke-width="2" d="M417.5 420h88.142"/><path id="Line-26" fill="#C06334" fill-rule="nonzero" d="M469 132.59l7 14-6-.001V405.41h6l-7 14-7-14h6V146.589l-6 .001 7-14z"/><text id="Introduction" fill="#643B0C" font-family="OpenSans-Bold, Open Sans" font-size="16" font-weight="bold"><tspan x="79" y="193">Introduction</tspan> <tspan x="79" y="221" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">This Ecma Standard is based on several </tspan> <tspan x="79" y="240" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">originating technologies, the most well </tspan> <tspan x="79" y="259" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">known being JavaScript (Netscape) and </tspan> <tspan x="79" y="278" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">JScript (Microsoft). The language was </tspan> <tspan x="79" y="297" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">invented by Brendan Eich at Netscape and </tspan> <tspan x="79" y="316" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">first appeared in that company’s Navigator </tspan> <tspan x="79" y="335" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">2.0 browser. It has appeared in all </tspan> <tspan x="79" y="354" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">subsequent browsers from Netscape and </tspan> <tspan x="79" y="373" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">in all browsers from Microsoft starting </tspan> <tspan x="79" y="392" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">with </tspan></text></g></g></svg> +>>>>>>> 540d753e90789205fc6e75c502f68382c87dea9b diff --git a/2-ui/1-document/09-size-and-scroll/metric-scroll-top.svg b/2-ui/1-document/09-size-and-scroll/metric-scroll-top.svg index c6d14d0f3..d3dbcf9c8 100644 --- a/2-ui/1-document/09-size-and-scroll/metric-scroll-top.svg +++ b/2-ui/1-document/09-size-and-scroll/metric-scroll-top.svg @@ -1 +1,5 @@ -<svg xmlns="http://www.w3.org/2000/svg" width="489" height="542" viewBox="0 0 489 542"><defs><style>@import url(https://fonts.googleapis.com/css?family=Open+Sans:bold,italic,bolditalic%7CPT+Mono);@font-face{font-family:'PT Mono';font-weight:700;font-style:normal;src:local('PT MonoBold'),url(/font/PTMonoBold.woff2) format('woff2'),url(/font/PTMonoBold.woff) format('woff'),url(/font/PTMonoBold.ttf) format('truetype')}</style></defs><defs><linearGradient id="linearGradient-1" x1="50%" x2="50%" y1="0%" y2="100%"><stop offset="0%" stop-color="#FFF"/><stop offset="100%" stop-color="#D1CFCD"/></linearGradient><linearGradient id="linearGradient-2" x1="50%" x2="50%" y1="0%" y2="100%"><stop offset="0%" stop-color="#FFF"/><stop offset="100%" stop-color="#D1CFCD"/></linearGradient></defs><g id="dom" fill="none" fill-rule="evenodd" stroke="none" stroke-width="1"><g id="metric-scroll-top.svg"><path fill="#FFF" d="M0 0h489v542H0z"/><text id="Introduction" fill="#643B0C" font-family="OpenSans-Bold, Open Sans" font-size="16" font-weight="bold"><tspan x="94" y="54">Introduction</tspan> <tspan x="94" y="82" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">This Ecma Standard is based on several </tspan> <tspan x="94" y="101" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">originating technologies, the most well </tspan> <tspan x="94" y="120" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">known being JavaScript (Netscape) and </tspan> <tspan x="94" y="139" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">JScript (Microsoft). The language was </tspan> <tspan x="94" y="158" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">invented by Brendan Eich at Netscape and </tspan> <tspan x="94" y="177" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">first appeared in that company’s Navigator </tspan> <tspan x="94" y="196" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">2.0 browser. It has appeared in all </tspan> <tspan x="94" y="215" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">subsequent browsers from Netscape and </tspan> <tspan x="94" y="234" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">in all browsers from Microsoft starting with </tspan> <tspan x="94" y="253" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">Internet Explorer 3.0.</tspan> <tspan x="94" y="272" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">The development of this Standard started </tspan> <tspan x="94" y="291" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">in November 1996. The first edition of this </tspan> <tspan x="94" y="310" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">Ecma Standard was adopted by the Ecma </tspan> <tspan x="94" y="329" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">General Assembly of June 1997.</tspan> <tspan x="94" y="348" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">That Ecma Standard was submitted to ISO/</tspan> <tspan x="94" y="367" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">IEC JTC 1 for adoption under the fast-track </tspan> <tspan x="94" y="386" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">procedure, and approved as international </tspan> <tspan x="94" y="405" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">standard ISO/IEC 16262, in April 1998. The </tspan> <tspan x="94" y="424" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">Ecma General Assembly of June 1998 </tspan> <tspan x="94" y="443" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">approved the second edition of ECMA-262 </tspan> <tspan x="94" y="462" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">to keep it fully aligned with ISO/IEC 16262. </tspan> <tspan x="94" y="481" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">Changes between the first and the second </tspan> <tspan x="94" y="500" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">edition are editorial in nature.</tspan></text><path id="Rectangle-1" fill="#DBAF88" d="M425 122v290H51V122h374zm-25 25H76v240h324V147z"/><path id="Rectangle-2" stroke="#DBAF88" stroke-width="2" d="M75 22h326v500H75z"/><text id="scrollTop" fill="#C06334" font-family="PTMono-Regular, PT Mono" font-size="12" font-weight="normal" transform="rotate(-90 16.5 84)"><tspan x="-15.9" y="88">scrollTop</tspan></text><path id="Line-43" stroke="#C06334" stroke-dasharray="3,6" stroke-linecap="square" stroke-width="2" d="M9.5 147h66.14"/><path id="Line-42" stroke="#C06334" stroke-dasharray="3,6" stroke-linecap="square" stroke-width="2" d="M10.5 21h66.14"/><path id="Line-39" fill="#C06334" fill-rule="nonzero" d="M35 20.5l7 14h-6v97.819l6 .001-7 14-7-14 6-.001V34.5h-6l7-14z"/><path id="Rectangle-14" fill="#FFF" d="M88 33h312v89H88z"/><path id="Rectangle-15" fill="#FFF" d="M88 411h312v89H88z"/><text id="scrollHeight:723px" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal" transform="rotate(-90 449 270)"><tspan x="373.4" y="274.5" fill="#C06334">scrollHeight:</tspan> <tspan x="482.6" y="274.5" fill="#1C85B5">723px</tspan></text><path id="Line-27" stroke="#C06334" stroke-dasharray="3,6" stroke-linecap="square" stroke-width="2" d="M393.5 22h78.14"/><path id="Line-28" stroke="#C06334" stroke-dasharray="3,6" stroke-linecap="square" stroke-width="2" d="M393.5 522h78.14"/><path id="Line-25" fill="#C06334" fill-rule="nonzero" d="M462 24.5l7 14h-6v466h6l-7 14-7-14h6v-466h-6l7-14z"/><g id="Group" transform="translate(384 147)"><rect id="Rectangle-19" width="15" height="239" x=".5" y=".5" fill="#D1CFCD" stroke="#D1CFCD" rx="3"/><g id="Rectangle-18-+-Triangle-1"><rect id="Rectangle-18" width="15" height="19" x=".5" y=".5" fill="url(#linearGradient-1)" stroke="#D1CFCD" rx="3"/><path id="Triangle-1" fill="#7E7C7B" d="M8 7l3.2 6H4.8z"/></g><g id="Rectangle-18-+-Triangle-2" transform="matrix(1 0 0 -1 0 240)"><rect id="Rectangle-18" width="15" height="19" x=".5" y=".5" fill="url(#linearGradient-1)" stroke="#D1CFCD" rx="3"/><path id="Triangle-1" fill="#7E7C7B" d="M8 7l3.2 6H4.8z"/></g><g id="Rectangle-18-+-Triangle-3-+-Group" transform="translate(0 50)"><g id="Rectangle-18-+-Triangle-3" fill="url(#linearGradient-2)" stroke="#D1CFCD" transform="matrix(1 0 0 -1 0 51)"><rect id="Rectangle-18" width="15" height="50" x=".5" y=".5" rx="3"/></g><g id="Group" fill="#D1CFCD" stroke="#7E7C7B" transform="translate(4 20)"><path id="Rectangle-22" d="M.5.5h7v1h-7z"/><path id="Rectangle-23" d="M.5 3.5h7v1h-7z"/><path id="Rectangle-24" d="M.5 6.5h7v1h-7z"/><path id="Rectangle-25" d="M.5 9.5h7v1h-7z"/></g></g></g></g></g></svg> \ No newline at end of file +<<<<<<< HEAD +<svg xmlns="http://www.w3.org/2000/svg" width="489" height="542" viewBox="0 0 489 542"><defs><style>@import url(https://fonts.googleapis.com/css?family=Open+Sans:bold,italic,bolditalic%7CPT+Mono);@font-face{font-family:'PT Mono';font-weight:700;font-style:normal;src:local('PT MonoBold'),url(/font/PTMonoBold.woff2) format('woff2'),url(/font/PTMonoBold.woff) format('woff'),url(/font/PTMonoBold.ttf) format('truetype')}</style></defs><defs><linearGradient id="linearGradient-1" x1="50%" x2="50%" y1="0%" y2="100%"><stop offset="0%" stop-color="#FFF"/><stop offset="100%" stop-color="#D1CFCD"/></linearGradient><linearGradient id="linearGradient-2" x1="50%" x2="50%" y1="0%" y2="100%"><stop offset="0%" stop-color="#FFF"/><stop offset="100%" stop-color="#D1CFCD"/></linearGradient></defs><g id="dom" fill="none" fill-rule="evenodd" stroke="none" stroke-width="1"><g id="metric-scroll-top.svg"><path fill="#FFF" d="M0 0h489v542H0z"/><text id="Introduction" fill="#643B0C" font-family="OpenSans-Bold, Open Sans" font-size="16" font-weight="bold"><tspan x="94" y="54">Introduction</tspan> <tspan x="94" y="82" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">This Ecma Standard is based on several </tspan> <tspan x="94" y="101" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">originating technologies, the most well </tspan> <tspan x="94" y="120" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">known being JavaScript (Netscape) and </tspan> <tspan x="94" y="139" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">JScript (Microsoft). The language was </tspan> <tspan x="94" y="158" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">invented by Brendan Eich at Netscape and </tspan> <tspan x="94" y="177" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">first appeared in that company’s Navigator </tspan> <tspan x="94" y="196" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">2.0 browser. It has appeared in all </tspan> <tspan x="94" y="215" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">subsequent browsers from Netscape and </tspan> <tspan x="94" y="234" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">in all browsers from Microsoft starting with </tspan> <tspan x="94" y="253" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">Internet Explorer 3.0.</tspan> <tspan x="94" y="272" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">The development of this Standard started </tspan> <tspan x="94" y="291" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">in November 1996. The first edition of this </tspan> <tspan x="94" y="310" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">Ecma Standard was adopted by the Ecma </tspan> <tspan x="94" y="329" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">General Assembly of June 1997.</tspan> <tspan x="94" y="348" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">That Ecma Standard was submitted to ISO/</tspan> <tspan x="94" y="367" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">IEC JTC 1 for adoption under the fast-track </tspan> <tspan x="94" y="386" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">procedure, and approved as international </tspan> <tspan x="94" y="405" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">standard ISO/IEC 16262, in April 1998. The </tspan> <tspan x="94" y="424" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">Ecma General Assembly of June 1998 </tspan> <tspan x="94" y="443" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">approved the second edition of ECMA-262 </tspan> <tspan x="94" y="462" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">to keep it fully aligned with ISO/IEC 16262. </tspan> <tspan x="94" y="481" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">Changes between the first and the second </tspan> <tspan x="94" y="500" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">edition are editorial in nature.</tspan></text><path id="Rectangle-1" fill="#DBAF88" d="M425 122v290H51V122h374zm-25 25H76v240h324V147z"/><path id="Rectangle-2" stroke="#DBAF88" stroke-width="2" d="M75 22h326v500H75z"/><text id="scrollTop" fill="#C06334" font-family="PTMono-Regular, PT Mono" font-size="12" font-weight="normal" transform="rotate(-90 16.5 84)"><tspan x="-15.9" y="88">scrollTop</tspan></text><path id="Line-43" stroke="#C06334" stroke-dasharray="3,6" stroke-linecap="square" stroke-width="2" d="M9.5 147h66.14"/><path id="Line-42" stroke="#C06334" stroke-dasharray="3,6" stroke-linecap="square" stroke-width="2" d="M10.5 21h66.14"/><path id="Line-39" fill="#C06334" fill-rule="nonzero" d="M35 20.5l7 14h-6v97.819l6 .001-7 14-7-14 6-.001V34.5h-6l7-14z"/><path id="Rectangle-14" fill="#FFF" d="M88 33h312v89H88z"/><path id="Rectangle-15" fill="#FFF" d="M88 411h312v89H88z"/><text id="scrollHeight:723px" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal" transform="rotate(-90 449 270)"><tspan x="373.4" y="274.5" fill="#C06334">scrollHeight:</tspan> <tspan x="482.6" y="274.5" fill="#1C85B5">723px</tspan></text><path id="Line-27" stroke="#C06334" stroke-dasharray="3,6" stroke-linecap="square" stroke-width="2" d="M393.5 22h78.14"/><path id="Line-28" stroke="#C06334" stroke-dasharray="3,6" stroke-linecap="square" stroke-width="2" d="M393.5 522h78.14"/><path id="Line-25" fill="#C06334" fill-rule="nonzero" d="M462 24.5l7 14h-6v466h6l-7 14-7-14h6v-466h-6l7-14z"/><g id="Group" transform="translate(384 147)"><rect id="Rectangle-19" width="15" height="239" x=".5" y=".5" fill="#D1CFCD" stroke="#D1CFCD" rx="3"/><g id="Rectangle-18-+-Triangle-1"><rect id="Rectangle-18" width="15" height="19" x=".5" y=".5" fill="url(#linearGradient-1)" stroke="#D1CFCD" rx="3"/><path id="Triangle-1" fill="#7E7C7B" d="M8 7l3.2 6H4.8z"/></g><g id="Rectangle-18-+-Triangle-2" transform="matrix(1 0 0 -1 0 240)"><rect id="Rectangle-18" width="15" height="19" x=".5" y=".5" fill="url(#linearGradient-1)" stroke="#D1CFCD" rx="3"/><path id="Triangle-1" fill="#7E7C7B" d="M8 7l3.2 6H4.8z"/></g><g id="Rectangle-18-+-Triangle-3-+-Group" transform="translate(0 50)"><g id="Rectangle-18-+-Triangle-3" fill="url(#linearGradient-2)" stroke="#D1CFCD" transform="matrix(1 0 0 -1 0 51)"><rect id="Rectangle-18" width="15" height="50" x=".5" y=".5" rx="3"/></g><g id="Group" fill="#D1CFCD" stroke="#7E7C7B" transform="translate(4 20)"><path id="Rectangle-22" d="M.5.5h7v1h-7z"/><path id="Rectangle-23" d="M.5 3.5h7v1h-7z"/><path id="Rectangle-24" d="M.5 6.5h7v1h-7z"/><path id="Rectangle-25" d="M.5 9.5h7v1h-7z"/></g></g></g></g></g></svg> +======= +<svg xmlns="http://www.w3.org/2000/svg" width="489" height="542" viewBox="0 0 489 542"><defs><style>@import url(https://fonts.googleapis.com/css?family=Open+Sans:bold,italic,bolditalic%7CPT+Mono);@font-face{font-family:'PT Mono';font-weight:700;font-style:normal;src:local('PT MonoBold'),url(/font/PTMonoBold.woff2) format('woff2'),url(/font/PTMonoBold.woff) format('woff'),url(/font/PTMonoBold.ttf) format('truetype')}</style></defs><defs><linearGradient id="linearGradient-1" x1="50%" x2="50%" y1="0%" y2="100%"><stop offset="0%" stop-color="#FFF"/><stop offset="100%" stop-color="#D1CFCD"/></linearGradient><linearGradient id="linearGradient-2" x1="50%" x2="50%" y1="0%" y2="100%"><stop offset="0%" stop-color="#FFF"/><stop offset="100%" stop-color="#D1CFCD"/></linearGradient></defs><g id="dom" fill="none" fill-rule="evenodd" stroke="none" stroke-width="1"><g id="metric-scroll-top.svg"><path fill="#FFF" d="M0 0h489v542H0z"/><text id="Introduction" fill="#643B0C" font-family="OpenSans-Bold, Open Sans" font-size="16" font-weight="bold"><tspan x="94" y="54">Introduction</tspan> <tspan x="94" y="82" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">This Ecma Standard is based on several </tspan> <tspan x="94" y="101" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">originating technologies, the most well </tspan> <tspan x="94" y="120" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">known being JavaScript (Netscape) and </tspan> <tspan x="94" y="139" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">JScript (Microsoft). The language was </tspan> <tspan x="94" y="158" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">invented by Brendan Eich at Netscape and </tspan> <tspan x="94" y="177" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">first appeared in that company’s Navigator </tspan> <tspan x="94" y="196" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">2.0 browser. It has appeared in all </tspan> <tspan x="94" y="215" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">subsequent browsers from Netscape and </tspan> <tspan x="94" y="234" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">in all browsers from Microsoft starting with </tspan> <tspan x="94" y="253" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">Internet Explorer 3.0.</tspan> <tspan x="94" y="272" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">The development of this Standard started </tspan> <tspan x="94" y="291" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">in November 1996. The first edition of this </tspan> <tspan x="94" y="310" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">Ecma Standard was adopted by the Ecma </tspan> <tspan x="94" y="329" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">General Assembly of June 1997.</tspan> <tspan x="94" y="348" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">That Ecma Standard was submitted to ISO/</tspan> <tspan x="94" y="367" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">IEC JTC 1 for adoption under the fast-track </tspan> <tspan x="94" y="386" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">procedure, and approved as international </tspan> <tspan x="94" y="405" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">standard ISO/IEC 16262, in April 1998. The </tspan> <tspan x="94" y="424" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">Ecma General Assembly of June 1998 </tspan> <tspan x="94" y="443" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">approved the second edition of ECMA-262 </tspan> <tspan x="94" y="462" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">to keep it fully aligned with ISO/IEC 16262. </tspan> <tspan x="94" y="481" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">Changes between the first and the second </tspan> <tspan x="94" y="500" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">edition are editorial in nature.</tspan></text><path id="Rectangle-1" fill="#DBAF88" d="M425 122v290H51V122h374zm-25 25H76v240h324V147z"/><path id="Rectangle-2" stroke="#DBAF88" stroke-width="2" d="M75 22h326v500H75z"/><text id="scrollTop" fill="#C06334" font-family="PTMono-Regular, PT Mono" font-size="12" font-weight="normal" transform="rotate(-90 16.5 84)"><tspan x="-15.9" y="88">scrollTop</tspan></text><path id="Line-43" stroke="#C06334" stroke-dasharray="3,6" stroke-linecap="square" stroke-width="2" d="M9.5 147h66.14"/><path id="Line-42" stroke="#C06334" stroke-dasharray="3,6" stroke-linecap="square" stroke-width="2" d="M10.5 21h66.14"/><path id="Line-39" fill="#C06334" fill-rule="nonzero" d="M35 20.5l7 14h-6v97.819l6 .001-7 14-7-14 6-.001V34.5h-6l7-14z"/><path id="Rectangle-14" fill="#FFF" d="M88 33h312v89H88z"/><path id="Rectangle-15" fill="#FFF" d="M88 411h312v89H88z"/><text id="scrollHeight:723px" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal" transform="rotate(-90 449 270)"><tspan x="373.4" y="274.5" fill="#C06334">scrollHeight:</tspan> <tspan x="482.6" y="274.5" fill="#1C85B5">723px</tspan></text><path id="Line-27" stroke="#C06334" stroke-dasharray="3,6" stroke-linecap="square" stroke-width="2" d="M393.5 22h78.14"/><path id="Line-28" stroke="#C06334" stroke-dasharray="3,6" stroke-linecap="square" stroke-width="2" d="M393.5 522h78.14"/><path id="Line-25" fill="#C06334" fill-rule="nonzero" d="M462 24.5l7 14h-6v466h6l-7 14-7-14h6v-466h-6l7-14z"/><g id="Scrollbar" transform="translate(384 147)"><rect id="Rectangle-19" width="15" height="239" x=".5" y=".5" fill="#D1CFCD" stroke="#D1CFCD" rx="3"/><g id="Rectangle-18-+-Triangle-1"><rect id="Rectangle-18" width="15" height="19" x=".5" y=".5" fill="url(#linearGradient-1)" stroke="#D1CFCD" rx="3"/><path id="Triangle-1" fill="#7E7C7B" d="M8 7l3.2 6H4.8z"/></g><g id="Rectangle-18-+-Triangle-2" transform="matrix(1 0 0 -1 0 240)"><rect id="Rectangle-18" width="15" height="19" x=".5" y=".5" fill="url(#linearGradient-1)" stroke="#D1CFCD" rx="3"/><path id="Triangle-1" fill="#7E7C7B" d="M8 7l3.2 6H4.8z"/></g><g id="Rectangle-18-+-Triangle-3-+-Group" transform="translate(0 50)"><g id="Rectangle-18-+-Triangle-3" fill="url(#linearGradient-2)" stroke="#D1CFCD" transform="matrix(1 0 0 -1 0 51)"><rect id="Rectangle-18" width="15" height="50" x=".5" y=".5" rx="3"/></g><g id="Group" fill="#D1CFCD" stroke="#7E7C7B" transform="translate(4 20)"><path id="Rectangle-22" d="M.5.5h7v1h-7z"/><path id="Rectangle-23" d="M.5 3.5h7v1h-7z"/><path id="Rectangle-24" d="M.5 6.5h7v1h-7z"/><path id="Rectangle-25" d="M.5 9.5h7v1h-7z"/></g></g></g></g></g></svg> +>>>>>>> 540d753e90789205fc6e75c502f68382c87dea9b diff --git a/2-ui/1-document/09-size-and-scroll/metric-scroll-width-height.svg b/2-ui/1-document/09-size-and-scroll/metric-scroll-width-height.svg index 0c3d29952..9865fd8d5 100644 --- a/2-ui/1-document/09-size-and-scroll/metric-scroll-width-height.svg +++ b/2-ui/1-document/09-size-and-scroll/metric-scroll-width-height.svg @@ -1 +1,5 @@ -<svg xmlns="http://www.w3.org/2000/svg" width="463" height="524" viewBox="0 0 463 524"><defs><style>@import url(https://fonts.googleapis.com/css?family=Open+Sans:bold,italic,bolditalic%7CPT+Mono);@font-face{font-family:'PT Mono';font-weight:700;font-style:normal;src:local('PT MonoBold'),url(/font/PTMonoBold.woff2) format('woff2'),url(/font/PTMonoBold.woff) format('woff'),url(/font/PTMonoBold.ttf) format('truetype')}</style></defs><defs><linearGradient id="linearGradient-1" x1="50%" x2="50%" y1="0%" y2="100%"><stop offset="0%" stop-color="#FFF"/><stop offset="100%" stop-color="#D1CFCD"/></linearGradient><linearGradient id="linearGradient-2" x1="50%" x2="50%" y1="0%" y2="100%"><stop offset="0%" stop-color="#FFF"/><stop offset="100%" stop-color="#D1CFCD"/></linearGradient></defs><g id="dom" fill="none" fill-rule="evenodd" stroke="none" stroke-width="1"><g id="metric-scroll-width-height.svg"><path fill="#FFF" d="M0 0h463v524H0z"/><text id="Introduction" fill="#643B0C" font-family="OpenSans-Bold, Open Sans" font-size="16" font-weight="bold"><tspan x="66" y="54">Introduction</tspan> <tspan x="66" y="82" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">This Ecma Standard is based on several </tspan> <tspan x="66" y="101" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">originating technologies, the most well </tspan> <tspan x="66" y="120" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">known being JavaScript (Netscape) and </tspan> <tspan x="66" y="139" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">JScript (Microsoft). The language was </tspan> <tspan x="66" y="158" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">invented by Brendan Eich at Netscape </tspan> <tspan x="66" y="177" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">and first appeared in that company’s </tspan> <tspan x="66" y="196" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">Navigator 2.0 browser. It has appeared </tspan> <tspan x="66" y="215" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">in all subsequent browsers from </tspan> <tspan x="66" y="234" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">Netscape and in all browsers from </tspan> <tspan x="66" y="253" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">Microsoft starting with Internet Explorer </tspan> <tspan x="66" y="272" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">3.0.</tspan> <tspan x="66" y="291" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">The development of this Standard </tspan> <tspan x="66" y="310" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">started in November 1996. The first </tspan> <tspan x="66" y="329" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">edition of this Ecma Standard was </tspan> <tspan x="66" y="348" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">adopted by the Ecma General Assembly </tspan> <tspan x="66" y="367" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">of June 1997.</tspan> <tspan x="66" y="386" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">That Ecma Standard was submitted to </tspan> <tspan x="66" y="405" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">ISO/IEC JTC 1 for adoption under the </tspan> <tspan x="66" y="424" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">fast-track procedure, and approved as </tspan> <tspan x="66" y="443" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">international standard ISO/IEC 16262, in </tspan> <tspan x="66" y="462" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">April 1998. The Ecma General Assembly </tspan> <tspan x="66" y="481" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">of June 1998 approved the second </tspan> <tspan x="66" y="500" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">edition of ECMA-262 to keep it fully </tspan> <tspan x="66" y="519" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">aligned with ISO/IEC 16262. Changes </tspan> <tspan x="66" y="538" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">between the first and the second </tspan> <tspan x="66" y="557" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">edition are editorial in nature.</tspan></text><path id="Rectangle-15" fill="#FFF" d="M58 410h312v111H58z"/><path id="Rectangle-14" fill="#FFF" d="M58 35h312v89H58z"/><path id="Rectangle-1" fill="#DBAF88" d="M395 123v290H21V123h374zm-25 25H46v240h324V148z"/><path id="Rectangle-2" stroke="#DBAF88" stroke-width="2" d="M45 22h326v502H45z"/><text id="scrollHeight:723px" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal" transform="rotate(-90 426 270.5)"><tspan x="350.4" y="275" fill="#C06334">scrollHeight:</tspan> <tspan x="459.6" y="275" fill="#1C85B5">723px</tspan></text><path id="Line-27" stroke="#C06334" stroke-dasharray="3,6" stroke-linecap="square" stroke-width="2" d="M371 22h78"/><path id="Line-26" stroke="#C06334" stroke-dasharray="3,6" stroke-linecap="square" stroke-width="2" d="M371 524h78"/><path id="Line-25" fill="#C06334" fill-rule="nonzero" d="M439 26l7 14h-6v466h6l-7 14-7-14h6V40h-6l7-14z"/><path id="Line-39" fill="#C06334" fill-rule="nonzero" d="M335.36 102l14 7-14 7-.001-6H64v6l-14-7 14-7v6h271.359l.001-6z"/><path id="Line-42" stroke="#C06334" stroke-dasharray="3,6" stroke-linecap="square" stroke-width="2" d="M352 154v-54"/><path id="Line-43" stroke="#C06334" stroke-dasharray="3,6" stroke-linecap="square" stroke-width="2" d="M47 154v-54"/><text id="scrollWidth-=-324px" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="149.2" y="105" fill="#C06334">scrollWidth = </tspan> <tspan x="266.8" y="105" fill="#1C85B5">324px</tspan></text><g id="Group" transform="translate(354 148)"><rect id="Rectangle-19" width="15" height="239" x=".5" y=".5" fill="#D1CFCD" stroke="#D1CFCD" rx="3"/><g id="Rectangle-18-+-Triangle-1"><rect id="Rectangle-18" width="15" height="19" x=".5" y=".5" fill="url(#linearGradient-1)" stroke="#D1CFCD" rx="3"/><path id="Triangle-1" fill="#7E7C7B" d="M8 7l3.2 6H4.8z"/></g><g id="Rectangle-18-+-Triangle-2" transform="matrix(1 0 0 -1 0 240)"><rect id="Rectangle-18" width="15" height="19" x=".5" y=".5" fill="url(#linearGradient-1)" stroke="#D1CFCD" rx="3"/><path id="Triangle-1" fill="#7E7C7B" d="M8 7l3.2 6H4.8z"/></g><g id="Rectangle-18-+-Triangle-3-+-Group" transform="translate(0 50)"><g id="Rectangle-18-+-Triangle-3" fill="url(#linearGradient-2)" stroke="#D1CFCD" transform="matrix(1 0 0 -1 0 51)"><rect id="Rectangle-18" width="15" height="50" x=".5" y=".5" rx="3"/></g><g id="Group" fill="#D1CFCD" stroke="#7E7C7B" transform="translate(4 20)"><path id="Rectangle-22" d="M.5.5h7v1h-7z"/><path id="Rectangle-23" d="M.5 3.5h7v1h-7z"/><path id="Rectangle-24" d="M.5 6.5h7v1h-7z"/><path id="Rectangle-25" d="M.5 9.5h7v1h-7z"/></g></g></g></g></g></svg> \ No newline at end of file +<<<<<<< HEAD +<svg xmlns="http://www.w3.org/2000/svg" width="463" height="524" viewBox="0 0 463 524"><defs><style>@import url(https://fonts.googleapis.com/css?family=Open+Sans:bold,italic,bolditalic%7CPT+Mono);@font-face{font-family:'PT Mono';font-weight:700;font-style:normal;src:local('PT MonoBold'),url(/font/PTMonoBold.woff2) format('woff2'),url(/font/PTMonoBold.woff) format('woff'),url(/font/PTMonoBold.ttf) format('truetype')}</style></defs><defs><linearGradient id="linearGradient-1" x1="50%" x2="50%" y1="0%" y2="100%"><stop offset="0%" stop-color="#FFF"/><stop offset="100%" stop-color="#D1CFCD"/></linearGradient><linearGradient id="linearGradient-2" x1="50%" x2="50%" y1="0%" y2="100%"><stop offset="0%" stop-color="#FFF"/><stop offset="100%" stop-color="#D1CFCD"/></linearGradient></defs><g id="dom" fill="none" fill-rule="evenodd" stroke="none" stroke-width="1"><g id="metric-scroll-width-height.svg"><path fill="#FFF" d="M0 0h463v524H0z"/><text id="Introduction" fill="#643B0C" font-family="OpenSans-Bold, Open Sans" font-size="16" font-weight="bold"><tspan x="66" y="54">Introduction</tspan> <tspan x="66" y="82" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">This Ecma Standard is based on several </tspan> <tspan x="66" y="101" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">originating technologies, the most well </tspan> <tspan x="66" y="120" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">known being JavaScript (Netscape) and </tspan> <tspan x="66" y="139" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">JScript (Microsoft). The language was </tspan> <tspan x="66" y="158" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">invented by Brendan Eich at Netscape </tspan> <tspan x="66" y="177" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">and first appeared in that company’s </tspan> <tspan x="66" y="196" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">Navigator 2.0 browser. It has appeared </tspan> <tspan x="66" y="215" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">in all subsequent browsers from </tspan> <tspan x="66" y="234" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">Netscape and in all browsers from </tspan> <tspan x="66" y="253" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">Microsoft starting with Internet Explorer </tspan> <tspan x="66" y="272" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">3.0.</tspan> <tspan x="66" y="291" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">The development of this Standard </tspan> <tspan x="66" y="310" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">started in November 1996. The first </tspan> <tspan x="66" y="329" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">edition of this Ecma Standard was </tspan> <tspan x="66" y="348" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">adopted by the Ecma General Assembly </tspan> <tspan x="66" y="367" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">of June 1997.</tspan> <tspan x="66" y="386" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">That Ecma Standard was submitted to </tspan> <tspan x="66" y="405" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">ISO/IEC JTC 1 for adoption under the </tspan> <tspan x="66" y="424" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">fast-track procedure, and approved as </tspan> <tspan x="66" y="443" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">international standard ISO/IEC 16262, in </tspan> <tspan x="66" y="462" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">April 1998. The Ecma General Assembly </tspan> <tspan x="66" y="481" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">of June 1998 approved the second </tspan> <tspan x="66" y="500" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">edition of ECMA-262 to keep it fully </tspan> <tspan x="66" y="519" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">aligned with ISO/IEC 16262. Changes </tspan> <tspan x="66" y="538" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">between the first and the second </tspan> <tspan x="66" y="557" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">edition are editorial in nature.</tspan></text><path id="Rectangle-15" fill="#FFF" d="M58 410h312v111H58z"/><path id="Rectangle-14" fill="#FFF" d="M58 35h312v89H58z"/><path id="Rectangle-1" fill="#DBAF88" d="M395 123v290H21V123h374zm-25 25H46v240h324V148z"/><path id="Rectangle-2" stroke="#DBAF88" stroke-width="2" d="M45 22h326v502H45z"/><text id="scrollHeight:723px" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal" transform="rotate(-90 426 270.5)"><tspan x="350.4" y="275" fill="#C06334">scrollHeight:</tspan> <tspan x="459.6" y="275" fill="#1C85B5">723px</tspan></text><path id="Line-27" stroke="#C06334" stroke-dasharray="3,6" stroke-linecap="square" stroke-width="2" d="M371 22h78"/><path id="Line-26" stroke="#C06334" stroke-dasharray="3,6" stroke-linecap="square" stroke-width="2" d="M371 524h78"/><path id="Line-25" fill="#C06334" fill-rule="nonzero" d="M439 26l7 14h-6v466h6l-7 14-7-14h6V40h-6l7-14z"/><path id="Line-39" fill="#C06334" fill-rule="nonzero" d="M335.36 102l14 7-14 7-.001-6H64v6l-14-7 14-7v6h271.359l.001-6z"/><path id="Line-42" stroke="#C06334" stroke-dasharray="3,6" stroke-linecap="square" stroke-width="2" d="M352 154v-54"/><path id="Line-43" stroke="#C06334" stroke-dasharray="3,6" stroke-linecap="square" stroke-width="2" d="M47 154v-54"/><text id="scrollWidth-=-324px" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="149.2" y="105" fill="#C06334">scrollWidth = </tspan> <tspan x="266.8" y="105" fill="#1C85B5">324px</tspan></text><g id="Group" transform="translate(354 148)"><rect id="Rectangle-19" width="15" height="239" x=".5" y=".5" fill="#D1CFCD" stroke="#D1CFCD" rx="3"/><g id="Rectangle-18-+-Triangle-1"><rect id="Rectangle-18" width="15" height="19" x=".5" y=".5" fill="url(#linearGradient-1)" stroke="#D1CFCD" rx="3"/><path id="Triangle-1" fill="#7E7C7B" d="M8 7l3.2 6H4.8z"/></g><g id="Rectangle-18-+-Triangle-2" transform="matrix(1 0 0 -1 0 240)"><rect id="Rectangle-18" width="15" height="19" x=".5" y=".5" fill="url(#linearGradient-1)" stroke="#D1CFCD" rx="3"/><path id="Triangle-1" fill="#7E7C7B" d="M8 7l3.2 6H4.8z"/></g><g id="Rectangle-18-+-Triangle-3-+-Group" transform="translate(0 50)"><g id="Rectangle-18-+-Triangle-3" fill="url(#linearGradient-2)" stroke="#D1CFCD" transform="matrix(1 0 0 -1 0 51)"><rect id="Rectangle-18" width="15" height="50" x=".5" y=".5" rx="3"/></g><g id="Group" fill="#D1CFCD" stroke="#7E7C7B" transform="translate(4 20)"><path id="Rectangle-22" d="M.5.5h7v1h-7z"/><path id="Rectangle-23" d="M.5 3.5h7v1h-7z"/><path id="Rectangle-24" d="M.5 6.5h7v1h-7z"/><path id="Rectangle-25" d="M.5 9.5h7v1h-7z"/></g></g></g></g></g></svg> +======= +<svg xmlns="http://www.w3.org/2000/svg" width="463" height="524" viewBox="0 0 463 524"><defs><style>@import url(https://fonts.googleapis.com/css?family=Open+Sans:bold,italic,bolditalic%7CPT+Mono);@font-face{font-family:'PT Mono';font-weight:700;font-style:normal;src:local('PT MonoBold'),url(/font/PTMonoBold.woff2) format('woff2'),url(/font/PTMonoBold.woff) format('woff'),url(/font/PTMonoBold.ttf) format('truetype')}</style></defs><defs><linearGradient id="linearGradient-1" x1="50%" x2="50%" y1="0%" y2="100%"><stop offset="0%" stop-color="#FFF"/><stop offset="100%" stop-color="#D1CFCD"/></linearGradient><linearGradient id="linearGradient-2" x1="50%" x2="50%" y1="0%" y2="100%"><stop offset="0%" stop-color="#FFF"/><stop offset="100%" stop-color="#D1CFCD"/></linearGradient></defs><g id="dom" fill="none" fill-rule="evenodd" stroke="none" stroke-width="1"><g id="metric-scroll-width-height.svg"><path fill="#FFF" d="M0 0h463v524H0z"/><text id="Introduction" fill="#643B0C" font-family="OpenSans-Bold, Open Sans" font-size="16" font-weight="bold"><tspan x="66" y="54">Introduction</tspan> <tspan x="66" y="82" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">This Ecma Standard is based on several </tspan> <tspan x="66" y="101" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">originating technologies, the most well </tspan> <tspan x="66" y="120" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">known being JavaScript (Netscape) and </tspan> <tspan x="66" y="139" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">JScript (Microsoft). The language was </tspan> <tspan x="66" y="158" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">invented by Brendan Eich at Netscape </tspan> <tspan x="66" y="177" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">and first appeared in that company’s </tspan> <tspan x="66" y="196" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">Navigator 2.0 browser. It has appeared </tspan> <tspan x="66" y="215" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">in all subsequent browsers from </tspan> <tspan x="66" y="234" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">Netscape and in all browsers from </tspan> <tspan x="66" y="253" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">Microsoft starting with Internet Explorer </tspan> <tspan x="66" y="272" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">3.0.</tspan> <tspan x="66" y="291" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">The development of this Standard </tspan> <tspan x="66" y="310" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">started in November 1996. The first </tspan> <tspan x="66" y="329" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">edition of this Ecma Standard was </tspan> <tspan x="66" y="348" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">adopted by the Ecma General Assembly </tspan> <tspan x="66" y="367" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">of June 1997.</tspan> <tspan x="66" y="386" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">That Ecma Standard was submitted to </tspan> <tspan x="66" y="405" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">ISO/IEC JTC 1 for adoption under the </tspan> <tspan x="66" y="424" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">fast-track procedure, and approved as </tspan> <tspan x="66" y="443" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">international standard ISO/IEC 16262, in </tspan> <tspan x="66" y="462" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">April 1998. The Ecma General Assembly </tspan> <tspan x="66" y="481" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">of June 1998 approved the second </tspan> <tspan x="66" y="500" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">edition of ECMA-262 to keep it fully </tspan> <tspan x="66" y="519" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">aligned with ISO/IEC 16262. Changes </tspan> <tspan x="66" y="538" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">between the first and the second </tspan> <tspan x="66" y="557" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">edition are editorial in nature.</tspan></text><path id="Rectangle-15" fill="#FFF" d="M58 410h312v111H58z"/><path id="Rectangle-14" fill="#FFF" d="M58 35h312v89H58z"/><path id="Rectangle-1" fill="#DBAF88" d="M395 123v290H21V123h374zm-25 25H46v240h324V148z"/><path id="Rectangle-2" stroke="#DBAF88" stroke-width="2" d="M45 22h326v502H45z"/><text id="scrollHeight:723px" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal" transform="rotate(-90 426 270.5)"><tspan x="350.4" y="275" fill="#C06334">scrollHeight:</tspan> <tspan x="459.6" y="275" fill="#1C85B5">723px</tspan></text><path id="Line-27" stroke="#C06334" stroke-dasharray="3,6" stroke-linecap="square" stroke-width="2" d="M371 22h78"/><path id="Line-26" stroke="#C06334" stroke-dasharray="3,6" stroke-linecap="square" stroke-width="2" d="M371 524h78"/><path id="Line-25" fill="#C06334" fill-rule="nonzero" d="M439 26l7 14h-6v466h6l-7 14-7-14h6V40h-6l7-14z"/><path id="Line-39" fill="#C06334" fill-rule="nonzero" d="M335.36 102l14 7-14 7-.001-6H64v6l-14-7 14-7v6h271.359l.001-6z"/><path id="Line-42" stroke="#C06334" stroke-dasharray="3,6" stroke-linecap="square" stroke-width="2" d="M352 154v-54"/><path id="Line-43" stroke="#C06334" stroke-dasharray="3,6" stroke-linecap="square" stroke-width="2" d="M47 154v-54"/><text id="scrollWidth-=-324px" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="149.2" y="105" fill="#C06334">scrollWidth = </tspan> <tspan x="266.8" y="105" fill="#1C85B5">324px</tspan></text><g id="Group-2" transform="translate(354 148)"><rect id="Rectangle-19" width="15" height="239" x=".5" y=".5" fill="#D1CFCD" stroke="#D1CFCD" rx="3"/><g id="Rectangle-18-+-Triangle-1"><rect id="Rectangle-18" width="15" height="19" x=".5" y=".5" fill="url(#linearGradient-1)" stroke="#D1CFCD" rx="3"/><path id="Triangle-1" fill="#7E7C7B" d="M8 7l3.2 6H4.8z"/></g><g id="Rectangle-18-+-Triangle-2" transform="matrix(1 0 0 -1 0 240)"><rect id="Rectangle-18" width="15" height="19" x=".5" y=".5" fill="url(#linearGradient-1)" stroke="#D1CFCD" rx="3"/><path id="Triangle-1" fill="#7E7C7B" d="M8 7l3.2 6H4.8z"/></g><g id="Rectangle-18-+-Triangle-3-+-Group" transform="translate(0 50)"><g id="Rectangle-18-+-Triangle-3" fill="url(#linearGradient-2)" stroke="#D1CFCD" transform="matrix(1 0 0 -1 0 51)"><rect id="Rectangle-18" width="15" height="50" x=".5" y=".5" rx="3"/></g><g id="Group" fill="#D1CFCD" stroke="#7E7C7B" transform="translate(4 20)"><path id="Rectangle-22" d="M.5.5h7v1h-7z"/><path id="Rectangle-23" d="M.5 3.5h7v1h-7z"/><path id="Rectangle-24" d="M.5 6.5h7v1h-7z"/><path id="Rectangle-25" d="M.5 9.5h7v1h-7z"/></g></g></g></g></g></svg> +>>>>>>> 540d753e90789205fc6e75c502f68382c87dea9b diff --git a/2-ui/1-document/10-size-and-scroll-window/article.md b/2-ui/1-document/10-size-and-scroll-window/article.md index a6244b42a..08a2f6576 100644 --- a/2-ui/1-document/10-size-and-scroll-window/article.md +++ b/2-ui/1-document/10-size-and-scroll-window/article.md @@ -1,12 +1,12 @@ # Window sizes and scrolling -How to find out the width and height of the browser window? How to get the full width and height of the document, including the scrolled out part? How to scroll the page using JavaScript? +How do we find the width and height of the browser window? How do we get the full width and height of the document, including the scrolled out part? How do we scroll the page using JavaScript? -From the DOM point of view, the root document element is `document.documentElement`. That element corresponds to `<html>` and has geometry properties described in the [previous chapter](info:size-and-scroll). For some cases we can use it, but there are additional methods and peculiarities important enough to consider. +For this type of information, we can use the root document element `document.documentElement`, that corresponds to the `<html>` tag. But there are additional methods and peculiarities to consider. ## Width/height of the window -Properties `clientWidth/clientHeight` of `document.documentElement` is exactly what we want here: +To get window width and height, we can use the `clientWidth/clientHeight` of `document.documentElement`:  @@ -16,12 +16,12 @@ For instance, this button shows the height of your window: <button onclick="alert(document.documentElement.clientHeight)">alert(document.documentElement.clientHeight)</button> ``` -````warn header="Not `window.innerWidth/Height`" -Browsers also support properties `window.innerWidth/innerHeight`. They look like what we want. So what's the difference? +````warn header="Not `window.innerWidth/innerHeight`" +Browsers also support properties like `window.innerWidth/innerHeight`. They look like what we want, so why not to use them instead? -If there's a scrollbar occupying some space, `clientWidth/clientHeight` provide the width/height inside it. In other words, they return width/height of the visible part of the document, available for the content. +If there exists a scrollbar, and it occupies some space, `clientWidth/clientHeight` provide the width/height without it (subtract it). In other words, they return the width/height of the visible part of the document, available for the content. -And `window.innerWidth/innerHeight` ignore the scrollbar. +`window.innerWidth/innerHeight` includes the scrollbar. If there's a scrollbar, and it occupies some space, then these two lines show different values: ```js run @@ -29,22 +29,22 @@ alert( window.innerWidth ); // full window width alert( document.documentElement.clientWidth ); // window width minus the scrollbar ``` -In most cases we need the *available* window width: to draw or position something. That is: inside scrollbars if there are any. So we should use `documentElement.clientHeight/Width`. +In most cases, we need the *available* window width in order to draw or position something within scrollbars (if there are any), so we should use `documentElement.clientHeight/clientWidth`. ```` ```warn header="`DOCTYPE` is important" Please note: top-level geometry properties may work a little bit differently when there's no `<!DOCTYPE HTML>` in HTML. Odd things are possible. -In modern HTML we should always write `DOCTYPE`. Generally that's not a JavaScript question, but here it affects JavaScript as well. +In modern HTML we should always write `DOCTYPE`. ``` ## Width/height of the document -Theoretically, as the root document element is `documentElement.clientWidth/Height`, and it encloses all the content, we could measure its full size as `documentElement.scrollWidth/scrollHeight`. +Theoretically, as the root document element is `document.documentElement`, and it encloses all the content, we could measure the document's full size as `document.documentElement.scrollWidth/scrollHeight`. -These properties work well for regular elements. But for the whole page these properties do not work as intended. In Chrome/Safari/Opera if there's no scroll, then `documentElement.scrollHeight` may be even less than `documentElement.clientHeight`! For regular elements that's a nonsense. +But on that element, for the whole page, these properties do not work as intended. In Chrome/Safari/Opera, if there's no scroll, then `documentElement.scrollHeight` may be even less than `documentElement.clientHeight`! Weird, right? -To have a reliable result on the full document height, we should take the maximum of these properties: +To reliably obtain the full document height, we should take the maximum of these properties: ```js run let scrollHeight = Math.max( @@ -60,11 +60,11 @@ Why so? Better don't ask. These inconsistencies come from ancient times, not a " ## Get the current scroll [#page-scroll] -Regular elements have their current scroll state in `elem.scrollLeft/scrollTop`. +DOM elements have their current scroll state in their `scrollLeft/scrollTop` properties. -What's with the page? Most browsers provide `documentElement.scrollLeft/Top` for the document scroll, but Chrome/Safari/Opera have bugs (like [157855](https://code.google.com/p/chromium/issues/detail?id=157855), [106133](https://bugs.webkit.org/show_bug.cgi?id=106133)) and we should use `document.body` instead of `document.documentElement` there. +For document scroll, `document.documentElement.scrollLeft/scrollTop` works in most browsers, except older WebKit-based ones, like Safari (bug [5991](https://bugs.webkit.org/show_bug.cgi?id=5991)), where we should use `document.body` instead of `document.documentElement`. -Luckily, we don't have to remember these peculiarities at all, because of the special properties `window.pageXOffset/pageYOffset`: +Luckily, we don't have to remember these peculiarities at all, because the scroll is available in the special properties, `window.pageXOffset/pageYOffset`: ```js run alert('Current scroll from the top: ' + window.pageYOffset); @@ -73,30 +73,34 @@ alert('Current scroll from the left: ' + window.pageXOffset); These properties are read-only. +```smart header="Also available as `window` properties `scrollX` and `scrollY`" +For historical reasons, both properties exist, but they are the same: +- `window.pageXOffset` is an alias of `window.scrollX`. +- `window.pageYOffset` is an alias of `window.scrollY`. +``` + ## Scrolling: scrollTo, scrollBy, scrollIntoView [#window-scroll] ```warn -To scroll the page from JavaScript, its DOM must be fully built. +To scroll the page with JavaScript, its DOM must be fully built. -For instance, if we try to scroll the page from the script in `<head>`, it won't work. +For instance, if we try to scroll the page with a script in `<head>`, it won't work. ``` Regular elements can be scrolled by changing `scrollTop/scrollLeft`. -We can do the same for the page: -- For all browsers except Chrome/Safari/Opera: modify `document.documentElement.scrollTop/Left`. -- In Chrome/Safari/Opera: use `document.body.scrollTop/Left` instead. +We can do the same for the page using `document.documentElement.scrollTop/scrollLeft` (except Safari, where `document.body.scrollTop/Left` should be used instead). -It should work, but smells like cross-browser incompatibilities. Not good. Fortunately, there's a simpler, more universal solution: special methods [window.scrollBy(x,y)](mdn:api/Window/scrollBy) and [window.scrollTo(pageX,pageY)](mdn:api/Window/scrollTo). +Alternatively, there's a simpler, universal solution: special methods [window.scrollBy(x,y)](mdn:api/Window/scrollBy) and [window.scrollTo(pageX,pageY)](mdn:api/Window/scrollTo). -- The method `scrollBy(x,y)` scrolls the page relative to its current position. For instance, `scrollBy(0,10)` scrolls the page `10px` down. +- The method `scrollBy(x,y)` scrolls the page *relative to its current position*. For instance, `scrollBy(0,10)` scrolls the page `10px` down. ```online The button below demonstrates this: <button onclick="window.scrollBy(0,10)">window.scrollBy(0,10)</button> ``` -- The method `scrollTo(pageX,pageY)` scrolls the page relative to the document's top-left corner. It's like setting `scrollLeft/scrollTop`. +- The method `scrollTo(pageX,pageY)` scrolls the page *to absolute coordinates*, so that the top-left corner of the visible part has coordinates `(pageX, pageY)` relative to the document's top-left corner. It's like setting `scrollLeft/scrollTop`. To scroll to the very beginning, we can use `scrollTo(0,0)`. @@ -108,50 +112,50 @@ These methods work for all browsers the same way. ## scrollIntoView -For completeness, let's cover one more method: [elem.scrollIntoView(top)](mdn:api/Element/scrollIntoView). +For completeness, let's cover one more method: [elem.scrollIntoView(top)](mdn:api/Element/scrollIntoView). The call to `elem.scrollIntoView(top)` scrolls the page to make `elem` visible. It has one argument: -- if `top=true` (that's the default), then the page will be scrolled to make `elem` appear on the top of the window. The upper edge of the element is aligned with the window top. -- if `top=false`, then the page scrolls to make `elem` appear at the bottom. The bottom edge of the element is aligned with the window bottom. +- If `top=true` (that's the default), then the page will be scrolled to make `elem` appear on the top of the window. The upper edge of the element will be aligned with the window top. +- If `top=false`, then the page scrolls to make `elem` appear at the bottom. The bottom edge of the element will be aligned with the window bottom. ```online -The button below scrolls the page to make itself show at the window top: +The button below scrolls the page to position itself at the window top: <button onclick="this.scrollIntoView()">this.scrollIntoView()</button> -And this button scrolls the page to show it at the bottom: +And this button scrolls the page to position itself at the bottom: <button onclick="this.scrollIntoView(false)">this.scrollIntoView(false)</button> ``` ## Forbid the scrolling -Sometimes we need to make the document "unscrollable". For instance, when we need to cover it with a large message requiring immediate attention, and we want the visitor to interact with that message, not with the document. +Sometimes we need to make the document "unscrollable". For instance, when we need to cover the page with a large message requiring immediate attention, and we want the visitor to interact with that message, not with the document. -To make the document unscrollable, it's enough to set `document.body.style.overflow = "hidden"`. The page will freeze on its current scroll. +To make the document unscrollable, it's enough to set `document.body.style.overflow = "hidden"`. The page will "freeze" at its current scroll position. ```online Try it: -<button onclick="document.body.style.overflow = 'hidden'">`document.body.style.overflow = 'hidden'`</button> +<button onclick="document.body.style.overflow = 'hidden'">document.body.style.overflow = 'hidden'</button> -<button onclick="document.body.style.overflow = ''">`document.body.style.overflow = ''`</button> +<button onclick="document.body.style.overflow = ''">document.body.style.overflow = ''</button> -The first button freezes the scroll, the second one resumes it. +The first button freezes the scroll, while the second one releases it. ``` -We can use the same technique to "freeze" the scroll for other elements, not just for `document.body`. +We can use the same technique to freeze the scroll for other elements, not just for `document.body`. -The drawback of the method is that the scrollbar disappears. If it occupied some space, then that space is now free, and the content "jumps" to fill it. +The drawback of the method is that the scrollbar disappears. If it occupied some space, then that space is now free and the content "jumps" to fill it. -That looks a bit odd, but can be worked around if we compare `clientWidth` before and after the freeze, and if it increased (the scrollbar disappeared) then add `padding` to `document.body` in place of the scrollbar, to keep the content width the same. +That looks a bit odd, but can be worked around if we compare `clientWidth` before and after the freeze. If it increased (the scrollbar disappeared), then add `padding` to `document.body` in place of the scrollbar to keep the content width the same. ## Summary Geometry: -- Width/height of the visible part of the document (content area width/height): `document.documentElement.clientWidth/Height` +- Width/height of the visible part of the document (content area width/height): `document.documentElement.clientWidth/clientHeight` - Width/height of the whole document, with the scrolled out part: ```js diff --git a/2-ui/1-document/10-size-and-scroll-window/document-client-width-height.svg b/2-ui/1-document/10-size-and-scroll-window/document-client-width-height.svg index 65e77ae80..0add5cbdd 100644 --- a/2-ui/1-document/10-size-and-scroll-window/document-client-width-height.svg +++ b/2-ui/1-document/10-size-and-scroll-window/document-client-width-height.svg @@ -1 +1,5 @@ -<svg xmlns="http://www.w3.org/2000/svg" width="508" height="203" viewBox="0 0 508 203"><defs><style>@import url(https://fonts.googleapis.com/css?family=Open+Sans:bold,italic,bolditalic%7CPT+Mono);@font-face{font-family:'PT Mono';font-weight:700;font-style:normal;src:local('PT MonoBold'),url(/font/PTMonoBold.woff2) format('woff2'),url(/font/PTMonoBold.woff) format('woff'),url(/font/PTMonoBold.ttf) format('truetype')}</style></defs><g id="dom" fill="none" fill-rule="evenodd" stroke="none" stroke-width="1"><g id="document-client-width-height.svg"><g id="noun_69008_cc" fill="#DBAF88" transform="translate(275 8)"><path id="Shape" d="M179.188 145H3.813C1.708 145 0 143.369 0 141.375V3.625C0 1.631 1.708 0 3.813 0h175.375C181.284 0 183 1.631 183 3.625v137.75c0 1.994-1.716 3.625-3.813 3.625zM7.625 137.75h167.75V7.25H7.625v130.5z"/><path id="Shape" d="M175.375 36.25H7.625c-2.104 0-3.813-1.631-3.813-3.625S5.521 29 7.626 29h167.75c2.097 0 3.813 1.631 3.813 3.625s-1.716 3.625-3.813 3.625zM61.32 126.578c-1.266 0-2.508-.595-3.233-1.682L34.892 89.849a3.486 3.486 0 01.16-4.082l23.195-29.906c1.25-1.631 3.63-1.964 5.33-.746 1.693 1.188 2.059 3.458.8 5.067l-21.646 27.92 21.807 32.951c1.12 1.69.587 3.937-1.197 4.988a3.936 3.936 0 01-2.02.537zM122 126.578a3.802 3.802 0 01-2.028-.559c-1.784-1.058-2.326-3.298-1.197-4.988l21.807-32.95-21.655-27.928c-1.25-1.617-.892-3.878.8-5.067 1.694-1.197 4.08-.849 5.33.76l23.188 29.907a3.462 3.462 0 01.16 4.082L125.21 124.88c-.709 1.102-1.944 1.697-3.21 1.697zM76.25 119.937a4.07 4.07 0 01-1.86-.457c-1.838-.979-2.494-3.183-1.465-4.959l30.18-51.359c1.03-1.755 3.34-2.385 5.2-1.37 1.83.978 2.486 3.175 1.457 4.937l-30.18 51.359c-.701 1.182-1.998 1.849-3.332 1.849zM22.875 18.125c0 2.003-1.706 3.625-3.813 3.625-2.106 0-3.812-1.622-3.812-3.625s1.706-3.625 3.813-3.625c2.106 0 3.812 1.622 3.812 3.625zM38.125 18.125c0 2.003-1.706 3.625-3.813 3.625-2.106 0-3.812-1.622-3.812-3.625s1.706-3.625 3.813-3.625c2.106 0 3.812 1.622 3.812 3.625zM53.375 18.125c0 2.003-1.706 3.625-3.813 3.625-2.106 0-3.812-1.622-3.812-3.625s1.706-3.625 3.813-3.625c2.106 0 3.812 1.622 3.812 3.625z"/></g><text id="documentElement.clie" fill="#AF6E24" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="12" y="101">documentElement.clientHeight</tspan></text><text id="documentElement.clie" fill="#AF6E24" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="257" y="195">documentElement.clientWidth</tspan></text><path id="Line-3-Copy" fill="#C06334" fill-rule="nonzero" d="M431.025 158.653l19 9.5-19 9.5-.001-8h-132v8l-19-9.5 19-9.5v8h132v-8z"/><path id="Line" fill="#C06334" fill-rule="nonzero" d="M256.5 45l9.5 19-8-.001v64l8 .001-9.5 19-9.5-19 8-.001v-64L247 64l9.5-19z"/></g></g></svg> \ No newline at end of file +<<<<<<< HEAD +<svg xmlns="http://www.w3.org/2000/svg" width="508" height="203" viewBox="0 0 508 203"><defs><style>@import url(https://fonts.googleapis.com/css?family=Open+Sans:bold,italic,bolditalic%7CPT+Mono);@font-face{font-family:'PT Mono';font-weight:700;font-style:normal;src:local('PT MonoBold'),url(/font/PTMonoBold.woff2) format('woff2'),url(/font/PTMonoBold.woff) format('woff'),url(/font/PTMonoBold.ttf) format('truetype')}</style></defs><g id="dom" fill="none" fill-rule="evenodd" stroke="none" stroke-width="1"><g id="document-client-width-height.svg"><g id="noun_69008_cc" fill="#DBAF88" transform="translate(275 8)"><path id="Shape" d="M179.188 145H3.813C1.708 145 0 143.369 0 141.375V3.625C0 1.631 1.708 0 3.813 0h175.375C181.284 0 183 1.631 183 3.625v137.75c0 1.994-1.716 3.625-3.813 3.625zM7.625 137.75h167.75V7.25H7.625v130.5z"/><path id="Shape" d="M175.375 36.25H7.625c-2.104 0-3.813-1.631-3.813-3.625S5.521 29 7.626 29h167.75c2.097 0 3.813 1.631 3.813 3.625s-1.716 3.625-3.813 3.625zM61.32 126.578c-1.266 0-2.508-.595-3.233-1.682L34.892 89.849a3.486 3.486 0 01.16-4.082l23.195-29.906c1.25-1.631 3.63-1.964 5.33-.746 1.693 1.188 2.059 3.458.8 5.067l-21.646 27.92 21.807 32.951c1.12 1.69.587 3.937-1.197 4.988a3.936 3.936 0 01-2.02.537zM122 126.578a3.802 3.802 0 01-2.028-.559c-1.784-1.058-2.326-3.298-1.197-4.988l21.807-32.95-21.655-27.928c-1.25-1.617-.892-3.878.8-5.067 1.694-1.197 4.08-.849 5.33.76l23.188 29.907a3.462 3.462 0 01.16 4.082L125.21 124.88c-.709 1.102-1.944 1.697-3.21 1.697zM76.25 119.937a4.07 4.07 0 01-1.86-.457c-1.838-.979-2.494-3.183-1.465-4.959l30.18-51.359c1.03-1.755 3.34-2.385 5.2-1.37 1.83.978 2.486 3.175 1.457 4.937l-30.18 51.359c-.701 1.182-1.998 1.849-3.332 1.849zM22.875 18.125c0 2.003-1.706 3.625-3.813 3.625-2.106 0-3.812-1.622-3.812-3.625s1.706-3.625 3.813-3.625c2.106 0 3.812 1.622 3.812 3.625zM38.125 18.125c0 2.003-1.706 3.625-3.813 3.625-2.106 0-3.812-1.622-3.812-3.625s1.706-3.625 3.813-3.625c2.106 0 3.812 1.622 3.812 3.625zM53.375 18.125c0 2.003-1.706 3.625-3.813 3.625-2.106 0-3.812-1.622-3.812-3.625s1.706-3.625 3.813-3.625c2.106 0 3.812 1.622 3.812 3.625z"/></g><text id="documentElement.clie" fill="#AF6E24" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="12" y="101">documentElement.clientHeight</tspan></text><text id="documentElement.clie" fill="#AF6E24" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="257" y="195">documentElement.clientWidth</tspan></text><path id="Line-3-Copy" fill="#C06334" fill-rule="nonzero" d="M431.025 158.653l19 9.5-19 9.5-.001-8h-132v8l-19-9.5 19-9.5v8h132v-8z"/><path id="Line" fill="#C06334" fill-rule="nonzero" d="M256.5 45l9.5 19-8-.001v64l8 .001-9.5 19-9.5-19 8-.001v-64L247 64l9.5-19z"/></g></g></svg> +======= +<svg xmlns="http://www.w3.org/2000/svg" width="508" height="203" viewBox="0 0 508 203"><defs><style>@import url(https://fonts.googleapis.com/css?family=Open+Sans:bold,italic,bolditalic%7CPT+Mono);@font-face{font-family:'PT Mono';font-weight:700;font-style:normal;src:local('PT MonoBold'),url(/font/PTMonoBold.woff2) format('woff2'),url(/font/PTMonoBold.woff) format('woff'),url(/font/PTMonoBold.ttf) format('truetype')}</style></defs><g id="dom" fill="none" fill-rule="evenodd" stroke="none" stroke-width="1"><g id="document-client-width-height.svg"><g id="noun_69008_cc" fill="#DBAF88" transform="translate(275 8)"><path id="Shape" d="M179.188 145H3.813C1.708 145 0 143.369 0 141.375V3.625C0 1.631 1.708 0 3.813 0h175.375C181.284 0 183 1.631 183 3.625v137.75c0 1.994-1.716 3.625-3.813 3.625zM7.625 137.75h167.75V7.25H7.625v130.5z"/><path id="Shape" d="M175.375 36.25H7.625c-2.104 0-3.813-1.631-3.813-3.625S5.521 29 7.626 29h167.75c2.097 0 3.813 1.631 3.813 3.625s-1.716 3.625-3.813 3.625zM61.32 126.578c-1.266 0-2.508-.595-3.233-1.682L34.892 89.849a3.486 3.486 0 01.16-4.082l23.195-29.906c1.25-1.631 3.63-1.964 5.33-.746 1.693 1.188 2.059 3.458.8 5.067l-21.646 27.92 21.807 32.951c1.12 1.69.587 3.937-1.197 4.988a3.936 3.936 0 01-2.02.537zM122 126.578a3.802 3.802 0 01-2.028-.559c-1.784-1.058-2.326-3.298-1.197-4.988l21.807-32.95-21.655-27.928c-1.25-1.617-.892-3.878.8-5.067 1.694-1.197 4.08-.849 5.33.76l23.188 29.907a3.462 3.462 0 01.16 4.082L125.21 124.88c-.709 1.102-1.944 1.697-3.21 1.697zM76.25 119.937a4.07 4.07 0 01-1.86-.457c-1.838-.979-2.494-3.183-1.465-4.959l30.18-51.359c1.03-1.755 3.34-2.385 5.2-1.37 1.83.978 2.486 3.175 1.457 4.937l-30.18 51.359c-.701 1.182-1.998 1.849-3.332 1.849zM22.875 18.125c0 2.003-1.706 3.625-3.813 3.625-2.106 0-3.812-1.622-3.812-3.625s1.706-3.625 3.813-3.625c2.106 0 3.812 1.622 3.812 3.625zM38.125 18.125c0 2.003-1.706 3.625-3.813 3.625-2.106 0-3.812-1.622-3.812-3.625s1.706-3.625 3.813-3.625c2.106 0 3.812 1.622 3.812 3.625zM53.375 18.125c0 2.003-1.706 3.625-3.813 3.625-2.106 0-3.812-1.622-3.812-3.625s1.706-3.625 3.813-3.625c2.106 0 3.812 1.622 3.812 3.625z"/></g><text id="documentElement.clie" fill="#AF6E24" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="12" y="101">documentElement.clientHeight</tspan></text><text id="documentElement.clie" fill="#AF6E24" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="257" y="195">documentElement.clientWidth</tspan></text><path id="Line-3-Copy" fill="#C06334" fill-rule="nonzero" d="M299.025 177.653l-19-9.5 19-9.5-.001 8h132v-8l19 9.5-19 9.5v-8h-132v8z" transform="matrix(-1 0 0 1 730.025 0)"/><path id="Line" fill="#C06334" fill-rule="nonzero" d="M256.5 45l9.5 19-8-.001v64l8 .001-9.5 19-9.5-19 8-.001v-64L247 64l9.5-19z"/></g></g></svg> +>>>>>>> 540d753e90789205fc6e75c502f68382c87dea9b diff --git a/2-ui/1-document/11-coordinates/1-find-point-coordinates/solution.md b/2-ui/1-document/11-coordinates/1-find-point-coordinates/solution.md index f3547096f..4101d4915 100644 --- a/2-ui/1-document/11-coordinates/1-find-point-coordinates/solution.md +++ b/2-ui/1-document/11-coordinates/1-find-point-coordinates/solution.md @@ -1,6 +1,6 @@ # Outer corners -Outer corners are basically what we get from [elem.getBoundingClientRect()](https://developer.mozilla.org/en-US/docs/DOM/element.getBoundingClientRect). +Outer corners are basically what we get from [elem.getBoundingClientRect()](https://developer.mozilla.org/en-US/docs/DOM/element.getBoundingClientRect). Coordinates of the upper-left corner `answer1` and the bottom-right corner `answer2`: diff --git a/2-ui/1-document/11-coordinates/2-position-at/source.view/index.html b/2-ui/1-document/11-coordinates/2-position-at/source.view/index.html index 730f815d9..675573450 100755 --- a/2-ui/1-document/11-coordinates/2-position-at/source.view/index.html +++ b/2-ui/1-document/11-coordinates/2-position-at/source.view/index.html @@ -41,7 +41,13 @@ * relative to the anchor element. */ function showNote(anchor, position, html) { - // ... your code ... + + let note = document.createElement('div'); + note.className = "note"; + note.innerHTML = html; + document.body.append(note); + + positionAt(anchor, position, note); } // test it diff --git a/2-ui/1-document/11-coordinates/2-position-at/task.md b/2-ui/1-document/11-coordinates/2-position-at/task.md index 1d4f06771..3aaa47f03 100644 --- a/2-ui/1-document/11-coordinates/2-position-at/task.md +++ b/2-ui/1-document/11-coordinates/2-position-at/task.md @@ -4,12 +4,15 @@ importance: 5 # Show a note near the element -Create a function `positionAt(anchor, position, elem)` that positions `elem`, depending on `position` either at the top (`"top"`), right (`"right"`) or bottom (`"bottom"`) of the element `anchor`. +Create a function `positionAt(anchor, position, elem)` that positions `elem`, depending on `position` near `anchor` element. -Call it inside the function `showNote(anchor, position, html)` that shows an element with the class `"note"` and the text `html` at the given position near the anchor. +The `position` must be a string with any one of 3 values: +- `"top"` - position `elem` right above `anchor` +- `"right"` - position `elem` immediately at the right of `anchor` +- `"bottom"` - position `elem` right below `anchor` -Show the notes like here: +It's used inside function `showNote(anchor, position, html)`, provided in the task source code, that creates a "note" element with given `html` and shows it at the given `position` near the `anchor`. -[iframe src="solution" height="350" border="1" link] +Here's the demo of notes: -P.S. The note should have `position:fixed` for this task. +[iframe src="solution" height="350" border="1" link] diff --git a/2-ui/1-document/11-coordinates/3-position-at-absolute/solution.view/index.html b/2-ui/1-document/11-coordinates/3-position-at-absolute/solution.view/index.html index d627bee84..56c95d5ec 100644 --- a/2-ui/1-document/11-coordinates/3-position-at-absolute/solution.view/index.html +++ b/2-ui/1-document/11-coordinates/3-position-at-absolute/solution.view/index.html @@ -28,8 +28,8 @@ let box = elem.getBoundingClientRect(); return { - top: box.top + pageYOffset, - left: box.left + pageXOffset + top: box.top + window.pageYOffset, + left: box.left + window.pageXOffset }; } diff --git a/2-ui/1-document/11-coordinates/4-position-inside-absolute/solution.view/index.html b/2-ui/1-document/11-coordinates/4-position-inside-absolute/solution.view/index.html index 7e841397b..b89db3790 100644 --- a/2-ui/1-document/11-coordinates/4-position-inside-absolute/solution.view/index.html +++ b/2-ui/1-document/11-coordinates/4-position-inside-absolute/solution.view/index.html @@ -26,8 +26,8 @@ let box = elem.getBoundingClientRect(); return { - top: box.top + pageYOffset, - left: box.left + pageXOffset + top: box.top + window.pageYOffset, + left: box.left + window.pageXOffset }; } diff --git a/2-ui/1-document/11-coordinates/article.md b/2-ui/1-document/11-coordinates/article.md index 61b5161eb..fc605c414 100644 --- a/2-ui/1-document/11-coordinates/article.md +++ b/2-ui/1-document/11-coordinates/article.md @@ -4,58 +4,102 @@ To move elements around we should be familiar with coordinates. Most JavaScript methods deal with one of two coordinate systems: -1. Relative to the window(or another viewport) top/left. -2. Relative to the document top/left. +1. **Relative to the window** - similar to `position:fixed`, calculated from the window top/left edge. + - we'll denote these coordinates as `clientX/clientY`, the reasoning for such name will become clear later, when we study event properties. +2. **Relative to the document** - similar to `position:absolute` in the document root, calculated from the document top/left edge. + - we'll denote them `pageX/pageY`. -It's important to understand the difference and which type is where. +When the page is scrolled to the very beginning, so that the top/left corner of the window is exactly the document top/left corner, these coordinates equal each other. But after the document shifts, window-relative coordinates of elements change, as elements move across the window, while document-relative coordinates remain the same. -## Window coordinates: getBoundingClientRect +On this picture we take a point in the document and demonstrate its coordinates before the scroll (left) and after it (right): -Window coordinates start at the upper-left corner of the window. + -The method `elem.getBoundingClientRect()` returns window coordinates for `elem` as an object with properties: +When the document scrolled: +- `pageY` - document-relative coordinate stayed the same, it's counted from the document top (now scrolled out). +- `clientY` - window-relative coordinate did change (the arrow became shorter), as the same point became closer to window top. -- `top` -- Y-coordinate for the top element edge, -- `left` -- X-coordinate for the left element edge, -- `right` -- X-coordinate for the right element edge, -- `bottom` -- Y-coordinate for the bottom element edge. +## Element coordinates: getBoundingClientRect -Like this: +The method `elem.getBoundingClientRect()` returns window coordinates for a minimal rectangle that encloses `elem` as an object of built-in [DOMRect](https://www.w3.org/TR/geometry-1/#domrect) class. - +Main `DOMRect` properties: +- `x/y` -- X/Y-coordinates of the rectangle origin relative to window, +- `width/height` -- width/height of the rectangle (can be negative). -Window coordinates do not take the scrolled out part of the document into account, they are calculated from the window's upper-left corner. +Additionally, there are derived properties: -In other words, when we scroll the page, the element goes up or down, *its window coordinates change*. That's very important. +- `top/bottom` -- Y-coordinate for the top/bottom rectangle edge, +- `left/right` -- X-coordinate for the left/right rectangle edge. ```online -Click the button to see its window coordinates: +For instance click this button to see its window coordinates: -<input id="brTest" type="button" value="Show button.getBoundingClientRect() for this button" onclick='showRect(this)'/> +<p><input id="brTest" type="button" style="max-width: 90vw;" value="Get coordinates using button.getBoundingClientRect() for this button" onclick='showRect(this)'/></p> <script> function showRect(elem) { let r = elem.getBoundingClientRect(); - alert("{top:"+r.top+", left:"+r.left+", right:"+r.right+", bottom:"+ r.bottom + "}"); + alert(`x:${r.x} +y:${r.y} +width:${r.width} +height:${r.height} +top:${r.top} +bottom:${r.bottom} +left:${r.left} +right:${r.right} +`); } </script> -If you scroll the page, the button position changes, and window coordinates as well. +If you scroll the page and repeat, you'll notice that as window-relative button position changes, its window coordinates (`y/top/bottom` if you scroll vertically) change as well. ``` -Also: +Here's the picture of `elem.getBoundingClientRect()` output: -- Coordinates may be decimal fractions. That's normal, internally browser uses them for calculations. We don't have to round them when setting to `style.position.left/top`, the browser is fine with fractions. -- Coordinates may be negative. For instance, if the page is scrolled down and the top `elem` is now above the window. Then, `elem.getBoundingClientRect().top` is negative. -- Some browsers (like Chrome) provide additional properties, `width` and `height` of the element that invoked the method to `getBoundingClientRect` as the result. We can also get them by subtraction: `height=bottom-top`, `width=right-left`. + -```warn header="Coordinates right/bottom are different from CSS properties" -If we compare window coordinates versus CSS positioning, then there are obvious similarities to `position:fixed`. The positioning of an element is also relative to the viewport. +As you can see, `x/y` and `width/height` fully describe the rectangle. Derived properties can be easily calculated from them: -But in CSS, the `right` property means the distance from the right edge, and the `bottom` property means the distance from the bottom edge. +- `left = x` +- `top = y` +- `right = x + width` +- `bottom = y + height` -If we just look at the picture above, we can see that in JavaScript it is not so. All window coordinates are counted from the upper-left corner, including these ones. +Please note: + +- Coordinates may be decimal fractions, such as `10.5`. That's normal, internally browser uses fractions in calculations. We don't have to round them when setting to `style.left/top`. +- Coordinates may be negative. For instance, if the page is scrolled so that `elem` is now above the window, then `elem.getBoundingClientRect().top` is negative. + +```smart header="Why derived properties are needed? Why does `top/left` exist if there's `x/y`?" +Mathematically, a rectangle is uniquely defined with its starting point `(x,y)` and the direction vector `(width,height)`. So the additional derived properties are for convenience. + +Technically it's possible for `width/height` to be negative, that allows for "directed" rectangle, e.g. to represent mouse selection with properly marked start and end. + +Negative `width/height` values mean that the rectangle starts at its bottom-right corner and then "grows" left-upwards. + +Here's a rectangle with negative `width` and `height` (e.g. `width=-200`, `height=-100`): + + + +As you can see, `left/top` do not equal `x/y` in such case. + +In practice though, `elem.getBoundingClientRect()` always returns positive width/height, here we mention negative `width/height` only for you to understand why these seemingly duplicate properties are not actually duplicates. +``` + +```warn header="Internet Explorer: no support for `x/y`" +Internet Explorer doesn't support `x/y` properties for historical reasons. + +So we can either make a polyfill (add getters in `DomRect.prototype`) or just use `top/left`, as they are always the same as `x/y` for positive `width/height`, in particular in the result of `elem.getBoundingClientRect()`. +``` + +```warn header="Coordinates right/bottom are different from CSS position properties" +There are obvious similarities between window-relative coordinates and CSS `position:fixed`. + +But in CSS positioning, `right` property means the distance from the right edge, and `bottom` property means the distance from the bottom edge. + +If we just look at the picture above, we can see that in JavaScript it is not so. All window coordinates are counted from the top-left corner, including these ones. ``` ## elementFromPoint(x, y) [#elementFromPoint] @@ -87,8 +131,6 @@ The method `document.elementFromPoint(x,y)` only works if `(x,y)` are inside the If any of the coordinates is negative or exceeds the window width/height, then it returns `null`. -In most cases such behavior is not a problem, but we should keep that in mind. - Here's a typical error that may occur if we don't check for it: ```js @@ -100,11 +142,11 @@ elem.style.background = ''; // Error! ``` ```` -## Using for position:fixed +## Using for "fixed" positioning -Most of time we need coordinates to position something. In CSS, to position an element relative to the viewport we use `position:fixed` together with `left/top` (or `right/bottom`). +Most of time we need coordinates in order to position something. -We can use `getBoundingClientRect` to get coordinates of an element, and then to show something near it. +To show something near an element, we can use `getBoundingClientRect` to get its coordinates, and then CSS `position` together with `left/top` (or `right/bottom`). For instance, the function `createMessageUnder(elem, html)` below shows the message under `elem`: @@ -151,7 +193,7 @@ The reason is obvious: the message element relies on `position:fixed`, so it rem To change that, we need to use document-based coordinates and `position:absolute`. -## Document coordinates +## Document coordinates [#getCoords] Document-relative coordinates start from the upper-left corner of the document, not the window. @@ -159,24 +201,6 @@ In CSS, window coordinates correspond to `position:fixed`, while document coordi We can use `position:absolute` and `top/left` to put something at a certain place of the document, so that it remains there during a page scroll. But we need the right coordinates first. -For clarity we'll call window coordinates `(clientX,clientY)` and document coordinates `(pageX,pageY)`. - -When the page is not scrolled, then window coordinate and document coordinates are actually the same. Their zero points match too: - - - -And if we scroll it, then `(clientX,clientY)` change, because they are relative to the window, but `(pageX,pageY)` remain the same. - -Here's the same page after the vertical scroll: - - - -- `clientY` of the header `"From today's featured article"` became `0`, because the element is now on window top. -- `clientX` didn't change, as we didn't scroll horizontally. -- `pageX` and `pageY` coordinates of the element are still the same, because they are relative to the document. - -## Getting document coordinates [#getCoords] - There's no standard method to get the document coordinates of an element. But it's easy to write it. The two coordinate systems are connected by the formula: @@ -191,12 +215,34 @@ function getCoords(elem) { let box = elem.getBoundingClientRect(); return { - top: box.top + pageYOffset, - left: box.left + pageXOffset + top: box.top + window.pageYOffset, + right: box.right + window.pageXOffset, + bottom: box.bottom + window.pageYOffset, + left: box.left + window.pageXOffset }; } ``` +If in the example above we used it with `position:absolute`, then the message would stay near the element on scroll. + +The modified `createMessageUnder` function: + +```js +function createMessageUnder(elem, html) { + let message = document.createElement('div'); + message.style.cssText = "*!*position:absolute*/!*; color: red"; + + let coords = *!*getCoords(elem);*/!* + + message.style.left = coords.left + "px"; + message.style.top = coords.bottom + "px"; + + message.innerHTML = html; + + return message; +} +``` + ## Summary Any point on the page has coordinates: @@ -206,4 +252,4 @@ Any point on the page has coordinates: Window coordinates are great to use with `position:fixed`, and document coordinates do well with `position:absolute`. -Both coordinate systems have their "pro" and "contra", there are times we need one or the other one, just like CSS `position` `absolute` and `fixed`. +Both coordinate systems have their pros and cons; there are times we need one or the other one, just like CSS `position` `absolute` and `fixed`. diff --git a/2-ui/1-document/11-coordinates/coordinates-negative.svg b/2-ui/1-document/11-coordinates/coordinates-negative.svg new file mode 100644 index 000000000..4f2e78687 --- /dev/null +++ b/2-ui/1-document/11-coordinates/coordinates-negative.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" width="521" height="355" viewBox="0 0 521 355"><defs><style>@import url(https://fonts.googleapis.com/css?family=Open+Sans:bold,italic,bolditalic%7CPT+Mono);@font-face{font-family:'PT Mono';font-weight:700;font-style:normal;src:local('PT MonoBold'),url(/font/PTMonoBold.woff2) format('woff2'),url(/font/PTMonoBold.woff) format('woff'),url(/font/PTMonoBold.ttf) format('truetype')}</style></defs><defs><filter id="filter-1" width="118%" height="209.1%" x="-9%" y="-54.5%" filterUnits="objectBoundingBox"><feGaussianBlur in="SourceGraphic" stdDeviation="4"/></filter></defs><g id="dom" fill="none" fill-rule="evenodd" stroke="none" stroke-width="1"><g id="coordinates-negative.svg"><g id="noun_69008_cc" fill="#DBAF88" transform="translate(13 11)"><path id="Shape" d="M455.313 330H9.688C4.34 330 0 326.288 0 321.75V8.25C0 3.713 4.34 0 9.688 0h445.625C460.64 0 465 3.712 465 8.25v313.5c0 4.538-4.36 8.25-9.688 8.25zM9.432 318.939h444.25V11.06H9.432V318.94z"/><path id="Shape" d="M19.674 46C14.334 46 10 44.875 10 43.5s4.334-2.5 9.674-2.5h425.652c5.32 0 9.674 1.125 9.674 2.5s-4.353 2.5-9.674 2.5H19.674zM31 27.5c0 3.039-2.461 5.5-5.5 5.5a5.498 5.498 0 01-5.5-5.5c0-3.039 2.461-5.5 5.5-5.5s5.5 2.461 5.5 5.5zM59 27.5c0 3.039-2.461 5.5-5.5 5.5a5.498 5.498 0 01-5.5-5.5c0-3.039 2.461-5.5 5.5-5.5s5.5 2.461 5.5 5.5zM87 27.5c0 3.039-2.461 5.5-5.5 5.5a5.498 5.498 0 01-5.5-5.5c0-3.039 2.461-5.5 5.5-5.5s5.5 2.461 5.5 5.5z"/></g><text id="bottom" fill="#7E7C7B" font-family="PTMono-Bold, PT Mono" font-size="14" font-weight="bold"><tspan x="414" y="196">bottom</tspan></text><path id="Line-30-Copy-2" stroke="#C06334" stroke-dasharray="3,6" stroke-linecap="square" stroke-width="2" d="M392.5 290v37"/><path id="Line-29-Copy" stroke="#C06334" stroke-dasharray="3,6" stroke-linecap="square" stroke-width="2" d="M394 288h69"/><text id="(x,y)" fill="#C06334" font-family="PTMono-Bold, PT Mono" font-size="14" font-weight="bold"><tspan x="395" y="305">(x,y)</tspan></text><text id="(x,y)-copy" fill="#C06334" font-family="PTMono-Bold, PT Mono" font-size="14" font-weight="bold"><tspan x="395" y="305">(x,y)</tspan></text><text id="left" fill="#7E7C7B" font-family="PTMono-Bold, PT Mono" font-size="14" font-weight="bold"><tspan x="50" y="129">left</tspan></text><path id="Line-Copy" fill="#7E7C7B" fill-rule="nonzero" d="M410 56.5v213h8l-9.5 19-9.5-19h8v-213h3z"/><text id="right" fill="#7E7C7B" font-family="PTMono-Bold, PT Mono" font-size="14" font-weight="bold"><tspan x="188" y="323">right</tspan></text><path id="Line-3-Copy-2" fill="#7E7C7B" fill-rule="nonzero" d="M371.498 295.5l19 9.5-19 9.5-.001-8H21.502v-3h349.995v-8z"/><path id="Rectangle-1" fill="#DBAF88" d="M393 113v175H118V113h275zm-10.643 10H129.015v155h253.342V123z"/><text id="Introduction-This-Ec" fill="#643B0C" font-family="OpenSans-Bold, Open Sans" font-size="16" font-weight="bold" opacity=".7"><tspan x="139" y="148">Introduction</tspan> <tspan x="139" y="176" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">This Ecma Standard is based on </tspan> <tspan x="139" y="195" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">several originating technologies, </tspan> <tspan x="139" y="214" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">the most well known being </tspan> <tspan x="139" y="233" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">JavaScript (Netscape) and JScript </tspan> <tspan x="139" y="252" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">(Microsoft). The language was </tspan> <tspan x="139" y="271" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">invented by Brendan Eich at </tspan></text><text id="top" fill="#7E7C7B" font-family="PTMono-Bold, PT Mono" font-size="14" font-weight="bold"><tspan x="125" y="90">top</tspan></text><path id="Line-3" fill="#7E7C7B" fill-rule="nonzero" d="M100.548 104.403l18.95 9.6-19.05 9.4.041-8.001-76.5-.402-1.5-.008.017-3 1.5.008 76.499.402.043-8z"/><path id="Line-2" fill="#C06334" fill-rule="nonzero" d="M118.076 113.232l21.132 2.162-4.288 6.754 255.882 162.436 1.266.804-1.608 2.532-1.266-.804-255.882-162.435-4.287 6.754-10.95-18.203z"/><path id="Line-3-Copy" fill="#7E7C7B" fill-rule="nonzero" d="M118.998 56.5V58L119 94.499h8l-9.498 19.001-9.501-19H116l-.002-36.5v-1.5h3z"/><g id="Group" transform="rotate(32.5 -148.357 454.177)"><path id="Rectangle" fill="#FFF" d="M0 0h133v22H0z" filter="url(#filter-1)"/><text id="(width,height)" fill="#C06334" font-family="PTMono-Bold, PT Mono" font-size="14" font-weight="bold"><tspan x="8.682" y="15.378">(width,height)</tspan></text></g></g></g></svg> \ No newline at end of file diff --git a/2-ui/1-document/11-coordinates/coordinates.svg b/2-ui/1-document/11-coordinates/coordinates.svg new file mode 100644 index 000000000..261ff6696 --- /dev/null +++ b/2-ui/1-document/11-coordinates/coordinates.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" width="521" height="411" viewBox="0 0 521 411"><defs><style>@import url(https://fonts.googleapis.com/css?family=Open+Sans:bold,italic,bolditalic%7CPT+Mono);@font-face{font-family:'PT Mono';font-weight:700;font-style:normal;src:local('PT MonoBold'),url(/font/PTMonoBold.woff2) format('woff2'),url(/font/PTMonoBold.woff) format('woff'),url(/font/PTMonoBold.ttf) format('truetype')}</style></defs><g id="dom" fill="none" fill-rule="evenodd" stroke="none" stroke-width="1"><g id="coordinates.svg"><g id="noun_69008_cc" fill="#DBAF88" transform="translate(13 11)"><path id="Shape" d="M490.563 386H10.438C4.676 386 0 381.658 0 376.35V9.65C0 4.342 4.676 0 10.438 0h480.125C496.303 0 501 4.343 501 9.65v366.7c0 5.308-4.697 9.65-10.438 9.65zm-480.4-12.939h478.642V12.94H10.162V373.06z"/><path id="Shape" d="M20.859 54.1c-5.753 0-10.422-1.147-10.422-2.55 0-1.402 4.67-2.55 10.422-2.55H479.4c5.732 0 10.422 1.148 10.422 2.55 0 1.403-4.69 2.55-10.422 2.55H20.86zM33.8 31.627a6.024 6.024 0 11-12.05 0 6.024 6.024 0 1112.05 0zM63.988 31.627a6.024 6.024 0 11-12.05 0 6.024 6.024 0 1112.05 0zM94.177 31.627a6.024 6.024 0 11-12.05 0 6.024 6.024 0 1112.05 0z"/></g><text id="height" fill="#C06334" font-family="PTMono-Bold, PT Mono" font-size="14" font-weight="bold"><tspan x="417" y="208">height</tspan></text><text id="bottom" fill="#7E7C7B" font-family="PTMono-Bold, PT Mono" font-size="14" font-weight="bold"><tspan x="451" y="311">bottom</tspan></text><path id="Line-28" stroke="#C06334" stroke-dasharray="3,6" stroke-linecap="square" stroke-width="2" d="M395 293h103"/><path id="Line-30" stroke="#C06334" stroke-dasharray="3,6" stroke-linecap="square" stroke-width="2" d="M392 296v74.5"/><path id="Line-30-Copy" stroke="#C06334" stroke-dasharray="3,6" stroke-linecap="square" stroke-width="2" d="M119 296v46"/><path id="Line-29" stroke="#C06334" stroke-dasharray="3,6" stroke-linecap="square" stroke-width="2" d="M396 120h30"/><text id="x" fill="#C06334" font-family="PTMono-Bold, PT Mono" font-size="14" font-weight="bold"><tspan x="62" y="113">x</tspan></text><text id="left" fill="#7E7C7B" font-family="PTMono-Bold, PT Mono" font-size="14" font-weight="bold"><tspan x="50" y="135">left</tspan></text><text id="y" fill="#C06334" font-family="PTMono-Bold, PT Mono" font-size="14" font-weight="bold"><tspan x="125" y="79">y</tspan></text><text id="width" fill="#C06334" font-family="PTMono-Bold, PT Mono" font-size="14" font-weight="bold"><tspan x="234" y="339">width</tspan></text><path id="Line" fill="#C06334" fill-rule="nonzero" d="M414 118.5V273h8l-9.5 19-9.5-19h8V118.5h3z"/><path id="Line-Copy" fill="#7E7C7B" fill-rule="nonzero" d="M476 65v208h8l-9.5 19-9.5-19h8V65h3z"/><path id="Line-2" fill="#C06334" fill-rule="nonzero" d="M371 309l19 9.5-19 9.5-.001-8H116v-3h254.999l.001-8z"/><path id="Line-3" fill="#C06334" fill-rule="nonzero" d="M100.05 109.903l18.95 9.6-19.05 9.4.042-8.001-76.5-.402-1.5-.008.016-3 1.5.008 76.5.402.042-8z"/><text id="right" fill="#7E7C7B" font-family="PTMono-Bold, PT Mono" font-size="14" font-weight="bold"><tspan x="180" y="375">right</tspan></text><path id="Line-3-Copy-2" fill="#7E7C7B" fill-rule="nonzero" d="M371 350l19 9.5-19 9.5v-8H21.005v-3H371v-8z"/><path id="Line-3-Copy" fill="#C06334" fill-rule="nonzero" d="M119 65v1.5l.003 34.249h8l-9.498 19.001-9.502-19h8L116 66.5V65h3z" transform="matrix(-1 0 0 1 235.005 0)"/><path id="Rectangle-1" fill="#DBAF88" d="M392.629 119v175H118V119h274.629zM382 129H129v155h253V129z"/><text id="Introduction-This-Ec" fill="#643B0C" font-family="OpenSans-Bold, Open Sans" font-size="16" font-weight="bold" opacity=".8"><tspan x="138.946" y="153.8">Introduction</tspan> <tspan x="138.946" y="181.8" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">This Ecma Standard is based on </tspan> <tspan x="138.946" y="200.8" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">several originating technologies, </tspan> <tspan x="138.946" y="219.8" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">the most well known being </tspan> <tspan x="138.946" y="238.8" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">JavaScript (Netscape) and JScript </tspan> <tspan x="138.946" y="257.8" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">(Microsoft). The language was </tspan> <tspan x="138.946" y="276.8" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">invented by Brendan Eich at </tspan></text><text id="top" fill="#7E7C7B" font-family="PTMono-Bold, PT Mono" font-size="14" font-weight="bold"><tspan x="125" y="96">top</tspan></text></g></g></svg> \ No newline at end of file diff --git a/2-ui/1-document/11-coordinates/coords.png b/2-ui/1-document/11-coordinates/coords.png deleted file mode 100644 index 79d1fdbb6..000000000 Binary files a/2-ui/1-document/11-coordinates/coords.png and /dev/null differ diff --git a/2-ui/1-document/11-coordinates/coords@2x.png b/2-ui/1-document/11-coordinates/coords@2x.png deleted file mode 100644 index d3e340f50..000000000 Binary files a/2-ui/1-document/11-coordinates/coords@2x.png and /dev/null differ diff --git a/2-ui/1-document/11-coordinates/document-and-window-coordinates-scrolled.svg b/2-ui/1-document/11-coordinates/document-and-window-coordinates-scrolled.svg new file mode 100644 index 000000000..f03317f0c --- /dev/null +++ b/2-ui/1-document/11-coordinates/document-and-window-coordinates-scrolled.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" width="728" height="358" viewBox="0 0 728 358"><defs><style>@import url(https://fonts.googleapis.com/css?family=Open+Sans:bold,italic,bolditalic%7CPT+Mono);@font-face{font-family:'PT Mono';font-weight:700;font-style:normal;src:local('PT MonoBold'),url(/font/PTMonoBold.woff2) format('woff2'),url(/font/PTMonoBold.woff) format('woff'),url(/font/PTMonoBold.ttf) format('truetype')}</style></defs><g id="dom" fill="none" fill-rule="evenodd" stroke="none" stroke-width="1"><g id="document-and-window-coordinates-scrolled.svg"><path fill="#FFF" d="M0 0h728v358H0z"/><text id="Introduction-This-Ec" fill="#AF6E24" font-family="OpenSans-Bold, Open Sans" font-size="16" font-weight="bold" opacity=".5"><tspan x="34" y="176">Introduction</tspan> <tspan x="34" y="204" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">This Ecma Standard is based on several </tspan> <tspan x="34" y="223" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">originating technologies, the most well </tspan> <tspan x="34" y="242" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">known being JavaScript (Netscape) and </tspan> <tspan x="34" y="261" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">JScript (Microsoft). The language was </tspan> <tspan x="34" y="280" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">invented by Brendan Eich at Netscape and </tspan> <tspan x="34" y="299" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">first appeared in that company’s Navigator </tspan> <tspan x="34" y="318" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">2.0 browser. </tspan> <tspan x="34" y="337" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal"> </tspan> <tspan x="34" y="356" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">It has appeared in all subsequent browsers </tspan> <tspan x="34" y="375" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">from Netscape and in all browsers from </tspan> <tspan x="34" y="394" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">Microsoft starting with Internet Explorer </tspan> <tspan x="34" y="413" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">3.0. The development of this Standard </tspan> <tspan x="34" y="432" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">started in November 1996. </tspan> <tspan x="34" y="451" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">The first edition of this Ecma Standard was </tspan> <tspan x="34" y="470" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">adopted by the Ecma General Assembly of </tspan> <tspan x="34" y="489" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">June 1997.</tspan> <tspan x="34" y="508" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">That Ecma Standard was submitted to ISO/</tspan> <tspan x="34" y="527" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">IEC JTC 1 for adoption under the fast-track </tspan> <tspan x="34" y="546" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">procedure, and approved as international </tspan> <tspan x="34" y="565" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">standard ISO/IEC 16262, in April 1998. The </tspan> <tspan x="34" y="584" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">Ecma General Assembly of June 1998 </tspan> <tspan x="34" y="603" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">approved the second edition of ECMA-262 </tspan> <tspan x="34" y="622" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">to keep it fully aligned with ISO/IEC 16262. </tspan> <tspan x="34" y="641" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">Changes between the first and the second </tspan> <tspan x="34" y="660" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">edition are editorial in nature.</tspan></text><text id="😍" fill="#643B0C" font-family="AppleColorEmoji, Apple Color Emoji" font-size="18" font-weight="normal"><tspan x="139" y="330">😍</tspan></text><path id="Line-39" fill="#C06334" fill-rule="nonzero" d="M150.5 131v167h6l-7 14-7-14h6V131h2z"/><text id="pageY" fill="#C06334" font-family="PTMono-Bold, PT Mono" font-size="16" font-weight="bold"><tspan x="157" y="155">pageY</tspan></text><text id="clientY" fill="#C06334" font-family="PTMono-Bold, PT Mono" font-size="16" font-weight="bold"><tspan x="156.4" y="177">clientY</tspan></text><path id="Line-39-Copy" fill="#C06334" fill-rule="nonzero" d="M126 315.5l14 7-14 7-.001-6.001L13 323.5h-1v-2h1l112.999-.001.001-5.999z"/><text id="pageX" fill="#C06334" font-family="PTMono-Bold, PT Mono" font-size="16" font-weight="bold"><tspan x="23" y="316">pageX</tspan></text><text id="clientX" fill="#C06334" font-family="PTMono-Bold, PT Mono" font-size="16" font-weight="bold"><tspan x="22.4" y="337">clientX</tspan></text><g id="np_browser_551045_E8C48F" fill="#DBAF88" fill-rule="nonzero" transform="translate(-1 68)"><path id="Shape" d="M22.8 0C7.76 0 0 8.157 0 24v242c0 15.843 7.759 24 22.8 24h309.346c15.042 0 21.854-7.157 21.854-23V24c0-15.843-6.812-24-21.854-24H22.8zm-5.425 15.286h318.177c2.535 0 4.187 2.012 4.187 5.1L338 55.328H13.188V20.386c0-3.088 1.652-5.1 4.187-5.1zm21.159 13.857c-3.902 0-7.067 3.327-7.067 7.428S34.632 44 38.534 44s7.067-3.328 7.067-7.429c0-4.1-3.165-7.428-7.067-7.428zm31.467 0c-3.902 0-7.068 3.327-7.068 7.428S66.1 44 70.001 44c3.901 0 7.067-3.328 7.067-7.429 0-4.1-3.166-7.428-7.067-7.428zm31.466 0c-3.901 0-7.067 3.327-7.067 7.428S97.566 44 101.467 44c3.902 0 7.068-3.328 7.068-7.429 0-4.1-3.166-7.428-7.068-7.428zM14 71.172h324l1.865 198.376c0 2.782-1.651 4.595-4.186 4.595H17.5c-2.535 0-4.187-1.813-4.187-4.595L14 71.172z"/></g><text id="Introduction-This-Ec" fill="#AF6E24" font-family="OpenSans-Bold, Open Sans" font-size="16" font-weight="bold" opacity=".5"><tspan x="409" y="34">Introduction</tspan> <tspan x="409" y="62" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">This Ecma Standard is based on several </tspan> <tspan x="409" y="81" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">originating technologies, the most well </tspan> <tspan x="409" y="100" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">known being JavaScript (Netscape) and </tspan> <tspan x="409" y="119" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">JScript (Microsoft). The language was </tspan> <tspan x="409" y="138" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">invented by Brendan Eich at Netscape and </tspan> <tspan x="409" y="157" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">first appeared in that company’s Navigator </tspan> <tspan x="409" y="176" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">2.0 browser. </tspan> <tspan x="409" y="195" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal"> </tspan> <tspan x="409" y="214" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">It has appeared in all subsequent browsers </tspan> <tspan x="409" y="233" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">from Netscape and in all browsers from </tspan> <tspan x="409" y="252" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">Microsoft starting with Internet Explorer </tspan> <tspan x="409" y="271" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">3.0. The development of this Standard </tspan> <tspan x="409" y="290" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">started in November 1996. </tspan> <tspan x="409" y="309" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">The first edition of this Ecma Standard was </tspan> <tspan x="409" y="328" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">adopted by the Ecma General Assembly of </tspan> <tspan x="409" y="347" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">June 1997.</tspan> <tspan x="409" y="366" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">That Ecma Standard was submitted to ISO/</tspan> <tspan x="409" y="385" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">IEC JTC 1 for adoption under the fast-track </tspan> <tspan x="409" y="404" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">procedure, and approved as international </tspan> <tspan x="409" y="423" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">standard ISO/IEC 16262, in April 1998. The </tspan> <tspan x="409" y="442" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">Ecma General Assembly of June 1998 </tspan> <tspan x="409" y="461" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">approved the second edition of ECMA-262 </tspan> <tspan x="409" y="480" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">to keep it fully aligned with ISO/IEC 16262. </tspan> <tspan x="409" y="499" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">Changes between the first and the second </tspan> <tspan x="409" y="518" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal">edition are editorial in nature.</tspan></text><path id="Rectangle" fill="#FFF" d="M392 87h307v42H392z" opacity=".6"/><g id="np_browser_551045_E8C48F" fill="#DBAF88" fill-rule="nonzero" transform="translate(374 71)"><path id="Shape" d="M22.8 0C7.76 0 0 8.157 0 24v242c0 15.843 7.759 24 22.8 24h309.346c15.042 0 21.854-7.157 21.854-23V24c0-15.843-6.812-24-21.854-24H22.8zm-5.425 15.286h318.177c2.535 0 4.187 2.012 4.187 5.1L338 55.328H13.188V20.386c0-3.088 1.652-5.1 4.187-5.1zm21.159 13.857c-3.902 0-7.067 3.327-7.067 7.428S34.632 44 38.534 44s7.067-3.328 7.067-7.429c0-4.1-3.165-7.428-7.067-7.428zm31.467 0c-3.902 0-7.068 3.327-7.068 7.428S66.1 44 70.001 44c3.901 0 7.067-3.328 7.067-7.429 0-4.1-3.166-7.428-7.067-7.428zm31.466 0c-3.901 0-7.067 3.327-7.067 7.428S97.566 44 101.467 44c3.902 0 7.068-3.328 7.068-7.429 0-4.1-3.166-7.428-7.068-7.428zM14 71.172h324l1.865 198.376c0 2.782-1.651 4.595-4.186 4.595H17.5c-2.535 0-4.187-1.813-4.187-4.595L14 71.172z"/></g><path id="Rectangle-2" stroke="#DBAF88" stroke-width="2" d="M387 7h326v351H387z"/><path id="Rectangle-14" fill="#FFF" d="M395 8h312v61H395z"/><path id="Line-39" fill="#C06334" fill-rule="nonzero" d="M519.5 7v159h6l-7 14-7-14h6V7h2z"/><path id="Line-39-Copy-2" fill="#C06334" fill-rule="nonzero" d="M531.014 141.987l2 .027-.014 1-.311 23 6 .082L531.5 180l-6.81-14.093 5.999.08.311-23 .014-1z"/><text id="pageY" fill="#C06334" font-family="PTMono-Bold, PT Mono" font-size="16" font-weight="bold"><tspan x="525" y="23">pageY</tspan></text><text id="clientY" fill="#C06334" font-family="PTMono-Bold, PT Mono" font-size="16" font-weight="bold"><tspan x="542.4" y="172">clientY</tspan></text><path id="Line-39-Copy" fill="#C06334" fill-rule="nonzero" d="M501 182.5l14 7-14 7-.001-6.001L389 190.5h-1v-2h1l111.999-.001.001-5.999z"/><text id="pageX" fill="#C06334" font-family="PTMono-Bold, PT Mono" font-size="16" font-weight="bold"><tspan x="398" y="183">pageX</tspan></text><text id="clientX" fill="#C06334" font-family="PTMono-Bold, PT Mono" font-size="16" font-weight="bold"><tspan x="397.4" y="204">clientX</tspan></text><text id="😍" fill="#643B0C" font-family="AppleColorEmoji, Apple Color Emoji" font-size="18" font-weight="normal"><tspan x="514" y="197">😍</tspan></text></g></g></svg> \ No newline at end of file diff --git a/2-ui/1-document/11-coordinates/document-window-coordinates-scroll.png b/2-ui/1-document/11-coordinates/document-window-coordinates-scroll.png deleted file mode 100644 index 29c59aad1..000000000 Binary files a/2-ui/1-document/11-coordinates/document-window-coordinates-scroll.png and /dev/null differ diff --git a/2-ui/1-document/11-coordinates/document-window-coordinates-scroll@2x.png b/2-ui/1-document/11-coordinates/document-window-coordinates-scroll@2x.png deleted file mode 100644 index 3c188ee45..000000000 Binary files a/2-ui/1-document/11-coordinates/document-window-coordinates-scroll@2x.png and /dev/null differ diff --git a/2-ui/1-document/11-coordinates/document-window-coordinates-zero.png b/2-ui/1-document/11-coordinates/document-window-coordinates-zero.png deleted file mode 100644 index 3dc17f025..000000000 Binary files a/2-ui/1-document/11-coordinates/document-window-coordinates-zero.png and /dev/null differ diff --git a/2-ui/1-document/11-coordinates/document-window-coordinates-zero@2x.png b/2-ui/1-document/11-coordinates/document-window-coordinates-zero@2x.png deleted file mode 100644 index 45f6b9e7f..000000000 Binary files a/2-ui/1-document/11-coordinates/document-window-coordinates-zero@2x.png and /dev/null differ diff --git a/2-ui/1-document/11-coordinates/head.html b/2-ui/1-document/11-coordinates/head.html index d5b366a9d..c00340039 100644 --- a/2-ui/1-document/11-coordinates/head.html +++ b/2-ui/1-document/11-coordinates/head.html @@ -1,30 +1,30 @@ <script> document.addEventListener('DOMContentLoaded', function() { -let elem = document.getElementById('coords-show-mark'); + let elem = document.getElementById('coords-show-mark'); -// no elem in ebook mode -if (elem) { - elem.onclick = function() { + // no elem in ebook (pdf/epub) mode + if (elem) { + elem.onclick = function() { - function createMessageUnder(elem, text) { - let coords = elem.getBoundingClientRect(); - let message = document.createElement('div'); - message.style.cssText = "position:fixed; color: red"; + function createMessageUnder(elem, text) { + let coords = elem.getBoundingClientRect(); + let message = document.createElement('div'); + message.style.cssText = "position:fixed; color: red"; - message.style.left = coords.left + "px"; - message.style.top = coords.bottom + "px"; + message.style.left = coords.left + "px"; + message.style.top = coords.bottom + "px"; - message.innerHTML = text; + message.innerHTML = text; - return message; - } + return message; + } - let message = createMessageUnder(elem, 'Hello, world!'); - document.body.append(message); - setTimeout(() => message.remove(), 5000); + let message = createMessageUnder(elem, 'Hello, world!'); + document.body.append(message); + setTimeout(() => message.remove(), 5000); + } } -} }); diff --git a/2-ui/2-events/01-introduction-browser-events/02-hide-self-onclick/solution.md b/2-ui/2-events/01-introduction-browser-events/02-hide-self-onclick/solution.md index ec2806696..cded5b622 100644 --- a/2-ui/2-events/01-introduction-browser-events/02-hide-self-onclick/solution.md +++ b/2-ui/2-events/01-introduction-browser-events/02-hide-self-onclick/solution.md @@ -1,4 +1,4 @@ -Can use `this` in the handler to reference "itself" here: +Can use `this` in the handler to reference "the element itself" here: ```html run height=50 <input type="button" onclick="this.hidden=true" value="Click to hide"> diff --git a/2-ui/2-events/01-introduction-browser-events/04-move-ball-field/move-ball-coords.svg b/2-ui/2-events/01-introduction-browser-events/04-move-ball-field/move-ball-coords.svg index fc26b023c..247f75b7b 100644 --- a/2-ui/2-events/01-introduction-browser-events/04-move-ball-field/move-ball-coords.svg +++ b/2-ui/2-events/01-introduction-browser-events/04-move-ball-field/move-ball-coords.svg @@ -1 +1,5 @@ -<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="521" height="330" viewBox="0 0 521 330"><defs><style>@import url(https://fonts.googleapis.com/css?family=Open+Sans:bold,italic,bolditalic%7CPT+Mono);@font-face{font-family:'PT Mono';font-weight:700;font-style:normal;src:local('PT MonoBold'),url(/font/PTMonoBold.woff2) format('woff2'),url(/font/PTMonoBold.woff) format('woff'),url(/font/PTMonoBold.ttf) format('truetype')}</style></defs><defs><filter id="filter-2" width="195.6%" height="153.8%" x="-42.9%" y="-25.8%" filterUnits="objectBoundingBox"><feMorphology in="SourceAlpha" operator="dilate" radius="1" result="shadowSpreadOuter1"/><feOffset dy="1" in="shadowSpreadOuter1" result="shadowOffsetOuter1"/><feGaussianBlur in="shadowOffsetOuter1" result="shadowBlurOuter1" stdDeviation="1.5"/><feComposite in="shadowBlurOuter1" in2="SourceAlpha" operator="out" result="shadowBlurOuter1"/><feColorMatrix in="shadowBlurOuter1" values="0 0 0 0 0.0941176471 0 0 0 0 0.0901960784 0 0 0 0 0.0901960784 0 0 0 1 0"/></filter><path id="path-1" d="M263 170v21.429l5.25-5.358 4.375 8.929h1.75s1.13-1.161.875-1.786c-1.203-2.947-4.375-8.928-4.375-8.928H277L263 170z"/></defs><g id="dom" fill="none" fill-rule="evenodd" stroke="none" stroke-width="1"><g id="move-ball-coords.svg"><g id="noun_69008_cc" fill="#DBAF88" transform="translate(12 6)"><path id="Shape" d="M10.438 316C4.676 316 0 312.445 0 308.1V7.9C0 3.555 4.676 0 10.438 0h480.125C496.303 0 501 3.555 501 7.9v300.2c0 4.345-4.697 7.9-10.438 7.9H10.438zm-.276-12h478.643V12.939H10.162V304z"/><path id="Shape" d="M20.859 54.1c-5.753 0-10.422-1.147-10.422-2.55 0-1.402 4.67-2.55 10.422-2.55H479.4c5.732 0 10.422 1.148 10.422 2.55 0 1.403-4.69 2.55-10.422 2.55H20.86zM33.75 31.6c0 3.315-2.685 6-6 6s-6-2.685-6-6 2.685-6 6-6 6 2.685 6 6zM63.938 31.6c0 3.315-2.685 6-6 6s-6-2.685-6-6 2.685-6 6-6 6 2.685 6 6zM94.127 31.6c0 3.315-2.685 6-6 6s-6-2.685-6-6 2.685-6 6-6 6 2.685 6 6z"/></g><image id="Screen-Shot-2017-02-25-at-23.45.22" width="224" height="150" x="183" y="100" xlink:href="data:image/png;base64,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"/><text id="ball.style.left" fill="#C06334" font-family="PTMono-Regular, PT Mono" font-size="12" font-weight="normal"><tspan x="174" y="262">ball.style.left</tspan></text><text id="?" fill="#C06334" font-family="PTMono-Regular, PT Mono" font-size="40" font-weight="normal"><tspan x="217.5" y="229">?</tspan></text><text id="fieldCoords.left" fill="#C06334" font-family="PTMono-Regular, PT Mono" font-size="12" font-weight="normal"><tspan x="48.9" y="189.32">fieldCoords.left</tspan></text><text id="event.clientX" fill="#C06334" font-family="PTMono-Regular, PT Mono" font-size="12" font-weight="normal"><tspan x="59.7" y="161.32">event.clientX</tspan></text><path id="Line-41" fill="#C06334" fill-rule="nonzero" d="M168.41 187.91l14 7-14 7v-6H39.589l.001 6-14-7 14-7-.001 6H168.41v-6z"/><path id="Line-41-Copy-2" fill="#C06334" fill-rule="nonzero" d="M248 160.91l14 7-14 7v-6H39.589l.001 6-14-7 14-7-.001 6H248v-6z"/><g id="ball" opacity=".7" transform="translate(261 168)"><circle id="Oval-4" cx="18.753" cy="18.753" r="18.753" fill="#FFF"/><path id="Shape" fill="#181717" fill-rule="nonzero" d="M37.792 18.204a.229.229 0 00-.003-.123l-.004-.016a18.9 18.9 0 00-6.003-12.94c-.445-.461-1.107-1.006-1.863-1.534A19.043 19.043 0 0012.899.935c-.412.106-.98.322-1.64.622a18.593 18.593 0 00-3.53 2.014A18.856 18.856 0 004.68 6.344c-6.874 7.794-6.085 19.762 1.758 26.679a19.043 19.043 0 004.876 3.128c.254.121.465.194.645.272 7.417 2.964 15.919.96 21.169-4.992 3.216-3.65 4.87-8.343 4.663-13.227zm-.677-.785l-.05-.135c-.387-1.04-1.095-2.957-2.828-4.492-.255-3.228-1.405-5.115-2.43-6.774a18.297 18.297 0 015.308 11.401zM24.485 3.158a.476.476 0 00.044-.013c1.666.291 4.245 1.237 6.464 2.748a.274.274 0 00.03.068c.06.1.214.347.214.347.99 1.6 2.109 3.414 2.362 6.494-1.007.741-1.724 1.531-2.42 2.295-.414.456-.84.925-1.326 1.383-1.63-1.516-4.52-2.813-7.641-3.42-.306-1.35-.919-3.854-2.423-6.628l.116-.132c2.418-2.743 3.269-2.9 4.255-3.08.105-.019.213-.039.325-.062zm-8.729 15.517l6.255-5.001c3.137.597 6.025 1.903 7.547 3.413.372 1.153.468 3.636.54 5.464.035.935.069 1.754.127 2.246-2.457 2.24-5.717 4.539-6.78 4.778l-6.843-2.677c-.512-2.867-.662-4.83-.846-8.223zm.205 8.273l-4.955 3.485a.249.249 0 00-.148-.012c-.923.192-4.479-2.415-6.21-3.929a.264.264 0 00-.065-.04c-.073-.495-.23-1.125-.408-1.84-.469-1.885-1.05-4.221-.528-5.673l.028-.028c.006-.007.013-.015.018-.024.339-.487.665-.908 1-1.286 1.058-1.2 2.256-2.053 4.12-2.927l.379.276c1.735 1.266 4.094 2.99 5.927 3.8.185 3.374.335 5.339.842 8.198zM9.35 3.678c.07-.079.145-.147.233-.226l.049-.044c.185-.102.424-.243.702-.405.653-.381 1.546-.905 2.527-1.398a18.483 18.483 0 018.294-.832c0 .093.052.18.137.223.17.089.343.172.515.255.733.354 1.432.692 2.073 1.37-1.001.19-2.025.496-4.464 3.262l-.156.177c-2.457-.245-5.282-.38-7.822.37-.94-1.119-1.73-1.651-2.429-2.123l-.019-.013c.153-.357.266-.51.36-.616zM1.413 15.43a.25.25 0 00-.398-.123 1.375 1.375 0 00-.076.066 18.024 18.024 0 014.08-8.465c.12-.1.274-.233.448-.385.724-.63 2.41-2.101 2.946-1.847a13.536 13.536 0 00.092.063l.147.1c.652.44 1.39.937 2.258 1.96-.78 1.657-2.416 5.752-2.408 7.314-1.927.907-3.177 1.802-4.288 3.062-.295.334-.584.699-.878 1.108l-.106-.1c-.557-.52-1.396-1.306-1.817-2.753zm5.438 17.124a18.323 18.323 0 01-3.95-4.92c.691-.195 1.023-.323 1.411-.586.638.539 4.586 3.827 6.334 4.006a36.692 36.692 0 003.055 4.295c-.572.352-1.042.473-1.648.437a18.311 18.311 0 01-5.202-3.232zm6.469 3.698c.295-.108.593-.268.92-.49 2.756.407 5.828.152 7.99-.152.031.021.066.034.105.04.52.068 2.062.226 3.92.015a18.292 18.292 0 01-12.935.587zm18.778-4.768a.256.256 0 00-.042.181 17.964 17.964 0 01-3.83 3.004.236.236 0 00-.111.003c-2.244.59-4.392.479-5.354.382.433-1.078.73-2.68.902-4.876 1.262-.352 4.456-2.594 7.01-4.925.636.105 1.07.204 1.421.286.858.198 1.25.29 2.81.086-.201 1.17-.765 2.896-2.806 5.86zm2.797-3.623c.438-1.046.605-1.827.69-2.448a.237.237 0 00-.014-.125c.39-.886 1.186-3.392 1.594-5.443a18.028 18.028 0 01-2.27 8.016z"/></g><g id="Default"><use fill="#000" filter="url(#filter-2)" xlink:href="#path-1"/><path fill="#FFF" stroke="#A7333A" d="M262.5 168.775l15.69 16.01h-6.488c.886 1.695 3.06 5.91 4.01 8.24.318.776-.979 2.324-.979 2.324h0l-2.42.151-4.2-8.574-5.613 5.727v-23.878z"/></g><path id="Line-16-Copy-2" stroke="#C06334" stroke-dasharray="3,6" stroke-linecap="square" stroke-width="2" d="M195.535 180.945s20.728 10.637 32.233 10.637c11.504 0 32.232-10.637 32.232-10.637"/></g></g></svg> \ No newline at end of file +<<<<<<< HEAD +<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="521" height="330" viewBox="0 0 521 330"><defs><style>@import url(https://fonts.googleapis.com/css?family=Open+Sans:bold,italic,bolditalic%7CPT+Mono);@font-face{font-family:'PT Mono';font-weight:700;font-style:normal;src:local('PT MonoBold'),url(/font/PTMonoBold.woff2) format('woff2'),url(/font/PTMonoBold.woff) format('woff'),url(/font/PTMonoBold.ttf) format('truetype')}</style></defs><defs><filter id="filter-2" width="195.6%" height="153.8%" x="-42.9%" y="-25.8%" filterUnits="objectBoundingBox"><feMorphology in="SourceAlpha" operator="dilate" radius="1" result="shadowSpreadOuter1"/><feOffset dy="1" in="shadowSpreadOuter1" result="shadowOffsetOuter1"/><feGaussianBlur in="shadowOffsetOuter1" result="shadowBlurOuter1" stdDeviation="1.5"/><feComposite in="shadowBlurOuter1" in2="SourceAlpha" operator="out" result="shadowBlurOuter1"/><feColorMatrix in="shadowBlurOuter1" values="0 0 0 0 0.0941176471 0 0 0 0 0.0901960784 0 0 0 0 0.0901960784 0 0 0 1 0"/></filter><path id="path-1" d="M263 170v21.429l5.25-5.358 4.375 8.929h1.75s1.13-1.161.875-1.786c-1.203-2.947-4.375-8.928-4.375-8.928H277L263 170z"/></defs><g id="dom" fill="none" fill-rule="evenodd" stroke="none" stroke-width="1"><g id="move-ball-coords.svg"><g id="noun_69008_cc" fill="#DBAF88" transform="translate(12 6)"><path id="Shape" d="M10.438 316C4.676 316 0 312.445 0 308.1V7.9C0 3.555 4.676 0 10.438 0h480.125C496.303 0 501 3.555 501 7.9v300.2c0 4.345-4.697 7.9-10.438 7.9H10.438zm-.276-12h478.643V12.939H10.162V304z"/><path id="Shape" d="M20.859 54.1c-5.753 0-10.422-1.147-10.422-2.55 0-1.402 4.67-2.55 10.422-2.55H479.4c5.732 0 10.422 1.148 10.422 2.55 0 1.403-4.69 2.55-10.422 2.55H20.86zM33.75 31.6c0 3.315-2.685 6-6 6s-6-2.685-6-6 2.685-6 6-6 6 2.685 6 6zM63.938 31.6c0 3.315-2.685 6-6 6s-6-2.685-6-6 2.685-6 6-6 6 2.685 6 6zM94.127 31.6c0 3.315-2.685 6-6 6s-6-2.685-6-6 2.685-6 6-6 6 2.685 6 6z"/></g><image id="Screen-Shot-2017-02-25-at-23.45.22" width="224" height="150" x="183" y="100" xlink:href="data:image/png;base64,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"/><text id="ball.style.left" fill="#C06334" font-family="PTMono-Regular, PT Mono" font-size="12" font-weight="normal"><tspan x="174" y="262">ball.style.left</tspan></text><text id="?" fill="#C06334" font-family="PTMono-Regular, PT Mono" font-size="40" font-weight="normal"><tspan x="217.5" y="229">?</tspan></text><text id="fieldCoords.left" fill="#C06334" font-family="PTMono-Regular, PT Mono" font-size="12" font-weight="normal"><tspan x="48.9" y="189.32">fieldCoords.left</tspan></text><text id="event.clientX" fill="#C06334" font-family="PTMono-Regular, PT Mono" font-size="12" font-weight="normal"><tspan x="59.7" y="161.32">event.clientX</tspan></text><path id="Line-41" fill="#C06334" fill-rule="nonzero" d="M168.41 187.91l14 7-14 7v-6H39.589l.001 6-14-7 14-7-.001 6H168.41v-6z"/><path id="Line-41-Copy-2" fill="#C06334" fill-rule="nonzero" d="M248 160.91l14 7-14 7v-6H39.589l.001 6-14-7 14-7-.001 6H248v-6z"/><g id="ball" opacity=".7" transform="translate(261 168)"><circle id="Oval-4" cx="18.753" cy="18.753" r="18.753" fill="#FFF"/><path id="Shape" fill="#181717" fill-rule="nonzero" d="M37.792 18.204a.229.229 0 00-.003-.123l-.004-.016a18.9 18.9 0 00-6.003-12.94c-.445-.461-1.107-1.006-1.863-1.534A19.043 19.043 0 0012.899.935c-.412.106-.98.322-1.64.622a18.593 18.593 0 00-3.53 2.014A18.856 18.856 0 004.68 6.344c-6.874 7.794-6.085 19.762 1.758 26.679a19.043 19.043 0 004.876 3.128c.254.121.465.194.645.272 7.417 2.964 15.919.96 21.169-4.992 3.216-3.65 4.87-8.343 4.663-13.227zm-.677-.785l-.05-.135c-.387-1.04-1.095-2.957-2.828-4.492-.255-3.228-1.405-5.115-2.43-6.774a18.297 18.297 0 015.308 11.401zM24.485 3.158a.476.476 0 00.044-.013c1.666.291 4.245 1.237 6.464 2.748a.274.274 0 00.03.068c.06.1.214.347.214.347.99 1.6 2.109 3.414 2.362 6.494-1.007.741-1.724 1.531-2.42 2.295-.414.456-.84.925-1.326 1.383-1.63-1.516-4.52-2.813-7.641-3.42-.306-1.35-.919-3.854-2.423-6.628l.116-.132c2.418-2.743 3.269-2.9 4.255-3.08.105-.019.213-.039.325-.062zm-8.729 15.517l6.255-5.001c3.137.597 6.025 1.903 7.547 3.413.372 1.153.468 3.636.54 5.464.035.935.069 1.754.127 2.246-2.457 2.24-5.717 4.539-6.78 4.778l-6.843-2.677c-.512-2.867-.662-4.83-.846-8.223zm.205 8.273l-4.955 3.485a.249.249 0 00-.148-.012c-.923.192-4.479-2.415-6.21-3.929a.264.264 0 00-.065-.04c-.073-.495-.23-1.125-.408-1.84-.469-1.885-1.05-4.221-.528-5.673l.028-.028c.006-.007.013-.015.018-.024.339-.487.665-.908 1-1.286 1.058-1.2 2.256-2.053 4.12-2.927l.379.276c1.735 1.266 4.094 2.99 5.927 3.8.185 3.374.335 5.339.842 8.198zM9.35 3.678c.07-.079.145-.147.233-.226l.049-.044c.185-.102.424-.243.702-.405.653-.381 1.546-.905 2.527-1.398a18.483 18.483 0 018.294-.832c0 .093.052.18.137.223.17.089.343.172.515.255.733.354 1.432.692 2.073 1.37-1.001.19-2.025.496-4.464 3.262l-.156.177c-2.457-.245-5.282-.38-7.822.37-.94-1.119-1.73-1.651-2.429-2.123l-.019-.013c.153-.357.266-.51.36-.616zM1.413 15.43a.25.25 0 00-.398-.123 1.375 1.375 0 00-.076.066 18.024 18.024 0 014.08-8.465c.12-.1.274-.233.448-.385.724-.63 2.41-2.101 2.946-1.847a13.536 13.536 0 00.092.063l.147.1c.652.44 1.39.937 2.258 1.96-.78 1.657-2.416 5.752-2.408 7.314-1.927.907-3.177 1.802-4.288 3.062-.295.334-.584.699-.878 1.108l-.106-.1c-.557-.52-1.396-1.306-1.817-2.753zm5.438 17.124a18.323 18.323 0 01-3.95-4.92c.691-.195 1.023-.323 1.411-.586.638.539 4.586 3.827 6.334 4.006a36.692 36.692 0 003.055 4.295c-.572.352-1.042.473-1.648.437a18.311 18.311 0 01-5.202-3.232zm6.469 3.698c.295-.108.593-.268.92-.49 2.756.407 5.828.152 7.99-.152.031.021.066.034.105.04.52.068 2.062.226 3.92.015a18.292 18.292 0 01-12.935.587zm18.778-4.768a.256.256 0 00-.042.181 17.964 17.964 0 01-3.83 3.004.236.236 0 00-.111.003c-2.244.59-4.392.479-5.354.382.433-1.078.73-2.68.902-4.876 1.262-.352 4.456-2.594 7.01-4.925.636.105 1.07.204 1.421.286.858.198 1.25.29 2.81.086-.201 1.17-.765 2.896-2.806 5.86zm2.797-3.623c.438-1.046.605-1.827.69-2.448a.237.237 0 00-.014-.125c.39-.886 1.186-3.392 1.594-5.443a18.028 18.028 0 01-2.27 8.016z"/></g><g id="Default"><use fill="#000" filter="url(#filter-2)" xlink:href="#path-1"/><path fill="#FFF" stroke="#A7333A" d="M262.5 168.775l15.69 16.01h-6.488c.886 1.695 3.06 5.91 4.01 8.24.318.776-.979 2.324-.979 2.324h0l-2.42.151-4.2-8.574-5.613 5.727v-23.878z"/></g><path id="Line-16-Copy-2" stroke="#C06334" stroke-dasharray="3,6" stroke-linecap="square" stroke-width="2" d="M195.535 180.945s20.728 10.637 32.233 10.637c11.504 0 32.232-10.637 32.232-10.637"/></g></g></svg> +======= +<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="521" height="330" viewBox="0 0 521 330"><defs><style>@import url(https://fonts.googleapis.com/css?family=Open+Sans:bold,italic,bolditalic%7CPT+Mono);@font-face{font-family:'PT Mono';font-weight:700;font-style:normal;src:local('PT MonoBold'),url(/font/PTMonoBold.woff2) format('woff2'),url(/font/PTMonoBold.woff) format('woff'),url(/font/PTMonoBold.ttf) format('truetype')}</style></defs><defs><filter id="filter-2" width="195.6%" height="153.8%" x="-42.9%" y="-25.8%" filterUnits="objectBoundingBox"><feMorphology in="SourceAlpha" operator="dilate" radius="1" result="shadowSpreadOuter1"/><feOffset dy="1" in="shadowSpreadOuter1" result="shadowOffsetOuter1"/><feGaussianBlur in="shadowOffsetOuter1" result="shadowBlurOuter1" stdDeviation="1.5"/><feComposite in="shadowBlurOuter1" in2="SourceAlpha" operator="out" result="shadowBlurOuter1"/><feColorMatrix in="shadowBlurOuter1" values="0 0 0 0 0.0941176471 0 0 0 0 0.0901960784 0 0 0 0 0.0901960784 0 0 0 1 0"/></filter><path id="path-1" d="M263 170v21.429l5.25-5.358 4.375 8.929h1.75s1.13-1.161.875-1.786c-1.203-2.947-4.375-8.928-4.375-8.928H277L263 170z"/></defs><g id="dom" fill="none" fill-rule="evenodd" stroke="none" stroke-width="1"><g id="move-ball-coords.svg"><g id="noun_69008_cc" fill="#DBAF88" transform="translate(12 6)"><path id="Shape" d="M10.438 316C4.676 316 0 312.445 0 308.1V7.9C0 3.555 4.676 0 10.438 0h480.125C496.303 0 501 3.555 501 7.9v300.2c0 4.345-4.697 7.9-10.438 7.9H10.438zm-.276-12h478.643V12.939H10.162V304z"/><path id="Shape" d="M20.859 54.1c-5.753 0-10.422-1.147-10.422-2.55 0-1.402 4.67-2.55 10.422-2.55H479.4c5.732 0 10.422 1.148 10.422 2.55 0 1.403-4.69 2.55-10.422 2.55H20.86zM33.75 31.6c0 3.315-2.685 6-6 6s-6-2.685-6-6 2.685-6 6-6 6 2.685 6 6zM63.938 31.6c0 3.315-2.685 6-6 6s-6-2.685-6-6 2.685-6 6-6 6 2.685 6 6zM94.127 31.6c0 3.315-2.685 6-6 6s-6-2.685-6-6 2.685-6 6-6 6 2.685 6 6z"/></g><image id="Screen-Shot-2017-02-25-at-23.45.22" width="224" height="150" x="183" y="100" xlink:href="data:image/png;base64,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"/><text id="ball.style.left" fill="#C06334" font-family="PTMono-Regular, PT Mono" font-size="12" font-weight="normal"><tspan x="174" y="262">ball.style.left</tspan></text><text id="?" fill="#C06334" font-family="PTMono-Regular, PT Mono" font-size="40" font-weight="normal"><tspan x="217.5" y="229">?</tspan></text><text id="fieldCoords.left" fill="#C06334" font-family="PTMono-Regular, PT Mono" font-size="12" font-weight="normal"><tspan x="48.9" y="189.32">fieldCoords.left</tspan></text><text id="event.clientX" fill="#C06334" font-family="PTMono-Regular, PT Mono" font-size="12" font-weight="normal"><tspan x="59.7" y="161.32">event.clientX</tspan></text><path id="Line-41" fill="#C06334" fill-rule="nonzero" d="M168.41 187.91l14 7-14 7v-6H39.589l.001 6-14-7 14-7-.001 6H168.41v-6z"/><path id="Line-41-Copy-2" fill="#C06334" fill-rule="nonzero" d="M248 160.91l14 7-14 7v-6H39.589l.001 6-14-7 14-7-.001 6H248v-6z"/><g id="ball" opacity=".7" transform="translate(261 168)"><circle id="Oval-4" cx="18.753" cy="18.753" r="18.753" fill="#FFF"/><path id="Shape" fill="#181717" fill-rule="nonzero" d="M37.792 18.204a.229.229 0 00-.003-.123l-.004-.016a18.9 18.9 0 00-6.003-12.94c-.445-.461-1.107-1.006-1.863-1.534A19.043 19.043 0 0012.899.935c-.412.106-.98.322-1.64.622a18.593 18.593 0 00-3.53 2.014A18.856 18.856 0 004.68 6.344c-6.874 7.794-6.085 19.762 1.758 26.679a19.043 19.043 0 004.876 3.128c.254.121.465.194.645.272 7.417 2.964 15.919.96 21.169-4.992 3.216-3.65 4.87-8.343 4.663-13.227zm-.677-.785l-.05-.135c-.387-1.04-1.095-2.957-2.828-4.492-.255-3.228-1.405-5.115-2.43-6.774a18.297 18.297 0 015.308 11.401zM24.485 3.158a.476.476 0 00.044-.013c1.666.291 4.245 1.237 6.464 2.748a.274.274 0 00.03.068c.06.1.214.347.214.347.99 1.6 2.109 3.414 2.362 6.494-1.007.741-1.724 1.531-2.42 2.295-.414.456-.84.925-1.326 1.383-1.63-1.516-4.52-2.813-7.641-3.42-.306-1.35-.919-3.854-2.423-6.628l.116-.132c2.418-2.743 3.269-2.9 4.255-3.08.105-.019.213-.039.325-.062zm-8.729 15.517l6.255-5.001c3.137.597 6.025 1.903 7.547 3.413.372 1.153.468 3.636.54 5.464.035.935.069 1.754.127 2.246-2.457 2.24-5.717 4.539-6.78 4.778l-6.843-2.677c-.512-2.867-.662-4.83-.846-8.223zm.205 8.273l-4.955 3.485a.249.249 0 00-.148-.012c-.923.192-4.479-2.415-6.21-3.929a.264.264 0 00-.065-.04c-.073-.495-.23-1.125-.408-1.84-.469-1.885-1.05-4.221-.528-5.673l.028-.028c.006-.007.013-.015.018-.024.339-.487.665-.908 1-1.286 1.058-1.2 2.256-2.053 4.12-2.927l.379.276c1.735 1.266 4.094 2.99 5.927 3.8.185 3.374.335 5.339.842 8.198zM9.35 3.678c.07-.079.145-.147.233-.226l.049-.044c.185-.102.424-.243.702-.405.653-.381 1.546-.905 2.527-1.398a18.483 18.483 0 018.294-.832c0 .093.052.18.137.223.17.089.343.172.515.255.733.354 1.432.692 2.073 1.37-1.001.19-2.025.496-4.464 3.262l-.156.177c-2.457-.245-5.282-.38-7.822.37-.94-1.119-1.73-1.651-2.429-2.123l-.019-.013c.153-.357.266-.51.36-.616zM1.413 15.43a.25.25 0 00-.398-.123 1.375 1.375 0 00-.076.066 18.024 18.024 0 014.08-8.465c.12-.1.274-.233.448-.385.724-.63 2.41-2.101 2.946-1.847a13.536 13.536 0 00.092.063l.147.1c.652.44 1.39.937 2.258 1.96-.78 1.657-2.416 5.752-2.408 7.314-1.927.907-3.177 1.802-4.288 3.062-.295.334-.584.699-.878 1.108l-.106-.1c-.557-.52-1.396-1.306-1.817-2.753zm5.438 17.124a18.323 18.323 0 01-3.95-4.92c.691-.195 1.023-.323 1.411-.586.638.539 4.586 3.827 6.334 4.006a36.692 36.692 0 003.055 4.295c-.572.352-1.042.473-1.648.437a18.311 18.311 0 01-5.202-3.232zm6.469 3.698c.295-.108.593-.268.92-.49 2.756.407 5.828.152 7.99-.152.031.021.066.034.105.04.52.068 2.062.226 3.92.015a18.292 18.292 0 01-12.935.587zm18.778-4.768a.256.256 0 00-.042.181 17.964 17.964 0 01-3.83 3.004.236.236 0 00-.111.003c-2.244.59-4.392.479-5.354.382.433-1.078.73-2.68.902-4.876 1.262-.352 4.456-2.594 7.01-4.925.636.105 1.07.204 1.421.286.858.198 1.25.29 2.81.086-.201 1.17-.765 2.896-2.806 5.86zm2.797-3.623c.438-1.046.605-1.827.69-2.448a.237.237 0 00-.014-.125c.39-.886 1.186-3.392 1.594-5.443a18.028 18.028 0 01-2.27 8.016z"/></g><g id="Default"><use fill="#000" filter="url(#filter-2)" xlink:href="#path-1"/><path fill="#FFF" stroke="#A7333A" d="M262.5 168.775l15.69 16.01h-6.488c.886 1.695 3.06 5.91 4.01 8.24.318.776-.979 2.324-.979 2.324h0l-2.42.151-4.2-8.574-5.613 5.727v-23.878z"/></g><path id="Line-16-Copy-2" stroke="#C06334" stroke-dasharray="3,6" stroke-linecap="square" stroke-width="2" d="M195.535 180.945s20.728 10.637 32.233 10.637c11.504 0 32.232-10.637 32.232-10.637"/></g></g></svg> +>>>>>>> 540d753e90789205fc6e75c502f68382c87dea9b diff --git a/2-ui/2-events/01-introduction-browser-events/04-move-ball-field/solution.md b/2-ui/2-events/01-introduction-browser-events/04-move-ball-field/solution.md index 6268b2aa8..b04cb8231 100644 --- a/2-ui/2-events/01-introduction-browser-events/04-move-ball-field/solution.md +++ b/2-ui/2-events/01-introduction-browser-events/04-move-ball-field/solution.md @@ -22,7 +22,7 @@ Then the ball will be positioned relatively to the field: } ``` -Next we need to assign the correct `ball.style.position.left/top`. They contain field-relative coordinates now. +Next we need to assign the correct `ball.style.left/top`. They contain field-relative coordinates now. Here's the picture: @@ -36,7 +36,7 @@ To get field-relative `left` coordinate of the click, we can substract the field let left = event.clientX - fieldCoords.left - field.clientLeft; ``` -Normally, `ball.style.position.left` means the "left edge of the element" (the ball). So if we assign that `left`, then the ball edge would be under the mouse cursor. +Normally, `ball.style.left` means the "left edge of the element" (the ball). So if we assign that `left`, then the ball edge, not center, would be under the mouse cursor. We need to move the ball half-width left and half-height up to make it center. diff --git a/2-ui/2-events/01-introduction-browser-events/05-sliding-menu/solution.md b/2-ui/2-events/01-introduction-browser-events/05-sliding-menu/solution.md index eed096231..7554a2f09 100644 --- a/2-ui/2-events/01-introduction-browser-events/05-sliding-menu/solution.md +++ b/2-ui/2-events/01-introduction-browser-events/05-sliding-menu/solution.md @@ -29,7 +29,7 @@ Like this: So if we set `onclick` on it, then it will catch clicks to the right of the text. -...but `<span>` has an implicit `display: inline`, so it occupies exactly enough place to fit all the text: +As `<span>` has an implicit `display: inline`, it occupies exactly enough place to fit all the text: ```html autorun height=50 <span style="border: solid red 1px" onclick="alert(1)">Sweeties (click me)!</span> diff --git a/2-ui/2-events/01-introduction-browser-events/07-carousel/solution.md b/2-ui/2-events/01-introduction-browser-events/07-carousel/solution.md index 41de7e1f3..1c6b52cea 100644 --- a/2-ui/2-events/01-introduction-browser-events/07-carousel/solution.md +++ b/2-ui/2-events/01-introduction-browser-events/07-carousel/solution.md @@ -1,6 +1,6 @@ The images ribbon can be represented as `ul/li` list of images `<img>`. -Normally, such a ribbon is wide, but we put a fixed-size `<div>` around to "cut" it, so that only a part of the ribbon is visibble: +Normally, such a ribbon is wide, but we put a fixed-size `<div>` around to "cut" it, so that only a part of the ribbon is visible:  diff --git a/2-ui/2-events/01-introduction-browser-events/07-carousel/solution.view/index.html b/2-ui/2-events/01-introduction-browser-events/07-carousel/solution.view/index.html index 2c6073316..baf867664 100644 --- a/2-ui/2-events/01-introduction-browser-events/07-carousel/solution.view/index.html +++ b/2-ui/2-events/01-introduction-browser-events/07-carousel/solution.view/index.html @@ -10,7 +10,7 @@ <div id="carousel" class="carousel"> <button class="arrow prev">⇦</button> <div class="gallery"> - <ul class="images"> + <ul> <li><img src="https://en.js.cx/carousel/1.png"></li> <li><img src="https://en.js.cx/carousel/2.png"></li> <li><img src="https://en.js.cx/carousel/3.png"></li> diff --git a/2-ui/2-events/01-introduction-browser-events/article.md b/2-ui/2-events/01-introduction-browser-events/article.md index 332d15793..4eca222aa 100644 --- a/2-ui/2-events/01-introduction-browser-events/article.md +++ b/2-ui/2-events/01-introduction-browser-events/article.md @@ -11,20 +11,20 @@ Here's a list of the most useful DOM events, just to take a look at: - `mousedown` / `mouseup` -- when the mouse button is pressed / released over an element. - `mousemove` -- when the mouse is moved. +**Keyboard events:** +- `keydown` and `keyup` -- when a keyboard key is pressed and released. + **Form element events:** - `submit` -- when the visitor submits a `<form>`. - `focus` -- when the visitor focuses on an element, e.g. on an `<input>`. -**Keyboard events:** -- `keydown` and `keyup` -- when the visitor presses and then releases the button. - **Document events:** - `DOMContentLoaded` -- when the HTML is loaded and processed, DOM is fully built. **CSS events:** - `transitionend` -- when a CSS-animation finishes. -There are many other events. We'll get into more details of particular events in next chapters. +There are many other events. We'll get into more details of particular events in upcoming chapters. ## Event handlers @@ -87,8 +87,6 @@ If the handler is assigned using an HTML-attribute then the browser reads it, cr So this way is actually the same as the previous one. -**The handler is always in the DOM property: the HTML-attribute is just one of the ways to initialize it.** - These two code pieces work the same: 1. Only HTML: @@ -109,6 +107,8 @@ These two code pieces work the same: </script> ``` +In the first example, the HTML attribute is used to initialize the `button.onclick`, while in the second example -- the script, that's all the difference. + **As there's only one `onclick` property, we can't assign more than one event handler.** In the example below adding a handler with JavaScript overwrites the existing handler: @@ -124,16 +124,6 @@ In the example below adding a handler with JavaScript overwrites the existing ha </script> ``` -By the way, we can assign an existing function as a handler directly: - -```js -function sayThanks() { - alert('Thanks!'); -} - -elem.onclick = sayThanks; -``` - To remove a handler -- assign `elem.onclick = null`. ## Accessing the element: this @@ -148,9 +138,19 @@ In the code below `button` shows its contents using `this.innerHTML`: ## Possible mistakes -If you're starting to work with event -- please note some subtleties. +If you're starting to work with events -- please note some subtleties. + +We can set an existing function as a handler: + +```js +function sayThanks() { + alert('Thanks!'); +} + +elem.onclick = sayThanks; +``` -**The function should be assigned as `sayThanks`, not `sayThanks()`.** +But be careful: the function should be assigned as `sayThanks`, not `sayThanks()`. ```js // right @@ -160,29 +160,25 @@ button.onclick = sayThanks; button.onclick = sayThanks(); ``` -If we add brackets, then `sayThanks()` -- will be the *result* of the function execution, so `onclick` in the last code becomes `undefined` (the function returns nothing). That won't work. +If we add parentheses, then `sayThanks()` becomes a function call. So the last line actually takes the *result* of the function execution, that is `undefined` (as the function returns nothing), and assigns it to `onclick`. That doesn't work. -...But in the markup we do need the brackets: +...On the other hand, in the markup we do need the parentheses: ```html <input type="button" id="button" onclick="sayThanks()"> ``` -The difference is easy to explain. When the browser reads the attribute, it creates a handler function with the body from its content. +The difference is easy to explain. When the browser reads the attribute, it creates a handler function with body from the attribute content. -So the last example is the same as: +So the markup generates this property: ```js button.onclick = function() { *!* - sayThanks(); // the attribute content + sayThanks(); // <-- the attribute content goes here */!* }; ``` -**Use functions, not strings.** - -The assignment `elem.onclick = "alert(1)"` would work too. It works for compatibility reasons, but strongly not recommended. - **Don't use `setAttribute` for handlers.** Such a call won't work: @@ -199,9 +195,9 @@ Assign a handler to `elem.onclick`, not `elem.ONCLICK`, because DOM properties a ## addEventListener -The fundamental problem of the aforementioned ways to assign handlers -- we can't assign multiple handlers to one event. +The fundamental problem of the aforementioned ways to assign handlers is that we *can't assign multiple handlers to one event*. -For instance, one part of our code wants to highlight a button on click, and another one wants to show a message. +Let's say, one part of our code wants to highlight a button on click, and another one wants to show a message on the same click. We'd like to assign two event handlers for that. But a new DOM property will overwrite the existing one: @@ -211,12 +207,12 @@ input.onclick = function() { alert(1); } input.onclick = function() { alert(2); } // replaces the previous handler ``` -Web-standard developers understood that long ago and suggested an alternative way of managing handlers using special methods `addEventListener` and `removeEventListener`. They are free of such a problem. +Developers of web standards understood that long ago and suggested an alternative way of managing handlers using the special methods `addEventListener` and `removeEventListener` which aren't bound by such constraint. The syntax to add a handler: ```js -element.addEventListener(event, handler[, options]); +element.addEventListener(event, handler, [options]); ``` `event` @@ -228,20 +224,19 @@ element.addEventListener(event, handler[, options]); `options` : An additional optional object with properties: - `once`: if `true`, then the listener is automatically removed after it triggers. - - `capture`: the phrase where to handle the event, to be covered later in the chapter <info:bubbling-and-capturing>. For historical reasons, `options` can also be `false/true`, that's the same as `{capture: false/true}`. - - `passive`: if `true`, then the handler will not `preventDefault()`, we'll cover that later in <info:default-browser-action>. - + - `capture`: the phase where to handle the event, to be covered later in the chapter <info:bubbling-and-capturing>. For historical reasons, `options` can also be `false/true`, that's the same as `{capture: false/true}`. + - `passive`: if `true`, then the handler will not call `preventDefault()`, we'll explain that later in <info:default-browser-action>. To remove the handler, use `removeEventListener`: ```js -element.removeEventListener(event, handler[, options]); +element.removeEventListener(event, handler, [options]); ``` ````warn header="Removal requires the same function" To remove a handler we should pass exactly the same function as was assigned. -That doesn't work: +This doesn't work: ```js no-beautify elem.addEventListener( "click" , () => alert('Thanks!')); @@ -249,7 +244,7 @@ elem.addEventListener( "click" , () => alert('Thanks!')); elem.removeEventListener( "click", () => alert('Thanks!')); ``` -The handler won't be removed, because `removeEventListener` gets another function -- with the same code, but that doesn't matter. +The handler won't be removed, because `removeEventListener` gets another function -- with the same code, but that doesn't matter, as it's a different function object. Here's the right way: @@ -266,7 +261,7 @@ input.removeEventListener("click", handler); Please note -- if we don't store the function in a variable, then we can't remove it. There's no way to "read back" handlers assigned by `addEventListener`. ```` -Multiple calls to `addEventListener` allow to add multiple handlers, like this: +Multiple calls to `addEventListener` allow it to add multiple handlers, like this: ```html run no-beautify <input id="elem" type="button" value="Click me"/> @@ -291,47 +286,33 @@ Multiple calls to `addEventListener` allow to add multiple handlers, like this: As we can see in the example above, we can set handlers *both* using a DOM-property and `addEventListener`. But generally we use only one of these ways. ````warn header="For some events, handlers only work with `addEventListener`" -There exist events that can't be assigned via a DOM-property. Must use `addEventListener`. - -For instance, the event `transitionend` (CSS animation finished) is like that. - -Try the code below. In most browsers only the second handler works, not the first one. +There exist events that can't be assigned via a DOM-property. Only with `addEventListener`. -```html run -<style> - input { - transition: width 1s; - width: 100px; - } - - .wide { - width: 300px; - } -</style> - -<input type="button" id="elem" onclick="this.classList.toggle('wide')" value="Click me"> +For instance, the `DOMContentLoaded` event, that triggers when the document is loaded and the DOM has been built. -<script> - elem.ontransitionend = function() { - alert("DOM property"); // doesn't work - }; +```js +// will never run +document.onDOMContentLoaded = function() { + alert("DOM built"); +}; +``` -*!* - elem.addEventListener("transitionend", function() { - alert("addEventListener"); // shows up when the animation finishes - }); -*/!* -</script> +```js +// this way it works +document.addEventListener("DOMContentLoaded", function() { + alert("DOM built"); +}); ``` +So `addEventListener` is more universal. Although, such events are an exception rather than the rule. ```` ## Event object -To properly handle an event we'd want to know more about what's happened. Not just a "click" or a "keypress", but what were the pointer coordinates? Which key was pressed? And so on. +To properly handle an event we'd want to know more about what's happened. Not just a "click" or a "keydown", but what were the pointer coordinates? Which key was pressed? And so on. When an event happens, the browser creates an *event object*, puts details into it and passes it as an argument to the handler. -Here's an example of getting mouse coordinates from the event object: +Here's an example of getting pointer coordinates from the event object: ```html run <input type="button" value="Click me" id="elem"> @@ -351,14 +332,14 @@ Some properties of `event` object: : Event type, here it's `"click"`. `event.currentTarget` -: Element that handled the event. That's exactly the same as `this`, unless you bind `this` to something else, and then `event.currentTarget` becomes useful. +: Element that handled the event. That's exactly the same as `this`, unless the handler is an arrow function, or its `this` is bound to something else, then we can get the element from `event.currentTarget`. -`event.clientX / event.clientY` -: Window-relative coordinates of the cursor, for mouse events. +`event.clientX` / `event.clientY` +: Window-relative coordinates of the cursor, for pointer events. -There are more properties. They depend on the event type, so we'll study them later when we come to different events in details. +There are more properties. Many of them depend on the event type: keyboard events have one set of properties, pointer events - another one, we'll study them later when as we move on to the details of different events. -````smart header="The event object is also accessible from HTML" +````smart header="The event object is also available in HTML handlers" If we assign a handler in HTML, we can also use the `event` object, like this: ```html autorun height=60 @@ -371,7 +352,7 @@ That's possible because when the browser reads the attribute, it creates a handl ## Object handlers: handleEvent -We can assign an object as an event handler using `addEventListener`. When an event occurs, its `handleEvent` method is called with it. +We can assign not just a function, but an object as an event handler using `addEventListener`. When an event occurs, its `handleEvent` method is called. For instance: @@ -380,17 +361,19 @@ For instance: <button id="elem">Click me</button> <script> - elem.addEventListener('click', { + let obj = { handleEvent(event) { alert(event.type + " at " + event.currentTarget); } - }); + }; + + elem.addEventListener('click', obj); </script> ``` -In other words, when `addEventListener` receives an object as the handler, it calls `object.handleEvent(event)` in case of an event. +As we can see, when `addEventListener` receives an object as the handler, it calls `obj.handleEvent(event)` in case of an event. -We could also use a class for that: +We could also use objects of a custom class, like this: ```html run @@ -412,6 +395,7 @@ We could also use a class for that: *!* let menu = new Menu(); + elem.addEventListener('mousedown', menu); elem.addEventListener('mouseup', menu); */!* @@ -462,7 +446,7 @@ HTML attributes are used sparingly, because JavaScript in the middle of an HTML DOM properties are ok to use, but we can't assign more than one handler of the particular event. In many cases that limitation is not pressing. -The last way is the most flexible, but it is also the longest to write. There are few events that only work with it, for instance `transtionend` and `DOMContentLoaded` (to be covered). Also `addEventListener` supports objects as event handlers. In that case the method `handleEvent` is called in case of the event. +The last way is the most flexible, but it is also the longest to write. There are few events that only work with it, for instance `transitionend` and `DOMContentLoaded` (to be covered). Also `addEventListener` supports objects as event handlers. In that case the method `handleEvent` is called in case of the event. No matter how you assign the handler -- it gets an event object as the first argument. That object contains the details about what's happened. diff --git a/2-ui/2-events/02-bubbling-and-capturing/article.md b/2-ui/2-events/02-bubbling-and-capturing/article.md index 7269d9ba8..2448cfa5b 100644 --- a/2-ui/2-events/02-bubbling-and-capturing/article.md +++ b/2-ui/2-events/02-bubbling-and-capturing/article.md @@ -68,14 +68,14 @@ For instance, if we have a single handler `form.onclick`, then it can "catch" al In `form.onclick` handler: -- `this` (`=event.currentTarget`) is the `<form>` element, because the handler runs on it. -- `event.target` is the concrete element inside the form that actually was clicked. +- `this` (=`event.currentTarget`) is the `<form>` element, because the handler runs on it. +- `event.target` is the actual element inside the form that was clicked. Check it out: [codetabs height=220 src="bubble-target"] -It's possible that `event.target` equals `this` -- when the click is made directly on the `<form>` element. +It's possible that `event.target` could equal `this` -- it happens when the click is made directly on the `<form>` element. ## Stopping bubbling @@ -102,7 +102,7 @@ To stop the bubbling and prevent handlers on the current element from running, t ``` ```warn header="Don't stop bubbling without a need!" -Bubbling is convenient. Don't stop it without a real need: obvious and architecturally well-thought. +Bubbling is convenient. Don't stop it without a real need: obvious and architecturally well thought out. Sometimes `event.stopPropagation()` creates hidden pitfalls that later may become problems. @@ -110,7 +110,7 @@ For instance: 1. We create a nested menu. Each submenu handles clicks on its elements and calls `stopPropagation` so that the outer menu won't trigger. 2. Later we decide to catch clicks on the whole window, to track users' behavior (where people click). Some analytic systems do that. Usually the code uses `document.addEventListener('click'…)` to catch all clicks. -3. Our analytic won't work over the area where clicks are stopped by `stopPropagation`. We've got a "dead zone". +3. Our analytic won't work over the area where clicks are stopped by `stopPropagation`. Sadly, we've got a "dead zone". There's usually no real need to prevent the bubbling. A task that seemingly requires that may be solved by other means. One of them is to use custom events, we'll cover them later. Also we can write our data into the `event` object in one handler and read it in another one, so we can pass to handlers on parents information about the processing below. ``` @@ -120,26 +120,27 @@ There's usually no real need to prevent the bubbling. A task that seemingly requ There's another phase of event processing called "capturing". It is rarely used in real code, but sometimes can be useful. -The standard [DOM Events](http://www.w3.org/TR/DOM-Level-3-Events/) describes 3 phases of event propagation: +The standard [DOM Events](https://www.w3.org/TR/DOM-Level-3-Events/) describes 3 phases of event propagation: 1. Capturing phase -- the event goes down to the element. 2. Target phase -- the event reached the target element. 3. Bubbling phase -- the event bubbles up from the element. -Here's the picture of a click on `<td>` inside a table, taken from the specification: +Here's the picture, taken from the specification, of the capturing `(1)`, target `(2)` and bubbling `(3)` phases for a click event on a `<td>` inside a table:  -That is: for a click on `<td>` the event first goes through the ancestors chain down to the element (capturing), then it reaches the target, and then it goes up (bubbles), calling handlers on its way. +That is: for a click on `<td>` the event first goes through the ancestors chain down to the element (capturing phase), then it reaches the target and triggers there (target phase), and then it goes up (bubbling phase), calling handlers on its way. -**Before we only talked about bubbling, because the capturing phase is rarely used. Normally it is invisible to us.** +Until now, we only talked about bubbling, because the capturing phase is rarely used. -Handlers added using `on<event>`-property or using HTML attributes or using `addEventListener(event, handler)` don't know anything about capturing, they only run on the 2nd and 3rd phases. +In fact, the capturing phase was invisible for us, because handlers added using `on<event>`-property or using HTML attributes or using two-argument `addEventListener(event, handler)` don't know anything about capturing, they only run on the 2nd and 3rd phases. To catch an event on the capturing phase, we need to set the handler `capture` option to `true`: ```js elem.addEventListener(..., {capture: true}) + // or, just "true" is an alias to {capture: true} elem.addEventListener(..., true) ``` @@ -149,11 +150,10 @@ There are two possible values of the `capture` option: - If it's `false` (default), then the handler is set on the bubbling phase. - If it's `true`, then the handler is set on the capturing phase. -Note that while formally there are 3 phases, the 2nd phase ("target phase": the event reached the element) is not handled separately: handlers on both capturing and bubbling phases trigger at that phase. -If one puts capturing and bubbling handlers on the target element, the capture handler triggers last in the capturing phase and the bubble handler triggers first in the bubbling phase. +Note that while formally there are 3 phases, the 2nd phase ("target phase": the event reached the element) is not handled separately: handlers on both capturing and bubbling phases trigger at that phase. -Let's see it in action: +Let's see both capturing and bubbling in action: ```html run autorun height=140 edit <style> @@ -181,10 +181,10 @@ The code sets click handlers on *every* element in the document to see which one If you click on `<p>`, then the sequence is: -1. `HTML` -> `BODY` -> `FORM` -> `DIV` -> `P` (capturing phase, the first listener), and then: +1. `HTML` -> `BODY` -> `FORM` -> `DIV -> P` (capturing phase, the first listener): 2. `P` -> `DIV` -> `FORM` -> `BODY` -> `HTML` (bubbling phase, the second listener). -Please note that `P` shows up two times: at the end of capturing and at the start of bubbling. +Please note, the `P` shows up twice, because we've set two listeners: capturing and bubbling. The target triggers at the end of the first and at the beginning of the second phase. There's a property `event.eventPhase` that tells us the number of the phase on which the event was caught. But it's rarely used, because we usually know it in the handler. @@ -192,26 +192,42 @@ There's a property `event.eventPhase` that tells us the number of the phase on w If we `addEventListener(..., true)`, then we should mention the same phase in `removeEventListener(..., true)` to correctly remove the handler. ``` +````smart header="Listeners on the same element and same phase run in their set order" +If we have multiple event handlers on the same phase, assigned to the same element with `addEventListener`, they run in the same order as they are created: + +```js +elem.addEventListener("click", e => alert(1)); // guaranteed to trigger first +elem.addEventListener("click", e => alert(2)); +``` +```` + +```smart header="The `event.stopPropagation()` during the capturing also prevents the bubbling" +The `event.stopPropagation()` method and its sibling `event.stopImmediatePropagation()` can also be called on the capturing phase. Then not only the futher capturing is stopped, but the bubbling as well. + +In other words, normally the event goes first down ("capturing") and then up ("bubbling"). But if `event.stopPropagation()` is called during the capturing phase, then the event travel stops, no bubbling will occur. +``` + + ## Summary -The event handling process: +When an event happens -- the most nested element where it happens gets labeled as the "target element" (`event.target`). -- When an event happens -- the most nested element where it happens gets labeled as the "target element" (`event.target`). -- Then the event first moves from the document root down to the `event.target`, calling handlers assigned with `addEventListener(...., true)` on the way (`true` is a shorthand for `{capture: true}`). -- Then the event moves from `event.target` up to the root, calling handlers assigned using `on<event>` and `addEventListener` without the 3rd argument or with the 3rd argument `false`. +- Then the event moves down from the document root to `event.target`, calling handlers assigned with `addEventListener(..., true)` on the way (`true` is a shorthand for `{capture: true}`). +- Then handlers are called on the target element itself. +- Then the event bubbles up from `event.target` to the root, calling handlers assigned using `on<event>`, HTML attributes and `addEventListener` without the 3rd argument or with the 3rd argument `false/{capture:false}`. Each handler can access `event` object properties: - `event.target` -- the deepest element that originated the event. - `event.currentTarget` (=`this`) -- the current element that handles the event (the one that has the handler on it) -- `event.eventPhase` -- the current phase (capturing=1, bubbling=3). +- `event.eventPhase` -- the current phase (capturing=1, target=2, bubbling=3). Any event handler can stop the event by calling `event.stopPropagation()`, but that's not recommended, because we can't really be sure we won't need it above, maybe for completely different things. -The capturing phase is used very rarely, usually we handle events on bubbling. And there's a logic behind that. +The capturing phase is used very rarely, usually we handle events on bubbling. And there's a logical explanation for that. In real world, when an accident happens, local authorities react first. They know best the area where it happened. Then higher-level authorities if needed. -The same for event handlers. The code that set the handler on a particular element knows maximum details about the element and what it does. A handler on a particular `<td>` may be suited for that exactly `<td>`, it knows everything about it, so it should get the chance first. Then its immediate parent also knows about the context, but a little bit less, and so on till the very top element that handles general concepts and runs the last. +The same for event handlers. The code that set the handler on a particular element knows maximum details about the element and what it does. A handler on a particular `<td>` may be suited for that exactly `<td>`, it knows everything about it, so it should get the chance first. Then its immediate parent also knows about the context, but a little bit less, and so on till the very top element that handles general concepts and runs the last one. Bubbling and capturing lay the foundation for "event delegation" -- an extremely powerful event handling pattern that we study in the next chapter. diff --git a/2-ui/2-events/02-bubbling-and-capturing/event-order-bubbling.svg b/2-ui/2-events/02-bubbling-and-capturing/event-order-bubbling.svg index b62d99089..3339ecb97 100644 --- a/2-ui/2-events/02-bubbling-and-capturing/event-order-bubbling.svg +++ b/2-ui/2-events/02-bubbling-and-capturing/event-order-bubbling.svg @@ -1 +1,5 @@ -<svg xmlns="http://www.w3.org/2000/svg" width="353" height="216" viewBox="0 0 353 216"><defs><style>@import url(https://fonts.googleapis.com/css?family=Open+Sans:bold,italic,bolditalic%7CPT+Mono);@font-face{font-family:'PT Mono';font-weight:700;font-style:normal;src:local('PT MonoBold'),url(/font/PTMonoBold.woff2) format('woff2'),url(/font/PTMonoBold.woff) format('woff'),url(/font/PTMonoBold.ttf) format('truetype')}</style></defs><g id="dom" fill="none" fill-rule="evenodd" stroke="none" stroke-width="1"><g id="event-order-bubbling.svg"><path id="Rectangle-210" fill="#DBAF88" d="M159.488 140L174 186H60l14.512-46z"/><path id="Rectangle-209" stroke="#91C2A3" stroke-width="18" d="M173.634 81l16.09 51H43.276l16.09-51h114.267z"/><path id="Rectangle-208" stroke="#EFA39F" stroke-width="18" d="M39.986 29h153.028l22.71 72H17.276l22.71-72z"/><path id="Fill-46" fill="#166388" d="M121.5 141v13.816a4.5 4.5 0 11-9 0V141h9zm0-31v13h-9v-13h9zM117 20.53a4.471 4.471 0 013.362 1.3l17.64 17.64a4.5 4.5 0 01-6.364 6.364L121.5 35.698V92h-9V35.7l-10.138 10.136a4.5 4.5 0 11-6.363-6.364l17.639-17.64a4.477 4.477 0 013.363-1.3z"/><text id="1" fill="#643B0C" font-family="PTMono-Bold, PT Mono" font-size="14" font-weight="bold"><tspan x="210" y="105">1</tspan></text><text id="2" fill="#643B0C" font-family="PTMono-Bold, PT Mono" font-size="14" font-weight="bold"><tspan x="185" y="136">2</tspan></text><text id="3" fill="#C06334" font-family="PTMono-Bold, PT Mono" font-size="14" font-weight="bold"><tspan x="157" y="181">3</tspan></text><text id="Most-deeply-nested-e" fill="#AF6E24" font-family="OpenSans-Bold, Open Sans" font-size="14" font-weight="bold"><tspan x="233.48" y="175">Most deeply</tspan> <tspan x="221.306" y="194">nested element</tspan></text><path id="Line-30" stroke="#C06334" stroke-dasharray="3,6" stroke-linecap="square" stroke-width="2" d="M179.5 177.5h30"/></g></g></svg> \ No newline at end of file +<<<<<<< HEAD +<svg xmlns="http://www.w3.org/2000/svg" width="353" height="216" viewBox="0 0 353 216"><defs><style>@import url(https://fonts.googleapis.com/css?family=Open+Sans:bold,italic,bolditalic%7CPT+Mono);@font-face{font-family:'PT Mono';font-weight:700;font-style:normal;src:local('PT MonoBold'),url(/font/PTMonoBold.woff2) format('woff2'),url(/font/PTMonoBold.woff) format('woff'),url(/font/PTMonoBold.ttf) format('truetype')}</style></defs><g id="dom" fill="none" fill-rule="evenodd" stroke="none" stroke-width="1"><g id="event-order-bubbling.svg"><path id="Rectangle-210" fill="#DBAF88" d="M159.488 140L174 186H60l14.512-46z"/><path id="Rectangle-209" stroke="#91C2A3" stroke-width="18" d="M173.634 81l16.09 51H43.276l16.09-51h114.267z"/><path id="Rectangle-208" stroke="#EFA39F" stroke-width="18" d="M39.986 29h153.028l22.71 72H17.276l22.71-72z"/><path id="Fill-46" fill="#166388" d="M121.5 141v13.816a4.5 4.5 0 11-9 0V141h9zm0-31v13h-9v-13h9zM117 20.53a4.471 4.471 0 013.362 1.3l17.64 17.64a4.5 4.5 0 01-6.364 6.364L121.5 35.698V92h-9V35.7l-10.138 10.136a4.5 4.5 0 11-6.363-6.364l17.639-17.64a4.477 4.477 0 013.363-1.3z"/><text id="1" fill="#643B0C" font-family="PTMono-Bold, PT Mono" font-size="14" font-weight="bold"><tspan x="210" y="105">1</tspan></text><text id="2" fill="#643B0C" font-family="PTMono-Bold, PT Mono" font-size="14" font-weight="bold"><tspan x="185" y="136">2</tspan></text><text id="3" fill="#C06334" font-family="PTMono-Bold, PT Mono" font-size="14" font-weight="bold"><tspan x="157" y="181">3</tspan></text><text id="Most-deeply-nested-e" fill="#AF6E24" font-family="OpenSans-Bold, Open Sans" font-size="14" font-weight="bold"><tspan x="233.48" y="175">Most deeply</tspan> <tspan x="221.306" y="194">nested element</tspan></text><path id="Line-30" stroke="#C06334" stroke-dasharray="3,6" stroke-linecap="square" stroke-width="2" d="M179.5 177.5h30"/></g></g></svg> +======= +<svg xmlns="http://www.w3.org/2000/svg" width="353" height="216" viewBox="0 0 353 216"><defs><style>@import url(https://fonts.googleapis.com/css?family=Open+Sans:bold,italic,bolditalic%7CPT+Mono);@font-face{font-family:'PT Mono';font-weight:700;font-style:normal;src:local('PT MonoBold'),url(/font/PTMonoBold.woff2) format('woff2'),url(/font/PTMonoBold.woff) format('woff'),url(/font/PTMonoBold.ttf) format('truetype')}</style></defs><g id="dom" fill="none" fill-rule="evenodd" stroke="none" stroke-width="1"><g id="event-order-bubbling.svg"><path id="Rectangle-210" fill="#DBAF88" d="M159.488 140L174 186H60l14.512-46z"/><path id="Rectangle-209" stroke="#91C2A3" stroke-width="18" d="M173.634 81l16.09 51H43.276l16.09-51h114.267z"/><path id="Rectangle-208" stroke="#EFA39F" stroke-width="18" d="M193.014 29l22.71 72H17.276l22.71-72h153.028z"/><path id="Fill-46" fill="#166388" d="M121.5 141v13.816a4.5 4.5 0 11-9 0V141h9zm0-31v13h-9v-13h9zM117 20.53a4.471 4.471 0 013.362 1.3l17.64 17.64a4.5 4.5 0 01-6.364 6.364L121.5 35.698V92h-9V35.7l-10.138 10.136a4.5 4.5 0 11-6.363-6.364l17.639-17.64a4.477 4.477 0 013.363-1.3z"/><text id="1" fill="#643B0C" font-family="PTMono-Bold, PT Mono" font-size="14" font-weight="bold"><tspan x="210" y="105">1</tspan></text><text id="2" fill="#643B0C" font-family="PTMono-Bold, PT Mono" font-size="14" font-weight="bold"><tspan x="185" y="136">2</tspan></text><text id="3" fill="#C06334" font-family="PTMono-Bold, PT Mono" font-size="14" font-weight="bold"><tspan x="157" y="181">3</tspan></text><text id="Most-deeply-nested-e" fill="#AF6E24" font-family="OpenSans-Bold, Open Sans" font-size="14" font-weight="bold"><tspan x="233.48" y="175">Most deeply</tspan> <tspan x="221.306" y="194">nested element</tspan></text><path id="Line-30" stroke="#C06334" stroke-dasharray="3,6" stroke-linecap="square" stroke-width="2" d="M179.5 177.5h30"/></g></g></svg> +>>>>>>> 540d753e90789205fc6e75c502f68382c87dea9b diff --git a/2-ui/2-events/03-event-delegation/4-behavior-tooltip/task.md b/2-ui/2-events/03-event-delegation/4-behavior-tooltip/task.md index fc2462289..3001b9915 100644 --- a/2-ui/2-events/03-event-delegation/4-behavior-tooltip/task.md +++ b/2-ui/2-events/03-event-delegation/4-behavior-tooltip/task.md @@ -18,12 +18,14 @@ Should work like this: [iframe src="solution" height=200 border=1] -In this task we assume that all elements with `data-tooltip` have only text inside. No nested tags. +In this task we assume that all elements with `data-tooltip` have only text inside. No nested tags (yet). Details: +- The distance between the element and the tooltip should be `5px`. +- The tooltip should be centered relative to the element, if possible. - The tooltip should not cross window edges. Normally it should be above the element, but if the element is at the page top and there's no space for the tooltip, then below it. -- The tooltip is given in the `data-tooltip` attribute. It can be arbitrary HTML. +- The tooltip content is given in the `data-tooltip` attribute. It can be arbitrary HTML. You'll need two events here: - `mouseover` triggers when a pointer comes over an element. @@ -33,4 +35,4 @@ Please use event delegation: set up two handlers on `document` to track all "ove After the behavior is implemented, even people unfamiliar with JavaScript can add annotated elements. -P.S. To keep things natural and simple: only one tooltip may show up at a time. +P.S. Only one tooltip may show up at a time. diff --git a/2-ui/2-events/03-event-delegation/article.md b/2-ui/2-events/03-event-delegation/article.md index 8333e6bd1..881183740 100644 --- a/2-ui/2-events/03-event-delegation/article.md +++ b/2-ui/2-events/03-event-delegation/article.md @@ -1,11 +1,11 @@ # Event delegation -Capturing and bubbling allow us to implement one of most powerful event handling patterns called *event delegation*. +Capturing and bubbling allow us to implement one of the most powerful event handling patterns called *event delegation*. The idea is that if we have a lot of elements handled in a similar way, then instead of assigning a handler to each of them -- we put a single handler on their common ancestor. -In the handler we get `event.target`, see where the event actually happened and handle it. +In the handler we get `event.target` to see where the event actually happened and handle it. Let's see an example -- the [Ba-Gua diagram](http://en.wikipedia.org/wiki/Ba_gua) reflecting the ancient Chinese philosophy. @@ -21,9 +21,9 @@ The HTML is like this: <th colspan="3"><em>Bagua</em> Chart: Direction, Element, Color, Meaning</th> </tr> <tr> - <td>...<strong>Northwest</strong>...</td> - <td>...</td> - <td>...</td> + <td class="nw"><strong>Northwest</strong><br>Metal<br>Silver<br>Elders</td> + <td class="n">...</td> + <td class="ne">...</td> </tr> <tr>...2 more lines of this kind...</tr> <tr>...2 more lines of this kind...</tr> @@ -101,17 +101,17 @@ table.onclick = function(event) { Explanations: 1. The method `elem.closest(selector)` returns the nearest ancestor that matches the selector. In our case we look for `<td>` on the way up from the source element. -2. If `event.target` is not inside any `<td>`, then the call returns `null`, and we don't have to do anything. -3. In case of nested tables, `event.target` may be a `<td>` lying outside of the current table. So we check if that's actually *our table's* `<td>`. +2. If `event.target` is not inside any `<td>`, then the call returns immediately, as there's nothing to do. +3. In case of nested tables, `event.target` may be a `<td>`, but lying outside of the current table. So we check if that's actually *our table's* `<td>`. 4. And, if it's so, then highlight it. -## Delegation example: actions in markup +As the result, we have a fast, efficient highlighting code, that doesn't care about the total number of `<td>` in the table. -The event delegation may be used to optimize event handling. We use a single handler for similar actions on many elements. Like we did it for highlighting `<td>`. +## Delegation example: actions in markup -But we can also use a single handler as an entry point for many different things. +There are other uses for event delegation. -For instance, we want to make a menu with buttons "Save", "Load", "Search" and so on. And there's an object with methods `save`, `load`, `search`.... +Let's say, we want to make a menu with buttons "Save", "Load", "Search" and so on. And there's an object with methods `save`, `load`, `search`... How to match them? The first idea may be to assign a separate handler to each button. But there's a more elegant solution. We can add a handler for the whole menu and `data-action` attributes for buttons that has the method to call: @@ -121,7 +121,7 @@ The first idea may be to assign a separate handler to each button. But there's a The handler reads the attribute and executes the method. Take a look at the working example: -```html autorun height=60 run +```html autorun height=60 run untrusted <div id="menu"> <button data-action="save">Save</button> <button data-action="load">Load</button> @@ -161,9 +161,9 @@ The handler reads the attribute and executes the method. Take a look at the work </script> ``` -Please note that `this.onClick` is bound to `this` in `(*)`. That's important, because otherwise `this` inside it would reference the DOM element (`elem`), not the menu object, and `this[action]` would not be what we need. +Please note that `this.onClick` is bound to `this` in `(*)`. That's important, because otherwise `this` inside it would reference the DOM element (`elem`), not the `Menu` object, and `this[action]` would not be what we need. -So, what the delegation gives us here? +So, what advantages does delegation give us here? ```compare + We don't need to write the code to assign a handler to each button. Just make a method and put it in the markup. @@ -177,12 +177,12 @@ We could also use classes `.action-save`, `.action-load`, but an attribute `data We can also use event delegation to add "behaviors" to elements *declaratively*, with special attributes and classes. The pattern has two parts: -1. We add a special attribute to an element. +1. We add a custom attribute to an element that describes its behavior. 2. A document-wide handler tracks events, and if an event happens on an attributed element -- performs the action. -### Counter +### Behavior: Counter -For instance, here the attribute `data-counter` adds a behavior: "increase on click" to buttons: +For instance, here the attribute `data-counter` adds a behavior: "increase value on click" to buttons: ```html run autorun height=60 Counter: <input type="button" value="1" data-counter> @@ -204,14 +204,14 @@ If we click a button -- its value is increased. Not buttons, but the general app There can be as many attributes with `data-counter` as we want. We can add new ones to HTML at any moment. Using the event delegation we "extended" HTML, added an attribute that describes a new behavior. ```warn header="For document-level handlers -- always `addEventListener`" -When we assign an event handler to the `document` object, we should always use `addEventListener`, not `document.onclick`, because the latter will cause conflicts: new handlers overwrite old ones. +When we assign an event handler to the `document` object, we should always use `addEventListener`, not `document.on<event>`, because the latter will cause conflicts: new handlers overwrite old ones. For real projects it's normal that there are many handlers on `document` set by different parts of the code. ``` -### Toggler +### Behavior: Toggler -One more example. A click on an element with the attribute `data-toggle-id` will show/hide the element with the given `id`: +One more example of behavior. A click on an element with the attribute `data-toggle-id` will show/hide the element with the given `id`: ```html autorun run height=60 <button *!*data-toggle-id="subscribe-mail"*/!*> @@ -242,13 +242,13 @@ That may become really convenient -- no need to write JavaScript for every such We can combine multiple behaviors on a single element as well. -The "behavior" pattern can be an alternative of mini-fragments of JavaScript. +The "behavior" pattern can be an alternative to mini-fragments of JavaScript. ## Summary Event delegation is really cool! It's one of the most helpful patterns for DOM events. -It's often used to add same handling for many similar elements, but not only for that. +It's often used to add the same handling for many similar elements, but not only for that. The algorithm: @@ -261,12 +261,12 @@ Benefits: ```compare + Simplifies initialization and saves memory: no need to add many handlers. + Less code: when adding or removing elements, no need to add/remove handlers. -+ DOM modifications: we can mass add/remove elements with `innerHTML` and alike. ++ DOM modifications: we can mass add/remove elements with `innerHTML` and the like. ``` The delegation has its limitations of course: ```compare - First, the event must be bubbling. Some events do not bubble. Also, low-level handlers should not use `event.stopPropagation()`. -- Second, the delegation may add CPU load, because the container-level handler reacts on events in any place of the container, no matter if they interest us or not. But usually the load is negligible, so we don't take it into account. +- Second, the delegation may add CPU load, because the container-level handler reacts on events in any place of the container, no matter whether they interest us or not. But usually the load is negligible, so we don't take it into account. ``` diff --git a/2-ui/2-events/03-event-delegation/bagua-bubble.svg b/2-ui/2-events/03-event-delegation/bagua-bubble.svg index c4cd1ee1e..83086ed3f 100644 --- a/2-ui/2-events/03-event-delegation/bagua-bubble.svg +++ b/2-ui/2-events/03-event-delegation/bagua-bubble.svg @@ -1 +1,5 @@ -<svg xmlns="http://www.w3.org/2000/svg" width="369" height="216" viewBox="0 0 369 216"><defs><style>@import url(https://fonts.googleapis.com/css?family=Open+Sans:bold,italic,bolditalic%7CPT+Mono);@font-face{font-family:'PT Mono';font-weight:700;font-style:normal;src:local('PT MonoBold'),url(/font/PTMonoBold.woff2) format('woff2'),url(/font/PTMonoBold.woff) format('woff'),url(/font/PTMonoBold.ttf) format('truetype')}</style></defs><g id="dom" fill="none" fill-rule="evenodd" stroke="none" stroke-width="1"><g id="bagua-bubble.svg"><path id="Rectangle-210" fill="#DBAF88" d="M202.488 140L217 186H103l14.512-46z"/><path id="Rectangle-209" stroke="#91C2A3" stroke-width="18" d="M216.634 81l16.09 51H86.276l16.09-51h114.267z"/><path id="Rectangle-208" stroke="#EFA39F" stroke-width="18" d="M82.986 29h153.028l22.71 72H60.276l22.71-72z"/><path id="Fill-46" fill="#166388" d="M164.5 141v13.816a4.5 4.5 0 11-9 0V141h9zm0-31v13h-9v-13h9zM160 20.53a4.471 4.471 0 013.362 1.3l17.64 17.64a4.5 4.5 0 01-6.364 6.364L164.5 35.698V92h-9V35.7l-10.138 10.136a4.5 4.5 0 11-6.363-6.364l17.639-17.64a4.477 4.477 0 013.363-1.3z"/><text id="<table>" fill="#D35155" font-family="PTMono-Bold, PT Mono" font-size="14" font-weight="bold"><tspan x="9" y="30"><table></tspan></text><text id="<td>" fill="#478964" font-family="PTMono-Bold, PT Mono" font-size="14" font-weight="bold"><tspan x="36" y="136"><td></tspan></text><text id="<strong>" fill="#AF6E24" font-family="PTMono-Bold, PT Mono" font-size="14" font-weight="bold"><tspan x="35" y="181"><strong></tspan></text><text id="event.target" fill="#AF6E24" font-family="OpenSans-Bold, Open Sans" font-size="14" font-weight="bold"><tspan x="271.537" y="181">event.target</tspan></text><path id="Line-30" stroke="#C06334" stroke-dasharray="3,6" stroke-linecap="square" stroke-width="2" d="M229.5 177.5h30"/></g></g></svg> \ No newline at end of file +<<<<<<< HEAD +<svg xmlns="http://www.w3.org/2000/svg" width="369" height="216" viewBox="0 0 369 216"><defs><style>@import url(https://fonts.googleapis.com/css?family=Open+Sans:bold,italic,bolditalic%7CPT+Mono);@font-face{font-family:'PT Mono';font-weight:700;font-style:normal;src:local('PT MonoBold'),url(/font/PTMonoBold.woff2) format('woff2'),url(/font/PTMonoBold.woff) format('woff'),url(/font/PTMonoBold.ttf) format('truetype')}</style></defs><g id="dom" fill="none" fill-rule="evenodd" stroke="none" stroke-width="1"><g id="bagua-bubble.svg"><path id="Rectangle-210" fill="#DBAF88" d="M202.488 140L217 186H103l14.512-46z"/><path id="Rectangle-209" stroke="#91C2A3" stroke-width="18" d="M216.634 81l16.09 51H86.276l16.09-51h114.267z"/><path id="Rectangle-208" stroke="#EFA39F" stroke-width="18" d="M82.986 29h153.028l22.71 72H60.276l22.71-72z"/><path id="Fill-46" fill="#166388" d="M164.5 141v13.816a4.5 4.5 0 11-9 0V141h9zm0-31v13h-9v-13h9zM160 20.53a4.471 4.471 0 013.362 1.3l17.64 17.64a4.5 4.5 0 01-6.364 6.364L164.5 35.698V92h-9V35.7l-10.138 10.136a4.5 4.5 0 11-6.363-6.364l17.639-17.64a4.477 4.477 0 013.363-1.3z"/><text id="<table>" fill="#D35155" font-family="PTMono-Bold, PT Mono" font-size="14" font-weight="bold"><tspan x="9" y="30"><table></tspan></text><text id="<td>" fill="#478964" font-family="PTMono-Bold, PT Mono" font-size="14" font-weight="bold"><tspan x="36" y="136"><td></tspan></text><text id="<strong>" fill="#AF6E24" font-family="PTMono-Bold, PT Mono" font-size="14" font-weight="bold"><tspan x="35" y="181"><strong></tspan></text><text id="event.target" fill="#AF6E24" font-family="OpenSans-Bold, Open Sans" font-size="14" font-weight="bold"><tspan x="271.537" y="181">event.target</tspan></text><path id="Line-30" stroke="#C06334" stroke-dasharray="3,6" stroke-linecap="square" stroke-width="2" d="M229.5 177.5h30"/></g></g></svg> +======= +<svg xmlns="http://www.w3.org/2000/svg" width="369" height="216" viewBox="0 0 369 216"><defs><style>@import url(https://fonts.googleapis.com/css?family=Open+Sans:bold,italic,bolditalic%7CPT+Mono);@font-face{font-family:'PT Mono';font-weight:700;font-style:normal;src:local('PT MonoBold'),url(/font/PTMonoBold.woff2) format('woff2'),url(/font/PTMonoBold.woff) format('woff'),url(/font/PTMonoBold.ttf) format('truetype')}</style></defs><g id="dom" fill="none" fill-rule="evenodd" stroke="none" stroke-width="1"><g id="bagua-bubble.svg"><path id="Rectangle-210" fill="#DBAF88" d="M202.488 140L217 186H103l14.512-46z"/><path id="Rectangle-209" stroke="#91C2A3" stroke-width="18" d="M216.634 81l16.09 51H86.276l16.09-51h114.267z"/><path id="Rectangle-208" stroke="#EFA39F" stroke-width="18" d="M236.014 29l22.71 72H60.276l22.71-72h153.028z"/><path id="Fill-46" fill="#166388" d="M164.5 141v13.816a4.5 4.5 0 11-9 0V141h9zm0-31v13h-9v-13h9zM160 20.53a4.471 4.471 0 013.362 1.3l17.64 17.64a4.5 4.5 0 01-6.364 6.364L164.5 35.698V92h-9V35.7l-10.138 10.136a4.5 4.5 0 11-6.363-6.364l17.639-17.64a4.477 4.477 0 013.363-1.3z"/><text id="<table>" fill="#D35155" font-family="PTMono-Bold, PT Mono" font-size="14" font-weight="bold"><tspan x="9" y="30"><table></tspan></text><text id="<td>" fill="#478964" font-family="PTMono-Bold, PT Mono" font-size="14" font-weight="bold"><tspan x="36" y="136"><td></tspan></text><text id="<strong>" fill="#AF6E24" font-family="PTMono-Bold, PT Mono" font-size="14" font-weight="bold"><tspan x="35" y="181"><strong></tspan></text><text id="event.target" fill="#AF6E24" font-family="OpenSans-Bold, Open Sans" font-size="14" font-weight="bold"><tspan x="271.537" y="181">event.target</tspan></text><path id="Line-30" stroke="#C06334" stroke-dasharray="3,6" stroke-linecap="square" stroke-width="2" d="M229.5 177.5h30"/></g></g></svg> +>>>>>>> 540d753e90789205fc6e75c502f68382c87dea9b diff --git a/2-ui/2-events/04-default-browser-action/1-why-return-false-fails/solution.md b/2-ui/2-events/04-default-browser-action/1-why-return-false-fails/solution.md index 2862e6006..4d175ca01 100644 --- a/2-ui/2-events/04-default-browser-action/1-why-return-false-fails/solution.md +++ b/2-ui/2-events/04-default-browser-action/1-why-return-false-fails/solution.md @@ -20,7 +20,7 @@ The fix is simple: } </script> -<a href="http://w3.org" onclick="*!*return handler()*/!*">w3.org</a> +<a href="https://w3.org" onclick="*!*return handler()*/!*">w3.org</a> ``` Also we can use `event.preventDefault()`, like this: @@ -35,5 +35,5 @@ Also we can use `event.preventDefault()`, like this: */!* </script> -<a href="http://w3.org" onclick="*!*handler(event)*/!*">w3.org</a> +<a href="https://w3.org" onclick="*!*handler(event)*/!*">w3.org</a> ``` diff --git a/2-ui/2-events/04-default-browser-action/1-why-return-false-fails/task.md b/2-ui/2-events/04-default-browser-action/1-why-return-false-fails/task.md index 8fa4fb29a..9a5bb98ac 100644 --- a/2-ui/2-events/04-default-browser-action/1-why-return-false-fails/task.md +++ b/2-ui/2-events/04-default-browser-action/1-why-return-false-fails/task.md @@ -14,7 +14,7 @@ Why in the code below `return false` doesn't work at all? } </script> -<a href="http://w3.org" onclick="handler()">the browser will go to w3.org</a> +<a href="https://w3.org" onclick="handler()">the browser will go to w3.org</a> ``` The browser follows the URL on click, but we don't want it. diff --git a/2-ui/2-events/04-default-browser-action/2-catch-link-navigation/solution.view/index.html b/2-ui/2-events/04-default-browser-action/2-catch-link-navigation/solution.view/index.html index 90aecd9dc..51ac0838b 100644 --- a/2-ui/2-events/04-default-browser-action/2-catch-link-navigation/solution.view/index.html +++ b/2-ui/2-events/04-default-browser-action/2-catch-link-navigation/solution.view/index.html @@ -16,7 +16,7 @@ <fieldset id="contents"> <legend>#contents</legend> <p> - How about to read <a href="http://wikipedia.org">Wikipedia</a> or visit <a href="http://w3.org"><i>W3.org</i></a> and learn about modern standards? + How about to read <a href="https://wikipedia.org">Wikipedia</a> or visit <a href="https://w3.org"><i>W3.org</i></a> and learn about modern standards? </p> </fieldset> diff --git a/2-ui/2-events/04-default-browser-action/2-catch-link-navigation/source.view/index.html b/2-ui/2-events/04-default-browser-action/2-catch-link-navigation/source.view/index.html index b88834c96..f0c934391 100644 --- a/2-ui/2-events/04-default-browser-action/2-catch-link-navigation/source.view/index.html +++ b/2-ui/2-events/04-default-browser-action/2-catch-link-navigation/source.view/index.html @@ -16,7 +16,7 @@ <fieldset id="contents"> <legend>#contents</legend> <p> - How about to read <a href="http://wikipedia.org">Wikipedia</a> or visit <a href="http://w3.org"><i>W3.org</i></a> and learn about modern standards? + How about to read <a href="https://wikipedia.org">Wikipedia</a> or visit <a href="https://w3.org"><i>W3.org</i></a> and learn about modern standards? </p> </fieldset> diff --git a/2-ui/2-events/04-default-browser-action/2-catch-link-navigation/task.md b/2-ui/2-events/04-default-browser-action/2-catch-link-navigation/task.md index 6439376bf..6ca456c2c 100644 --- a/2-ui/2-events/04-default-browser-action/2-catch-link-navigation/task.md +++ b/2-ui/2-events/04-default-browser-action/2-catch-link-navigation/task.md @@ -12,5 +12,5 @@ Like this: Details: -- HTML inside the element may be loaded or regenerated dynamically at any time, so we can't find all links and put handlers on them. Use the event delegation. +- HTML inside the element may be loaded or regenerated dynamically at any time, so we can't find all links and put handlers on them. Use event delegation. - The content may have nested tags. Inside links too, like `<a href=".."><i>...</i></a>`. diff --git a/2-ui/2-events/04-default-browser-action/3-image-gallery/solution.view/gallery.css b/2-ui/2-events/04-default-browser-action/3-image-gallery/solution.view/gallery.css index 4522006ae..8d6472ee6 100644 --- a/2-ui/2-events/04-default-browser-action/3-image-gallery/solution.view/gallery.css +++ b/2-ui/2-events/04-default-browser-action/3-image-gallery/solution.view/gallery.css @@ -4,16 +4,6 @@ body { font: 75%/120% sans-serif; } -h2 { - font: bold 190%/100% sans-serif; - margin: 0 0 .2em; -} - -h2 em { - font: normal 80%/100% sans-serif; - color: #999999; -} - #largeImg { border: solid 1px #ccc; width: 550px; diff --git a/2-ui/2-events/04-default-browser-action/3-image-gallery/source.view/gallery.css b/2-ui/2-events/04-default-browser-action/3-image-gallery/source.view/gallery.css index b6e523014..8d6472ee6 100644 --- a/2-ui/2-events/04-default-browser-action/3-image-gallery/source.view/gallery.css +++ b/2-ui/2-events/04-default-browser-action/3-image-gallery/source.view/gallery.css @@ -4,16 +4,6 @@ body { font: 75%/120% sans-serif; } -h2 { - font: bold 190%/100% sans-serif; - margin: 0 0 .2em; -} - -h2 em { - font: normal 80%/100% sans-serif; - color: #999999; -} - #largeImg { border: solid 1px #ccc; width: 550px; @@ -32,4 +22,13 @@ h2 em { #thumbs a:hover { border-color: #FF9900; +} + +#thumbs li { + list-style: none; +} + +#thumbs { + margin: 0; + padding: 0; } \ No newline at end of file diff --git a/2-ui/2-events/04-default-browser-action/article.md b/2-ui/2-events/04-default-browser-action/article.md index 44355de0d..cd815654f 100644 --- a/2-ui/2-events/04-default-browser-action/article.md +++ b/2-ui/2-events/04-default-browser-action/article.md @@ -1,23 +1,23 @@ # Browser default actions -Many events automatically lead to browser actions. +Many events automatically lead to certain actions performed by the browser. For instance: -- A click on a link -- initiates going to its URL. -- A click on submit button inside a form -- initiates its submission to the server. -- Pressing a mouse button over a text and moving it -- selects the text. +- A click on a link - initiates navigation to its URL. +- A click on a form submit button - initiates its submission to the server. +- Pressing a mouse button over a text and moving it - selects the text. -If we handle an event in JavaScript, often we don't want browser actions. Fortunately, it can be prevented. +If we handle an event in JavaScript, we may not want the corresponding browser action to happen, and want to implement another behavior instead. ## Preventing browser actions There are two ways to tell the browser we don't want it to act: - The main way is to use the `event` object. There's a method `event.preventDefault()`. -- If the handler is assigned using `on<event>` (not by `addEventListener`), then we can just return `false` from it. +- If the handler is assigned using `on<event>` (not by `addEventListener`), then returning `false` also works the same. -In the example below a click to links doesn't lead to URL change: +In this HTML, a click on a link doesn't lead to navigation; the browser doesn't do anything: ```html autorun height=60 no-beautify <a href="/" onclick="return false">Click here</a> @@ -25,12 +25,14 @@ or <a href="/" onclick="event.preventDefault()">here</a> ``` -```warn header="Not necessary to return `true`" +In the next example we'll use this technique to create a JavaScript-powered menu. + +```warn header="Returning `false` from a handler is an exception" The value returned by an event handler is usually ignored. -The only exception -- is `return false` from a handler assigned using `on<event>`. +The only exception is `return false` from a handler assigned using `on<event>`. -In all other cases, the return is not needed and it's not processed anyhow. +In all other cases, `return` value is ignored. In particular, there's no sense in returning `true`. ``` ### Example: the menu @@ -49,7 +51,7 @@ Here's how it looks with some CSS: [iframe height=70 src="menu" link edit] -Menu items are links `<a>`, not buttons. There are several benefits, for instance: +Menu items are implemented as HTML-links `<a>`, not buttons `<button>`. There are several reasons to do so, for instance: - Many people like to use "right click" -- "open in a new window". If we use `<button>` or `<span>`, that doesn't work. - Search engines follow `<a href="...">` links while indexing. @@ -71,20 +73,16 @@ menu.onclick = function(event) { }; ``` -If we omit `return false`, then after our code executes the browser will do its "default action" -- following to the URL in `href`. - -By the way, using event delegation here makes our menu flexible. We can add nested lists and style them using CSS to "slide down". - +If we omit `return false`, then after our code executes the browser will do its "default action" -- navigating to the URL in `href`. And we don't need that here, as we're handling the click by ourselves. -## Prevent further events +By the way, using event delegation here makes our menu very flexible. We can add nested lists and style them using CSS to "slide down". +````smart header="Follow-up events" Certain events flow one into another. If we prevent the first event, there will be no second. For instance, `mousedown` on an `<input>` field leads to focusing in it, and the `focus` event. If we prevent the `mousedown` event, there's no focus. -Try to click on the first `<input>` below -- the `focus` event happens. That's normal. - -But if you click the second one, there's no focus. +Try to click on the first `<input>` below -- the `focus` event happens. But if you click the second one, there's no focus. ```html run autorun <input value="Focus works" onfocus="this.value=''"> @@ -92,12 +90,13 @@ But if you click the second one, there's no focus. ``` That's because the browser action is canceled on `mousedown`. The focusing is still possible if we use another way to enter the input. For instance, the `key:Tab` key to switch from the 1st input into the 2nd. But not with the mouse click any more. +```` ## The "passive" handler option The optional `passive: true` option of `addEventListener` signals the browser that the handler is not going to call `preventDefault()`. -Why that may be needed? +Why might that be needed? There are some events like `touchmove` on mobile devices (when the user moves their finger across the screen), that cause scrolling by default, but that scrolling can be prevented using `preventDefault()` in the handler. @@ -114,23 +113,25 @@ The property `event.defaultPrevented` is `true` if the default action was preven There's an interesting use case for it. -You remember in the chapter <info:bubbling-and-capturing> we talked about `event.stopPropagation()` and why stopping bubbling is bad? +You remember in the chapter <info:bubbling-and-capturing> we talked about `event.stopPropagation()` and why stopping bubbling is bad? -Sometimes we can use `event.defaultPrevented` instead. +Sometimes we can use `event.defaultPrevented` instead, to signal other event handlers that the event was handled. -Let's see a practical example where stopping the bubbling looks necessary, but actually we can do well without it. +Let's see a practical example. By default the browser on `contextmenu` event (right mouse click) shows a context menu with standard options. We can prevent it and show our own, like this: ```html autorun height=50 no-beautify run -<button>Right-click for browser context menu</button> +<button>Right-click shows browser context menu</button> <button *!*oncontextmenu="alert('Draw our menu'); return false"*/!*> - Right-click for our context menu + Right-click shows our context menu </button> ``` -Now let's say we want to implement our own document-wide context menu, with our options. And inside the document we may have other elements with their own context menus: +Now, in addition to that context menu we'd like to implement document-wide context menu. + +Upon right click, the closest context menu should show up. ```html autorun height=80 no-beautify run <p>Right-click here for the document context menu</p> @@ -151,7 +152,7 @@ Now let's say we want to implement our own document-wide context menu, with our The problem is that when we click on `elem`, we get two menus: the button-level and (the event bubbles up) the document-level menu. -How to fix it? One of solutions is to think like: "We fully handle the event in the button handler, let's stop it" and use `event.stopPropagation()`: +How to fix it? One of solutions is to think like: "When we handle right-click in the button handler, let's stop its bubbling" and use `event.stopPropagation()`: ```html autorun height=80 no-beautify run <p>Right-click for the document menu</p> @@ -179,7 +180,7 @@ An alternative solution would be to check in the `document` handler if the defau ```html autorun height=80 no-beautify run -<p>Right-click for the document menu (fixed with event.defaultPrevented)</p> +<p>Right-click for the document menu (added a check for event.defaultPrevented)</p> <button id="elem">Right-click for the button menu</button> <script> @@ -206,7 +207,7 @@ As we can clearly see, `event.stopPropagation()` and `event.preventDefault()` (a ``` ```smart header="Nested context menus architecture" -There are also alternative ways to implement nested context menus. One of them is to have a special global object with a method that handles `document.oncontextmenu`, and also methods that allow to store various "lower-level" handlers in it. +There are also alternative ways to implement nested context menus. One of them is to have a single global object with a handler for `document.oncontextmenu`, and also methods that allow us to store other handlers in it. The object will catch any right-click, look through stored handlers and run the appropriate one. @@ -220,7 +221,6 @@ There are many default browser actions: - `mousedown` -- starts the selection (move the mouse to select). - `click` on `<input type="checkbox">` -- checks/unchecks the `input`. - `submit` -- clicking an `<input type="submit">` or hitting `key:Enter` inside a form field causes this event to happen, and the browser submits the form after it. -- `wheel` -- rolling a mouse wheel event has scrolling as the default action. - `keydown` -- pressing a key may lead to adding a character into a field, or other actions. - `contextmenu` -- the event happens on a right-click, the action is to show the browser context menu. - ...there are more... @@ -236,9 +236,9 @@ If the default action was prevented, the value of `event.defaultPrevented` becom ```warn header="Stay semantic, don't abuse" Technically, by preventing default actions and adding JavaScript we can customize the behavior of any elements. For instance, we can make a link `<a>` work like a button, and a button `<button>` behave as a link (redirect to another URL or so). -But we should generally keep the semantic meaning of HTML elements. For instance, `<a>` should preform navigation, not a button. +But we should generally keep the semantic meaning of HTML elements. For instance, `<a>` should perform navigation, not a button. Besides being "just a good thing", that makes your HTML better in terms of accessibility. -Also if we consider the example with `<a>`, then please note: a browser allows to open such links in a new window (by right-clicking them and other means). And people like that. But if we make a button behave as a link using JavaScript and even look like a link using CSS, then `<a>`-specific browser features still won't work for it. +Also if we consider the example with `<a>`, then please note: a browser allows us to open such links in a new window (by right-clicking them and other means). And people like that. But if we make a button behave as a link using JavaScript and even look like a link using CSS, then `<a>`-specific browser features still won't work for it. ``` diff --git a/2-ui/2-events/05-dispatch-events/article.md b/2-ui/2-events/05-dispatch-events/article.md index 2b13d2360..047413fd3 100644 --- a/2-ui/2-events/05-dispatch-events/article.md +++ b/2-ui/2-events/05-dispatch-events/article.md @@ -2,23 +2,23 @@ We can not only assign handlers, but also generate events from JavaScript. -Custom events can be used to create "graphical components". For instance, a root element of the menu may trigger events telling what happens with the menu: `open` (menu open), `select` (an item is selected) and so on. +Custom events can be used to create "graphical components". For instance, a root element of our own JS-based menu may trigger events telling what happens with the menu: `open` (menu open), `select` (an item is selected) and so on. Another code may listen for the events and observe what's happening with the menu. -Also we can generate built-in events like `click`, `mousedown` etc, that may be good for testing. +We can generate not only completely new events, that we invent for our own purposes, but also built-in ones, such as `click`, `mousedown` etc. That may be helpful for automated testing. ## Event constructor -Events form a hierarchy, just like DOM element classes. The root is the built-in [Event](http://www.w3.org/TR/dom/#event) class. +Built-in event classes form a hierarchy, similar to DOM element classes. The root is the built-in [Event](https://dom.spec.whatwg.org/#events) class. We can create `Event` objects like this: ```js -let event = new Event(event type[, options]); +let event = new Event(type[, options]); ``` Arguments: -- *event type* -- may be any string, like `"click"` or our own like `"hey-ho!"`. +- *type* -- event type, a string like `"click"` or our own like `"my-event"`. - *options* -- the object with two optional properties: - `bubbles: true/false` -- if `true`, then the event bubbles. - `cancelable: true/false` -- if `true`, then the "default action" may be prevented. Later we'll see what it means for custom events. @@ -27,9 +27,9 @@ Arguments: ## dispatchEvent -After an event object is created, we should "run" it on an element using the call `elem.dispatchEvent(event)`. +After an event object is created, we should "run" it on an element using the call `elem.dispatchEvent(event)`. -Then handlers react on it as if it were a regular built-in event. If the event was created with the `bubbles` flag, then it bubbles. +Then handlers react on it as if it were a regular browser event. If the event was created with the `bubbles` flag, then it bubbles. In the example below the `click` event is initiated in JavaScript. The handler works same way as if the button was clicked: @@ -66,9 +66,13 @@ All we need is to set `bubbles` to `true`: // ...dispatch on elem! let event = new Event("hello", {bubbles: true}); // (2) elem.dispatchEvent(event); + + // the handler on document will activate and display the message. + </script> ``` + Notes: 1. We should use `addEventListener` for our custom events, because `on<event>` only exists for built-in events, `document.onhello` doesn't work. @@ -125,11 +129,11 @@ alert(event.clientX); // undefined, the unknown property is ignored! Technically, we can work around that by assigning directly `event.clientX=100` after creation. So that's a matter of convenience and following the rules. Browser-generated events always have the right type. -The full list of properties for different UI events is in the specification, for instance [MouseEvent](https://www.w3.org/TR/uievents/#mouseevent). +The full list of properties for different UI events is in the specification, for instance, [MouseEvent](https://www.w3.org/TR/uievents/#mouseevent). ## Custom events -For our own, custom events like `"hello"` we should use `new CustomEvent`. Technically [CustomEvent](https://dom.spec.whatwg.org/#customevent) is the same as `Event`, with one exception. +For our own, completely new events types like `"hello"` we should use `new CustomEvent`. Technically [CustomEvent](https://dom.spec.whatwg.org/#customevent) is the same as `Event`, with one exception. In the second argument (object) we can add an additional property `detail` for any custom information that we want to pass with the event. @@ -154,25 +158,25 @@ For instance: The `detail` property can have any data. Technically we could live without, because we can assign any properties into a regular `new Event` object after its creation. But `CustomEvent` provides the special `detail` field for it to evade conflicts with other event properties. -The event class tells something about "what kind of event" it is, and if the event is custom, then we should use `CustomEvent` just to be clear about what it is. +Besides, the event class describes "what kind of event" it is, and if the event is custom, then we should use `CustomEvent` just to be clear about what it is. ## event.preventDefault() -We can call `event.preventDefault()` on a script-generated event if `cancelable:true` flag is specified. +Many browser events have a "default action", such as navigating to a link, starting a selection, and so on. -Of course, if the event has a non-standard name, then it's not known to the browser, and there's no "default browser action" for it. +For new, custom events, there are definitely no default browser actions, but a code that dispatches such event may have its own plans what to do after triggering the event. -But the event-generating code may plan some actions after `dispatchEvent`. +By calling `event.preventDefault()`, an event handler may send a signal that those actions should be canceled. -The call of `event.preventDefault()` is a way for the handler to send a signal that those actions shouldn't be performed. +In that case the call to `elem.dispatchEvent(event)` returns `false`. And the code that dispatched it knows that it shouldn't continue. -In that case the call to `elem.dispatchEvent(event)` returns `false`. And the event-generating code knows that the processing shouldn't continue. +Let's see a practical example - a hiding rabbit (could be a closing menu or something else). -For instance, in the example below there's a `hide()` function. It generates the `"hide"` event on the element `#rabbit`, notifying all interested parties that the rabbit is going to hide. +Below you can see a `#rabbit` and `hide()` function that dispatches `"hide"` event on it, to let all interested parties know that the rabbit is going to hide. -A handler set by `rabbit.addEventListener('hide',...)` will learn about that and, if it wants, can prevent that action by calling `event.preventDefault()`. Then the rabbit won't hide: +Any handler can listen for that event with `rabbit.addEventListener('hide',...)` and, if needed, cancel the action using `event.preventDefault()`. Then the rabbit won't disappear: -```html run refresh +```html run refresh autorun <pre id="rabbit"> |\ /| \|_|/ @@ -180,15 +184,15 @@ A handler set by `rabbit.addEventListener('hide',...)` will learn about that and =\_Y_/= {>o<} </pre> +<button onclick="hide()">Hide()</button> <script> - // hide() will be called automatically in 2 seconds function hide() { let event = new CustomEvent("hide", { cancelable: true // without that flag preventDefault doesn't work }); if (!rabbit.dispatchEvent(event)) { - alert('the action was prevented by a handler'); + alert('The action was prevented by a handler'); } else { rabbit.hidden = true; } @@ -199,33 +203,29 @@ A handler set by `rabbit.addEventListener('hide',...)` will learn about that and event.preventDefault(); } }); - - // hide in 2 seconds - setTimeout(hide, 2000); - </script> ``` +Please note: the event must have the flag `cancelable: true`, otherwise the call `event.preventDefault()` is ignored. ## Events-in-events are synchronous -Usually events are processed asynchronously. That is: if the browser is processing `onclick` and in the process a new event occurs, then it awaits till `onclick` processing is finished. +Usually events are processed in a queue. That is: if the browser is processing `onclick` and a new event occurs, e.g. mouse moved, then its handling is queued up, corresponding `mousemove` handlers will be called after `onclick` processing is finished. -The exception is when one event is initiated from within another one. +The notable exception is when one event is initiated from within another one, e.g. using `dispatchEvent`. Such events are processed immediately: the new event handlers are called, and then the current event handling is resumed. -Then the control jumps to the nested event handler, and after it goes back. +For instance, in the code below the `menu-open` event is triggered during the `onclick`. -For instance, here the nested `menu-open` event is processed synchronously, during the `onclick`: +It's processed immediately, without waiting for `onclick` handler to end: -```html run + +```html run autorun <button id="menu">Menu (click me)</button> <script> - // 1 -> nested -> 2 menu.onclick = function() { alert(1); - // alert("nested") menu.dispatchEvent(new CustomEvent("menu-open", { bubbles: true })); @@ -233,51 +233,58 @@ For instance, here the nested `menu-open` event is processed synchronously, duri alert(2); }; - document.addEventListener('menu-open', () => alert('nested')) + // triggers between 1 and 2 + document.addEventListener('menu-open', () => alert('nested')); </script> -``` +``` + +The output order is: 1 -> nested -> 2. + +Please note that the nested event `menu-open` is caught on the `document`. The propagation and handling of the nested event is finished before the processing gets back to the outer code (`onclick`). -Please note that the nested event `menu-open` bubbles up and is handled on the `document`. The propagation of the nested event is fully finished before the processing gets back to the outer code (`onclick`). +That's not only about `dispatchEvent`, there are other cases. If an event handler calls methods that trigger other events -- they are processed synchronously too, in a nested fashion. -That's not only about `dispatchEvent`, there are other cases. JavaScript in an event handler can call methods that lead to other events -- they are too processed synchronously. +Let's say we don't like it. We'd want `onclick` to be fully processed first, independently from `menu-open` or any other nested events. -If we don't like it, we can either put the `dispatchEvent` (or other event-triggering call) at the end of `onclick` or, if inconvenient, wrap it in `setTimeout(...,0)`: +Then we can either put the `dispatchEvent` (or another event-triggering call) at the end of `onclick` or, maybe better, wrap it in the zero-delay `setTimeout`: ```html run <button id="menu">Menu (click me)</button> <script> - // 1 -> 2 -> nested menu.onclick = function() { alert(1); - // alert(2) setTimeout(() => menu.dispatchEvent(new CustomEvent("menu-open", { bubbles: true - })), 0); + }))); alert(2); }; - document.addEventListener('menu-open', () => alert('nested')) + document.addEventListener('menu-open', () => alert('nested')); </script> -``` +``` + +Now `dispatchEvent` runs asynchronously after the current code execution is finished, including `menu.onclick`, so event handlers are totally separate. + +The output order becomes: 1 -> 2 -> nested. ## Summary -To generate an event, we first need to create an event object. +To generate an event from code, we first need to create an event object. The generic `Event(name, options)` constructor accepts an arbitrary event name and the `options` object with two properties: - - `bubbles: true` if the event should bubble. - - `cancelable: true` if the `event.preventDefault()` should work. +- `bubbles: true` if the event should bubble. +- `cancelable: true` if the `event.preventDefault()` should work. Other constructors of native events like `MouseEvent`, `KeyboardEvent` and so on accept properties specific to that event type. For instance, `clientX` for mouse events. For custom events we should use `CustomEvent` constructor. It has an additional option named `detail`, we should assign the event-specific data to it. Then all handlers can access it as `event.detail`. -Despite the technical possibility to generate browser events like `click` or `keydown`, we should use with the great care. +Despite the technical possibility of generating browser events like `click` or `keydown`, we should use them with great care. -We shouldn't generate browser events as it's a hacky way to run handlers. That's a bad architecture most of the time. +We shouldn't generate browser events as it's a hacky way to run handlers. That's bad architecture most of the time. Native events might be generated: diff --git a/2-ui/3-event-details/1-mouse-events-basics/01-selectable-list/task.md b/2-ui/3-event-details/1-mouse-events-basics/01-selectable-list/task.md index f358616ef..8d29134ff 100644 --- a/2-ui/3-event-details/1-mouse-events-basics/01-selectable-list/task.md +++ b/2-ui/3-event-details/1-mouse-events-basics/01-selectable-list/task.md @@ -14,4 +14,5 @@ The demo: [iframe border="1" src="solution" height=180] P.S. For this task we can assume that list items are text-only. No nested tags. + P.P.S. Prevent the native browser selection of the text on clicks. diff --git a/2-ui/3-event-details/1-mouse-events-basics/article.md b/2-ui/3-event-details/1-mouse-events-basics/article.md index dce1ad3de..9574b0c83 100644 --- a/2-ui/3-event-details/1-mouse-events-basics/article.md +++ b/2-ui/3-event-details/1-mouse-events-basics/article.md @@ -1,16 +1,13 @@ -# Mouse events basics -Mouse events come not only from "mouse manipulators", but are also emulated on touch devices, to make them compatible. +# Mouse events In this chapter we'll get into more details about mouse events and their properties. -## Mouse event types - -We can split mouse events into two categories: "simple" and "complex" +Please note: such events may come not only from "mouse devices", but are also from other devices, such as phones and tablets, where they are emulated for compatibility. -### Simple events +## Mouse event types -The most used simple events are: +We've already seen some of these events: `mousedown/mouseup` : Mouse button is clicked/released over an element. @@ -21,65 +18,79 @@ The most used simple events are: `mousemove` : Every mouse move over an element triggers that event. -...There are several other event types too, we'll cover them later. - -### Complex events - `click` : Triggers after `mousedown` and then `mouseup` over the same element if the left mouse button was used. -`contextmenu` -: Triggers after `mousedown` if the right mouse button was used. - `dblclick` -: Triggers after a double click over an element. +: Triggers after two clicks on the same element within a short timeframe. Rarely used nowadays. + +`contextmenu` +: Triggers when the right mouse button is pressed. There are other ways to open a context menu, e.g. using a special keyboard key, it triggers in that case also, so it's not exactly the mouse event. -Complex events are made of simple ones, so in theory we could live without them. But they exist, and that's good, because they are convenient. +...There are several other events too, we'll cover them later. -### Events order +## Events order -An action may trigger multiple events. +As you can see from the list above, a user action may trigger multiple events. -For instance, a click first triggers `mousedown`, when the button is pressed, then `mouseup` and `click` when it's released. +For instance, a left-button click first triggers `mousedown`, when the button is pressed, then `mouseup` and `click` when it's released. -In cases when a single action initiates multiple events, their order is fixed. That is, the handlers are called in the order `mousedown` -> `mouseup` -> `click`. Events are handled in the same sequence: `onmouseup` finishes before `onclick` runs. +In cases when a single action initiates multiple events, their order is fixed. That is, the handlers are called in the order `mousedown` -> `mouseup` -> `click`. ```online Click the button below and you'll see the events. Try double-click too. -On the teststand below all mouse events are logged, and if there are more than 1 second delay between them, then they are separated by a horizontal ruler. +On the teststand below, all mouse events are logged, and if there is more than a 1 second delay between them, they are separated by a horizontal rule. -Also we can see the `which` property that allows to detect the mouse button. +Also, we can see the `button` property that allows us to detect the mouse button; it's explained below. <input onmousedown="return logMouse(event)" onmouseup="return logMouse(event)" onclick="return logMouse(event)" oncontextmenu="return logMouse(event)" ondblclick="return logMouse(event)" value="Click me with the right or the left mouse button" type="button"> <input onclick="logClear('test')" value="Clear" type="button"> <form id="testform" name="testform"> <textarea style="font-size:12px;height:150px;width:360px;"></textarea></form> ``` -## Getting the button: which +## Mouse button + +Click-related events always have the `button` property, which allows to get the exact mouse button. + +We usually don't use it for `click` and `contextmenu` events, because the former happens only on left-click, and the latter -- only on right-click. + +On the other hand, `mousedown` and `mouseup` handlers may need `event.button`, because these events trigger on any button, so `button` allows to distinguish between "right-mousedown" and "left-mousedown". -Click-related events always have the `which` property, which allows to get the exact mouse button. +The possible values of `event.button` are: -It is not used for `click` and `contextmenu` events, because the former happens only on left-click, and the latter -- only on right-click. +| Button state | `event.button` | +|--------------|----------------| +| Left button (primary) | 0 | +| Middle button (auxiliary) | 1 | +| Right button (secondary) | 2 | +| X1 button (back) | 3 | +| X2 button (forward) | 4 | -But if we track `mousedown` and `mouseup`, then we need it, because these events trigger on any button, so `which` allows to distinguish between "right-mousedown" and "left-mousedown". +Most mouse devices only have the left and right buttons, so possible values are `0` or `2`. Touch devices also generate similar events when one taps on them. -There are the three possible values: +Also there's `event.buttons` property that has all currently pressed buttons as an integer, one bit per button. In practice this property is very rarely used, you can find details at [MDN](mdn:/api/MouseEvent/buttons) if you ever need it. -- `event.which == 1` -- the left button -- `event.which == 2` - the middle button -- `event.which == 3` - the right button +```warn header="The outdated `event.which`" +Old code may use `event.which` property that's an old non-standard way of getting a button, with possible values: -The middle button is somewhat exotic right now and is very rarely used. +- `event.which == 1` – left button, +- `event.which == 2` – middle button, +- `event.which == 3` – right button. + +As of now, `event.which` is deprecated, we shouldn't use it. +``` ## Modifiers: shift, alt, ctrl and meta All mouse events include the information about pressed modifier keys. -The properties are: +Event properties: + +- `shiftKey`: `key:Shift` +- `altKey`: `key:Alt` (or `key:Opt` for Mac) +- `ctrlKey`: `key:Ctrl` +- `metaKey`: `key:Cmd` for Mac -- `shiftKey` -- `altKey` -- `ctrlKey` -- `metaKey` (`key:Cmd` for Mac) +They are `true` if the corresponding key was pressed during the event. For instance, the button below only works on `key:Alt+Shift`+click: @@ -98,88 +109,65 @@ For instance, the button below only works on `key:Alt+Shift`+click: ``` ```warn header="Attention: on Mac it's usually `Cmd` instead of `Ctrl`" -On Windows and Linux there are modifier keys `key:Alt`, `key:Shift` and `key:Ctrl`. On Mac there's one more: `key:Cmd`, it corresponds to the property `metaKey`. +On Windows and Linux there are modifier keys `key:Alt`, `key:Shift` and `key:Ctrl`. On Mac there's one more: `key:Cmd`, corresponding to the property `metaKey`. -In most cases when Windows/Linux uses `key:Ctrl`, on Mac people use `key:Cmd`. So where a Windows user presses `key:Ctrl+Enter` or `key:Ctrl+A`, a Mac user would press `key:Cmd+Enter` or `key:Cmd+A`, and so on, most apps use `key:Cmd` instead of `key:Ctrl`. +In most applications, when Windows/Linux uses `key:Ctrl`, on Mac `key:Cmd` is used. -So if we want to support combinations like `key:Ctrl`+click, then for Mac it makes sense to use `key:Cmd`+click. That's more comfortable for Mac users. +That is: where a Windows user presses `key:Ctrl+Enter` or `key:Ctrl+A`, a Mac user would press `key:Cmd+Enter` or `key:Cmd+A`, and so on. -Even if we'd like to force Mac users to `key:Ctrl`+click -- that's kind of difficult. The problem is: a left-click with `key:Ctrl` is interpreted as a *right-click* on Mac, and it generates the `contextmenu` event, not `click` like Windows/Linux. +So if we want to support combinations like `key:Ctrl`+click, then for Mac it makes sense to use `key:Cmd`+click. That's more comfortable for Mac users. -So if we want users of all operational systems to feel comfortable, then together with `ctrlKey` we should use `metaKey`. +Even if we'd like to force Mac users to `key:Ctrl`+click -- that's kind of difficult. The problem is: a left-click with `key:Ctrl` is interpreted as a *right-click* on MacOS, and it generates the `contextmenu` event, not `click` like Windows/Linux. + +So if we want users of all operating systems to feel comfortable, then together with `ctrlKey` we should check `metaKey`. For JS-code it means that we should check `if (event.ctrlKey || event.metaKey)`. ``` ```warn header="There are also mobile devices" -Keyboard combinations are good as an addition to the workflow. So that if the visitor has a - keyboard -- it works. And if your device doesn't have it -- then there's another way to do the same. +Keyboard combinations are good as an addition to the workflow. So that if the visitor uses a keyboard -- they work. + +But if their device doesn't have it -- then there should be a way to live without modifier keys. ``` ## Coordinates: clientX/Y, pageX/Y -All mouse events have coordinates in two flavours: +All mouse events provide coordinates in two flavours: 1. Window-relative: `clientX` and `clientY`. 2. Document-relative: `pageX` and `pageY`. -For instance, if we have a window of the size 500x500, and the mouse is in the left-upper corner, then `clientX` and `clientY` are `0`. And if the mouse is in the center, then `clientX` and `clientY` are `250`, no matter what place in the document it is. They are similar to `position:fixed`. +We already covered the difference between them in the chapter <info:coordinates>. + +In short, document-relative coordinates `pageX/Y` are counted from the left-upper corner of the document, and do not change when the page is scrolled, while `clientX/Y` are counted from the current window left-upper corner. When the page is scrolled, they change. + +For instance, if we have a window of the size 500x500, and the mouse is in the left-upper corner, then `clientX` and `clientY` are `0`, no matter how the page is scrolled. + +And if the mouse is in the center, then `clientX` and `clientY` are `250`, no matter what place in the document it is. They are similar to `position:fixed` in that aspect. ````online -Move the mouse over the input field to see `clientX/clientY` (it's in the `iframe`, so coordinates are relative to that `iframe`): +Move the mouse over the input field to see `clientX/clientY` (the example is in the `iframe`, so coordinates are relative to that `iframe`): ```html autorun height=50 <input onmousemove="this.value=event.clientX+':'+event.clientY" value="Mouse over me"> ``` ```` -Document-relative coordinates are counted from the left-upper corner of the document, not the window. -Coordinates `pageX`, `pageY` are similar to `position:absolute` on the document level. - -You can read more about coordinates in the chapter <info:coordinates>. - -## No selection on mousedown - -Mouse clicks have a side-effect that may be disturbing. A double click selects the text. +## Preventing selection on mousedown -If we want to handle click events ourselves, then the "extra" selection doesn't look good. +Double mouse click has a side effect that may be disturbing in some interfaces: it selects text. -For instance, a double-click on the text below selects it in addition to our handler: +For instance, double-clicking on the text below selects it in addition to our handler: ```html autorun height=50 -<b ondblclick="alert('dblclick')">Double-click me</b> +<span ondblclick="alert('dblclick')">Double-click me</span> ``` -There's a CSS way to stop the selection: the `user-select` property from [CSS UI Draft](https://www.w3.org/TR/css-ui-4/). +If one presses the left mouse button and, without releasing it, moves the mouse, that also makes the selection, often unwanted. -Most browsers support it with prefixes: +There are multiple ways to prevent the selection, that you can read in the chapter <info:selection-range>. -```html autorun height=50 -<style> - b { - -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; - } -</style> - -Before... -<b ondblclick="alert('Test')"> - Unselectable -</b> -...After -``` - -Now if you double-click on "Unselectable", it doesn't get selected. Seems to work. - -...But there is a potential problem! The text became truly unselectable. Even if a user starts the selection from "Before" and ends with "After", the selection skips "Unselectable" part. Do we really want to make our text unselectable? - -Most of time, we don't. A user may have valid reasons to select the text, for copying or other needs. That may be inconvenient if we don't allow them to do it. So this solution is not that good. - -What we want is to prevent the selection on double-click, that's it. - -A text selection is the default browser action on `mousedown` event. So the alternative solution would be to handle `mousedown` and prevent it, like this: +In this particular case the most reasonable way is to prevent the browser action on `mousedown`. It prevents both these selections: ```html autorun height=50 Before... @@ -189,28 +177,12 @@ Before... ...After ``` -Now the bold element is not selected on double clicks. +Now the bold element is not selected on double clicks, and pressing the left button on it won't start the selection. -The text inside it is still selectable. However, the selection should start not on the text itself, but before or after it. Usually that's fine though. - -````smart header="Canceling the selection" -Instead of *preventing* the selection, we can cancel it "post-factum" in the event handler. - -Here's how: - -```html autorun height=50 -Before... -<b ondblclick="*!*getSelection().removeAllRanges()*/!*"> - Double-click me -</b> -...After -``` - -If you double-click on the bold element, then the selection appears and then is immediately removed. That doesn't look nice though. -```` +Please note: the text inside it is still selectable. However, the selection should start not on the text itself, but before or after it. Usually that's fine for users. ````smart header="Preventing copying" -If we want to disable selection to protect our content from copy-pasting, then we can use another event: `oncopy`. +If we want to disable selection to protect our page content from copy-pasting, then we can use another event: `oncopy`. ```html autorun height=80 no-beautify <div *!*oncopy="alert('Copying forbidden!');return false"*/!*> @@ -221,23 +193,20 @@ If we want to disable selection to protect our content from copy-pasting, then w ``` If you try to copy a piece of text in the `<div>`, that won't work, because the default action `oncopy` is prevented. -Surely that can't stop the user from opening HTML-source, but not everyone knows how to do it. +Surely the user has access to HTML-source of the page, and can take the content from there, but not everyone knows how to do it. ```` ## Summary Mouse events have the following properties: -- Button: `which`. +- Button: `button`. - Modifier keys (`true` if pressed): `altKey`, `ctrlKey`, `shiftKey` and `metaKey` (Mac). - - If you want to handle `key:Ctrl`, then don't forget Mac users, they use `key:Cmd`, so it's better to check `if (e.metaKey || e.ctrlKey)`. + - If you want to handle `key:Ctrl`, then don't forget Mac users, they usually use `key:Cmd`, so it's better to check `if (e.metaKey || e.ctrlKey)`. - Window-relative coordinates: `clientX/clientY`. - Document-relative coordinates: `pageX/pageY`. -It's also important to deal with text selection as an unwanted side-effect of clicks. +The default browser action of `mousedown` is text selection, if it's not good for the interface, then it should be prevented. -There are several ways to do this, for instance: -1. The CSS-property `user-select:none` (with browser prefixes) completely disables text-selection. -2. Cancel the selection post-factum using `getSelection().removeAllRanges()`. -3. Handle `mousedown` and prevent the default action (usually the best). +In the next chapter we'll see more details about events that follow pointer movement and how to track element changes under it. diff --git a/2-ui/3-event-details/1-mouse-events-basics/head.html b/2-ui/3-event-details/1-mouse-events-basics/head.html index 461f0e85b..1b9a73fca 100644 --- a/2-ui/3-event-details/1-mouse-events-basics/head.html +++ b/2-ui/3-event-details/1-mouse-events-basics/head.html @@ -4,25 +4,28 @@ function showmesg(t, form) { - if (timer==0) timer = new Date() + if (timer == 0) { + timer = new Date(); + } + + let tm = new Date(); - let tm = new Date() - if (tm-timer > 300) { - t = '------------------------------\n'+t + if (tm - timer > 300) { + t = '------------------------------\n' + t; } - let area = document.forms[form+'form'].getElementsByTagName('textarea')[0] + let area = document.forms[form + 'form'].getElementsByTagName('textarea')[0]; area.value += t + '\n'; - area.scrollTop = area.scrollHeight + area.scrollTop = area.scrollHeight; - timer = tm + timer = tm; } function logMouse(e) { let evt = e.type; while (evt.length < 11) evt += ' '; - showmesg(evt+" which="+e.which, 'test') + showmesg(evt + " button=" + e.button, 'test') return false; } diff --git a/2-ui/3-event-details/3-mousemove-mouseover-mouseout-mouseenter-mouseleave/1-behavior-nested-tooltip/solution.view/index.html b/2-ui/3-event-details/3-mousemove-mouseover-mouseout-mouseenter-mouseleave/1-behavior-nested-tooltip/solution.view/index.html index c8e879f2c..84d52b18c 100644 --- a/2-ui/3-event-details/3-mousemove-mouseover-mouseout-mouseenter-mouseleave/1-behavior-nested-tooltip/solution.view/index.html +++ b/2-ui/3-event-details/3-mousemove-mouseover-mouseout-mouseenter-mouseleave/1-behavior-nested-tooltip/solution.view/index.html @@ -54,7 +54,7 @@ <p>Once upon a time there was a mother pig who had three little pigs.</p> - <p>The three little pigs grew so big that their mother said to them, "You are too big to live here any longer. You must go and build houses for yourselves. But take care that the wolf does not catch you." + <p>The three little pigs grew so big that their mother said to them, "You are too big to live here any longer. You must go and build houses for yourselves. But take care that the wolf does not catch you."</p> <p>The three little pigs set off. "We will take care that the wolf does not catch us," they said.</p> @@ -78,12 +78,13 @@ } document.onmouseout = function() { - // it is possible that mouseout triggered, but we're still inside the element (cause of bubbling) + // it is possible that mouseout triggered, but we're still inside the element + // (its target was inside, and it bubbled) // but in this case we'll have an immediate mouseover, // so the tooltip will be destroyed and shown again // - // that's an overhead, but here it's not visible - // can be fixed with additional checks + // luckily, the "blinking" won't be visible, + // as both events happen almost at the same time if (tooltip) { tooltip.remove(); tooltip = false; diff --git a/2-ui/3-event-details/3-mousemove-mouseover-mouseout-mouseenter-mouseleave/1-behavior-nested-tooltip/source.view/index.html b/2-ui/3-event-details/3-mousemove-mouseover-mouseout-mouseenter-mouseleave/1-behavior-nested-tooltip/source.view/index.html index 2dc4394e7..774e24a21 100644 --- a/2-ui/3-event-details/3-mousemove-mouseover-mouseout-mouseenter-mouseleave/1-behavior-nested-tooltip/source.view/index.html +++ b/2-ui/3-event-details/3-mousemove-mouseover-mouseout-mouseenter-mouseleave/1-behavior-nested-tooltip/source.view/index.html @@ -54,7 +54,7 @@ <p>Once upon a time there was a mother pig who had three little pigs.</p> - <p>The three little pigs grew so big that their mother said to them, "You are too big to live here any longer. You must go and build houses for yourselves. But take care that the wolf does not catch you." + <p>The three little pigs grew so big that their mother said to them, "You are too big to live here any longer. You must go and build houses for yourselves. But take care that the wolf does not catch you."</p> <p>The three little pigs set off. "We will take care that the wolf does not catch us," they said.</p> diff --git a/2-ui/3-event-details/3-mousemove-mouseover-mouseout-mouseenter-mouseleave/1-behavior-nested-tooltip/task.md b/2-ui/3-event-details/3-mousemove-mouseover-mouseout-mouseenter-mouseleave/1-behavior-nested-tooltip/task.md index 435bac0f8..c77aa0728 100644 --- a/2-ui/3-event-details/3-mousemove-mouseover-mouseout-mouseenter-mouseleave/1-behavior-nested-tooltip/task.md +++ b/2-ui/3-event-details/3-mousemove-mouseover-mouseout-mouseenter-mouseleave/1-behavior-nested-tooltip/task.md @@ -4,10 +4,12 @@ importance: 5 # Improved tooltip behavior -Write JavaScript that shows a tooltip over an element with the attribute `data-tooltip`. +Write JavaScript that shows a tooltip over an element with the attribute `data-tooltip`. The value of this attribute should become the tooltip text. That's like the task <info:task/behavior-tooltip>, but here the annotated elements can be nested. The most deeply nested tooltip is shown. +Only one tooltip may show up at the same time. + For instance: ```html @@ -21,5 +23,3 @@ For instance: The result in iframe: [iframe src="solution" height=300 border=1] - -P.S. Hint: only one tooltip may show up at the same time. diff --git a/2-ui/3-event-details/3-mousemove-mouseover-mouseout-mouseenter-mouseleave/2-hoverintent/solution.md b/2-ui/3-event-details/3-mousemove-mouseover-mouseout-mouseenter-mouseleave/2-hoverintent/solution.md index c4af78b11..36eaca1a3 100644 --- a/2-ui/3-event-details/3-mousemove-mouseover-mouseout-mouseenter-mouseleave/2-hoverintent/solution.md +++ b/2-ui/3-event-details/3-mousemove-mouseover-mouseout-mouseenter-mouseleave/2-hoverintent/solution.md @@ -3,16 +3,16 @@ The algorithm looks simple: 1. Put `onmouseover/out` handlers on the element. Also can use `onmouseenter/leave` here, but they are less universal, won't work if we introduce delegation. 2. When a mouse cursor entered the element, start measuring the speed on `mousemove`. 3. If the speed is slow, then run `over`. -4. Later if we're out of the element, and `over` was executed, run `out`. +4. When we're going out of the element, and `over` was executed, run `out`. -The question is: "How to measure the speed?" +But how to measure the speed? -The first idea would be: to run our function every `100ms` and measure the distance between previous and new coordinates. If it's small, then the speed is small. +The first idea can be: run a function every `100ms` and measure the distance between previous and new coordinates. If it's small, then the speed is small. Unfortunately, there's no way to get "current mouse coordinates" in JavaScript. There's no function like `getCurrentMouseCoordinates()`. -The only way to get coordinates is to listen to mouse events, like `mousemove`. +The only way to get coordinates is to listen for mouse events, like `mousemove`, and take coordinates from the event object. -So we can set a handler on `mousemove` to track coordinates and remember them. Then we can compare them, once per `100ms`. +So let's set a handler on `mousemove` to track coordinates and remember them. And then compare them, once per `100ms`. P.S. Please note: the solution tests use `dispatchEvent` to see if the tooltip works right. diff --git a/2-ui/3-event-details/3-mousemove-mouseover-mouseout-mouseenter-mouseleave/2-hoverintent/solution.view/hoverIntent.js b/2-ui/3-event-details/3-mousemove-mouseover-mouseout-mouseenter-mouseleave/2-hoverintent/solution.view/hoverIntent.js index 4e6e2a3e9..7503ca9c2 100644 --- a/2-ui/3-event-details/3-mousemove-mouseover-mouseout-mouseenter-mouseleave/2-hoverintent/solution.view/hoverIntent.js +++ b/2-ui/3-event-details/3-mousemove-mouseover-mouseout-mouseenter-mouseleave/2-hoverintent/solution.view/hoverIntent.js @@ -88,7 +88,7 @@ class HoverIntent { if (speed < this.sensitivity) { clearInterval(this.checkSpeedInterval); this.isHover = true; - this.over.call(this.elem, event); + this.over.call(this.elem); } else { // speed fast, remember new coordinates as the previous ones this.prevX = this.lastX; diff --git a/2-ui/3-event-details/3-mousemove-mouseover-mouseout-mouseenter-mouseleave/2-hoverintent/solution.view/index.html b/2-ui/3-event-details/3-mousemove-mouseover-mouseout-mouseenter-mouseleave/2-hoverintent/solution.view/index.html index df0f13656..098232174 100644 --- a/2-ui/3-event-details/3-mousemove-mouseover-mouseout-mouseenter-mouseleave/2-hoverintent/solution.view/index.html +++ b/2-ui/3-event-details/3-mousemove-mouseover-mouseout-mouseenter-mouseleave/2-hoverintent/solution.view/index.html @@ -20,20 +20,17 @@ <div id="tooltip" hidden>Tooltip</div> <script> - // for the demo - setTimeout(function() { - new HoverIntent({ - elem, - over() { - tooltip.style.left = elem.getBoundingClientRect().left + 5 + 'px'; - tooltip.style.top = elem.getBoundingClientRect().bottom + 5 + 'px'; - tooltip.hidden = false; - }, - out() { - tooltip.hidden = true; - } - }); - }, 2000); + new HoverIntent({ + elem, + over() { + tooltip.style.left = elem.getBoundingClientRect().left + 5 + 'px'; + tooltip.style.top = elem.getBoundingClientRect().bottom + 5 + 'px'; + tooltip.hidden = false; + }, + out() { + tooltip.hidden = true; + } + }); </script> </body> diff --git a/2-ui/3-event-details/3-mousemove-mouseover-mouseout-mouseenter-mouseleave/2-hoverintent/solution.view/test.js b/2-ui/3-event-details/3-mousemove-mouseover-mouseout-mouseenter-mouseleave/2-hoverintent/solution.view/test.js index 7c7f6d23d..f5d4aaffb 100644 --- a/2-ui/3-event-details/3-mousemove-mouseover-mouseout-mouseenter-mouseleave/2-hoverintent/solution.view/test.js +++ b/2-ui/3-event-details/3-mousemove-mouseover-mouseout-mouseenter-mouseleave/2-hoverintent/solution.view/test.js @@ -49,18 +49,18 @@ describe("hoverIntent", function() { } }) - it("mouseover -> immediately no tooltip", function() { + it("mouseover -> when the pointer just arrived, no tooltip", function() { mouse('mouseover', 10, 10); assert.isFalse(isOver); }); - it("mouseover -> pause shows tooltip", function() { + it("mouseover -> after a delay, the tooltip shows up", function() { mouse('mouseover', 10, 10); this.clock.tick(100); assert.isTrue(isOver); }); - it("mouseover -> fast mouseout no tooltip", function() { + it("mouseover -> followed by fast mouseout leads doesn't show tooltip", function() { mouse('mouseover', 10, 10); setTimeout( () => mouse('mouseout', 300, 300, { relatedTarget: document.body}), diff --git a/2-ui/3-event-details/3-mousemove-mouseover-mouseout-mouseenter-mouseleave/2-hoverintent/source.view/hoverIntent.js b/2-ui/3-event-details/3-mousemove-mouseover-mouseout-mouseenter-mouseleave/2-hoverintent/source.view/hoverIntent.js index caca940b1..a38b42bc2 100644 --- a/2-ui/3-event-details/3-mousemove-mouseover-mouseout-mouseenter-mouseleave/2-hoverintent/source.view/hoverIntent.js +++ b/2-ui/3-event-details/3-mousemove-mouseover-mouseout-mouseenter-mouseleave/2-hoverintent/source.view/hoverIntent.js @@ -45,6 +45,7 @@ class HoverIntent { destroy() { /* your code to "disable" the functionality, remove all handlers */ + /* it's needed for the tests to work */ } } diff --git a/2-ui/3-event-details/3-mousemove-mouseover-mouseout-mouseenter-mouseleave/2-hoverintent/source.view/index.html b/2-ui/3-event-details/3-mousemove-mouseover-mouseout-mouseenter-mouseleave/2-hoverintent/source.view/index.html index 702b79f96..098232174 100644 --- a/2-ui/3-event-details/3-mousemove-mouseover-mouseout-mouseenter-mouseleave/2-hoverintent/source.view/index.html +++ b/2-ui/3-event-details/3-mousemove-mouseover-mouseout-mouseenter-mouseleave/2-hoverintent/source.view/index.html @@ -1,12 +1,11 @@ <!doctype html> -<html lang="en"> +<html> <head> <meta charset="UTF-8"> - <title>Document</title> <link rel="stylesheet" href="style.css"> <script src="hoverIntent.js"></script> - <script src="https://js.cx/test/libs.js"></script> + <script src="https://en.js.cx/test/libs.js"></script> <script src="test.js"></script> </head> @@ -21,18 +20,17 @@ <div id="tooltip" hidden>Tooltip</div> <script> - // for the demo - setTimeout(function() { - new HoverIntent({ - elem, - over() { - tooltip.hidden = false; - }, - out() { - tooltip.hidden = true; - } - }); - }, 2000); + new HoverIntent({ + elem, + over() { + tooltip.style.left = elem.getBoundingClientRect().left + 5 + 'px'; + tooltip.style.top = elem.getBoundingClientRect().bottom + 5 + 'px'; + tooltip.hidden = false; + }, + out() { + tooltip.hidden = true; + } + }); </script> </body> diff --git a/2-ui/3-event-details/3-mousemove-mouseover-mouseout-mouseenter-mouseleave/2-hoverintent/source.view/style.css b/2-ui/3-event-details/3-mousemove-mouseover-mouseout-mouseenter-mouseleave/2-hoverintent/source.view/style.css index 980e9457e..fa2f09eba 100644 --- a/2-ui/3-event-details/3-mousemove-mouseover-mouseout-mouseenter-mouseleave/2-hoverintent/source.view/style.css +++ b/2-ui/3-event-details/3-mousemove-mouseover-mouseout-mouseenter-mouseleave/2-hoverintent/source.view/style.css @@ -2,6 +2,10 @@ color: red; } +body { + margin: 0; +} + .minutes { color: green; } @@ -20,9 +24,15 @@ top: 0; } -.tooltip { +#tooltip { position: absolute; - background: #eee; - border: 1px brown solid; - padding: 3px; + padding: 10px 20px; + border: 1px solid #b3c9ce; + border-radius: 4px; + text-align: center; + font: italic 14px/1.3 sans-serif; + color: #333; + background: #fff; + z-index: 100000; + box-shadow: 3px 3px 3px rgba(0, 0, 0, .3); } diff --git a/2-ui/3-event-details/3-mousemove-mouseover-mouseout-mouseenter-mouseleave/2-hoverintent/source.view/test.js b/2-ui/3-event-details/3-mousemove-mouseover-mouseout-mouseenter-mouseleave/2-hoverintent/source.view/test.js index 44369d8c3..f5d4aaffb 100644 --- a/2-ui/3-event-details/3-mousemove-mouseover-mouseout-mouseenter-mouseleave/2-hoverintent/source.view/test.js +++ b/2-ui/3-event-details/3-mousemove-mouseover-mouseout-mouseenter-mouseleave/2-hoverintent/source.view/test.js @@ -3,7 +3,7 @@ describe("hoverIntent", function() { function mouse(eventType, x, y, options) { - let eventOptions = Object.assign({ + let eventOptions = Object.assign({ bubbles: true, clientX: x, clientY: y, @@ -11,15 +11,15 @@ describe("hoverIntent", function() { pageY: y, target: elem }, options || {}); - + elem.dispatchEvent(new MouseEvent(eventType, eventOptions)); } let isOver; let hoverIntent; - - + + before(function() { this.clock = sinon.useFakeTimers(); }); @@ -27,11 +27,11 @@ describe("hoverIntent", function() { after(function() { this.clock.restore(); }); - - + + beforeEach(function() { isOver = false; - + hoverIntent = new HoverIntent({ elem: elem, over: function() { @@ -49,18 +49,18 @@ describe("hoverIntent", function() { } }) - it("mouseover -> immediately no tooltip", function() { + it("mouseover -> when the pointer just arrived, no tooltip", function() { mouse('mouseover', 10, 10); assert.isFalse(isOver); }); - - it("mouseover -> pause shows tooltip", function() { + + it("mouseover -> after a delay, the tooltip shows up", function() { mouse('mouseover', 10, 10); this.clock.tick(100); assert.isTrue(isOver); }); - it("mouseover -> fast mouseout no tooltip", function() { + it("mouseover -> followed by fast mouseout leads doesn't show tooltip", function() { mouse('mouseover', 10, 10); setTimeout( () => mouse('mouseout', 300, 300, { relatedTarget: document.body}), @@ -94,5 +94,5 @@ describe("hoverIntent", function() { this.clock.tick(200); assert.isFalse(isOver); }); - + }); diff --git a/2-ui/3-event-details/3-mousemove-mouseover-mouseout-mouseenter-mouseleave/2-hoverintent/task.md b/2-ui/3-event-details/3-mousemove-mouseover-mouseout-mouseenter-mouseleave/2-hoverintent/task.md index 3dfb7e9e1..72e615bdd 100644 --- a/2-ui/3-event-details/3-mousemove-mouseover-mouseout-mouseenter-mouseleave/2-hoverintent/task.md +++ b/2-ui/3-event-details/3-mousemove-mouseover-mouseout-mouseenter-mouseleave/2-hoverintent/task.md @@ -4,16 +4,17 @@ importance: 5 # "Smart" tooltip -Write a function that shows a tooltip over an element only if the visitor moves the mouse *over it*, but not *through it*. +Write a function that shows a tooltip over an element only if the visitor moves the mouse *to it*, but not *through it*. -In other words, if the visitor moves the mouse on the element and stopped -- show the tooltip. And if they just moved the mouse through fast, then no need, who wants extra blinking? +In other words, if the visitor moves the mouse to the element and stops there -- show the tooltip. And if they just moved the mouse through, then no need, who wants extra blinking? Technically, we can measure the mouse speed over the element, and if it's slow then we assume that it comes "over the element" and show the tooltip, if it's fast -- then we ignore it. -Make a universal object `new HoverIntent(options)` for it. With `options`: +Make a universal object `new HoverIntent(options)` for it. +Its `options`: - `elem` -- element to track. -- `over` -- a function to call if the mouse is slowly moving the element. +- `over` -- a function to call if the mouse came to the element: that is, it moves slowly or stopped over it. - `out` -- a function to call when the mouse leaves the element (if `over` was called). An example of using such object for the tooltip: diff --git a/2-ui/3-event-details/3-mousemove-mouseover-mouseout-mouseenter-mouseleave/article.md b/2-ui/3-event-details/3-mousemove-mouseover-mouseout-mouseenter-mouseleave/article.md index ac20f84fa..7997a16bc 100644 --- a/2-ui/3-event-details/3-mousemove-mouseover-mouseout-mouseenter-mouseleave/article.md +++ b/2-ui/3-event-details/3-mousemove-mouseover-mouseout-mouseenter-mouseleave/article.md @@ -1,29 +1,29 @@ -# Moving: mouseover/out, mouseenter/leave +# Moving the mouse: mouseover/out, mouseenter/leave -Let's dive into more details about events that happen when mouse moves between elements. +Let's dive into more details about events that happen when the mouse moves between elements. -## Mouseover/mouseout, relatedTarget +## Events mouseover/mouseout, relatedTarget The `mouseover` event occurs when a mouse pointer comes over an element, and `mouseout` -- when it leaves.  -These events are special, because they have a `relatedTarget`. +These events are special, because they have property `relatedTarget`. This property complements `target`. When a mouse leaves one element for another, one of them becomes `target`, and the other one - `relatedTarget`. For `mouseover`: - `event.target` -- is the element where the mouse came over. -- `event.relatedTarget` -- is the element from which the mouse came. +- `event.relatedTarget` -- is the element from which the mouse came (`relatedTarget` -> `target`). For `mouseout` the reverse: -- `event.target` -- is the element that mouse left. -- `event.relatedTarget` -- is the new under-the-pointer element (that mouse left for). +- `event.target` -- is the element that the mouse left. +- `event.relatedTarget` -- is the new under-the-pointer element, that mouse left for (`target` -> `relatedTarget`). ```online -In the example below each face feature is an element. When you move the mouse, you can see mouse events in the text area. +In the example below each face and its features are separate elements. When you move the mouse, you can see mouse events in the text area. -Each event has the information about where the element came and where it came from. +Each event has the information about both `target` and `relatedTarget`: [codetabs src="mouseoverout" height=280] ``` @@ -36,86 +36,130 @@ That's normal and just means that the mouse came not from another element, but f We should keep that possibility in mind when using `event.relatedTarget` in our code. If we access `event.relatedTarget.tagName`, then there will be an error. ``` -## Events frequency +## Skipping elements The `mousemove` event triggers when the mouse moves. But that doesn't mean that every pixel leads to an event. The browser checks the mouse position from time to time. And if it notices changes then triggers the events. -That means that if the visitor is moving the mouse very fast then DOM-elements may be skipped: +That means that if the visitor is moving the mouse very fast then some DOM-elements may be skipped:  -If the mouse moves very fast from `#FROM` to `#TO` elements as painted above, then intermediate `<div>` (or some of them) may be skipped. The `mouseout` event may trigger on `#FROM` and then immediately `mouseover` on `#TO`. +If the mouse moves very fast from `#FROM` to `#TO` elements as painted above, then intermediate `<div>` elements (or some of them) may be skipped. The `mouseout` event may trigger on `#FROM` and then immediately `mouseover` on `#TO`. -In practice that's helpful, because if there may be many intermediate elements. We don't really want to process in and out of each one. +That's good for performance, because there may be many intermediate elements. We don't really want to process in and out of each one. -On the other hand, we should keep in mind that we can't assume that the mouse slowly moves from one event to another. No, it can "jump". +On the other hand, we should keep in mind that the mouse pointer doesn't "visit" all elements along the way. It can "jump". -In particular it's possible that the cursor jumps right inside the middle of the page from out of the window. And `relatedTarget=null`, because it came from "nowhere": +In particular, it's possible that the pointer jumps right inside the middle of the page from out of the window. In that case `relatedTarget` is `null`, because it came from "nowhere":  +<<<<<<< HEAD <div style="display:none"> In case of a fast move, intermediate elements may trigger no events. But if the mouse enters the element (`mouseover`), when we're guaranteed to have `mouseout` when it leaves it. </div> +======= +>>>>>>> 540d753e90789205fc6e75c502f68382c87dea9b ```online -Check it out "live" on a teststand below. +You can check it out "live" on a teststand below. -The HTML is two nested `<div>` elements. If you move the mouse fast over them, then there may be no events at all, or maybe only the red div triggers events, or maybe the green one. +Its HTML has two nested elements: the `<div id="child">` is inside the `<div id="parent">`. If you move the mouse fast over them, then maybe only the child div triggers events, or maybe the parent one, or maybe there will be no events at all. -Also try to move the pointer over the red `div`, and then move it out quickly down through the green one. If the movement is fast enough then the parent element is ignored. +Also move the pointer into the child `div`, and then move it out quickly down through the parent one. If the movement is fast enough, then the parent element is ignored. The mouse will cross the parent element without noticing it. [codetabs height=360 src="mouseoverout-fast"] ``` -## "Extra" mouseout when leaving for a child +```smart header="If `mouseover` triggered, there must be `mouseout`" +In case of fast mouse movements, intermediate elements may be ignored, but one thing we know for sure: if the pointer "officially" entered an element (`mouseover` event generated), then upon leaving it we always get `mouseout`. +``` + +## Mouseout when leaving for a child + +<<<<<<< HEAD + +======= +An important feature of `mouseout` -- it triggers, when the pointer moves from an element to its descendant, e.g. from `#parent` to `#child` in this HTML: +>>>>>>> 540d753e90789205fc6e75c502f68382c87dea9b -Imagine -- a mouse pointer entered an element. The `mouseover` triggered. Then the cursor goes into a child element. The interesting fact is that `mouseout` triggers in that case. The cursor is still in the element, but we have a `mouseout` from it! +```html +<div id="parent"> + <div id="child">...</div> +</div> +``` + +If we're on `#parent` and then move the pointer deeper into `#child`, we get `mouseout` on `#parent`!  -That seems strange, but can be easily explained. +That may seem strange, but can be easily explained. -**According to the browser logic, the mouse cursor may be only over a *single* element at any time -- the most nested one (and top by z-index).** +**According to the browser logic, the mouse cursor may be only over a *single* element at any time -- the most nested one and top by z-index.** -So if it goes to another element (even a descendant), then it leaves the previous one. That simple. +So if it goes to another element (even a descendant), then it leaves the previous one. -There's a funny consequence that we can see on the example below. +Please note another important detail of event processing. -The red `<div>` is nested inside the blue one. The blue `<div>` has `mouseover/out` handlers that log all events in the textarea below. +The `mouseover` event on a descendant bubbles up. So, if `#parent` has `mouseover` handler, it triggers: -Try entering the blue element and then moving the mouse on the red one -- and watch the events: + + +```online +You can see that very well in the example below: `<div id="child">` is inside the `<div id="parent">`. There are `mouseover/out` handlers on `#parent` element that output event details. + +If you move the mouse from `#parent` to `#child`, you see two events on `#parent`: +1. `mouseout [target: parent]` (left the parent), then +2. `mouseover [target: child]` (came to the child, bubbled). [codetabs height=360 src="mouseoverout-child"] +``` -1. On entering the blue one -- we get `mouseover [target: blue]`. -2. Then after moving from the blue to the red one -- we get `mouseout [target: blue]` (left the parent). -3. ...And immediately `mouseover [target: red]`. +As shown, when the pointer moves from `#parent` element to `#child`, two handlers trigger on the parent element: `mouseout` and `mouseover`: -So, for a handler that does not take `target` into account, it looks like we left the parent in `mouseout` in `(2)` and returned back to it by `mouseover` in `(3)`. +```js +parent.onmouseout = function(event) { + /* event.target: parent element */ +}; +parent.onmouseover = function(event) { + /* event.target: child element (bubbled) */ +}; +``` -If we perform some actions on entering/leaving the element, then we'll get a lot of extra "false" runs. For simple stuff that may be unnoticeable. For complex things that may bring unwanted side-effects. +**If we don't examine `event.target` inside the handlers, then it may seem that the mouse pointer left `#parent` element, and then immediately came back over it.** -We can fix it by using `mouseenter/mouseleave` events instead. +But that's not the case! The pointer is still over the parent, it just moved deeper into the child element. + +If there are some actions upon leaving the parent element, e.g. an animation runs in `parent.onmouseout`, we usually don't want it when the pointer just goes deeper into `#parent`. + +To avoid it, we can check `relatedTarget` in the handler and, if the mouse is still inside the element, then ignore such event. + +Alternatively we can use other events: `mouseenter` and `mouseleave`, that we'll be covering now, as they don't have such problems. ## Events mouseenter and mouseleave -Events `mouseenter/mouseleave` are like `mouseover/mouseout`. They also trigger when the mouse pointer enters/leaves the element. +Events `mouseenter/mouseleave` are like `mouseover/mouseout`. They trigger when the mouse pointer enters/leaves the element. -But there are two differences: +But there are two important differences: -1. Transitions inside the element are not counted. +1. Transitions inside the element, to/from descendants, are not counted. 2. Events `mouseenter/mouseleave` do not bubble. -These events are intuitively very clear. +These events are extremely simple. -When the pointer enters an element -- the `mouseenter` triggers, and then doesn't matter where it goes while inside the element. The `mouseleave` event only triggers when the cursor leaves it. +When the pointer enters an element -- `mouseenter` triggers. The exact location of the pointer inside the element or its descendants doesn't matter. -If we make the same example, but put `mouseenter/mouseleave` on the blue `<div>`, and do the same -- we can see that events trigger only on entering and leaving the blue `<div>`. No extra events when going to the red one and back. Children are ignored. +When the pointer leaves an element -- `mouseleave` triggers. + +```online +This example is similar to the one above, but now the top element has `mouseenter/mouseleave` instead of `mouseover/mouseout`. + +As you can see, the only generated events are the ones related to moving the pointer in and out of the top element. Nothing happens when the pointer goes to the child and back. Transitions between descendants are ignored [codetabs height=340 src="mouseleave"] +``` ## Event delegation @@ -123,16 +167,16 @@ Events `mouseenter/leave` are very simple and easy to use. But they do not bubbl Imagine we want to handle mouse enter/leave for table cells. And there are hundreds of cells. -The natural solution would be -- to set the handler on `<table>` and process events there. But `mouseenter/leave` don't bubble. So if such event happens on `<td>`, then only a handler on that `<td>` can catch it. +The natural solution would be -- to set the handler on `<table>` and process events there. But `mouseenter/leave` don't bubble. So if such event happens on `<td>`, then only a handler on that `<td>` is able to catch it. -Handlers for `mouseenter/leave` on `<table>` only trigger on entering/leaving the whole table. It's impossible to get any information about transitions inside it. +Handlers for `mouseenter/leave` on `<table>` only trigger when the pointer enters/leaves the table as a whole. It's impossible to get any information about transitions inside it. -Not a problem -- let's use `mouseover/mouseout`. +So, let's use `mouseover/mouseout`. -A simple handler may look like this: +Let's start with simple handlers that highlight the element under mouse: ```js -// let's highlight cells under mouse +// let's highlight an element under the pointer table.onmouseover = function(event) { let target = event.target; target.style.background = 'pink'; @@ -145,41 +189,44 @@ table.onmouseout = function(event) { ``` ```online +Here they are in action. As the mouse travels across the elements of this table, the current one is highlighted: + [codetabs height=480 src="mouseenter-mouseleave-delegation"] ``` -These handlers work when going from any element to any inside the table. - -But we'd like to handle only transitions in and out of `<td>` as a whole. And highlight the cells as a whole. We don't want to handle transitions that happen between the children of `<td>`. +In our case we'd like to handle transitions between table cells `<td>`: entering a cell and leaving it. Other transitions, such as inside the cell or outside of any cells, don't interest us. Let's filter them out. -One of solutions: +Here's what we can do: -- Remember the currently highlighted `<td>` in a variable. +- Remember the currently highlighted `<td>` in a variable, let's call it `currentElem`. - On `mouseover` -- ignore the event if we're still inside the current `<td>`. - On `mouseout` -- ignore if we didn't leave the current `<td>`. -That filters out "extra" events when we are moving between the children of `<td>`. +Here's an example of code that accounts for all possible situations: -```offline -The details are in the [full example](sandbox:mouseenter-mouseleave-delegation-2). -``` +[js src="mouseenter-mouseleave-delegation-2/script.js"] + +Once again, the important features are: +1. It uses event delegation to handle entering/leaving of any `<td>` inside the table. So it relies on `mouseover/out` instead of `mouseenter/leave` that don't bubble and hence allow no delegation. +2. Extra events, such as moving between descendants of `<td>` are filtered out, so that `onEnter/Leave` runs only if the pointer leaves or enters `<td>` as a whole. ```online Here's the full example with all details: -[codetabs height=380 src="mouseenter-mouseleave-delegation-2"] +[codetabs height=460 src="mouseenter-mouseleave-delegation-2"] -Try to move the cursor in and out of table cells and inside them. Fast or slow -- doesn't matter. Only `<td>` as a whole is highlighted unlike the example before. +Try to move the cursor in and out of table cells and inside them. Fast or slow -- doesn't matter. Only `<td>` as a whole is highlighted, unlike the example before. ``` - ## Summary We covered events `mouseover`, `mouseout`, `mousemove`, `mouseenter` and `mouseleave`. -Things that are good to note: +These things are good to note: + +- A fast mouse move may skip intermediate elements. +- Events `mouseover/out` and `mouseenter/leave` have an additional property: `relatedTarget`. That's the element that we are coming from/to, complementary to `target`. + +Events `mouseover/out` trigger even when we go from the parent element to a child element. The browser assumes that the mouse can be only over one element at one time -- the deepest one. -- A fast mouse move can make `mouseover, mousemove, mouseout` to skip intermediate elements. -- Events `mouseover/out` and `mouseenter/leave` have an additional target: `relatedTarget`. That's the element that we are coming from/to, complementary to `target`. -- Events `mouseover/out` trigger even when we go from the parent element to a child element. They assume that the mouse can be only over one element at one time -- the deepest one. -- Events `mouseenter/leave` do not bubble and do not trigger when the mouse goes to a child element. They only track whether the mouse comes inside and outside the element as a whole. +Events `mouseenter/leave` are different in that aspect: they only trigger when the mouse comes in and out the element as a whole. Also they do not bubble. diff --git a/2-ui/3-event-details/3-mousemove-mouseover-mouseout-mouseenter-mouseleave/mouseenter-mouseleave-delegation-2.view/index.html b/2-ui/3-event-details/3-mousemove-mouseover-mouseout-mouseenter-mouseleave/mouseenter-mouseleave-delegation-2.view/index.html index e129ee6a2..eedd38716 100755 --- a/2-ui/3-event-details/3-mousemove-mouseover-mouseout-mouseenter-mouseleave/mouseenter-mouseleave-delegation-2.view/index.html +++ b/2-ui/3-event-details/3-mousemove-mouseover-mouseout-mouseenter-mouseleave/mouseenter-mouseleave-delegation-2.view/index.html @@ -67,6 +67,10 @@ </table> + <textarea id="text"></textarea> + + <input type="button" onclick="text.value=''" value="Clear"> + <script src="script.js"></script> </body> diff --git a/2-ui/3-event-details/3-mousemove-mouseover-mouseout-mouseenter-mouseleave/mouseenter-mouseleave-delegation-2.view/script.js b/2-ui/3-event-details/3-mousemove-mouseover-mouseout-mouseenter-mouseleave/mouseenter-mouseleave-delegation-2.view/script.js index 9f6bf1b5b..6a3202467 100755 --- a/2-ui/3-event-details/3-mousemove-mouseover-mouseout-mouseenter-mouseleave/mouseenter-mouseleave-delegation-2.view/script.js +++ b/2-ui/3-event-details/3-mousemove-mouseover-mouseout-mouseenter-mouseleave/mouseenter-mouseleave-delegation-2.view/script.js @@ -2,37 +2,61 @@ let currentElem = null; table.onmouseover = function(event) { - if (currentElem) { - // before entering a new element, the mouse always leaves the previous one - // if we didn't leave <td> yet, then we're still inside it, so can ignore the event - return; - } + // before entering a new element, the mouse always leaves the previous one + // if currentElem is set, we didn't leave the previous <td>, + // that's a mouseover inside it, ignore the event + if (currentElem) return; let target = event.target.closest('td'); - if (!target || !table.contains(target)) return; - // yeah we're inside <td> now + // we moved not into a <td> - ignore + if (!target) return; + + // moved into <td>, but outside of our table (possible in case of nested tables) + // ignore + if (!table.contains(target)) return; + + // hooray! we entered a new <td> currentElem = target; - target.style.background = 'pink'; + onEnter(currentElem); }; table.onmouseout = function(event) { // if we're outside of any <td> now, then ignore the event + // that's probably a move inside the table, but out of <td>, + // e.g. from <tr> to another <tr> if (!currentElem) return; - // we're leaving the element -- where to? Maybe to a child element? + // we're leaving the element – where to? Maybe to a descendant? let relatedTarget = event.relatedTarget; - if (relatedTarget) { // possible: relatedTarget = null - while (relatedTarget) { - // go up the parent chain and check -- if we're still inside currentElem - // then that's an internal transition -- ignore it - if (relatedTarget == currentElem) return; - relatedTarget = relatedTarget.parentNode; - } + + while (relatedTarget) { + // go up the parent chain and check – if we're still inside currentElem + // then that's an internal transition – ignore it + if (relatedTarget == currentElem) return; + + relatedTarget = relatedTarget.parentNode; } - // we left the element. really. - currentElem.style.background = ''; + // we left the <td>. really. + onLeave(currentElem); currentElem = null; }; + +// any functions to handle entering/leaving an element +function onEnter(elem) { + elem.style.background = 'pink'; + + // show that in textarea + text.value += `over -> ${currentElem.tagName}.${currentElem.className}\n`; + text.scrollTop = 1e6; +} + +function onLeave(elem) { + elem.style.background = ''; + + // show that in textarea + text.value += `out <- ${elem.tagName}.${elem.className}\n`; + text.scrollTop = 1e6; +} diff --git a/2-ui/3-event-details/3-mousemove-mouseover-mouseout-mouseenter-mouseleave/mouseenter-mouseleave-delegation-2.view/style.css b/2-ui/3-event-details/3-mousemove-mouseover-mouseout-mouseenter-mouseleave/mouseenter-mouseleave-delegation-2.view/style.css index 61e19e363..a5b1fd889 100755 --- a/2-ui/3-event-details/3-mousemove-mouseover-mouseout-mouseenter-mouseleave/mouseenter-mouseleave-delegation-2.view/style.css +++ b/2-ui/3-event-details/3-mousemove-mouseover-mouseout-mouseenter-mouseleave/mouseenter-mouseleave-delegation-2.view/style.css @@ -16,6 +16,7 @@ vertical-align: bottom; padding-top: 5px; padding-bottom: 12px; + cursor: pointer; } #table .nw { @@ -62,4 +63,4 @@ #table .highlight { background: red; -} \ No newline at end of file +} diff --git a/2-ui/3-event-details/3-mousemove-mouseover-mouseout-mouseenter-mouseleave/mouseenter-mouseleave-delegation.view/script.js b/2-ui/3-event-details/3-mousemove-mouseover-mouseout-mouseenter-mouseleave/mouseenter-mouseleave-delegation.view/script.js index 4700d686e..ae633ad67 100755 --- a/2-ui/3-event-details/3-mousemove-mouseover-mouseout-mouseenter-mouseleave/mouseenter-mouseleave-delegation.view/script.js +++ b/2-ui/3-event-details/3-mousemove-mouseover-mouseout-mouseenter-mouseleave/mouseenter-mouseleave-delegation.view/script.js @@ -1,13 +1,15 @@ table.onmouseover = function(event) { let target = event.target; target.style.background = 'pink'; - text.value += "mouseover " + target.tagName + "\n"; + + text.value += `over -> ${target.tagName}\n`; text.scrollTop = text.scrollHeight; }; table.onmouseout = function(event) { let target = event.target; target.style.background = ''; - text.value += "mouseout " + target.tagName + "\n"; + + text.value += `out <- ${target.tagName}\n`; text.scrollTop = text.scrollHeight; -}; \ No newline at end of file +}; diff --git a/2-ui/3-event-details/3-mousemove-mouseover-mouseout-mouseenter-mouseleave/mouseenter-mouseleave-delegation.view/style.css b/2-ui/3-event-details/3-mousemove-mouseover-mouseout-mouseenter-mouseleave/mouseenter-mouseleave-delegation.view/style.css index 61e19e363..a5b1fd889 100755 --- a/2-ui/3-event-details/3-mousemove-mouseover-mouseout-mouseenter-mouseleave/mouseenter-mouseleave-delegation.view/style.css +++ b/2-ui/3-event-details/3-mousemove-mouseover-mouseout-mouseenter-mouseleave/mouseenter-mouseleave-delegation.view/style.css @@ -16,6 +16,7 @@ vertical-align: bottom; padding-top: 5px; padding-bottom: 12px; + cursor: pointer; } #table .nw { @@ -62,4 +63,4 @@ #table .highlight { background: red; -} \ No newline at end of file +} diff --git a/2-ui/3-event-details/3-mousemove-mouseover-mouseout-mouseenter-mouseleave/mouseleave-table.view/style.css b/2-ui/3-event-details/3-mousemove-mouseover-mouseout-mouseenter-mouseleave/mouseleave-table.view/style.css index 61e19e363..a5b1fd889 100755 --- a/2-ui/3-event-details/3-mousemove-mouseover-mouseout-mouseenter-mouseleave/mouseleave-table.view/style.css +++ b/2-ui/3-event-details/3-mousemove-mouseover-mouseout-mouseenter-mouseleave/mouseleave-table.view/style.css @@ -16,6 +16,7 @@ vertical-align: bottom; padding-top: 5px; padding-bottom: 12px; + cursor: pointer; } #table .nw { @@ -62,4 +63,4 @@ #table .highlight { background: red; -} \ No newline at end of file +} diff --git a/2-ui/3-event-details/3-mousemove-mouseover-mouseout-mouseenter-mouseleave/mouseleave.view/index.html b/2-ui/3-event-details/3-mousemove-mouseover-mouseout-mouseenter-mouseleave/mouseleave.view/index.html index 87fc5c635..f26fdbdae 100755 --- a/2-ui/3-event-details/3-mousemove-mouseover-mouseout-mouseenter-mouseleave/mouseleave.view/index.html +++ b/2-ui/3-event-details/3-mousemove-mouseover-mouseout-mouseenter-mouseleave/mouseleave.view/index.html @@ -1,15 +1,15 @@ -<!DOCTYPE HTML> +<!doctype html> <html> <head> - <meta charset="utf-8"> + <meta charset="UTF-8"> <link rel="stylesheet" href="style.css"> </head> <body> - <div id="blue" onmouseenter="log(event)" onmouseleave="log(event)"> - <div id="red"></div> + <div id="parent" onmouseenter="mouselog(event)" onmouseleave="mouselog(event)">parent + <div id="child">child</div> </div> <textarea id="text"></textarea> diff --git a/2-ui/3-event-details/3-mousemove-mouseover-mouseout-mouseenter-mouseleave/mouseleave.view/script.js b/2-ui/3-event-details/3-mousemove-mouseover-mouseout-mouseenter-mouseleave/mouseleave.view/script.js index 7b0b70b19..bf64f2de7 100755 --- a/2-ui/3-event-details/3-mousemove-mouseover-mouseout-mouseenter-mouseleave/mouseleave.view/script.js +++ b/2-ui/3-event-details/3-mousemove-mouseover-mouseout-mouseenter-mouseleave/mouseleave.view/script.js @@ -1,4 +1,5 @@ -function log(event) { - text.value += event.type + ' [target: ' + event.target.id + ']\n'; +function mouselog(event) { + let d = new Date(); + text.value += `${d.getHours()}:${d.getMinutes()}:${d.getSeconds()} | ${event.type} [target: ${event.target.id}]\n`.replace(/(:|^)(\d\D)/, '$10$2'); text.scrollTop = text.scrollHeight; -} \ No newline at end of file +} diff --git a/2-ui/3-event-details/3-mousemove-mouseover-mouseout-mouseenter-mouseleave/mouseleave.view/style.css b/2-ui/3-event-details/3-mousemove-mouseover-mouseout-mouseenter-mouseleave/mouseleave.view/style.css index d4a759838..c4024f32e 100755 --- a/2-ui/3-event-details/3-mousemove-mouseover-mouseout-mouseenter-mouseleave/mouseleave.view/style.css +++ b/2-ui/3-event-details/3-mousemove-mouseover-mouseout-mouseenter-mouseleave/mouseleave.view/style.css @@ -1,21 +1,22 @@ -#blue { - background: blue; +#parent { + background: #99C0C3; width: 160px; - height: 160px; + height: 120px; position: relative; } -#red { - background: red; - width: 70px; - height: 70px; +#child { + background: #FFDE99; + width: 50%; + height: 50%; position: absolute; - left: 45px; - top: 45px; + left: 50%; + top: 50%; + transform: translate(-50%, -50%); } -#text { +textarea { + height: 140px; + width: 300px; display: block; - height: 100px; - width: 400px; -} \ No newline at end of file +} diff --git a/2-ui/3-event-details/3-mousemove-mouseover-mouseout-mouseenter-mouseleave/mouseover-bubble-nested.svg b/2-ui/3-event-details/3-mousemove-mouseover-mouseout-mouseenter-mouseleave/mouseover-bubble-nested.svg new file mode 100644 index 000000000..6044eff17 --- /dev/null +++ b/2-ui/3-event-details/3-mousemove-mouseover-mouseout-mouseenter-mouseleave/mouseover-bubble-nested.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="258" height="143" viewBox="0 0 258 143"><defs><style>@import url(https://fonts.googleapis.com/css?family=Open+Sans:bold,italic,bolditalic%7CPT+Mono);@font-face{font-family:'PT Mono';font-weight:700;font-style:normal;src:local('PT MonoBold'),url(/font/PTMonoBold.woff2) format('woff2'),url(/font/PTMonoBold.woff) format('woff'),url(/font/PTMonoBold.ttf) format('truetype')}</style></defs><defs><filter id="filter-2" width="212.1%" height="203.6%" x="-52.6%" y="-43.3%" filterUnits="objectBoundingBox"><feMorphology in="SourceAlpha" operator="dilate" radius="1" result="shadowSpreadOuter1"/><feOffset dy="1" in="shadowSpreadOuter1" result="shadowOffsetOuter1"/><feGaussianBlur in="shadowOffsetOuter1" result="shadowBlurOuter1" stdDeviation="1.5"/><feComposite in="shadowBlurOuter1" in2="SourceAlpha" operator="out" result="shadowBlurOuter1"/><feColorMatrix in="shadowBlurOuter1" values="0 0 0 0 0.0941176471 0 0 0 0 0.0901960784 0 0 0 0 0.0901960784 0 0 0 1 0"/></filter><path id="path-1" d="M12.487 6.865L0 0l3.64 13.776 2.726-4.108 3.264 4.177 1.474-1.152-3.263-4.177z"/></defs><g id="dom" fill="none" fill-rule="evenodd" stroke="none" stroke-width="1"><g id="mouseover-bubble-nested.svg"><path id="Rectangle-210" fill="#DBAF88" d="M184.47 57L200 119H78l15.53-62z"/><path id="Rectangle-209" stroke="#91C2A3" stroke-width="18" d="M207.628 30l20.205 66H50.167l20.205-66h137.256z"/><path id="Fill-54" fill="#C06334" d="M109.435 56l-.683 3.884c-15.408-.725-31.056.348-45.752 3.22l5.647 7.733c12.417-2.427 25.638-3.334 38.656-2.721L106.62 72c7.56-2.333 26.38-5.03 26.38-5.03S118.836 59.132 109.435 56z" transform="rotate(33 98 64)"/><g id="Rectangle-237" transform="translate(126 85)"><use fill="#000" filter="url(#filter-2)" xlink:href="#path-1"/><path fill="#FFF" stroke="#181717" d="M-.781-1l14.484 7.963-5.041 1.792 3.144 4.025-2.262 1.767-3.145-4.025-2.958 4.459L-.78-1z"/></g><text id="mouseout" fill="#643B0C" font-family="PTMono-Bold, PT Mono" font-size="14" font-weight="bold"><tspan x="39" y="39">mouseout</tspan></text><text id="mouseover" fill="#643B0C" font-family="PTMono-Bold, PT Mono" font-size="14" font-weight="bold"><tspan x="144" y="75">mouseover</tspan></text><text id="#parent" fill="#91C2A3" font-family="PTMono-Bold, PT Mono" font-size="14" font-weight="bold"><tspan x="4" y="18">#parent</tspan></text><text id="#child" fill="#AF6E24" font-family="PTMono-Bold, PT Mono" font-size="14" font-weight="bold"><tspan x="4" y="124">#child</tspan></text><path id="Fill-46" fill="#C06334" d="M124.709 37.276a2.456 2.456 0 000 3.452 2.404 2.404 0 003.42 0l5.452-5.499v40.33a2.43 2.43 0 002.42 2.441 2.43 2.43 0 002.418-2.441v-40.33l5.451 5.5a2.405 2.405 0 003.422 0c.944-.954.944-2.5 0-3.453l-9.485-9.569a2.392 2.392 0 00-1.807-.705 2.395 2.395 0 00-1.808.705l-9.483 9.569z"/></g></g></svg> \ No newline at end of file diff --git a/2-ui/3-event-details/3-mousemove-mouseover-mouseout-mouseenter-mouseleave/mouseoverout-child.view/index.html b/2-ui/3-event-details/3-mousemove-mouseover-mouseout-mouseenter-mouseleave/mouseoverout-child.view/index.html index 20c96c0a7..b110a199d 100755 --- a/2-ui/3-event-details/3-mousemove-mouseover-mouseout-mouseenter-mouseleave/mouseoverout-child.view/index.html +++ b/2-ui/3-event-details/3-mousemove-mouseover-mouseout-mouseenter-mouseleave/mouseoverout-child.view/index.html @@ -8,8 +8,8 @@ <body> - <div class="blue" onmouseover="mouselog(event)" onmouseout="mouselog(event)"> - <div class="red"></div> + <div id="parent" onmouseover="mouselog(event)" onmouseout="mouselog(event)">parent + <div id="child">child</div> </div> <textarea id="text"></textarea> diff --git a/2-ui/3-event-details/3-mousemove-mouseover-mouseout-mouseenter-mouseleave/mouseoverout-child.view/script.js b/2-ui/3-event-details/3-mousemove-mouseover-mouseout-mouseenter-mouseleave/mouseoverout-child.view/script.js index 98a098150..bf64f2de7 100755 --- a/2-ui/3-event-details/3-mousemove-mouseover-mouseout-mouseenter-mouseleave/mouseoverout-child.view/script.js +++ b/2-ui/3-event-details/3-mousemove-mouseover-mouseout-mouseenter-mouseleave/mouseoverout-child.view/script.js @@ -1,4 +1,5 @@ function mouselog(event) { - text.value += event.type + ' [target: ' + event.target.className + ']\n' - text.scrollTop = text.scrollHeight -} \ No newline at end of file + let d = new Date(); + text.value += `${d.getHours()}:${d.getMinutes()}:${d.getSeconds()} | ${event.type} [target: ${event.target.id}]\n`.replace(/(:|^)(\d\D)/, '$10$2'); + text.scrollTop = text.scrollHeight; +} diff --git a/2-ui/3-event-details/3-mousemove-mouseover-mouseout-mouseenter-mouseleave/mouseoverout-child.view/style.css b/2-ui/3-event-details/3-mousemove-mouseover-mouseout-mouseenter-mouseleave/mouseoverout-child.view/style.css index 49e3f9d6d..c4024f32e 100755 --- a/2-ui/3-event-details/3-mousemove-mouseover-mouseout-mouseenter-mouseleave/mouseoverout-child.view/style.css +++ b/2-ui/3-event-details/3-mousemove-mouseover-mouseout-mouseenter-mouseleave/mouseoverout-child.view/style.css @@ -1,21 +1,22 @@ -.blue { - background: blue; +#parent { + background: #99C0C3; width: 160px; - height: 160px; + height: 120px; position: relative; } -.red { - background: red; - width: 100px; - height: 100px; +#child { + background: #FFDE99; + width: 50%; + height: 50%; position: absolute; - left: 30px; - top: 30px; + left: 50%; + top: 50%; + transform: translate(-50%, -50%); } textarea { - height: 100px; - width: 400px; + height: 140px; + width: 300px; display: block; -} \ No newline at end of file +} diff --git a/2-ui/3-event-details/3-mousemove-mouseover-mouseout-mouseenter-mouseleave/mouseoverout-fast.view/index.html b/2-ui/3-event-details/3-mousemove-mouseover-mouseout-mouseenter-mouseleave/mouseoverout-fast.view/index.html index 1e38d693c..9a2691a2f 100755 --- a/2-ui/3-event-details/3-mousemove-mouseover-mouseout-mouseenter-mouseleave/mouseoverout-fast.view/index.html +++ b/2-ui/3-event-details/3-mousemove-mouseover-mouseout-mouseenter-mouseleave/mouseoverout-fast.view/index.html @@ -1,5 +1,5 @@ <!doctype html> -<html lang="en"> +<html> <head> <meta charset="UTF-8"> @@ -8,13 +8,11 @@ <body> - <div id="green"> - <div id="red">Test</div> + <div id="parent">parent + <div id="child">child</div> </div> - - <input onclick="clearText()" value="Clear" type="button"> - <textarea id="text"></textarea> + <input onclick="clearText()" value="Clear" type="button"> <script src="script.js"></script> diff --git a/2-ui/3-event-details/3-mousemove-mouseover-mouseout-mouseenter-mouseleave/mouseoverout-fast.view/script.js b/2-ui/3-event-details/3-mousemove-mouseover-mouseout-mouseenter-mouseleave/mouseoverout-fast.view/script.js index 63ec8cdcb..5752e83ae 100755 --- a/2-ui/3-event-details/3-mousemove-mouseover-mouseout-mouseenter-mouseleave/mouseoverout-fast.view/script.js +++ b/2-ui/3-event-details/3-mousemove-mouseover-mouseout-mouseenter-mouseleave/mouseoverout-fast.view/script.js @@ -1,47 +1,48 @@ - green.onmouseover = green.onmouseout = green.onmousemove = handler; +let parent = document.getElementById('parent'); +parent.onmouseover = parent.onmouseout = parent.onmousemove = handler; - function handler(event) { - let type = event.type; - while (type < 11) type += ' '; +function handler(event) { + let type = event.type; + while (type.length < 11) type += ' '; - log(type + " target=" + event.target.id) - return false; - } + log(type + " target=" + event.target.id) + return false; +} - function clearText() { - text.value = ""; - lastMessage = ""; - } +function clearText() { + text.value = ""; + lastMessage = ""; +} - let lastMessageTime = 0; - let lastMessage = ""; - let repeatCounter = 1; +let lastMessageTime = 0; +let lastMessage = ""; +let repeatCounter = 1; - function log(message) { - if (lastMessageTime == 0) lastMessageTime = new Date(); +function log(message) { + if (lastMessageTime == 0) lastMessageTime = new Date(); - let time = new Date(); + let time = new Date(); - if (time - lastMessageTime > 500) { - message = '------------------------------\n' + message; - } + if (time - lastMessageTime > 500) { + message = '------------------------------\n' + message; + } - if (message === lastMessage) { - repeatCounter++; - if (repeatCounter == 2) { - text.value = text.value.trim() + ' x 2\n'; - } else { - text.value = text.value.slice(0, text.value.lastIndexOf('x') + 1) + repeatCounter + "\n"; - } + if (message === lastMessage) { + repeatCounter++; + if (repeatCounter == 2) { + text.value = text.value.trim() + ' x 2\n'; + } else { + text.value = text.value.slice(0, text.value.lastIndexOf('x') + 1) + repeatCounter + "\n"; + } - } else { - repeatCounter = 1; - text.value += message + "\n"; - } + } else { + repeatCounter = 1; + text.value += message + "\n"; + } - text.scrollTop = text.scrollHeight; + text.scrollTop = text.scrollHeight; - lastMessageTime = time; - lastMessage = message; - } \ No newline at end of file + lastMessageTime = time; + lastMessage = message; +} diff --git a/2-ui/3-event-details/3-mousemove-mouseover-mouseout-mouseenter-mouseleave/mouseoverout-fast.view/style.css b/2-ui/3-event-details/3-mousemove-mouseover-mouseout-mouseenter-mouseleave/mouseoverout-fast.view/style.css index e6ae1a2b0..c4024f32e 100755 --- a/2-ui/3-event-details/3-mousemove-mouseover-mouseout-mouseenter-mouseleave/mouseoverout-fast.view/style.css +++ b/2-ui/3-event-details/3-mousemove-mouseover-mouseout-mouseenter-mouseleave/mouseoverout-fast.view/style.css @@ -1,23 +1,22 @@ -#green { - height: 50px; +#parent { + background: #99C0C3; width: 160px; - background: green; + height: 120px; + position: relative; } -#red { - height: 20px; - width: 110px; - background: red; - color: white; - font-weight: bold; - padding: 5px; - text-align: center; - margin: 20px; +#child { + background: #FFDE99; + width: 50%; + height: 50%; + position: absolute; + left: 50%; + top: 50%; + transform: translate(-50%, -50%); } -#text { - font-size: 12px; - height: 200px; - width: 360px; +textarea { + height: 140px; + width: 300px; display: block; -} \ No newline at end of file +} diff --git a/2-ui/3-event-details/3-mousemove-mouseover-mouseout-mouseenter-mouseleave/mouseoverout.view/script.js b/2-ui/3-event-details/3-mousemove-mouseover-mouseout-mouseenter-mouseleave/mouseoverout.view/script.js index 8fa60cc2d..073ee7792 100755 --- a/2-ui/3-event-details/3-mousemove-mouseover-mouseout-mouseenter-mouseleave/mouseoverout.view/script.js +++ b/2-ui/3-event-details/3-mousemove-mouseover-mouseout-mouseenter-mouseleave/mouseoverout.view/script.js @@ -7,9 +7,9 @@ function handler(event) { return el.className || el.tagName; } - log.value += event.type + ': ' + + log.value += event.type + ': ' + 'target=' + str(event.target) + - ', relatedTarget=' + str(event.relatedTarget) + "\n"; + ', relatedTarget=' + str(event.relatedTarget) + "\n"; log.scrollTop = log.scrollHeight; if (event.type == 'mouseover') { diff --git a/2-ui/3-event-details/4-mouse-drag-and-drop/1-slider/solution.md b/2-ui/3-event-details/4-mouse-drag-and-drop/1-slider/solution.md index 28e8cffa9..6d8878d4a 100644 --- a/2-ui/3-event-details/4-mouse-drag-and-drop/1-slider/solution.md +++ b/2-ui/3-event-details/4-mouse-drag-and-drop/1-slider/solution.md @@ -1,4 +1,5 @@ +As we can see from HTML/CSS, the slider is a `<div>` with a colored background, that contains a runner -- another `<div>` with `position:relative`. -We have a horizontal Drag'n'Drop here. +To position the runner we use `position:relative`, to provide the coordinates relative to its parent, here it's more convenient here than `position:absolute`. -To position the element we use `position:relative` and slider-relative coordinates for the thumb. Here it's more convenient here than `position:absolute`. +Then we implement horizontal-only Drag'n'Drop with limitation by width. diff --git a/2-ui/3-event-details/4-mouse-drag-and-drop/2-drag-heroes/solution.md b/2-ui/3-event-details/4-mouse-drag-and-drop/2-drag-heroes/solution.md index deb43b655..62cbdb9c5 100644 --- a/2-ui/3-event-details/4-mouse-drag-and-drop/2-drag-heroes/solution.md +++ b/2-ui/3-event-details/4-mouse-drag-and-drop/2-drag-heroes/solution.md @@ -1,5 +1,5 @@ -To drag the element we can use `position:fixed`, it makes coordinates easier to manage. At the end we should switch it back to `position:absolute`. +To drag the element we can use `position:fixed`, it makes coordinates easier to manage. At the end we should switch it back to `position:absolute` to lay the element into the document. -Then, when coordinates are at window top/bottom, we use `window.scrollTo` to scroll it. +When coordinates are at window top/bottom, we use `window.scrollTo` to scroll it. More details in the code, in comments. diff --git a/2-ui/3-event-details/4-mouse-drag-and-drop/2-drag-heroes/solution.view/field.svg b/2-ui/3-event-details/4-mouse-drag-and-drop/2-drag-heroes/solution.view/field.svg index 4ae90b1c7..17991d792 100644 --- a/2-ui/3-event-details/4-mouse-drag-and-drop/2-drag-heroes/solution.view/field.svg +++ b/2-ui/3-event-details/4-mouse-drag-and-drop/2-drag-heroes/solution.view/field.svg @@ -1 +1,5 @@ -<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="233" height="156" viewBox="0 0 233 156"><defs><style>@import url(https://fonts.googleapis.com/css?family=Open+Sans:bold,italic,bolditalic%7CPT+Mono);@font-face{font-family:'PT Mono';font-weight:700;font-style:normal;src:local('PT MonoBold'),url(/font/PTMonoBold.woff2) format('woff2'),url(/font/PTMonoBold.woff) format('woff'),url(/font/PTMonoBold.ttf) format('truetype')}</style></defs><g id="dom" fill="none" fill-rule="evenodd" stroke="none" stroke-width="1"><g id="field.svg"><image id="Screen-Shot-2017-02-25-at-23.45.22" width="224" height="150" x="4" y="3" opacity=".7" xlink:href="data:image/png;base64,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"/><text id="(0,0)" fill="#A7333A" font-family="PTMono-Bold, PT Mono" font-size="14" font-weight="bold"><tspan x="45" y="60">(0,0)</tspan></text><circle id="Oval" cx="15.5" cy="15.5" r="4.5" fill="#C06334"/><text id="clientWidth" fill="#A7333A" font-family="PTMono-Bold, PT Mono" font-size="14" font-weight="bold"><tspan x="73" y="114">clientWidth</tspan></text><path id="Line-9" fill="#C06334" fill-rule="nonzero" d="M24.114 22.183l20.711 4.719-5.078 6.181 13.705 11.258 1.16.952-1.905 2.318-1.16-.952-13.704-11.258-5.078 6.183-8.651-19.401z"/><path id="Line-10" fill="#C06334" fill-rule="nonzero" d="M197 118l19 9.5-19 9.5v-8H34v8l-19-9.5 19-9.5v8h163v-8z"/></g></g></svg> \ No newline at end of file +<<<<<<< HEAD +<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="233" height="156" viewBox="0 0 233 156"><defs><style>@import url(https://fonts.googleapis.com/css?family=Open+Sans:bold,italic,bolditalic%7CPT+Mono);@font-face{font-family:'PT Mono';font-weight:700;font-style:normal;src:local('PT MonoBold'),url(/font/PTMonoBold.woff2) format('woff2'),url(/font/PTMonoBold.woff) format('woff'),url(/font/PTMonoBold.ttf) format('truetype')}</style></defs><g id="dom" fill="none" fill-rule="evenodd" stroke="none" stroke-width="1"><g id="field.svg"><image id="Screen-Shot-2017-02-25-at-23.45.22" width="224" height="150" x="4" y="3" opacity=".7" xlink:href="data:image/png;base64,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"/><text id="(0,0)" fill="#A7333A" font-family="PTMono-Bold, PT Mono" font-size="14" font-weight="bold"><tspan x="45" y="60">(0,0)</tspan></text><circle id="Oval" cx="15.5" cy="15.5" r="4.5" fill="#C06334"/><text id="clientWidth" fill="#A7333A" font-family="PTMono-Bold, PT Mono" font-size="14" font-weight="bold"><tspan x="73" y="114">clientWidth</tspan></text><path id="Line-9" fill="#C06334" fill-rule="nonzero" d="M24.114 22.183l20.711 4.719-5.078 6.181 13.705 11.258 1.16.952-1.905 2.318-1.16-.952-13.704-11.258-5.078 6.183-8.651-19.401z"/><path id="Line-10" fill="#C06334" fill-rule="nonzero" d="M197 118l19 9.5-19 9.5v-8H34v8l-19-9.5 19-9.5v8h163v-8z"/></g></g></svg> +======= +<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="233" height="156" viewBox="0 0 233 156"><defs><style>@import url(https://fonts.googleapis.com/css?family=Open+Sans:bold,italic,bolditalic%7CPT+Mono);@font-face{font-family:'PT Mono';font-weight:700;font-style:normal;src:local('PT MonoBold'),url(/font/PTMonoBold.woff2) format('woff2'),url(/font/PTMonoBold.woff) format('woff'),url(/font/PTMonoBold.ttf) format('truetype')}</style></defs><g id="dom" fill="none" fill-rule="evenodd" stroke="none" stroke-width="1"><g id="field.svg"><image id="Screen-Shot-2017-02-25-at-23.45.22" width="224" height="150" x="4" y="3" opacity=".7" xlink:href="data:image/png;base64,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"/><text id="(0,0)" fill="#A7333A" font-family="PTMono-Bold, PT Mono" font-size="14" font-weight="bold"><tspan x="45" y="60">(0,0)</tspan></text><circle id="Oval" cx="15.5" cy="15.5" r="4.5" fill="#C06334"/><text id="clientWidth" fill="#A7333A" font-family="PTMono-Bold, PT Mono" font-size="14" font-weight="bold"><tspan x="73" y="114">clientWidth</tspan></text><path id="Line-9" fill="#C06334" fill-rule="nonzero" d="M24.114 22.183l20.711 4.719-5.078 6.181 13.705 11.258 1.16.952-1.905 2.318-1.16-.952-13.704-11.258-5.078 6.183-8.651-19.401z"/><path id="Line-10" fill="#C06334" fill-rule="nonzero" d="M197 118l19 9.5-19 9.5v-8H34v8l-19-9.5 19-9.5v8h163v-8z"/></g></g></svg> +>>>>>>> 540d753e90789205fc6e75c502f68382c87dea9b diff --git a/2-ui/3-event-details/4-mouse-drag-and-drop/2-drag-heroes/solution.view/soccer.js b/2-ui/3-event-details/4-mouse-drag-and-drop/2-drag-heroes/solution.view/soccer.js index 1c1443a7e..10ae2eeed 100644 --- a/2-ui/3-event-details/4-mouse-drag-and-drop/2-drag-heroes/solution.view/soccer.js +++ b/2-ui/3-event-details/4-mouse-drag-and-drop/2-drag-heroes/solution.view/soccer.js @@ -7,7 +7,7 @@ document.addEventListener('mousedown', function(event) { if (!dragElement) return; event.preventDefault(); - + dragElement.ondragstart = function() { return false; }; @@ -19,7 +19,7 @@ document.addEventListener('mousedown', function(event) { function onMouseUp(event) { finishDrag(); }; - + function onMouseMove(event) { moveAt(event.clientX, event.clientY); } @@ -31,9 +31,9 @@ document.addEventListener('mousedown', function(event) { if(isDragging) { return; } - + isDragging = true; - + document.addEventListener('mousemove', onMouseMove); element.addEventListener('mouseup', onMouseUp); @@ -50,10 +50,10 @@ document.addEventListener('mousedown', function(event) { if(!isDragging) { return; } - + isDragging = false; - dragElement.style.top = parseInt(dragElement.style.top) + pageYOffset + 'px'; + dragElement.style.top = parseInt(dragElement.style.top) + window.pageYOffset + 'px'; dragElement.style.position = 'absolute'; document.removeEventListener('mousemove', onMouseMove); @@ -113,4 +113,4 @@ document.addEventListener('mousedown', function(event) { dragElement.style.top = newY + 'px'; } -}); \ No newline at end of file +}); diff --git a/2-ui/3-event-details/4-mouse-drag-and-drop/2-drag-heroes/task.md b/2-ui/3-event-details/4-mouse-drag-and-drop/2-drag-heroes/task.md index 16add0cf8..91fbaa0f2 100644 --- a/2-ui/3-event-details/4-mouse-drag-and-drop/2-drag-heroes/task.md +++ b/2-ui/3-event-details/4-mouse-drag-and-drop/2-drag-heroes/task.md @@ -12,8 +12,8 @@ Requirements: - Use event delegation to track drag start: a single event handler on `document` for `mousedown`. - If elements are dragged to top/bottom window edges -- the page scrolls up/down to allow further dragging. -- There is no horizontal scroll. -- Draggable elements should never leave the window, even after swift mouse moves. +- There is no horizontal scroll (this makes the task a bit simpler, adding it is easy). +- Draggable elements or their parts should never leave the window, even after swift mouse moves. The demo is too big to fit it here, so here's the link. diff --git a/2-ui/3-event-details/4-mouse-drag-and-drop/article.md b/2-ui/3-event-details/4-mouse-drag-and-drop/article.md index 6f9238143..4c928eef1 100644 --- a/2-ui/3-event-details/4-mouse-drag-and-drop/article.md +++ b/2-ui/3-event-details/4-mouse-drag-and-drop/article.md @@ -1,40 +1,36 @@ # Drag'n'Drop with mouse events -Drag'n'Drop is a great interface solution. Taking something, dragging and dropping is a clear and simple way to do many things, from copying and moving (see file managers) to ordering (drop into cart). +Drag'n'Drop is a great interface solution. Taking something and dragging and dropping it is a clear and simple way to do many things, from copying and moving documents (as in file managers) to ordering (dropping items into a cart). -In the modern HTML standard there's a [section about Drag Events](https://html.spec.whatwg.org/multipage/interaction.html#dnd). +In the modern HTML standard there's a [section about Drag and Drop](https://html.spec.whatwg.org/multipage/interaction.html#dnd) with special events such as `dragstart`, `dragend`, and so on. -They are interesting, because they allow to solve simple tasks easily, and also allow to handle drag'n'drop of "external" files into the browser. So we can take a file in the OS file-manager and drop it into the browser window. Then JavaScript gains access to its contents. +These events allow us to support special kinds of drag'n'drop, such as handling dragging a file from OS file-manager and dropping it into the browser window. Then JavaScript can access the contents of such files. -But native Drag Events also have limitations. For instance, we can limit dragging by a certain area. Also we can't make it "horizontal" or "vertical" only. There are other drag'n'drop tasks that can't be implemented using that API. +But native Drag Events also have limitations. For instance, we can't prevent dragging from a certain area. Also we can't make the dragging "horizontal" or "vertical" only. And there are many other drag'n'drop tasks that can't be done using them. Also, mobile device support for such events is very weak. -So here we'll see how to implement Drag'n'Drop using mouse events. Not that hard either. +So here we'll see how to implement Drag'n'Drop using mouse events. ## Drag'n'Drop algorithm The basic Drag'n'Drop algorithm looks like this: -1. Catch `mousedown` on a draggable element. -2. Prepare the element for moving (maybe create a copy of it or whatever). -3. Then on `mousemove` move it by changing `left/top` and `position:absolute`. -4. On `mouseup` (button release) -- perform all actions related to a finished Drag'n'Drop. +1. On `mousedown` - prepare the element for moving, if needed (maybe create a clone of it, add a class to it or whatever). +2. Then on `mousemove` move it by changing `left/top` with `position:absolute`. +3. On `mouseup` - perform all actions related to finishing the drag'n'drop. -These are the basics. We can extend it, for instance, by highlighting droppable (available for the drop) elements when hovering over them. +These are the basics. Later we'll see how to add other features, such as highlighting current underlying elements while we drag over them. -Here's the algorithm for drag'n'drop of a ball: +Here's the implementation of dragging a ball: ```js -ball.onmousedown = function(event) { // (1) start the process - - // (2) prepare to moving: make absolute and on top by z-index +ball.onmousedown = function(event) { + // (1) prepare to moving: make absolute and on top by z-index ball.style.position = 'absolute'; ball.style.zIndex = 1000; + // move it out of any current parents directly into body // to make it positioned relative to the body - document.body.append(ball); - // ...and put that absolutely positioned ball under the cursor - - moveAt(event.pageX, event.pageY); + document.body.append(ball); // centers the ball at (pageX, pageY) coordinates function moveAt(pageX, pageY) { @@ -42,14 +38,17 @@ ball.onmousedown = function(event) { // (1) start the process ball.style.top = pageY - ball.offsetHeight / 2 + 'px'; } + // move our absolutely positioned ball under the pointer + moveAt(event.pageX, event.pageY); + function onMouseMove(event) { moveAt(event.pageX, event.pageY); } - // (3) move the ball on mousemove + // (2) move the ball on mousemove document.addEventListener('mousemove', onMouseMove); - // (4) drop the ball, remove unneeded handlers + // (3) drop the ball, remove unneeded handlers ball.onmouseup = function() { document.removeEventListener('mousemove', onMouseMove); ball.onmouseup = null; @@ -65,10 +64,10 @@ Here's an example in action: [iframe src="ball" height=230] -Try to drag'n'drop the mouse and you'll see the strange behavior. +Try to drag'n'drop with the mouse and you'll see such behavior. ``` -That's because the browser has its own Drag'n'Drop for images and some other elements that runs automatically and conflicts with ours. +That's because the browser has its own drag'n'drop support for images and some other elements. It runs automatically and conflicts with ours. To disable it: @@ -88,28 +87,30 @@ In action: Another important aspect -- we track `mousemove` on `document`, not on `ball`. From the first sight it may seem that the mouse is always over the ball, and we can put `mousemove` on it. -But as we remember, `mousemove` triggers often, but not for every pixel. So after swift move the cursor can jump from the ball somewhere in the middle of document (or even outside of the window). +But as we remember, `mousemove` triggers often, but not for every pixel. So after swift move the pointer can jump from the ball somewhere in the middle of document (or even outside of the window). So we should listen on `document` to catch it. ## Correct positioning -In the examples above the ball is always centered under the pointer: +In the examples above the ball is always moved so that its center is under the pointer: ```js ball.style.left = pageX - ball.offsetWidth / 2 + 'px'; ball.style.top = pageY - ball.offsetHeight / 2 + 'px'; ``` -Not bad, but there's a side-effect. To initiate the drag'n'drop can we `mousedown` anywhere on the ball. If do it at the edge, then the ball suddenly "jumps" to become centered. +Not bad, but there's a side effect. To initiate the drag'n'drop, we can `mousedown` anywhere on the ball. But if "take" it from its edge, then the ball suddenly "jumps" to become centered under the mouse pointer. It would be better if we keep the initial shift of the element relative to the pointer. -For instance, if we start dragging by the edge of the ball, then the cursor should remain over the edge while dragging. +For instance, if we start dragging by the edge of the ball, then the pointer should remain over the edge while dragging.  -1. When a visitor presses the button (`mousedown`) -- we can remember the distance from the cursor to the left-upper corner of the ball in variables `shiftX/shiftY`. We should keep that distance while dragging. +Let's update our algorithm: + +1. When a visitor presses the button (`mousedown`) - remember the distance from the pointer to the left-upper corner of the ball in variables `shiftX/shiftY`. We'll keep that distance while dragging. To get these shifts we can substract the coordinates: @@ -119,13 +120,11 @@ For instance, if we start dragging by the edge of the ball, then the cursor shou let shiftY = event.clientY - ball.getBoundingClientRect().top; ``` - Please note that there's no method to get document-relative coordinates in JavaScript, so we use window-relative coordinates here. - 2. Then while dragging we position the ball on the same shift relative to the pointer, like this: ```js // onmousemove - // ball has position:absoute + // ball has position:absolute ball.style.left = event.pageX - *!*shiftX*/!* + 'px'; ball.style.top = event.pageY - *!*shiftY*/!* + 'px'; ``` @@ -146,7 +145,8 @@ ball.onmousedown = function(event) { moveAt(event.pageX, event.pageY); - // centers the ball at (pageX, pageY) coordinates + // moves the ball at (pageX, pageY) coordinates + // taking initial shifts into account function moveAt(pageX, pageY) { ball.style.left = pageX - *!*shiftX*/!* + 'px'; ball.style.top = pageY - *!*shiftY*/!* + 'px'; @@ -156,10 +156,10 @@ ball.onmousedown = function(event) { moveAt(event.pageX, event.pageY); } - // (3) move the ball on mousemove + // move the ball on mousemove document.addEventListener('mousemove', onMouseMove); - // (4) drop the ball, remove unneeded handlers + // drop the ball, remove unneeded handlers ball.onmouseup = function() { document.removeEventListener('mousemove', onMouseMove); ball.onmouseup = null; @@ -178,25 +178,27 @@ In action (inside `<iframe>`): [iframe src="ball3" height=230] ``` -The difference is especially noticeable if we drag the ball by its right-bottom corner. In the previous example the ball "jumps" under the pointer. Now it fluently follows the cursor from the current position. +The difference is especially noticeable if we drag the ball by its right-bottom corner. In the previous example the ball "jumps" under the pointer. Now it fluently follows the pointer from the current position. -## Detecting droppables +## Potential drop targets (droppables) -In previous examples the ball could be dropped just "anywhere" to stay. In real-life we usually take one element and drop it onto another. For instance, a file into a folder, or a user into a trash can or whatever. +In previous examples the ball could be dropped just "anywhere" to stay. In real-life we usually take one element and drop it onto another. For instance, a "file" into a "folder" or something else. -Abstractly, we take a "draggable" element and drop it onto "droppable" element. +Speaking abstract, we take a "draggable" element and drop it onto "droppable" element. -We need to know the target droppable at the end of Drag'n'Drop -- to do the corresponding action, and, preferably, during the dragging process, to highlight it. +We need to know: +- where the element was dropped at the end of Drag'n'Drop -- to do the corresponding action, +- and, preferably, know the droppable we're dragging over, to highlight it. The solution is kind-of interesting and just a little bit tricky, so let's cover it here. -What's the first idea? Probably to put `onmouseover/mouseup` handlers on potential droppables and detect when the mouse pointer appears over them. And then we know that we are dragging/dropping on that element. +What may be the first idea? Probably to set `mouseover/mouseup` handlers on potential droppables? But that doesn't work. The problem is that, while we're dragging, the draggable element is always above other elements. And mouse events only happen on the top element, not on those below it. -For instance, below are two `<div>` elements, red on top of blue. There's no way to catch an event on the blue one, because the red is on top: +For instance, below are two `<div>` elements, red one on top of the blue one (fully covers). There's no way to catch an event on the blue one, because the red is on top: ```html run autorun height=60 <style> @@ -211,32 +213,35 @@ For instance, below are two `<div>` elements, red on top of blue. There's no way <div style="background:red" onmouseover="alert('over red!')"></div> ``` -The same with a draggable element. The ball in always on top over other elements, so events happen on it. Whatever handlers we set on lower elements, they won't work. +The same with a draggable element. The ball is always on top over other elements, so events happen on it. Whatever handlers we set on lower elements, they won't work. That's why the initial idea to put handlers on potential droppables doesn't work in practice. They won't run. So, what to do? -There's a method called `document.elementFromPoint(clientX, clientY)`. It returns the most nested element on given window-relative coordinates (or `null` if coordinates are out of the window). +There's a method called `document.elementFromPoint(clientX, clientY)`. It returns the most nested element on given window-relative coordinates (or `null` if given coordinates are out of the window). If there are multiple overlapping elements on the same coordinates, then the topmost one is returned. -So in any of our mouse event handlers we can detect the potential droppable under the pointer like this: +We can use it in any of our mouse event handlers to detect the potential droppable under the pointer, like this: ```js // in a mouse event handler -ball.hidden = true; // (*) +ball.hidden = true; // (*) hide the element that we drag + let elemBelow = document.elementFromPoint(event.clientX, event.clientY); +// elemBelow is the element below the ball, may be droppable + ball.hidden = false; -// elemBelow is the element below the ball. If it's droppable, we can handle it. ``` -Please note: we need to hide the ball before the call `(*)`. Otherwise we'll usually have a ball on these coordinates, as it's the top element under the pointer: `elemBelow=ball`. +Please note: we need to hide the ball before the call `(*)`. Otherwise we'll usually have a ball on these coordinates, as it's the top element under the pointer: `elemBelow=ball`. So we hide it and immediately show again. -We can use that code to check what we're "flying over" at any time. And handle the drop when it happens. +We can use that code to check what element we're "flying over" at any time. And handle the drop when it happens. An extended code of `onMouseMove` to find "droppable" elements: ```js -let currentDroppable = null; // potential droppable that we're flying over right now +// potential droppable that we're flying over right now +let currentDroppable = null; function onMouseMove(event) { moveAt(event.pageX, event.pageY); @@ -246,16 +251,16 @@ function onMouseMove(event) { ball.hidden = false; // mousemove events may trigger out of the window (when the ball is dragged off-screen) - // if clientX/clientY are out of the window, then elementfromPoint returns null + // if clientX/clientY are out of the window, then elementFromPoint returns null if (!elemBelow) return; // potential droppables are labeled with the class "droppable" (can be other logic) let droppableBelow = elemBelow.closest('.droppable'); - if (currentDroppable != droppableBelow) { // if there are any changes + if (currentDroppable != droppableBelow) { // we're flying in or out... // note: both values can be null - // currentDroppable=null if we were not over a droppable (e.g over an empty space) + // currentDroppable=null if we were not over a droppable before this event (e.g over an empty space) // droppableBelow=null if we're not over a droppable now, during this event if (currentDroppable) { @@ -271,28 +276,28 @@ function onMouseMove(event) { } ``` -In the example below when the ball is dragged over the soccer gate, the gate is highlighted. +In the example below when the ball is dragged over the soccer goal, the goal is highlighted. [codetabs height=250 src="ball4"] -Now we have the current "drop target" in the variable `currentDroppable` during the whole process and can use it to highlight or any other stuff. +Now we have the current "drop target", that we're flying over, in the variable `currentDroppable` during the whole process and can use it to highlight or any other stuff. ## Summary -We considered a basic `Drag'n'Drop` algorithm. +We considered a basic Drag'n'Drop algorithm. The key components: -1. Events flow: `ball.mousedown` -> `document.mousemove` -> `ball.mouseup` (cancel native `ondragstart`). +1. Events flow: `ball.mousedown` -> `document.mousemove` -> `ball.mouseup` (don't forget to cancel native `ondragstart`). 2. At the drag start -- remember the initial shift of the pointer relative to the element: `shiftX/shiftY` and keep it during the dragging. 3. Detect droppable elements under the pointer using `document.elementFromPoint`. We can lay a lot on this foundation. -- On `mouseup` we can finalize the drop: change data, move elements around. +- On `mouseup` we can intellectually finalize the drop: change data, move elements around. - We can highlight the elements we're flying over. - We can limit dragging by a certain area or direction. - We can use event delegation for `mousedown/up`. A large-area event handler that checks `event.target` can manage Drag'n'Drop for hundreds of elements. - And so on. -There are frameworks that build architecture over it: `DragZone`, `Droppable`, `Draggable` and other classes. Most of them do the similar stuff to described above, so it should be easy to understand them now. Or roll our own, because you already know how to handle the process, and it may be more flexible than to adapt something else. +There are frameworks that build architecture over it: `DragZone`, `Droppable`, `Draggable` and other classes. Most of them do the similar stuff to what's described above, so it should be easy to understand them now. Or roll your own, as you can see that that's easy enough to do, sometimes easier than adapting a third-party solution. diff --git a/2-ui/3-event-details/4-mouse-drag-and-drop/ball.view/index.html b/2-ui/3-event-details/4-mouse-drag-and-drop/ball.view/index.html index 3fdd7fe76..8751c70ad 100644 --- a/2-ui/3-event-details/4-mouse-drag-and-drop/ball.view/index.html +++ b/2-ui/3-event-details/4-mouse-drag-and-drop/ball.view/index.html @@ -13,16 +13,13 @@ <script> - ball.onmousedown = function(event) { // (1) start the process - - // (2) prepare to moving: make absolute and top by z-index + ball.onmousedown = function(event) { ball.style.position = 'absolute'; ball.style.zIndex = 1000; document.body.appendChild(ball); - // ...and put that absolutely positioned ball under the cursor + moveAt(event.pageX, event.pageY); - // centers the ball at (pageX, pageY) coordinates function moveAt(pageX, pageY) { ball.style.left = pageX - ball.offsetWidth / 2 + 'px'; ball.style.top = pageY - ball.offsetHeight / 2 + 'px'; @@ -32,10 +29,8 @@ moveAt(event.pageX, event.pageY); } - // (3) move the ball on mousemove document.addEventListener('mousemove', onMouseMove); - // (4) drop the ball, remove unneeded handlers ball.onmouseup = function() { document.removeEventListener('mousemove', onMouseMove); ball.onmouseup = null; diff --git a/2-ui/3-event-details/4-mouse-drag-and-drop/ball2.view/index.html b/2-ui/3-event-details/4-mouse-drag-and-drop/ball2.view/index.html index 3843aa789..195107e56 100644 --- a/2-ui/3-event-details/4-mouse-drag-and-drop/ball2.view/index.html +++ b/2-ui/3-event-details/4-mouse-drag-and-drop/ball2.view/index.html @@ -13,16 +13,13 @@ <script> - ball.onmousedown = function(event) { // (1) start the process - - // (2) prepare to moving: make absolute and top by z-index + ball.onmousedown = function(event) { ball.style.position = 'absolute'; ball.style.zIndex = 1000; document.body.appendChild(ball); - // ...and put that absolutely positioned ball under the cursor + moveAt(event.pageX, event.pageY); - // centers the ball at (pageX, pageY) coordinates function moveAt(pageX, pageY) { ball.style.left = pageX - ball.offsetWidth / 2 + 'px'; ball.style.top = pageY - ball.offsetHeight / 2 + 'px'; @@ -32,10 +29,8 @@ moveAt(event.pageX, event.pageY); } - // (3) move the ball on mousemove document.addEventListener('mousemove', onMouseMove); - // (4) drop the ball, remove unneeded handlers ball.onmouseup = function() { document.removeEventListener('mousemove', onMouseMove); ball.onmouseup = null; diff --git a/2-ui/3-event-details/6-pointer-events/article.md b/2-ui/3-event-details/6-pointer-events/article.md new file mode 100644 index 000000000..ecc144712 --- /dev/null +++ b/2-ui/3-event-details/6-pointer-events/article.md @@ -0,0 +1,282 @@ +# Pointer events + +Pointer events are a modern way to handle input from a variety of pointing devices, such as a mouse, a pen/stylus, a touchscreen, and so on. + +## The brief history + +Let's make a small overview, so that you understand the general picture and the place of Pointer Events among other event types. + +- Long ago, in the past, there were only mouse events. + + Then touch devices became widespread, phones and tablets in particular. For the existing scripts to work, they generated (and still generate) mouse events. For instance, tapping a touchscreen generates `mousedown`. So touch devices worked well with web pages. + + But touch devices have more capabilities than a mouse. For example, it's possible to touch multiple points at once ("multi-touch"). Although, mouse events don't have necessary properties to handle such multi-touches. + +- So touch events were introduced, such as `touchstart`, `touchend`, `touchmove`, that have touch-specific properties (we don't cover them in detail here, because pointer events are even better). + + Still, it wasn't enough, as there are many other devices, such as pens, that have their own features. Also, writing code that listens for both touch and mouse events was cumbersome. + +- To solve these issues, the new standard Pointer Events was introduced. It provides a single set of events for all kinds of pointing devices. + +As of now, [Pointer Events Level 2](https://www.w3.org/TR/pointerevents2/) specification is supported in all major browsers, while the newer [Pointer Events Level 3](https://w3c.github.io/pointerevents/) is in the works and is mostly compatible with Pointer Events level 2. + +Unless you develop for old browsers, such as Internet Explorer 10, or for Safari 12 or below, there's no point in using mouse or touch events any more -- we can switch to pointer events. + +Then your code will work well with both touch and mouse devices. + +That said, there are some important peculiarities that one should know in order to use Pointer Events correctly and avoid surprises. We'll make note of them in this article. + +## Pointer event types + +Pointer events are named similarly to mouse events: + +| Pointer event | Similar mouse event | +|---------------|-------------| +| `pointerdown` | `mousedown` | +| `pointerup` | `mouseup` | +| `pointermove` | `mousemove` | +| `pointerover` | `mouseover` | +| `pointerout` | `mouseout` | +| `pointerenter` | `mouseenter` | +| `pointerleave` | `mouseleave` | +| `pointercancel` | - | +| `gotpointercapture` | - | +| `lostpointercapture` | - | + +As we can see, for every `mouse<event>`, there's a `pointer<event>` that plays a similar role. Also there are 3 additional pointer events that don't have a corresponding `mouse...` counterpart, we'll explain them soon. + +```smart header="Replacing `mouse<event>` with `pointer<event>` in our code" +We can replace `mouse<event>` events with `pointer<event>` in our code and expect things to continue working fine with mouse. + +The support for touch devices will also "magically" improve. Although, we may need to add `touch-action: none` in some places in CSS. We'll cover it below in the section about `pointercancel`. +``` + +## Pointer event properties + +Pointer events have the same properties as mouse events, such as `clientX/Y`, `target`, etc., plus some others: + +- `pointerId` - the unique identifier of the pointer causing the event. + + Browser-generated. Allows us to handle multiple pointers, such as a touchscreen with stylus and multi-touch (examples will follow). +- `pointerType` - the pointing device type. Must be a string, one of: "mouse", "pen" or "touch". + + We can use this property to react differently on various pointer types. +- `isPrimary` - is `true` for the primary pointer (the first finger in multi-touch). + +Some pointer devices measure contact area and pressure, e.g. for a finger on the touchscreen, there are additional properties for that: + +- `width` - the width of the area where the pointer (e.g. a finger) touches the device. Where unsupported, e.g. for a mouse, it's always `1`. +- `height` - the height of the area where the pointer touches the device. Where unsupported, it's always `1`. +- `pressure` - the pressure of the pointer tip, in range from 0 to 1. For devices that don't support pressure must be either `0.5` (pressed) or `0`. +- `tangentialPressure` - the normalized tangential pressure. +- `tiltX`, `tiltY`, `twist` - pen-specific properties that describe how the pen is positioned relative to the surface. + +These properties aren't supported by most devices, so they are rarely used. You can find the details about them in the [specification](https://w3c.github.io/pointerevents/#pointerevent-interface) if needed. + +## Multi-touch + +One of the things that mouse events totally don't support is multi-touch: a user can touch in several places at once on their phone or tablet, or perform special gestures. + +Pointer Events allow handling multi-touch with the help of the `pointerId` and `isPrimary` properties. + +Here's what happens when a user touches a touchscreen in one place, then puts another finger somewhere else on it: + +1. At the first finger touch: + - `pointerdown` with `isPrimary=true` and some `pointerId`. +2. For the second finger and more fingers (assuming the first one is still touching): + - `pointerdown` with `isPrimary=false` and a different `pointerId` for every finger. + +Please note: the `pointerId` is assigned not to the whole device, but for each touching finger. If we use 5 fingers to simultaneously touch the screen, we have 5 `pointerdown` events, each with their respective coordinates and a different `pointerId`. + +The events associated with the first finger always have `isPrimary=true`. + +We can track multiple touching fingers using their `pointerId`. When the user moves and then removes a finger, we get `pointermove` and `pointerup` events with the same `pointerId` as we had in `pointerdown`. + +```online +Here's the demo that logs `pointerdown` and `pointerup` events: + +[iframe src="multitouch" edit height=200] + +Please note: you must be using a touchscreen device, such as a phone or a tablet, to actually see the difference in `pointerId/isPrimary`. For single-touch devices, such as a mouse, there'll be always same `pointerId` with `isPrimary=true`, for all pointer events. +``` + +## Event: pointercancel + +The `pointercancel` event fires when there's an ongoing pointer interaction, and then something happens that causes it to be aborted, so that no more pointer events are generated. + +Such causes are: +- The pointer device hardware was physically disabled. +- The device orientation changed (tablet rotated). +- The browser decided to handle the interaction on its own, considering it a mouse gesture or zoom-and-pan action or something else. + +We'll demonstrate `pointercancel` on a practical example to see how it affects us. + +Let's say we're implementing drag'n'drop for a ball, just as in the beginning of the article <info:mouse-drag-and-drop>. + +Here is the flow of user actions and the corresponding events: + +1) The user presses on an image, to start dragging + - `pointerdown` event fires +2) Then they start moving the pointer (thus dragging the image) + - `pointermove` fires, maybe several times +3) And then the surprise happens! The browser has native drag'n'drop support for images, that kicks in and takes over the drag'n'drop process, thus generating `pointercancel` event. + - The browser now handles drag'n'drop of the image on its own. The user may even drag the ball image out of the browser, into their Mail program or a File Manager. + - No more `pointermove` events for us. + +So the issue is that the browser "hijacks" the interaction: `pointercancel` fires in the beginning of the "drag-and-drop" process, and no more `pointermove` events are generated. + +```online +Here's the drag'n'drop demo with logging of pointer events (only `up/down`, `move` and `cancel`) in the `textarea`: + +[iframe src="ball" height=240 edit] +``` + +We'd like to implement the drag'n'drop on our own, so let's tell the browser not to take it over. + +**Prevent the default browser action to avoid `pointercancel`.** + +We need to do two things: + +1. Prevent native drag'n'drop from happening: + - We can do this by setting `ball.ondragstart = () => false`, just as described in the article <info:mouse-drag-and-drop>. + - That works well for mouse events. +2. For touch devices, there are other touch-related browser actions (besides drag'n'drop). To avoid problems with them too: + - Prevent them by setting `#ball { touch-action: none }` in CSS. + - Then our code will start working on touch devices. + +After we do that, the events will work as intended, the browser won't hijack the process and doesn't emit `pointercancel`. + +```online +This demo adds these lines: + +[iframe src="ball-2" height=240 edit] + +As you can see, there's no `pointercancel` any more. +``` + +Now we can add the code to actually move the ball, and our drag'n'drop will work for mouse devices and touch devices. + +## Pointer capturing + +Pointer capturing is a special feature of pointer events. + +The idea is very simple, but may seem quite odd at first, as nothing like that exists for any other event type. + +The main method is: +- `elem.setPointerCapture(pointerId)` -- binds events with the given `pointerId` to `elem`. After the call all pointer events with the same `pointerId` will have `elem` as the target (as if happened on `elem`), no matter where in document they really happened. + +In other words, `elem.setPointerCapture(pointerId)` retargets all subsequent events with the given `pointerId` to `elem`. + +The binding is removed: +- automatically when `pointerup` or `pointercancel` events occur, +- automatically when `elem` is removed from the document, +- when `elem.releasePointerCapture(pointerId)` is called. + +Now what is it good for? It's time to see a real-life example. + +**Pointer capturing can be used to simplify drag'n'drop kind of interactions.** + +Let's recall how one can implement a custom slider, described in the <info:mouse-drag-and-drop>. + +We can make a `slider` element to represent the strip and the "runner" (`thumb`) inside it: + +```html +<div class="slider"> + <div class="thumb"></div> +</div> +``` + +With styles, it looks like this: + +[iframe src="slider-html" height=40 edit] + +<p></p> + +And here's the working logic, as it was described, after replacing mouse events with similar pointer events: + +1. The user presses on the slider `thumb` -- `pointerdown` triggers. +2. Then they move the pointer -- `pointermove` triggers, and our code moves the `thumb` element along. + - ...As the pointer moves, it may leave the slider `thumb` element, go above or below it. The `thumb` should move strictly horizontally, remaining aligned with the pointer. + +In the mouse event based solution, to track all pointer movements, including when it goes above/below the `thumb`, we had to assign `mousemove` event handler on the whole `document`. + +That's not a cleanest solution, though. One of the problems is that when a user moves the pointer around the document, it may trigger event handlers (such as `mouseover`) on some other elements, invoke totally unrelated UI functionality, and we don't want that. + +This is the place where `setPointerCapture` comes into play. + +- We can call `thumb.setPointerCapture(event.pointerId)` in `pointerdown` handler, +- Then future pointer events until `pointerup/cancel` will be retargeted to `thumb`. +- When `pointerup` happens (dragging complete), the binding is removed automatically, we don't need to care about it. + +So, even if the user moves the pointer around the whole document, events handlers will be called on `thumb`. Nevertheless, coordinate properties of the event objects, such as `clientX/clientY` will still be correct - the capturing only affects `target/currentTarget`. + +Here's the essential code: + +```js +thumb.onpointerdown = function(event) { + // retarget all pointer events (until pointerup) to thumb + thumb.setPointerCapture(event.pointerId); + + // start tracking pointer moves + thumb.onpointermove = function(event) { + // moving the slider: listen on the thumb, as all pointer events are retargeted to it + let newLeft = event.clientX - slider.getBoundingClientRect().left; + thumb.style.left = newLeft + 'px'; + }; + + // on pointer up finish tracking pointer moves + thumb.onpointerup = function(event) { + thumb.onpointermove = null; + thumb.onpointerup = null; + // ...also process the "drag end" if needed + }; +}; + +// note: no need to call thumb.releasePointerCapture, +// it happens on pointerup automatically +``` + +```online +The full demo: + +[iframe src="slider" height=100 edit] + +<p></p> + +In the demo, there's also an additional element with `onmouseover` handler showing the current date. + +Please note: while you're dragging the thumb, you may hover over this element, and its handler *does not* trigger. + +So the dragging is now free of side effects, thanks to `setPointerCapture`. +``` + + + +At the end, pointer capturing gives us two benefits: +1. The code becomes cleaner as we don't need to add/remove handlers on the whole `document` any more. The binding is released automatically. +2. If there are other pointer event handlers in the document, they won't be accidentally triggered by the pointer while the user is dragging the slider. + +### Pointer capturing events + +There's one more thing to mention here, for the sake of completeness. + +There are two events associated with pointer capturing: + +- `gotpointercapture` fires when an element uses `setPointerCapture` to enable capturing. +- `lostpointercapture` fires when the capture is released: either explicitly with `releasePointerCapture` call, or automatically on `pointerup`/`pointercancel`. + +## Summary + +Pointer events allow handling mouse, touch and pen events simultaneously, with a single piece of code. + +Pointer events extend mouse events. We can replace `mouse` with `pointer` in event names and expect our code to continue working for mouse, with better support for other device types. + +For drag'n'drops and complex touch interactions that the browser may decide to hijack and handle on its own - remember to cancel the default action on events and set `touch-action: none` in CSS for elements that we engage. + +Additional abilities of pointer events are: + +- Multi-touch support using `pointerId` and `isPrimary`. +- Device-specific properties, such as `pressure`, `width/height`, and others. +- Pointer capturing: we can retarget all pointer events to a specific element until `pointerup`/`pointercancel`. + +As of now, pointer events are supported in all major browsers, so we can safely switch to them, especially if IE10- and Safari 12- are not needed. And even with those browsers, there are polyfills that enable the support of pointer events. diff --git a/2-ui/3-event-details/6-pointer-events/ball-2.view/index.html b/2-ui/3-event-details/6-pointer-events/ball-2.view/index.html new file mode 100644 index 000000000..5f3abbcb0 --- /dev/null +++ b/2-ui/3-event-details/6-pointer-events/ball-2.view/index.html @@ -0,0 +1,38 @@ +<!doctype html> +<body style="height: 200px"> + <style> + #ball { + touch-action: none; + } + </style> + + <p>Drag the ball.</p> + + <img src="https://js.cx/clipart/ball.svg" style="cursor:pointer" width="40" height="40" id="ball"> + + <script> + + ball.onpointerdown = log; + ball.onpointerup = log; + ball.onpointermove = log; + ball.onpointercancel = log; + + ball.ondragstart = () => false; + + let lastEventType; + let n = 1; + function log(event) { + if (lastEventType == event.type) { + n++; + text.value = text.value.replace(/.*\n$/, `${event.type} * ${n}\n`); + return; + } + lastEventType = event.type; + n = 1; + text.value += event.type + '\n'; + text.scrollTop = 1e9; + } + </script> + + <textarea id="text" style="display:block;width:300px;height:100px"></textarea> +</body> diff --git a/2-ui/3-event-details/6-pointer-events/ball.view/index.html b/2-ui/3-event-details/6-pointer-events/ball.view/index.html new file mode 100644 index 000000000..8bbef8f63 --- /dev/null +++ b/2-ui/3-event-details/6-pointer-events/ball.view/index.html @@ -0,0 +1,30 @@ +<!doctype html> +<body style="height: 200px"> + <p>Drag the ball.</p> + + <img src="https://js.cx/clipart/ball.svg" style="cursor:pointer" width="40" height="40" id="ball"> + + <script> + + ball.onpointerdown = log; + ball.onpointerup = log; + ball.onpointermove = log; + ball.onpointercancel = log; + + let lastEventType; + let n = 1; + function log(event) { + if (lastEventType == event.type) { + n++; + text.value = text.value.replace(/.*\n$/, `${event.type} * ${n}\n`); + return; + } + lastEventType = event.type; + n = 1; + text.value += event.type + '\n'; + text.scrollTop = 1e9; + } + </script> + + <textarea id="text" style="display:block;width:300px;height:100px"></textarea> +</body> diff --git a/2-ui/3-event-details/6-pointer-events/multitouch.view/index.html b/2-ui/3-event-details/6-pointer-events/multitouch.view/index.html new file mode 100644 index 000000000..d46e1bc16 --- /dev/null +++ b/2-ui/3-event-details/6-pointer-events/multitouch.view/index.html @@ -0,0 +1,28 @@ +<!doctype html> +<body> + <style> + #area { + border: 1px solid black; + width: 90%; + height: 180px; + cursor: pointer; + overflow: scroll; + user-select: none; + } + </style> + + <div id="area"> + Multi-touch here + </div> + <script> + document.onpointerdown = document.onpointerup = log; + + function log(event) { + area.insertAdjacentHTML("beforeend", ` + <div>${event.type} isPrimary=${event.isPrimary} pointerId=${event.pointerId}</div> + `) + area.scrollTop = 1e9; + } + </script> + +</body> diff --git a/2-ui/3-event-details/6-pointer-events/slider-html.view/index.html b/2-ui/3-event-details/6-pointer-events/slider-html.view/index.html new file mode 100644 index 000000000..781016f52 --- /dev/null +++ b/2-ui/3-event-details/6-pointer-events/slider-html.view/index.html @@ -0,0 +1,6 @@ +<!DOCTYPE html> +<link rel="stylesheet" href="style.css"> + +<div id="slider" class="slider"> + <div class="thumb"></div> +</div> diff --git a/2-ui/3-event-details/6-pointer-events/slider-html.view/style.css b/2-ui/3-event-details/6-pointer-events/slider-html.view/style.css new file mode 100644 index 000000000..9b3d3b82d --- /dev/null +++ b/2-ui/3-event-details/6-pointer-events/slider-html.view/style.css @@ -0,0 +1,19 @@ +.slider { + border-radius: 5px; + background: #E0E0E0; + background: linear-gradient(left top, #E0E0E0, #EEEEEE); + width: 310px; + height: 15px; + margin: 5px; +} + +.thumb { + width: 10px; + height: 25px; + border-radius: 3px; + position: relative; + left: 10px; + top: -5px; + background: blue; + cursor: pointer; +} diff --git a/2-ui/3-event-details/6-pointer-events/slider.view/index.html b/2-ui/3-event-details/6-pointer-events/slider.view/index.html new file mode 100644 index 000000000..b29e646a1 --- /dev/null +++ b/2-ui/3-event-details/6-pointer-events/slider.view/index.html @@ -0,0 +1,50 @@ +<!DOCTYPE html> +<link rel="stylesheet" href="style.css"> + +<div id="slider" class="slider"> + <div class="thumb"></div> +</div> + +<p style="border:1px solid gray" onmousemove="this.textContent = new Date()">Mouse over here to see the date</p> + +<script> + let thumb = slider.querySelector('.thumb'); + let shiftX; + + function onThumbDown(event) { + event.preventDefault(); // prevent selection start (browser action) + + shiftX = event.clientX - thumb.getBoundingClientRect().left; + + thumb.setPointerCapture(event.pointerId); + + thumb.onpointermove = onThumbMove; + + thumb.onpointerup = event => { + // dragging finished, no need to track pointer any more + // ...any other "drag end" logic here... + thumb.onpointermove = null; + thumb.onpointerup = null; + } + }; + + function onThumbMove(event) { + let newLeft = event.clientX - shiftX - slider.getBoundingClientRect().left; + + // if the pointer is out of slider => adjust left to be within the boundaries + if (newLeft < 0) { + newLeft = 0; + } + let rightEdge = slider.offsetWidth - thumb.offsetWidth; + if (newLeft > rightEdge) { + newLeft = rightEdge; + } + + thumb.style.left = newLeft + 'px'; + }; + + thumb.onpointerdown = onThumbDown; + + thumb.ondragstart = () => false; + +</script> diff --git a/2-ui/3-event-details/6-pointer-events/slider.view/style.css b/2-ui/3-event-details/6-pointer-events/slider.view/style.css new file mode 100644 index 000000000..a84cd5e7e --- /dev/null +++ b/2-ui/3-event-details/6-pointer-events/slider.view/style.css @@ -0,0 +1,20 @@ +.slider { + border-radius: 5px; + background: #E0E0E0; + background: linear-gradient(left top, #E0E0E0, #EEEEEE); + width: 310px; + height: 15px; + margin: 5px; +} + +.thumb { + touch-action: none; + width: 10px; + height: 25px; + border-radius: 3px; + position: relative; + left: 10px; + top: -5px; + background: blue; + cursor: pointer; +} diff --git a/2-ui/3-event-details/5-keyboard-events/2-check-sync-keydown/solution.md b/2-ui/3-event-details/7-keyboard-events/2-check-sync-keydown/solution.md similarity index 76% rename from 2-ui/3-event-details/5-keyboard-events/2-check-sync-keydown/solution.md rename to 2-ui/3-event-details/7-keyboard-events/2-check-sync-keydown/solution.md index 32dc6091b..453f8c946 100644 --- a/2-ui/3-event-details/5-keyboard-events/2-check-sync-keydown/solution.md +++ b/2-ui/3-event-details/7-keyboard-events/2-check-sync-keydown/solution.md @@ -1,6 +1,6 @@ We should use two handlers: `document.onkeydown` and `document.onkeyup`. -The set `pressed` should keep currently pressed keys. +Let's create a set `pressed = new Set()` to keep currently pressed keys. The first handler adds to it, while the second one removes from it. Every time on `keydown` we check if we have enough keys pressed, and run the function if it is so. diff --git a/2-ui/3-event-details/5-keyboard-events/2-check-sync-keydown/solution.view/index.html b/2-ui/3-event-details/7-keyboard-events/2-check-sync-keydown/solution.view/index.html similarity index 100% rename from 2-ui/3-event-details/5-keyboard-events/2-check-sync-keydown/solution.view/index.html rename to 2-ui/3-event-details/7-keyboard-events/2-check-sync-keydown/solution.view/index.html diff --git a/2-ui/3-event-details/5-keyboard-events/2-check-sync-keydown/task.md b/2-ui/3-event-details/7-keyboard-events/2-check-sync-keydown/task.md similarity index 100% rename from 2-ui/3-event-details/5-keyboard-events/2-check-sync-keydown/task.md rename to 2-ui/3-event-details/7-keyboard-events/2-check-sync-keydown/task.md diff --git a/2-ui/3-event-details/5-keyboard-events/article.md b/2-ui/3-event-details/7-keyboard-events/article.md similarity index 51% rename from 2-ui/3-event-details/5-keyboard-events/article.md rename to 2-ui/3-event-details/7-keyboard-events/article.md index 7decd91be..12fe63201 100644 --- a/2-ui/3-event-details/5-keyboard-events/article.md +++ b/2-ui/3-event-details/7-keyboard-events/article.md @@ -2,7 +2,7 @@ Before we get to keyboard, please note that on modern devices there are other ways to "input something". For instance, people use speech recognition (especially on mobile devices) or copy/paste with the mouse. -So if we want to track any input into an `<input>` field, then keyboard events are not enough. There's another event named `input` to handle changes of an `<input>` field, by any means. And it may be a better choice for such task. We'll cover it later in the chapter <info:events-change-input>. +So if we want to track any input into an `<input>` field, then keyboard events are not enough. There's another event named `input` to track changes of an `<input>` field, by any means. And it may be a better choice for such task. We'll cover it later in the chapter <info:events-change-input>. Keyboard events should be used when we want to handle keyboard actions (virtual keyboard also counts). For instance, to react on arrow keys `key:Up` and `key:Down` or hotkeys (including combinations of keys). @@ -30,7 +30,7 @@ The `keydown` events happens when a key is pressed down, and then `keyup` -- whe The `key` property of the event object allows to get the character, while the `code` property of the event object allows to get the "physical key code". -For instance, the same key `key:Z` can be pressed with or without `Shift`. That gives us two different characters: lowercase `z` and uppercase `Z`. +For instance, the same key `key:Z` can be pressed with or without `key:Shift`. That gives us two different characters: lowercase `z` and uppercase `Z`. The `event.key` is exactly the character, and it will be different. But `event.code` is the same: @@ -52,7 +52,7 @@ For instance: There are several widespread keyboard layouts, and the specification gives key codes for each of them. -See [alphanumeric section of the spec](https://www.w3.org/TR/uievents-code/#key-alphanumeric-section) for more codes, or just try the [teststand](#keyboard-test-stand) above. +Read the [alphanumeric section of the spec](https://www.w3.org/TR/uievents-code/#key-alphanumeric-section) for more codes, or just press a key in the [teststand](#keyboard-test-stand) above. ``` ```warn header="Case matters: `\"KeyZ\"`, not `\"keyZ\"`" @@ -61,9 +61,7 @@ Seems obvious, but people still make mistakes. Please evade mistypes: it's `KeyZ`, not `keyZ`. The check like `event.code=="keyZ"` won't work: the first letter of `"Key"` must be uppercase. ``` - -What if a key does not give any character? For instance, `key:Shift` or `key:F1` or others. For those keys `event.key` is approximately the same as `event.code`: - +What if a key does not give any character? For instance, `key:Shift` or `key:F1` or others. For those keys, `event.key` is approximately the same as `event.code`: | Key | `event.key` | `event.code` | |--------------|-------------|--------------| @@ -73,15 +71,13 @@ What if a key does not give any character? For instance, `key:Shift` or `key:F1` Please note that `event.code` specifies exactly which key is pressed. For instance, most keyboards have two `key:Shift` keys: on the left and on the right side. The `event.code` tells us exactly which one was pressed, and `event.key` is responsible for the "meaning" of the key: what it is (a "Shift"). -Let's say, we want to handle a hotkey: `key:Ctrl+Z` (or `key:Cmd+Z` for Mac). Most text editors hook the "Undo" action on it. We can set a listener on `keydown` and check which key is pressed -- to detect when we have the hotkey. - -Please answer the question -- in such a listener, should we check the value of `event.key` or `event.code`? +Let's say, we want to handle a hotkey: `key:Ctrl+Z` (or `key:Cmd+Z` for Mac). Most text editors hook the "Undo" action on it. We can set a listener on `keydown` and check which key is pressed. -Please, pause and answer. +There's a dilemma here: in such a listener, should we check the value of `event.key` or `event.code`? -Made up your mind? +On one hand, the value of `event.key` is a character, it changes depending on the language. If the visitor has several languages in OS and switches between them, the same key gives different characters. So it makes sense to check `event.code`, it's always the same. -If you've got an understanding, then the answer is, of course, `event.code`, as we don't want `event.key` there. The value of `event.key` can change depending on the language or `CapsLock` enabled. The value of `event.code` is strictly bound to the key, so here we go: +Like this: ```js run document.addEventListener('keydown', function(event) { @@ -91,11 +87,37 @@ document.addEventListener('keydown', function(event) { }); ``` +On the other hand, there's a problem with `event.code`. For different keyboard layouts, the same key may have different characters. + +For example, here are US layout ("QWERTY") and German layout ("QWERTZ") under it (from Wikipedia): + + + + + +For the same key, US layout has "Z", while German layout has "Y" (letters are swapped). + +Literally, `event.code` will equal `KeyZ` for people with German layout when they press `key:Y`. + +If we check `event.code == 'KeyZ'` in our code, then for people with German layout such test will pass when they press `key:Y`. + +That sounds really odd, but so it is. The [specification](https://www.w3.org/TR/uievents-code/#table-key-code-alphanumeric-writing-system) explicitly mentions such behavior. + +So, `event.code` may match a wrong character for unexpected layout. Same letters in different layouts may map to different physical keys, leading to different codes. Luckily, that happens only with several codes, e.g. `keyA`, `keyQ`, `keyZ` (as we've seen), and doesn't happen with special keys such as `Shift`. You can find the list in the [specification](https://www.w3.org/TR/uievents-code/#table-key-code-alphanumeric-writing-system). + +To reliably track layout-dependent characters, `event.key` may be a better way. + +On the other hand, `event.code` has the benefit of staying always the same, bound to the physical key location. So hotkeys that rely on it work well even in case of a language switch. + +Do we want to handle layout-dependant keys? Then `event.key` is the way to go. + +Or we want a hotkey to work even after a language switch? Then `event.code` may be better. + ## Auto-repeat -If a key is being pressed for a long enough time, it starts to repeat: the `keydown` triggers again and again, and then when it's released we finally get `keyup`. So it's kind of normal to have many `keydown` and a single `keyup`. +If a key is being pressed for a long enough time, it starts to "auto-repeat": the `keydown` triggers again and again, and then when it's released we finally get `keyup`. So it's kind of normal to have many `keydown` and a single `keyup`. -For all repeating keys the event object has `event.repeat` property set to `true`. +For events triggered by auto-repeat, the event object has `event.repeat` property set to `true`. ## Default actions @@ -117,22 +139,25 @@ For instance, the `<input>` below expects a phone number, so it does not accept ```html autorun height=60 run <script> function checkPhoneKey(key) { - return (key >= '0' && key <= '9') || key == '+' || key == '(' || key == ')' || key == '-'; + return (key >= '0' && key <= '9') || ['+','(',')','-'].includes(key); } </script> <input *!*onkeydown="return checkPhoneKey(event.key)"*/!* placeholder="Phone, please" type="tel"> ``` -Please note that special keys like `key:Backspace`, `key:Left`, `key:Right`, `key:Ctrl+V` do not work in the input. That's a side-effect of the strict filter `checkPhoneKey`. +The `onkeydown` handler here uses `checkPhoneKey` to check for the key pressed. If it's valid (from `0..9` or one of `+-()`), then it returns `true`, otherwise `false`. + +As we know, the `false` value returned from the event handler, assigned using a DOM property or an attribute, such as above, prevents the default action, so nothing appears in the `<input>` for keys that don't pass the test. (The `true` value returned doesn't affect anything, only returning `false` matters) -Let's relax it a little bit: +Please note that special keys, such as `key:Backspace`, `key:Left`, `key:Right`, do not work in the input. That's a side effect of the strict filter `checkPhoneKey`. These keys make it return `false`. +Let's relax the filter a little bit by allowing arrow keys `key:Left`, `key:Right` and `key:Delete`, `key:Backspace`: ```html autorun height=60 run <script> function checkPhoneKey(key) { - return (key >= '0' && key <= '9') || key == '+' || key == '(' || key == ')' || key == '-' || - key == 'ArrowLeft' || key == 'ArrowRight' || key == 'Delete' || key == 'Backspace'; + return (key >= '0' && key <= '9') || + ['+','(',')','-',*!*'ArrowLeft','ArrowRight','Delete','Backspace'*/!*].includes(key); } </script> <input onkeydown="return checkPhoneKey(event.key)" placeholder="Phone, please" type="tel"> @@ -140,16 +165,21 @@ function checkPhoneKey(key) { Now arrows and deletion works well. -...But we still can enter anything by using a mouse and right-click + Paste. So the filter is not 100% reliable. We can just let it be like that, because most of time it works. Or an alternative approach would be to track the `input` event -- it triggers after any modification. There we can check the new value and highlight/modify it when it's invalid. +Even though we have the key filter, one still can enter anything using a mouse and right-click + Paste. Mobile devices provide other means to enter values. So the filter is not 100% reliable. + +The alternative approach would be to track the `oninput` event -- it triggers *after* any modification. There we can check the new `input.value` and modify it/highlight the `<input>` when it's invalid. Or we can use both event handlers together. ## Legacy In the past, there was a `keypress` event, and also `keyCode`, `charCode`, `which` properties of the event object. -There were so many browser incompatibilities that developers of the specification decided to deprecate all of them. The old code still works, as the browser keep supporting them, but there's totally no need to use those any more. +There were so many browser incompatibilities while working with them, that developers of the specification had no way, other than deprecating all of them and creating new, modern events (described above in this chapter). The old code still works, as browsers keep supporting them, but there's totally no need to use those any more. + +## Mobile Keyboards -There was time when this chapter included their detailed description. But as of now we can forget about those. +When using virtual/mobile keyboards, formally known as IME (Input-Method Editor), the W3C standard states that a KeyboardEvent's [`e.keyCode` should be `229`](https://www.w3.org/TR/uievents/#determine-keydown-keyup-keyCode) and [`e.key` should be `"Unidentified"`](https://www.w3.org/TR/uievents-key/#key-attr-values). +While some of these keyboards might still use the right values for `e.key`, `e.code`, `e.keyCode`... when pressing certain keys such as arrows or backspace, there's no guarantee, so your keyboard logic might not always work on mobile devices. ## Summary @@ -163,8 +193,8 @@ Keyboard events: Main keyboard event properties: - `code` -- the "key code" (`"KeyA"`, `"ArrowLeft"` and so on), specific to the physical location of the key on keyboard. -- `key` -- the character (`"A"`, `"a"` and so on), for non-character keys usually has the same value as `code`. +- `key` -- the character (`"A"`, `"a"` and so on), for non-character keys, such as `key:Esc`, usually has the same value as `code`. -In the past, keyboard events were sometimes used to track user input in form fields. That's not reliable, because the input can come from various sources. We have `input` and `change` events to handle any input (covered later in the chapter <info:events-change-input>). They trigger after any input, including mouse or speech recognition. +In the past, keyboard events were sometimes used to track user input in form fields. That's not reliable, because the input can come from various sources. We have `input` and `change` events to handle any input (covered later in the chapter <info:events-change-input>). They trigger after any kind of input, including copy-pasting or speech recognition. We should use keyboard events when we really want keyboard. For example, to react on hotkeys or special keys. diff --git a/2-ui/3-event-details/7-keyboard-events/german-layout.svg b/2-ui/3-event-details/7-keyboard-events/german-layout.svg new file mode 100644 index 000000000..7ac9a4008 --- /dev/null +++ b/2-ui/3-event-details/7-keyboard-events/german-layout.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" width="600" height="200" viewBox="0 0 600 200"><defs><style>@import url(https://fonts.googleapis.com/css?family=Open+Sans:bold,italic,bolditalic%7CPT+Mono);@font-face{font-family:'PT Mono';font-weight:700;font-style:normal;src:local('PT MonoBold'),url(/font/PTMonoBold.woff2) format('woff2'),url(/font/PTMonoBold.woff) format('woff'),url(/font/PTMonoBold.ttf) format('truetype')}</style></defs><g id="dom" fill="none" fill-rule="evenodd" stroke="none" stroke-width="1"><g id="Group" transform="translate(.918 .953)"><path id="rect2186" fill="#FFF" stroke="#181717" d="M.08.083h39.933V39.46H.08z"/><path id="rect2218" fill="#FFF" stroke="#181717" d="M40.013.083h39.934V39.46H40.013z"/><path id="rect2222" fill="#FFF" stroke="#181717" d="M79.947.083h39.933V39.46H79.947z"/><path id="rect2228" fill="#FFF" stroke="#181717" d="M118.882.083h39.933V39.46h-39.933z"/><path id="rect2230" fill="#FFF" stroke="#181717" d="M158.815.083h39.934V39.46h-39.934z"/><path id="rect2232" fill="#FFF" stroke="#181717" d="M198.749.083h39.933V39.46H198.75z"/><path id="rect2234" fill="#FFF" stroke="#181717" d="M239.68.083h39.934V39.46h-39.933z"/><path id="rect2236" fill="#FFF" stroke="#181717" d="M279.614.083h39.933V39.46h-39.933z"/><path id="rect2238" fill="#FFF" stroke="#181717" d="M318.55.083h39.933V39.46h-39.934z"/><path id="rect2240" fill="#FFF" stroke="#181717" d="M358.483.083h39.933V39.46h-39.933z"/><path id="rect2242" fill="#FFF" stroke="#181717" d="M398.416.083h39.933V39.46h-39.933z"/><path id="rect2244" fill="#FFF" stroke="#181717" d="M438.35.083h39.933V39.46h-39.934z"/><path id="rect2246" fill="#FFF" stroke="#181717" d="M478.283.083h39.933V39.46h-39.933z"/><path id="rect2248" fill="#D1CFCD" stroke="#181717" d="M517.218.083h81.864V39.46h-81.864z"/><path id="rect2250" fill="#D1CFCD" stroke="#181717" d="M.08 39.461h59.9V78.84H.08z"/><path id="rect2252" fill="#FFF" stroke="#181717" d="M59.98 39.461h39.933V78.84H59.98z"/><path id="rect2254" fill="#FFF" stroke="#181717" d="M98.915 39.461h39.934V78.84H98.915z"/><path id="rect2256" fill="#FFF" stroke="#181717" d="M138.849 39.461h39.933V78.84h-39.933z"/><path id="rect2258" fill="#FFF" stroke="#181717" d="M178.782 39.461h39.933V78.84h-39.933z"/><path id="rect2262" fill="#FFF" stroke="#181717" d="M219.714 39.461h39.933V78.84h-39.933z"/><path id="rect2264" fill="#FFF" stroke="#181717" d="M259.647 39.461h39.934V78.84h-39.934z"/><path id="rect2266" fill="#FFF" stroke="#181717" d="M298.582 39.461h39.934V78.84h-39.934z"/><path id="rect2270" fill="#FFF" stroke="#181717" d="M338.516 39.461h39.933V78.84h-39.933z"/><path id="rect2272" fill="#FFF" stroke="#181717" d="M378.45 39.461h39.933V78.84h-39.934z"/><path id="rect2274" fill="#FFF" stroke="#181717" d="M418.383 39.461h39.933V78.84h-39.933z"/><path id="rect2278" fill="#FFF" stroke="#181717" d="M458.316 39.461h39.934V78.84h-39.934z"/><path id="rect2280" fill="#FFF" stroke="#181717" d="M497.251 39.461h39.934V78.84H497.25z"/><path id="rect2286" fill="#D1CFCD" stroke="#181717" d="M.08 79.876h69.883v39.378H.08z"/><path id="rect2292" fill="#FFF" stroke="#181717" d="M69.963 79.876h39.934v39.378H69.963z"/><path id="rect2296" fill="#FFF" stroke="#181717" d="M109.897 79.876h39.933v39.378h-39.933z"/><path id="rect2298" fill="#FFF" stroke="#181717" d="M149.83 79.876h39.934v39.378H149.83z"/><path id="rect2300" fill="#FFF" stroke="#181717" d="M188.765 79.876H228.7v39.378h-39.934z"/><path id="rect2302" fill="#FFF" stroke="#181717" d="M228.699 79.876h39.933v39.378H228.7z"/><path id="rect2306" fill="#FFF" stroke="#181717" d="M268.632 79.876h39.934v39.378h-39.934z"/><path id="rect2308" fill="#FFF" stroke="#181717" d="M308.566 79.876h39.933v39.378h-39.933z"/><path id="rect2312" fill="#FFF" stroke="#181717" d="M348.5 79.876h39.933v39.378h-39.934z"/><path id="rect2314" fill="#FFF" stroke="#181717" d="M388.433 79.876h39.933v39.378h-39.933z"/><path id="rect2316" fill="#FFF" stroke="#181717" d="M428.366 79.876H468.3v39.378h-39.934z"/><path id="rect2318" fill="#FFF" stroke="#181717" d="M468.3 79.876h39.933v39.378H468.3z"/><path id="rect2320" fill="#D1CFCD" stroke="#181717" stroke-width="1" d="M547.5 79.358h-10.315V39.46h61.896v79.793h-51.656z"/><path id="rect2322" fill="#D1CFCD" stroke="#181717" stroke-width="1" d="M.08 119.254h49.917v39.378H.08z"/><path id="rect2324" fill="#FFF" stroke="#181717" d="M89.93 119.254h39.934v39.378H89.93z"/><path id="rect2326" fill="#FFF" stroke="#181717" d="M129.864 119.254h39.933v39.378h-39.933z"/><path id="rect2330" fill="#FFF" stroke="#181717" d="M169.797 119.254h39.933v39.378h-39.933z"/><path id="rect2334" fill="#FFF" stroke="#181717" d="M208.732 119.254h39.934v39.378h-39.934z"/><path id="rect2336" fill="#FFF" stroke="#181717" d="M248.666 119.254h39.933v39.378h-39.933z"/><path id="rect2338" fill="#FFF" stroke="#181717" d="M288.599 119.254h39.933v39.378H288.6z"/><path id="rect2340" fill="#FFF" stroke="#181717" d="M328.532 119.254h39.934v39.378h-39.934z"/><path id="rect2342" fill="#FFF" stroke="#181717" d="M368.466 119.254h39.933v39.378h-39.933z"/><path id="rect2344" fill="#FFF" stroke="#181717" d="M408.4 119.254h39.933v39.378h-39.934z"/><path id="rect2346" fill="#FFF" stroke="#181717" d="M448.333 119.254h39.933v39.378h-39.933z"/><path id="rect2348" fill="#D1CFCD" stroke="#181717" d="M488.266 119.254h110.816v39.378H488.266z"/><path id="rect2350" fill="#D1CFCD" stroke="#181717" d="M.08 158.632h59.9v39.378H.08z"/><path id="rect2352" fill="#D1CFCD" stroke="#181717" d="M537.185 158.632h61.897v39.378h-61.897z"/><path id="rect2354" fill="#D1CFCD" stroke="#181717" d="M98.915 158.632h59.9v39.378h-59.9z"/><path id="rect2360" fill="#D1CFCD" stroke="#181717" d="M398.416 158.632h59.9v39.378h-59.9z"/><path id="rect2362" fill="#FFF" stroke="#181717" d="M158.815 158.632h239.601v39.378h-239.6z"/><path id="rect2364" fill="#F6F3F1" stroke="#181717" d="M59.98 158.632h39.933v39.378H59.98z"/><path id="rect2366" fill="#F6F3F1" stroke="#181717" d="M458.316 158.632h39.934v39.378h-39.934z"/><path id="rect2368" fill="#F6F3F1" stroke="#181717" d="M497.251 158.632h39.934v39.378H497.25z"/><path id="text5091" fill="#181717" fill-rule="nonzero" d="M49.737 12.695l-.623-5.28V4.227h2.463v3.186l-.624 5.281h-1.216m-.591 3.266v-2.35h2.375v2.35h-2.375m.591 20.391v-7.798h-2.735v-1.6h.176c.997 0 1.722-.155 2.176-.463.458-.308.727-.823.807-1.545h1.832v11.406h-2.256"/><path id="text5127" fill="#181717" fill-rule="nonzero" d="M89.635 5.264h1.507v4.347h-1.507V5.264m-2.56 0h1.507v4.347h-1.507V5.264m-2.137 31.088c.01-.995.226-1.837.644-2.527.42-.694 1.163-1.397 2.23-2.107.163-.109.399-.26.707-.451 1.414-.897 2.12-1.76 2.12-2.59 0-.492-.148-.88-.447-1.166-.298-.285-.707-.428-1.225-.428-.565 0-1.002.177-1.311.53-.304.347-.456.844-.456 1.492v.093h-2.073c0-1.275.345-2.257 1.037-2.947.69-.689 1.675-1.034 2.952-1.034 1.157 0 2.081.314 2.773.941.69.622 1.036 1.452 1.036 2.488 0 .742-.18 1.385-.542 1.929-.361.544-1.06 1.164-2.097 1.858-.22.15-.523.348-.91.591-.985.628-1.54 1.104-1.665 1.431h5.104v1.897h-7.877"/><path id="text5139" fill="#181717" fill-rule="nonzero" d="M126.869 31.62h2.136c.005.62.155 1.087.45 1.402.296.31.734.465 1.314.465.559 0 .989-.144 1.29-.434.305-.294.458-.715.458-1.263 0-.547-.179-.96-.536-1.24-.353-.284-.878-.426-1.577-.426-.037 0-.094.003-.171.008a2.506 2.506 0 01-.164.008v-1.535h.241c.643 0 1.116-.124 1.422-.372.31-.253.466-.638.466-1.154 0-.429-.132-.767-.396-1.015-.259-.254-.614-.38-1.064-.38-.492 0-.873.145-1.142.434-.27.29-.404.7-.404 1.232v.093h-2.098c.026-1.137.36-2.007 1.002-2.612.648-.61 1.56-.914 2.735-.914 1.113 0 1.996.271 2.65.814.652.542.978 1.273.978 2.193 0 .485-.111.912-.334 1.278-.223.367-.557.67-1.002.907.57.248 1 .592 1.29 1.03.295.435.442.954.442 1.558 0 1.11-.365 1.992-1.095 2.643-.73.65-1.728.976-2.991.976-1.249 0-2.212-.315-2.89-.945-.674-.636-1.01-1.537-1.01-2.705v-.046"/><path id="text5145" fill="#181717" fill-rule="nonzero" d="M168.895 14.91c.468-.057.825-.21 1.07-.46.246-.25.369-.584.369-1 0-.37-.117-.674-.351-.914-.229-.244-.591-.434-1.088-.57v2.944m-1.02-5.341V6.914c-.445.052-.785.193-1.019.422-.234.224-.35.526-.35.906 0 .317.108.583.325.796.222.213.57.39 1.045.531m0 8.55V16.62c-1.291-.073-2.256-.414-2.896-1.023-.64-.609-.959-1.489-.959-2.64h2.296c.028.563.17 1.008.428 1.336.263.323.64.529 1.13.617v-3.233c-1.324-.307-2.266-.708-2.826-1.202-.56-.495-.84-1.171-.84-2.03 0-.953.332-1.72.994-2.304.668-.583 1.559-.887 2.673-.914v-.999h1.019v1c1.113.052 1.981.359 2.604.92.622.558.965 1.344 1.027 2.36h-2.33c-.04-.485-.168-.855-.385-1.11-.211-.26-.517-.406-.916-.437v2.842c1.41.401 2.404.86 2.98 1.375.577.515.866 1.194.866 2.038 0 .994-.337 1.788-1.011 2.381-.668.594-1.613.94-2.835 1.039v1.483h-1.02m1.157 14.095v-4.787l-3.332 4.787h3.332m-.052 4.138V33.94h-5.173v-1.967l4.522-6.481h3.041v6.668h1.422v1.78h-1.422v2.413h-2.39"/><path id="text5151" fill="#181717" fill-rule="nonzero" d="M212.846 12.99c0 .356.11.656.33.9.22.239.493.358.816.358.314 0 .583-.122.809-.366.225-.25.338-.547.338-.892 0-.34-.113-.63-.338-.868a1.048 1.048 0 00-.809-.367c-.323 0-.595.12-.816.359-.22.233-.33.525-.33.876m-1.595 0c0-.829.264-1.527.793-2.095a2.558 2.558 0 011.948-.852c.755 0 1.396.29 1.926.868.534.573.8 1.266.8 2.079 0 .818-.266 1.519-.8 2.103-.534.579-1.176.868-1.926.868-.77 0-1.418-.287-1.948-.86-.529-.574-.793-1.277-.793-2.111m-4.27 2.971l6.276-11.733h1.183l-6.276 11.733h-1.184m-.646-8.762c0 .35.107.645.323.884.22.24.492.359.816.359.318 0 .588-.12.808-.359.226-.244.338-.539.338-.884 0-.34-.112-.63-.338-.868a1.048 1.048 0 00-.808-.367c-.324 0-.595.12-.816.359a1.243 1.243 0 00-.323.876m-1.595 0c0-.828.264-1.53.794-2.103.529-.579 1.175-.868 1.94-.868.754 0 1.396.292 1.925.876.535.579.802 1.277.802 2.095 0 .818-.267 1.516-.802 2.095-.529.573-1.17.86-1.925.86-.77 0-1.419-.284-1.948-.852-.524-.568-.786-1.27-.786-2.103m2.102 25.76h2.058c.034.5.188.887.463 1.163.274.27.642.406 1.102.406.569 0 1.002-.18 1.301-.541.304-.361.456-.88.456-1.554 0-.632-.155-1.128-.463-1.49-.309-.366-.735-.549-1.28-.549-.303 0-.57.067-.8.2-.23.132-.427.329-.588.589l-1.896-.12.683-6.117h6.049v1.928h-4.564l-.272 2.286c.23-.197.495-.343.794-.438.298-.101.632-.152 1-.152 1.048 0 1.893.345 2.535 1.036.647.69.97 1.595.97 2.716 0 1.227-.355 2.206-1.066 2.94-.71.727-1.663 1.09-2.859 1.09-1.088 0-1.955-.3-2.602-.9-.641-.605-.982-1.436-1.021-2.493"/><path id="path3073" fill="#181717" fill-rule="nonzero" d="M248.136 10.477l-.576.414c-.232.16-.406.354-.523.58-.116.226-.174.48-.174.76 0 .427.146.786.44 1.077.293.291.66.437 1.099.437.323 0 .631-.066.925-.196.298-.136.573-.331.826-.587l-2.017-2.485m.607-2.372l.265-.188c.243-.165.422-.351.538-.557.117-.206.175-.442.175-.708 0-.256-.081-.459-.243-.61-.156-.15-.371-.225-.644-.225-.278 0-.498.077-.66.233-.161.15-.242.356-.242.617 0 .14.038.294.113.46.081.165.195.341.342.527l.356.451m-1.706 1.002l-.44-.572a3.576 3.576 0 01-.492-.844 2.442 2.442 0 01-.144-.835c0-.803.258-1.44.773-1.913.52-.477 1.226-.715 2.115-.715.854 0 1.529.218 2.024.655.495.437.743 1.026.743 1.77 0 .562-.147 1.066-.44 1.513-.288.441-.743.858-1.364 1.25l1.6 1.957c.15-.246.27-.522.355-.828.091-.306.155-.648.19-1.024h1.97a6.483 6.483 0 01-.408 1.814 5.604 5.604 0 01-.895 1.529l2.032 2.454h-2.578l-.758-.926a4.741 4.741 0 01-1.47.926 4.572 4.572 0 01-1.668.309c-1.031 0-1.875-.304-2.532-.911-.652-.607-.978-1.383-.978-2.327 0-.702.182-1.307.546-1.814.364-.507.97-.996 1.82-1.468"/><path id="text5163" fill="#181717" fill-rule="nonzero" d="M288.564 36.352h-2.353c.084-1.6.454-3.187 1.11-4.76.66-1.574 1.602-3.12 2.824-4.64h-5.54v-1.999h7.987v1.762c-1.238 1.42-2.19 2.923-2.856 4.507-.661 1.585-1.052 3.295-1.172 5.13"/><path id="path3094" fill="#181717" fill-rule="nonzero" d="M506.735 48.674l-1.417 2.151-1.368-1.032 1.546-2.091-2.255-.677.524-1.761 2.165.832v-2.49h1.594v2.49l2.166-.815.54 1.761-2.255.66 1.53 2.073-1.4 1.085-1.37-2.186"/><path id="path3092" fill="#181717" fill-rule="nonzero" d="M325.79 31.784c0 .541.15.959.45 1.252.304.294.738.44 1.302.44.537 0 .959-.149 1.264-.447.31-.3.465-.714.465-1.245 0-.51-.158-.92-.473-1.228-.315-.31-.734-.464-1.256-.464s-.946.157-1.272.471c-.32.315-.48.722-.48 1.221m.178-4.745c0 .428.134.758.403.99.269.226.654.34 1.155.34.502 0 .887-.116 1.156-.348.274-.232.41-.56.41-.982 0-.412-.139-.736-.418-.973-.28-.237-.662-.356-1.148-.356-.475 0-.855.121-1.14.363-.279.242-.418.564-.418.966m-.799 2.149c-.465-.258-.801-.56-1.008-.905-.207-.345-.31-.785-.31-1.321 0-.948.326-1.692.977-2.233.651-.541 1.55-.812 2.698-.812 1.158 0 2.063.27 2.714.812.657.535.985 1.28.985 2.233 0 .51-.111.953-.333 1.33-.223.37-.556.669-1 .896.542.252.95.602 1.224 1.05.274.444.411.985.411 1.624 0 1.076-.356 1.921-1.07 2.534-.708.614-1.685.92-2.93.92-1.262 0-2.242-.304-2.94-.912-.697-.608-1.046-1.455-1.046-2.542 0-.634.129-1.165.387-1.592.264-.433.678-.794 1.241-1.082"/><path id="path3112" fill="#181717" fill-rule="nonzero" d="M330.53 5.264c-.81 1.15-1.412 2.32-1.806 3.51a11.87 11.87 0 00-.59 3.748c0 1.302.197 2.549.59 3.74.394 1.19.995 2.36 1.805 3.51h-1.857c-1.028-1.216-1.808-2.437-2.342-3.663-.528-1.231-.793-2.427-.793-3.587 0-1.16.265-2.356.793-3.587.534-1.231 1.314-2.455 2.342-3.67h1.857"/><path id="path3110" fill="#181717" fill-rule="nonzero" d="M369.808 27.766c0-.634-.18-1.134-.537-1.5-.353-.37-.835-.556-1.447-.556-.578 0-1.028.178-1.352.533-.318.356-.476.853-.476 1.492 0 .597.167 1.064.502 1.399.335.334.806.502 1.412.502.595 0 1.06-.165 1.395-.495.335-.33.503-.788.503-1.375m.043 2.882c-.289.258-.63.451-1.022.58a4.243 4.243 0 01-1.326.193c-1.219 0-2.195-.327-2.928-.981-.734-.655-1.1-1.53-1.1-2.628 0-1.164.398-2.105 1.195-2.82.797-.717 1.848-1.075 3.154-1.075 1.513 0 2.663.466 3.448 1.399.792.927 1.187 2.282 1.187 4.065 0 1.916-.421 3.385-1.265 4.405-.843 1.02-2.056 1.53-3.639 1.53-1.092 0-1.972-.252-2.642-.757-.67-.51-1.037-1.203-1.1-2.08l2.503.009c.058.355.214.62.468.796.254.175.612.262 1.074.262.624 0 1.1-.242 1.43-.726.33-.484.517-1.208.563-2.172"/><path id="path3121" fill="#181717" fill-rule="nonzero" d="M364.473 5.264h1.875c1.02 1.211 1.796 2.432 2.324 3.663.528 1.227.792 2.425.792 3.595 0 1.165-.264 2.363-.792 3.594-.528 1.232-1.303 2.45-2.324 3.656h-1.875c.815-1.155 1.42-2.328 1.813-3.518.4-1.196.599-2.44.599-3.732 0-1.297-.2-2.541-.599-3.732-.393-1.19-.998-2.366-1.813-3.526"/><path id="path3119" fill="#181717" fill-rule="nonzero" d="M405.986 29.62c0 1.349.15 2.328.451 2.937.307.61.793.915 1.459.915.665 0 1.152-.308 1.458-.922.307-.615.46-1.592.46-2.93 0-1.343-.153-2.32-.46-2.929-.306-.61-.793-.914-1.458-.914-.666 0-1.152.305-1.459.914-.3.605-.451 1.581-.451 2.93m-2.578 0c0-1.907.37-3.333 1.11-4.278.747-.95 1.873-1.426 3.378-1.426 1.499 0 2.622.478 3.368 1.434.752.95 1.129 2.379 1.129 4.285 0 1.906-.374 3.33-1.12 4.27-.741.94-1.867 1.41-3.377 1.41-1.505 0-2.63-.473-3.377-1.418-.74-.945-1.111-2.371-1.111-4.278"/><path id="text5187" fill="#181717" fill-rule="nonzero" d="M453.324 136.87h7.987v1.58h-7.987v-1.58m1.802 14.508v-2.122h4.383v2.122h-4.383"/><path id="path2908" fill="#181717" fill-rule="nonzero" d="M506.976 65.368h1.515v4.328h3.735v1.69h-3.735v4.345h-1.515v-4.346h-3.735v-1.689h3.735v-4.328"/><path id="path2906" fill="#181717" fill-rule="nonzero" d="M403.408 12.951h8.985v1.64h-8.985v-1.64m0-3.542h8.985v1.64h-8.985v-1.64"/><g id="g3468" transform="translate(522.21 13.554)"><path id="path5439" stroke="#181717" stroke-width="3" d="M34.942 5.448H6.61"/><path id="path5441" fill="#181717" d="M10.219 10.79V.105L.329 5.448z"/></g><g id="g5459" transform="translate(10.063 48.788)"><path id="path5453" stroke="#181717" stroke-width="3" d="M25.624 5.699H6.669"/><path id="path5455" fill="#181717" d="M10.649 11.043V.356L.666 5.7z"/><path id="path5457" stroke="#181717" stroke-width="3" d="M.666.356v10.687"/></g><g id="g5464" transform="rotate(-180 18.01 35.275)"><path id="path5466" stroke="#181717" stroke-width="3" d="M25.624 5.699H6.669"/><path id="path5468" fill="#181717" d="M10.649 11.043V.356L.666 5.7z"/><path id="path5470" stroke="#181717" stroke-width="3" d="M.666.356v10.687"/></g><path id="text5474" fill="#181717" fill-rule="nonzero" d="M71.803 52.199l-1.188-1.172 1.264-1.326 1.219 1.203c.162-.309.286-.66.373-1.056a6.08 6.08 0 00.13-1.296c0-1.248-.278-2.217-.83-2.906-.554-.694-1.329-1.04-2.324-1.04-.985 0-1.751.344-2.3 1.032-.548.689-.822 1.66-.822 2.914 0 1.25.274 2.22.822 2.915.549.688 1.315 1.033 2.3 1.033.254 0 .493-.026.716-.077a2.86 2.86 0 00.64-.224m1.622 1.55c-.38.257-.825.452-1.333.585a6.39 6.39 0 01-1.645.2c-1.675 0-3.008-.539-3.998-1.618-.985-1.08-1.477-2.534-1.477-4.364 0-1.834.492-3.289 1.477-4.363.99-1.08 2.323-1.62 3.998-1.62 1.676 0 3.008.54 3.999 1.62.995 1.08 1.492 2.534 1.492 4.363 0 .802-.101 1.537-.304 2.205a5.234 5.234 0 01-.9 1.743l1.22 1.18-1.25 1.325-1.279-1.256"/><path id="text5482" fill="#181717" fill-rule="nonzero" d="M105.05 55.005l-3.14-11.399h2.337l1.876 8.04 1.585-8.04h2.404l1.585 8.04 1.875-8.04h2.315l-3.133 11.4h-2.151l-1.697-8.73-1.704 8.73h-2.151"/><path id="text5492" fill="#181717" fill-rule="nonzero" d="M144.839 55.005V43.606h8.692v1.981h-6.261v2.43h5.724v1.95h-5.724V52.9h6.554v2.105h-8.985"/><path id="text5500" fill="#181717" fill-rule="nonzero" d="M187.015 48.59h2.634c.573 0 .992-.121 1.259-.364.271-.242.407-.624.407-1.145 0-.495-.131-.87-.393-1.122-.261-.258-.65-.387-1.169-.387h-2.738v3.018m-2.243 6.415V43.606h5.284c1.19 0 2.07.266 2.643.797.572.532.858 1.344.858 2.438 0 .696-.14 1.277-.422 1.741a2.108 2.108 0 01-1.199.952c.474.175.81.444 1.007.805.202.36.318.923.348 1.687l.044 1.346v.047c.015.68.156 1.093.422 1.238v.348H191.3a2.318 2.318 0 01-.185-.588 6.4 6.4 0 01-.074-.843l-.03-1.2c-.024-.707-.153-1.184-.385-1.432-.227-.247-.639-.371-1.236-.371h-2.375v4.434h-2.243"/><path id="text5504" fill="#181717" fill-rule="nonzero" d="M228.05 55.005v-9.364h-3.345v-2.035h8.986v2.035h-3.322v9.364h-2.319"/><path id="text5518" fill="#181717" fill-rule="nonzero" d="M101.245 134.798H98.96v-4.249l-4.037-7.15h2.8l2.376 4.914 2.196-4.914h2.611l-3.66 7.15v4.249"/><path id="text5522" fill="#181717" fill-rule="nonzero" d="M304.572 43.606h2.33v6.939c0 .856.173 1.482.518 1.877.345.39.894.586 1.645.586.761 0 1.315-.196 1.66-.586.35-.39.525-1.016.525-1.877v-6.939h2.307v7.187c0 1.356-.385 2.397-1.157 3.123-.767.726-1.873 1.09-3.32 1.09-1.457 0-2.574-.361-3.35-1.082-.772-.726-1.158-1.77-1.158-3.131v-7.187"/><path id="text5526" fill="#181717" fill-rule="nonzero" d="M347.5 55.005V43.606h1.998v11.4H347.5"/><path id="text5530" fill="#181717" fill-rule="nonzero" d="M384.8 48.788c0 1.298.274 2.307.823 3.028.549.716 1.316 1.074 2.303 1.074.996 0 1.772-.358 2.326-1.074.554-.72.831-1.73.831-3.028s-.277-2.305-.831-3.021c-.554-.721-1.33-1.082-2.326-1.082-.987 0-1.754.358-2.303 1.074-.55.716-.824 1.725-.824 3.029m-2.356 0c0-1.907.493-3.419 1.48-4.535.99-1.122 2.325-1.683 4.003-1.683s3.012.56 4.004 1.683c.996 1.121 1.494 2.633 1.494 4.535 0 1.901-.498 3.413-1.494 4.535-.992 1.121-2.326 1.682-4.004 1.682-1.678 0-3.013-.56-4.004-1.682-.986-1.122-1.48-2.634-1.48-4.535"/><path id="text5534" fill="#181717" fill-rule="nonzero" d="M425.808 48.884h2.338c.633 0 1.093-.129 1.38-.387.288-.263.432-.684.432-1.261 0-.542-.141-.952-.423-1.23-.282-.28-.703-.419-1.261-.419h-2.466v3.297m-.016 2.066v4.055h-2.418V43.606h5.227c1.234 0 2.168.312 2.8.937.64.619.958 1.53.958 2.731 0 1.177-.31 2.085-.933 2.724-.623.635-1.511.952-2.665.952h-2.969"/><path id="path3102" fill="#C9DCEA" fill-rule="nonzero" d="M311.56 21.86v1.6c-.049 0-.118-.003-.206-.008a3.788 3.788 0 00-.182-.007c-.556 0-.933.1-1.131.298-.193.194-.29.608-.29 1.24v1.838c0 .755-.124 1.291-.371 1.608-.248.316-.694.543-1.339.68.645.139 1.09.363 1.339.675.247.311.371.844.371 1.6v1.845c0 .628.097 1.038.29 1.232.192.194.57.291 1.131.291.033 0 .094-.002.182-.007s.157-.008.207-.008v1.6c-.077 0-.185.003-.322.008-.138.005-.24.007-.306.007-.551 0-1.01-.03-1.38-.092a3.388 3.388 0 01-.942-.283 1.495 1.495 0 01-.67-.704c-.126-.291-.19-.799-.19-1.524V31.82c0-.7-.14-1.194-.42-1.485-.281-.296-.755-.444-1.422-.444-.033 0-.088.002-.165.007a2.87 2.87 0 01-.173.008v-1.6c.038 0 .096.003.173.008.077.005.132.007.165.007.661 0 1.132-.148 1.413-.444.287-.296.43-.796.43-1.5v-1.914c0-.73.063-1.243.19-1.539.132-.296.355-.53.67-.704.258-.128.572-.222.941-.284a8.644 8.644 0 011.686-.084c.137.005.245.008.322.008"/><path id="text5546" fill="#C9DCEA" fill-rule="nonzero" d="M347.5 22.88h3.994v1.62h-1.858v11.27h1.858v1.619h-3.993V22.88"/><path id="path3106" fill="#C9DCEA" fill-rule="nonzero" d="M425.371 21.845h.562c.606 0 1.093.03 1.462.092.37.06.678.158.926.29.314.164.534.4.66.706.133.301.199.807.199 1.517v1.932c0 .7.14 1.198.421 1.494.281.291.755.437 1.421.437.033 0 .088-.003.166-.008a2.88 2.88 0 01.173-.007v1.601h-.306c-.688 0-1.173.143-1.454.43-.28.286-.421.781-.421 1.486v1.932c0 .73-.066 1.244-.198 1.54a1.381 1.381 0 01-.661.69 3.386 3.386 0 01-.942.283 8.634 8.634 0 01-1.686.085 9.241 9.241 0 00-.322-.008v-1.602c.05 0 .118.003.207.008.088.005.148.008.181.008.557 0 .931-.1 1.124-.3.198-.193.297-.602.297-1.226v-1.831c0-.767.124-1.306.372-1.617.248-.317.694-.542 1.339-.675-.645-.138-1.09-.365-1.339-.682-.248-.317-.372-.853-.372-1.61v-1.854c0-.623-.099-1.032-.297-1.226-.193-.2-.567-.299-1.124-.299-.033 0-.093.003-.181.008a3.778 3.778 0 01-.207.007v-1.601"/><path id="text5554" fill="#C9DCEA" fill-rule="nonzero" d="M390.43 22.88V37.39h-3.994v-1.62h1.862V24.5h-1.862v-1.618h3.993"/><path id="text5641" fill="#181717" fill-rule="nonzero" d="M79.428 86.304l-1.594 4.852h3.196l-1.602-4.852m-1.376-2.283h2.736l4.15 11.399h-2.485l-.782-2.345h-4.463l-.758 2.345h-2.493l4.095-11.4"/><path id="text5645" fill="#181717" fill-rule="nonzero" d="M114.889 92.487h2.242c.085.645.333 1.126.743 1.44.41.31 1.002.464 1.777.464.66 0 1.158-.125 1.493-.376.335-.25.502-.621.502-1.112 0-.715-.962-1.307-2.887-1.776a6.848 6.848 0 01-.3-.072c-1.03-.24-1.765-.51-2.205-.809a2.56 2.56 0 01-.893-1.072c-.205-.453-.307-.987-.307-1.6 0-1.147.365-2.025 1.095-2.633.73-.614 1.785-.92 3.165-.92 1.29 0 2.297.325 3.022.976.73.65 1.115 1.568 1.155 2.753h-2.182c-.04-.571-.245-1.006-.615-1.305-.37-.298-.898-.448-1.583-.448-.595 0-1.055.126-1.38.376-.32.246-.48.598-.48 1.057 0 .624.628 1.09 1.883 1.4l.795.2c.805.219 1.375.39 1.71.512.34.123.635.259.885.408.45.267.787.622 1.012 1.065.225.437.338.962.338 1.576 0 1.227-.388 2.18-1.163 2.857-.775.672-1.867 1.008-3.277 1.008-1.39 0-2.48-.344-3.27-1.032-.79-.688-1.215-1.667-1.275-2.937"/><path id="text5649" fill="#181717" fill-rule="nonzero" d="M156.959 93.361h1.748c1.012 0 1.743-.284 2.194-.851.455-.573.683-1.499.683-2.778 0-1.274-.21-2.21-.633-2.81-.422-.598-1.081-.897-1.978-.897h-2.014v7.336m-2.137 2.059v-11.4h4.15c1.627 0 2.838.473 3.634 1.417.8.944 1.201 2.376 1.201 4.295 0 1.042-.149 1.96-.446 2.755-.293.794-.72 1.434-1.28 1.919a3.9 3.9 0 01-1.44.782c-.536.154-1.29.232-2.258.232h-3.561"/><path id="text5653" fill="#181717" fill-rule="nonzero" d="M194.755 95.42v-11.4h7.987v1.982h-5.664v2.584h4.965v1.982h-4.965v4.852h-2.323"/><path id="text5657" fill="#181717" fill-rule="nonzero" d="M241.917 94.733c-.4.593-.856 1.029-1.368 1.306-.508.278-1.106.417-1.794.417-1.507 0-2.73-.572-3.667-1.715-.931-1.148-1.397-2.654-1.397-4.519 0-1.88.466-3.384 1.397-4.51.932-1.128 2.174-1.691 3.726-1.691 1.352 0 2.454.355 3.308 1.065.854.705 1.362 1.678 1.523 2.917h-2.262c-.137-.614-.417-1.082-.842-1.402-.42-.32-.968-.481-1.647-.481-.902 0-1.612.363-2.13 1.09-.512.72-.768 1.72-.768 2.996 0 1.282.268 2.286.805 3.013.537.726 1.274 1.09 2.21 1.09.703 0 1.291-.227 1.764-.681.474-.454.767-1.077.879-1.867h-2.445v-2.02h4.465v6.386h-1.486l-.27-1.394"/><path id="text5661" fill="#181717" fill-rule="nonzero" d="M274.622 95.42v-11.4h2.25v4.25h4.485v-4.25h2.25v11.4h-2.25v-5.054h-4.485v5.054h-2.25"/><path id="text5665" fill="#181717" fill-rule="nonzero" d="M314.556 90.978h2.484v1.34c0 .386.13.682.39.888.26.2.633.301 1.12.301.53 0 .9-.123 1.11-.369.209-.246.313-.707.313-1.385v-7.732h2.57v7.837c0 .703-.049 1.22-.145 1.551a2.23 2.23 0 01-.458.866c-.327.372-.777.655-1.348.851-.57.196-1.24.294-2.009.294-.707 0-1.331-.086-1.874-.256-.542-.171-.995-.424-1.356-.76a2.392 2.392 0 01-.62-.904c-.118-.337-.177-.889-.177-1.657v-.865"/><path id="text5669" fill="#181717" fill-rule="nonzero" d="M353.49 95.42v-11.4h2.31v4.683l4.382-4.682h2.888l-4.48 4.612 4.884 6.787h-2.82l-3.658-5.216-1.196 1.207v4.009h-2.31"/><path id="text5673" fill="#181717" fill-rule="nonzero" d="M394.423 95.42v-11.4h2.368v9.295h5.618v2.105h-7.986"/><path id="text5679" fill="#181717" fill-rule="nonzero" d="M264.639 55.005v-1.98l6.156-7.353h-6.033v-2.066h8.862v1.981l-6.172 7.36h6.034v2.058h-8.847"/><path id="text5683" fill="#181717" fill-rule="nonzero" d="M134.855 134.798l3.55-5.82-3.55-5.579h2.684l2.308 3.985 2.293-3.985h2.699l-3.55 5.564 3.55 5.835h-2.684l-2.308-3.947-2.308 3.947h-2.684"/><path id="text5687" fill="#181717" fill-rule="nonzero" d="M184.772 131.451c-.084 1.341-.564 2.407-1.441 3.197-.872.79-2.01 1.186-3.417 1.186-1.62 0-2.88-.545-3.78-1.634-.897-1.09-1.345-2.618-1.345-4.583 0-2.009.458-3.547 1.374-4.616.916-1.068 2.233-1.602 3.952-1.602 1.396 0 2.498.369 3.305 1.106.812.731 1.258 1.768 1.337 3.108h-2.22c-.095-.667-.347-1.175-.758-1.522-.412-.352-.966-.529-1.664-.529-.99 0-1.743.345-2.259 1.034-.515.689-.772 1.696-.772 3.02 0 1.283.255 2.273.765 2.973.515.7 1.246 1.05 2.191 1.05.684 0 1.243-.187 1.68-.561.435-.38.717-.921.846-1.627h2.206"/><path id="text5691" fill="#181717" fill-rule="nonzero" d="M217.625 134.798l-3.901-11.399h2.58l2.404 8.528 2.45-8.528h2.55l-3.856 11.399h-2.227"/><path id="text5695" fill="#181717" fill-rule="nonzero" d="M256.813 132.74h2.67c.63 0 1.088-.12 1.376-.357.287-.237.431-.61.431-1.122 0-.531-.141-.913-.424-1.145-.282-.237-.749-.356-1.398-.356h-2.655v2.98m0-4.93h2.573c.555 0 .962-.098 1.22-.294.258-.201.387-.516.387-.944 0-.418-.127-.72-.38-.906-.248-.19-.662-.286-1.242-.286h-2.558v2.43m-2.157 6.988v-11.399h5.161c1.121 0 1.974.248 2.56.743.59.49.884 1.205.884 2.143 0 .578-.109 1.06-.327 1.448a2.183 2.183 0 01-.982.897c.565.238.987.58 1.265 1.03.282.443.424.998.424 1.663 0 1.11-.348 1.966-1.042 2.57-.694.603-1.678.905-2.953.905h-4.99"/><path id="text5699" fill="#181717" fill-rule="nonzero" d="M294.589 134.798v-11.399h2.346l4.426 7.831V123.4h2.213v11.399h-2.317l-4.455-7.832v7.832h-2.213"/><path id="text5703" fill="#181717" fill-rule="nonzero" d="M333.524 134.798v-11.399h3.324l2.174 8.675 2.145-8.675h3.339v11.399h-2.107v-9.194l-2.22 9.194h-2.3l-2.248-9.194v9.194h-2.107"/><g id="g3476" transform="translate(561.145 70.55)"><path id="path5745" fill="#181717" d="M10.246 14.192V4.731L0 9.46z"/><path id="path5747" stroke="#181717" stroke-width="3" d="M25.615 0v9.462H5.123"/></g><path id="path5757" stroke="#181717" stroke-width="2" d="M18.55 130.653l-7.488 9.672h4.991v4.836h4.992v-4.836h4.992z"/><path id="path5801" stroke="#181717" stroke-width="2" d="M501.744 130.653l-7.488 9.672h4.992v4.836h4.992v-4.836h4.991z"/><path id="path3083" fill="#181717" fill-rule="nonzero" d="M447.271 12.398c0-.055-.002-.128-.008-.219a4.189 4.189 0 01-.008-.21c0-.443.051-.81.153-1.102.101-.297.264-.574.488-.83.171-.191.425-.41.761-.656.342-.247.564-.425.665-.536.214-.226.36-.43.44-.611.08-.181.12-.38.12-.596 0-.478-.14-.85-.424-1.117-.283-.266-.678-.4-1.185-.4-.508 0-.908.161-1.202.483-.288.317-.446.765-.473 1.343h-2.259v-.234c0-1.06.356-1.906 1.066-2.534.715-.634 1.677-.951 2.884-.951 1.233 0 2.213.3 2.94.898.731.593 1.097 1.39 1.097 2.391 0 .352-.043.67-.128.95-.08.277-.206.531-.377.763-.219.291-.558.608-1.017.95-.454.337-.729.546-.825.626-.203.186-.35.383-.44.589a1.927 1.927 0 00-.12.867c.005.06.007.106.007.136h-2.155m-.112 3.229v-2.21h2.363v2.21h-2.363"/><path id="text5819" fill="#181717" fill-rule="nonzero" d="M286.602 17.7l3.912-13.472h1.08l-3.927 13.471h-1.065"/><path id="text5928" fill="#C9DCEA" fill-rule="nonzero" d="M173.79 71.348c-.084 1.34-.564 2.406-1.44 3.197-.872.79-2.011 1.186-3.418 1.186-1.619 0-2.88-.545-3.78-1.635-.897-1.09-1.345-2.617-1.345-4.583 0-2.008.458-3.547 1.374-4.615.916-1.068 2.234-1.603 3.952-1.603 1.396 0 2.498.369 3.305 1.106.813.732 1.258 1.768 1.337 3.109h-2.22c-.095-.668-.347-1.175-.758-1.522-.411-.353-.966-.53-1.664-.53-.99 0-1.743.345-2.258 1.034-.515.69-.773 1.696-.773 3.021 0 1.282.255 2.273.765 2.973.515.7 1.246 1.05 2.192 1.05.683 0 1.243-.188 1.678-.562.436-.379.718-.921.847-1.626h2.206"/><path id="text5956" fill="#C9DCEA" fill-rule="nonzero" d="M161.288 70.602h7.481l-.475.983h-7.482l.476-.983m1.027-2.125h7.482l-.476.983h-7.481l.475-.983"/><path id="path3060" fill="#181717" fill-rule="nonzero" d="M246.307 31.467c0 .634.177 1.136.53 1.507.36.371.846.557 1.46.557.573 0 1.022-.18 1.347-.541.324-.36.486-.863.486-1.507 0-.593-.168-1.054-.504-1.383-.336-.33-.808-.495-1.416-.495-.597 0-1.063.165-1.4.495-.335.33-.503.785-.503 1.367m-.035-2.89c.284-.257.626-.45 1.025-.58.4-.133.846-.2 1.339-.2 1.216 0 2.19.33 2.92.989.735.66 1.103 1.538 1.103 2.635 0 1.164-.4 2.105-1.2 2.82-.799.717-1.853 1.075-3.162 1.075-1.512 0-2.662-.464-3.45-1.391-.782-.927-1.173-2.285-1.173-4.073 0-1.921.42-3.39 1.26-4.405.84-1.02 2.05-1.53 3.632-1.53 1.1 0 1.987.255 2.66.765.677.51 1.048 1.2 1.111 2.071h-2.52c-.058-.355-.214-.623-.469-.803-.255-.18-.611-.27-1.069-.27-.625 0-1.106.241-1.442.726-.336.479-.524 1.203-.565 2.171"/><path id="rect10188" fill="#FFF" stroke="#181717" d="M508.233 79.876h39.933v39.378h-39.933z"/><path id="path2917" fill="#C9DCEA" fill-rule="nonzero" d="M532.193 69.513v1.784c-.512.383-.997.665-1.455.848a3.66 3.66 0 01-1.344.267c-.226 0-.452-.022-.679-.065a4.552 4.552 0 01-.68-.186 22.53 22.53 0 01-.524-.201c-1.078-.404-1.897-.606-2.458-.606-.419 0-.857.102-1.315.307-.453.199-.962.52-1.528.96v-1.784c.526-.387 1.029-.675 1.506-.864.478-.194.928-.29 1.351-.29.576 0 1.293.156 2.15.468a.111.111 0 00.029.008c.088.032.224.083.406.153.763.296 1.354.444 1.772.444.418 0 .85-.1 1.292-.298.443-.2.935-.514 1.477-.945"/><path id="path2915" fill="#181717" fill-rule="nonzero" d="M517.137 108.474l-.651 1.887h1.856l.636-1.887h-1.841m0-4.764h1.634l-1.08 3.21h1.79l1.094-3.21h1.635l-1.095 3.21h2.093l-.547 1.554h-2.07l-.622 1.871h2.145l-.526 1.547h-2.152l-1.094 3.217h-1.634l1.094-3.217h-1.804l-1.102 3.217h-1.627l1.08-3.217h-2.123l.562-1.547h2.086l.636-1.871h-2.211l.547-1.555h2.196l1.095-3.21"/><path id="rect10196" fill="#FFF" stroke="#181717" d="M49.997 119.254H89.93v39.378H49.997z"/><path id="text5910" fill="#C9DCEA" fill-rule="nonzero" d="M106.902 31.171c.018-.655.181-1.209.49-1.661.316-.452.87-.91 1.661-1.373l.473-.262c1.101-.594 1.652-1.167 1.652-1.72 0-.323-.11-.577-.33-.763-.22-.187-.524-.28-.911-.28-.428 0-.759.116-.99.347-.233.226-.349.551-.349.975v.068h-1.553c0-.83.259-1.47.776-1.915.518-.447 1.259-.67 2.223-.67.869 0 1.56.203 2.071.61.518.401.777.938.777 1.61 0 .486-.134.904-.402 1.255-.268.35-.791.754-1.571 1.211-.173.108-.417.249-.732.424-.714.395-1.116.706-1.205.932h3.838v1.212h-5.918"/><path id="text5922" fill="#C9DCEA" fill-rule="nonzero" d="M146.835 29.844h1.603c.012.4.127.7.344.898.217.197.543.296.978.296.417 0 .74-.093.969-.28.229-.187.343-.453.343-.799 0-.35-.132-.614-.396-.79-.264-.181-.66-.272-1.19-.272h-.255v-.98h.185c.488 0 .846-.076 1.075-.23.235-.16.352-.4.352-.725 0-.274-.1-.49-.3-.65-.199-.165-.466-.247-.8-.247-.37 0-.656.093-.855.28-.2.181-.3.442-.3.782v.05h-1.568c.018-.72.265-1.269.74-1.647.482-.385 1.166-.577 2.053-.577.834 0 1.491.17 1.973.51.487.341.731.805.731 1.392 0 .308-.085.58-.255.815-.165.231-.412.42-.74.569.428.159.751.381.969.667.223.28.334.609.334.988 0 .713-.276 1.279-.828 1.696-.546.411-1.292.617-2.237.617-.934 0-1.656-.203-2.167-.609-.505-.406-.758-.98-.758-1.72v-.034"/><path id="path3131" fill="#181717" fill-rule="nonzero" d="M131.142 12.276c.232-.12.406-.254.522-.4a.747.747 0 00.174-.472.728.728 0 00-.2-.519c-.133-.147-.409-.317-.826-.51l-2.306-1.078c-.226.121-.4.257-.522.41a.789.789 0 00-.174.486c0 .205.084.386.253.543.174.152.554.364 1.14.636l1.94.904m-4.733 2.57h2.149c.046.41.18.713.4.912.226.2.545.299.957.299.383 0 .687-.081.913-.244a.799.799 0 00.34-.676c0-.23-.085-.43-.253-.597-.168-.173-.501-.37-1-.59l-2.08-.95c-.66-.3-1.154-.642-1.479-1.03a1.98 1.98 0 01-.487-1.305c0-.466.125-.875.374-1.226.256-.356.63-.652 1.123-.888a2.377 2.377 0 01-.644-.77 2.09 2.09 0 01-.209-.936c0-.786.299-1.417.896-1.894.598-.482 1.392-.723 2.384-.723 1.02 0 1.821.236 2.401.707.58.472.879 1.124.896 1.957h-2.053c-.012-.35-.128-.618-.348-.801-.215-.184-.525-.275-.93-.275-.36 0-.639.07-.836.212a.7.7 0 00-.287.597c0 .21.113.406.34.59.231.178.646.393 1.243.644l1.462.613c.742.32 1.29.676 1.644 1.07.354.387.53.835.53 1.343 0 .477-.133.894-.4 1.25-.26.35-.637.623-1.13.817.336.267.588.564.757.888.168.325.252.682.252 1.07 0 .806-.32 1.472-.957 1.996-.638.529-1.459.793-2.462.793-1.102 0-1.95-.24-2.54-.723-.592-.482-.914-1.192-.966-2.13"/><path id="text6073" fill="#181717" fill-rule="nonzero" d="M444.34 35.039v-8.34c0-.83.334-1.5 1.002-2.01.668-.514 1.559-.772 2.672-.772 1.135 0 2.023.25 2.665.75.642.5.963 1.187.963 2.062 0 .54-.095.983-.287 1.328-.186.345-.477.61-.87.795.611.235 1.07.58 1.375 1.035.31.455.466 1.014.466 1.68 0 1.12-.334 2.024-1.002 2.714-.668.69-1.544 1.035-2.626 1.035-.15 0-.319-.007-.505-.022a10.34 10.34 0 01-.59-.068v-1.755a2.769 2.769 0 00.52.03c.611 0 1.083-.162 1.414-.487.331-.33.497-.798.497-1.403 0-.585-.181-1.03-.544-1.334-.357-.305-.88-.458-1.569-.458h-.21l.008-1.537.101.015h.163c.461 0 .81-.11 1.049-.33.243-.225.365-.55.365-.975 0-.425-.127-.748-.38-.968-.25-.225-.614-.337-1.096-.337-.445 0-.785.125-1.018.375-.233.245-.35.605-.35 1.08v7.897h-2.214"/><path id="path2750" fill="#181717" fill-rule="nonzero" d="M417.384 129.151v-2.643h1.997v2.643h-1.997m0 6.683v-2.626h1.997v2.626h-1.997"/><path id="path2746" fill="#181717" fill-rule="nonzero" d="M377.464 128.949v-2.441h1.984v2.44h-1.984m0 8.959v-.943c.37-.129.641-.327.817-.596.176-.268.264-.618.264-1.047v-.202h-1.094v-2.424h1.997v2.328c0 .805-.167 1.45-.501 1.933-.334.489-.828.806-1.483.95"/><path id="text5803" fill="#181717" fill-rule="nonzero" d="M377.45 157.596v-.937c.37-.128.642-.326.818-.593.176-.267.264-.614.264-1.04v-.201h-1.081v-2.41h1.997v2.314c0 .795-.17 1.436-.508 1.922-.334.486-.83.8-1.49.945"/><path id="text5813" fill="#181717" fill-rule="nonzero" d="M417.384 154.487v-2.072h1.997v2.072h-1.997"/><path id="path2737" fill="#181717" fill-rule="nonzero" d="M63.973 145.16v1.75l-6.81 2.918 6.81 2.909v1.75l-8.985-3.876v-1.59l8.985-3.86"/><path id="path2742" fill="#181717" fill-rule="nonzero" d="M54.988 125.472l8.985 3.86v1.59l-8.985 3.876v-1.75l6.827-2.91-6.827-2.916v-1.75"/><path id="text6003" fill="#181717" fill-rule="nonzero" d="M477.764 86.458l-1.594 4.77h3.196l-1.602-4.77m-1.375-2.244h2.735l4.15 11.206h-2.485l-.782-2.305h-4.463l-.758 2.305h-2.493l4.096-11.206m1.868-1.43v-1.872h1.766v1.871h-1.766m-2.72 0v-1.871h1.766v1.871h-1.766"/><path id="text6023" fill="#181717" fill-rule="nonzero" d="M464.306 43.7h2.33v6.881c0 .85.173 1.47.518 1.862.345.388.893.581 1.645.581.761 0 1.314-.193 1.66-.58.35-.388.525-1.009.525-1.863V43.7h2.307v7.127c0 1.346-.386 2.378-1.157 3.098-.767.72-1.873 1.08-3.32 1.08-1.457 0-2.574-.357-3.35-1.072-.772-.72-1.158-1.755-1.158-3.106V43.7m4.972-1.37v-1.833H471v1.833h-1.72m-2.65 0v-1.833h1.72v1.833h-1.72"/><path id="text6041" fill="#181717" fill-rule="nonzero" d="M434.716 89.64c0 1.207.274 2.145.824 2.816.549.665 1.316.998 2.303.998.996 0 1.771-.333 2.326-.998.554-.67.83-1.61.83-2.816 0-1.206-.276-2.142-.83-2.807-.555-.67-1.33-1.006-2.326-1.006-.987 0-1.754.333-2.303.998-.55.666-.824 1.604-.824 2.815m-2.357 0c0-1.772.494-3.177 1.48-4.215.991-1.043 2.326-1.564 4.004-1.564 1.677 0 3.012.521 4.003 1.564.997 1.043 1.495 2.448 1.495 4.215 0 1.768-.498 3.173-1.495 4.216-.991 1.042-2.326 1.564-4.003 1.564-1.678 0-3.013-.522-4.004-1.564-.986-1.043-1.48-2.448-1.48-4.216m5.964-6.896v-1.832h1.724v1.832h-1.724m-2.654 0v-1.832h1.724v1.832h-1.724"/><path id="path2893" fill="#C9DCEA" fill-rule="nonzero" d="M90.991 73.43c-.274.422-.59.733-.949.934-.359.195-.782.293-1.27.293-.788 0-1.388-.215-1.802-.647-.408-.431-.613-1.069-.613-1.912 0-1.199.347-2.205 1.04-3.018.697-.812 1.554-1.219 2.57-1.219.4 0 .745.083 1.04.249.293.165.535.411.724.737l.397-.737h1.33l-1.099 4.5a1.757 1.757 0 00-.052.309c0 .175.06.308.18.399.119.085.296.128.53.128.194 0 .396-.05.605-.151.215-.1.414-.24.598-.421a3.96 3.96 0 00.972-1.408 4.545 4.545 0 00.336-1.768c0-1.205-.463-2.193-1.39-2.966-.922-.777-2.113-1.166-3.573-1.166a7.25 7.25 0 00-1.965.256 5.609 5.609 0 00-1.645.76 5.949 5.949 0 00-1.958 2.145 5.946 5.946 0 00-.68 2.822c0 1.54.516 2.772 1.547 3.695 1.032.918 2.41 1.378 4.133 1.378.808 0 1.595-.123 2.362-.37a7.857 7.857 0 002.153-1.068l.613.88a8.585 8.585 0 01-2.43 1.303 8.199 8.199 0 01-2.668.436c-.956 0-1.836-.123-2.638-.369a6.607 6.607 0 01-2.138-1.076c-.772-.607-1.35-1.307-1.734-2.1-.383-.792-.575-1.69-.575-2.694 0-.838.13-1.636.388-2.393a6.747 6.747 0 011.159-2.077 7.198 7.198 0 012.66-2.062c1.037-.467 2.19-.7 3.461-.7.842 0 1.632.115 2.37.346a6.101 6.101 0 011.935.963c.673.527 1.174 1.129 1.503 1.806.334.673.5 1.433.5 2.28 0 .829-.164 1.594-.493 2.296a4.984 4.984 0 01-1.405 1.791c-.349.281-.73.497-1.144.648a3.781 3.781 0 01-1.278.218c-.528 0-.926-.106-1.195-.316-.265-.211-.402-.522-.412-.933m.374-3.222c-.065-.406-.21-.715-.433-.925-.22-.216-.511-.324-.875-.324-.568 0-1.061.311-1.48.933-.418.622-.628 1.37-.628 2.243 0 .462.1.813.3 1.054.204.24.498.36.881.36.414 0 .79-.157 1.129-.473.344-.316.578-.728.703-1.234l.403-1.634"/><path id="path2898" fill="#C9DCEA" fill-rule="nonzero" d="M469.216 37.389l-3.912-13.472h1.065l3.927 13.472h-1.08"/><path id="path2919" fill="#181717" fill-rule="nonzero" d="M516.22 82.984h1.996v5.182h-1.996v-5.182"/><path id="text6099" fill="#D35155" fill-rule="nonzero" d="M490.263 22.88l-2.747 3.11h-1.246l1.729-3.11h2.264"/><path id="text5103" fill="#D35155" fill-rule="nonzero" d="M485.271 3.192h2.265l1.729 3.109h-1.247l-2.747-3.11"/><path id="text6117" fill="#C9DCEA" fill-rule="nonzero" d="M356.42 146.197h2.083l-.548 3.24c-.072.398-.127.776-.166 1.133a8.3 8.3 0 00-.057.864c0 .462.1.808.302 1.036.202.224.51.335.922.335.48 0 .853-.203 1.117-.61.27-.408.493-1.13.67-2.169l.649-3.83h2.082l-1.39 8.137h-1.931l.13-.872c-.202.387-.428.67-.678.85a1.439 1.439 0 01-.872.267c-.322 0-.608-.074-.857-.223-.25-.144-.476-.37-.678-.678l-.648 3.919h-2.06l1.93-11.4"/><path id="path3396" fill="#C9DCEA" fill-rule="nonzero" d="M78.948 141.016h1.997v15.544h-1.997v-15.544"/><path id="path3403" fill="#181717" fill-rule="nonzero" d="M9.564 5.327c-.4 0-.744.145-1.03.435-.28.29-.42.64-.42 1.048 0 .42.14.776.42 1.065.28.29.624.435 1.03.435.395 0 .733-.148 1.013-.443.28-.296.42-.648.42-1.057 0-.409-.14-.758-.42-1.048a1.358 1.358 0 00-1.013-.435m0-1.099c.692 0 1.28.256 1.763.767a2.54 2.54 0 01.733 1.832 2.53 2.53 0 01-.733 1.824 2.382 2.382 0 01-1.78.758 2.36 2.36 0 01-1.762-.75c-.478-.5-.717-1.11-.717-1.832 0-.721.242-1.335.725-1.84a2.373 2.373 0 011.771-.759"/><path id="text6091" fill="#D35155" fill-rule="nonzero" d="M8.632 23.917h1.865l3.56 5.181h-1.74l-2.746-3.426-2.76 3.426H5.07l3.56-5.18"/><path id="path2585" stroke="#181717" stroke-width="2" d="M18.55 109.927l7.487-9.671h-4.992V95.42h-4.992v4.836h-4.991z"/><text id="Strg" fill="#181717" fill-rule="nonzero" font-family="OpenSans-Regular, Open Sans" font-size="16" font-weight="normal"><tspan x="10.982" y="185.293">Strg</tspan></text><text id="tspan3451" fill="#181717" fill-rule="nonzero" font-family="OpenSans-Regular, Open Sans" font-size="16" font-weight="normal"><tspan x="553.078" y="185.293">Strg</tspan></text><g id="text3456" fill="#181717" fill-rule="nonzero" font-family="OpenSans-Regular, Open Sans" font-size="16" font-weight="normal" transform="translate(116.805 167.948)"><text id="tspan3460"><tspan x="0" y="17.345">Al</tspan> <tspan x="0" y="39.345">t</tspan></text></g><text id="tspan3466" fill="#C9DCEA" fill-rule="nonzero" font-family="OpenSans-Regular, Open Sans" font-size="16" font-weight="normal"><tspan x="405.324" y="185.293">Alt Gr</tspan></text><text id="Win" fill="#181717" fill-rule="nonzero" font-family="OpenSans-Regular, Open Sans" font-size="16" font-weight="normal"><tspan x="64.892" y="185.293">Win</tspan></text><text id="Win" fill="#181717" fill-rule="nonzero" font-family="OpenSans-Regular, Open Sans" font-size="16" font-weight="normal"><tspan x="464.226" y="185.293">Win</tspan></text><text id="Menu" fill="#181717" fill-rule="nonzero" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal"><tspan x="499.171" y="185.293">Menu</tspan></text><circle id="Oval" cx="109.94" cy="138" r="26" stroke="#C06334" stroke-width="5"/></g></g></svg> \ No newline at end of file diff --git a/2-ui/3-event-details/5-keyboard-events/keyboard-dump.view/index.html b/2-ui/3-event-details/7-keyboard-events/keyboard-dump.view/index.html similarity index 95% rename from 2-ui/3-event-details/5-keyboard-events/keyboard-dump.view/index.html rename to 2-ui/3-event-details/7-keyboard-events/keyboard-dump.view/index.html index 401062830..a0d5a4f40 100644 --- a/2-ui/3-event-details/5-keyboard-events/keyboard-dump.view/index.html +++ b/2-ui/3-event-details/7-keyboard-events/keyboard-dump.view/index.html @@ -28,7 +28,7 @@ <input type="text" placeholder="Press keys here" id="kinput"> - <textarea id="area"></textarea> + <textarea id="area" readonly></textarea> <input type="button" value="Clear" onclick="area.value = ''" /> </form> <script src="script.js"></script> diff --git a/2-ui/3-event-details/5-keyboard-events/keyboard-dump.view/script.js b/2-ui/3-event-details/7-keyboard-events/keyboard-dump.view/script.js similarity index 96% rename from 2-ui/3-event-details/5-keyboard-events/keyboard-dump.view/script.js rename to 2-ui/3-event-details/7-keyboard-events/keyboard-dump.view/script.js index 5eba24c7a..d97f7a7b5 100644 --- a/2-ui/3-event-details/5-keyboard-events/keyboard-dump.view/script.js +++ b/2-ui/3-event-details/7-keyboard-events/keyboard-dump.view/script.js @@ -5,6 +5,8 @@ let lastTime = Date.now(); function handle(e) { if (form.elements[e.type + 'Ignore'].checked) return; + area.scrollTop = 1e6; + let text = e.type + ' key=' + e.key + ' code=' + e.code + diff --git a/2-ui/3-event-details/5-keyboard-events/keyboard-dump.view/style.css b/2-ui/3-event-details/7-keyboard-events/keyboard-dump.view/style.css similarity index 100% rename from 2-ui/3-event-details/5-keyboard-events/keyboard-dump.view/style.css rename to 2-ui/3-event-details/7-keyboard-events/keyboard-dump.view/style.css diff --git a/2-ui/3-event-details/7-keyboard-events/us-layout.svg b/2-ui/3-event-details/7-keyboard-events/us-layout.svg new file mode 100644 index 000000000..353f225f1 --- /dev/null +++ b/2-ui/3-event-details/7-keyboard-events/us-layout.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" width="602" height="202" viewBox="0 0 602 202"><defs><style>@import url(https://fonts.googleapis.com/css?family=Open+Sans:bold,italic,bolditalic%7CPT+Mono);@font-face{font-family:'PT Mono';font-weight:700;font-style:normal;src:local('PT MonoBold'),url(/font/PTMonoBold.woff2) format('woff2'),url(/font/PTMonoBold.woff) format('woff'),url(/font/PTMonoBold.ttf) format('truetype')}</style></defs><g id="dom" fill="none" fill-rule="evenodd" stroke="none" stroke-width="1"><g id="KB_United_States-NoAltGr" transform="translate(1 1)"><path id="rect2186" fill="#FFF" stroke="#181717" d="M0 0h39.604v40H0z"/><path id="rect2218" fill="#FFF" stroke="#181717" d="M40.594 0h39.604v40H40.594z"/><path id="rect2222" fill="#FFF" stroke="#181717" d="M80.198 0h39.604v40H80.198z"/><path id="rect2228" fill="#FFF" stroke="#181717" d="M119.802 0h39.604v40h-39.604z"/><path id="rect2230" fill="#FFF" stroke="#181717" d="M160.396 0H200v40h-39.604z"/><path id="rect2232" fill="#FFF" stroke="#181717" d="M200 0h39.604v40H200z"/><path id="rect2234" fill="#FFF" stroke="#181717" d="M240.594 0h39.604v40h-39.604z"/><path id="rect2236" fill="#FFF" stroke="#181717" d="M280.198 0h39.604v40h-39.604z"/><path id="rect2238" fill="#FFF" stroke="#181717" d="M319.802 0h39.604v40h-39.604z"/><path id="rect2240" fill="#FFF" stroke="#181717" d="M360.396 0H400v40h-39.604z"/><path id="rect2242" fill="#FFF" stroke="#181717" d="M400 0h39.604v40H400z"/><path id="rect2244" fill="#FFF" stroke="#181717" d="M440.594 0h39.604v40h-39.604z"/><path id="rect2246" fill="#FFF" stroke="#181717" d="M480.198 0h39.604v40h-39.604z"/><path id="rect2248" fill="#D1CFCD" stroke="#181717" d="M519.802 0H600v40h-80.198z"/><path id="rect2250" fill="#D1CFCD" stroke="#181717" d="M0 40h60.396v40H0z"/><path id="rect2252" fill="#FFF" stroke="#181717" d="M60.396 40H100v40H60.396z"/><path id="rect2254" fill="#FFF" stroke="#181717" d="M100 40h39.604v40H100z"/><path id="rect2256" fill="#FFF" stroke="#181717" d="M140.594 40h39.604v40h-39.604z"/><path id="rect2258" fill="#FFF" stroke="#181717" d="M180.198 40h39.604v40h-39.604z"/><path id="rect2262" fill="#FFF" stroke="#181717" d="M219.802 40h39.604v40h-39.604z"/><path id="rect2264" fill="#FFF" stroke="#181717" d="M260.396 40H300v40h-39.604z"/><path id="rect2266" fill="#FFF" stroke="#181717" d="M300 40h39.604v40H300z"/><path id="rect2270" fill="#FFF" stroke="#181717" d="M340.594 40h39.604v40h-39.604z"/><path id="rect2272" fill="#FFF" stroke="#181717" d="M380.198 40h39.604v40h-39.604z"/><path id="rect2274" fill="#FFF" stroke="#181717" d="M419.802 40h39.604v40h-39.604z"/><path id="rect2278" fill="#FFF" stroke="#181717" d="M460.396 40H500v40h-39.604z"/><path id="rect2280" fill="#FFF" stroke="#181717" d="M500 40h39.604v40H500z"/><path id="rect2284" fill="#FFF" stroke="#181717" d="M539.604 40H600v40h-60.396z"/><path id="rect2286" fill="#D1CFCD" stroke="#181717" d="M0 80h70.297v40H0z"/><path id="rect2292" fill="#FFF" stroke="#181717" d="M70.297 80h39.604v40H70.297z"/><path id="rect2296" fill="#FFF" stroke="#181717" d="M109.901 80h39.604v40h-39.604z"/><path id="rect2298" fill="#FFF" stroke="#181717" d="M150.495 80h39.604v40h-39.604z"/><path id="rect2300" fill="#FFF" stroke="#181717" d="M190.099 80h39.604v40h-39.604z"/><path id="rect2302" fill="#FFF" stroke="#181717" d="M230.693 80h39.604v40h-39.604z"/><path id="rect2306" fill="#FFF" stroke="#181717" d="M270.297 80h39.604v40h-39.604z"/><path id="rect2308" fill="#FFF" stroke="#181717" d="M309.901 80h39.604v40h-39.604z"/><path id="rect2312" fill="#FFF" stroke="#181717" d="M350.495 80h39.604v40h-39.604z"/><path id="rect2314" fill="#FFF" stroke="#181717" d="M390.099 80h39.604v40h-39.604z"/><path id="rect2316" fill="#FFF" stroke="#181717" d="M430.693 80h39.604v40h-39.604z"/><path id="rect2318" fill="#FFF" stroke="#181717" d="M470.297 80h39.604v40h-39.604z"/><path id="rect2320" fill="#D1CFCD" stroke="#181717" d="M509.901 80H600v40h-90.099z"/><path id="rect2322" fill="#D1CFCD" stroke="#181717" d="M0 120h90.099v40H0z"/><path id="rect2324" fill="#FFF" stroke="#181717" d="M90.099 120h39.604v40H90.099z"/><path id="rect2326" fill="#FFF" stroke="#181717" d="M130.693 120h39.604v40h-39.604z"/><path id="rect2330" fill="#FFF" stroke="#181717" d="M170.297 120h39.604v40h-39.604z"/><path id="rect2334" fill="#FFF" stroke="#181717" d="M209.901 120h39.604v40h-39.604z"/><path id="rect2336" fill="#FFF" stroke="#181717" d="M250.495 120h39.604v40h-39.604z"/><path id="rect2338" fill="#FFF" stroke="#181717" d="M290.099 120h39.604v40h-39.604z"/><path id="rect2340" fill="#FFF" stroke="#181717" d="M330.693 120h39.604v40h-39.604z"/><path id="rect2342" fill="#FFF" stroke="#181717" d="M370.297 120h39.604v40h-39.604z"/><path id="rect2344" fill="#FFF" stroke="#181717" d="M409.901 120h39.604v40h-39.604z"/><path id="rect2346" fill="#FFF" stroke="#181717" d="M450.495 120h39.604v40h-39.604z"/><path id="rect2348" fill="#D1CFCD" stroke="#181717" d="M490.099 120H600v40H490.099z"/><path id="rect2350" fill="#D1CFCD" stroke="#181717" d="M0 160h60.396v40H0z"/><path id="rect2352" fill="#D1CFCD" stroke="#181717" d="M539.604 160H600v40h-60.396z"/><path id="rect2354" fill="#D1CFCD" stroke="#181717" d="M100 160h60.396v40H100z"/><path id="rect2360" fill="#D1CFCD" stroke="#181717" d="M400 160h60.396v40H400z"/><path id="rect2362" fill="#FFF" stroke="#181717" d="M160.396 160H400v40H160.396z"/><path id="rect2364" fill="#F6F3F1" stroke="#181717" d="M60.396 160H100v40H60.396z"/><path id="rect2366" fill="#F6F3F1" stroke="#181717" d="M460.396 160H500v40h-39.604z"/><path id="rect2368" fill="#F6F3F1" stroke="#181717" d="M500 160h39.604v40H500z"/><path id="text5091" fill="#181717" fill-rule="nonzero" d="M50.238 12.434l-.619-5.26V4h2.444v3.174l-.62 5.26h-1.205m-.587 3.254v-2.341h2.356v2.34h-2.356M50.238 36v-7.768h-2.713v-1.595h.174c.99 0 1.709-.153 2.158-.46.455-.307.722-.82.801-1.54h1.817V36h-2.237"/><path id="text5103" fill="#181717" fill-rule="nonzero" d="M15.842 9v1.75c-.559.376-1.088.653-1.587.832a4.387 4.387 0 01-1.466.262c-.248 0-.495-.021-.742-.063a5.413 5.413 0 01-.74-.183c-.13-.042-.32-.108-.573-.198-1.176-.396-2.07-.594-2.682-.594-.457 0-.935.1-1.434.301-.494.196-1.05.51-1.668.943V10.3a7.651 7.651 0 011.644-.848 4.307 4.307 0 011.474-.286c.628 0 1.41.154 2.344.46a.133.133 0 00.032.008c.097.031.245.082.443.15.833.29 1.477.436 1.934.436.456 0 .926-.098 1.41-.293.483-.196 1.02-.505 1.61-.927M8.037 23.069h2.078L11.701 26h-1.144l-2.521-2.931"/><path id="text5127" fill="#181717" fill-rule="nonzero" d="M90.732 13.574c-.291.443-.628.77-1.009.982-.381.206-.831.309-1.35.309-.837 0-1.475-.227-1.914-.681-.434-.454-.651-1.125-.651-2.012 0-1.261.368-2.32 1.104-3.175.74-.855 1.652-1.283 2.732-1.283.423 0 .791.087 1.104.261.312.174.569.433.77.776l.42-.776h1.415l-1.168 4.736a1.833 1.833 0 00-.055.324c0 .185.063.325.19.42.127.09.315.135.564.135.206 0 .42-.053.643-.159.228-.105.44-.253.636-.443.455-.422.8-.916 1.032-1.48a4.741 4.741 0 00.358-1.862c0-1.267-.493-2.307-1.478-3.12-.98-.818-2.245-1.227-3.796-1.227-.747 0-1.443.09-2.089.269-.64.18-1.223.446-1.747.8-.9.602-1.594 1.354-2.08 2.257a6.207 6.207 0 00-.723 2.97c0 1.62.548 2.916 1.644 3.887 1.096.966 2.56 1.45 4.391 1.45a8.25 8.25 0 002.51-.389 8.382 8.382 0 002.287-1.124l.652.926a9.152 9.152 0 01-2.582 1.37 8.79 8.79 0 01-2.835.46c-1.016 0-1.95-.13-2.803-.388a7.047 7.047 0 01-2.272-1.133c-.82-.638-1.435-1.375-1.842-2.21-.408-.833-.612-1.778-.612-2.834 0-.882.138-1.721.413-2.518a7.08 7.08 0 011.231-2.186 7.64 7.64 0 012.828-2.17c1.1-.49 2.327-.736 3.677-.736.894 0 1.734.121 2.517.364.79.238 1.475.576 2.057 1.014.715.554 1.247 1.188 1.597 1.9.354.708.532 1.508.532 2.4 0 .87-.175 1.676-.524 2.415a5.252 5.252 0 01-1.494 1.885 4.054 4.054 0 01-2.573.91c-.561 0-.985-.11-1.27-.332-.281-.222-.427-.55-.437-.982m.397-3.39c-.069-.427-.223-.752-.46-.973-.234-.227-.544-.34-.93-.34-.604 0-1.128.326-1.573.981-.444.655-.667 1.441-.667 2.36 0 .486.106.855.318 1.108.217.254.53.38.937.38.44 0 .84-.166 1.2-.498.365-.333.614-.766.746-1.299l.429-1.718M85.37 36c.01-1.014.228-1.871.651-2.574.424-.707 1.176-1.422 2.256-2.146.164-.11.402-.264.714-.459 1.43-.913 2.145-1.792 2.145-2.637 0-.501-.151-.897-.453-1.188-.302-.29-.715-.435-1.239-.435-.572 0-1.014.18-1.326.538-.307.354-.46.86-.46 1.52v.096H85.56c0-1.299.35-2.3 1.049-3.002s1.694-1.053 2.986-1.053c1.17 0 2.105.32 2.804.958.698.634 1.048 1.479 1.048 2.534 0 .755-.183 1.41-.548 1.964-.365.555-1.072 1.185-2.12 1.893-.223.153-.53.354-.922.602-.995.639-1.557 1.124-1.684 1.457h5.163V36H85.37"/><path id="text5139" fill="#181717" fill-rule="nonzero" d="M130.065 8.85l-.704 1.92h2.008l.688-1.92h-1.992m0-4.85h1.768l-1.168 3.267h1.936L133.785 4h1.769l-1.185 3.267h2.265l-.592 1.582h-2.24l-.673 1.905h2.32l-.568 1.575h-2.328l-1.184 3.274h-1.768l1.184-3.274h-1.952l-1.192 3.274h-1.76l1.168-3.274h-2.297l.609-1.575h2.256l.688-1.905h-2.392l.592-1.582h2.376L130.065 4m-3.552 28.245h2.2c.005.63.16 1.105.464 1.425.304.315.755.472 1.352.472.576 0 1.019-.147 1.328-.44.315-.3.472-.727.472-1.284 0-.556-.184-.976-.552-1.26-.363-.288-.904-.432-1.624-.432-.037 0-.096.002-.176.008-.075.005-.13.007-.168.007v-1.558h.248c.661 0 1.15-.126 1.464-.378.32-.257.48-.648.48-1.173 0-.436-.136-.78-.408-1.031-.267-.257-.632-.386-1.096-.386-.507 0-.899.147-1.176.44-.277.295-.416.712-.416 1.253v.094h-2.16c.026-1.155.37-2.039 1.032-2.653.667-.62 1.605-.929 2.816-.929 1.147 0 2.056.276 2.728.827.672.55 1.008 1.293 1.008 2.228 0 .493-.114.926-.344 1.298-.229.373-.573.68-1.032.921.587.252 1.03.601 1.328 1.047.304.441.456.969.456 1.583 0 1.128-.376 2.023-1.128 2.684-.752.661-1.778.992-3.08.992-1.285 0-2.278-.32-2.976-.96-.694-.646-1.04-1.562-1.04-2.748v-.047"/><path id="text5145" fill="#181717" fill-rule="nonzero" d="M169.832 14.64c.412-.056.727-.21.944-.458.216-.25.324-.581.324-.996 0-.368-.103-.671-.31-.91-.2-.244-.52-.433-.958-.568v2.933m-.899-5.32V6.675c-.392.052-.692.192-.898.42-.207.223-.31.524-.31.902 0 .316.096.58.287.793.196.213.503.39.921.53m0 8.517v-1.494c-1.137-.072-1.988-.412-2.552-1.019-.564-.606-.846-1.483-.846-2.629h2.024c.025.56.15 1.004.377 1.33.232.322.564.527.997.615v-3.22c-1.168-.306-1.998-.706-2.492-1.198-.493-.493-.74-1.167-.74-2.023 0-.949.292-1.714.876-2.294.59-.581 1.375-.884 2.356-.91V4h.899v.996c.981.051 1.746.357 2.295.917.549.555.85 1.338.906 2.35h-2.054c-.035-.483-.148-.85-.34-1.105-.186-.26-.455-.404-.807-.436v2.832c1.243.399 2.119.855 2.627 1.369.509.513.763 1.19.763 2.03 0 .99-.297 1.781-.891 2.372-.589.591-1.422.936-2.5 1.035v1.478h-.898m1.02 14.04v-4.769l-2.938 4.768h2.938M169.907 36v-2.403h-4.56v-1.96l3.986-6.457h2.68v6.643h1.254v1.774h-1.253V36h-2.107"/><path id="text5151" fill="#181717" fill-rule="nonzero" d="M213.66 12.728c0 .354.119.653.356.897.237.238.529.357.876.357.337 0 .627-.122.869-.365a1.23 1.23 0 00.363-.889c0-.339-.121-.627-.363-.865a1.166 1.166 0 00-.869-.365c-.347 0-.64.12-.876.357a1.173 1.173 0 00-.356.873m-1.713 0c0-.825.284-1.52.853-2.087.568-.566 1.266-.849 2.092-.849.81 0 1.5.289 2.07.865.573.571.86 1.262.86 2.071 0 .815-.287 1.513-.86 2.095a2.814 2.814 0 01-2.07.865c-.826 0-1.524-.286-2.092-.857-.569-.572-.853-1.273-.853-2.103m-4.588 2.96L214.103 4h1.27l-6.743 11.688h-1.271m-.695-8.728c0 .349.116.642.347.88.237.238.53.357.877.357.342 0 .632-.119.869-.357.242-.243.363-.537.363-.88 0-.339-.121-.627-.363-.865a1.166 1.166 0 00-.869-.365c-.347 0-.64.119-.877.357a1.187 1.187 0 00-.347.873m-1.714 0c0-.826.285-1.524.853-2.095.569-.577 1.264-.865 2.085-.865.81 0 1.5.29 2.069.873a2.85 2.85 0 01.86 2.087 2.85 2.85 0 01-.86 2.086 2.81 2.81 0 01-2.069.857c-.827 0-1.524-.283-2.093-.849-.563-.566-.845-1.264-.845-2.094m2.259 25.66h2.21c.038.497.204.883.498 1.158.295.27.69.405 1.185.405.61 0 1.076-.18 1.398-.54.326-.36.49-.875.49-1.547 0-.63-.167-1.124-.498-1.484-.332-.365-.79-.547-1.374-.547-.327 0-.614.066-.861.198a1.757 1.757 0 00-.632.587l-2.037-.119.734-6.093h6.5v1.92h-4.905l-.292 2.277c.248-.196.532-.341.853-.436.321-.1.68-.151 1.074-.151 1.127 0 2.035.344 2.724 1.031.695.688 1.043 1.59 1.043 2.706 0 1.222-.382 2.198-1.145 2.928-.764.725-1.788 1.087-3.072 1.087-1.169 0-2.1-.299-2.795-.897-.69-.603-1.056-1.43-1.098-2.483"/><path id="text5157" fill="#181717" fill-rule="nonzero" d="M248.477 4h2.056l3.922 4.418h-1.916l-3.026-2.922-3.042 2.922h-1.917L248.477 4m-.685 28.078c0 .646.166 1.158.498 1.536.337.378.794.567 1.37.567.538 0 .96-.184 1.264-.552.305-.367.457-.88.457-1.535 0-.604-.158-1.074-.473-1.41-.316-.336-.759-.504-1.33-.504-.56 0-.997.168-1.313.504-.315.336-.473.8-.473 1.394m-.032-2.946a2.55 2.55 0 01.962-.59 3.652 3.652 0 011.256-.205c1.142 0 2.055.336 2.74 1.008.69.672 1.036 1.567 1.036 2.686 0 1.186-.375 2.144-1.125 2.874S250.889 36 249.659 36c-1.418 0-2.497-.473-3.237-1.418-.734-.945-1.1-2.328-1.1-4.15 0-1.959.393-3.455 1.182-4.49.788-1.04 1.924-1.559 3.409-1.559 1.033 0 1.865.26 2.495.78.637.52.984 1.223 1.044 2.11h-2.365c-.054-.362-.201-.635-.44-.819-.24-.183-.574-.275-1.003-.275-.588 0-1.039.246-1.354.74-.316.488-.492 1.226-.53 2.213"/><path id="text5163" fill="#181717" fill-rule="nonzero" d="M288.584 10.586l-.571.436c-.23.17-.404.373-.519.611a1.815 1.815 0 00-.173.801c0 .45.146.828.436 1.135.29.307.654.46 1.09.46.321 0 .627-.069.917-.206.296-.143.57-.35.82-.619l-2-2.618m.602-2.5l.263-.198c.24-.175.418-.37.533-.587.116-.217.173-.466.173-.746 0-.27-.08-.484-.24-.643-.156-.158-.369-.238-.64-.238-.275 0-.493.082-.653.246-.16.159-.24.376-.24.65 0 .149.037.31.112.485.08.174.193.36.338.555l.354.476m-1.692 1.056l-.436-.603a3.832 3.832 0 01-.489-.89 2.72 2.72 0 01-.142-.88c0-.846.255-1.518.766-2.015.517-.503 1.216-.754 2.098-.754.847 0 1.516.23 2.007.69.491.46.737 1.082.737 1.865 0 .592-.145 1.124-.436 1.595-.286.465-.737.904-1.353 1.317l1.586 2.063c.15-.26.268-.55.353-.873a5.97 5.97 0 00.188-1.079h1.955a7.196 7.196 0 01-.406 1.912 6 6 0 01-.887 1.61l2.015 2.588h-2.557l-.751-.976a4.672 4.672 0 01-1.459.976 4.299 4.299 0 01-1.654.325c-1.022 0-1.86-.32-2.51-.96-.647-.64-.97-1.457-.97-2.452 0-.74.18-1.378.54-1.912.362-.534.963-1.05 1.805-1.547M289.742 36h-2.248c.08-1.55.434-3.087 1.06-4.61.632-1.523 1.531-3.02 2.699-4.49h-5.293v-1.937h7.631v1.706c-1.183 1.375-2.092 2.83-2.729 4.364-.631 1.534-1.005 3.19-1.12 4.967"/><path id="text5169" fill="#181717" fill-rule="nonzero" d="M328.705 8.587l-1.353 1.948-1.308-.935 1.477-1.893-2.153-.612.5-1.595 2.068.754V4h1.523v2.254l2.068-.738.516 1.594-2.154.597 1.462 1.878-1.339.982-1.307-1.98m-1.722 23.823c0 .55.148.974.446 1.273.302.298.733.448 1.292.448.533 0 .95-.152 1.253-.456.308-.304.461-.725.461-1.265 0-.518-.156-.934-.469-1.248-.312-.315-.728-.472-1.245-.472-.518 0-.939.16-1.262.48-.317.319-.476.732-.476 1.24m.176-4.822c0 .434.134.77.4 1.005.267.23.649.346 1.146.346.497 0 .88-.118 1.146-.354.272-.235.408-.568.408-.997 0-.42-.139-.75-.416-.99-.277-.24-.656-.361-1.138-.361-.471 0-.848.123-1.13.369-.277.246-.416.573-.416.982m-.792 2.183c-.461-.262-.794-.568-1-.919-.204-.35-.307-.798-.307-1.343 0-.963.323-1.72.969-2.27.646-.55 1.538-.825 2.676-.825 1.149 0 2.046.275 2.692.825.65.545.976 1.301.976 2.27 0 .518-.11.969-.33 1.351-.22.377-.551.68-.992.911.538.257.943.613 1.215 1.068.271.45.407 1 .407 1.65 0 1.094-.353 1.953-1.061 2.576-.702.623-1.671.935-2.907.935-1.25 0-2.222-.309-2.914-.927-.692-.618-1.039-1.48-1.039-2.584 0-.644.129-1.183.385-1.618.261-.44.672-.807 1.23-1.1"/><path id="text5175" fill="#181717" fill-rule="nonzero" d="M372.099 4a14.885 14.885 0 00-1.566 3.611 14.3 14.3 0 00-.512 3.855c0 1.34.17 2.622.512 3.847a14.884 14.884 0 001.566 3.611h-1.612c-.891-1.25-1.568-2.507-2.032-3.768-.458-1.267-.687-2.497-.687-3.69s.229-2.423.687-3.69c.464-1.266 1.14-2.525 2.032-3.776h1.612m-1.169 24.33c0-.644-.158-1.152-.474-1.523-.31-.377-.735-.566-1.275-.566-.51 0-.907.181-1.192.542-.28.361-.42.866-.42 1.515 0 .607.148 1.081.443 1.421.296.34.71.51 1.245.51.525 0 .935-.167 1.23-.502.295-.335.443-.8.443-1.397m.038 2.928a2.45 2.45 0 01-.901.589c-.346.13-.736.196-1.169.196-1.074 0-1.935-.332-2.581-.997-.647-.665-.97-1.554-.97-2.67 0-1.182.35-2.137 1.054-2.865.702-.727 1.63-1.091 2.78-1.091 1.334 0 2.347.474 3.04 1.421.698.942 1.046 2.319 1.046 4.13 0 1.947-.371 3.438-1.115 4.475-.743 1.036-1.813 1.554-3.208 1.554-.962 0-1.739-.256-2.33-.77-.59-.518-.914-1.221-.97-2.111l2.208.008c.05.36.188.63.412.808.224.178.54.267.947.267.55 0 .97-.246 1.26-.738.291-.492.456-1.227.497-2.206"/><path id="text5181" fill="#181717" fill-rule="nonzero" d="M406.175 4h1.63c.888 1.247 1.561 2.504 2.02 3.772.46 1.263.69 2.497.69 3.701 0 1.2-.23 2.434-.69 3.702-.459 1.268-1.132 2.522-2.02 3.764h-1.63a14.864 14.864 0 001.576-3.623c.347-1.23.52-2.512.52-3.843 0-1.335-.173-2.616-.52-3.842A15.002 15.002 0 00406.175 4m1.048 26.224c0 1.367.133 2.36.398 2.978.27.619.7.928 1.286.928.587 0 1.015-.312 1.286-.936.27-.623.405-1.613.405-2.97 0-1.362-.135-2.352-.405-2.97-.27-.619-.7-.928-1.286-.928-.587 0-1.015.31-1.286.927-.265.613-.398 1.604-.398 2.971m-2.273 0c0-1.933.327-3.38.98-4.338.658-.964 1.65-1.446 2.977-1.446 1.321 0 2.311.485 2.97 1.454.663.964.994 2.412.994 4.346 0 1.933-.329 3.376-.987 4.33-.653.953-1.645 1.43-2.977 1.43-1.326 0-2.319-.48-2.977-1.438-.653-.959-.98-2.405-.98-4.338"/><path id="text5187" fill="#181717" fill-rule="nonzero" d="M444.554 18h7.921v1.634h-7.92V18m1.786 15v-2.194h4.347V33h-4.347"/><path id="text5201" fill="#181717" fill-rule="nonzero" d="M488.853 6h1.502v3.952h3.704v1.543h-3.704v3.967h-1.502v-3.967h-3.704V9.952h3.704V6m-3.704 25.458h8.91V33h-8.91v-1.542m0-3.333h8.91v1.543h-8.91v-1.543"/><path id="text5427" fill="#181717" fill-rule="nonzero" d="M7.278 63.794v-6.402H4.95V56h6.253v1.392H8.892v6.402H7.278m8.037-.715c-.195.3-.45.53-.767.688a2.472 2.472 0 01-1.102.233c-.561 0-.995-.159-1.3-.476-.302-.318-.453-.77-.453-1.355 0-.543.151-.957.453-1.243.305-.286.808-.482 1.507-.587.16-.025.37-.053.629-.085.657-.085.985-.273.985-.566 0-.233-.073-.399-.218-.498-.146-.102-.389-.153-.73-.153-.312 0-.552.062-.719.185a.619.619 0 00-.25.53v.084H11.9v-.106c0-.589.21-1.051.629-1.386.419-.339.997-.508 1.736-.508.81 0 1.43.14 1.859.418.433.279.65.68.65 1.206v3.27c0 .24.024.42.074.54a.52.52 0 00.25.264v.26h-1.613a1.337 1.337 0 01-.123-.328 1.884 1.884 0 01-.048-.387m-.026-2.116c-.253.116-.544.21-.874.28-.327.07-.495.108-.506.111-.273.078-.465.175-.575.292-.107.116-.16.276-.16.481 0 .212.07.38.208.508.138.123.325.185.559.185.419 0 .747-.116.985-.35.242-.235.363-.556.363-.962v-.545M18.165 56h1.507v2.757c.192-.3.431-.526.719-.678.291-.155.621-.232.99-.232.7 0 1.272.287 1.716.862.443.571.665 1.316.665 2.233 0 .91-.222 1.645-.665 2.206-.444.561-1.023.841-1.737.841-.373 0-.697-.077-.974-.232-.274-.156-.522-.403-.746-.741v.778h-1.475V56m4.058 4.878c0-.529-.112-.943-.335-1.243a1.082 1.082 0 00-.922-.455c-.412 0-.731.148-.959.444-.223.293-.335.711-.335 1.254 0 .586.106 1.03.32 1.334.216.303.53.455.942.455.42 0 .739-.152.959-.455.22-.307.33-.752.33-1.334"/><path id="text5207" fill="#181717" fill-rule="nonzero" d="M526.261 29.323h1.868c.44 0 .762-.08.963-.241.201-.16.302-.414.302-.76 0-.36-.1-.618-.297-.775-.198-.16-.524-.241-.978-.241h-1.858v2.017m0-3.337h1.8c.39 0 .674-.066.854-.2.18-.135.27-.348.27-.638 0-.283-.088-.487-.265-.613-.173-.13-.463-.194-.869-.194h-1.79v1.645m-1.509 4.73V23h3.611c.784 0 1.381.168 1.79.503.413.332.62.815.62 1.45 0 .392-.077.719-.23.98a1.51 1.51 0 01-.686.608c.395.16.69.393.884.697.198.3.297.676.297 1.126 0 .75-.243 1.33-.729 1.74-.485.408-1.174.612-2.065.612h-3.492m10.625-.707c-.19.297-.44.524-.75.68-.308.155-.667.231-1.076.231-.548 0-.971-.157-1.27-.471-.295-.314-.442-.761-.442-1.341 0-.538.147-.948.442-1.231.299-.283.79-.477 1.473-.582.156-.024.36-.052.614-.083.641-.084.962-.271.962-.56 0-.231-.07-.395-.213-.493-.142-.102-.38-.152-.713-.152-.305 0-.54.06-.702.183-.163.122-.245.297-.245.524v.084h-1.415v-.105c0-.583.205-1.04.614-1.372.41-.336.975-.503 1.696-.503.791 0 1.396.138 1.816.414.423.275.635.674.635 1.194v3.237c0 .238.024.416.073.534.048.116.13.203.244.262v.257h-1.576a1.334 1.334 0 01-.12-.325 1.89 1.89 0 01-.047-.382m-.026-2.095c-.246.115-.53.207-.853.277-.32.07-.484.107-.494.11-.268.077-.455.173-.562.288-.104.116-.156.274-.156.477 0 .21.067.377.202.503.136.122.318.183.547.183.41 0 .73-.115.962-.346.236-.233.354-.551.354-.953v-.54m6.197.655h1.493c-.062.723-.324 1.294-.785 1.713-.462.42-1.055.629-1.78.629-.822 0-1.467-.269-1.935-.807-.465-.541-.698-1.288-.698-2.242 0-.95.238-1.694.713-2.231.479-.542 1.136-.812 1.972-.812.732 0 1.318.195 1.759.586.444.392.692.936.744 1.635h-1.504c-.041-.304-.147-.536-.317-.697-.17-.16-.394-.24-.671-.24-.375 0-.656.148-.843.444-.184.297-.276.742-.276 1.336 0 .548.095.971.286 1.268a.94.94 0 00.833.44c.28 0 .506-.086.676-.257.17-.171.281-.426.333-.765m2.482 2.148V23h1.472v4.05l1.8-2.028h1.822l-1.972 2.111 2.091 3.583h-1.815l-1.353-2.425-.573.623v1.802h-1.472m5.562-1.854h1.509c.014.29.118.506.312.65.194.139.486.209.874.209.295 0 .522-.05.682-.147a.475.475 0 00.244-.424c0-.259-.301-.452-.905-.582a13.134 13.134 0 01-.588-.136c-.735-.188-1.247-.412-1.535-.67-.284-.259-.427-.608-.427-1.048 0-.583.209-1.044.625-1.383.42-.342.987-.513 1.701-.513.756 0 1.35.17 1.78.508.433.339.664.815.692 1.43h-1.473a.706.706 0 00-.276-.56c-.17-.133-.407-.2-.712-.2-.288 0-.503.044-.646.131a.434.434 0 00-.208.393c0 .227.377.428 1.13.603.173.038.31.07.41.094.753.178 1.267.393 1.54.644.278.252.417.606.417 1.064 0 .646-.227 1.138-.682 1.477-.45.339-1.108.508-1.972.508-.78 0-1.39-.176-1.831-.53-.44-.352-.661-.837-.661-1.455v-.063m10.14-.959c0-.573-.107-1.01-.322-1.31-.215-.303-.527-.455-.936-.455-.403 0-.71.15-.921.45-.208.3-.312.739-.312 1.315 0 .538.109.953.327 1.247.222.293.534.44.937.44.381 0 .681-.15.9-.45.219-.301.328-.713.328-1.237M555.768 33v-7.978h1.441v.77c.219-.335.462-.58.729-.733.27-.154.588-.23.952-.23.697 0 1.262.277 1.696.832.434.552.65 1.278.65 2.18 0 .91-.216 1.651-.65 2.22-.434.566-.992.849-1.675.849-.361 0-.684-.077-.968-.23a1.927 1.927 0 01-.702-.671V33h-1.473m9.745-2.991c-.19.297-.44.524-.749.68-.309.155-.668.231-1.077.231-.548 0-.971-.157-1.27-.471-.294-.314-.442-.761-.442-1.341 0-.538.148-.948.443-1.231.298-.283.789-.477 1.472-.582.156-.024.36-.052.614-.083.642-.084.963-.271.963-.56 0-.231-.072-.395-.214-.493-.142-.102-.38-.152-.713-.152-.305 0-.539.06-.702.183-.163.122-.245.297-.245.524v.084h-1.415v-.105c0-.583.205-1.04.614-1.372.41-.336.975-.503 1.696-.503.791 0 1.397.138 1.816.414.423.275.635.674.635 1.194v3.237c0 .238.024.416.073.534.048.116.13.203.244.262v.257h-1.576a1.334 1.334 0 01-.12-.325 1.89 1.89 0 01-.047-.382m-.026-2.095c-.246.115-.53.207-.853.277-.319.07-.484.107-.494.11-.267.077-.455.173-.562.288-.104.116-.156.274-.156.477 0 .21.067.377.203.503.135.122.317.183.546.183.41 0 .73-.115.963-.346.235-.233.353-.551.353-.953v-.54m6.197.655h1.494c-.063.723-.325 1.294-.786 1.713-.461.42-1.055.629-1.78.629-.822 0-1.467-.269-1.935-.807-.465-.541-.697-1.288-.697-2.242 0-.95.237-1.694.712-2.231.48-.542 1.136-.812 1.972-.812.732 0 1.319.195 1.76.586.443.392.691.936.743 1.635h-1.504c-.041-.304-.147-.536-.317-.697-.17-.16-.394-.24-.671-.24-.375 0-.656.148-.843.444-.184.297-.276.742-.276 1.336 0 .548.096.971.286 1.268a.94.94 0 00.833.44c.28 0 .506-.086.676-.257.17-.171.281-.426.333-.765m5.937.42h1.509c-.153.6-.461 1.072-.926 1.414-.462.339-1.025.508-1.691.508-.819 0-1.468-.276-1.946-.828-.479-.555-.718-1.306-.718-2.252 0-.933.236-1.668.707-2.206.472-.537 1.117-.806 1.936-.806.867 0 1.537.265 2.008.796.472.527.708 1.28.708 2.258a4.312 4.312 0 01-.016.398h-3.777c.02.447.128.784.322 1.01.198.228.48.341.849.341.26 0 .473-.05.64-.152.166-.104.298-.265.395-.482m-2.206-1.718h2.227c-.014-.384-.116-.675-.307-.875-.188-.202-.458-.303-.812-.303-.33 0-.59.1-.78.303-.188.203-.297.495-.328.875"/><path id="path5439" stroke="#181717" stroke-width="3" d="M560.396 11.5h-28.713"/><path id="path5441" fill="#181717" d="M534.653 17V7l-9.9 5z"/><g id="g5459" transform="translate(29.703 50)"><path id="path5453" stroke="#181717" stroke-width="3" d="M25.401 5.5H6.611"/><path id="path5455" fill="#181717" d="M10.556 10.656V.344L.66 5.5z"/><path id="path5457" stroke="#181717" stroke-width="3" d="M.66.344v10.312"/></g><g id="g5464" transform="rotate(180 27.723 35.5)"><path id="path5466" stroke="#181717" stroke-width="3" d="M25.401 5.5H6.611"/><path id="path5468" fill="#181717" d="M10.556 10.656V.344L.66 5.5z"/><path id="path5470" stroke="#181717" stroke-width="3" d="M.66.344v10.312"/></g><path id="text5474" fill="#181717" fill-rule="nonzero" d="M71.131 54.066l-1.178-1.225 1.254-1.386 1.208 1.257c.161-.322.285-.69.37-1.104.086-.414.129-.865.129-1.354 0-1.305-.275-2.318-.824-3.038-.548-.726-1.316-1.088-2.303-1.088-.977 0-1.737.36-2.281 1.08-.544.72-.816 1.735-.816 3.046 0 1.306.272 2.321.816 3.047.544.72 1.304 1.08 2.28 1.08.253 0 .49-.027.71-.08a2.74 2.74 0 00.635-.235m1.609 1.62a4.191 4.191 0 01-1.322.613 6.03 6.03 0 01-1.631.21c-1.662 0-2.983-.565-3.965-1.693-.977-1.128-1.466-2.649-1.466-4.562 0-1.918.489-3.439 1.466-4.562.982-1.128 2.303-1.692 3.965-1.692 1.661 0 2.983.564 3.965 1.692.987 1.129 1.48 2.65 1.48 4.562a8.3 8.3 0 01-.302 2.305 5.583 5.583 0 01-.89 1.822l1.208 1.233L74.008 57l-1.268-1.314"/><path id="text5482" fill="#181717" fill-rule="nonzero" d="M106.308 56l-3.338-12h2.483l1.993 8.464L109.131 44h2.554l1.684 8.464L115.362 44h2.46l-3.33 12h-2.285l-1.803-9.19-1.811 9.19h-2.285"/><path id="text5492" fill="#181717" fill-rule="nonzero" d="M145.545 56V44h8.62v2.086h-6.21v2.558h5.678v2.053h-5.677v3.087h6.5V56h-8.911"/><path id="text5500" fill="#181717" fill-rule="nonzero" d="M187.62 49.246h2.903c.63 0 1.093-.127 1.387-.382.299-.256.448-.658.448-1.206 0-.522-.144-.915-.432-1.181-.288-.272-.718-.408-1.289-.408h-3.017v3.177M185.149 56V44h5.823c1.31 0 2.28.28 2.911.84.63.559.946 1.414.946 2.565 0 .734-.155 1.344-.465 1.833a2.307 2.307 0 01-1.32 1.002c.521.185.89.467 1.108.848.223.38.351.972.384 1.776l.049 1.417v.049c.016.717.17 1.151.465 1.303V56h-2.708a2.362 2.362 0 01-.204-.62 6.444 6.444 0 01-.082-.887l-.032-1.263c-.027-.744-.169-1.246-.424-1.507-.25-.26-.704-.391-1.362-.391h-2.618V56h-2.471"/><path id="text5504" fill="#181717" fill-rule="nonzero" d="M229.06 56v-9.857h-3.317V44h8.91v2.143h-3.294V56h-2.3"/><path id="text5518" fill="#181717" fill-rule="nonzero" d="M271.618 56h-2.268v-4.473L265.347 44h2.776l2.357 5.173L272.658 44h2.59l-3.63 7.527V56"/><path id="text5522" fill="#181717" fill-rule="nonzero" d="M305.94 44h2.311v7.304c0 .902.172 1.56.514 1.977.342.41.886.616 1.631.616.755 0 1.304-.205 1.646-.616.348-.411.521-1.07.521-1.977V44h2.288v7.565c0 1.428-.382 2.525-1.147 3.289-.76.764-1.858 1.146-3.293 1.146-1.445 0-2.552-.38-3.323-1.138-.765-.765-1.147-1.863-1.147-3.297V44"/><path id="text5526" fill="#181717" fill-rule="nonzero" d="M349.505 56V44h1.98v12h-1.98"/><path id="text5530" fill="#181717" fill-rule="nonzero" d="M386.495 50c0 1.253.273 2.227.817 2.923.545.69 1.306 1.036 2.284 1.036.989 0 1.758-.346 2.307-1.036.55-.696.825-1.67.825-2.923 0-1.253-.275-2.224-.825-2.915-.55-.696-1.318-1.044-2.307-1.044-.978 0-1.74.346-2.284 1.036-.544.691-.817 1.665-.817 2.923m-2.337 0c0-1.84.49-3.299 1.468-4.376.983-1.083 2.306-1.624 3.97-1.624 1.664 0 2.988.541 3.971 1.624.988 1.082 1.483 2.541 1.483 4.376 0 1.835-.495 3.294-1.483 4.376-.983 1.083-2.307 1.624-3.97 1.624-1.665 0-2.988-.541-3.971-1.624-.978-1.082-1.468-2.54-1.468-4.376"/><path id="text5534" fill="#181717" fill-rule="nonzero" d="M428.156 49.556h2.319c.628 0 1.084-.136 1.37-.407.284-.277.426-.72.426-1.328 0-.57-.14-1.002-.419-1.296-.28-.293-.696-.44-1.25-.44h-2.446v3.471m-.016 2.175V56h-2.397V44h5.183c1.224 0 2.15.329 2.778.986.633.651.95 1.61.95 2.876 0 1.238-.31 2.194-.926 2.867-.618.668-1.499 1.002-2.644 1.002h-2.944"/><path id="text5546" fill="#181717" fill-rule="nonzero" d="M473.267 43.016v1.634c-.049 0-.117-.002-.205-.008a3.648 3.648 0 00-.18-.007c-.552 0-.926.101-1.122.305-.192.198-.287.62-.287 1.267v1.877c0 .771-.123 1.319-.369 1.642-.246.324-.688.556-1.327.696.639.141 1.081.37 1.327.689.246.318.369.863.369 1.634v1.885c0 .642.095 1.061.287 1.26.19.198.565.297 1.122.297.033 0 .093-.003.18-.008.088-.005.156-.008.205-.008v1.635c-.076 0-.183.002-.32.007a8.326 8.326 0 01-1.672-.086 3.288 3.288 0 01-.933-.289 1.51 1.51 0 01-.664-.72c-.125-.297-.188-.816-.188-1.556v-1.97c0-.715-.14-1.221-.418-1.518-.279-.303-.748-.454-1.41-.454-.032 0-.087.003-.163.008a2.764 2.764 0 01-.172.008V49.6c.038 0 .095.003.172.008.076.005.13.008.164.008.655 0 1.122-.151 1.4-.454.285-.302.427-.813.427-1.533v-1.955c0-.746.063-1.27.188-1.572a1.51 1.51 0 01.664-.72c.257-.13.568-.227.934-.29a8.326 8.326 0 011.672-.085c.136.005.243.008.32.008m-4.302 20.053h4.137v1.666h-1.925v11.6h1.925V78h-4.137V63.07"/><path id="text5554" fill="#181717" fill-rule="nonzero" d="M506.93 43h.558c.6 0 1.084.031 1.45.094.366.063.672.162.918.297.311.167.53.407.655.72.132.308.197.824.197 1.55v1.971c0 .715.14 1.224.418 1.526.279.297.748.446 1.41.446.032 0 .087-.003.163-.008.077-.005.134-.008.172-.008v1.636h-.303c-.683 0-1.163.146-1.442.438-.279.292-.418.798-.418 1.518v1.972c0 .746-.065 1.27-.197 1.573a1.393 1.393 0 01-.655.704c-.257.13-.568.227-.934.29a8.322 8.322 0 01-1.672.085 8.903 8.903 0 00-.32-.007V56.16c.05 0 .118.003.206.008.087.005.147.008.18.008.552 0 .923-.102 1.114-.305.197-.199.295-.616.295-1.252v-1.87c0-.783.123-1.333.369-1.651.246-.324.688-.553 1.327-.689-.639-.14-1.081-.373-1.327-.696-.246-.324-.369-.872-.369-1.644v-1.893c0-.637-.098-1.054-.295-1.252-.191-.204-.562-.305-1.114-.305-.033 0-.093.002-.18.008a3.64 3.64 0 01-.205.007V43m4.375 20.063V78h-4.146v-1.667h1.934V64.73h-1.934v-1.666h4.146"/><path id="text5564" fill="#181717" fill-rule="nonzero" d="M549.198 42h1.611v16.137h-1.61V42m2.205 34l-3.88-13.403h1.057L552.475 76h-1.071"/><g id="g5770" fill="#181717" fill-rule="nonzero" font-family="OpenSans-Regular, Open Sans" font-size="13" font-weight="normal" transform="translate(2.97 83)"><g id="text5570" transform="translate(0 .166)"><text id="tspan5572"><tspan x=".102" y="14.34">Caps Lock</tspan></text></g></g><path id="text5641" fill="#181717" fill-rule="nonzero" d="M79.684 86.403l-1.582 5.108h3.17l-1.588-5.108M78.319 84h2.713l4.117 12h-2.466l-.775-2.468h-4.426L76.73 96h-2.473l4.062-12"/><path id="text5645" fill="#181717" fill-rule="nonzero" d="M115.842 92.17h2.224c.084.623.33 1.086.736 1.39.407.298.994.448 1.763.448.654 0 1.148-.121 1.48-.363.332-.242.498-.6.498-1.074 0-.69-.954-1.26-2.863-1.714a6.949 6.949 0 01-.298-.07c-1.021-.231-1.75-.491-2.187-.78a2.488 2.488 0 01-.885-1.034c-.203-.438-.305-.952-.305-1.544 0-1.107.362-1.954 1.086-2.541.724-.592 1.77-.888 3.14-.888 1.278 0 2.278.314 2.997.942.724.628 1.105 1.514 1.145 2.656h-2.164c-.04-.55-.243-.97-.61-1.258-.367-.289-.89-.433-1.57-.433-.59 0-1.046.121-1.368.363-.318.237-.476.577-.476 1.02 0 .602.622 1.052 1.867 1.35l.788.194c.798.211 1.364.376 1.696.494.337.119.63.25.878.394.446.257.78.6 1.004 1.027.223.422.334.93.334 1.521 0 1.184-.384 2.103-1.152 2.757-.769.649-1.853.973-3.25.973-1.38 0-2.46-.332-3.244-.996-.783-.664-1.205-1.609-1.264-2.834"/><path id="text5649" fill="#181717" fill-rule="nonzero" d="M157.8 93.833h1.926c1.115 0 1.921-.299 2.418-.896.502-.603.753-1.578.753-2.925 0-1.341-.232-2.327-.698-2.957-.465-.63-1.191-.945-2.18-.945h-2.22v7.723M155.447 96V84h4.574c1.791 0 3.125.497 4.003 1.49.882.995 1.324 2.502 1.324 4.522 0 1.097-.164 2.064-.492 2.9-.322.837-.793 1.51-1.411 2.02-.465.381-.994.655-1.585.824-.592.163-1.422.244-2.49.244h-3.923"/><path id="text5653" fill="#181717" fill-rule="nonzero" d="M196.04 96V84h7.92v2.086h-5.617v2.72h4.924v2.086h-4.924V96h-2.303"/><path id="text5657" fill="#181717" fill-rule="nonzero" d="M243.628 94.338c-.436.572-.934.992-1.493 1.26-.554.268-1.206.402-1.956.402-1.645 0-2.978-.552-4-1.655-1.017-1.108-1.526-2.561-1.526-4.36 0-1.815.509-3.266 1.526-4.354 1.016-1.087 2.371-1.631 4.064-1.631 1.474 0 2.677.343 3.609 1.028.931.68 1.485 1.619 1.66 2.815h-2.467c-.149-.593-.455-1.044-.918-1.353-.458-.31-1.057-.464-1.796-.464-.985 0-1.76.35-2.324 1.051-.559.696-.838 1.66-.838 2.892 0 1.237.292 2.206.878 2.907.585.701 1.39 1.052 2.411 1.052.767 0 1.408-.22 1.925-.657.516-.439.835-1.039.958-1.802h-2.667v-1.948h4.87v6.162h-1.62l-.296-1.345"/><path id="text5661" fill="#181717" fill-rule="nonzero" d="M275.248 96V84h2.479v4.473h4.942V84h2.48v12h-2.48v-5.32h-4.942V96h-2.48"/><path id="text5665" fill="#181717" fill-rule="nonzero" d="M316.832 91.324h2.155v1.41c0 .407.113.72.339.936.225.211.55.317.971.317.461 0 .782-.13.964-.389.181-.259.272-.745.272-1.458V84h2.23v8.251c0 .74-.042 1.284-.126 1.633-.078.343-.21.647-.397.911-.284.391-.674.69-1.17.896-.495.206-1.076.309-1.744.309-.613 0-1.155-.09-1.626-.27a2.949 2.949 0 01-1.177-.8 2.594 2.594 0 01-.537-.951c-.103-.354-.154-.935-.154-1.744v-.911"/><path id="text5669" fill="#181717" fill-rule="nonzero" d="M355.446 96V84h2.29v4.929L362.08 84h2.865l-4.444 4.855L365.347 96h-2.797l-3.628-5.49-1.186 1.27V96h-2.29"/><path id="text5673" fill="#181717" fill-rule="nonzero" d="M396.04 96V84h2.348v9.784h5.572V96h-7.92"/><path id="text5679" fill="#181717" fill-rule="nonzero" d="M96.04 136v-2.086l6.105-7.739h-5.983V124h8.788v2.086l-6.12 7.747h5.983V136H96.04"/><path id="text5683" fill="#181717" fill-rule="nonzero" d="M134.653 136l3.521-6.126-3.52-5.874h2.661l2.289 4.196 2.274-4.196h2.676l-3.52 5.857 3.52 6.143h-2.661l-2.289-4.155-2.289 4.155h-2.662"/><path id="text5687" fill="#181717" fill-rule="nonzero" d="M185.149 131.77c-.092 1.294-.616 2.323-1.573 3.086-.95.763-2.193 1.144-3.727 1.144-1.767 0-3.142-.526-4.125-1.577-.978-1.052-1.467-2.526-1.467-4.423 0-1.938.5-3.423 1.5-4.454.999-1.03 2.436-1.546 4.31-1.546 1.524 0 2.726.356 3.607 1.067.886.706 1.372 1.706 1.458 3h-2.423c-.102-.644-.378-1.134-.826-1.47-.449-.34-1.054-.51-1.815-.51-1.08 0-1.902.333-2.464.998s-.843 1.637-.843 2.915c0 1.237.279 2.193.835 2.869.562.675 1.359 1.012 2.39 1.012.746 0 1.357-.18 1.832-.54.475-.367.783-.89.924-1.57h2.407"/><path id="text5691" fill="#181717" fill-rule="nonzero" d="M218.72 136l-3.869-12h2.56l2.383 8.978 2.43-8.978h2.528l-3.823 12h-2.209"/><path id="text5695" fill="#181717" fill-rule="nonzero" d="M257.822 133.833h2.943c.694 0 1.2-.125 1.516-.375.317-.25.476-.643.476-1.181 0-.56-.156-.961-.468-1.206-.311-.25-.825-.374-1.54-.374h-2.927v3.136m0-5.19h2.836c.612 0 1.06-.103 1.344-.309.285-.212.427-.543.427-.994 0-.44-.14-.758-.418-.953-.274-.201-.73-.301-1.37-.301h-2.819v2.558M255.446 136v-12h5.688c1.235 0 2.174.26 2.82.782.65.516.975 1.268.975 2.257 0 .608-.12 1.116-.361 1.523-.24.407-.601.722-1.082.945.623.25 1.087.611 1.393 1.084.312.467.468 1.05.468 1.751 0 1.168-.383 2.07-1.148 2.705-.765.635-1.85.953-3.254.953h-5.5"/><path id="text5699" fill="#181717" fill-rule="nonzero" d="M295.05 136v-12h2.585l4.877 8.244V124h2.438v12h-2.552l-4.91-8.244V136h-2.438"/><path id="text5703" fill="#181717" fill-rule="nonzero" d="M333.663 136v-12h3.597l2.352 9.132 2.32-9.132h3.613v12h-2.28v-9.678l-2.4 9.678h-2.49l-2.432-9.678V136h-2.28"/><path id="text5725" fill="#181717" fill-rule="nonzero" d="M438.614 89.363V87h1.98v2.363h-1.98m0 5.974v-2.348h1.98v2.348h-1.98m.013 13.99v-2.362h1.967v2.363h-1.967m0 8.672v-.912c.366-.125.636-.318.81-.578.175-.26.262-.597.262-1.013v-.195h-1.085v-2.348h1.98v2.254c0 .78-.166 1.404-.497 1.872-.33.473-.82.78-1.47.92"/><path id="text5731" fill="#181717" fill-rule="nonzero" d="M480.71 85h1.468v4.301h-1.468V85m-2.492 0h1.468v4.301h-1.468V85m1.254 19.699h1.468V109h-1.468v-4.301"/><path id="text5737" fill="#181717" fill-rule="nonzero" d="M514.851 93.804V86h5.524v1.356h-3.979v1.664h3.638v1.335h-3.638v2.008h4.165v1.441h-5.71m6.775 0v-5.759h1.472v.683c.21-.279.458-.487.744-.625.286-.141.605-.212.956-.212.62 0 1.084.166 1.39.498.31.329.465.825.465 1.49v3.925h-1.503v-3.48c0-.414-.07-.709-.207-.886-.134-.176-.355-.264-.662-.264-.354 0-.635.109-.842.328-.206.215-.31.51-.31.885v3.417h-1.503m8.82.042l-.496.016c-.19.01-.31.016-.362.016-.575 0-.97-.11-1.183-.328-.21-.223-.315-.66-.315-1.309v-3.115h-.744v-1.081h.744v-1.573h1.488v1.573h.868v1.08h-.868v3.19c0 .152.032.253.098.302.065.046.2.07.403.07h.367v1.16m4.335-1.791h1.499c-.152.607-.459 1.084-.92 1.43-.458.343-1.018.514-1.68.514-.813 0-1.457-.279-1.932-.837-.475-.562-.713-1.321-.713-2.278 0-.943.234-1.687.703-2.23.468-.545 1.109-.817 1.922-.817.861 0 1.526.269 1.994.806.469.533.703 1.294.703 2.283a4.44 4.44 0 01-.015.403h-3.752c.02.452.128.793.32 1.022.197.23.478.345.843.345.258 0 .47-.052.635-.154.166-.106.297-.268.393-.487m-2.19-1.738h2.21c-.013-.389-.115-.684-.304-.885-.186-.205-.455-.307-.806-.307-.327 0-.586.102-.775.307-.186.205-.295.5-.326.885m4.764 3.486v-5.759h1.395v.985c.197-.395.426-.685.688-.868.261-.188.573-.281.935-.281.058 0 .103.002.134.005.035 0 .062.002.083.005l.005 1.563h-.501c-.41 0-.718.11-.925.329-.207.219-.31.544-.31.975v3.046h-1.504"/><path id="path5745" fill="#181717" d="M524.752 115v-10l-9.9 5z"/><path id="path5747" stroke="#181717" stroke-width="3" d="M539.604 100v10h-19.802"/><g id="g5790" transform="translate(6.901 120)"><text id="tspan5755" fill="#181717" fill-rule="nonzero" font-family="OpenSans-Regular, Open Sans" font-size="16" font-weight="normal"><tspan x=".208" y="17.237">Shift</tspan></text><path id="path5757" stroke="#181717" stroke-width="2" d="M8.16 19.535l-7.494 10h4.996v5h4.996v-5h4.996z"/></g><g id="g5795" transform="translate(495.05 127)"><g id="text5797" fill="#181717" fill-rule="nonzero" font-family="OpenSans-Regular, Open Sans" font-size="16" font-weight="normal" transform="translate(30.402)"><text id="tspan5799"><tspan x=".537" y="17.955">Shift</tspan></text></g><path id="path5801" stroke="#181717" stroke-width="2" d="M7.55 10.628L0 20.58h5.033v4.976h5.034V20.58H15.1z"/></g><path id="text5803" fill="#181717" fill-rule="nonzero" d="M384.158 126v1.71l-6.755 2.848 6.755 2.841v1.71l-8.91-3.786v-1.553l8.91-3.77m-5.605 32v-.913c.424-.125.736-.318.938-.578.202-.26.303-.598.303-1.014v-.195h-1.24v-2.35h2.291v2.256c0 .775-.194 1.4-.582 1.873-.384.474-.953.78-1.71.921"/><path id="text5813" fill="#181717" fill-rule="nonzero" d="M415.842 127l8.91 3.731v1.538l-8.91 3.746v-1.692l6.77-2.812-6.77-2.82V127m3.305 29v-2.325h2.277V156h-2.277"/><path id="text5819" fill="#181717" fill-rule="nonzero" d="M459.343 132.387c0-.056-.002-.131-.008-.224a4.45 4.45 0 01-.008-.217c0-.454.05-.831.151-1.13.101-.305.263-.59.485-.853.17-.196.421-.42.755-.673.339-.253.559-.437.66-.55.211-.233.357-.442.436-.628.08-.185.12-.39.12-.611 0-.49-.141-.873-.422-1.147-.28-.273-.672-.41-1.176-.41-.503 0-.9.165-1.191.496-.286.325-.442.784-.469 1.378h-2.24v-.24c0-1.09.352-1.957 1.056-2.602.71-.65 1.663-.976 2.86-.976 1.224 0 2.196.307 2.916.922.726.609 1.088 1.427 1.088 2.455 0 .361-.042.686-.127.976-.08.283-.204.544-.373.782-.217.3-.554.624-1.009.976-.45.345-.723.56-.818.642a1.828 1.828 0 00-.437.604 2.04 2.04 0 00-.12.891 1.8 1.8 0 01.008.14h-2.137m-.11 3.314v-2.269h2.343v2.27h-2.344M457.897 157l3.941-13.174h1.088L458.97 157h-1.073"/><path id="text5827" fill="#181717" fill-rule="nonzero" d="M11.801 181.18c-.057.863-.387 1.549-.988 2.057-.599.509-1.38.763-2.345.763-1.112 0-1.976-.35-2.595-1.052-.615-.7-.923-1.683-.923-2.948 0-1.292.315-2.282.944-2.97.628-.686 1.532-1.03 2.711-1.03.959 0 1.715.237 2.269.711.557.471.863 1.138.917 2h-1.524c-.064-.43-.238-.756-.52-.979-.282-.227-.663-.34-1.142-.34-.68 0-1.196.221-1.55.665-.353.443-.53 1.09-.53 1.943 0 .825.176 1.462.526 1.912.353.45.854.676 1.503.676.47 0 .853-.12 1.152-.361.3-.244.493-.593.581-1.047h1.514m3.569 2.65c-.136.003-.3.008-.49.015-.187.01-.306.016-.357.016-.567 0-.956-.107-1.167-.32-.207-.216-.31-.64-.31-1.273v-3.03h-.735v-1.052h.734v-1.531h1.468v1.53h.857v1.052h-.857v3.103c0 .148.033.246.097.294.065.045.197.067.398.067h.362v1.129m.861-.041v-5.603h1.376v.958c.194-.385.42-.666.678-.845a1.56 1.56 0 01.923-.273c.058 0 .102.001.133.005.033 0 .06.002.081.005l.005 1.52h-.494c-.405 0-.709.107-.913.32-.204.213-.306.53-.306.949v2.964h-1.483m4.068 0v-7.593h1.483v7.593H20.3"/><path id="text5831" fill="#181717" fill-rule="nonzero" d="M108.714 177.587l-1.097 3.373h2.2l-1.103-3.373m-.946-1.587h1.882l2.855 7.925h-1.71l-.538-1.63h-3.07l-.521 1.63h-1.716l2.818-7.925m5.468 7.925V176h1.565v7.925h-1.565m5.576.043a49.21 49.21 0 00-.516.016c-.197.01-.323.016-.377.016-.598 0-1.009-.111-1.231-.334-.219-.226-.328-.668-.328-1.328v-3.164h-.774v-1.097h.774v-1.598h1.549v1.598h.903v1.097h-.903v3.239c0 .154.034.256.102.307.068.046.208.07.42.07h.38v1.178"/><path id="text5835" fill="#181717" fill-rule="nonzero" d="M408.714 177.587l-1.097 3.373h2.2l-1.103-3.373m-.946-1.587h1.882l2.855 7.925h-1.71l-.538-1.63h-3.07l-.521 1.63h-1.716l2.818-7.925m5.468 7.925V176h1.565v7.925h-1.565m5.576.043a49.21 49.21 0 00-.516.016c-.197.01-.323.016-.377.016-.598 0-1.009-.111-1.231-.334-.219-.226-.328-.668-.328-1.328v-3.164h-.774v-1.097h.774v-1.598h1.549v1.598h.903v1.097h-.903v3.239c0 .154.034.256.102.307.068.046.208.07.42.07h.38v1.178"/><path id="text5839" fill="#181717" fill-rule="nonzero" d="M552.395 181.18c-.057.863-.387 1.549-.988 2.057-.599.509-1.38.763-2.345.763-1.111 0-1.976-.35-2.595-1.052-.615-.7-.922-1.683-.922-2.948 0-1.292.314-2.282.943-2.97.628-.686 1.532-1.03 2.711-1.03.959 0 1.715.237 2.269.711.557.471.863 1.138.917 2h-1.524c-.064-.43-.238-.756-.52-.979-.282-.227-.662-.34-1.142-.34-.68 0-1.196.221-1.55.665-.353.443-.53 1.09-.53 1.943 0 .825.176 1.462.526 1.912.353.45.854.676 1.503.676.47 0 .853-.12 1.152-.361.3-.244.493-.593.582-1.047h1.513m3.569 2.65c-.136.003-.3.008-.49.015-.187.01-.306.016-.356.016-.568 0-.957-.107-1.168-.32-.207-.216-.31-.64-.31-1.273v-3.03h-.735v-1.052h.734v-1.531h1.468v1.53h.857v1.052h-.857v3.103c0 .148.033.246.097.294.065.045.197.067.398.067h.362v1.129m.861-.041v-5.603h1.376v.958c.194-.385.42-.666.678-.845a1.56 1.56 0 01.923-.273c.058 0 .102.001.133.005.034 0 .06.002.081.005l.005 1.52h-.494c-.405 0-.709.107-.913.32-.204.213-.306.53-.306.949v2.964h-1.483m4.068 0v-7.593h1.483v7.593h-1.483"/><path id="text5872" fill="#181717" fill-rule="nonzero" d="M72.458 176.567L70.297 169h1.608l1.29 5.338 1.09-5.338h1.655l1.09 5.338L78.32 169h1.593l-2.156 7.567h-1.48l-1.167-5.795-1.172 5.795h-1.48m8.228-6.206V169h1.49v1.361h-1.49m0 6.206v-5.584h1.49v5.584h-1.49m2.816 0v-5.584h1.46v.663c.208-.27.453-.473.737-.606.283-.137.599-.206.947-.206.614 0 1.074.161 1.377.483.308.318.461.8.461 1.444v3.806h-1.49v-3.375c0-.4-.068-.687-.205-.858-.133-.171-.351-.257-.655-.257-.352 0-.63.106-.835.319-.204.209-.307.495-.307.858v3.313h-1.49m-12.55 13.152v-7.567h1.552v3.108l2.944-3.108h1.94l-3.01 3.062 3.282 4.505h-1.895l-2.457-3.463-.804.802v2.661h-1.552m10.676-1.695h1.485c-.15.589-.454 1.051-.911 1.387-.454.332-1.009.498-1.664.498-.806 0-1.444-.27-1.915-.812-.471-.544-.707-1.28-.707-2.209 0-.914.232-1.635.696-2.163.465-.527 1.1-.79 1.905-.79.853 0 1.512.26 1.977.78.464.517.696 1.255.696 2.214a4.215 4.215 0 01-.015.39h-3.718c.02.44.126.77.318.992.194.223.472.334.834.334.256 0 .466-.05.63-.149.164-.102.294-.26.39-.472m-2.172-1.685h2.192c-.014-.377-.115-.663-.302-.858-.185-.199-.451-.298-.8-.298-.323 0-.58.099-.767.298-.185.198-.292.484-.323.858m4.941 5.62v-1.207a1.976 1.976 0 00.348.02c.294 0 .514-.07.661-.21.147-.137.22-.345.22-.622a.799.799 0 00-.03-.154l-2.008-5.651h1.639l1.172 4.027 1.142-4.027h1.567l-2.289 6.586c-.17.493-.384.829-.64 1.007-.256.181-.64.272-1.152.272-.092 0-.191-.003-.297-.01a6.338 6.338 0 01-.333-.031"/><path id="text5878" fill="#181717" fill-rule="nonzero" d="M472.458 176.567L470.297 169h1.608l1.29 5.338 1.09-5.338h1.655l1.09 5.338 1.29-5.338h1.593l-2.156 7.567h-1.48l-1.167-5.795-1.172 5.795h-1.48m8.228-6.206V169h1.49v1.361h-1.49m0 6.206v-5.584h1.49v5.584h-1.49m2.816 0v-5.584h1.46v.663c.208-.27.453-.473.737-.606.283-.137.599-.206.947-.206.614 0 1.074.161 1.377.483.308.318.461.8.461 1.444v3.806h-1.49v-3.375c0-.4-.068-.687-.205-.858-.133-.171-.351-.257-.655-.257-.352 0-.63.106-.835.319-.204.209-.307.495-.307.858v3.313h-1.49m-12.55 13.152v-7.567h1.552v3.108l2.944-3.108h1.94l-3.01 3.062 3.282 4.505h-1.895l-2.457-3.463-.804.802v2.661h-1.552m10.676-1.695h1.485c-.15.589-.454 1.051-.911 1.387-.454.332-1.009.498-1.664.498-.806 0-1.444-.27-1.915-.812-.471-.544-.707-1.28-.707-2.209 0-.914.232-1.635.696-2.163.465-.527 1.1-.79 1.905-.79.853 0 1.512.26 1.977.78.464.517.696 1.255.696 2.214a4.215 4.215 0 01-.015.39h-3.718c.02.44.126.77.318.992.194.223.472.334.834.334.256 0 .466-.05.63-.149.164-.102.294-.26.39-.472m-2.172-1.685h2.192c-.014-.377-.115-.663-.302-.858-.185-.199-.451-.298-.8-.298-.323 0-.58.099-.767.298-.185.198-.292.484-.323.858m4.941 5.62v-1.207a1.976 1.976 0 00.348.02c.294 0 .514-.07.661-.21.147-.137.22-.345.22-.622a.8.8 0 00-.03-.154l-2.008-5.651h1.639l1.172 4.027 1.142-4.027h1.567l-2.289 6.586c-.17.493-.384.829-.64 1.007-.256.181-.64.272-1.152.272-.092 0-.191-.003-.297-.01a6.338 6.338 0 01-.333-.031"/><path id="text5884" fill="#181717" fill-rule="nonzero" d="M506.93 183.804V176h2.338l1.529 5.94 1.507-5.94h2.348v7.804h-1.482v-6.294l-1.56 6.294h-1.617l-1.58-6.294v6.294h-1.482m12.693-1.748h1.513c-.153.607-.463 1.084-.929 1.43-.462.343-1.027.514-1.695.514-.821 0-1.471-.279-1.951-.837-.48-.562-.72-1.321-.72-2.278 0-.943.236-1.687.71-2.23.472-.545 1.12-.817 1.94-.817.87 0 1.54.269 2.014.806.473.533.71 1.294.71 2.283a4.4 4.4 0 01-.016.403h-3.788c.02.452.129.793.323 1.022.199.23.482.345.85.345.262 0 .476-.052.643-.154.166-.106.299-.268.396-.487m-2.212-1.738h2.233c-.014-.389-.117-.684-.308-.885-.188-.205-.459-.307-.814-.307-.33 0-.591.102-.782.307-.188.205-.298.5-.33.885m4.811 3.486v-5.759h1.487v.683a2.05 2.05 0 01.751-.625c.289-.141.61-.212.965-.212.627 0 1.094.166 1.404.498.313.329.47.825.47 1.49v3.925h-1.519v-3.48c0-.414-.07-.709-.208-.886-.136-.176-.359-.264-.668-.264-.358 0-.642.109-.85.328-.21.215-.314.51-.314.885v3.417h-1.518m11.441-5.759v5.759h-1.487v-.683c-.215.279-.467.489-.756.63a2.191 2.191 0 01-.965.207c-.623 0-1.09-.166-1.404-.498-.31-.332-.464-.829-.464-1.49v-3.925h1.518v3.48c0 .41.068.704.204.88.135.173.36.26.673.26.355 0 .636-.108.845-.323.212-.22.318-.516.318-.89v-3.407h1.518"/><circle id="Oval" cx="109.168" cy="139" r="26" stroke="#C06334" stroke-width="5"/></g></g></svg> \ No newline at end of file diff --git a/2-ui/3-event-details/8-onscroll/1-endless-page/solution.md b/2-ui/3-event-details/8-onscroll/1-endless-page/solution.md index f1f4bd85b..54c101193 100644 --- a/2-ui/3-event-details/8-onscroll/1-endless-page/solution.md +++ b/2-ui/3-event-details/8-onscroll/1-endless-page/solution.md @@ -8,12 +8,12 @@ Let's use window-relative coordinates. The document is represented (and contained) within `<html>` tag, that is `document.documentElement`. -We can get window-relative coordinates of the whole document as `document.documentElement.getBoundingClientRect()`. And the `bottom` property will be window-relative coordinate of the document end. +We can get window-relative coordinates of the whole document as `document.documentElement.getBoundingClientRect()`, the `bottom` property will be window-relative coordinate of the document bottom. -For instance, if the height of the whole HTML document is 2000px, then: +For instance, if the height of the whole HTML document is `2000px`, then: ```js -// When we're on the top of the page +// when we're on the top of the page // window-relative top = 0 document.documentElement.getBoundingClientRect().top = 0 @@ -41,11 +41,11 @@ document.documentElement.getBoundingClientRect().top = -1400 document.documentElement.getBoundingClientRect().bottom = 600 ``` -Please note that the bottom can't be 0, because it never reaches the window top. The lowest limit of the bottom coordinate is the window height, we can't scroll it any more up. +Please note that the `bottom` can't be `0`, because it never reaches the window top. The lowest limit of the `bottom` coordinate is the window height (we assumed it to be `600`), we can't scroll it any more up. -And the window height is `document.documentElement.clientHeight`. +We can obtain the window height as `document.documentElement.clientHeight`. -We want the document bottom be no more than `100px` away from it. +For our task, we need to know when the document bottom is not no more than `100px` away from it (that is: `600-700px`, if the height is `600`). So here's the function: @@ -55,11 +55,10 @@ function populate() { // document bottom let windowRelativeBottom = document.documentElement.getBoundingClientRect().bottom; - // if it's greater than window height + 100px, then we're not at the page back - // (see examples above, big bottom means we need to scroll more) + // if the user hasn't scrolled far enough (>100px to the end) if (windowRelativeBottom > document.documentElement.clientHeight + 100) break; - - // otherwise let's add more data + + // let's add more data document.body.insertAdjacentHTML("beforeend", `<p>Date: ${new Date()}</p>`); } } diff --git a/2-ui/3-event-details/8-onscroll/2-updown-button/task.md b/2-ui/3-event-details/8-onscroll/2-updown-button/task.md index 1f648740f..c9f0f6225 100644 --- a/2-ui/3-event-details/8-onscroll/2-updown-button/task.md +++ b/2-ui/3-event-details/8-onscroll/2-updown-button/task.md @@ -11,6 +11,6 @@ It should work like this: - When the page is scrolled down more than the window height -- there appears an "upwards" arrow in the left-top corner. If the page is scrolled back, it disappears. - When the arrow is clicked, the page scrolls to the top. -Like this: +Like this (top-left corner, scroll to see): [iframe border="1" height="200" link src="solution"] diff --git a/2-ui/3-event-details/8-onscroll/3-load-visible-img/solution.md b/2-ui/3-event-details/8-onscroll/3-load-visible-img/solution.md index b07f6820b..1649251b9 100644 --- a/2-ui/3-event-details/8-onscroll/3-load-visible-img/solution.md +++ b/2-ui/3-event-details/8-onscroll/3-load-visible-img/solution.md @@ -1,8 +1,10 @@ The `onscroll` handler should check which images are visible and show them. -We also may want to run it when the page loads, to detect immediately visible images prior to any scrolling and load them. +We also want to run it when the page loads, to detect immediately visible images and load them. -If we put it at the `<body>` bottom, then it runs when the page content is loaded. +The code should execute when the document is loaded, so that it has access to its content. + +Or put it at the `<body>` bottom: ```js // ...the page content is above... @@ -13,12 +15,30 @@ function isVisible(elem) { let windowHeight = document.documentElement.clientHeight; - // top elem edge is visible OR bottom elem edge is visible + // top elem edge is visible? let topVisible = coords.top > 0 && coords.top < windowHeight; + + // bottom elem edge is visible? let bottomVisible = coords.bottom < windowHeight && coords.bottom > 0; return topVisible || bottomVisible; } +``` + +The `showVisible()` function uses the visibility check, implemented by `isVisible()`, to load visible images: + +```js +function showVisible() { + for (let img of document.querySelectorAll('img')) { + let realSrc = img.dataset.src; + if (!realSrc) continue; + + if (isVisible(img)) { + img.src = realSrc; + img.dataset.src = ''; + } + } +} *!* showVisible(); @@ -26,6 +46,4 @@ window.onscroll = showVisible; */!* ``` -For visible images we can take `img.dataset.src` and assign it to `img.src` (if not did it yet). - -P.S. The solution also has a variant of `isVisible` that "pre-loads" images that are within 1 page above/below (the page height is `document.documentElement.clientHeight`). +P.S. The solution also has a variant of `isVisible` that "preloads" images that are within 1 page above/below the current document scroll. diff --git a/2-ui/3-event-details/8-onscroll/3-load-visible-img/source.view/index.html b/2-ui/3-event-details/8-onscroll/3-load-visible-img/source.view/index.html index 5c6027a6f..9953ace66 100644 --- a/2-ui/3-event-details/8-onscroll/3-load-visible-img/source.view/index.html +++ b/2-ui/3-event-details/8-onscroll/3-load-visible-img/source.view/index.html @@ -169,38 +169,8 @@ <h1>Neptune</h1> * It's enough that the top or bottom edge of the element are visible */ function isVisible(elem) { - - let coords = elem.getBoundingClientRect(); - - let windowHeight = document.documentElement.clientHeight; - - // top elem edge is visible OR bottom elem edge is visible - let topVisible = coords.top > 0 && coords.top < windowHeight; - let bottomVisible = coords.bottom < windowHeight && coords.bottom > 0; - - return topVisible || bottomVisible; - } - - /** - A variant of the test that considers the element visible if it's no more than - one page after/behind the current screen. - - function isVisible(elem) { - - let coords = elem.getBoundingClientRect(); - - let windowHeight = document.documentElement.clientHeight; - - let extendedTop = -windowHeight; - let extendedBottom = 2 * windowHeight; - - // top visible || bottom visible - let topVisible = coords.top > extendedTop && coords.top < extendedBottom; - let bottomVisible = coords.bottom < extendedBottom && coords.bottom > extendedTop; - - return topVisible || bottomVisible; + // todo: your code } - */ function showVisible() { for (let img of document.querySelectorAll('img')) { diff --git a/2-ui/3-event-details/8-onscroll/article.md b/2-ui/3-event-details/8-onscroll/article.md index 1eb134f9a..734bd84c6 100644 --- a/2-ui/3-event-details/8-onscroll/article.md +++ b/2-ui/3-event-details/8-onscroll/article.md @@ -1,6 +1,6 @@ # Scrolling -Scroll events allow to react on a page or element scrolling. There are quite a few good things we can do here. +The `scroll` event allows reacting to a page or element scrolling. There are quite a few good things we can do here. For instance: - Show/hide additional controls or information depending on where in the document the user is. @@ -10,7 +10,7 @@ Here's a small function to show the current scroll: ```js autorun window.addEventListener('scroll', function() { - document.getElementById('showScroll').innerHTML = pageYOffset + 'px'; + document.getElementById('showScroll').innerHTML = window.pageYOffset + 'px'; }); ``` @@ -24,14 +24,14 @@ The `scroll` event works both on the `window` and on scrollable elements. ## Prevent scrolling -How do we make something unscrollable? We can't prevent scrolling by using `event.preventDefault()` in `onscroll` listener, because it triggers *after* the scroll has already happened. +How do we make something unscrollable? -But we can prevent scrolling by `event.preventDefault()` on an event that causes the scroll. +We can't prevent scrolling by using `event.preventDefault()` in `onscroll` listener, because it triggers *after* the scroll has already happened. -For instance: -- `wheel` event -- a mouse wheel roll (a "scrolling" touchpad action generates it too). -- `keydown` event for `key:pageUp` and `key:pageDown`. +But we can prevent scrolling by `event.preventDefault()` on an event that causes the scroll, for instance `keydown` event for `key:pageUp` and `key:pageDown`. + +If we add an event handler to these events and `event.preventDefault()` in it, then the scroll won't start. -Sometimes that may help. But there are more ways to scroll, so it's quite hard to handle all of them. So it's more reliable to use CSS to make something unscrollable, like `overflow` property. +There are many ways to initiate a scroll, so it's more reliable to use CSS, `overflow` property. -Here are few tasks that you can solve or look through to see the applications on `onscroll`. +Here are few tasks that you can solve or look through to see applications of `onscroll`. diff --git a/2-ui/4-forms-controls/1-form-elements/1-add-select-option/task.md b/2-ui/4-forms-controls/1-form-elements/1-add-select-option/task.md index 9b218aa7f..a0e74da57 100644 --- a/2-ui/4-forms-controls/1-form-elements/1-add-select-option/task.md +++ b/2-ui/4-forms-controls/1-form-elements/1-add-select-option/task.md @@ -18,3 +18,5 @@ Use JavaScript to: 1. Show the value and the text of the selected option. 2. Add an option: `<option value="classic">Classic</option>`. 3. Make it selected. + +Note, if you've done everything right, your alert should show `blues`. diff --git a/2-ui/4-forms-controls/1-form-elements/article.md b/2-ui/4-forms-controls/1-form-elements/article.md index 5a95d5147..7bc87a0f0 100644 --- a/2-ui/4-forms-controls/1-form-elements/article.md +++ b/2-ui/4-forms-controls/1-form-elements/article.md @@ -2,17 +2,17 @@ Forms and control elements, such as `<input>` have a lot of special properties and events. -Working with forms can be much more convenient if we know them. +Working with forms will be much more convenient when we learn them. ## Navigation: form and elements Document forms are members of the special collection `document.forms`. -That's a *named* collection: we can use both the name and the number to get the form. +That's a so-called *"named collection"*: it's both named and ordered. We can use both the name or the number in the document to get the form. ```js no-beautify -document.forms.my - the form with name="my" -document.forms[0] - the first form in the document +document.forms.my; // the form with name="my" +document.forms[0]; // the first form in the document ``` When we have a form, then any element is available in the named collection `form.elements`. @@ -36,9 +36,9 @@ For instance: </script> ``` -There may be multiple elements with the same name, that's often the case with radio buttons. +There may be multiple elements with the same name. This is typical with radio buttons and checkboxes. -In that case `form.elements[name]` is a collection, for instance: +In that case, `form.elements[name]` is a *collection*. For instance: ```html run height=40 <form> @@ -51,15 +51,17 @@ let form = document.forms[0]; let ageElems = form.elements.age; -alert(ageElems[0].value); // 10, the first input value +*!* +alert(ageElems[0]); // [object HTMLInputElement] +*/!* </script> ``` -These navigation properties do not depend on the tag structure. All elements, no matter how deep they are in the form, are available in `form.elements`. +These navigation properties do not depend on the tag structure. All control elements, no matter how deep they are in the form, are available in `form.elements`. ````smart header="Fieldsets as \"subforms\"" -A form may have one or many `<fieldset>` elements inside it. They also support the `elements` property. +A form may have one or many `<fieldset>` elements inside it. They also have `elements` property that lists form controls inside them. For instance: @@ -79,7 +81,7 @@ For instance: let fieldset = form.elements.userFields; alert(fieldset); // HTMLFieldSetElement - // we can get the input both from the form and from the fieldset + // we can get the input by name both from the form and from the fieldset alert(fieldset.elements.login == form.elements.login); // true */!* </script> @@ -90,7 +92,7 @@ For instance: ````warn header="Shorter notation: `form.name`" There's a shorter notation: we can access the element as `form[index/name]`. -Instead of `form.elements.login` we can write `form.login`. +In other words, instead of `form.elements.login` we can write `form.login`. That also works, but there's a minor issue: if we access an element, and then change its `name`, then it is still available under the old name (as well as under the new one). @@ -111,20 +113,19 @@ That's easy to see in an example: alert(form.elements.username); // input *!* - // the direct access now can use both names: the new one and the old one + // form allows both names: the new one and the old one alert(form.username == form.login); // true */!* </script> ``` -That's usually not a problem, because we rarely change names of form elements. +That's usually not a problem, however, because we rarely change names of form elements. ```` ## Backreference: element.form -For any element, the form is available as `element.form`. So a form references all elements, and elements -reference the form. +For any element, the form is available as `element.form`. So a form references all elements, and elements reference the form. Here's the picture: @@ -150,11 +151,11 @@ For instance: ## Form elements -Let's talk about form controls, pay attention to their specific features. +Let's talk about form controls. ### input and textarea -Normally, we can access the value as `input.value` or `input.checked` for checkboxes. +We can access their value as `input.value` (string) or `input.checked` (boolean) for checkboxes and radio buttons. Like this: @@ -166,26 +167,26 @@ input.checked = true; // for a checkbox or radio button ``` ```warn header="Use `textarea.value`, not `textarea.innerHTML`" -Please note that we should never use `textarea.innerHTML`: it stores only the HTML that was initially on the page, not the current value. +Please note that even though `<textarea>...</textarea>` holds its value as nested HTML, we should never use `textarea.innerHTML` to access it. + +It stores only the HTML that was initially on the page, not the current value. ``` ### select and option A `<select>` element has 3 important properties: -1. `select.options` -- the collection of `<option>` elements, -2. `select.value` -- the value of the chosen option, -3. `select.selectedIndex` -- the number of the selected option. - -So we have three ways to set the value of a `<select>`: +1. `select.options` -- the collection of `<option>` subelements, +2. `select.value` -- the *value* of the currently selected `<option>`, +3. `select.selectedIndex` -- the *number* of the currently selected `<option>`. -1. Find the needed `<option>` and set `option.selected` to `true`. -2. Set `select.value` to the value. -3. Set `select.selectedIndex` to the number of the option. +They provide three different ways of setting a value for a `<select>`: -The first way is the most obvious, but `(2)` and `(3)` are usually more convenient. +1. Find the corresponding `<option>` element (e.g. among `select.options`) and set its `option.selected` to `true`. +2. If we know a new value: set `select.value` to the new value. +3. If we know the new option number: set `select.selectedIndex` to that number. -Here is an example: +Here is an example of all three methods: ```html run <select id="select"> @@ -196,15 +197,18 @@ Here is an example: <script> // all three lines do the same thing - select.options[2].selected = true; + select.options[2].selected = true; select.selectedIndex = 2; select.value = 'banana'; + // please note: options start from zero, so index 2 means the 3rd option. </script> ``` -Unlike most other controls, `<select multiple>` allows multiple choice. In that case we need to walk over `select.options` to get all selected values. +Unlike most other controls, `<select>` allows to select multiple options at once if it has `multiple` attribute. This attribute is rarely used, though. -Like this: +For multiple selected values, use the first way of setting values: add/remove the `selected` property from `<option>` subelements. + +Here's an example of how to get selected values from a multi-select: ```html run <select id="select" *!*multiple*/!*> @@ -223,48 +227,54 @@ Like this: </script> ``` -The full specification of the `<select>` element is available at <https://html.spec.whatwg.org/multipage/forms.html#the-select-element>. +The full specification of the `<select>` element is available in the specification <https://html.spec.whatwg.org/multipage/forms.html#the-select-element>. ### new Option -In the specification of [the option element](https://html.spec.whatwg.org/multipage/forms.html#the-option-element) there's a nice short syntax to create `<option>` elements: +In the [specification](https://html.spec.whatwg.org/multipage/forms.html#the-option-element) there's a nice short syntax to create an `<option>` element: ```js option = new Option(text, value, defaultSelected, selected); ``` -Parameters: +This syntax is optional. We can use `document.createElement('option')` and set attributes manually. Still, it may be shorter, so here are the parameters: - `text` -- the text inside the option, - `value` -- the option value, -- `defaultSelected` -- if `true`, then `selected` attribute is created, +- `defaultSelected` -- if `true`, then `selected` HTML-attribute is created, - `selected` -- if `true`, then the option is selected. -For instance: +The difference between `defaultSelected` and `selected` is that `defaultSelected` sets the HTML-attribute (that we can get using `option.getAttribute('selected')`), while `selected` sets whether the option is selected or not. + +In practice, one should usually set _both_ values to `true` or `false`. (Or, simply omit them; both default to `false`.) + +For instance, here's a new "unselected" option: ```js let option = new Option("Text", "value"); // creates <option value="value">Text</option> ``` -The same element selected: +The same option, but selected: ```js let option = new Option("Text", "value", true, true); ``` -```smart header="Additional properties of `<option>`" -Option elements have additional properties: +Option elements have properties: -`selected` +`option.selected` : Is the option selected. -`index` +`option.index` : The number of the option among the others in its `<select>`. -`text` +`option.text` : Text content of the option (seen by the visitor). -``` + +## References + +- Specification: <https://html.spec.whatwg.org/multipage/forms.html>. ## Summary @@ -279,8 +289,10 @@ Form navigation: `element.form` : Elements reference their form in the `form` property. -Value is available as `input.value`, `textarea.value`, `select.value` etc, or `input.checked` for checkboxes and radio buttons. +Value is available as `input.value`, `textarea.value`, `select.value`, etc. (For checkboxes and radio buttons, use `input.checked` to determine whether a value is selected.) + +For `<select>`, one can also get the value by the index `select.selectedIndex` or through the options collection `select.options`. -For `<select>` we can also get the value by the index `select.selectedIndex` or through the options collection `select.options`. The full specification of this and other elements is at <https://html.spec.whatwg.org/multipage/forms.html>. +These are the basics to start working with forms. We'll meet many examples further in the tutorial. -These are the basics to start working with forms. In the next chapter we'll cover `focus` and `blur` events that may occur on any element, but are mostly handled on forms. +In the next chapter we'll cover `focus` and `blur` events that may occur on any element, but are mostly handled on forms. diff --git a/2-ui/4-forms-controls/2-focus-blur/3-editable-div/solution.view/my.css b/2-ui/4-forms-controls/2-focus-blur/3-editable-div/solution.view/my.css index 67905e6d6..bf3d4ff6a 100644 --- a/2-ui/4-forms-controls/2-focus-blur/3-editable-div/solution.view/my.css +++ b/2-ui/4-forms-controls/2-focus-blur/3-editable-div/solution.view/my.css @@ -20,6 +20,6 @@ } .edit:focus { - outline: none; /* remove focus border in Safari */ + outline: none; } diff --git a/2-ui/4-forms-controls/2-focus-blur/3-editable-div/source.view/my.css b/2-ui/4-forms-controls/2-focus-blur/3-editable-div/source.view/my.css index 67905e6d6..bf3d4ff6a 100644 --- a/2-ui/4-forms-controls/2-focus-blur/3-editable-div/source.view/my.css +++ b/2-ui/4-forms-controls/2-focus-blur/3-editable-div/source.view/my.css @@ -20,6 +20,6 @@ } .edit:focus { - outline: none; /* remove focus border in Safari */ + outline: none; } diff --git a/2-ui/4-forms-controls/2-focus-blur/4-edit-td-click/solution.view/my.css b/2-ui/4-forms-controls/2-focus-blur/4-edit-td-click/solution.view/my.css index d7f2a4424..8d0c3b4ec 100644 --- a/2-ui/4-forms-controls/2-focus-blur/4-edit-td-click/solution.view/my.css +++ b/2-ui/4-forms-controls/2-focus-blur/4-edit-td-click/solution.view/my.css @@ -3,14 +3,15 @@ margin: 0; padding: 0; display: block; - resize: none; + /* remove resizing handle in Firefox */ + resize: none; - outline: none; /* remove outline on focus in Chrome */ + outline: none; - overflow: auto; /* remove scrollbar in IE */ + overflow: auto; } .edit-controls { diff --git a/2-ui/4-forms-controls/2-focus-blur/4-edit-td-click/task.md b/2-ui/4-forms-controls/2-focus-blur/4-edit-td-click/task.md index 2cccea020..378bd1f54 100644 --- a/2-ui/4-forms-controls/2-focus-blur/4-edit-td-click/task.md +++ b/2-ui/4-forms-controls/2-focus-blur/4-edit-td-click/task.md @@ -6,7 +6,7 @@ importance: 5 Make table cells editable on click. -- On click -- the cell should became "editable" (textarea appears inside), we can change HTML. There should be no resize, all geometry should remain the same. +- On click -- the cell should become "editable" (textarea appears inside), we can change HTML. There should be no resize, all geometry should remain the same. - Buttons OK and CANCEL appear below the cell to finish/cancel the editing. - Only one cell may be editable at a moment. While a `<td>` is in "edit mode", clicks on other cells are ignored. - The table may have many cells. Use event delegation. diff --git a/2-ui/4-forms-controls/2-focus-blur/5-keyboard-mouse/solution.md b/2-ui/4-forms-controls/2-focus-blur/5-keyboard-mouse/solution.md index 2c5c73cd3..4d1682176 100644 --- a/2-ui/4-forms-controls/2-focus-blur/5-keyboard-mouse/solution.md +++ b/2-ui/4-forms-controls/2-focus-blur/5-keyboard-mouse/solution.md @@ -1,5 +1,5 @@ -We can use `mouse.onclick` to handle the click and make the mouse "moveable" with `position:fixed`, then then `mouse.onkeydown` to handle arrow keys. +We can use `mouse.onclick` to handle the click and make the mouse "moveable" with `position:fixed`, then `mouse.onkeydown` to handle arrow keys. The only pitfall is that `keydown` only triggers on elements with focus. So we need to add `tabindex` to the element. As we're forbidden to change HTML, we can use `mouse.tabIndex` property for that. diff --git a/2-ui/4-forms-controls/2-focus-blur/5-keyboard-mouse/task.md b/2-ui/4-forms-controls/2-focus-blur/5-keyboard-mouse/task.md index fc48c21ff..644d814d9 100644 --- a/2-ui/4-forms-controls/2-focus-blur/5-keyboard-mouse/task.md +++ b/2-ui/4-forms-controls/2-focus-blur/5-keyboard-mouse/task.md @@ -9,4 +9,5 @@ Focus on the mouse. Then use arrow keys to move it: [demo src="solution"] P.S. Don't put event handlers anywhere except the `#mouse` element. + P.P.S. Don't modify HTML/CSS, the approach should be generic and work with any element. diff --git a/2-ui/4-forms-controls/2-focus-blur/article.md b/2-ui/4-forms-controls/2-focus-blur/article.md index 1a880ce47..c253dc11d 100644 --- a/2-ui/4-forms-controls/2-focus-blur/article.md +++ b/2-ui/4-forms-controls/2-focus-blur/article.md @@ -1,14 +1,14 @@ # Focusing: focus/blur -An element receives a focus when the user either clicks on it or uses the `key:Tab` key on the keyboard. There's also an `autofocus` HTML attribute that puts the focus into an element by default when a page loads and other means of getting a focus. +An element receives the focus when the user either clicks on it or uses the `key:Tab` key on the keyboard. There's also an `autofocus` HTML attribute that puts the focus onto an element by default when a page loads and other means of getting the focus. -Focusing generally means: "prepare to accept the data here", so that's the moment when we can run the code to initialize or load something. +Focusing on an element generally means: "prepare to accept the data here", so that's the moment when we can run the code to initialize the required functionality. The moment of losing the focus ("blur") can be even more important. That's when a user clicks somewhere else or presses `key:Tab` to go to the next form field, or there are other means as well. Losing the focus generally means: "the data has been entered", so we can run the code to check it or even to save it to the server and so on. -There are important peculiarities when working with focus events. We'll do the best to cover them here. +There are important peculiarities when working with focus events. We'll do the best to cover them further on. ## Events focus/blur @@ -18,7 +18,7 @@ Let's use them for validation of an input field. In the example below: -- The `blur` handler checks if the field the email is entered, and if not -- shows an error. +- The `blur` handler checks if the field has an email entered, and if not -- shows an error. - The `focus` handler hides the error message (on `blur` it will be checked again): ```html run autorun height=60 @@ -49,7 +49,7 @@ Your email please: <input type="email" id="input"> </script> ``` -Modern HTML allows to do many validations using input attributes: `required`, `pattern` and so on. And sometimes they are just what we need. JavaScript can be used when we want more flexibility. Also we could automatically send the changed value to the server if it's correct. +Modern HTML allows us to do many validations using input attributes: `required`, `pattern` and so on. And sometimes they are just what we need. JavaScript can be used when we want more flexibility. Also we could automatically send the changed value to the server if it's correct. ## Methods focus/blur @@ -90,6 +90,8 @@ If we enter something into the input and then try to use `key:Tab` or click away Please note that we can't "prevent losing focus" by calling `event.preventDefault()` in `onblur`, because `onblur` works *after* the element lost the focus. +In practice though, one should think well, before implementing something like this, because we generally *should show errors* to the user, but *should not prevent their progress* in filling our form. They may want to fill other fields first. + ```warn header="JavaScript-initiated focus loss" A focus loss can occur for many reasons. @@ -104,29 +106,34 @@ The best recipe is to be careful when using these events. If we want to track us ``` ## Allow focusing on any element: tabindex -By default many elements do not support focusing. +By default, many elements do not support focusing. -The list varies between browsers, but one thing is always correct: `focus/blur` support is guaranteed for elements that a visitor can interact with: `<button>`, `<input>`, `<select>`, `<a>` and so on. +The list varies a bit between browsers, but one thing is always correct: `focus/blur` support is guaranteed for elements that a visitor can interact with: `<button>`, `<input>`, `<select>`, `<a>` and so on. -From the other hand, elements that exist to format something like `<div>`, `<span>`, `<table>` -- are unfocusable by default. The method `elem.focus()` doesn't work on them, and `focus/blur` events are never triggered. +On the other hand, elements that exist to format something, such as `<div>`, `<span>`, `<table>` -- are unfocusable by default. The method `elem.focus()` doesn't work on them, and `focus/blur` events are never triggered. This can be changed using HTML-attribute `tabindex`. -The purpose of this attribute is to specify the order number of the element when `key:Tab` is used to switch between them. +Any element becomes focusable if it has `tabindex`. The value of the attribute is the order number of the element when `key:Tab` (or something like that) is used to switch between them. + +That is: if we have two elements, the first has `tabindex="1"`, and the second has `tabindex="2"`, then pressing `key:Tab` while in the first element -- moves the focus into the second one. + +The switch order is: elements with `tabindex` from `1` and above go first (in the `tabindex` order), and then elements without `tabindex` (e.g. a regular `<input>`). -That is: if we have two elements, the first has `tabindex="1"`, and the second has `tabindex="2"`, then pressing `key:Tab` while in the first element -- moves us to the second one. +Elements without matching `tabindex` are switched in the document source order (the default order). There are two special values: -- `tabindex="0"` makes the element the last one. -- `tabindex="-1"` means that `key:Tab` should ignore that element. +- `tabindex="0"` puts an element among those without `tabindex`. That is, when we switch elements, elements with `tabindex=0` go after elements with `tabindex ≥ 1`. -**Any element supports focusing if it has `tabindex`.** + Usually it's used to make an element focusable, but keep the default switching order. To make an element a part of the form on par with `<input>`. + +- `tabindex="-1"` allows only programmatic focusing on an element. The `key:Tab` key ignores such elements, but method `elem.focus()` works. For instance, here's a list. Click the first item and press `key:Tab`: ```html autorun no-beautify -Click the first item and press Tab. Keep track of the order. Please note that many subsequent Tabs can move the focus out of the iframe with the example. +Click the first item and press Tab. Keep track of the order. Please note that many subsequent Tabs can move the focus out of the iframe in the example. <ul> <li tabindex="1">One</li> <li tabindex="0">Zero</li> @@ -140,9 +147,9 @@ Click the first item and press Tab. Keep track of the order. Please note that ma </style> ``` -The order is like this: `1 - 2 - 0` (zero is always the last). Normally, `<li>` does not support focusing, but `tabindex` full enables it, along with events and styling with `:focus`. +The order is like this: `1 - 2 - 0`. Normally, `<li>` does not support focusing, but `tabindex` full enables it, along with events and styling with `:focus`. -```smart header="`elem.tabIndex` works too" +```smart header="The property `elem.tabIndex` works too" We can add `tabindex` from JavaScript by using the `elem.tabIndex` property. That has the same effect. ``` @@ -203,7 +210,6 @@ So here's another working variant: <script> *!* - // put the handler on capturing phase (last argument true) form.addEventListener("focusin", () => form.classList.add('focused')); form.addEventListener("focusout", () => form.classList.remove('focused')); */!* @@ -212,7 +218,7 @@ So here's another working variant: ## Summary -Events `focus` and `blur` trigger on focusing/losing focus on the element. +Events `focus` and `blur` trigger on an element focusing/losing focus. Their specials are: - They do not bubble. Can use capturing state instead or `focusin/focusout`. diff --git a/2-ui/4-forms-controls/3-events-change-input/1-deposit-calculator/solution.view/index.html b/2-ui/4-forms-controls/3-events-change-input/1-deposit-calculator/solution.view/index.html index 4850b2ca9..0515c839e 100644 --- a/2-ui/4-forms-controls/3-events-change-input/1-deposit-calculator/solution.view/index.html +++ b/2-ui/4-forms-controls/3-events-change-input/1-deposit-calculator/solution.view/index.html @@ -96,7 +96,7 @@ let years = form.months.value / 12; if (!years) return; - let result = Math.round(initial * (1 + interest * years)); + let result = Math.round(initial * (1 + interest) ** years); let height = result / form.money.value * 100 + 'px'; document.getElementById('height-after').style.height = height; diff --git a/2-ui/4-forms-controls/3-events-change-input/1-deposit-calculator/task.md b/2-ui/4-forms-controls/3-events-change-input/1-deposit-calculator/task.md index e324577a9..73f0477ff 100644 --- a/2-ui/4-forms-controls/3-events-change-input/1-deposit-calculator/task.md +++ b/2-ui/4-forms-controls/3-events-change-input/1-deposit-calculator/task.md @@ -17,5 +17,5 @@ The formula is: // initial: the initial money sum // interest: e.g. 0.05 means 5% per year // years: how many years to wait -let result = Math.round(initial * (1 + interest * years)); +let result = Math.round(initial * (1 + interest) ** years); ``` diff --git a/2-ui/4-forms-controls/3-events-change-input/article.md b/2-ui/4-forms-controls/3-events-change-input/article.md index b6247198d..480197ae5 100644 --- a/2-ui/4-forms-controls/3-events-change-input/article.md +++ b/2-ui/4-forms-controls/3-events-change-input/article.md @@ -1,10 +1,10 @@ # Events: change, input, cut, copy, paste -Let's discuss various events that accompany data updates. +Let's cover various events that accompany data updates. ## Event: change -The [change](http://www.w3.org/TR/html5/forms.html#event-input-change) event triggers when the element has finished changing. +The `change` event triggers when the element has finished changing. For text inputs that means that the event occurs when it loses focus. @@ -15,11 +15,23 @@ For instance, while we are typing in the text field below -- there's no event. B <input type="button" value="Button"> ``` -For other elements: `select`, `input type=checkbox/radio` it triggers right after the selection changes. +For other elements: `select`, `input type=checkbox/radio` it triggers right after the selection changes: + +```html autorun height=40 run +<select onchange="alert(this.value)"> + <option value="">Select something</option> + <option value="1">Option 1</option> + <option value="2">Option 2</option> + <option value="3">Option 3</option> +</select> +``` + ## Event: input -The `input` event triggers every time a value is modified. +The `input` event triggers every time after a value is modified by the user. + +Unlike keyboard events, it triggers on any value change, even those that does not involve keyboard actions: pasting with a mouse or using speech recognition to dictate the text. For instance: @@ -34,7 +46,7 @@ For instance: If we want to handle every modification of an `<input>` then this event is the best choice. -Unlike keyboard events it works on any value change, even those that does not involve keyboard actions: pasting with a mouse or using speech recognition to dictate the text. +On the other hand, `input` event doesn't trigger on keyboard input and other actions that do not involve value change, e.g. pressing arrow keys `key:⇦` `key:⇨` while in the input. ```smart header="Can't prevent anything in `oninput`" The `input` event occurs after the value is modified. @@ -46,27 +58,50 @@ So we can't use `event.preventDefault()` there -- it's just too late, there woul These events occur on cutting/copying/pasting a value. -They belong to [ClipboardEvent](https://www.w3.org/TR/clipboard-apis/#clipboard-event-interfaces) class and provide access to the data that is copied/pasted. +They belong to [ClipboardEvent](https://www.w3.org/TR/clipboard-apis/#clipboard-event-interfaces) class and provide access to the data that is cut/copied/pasted. -We also can use `event.preventDefault()` to abort the action. +We also can use `event.preventDefault()` to abort the action, then nothing gets copied/pasted. -For instance, the code below prevents all such events and shows what we are trying to cut/copy/paste: +For instance, the code below prevents all `cut/copy/paste` events and shows the text we're trying to cut/copy/paste: ```html autorun height=40 run <input type="text" id="input"> <script> - input.oncut = input.oncopy = input.onpaste = function(event) { - alert(event.type + ' - ' + event.clipboardData.getData('text/plain')); - return false; + input.onpaste = function(event) { + alert("paste: " + event.clipboardData.getData('text/plain')); + event.preventDefault(); + }; + + input.oncut = input.oncopy = function(event) { + alert(event.type + '-' + document.getSelection()); + event.preventDefault(); }; </script> ``` -Technically, we can copy/paste everything. For instance, we can copy a file in the OS file manager, and paste it. +Please note: inside `cut` and `copy` event handlers a call to `event.clipboardData.getData(...)` returns an empty string. That's because technically the data isn't in the clipboard yet. If we use `event.preventDefault()` it won't be copied at all. + +So the example above uses `document.getSelection()` to get the selected text. You can find more details about document selection in the article <info:selection-range>. + +It's possible to copy/paste not just text, but everything. For instance, we can copy a file in the OS file manager, and paste it. + +That's because `clipboardData` implements `DataTransfer` interface, commonly used for drag'n'drop and copy/pasting. It's a bit beyond our scope now, but you can find its methods in the [DataTransfer specification](https://html.spec.whatwg.org/multipage/dnd.html#the-datatransfer-interface). + +Also, there's an additional asynchronous API of accessing the clipboard: `navigator.clipboard`. More about it in the specification [Clipboard API and events](https://www.w3.org/TR/clipboard-apis/), [not supported by Firefox](https://caniuse.com/async-clipboard). + +### Safety restrictions + +The clipboard is a "global" OS-level thing. A user may switch between various applications, copy/paste different things, and a browser page shouldn't see all that. + +So most browsers allow seamless read/write access to the clipboard only in the scope of certain user actions, such as copying/pasting etc. + +It's forbidden to generate "custom" clipboard events with `dispatchEvent` in all browsers except Firefox. And even if we manage to dispatch such event, the specification clearly states that such "synthetic" events must not provide access to the clipboard. + +Even if someone decides to save `event.clipboardData` in an event handler, and then access it later -- it won't work. -There's a list of methods [in the specification](https://www.w3.org/TR/clipboard-apis/#dfn-datatransfer) to work with different data types, read/write to the clipboard. +To reiterate, [event.clipboardData](https://www.w3.org/TR/clipboard-apis/#clipboardevent-clipboarddata) works solely in the context of user-initiated event handlers. -But please note that clipboard is a "global" OS-level thing. Most browsers allow read/write access to the clipboard only in the scope of certain user actions for the safety. Also it is forbidden to create "custom" clipboard events in all browsers except Firefox. +On the other hand, [navigator.clipboard](https://www.w3.org/TR/clipboard-apis/#h-navigator-clipboard) is the more recent API, meant for use in any context. It asks for user permission, if needed. ## Summary @@ -76,4 +111,4 @@ Data change events: |---------|----------|-------------| | `change`| A value was changed. | For text inputs triggers on focus loss. | | `input` | For text inputs on every change. | Triggers immediately unlike `change`. | -| `cut/copy/paste` | Cut/copy/paste actions. | The action can be prevented. The `event.clipboardData` property gives read/write access to the clipboard. | +| `cut/copy/paste` | Cut/copy/paste actions. | The action can be prevented. The `event.clipboardData` property gives access to the clipboard. All browsers except Firefox also support `navigator.clipboard`. | diff --git a/2-ui/4-forms-controls/4-forms-submit/article.md b/2-ui/4-forms-controls/4-forms-submit/article.md index 69d5a3dc2..c00c559c0 100644 --- a/2-ui/4-forms-controls/4-forms-submit/article.md +++ b/2-ui/4-forms-controls/4-forms-submit/article.md @@ -1,4 +1,4 @@ -# Form submission: event and method submit +# Forms: event and method submit The `submit` event triggers when the form is submitted, it is usually used to validate the form before sending it to the server or to abort the submission and process it in JavaScript. diff --git a/2-ui/5-loading/01-onload-ondomcontentloaded/article.md b/2-ui/5-loading/01-onload-ondomcontentloaded/article.md index 2d60aa1d3..07624a658 100644 --- a/2-ui/5-loading/01-onload-ondomcontentloaded/article.md +++ b/2-ui/5-loading/01-onload-ondomcontentloaded/article.md @@ -2,14 +2,14 @@ The lifecycle of an HTML page has three important events: -- `DOMContentLoaded` -- the browser fully loaded HTML, and the DOM tree is built, but external resources like pictures `<img>` and stylesheets may be not yet loaded. -- `load` -- the browser loaded all resources (images, styles etc). -- `beforeunload/unload` -- when the user is leaving the page. +- `DOMContentLoaded` -- the browser fully loaded HTML, and the DOM tree is built, but external resources like pictures `<img>` and stylesheets may not yet have loaded. +- `load` -- not only HTML is loaded, but also all the external resources: images, styles etc. +- `beforeunload/unload` -- the user is leaving the page. Each event may be useful: - `DOMContentLoaded` event -- DOM is ready, so the handler can lookup DOM nodes, initialize the interface. -- `load` event -- additional resources are loaded, we can get image sizes (if not specified in HTML/CSS) etc. +- `load` event -- external resources are loaded, so styles are applied, image sizes are known etc. - `beforeunload` event -- the user is leaving: we can check if the user saved the changes and ask them whether they really want to leave. - `unload` -- the user almost left, but we still can initiate some operations, such as sending out statistics. @@ -33,7 +33,7 @@ For instance: function ready() { alert('DOM is ready'); - // image is not yet loaded (unless was cached), so the size is 0x0 + // image is not yet loaded (unless it was cached), so the size is 0x0 alert(`Image size: ${img.offsetWidth}x${img.offsetHeight}`); } @@ -45,11 +45,11 @@ For instance: <img id="img" src="https://en.js.cx/clipart/train.gif?speed=1&cache=0"> ``` -In the example the `DOMContentLoaded` handler runs when the document is loaded, so it can see all the elements, including `<img>` below. +In the example, the `DOMContentLoaded` handler runs when the document is loaded, so it can see all the elements, including `<img>` below. But it doesn't wait for the image to load. So `alert` shows zero sizes. -At the first sight `DOMContentLoaded` event is very simple. The DOM tree is ready -- here's the event. There are few peculiarities though. +At first sight, the `DOMContentLoaded` event is very simple. The DOM tree is ready -- here's the event. There are few peculiarities though. ### DOMContentLoaded and scripts @@ -60,7 +60,7 @@ So DOMContentLoaded definitely happens after such scripts: ```html run <script> document.addEventListener("DOMContentLoaded", () => { - console.log("DOM ready!"); + alert("DOM ready!"); }); </script> @@ -73,11 +73,10 @@ So DOMContentLoaded definitely happens after such scripts: In the example above, we first see "Library loaded...", and then "DOM ready!" (all scripts are executed). -```warn header="Scripts with `async`, `defer` or `type=\"module\"` don't block DOMContentLoaded" - -Script attributes `async` and `defer`, that we'll cover [a bit later](info:script-async-defer), don't block DOMContentLoaded. [JavaScript modules](info:modules) behave like `defer`, they don't block it too. - -So here we're talking about "regular" scripts, like `<script>...</script>`, or `<script src="..."></script>`. +```warn header="Scripts that don't block DOMContentLoaded" +There are two exceptions from this rule: +1. Scripts with the `async` attribute, that we'll cover [a bit later](info:script-async-defer), don't block `DOMContentLoaded`. +2. Scripts that are generated dynamically with `document.createElement('script')` and then added to the webpage also don't block this event. ``` ### DOMContentLoaded and styles @@ -86,15 +85,15 @@ External style sheets don't affect DOM, so `DOMContentLoaded` does not wait for But there's a pitfall. If we have a script after the style, then that script must wait until the stylesheet loads: -```html +```html run <link type="text/css" rel="stylesheet" href="style.css"> <script> - // the script doesn't not execute until the stylesheet is loaded + // the script doesn't execute until the stylesheet is loaded alert(getComputedStyle(document.body).marginTop); </script> ``` -The reason is that the script may want to get coordinates and other style-dependent properties of elements, like in the example above. Naturally, it has to wait for styles to load. +The reason for this is that the script may want to get coordinates and other style-dependent properties of elements, like in the example above. Naturally, it has to wait for styles to load. As `DOMContentLoaded` waits for scripts, it now waits for styles before them as well. @@ -109,13 +108,13 @@ So if `DOMContentLoaded` is postponed by long-loading scripts, then autofill als ## window.onload [#window-onload] -The `load` event on the `window` object triggers when the whole page is loaded including styles, images and other resources. +The `load` event on the `window` object triggers when the whole page is loaded including styles, images and other resources. This event is available via the `onload` property. The example below correctly shows image sizes, because `window.onload` waits for all images: ```html run height=200 refresh <script> - window.onload = function() { + window.onload = function() { // can also use window.addEventListener('load', (event) => { alert('Page loaded'); // image is loaded at this time @@ -146,19 +145,19 @@ let analyticsData = { /* object with gathered data */ }; window.addEventListener("unload", function() { navigator.sendBeacon("/analytics", JSON.stringify(analyticsData)); -}; +}); ``` - The request is sent as POST. -- We can send not only a string, but also forms and other formats, as described in the chapter <info:fetch-basics>, but usually it's a stringified object. +- We can send not only a string, but also forms and other formats, as described in the chapter <info:fetch>, but usually it's a stringified object. - The data is limited by 64kb. When the `sendBeacon` request is finished, the browser probably has already left the document, so there's no way to get server response (which is usually empty for analytics). -There's also a `keepalive` flag for doing such "after-page-left" requests in [fetch](info:fetch-basics) method for generic network requests. You can find more information in the chapter <info:fetch-api>. +There's also a `keepalive` flag for doing such "after-page-left" requests in [fetch](info:fetch) method for generic network requests. You can find more information in the chapter <info:fetch-api>. -If we want to cancel the transition to another page, we can't do it here. But we can use another event -- `onbeforeunload`. +If we want to cancel the transition to another page, we can't do it here. But we can use another event -- `onbeforeunload`. ## window.onbeforeunload [#window.onbeforeunload] @@ -174,7 +173,7 @@ window.onbeforeunload = function() { }; ``` -For historical reasons, returning a non-empty string also counts as canceling the event. Some time ago browsers used show it as a message, but as the [modern specification](https://html.spec.whatwg.org/#unloading-documents) says, they shouldn't. +For historical reasons, returning a non-empty string also counts as canceling the event. Some time ago browsers used to show it as a message, but as the [modern specification](https://html.spec.whatwg.org/#unloading-documents) says, they shouldn't. Here's an example: @@ -186,6 +185,26 @@ window.onbeforeunload = function() { The behavior was changed, because some webmasters abused this event handler by showing misleading and annoying messages. So right now old browsers still may show it as a message, but aside of that -- there's no way to customize the message shown to the user. +````warn header="The `event.preventDefault()` doesn't work from a `beforeunload` handler" +That may sound weird, but most browsers ignore `event.preventDefault()`. + +Which means, following code may not work: +```js run +window.addEventListener("beforeunload", (event) => { + // doesn't work, so this event handler doesn't do anything + event.preventDefault(); +}); +``` + +Instead, in such handlers one should set `event.returnValue` to a string to get the result similar to the code above: +```js run +window.addEventListener("beforeunload", (event) => { + // works, same as returning from window.onbeforeunload + event.returnValue = "There are unsaved changes. Leave now?"; +}); +``` +```` + ## readyState What happens if we set the `DOMContentLoaded` handler after the document is loaded? @@ -210,7 +229,7 @@ Like this: function work() { /*...*/ } if (document.readyState == 'loading') { - // loading yet, wait for the event + // still loading, wait for the event document.addEventListener('DOMContentLoaded', work); } else { // DOM is ready! @@ -218,7 +237,7 @@ if (document.readyState == 'loading') { } ``` -There's also `readystatechange` event that triggers when the state changes, so we can print all these states like this: +There's also the `readystatechange` event that triggers when the state changes, so we can print all these states like this: ```js run // current state @@ -246,7 +265,7 @@ Here's a document with `<iframe>`, `<img>` and handlers that log events: <iframe src="iframe.html" onload="log('iframe onload')"></iframe> -<img src="http://en.js.cx/clipart/train.gif" id="img"> +<img src="https://en.js.cx/clipart/train.gif" id="img"> <script> img.onload = () => log('img onload'); </script> @@ -273,12 +292,12 @@ The numbers in square brackets denote the approximate time of when it happens. E Page load events: -- `DOMContentLoaded` event triggers on `document` when DOM is ready. We can apply JavaScript to elements at this stage. +- The `DOMContentLoaded` event triggers on `document` when the DOM is ready. We can apply JavaScript to elements at this stage. - Script such as `<script>...</script>` or `<script src="..."></script>` block DOMContentLoaded, the browser waits for them to execute. - Images and other resources may also still continue loading. -- `load` event on `window` triggers when the page and all resources are loaded. We rarely use it, because there's usually no need to wait for so long. -- `beforeunload` event on `window` triggers when the user wants to leave the page. If we cancel the event, browser asks whether the user really wants to leave (e.g we have unsaved changes). -- `unload` event on `window` triggers when the user is finally leaving, in the handler we can only do simple things that do not involve delays or asking a user. Because of that limitation, it's rarely used. We can send out a network request with `navigator.sendBeacon`. +- The `load` event on `window` triggers when the page and all resources are loaded. We rarely use it, because there's usually no need to wait for so long. +- The `beforeunload` event on `window` triggers when the user wants to leave the page. If we cancel the event, browser asks whether the user really wants to leave (e.g we have unsaved changes). +- The `unload` event on `window` triggers when the user is finally leaving, in the handler we can only do simple things that do not involve delays or asking a user. Because of that limitation, it's rarely used. We can send out a network request with `navigator.sendBeacon`. - `document.readyState` is the current state of the document, changes can be tracked in the `readystatechange` event: - `loading` -- the document is loading. - `interactive` -- the document is parsed, happens at about the same time as `DOMContentLoaded`, but before it. diff --git a/2-ui/5-loading/01-onload-ondomcontentloaded/readystate.view/index.html b/2-ui/5-loading/01-onload-ondomcontentloaded/readystate.view/index.html index a4685a716..27df70939 100644 --- a/2-ui/5-loading/01-onload-ondomcontentloaded/readystate.view/index.html +++ b/2-ui/5-loading/01-onload-ondomcontentloaded/readystate.view/index.html @@ -9,8 +9,8 @@ [20] readyState:interactive [21] DOMContentLoaded [30] iframe onload - [40] readyState:complete [40] img onload + [40] readyState:complete [40] window onload --> diff --git a/2-ui/5-loading/02-script-async-defer/article.md b/2-ui/5-loading/02-script-async-defer/article.md index b5fab5c06..f97c000d6 100644 --- a/2-ui/5-loading/02-script-async-defer/article.md +++ b/2-ui/5-loading/02-script-async-defer/article.md @@ -3,11 +3,11 @@ In modern websites, scripts are often "heavier" than HTML: their download size is larger, and processing time is also longer. -When the browser loads HTML and comes across a `<script>...</script>` tag, it can't continue building DOM. It must execute the script right now. The same happens for external scripts `<script src="..."></script>`: the browser must wait until the script downloads, execute it, and only after process the rest of the page. +When the browser loads HTML and comes across a `<script>...</script>` tag, it can't continue building the DOM. It must execute the script right now. The same happens for external scripts `<script src="..."></script>`: the browser must wait for the script to download, execute the downloaded script, and only then can it process the rest of the page. That leads to two important issues: -1. Scripts can't see DOM elements below them, so can't add handlers etc. +1. Scripts can't see DOM elements below them, so they can't add handlers etc. 2. If there's a bulky script at the top of the page, it "blocks the page". Users can't see the page content till it downloads and runs: ```html run height=100 @@ -29,15 +29,15 @@ There are some workarounds to that. For instance, we can put a script at the bot </body> ``` -But this solution is far from perfect. For example, the browser actually notices the script (and can start downloading it) only after it downloaded the full HTML document. For long HTML documents, that may be a noticeable delay. +But this solution is far from perfect. For example, the browser notices the script (and can start downloading it) only after it downloaded the full HTML document. For long HTML documents, that may be a noticeable delay. -Such things are invisible for people using very fast connections, but many people in the world still have slower internet speeds and far-from-perfect mobile connectivity. +Such things are invisible for people using very fast connections, but many people in the world still have slow internet speeds and use a far-from-perfect mobile internet connection. -Luckily, there are two `<script>` attributes that solve the problem for us: `defer` and `async` +Luckily, there are two `<script>` attributes that solve the problem for us: `defer` and `async`. ## defer -The `defer` attribute tells the browser that it should go on working with the page, and load the script "in background", then run the script when it loads. +The `defer` attribute tells the browser not to wait for the script. Instead, the browser will continue to process the HTML, build DOM. The script loads "in the background", and then runs when the DOM is fully built. Here's the same example as above, but with `defer`: @@ -50,16 +50,18 @@ Here's the same example as above, but with `defer`: <p>...content after script...</p> ``` +In other words: + - Scripts with `defer` never block the page. -- Scripts with `defer` always execute when the DOM is ready, but before `DOMContentLoaded` event. +- Scripts with `defer` always execute when the DOM is ready (but before `DOMContentLoaded` event). -The following example demonstrates that: +The following example demonstrates the second part: ```html run height=100 <p>...content before scripts...</p> <script> - document.addEventListener('DOMContentLoaded', () => alert("DOM ready after defer!")); // (2) + document.addEventListener('DOMContentLoaded', () => alert("DOM ready after defer!")); </script> <script defer src="https://javascript.info/article/script-async-defer/long.js?speed=1"></script> @@ -68,40 +70,44 @@ The following example demonstrates that: ``` 1. The page content shows up immediately. -2. `DOMContentLoaded` waits for the deferred script. It only triggers when the script `(2)` is downloaded is executed. +2. `DOMContentLoaded` event handler waits for the deferred script. It only triggers when the script is downloaded and executed. -Deferred scripts keep their relative order, just like regular scripts. +**Deferred scripts keep their relative order, just like regular scripts.** -So, if we have a long script first, and then a smaller one, then the latter one waits. +Let's say, we have two deferred scripts: the `long.js` and then `small.js`: ```html <script defer src="https://javascript.info/article/script-async-defer/long.js"></script> <script defer src="https://javascript.info/article/script-async-defer/small.js"></script> ``` -```smart header="The small script downloads first, runs second" -Browsers scan the page for scripts and download them in parallel, to improve performance. So in the example above both scripts download in parallel. The `small.js` probably makes it first. +Browsers scan the page for scripts and download them in parallel, to improve performance. So in the example above both scripts download in parallel. The `small.js` probably finishes first. -But the specification requires scripts to execute in the document order, so it waits for `long.js` to execute. -``` +...But the `defer` attribute, besides telling the browser "not to block", ensures that the relative order is kept. So even though `small.js` loads first, it still waits and runs after `long.js` executes. + +That may be important for cases when we need to load a JavaScript library and then a script that depends on it. ```smart header="The `defer` attribute is only for external scripts" -The `defer` attribute is ignored if the script has no `src`. +The `defer` attribute is ignored if the `<script>` tag has no `src`. ``` - ## async -The `async` attribute means that a script is completely independant: +The `async` attribute is somewhat like `defer`. It also makes the script non-blocking. But it has important differences in the behavior. + +The `async` attribute means that a script is completely independent: -- The page doesn't wait for async scripts, the contents is processed and displayed. -- `DOMContentLoaded` and async scripts don't wait each other: +- The browser doesn't block on `async` scripts (like `defer`). +- Other scripts don't wait for `async` scripts, and `async` scripts don't wait for them. +- `DOMContentLoaded` and async scripts don't wait for each other: - `DOMContentLoaded` may happen both before an async script (if an async script finishes loading after the page is complete) - ...or after an async script (if an async script is short or was in HTTP-cache) -- Other scripts don't wait for `async` scripts, and `async` scripts don't wait for them. +In other words, `async` scripts load in the background and run when ready. The DOM and other scripts don't wait for them, and they don't wait for anything. A fully independent script that runs when loaded. As simple, as it can get, right? + +Here's an example similar to what we've seen with `defer`: two scripts `long.js` and `small.js`, but now with `async` instead of `defer`. -So, if we have several `async` scripts, they may execute in any order. Whatever loads first -- runs first: +They don't wait for each other. Whatever loads first (probably `small.js`) -- runs first: ```html run height=100 <p>...content before scripts...</p> @@ -116,20 +122,26 @@ So, if we have several `async` scripts, they may execute in any order. Whatever <p>...content after scripts...</p> ``` -1. The page content shows up immediately: `async` doesn't block it. -2. `DOMContentLoaded` may happen both before and after `async`, no guarantees here. -3. Async scripts don't wait for each other. A smaller script `small.js` goes second, but probably loads before `long.js`, so runs first. That's called a "load-first" order. +- The page content shows up immediately: `async` doesn't block it. +- `DOMContentLoaded` may happen both before and after `async`, no guarantees here. +- A smaller script `small.js` goes second, but probably loads before `long.js`, so `small.js` runs first. Although, it might be that `long.js` loads first, if cached, then it runs first. In other words, async scripts run in the "load-first" order. -Async scripts are great when we integrate an independant third-party script into the page: counters, ads and so on. +Async scripts are great when we integrate an independent third-party script into the page: counters, ads and so on, as they don't depend on our scripts, and our scripts shouldn't wait for them: ```html +<!-- Google Analytics is usually added like this --> <script async src="https://google-analytics.com/analytics.js"></script> ``` +```smart header="The `async` attribute is only for external scripts" +Just like `defer`, the `async` attribute is ignored if the `<script>` tag has no `src`. +``` ## Dynamic scripts -We can also create a script dynamically using JavaScript: +There's one more important way of adding a script to the page. + +We can create a script and append it to the document dynamically using JavaScript: ```js run let script = document.createElement('script'); @@ -145,21 +157,11 @@ That is: - They don't wait for anything, nothing waits for them. - The script that loads first -- runs first ("load-first" order). -We can change the load-first order into the document order by explicitly setting `async` to `false`: - -```js run -let script = document.createElement('script'); -script.src = "/article/script-async-defer/long.js"; - -*!* -script.async = false; -*/!* - -document.body.append(script); -``` +This can be changed if we explicitly set `script.async=false`. Then scripts will be executed in the document order, just like `defer`. -For example, here we add two scripts. Without `script.async=false` they would execute in load-first order (the `small.js` probably first). But with that flag the order is "as in the document": +In this example, `loadScript(src)` function adds a script and also sets `async` to `false`. +So `long.js` always runs first (as it's added first): ```js run function loadScript(src) { @@ -174,24 +176,30 @@ loadScript("/article/script-async-defer/long.js"); loadScript("/article/script-async-defer/small.js"); ``` +Without `script.async=false`, scripts would execute in default, load-first order (the `small.js` probably first). + +Again, as with the `defer`, the order matters if we'd like to load a library and then another script that depends on it. + ## Summary -Both `async` and `defer` have one common thing: they don't block page rendering. So the user can read page content and get acquanted with the page immediately. +Both `async` and `defer` have one common thing: downloading of such scripts doesn't block page rendering. So the user can read page content and get acquainted with the page immediately. But there are also essential differences between them: | | Order | `DOMContentLoaded` | |---------|---------|---------| -| `async` | *Load-first order*. Their document order doesn't matter -- which loads first | Irrelevant. May load and execute while the document has not yet been fully downloaded. That happens if scripts are small or cached, and the document is long enough. | +| `async` | *Load-first order*. Their document order doesn't matter -- which loads first runs first | Irrelevant. May load and execute while the document has not yet been fully downloaded. That happens if scripts are small or cached, and the document is long enough. | | `defer` | *Document order* (as they go in the document). | Execute after the document is loaded and parsed (they wait if needed), right before `DOMContentLoaded`. | -```warn header="Page without scripts should be usable" -Please note that if you're using `defer`, then the page is visible before the script loads and enables all the graphical components. +In practice, `defer` is used for scripts that need the whole DOM and/or their relative execution order is important. -So, buttons should be disabled by CSS or by other means, to let the user +And `async` is used for independent scripts, like counters or ads. And their relative execution order does not matter. -In practice, `defer` is used for scripts that need DOM and/or their relative execution order is important. +```warn header="Page without scripts should be usable" +Please note: if you're using `defer` or `async`, then user will see the page *before* the script loads. +In such case, some graphical components are probably not initialized yet. -So `async` is used for independent scripts, like counters or ads, that don't need to access page content. And their relative execution order does not matter. +Don't forget to put "loading" indication and disable buttons that aren't functional yet. Let the user clearly see what he can do on the page, and what's still getting ready. +``` diff --git a/2-ui/5-loading/02-script-async-defer/window-onbeforeunload.view/index.html b/2-ui/5-loading/02-script-async-defer/window-onbeforeunload.view/index.html deleted file mode 100644 index eacfda1f7..000000000 --- a/2-ui/5-loading/02-script-async-defer/window-onbeforeunload.view/index.html +++ /dev/null @@ -1,19 +0,0 @@ -<!DOCTYPE html> -<html> -<head> - <meta charset="utf-8"> -</head> -<body> - <script> - function setHandler() { - window.onbeforeunload = function() { - return "There are unsaved changes. Leave now?"; - }; - } - </script> - - <button onclick="setHandler()">Set window.onbeforeunload</button> - - <a href="http://example.com">Leave for EXAMPLE.COM</a> -</body> -</html> diff --git a/2-ui/5-loading/03-onload-onerror/1-load-img-callback/solution.view/index.html b/2-ui/5-loading/03-onload-onerror/1-load-img-callback/solution.view/index.html index c1624d038..50b9e741d 100644 --- a/2-ui/5-loading/03-onload-onerror/1-load-img-callback/solution.view/index.html +++ b/2-ui/5-loading/03-onload-onerror/1-load-img-callback/solution.view/index.html @@ -35,7 +35,7 @@ } // for each image, - // let's create another img with the same src and check that we have its width immediately + // let's create another img with the same src and check that we have its width function testLoaded() { let widthSum = 0; for (let i = 0; i < sources.length; i++) { diff --git a/2-ui/5-loading/03-onload-onerror/article.md b/2-ui/5-loading/03-onload-onerror/article.md index e915dedb6..590e54ab4 100644 --- a/2-ui/5-loading/03-onload-onerror/article.md +++ b/2-ui/5-loading/03-onload-onerror/article.md @@ -1,6 +1,6 @@ # Resource loading: onload and onerror -The browser allows to track the loading of external resources -- scripts, iframes, pictures and so on. +The browser allows us to track the loading of external resources -- scripts, iframes, pictures and so on. There are two events for it: @@ -41,19 +41,19 @@ document.head.append(script); *!* script.onload = function() { - // the script creates a helper function "_" - alert(_); // the function is available + // the script creates a variable "_" + alert( _.VERSION ); // shows library version }; */!* ``` So in `onload` we can use script variables, run functions etc. -...And what if the loading failed? For instance, there's no such script (error 404) or the server or the server is down (unavailable). +...And what if the loading failed? For instance, there's no such script (error 404) or the server is down (unavailable). ### script.onerror -Errors that occur during the loading of the script can be tracked on `error` event. +Errors that occur during the loading of the script can be tracked in an `error` event. For instance, let's request a script that doesn't exist: @@ -69,12 +69,12 @@ script.onerror = function() { */!* ``` -Please note that we can't get HTTP error details here. We don't know was it error 404 or 500 or something else. Just that the loading failed. +Please note that we can't get HTTP error details here. We don't know if it was an error 404 or 500 or something else. Just that the loading failed. ```warn Events `onload`/`onerror` track only the loading itself. -Errors during script processing and execution are out of the scope of these events. To track script errors, one can use `window.onerror` global handler. +Errors that may occur during script processing and execution are out of scope for these events. That is: if a script loaded successfully, then `onload` triggers, even if it has programming errors in it. To track script errors, one can use `window.onerror` global handler. ``` ## Other resources @@ -92,13 +92,13 @@ img.onload = function() { }; img.onerror = function() { - alert("Error occured while loading image"); + alert("Error occurred while loading image"); }; ``` There are some notes though: -- Most resources start loading when they are added to the document. But `<img>` is an exception. It starts loading when it gets an src `(*)`. +- Most resources start loading when they are added to the document. But `<img>` is an exception. It starts loading when it gets a src `(*)`. - For `<iframe>`, the `iframe.onload` event triggers when the iframe loading finished, both for successful load and in case of an error. That's for historical reasons. @@ -107,19 +107,19 @@ That's for historical reasons. There's a rule: scripts from one site can't access contents of the other site. So, e.g. a script at `https://facebook.com` can't read the user's mailbox at `https://gmail.com`. -Or, to be more precise, one origin (domain/port/protocol triplet) can't access the content from another one. So even if we have a subdomain, or just another port, these are different origins, no access to each other. +Or, to be more precise, one origin (domain/port/protocol triplet) can't access the content from another one. So even if we have a subdomain, or just another port, these are different origins with no access to each other. This rule also affects resources from other domains. If we're using a script from another domain, and there's an error in it, we can't get error details. -For example, let's take a script with a single (bad) function call: +For example, let's take a script `error.js` that consists of a single (bad) function call: ```js // 📁 error.js noSuchFunction(); ``` -Now load it from our domain: +Now load it from the same site where it's located: ```html run height=0 <script> @@ -155,24 +155,24 @@ Script error. , 0:0 ``` -Details may vary depeding on the browser, but the idea is same: any information about the internals of a script is hidden. Exactly because it's from another domain. +Details may vary depending on the browser, but the idea is the same: any information about the internals of a script, including error stack traces, is hidden. Exactly because it's from another domain. -Why do we need the details? +Why do we need error details? -There are many services (and we can build our own) that listen to `window.onerror`, save errors at the server and provide an interface to access and analyze them. That's great, as we can see real errors, triggered by our users. But we can't see any error information for scripts from other domains. +There are many services (and we can build our own) that listen for global errors using `window.onerror`, save errors and provide an interface to access and analyze them. That's great, as we can see real errors, triggered by our users. But if a script comes from another origin, then there's not much information about errors in it, as we've just seen. Similar cross-origin policy (CORS) is enforced for other types of resources as well. -**To allow cross-origin access, we need `crossorigin` attribute, plus the remote server must provide special headers.** +**To allow cross-origin access, the `<script>` tag needs to have the `crossorigin` attribute, plus the remote server must provide special headers.** There are three levels of cross-origin access: 1. **No `crossorigin` attribute** -- access prohibited. 2. **`crossorigin="anonymous"`** -- access allowed if the server responds with the header `Access-Control-Allow-Origin` with `*` or our origin. Browser does not send authorization information and cookies to remote server. -3. **`crossorigin="use-credentials"`** -- access allowed if the server sends back the header `Access-Control-Allow-Origin` with our origin and `Access-Control-Allow-Credentials: true`. Browser sends authorization information and cookies to remote server. +3. **`crossorigin="use-credentials"`** -- access allowed if the server sends back the header `Access-Control-Allow-Origin` with our origin and `Access-Control-Allow-Credentials: true`. Browser sends authorization information and cookies to remote server. ```smart -You can read more about cross-origin access in the chapter <info:fetch-crossorigin>. It describes `fetch` method for network requests, but the policy is exactly the same. +You can read more about cross-origin access in the chapter <info:fetch-crossorigin>. It describes the `fetch` method for network requests, but the policy is exactly the same. Such thing as "cookies" is out of our current scope, but you can read about them in the chapter <info:cookie>. ``` @@ -181,7 +181,7 @@ In our case, we didn't have any crossorigin attribute. So the cross-origin acces We can choose between `"anonymous"` (no cookies sent, one server-side header needed) and `"use-credentials"` (sends cookies too, two server-side headers needed). -If we don't care about cookies, then `"anonymous"` is a way to go: +If we don't care about cookies, then `"anonymous"` is the way to go: ```html run height=0 <script> @@ -192,7 +192,7 @@ window.onerror = function(message, url, line, col, errorObj) { <script *!*crossorigin="anonymous"*/!* src="https://cors.javascript.info/article/onload-onerror/crossorigin/error.js"></script> ``` -Now, assuming that the server provides `Access-Control-Allow-Origin` header, everything's fine. We have the full error report. +Now, assuming that the server provides an `Access-Control-Allow-Origin` header, everything's fine. We have the full error report. ## Summary diff --git a/2-ui/99-ui-misc/01-mutation-observer/article.md b/2-ui/99-ui-misc/01-mutation-observer/article.md new file mode 100644 index 000000000..3cf6f5397 --- /dev/null +++ b/2-ui/99-ui-misc/01-mutation-observer/article.md @@ -0,0 +1,273 @@ + +# Mutation observer + +`MutationObserver` is a built-in object that observes a DOM element and fires a callback when it detects a change. + +We'll first take a look at the syntax, and then explore a real-world use case, to see where such thing may be useful. + +## Syntax + +`MutationObserver` is easy to use. + +First, we create an observer with a callback-function: + +```js +let observer = new MutationObserver(callback); +``` + +And then attach it to a DOM node: + +```js +observer.observe(node, config); +``` + +`config` is an object with boolean options "what kind of changes to react on": +- `childList` -- changes in the direct children of `node`, +- `subtree` -- in all descendants of `node`, +- `attributes` -- attributes of `node`, +- `attributeFilter` -- an array of attribute names, to observe only selected ones. +- `characterData` -- whether to observe `node.data` (text content), + +Few other options: +- `attributeOldValue` -- if `true`, pass both the old and the new value of attribute to callback (see below), otherwise only the new one (needs `attributes` option), +- `characterDataOldValue` -- if `true`, pass both the old and the new value of `node.data` to callback (see below), otherwise only the new one (needs `characterData` option). + +Then after any changes, the `callback` is executed: changes are passed in the first argument as a list of [MutationRecord](https://dom.spec.whatwg.org/#mutationrecord) objects, and the observer itself as the second argument. + +[MutationRecord](https://dom.spec.whatwg.org/#mutationrecord) objects have properties: + +- `type` -- mutation type, one of + - `"attributes"`: attribute modified + - `"characterData"`: data modified, used for text nodes, + - `"childList"`: child elements added/removed, +- `target` -- where the change occurred: an element for `"attributes"`, or text node for `"characterData"`, or an element for a `"childList"` mutation, +- `addedNodes/removedNodes` -- nodes that were added/removed, +- `previousSibling/nextSibling` -- the previous and next sibling to added/removed nodes, +- `attributeName/attributeNamespace` -- the name/namespace (for XML) of the changed attribute, +- `oldValue` -- the previous value, only for attribute or text changes, if the corresponding option is set `attributeOldValue`/`characterDataOldValue`. + +For example, here's a `<div>` with a `contentEditable` attribute. That attribute allows us to focus on it and edit. + +```html run +<div contentEditable id="elem">Click and <b>edit</b>, please</div> + +<script> +let observer = new MutationObserver(mutationRecords => { + console.log(mutationRecords); // console.log(the changes) +}); + +// observe everything except attributes +observer.observe(elem, { + childList: true, // observe direct children + subtree: true, // and lower descendants too + characterDataOldValue: true // pass old data to callback +}); +</script> +``` + +If we run this code in the browser, then focus on the given `<div>` and change the text inside `<b>edit</b>`, `console.log` will show one mutation: + +```js +mutationRecords = [{ + type: "characterData", + oldValue: "edit", + target: <text node>, + // other properties empty +}]; +``` + +If we make more complex editing operations, e.g. remove the `<b>edit</b>`, the mutation event may contain multiple mutation records: + +```js +mutationRecords = [{ + type: "childList", + target: <div#elem>, + removedNodes: [<b>], + nextSibling: <text node>, + previousSibling: <text node> + // other properties empty +}, { + type: "characterData" + target: <text node> + // ...mutation details depend on how the browser handles such removal + // it may coalesce two adjacent text nodes "edit " and ", please" into one node + // or it may leave them separate text nodes +}]; +``` + +So, `MutationObserver` allows to react on any changes within DOM subtree. + +## Usage for integration + +When such thing may be useful? + +Imagine the situation when you need to add a third-party script that contains useful functionality, but also does something unwanted, e.g. shows ads `<div class="ads">Unwanted ads</div>`. + +Naturally, the third-party script provides no mechanisms to remove it. + +Using `MutationObserver`, we can detect when the unwanted element appears in our DOM and remove it. + +There are other situations when a third-party script adds something into our document, and we'd like to detect, when it happens, to adapt our page, dynamically resize something etc. + +`MutationObserver` allows to implement this. + +## Usage for architecture + +There are also situations when `MutationObserver` is good from architectural standpoint. + +Let's say we're making a website about programming. Naturally, articles and other materials may contain source code snippets. + +Such snippet in an HTML markup looks like this: + +```html +... +<pre class="language-javascript"><code> + // here's the code + let hello = "world"; +</code></pre> +... +``` + +For better readability and at the same time, to beautify it, we'll be using a JavaScript syntax highlighting library on our site, like [Prism.js](https://prismjs.com/). To get syntax highlighting for above snippet in Prism, `Prism.highlightElem(pre)` is called, which examines the contents of such `pre` elements and adds special tags and styles for colored syntax highlighting into those elements, similar to what you see in examples here, on this page. + +When exactly should we run that highlighting method? Well, we can do it on `DOMContentLoaded` event, or put the script at the bottom of the page. The moment our DOM is ready, we can search for elements `pre[class*="language"]` and call `Prism.highlightElem` on them: + +```js +// highlight all code snippets on the page +document.querySelectorAll('pre[class*="language"]').forEach(Prism.highlightElem); +``` + +Everything's simple so far, right? We find code snippets in HTML and highlight them. + +Now let's go on. Let's say we're going to dynamically fetch materials from a server. We'll study methods for that [later in the tutorial](info:fetch). For now it only matters that we fetch an HTML article from a webserver and display it on demand: + +```js +let article = /* fetch new content from server */ +articleElem.innerHTML = article; +``` + +The new `article` HTML may contain code snippets. We need to call `Prism.highlightElem` on them, otherwise they won't get highlighted. + +**Where and when to call `Prism.highlightElem` for a dynamically loaded article?** + +We could append that call to the code that loads an article, like this: + +```js +let article = /* fetch new content from server */ +articleElem.innerHTML = article; + +*!* +let snippets = articleElem.querySelectorAll('pre[class*="language-"]'); +snippets.forEach(Prism.highlightElem); +*/!* +``` + +...But, imagine if we have many places in the code where we load our content - articles, quizzes, forum posts, etc. Do we need to put the highlighting call everywhere, to highlight the code in content after loading? That's not very convenient. + +And what if the content is loaded by a third-party module? For example, we have a forum written by someone else, that loads content dynamically, and we'd like to add syntax highlighting to it. No one likes patching third-party scripts. + +Luckily, there's another option. + +We can use `MutationObserver` to automatically detect when code snippets are inserted into the page and highlight them. + +So we'll handle the highlighting functionality in one place, relieving us from the need to integrate it. + +### Dynamic highlight demo + +Here's the working example. + +If you run this code, it starts observing the element below and highlighting any code snippets that appear there: + +```js run +let observer = new MutationObserver(mutations => { + + for(let mutation of mutations) { + // examine new nodes, is there anything to highlight? + + for(let node of mutation.addedNodes) { + // we track only elements, skip other nodes (e.g. text nodes) + if (!(node instanceof HTMLElement)) continue; + + // check the inserted element for being a code snippet + if (node.matches('pre[class*="language-"]')) { + Prism.highlightElement(node); + } + + // or maybe there's a code snippet somewhere in its subtree? + for(let elem of node.querySelectorAll('pre[class*="language-"]')) { + Prism.highlightElement(elem); + } + } + } + +}); + +let demoElem = document.getElementById('highlight-demo'); + +observer.observe(demoElem, {childList: true, subtree: true}); +``` + +Here, below, there's an HTML-element and JavaScript that dynamically fills it using `innerHTML`. + +Please run the previous code (above, observes that element), and then the code below. You'll see how `MutationObserver` detects and highlights the snippet. + +<p id="highlight-demo" style="border: 1px solid #ddd">A demo-element with <code>id="highlight-demo"</code>, run the code above to observe it.</p> + +The following code populates its `innerHTML`, that causes the `MutationObserver` to react and highlight its contents: + +```js run +let demoElem = document.getElementById('highlight-demo'); + +// dynamically insert content with code snippets +demoElem.innerHTML = `A code snippet is below: + <pre class="language-javascript"><code> let hello = "world!"; </code></pre> + <div>Another one:</div> + <div> + <pre class="language-css"><code>.class { margin: 5px; } </code></pre> + </div> +`; +``` + +Now we have `MutationObserver` that can track all highlighting in observed elements or the whole `document`. We can add/remove code snippets in HTML without thinking about it. + +## Additional methods + +There's a method to stop observing the node: + +- `observer.disconnect()` -- stops the observation. + +When we stop the observing, it might be possible that some changes were not yet processed by the observer. In such cases, we use + +- `observer.takeRecords()` -- gets a list of unprocessed mutation records - those that happened, but the callback has not handled them. + +These methods can be used together, like this: + +```js +// get a list of unprocessed mutations +// should be called before disconnecting, +// if you care about possibly unhandled recent mutations +let mutationRecords = observer.takeRecords(); + +// stop tracking changes +observer.disconnect(); +... +``` + + +```smart header="Records returned by `observer.takeRecords()` are removed from the processing queue" +The callback won't be called for records, returned by `observer.takeRecords()`. +``` + +```smart header="Garbage collection interaction" +Observers use weak references to nodes internally. That is, if a node is removed from the DOM, and becomes unreachable, then it can be garbage collected. + +The mere fact that a DOM node is observed doesn't prevent the garbage collection. +``` + +## Summary + +`MutationObserver` can react to changes in DOM - attributes, text content and adding/removing elements. + +We can use it to track changes introduced by other parts of our code, as well as to integrate with third-party scripts. + +`MutationObserver` can track any changes. The config "what to observe" options are used for optimizations, not to spend resources on unneeded callback invocations. diff --git a/2-ui/99-ui-misc/02-selection-range/article.md b/2-ui/99-ui-misc/02-selection-range/article.md new file mode 100644 index 000000000..09a20bc67 --- /dev/null +++ b/2-ui/99-ui-misc/02-selection-range/article.md @@ -0,0 +1,716 @@ +libs: + - d3 + - domtree + +--- + +# Selection and Range + +In this chapter we'll cover selection in the document, as well as selection in form fields, such as `<input>`. + +JavaScript can access an existing selection, select/deselect DOM nodes as a whole or partially, remove the selected content from the document, wrap it into a tag, and so on. + +You can find some recipes for common tasks at the end of the chapter, in "Summary" section. Maybe that covers your current needs, but you'll get much more if you read the whole text. + +The underlying `Range` and `Selection` objects are easy to grasp, and then you'll need no recipes to make them do what you want. + +## Range + +The basic concept of selection is [Range](https://dom.spec.whatwg.org/#ranges), that is essentially a pair of "boundary points": range start and range end. + +A `Range` object is created without parameters: + +```js +let range = new Range(); +``` + +Then we can set the selection boundaries using `range.setStart(node, offset)` and `range.setEnd(node, offset)`. + +As you might guess, further we'll use the `Range` objects for selection, but first let's create few such objects. + +### Selecting the text partially + +The interesting thing is that the first argument `node` in both methods can be either a text node or an element node, and the meaning of the second argument depends on that. + +**If `node` is a text node, then `offset` must be the position in its text.** + +For example, given the element `<p>Hello</p>`, we can create the range containing the letters "ll" as follows: + +```html run +<p id="p">Hello</p> +<script> + let range = new Range(); + range.setStart(p.firstChild, 2); + range.setEnd(p.firstChild, 4); + + // toString of a range returns its content as text + console.log(range); // ll +</script> +``` + +Here we take the first child of `<p>` (that's the text node) and specify the text positions inside it: + + + +### Selecting element nodes + +**Alternatively, if `node` is an element node, then `offset` must be the child number.** + +That's handy for making ranges that contain nodes as a whole, not stop somewhere inside their text. + +For example, we have a more complex document fragment: + +```html autorun +<p id="p">Example: <i>italic</i> and <b>bold</b></p> +``` + +Here's its DOM structure with both element and text nodes: + +<div class="select-p-domtree"></div> + +<script> +let selectPDomtree = { + "name": "P", + "nodeType": 1, + "children": [{ + "name": "#text", + "nodeType": 3, + "content": "Example: " + }, { + "name": "I", + "nodeType": 1, + "children": [{ + "name": "#text", + "nodeType": 3, + "content": "italic" + }] + }, { + "name": "#text", + "nodeType": 3, + "content": " and " + }, { + "name": "B", + "nodeType": 1, + "children": [{ + "name": "#text", + "nodeType": 3, + "content": "bold" + }] + }] +} + +drawHtmlTree(selectPDomtree, 'div.select-p-domtree', 690, 320); +</script> + +Let's make a range for `"Example: <i>italic</i>"`. + +As we can see, this phrase consists of exactly two children of `<p>`, with indexes `0` and `1`: + + + +- The starting point has `<p>` as the parent `node`, and `0` as the offset. + + So we can set it as `range.setStart(p, 0)`. +- The ending point also has `<p>` as the parent `node`, but `2` as the offset (it specifies the range up to, but not including `offset`). + + So we can set it as `range.setEnd(p, 2)`. + +Here's the demo. If you run it, you can see that the text gets selected: + +```html run +<p id="p">Example: <i>italic</i> and <b>bold</b></p> + +<script> +*!* + let range = new Range(); + + range.setStart(p, 0); + range.setEnd(p, 2); +*/!* + + // toString of a range returns its content as text, without tags + console.log(range); // Example: italic + + // apply this range for document selection (explained later below) + document.getSelection().addRange(range); +</script> +``` + +Here's a more flexible test stand where you can set range start/end numbers and explore other variants: + +```html run autorun +<p id="p">Example: <i>italic</i> and <b>bold</b></p> + +From <input id="start" type="number" value=1> – To <input id="end" type="number" value=4> +<button id="button">Click to select</button> +<script> + button.onclick = () => { + *!* + let range = new Range(); + + range.setStart(p, start.value); + range.setEnd(p, end.value); + */!* + + // apply the selection, explained later below + document.getSelection().removeAllRanges(); + document.getSelection().addRange(range); + }; +</script> +``` + +E.g. selecting in the same `<p>` from offset `1` to `4` gives us the range `<i>italic</i> and <b>bold</b>`: + + + +```smart header="Starting and ending nodes can be different" +We don't have to use the same node in `setStart` and `setEnd`. A range may span across many unrelated nodes. It's only important that the end is after the start in the document. +``` + +### Selecting a bigger fragment + +Let's make a bigger selection in our example, like this: + + + +We already know how to do that. We just need to set the start and the end as a relative offset in text nodes. + +We need to create a range, that: +- starts from position 2 in `<p>` first child (taking all but two first letters of "Ex<b>ample:</b> ") +- ends at the position 3 in `<b>` first child (taking first three letters of "<b>bol</b>d", but no more): + +```html run +<p id="p">Example: <i>italic</i> and <b>bold</b></p> + +<script> + let range = new Range(); + + range.setStart(p.firstChild, 2); + range.setEnd(p.querySelector('b').firstChild, 3); + + console.log(range); // ample: italic and bol + + // use this range for selection (explained later) + window.getSelection().addRange(range); +</script> +``` + +As you can see, it's fairly easy to make a range of whatever we want. + +If we'd like to take nodes as a whole, we can pass elements in `setStart/setEnd`. Otherwise, we can work on the text level. + +## Range properties + +The range object that we created in the example above has following properties: + + + +- `startContainer`, `startOffset` -- node and offset of the start, + - in the example above: first text node inside `<p>` and `2`. +- `endContainer`, `endOffset` -- node and offset of the end, + - in the example above: first text node inside `<b>` and `3`. +- `collapsed` -- boolean, `true` if the range starts and ends on the same point (so there's no content inside the range), + - in the example above: `false` +- `commonAncestorContainer` -- the nearest common ancestor of all nodes within the range, + - in the example above: `<p>` + + +## Range selection methods + +There are many convenient methods to manipulate ranges. + +We've already seen `setStart` and `setEnd`, here are other similar methods. + +Set range start: + +- `setStart(node, offset)` set start at: position `offset` in `node` +- `setStartBefore(node)` set start at: right before `node` +- `setStartAfter(node)` set start at: right after `node` + +Set range end (similar methods): + +- `setEnd(node, offset)` set end at: position `offset` in `node` +- `setEndBefore(node)` set end at: right before `node` +- `setEndAfter(node)` set end at: right after `node` + +Technically, `setStart/setEnd` can do anything, but more methods provide more convenience. + +In all these methods, `node` can be both a text or element node: for text nodes `offset` skips that many of characters, while for element nodes that many child nodes. + +Even more methods to create ranges: +- `selectNode(node)` set range to select the whole `node` +- `selectNodeContents(node)` set range to select the whole `node` contents +- `collapse(toStart)` if `toStart=true` set end=start, otherwise set start=end, thus collapsing the range +- `cloneRange()` creates a new range with the same start/end + +## Range editing methods + +Once the range is created, we can manipulate its content using these methods: + +- `deleteContents()` -- remove range content from the document +- `extractContents()` -- remove range content from the document and return as [DocumentFragment](info:modifying-document#document-fragment) +- `cloneContents()` -- clone range content and return as [DocumentFragment](info:modifying-document#document-fragment) +- `insertNode(node)` -- insert `node` into the document at the beginning of the range +- `surroundContents(node)` -- wrap `node` around range content. For this to work, the range must contain both opening and closing tags for all elements inside it: no partial ranges like `<i>abc`. + +With these methods we can do basically anything with selected nodes. + +Here's the test stand to see them in action: + +```html run refresh autorun height=260 +Click buttons to run methods on the selection, "resetExample" to reset it. + +<p id="p">Example: <i>italic</i> and <b>bold</b></p> + +<p id="result"></p> +<script> + let range = new Range(); + + // Each demonstrated method is represented here: + let methods = { + deleteContents() { + range.deleteContents() + }, + extractContents() { + let content = range.extractContents(); + result.innerHTML = ""; + result.append("extracted: ", content); + }, + cloneContents() { + let content = range.cloneContents(); + result.innerHTML = ""; + result.append("cloned: ", content); + }, + insertNode() { + let newNode = document.createElement('u'); + newNode.innerHTML = "NEW NODE"; + range.insertNode(newNode); + }, + surroundContents() { + let newNode = document.createElement('u'); + try { + range.surroundContents(newNode); + } catch(e) { console.log(e) } + }, + resetExample() { + p.innerHTML = `Example: <i>italic</i> and <b>bold</b>`; + result.innerHTML = ""; + + range.setStart(p.firstChild, 2); + range.setEnd(p.querySelector('b').firstChild, 3); + + window.getSelection().removeAllRanges(); + window.getSelection().addRange(range); + } + }; + + for(let method in methods) { + document.write(`<div><button onclick="methods.${method}()">${method}</button></div>`); + } + + methods.resetExample(); +</script> +``` + +There also exist methods to compare ranges, but these are rarely used. When you need them, please refer to the [spec](https://dom.spec.whatwg.org/#interface-range) or [MDN manual](mdn:/api/Range). + + +## Selection + +`Range` is a generic object for managing selection ranges. Although, creating a `Range` doesn't mean that we see a selection on screen. + +We may create `Range` objects, pass them around -- they do not visually select anything on their own. + +The document selection is represented by `Selection` object, that can be obtained as `window.getSelection()` or `document.getSelection()`. A selection may include zero or more ranges. At least, the [Selection API specification](https://www.w3.org/TR/selection-api/) says so. In practice though, only Firefox allows to select multiple ranges in the document by using `key:Ctrl+click` (`key:Cmd+click` for Mac). + +Here's a screenshot of a selection with 3 ranges, made in Firefox: + + + +Other browsers support at maximum 1 range. As we'll see, some of `Selection` methods imply that there may be many ranges, but again, in all browsers except Firefox, there's at maximum 1. + +Here's a small demo that shows the current selection (select something and click) as text: + +<button onclick="alert(document.getSelection())">alert(document.getSelection())</button> + +## Selection properties + +As said, a selection may in theory contain multiple ranges. We can get these range objects using the method: + +- `getRangeAt(i)` -- get i-th range, starting from `0`. In all browsers except Firefox, only `0` is used. + +Also, there exist properties that often provide better convenience. + +Similar to a range, a selection object has a start, called "anchor", and the end, called "focus". + +The main selection properties are: + +- `anchorNode` -- the node where the selection starts, +- `anchorOffset` -- the offset in `anchorNode` where the selection starts, +- `focusNode` -- the node where the selection ends, +- `focusOffset` -- the offset in `focusNode` where the selection ends, +- `isCollapsed` -- `true` if selection selects nothing (empty range), or doesn't exist. +- `rangeCount` -- count of ranges in the selection, maximum `1` in all browsers except Firefox. + +```smart header="Selection end/start vs Range" + +There's an important difference between a selection anchor/focus compared with a `Range` start/end. + +As we know, `Range` objects always have their start before the end. + +For selections, that's not always the case. + +Selecting something with a mouse can be done in both directions: either "left-to-right" or "right-to-left". + +In other words, when the mouse button is pressed, and then it moves forward in the document, then its end (focus) will be after its start (anchor). + +E.g. if the user starts selecting with mouse and goes from "Example" to "italic": + + + +...But the same selection could be done backwards: starting from "italic" to "Example" (backward direction), then its end (focus) will be before the start (anchor): + + +``` + +## Selection events + +There are events on to keep track of selection: + +- `elem.onselectstart` -- when a selection *starts* specifically on element `elem` (or inside it). For instance, when the user presses the mouse button on it and starts to move the pointer. + - Preventing the default action cancels the selection start. So starting a selection from this element becomes impossible, but the element is still selectable. The visitor just needs to start the selection from elsewhere. +- `document.onselectionchange` -- whenever a selection changes or starts. + - Please note: this handler can be set only on `document`, it tracks all selections in it. + +### Selection tracking demo + +Here's a small demo. It tracks the current selection on the `document` and shows its boundaries: + +```html run height=80 +<p id="p">Select me: <i>italic</i> and <b>bold</b></p> + +From <input id="from" disabled> – To <input id="to" disabled> +<script> + document.onselectionchange = function() { + let selection = document.getSelection(); + + let {anchorNode, anchorOffset, focusNode, focusOffset} = selection; + + // anchorNode and focusNode are text nodes usually + from.value = `${anchorNode?.data}, offset ${anchorOffset}`; + to.value = `${focusNode?.data}, offset ${focusOffset}`; + }; +</script> +``` + +### Selection copying demo + +There are two approaches to copying the selected content: + +1. We can use `document.getSelection().toString()` to get it as text. +2. Otherwise, to copy the full DOM, e.g. if we need to keep formatting, we can get the underlying ranges with `getRangeAt(...)`. A `Range` object, in turn, has `cloneContents()` method that clones its content and returns as `DocumentFragment` object, that we can insert elsewhere. + +Here's the demo of copying the selected content both as text and as DOM nodes: + +```html run height=100 +<p id="p">Select me: <i>italic</i> and <b>bold</b></p> + +Cloned: <span id="cloned"></span> +<br> +As text: <span id="astext"></span> + +<script> + document.onselectionchange = function() { + let selection = document.getSelection(); + + cloned.innerHTML = astext.innerHTML = ""; + + // Clone DOM nodes from ranges (we support multiselect here) + for (let i = 0; i < selection.rangeCount; i++) { + cloned.append(selection.getRangeAt(i).cloneContents()); + } + + // Get as text + astext.innerHTML += selection; + }; +</script> +``` + +## Selection methods + +We can work with the selection by adding/removing ranges: + +- `getRangeAt(i)` -- get i-th range, starting from `0`. In all browsers except Firefox, only `0` is used. +- `addRange(range)` -- add `range` to selection. All browsers except Firefox ignore the call, if the selection already has an associated range. +- `removeRange(range)` -- remove `range` from the selection. +- `removeAllRanges()` -- remove all ranges. +- `empty()` -- alias to `removeAllRanges`. + +There are also convenience methods to manipulate the selection range directly, without intermediate `Range` calls: + +- `collapse(node, offset)` -- replace selected range with a new one that starts and ends at the given `node`, at position `offset`. +- `setPosition(node, offset)` -- alias to `collapse`. +- `collapseToStart()` - collapse (replace with an empty range) to selection start, +- `collapseToEnd()` - collapse to selection end, +- `extend(node, offset)` - move focus of the selection to the given `node`, position `offset`, +- `setBaseAndExtent(anchorNode, anchorOffset, focusNode, focusOffset)` - replace selection range with the given start `anchorNode/anchorOffset` and end `focusNode/focusOffset`. All content in-between them is selected. +- `selectAllChildren(node)` -- select all children of the `node`. +- `deleteFromDocument()` -- remove selected content from the document. +- `containsNode(node, allowPartialContainment = false)` -- checks whether the selection contains `node` (partially if the second argument is `true`) + +For most tasks these methods are just fine, there's no need to access the underlying `Range` object. + +For example, selecting the whole contents of the paragraph `<p>`: + +```html run +<p id="p">Select me: <i>italic</i> and <b>bold</b></p> + +<script> + // select from 0th child of <p> to the last child + document.getSelection().setBaseAndExtent(p, 0, p, p.childNodes.length); +</script> +``` + +The same thing using ranges: + +```html run +<p id="p">Select me: <i>italic</i> and <b>bold</b></p> + +<script> + let range = new Range(); + range.selectNodeContents(p); // or selectNode(p) to select the <p> tag too + + document.getSelection().removeAllRanges(); // clear existing selection if any + document.getSelection().addRange(range); +</script> +``` + +```smart header="To select something, remove the existing selection first" +If a document selection already exists, empty it first with `removeAllRanges()`. And then add ranges. Otherwise, all browsers except Firefox ignore new ranges. + +The exception is some selection methods, that replace the existing selection, such as `setBaseAndExtent`. +``` + +## Selection in form controls + +Form elements, such as `input` and `textarea` provide [special API for selection](https://html.spec.whatwg.org/#textFieldSelection), without `Selection` or `Range` objects. As an input value is a pure text, not HTML, there's no need for such objects, everything's much simpler. + +Properties: +- `input.selectionStart` -- position of selection start (writeable), +- `input.selectionEnd` -- position of selection end (writeable), +- `input.selectionDirection` -- selection direction, one of: "forward", "backward" or "none" (if e.g. selected with a double mouse click), + +Events: +- `input.onselect` -- triggers when something is selected. + +Methods: + +- `input.select()` -- selects everything in the text control (can be `textarea` instead of `input`), +- `input.setSelectionRange(start, end, [direction])` -- change the selection to span from position `start` till `end`, in the given direction (optional). +- `input.setRangeText(replacement, [start], [end], [selectionMode])` -- replace a range of text with the new text. + + Optional arguments `start` and `end`, if provided, set the range start and end, otherwise user selection is used. + + The last argument, `selectionMode`, determines how the selection will be set after the text has been replaced. The possible values are: + + - `"select"` -- the newly inserted text will be selected. + - `"start"` -- the selection range collapses just before the inserted text (the cursor will be immediately before it). + - `"end"` -- the selection range collapses just after the inserted text (the cursor will be right after it). + - `"preserve"` -- attempts to preserve the selection. This is the default. + +Now let's see these methods in action. + +### Example: tracking selection + +For example, this code uses `onselect` event to track selection: + +```html run autorun +<textarea id="area" style="width:80%;height:60px"> +Selecting in this text updates values below. +</textarea> +<br> +From <input id="from" disabled> – To <input id="to" disabled> + +<script> + area.onselect = function() { + from.value = area.selectionStart; + to.value = area.selectionEnd; + }; +</script> +``` + +Please note: +- `onselect` triggers when something is selected, but not when the selection is removed. +- `document.onselectionchange` event should not trigger for selections inside a form control, according to the [spec](https://w3c.github.io/selection-api/#dfn-selectionchange), as it's not related to `document` selection and ranges. Some browsers generate it, but we shouldn't rely on it. + + +### Example: moving cursor + +We can change `selectionStart` and `selectionEnd`, that sets the selection. + +An important edge case is when `selectionStart` and `selectionEnd` equal each other. Then it's exactly the cursor position. Or, to rephrase, when nothing is selected, the selection is collapsed at the cursor position. + +So, by setting `selectionStart` and `selectionEnd` to the same value, we move the cursor. + +For example: + +```html run autorun +<textarea id="area" style="width:80%;height:60px"> +Focus on me, the cursor will be at position 10. +</textarea> + +<script> + area.onfocus = () => { + // zero delay setTimeout to run after browser "focus" action finishes + setTimeout(() => { + // we can set any selection + // if start=end, the cursor is exactly at that place + area.selectionStart = area.selectionEnd = 10; + }); + }; +</script> +``` + +### Example: modifying selection + +To modify the content of the selection, we can use `input.setRangeText()` method. Of course, we can read `selectionStart/End` and, with the knowledge of the selection, change the corresponding substring of `value`, but `setRangeText` is more powerful and often more convenient. + +That's a somewhat complex method. In its simplest one-argument form it replaces the user selected range and removes the selection. + +For example, here the user selection will be wrapped by `*...*`: + +```html run autorun +<input id="input" style="width:200px" value="Select here and click the button"> +<button id="button">Wrap selection in stars *...*</button> + +<script> +button.onclick = () => { + if (input.selectionStart == input.selectionEnd) { + return; // nothing is selected + } + + let selected = input.value.slice(input.selectionStart, input.selectionEnd); + input.setRangeText(`*${selected}*`); +}; +</script> +``` + +With more arguments, we can set range `start` and `end`. + +In this example we find `"THIS"` in the input text, replace it and keep the replacement selected: + +```html run autorun +<input id="input" style="width:200px" value="Replace THIS in text"> +<button id="button">Replace THIS</button> + +<script> +button.onclick = () => { + let pos = input.value.indexOf("THIS"); + if (pos >= 0) { + input.setRangeText("*THIS*", pos, pos + 4, "select"); + input.focus(); // focus to make selection visible + } +}; +</script> +``` + +### Example: insert at cursor + +If nothing is selected, or we use equal `start` and `end` in `setRangeText`, then the new text is just inserted, nothing is removed. + +We can also insert something "at the cursor" using `setRangeText`. + +Here's a button that inserts `"HELLO"` at the cursor position and puts the cursor immediately after it. If the selection is not empty, then it gets replaced (we can detect it by comparing `selectionStart!=selectionEnd` and do something else instead): + +```html run autorun +<input id="input" style="width:200px" value="Text Text Text Text Text"> +<button id="button">Insert "HELLO" at cursor</button> + +<script> + button.onclick = () => { + input.setRangeText("HELLO", input.selectionStart, input.selectionEnd, "end"); + input.focus(); + }; +</script> +``` + + +## Making unselectable + +To make something unselectable, there are three ways: + +1. Use CSS property `user-select: none`. + + ```html run + <style> + #elem { + user-select: none; + } + </style> + <div>Selectable <div id="elem">Unselectable</div> Selectable</div> + ``` + + This doesn't allow the selection to start at `elem`. But the user may start the selection elsewhere and include `elem` into it. + + Then `elem` will become a part of `document.getSelection()`, so the selection actually happens, but its content is usually ignored in copy-paste. + + +2. Prevent default action in `onselectstart` or `mousedown` events. + + ```html run + <div>Selectable <div id="elem">Unselectable</div> Selectable</div> + + <script> + elem.onselectstart = () => false; + </script> + ``` + + This prevents starting the selection on `elem`, but the visitor may start it at another element, then extend to `elem`. + + That's convenient when there's another event handler on the same action that triggers the select (e.g. `mousedown`). So we disable the selection to avoid conflict, still allowing `elem` contents to be copied. + +3. We can also clear the selection post-factum after it happens with `document.getSelection().empty()`. That's rarely used, as this causes unwanted blinking as the selection appears-disappears. + +## References + +- [DOM spec: Range](https://dom.spec.whatwg.org/#ranges) +- [Selection API](https://www.w3.org/TR/selection-api/#dom-globaleventhandlers-onselectstart) +- [HTML spec: APIs for the text control selections](https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#textFieldSelection) + + +## Summary + +We covered two different APIs for selections: + +1. For document: `Selection` and `Range` objects. +2. For `input`, `textarea`: additional methods and properties. + +The second API is very simple, as it works with text. + +The most used recipes are probably: + +1. Getting the selection: + ```js + let selection = document.getSelection(); + + let cloned = /* element to clone the selected nodes to */; + + // then apply Range methods to selection.getRangeAt(0) + // or, like here, to all ranges to support multi-select + for (let i = 0; i < selection.rangeCount; i++) { + cloned.append(selection.getRangeAt(i).cloneContents()); + } + ``` +2. Setting the selection: + ```js + let selection = document.getSelection(); + + // directly: + selection.setBaseAndExtent(...from...to...); + + // or we can create a range and: + selection.removeAllRanges(); + selection.addRange(range); + ``` + +And finally, about the cursor. The cursor position in editable elements, like `<textarea>` is always at the start or the end of the selection. We can use it to get cursor position or to move the cursor by setting `elem.selectionStart` and `elem.selectionEnd`. diff --git a/2-ui/99-ui-misc/02-selection-range/range-example-p-0-1.svg b/2-ui/99-ui-misc/02-selection-range/range-example-p-0-1.svg new file mode 100644 index 000000000..a97d1b47a --- /dev/null +++ b/2-ui/99-ui-misc/02-selection-range/range-example-p-0-1.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="640" height="89" viewBox="0 0 640 89"><defs><style>@import url(https://fonts.googleapis.com/css?family=Open+Sans:bold,italic,bolditalic%7CPT+Mono);@font-face{font-family:'PT Mono';font-weight:700;font-style:normal;src:local('PT MonoBold'),url(/font/PTMonoBold.woff2) format('woff2'),url(/font/PTMonoBold.woff) format('woff'),url(/font/PTMonoBold.ttf) format('truetype')}</style></defs><defs><path id="path-1" d="M47 35h262v21H47z"/><mask id="mask-2" width="262" height="21" x="0" y="0" fill="#fff" maskContentUnits="userSpaceOnUse" maskUnits="objectBoundingBox"><use xlink:href="#path-1"/></mask></defs><g id="selection-range" fill="none" fill-rule="evenodd" stroke="none" stroke-width="1"><g id="range-example-p-0-1.svg"><use id="Rectangle" fill="#C9DCEA" stroke="#C9DCEA" stroke-dasharray="5,2" stroke-width="2" mask="url(#mask-2)" xlink:href="#path-1"/><g id="<p>Example:-<i>itali" fill="#AF6E24" fill-rule="nonzero" transform="translate(13 35)"><path id="<p>Example:<i>italic</i>and<b>bold</b></p>" d="M.81 10.51v-.522l8.478-5.166.684 1.116-7.146 4.23 7.164 4.158-.684 1.08L.81 10.51zm12.718-.36a18.063 18.063 0 00-.081-1.512 5.988 5.988 0 00-.063-.468h-1.206V7h2.394l.18 1.26h.09a4.06 4.06 0 011.233-1.053c.498-.282 1.107-.423 1.827-.423 1.284 0 2.25.354 2.898 1.062.648.708.972 1.866.972 3.474 0 .756-.111 1.437-.333 2.043a4.295 4.295 0 01-.945 1.539c-.408.42-.9.744-1.476.972a5.141 5.141 0 01-1.908.342c-.252 0-.477-.009-.675-.027a5.93 5.93 0 01-.54-.072 4.255 4.255 0 01-.477-.117 6.561 6.561 0 01-.504-.18v3.78h-1.386v-9.45zm4.14-2.052c-.36 0-.699.066-1.017.198a3.034 3.034 0 00-1.449 1.242 2.118 2.118 0 00-.288.792v4.104a3.3 3.3 0 00.891.423c.33.102.765.153 1.305.153.96 0 1.728-.315 2.304-.945.576-.63.864-1.551.864-2.763 0-1.02-.201-1.809-.603-2.367-.402-.558-1.071-.837-2.007-.837zm7.426 7.308l-.684-1.08 7.164-4.158-7.146-4.23.684-1.116 8.478 5.166v.522l-8.496 4.896zM37.326 3.4h7.398v1.332H38.82v4.122h5.454v1.332H38.82v4.482h5.994V16h-7.488V3.4zm14.428 7.992L48.28 7h1.8l2.592 3.384L55.336 7h1.62l-3.474 4.32 3.69 4.68h-1.728l-2.862-3.69L49.666 16h-1.638l3.726-4.608zm9.19-3.69a5.717 5.717 0 011.746-.648 9.544 9.544 0 011.908-.198c.612 0 1.113.096 1.503.288.39.192.696.441.918.747.222.306.372.654.45 1.044.078.39.117.783.117 1.179 0 .456-.012.942-.036 1.458a66.688 66.688 0 00-.054 1.548c0 .6.036 1.17.108 1.71h1.206V16h-2.394l-.162-1.35h-.09c-.072.108-.18.246-.324.414a2.964 2.964 0 01-.567.495 3.664 3.664 0 01-.855.423c-.336.12-.732.18-1.188.18-.888 0-1.59-.228-2.106-.684-.516-.456-.774-1.08-.774-1.872 0-.612.135-1.122.405-1.53.27-.408.657-.72 1.161-.936.504-.216 1.113-.342 1.827-.378.714-.036 1.515.012 2.403.144.06-.552.069-1.011.027-1.377-.042-.366-.138-.657-.288-.873a1.206 1.206 0 00-.63-.459c-.27-.09-.603-.135-.999-.135-.54 0-1.056.075-1.548.225-.492.15-.93.303-1.314.459l-.45-1.044zm2.646 7.254c.336 0 .648-.054.936-.162.288-.108.54-.246.756-.414a2.743 2.743 0 00.864-1.116v-1.26c-.624-.108-1.2-.162-1.728-.162s-.984.057-1.368.171c-.384.114-.684.291-.9.531-.216.24-.324.552-.324.936 0 .396.135.741.405 1.035.27.294.723.441 1.359.441zM75.516 16v-5.994a9.51 9.51 0 00-.027-.729 2.442 2.442 0 00-.126-.63 1.01 1.01 0 00-.288-.441.734.734 0 00-.495-.162c-.408 0-.753.168-1.035.504-.282.336-.495.756-.639 1.26V16h-1.368V7h.936l.27 1.098h.072c.12-.18.237-.351.351-.513.114-.162.246-.303.396-.423.15-.12.327-.213.531-.279.204-.066.462-.099.774-.099.18 0 .366.027.558.081.192.054.369.138.531.252.162.114.303.267.423.459s.198.426.234.702c.276-.468.585-.834.927-1.098.342-.264.813-.396 1.413-.396.396 0 .717.066.963.198s.438.321.576.567c.138.246.234.54.288.882.054.342.081.723.081 1.143V16h-1.368V9.88c0-.252-.012-.489-.036-.711a2.268 2.268 0 00-.135-.585.967.967 0 00-.27-.396c-.114-.096-.267-.144-.459-.144-.42 0-.774.168-1.062.504-.288.336-.504.816-.648 1.44V16h-1.368zm8.812-5.85a18.063 18.063 0 00-.081-1.512 5.988 5.988 0 00-.063-.468h-1.206V7h2.394l.18 1.26h.09a4.06 4.06 0 011.233-1.053c.498-.282 1.107-.423 1.827-.423 1.284 0 2.25.354 2.898 1.062.648.708.972 1.866.972 3.474 0 .756-.111 1.437-.333 2.043a4.295 4.295 0 01-.945 1.539c-.408.42-.9.744-1.476.972a5.141 5.141 0 01-1.908.342c-.252 0-.477-.009-.675-.027a5.93 5.93 0 01-.54-.072 4.255 4.255 0 01-.477-.117 6.561 6.561 0 01-.504-.18v3.78h-1.386v-9.45zm4.14-2.052c-.36 0-.699.066-1.017.198a3.034 3.034 0 00-1.449 1.242 2.118 2.118 0 00-.288.792v4.104a3.3 3.3 0 00.891.423c.33.102.765.153 1.305.153.96 0 1.728-.315 2.304-.945.576-.63.864-1.551.864-2.763 0-1.02-.201-1.809-.603-2.367-.402-.558-1.071-.837-2.007-.837zM96.542 3.4h2.988v9.576c0 .732.123 1.248.369 1.548.246.3.609.45 1.089.45.336 0 .657-.06.963-.18.306-.12.645-.324 1.017-.612l.648.99a3.988 3.988 0 01-.63.45 4.678 4.678 0 01-1.422.54c-.24.048-.462.072-.666.072a3.81 3.81 0 01-1.188-.171 2.03 2.03 0 01-.873-.549c-.234-.252-.411-.585-.531-.999-.12-.414-.18-.927-.18-1.539v-8.37h-1.584V3.4zm19.18 11.466a4.53 4.53 0 01-.765.54 5.645 5.645 0 01-.963.432 7.06 7.06 0 01-1.089.279 6.633 6.633 0 01-1.143.099c-.72 0-1.356-.111-1.908-.333a3.674 3.674 0 01-1.386-.954 4.158 4.158 0 01-.846-1.485c-.192-.576-.288-1.224-.288-1.944 0-.756.105-1.428.315-2.016.21-.588.513-1.08.909-1.476a3.959 3.959 0 011.44-.909c.564-.21 1.194-.315 1.89-.315.504 0 1.002.066 1.494.198a2.95 2.95 0 011.305.747c.378.366.669.87.873 1.512.204.642.276 1.473.216 2.493h-6.966c0 1.08.291 1.887.873 2.421.582.534 1.359.801 2.331.801.324 0 .645-.039.963-.117.318-.078.621-.171.909-.279.288-.108.543-.228.765-.36.222-.132.393-.252.513-.36l.558 1.026zm-3.798-6.894a4.86 4.86 0 00-1.125.126 2.564 2.564 0 00-.936.423c-.27.198-.492.456-.666.774-.174.318-.285.711-.333 1.179h5.598c-.06-.792-.315-1.407-.765-1.845-.45-.438-1.041-.657-1.773-.657zm10.27-.036c0-.384.108-.681.324-.891.216-.21.504-.315.864-.315.384 0 .684.105.9.315.216.21.324.507.324.891 0 .348-.108.636-.324.864-.216.228-.516.342-.9.342-.36 0-.648-.114-.864-.342-.216-.228-.324-.516-.324-.864zm0 7.074c0-.384.108-.681.324-.891.216-.21.504-.315.864-.315.384 0 .684.105.9.315.216.21.324.507.324.891 0 .348-.108.636-.324.864-.216.228-.516.342-.9.342-.36 0-.648-.114-.864-.342-.216-.228-.324-.516-.324-.864zm20.216-4.5v-.522l8.478-5.166.684 1.116-7.146 4.23 7.164 4.158-.684 1.08-8.496-4.896zM155.29 16v-1.206h3.132V8.206h-3.132V7h4.572v7.794h3.06V16h-7.632zm2.646-11.556c0-.324.108-.603.324-.837.216-.234.492-.351.828-.351.348 0 .639.117.873.351.234.234.351.513.351.837 0 .312-.117.576-.351.792a1.238 1.238 0 01-.873.324c-.336 0-.612-.108-.828-.324a1.077 1.077 0 01-.324-.792zm8.758 10.962l-.684-1.08 7.164-4.158-7.146-4.23.684-1.116 8.478 5.166v.522l-8.496 4.896zM178.89 16v-1.206h3.132V8.206h-3.132V7h4.572v7.794h3.06V16h-7.632zm2.646-11.556c0-.324.108-.603.324-.837.216-.234.492-.351.828-.351.348 0 .639.117.873.351.234.234.351.513.351.837 0 .312-.117.576-.351.792a1.238 1.238 0 01-.873.324c-.336 0-.612-.108-.828-.324a1.077 1.077 0 01-.324-.792zM189.358 7h2.142V5.218l1.404-.396V7h4.806v1.206h-4.806v4.248c0 .876.213 1.524.639 1.944.426.42 1.035.63 1.827.63.54 0 1.011-.102 1.413-.306a7.614 7.614 0 001.089-.666l.468 1.062c-.42.336-.921.606-1.503.81a5.377 5.377 0 01-1.791.306c-.48 0-.933-.069-1.359-.207a3.12 3.12 0 01-1.125-.639 3.06 3.06 0 01-.774-1.107c-.192-.45-.288-.987-.288-1.611V8.206h-2.142V7zm13.186.702a5.717 5.717 0 011.746-.648 9.544 9.544 0 011.908-.198c.612 0 1.113.096 1.503.288.39.192.696.441.918.747.222.306.372.654.45 1.044.078.39.117.783.117 1.179 0 .456-.012.942-.036 1.458a66.688 66.688 0 00-.054 1.548c0 .6.036 1.17.108 1.71h1.206V16h-2.394l-.162-1.35h-.09c-.072.108-.18.246-.324.414a2.964 2.964 0 01-.567.495 3.664 3.664 0 01-.855.423c-.336.12-.732.18-1.188.18-.888 0-1.59-.228-2.106-.684-.516-.456-.774-1.08-.774-1.872 0-.612.135-1.122.405-1.53.27-.408.657-.72 1.161-.936.504-.216 1.113-.342 1.827-.378.714-.036 1.515.012 2.403.144.06-.552.069-1.011.027-1.377-.042-.366-.138-.657-.288-.873a1.206 1.206 0 00-.63-.459c-.27-.09-.603-.135-.999-.135-.54 0-1.056.075-1.548.225-.492.15-.93.303-1.314.459l-.45-1.044zm2.646 7.254c.336 0 .648-.054.936-.162.288-.108.54-.246.756-.414a2.743 2.743 0 00.864-1.116v-1.26c-.624-.108-1.2-.162-1.728-.162s-.984.057-1.368.171c-.384.114-.684.291-.9.531-.216.24-.324.552-.324.936 0 .396.135.741.405 1.035.27.294.723.441 1.359.441zM214.542 3.4h2.988v9.576c0 .732.123 1.248.369 1.548.246.3.609.45 1.089.45.336 0 .657-.06.963-.18.306-.12.645-.324 1.017-.612l.648.99a3.988 3.988 0 01-.63.45 4.678 4.678 0 01-1.422.54c-.24.048-.462.072-.666.072a3.81 3.81 0 01-1.188-.171 2.03 2.03 0 01-.873-.549c-.234-.252-.411-.585-.531-.999-.12-.414-.18-.927-.18-1.539v-8.37h-1.584V3.4zM226.09 16v-1.206h3.132V8.206h-3.132V7h4.572v7.794h3.06V16h-7.632zm2.646-11.556c0-.324.108-.603.324-.837.216-.234.492-.351.828-.351.348 0 .639.117.873.351.234.234.351.513.351.837 0 .312-.117.576-.351.792a1.238 1.238 0 01-.873.324c-.336 0-.612-.108-.828-.324a1.077 1.077 0 01-.324-.792zm15.166 3.942a7.111 7.111 0 00-.891-.243 4.64 4.64 0 00-.945-.099c-1.176 0-2.052.276-2.628.828-.576.552-.864 1.428-.864 2.628 0 .528.084.999.252 1.413.168.414.408.765.72 1.053.312.288.687.51 1.125.666.438.156.921.234 1.449.234.564 0 1.113-.096 1.647-.288.534-.192.981-.444 1.341-.756l.63 1.044a5.095 5.095 0 01-.63.45 6.053 6.053 0 01-1.971.774 6.38 6.38 0 01-1.305.126c-.78 0-1.467-.111-2.061-.333a3.914 3.914 0 01-1.485-.954 4.083 4.083 0 01-.9-1.494 5.818 5.818 0 01-.306-1.935c0-.756.105-1.428.315-2.016.21-.588.513-1.08.909-1.476a3.959 3.959 0 011.44-.909c.564-.21 1.194-.315 1.89-.315.888 0 1.611.078 2.169.234.558.156 1.029.33 1.413.522l-.018.054v2.502h-1.296v-1.71zm4.708 2.124v-.522l8.478-5.166.684 1.116-7.146 4.23 7.164 4.158-.684 1.08-8.496-4.896zm19.108-7.326l1.134.504-6.57 14.832-1.134-.504 6.57-14.832zM273.29 16v-1.206h3.132V8.206h-3.132V7h4.572v7.794h3.06V16h-7.632zm2.646-11.556c0-.324.108-.603.324-.837.216-.234.492-.351.828-.351.348 0 .639.117.873.351.234.234.351.513.351.837 0 .312-.117.576-.351.792a1.238 1.238 0 01-.873.324c-.336 0-.612-.108-.828-.324a1.077 1.077 0 01-.324-.792zm8.758 10.962l-.684-1.08 7.164-4.158-7.146-4.23.684-1.116 8.478 5.166v.522l-8.496 4.896zm24.05-7.704a5.717 5.717 0 011.746-.648 9.544 9.544 0 011.908-.198c.612 0 1.113.096 1.503.288.39.192.696.441.918.747.222.306.372.654.45 1.044.078.39.117.783.117 1.179 0 .456-.012.942-.036 1.458a66.688 66.688 0 00-.054 1.548c0 .6.036 1.17.108 1.71h1.206V16h-2.394l-.162-1.35h-.09c-.072.108-.18.246-.324.414a2.964 2.964 0 01-.567.495 3.664 3.664 0 01-.855.423c-.336.12-.732.18-1.188.18-.888 0-1.59-.228-2.106-.684-.516-.456-.774-1.08-.774-1.872 0-.612.135-1.122.405-1.53.27-.408.657-.72 1.161-.936.504-.216 1.113-.342 1.827-.378.714-.036 1.515.012 2.403.144.06-.552.069-1.011.027-1.377-.042-.366-.138-.657-.288-.873a1.206 1.206 0 00-.63-.459c-.27-.09-.603-.135-.999-.135-.54 0-1.056.075-1.548.225-.492.15-.93.303-1.314.459l-.45-1.044zm2.646 7.254c.336 0 .648-.054.936-.162.288-.108.54-.246.756-.414a2.743 2.743 0 00.864-1.116v-1.26c-.624-.108-1.2-.162-1.728-.162s-.984.057-1.368.171c-.384.114-.684.291-.9.531-.216.24-.324.552-.324.936 0 .396.135.741.405 1.035.27.294.723.441 1.359.441zm8.884-4.806a18.063 18.063 0 00-.081-1.512 5.988 5.988 0 00-.063-.468h-1.206V7h2.412l.162 1.458h.09c.12-.204.279-.405.477-.603a3.741 3.741 0 011.575-.927 3.593 3.593 0 011.026-.144c.552 0 1.041.06 1.467.18.426.12.78.333 1.062.639.282.306.495.72.639 1.242.144.522.216 1.185.216 1.989V16h-1.404v-4.896c0-.996-.162-1.746-.486-2.25-.324-.504-.912-.756-1.764-.756-.312 0-.615.063-.909.189a3.137 3.137 0 00-.801.495c-.24.204-.45.441-.63.711-.18.27-.312.555-.396.855V16h-1.386v-5.85zm16.408-6.75h2.916v9.522c0 .108.006.243.018.405a20.058 20.058 0 00.108 1.044c.024.174.048.327.072.459h1.206V16h-2.394l-.18-1.386h-.072c-.264.456-.657.837-1.179 1.143-.522.306-1.125.459-1.809.459-1.356 0-2.355-.381-2.997-1.143-.642-.762-.963-1.947-.963-3.555 0-.756.108-1.425.324-2.007a3.873 3.873 0 01.927-1.458c.402-.39.885-.687 1.449-.891.564-.204 1.194-.306 1.89-.306.252 0 .477.006.675.018.198.012.381.03.549.054.168.024.327.057.477.099.15.042.315.087.495.135V4.606h-1.512V3.4zm-1.08 11.61c.732 0 1.308-.189 1.728-.567.42-.378.708-.945.864-1.701V8.566a2.788 2.788 0 00-.891-.396c-.33-.084-.765-.126-1.305-.126-.96 0-1.716.279-2.268.837-.552.558-.828 1.437-.828 2.637 0 .492.045.951.135 1.377.09.426.24.795.45 1.107.21.312.489.558.837.738.348.18.774.27 1.278.27zm19.208-4.5v-.522l8.478-5.166.684 1.116-7.146 4.23 7.164 4.158-.684 1.08-8.496-4.896zm11.026-7.11h2.88v4.626h.09a3.082 3.082 0 011.206-.918 3.94 3.94 0 011.602-.324c2.64 0 3.96 1.524 3.96 4.572 0 1.548-.426 2.733-1.278 3.555-.852.822-2.064 1.233-3.636 1.233a8.655 8.655 0 01-2.016-.216c-.6-.144-1.038-.312-1.314-.504V4.606h-1.494V3.4zm5.598 4.59c-.72 0-1.302.204-1.746.612-.444.408-.768.984-.972 1.728v4.14c.276.144.606.258.99.342a5.63 5.63 0 001.206.126c.48 0 .915-.069 1.305-.207.39-.138.723-.354.999-.648.276-.294.489-.669.639-1.125.15-.456.225-.996.225-1.62 0-.456-.048-.888-.144-1.296a3.146 3.146 0 00-.459-1.071 2.208 2.208 0 00-.819-.72c-.336-.174-.744-.261-1.224-.261zm7.66 7.416l-.684-1.08 7.164-4.158-7.146-4.23.684-1.116 8.478 5.166v.522l-8.496 4.896zM389.436 3.4h2.88v4.626h.09a3.082 3.082 0 011.206-.918 3.94 3.94 0 011.602-.324c2.64 0 3.96 1.524 3.96 4.572 0 1.548-.426 2.733-1.278 3.555-.852.822-2.064 1.233-3.636 1.233a8.655 8.655 0 01-2.016-.216c-.6-.144-1.038-.312-1.314-.504V4.606h-1.494V3.4zm5.598 4.59c-.72 0-1.302.204-1.746.612-.444.408-.768.984-.972 1.728v4.14c.276.144.606.258.99.342a5.63 5.63 0 001.206.126c.48 0 .915-.069 1.305-.207.39-.138.723-.354.999-.648.276-.294.489-.669.639-1.125.15-.456.225-.996.225-1.62 0-.456-.048-.888-.144-1.296a3.146 3.146 0 00-.459-1.071 2.208 2.208 0 00-.819-.72c-.336-.174-.744-.261-1.224-.261zm7.192 3.51c0-1.452.378-2.601 1.134-3.447.756-.846 1.836-1.269 3.24-1.269.756 0 1.407.123 1.953.369s.999.579 1.359.999c.36.42.627.918.801 1.494.174.576.261 1.194.261 1.854 0 .72-.096 1.371-.288 1.953a4.057 4.057 0 01-.846 1.485 3.738 3.738 0 01-1.377.945c-.546.222-1.167.333-1.863.333-.744 0-1.392-.123-1.944-.369a3.815 3.815 0 01-1.368-.999 4.073 4.073 0 01-.801-1.494 6.381 6.381 0 01-.261-1.854zm1.494 0c0 .42.051.84.153 1.26.102.42.267.798.495 1.134.228.336.525.606.891.81.366.204.813.306 1.341.306.96 0 1.683-.297 2.169-.891.486-.594.729-1.467.729-2.619 0-.432-.051-.855-.153-1.269a3.353 3.353 0 00-.504-1.125 2.656 2.656 0 00-.9-.81c-.366-.204-.813-.306-1.341-.306-.96 0-1.68.294-2.16.882-.48.588-.72 1.464-.72 2.628zm11.422-8.1h2.988v9.576c0 .732.123 1.248.369 1.548.246.3.609.45 1.089.45.336 0 .657-.06.963-.18.306-.12.645-.324 1.017-.612l.648.99a3.988 3.988 0 01-.63.45 4.678 4.678 0 01-1.422.54c-.24.048-.462.072-.666.072a3.81 3.81 0 01-1.188-.171 2.03 2.03 0 01-.873-.549c-.234-.252-.411-.585-.531-.999-.12-.414-.18-.927-.18-1.539v-8.37h-1.584V3.4zm15.94 0h2.916v9.522c0 .108.006.243.018.405a20.058 20.058 0 00.108 1.044c.024.174.048.327.072.459h1.206V16h-2.394l-.18-1.386h-.072c-.264.456-.657.837-1.179 1.143-.522.306-1.125.459-1.809.459-1.356 0-2.355-.381-2.997-1.143-.642-.762-.963-1.947-.963-3.555 0-.756.108-1.425.324-2.007a3.873 3.873 0 01.927-1.458c.402-.39.885-.687 1.449-.891.564-.204 1.194-.306 1.89-.306.252 0 .477.006.675.018.198.012.381.03.549.054.168.024.327.057.477.099.15.042.315.087.495.135V4.606h-1.512V3.4zm-1.08 11.61c.732 0 1.308-.189 1.728-.567.42-.378.708-.945.864-1.701V8.566a2.788 2.788 0 00-.891-.396c-.33-.084-.765-.126-1.305-.126-.96 0-1.716.279-2.268.837-.552.558-.828 1.437-.828 2.637 0 .492.045.951.135 1.377.09.426.24.795.45 1.107.21.312.489.558.837.738.348.18.774.27 1.278.27zm7.408-4.5v-.522l8.478-5.166.684 1.116-7.146 4.23 7.164 4.158-.684 1.08-8.496-4.896zm19.108-7.326l1.134.504-6.57 14.832-1.134-.504 6.57-14.832zm3.718.216h2.88v4.626h.09a3.082 3.082 0 011.206-.918 3.94 3.94 0 011.602-.324c2.64 0 3.96 1.524 3.96 4.572 0 1.548-.426 2.733-1.278 3.555-.852.822-2.064 1.233-3.636 1.233a8.655 8.655 0 01-2.016-.216c-.6-.144-1.038-.312-1.314-.504V4.606h-1.494V3.4zm5.598 4.59c-.72 0-1.302.204-1.746.612-.444.408-.768.984-.972 1.728v4.14c.276.144.606.258.99.342a5.63 5.63 0 001.206.126c.48 0 .915-.069 1.305-.207.39-.138.723-.354.999-.648.276-.294.489-.669.639-1.125.15-.456.225-.996.225-1.62 0-.456-.048-.888-.144-1.296a3.146 3.146 0 00-.459-1.071 2.208 2.208 0 00-.819-.72c-.336-.174-.744-.261-1.224-.261zm7.66 7.416l-.684-1.08 7.164-4.158-7.146-4.23.684-1.116 8.478 5.166v.522l-8.496 4.896zm11.116-4.896v-.522l8.478-5.166.684 1.116-7.146 4.23 7.164 4.158-.684 1.08-8.496-4.896zm19.108-7.326l1.134.504-6.57 14.832-1.134-.504 6.57-14.832zm5.41 6.966a18.063 18.063 0 00-.081-1.512 5.988 5.988 0 00-.063-.468h-1.206V7h2.394l.18 1.26h.09a4.06 4.06 0 011.233-1.053c.498-.282 1.107-.423 1.827-.423 1.284 0 2.25.354 2.898 1.062.648.708.972 1.866.972 3.474 0 .756-.111 1.437-.333 2.043a4.295 4.295 0 01-.945 1.539c-.408.42-.9.744-1.476.972a5.141 5.141 0 01-1.908.342c-.252 0-.477-.009-.675-.027a5.93 5.93 0 01-.54-.072 4.255 4.255 0 01-.477-.117 6.561 6.561 0 01-.504-.18v3.78h-1.386v-9.45zm4.14-2.052c-.36 0-.699.066-1.017.198a3.034 3.034 0 00-1.449 1.242 2.118 2.118 0 00-.288.792v4.104a3.3 3.3 0 00.891.423c.33.102.765.153 1.305.153.96 0 1.728-.315 2.304-.945.576-.63.864-1.551.864-2.763 0-1.02-.201-1.809-.603-2.367-.402-.558-1.071-.837-2.007-.837zm7.426 7.308l-.684-1.08 7.164-4.158-7.146-4.23.684-1.116 8.478 5.166v.522l-8.496 4.896z"/></g><path id="Path-Copy" stroke="#C06334" stroke-width="2" d="M48 57v11h102V57"/><path id="Path-Copy-2" stroke="#C06334" stroke-width="2" d="M154 57v11h154V57"/><text id="0" fill="#181717" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="93" y="84">0</tspan></text><text id="1" fill="#181717" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="226" y="84">1</tspan></text><text id="2" fill="#181717" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="334" y="84">2</tspan></text><text id="3" fill="#181717" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="428" y="84">3</tspan></text><path id="Path-Copy-3" stroke="#C06334" stroke-width="2" d="M312 57v11h53V57"/><path id="Path-Copy-4" stroke="#C06334" stroke-width="2" d="M369 57v11h128V57"/></g></g></svg> \ No newline at end of file diff --git a/2-ui/99-ui-misc/02-selection-range/range-example-p-1-3.svg b/2-ui/99-ui-misc/02-selection-range/range-example-p-1-3.svg new file mode 100644 index 000000000..2a8f9aca3 --- /dev/null +++ b/2-ui/99-ui-misc/02-selection-range/range-example-p-1-3.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="640" height="89" viewBox="0 0 640 89"><defs><style>@import url(https://fonts.googleapis.com/css?family=Open+Sans:bold,italic,bolditalic%7CPT+Mono);@font-face{font-family:'PT Mono';font-weight:700;font-style:normal;src:local('PT MonoBold'),url(/font/PTMonoBold.woff2) format('woff2'),url(/font/PTMonoBold.woff) format('woff'),url(/font/PTMonoBold.ttf) format('truetype')}</style></defs><defs><path id="path-1" d="M153 35h345v21H153z"/><mask id="mask-2" width="345" height="21" x="0" y="0" fill="#fff" maskContentUnits="userSpaceOnUse" maskUnits="objectBoundingBox"><use xlink:href="#path-1"/></mask></defs><g id="selection-range" fill="none" fill-rule="evenodd" stroke="none" stroke-width="1"><g id="range-example-p-1-3.svg"><use id="Rectangle" fill="#C9DCEA" stroke="#C9DCEA" stroke-dasharray="5,2" stroke-width="2" mask="url(#mask-2)" xlink:href="#path-1"/><path id="Path-Copy" stroke="#C06334" stroke-width="2" d="M48 57v11h102V57"/><path id="Path-Copy-2" stroke="#C06334" stroke-width="2" d="M154 57v11h154V57"/><text id="0" fill="#181717" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="93" y="84">0</tspan></text><text id="1" fill="#181717" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="226" y="84">1</tspan></text><text id="2" fill="#181717" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="334" y="84">2</tspan></text><text id="3" fill="#181717" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="428" y="84">3</tspan></text><path id="Path-Copy-3" stroke="#C06334" stroke-width="2" d="M312 57v11h53V57"/><path id="Path-Copy-4" stroke="#C06334" stroke-width="2" d="M369 57v11h128V57"/><g id="<p>Example:-<i>itali" fill="#AF6E24" fill-rule="nonzero" transform="translate(13 35)"><path id="<p>Example:<i>italic</i>and<b>bold</b></p>" d="M.81 10.51v-.522l8.478-5.166.684 1.116-7.146 4.23 7.164 4.158-.684 1.08L.81 10.51zm12.718-.36a18.063 18.063 0 00-.081-1.512 5.988 5.988 0 00-.063-.468h-1.206V7h2.394l.18 1.26h.09a4.06 4.06 0 011.233-1.053c.498-.282 1.107-.423 1.827-.423 1.284 0 2.25.354 2.898 1.062.648.708.972 1.866.972 3.474 0 .756-.111 1.437-.333 2.043a4.295 4.295 0 01-.945 1.539c-.408.42-.9.744-1.476.972a5.141 5.141 0 01-1.908.342c-.252 0-.477-.009-.675-.027a5.93 5.93 0 01-.54-.072 4.255 4.255 0 01-.477-.117 6.561 6.561 0 01-.504-.18v3.78h-1.386v-9.45zm4.14-2.052c-.36 0-.699.066-1.017.198a3.034 3.034 0 00-1.449 1.242 2.118 2.118 0 00-.288.792v4.104a3.3 3.3 0 00.891.423c.33.102.765.153 1.305.153.96 0 1.728-.315 2.304-.945.576-.63.864-1.551.864-2.763 0-1.02-.201-1.809-.603-2.367-.402-.558-1.071-.837-2.007-.837zm7.426 7.308l-.684-1.08 7.164-4.158-7.146-4.23.684-1.116 8.478 5.166v.522l-8.496 4.896zM37.326 3.4h7.398v1.332H38.82v4.122h5.454v1.332H38.82v4.482h5.994V16h-7.488V3.4zm14.428 7.992L48.28 7h1.8l2.592 3.384L55.336 7h1.62l-3.474 4.32 3.69 4.68h-1.728l-2.862-3.69L49.666 16h-1.638l3.726-4.608zm9.19-3.69a5.717 5.717 0 011.746-.648 9.544 9.544 0 011.908-.198c.612 0 1.113.096 1.503.288.39.192.696.441.918.747.222.306.372.654.45 1.044.078.39.117.783.117 1.179 0 .456-.012.942-.036 1.458a66.688 66.688 0 00-.054 1.548c0 .6.036 1.17.108 1.71h1.206V16h-2.394l-.162-1.35h-.09c-.072.108-.18.246-.324.414a2.964 2.964 0 01-.567.495 3.664 3.664 0 01-.855.423c-.336.12-.732.18-1.188.18-.888 0-1.59-.228-2.106-.684-.516-.456-.774-1.08-.774-1.872 0-.612.135-1.122.405-1.53.27-.408.657-.72 1.161-.936.504-.216 1.113-.342 1.827-.378.714-.036 1.515.012 2.403.144.06-.552.069-1.011.027-1.377-.042-.366-.138-.657-.288-.873a1.206 1.206 0 00-.63-.459c-.27-.09-.603-.135-.999-.135-.54 0-1.056.075-1.548.225-.492.15-.93.303-1.314.459l-.45-1.044zm2.646 7.254c.336 0 .648-.054.936-.162.288-.108.54-.246.756-.414a2.743 2.743 0 00.864-1.116v-1.26c-.624-.108-1.2-.162-1.728-.162s-.984.057-1.368.171c-.384.114-.684.291-.9.531-.216.24-.324.552-.324.936 0 .396.135.741.405 1.035.27.294.723.441 1.359.441zM75.516 16v-5.994a9.51 9.51 0 00-.027-.729 2.442 2.442 0 00-.126-.63 1.01 1.01 0 00-.288-.441.734.734 0 00-.495-.162c-.408 0-.753.168-1.035.504-.282.336-.495.756-.639 1.26V16h-1.368V7h.936l.27 1.098h.072c.12-.18.237-.351.351-.513.114-.162.246-.303.396-.423.15-.12.327-.213.531-.279.204-.066.462-.099.774-.099.18 0 .366.027.558.081.192.054.369.138.531.252.162.114.303.267.423.459s.198.426.234.702c.276-.468.585-.834.927-1.098.342-.264.813-.396 1.413-.396.396 0 .717.066.963.198s.438.321.576.567c.138.246.234.54.288.882.054.342.081.723.081 1.143V16h-1.368V9.88c0-.252-.012-.489-.036-.711a2.268 2.268 0 00-.135-.585.967.967 0 00-.27-.396c-.114-.096-.267-.144-.459-.144-.42 0-.774.168-1.062.504-.288.336-.504.816-.648 1.44V16h-1.368zm8.812-5.85a18.063 18.063 0 00-.081-1.512 5.988 5.988 0 00-.063-.468h-1.206V7h2.394l.18 1.26h.09a4.06 4.06 0 011.233-1.053c.498-.282 1.107-.423 1.827-.423 1.284 0 2.25.354 2.898 1.062.648.708.972 1.866.972 3.474 0 .756-.111 1.437-.333 2.043a4.295 4.295 0 01-.945 1.539c-.408.42-.9.744-1.476.972a5.141 5.141 0 01-1.908.342c-.252 0-.477-.009-.675-.027a5.93 5.93 0 01-.54-.072 4.255 4.255 0 01-.477-.117 6.561 6.561 0 01-.504-.18v3.78h-1.386v-9.45zm4.14-2.052c-.36 0-.699.066-1.017.198a3.034 3.034 0 00-1.449 1.242 2.118 2.118 0 00-.288.792v4.104a3.3 3.3 0 00.891.423c.33.102.765.153 1.305.153.96 0 1.728-.315 2.304-.945.576-.63.864-1.551.864-2.763 0-1.02-.201-1.809-.603-2.367-.402-.558-1.071-.837-2.007-.837zM96.542 3.4h2.988v9.576c0 .732.123 1.248.369 1.548.246.3.609.45 1.089.45.336 0 .657-.06.963-.18.306-.12.645-.324 1.017-.612l.648.99a3.988 3.988 0 01-.63.45 4.678 4.678 0 01-1.422.54c-.24.048-.462.072-.666.072a3.81 3.81 0 01-1.188-.171 2.03 2.03 0 01-.873-.549c-.234-.252-.411-.585-.531-.999-.12-.414-.18-.927-.18-1.539v-8.37h-1.584V3.4zm19.18 11.466a4.53 4.53 0 01-.765.54 5.645 5.645 0 01-.963.432 7.06 7.06 0 01-1.089.279 6.633 6.633 0 01-1.143.099c-.72 0-1.356-.111-1.908-.333a3.674 3.674 0 01-1.386-.954 4.158 4.158 0 01-.846-1.485c-.192-.576-.288-1.224-.288-1.944 0-.756.105-1.428.315-2.016.21-.588.513-1.08.909-1.476a3.959 3.959 0 011.44-.909c.564-.21 1.194-.315 1.89-.315.504 0 1.002.066 1.494.198a2.95 2.95 0 011.305.747c.378.366.669.87.873 1.512.204.642.276 1.473.216 2.493h-6.966c0 1.08.291 1.887.873 2.421.582.534 1.359.801 2.331.801.324 0 .645-.039.963-.117.318-.078.621-.171.909-.279.288-.108.543-.228.765-.36.222-.132.393-.252.513-.36l.558 1.026zm-3.798-6.894a4.86 4.86 0 00-1.125.126 2.564 2.564 0 00-.936.423c-.27.198-.492.456-.666.774-.174.318-.285.711-.333 1.179h5.598c-.06-.792-.315-1.407-.765-1.845-.45-.438-1.041-.657-1.773-.657zm10.27-.036c0-.384.108-.681.324-.891.216-.21.504-.315.864-.315.384 0 .684.105.9.315.216.21.324.507.324.891 0 .348-.108.636-.324.864-.216.228-.516.342-.9.342-.36 0-.648-.114-.864-.342-.216-.228-.324-.516-.324-.864zm0 7.074c0-.384.108-.681.324-.891.216-.21.504-.315.864-.315.384 0 .684.105.9.315.216.21.324.507.324.891 0 .348-.108.636-.324.864-.216.228-.516.342-.9.342-.36 0-.648-.114-.864-.342-.216-.228-.324-.516-.324-.864zm20.216-4.5v-.522l8.478-5.166.684 1.116-7.146 4.23 7.164 4.158-.684 1.08-8.496-4.896zM155.29 16v-1.206h3.132V8.206h-3.132V7h4.572v7.794h3.06V16h-7.632zm2.646-11.556c0-.324.108-.603.324-.837.216-.234.492-.351.828-.351.348 0 .639.117.873.351.234.234.351.513.351.837 0 .312-.117.576-.351.792a1.238 1.238 0 01-.873.324c-.336 0-.612-.108-.828-.324a1.077 1.077 0 01-.324-.792zm8.758 10.962l-.684-1.08 7.164-4.158-7.146-4.23.684-1.116 8.478 5.166v.522l-8.496 4.896zM178.89 16v-1.206h3.132V8.206h-3.132V7h4.572v7.794h3.06V16h-7.632zm2.646-11.556c0-.324.108-.603.324-.837.216-.234.492-.351.828-.351.348 0 .639.117.873.351.234.234.351.513.351.837 0 .312-.117.576-.351.792a1.238 1.238 0 01-.873.324c-.336 0-.612-.108-.828-.324a1.077 1.077 0 01-.324-.792zM189.358 7h2.142V5.218l1.404-.396V7h4.806v1.206h-4.806v4.248c0 .876.213 1.524.639 1.944.426.42 1.035.63 1.827.63.54 0 1.011-.102 1.413-.306a7.614 7.614 0 001.089-.666l.468 1.062c-.42.336-.921.606-1.503.81a5.377 5.377 0 01-1.791.306c-.48 0-.933-.069-1.359-.207a3.12 3.12 0 01-1.125-.639 3.06 3.06 0 01-.774-1.107c-.192-.45-.288-.987-.288-1.611V8.206h-2.142V7zm13.186.702a5.717 5.717 0 011.746-.648 9.544 9.544 0 011.908-.198c.612 0 1.113.096 1.503.288.39.192.696.441.918.747.222.306.372.654.45 1.044.078.39.117.783.117 1.179 0 .456-.012.942-.036 1.458a66.688 66.688 0 00-.054 1.548c0 .6.036 1.17.108 1.71h1.206V16h-2.394l-.162-1.35h-.09c-.072.108-.18.246-.324.414a2.964 2.964 0 01-.567.495 3.664 3.664 0 01-.855.423c-.336.12-.732.18-1.188.18-.888 0-1.59-.228-2.106-.684-.516-.456-.774-1.08-.774-1.872 0-.612.135-1.122.405-1.53.27-.408.657-.72 1.161-.936.504-.216 1.113-.342 1.827-.378.714-.036 1.515.012 2.403.144.06-.552.069-1.011.027-1.377-.042-.366-.138-.657-.288-.873a1.206 1.206 0 00-.63-.459c-.27-.09-.603-.135-.999-.135-.54 0-1.056.075-1.548.225-.492.15-.93.303-1.314.459l-.45-1.044zm2.646 7.254c.336 0 .648-.054.936-.162.288-.108.54-.246.756-.414a2.743 2.743 0 00.864-1.116v-1.26c-.624-.108-1.2-.162-1.728-.162s-.984.057-1.368.171c-.384.114-.684.291-.9.531-.216.24-.324.552-.324.936 0 .396.135.741.405 1.035.27.294.723.441 1.359.441zM214.542 3.4h2.988v9.576c0 .732.123 1.248.369 1.548.246.3.609.45 1.089.45.336 0 .657-.06.963-.18.306-.12.645-.324 1.017-.612l.648.99a3.988 3.988 0 01-.63.45 4.678 4.678 0 01-1.422.54c-.24.048-.462.072-.666.072a3.81 3.81 0 01-1.188-.171 2.03 2.03 0 01-.873-.549c-.234-.252-.411-.585-.531-.999-.12-.414-.18-.927-.18-1.539v-8.37h-1.584V3.4zM226.09 16v-1.206h3.132V8.206h-3.132V7h4.572v7.794h3.06V16h-7.632zm2.646-11.556c0-.324.108-.603.324-.837.216-.234.492-.351.828-.351.348 0 .639.117.873.351.234.234.351.513.351.837 0 .312-.117.576-.351.792a1.238 1.238 0 01-.873.324c-.336 0-.612-.108-.828-.324a1.077 1.077 0 01-.324-.792zm15.166 3.942a7.111 7.111 0 00-.891-.243 4.64 4.64 0 00-.945-.099c-1.176 0-2.052.276-2.628.828-.576.552-.864 1.428-.864 2.628 0 .528.084.999.252 1.413.168.414.408.765.72 1.053.312.288.687.51 1.125.666.438.156.921.234 1.449.234.564 0 1.113-.096 1.647-.288.534-.192.981-.444 1.341-.756l.63 1.044a5.095 5.095 0 01-.63.45 6.053 6.053 0 01-1.971.774 6.38 6.38 0 01-1.305.126c-.78 0-1.467-.111-2.061-.333a3.914 3.914 0 01-1.485-.954 4.083 4.083 0 01-.9-1.494 5.818 5.818 0 01-.306-1.935c0-.756.105-1.428.315-2.016.21-.588.513-1.08.909-1.476a3.959 3.959 0 011.44-.909c.564-.21 1.194-.315 1.89-.315.888 0 1.611.078 2.169.234.558.156 1.029.33 1.413.522l-.018.054v2.502h-1.296v-1.71zm4.708 2.124v-.522l8.478-5.166.684 1.116-7.146 4.23 7.164 4.158-.684 1.08-8.496-4.896zm19.108-7.326l1.134.504-6.57 14.832-1.134-.504 6.57-14.832zM273.29 16v-1.206h3.132V8.206h-3.132V7h4.572v7.794h3.06V16h-7.632zm2.646-11.556c0-.324.108-.603.324-.837.216-.234.492-.351.828-.351.348 0 .639.117.873.351.234.234.351.513.351.837 0 .312-.117.576-.351.792a1.238 1.238 0 01-.873.324c-.336 0-.612-.108-.828-.324a1.077 1.077 0 01-.324-.792zm8.758 10.962l-.684-1.08 7.164-4.158-7.146-4.23.684-1.116 8.478 5.166v.522l-8.496 4.896zm24.05-7.704a5.717 5.717 0 011.746-.648 9.544 9.544 0 011.908-.198c.612 0 1.113.096 1.503.288.39.192.696.441.918.747.222.306.372.654.45 1.044.078.39.117.783.117 1.179 0 .456-.012.942-.036 1.458a66.688 66.688 0 00-.054 1.548c0 .6.036 1.17.108 1.71h1.206V16h-2.394l-.162-1.35h-.09c-.072.108-.18.246-.324.414a2.964 2.964 0 01-.567.495 3.664 3.664 0 01-.855.423c-.336.12-.732.18-1.188.18-.888 0-1.59-.228-2.106-.684-.516-.456-.774-1.08-.774-1.872 0-.612.135-1.122.405-1.53.27-.408.657-.72 1.161-.936.504-.216 1.113-.342 1.827-.378.714-.036 1.515.012 2.403.144.06-.552.069-1.011.027-1.377-.042-.366-.138-.657-.288-.873a1.206 1.206 0 00-.63-.459c-.27-.09-.603-.135-.999-.135-.54 0-1.056.075-1.548.225-.492.15-.93.303-1.314.459l-.45-1.044zm2.646 7.254c.336 0 .648-.054.936-.162.288-.108.54-.246.756-.414a2.743 2.743 0 00.864-1.116v-1.26c-.624-.108-1.2-.162-1.728-.162s-.984.057-1.368.171c-.384.114-.684.291-.9.531-.216.24-.324.552-.324.936 0 .396.135.741.405 1.035.27.294.723.441 1.359.441zm8.884-4.806a18.063 18.063 0 00-.081-1.512 5.988 5.988 0 00-.063-.468h-1.206V7h2.412l.162 1.458h.09c.12-.204.279-.405.477-.603a3.741 3.741 0 011.575-.927 3.593 3.593 0 011.026-.144c.552 0 1.041.06 1.467.18.426.12.78.333 1.062.639.282.306.495.72.639 1.242.144.522.216 1.185.216 1.989V16h-1.404v-4.896c0-.996-.162-1.746-.486-2.25-.324-.504-.912-.756-1.764-.756-.312 0-.615.063-.909.189a3.137 3.137 0 00-.801.495c-.24.204-.45.441-.63.711-.18.27-.312.555-.396.855V16h-1.386v-5.85zm16.408-6.75h2.916v9.522c0 .108.006.243.018.405a20.058 20.058 0 00.108 1.044c.024.174.048.327.072.459h1.206V16h-2.394l-.18-1.386h-.072c-.264.456-.657.837-1.179 1.143-.522.306-1.125.459-1.809.459-1.356 0-2.355-.381-2.997-1.143-.642-.762-.963-1.947-.963-3.555 0-.756.108-1.425.324-2.007a3.873 3.873 0 01.927-1.458c.402-.39.885-.687 1.449-.891.564-.204 1.194-.306 1.89-.306.252 0 .477.006.675.018.198.012.381.03.549.054.168.024.327.057.477.099.15.042.315.087.495.135V4.606h-1.512V3.4zm-1.08 11.61c.732 0 1.308-.189 1.728-.567.42-.378.708-.945.864-1.701V8.566a2.788 2.788 0 00-.891-.396c-.33-.084-.765-.126-1.305-.126-.96 0-1.716.279-2.268.837-.552.558-.828 1.437-.828 2.637 0 .492.045.951.135 1.377.09.426.24.795.45 1.107.21.312.489.558.837.738.348.18.774.27 1.278.27zm19.208-4.5v-.522l8.478-5.166.684 1.116-7.146 4.23 7.164 4.158-.684 1.08-8.496-4.896zm11.026-7.11h2.88v4.626h.09a3.082 3.082 0 011.206-.918 3.94 3.94 0 011.602-.324c2.64 0 3.96 1.524 3.96 4.572 0 1.548-.426 2.733-1.278 3.555-.852.822-2.064 1.233-3.636 1.233a8.655 8.655 0 01-2.016-.216c-.6-.144-1.038-.312-1.314-.504V4.606h-1.494V3.4zm5.598 4.59c-.72 0-1.302.204-1.746.612-.444.408-.768.984-.972 1.728v4.14c.276.144.606.258.99.342a5.63 5.63 0 001.206.126c.48 0 .915-.069 1.305-.207.39-.138.723-.354.999-.648.276-.294.489-.669.639-1.125.15-.456.225-.996.225-1.62 0-.456-.048-.888-.144-1.296a3.146 3.146 0 00-.459-1.071 2.208 2.208 0 00-.819-.72c-.336-.174-.744-.261-1.224-.261zm7.66 7.416l-.684-1.08 7.164-4.158-7.146-4.23.684-1.116 8.478 5.166v.522l-8.496 4.896zM389.436 3.4h2.88v4.626h.09a3.082 3.082 0 011.206-.918 3.94 3.94 0 011.602-.324c2.64 0 3.96 1.524 3.96 4.572 0 1.548-.426 2.733-1.278 3.555-.852.822-2.064 1.233-3.636 1.233a8.655 8.655 0 01-2.016-.216c-.6-.144-1.038-.312-1.314-.504V4.606h-1.494V3.4zm5.598 4.59c-.72 0-1.302.204-1.746.612-.444.408-.768.984-.972 1.728v4.14c.276.144.606.258.99.342a5.63 5.63 0 001.206.126c.48 0 .915-.069 1.305-.207.39-.138.723-.354.999-.648.276-.294.489-.669.639-1.125.15-.456.225-.996.225-1.62 0-.456-.048-.888-.144-1.296a3.146 3.146 0 00-.459-1.071 2.208 2.208 0 00-.819-.72c-.336-.174-.744-.261-1.224-.261zm7.192 3.51c0-1.452.378-2.601 1.134-3.447.756-.846 1.836-1.269 3.24-1.269.756 0 1.407.123 1.953.369s.999.579 1.359.999c.36.42.627.918.801 1.494.174.576.261 1.194.261 1.854 0 .72-.096 1.371-.288 1.953a4.057 4.057 0 01-.846 1.485 3.738 3.738 0 01-1.377.945c-.546.222-1.167.333-1.863.333-.744 0-1.392-.123-1.944-.369a3.815 3.815 0 01-1.368-.999 4.073 4.073 0 01-.801-1.494 6.381 6.381 0 01-.261-1.854zm1.494 0c0 .42.051.84.153 1.26.102.42.267.798.495 1.134.228.336.525.606.891.81.366.204.813.306 1.341.306.96 0 1.683-.297 2.169-.891.486-.594.729-1.467.729-2.619 0-.432-.051-.855-.153-1.269a3.353 3.353 0 00-.504-1.125 2.656 2.656 0 00-.9-.81c-.366-.204-.813-.306-1.341-.306-.96 0-1.68.294-2.16.882-.48.588-.72 1.464-.72 2.628zm11.422-8.1h2.988v9.576c0 .732.123 1.248.369 1.548.246.3.609.45 1.089.45.336 0 .657-.06.963-.18.306-.12.645-.324 1.017-.612l.648.99a3.988 3.988 0 01-.63.45 4.678 4.678 0 01-1.422.54c-.24.048-.462.072-.666.072a3.81 3.81 0 01-1.188-.171 2.03 2.03 0 01-.873-.549c-.234-.252-.411-.585-.531-.999-.12-.414-.18-.927-.18-1.539v-8.37h-1.584V3.4zm15.94 0h2.916v9.522c0 .108.006.243.018.405a20.058 20.058 0 00.108 1.044c.024.174.048.327.072.459h1.206V16h-2.394l-.18-1.386h-.072c-.264.456-.657.837-1.179 1.143-.522.306-1.125.459-1.809.459-1.356 0-2.355-.381-2.997-1.143-.642-.762-.963-1.947-.963-3.555 0-.756.108-1.425.324-2.007a3.873 3.873 0 01.927-1.458c.402-.39.885-.687 1.449-.891.564-.204 1.194-.306 1.89-.306.252 0 .477.006.675.018.198.012.381.03.549.054.168.024.327.057.477.099.15.042.315.087.495.135V4.606h-1.512V3.4zm-1.08 11.61c.732 0 1.308-.189 1.728-.567.42-.378.708-.945.864-1.701V8.566a2.788 2.788 0 00-.891-.396c-.33-.084-.765-.126-1.305-.126-.96 0-1.716.279-2.268.837-.552.558-.828 1.437-.828 2.637 0 .492.045.951.135 1.377.09.426.24.795.45 1.107.21.312.489.558.837.738.348.18.774.27 1.278.27zm7.408-4.5v-.522l8.478-5.166.684 1.116-7.146 4.23 7.164 4.158-.684 1.08-8.496-4.896zm19.108-7.326l1.134.504-6.57 14.832-1.134-.504 6.57-14.832zm3.718.216h2.88v4.626h.09a3.082 3.082 0 011.206-.918 3.94 3.94 0 011.602-.324c2.64 0 3.96 1.524 3.96 4.572 0 1.548-.426 2.733-1.278 3.555-.852.822-2.064 1.233-3.636 1.233a8.655 8.655 0 01-2.016-.216c-.6-.144-1.038-.312-1.314-.504V4.606h-1.494V3.4zm5.598 4.59c-.72 0-1.302.204-1.746.612-.444.408-.768.984-.972 1.728v4.14c.276.144.606.258.99.342a5.63 5.63 0 001.206.126c.48 0 .915-.069 1.305-.207.39-.138.723-.354.999-.648.276-.294.489-.669.639-1.125.15-.456.225-.996.225-1.62 0-.456-.048-.888-.144-1.296a3.146 3.146 0 00-.459-1.071 2.208 2.208 0 00-.819-.72c-.336-.174-.744-.261-1.224-.261zm7.66 7.416l-.684-1.08 7.164-4.158-7.146-4.23.684-1.116 8.478 5.166v.522l-8.496 4.896zm11.116-4.896v-.522l8.478-5.166.684 1.116-7.146 4.23 7.164 4.158-.684 1.08-8.496-4.896zm19.108-7.326l1.134.504-6.57 14.832-1.134-.504 6.57-14.832zm5.41 6.966a18.063 18.063 0 00-.081-1.512 5.988 5.988 0 00-.063-.468h-1.206V7h2.394l.18 1.26h.09a4.06 4.06 0 011.233-1.053c.498-.282 1.107-.423 1.827-.423 1.284 0 2.25.354 2.898 1.062.648.708.972 1.866.972 3.474 0 .756-.111 1.437-.333 2.043a4.295 4.295 0 01-.945 1.539c-.408.42-.9.744-1.476.972a5.141 5.141 0 01-1.908.342c-.252 0-.477-.009-.675-.027a5.93 5.93 0 01-.54-.072 4.255 4.255 0 01-.477-.117 6.561 6.561 0 01-.504-.18v3.78h-1.386v-9.45zm4.14-2.052c-.36 0-.699.066-1.017.198a3.034 3.034 0 00-1.449 1.242 2.118 2.118 0 00-.288.792v4.104a3.3 3.3 0 00.891.423c.33.102.765.153 1.305.153.96 0 1.728-.315 2.304-.945.576-.63.864-1.551.864-2.763 0-1.02-.201-1.809-.603-2.367-.402-.558-1.071-.837-2.007-.837zm7.426 7.308l-.684-1.08 7.164-4.158-7.146-4.23.684-1.116 8.478 5.166v.522l-8.496 4.896z"/></g></g></g></svg> \ No newline at end of file diff --git a/2-ui/99-ui-misc/02-selection-range/range-example-p-2-b-3-range.svg b/2-ui/99-ui-misc/02-selection-range/range-example-p-2-b-3-range.svg new file mode 100644 index 000000000..32843436d --- /dev/null +++ b/2-ui/99-ui-misc/02-selection-range/range-example-p-2-b-3-range.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="683" height="229" viewBox="0 0 683 229"><defs><style>@import url(https://fonts.googleapis.com/css?family=Open+Sans:bold,italic,bolditalic%7CPT+Mono);@font-face{font-family:'PT Mono';font-weight:700;font-style:normal;src:local('PT MonoBold'),url(/font/PTMonoBold.woff2) format('woff2'),url(/font/PTMonoBold.woff) format('woff'),url(/font/PTMonoBold.ttf) format('truetype')}</style></defs><defs><path id="path-1" d="M183 54h367v21H183z"/><mask id="mask-2" width="367" height="21" x="0" y="0" fill="#fff" maskContentUnits="userSpaceOnUse" maskUnits="objectBoundingBox"><use xlink:href="#path-1"/></mask></defs><g id="selection-range" fill="none" fill-rule="evenodd" stroke="none" stroke-width="1"><g id="range-example-p-2-b-3-range.svg"><path id="Path" stroke="#C06334" stroke-width="2" d="M160 68v10h106V68"/><path id="Path-Copy-2" stroke="#C06334" stroke-width="2" d="M126 143v19h532v-19"/><path id="Path-Copy" stroke="#C06334" stroke-width="2" d="M514 70v10h50V70"/><use id="Rectangle" fill="#C9DCEA" stroke="#C9DCEA" stroke-dasharray="5,2" stroke-width="2" mask="url(#mask-2)" xlink:href="#path-1"/><text id="startContainer-(<p>." fill="#181717" font-family="PTMono-Regular, PT Mono" font-size="16" font-weight="normal"><tspan x="10.3" y="118">startContainer</tspan> <tspan x=".7" y="136">(<p>.firstChild)</tspan></text><path id="Line-Copy" fill="#C06334" fill-rule="nonzero" d="M183 74l7 14h-6v16h-2V88h-6l7-14zM155 81l-6.166 14.387-3.876-4.581-15.312 12.957-.763.646-1.292-1.526.763-.646 15.312-12.958-3.875-4.58L155 81zM501 82l-6.166 14.387-3.876-4.581-15.312 12.957-.763.646-1.292-1.526.763-.646 15.312-12.958-3.875-4.58L501 82z"/><path id="Line-Copy-2" fill="#C06334" fill-rule="nonzero" d="M550 73l7 14h-6v16h-2V87h-6l7-14z"/><text id="startOffset-(=2)" fill="#181717" font-family="PTMono-Regular, PT Mono" font-size="16" font-weight="normal"><tspan x="170.2" y="118">startOffset</tspan> <tspan x="203.8" y="136">(=2)</tspan></text><text id="commonAncestorContai" fill="#181717" font-family="PTMono-Regular, PT Mono" font-size="16" font-weight="normal"><tspan x="316.1" y="181">commonAncestorContainer</tspan> <tspan x="402.5" y="199">(<p>)</tspan></text><text id="endContainer-(<b>.fi" fill="#181717" font-family="PTMono-Regular, PT Mono" font-size="16" font-weight="normal"><tspan x="388.9" y="117">endContainer</tspan> <tspan x="369.7" y="135">(<b>.firstChild)</tspan></text><text id="endOffset-(=3)" fill="#181717" font-family="PTMono-Regular, PT Mono" font-size="16" font-weight="normal"><tspan x="537.3" y="118">endOffset</tspan> <tspan x="561.3" y="136">(=3)</tspan></text><g id="<p>Example:-<i>itali" fill="#AF6E24" fill-rule="nonzero" transform="translate(125 54)"><path id="<p>Example:<i>italic</i>and<b>bold</b></p>" d="M.81 10.51v-.522l8.478-5.166.684 1.116-7.146 4.23 7.164 4.158-.684 1.08L.81 10.51zm12.718-.36a18.063 18.063 0 00-.081-1.512 5.988 5.988 0 00-.063-.468h-1.206V7h2.394l.18 1.26h.09a4.06 4.06 0 011.233-1.053c.498-.282 1.107-.423 1.827-.423 1.284 0 2.25.354 2.898 1.062.648.708.972 1.866.972 3.474 0 .756-.111 1.437-.333 2.043a4.295 4.295 0 01-.945 1.539c-.408.42-.9.744-1.476.972a5.141 5.141 0 01-1.908.342c-.252 0-.477-.009-.675-.027a5.93 5.93 0 01-.54-.072 4.255 4.255 0 01-.477-.117 6.561 6.561 0 01-.504-.18v3.78h-1.386v-9.45zm4.14-2.052c-.36 0-.699.066-1.017.198a3.034 3.034 0 00-1.449 1.242 2.118 2.118 0 00-.288.792v4.104a3.3 3.3 0 00.891.423c.33.102.765.153 1.305.153.96 0 1.728-.315 2.304-.945.576-.63.864-1.551.864-2.763 0-1.02-.201-1.809-.603-2.367-.402-.558-1.071-.837-2.007-.837zm7.426 7.308l-.684-1.08 7.164-4.158-7.146-4.23.684-1.116 8.478 5.166v.522l-8.496 4.896zM37.326 3.4h7.398v1.332H38.82v4.122h5.454v1.332H38.82v4.482h5.994V16h-7.488V3.4zm14.428 7.992L48.28 7h1.8l2.592 3.384L55.336 7h1.62l-3.474 4.32 3.69 4.68h-1.728l-2.862-3.69L49.666 16h-1.638l3.726-4.608zm9.19-3.69a5.717 5.717 0 011.746-.648 9.544 9.544 0 011.908-.198c.612 0 1.113.096 1.503.288.39.192.696.441.918.747.222.306.372.654.45 1.044.078.39.117.783.117 1.179 0 .456-.012.942-.036 1.458a66.688 66.688 0 00-.054 1.548c0 .6.036 1.17.108 1.71h1.206V16h-2.394l-.162-1.35h-.09c-.072.108-.18.246-.324.414a2.964 2.964 0 01-.567.495 3.664 3.664 0 01-.855.423c-.336.12-.732.18-1.188.18-.888 0-1.59-.228-2.106-.684-.516-.456-.774-1.08-.774-1.872 0-.612.135-1.122.405-1.53.27-.408.657-.72 1.161-.936.504-.216 1.113-.342 1.827-.378.714-.036 1.515.012 2.403.144.06-.552.069-1.011.027-1.377-.042-.366-.138-.657-.288-.873a1.206 1.206 0 00-.63-.459c-.27-.09-.603-.135-.999-.135-.54 0-1.056.075-1.548.225-.492.15-.93.303-1.314.459l-.45-1.044zm2.646 7.254c.336 0 .648-.054.936-.162.288-.108.54-.246.756-.414a2.743 2.743 0 00.864-1.116v-1.26c-.624-.108-1.2-.162-1.728-.162s-.984.057-1.368.171c-.384.114-.684.291-.9.531-.216.24-.324.552-.324.936 0 .396.135.741.405 1.035.27.294.723.441 1.359.441zM75.516 16v-5.994a9.51 9.51 0 00-.027-.729 2.442 2.442 0 00-.126-.63 1.01 1.01 0 00-.288-.441.734.734 0 00-.495-.162c-.408 0-.753.168-1.035.504-.282.336-.495.756-.639 1.26V16h-1.368V7h.936l.27 1.098h.072c.12-.18.237-.351.351-.513.114-.162.246-.303.396-.423.15-.12.327-.213.531-.279.204-.066.462-.099.774-.099.18 0 .366.027.558.081.192.054.369.138.531.252.162.114.303.267.423.459s.198.426.234.702c.276-.468.585-.834.927-1.098.342-.264.813-.396 1.413-.396.396 0 .717.066.963.198s.438.321.576.567c.138.246.234.54.288.882.054.342.081.723.081 1.143V16h-1.368V9.88c0-.252-.012-.489-.036-.711a2.268 2.268 0 00-.135-.585.967.967 0 00-.27-.396c-.114-.096-.267-.144-.459-.144-.42 0-.774.168-1.062.504-.288.336-.504.816-.648 1.44V16h-1.368zm8.812-5.85a18.063 18.063 0 00-.081-1.512 5.988 5.988 0 00-.063-.468h-1.206V7h2.394l.18 1.26h.09a4.06 4.06 0 011.233-1.053c.498-.282 1.107-.423 1.827-.423 1.284 0 2.25.354 2.898 1.062.648.708.972 1.866.972 3.474 0 .756-.111 1.437-.333 2.043a4.295 4.295 0 01-.945 1.539c-.408.42-.9.744-1.476.972a5.141 5.141 0 01-1.908.342c-.252 0-.477-.009-.675-.027a5.93 5.93 0 01-.54-.072 4.255 4.255 0 01-.477-.117 6.561 6.561 0 01-.504-.18v3.78h-1.386v-9.45zm4.14-2.052c-.36 0-.699.066-1.017.198a3.034 3.034 0 00-1.449 1.242 2.118 2.118 0 00-.288.792v4.104a3.3 3.3 0 00.891.423c.33.102.765.153 1.305.153.96 0 1.728-.315 2.304-.945.576-.63.864-1.551.864-2.763 0-1.02-.201-1.809-.603-2.367-.402-.558-1.071-.837-2.007-.837zM96.542 3.4h2.988v9.576c0 .732.123 1.248.369 1.548.246.3.609.45 1.089.45.336 0 .657-.06.963-.18.306-.12.645-.324 1.017-.612l.648.99a3.988 3.988 0 01-.63.45 4.678 4.678 0 01-1.422.54c-.24.048-.462.072-.666.072a3.81 3.81 0 01-1.188-.171 2.03 2.03 0 01-.873-.549c-.234-.252-.411-.585-.531-.999-.12-.414-.18-.927-.18-1.539v-8.37h-1.584V3.4zm19.18 11.466a4.53 4.53 0 01-.765.54 5.645 5.645 0 01-.963.432 7.06 7.06 0 01-1.089.279 6.633 6.633 0 01-1.143.099c-.72 0-1.356-.111-1.908-.333a3.674 3.674 0 01-1.386-.954 4.158 4.158 0 01-.846-1.485c-.192-.576-.288-1.224-.288-1.944 0-.756.105-1.428.315-2.016.21-.588.513-1.08.909-1.476a3.959 3.959 0 011.44-.909c.564-.21 1.194-.315 1.89-.315.504 0 1.002.066 1.494.198a2.95 2.95 0 011.305.747c.378.366.669.87.873 1.512.204.642.276 1.473.216 2.493h-6.966c0 1.08.291 1.887.873 2.421.582.534 1.359.801 2.331.801.324 0 .645-.039.963-.117.318-.078.621-.171.909-.279.288-.108.543-.228.765-.36.222-.132.393-.252.513-.36l.558 1.026zm-3.798-6.894a4.86 4.86 0 00-1.125.126 2.564 2.564 0 00-.936.423c-.27.198-.492.456-.666.774-.174.318-.285.711-.333 1.179h5.598c-.06-.792-.315-1.407-.765-1.845-.45-.438-1.041-.657-1.773-.657zm10.27-.036c0-.384.108-.681.324-.891.216-.21.504-.315.864-.315.384 0 .684.105.9.315.216.21.324.507.324.891 0 .348-.108.636-.324.864-.216.228-.516.342-.9.342-.36 0-.648-.114-.864-.342-.216-.228-.324-.516-.324-.864zm0 7.074c0-.384.108-.681.324-.891.216-.21.504-.315.864-.315.384 0 .684.105.9.315.216.21.324.507.324.891 0 .348-.108.636-.324.864-.216.228-.516.342-.9.342-.36 0-.648-.114-.864-.342-.216-.228-.324-.516-.324-.864zm20.216-4.5v-.522l8.478-5.166.684 1.116-7.146 4.23 7.164 4.158-.684 1.08-8.496-4.896zM155.29 16v-1.206h3.132V8.206h-3.132V7h4.572v7.794h3.06V16h-7.632zm2.646-11.556c0-.324.108-.603.324-.837.216-.234.492-.351.828-.351.348 0 .639.117.873.351.234.234.351.513.351.837 0 .312-.117.576-.351.792a1.238 1.238 0 01-.873.324c-.336 0-.612-.108-.828-.324a1.077 1.077 0 01-.324-.792zm8.758 10.962l-.684-1.08 7.164-4.158-7.146-4.23.684-1.116 8.478 5.166v.522l-8.496 4.896zM178.89 16v-1.206h3.132V8.206h-3.132V7h4.572v7.794h3.06V16h-7.632zm2.646-11.556c0-.324.108-.603.324-.837.216-.234.492-.351.828-.351.348 0 .639.117.873.351.234.234.351.513.351.837 0 .312-.117.576-.351.792a1.238 1.238 0 01-.873.324c-.336 0-.612-.108-.828-.324a1.077 1.077 0 01-.324-.792zM189.358 7h2.142V5.218l1.404-.396V7h4.806v1.206h-4.806v4.248c0 .876.213 1.524.639 1.944.426.42 1.035.63 1.827.63.54 0 1.011-.102 1.413-.306a7.614 7.614 0 001.089-.666l.468 1.062c-.42.336-.921.606-1.503.81a5.377 5.377 0 01-1.791.306c-.48 0-.933-.069-1.359-.207a3.12 3.12 0 01-1.125-.639 3.06 3.06 0 01-.774-1.107c-.192-.45-.288-.987-.288-1.611V8.206h-2.142V7zm13.186.702a5.717 5.717 0 011.746-.648 9.544 9.544 0 011.908-.198c.612 0 1.113.096 1.503.288.39.192.696.441.918.747.222.306.372.654.45 1.044.078.39.117.783.117 1.179 0 .456-.012.942-.036 1.458a66.688 66.688 0 00-.054 1.548c0 .6.036 1.17.108 1.71h1.206V16h-2.394l-.162-1.35h-.09c-.072.108-.18.246-.324.414a2.964 2.964 0 01-.567.495 3.664 3.664 0 01-.855.423c-.336.12-.732.18-1.188.18-.888 0-1.59-.228-2.106-.684-.516-.456-.774-1.08-.774-1.872 0-.612.135-1.122.405-1.53.27-.408.657-.72 1.161-.936.504-.216 1.113-.342 1.827-.378.714-.036 1.515.012 2.403.144.06-.552.069-1.011.027-1.377-.042-.366-.138-.657-.288-.873a1.206 1.206 0 00-.63-.459c-.27-.09-.603-.135-.999-.135-.54 0-1.056.075-1.548.225-.492.15-.93.303-1.314.459l-.45-1.044zm2.646 7.254c.336 0 .648-.054.936-.162.288-.108.54-.246.756-.414a2.743 2.743 0 00.864-1.116v-1.26c-.624-.108-1.2-.162-1.728-.162s-.984.057-1.368.171c-.384.114-.684.291-.9.531-.216.24-.324.552-.324.936 0 .396.135.741.405 1.035.27.294.723.441 1.359.441zM214.542 3.4h2.988v9.576c0 .732.123 1.248.369 1.548.246.3.609.45 1.089.45.336 0 .657-.06.963-.18.306-.12.645-.324 1.017-.612l.648.99a3.988 3.988 0 01-.63.45 4.678 4.678 0 01-1.422.54c-.24.048-.462.072-.666.072a3.81 3.81 0 01-1.188-.171 2.03 2.03 0 01-.873-.549c-.234-.252-.411-.585-.531-.999-.12-.414-.18-.927-.18-1.539v-8.37h-1.584V3.4zM226.09 16v-1.206h3.132V8.206h-3.132V7h4.572v7.794h3.06V16h-7.632zm2.646-11.556c0-.324.108-.603.324-.837.216-.234.492-.351.828-.351.348 0 .639.117.873.351.234.234.351.513.351.837 0 .312-.117.576-.351.792a1.238 1.238 0 01-.873.324c-.336 0-.612-.108-.828-.324a1.077 1.077 0 01-.324-.792zm15.166 3.942a7.111 7.111 0 00-.891-.243 4.64 4.64 0 00-.945-.099c-1.176 0-2.052.276-2.628.828-.576.552-.864 1.428-.864 2.628 0 .528.084.999.252 1.413.168.414.408.765.72 1.053.312.288.687.51 1.125.666.438.156.921.234 1.449.234.564 0 1.113-.096 1.647-.288.534-.192.981-.444 1.341-.756l.63 1.044a5.095 5.095 0 01-.63.45 6.053 6.053 0 01-1.971.774 6.38 6.38 0 01-1.305.126c-.78 0-1.467-.111-2.061-.333a3.914 3.914 0 01-1.485-.954 4.083 4.083 0 01-.9-1.494 5.818 5.818 0 01-.306-1.935c0-.756.105-1.428.315-2.016.21-.588.513-1.08.909-1.476a3.959 3.959 0 011.44-.909c.564-.21 1.194-.315 1.89-.315.888 0 1.611.078 2.169.234.558.156 1.029.33 1.413.522l-.018.054v2.502h-1.296v-1.71zm4.708 2.124v-.522l8.478-5.166.684 1.116-7.146 4.23 7.164 4.158-.684 1.08-8.496-4.896zm19.108-7.326l1.134.504-6.57 14.832-1.134-.504 6.57-14.832zM273.29 16v-1.206h3.132V8.206h-3.132V7h4.572v7.794h3.06V16h-7.632zm2.646-11.556c0-.324.108-.603.324-.837.216-.234.492-.351.828-.351.348 0 .639.117.873.351.234.234.351.513.351.837 0 .312-.117.576-.351.792a1.238 1.238 0 01-.873.324c-.336 0-.612-.108-.828-.324a1.077 1.077 0 01-.324-.792zm8.758 10.962l-.684-1.08 7.164-4.158-7.146-4.23.684-1.116 8.478 5.166v.522l-8.496 4.896zm24.05-7.704a5.717 5.717 0 011.746-.648 9.544 9.544 0 011.908-.198c.612 0 1.113.096 1.503.288.39.192.696.441.918.747.222.306.372.654.45 1.044.078.39.117.783.117 1.179 0 .456-.012.942-.036 1.458a66.688 66.688 0 00-.054 1.548c0 .6.036 1.17.108 1.71h1.206V16h-2.394l-.162-1.35h-.09c-.072.108-.18.246-.324.414a2.964 2.964 0 01-.567.495 3.664 3.664 0 01-.855.423c-.336.12-.732.18-1.188.18-.888 0-1.59-.228-2.106-.684-.516-.456-.774-1.08-.774-1.872 0-.612.135-1.122.405-1.53.27-.408.657-.72 1.161-.936.504-.216 1.113-.342 1.827-.378.714-.036 1.515.012 2.403.144.06-.552.069-1.011.027-1.377-.042-.366-.138-.657-.288-.873a1.206 1.206 0 00-.63-.459c-.27-.09-.603-.135-.999-.135-.54 0-1.056.075-1.548.225-.492.15-.93.303-1.314.459l-.45-1.044zm2.646 7.254c.336 0 .648-.054.936-.162.288-.108.54-.246.756-.414a2.743 2.743 0 00.864-1.116v-1.26c-.624-.108-1.2-.162-1.728-.162s-.984.057-1.368.171c-.384.114-.684.291-.9.531-.216.24-.324.552-.324.936 0 .396.135.741.405 1.035.27.294.723.441 1.359.441zm8.884-4.806a18.063 18.063 0 00-.081-1.512 5.988 5.988 0 00-.063-.468h-1.206V7h2.412l.162 1.458h.09c.12-.204.279-.405.477-.603a3.741 3.741 0 011.575-.927 3.593 3.593 0 011.026-.144c.552 0 1.041.06 1.467.18.426.12.78.333 1.062.639.282.306.495.72.639 1.242.144.522.216 1.185.216 1.989V16h-1.404v-4.896c0-.996-.162-1.746-.486-2.25-.324-.504-.912-.756-1.764-.756-.312 0-.615.063-.909.189a3.137 3.137 0 00-.801.495c-.24.204-.45.441-.63.711-.18.27-.312.555-.396.855V16h-1.386v-5.85zm16.408-6.75h2.916v9.522c0 .108.006.243.018.405a20.058 20.058 0 00.108 1.044c.024.174.048.327.072.459h1.206V16h-2.394l-.18-1.386h-.072c-.264.456-.657.837-1.179 1.143-.522.306-1.125.459-1.809.459-1.356 0-2.355-.381-2.997-1.143-.642-.762-.963-1.947-.963-3.555 0-.756.108-1.425.324-2.007a3.873 3.873 0 01.927-1.458c.402-.39.885-.687 1.449-.891.564-.204 1.194-.306 1.89-.306.252 0 .477.006.675.018.198.012.381.03.549.054.168.024.327.057.477.099.15.042.315.087.495.135V4.606h-1.512V3.4zm-1.08 11.61c.732 0 1.308-.189 1.728-.567.42-.378.708-.945.864-1.701V8.566a2.788 2.788 0 00-.891-.396c-.33-.084-.765-.126-1.305-.126-.96 0-1.716.279-2.268.837-.552.558-.828 1.437-.828 2.637 0 .492.045.951.135 1.377.09.426.24.795.45 1.107.21.312.489.558.837.738.348.18.774.27 1.278.27zm19.208-4.5v-.522l8.478-5.166.684 1.116-7.146 4.23 7.164 4.158-.684 1.08-8.496-4.896zm11.026-7.11h2.88v4.626h.09a3.082 3.082 0 011.206-.918 3.94 3.94 0 011.602-.324c2.64 0 3.96 1.524 3.96 4.572 0 1.548-.426 2.733-1.278 3.555-.852.822-2.064 1.233-3.636 1.233a8.655 8.655 0 01-2.016-.216c-.6-.144-1.038-.312-1.314-.504V4.606h-1.494V3.4zm5.598 4.59c-.72 0-1.302.204-1.746.612-.444.408-.768.984-.972 1.728v4.14c.276.144.606.258.99.342a5.63 5.63 0 001.206.126c.48 0 .915-.069 1.305-.207.39-.138.723-.354.999-.648.276-.294.489-.669.639-1.125.15-.456.225-.996.225-1.62 0-.456-.048-.888-.144-1.296a3.146 3.146 0 00-.459-1.071 2.208 2.208 0 00-.819-.72c-.336-.174-.744-.261-1.224-.261zm7.66 7.416l-.684-1.08 7.164-4.158-7.146-4.23.684-1.116 8.478 5.166v.522l-8.496 4.896zM389.436 3.4h2.88v4.626h.09a3.082 3.082 0 011.206-.918 3.94 3.94 0 011.602-.324c2.64 0 3.96 1.524 3.96 4.572 0 1.548-.426 2.733-1.278 3.555-.852.822-2.064 1.233-3.636 1.233a8.655 8.655 0 01-2.016-.216c-.6-.144-1.038-.312-1.314-.504V4.606h-1.494V3.4zm5.598 4.59c-.72 0-1.302.204-1.746.612-.444.408-.768.984-.972 1.728v4.14c.276.144.606.258.99.342a5.63 5.63 0 001.206.126c.48 0 .915-.069 1.305-.207.39-.138.723-.354.999-.648.276-.294.489-.669.639-1.125.15-.456.225-.996.225-1.62 0-.456-.048-.888-.144-1.296a3.146 3.146 0 00-.459-1.071 2.208 2.208 0 00-.819-.72c-.336-.174-.744-.261-1.224-.261zm7.192 3.51c0-1.452.378-2.601 1.134-3.447.756-.846 1.836-1.269 3.24-1.269.756 0 1.407.123 1.953.369s.999.579 1.359.999c.36.42.627.918.801 1.494.174.576.261 1.194.261 1.854 0 .72-.096 1.371-.288 1.953a4.057 4.057 0 01-.846 1.485 3.738 3.738 0 01-1.377.945c-.546.222-1.167.333-1.863.333-.744 0-1.392-.123-1.944-.369a3.815 3.815 0 01-1.368-.999 4.073 4.073 0 01-.801-1.494 6.381 6.381 0 01-.261-1.854zm1.494 0c0 .42.051.84.153 1.26.102.42.267.798.495 1.134.228.336.525.606.891.81.366.204.813.306 1.341.306.96 0 1.683-.297 2.169-.891.486-.594.729-1.467.729-2.619 0-.432-.051-.855-.153-1.269a3.353 3.353 0 00-.504-1.125 2.656 2.656 0 00-.9-.81c-.366-.204-.813-.306-1.341-.306-.96 0-1.68.294-2.16.882-.48.588-.72 1.464-.72 2.628zm11.422-8.1h2.988v9.576c0 .732.123 1.248.369 1.548.246.3.609.45 1.089.45.336 0 .657-.06.963-.18.306-.12.645-.324 1.017-.612l.648.99a3.988 3.988 0 01-.63.45 4.678 4.678 0 01-1.422.54c-.24.048-.462.072-.666.072a3.81 3.81 0 01-1.188-.171 2.03 2.03 0 01-.873-.549c-.234-.252-.411-.585-.531-.999-.12-.414-.18-.927-.18-1.539v-8.37h-1.584V3.4zm15.94 0h2.916v9.522c0 .108.006.243.018.405a20.058 20.058 0 00.108 1.044c.024.174.048.327.072.459h1.206V16h-2.394l-.18-1.386h-.072c-.264.456-.657.837-1.179 1.143-.522.306-1.125.459-1.809.459-1.356 0-2.355-.381-2.997-1.143-.642-.762-.963-1.947-.963-3.555 0-.756.108-1.425.324-2.007a3.873 3.873 0 01.927-1.458c.402-.39.885-.687 1.449-.891.564-.204 1.194-.306 1.89-.306.252 0 .477.006.675.018.198.012.381.03.549.054.168.024.327.057.477.099.15.042.315.087.495.135V4.606h-1.512V3.4zm-1.08 11.61c.732 0 1.308-.189 1.728-.567.42-.378.708-.945.864-1.701V8.566a2.788 2.788 0 00-.891-.396c-.33-.084-.765-.126-1.305-.126-.96 0-1.716.279-2.268.837-.552.558-.828 1.437-.828 2.637 0 .492.045.951.135 1.377.09.426.24.795.45 1.107.21.312.489.558.837.738.348.18.774.27 1.278.27zm7.408-4.5v-.522l8.478-5.166.684 1.116-7.146 4.23 7.164 4.158-.684 1.08-8.496-4.896zm19.108-7.326l1.134.504-6.57 14.832-1.134-.504 6.57-14.832zm3.718.216h2.88v4.626h.09a3.082 3.082 0 011.206-.918 3.94 3.94 0 011.602-.324c2.64 0 3.96 1.524 3.96 4.572 0 1.548-.426 2.733-1.278 3.555-.852.822-2.064 1.233-3.636 1.233a8.655 8.655 0 01-2.016-.216c-.6-.144-1.038-.312-1.314-.504V4.606h-1.494V3.4zm5.598 4.59c-.72 0-1.302.204-1.746.612-.444.408-.768.984-.972 1.728v4.14c.276.144.606.258.99.342a5.63 5.63 0 001.206.126c.48 0 .915-.069 1.305-.207.39-.138.723-.354.999-.648.276-.294.489-.669.639-1.125.15-.456.225-.996.225-1.62 0-.456-.048-.888-.144-1.296a3.146 3.146 0 00-.459-1.071 2.208 2.208 0 00-.819-.72c-.336-.174-.744-.261-1.224-.261zm7.66 7.416l-.684-1.08 7.164-4.158-7.146-4.23.684-1.116 8.478 5.166v.522l-8.496 4.896zm11.116-4.896v-.522l8.478-5.166.684 1.116-7.146 4.23 7.164 4.158-.684 1.08-8.496-4.896zm19.108-7.326l1.134.504-6.57 14.832-1.134-.504 6.57-14.832zm5.41 6.966a18.063 18.063 0 00-.081-1.512 5.988 5.988 0 00-.063-.468h-1.206V7h2.394l.18 1.26h.09a4.06 4.06 0 011.233-1.053c.498-.282 1.107-.423 1.827-.423 1.284 0 2.25.354 2.898 1.062.648.708.972 1.866.972 3.474 0 .756-.111 1.437-.333 2.043a4.295 4.295 0 01-.945 1.539c-.408.42-.9.744-1.476.972a5.141 5.141 0 01-1.908.342c-.252 0-.477-.009-.675-.027a5.93 5.93 0 01-.54-.072 4.255 4.255 0 01-.477-.117 6.561 6.561 0 01-.504-.18v3.78h-1.386v-9.45zm4.14-2.052c-.36 0-.699.066-1.017.198a3.034 3.034 0 00-1.449 1.242 2.118 2.118 0 00-.288.792v4.104a3.3 3.3 0 00.891.423c.33.102.765.153 1.305.153.96 0 1.728-.315 2.304-.945.576-.63.864-1.551.864-2.763 0-1.02-.201-1.809-.603-2.367-.402-.558-1.071-.837-2.007-.837zm7.426 7.308l-.684-1.08 7.164-4.158-7.146-4.23.684-1.116 8.478 5.166v.522l-8.496 4.896z"/></g></g></g></svg> \ No newline at end of file diff --git a/2-ui/99-ui-misc/02-selection-range/range-example-p-2-b-3.svg b/2-ui/99-ui-misc/02-selection-range/range-example-p-2-b-3.svg new file mode 100644 index 000000000..859f755ce --- /dev/null +++ b/2-ui/99-ui-misc/02-selection-range/range-example-p-2-b-3.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="640" height="89" viewBox="0 0 640 89"><defs><style>@import url(https://fonts.googleapis.com/css?family=Open+Sans:bold,italic,bolditalic%7CPT+Mono);@font-face{font-family:'PT Mono';font-weight:700;font-style:normal;src:local('PT MonoBold'),url(/font/PTMonoBold.woff2) format('woff2'),url(/font/PTMonoBold.woff) format('woff'),url(/font/PTMonoBold.ttf) format('truetype')}</style></defs><defs><path id="path-1" d="M71 35h367v21H71z"/><mask id="mask-2" width="367" height="21" x="0" y="0" fill="#fff" maskContentUnits="userSpaceOnUse" maskUnits="objectBoundingBox"><use xlink:href="#path-1"/></mask></defs><g id="selection-range" fill="none" fill-rule="evenodd" stroke="none" stroke-width="1"><g id="range-example-p-2-b-3.svg"><use id="Rectangle" fill="#C9DCEA" stroke="#C9DCEA" stroke-dasharray="5,2" stroke-width="2" mask="url(#mask-2)" xlink:href="#path-1"/><path id="Path-Copy" stroke="#C06334" stroke-width="2" d="M48 57v11h102V57"/><path id="Path-Copy-2" stroke="#C06334" stroke-width="2" d="M154 57v11h154V57"/><text id="0" fill="#181717" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="93" y="84">0</tspan></text><text id="1" fill="#181717" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="226" y="84">1</tspan></text><text id="2" fill="#181717" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="334" y="84">2</tspan></text><text id="3" fill="#181717" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="428" y="84">3</tspan></text><path id="Path-Copy-3" stroke="#C06334" stroke-width="2" d="M312 57v11h53V57"/><path id="Path-Copy-4" stroke="#C06334" stroke-width="2" d="M369 57v11h128V57"/><g id="<p>Example:-<i>itali" fill="#AF6E24" fill-rule="nonzero" transform="translate(13 35)"><path id="<p>Example:<i>italic</i>and<b>bold</b></p>" d="M.81 10.51v-.522l8.478-5.166.684 1.116-7.146 4.23 7.164 4.158-.684 1.08L.81 10.51zm12.718-.36a18.063 18.063 0 00-.081-1.512 5.988 5.988 0 00-.063-.468h-1.206V7h2.394l.18 1.26h.09a4.06 4.06 0 011.233-1.053c.498-.282 1.107-.423 1.827-.423 1.284 0 2.25.354 2.898 1.062.648.708.972 1.866.972 3.474 0 .756-.111 1.437-.333 2.043a4.295 4.295 0 01-.945 1.539c-.408.42-.9.744-1.476.972a5.141 5.141 0 01-1.908.342c-.252 0-.477-.009-.675-.027a5.93 5.93 0 01-.54-.072 4.255 4.255 0 01-.477-.117 6.561 6.561 0 01-.504-.18v3.78h-1.386v-9.45zm4.14-2.052c-.36 0-.699.066-1.017.198a3.034 3.034 0 00-1.449 1.242 2.118 2.118 0 00-.288.792v4.104a3.3 3.3 0 00.891.423c.33.102.765.153 1.305.153.96 0 1.728-.315 2.304-.945.576-.63.864-1.551.864-2.763 0-1.02-.201-1.809-.603-2.367-.402-.558-1.071-.837-2.007-.837zm7.426 7.308l-.684-1.08 7.164-4.158-7.146-4.23.684-1.116 8.478 5.166v.522l-8.496 4.896zM37.326 3.4h7.398v1.332H38.82v4.122h5.454v1.332H38.82v4.482h5.994V16h-7.488V3.4zm14.428 7.992L48.28 7h1.8l2.592 3.384L55.336 7h1.62l-3.474 4.32 3.69 4.68h-1.728l-2.862-3.69L49.666 16h-1.638l3.726-4.608zm9.19-3.69a5.717 5.717 0 011.746-.648 9.544 9.544 0 011.908-.198c.612 0 1.113.096 1.503.288.39.192.696.441.918.747.222.306.372.654.45 1.044.078.39.117.783.117 1.179 0 .456-.012.942-.036 1.458a66.688 66.688 0 00-.054 1.548c0 .6.036 1.17.108 1.71h1.206V16h-2.394l-.162-1.35h-.09c-.072.108-.18.246-.324.414a2.964 2.964 0 01-.567.495 3.664 3.664 0 01-.855.423c-.336.12-.732.18-1.188.18-.888 0-1.59-.228-2.106-.684-.516-.456-.774-1.08-.774-1.872 0-.612.135-1.122.405-1.53.27-.408.657-.72 1.161-.936.504-.216 1.113-.342 1.827-.378.714-.036 1.515.012 2.403.144.06-.552.069-1.011.027-1.377-.042-.366-.138-.657-.288-.873a1.206 1.206 0 00-.63-.459c-.27-.09-.603-.135-.999-.135-.54 0-1.056.075-1.548.225-.492.15-.93.303-1.314.459l-.45-1.044zm2.646 7.254c.336 0 .648-.054.936-.162.288-.108.54-.246.756-.414a2.743 2.743 0 00.864-1.116v-1.26c-.624-.108-1.2-.162-1.728-.162s-.984.057-1.368.171c-.384.114-.684.291-.9.531-.216.24-.324.552-.324.936 0 .396.135.741.405 1.035.27.294.723.441 1.359.441zM75.516 16v-5.994a9.51 9.51 0 00-.027-.729 2.442 2.442 0 00-.126-.63 1.01 1.01 0 00-.288-.441.734.734 0 00-.495-.162c-.408 0-.753.168-1.035.504-.282.336-.495.756-.639 1.26V16h-1.368V7h.936l.27 1.098h.072c.12-.18.237-.351.351-.513.114-.162.246-.303.396-.423.15-.12.327-.213.531-.279.204-.066.462-.099.774-.099.18 0 .366.027.558.081.192.054.369.138.531.252.162.114.303.267.423.459s.198.426.234.702c.276-.468.585-.834.927-1.098.342-.264.813-.396 1.413-.396.396 0 .717.066.963.198s.438.321.576.567c.138.246.234.54.288.882.054.342.081.723.081 1.143V16h-1.368V9.88c0-.252-.012-.489-.036-.711a2.268 2.268 0 00-.135-.585.967.967 0 00-.27-.396c-.114-.096-.267-.144-.459-.144-.42 0-.774.168-1.062.504-.288.336-.504.816-.648 1.44V16h-1.368zm8.812-5.85a18.063 18.063 0 00-.081-1.512 5.988 5.988 0 00-.063-.468h-1.206V7h2.394l.18 1.26h.09a4.06 4.06 0 011.233-1.053c.498-.282 1.107-.423 1.827-.423 1.284 0 2.25.354 2.898 1.062.648.708.972 1.866.972 3.474 0 .756-.111 1.437-.333 2.043a4.295 4.295 0 01-.945 1.539c-.408.42-.9.744-1.476.972a5.141 5.141 0 01-1.908.342c-.252 0-.477-.009-.675-.027a5.93 5.93 0 01-.54-.072 4.255 4.255 0 01-.477-.117 6.561 6.561 0 01-.504-.18v3.78h-1.386v-9.45zm4.14-2.052c-.36 0-.699.066-1.017.198a3.034 3.034 0 00-1.449 1.242 2.118 2.118 0 00-.288.792v4.104a3.3 3.3 0 00.891.423c.33.102.765.153 1.305.153.96 0 1.728-.315 2.304-.945.576-.63.864-1.551.864-2.763 0-1.02-.201-1.809-.603-2.367-.402-.558-1.071-.837-2.007-.837zM96.542 3.4h2.988v9.576c0 .732.123 1.248.369 1.548.246.3.609.45 1.089.45.336 0 .657-.06.963-.18.306-.12.645-.324 1.017-.612l.648.99a3.988 3.988 0 01-.63.45 4.678 4.678 0 01-1.422.54c-.24.048-.462.072-.666.072a3.81 3.81 0 01-1.188-.171 2.03 2.03 0 01-.873-.549c-.234-.252-.411-.585-.531-.999-.12-.414-.18-.927-.18-1.539v-8.37h-1.584V3.4zm19.18 11.466a4.53 4.53 0 01-.765.54 5.645 5.645 0 01-.963.432 7.06 7.06 0 01-1.089.279 6.633 6.633 0 01-1.143.099c-.72 0-1.356-.111-1.908-.333a3.674 3.674 0 01-1.386-.954 4.158 4.158 0 01-.846-1.485c-.192-.576-.288-1.224-.288-1.944 0-.756.105-1.428.315-2.016.21-.588.513-1.08.909-1.476a3.959 3.959 0 011.44-.909c.564-.21 1.194-.315 1.89-.315.504 0 1.002.066 1.494.198a2.95 2.95 0 011.305.747c.378.366.669.87.873 1.512.204.642.276 1.473.216 2.493h-6.966c0 1.08.291 1.887.873 2.421.582.534 1.359.801 2.331.801.324 0 .645-.039.963-.117.318-.078.621-.171.909-.279.288-.108.543-.228.765-.36.222-.132.393-.252.513-.36l.558 1.026zm-3.798-6.894a4.86 4.86 0 00-1.125.126 2.564 2.564 0 00-.936.423c-.27.198-.492.456-.666.774-.174.318-.285.711-.333 1.179h5.598c-.06-.792-.315-1.407-.765-1.845-.45-.438-1.041-.657-1.773-.657zm10.27-.036c0-.384.108-.681.324-.891.216-.21.504-.315.864-.315.384 0 .684.105.9.315.216.21.324.507.324.891 0 .348-.108.636-.324.864-.216.228-.516.342-.9.342-.36 0-.648-.114-.864-.342-.216-.228-.324-.516-.324-.864zm0 7.074c0-.384.108-.681.324-.891.216-.21.504-.315.864-.315.384 0 .684.105.9.315.216.21.324.507.324.891 0 .348-.108.636-.324.864-.216.228-.516.342-.9.342-.36 0-.648-.114-.864-.342-.216-.228-.324-.516-.324-.864zm20.216-4.5v-.522l8.478-5.166.684 1.116-7.146 4.23 7.164 4.158-.684 1.08-8.496-4.896zM155.29 16v-1.206h3.132V8.206h-3.132V7h4.572v7.794h3.06V16h-7.632zm2.646-11.556c0-.324.108-.603.324-.837.216-.234.492-.351.828-.351.348 0 .639.117.873.351.234.234.351.513.351.837 0 .312-.117.576-.351.792a1.238 1.238 0 01-.873.324c-.336 0-.612-.108-.828-.324a1.077 1.077 0 01-.324-.792zm8.758 10.962l-.684-1.08 7.164-4.158-7.146-4.23.684-1.116 8.478 5.166v.522l-8.496 4.896zM178.89 16v-1.206h3.132V8.206h-3.132V7h4.572v7.794h3.06V16h-7.632zm2.646-11.556c0-.324.108-.603.324-.837.216-.234.492-.351.828-.351.348 0 .639.117.873.351.234.234.351.513.351.837 0 .312-.117.576-.351.792a1.238 1.238 0 01-.873.324c-.336 0-.612-.108-.828-.324a1.077 1.077 0 01-.324-.792zM189.358 7h2.142V5.218l1.404-.396V7h4.806v1.206h-4.806v4.248c0 .876.213 1.524.639 1.944.426.42 1.035.63 1.827.63.54 0 1.011-.102 1.413-.306a7.614 7.614 0 001.089-.666l.468 1.062c-.42.336-.921.606-1.503.81a5.377 5.377 0 01-1.791.306c-.48 0-.933-.069-1.359-.207a3.12 3.12 0 01-1.125-.639 3.06 3.06 0 01-.774-1.107c-.192-.45-.288-.987-.288-1.611V8.206h-2.142V7zm13.186.702a5.717 5.717 0 011.746-.648 9.544 9.544 0 011.908-.198c.612 0 1.113.096 1.503.288.39.192.696.441.918.747.222.306.372.654.45 1.044.078.39.117.783.117 1.179 0 .456-.012.942-.036 1.458a66.688 66.688 0 00-.054 1.548c0 .6.036 1.17.108 1.71h1.206V16h-2.394l-.162-1.35h-.09c-.072.108-.18.246-.324.414a2.964 2.964 0 01-.567.495 3.664 3.664 0 01-.855.423c-.336.12-.732.18-1.188.18-.888 0-1.59-.228-2.106-.684-.516-.456-.774-1.08-.774-1.872 0-.612.135-1.122.405-1.53.27-.408.657-.72 1.161-.936.504-.216 1.113-.342 1.827-.378.714-.036 1.515.012 2.403.144.06-.552.069-1.011.027-1.377-.042-.366-.138-.657-.288-.873a1.206 1.206 0 00-.63-.459c-.27-.09-.603-.135-.999-.135-.54 0-1.056.075-1.548.225-.492.15-.93.303-1.314.459l-.45-1.044zm2.646 7.254c.336 0 .648-.054.936-.162.288-.108.54-.246.756-.414a2.743 2.743 0 00.864-1.116v-1.26c-.624-.108-1.2-.162-1.728-.162s-.984.057-1.368.171c-.384.114-.684.291-.9.531-.216.24-.324.552-.324.936 0 .396.135.741.405 1.035.27.294.723.441 1.359.441zM214.542 3.4h2.988v9.576c0 .732.123 1.248.369 1.548.246.3.609.45 1.089.45.336 0 .657-.06.963-.18.306-.12.645-.324 1.017-.612l.648.99a3.988 3.988 0 01-.63.45 4.678 4.678 0 01-1.422.54c-.24.048-.462.072-.666.072a3.81 3.81 0 01-1.188-.171 2.03 2.03 0 01-.873-.549c-.234-.252-.411-.585-.531-.999-.12-.414-.18-.927-.18-1.539v-8.37h-1.584V3.4zM226.09 16v-1.206h3.132V8.206h-3.132V7h4.572v7.794h3.06V16h-7.632zm2.646-11.556c0-.324.108-.603.324-.837.216-.234.492-.351.828-.351.348 0 .639.117.873.351.234.234.351.513.351.837 0 .312-.117.576-.351.792a1.238 1.238 0 01-.873.324c-.336 0-.612-.108-.828-.324a1.077 1.077 0 01-.324-.792zm15.166 3.942a7.111 7.111 0 00-.891-.243 4.64 4.64 0 00-.945-.099c-1.176 0-2.052.276-2.628.828-.576.552-.864 1.428-.864 2.628 0 .528.084.999.252 1.413.168.414.408.765.72 1.053.312.288.687.51 1.125.666.438.156.921.234 1.449.234.564 0 1.113-.096 1.647-.288.534-.192.981-.444 1.341-.756l.63 1.044a5.095 5.095 0 01-.63.45 6.053 6.053 0 01-1.971.774 6.38 6.38 0 01-1.305.126c-.78 0-1.467-.111-2.061-.333a3.914 3.914 0 01-1.485-.954 4.083 4.083 0 01-.9-1.494 5.818 5.818 0 01-.306-1.935c0-.756.105-1.428.315-2.016.21-.588.513-1.08.909-1.476a3.959 3.959 0 011.44-.909c.564-.21 1.194-.315 1.89-.315.888 0 1.611.078 2.169.234.558.156 1.029.33 1.413.522l-.018.054v2.502h-1.296v-1.71zm4.708 2.124v-.522l8.478-5.166.684 1.116-7.146 4.23 7.164 4.158-.684 1.08-8.496-4.896zm19.108-7.326l1.134.504-6.57 14.832-1.134-.504 6.57-14.832zM273.29 16v-1.206h3.132V8.206h-3.132V7h4.572v7.794h3.06V16h-7.632zm2.646-11.556c0-.324.108-.603.324-.837.216-.234.492-.351.828-.351.348 0 .639.117.873.351.234.234.351.513.351.837 0 .312-.117.576-.351.792a1.238 1.238 0 01-.873.324c-.336 0-.612-.108-.828-.324a1.077 1.077 0 01-.324-.792zm8.758 10.962l-.684-1.08 7.164-4.158-7.146-4.23.684-1.116 8.478 5.166v.522l-8.496 4.896zm24.05-7.704a5.717 5.717 0 011.746-.648 9.544 9.544 0 011.908-.198c.612 0 1.113.096 1.503.288.39.192.696.441.918.747.222.306.372.654.45 1.044.078.39.117.783.117 1.179 0 .456-.012.942-.036 1.458a66.688 66.688 0 00-.054 1.548c0 .6.036 1.17.108 1.71h1.206V16h-2.394l-.162-1.35h-.09c-.072.108-.18.246-.324.414a2.964 2.964 0 01-.567.495 3.664 3.664 0 01-.855.423c-.336.12-.732.18-1.188.18-.888 0-1.59-.228-2.106-.684-.516-.456-.774-1.08-.774-1.872 0-.612.135-1.122.405-1.53.27-.408.657-.72 1.161-.936.504-.216 1.113-.342 1.827-.378.714-.036 1.515.012 2.403.144.06-.552.069-1.011.027-1.377-.042-.366-.138-.657-.288-.873a1.206 1.206 0 00-.63-.459c-.27-.09-.603-.135-.999-.135-.54 0-1.056.075-1.548.225-.492.15-.93.303-1.314.459l-.45-1.044zm2.646 7.254c.336 0 .648-.054.936-.162.288-.108.54-.246.756-.414a2.743 2.743 0 00.864-1.116v-1.26c-.624-.108-1.2-.162-1.728-.162s-.984.057-1.368.171c-.384.114-.684.291-.9.531-.216.24-.324.552-.324.936 0 .396.135.741.405 1.035.27.294.723.441 1.359.441zm8.884-4.806a18.063 18.063 0 00-.081-1.512 5.988 5.988 0 00-.063-.468h-1.206V7h2.412l.162 1.458h.09c.12-.204.279-.405.477-.603a3.741 3.741 0 011.575-.927 3.593 3.593 0 011.026-.144c.552 0 1.041.06 1.467.18.426.12.78.333 1.062.639.282.306.495.72.639 1.242.144.522.216 1.185.216 1.989V16h-1.404v-4.896c0-.996-.162-1.746-.486-2.25-.324-.504-.912-.756-1.764-.756-.312 0-.615.063-.909.189a3.137 3.137 0 00-.801.495c-.24.204-.45.441-.63.711-.18.27-.312.555-.396.855V16h-1.386v-5.85zm16.408-6.75h2.916v9.522c0 .108.006.243.018.405a20.058 20.058 0 00.108 1.044c.024.174.048.327.072.459h1.206V16h-2.394l-.18-1.386h-.072c-.264.456-.657.837-1.179 1.143-.522.306-1.125.459-1.809.459-1.356 0-2.355-.381-2.997-1.143-.642-.762-.963-1.947-.963-3.555 0-.756.108-1.425.324-2.007a3.873 3.873 0 01.927-1.458c.402-.39.885-.687 1.449-.891.564-.204 1.194-.306 1.89-.306.252 0 .477.006.675.018.198.012.381.03.549.054.168.024.327.057.477.099.15.042.315.087.495.135V4.606h-1.512V3.4zm-1.08 11.61c.732 0 1.308-.189 1.728-.567.42-.378.708-.945.864-1.701V8.566a2.788 2.788 0 00-.891-.396c-.33-.084-.765-.126-1.305-.126-.96 0-1.716.279-2.268.837-.552.558-.828 1.437-.828 2.637 0 .492.045.951.135 1.377.09.426.24.795.45 1.107.21.312.489.558.837.738.348.18.774.27 1.278.27zm19.208-4.5v-.522l8.478-5.166.684 1.116-7.146 4.23 7.164 4.158-.684 1.08-8.496-4.896zm11.026-7.11h2.88v4.626h.09a3.082 3.082 0 011.206-.918 3.94 3.94 0 011.602-.324c2.64 0 3.96 1.524 3.96 4.572 0 1.548-.426 2.733-1.278 3.555-.852.822-2.064 1.233-3.636 1.233a8.655 8.655 0 01-2.016-.216c-.6-.144-1.038-.312-1.314-.504V4.606h-1.494V3.4zm5.598 4.59c-.72 0-1.302.204-1.746.612-.444.408-.768.984-.972 1.728v4.14c.276.144.606.258.99.342a5.63 5.63 0 001.206.126c.48 0 .915-.069 1.305-.207.39-.138.723-.354.999-.648.276-.294.489-.669.639-1.125.15-.456.225-.996.225-1.62 0-.456-.048-.888-.144-1.296a3.146 3.146 0 00-.459-1.071 2.208 2.208 0 00-.819-.72c-.336-.174-.744-.261-1.224-.261zm7.66 7.416l-.684-1.08 7.164-4.158-7.146-4.23.684-1.116 8.478 5.166v.522l-8.496 4.896zM389.436 3.4h2.88v4.626h.09a3.082 3.082 0 011.206-.918 3.94 3.94 0 011.602-.324c2.64 0 3.96 1.524 3.96 4.572 0 1.548-.426 2.733-1.278 3.555-.852.822-2.064 1.233-3.636 1.233a8.655 8.655 0 01-2.016-.216c-.6-.144-1.038-.312-1.314-.504V4.606h-1.494V3.4zm5.598 4.59c-.72 0-1.302.204-1.746.612-.444.408-.768.984-.972 1.728v4.14c.276.144.606.258.99.342a5.63 5.63 0 001.206.126c.48 0 .915-.069 1.305-.207.39-.138.723-.354.999-.648.276-.294.489-.669.639-1.125.15-.456.225-.996.225-1.62 0-.456-.048-.888-.144-1.296a3.146 3.146 0 00-.459-1.071 2.208 2.208 0 00-.819-.72c-.336-.174-.744-.261-1.224-.261zm7.192 3.51c0-1.452.378-2.601 1.134-3.447.756-.846 1.836-1.269 3.24-1.269.756 0 1.407.123 1.953.369s.999.579 1.359.999c.36.42.627.918.801 1.494.174.576.261 1.194.261 1.854 0 .72-.096 1.371-.288 1.953a4.057 4.057 0 01-.846 1.485 3.738 3.738 0 01-1.377.945c-.546.222-1.167.333-1.863.333-.744 0-1.392-.123-1.944-.369a3.815 3.815 0 01-1.368-.999 4.073 4.073 0 01-.801-1.494 6.381 6.381 0 01-.261-1.854zm1.494 0c0 .42.051.84.153 1.26.102.42.267.798.495 1.134.228.336.525.606.891.81.366.204.813.306 1.341.306.96 0 1.683-.297 2.169-.891.486-.594.729-1.467.729-2.619 0-.432-.051-.855-.153-1.269a3.353 3.353 0 00-.504-1.125 2.656 2.656 0 00-.9-.81c-.366-.204-.813-.306-1.341-.306-.96 0-1.68.294-2.16.882-.48.588-.72 1.464-.72 2.628zm11.422-8.1h2.988v9.576c0 .732.123 1.248.369 1.548.246.3.609.45 1.089.45.336 0 .657-.06.963-.18.306-.12.645-.324 1.017-.612l.648.99a3.988 3.988 0 01-.63.45 4.678 4.678 0 01-1.422.54c-.24.048-.462.072-.666.072a3.81 3.81 0 01-1.188-.171 2.03 2.03 0 01-.873-.549c-.234-.252-.411-.585-.531-.999-.12-.414-.18-.927-.18-1.539v-8.37h-1.584V3.4zm15.94 0h2.916v9.522c0 .108.006.243.018.405a20.058 20.058 0 00.108 1.044c.024.174.048.327.072.459h1.206V16h-2.394l-.18-1.386h-.072c-.264.456-.657.837-1.179 1.143-.522.306-1.125.459-1.809.459-1.356 0-2.355-.381-2.997-1.143-.642-.762-.963-1.947-.963-3.555 0-.756.108-1.425.324-2.007a3.873 3.873 0 01.927-1.458c.402-.39.885-.687 1.449-.891.564-.204 1.194-.306 1.89-.306.252 0 .477.006.675.018.198.012.381.03.549.054.168.024.327.057.477.099.15.042.315.087.495.135V4.606h-1.512V3.4zm-1.08 11.61c.732 0 1.308-.189 1.728-.567.42-.378.708-.945.864-1.701V8.566a2.788 2.788 0 00-.891-.396c-.33-.084-.765-.126-1.305-.126-.96 0-1.716.279-2.268.837-.552.558-.828 1.437-.828 2.637 0 .492.045.951.135 1.377.09.426.24.795.45 1.107.21.312.489.558.837.738.348.18.774.27 1.278.27zm7.408-4.5v-.522l8.478-5.166.684 1.116-7.146 4.23 7.164 4.158-.684 1.08-8.496-4.896zm19.108-7.326l1.134.504-6.57 14.832-1.134-.504 6.57-14.832zm3.718.216h2.88v4.626h.09a3.082 3.082 0 011.206-.918 3.94 3.94 0 011.602-.324c2.64 0 3.96 1.524 3.96 4.572 0 1.548-.426 2.733-1.278 3.555-.852.822-2.064 1.233-3.636 1.233a8.655 8.655 0 01-2.016-.216c-.6-.144-1.038-.312-1.314-.504V4.606h-1.494V3.4zm5.598 4.59c-.72 0-1.302.204-1.746.612-.444.408-.768.984-.972 1.728v4.14c.276.144.606.258.99.342a5.63 5.63 0 001.206.126c.48 0 .915-.069 1.305-.207.39-.138.723-.354.999-.648.276-.294.489-.669.639-1.125.15-.456.225-.996.225-1.62 0-.456-.048-.888-.144-1.296a3.146 3.146 0 00-.459-1.071 2.208 2.208 0 00-.819-.72c-.336-.174-.744-.261-1.224-.261zm7.66 7.416l-.684-1.08 7.164-4.158-7.146-4.23.684-1.116 8.478 5.166v.522l-8.496 4.896zm11.116-4.896v-.522l8.478-5.166.684 1.116-7.146 4.23 7.164 4.158-.684 1.08-8.496-4.896zm19.108-7.326l1.134.504-6.57 14.832-1.134-.504 6.57-14.832zm5.41 6.966a18.063 18.063 0 00-.081-1.512 5.988 5.988 0 00-.063-.468h-1.206V7h2.394l.18 1.26h.09a4.06 4.06 0 011.233-1.053c.498-.282 1.107-.423 1.827-.423 1.284 0 2.25.354 2.898 1.062.648.708.972 1.866.972 3.474 0 .756-.111 1.437-.333 2.043a4.295 4.295 0 01-.945 1.539c-.408.42-.9.744-1.476.972a5.141 5.141 0 01-1.908.342c-.252 0-.477-.009-.675-.027a5.93 5.93 0 01-.54-.072 4.255 4.255 0 01-.477-.117 6.561 6.561 0 01-.504-.18v3.78h-1.386v-9.45zm4.14-2.052c-.36 0-.699.066-1.017.198a3.034 3.034 0 00-1.449 1.242 2.118 2.118 0 00-.288.792v4.104a3.3 3.3 0 00.891.423c.33.102.765.153 1.305.153.96 0 1.728-.315 2.304-.945.576-.63.864-1.551.864-2.763 0-1.02-.201-1.809-.603-2.367-.402-.558-1.071-.837-2.007-.837zm7.426 7.308l-.684-1.08 7.164-4.158-7.146-4.23.684-1.116 8.478 5.166v.522l-8.496 4.896z"/></g></g></g></svg> \ No newline at end of file diff --git a/2-ui/99-ui-misc/02-selection-range/range-hello-1.svg b/2-ui/99-ui-misc/02-selection-range/range-hello-1.svg new file mode 100644 index 000000000..2951607a2 --- /dev/null +++ b/2-ui/99-ui-misc/02-selection-range/range-hello-1.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="147" height="80" viewBox="0 0 147 80"><defs><style>@import url(https://fonts.googleapis.com/css?family=Open+Sans:bold,italic,bolditalic%7CPT+Mono);@font-face{font-family:'PT Mono';font-weight:700;font-style:normal;src:local('PT MonoBold'),url(/font/PTMonoBold.woff2) format('woff2'),url(/font/PTMonoBold.woff) format('woff'),url(/font/PTMonoBold.ttf) format('truetype')}</style></defs><defs><path id="path-1" d="M63 17h25v21H63z"/><mask id="mask-2" width="25" height="21" x="0" y="0" fill="#fff" maskContentUnits="userSpaceOnUse" maskUnits="objectBoundingBox"><use xlink:href="#path-1"/></mask></defs><g id="selection-range" fill="none" fill-rule="evenodd" stroke="none" stroke-width="1"><g id="range-hello-1.svg"><use id="Rectangle" fill="#C9DCEA" stroke="#C9DCEA" stroke-dasharray="5,2" stroke-width="2" mask="url(#mask-2)" xlink:href="#path-1"/><text id="<p>Hello</p>" fill="#AF6E24" font-family="PTMono-Regular, PT Mono" font-size="18" font-weight="normal" letter-spacing="1"><tspan x="5" y="33"><p>Hello</p></tspan></text><path id="Path-Copy" stroke="#C06334" stroke-width="2" d="M41 38v11h58.887V37"/><text id="p.firstChild" fill="#181717" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="25" y="69">p.firstChild</tspan></text></g></g></svg> \ No newline at end of file diff --git a/2-ui/99-ui-misc/02-selection-range/selection-direction-backward.svg b/2-ui/99-ui-misc/02-selection-range/selection-direction-backward.svg new file mode 100644 index 000000000..85615d38f --- /dev/null +++ b/2-ui/99-ui-misc/02-selection-range/selection-direction-backward.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="559" height="94" viewBox="0 0 559 94"><defs><style>@import url(https://fonts.googleapis.com/css?family=Open+Sans:bold,italic,bolditalic%7CPT+Mono);@font-face{font-family:'PT Mono';font-weight:700;font-style:normal;src:local('PT MonoBold'),url(/font/PTMonoBold.woff2) format('woff2'),url(/font/PTMonoBold.woff) format('woff'),url(/font/PTMonoBold.ttf) format('truetype')}</style></defs><defs><path id="path-1" d="M47 36h262v21H47z"/><mask id="mask-2" width="262" height="21" x="0" y="0" fill="#fff" maskContentUnits="userSpaceOnUse" maskUnits="objectBoundingBox"><use xlink:href="#path-1"/></mask></defs><g id="selection-range" fill="none" fill-rule="evenodd" stroke="none" stroke-width="1"><g id="selection-direction-backward.svg"><use id="Rectangle" fill="#C9DCEA" stroke="#C9DCEA" stroke-dasharray="5,2" stroke-width="2" mask="url(#mask-2)" xlink:href="#path-1"/><text id="focus" fill="#181717" font-family="PTMono-Regular, PT Mono" font-size="16" font-weight="normal"><tspan x="25" y="80">focus</tspan></text><text id="anchor" fill="#181717" font-family="PTMono-Regular, PT Mono" font-size="16" font-weight="normal"><tspan x="277.2" y="80">anchor</tspan></text><path id="Line-Copy" fill="#C06334" fill-rule="nonzero" d="M62 21v6h247v2H62v6l-14-7 14-7z"/><g id="<p>Example:-<i>itali" fill="#AF6E24" fill-rule="nonzero" transform="translate(13 37)"><path id="<p>Example:<i>italic</i>and<b>bold</b></p>" d="M.81 10.51v-.522l8.478-5.166.684 1.116-7.146 4.23 7.164 4.158-.684 1.08L.81 10.51zm12.718-.36a18.063 18.063 0 00-.081-1.512 5.988 5.988 0 00-.063-.468h-1.206V7h2.394l.18 1.26h.09a4.06 4.06 0 011.233-1.053c.498-.282 1.107-.423 1.827-.423 1.284 0 2.25.354 2.898 1.062.648.708.972 1.866.972 3.474 0 .756-.111 1.437-.333 2.043a4.295 4.295 0 01-.945 1.539c-.408.42-.9.744-1.476.972a5.141 5.141 0 01-1.908.342c-.252 0-.477-.009-.675-.027a5.93 5.93 0 01-.54-.072 4.255 4.255 0 01-.477-.117 6.561 6.561 0 01-.504-.18v3.78h-1.386v-9.45zm4.14-2.052c-.36 0-.699.066-1.017.198a3.034 3.034 0 00-1.449 1.242 2.118 2.118 0 00-.288.792v4.104a3.3 3.3 0 00.891.423c.33.102.765.153 1.305.153.96 0 1.728-.315 2.304-.945.576-.63.864-1.551.864-2.763 0-1.02-.201-1.809-.603-2.367-.402-.558-1.071-.837-2.007-.837zm7.426 7.308l-.684-1.08 7.164-4.158-7.146-4.23.684-1.116 8.478 5.166v.522l-8.496 4.896zM37.326 3.4h7.398v1.332H38.82v4.122h5.454v1.332H38.82v4.482h5.994V16h-7.488V3.4zm14.428 7.992L48.28 7h1.8l2.592 3.384L55.336 7h1.62l-3.474 4.32 3.69 4.68h-1.728l-2.862-3.69L49.666 16h-1.638l3.726-4.608zm9.19-3.69a5.717 5.717 0 011.746-.648 9.544 9.544 0 011.908-.198c.612 0 1.113.096 1.503.288.39.192.696.441.918.747.222.306.372.654.45 1.044.078.39.117.783.117 1.179 0 .456-.012.942-.036 1.458a66.688 66.688 0 00-.054 1.548c0 .6.036 1.17.108 1.71h1.206V16h-2.394l-.162-1.35h-.09c-.072.108-.18.246-.324.414a2.964 2.964 0 01-.567.495 3.664 3.664 0 01-.855.423c-.336.12-.732.18-1.188.18-.888 0-1.59-.228-2.106-.684-.516-.456-.774-1.08-.774-1.872 0-.612.135-1.122.405-1.53.27-.408.657-.72 1.161-.936.504-.216 1.113-.342 1.827-.378.714-.036 1.515.012 2.403.144.06-.552.069-1.011.027-1.377-.042-.366-.138-.657-.288-.873a1.206 1.206 0 00-.63-.459c-.27-.09-.603-.135-.999-.135-.54 0-1.056.075-1.548.225-.492.15-.93.303-1.314.459l-.45-1.044zm2.646 7.254c.336 0 .648-.054.936-.162.288-.108.54-.246.756-.414a2.743 2.743 0 00.864-1.116v-1.26c-.624-.108-1.2-.162-1.728-.162s-.984.057-1.368.171c-.384.114-.684.291-.9.531-.216.24-.324.552-.324.936 0 .396.135.741.405 1.035.27.294.723.441 1.359.441zM75.516 16v-5.994a9.51 9.51 0 00-.027-.729 2.442 2.442 0 00-.126-.63 1.01 1.01 0 00-.288-.441.734.734 0 00-.495-.162c-.408 0-.753.168-1.035.504-.282.336-.495.756-.639 1.26V16h-1.368V7h.936l.27 1.098h.072c.12-.18.237-.351.351-.513.114-.162.246-.303.396-.423.15-.12.327-.213.531-.279.204-.066.462-.099.774-.099.18 0 .366.027.558.081.192.054.369.138.531.252.162.114.303.267.423.459s.198.426.234.702c.276-.468.585-.834.927-1.098.342-.264.813-.396 1.413-.396.396 0 .717.066.963.198s.438.321.576.567c.138.246.234.54.288.882.054.342.081.723.081 1.143V16h-1.368V9.88c0-.252-.012-.489-.036-.711a2.268 2.268 0 00-.135-.585.967.967 0 00-.27-.396c-.114-.096-.267-.144-.459-.144-.42 0-.774.168-1.062.504-.288.336-.504.816-.648 1.44V16h-1.368zm8.812-5.85a18.063 18.063 0 00-.081-1.512 5.988 5.988 0 00-.063-.468h-1.206V7h2.394l.18 1.26h.09a4.06 4.06 0 011.233-1.053c.498-.282 1.107-.423 1.827-.423 1.284 0 2.25.354 2.898 1.062.648.708.972 1.866.972 3.474 0 .756-.111 1.437-.333 2.043a4.295 4.295 0 01-.945 1.539c-.408.42-.9.744-1.476.972a5.141 5.141 0 01-1.908.342c-.252 0-.477-.009-.675-.027a5.93 5.93 0 01-.54-.072 4.255 4.255 0 01-.477-.117 6.561 6.561 0 01-.504-.18v3.78h-1.386v-9.45zm4.14-2.052c-.36 0-.699.066-1.017.198a3.034 3.034 0 00-1.449 1.242 2.118 2.118 0 00-.288.792v4.104a3.3 3.3 0 00.891.423c.33.102.765.153 1.305.153.96 0 1.728-.315 2.304-.945.576-.63.864-1.551.864-2.763 0-1.02-.201-1.809-.603-2.367-.402-.558-1.071-.837-2.007-.837zM96.542 3.4h2.988v9.576c0 .732.123 1.248.369 1.548.246.3.609.45 1.089.45.336 0 .657-.06.963-.18.306-.12.645-.324 1.017-.612l.648.99a3.988 3.988 0 01-.63.45 4.678 4.678 0 01-1.422.54c-.24.048-.462.072-.666.072a3.81 3.81 0 01-1.188-.171 2.03 2.03 0 01-.873-.549c-.234-.252-.411-.585-.531-.999-.12-.414-.18-.927-.18-1.539v-8.37h-1.584V3.4zm19.18 11.466a4.53 4.53 0 01-.765.54 5.645 5.645 0 01-.963.432 7.06 7.06 0 01-1.089.279 6.633 6.633 0 01-1.143.099c-.72 0-1.356-.111-1.908-.333a3.674 3.674 0 01-1.386-.954 4.158 4.158 0 01-.846-1.485c-.192-.576-.288-1.224-.288-1.944 0-.756.105-1.428.315-2.016.21-.588.513-1.08.909-1.476a3.959 3.959 0 011.44-.909c.564-.21 1.194-.315 1.89-.315.504 0 1.002.066 1.494.198a2.95 2.95 0 011.305.747c.378.366.669.87.873 1.512.204.642.276 1.473.216 2.493h-6.966c0 1.08.291 1.887.873 2.421.582.534 1.359.801 2.331.801.324 0 .645-.039.963-.117.318-.078.621-.171.909-.279.288-.108.543-.228.765-.36.222-.132.393-.252.513-.36l.558 1.026zm-3.798-6.894a4.86 4.86 0 00-1.125.126 2.564 2.564 0 00-.936.423c-.27.198-.492.456-.666.774-.174.318-.285.711-.333 1.179h5.598c-.06-.792-.315-1.407-.765-1.845-.45-.438-1.041-.657-1.773-.657zm10.27-.036c0-.384.108-.681.324-.891.216-.21.504-.315.864-.315.384 0 .684.105.9.315.216.21.324.507.324.891 0 .348-.108.636-.324.864-.216.228-.516.342-.9.342-.36 0-.648-.114-.864-.342-.216-.228-.324-.516-.324-.864zm0 7.074c0-.384.108-.681.324-.891.216-.21.504-.315.864-.315.384 0 .684.105.9.315.216.21.324.507.324.891 0 .348-.108.636-.324.864-.216.228-.516.342-.9.342-.36 0-.648-.114-.864-.342-.216-.228-.324-.516-.324-.864zm20.216-4.5v-.522l8.478-5.166.684 1.116-7.146 4.23 7.164 4.158-.684 1.08-8.496-4.896zM155.29 16v-1.206h3.132V8.206h-3.132V7h4.572v7.794h3.06V16h-7.632zm2.646-11.556c0-.324.108-.603.324-.837.216-.234.492-.351.828-.351.348 0 .639.117.873.351.234.234.351.513.351.837 0 .312-.117.576-.351.792a1.238 1.238 0 01-.873.324c-.336 0-.612-.108-.828-.324a1.077 1.077 0 01-.324-.792zm8.758 10.962l-.684-1.08 7.164-4.158-7.146-4.23.684-1.116 8.478 5.166v.522l-8.496 4.896zM178.89 16v-1.206h3.132V8.206h-3.132V7h4.572v7.794h3.06V16h-7.632zm2.646-11.556c0-.324.108-.603.324-.837.216-.234.492-.351.828-.351.348 0 .639.117.873.351.234.234.351.513.351.837 0 .312-.117.576-.351.792a1.238 1.238 0 01-.873.324c-.336 0-.612-.108-.828-.324a1.077 1.077 0 01-.324-.792zM189.358 7h2.142V5.218l1.404-.396V7h4.806v1.206h-4.806v4.248c0 .876.213 1.524.639 1.944.426.42 1.035.63 1.827.63.54 0 1.011-.102 1.413-.306a7.614 7.614 0 001.089-.666l.468 1.062c-.42.336-.921.606-1.503.81a5.377 5.377 0 01-1.791.306c-.48 0-.933-.069-1.359-.207a3.12 3.12 0 01-1.125-.639 3.06 3.06 0 01-.774-1.107c-.192-.45-.288-.987-.288-1.611V8.206h-2.142V7zm13.186.702a5.717 5.717 0 011.746-.648 9.544 9.544 0 011.908-.198c.612 0 1.113.096 1.503.288.39.192.696.441.918.747.222.306.372.654.45 1.044.078.39.117.783.117 1.179 0 .456-.012.942-.036 1.458a66.688 66.688 0 00-.054 1.548c0 .6.036 1.17.108 1.71h1.206V16h-2.394l-.162-1.35h-.09c-.072.108-.18.246-.324.414a2.964 2.964 0 01-.567.495 3.664 3.664 0 01-.855.423c-.336.12-.732.18-1.188.18-.888 0-1.59-.228-2.106-.684-.516-.456-.774-1.08-.774-1.872 0-.612.135-1.122.405-1.53.27-.408.657-.72 1.161-.936.504-.216 1.113-.342 1.827-.378.714-.036 1.515.012 2.403.144.06-.552.069-1.011.027-1.377-.042-.366-.138-.657-.288-.873a1.206 1.206 0 00-.63-.459c-.27-.09-.603-.135-.999-.135-.54 0-1.056.075-1.548.225-.492.15-.93.303-1.314.459l-.45-1.044zm2.646 7.254c.336 0 .648-.054.936-.162.288-.108.54-.246.756-.414a2.743 2.743 0 00.864-1.116v-1.26c-.624-.108-1.2-.162-1.728-.162s-.984.057-1.368.171c-.384.114-.684.291-.9.531-.216.24-.324.552-.324.936 0 .396.135.741.405 1.035.27.294.723.441 1.359.441zM214.542 3.4h2.988v9.576c0 .732.123 1.248.369 1.548.246.3.609.45 1.089.45.336 0 .657-.06.963-.18.306-.12.645-.324 1.017-.612l.648.99a3.988 3.988 0 01-.63.45 4.678 4.678 0 01-1.422.54c-.24.048-.462.072-.666.072a3.81 3.81 0 01-1.188-.171 2.03 2.03 0 01-.873-.549c-.234-.252-.411-.585-.531-.999-.12-.414-.18-.927-.18-1.539v-8.37h-1.584V3.4zM226.09 16v-1.206h3.132V8.206h-3.132V7h4.572v7.794h3.06V16h-7.632zm2.646-11.556c0-.324.108-.603.324-.837.216-.234.492-.351.828-.351.348 0 .639.117.873.351.234.234.351.513.351.837 0 .312-.117.576-.351.792a1.238 1.238 0 01-.873.324c-.336 0-.612-.108-.828-.324a1.077 1.077 0 01-.324-.792zm15.166 3.942a7.111 7.111 0 00-.891-.243 4.64 4.64 0 00-.945-.099c-1.176 0-2.052.276-2.628.828-.576.552-.864 1.428-.864 2.628 0 .528.084.999.252 1.413.168.414.408.765.72 1.053.312.288.687.51 1.125.666.438.156.921.234 1.449.234.564 0 1.113-.096 1.647-.288.534-.192.981-.444 1.341-.756l.63 1.044a5.095 5.095 0 01-.63.45 6.053 6.053 0 01-1.971.774 6.38 6.38 0 01-1.305.126c-.78 0-1.467-.111-2.061-.333a3.914 3.914 0 01-1.485-.954 4.083 4.083 0 01-.9-1.494 5.818 5.818 0 01-.306-1.935c0-.756.105-1.428.315-2.016.21-.588.513-1.08.909-1.476a3.959 3.959 0 011.44-.909c.564-.21 1.194-.315 1.89-.315.888 0 1.611.078 2.169.234.558.156 1.029.33 1.413.522l-.018.054v2.502h-1.296v-1.71zm4.708 2.124v-.522l8.478-5.166.684 1.116-7.146 4.23 7.164 4.158-.684 1.08-8.496-4.896zm19.108-7.326l1.134.504-6.57 14.832-1.134-.504 6.57-14.832zM273.29 16v-1.206h3.132V8.206h-3.132V7h4.572v7.794h3.06V16h-7.632zm2.646-11.556c0-.324.108-.603.324-.837.216-.234.492-.351.828-.351.348 0 .639.117.873.351.234.234.351.513.351.837 0 .312-.117.576-.351.792a1.238 1.238 0 01-.873.324c-.336 0-.612-.108-.828-.324a1.077 1.077 0 01-.324-.792zm8.758 10.962l-.684-1.08 7.164-4.158-7.146-4.23.684-1.116 8.478 5.166v.522l-8.496 4.896zm24.05-7.704a5.717 5.717 0 011.746-.648 9.544 9.544 0 011.908-.198c.612 0 1.113.096 1.503.288.39.192.696.441.918.747.222.306.372.654.45 1.044.078.39.117.783.117 1.179 0 .456-.012.942-.036 1.458a66.688 66.688 0 00-.054 1.548c0 .6.036 1.17.108 1.71h1.206V16h-2.394l-.162-1.35h-.09c-.072.108-.18.246-.324.414a2.964 2.964 0 01-.567.495 3.664 3.664 0 01-.855.423c-.336.12-.732.18-1.188.18-.888 0-1.59-.228-2.106-.684-.516-.456-.774-1.08-.774-1.872 0-.612.135-1.122.405-1.53.27-.408.657-.72 1.161-.936.504-.216 1.113-.342 1.827-.378.714-.036 1.515.012 2.403.144.06-.552.069-1.011.027-1.377-.042-.366-.138-.657-.288-.873a1.206 1.206 0 00-.63-.459c-.27-.09-.603-.135-.999-.135-.54 0-1.056.075-1.548.225-.492.15-.93.303-1.314.459l-.45-1.044zm2.646 7.254c.336 0 .648-.054.936-.162.288-.108.54-.246.756-.414a2.743 2.743 0 00.864-1.116v-1.26c-.624-.108-1.2-.162-1.728-.162s-.984.057-1.368.171c-.384.114-.684.291-.9.531-.216.24-.324.552-.324.936 0 .396.135.741.405 1.035.27.294.723.441 1.359.441zm8.884-4.806a18.063 18.063 0 00-.081-1.512 5.988 5.988 0 00-.063-.468h-1.206V7h2.412l.162 1.458h.09c.12-.204.279-.405.477-.603a3.741 3.741 0 011.575-.927 3.593 3.593 0 011.026-.144c.552 0 1.041.06 1.467.18.426.12.78.333 1.062.639.282.306.495.72.639 1.242.144.522.216 1.185.216 1.989V16h-1.404v-4.896c0-.996-.162-1.746-.486-2.25-.324-.504-.912-.756-1.764-.756-.312 0-.615.063-.909.189a3.137 3.137 0 00-.801.495c-.24.204-.45.441-.63.711-.18.27-.312.555-.396.855V16h-1.386v-5.85zm16.408-6.75h2.916v9.522c0 .108.006.243.018.405a20.058 20.058 0 00.108 1.044c.024.174.048.327.072.459h1.206V16h-2.394l-.18-1.386h-.072c-.264.456-.657.837-1.179 1.143-.522.306-1.125.459-1.809.459-1.356 0-2.355-.381-2.997-1.143-.642-.762-.963-1.947-.963-3.555 0-.756.108-1.425.324-2.007a3.873 3.873 0 01.927-1.458c.402-.39.885-.687 1.449-.891.564-.204 1.194-.306 1.89-.306.252 0 .477.006.675.018.198.012.381.03.549.054.168.024.327.057.477.099.15.042.315.087.495.135V4.606h-1.512V3.4zm-1.08 11.61c.732 0 1.308-.189 1.728-.567.42-.378.708-.945.864-1.701V8.566a2.788 2.788 0 00-.891-.396c-.33-.084-.765-.126-1.305-.126-.96 0-1.716.279-2.268.837-.552.558-.828 1.437-.828 2.637 0 .492.045.951.135 1.377.09.426.24.795.45 1.107.21.312.489.558.837.738.348.18.774.27 1.278.27zm19.208-4.5v-.522l8.478-5.166.684 1.116-7.146 4.23 7.164 4.158-.684 1.08-8.496-4.896zm11.026-7.11h2.88v4.626h.09a3.082 3.082 0 011.206-.918 3.94 3.94 0 011.602-.324c2.64 0 3.96 1.524 3.96 4.572 0 1.548-.426 2.733-1.278 3.555-.852.822-2.064 1.233-3.636 1.233a8.655 8.655 0 01-2.016-.216c-.6-.144-1.038-.312-1.314-.504V4.606h-1.494V3.4zm5.598 4.59c-.72 0-1.302.204-1.746.612-.444.408-.768.984-.972 1.728v4.14c.276.144.606.258.99.342a5.63 5.63 0 001.206.126c.48 0 .915-.069 1.305-.207.39-.138.723-.354.999-.648.276-.294.489-.669.639-1.125.15-.456.225-.996.225-1.62 0-.456-.048-.888-.144-1.296a3.146 3.146 0 00-.459-1.071 2.208 2.208 0 00-.819-.72c-.336-.174-.744-.261-1.224-.261zm7.66 7.416l-.684-1.08 7.164-4.158-7.146-4.23.684-1.116 8.478 5.166v.522l-8.496 4.896zM389.436 3.4h2.88v4.626h.09a3.082 3.082 0 011.206-.918 3.94 3.94 0 011.602-.324c2.64 0 3.96 1.524 3.96 4.572 0 1.548-.426 2.733-1.278 3.555-.852.822-2.064 1.233-3.636 1.233a8.655 8.655 0 01-2.016-.216c-.6-.144-1.038-.312-1.314-.504V4.606h-1.494V3.4zm5.598 4.59c-.72 0-1.302.204-1.746.612-.444.408-.768.984-.972 1.728v4.14c.276.144.606.258.99.342a5.63 5.63 0 001.206.126c.48 0 .915-.069 1.305-.207.39-.138.723-.354.999-.648.276-.294.489-.669.639-1.125.15-.456.225-.996.225-1.62 0-.456-.048-.888-.144-1.296a3.146 3.146 0 00-.459-1.071 2.208 2.208 0 00-.819-.72c-.336-.174-.744-.261-1.224-.261zm7.192 3.51c0-1.452.378-2.601 1.134-3.447.756-.846 1.836-1.269 3.24-1.269.756 0 1.407.123 1.953.369s.999.579 1.359.999c.36.42.627.918.801 1.494.174.576.261 1.194.261 1.854 0 .72-.096 1.371-.288 1.953a4.057 4.057 0 01-.846 1.485 3.738 3.738 0 01-1.377.945c-.546.222-1.167.333-1.863.333-.744 0-1.392-.123-1.944-.369a3.815 3.815 0 01-1.368-.999 4.073 4.073 0 01-.801-1.494 6.381 6.381 0 01-.261-1.854zm1.494 0c0 .42.051.84.153 1.26.102.42.267.798.495 1.134.228.336.525.606.891.81.366.204.813.306 1.341.306.96 0 1.683-.297 2.169-.891.486-.594.729-1.467.729-2.619 0-.432-.051-.855-.153-1.269a3.353 3.353 0 00-.504-1.125 2.656 2.656 0 00-.9-.81c-.366-.204-.813-.306-1.341-.306-.96 0-1.68.294-2.16.882-.48.588-.72 1.464-.72 2.628zm11.422-8.1h2.988v9.576c0 .732.123 1.248.369 1.548.246.3.609.45 1.089.45.336 0 .657-.06.963-.18.306-.12.645-.324 1.017-.612l.648.99a3.988 3.988 0 01-.63.45 4.678 4.678 0 01-1.422.54c-.24.048-.462.072-.666.072a3.81 3.81 0 01-1.188-.171 2.03 2.03 0 01-.873-.549c-.234-.252-.411-.585-.531-.999-.12-.414-.18-.927-.18-1.539v-8.37h-1.584V3.4zm15.94 0h2.916v9.522c0 .108.006.243.018.405a20.058 20.058 0 00.108 1.044c.024.174.048.327.072.459h1.206V16h-2.394l-.18-1.386h-.072c-.264.456-.657.837-1.179 1.143-.522.306-1.125.459-1.809.459-1.356 0-2.355-.381-2.997-1.143-.642-.762-.963-1.947-.963-3.555 0-.756.108-1.425.324-2.007a3.873 3.873 0 01.927-1.458c.402-.39.885-.687 1.449-.891.564-.204 1.194-.306 1.89-.306.252 0 .477.006.675.018.198.012.381.03.549.054.168.024.327.057.477.099.15.042.315.087.495.135V4.606h-1.512V3.4zm-1.08 11.61c.732 0 1.308-.189 1.728-.567.42-.378.708-.945.864-1.701V8.566a2.788 2.788 0 00-.891-.396c-.33-.084-.765-.126-1.305-.126-.96 0-1.716.279-2.268.837-.552.558-.828 1.437-.828 2.637 0 .492.045.951.135 1.377.09.426.24.795.45 1.107.21.312.489.558.837.738.348.18.774.27 1.278.27zm7.408-4.5v-.522l8.478-5.166.684 1.116-7.146 4.23 7.164 4.158-.684 1.08-8.496-4.896zm19.108-7.326l1.134.504-6.57 14.832-1.134-.504 6.57-14.832zm3.718.216h2.88v4.626h.09a3.082 3.082 0 011.206-.918 3.94 3.94 0 011.602-.324c2.64 0 3.96 1.524 3.96 4.572 0 1.548-.426 2.733-1.278 3.555-.852.822-2.064 1.233-3.636 1.233a8.655 8.655 0 01-2.016-.216c-.6-.144-1.038-.312-1.314-.504V4.606h-1.494V3.4zm5.598 4.59c-.72 0-1.302.204-1.746.612-.444.408-.768.984-.972 1.728v4.14c.276.144.606.258.99.342a5.63 5.63 0 001.206.126c.48 0 .915-.069 1.305-.207.39-.138.723-.354.999-.648.276-.294.489-.669.639-1.125.15-.456.225-.996.225-1.62 0-.456-.048-.888-.144-1.296a3.146 3.146 0 00-.459-1.071 2.208 2.208 0 00-.819-.72c-.336-.174-.744-.261-1.224-.261zm7.66 7.416l-.684-1.08 7.164-4.158-7.146-4.23.684-1.116 8.478 5.166v.522l-8.496 4.896zm11.116-4.896v-.522l8.478-5.166.684 1.116-7.146 4.23 7.164 4.158-.684 1.08-8.496-4.896zm19.108-7.326l1.134.504-6.57 14.832-1.134-.504 6.57-14.832zm5.41 6.966a18.063 18.063 0 00-.081-1.512 5.988 5.988 0 00-.063-.468h-1.206V7h2.394l.18 1.26h.09a4.06 4.06 0 011.233-1.053c.498-.282 1.107-.423 1.827-.423 1.284 0 2.25.354 2.898 1.062.648.708.972 1.866.972 3.474 0 .756-.111 1.437-.333 2.043a4.295 4.295 0 01-.945 1.539c-.408.42-.9.744-1.476.972a5.141 5.141 0 01-1.908.342c-.252 0-.477-.009-.675-.027a5.93 5.93 0 01-.54-.072 4.255 4.255 0 01-.477-.117 6.561 6.561 0 01-.504-.18v3.78h-1.386v-9.45zm4.14-2.052c-.36 0-.699.066-1.017.198a3.034 3.034 0 00-1.449 1.242 2.118 2.118 0 00-.288.792v4.104a3.3 3.3 0 00.891.423c.33.102.765.153 1.305.153.96 0 1.728-.315 2.304-.945.576-.63.864-1.551.864-2.763 0-1.02-.201-1.809-.603-2.367-.402-.558-1.071-.837-2.007-.837zm7.426 7.308l-.684-1.08 7.164-4.158-7.146-4.23.684-1.116 8.478 5.166v.522l-8.496 4.896z"/></g><text id="mouse-move-direction" fill="#181717" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="93" y="22">mouse move direction</tspan></text></g></g></svg> \ No newline at end of file diff --git a/2-ui/99-ui-misc/02-selection-range/selection-direction-forward.svg b/2-ui/99-ui-misc/02-selection-range/selection-direction-forward.svg new file mode 100644 index 000000000..511b00a26 --- /dev/null +++ b/2-ui/99-ui-misc/02-selection-range/selection-direction-forward.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="563" height="94" viewBox="0 0 563 94"><defs><style>@import url(https://fonts.googleapis.com/css?family=Open+Sans:bold,italic,bolditalic%7CPT+Mono);@font-face{font-family:'PT Mono';font-weight:700;font-style:normal;src:local('PT MonoBold'),url(/font/PTMonoBold.woff2) format('woff2'),url(/font/PTMonoBold.woff) format('woff'),url(/font/PTMonoBold.ttf) format('truetype')}</style></defs><defs><path id="path-1" d="M47 38h262v21H47z"/><mask id="mask-2" width="262" height="21" x="0" y="0" fill="#fff" maskContentUnits="userSpaceOnUse" maskUnits="objectBoundingBox"><use xlink:href="#path-1"/></mask></defs><g id="selection-range" fill="none" fill-rule="evenodd" stroke="none" stroke-width="1"><g id="selection-direction-forward.svg"><text id="anchor" fill="#181717" font-family="PTMono-Regular, PT Mono" font-size="16" font-weight="normal"><tspan x="18.2" y="78">anchor</tspan></text><text id="focus" fill="#181717" font-family="PTMono-Regular, PT Mono" font-size="16" font-weight="normal"><tspan x="285" y="78">focus</tspan></text><use id="Rectangle" fill="#C9DCEA" stroke="#C9DCEA" stroke-dasharray="5,2" stroke-width="2" mask="url(#mask-2)" xlink:href="#path-1"/><g id="<p>Example:-<i>itali" fill="#AF6E24" fill-rule="nonzero" transform="translate(13 39)"><path id="<p>Example:<i>italic</i>and<b>bold</b></p>" d="M.81 10.51v-.522l8.478-5.166.684 1.116-7.146 4.23 7.164 4.158-.684 1.08L.81 10.51zm12.718-.36a18.063 18.063 0 00-.081-1.512 5.988 5.988 0 00-.063-.468h-1.206V7h2.394l.18 1.26h.09a4.06 4.06 0 011.233-1.053c.498-.282 1.107-.423 1.827-.423 1.284 0 2.25.354 2.898 1.062.648.708.972 1.866.972 3.474 0 .756-.111 1.437-.333 2.043a4.295 4.295 0 01-.945 1.539c-.408.42-.9.744-1.476.972a5.141 5.141 0 01-1.908.342c-.252 0-.477-.009-.675-.027a5.93 5.93 0 01-.54-.072 4.255 4.255 0 01-.477-.117 6.561 6.561 0 01-.504-.18v3.78h-1.386v-9.45zm4.14-2.052c-.36 0-.699.066-1.017.198a3.034 3.034 0 00-1.449 1.242 2.118 2.118 0 00-.288.792v4.104a3.3 3.3 0 00.891.423c.33.102.765.153 1.305.153.96 0 1.728-.315 2.304-.945.576-.63.864-1.551.864-2.763 0-1.02-.201-1.809-.603-2.367-.402-.558-1.071-.837-2.007-.837zm7.426 7.308l-.684-1.08 7.164-4.158-7.146-4.23.684-1.116 8.478 5.166v.522l-8.496 4.896zM37.326 3.4h7.398v1.332H38.82v4.122h5.454v1.332H38.82v4.482h5.994V16h-7.488V3.4zm14.428 7.992L48.28 7h1.8l2.592 3.384L55.336 7h1.62l-3.474 4.32 3.69 4.68h-1.728l-2.862-3.69L49.666 16h-1.638l3.726-4.608zm9.19-3.69a5.717 5.717 0 011.746-.648 9.544 9.544 0 011.908-.198c.612 0 1.113.096 1.503.288.39.192.696.441.918.747.222.306.372.654.45 1.044.078.39.117.783.117 1.179 0 .456-.012.942-.036 1.458a66.688 66.688 0 00-.054 1.548c0 .6.036 1.17.108 1.71h1.206V16h-2.394l-.162-1.35h-.09c-.072.108-.18.246-.324.414a2.964 2.964 0 01-.567.495 3.664 3.664 0 01-.855.423c-.336.12-.732.18-1.188.18-.888 0-1.59-.228-2.106-.684-.516-.456-.774-1.08-.774-1.872 0-.612.135-1.122.405-1.53.27-.408.657-.72 1.161-.936.504-.216 1.113-.342 1.827-.378.714-.036 1.515.012 2.403.144.06-.552.069-1.011.027-1.377-.042-.366-.138-.657-.288-.873a1.206 1.206 0 00-.63-.459c-.27-.09-.603-.135-.999-.135-.54 0-1.056.075-1.548.225-.492.15-.93.303-1.314.459l-.45-1.044zm2.646 7.254c.336 0 .648-.054.936-.162.288-.108.54-.246.756-.414a2.743 2.743 0 00.864-1.116v-1.26c-.624-.108-1.2-.162-1.728-.162s-.984.057-1.368.171c-.384.114-.684.291-.9.531-.216.24-.324.552-.324.936 0 .396.135.741.405 1.035.27.294.723.441 1.359.441zM75.516 16v-5.994a9.51 9.51 0 00-.027-.729 2.442 2.442 0 00-.126-.63 1.01 1.01 0 00-.288-.441.734.734 0 00-.495-.162c-.408 0-.753.168-1.035.504-.282.336-.495.756-.639 1.26V16h-1.368V7h.936l.27 1.098h.072c.12-.18.237-.351.351-.513.114-.162.246-.303.396-.423.15-.12.327-.213.531-.279.204-.066.462-.099.774-.099.18 0 .366.027.558.081.192.054.369.138.531.252.162.114.303.267.423.459s.198.426.234.702c.276-.468.585-.834.927-1.098.342-.264.813-.396 1.413-.396.396 0 .717.066.963.198s.438.321.576.567c.138.246.234.54.288.882.054.342.081.723.081 1.143V16h-1.368V9.88c0-.252-.012-.489-.036-.711a2.268 2.268 0 00-.135-.585.967.967 0 00-.27-.396c-.114-.096-.267-.144-.459-.144-.42 0-.774.168-1.062.504-.288.336-.504.816-.648 1.44V16h-1.368zm8.812-5.85a18.063 18.063 0 00-.081-1.512 5.988 5.988 0 00-.063-.468h-1.206V7h2.394l.18 1.26h.09a4.06 4.06 0 011.233-1.053c.498-.282 1.107-.423 1.827-.423 1.284 0 2.25.354 2.898 1.062.648.708.972 1.866.972 3.474 0 .756-.111 1.437-.333 2.043a4.295 4.295 0 01-.945 1.539c-.408.42-.9.744-1.476.972a5.141 5.141 0 01-1.908.342c-.252 0-.477-.009-.675-.027a5.93 5.93 0 01-.54-.072 4.255 4.255 0 01-.477-.117 6.561 6.561 0 01-.504-.18v3.78h-1.386v-9.45zm4.14-2.052c-.36 0-.699.066-1.017.198a3.034 3.034 0 00-1.449 1.242 2.118 2.118 0 00-.288.792v4.104a3.3 3.3 0 00.891.423c.33.102.765.153 1.305.153.96 0 1.728-.315 2.304-.945.576-.63.864-1.551.864-2.763 0-1.02-.201-1.809-.603-2.367-.402-.558-1.071-.837-2.007-.837zM96.542 3.4h2.988v9.576c0 .732.123 1.248.369 1.548.246.3.609.45 1.089.45.336 0 .657-.06.963-.18.306-.12.645-.324 1.017-.612l.648.99a3.988 3.988 0 01-.63.45 4.678 4.678 0 01-1.422.54c-.24.048-.462.072-.666.072a3.81 3.81 0 01-1.188-.171 2.03 2.03 0 01-.873-.549c-.234-.252-.411-.585-.531-.999-.12-.414-.18-.927-.18-1.539v-8.37h-1.584V3.4zm19.18 11.466a4.53 4.53 0 01-.765.54 5.645 5.645 0 01-.963.432 7.06 7.06 0 01-1.089.279 6.633 6.633 0 01-1.143.099c-.72 0-1.356-.111-1.908-.333a3.674 3.674 0 01-1.386-.954 4.158 4.158 0 01-.846-1.485c-.192-.576-.288-1.224-.288-1.944 0-.756.105-1.428.315-2.016.21-.588.513-1.08.909-1.476a3.959 3.959 0 011.44-.909c.564-.21 1.194-.315 1.89-.315.504 0 1.002.066 1.494.198a2.95 2.95 0 011.305.747c.378.366.669.87.873 1.512.204.642.276 1.473.216 2.493h-6.966c0 1.08.291 1.887.873 2.421.582.534 1.359.801 2.331.801.324 0 .645-.039.963-.117.318-.078.621-.171.909-.279.288-.108.543-.228.765-.36.222-.132.393-.252.513-.36l.558 1.026zm-3.798-6.894a4.86 4.86 0 00-1.125.126 2.564 2.564 0 00-.936.423c-.27.198-.492.456-.666.774-.174.318-.285.711-.333 1.179h5.598c-.06-.792-.315-1.407-.765-1.845-.45-.438-1.041-.657-1.773-.657zm10.27-.036c0-.384.108-.681.324-.891.216-.21.504-.315.864-.315.384 0 .684.105.9.315.216.21.324.507.324.891 0 .348-.108.636-.324.864-.216.228-.516.342-.9.342-.36 0-.648-.114-.864-.342-.216-.228-.324-.516-.324-.864zm0 7.074c0-.384.108-.681.324-.891.216-.21.504-.315.864-.315.384 0 .684.105.9.315.216.21.324.507.324.891 0 .348-.108.636-.324.864-.216.228-.516.342-.9.342-.36 0-.648-.114-.864-.342-.216-.228-.324-.516-.324-.864zm20.216-4.5v-.522l8.478-5.166.684 1.116-7.146 4.23 7.164 4.158-.684 1.08-8.496-4.896zM155.29 16v-1.206h3.132V8.206h-3.132V7h4.572v7.794h3.06V16h-7.632zm2.646-11.556c0-.324.108-.603.324-.837.216-.234.492-.351.828-.351.348 0 .639.117.873.351.234.234.351.513.351.837 0 .312-.117.576-.351.792a1.238 1.238 0 01-.873.324c-.336 0-.612-.108-.828-.324a1.077 1.077 0 01-.324-.792zm8.758 10.962l-.684-1.08 7.164-4.158-7.146-4.23.684-1.116 8.478 5.166v.522l-8.496 4.896zM178.89 16v-1.206h3.132V8.206h-3.132V7h4.572v7.794h3.06V16h-7.632zm2.646-11.556c0-.324.108-.603.324-.837.216-.234.492-.351.828-.351.348 0 .639.117.873.351.234.234.351.513.351.837 0 .312-.117.576-.351.792a1.238 1.238 0 01-.873.324c-.336 0-.612-.108-.828-.324a1.077 1.077 0 01-.324-.792zM189.358 7h2.142V5.218l1.404-.396V7h4.806v1.206h-4.806v4.248c0 .876.213 1.524.639 1.944.426.42 1.035.63 1.827.63.54 0 1.011-.102 1.413-.306a7.614 7.614 0 001.089-.666l.468 1.062c-.42.336-.921.606-1.503.81a5.377 5.377 0 01-1.791.306c-.48 0-.933-.069-1.359-.207a3.12 3.12 0 01-1.125-.639 3.06 3.06 0 01-.774-1.107c-.192-.45-.288-.987-.288-1.611V8.206h-2.142V7zm13.186.702a5.717 5.717 0 011.746-.648 9.544 9.544 0 011.908-.198c.612 0 1.113.096 1.503.288.39.192.696.441.918.747.222.306.372.654.45 1.044.078.39.117.783.117 1.179 0 .456-.012.942-.036 1.458a66.688 66.688 0 00-.054 1.548c0 .6.036 1.17.108 1.71h1.206V16h-2.394l-.162-1.35h-.09c-.072.108-.18.246-.324.414a2.964 2.964 0 01-.567.495 3.664 3.664 0 01-.855.423c-.336.12-.732.18-1.188.18-.888 0-1.59-.228-2.106-.684-.516-.456-.774-1.08-.774-1.872 0-.612.135-1.122.405-1.53.27-.408.657-.72 1.161-.936.504-.216 1.113-.342 1.827-.378.714-.036 1.515.012 2.403.144.06-.552.069-1.011.027-1.377-.042-.366-.138-.657-.288-.873a1.206 1.206 0 00-.63-.459c-.27-.09-.603-.135-.999-.135-.54 0-1.056.075-1.548.225-.492.15-.93.303-1.314.459l-.45-1.044zm2.646 7.254c.336 0 .648-.054.936-.162.288-.108.54-.246.756-.414a2.743 2.743 0 00.864-1.116v-1.26c-.624-.108-1.2-.162-1.728-.162s-.984.057-1.368.171c-.384.114-.684.291-.9.531-.216.24-.324.552-.324.936 0 .396.135.741.405 1.035.27.294.723.441 1.359.441zM214.542 3.4h2.988v9.576c0 .732.123 1.248.369 1.548.246.3.609.45 1.089.45.336 0 .657-.06.963-.18.306-.12.645-.324 1.017-.612l.648.99a3.988 3.988 0 01-.63.45 4.678 4.678 0 01-1.422.54c-.24.048-.462.072-.666.072a3.81 3.81 0 01-1.188-.171 2.03 2.03 0 01-.873-.549c-.234-.252-.411-.585-.531-.999-.12-.414-.18-.927-.18-1.539v-8.37h-1.584V3.4zM226.09 16v-1.206h3.132V8.206h-3.132V7h4.572v7.794h3.06V16h-7.632zm2.646-11.556c0-.324.108-.603.324-.837.216-.234.492-.351.828-.351.348 0 .639.117.873.351.234.234.351.513.351.837 0 .312-.117.576-.351.792a1.238 1.238 0 01-.873.324c-.336 0-.612-.108-.828-.324a1.077 1.077 0 01-.324-.792zm15.166 3.942a7.111 7.111 0 00-.891-.243 4.64 4.64 0 00-.945-.099c-1.176 0-2.052.276-2.628.828-.576.552-.864 1.428-.864 2.628 0 .528.084.999.252 1.413.168.414.408.765.72 1.053.312.288.687.51 1.125.666.438.156.921.234 1.449.234.564 0 1.113-.096 1.647-.288.534-.192.981-.444 1.341-.756l.63 1.044a5.095 5.095 0 01-.63.45 6.053 6.053 0 01-1.971.774 6.38 6.38 0 01-1.305.126c-.78 0-1.467-.111-2.061-.333a3.914 3.914 0 01-1.485-.954 4.083 4.083 0 01-.9-1.494 5.818 5.818 0 01-.306-1.935c0-.756.105-1.428.315-2.016.21-.588.513-1.08.909-1.476a3.959 3.959 0 011.44-.909c.564-.21 1.194-.315 1.89-.315.888 0 1.611.078 2.169.234.558.156 1.029.33 1.413.522l-.018.054v2.502h-1.296v-1.71zm4.708 2.124v-.522l8.478-5.166.684 1.116-7.146 4.23 7.164 4.158-.684 1.08-8.496-4.896zm19.108-7.326l1.134.504-6.57 14.832-1.134-.504 6.57-14.832zM273.29 16v-1.206h3.132V8.206h-3.132V7h4.572v7.794h3.06V16h-7.632zm2.646-11.556c0-.324.108-.603.324-.837.216-.234.492-.351.828-.351.348 0 .639.117.873.351.234.234.351.513.351.837 0 .312-.117.576-.351.792a1.238 1.238 0 01-.873.324c-.336 0-.612-.108-.828-.324a1.077 1.077 0 01-.324-.792zm8.758 10.962l-.684-1.08 7.164-4.158-7.146-4.23.684-1.116 8.478 5.166v.522l-8.496 4.896zm24.05-7.704a5.717 5.717 0 011.746-.648 9.544 9.544 0 011.908-.198c.612 0 1.113.096 1.503.288.39.192.696.441.918.747.222.306.372.654.45 1.044.078.39.117.783.117 1.179 0 .456-.012.942-.036 1.458a66.688 66.688 0 00-.054 1.548c0 .6.036 1.17.108 1.71h1.206V16h-2.394l-.162-1.35h-.09c-.072.108-.18.246-.324.414a2.964 2.964 0 01-.567.495 3.664 3.664 0 01-.855.423c-.336.12-.732.18-1.188.18-.888 0-1.59-.228-2.106-.684-.516-.456-.774-1.08-.774-1.872 0-.612.135-1.122.405-1.53.27-.408.657-.72 1.161-.936.504-.216 1.113-.342 1.827-.378.714-.036 1.515.012 2.403.144.06-.552.069-1.011.027-1.377-.042-.366-.138-.657-.288-.873a1.206 1.206 0 00-.63-.459c-.27-.09-.603-.135-.999-.135-.54 0-1.056.075-1.548.225-.492.15-.93.303-1.314.459l-.45-1.044zm2.646 7.254c.336 0 .648-.054.936-.162.288-.108.54-.246.756-.414a2.743 2.743 0 00.864-1.116v-1.26c-.624-.108-1.2-.162-1.728-.162s-.984.057-1.368.171c-.384.114-.684.291-.9.531-.216.24-.324.552-.324.936 0 .396.135.741.405 1.035.27.294.723.441 1.359.441zm8.884-4.806a18.063 18.063 0 00-.081-1.512 5.988 5.988 0 00-.063-.468h-1.206V7h2.412l.162 1.458h.09c.12-.204.279-.405.477-.603a3.741 3.741 0 011.575-.927 3.593 3.593 0 011.026-.144c.552 0 1.041.06 1.467.18.426.12.78.333 1.062.639.282.306.495.72.639 1.242.144.522.216 1.185.216 1.989V16h-1.404v-4.896c0-.996-.162-1.746-.486-2.25-.324-.504-.912-.756-1.764-.756-.312 0-.615.063-.909.189a3.137 3.137 0 00-.801.495c-.24.204-.45.441-.63.711-.18.27-.312.555-.396.855V16h-1.386v-5.85zm16.408-6.75h2.916v9.522c0 .108.006.243.018.405a20.058 20.058 0 00.108 1.044c.024.174.048.327.072.459h1.206V16h-2.394l-.18-1.386h-.072c-.264.456-.657.837-1.179 1.143-.522.306-1.125.459-1.809.459-1.356 0-2.355-.381-2.997-1.143-.642-.762-.963-1.947-.963-3.555 0-.756.108-1.425.324-2.007a3.873 3.873 0 01.927-1.458c.402-.39.885-.687 1.449-.891.564-.204 1.194-.306 1.89-.306.252 0 .477.006.675.018.198.012.381.03.549.054.168.024.327.057.477.099.15.042.315.087.495.135V4.606h-1.512V3.4zm-1.08 11.61c.732 0 1.308-.189 1.728-.567.42-.378.708-.945.864-1.701V8.566a2.788 2.788 0 00-.891-.396c-.33-.084-.765-.126-1.305-.126-.96 0-1.716.279-2.268.837-.552.558-.828 1.437-.828 2.637 0 .492.045.951.135 1.377.09.426.24.795.45 1.107.21.312.489.558.837.738.348.18.774.27 1.278.27zm19.208-4.5v-.522l8.478-5.166.684 1.116-7.146 4.23 7.164 4.158-.684 1.08-8.496-4.896zm11.026-7.11h2.88v4.626h.09a3.082 3.082 0 011.206-.918 3.94 3.94 0 011.602-.324c2.64 0 3.96 1.524 3.96 4.572 0 1.548-.426 2.733-1.278 3.555-.852.822-2.064 1.233-3.636 1.233a8.655 8.655 0 01-2.016-.216c-.6-.144-1.038-.312-1.314-.504V4.606h-1.494V3.4zm5.598 4.59c-.72 0-1.302.204-1.746.612-.444.408-.768.984-.972 1.728v4.14c.276.144.606.258.99.342a5.63 5.63 0 001.206.126c.48 0 .915-.069 1.305-.207.39-.138.723-.354.999-.648.276-.294.489-.669.639-1.125.15-.456.225-.996.225-1.62 0-.456-.048-.888-.144-1.296a3.146 3.146 0 00-.459-1.071 2.208 2.208 0 00-.819-.72c-.336-.174-.744-.261-1.224-.261zm7.66 7.416l-.684-1.08 7.164-4.158-7.146-4.23.684-1.116 8.478 5.166v.522l-8.496 4.896zM389.436 3.4h2.88v4.626h.09a3.082 3.082 0 011.206-.918 3.94 3.94 0 011.602-.324c2.64 0 3.96 1.524 3.96 4.572 0 1.548-.426 2.733-1.278 3.555-.852.822-2.064 1.233-3.636 1.233a8.655 8.655 0 01-2.016-.216c-.6-.144-1.038-.312-1.314-.504V4.606h-1.494V3.4zm5.598 4.59c-.72 0-1.302.204-1.746.612-.444.408-.768.984-.972 1.728v4.14c.276.144.606.258.99.342a5.63 5.63 0 001.206.126c.48 0 .915-.069 1.305-.207.39-.138.723-.354.999-.648.276-.294.489-.669.639-1.125.15-.456.225-.996.225-1.62 0-.456-.048-.888-.144-1.296a3.146 3.146 0 00-.459-1.071 2.208 2.208 0 00-.819-.72c-.336-.174-.744-.261-1.224-.261zm7.192 3.51c0-1.452.378-2.601 1.134-3.447.756-.846 1.836-1.269 3.24-1.269.756 0 1.407.123 1.953.369s.999.579 1.359.999c.36.42.627.918.801 1.494.174.576.261 1.194.261 1.854 0 .72-.096 1.371-.288 1.953a4.057 4.057 0 01-.846 1.485 3.738 3.738 0 01-1.377.945c-.546.222-1.167.333-1.863.333-.744 0-1.392-.123-1.944-.369a3.815 3.815 0 01-1.368-.999 4.073 4.073 0 01-.801-1.494 6.381 6.381 0 01-.261-1.854zm1.494 0c0 .42.051.84.153 1.26.102.42.267.798.495 1.134.228.336.525.606.891.81.366.204.813.306 1.341.306.96 0 1.683-.297 2.169-.891.486-.594.729-1.467.729-2.619 0-.432-.051-.855-.153-1.269a3.353 3.353 0 00-.504-1.125 2.656 2.656 0 00-.9-.81c-.366-.204-.813-.306-1.341-.306-.96 0-1.68.294-2.16.882-.48.588-.72 1.464-.72 2.628zm11.422-8.1h2.988v9.576c0 .732.123 1.248.369 1.548.246.3.609.45 1.089.45.336 0 .657-.06.963-.18.306-.12.645-.324 1.017-.612l.648.99a3.988 3.988 0 01-.63.45 4.678 4.678 0 01-1.422.54c-.24.048-.462.072-.666.072a3.81 3.81 0 01-1.188-.171 2.03 2.03 0 01-.873-.549c-.234-.252-.411-.585-.531-.999-.12-.414-.18-.927-.18-1.539v-8.37h-1.584V3.4zm15.94 0h2.916v9.522c0 .108.006.243.018.405a20.058 20.058 0 00.108 1.044c.024.174.048.327.072.459h1.206V16h-2.394l-.18-1.386h-.072c-.264.456-.657.837-1.179 1.143-.522.306-1.125.459-1.809.459-1.356 0-2.355-.381-2.997-1.143-.642-.762-.963-1.947-.963-3.555 0-.756.108-1.425.324-2.007a3.873 3.873 0 01.927-1.458c.402-.39.885-.687 1.449-.891.564-.204 1.194-.306 1.89-.306.252 0 .477.006.675.018.198.012.381.03.549.054.168.024.327.057.477.099.15.042.315.087.495.135V4.606h-1.512V3.4zm-1.08 11.61c.732 0 1.308-.189 1.728-.567.42-.378.708-.945.864-1.701V8.566a2.788 2.788 0 00-.891-.396c-.33-.084-.765-.126-1.305-.126-.96 0-1.716.279-2.268.837-.552.558-.828 1.437-.828 2.637 0 .492.045.951.135 1.377.09.426.24.795.45 1.107.21.312.489.558.837.738.348.18.774.27 1.278.27zm7.408-4.5v-.522l8.478-5.166.684 1.116-7.146 4.23 7.164 4.158-.684 1.08-8.496-4.896zm19.108-7.326l1.134.504-6.57 14.832-1.134-.504 6.57-14.832zm3.718.216h2.88v4.626h.09a3.082 3.082 0 011.206-.918 3.94 3.94 0 011.602-.324c2.64 0 3.96 1.524 3.96 4.572 0 1.548-.426 2.733-1.278 3.555-.852.822-2.064 1.233-3.636 1.233a8.655 8.655 0 01-2.016-.216c-.6-.144-1.038-.312-1.314-.504V4.606h-1.494V3.4zm5.598 4.59c-.72 0-1.302.204-1.746.612-.444.408-.768.984-.972 1.728v4.14c.276.144.606.258.99.342a5.63 5.63 0 001.206.126c.48 0 .915-.069 1.305-.207.39-.138.723-.354.999-.648.276-.294.489-.669.639-1.125.15-.456.225-.996.225-1.62 0-.456-.048-.888-.144-1.296a3.146 3.146 0 00-.459-1.071 2.208 2.208 0 00-.819-.72c-.336-.174-.744-.261-1.224-.261zm7.66 7.416l-.684-1.08 7.164-4.158-7.146-4.23.684-1.116 8.478 5.166v.522l-8.496 4.896zm11.116-4.896v-.522l8.478-5.166.684 1.116-7.146 4.23 7.164 4.158-.684 1.08-8.496-4.896zm19.108-7.326l1.134.504-6.57 14.832-1.134-.504 6.57-14.832zm5.41 6.966a18.063 18.063 0 00-.081-1.512 5.988 5.988 0 00-.063-.468h-1.206V7h2.394l.18 1.26h.09a4.06 4.06 0 011.233-1.053c.498-.282 1.107-.423 1.827-.423 1.284 0 2.25.354 2.898 1.062.648.708.972 1.866.972 3.474 0 .756-.111 1.437-.333 2.043a4.295 4.295 0 01-.945 1.539c-.408.42-.9.744-1.476.972a5.141 5.141 0 01-1.908.342c-.252 0-.477-.009-.675-.027a5.93 5.93 0 01-.54-.072 4.255 4.255 0 01-.477-.117 6.561 6.561 0 01-.504-.18v3.78h-1.386v-9.45zm4.14-2.052c-.36 0-.699.066-1.017.198a3.034 3.034 0 00-1.449 1.242 2.118 2.118 0 00-.288.792v4.104a3.3 3.3 0 00.891.423c.33.102.765.153 1.305.153.96 0 1.728-.315 2.304-.945.576-.63.864-1.551.864-2.763 0-1.02-.201-1.809-.603-2.367-.402-.558-1.071-.837-2.007-.837zm7.426 7.308l-.684-1.08 7.164-4.158-7.146-4.23.684-1.116 8.478 5.166v.522l-8.496 4.896z"/></g><path id="Line-Copy" fill="#C06334" fill-rule="nonzero" d="M296 21l14 7-14 7-.001-6H46v-2h249.999l.001-6z"/><text id="mouse-move-direction" fill="#181717" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="93" y="22">mouse move direction</tspan></text></g></g></svg> \ No newline at end of file diff --git a/2-ui/99-ui-misc/02-selection-range/selection-firefox.svg b/2-ui/99-ui-misc/02-selection-range/selection-firefox.svg new file mode 100644 index 000000000..aa7ff1eb7 --- /dev/null +++ b/2-ui/99-ui-misc/02-selection-range/selection-firefox.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="556" height="428" viewBox="0 0 556 428"><defs><style>@import url(https://fonts.googleapis.com/css?family=Open+Sans:bold,italic,bolditalic%7CPT+Mono);@font-face{font-family:'PT Mono';font-weight:700;font-style:normal;src:local('PT MonoBold'),url(/font/PTMonoBold.woff2) format('woff2'),url(/font/PTMonoBold.woff) format('woff'),url(/font/PTMonoBold.ttf) format('truetype')}</style></defs><defs><path id="rect-1" d="M48 88h448v281H48z"/></defs><g id="selection-range" fill="none" fill-rule="evenodd" stroke="none" stroke-width="1"><g id="selection-firefox.svg"><g id="Bitmap"><image width="448" height="281" x="48" y="88" xlink:href="data:image/png;base64,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ARIgARLIdALZmQ6A/ScBEiABEiABEiABEiABEiABEiABEog/gZyNGzfKvn374l8TayABEiABEiABEiABEiABEiABEiABEshYAtlcASNjrz07TgIkQAIkQAIkQAIkQAIkQAIkQAKBEcgyBIg8Oh8JjDcrIgESIAESIAESIAESIAESIAESIIGMJEAfEBl52dlpEiABEiABEiABEiABEiABEiABEgiWAAWIYHmzNhIgARIgARIgARIgARIgARIgARLISALZnH6RkdednSYBEiABEiABEiABEiABEiABEiCBQAnQAiJQ3KyMBEiABEiABEiABEiABEiABEiABDKTQPaBAwcys+fsNQmQAAmQAAmQAAmQAAmQAAmQAAmQQGAEsvKMEFhtrIgESIAESIAESIAESIAESIAESIAESCAjCWRTf8jI685OkwAJkAAJkAAJkAAJkAAJkAAJkECgBOiEMlDcrIwESIAESIAESIAESIAESIAESIAEMpMALSAy87qz1yRAAiRAAiRAAiRAAiRAAiRAAiQQKAGughEoblZGAiRAAiRAAiRAAiRAAiRAAiRAAplJgAJEZl539poESIAESIAESIAESIAESIAESIAEAiVAASJQ3KyMBEiABEiABEiABEiABEiABEiABDKTAAWIzLzu7DUJkAAJkAAJkAAJkAAJkAAJkAAJBEqAq2AEipuVkQAJkAAJkAAJkAAJkAAJkAAJkEBmEqAFRGZed/aaBEiABEiABEiABEiABEiABEiABAIlQAEiUNysjARIgARIgARIgARIgARIgARIgAQykwAFiMy87uw1CZAACZAACZAACZAACZAACZAACQRKgAJEoLhZGQmQAAmQAAmQAAmQAAmQAAmQAAlkJgEKEJl53dlrEiABEiABEiABEiABEiABEiABEgiUAAWIQHGzMhIgARIgARIgARIgARIgARIgARLITAIUIDLzurPXJEACJEACJEACJEACJEACJEACJBAoAQoQgeJmZSRAAiRAAiRAAiRAAiRAAiRAAiSQmQQoQGTmdWevSYAESIAESIAESIAESIAESIAESCBQAtl5eXmBVsjKSIAESIAESIAESIAESIAESIAESIAEMo9AdlZWVub1mj0mARIgARIgARIgARIgARIgARIgARIIlACnYASKm5WRAAmQAAmQAAmQAAmQAAmQAAmQQGYSoACRmdedvSYBEiABEiABEiABEiABEiABEiCBQAnQB0SguFkZCZAACZAACZAACZAACZAACZAACWQmAVpAZOZ1Z69JgARIgARIgARIgARIgARIgARIIFACdEIZKG5WRgIkQAIkQAIkQAIkQAIkQAIkQAKZSYAWEJl53dlrEiABEiABEiABEiABEiABEiABEgiUAH1ABIqblZEACZAACZAACZAACZAACZAACZBAZhKgBURmXnf2mgRIgARIgARIgARIgARIgARIgAQCJUABIlDcrIwESIAESIAESIAESIAESIAESIAEMpMAnVBm5nVnr0mABEiABEiABEiABEiABEiABEggUAK0gAgUNysjARIgARIgARIgARIgARIgARIggcwkkH3gwIHM7Dl7TQIkQAIkQAIkQAIkQAIkQAIkQAIkEBiBrDwjBFYbKyIBEiABEiABEiABEiABEiABEiABEshIAlyGMyMvOztNAiRAAiRAAiRAAiRAAiRAAiRAAsESoBPKYHmzNhIgARIgARIgARIgARIgARIgARLISAK0gMjIy85OkwAJkAAJkAAJkAAJkAAJkAAJkECwBLgKRrC8WRsJkAAJkAAJkAAJkAAJkAAJkAAJZCQBChAZednZaRIgARIgARIgARIgARIgARIgARIIlgAFiGB5szYSIAESIAESIAESIAESIAESIAESyEgCFCAy8rKz0yRAAiRAAiRAAiRAAiRAAiRAAiQQLAGughEsb9ZGAiRAAiRAAiRAAiRAAiRAAiRAAhlJgBYQGXnZ2WkSIAESIAESIAESIAESIAESIAESCJYABYhgebM2EiABEiABEiABEiABEiABEiABEshIAhQgMvKys9MkQAIkQAIkQAIkQAIkQAIkQAIkECwBChDB8mZtJEACJEACJEACJEACJEACJEACJJCRBChAZORlZ6dJgARIgARIgARIgARIgARIgARIIFgCFCCC5c3aSIAESIAESIAESIAESIAESIAESCAjCVCAyMjLzk6TAAmQAAmQAAmQAAmQAAmQAAmQQLAEKEAEy5u1kQAJkAAJkAAJkAAJkAAJkAAJkEBGEqAAkZGXnZ0mARIgARIgARIgARIgARIgARIggWAJZOfl5QVbI2sjARIgARIgARIgARIgARIgARIgARLIOALZWVlZGddpdpgESIAESIAESIAESIAESIAESIAESCBYApyCESxv1kYCJEACJEACJEACJEACJEACJEACGUmAAkRGXnZ2mgRIgARIgARIgARIgARIgARIgASCJUAfEMHyZm0kQAIkQAIkQAIkQAIkQAIkQAIkkJEEaAGRkZednSYBEiABEiABEiABEiABEiABEiCBYAnQCWWwvFkbCZAACZAACZAACZAACZAACZAACWQkAVpAZORlZ6dJgARIgARIgARIgARIgARIgARIIFgC9AERLG/WRgIkQAIkQAIkQAIkQAIkQAIkQAIZSYAWEBl52dlpEiABEiABEiABEiABEiABEiABEgiWAAWIYHmzNhIgARIgARIgARIgARIgARIgARLISAJ0QpmRl52dJgESIAESIAESIAESIAESIAESIIFgCdACIljerI0ESIAESIAESIAESIAESIAESIAEMpJA9oEDBzKy4+w0CZAACZAACZAACZAACZAACZAACZBAcASy8owQXHWsiQRIgARIgARIgARIgARIgARIgARIIBMJcBnOTLzq7DMJkAAJkAAJkAAJkAAJkAAJkAAJBEyATigDBs7qSIAESIAESIAESIAESIAESIAESCATCdACIhOvOvtMAiRAAiRAAiRAAiRAAiRAAiRAAgET4CoYAQNndSRAAiRAAiRAAiRAAiRAAiRAAiSQiQRyEt3p9xYmugWsnwRIIFUJdGuQqi1nu0mABEiABEiABEiABEgg8wjQAiLzrjl7TAIkQAIkQAIkQAIkQAIkQAIkQAKBE6AAEThyVkgCJEACJEACJEACJEACJEACJEACmUeAq2Bk3jVnj0mABEiABEiABEiABEiABEiABEggcAK0gAgcOSskARIgARIgARIgARIgARIgARIggcwjQAEi8645e0wCJEACJEACJEACJEACJEACJEACgROgABE4clZIAiRAAiRAAiRAAiRAAiRAAiRAAplHgAJE5l1z9pgESIAESIAESIAESIAESIAESIAEAidAASJw5KyQBEiABEiABEiABEiABEiABEiABDKPAAWIzLvm7DEJkAAJkAAJkAAJkAAJkAAJkAAJBE6AAkTgyFkhCZAACZAACZAACZAACZAACZAACWQeAQoQmXfN2WMSIAESIAESIAESIAESIAESIAESCJwABYjAkbNCEiABEiABEiABEiABEiABEiABEsg8Atl5eXmZ12v2mARIgARIgARIgARI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CBABIkAEiAARIAJEgAgQASJQUQjQBkRFVReZJQJEgAgQASJABIgAESACRIAIEAEiUJkIUABRmfVGrokAESACRIAIEAEiQASIABEgAkSACFQUAvXsEYxMRXFMZokAESACRIAIEAEiQASIABEgAkSACBCBikOAGhAVV2VkmAgQASJABIgAESACRIAIEAEiQASIQOUhUH/x4sWVxzU5JgJEgAgQASJABIgAESACRIAIEAEiQAQqCgEewaio6iKzRIAIEAEiQASIABEgAkSACBABIkAEKhOB+jQBUZkVR66JABEgAkSACBABIkAEiAARIAJEgAhUEgL169WrV0n8klciQASIABEgAkSACBABIkAEiAARIAJEoAIRoAZEBVYaWSYCRIAIEAEiQASIABEgAkSACBABIlBpCPAWjEqrMfJLBIgAESACRIAIEAEiQASIABEgAkSgAhGgAKICK40sEwEiQASIABEgAkSACBABIkAEiAARqDQEKICotBojv0SACBABIkAEiAARIAJEgAgQASJABCoQAQogKrDSyDIRIAJEgAgQASJABIgAESACRIAIEIFKQ4C3YFRajZFfIkAEiAARIAJEgAgQASJABIgAESACFYgANSAqsNLIMhEgAkSACBABIkAEiAARIAJEgAgQgUpDgAKISqsx8ksEiAARIAJEgAgQASJABIgAESACRKACEaAAogIrjSwTASJABIgAESACRIAIEAEiQASIABGoNAQogKi0GiO/RIAIEAEiQASIABEgAkSACBABIkAEKhABCiAqsNLIMhEgAkSACBABIkAEiAARIAJEgAgQgUpDgAKISqsx8ksEiAARIAJEgAgQASJABIgAESACRKACEaAAogIrjSwTASJABIgAESACRIAIEAEiQASIABGoNAQogKi0GiO/RIAIEAEiQASIABEgAkSACBABIkAEKhABCiAqsNLIMhEgAkSACBABIkAEiAARIAJEgAgQgUpDoH4mk6k0nskvESACRIAIEAEiQASIABEgAkSACBABIlBhCNSvV69ehbFMdokAESACRIAIEAEiQASIABEgAkSACBCBSkOARzAqrcbILxEgAkSACBABIkAEiAARIAJEgAgQgQpEgAKICqw0skwEiAARIAJEgAgQASJABIgAESACRKDSEKANiEqrMfJLBIgAESACRIAIEAEiQASIABEgAkSgAhGgBkQFVhpZJgJEgAgQASJABIgAESACRIAIEAEiUGkI0AhlpdUY+SUCRIAIEAEiQASIABEgAkSACBABIlCBCFADogIrjSwTASJABIgAESACRIAIEAEiQASIABGoNARoA6LSaoz8EgEiQASIABEgAkSACBABIkAEiAARqEAEqAFRgZVGlokAESACRIAIEAEiQASIABEgAkSACFQaAhRAVFqNkV8iQASIABEgAkSACBABIkAEiAARIAIViACNUFZgpZFlIkAEiAARIAJEgAgQASJABIgAESAClYYANSAqrcbILxEgAkSACBABIkAEiAARIAJEgAgQgQpEoP7ixYsrkG2yTASIABEgAkSACBABIkAEiAARIAJEgAhUEgL1MpYqiWHySgSIABEgAkSACBABIkAEiAARIAJEgAhUHgK8hrPy6owcEwEiQASIABEgAkSACBABIkAEiAARqDgEaISy4qqMDBMBIkAEiAARIAJEgAgQASJABIgAEag8BKgBUXl1Ro6JABEgAkSACBABIkAEiAARIAJEgAhUHAK8BaPiqowMEwEiQASIABEgAkSACBABIkAEiAARqDwEKICovDojx0SACBABIkAEiAARIAJEgAgQASJABCoOAQogKq7KyDARIAJEgAgQASJABIgAESACRIAIEIHKQ4ACiMqrM3JMBIgAESACRIAIEAEiQASIABEgAkSg4hBoUK9evYpjmgwTASJABIgAESACRIAIEAEiULcQePDjulVeljZdBA5YN930mFphCFADojDcGIsIEAEiQASIABEgAkSACBABIkAEiAARyAMBCiDyAItBiQARIAJEgAgQASJABIgAESACRIAIEIHCEKAAojDcGIsIEAEiQASIABEgAkSACBABIkAEiAARyAMBCiDyAItBiQARIAJEgAgQASJABIgAESACRIAIEIHCEKAAojDcGIsIEAEiQASIABEgAkSACBABIkAEiAARyAMBCiDyAItBiQARIAJEgAgQASJABIgAESACRIAIEIHCEKAAojDcGIsIEAEiQASIABEgAkSACBABIkAEiAARyAMBCiDyAItBiQARIAJEgAgQASJABIgAESACRIAIEIHCEKAAojDcGIsIEAEiQASIABEgAkSACBABIkAEiAARyAOBBplMxtSrVy+PKOUd9Oabbzavvvqqx+QFF1xg1ltvvfJmOEXu+vXrZ2bPnm0aNGhg7rzzTrP00kunmDqTIgK1D4ETTzzR/Pzzz963Mnz4cLPUUksVXMjvvvvOnH766V78jh07mvPOO6/gtAqJmGZZCsk/jTjDhg0zL7/8spfUgAEDzAYbbJBGsmWRBsqF8oEOPPBAs88++5QFX2QiGoEff/zRnHbaaebvv//22iPaZTE0Z84cc+utt5opU6aYjz76yLRo0cJ07tzZoM846KCDTOPGjYtJvsbjJukHa0NfVeNAkwEiUKYI/PzjLDPyslM87lZdp5PpdcK5Zcop2apJBOpZAUSmJhnAALxgwYKiWGjTpo1ZeeWVvTQOPvhgc//993vvL730ktlhhx0KTvuvv/7yJh4TJ040Z599ttl3330LTqs6IrZu3dpgsgSaP39+xU9kSonZ0KFDDRacPXv2NMVOKNPgs9z4SaNMlZBGs2bNzG+//eax+scff5hlllmmYLanTZtmNtxwQy/+dtttZ8aNG5eVVqn7kzTLksV4Nf7o06ePufvuu70cn3vuObPzzjtXY+6lzQqLzuOPP97LZPDgwWbgwIGlzZCpp4LA9OnTTYcOHby0tt12W/Paa68VnC76hAMOOMCN0/6EKmHcjuvH4vpBlLk29FX+uquk35gbDxo0yLRv395ce+21pnnz5pXEvnnw44pit84x+9Wn080Z3Zf0metv3tUMvveVssLggHWTsVPp30myUtZcqAY1l/WSnLfffvvQwTgpb9iduPrqq5MGTxwOk4Ubb7zRC9+/f39vx6o2aYskBqKWBcSCEzswoLffftsceuihZq211qqxUpYbPzUGRC3PmP1JLa9gFo8IRCCAjRYtfGjatKnZaqutzA8//GDef/9907t374rYNGA/FlHJFeKFTZfx48d72sI77rijOfzwwyuEc7JJBKoPAX4npcW6xgUQpS1ecalrYcMvv/xiattxleLQqdzYfjX733//vUYLU2781CQYjz/+uPniiy88odAKK6xQk6yknjf7k9QhDUwQC7rRo0ebtdde2+yxxx6BYehIBKobARyLFA3Fdddd1+BIjmhuLly40EADqxKoLvZjlTIuJeWzfv0q82/QuiERASKQiwC/k1xM0nSpcRsQsNOAM9hBdNddd5mPP16ia9WrVy+z6aabBgXzdhECPYp03Gabbczee+9t3njjDXPxxRcb3RiLTJrRaxABnLFF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UQR4jEoEiAARIAJEgAgQASJABIhA9SAQJ4CoHi5qVy5aAHHvlMVWWFPWCvJFgU8BRFHwpRa59raw1CBiQkSACBABIkAEiAARIAJEgAgQASJABIhAsQhQAFEsgoxPBIgAESACRIAIEAEiQASIABEgAkSACMQiQAFELEQMQASIABEgAkSACBABIkAEiAARIAJEgAgUiwAFEMUiyPhEgAgQASJABIgAESACRIAIEAEiQASIQCwCFEDEQsQARIAIEAEiQASIABEgAkSACBABIkAEiECxCDTAFVa4P5hEBIgAESACRIAIEAEiQASIABEgAnUHge16Hm5+/+1ns9RSDUz9pbg3XXdqvuZKyms4aw575kwEiAARIAJEgAgQASJABIhAQgR4DWdCoBgsEAFewxkIS7U7UsxV7ZAzQyJABIgAESACRIAIEAEiQASIABEgAnUPAWpA1L06Z4mJABEgAkSACBCBOoYAd47rWIWnWFzuGqcIJpMiAkTA1IcNCBIRIAJEgAgQASJABIgAESACRIAIEAEiQARKiQCPYJQSXaZNBIgAESACRIAIEAEiQASIABEgAkSACHgI1OcNGGwJRIAIEAEiQASIABEgAkSACBABIkAEiECpEaAGRKkRZvpEgAgQASJABIgAESACRIAIEAEiQASIAG1AsA0QASJABIgAESACRIAIEAEiQASIABEgAqVHgBoQpceYORABIkAEiAARIAJEgAgQASJABIgAEajzCFAAUeebAAEgAkSACBABIkAEiAARIAJEgAgQASJQegRohLL0GDMHIkAEiAARIAJEgAgQASJABIgAESACdR4BakDU+SZAAIgAESACRIAIEAEiQASIABEgAkSACJQegQaLFy82Sy21VOlzSjmHfv36mdmzZ5sGDRqYO++80yy99NIp58DkiAARIAJEoJwQ+O6778zpp5/usdSxY0dz3nnnlRN7JeVl3LhxZujQoV4e+++/v+nVq1dJ82PiRIAIVC8CUye8ap6/f8k3vs0eB5t/7dKzehmoo7m9/PLLZtiwYV7pDzzwQLPPPvvUUSRYbCJQfQjUr0ThA+AZPXq0uf/++80999xj/vzzz+pDjDkRgTwQ+Pbbb827777r/X3xxRd5xDTm888/d3F/+OGHvOIyMBGojQj8/PPPXr+Pvv+ZZ54puogvvfSS6dq1qznyyCPNL7/8UnR6pUzg008/dWV///33S5lVxaeNvna//fYze+65p/nggw9qvDzlxk+NA0IGAhH49vPpZvyY+7y/mdPfCwxDxyUIQBi7xRZbmIsuuqhoSD7++GP2rUWjWDMJVNIYXjMIlW+uDTKZjKlXr175ckjOiEAFI3DfffeZM8880yvBSiut5AkVmjRpElsiLLQ23nhj89tvv3lhhw8fbvr27RsbjwGIABFIjsCAAQPM+PHjzauvvmp23HFHc/jhhyePzJBli8CIESPMI4884vG38sormzvuuKNGeS03fmoUDGZOBIpEAPOiE0880Uvl7bffNoceeqhZa621ikyV0SsRAY7hlVhrS3imEcrKrTty/g8CN998s7ntttvKEo8TTjjBQPAA+vHHH82NN96YiM+rr77aCR/WXXddc9hhhyWKx0BEoBIRgIbPDTfcYJ5++ulqZb9+/SozSPPnz6/WvJlZ6RDQmyrz5s0rXUYJUy43fhKyzWBEoCwR8Gtu//7774F8Pv744964MmfOnED/uupYm3DhGF65rbg+NCBIRKBSEYB67UknnWSOO+64sixC48aNzf/93/853i655BID7YYowrGNiy++2AUZMmSIZ+vEOfCFCNQyBLBb3b9/f3cOt7qKd8YZZ5hVV13V036gTYXqQr30+eAc96abbmogvD3llFNKn2FMDuXGTwy79CYCZY0A5lUXXHCBadq0qTf3gz0gP8G+HTZuMK7ke/zVn1Zt+l3bcOEYXrmts0Hlsk7OiYCp9h3TQjDv06ePufzyyw3OGUJ18MorrzSXXnppaFIQUghtt912pkePHvKTTyJQKxHAjkxN0N57723wR6pdCKy33nrmnXfeKZtClRs/ZQMMGSECBSIwaNAgg78wwtEMOcIaFqYuutc2XDiGV24rrtI/rdwykPM6jMBjjz1W9qXHTS1XXHGF4xMaEdByCKJPPvnE4EiJEIQVJCJQmxHAJLG6j17UZjxZNiJABIhAXUdg7NixdR2CwPITl0BY6FgDCJSlBgTOysOyKW4PmDRpkoG61b/+9S+z2WabeRbL8TsfwtVtr732mpk6daqZPHmyZ+18o4028oz8bb755qZTp06Jk8ORFaQF1f8pU6Z4T/ADNV4Ywdl55509y7yS4PTp040sksH/TjvtJF6Bz+eff94rMzwPOOAAs+aaa2aFGzNmjFeOFVdc0bPcDk/g9Oabb3p8ff/99x5WW265pcHfKqus4uIvWrTIvPfee+b111/3jK799NNPnooqdmdgfA1pJiGoswED1A3+mjdv7qm7AtPu3btHXokKy8VYcAgWUAdDGhMnTjRvvPGGwQK8Xbt2pkOHDmb77bc3O+ywQyBLn332mbdQhwE5Ib3IhxvU82CDQdOCBQvMgw8+6G6lQNtAudu2bWvat29vdtttt7zag0476n2vvfYyW221lVdPCActh5tuuiknyvnnn+/cevfu7dWhcwh4KbZtw7jlrFmzPEO0OMoS9W3hjDyEI/gG0K4KsUtR0+0XZcBiF9/ljBkzzJdffmlwhnCDDTYwm2yyiWc5328kFAbk0CeBIG3H9xJHDz/8sMGtBSB882jvSagU9QH7CqNGjfI0cPDt/vrrr179oc1vuOGG3k0Bup8I4nPu3LkG10Cir8EOCvoSGEnFN7/77rubVq1aBUWLdcP3C+0gIfSp/u8YPKJfCSOc/wVfb731lvd9gdd11lnHq1PcguDvQ3U60h7hBkNmwCSIwBeOiUibwc1Lq622mvcHS+y77LKL198ExU3qBiyALfpD3IDTuXNnry9Hv4H+UNsRiEtTxinwjT+MfW3atPHaOOoMfetyyy0XmYy/r/7jjz88jDF+oP8HbbPNNt54h/EZ44AQ2hjKgjIhPL4xfDco0yGHHGKWWWYZCRr6hJAWN50AC/zhN/p0tDuMbXvssYeXblACuCVEJtq45QQYatL+J598stfv4TvBODphwgTviXPm4Hn99dc3Bx98sFl++eV1Enm96/yC+MGxPLFjJH0M2jX4AY4YG3GOHe0aPEmYvJgICbz4L2Omvf2ymTntXfP51LfNnB++Maut08ms3qGz2XDLbqbtmmvnxPz157nmpYdud+5d9u5jWv5j68g5qpdPpkwy09580XNp2KiJ2e2w7HEZHnYqYPl4xcycOsnM+mam+f6rT81fi/4wK666lllzw03N5t32Nq2sQdEwenbUMLNg/m9mrY52Trf1DubPRYvNJ++9aT6eNN58NOlVL9q6m2xr1t5oS9O+0xamSdMqY9C/z/vdfDZlgvnondfMJ+/aOYVtr23X7OBh0KXHYWbpZYL36ub/8pt5fvSS6xu32GU/s3K7tQzcpk58xcyY+o6XJjJeu+O/bFobm05b7WSaNG8aVoS83AupN38GX3w8zUx49mEz6+vPzezvvjSL//rTtGyzmmm58upm7U5bmk5ddjWNmzTyRwv8/fXXX3vjDDxh9yrKaDbmxBiDQXH9+y233OKNWQh77LHHuu9Q+ids8Jx66qmuL8C3hDEbdrSE8G1hXqlJp6Xd5R3zY/QF+MM32LBhQ7P22mt73x/mZv55gsTzP8tljpYWLrp8ul/r16+fadSokZk5c6ZbH2BeDyPAOA6H+RUMPaO+wkjGY8wnjjrqKC8Y5qeoP9QDbqpCHqi7fffd1/OXOPgRNYbDH30q1pYYDzEuYjxHfwresA6ExrG2KYE4moL6aYy1zz33nHczI8YojH1rrLGG1waXXnppHZ3vfgT+/vtvi1/50CuvvJKxkwwYpgj8s5OnjF00ZOxi3/nbRUVoAewtBJHpIZ///Oc/GTu5Ck1DPGxHkrETYZdvGI+2MUqUjL0uzoW3i2HnHvZiPywX/sknn8wJdtBBBzl/OwnOnHbaae53ED/WuruXhl1AZYBdUBi4AXPwGkd33XVXaBpIx05EM1aIEJqM1G3Pnj0zqDcrZIlMz060MnZimJWexjSsPFImHXHkyJGxbQHx0LZsR6ejpvKOutD8+nGynXWkv5+JNNq2/o7sBMKfRdZvO7A4/uyAkuWX9EdNtV98u9ZqtuNf14N+txOnjL0TPKs4diB08f79739n+QX9sEKurHZmhYpBwQLd0qwP9A/2fKTjXZfT/47vMIzswJ+xAtbQdICZ7vPC0vG7J6kP8Ik2I2QnDo4PKyzM2IVp1ljgLxd+Dx48OGMFnZJE1lO3RzsxyfLDD/SbSfp85HP99dfnxE/igH5Qt7GgMiBtfO/iN3DgwNCkrRA6g/5VwgY90c7Q30SR7qutUCdjJ2ehaaJ9IF8Q2ovEDcrbCvsydiMgNGvwhX4/KK52s0IFby4QlNCwYcNcfNS/n7Q/8sM3qtP2v6M8VojnTybxb51fED+6XV9zzTUZ9LXWfkUkT5i3/PXXX4l5QMDR07P/bn1tVqbjVjtF5nPEuddl7v8wO959UzOZ9Tbt4uJt3HXPzAMfZYeRvIZP+DXTvGVrF3a/EwZm8XHftEzmwFMuydiFrwvjx19+Hz3g5qy4kgeeDZssmTdu1m2vzPCJ8zLrb941ND3kNWz8bC+tSx56x8WVfPRztbU3zFzx2JTAfIeM+cjlccygWzLXjP0k03q19s5Np4N35HvZI+8FpoUyHDv4Nhf3gH4XhYYrtN4Er9vemJPZdIceLi8/n/p33wE3enzENTQrcM9Kzy72AqOgzWLMkDzQd4SRXXy6cAiPfkhI9zEyf8ecStKNe+KbE9Lf52WXXZaxgs/IdMC/3WSQ6KHPcpmjFYpLaMH+8dC4WWFE5oknnojEzQrqvTE1LF0Zj4EvyD8nljq99dZbXRISB35BY7gEtEfyYvtUK9TOYK4YRrqftjcrefMKu3mbU2a0TVI8AtjNLBu6++67AyvSv3DWnRcaXZgAwkpgc9JDXD3JlwaNBRUmm2FkdyACJ1W6E0Ra+I0FiJBeLKctgLDSxKzyYcLixwb8YHHgn8wEhQX/ViIorOc8sfgSvOQJLP15ws9qWuTEh4Pghee2226blR7S8vOJtOyOWVZamAhi0PIvisRNnhCGCNndy6y8kC7qHDz40wGupSK9MPCXC52z4GoNJ0WykFbb1t9CdQsgqrP9fvXVVw5bwRjtFosYf/vFbyvpdvjbXdysuFaDx/kFvei2hrTyWSSkWR9+4SS+OXwT+JPvULCwRk+DipIJ6pPBo+ZT0rjzzjsD0whztDsm3rfn50W+X3miHEJ6AgB/f91hcev/nsGf1SyRJLKeUZMX1Bv6CCkfnkgbfYZ/TIKf1RDJSjvJD7tbkpMH0kL6/rLpcoUJIMIW/0H9KvKxO0uhbEq94OnHATiLP9LBH8I89dRTWXjBPSgs3CAgC6LRo0fnpIH2FtRuIRwKIj0xDlrwa38IsqQMeKJcwN9fPvhZzceg7GLddH5B/Oh2DRz9dR/WrqPqL4gpWYDiiYWwFgygfPi9SrtcwccO+/bNWQzf8HyVQBpxsXjW6cs74sIff1bzIDPqg7+zwkFw4c8TwgSE9bsjjUtGv50VX/IRAQSea264mcsTcSBEEH/hBWHOuS13oRkUFm4Qukhe8tQCiHU23jonjzChyjm3PJ2TFtJMIoAott4g8PHjAz4hUFp9vc5ZuAGrwfeO93gNak9+Nz0u+AX5EhZzaakDeWLxGkR6LIUAVJP+PrUAAv2k7iuRB8KKuzwhvBbS36e/b4/qDz76yDbeECqnORoEEFJuwTwJLiFFc84at6B+1F8PyBN9m8beJWZf9HgMbHUda75ffPFFF03HCRNA3H777TltDukFjYvI02qeufT1i+6nrRZz5uyzzw5M199WdRp8r0KgbAQQmIjpxoaGoQd7TFawkPYPzGhEQQKIRx99NKthYPGsJVvID1I03aixIxdEmIj6OyXsplt1Gy84dtfskYCMVU/PWHWxrCRKKYAQ3jHxX7hwocsXUkM9EEg44IsOXU/8MGnWmB599NEuHf3in1hCSmzVsF2QadOmZWFkj044P/2i6xh84TcWOVpajrrBAlz4xhOLwCDSYYL8xU1PoLFz5NdwwG9MfNGZFbKbK/nEPa3aV1a5ZCfwhRdeyHL3a33odNNs27qdVLcAQuquOtov8MOuKhYxGIysOrOG1Ktz3TatkdAsfywAhF98+1Fkb1NwYa2l7qigOX5p1Yd/5+iee+7J+u6RMeobfRak/rJ7rRmCm5QZTwjMrFqqCwIMrSqqCwP8tL8LGPOiJ6SooyjSEwDhDWMF+gfdr2GCowVc4C1IcBQ1eYEGmuSBPtIe8chhDYJWLCj9wsScgCEO9riJywN5od3p8Qx4ok8WPuQZJIDwC0zAM/oymZxjnPrwww9zNBnChM76e0C+mExCi0sL1LRWhvCGJ8ZL9G2iYYmnf7xFvx9EEOCDd6tim0Ed6LENeV977bVZeNjjIDnJ6Ilx0IJf+wvfEA5jHNeERZSeRGOSXQjp/IL4KaZdY7xMSrJwxqIfC3wpOxakVz35oVsUY7F98GmXOX+EG3T3q85f0jn5ilFZYa579vOsMGfe8Fi2/zOfZflLOthlxyL4wFMvzdzwwhdZYa6zcfSCudO2u2b5Sxp+AQPSu3DU6xksuCXMKUNyhVsoGxbe0HIQLQ48j7/wjizeUVZJR55aAKGxvOLxD5zWCAQu597+bJZwAloSQQKNOAFEGvUG4YfwCoHTpQ9OzCkX+IcGRpcehzq/JG3MHmdyaQe1c6RxzjnnuDDCh3+8lbwgpJYw1naWOHtP3T9JH6cD6AWxPdamvXLe9fcp+UG4GdcfhAlAy3mOlg8uOUD5HIJws0dz3doIwTHu+vtsaPwFkR6PpX4xFjz00EOeJjT6/2+++caNaUhDxwkSQGCeI3WKJzadsF4RrUi0Hcy/kY+ECxOQ635a+EMcjNEY7zAHQXmD5lNB5a3rbmUjgNATMQz4s2fPDqwbND5pJPLUEzZEQoPSE/mw3T2EhaRL0sFTCz3gD9K7gGh09jaDJR4J/pdaAAHBQBAFqZQGlQ1x9Y4TJvN+wkevBTBYwAUR6kxjaS3b5wTTHy3CYkIcRlrl157nCwym8wsMYB3Bv4RD/jVNekGBAQyTcyyMhUdIVsMo7batv5OaEEBUR/sVLPUCVdz088Ybb3R14F9QWnsdzi9Kuo0Fo9Qjnv5jNjq/oPe06kMv6qOOVwTxIG72XK0rCyYVYaQ1mXDkI1/SvOYrgABe/v5f8kd/pPsbCGb9FDV5sbYpXPlR/2mTX+gO1fsw8u+0BAkgIBiTtofJlBa463QhONZCMn9bl7AaO6QbJhQdNGiQyxfhMH5rgbKkh6c+doPFRRjFfauaf62OK+npiXHQQkj7g+cjjjhCouY8sdsmuOIpE9ecgBEOOr8gfvTEFnmgXYdh6G/X9nx6RM7ZXrJw1oIBLIbvnvyHW2hKGDz3P3mwKzsW6dpP3rFIFXywiy4Laxxx0EKBEy4dERgf6UBI4D/mIenjCeGA5IE0tZ+867wQ9tbXfwoMp8uEcBBU3P3eosCwux5StaDe/bBTcsL4BRDQlLh3yuKccOARwhkpA55BAo04AUQa9XbomVc6Po4aNDSQV8FUP7NbUvAva9vBpY1xIYhkjNMLPmwQBZGEBV7+dq77p7QFEFCrF+Gpny9/f+APV+5ztFIKIKK0vPVaCPWJIzt+0uMxwmDdIRu9/rDyW8cJEkDo442Ybwe1FaSF8U23t6Bxxd9Pg8dSzA2kbLX9GWxZx6Ja3XTVVVe5LK2E1LRs2dL91i8wlgaDM1EEAzd2B8wLYjspY1V4Q4PDmBUMMAppg2jidtFFF8mrAW8wBFUOZKV0ngG4IF5g+A5lF7KTTM/Yj/zWTzvpdz9xVaTtUN1vvNhFooGxGZAdKJzxS89B/UOdaSOKdvdN+ea+wkgRjKuF0THHHOO8pD6dQx4vMCpjBzsvhpVOekZy8oieelA7YXdpwoAOjKDByBEIfEbdW59223aM1MBLdbVfKVqU8SOEsQOzBDVW/c+94wVG6ITsLrBnLFV+66fVMHI/raDCM1rlHKrxpUWLFi43GJ6F0ch8CEY37a6Fi+I3DOk87ItdDLuf9gyoe6+OlwEDBoQaTkV/ZBeqjo18+xA9BtndDZdOWi92V8ddE4e+2m8wV+cT1SdIOKttI6/mv//9r2d00jmoFxjG0lf9wkCpGIRTwbJeMeZKH5rlYX9ojOGH9gBDYUEE421CUfUR963qq4nF2KukW8hTj1v++N26dcsqu93d8gdJ/TfGiDAM/e3aarDknf/oG6u+2SPOu94s2yjYKGj3PlVzpy+nv2fmzpqdk9fRA4d6hgvhMX3Sa+bJ4UvmcrcNPMYstEYhQVvv3tt063WE9x70b6mlDOw+hlK7Dh2N3a33/JEmDD1GUfcjTjctWq4QGGTL3fbPct//xAvMsg2DjcVtvceBLuyPX3/m3sNe9jthUKjBypXXWNP0OPJMF/Xpu6v6V+cY85JGvS3Xospg8BcfptuvYcwTggFazLc0YR4p3/1+++3nGe+FPwzvwiC0Jrsh4sKif4ShwOqi8847L9Tor78/sILeLLZq0xwtq2AJflhBeWgo9P1WoOD8rearew97gfFJGLEslOyGtdH5XHjhhaEGkDG+od6FosYECWMFGsYK1eUnn3kiENHl55lSEcHtTpCzMo9kYMk0irCYjiK7q+68IXyIsuyPgLDeKuS/O9xKyzzr8eJvj3LIa40/DzzwwNBOEsxpQQmstIcRLJLryaXdxc0KKsIHOMLybJSVWAgohPyLOHGXp17UiZt+aqvFhUyyJC1Yj8ftJEIQOlmVK/lZ7U9Yz7fHQFy++tpNq4oYaV05zbbtGKihl+pqv0mLp29AwAJcEyzgW80V52S1oty7frFGWt1PLUBzjtX0AsvOIoCEUBHt32pjJM5dL0jtcarISQBuJRBCXlbjSH6W/Olf/PozxM02QtYOiLwmeuKGByFMhHBLDKxgp0XASghj0LLLLis/c54QvGOyE0b2mIKbrCOM3fUJC+q5o33o9KxKamR43OITRlbjIcsLE/Qw0mGL6dPRhwoVWydW+yxWUAhhqRAmtaUmLM6iqJh2/defGQNhglCnrcPnBrixwe7qS1DvZgr3458XhOk/5H7nfO9VZ5k7LzzFTHzhUc8NgoNjBt/m/At9abPGOi7q7/N+de9BL5vtVLWp4veyInq9AABAAElEQVRv1bqq7cBvg63C22vLNlVte9bX8YKezXYM/06Q104HHo+HR998XjVPFbeoZ1r1tt6mVf3aC/YGj9sH94sV6ETxpf0wTlrNB+dktdvcO16wOBeyR+Sy5mXY6NJkDdK7n/Z4lMGtNNVB6A/QP0ZRVH9Qm+ZoURj4/XDTkJ6z+/0xD9eC9Lj5CG4BxA1TxZDOA+1Sr0+C0sXaUuZNmAP654H+OJivkwpHIPw+lMLTzDumnhhaFRijd++CEtOTmCB/vSMStcMucXVng4mYVbF0nZ3mDfmusEKwVF3Sqs5n3NV5+pogPWEL4hGYy8eG8mvSeD777LM5Um0dVne+2HmNojj+pSNAGsUuaqC5gt1ZSORRTizI0BlhUYGOTucVxXNafpAUQ/Cgdwjs8RdjVYEjs9B1UWzbjsyoGjzj6j+t9usvilVh9hZr2GHBrguuecICzqo8+4Nm/YZAwVo+9tysSrW306t3arGggnaEkFwTJb+r84nBHjyKsBZ8oX2BJ1xhBYGk5t3Pm14cos1pgZk/rFUTzHKyFvxjF3RZEQr8gW827rvVV0Pm24fg+4JWAq57A+F7xR80lo488sjYyUxcsWQnEOGSXAUddZ0orlcVwjgVh4vkCQ0skO5XPAffv6hdKP2dIlrUd63DxtUH2hWuNUNbBFYoI75RbArE8etjP/JnFK4SUbcj//goYdJ6ou7irkjV/MTh6Odr9ndVbQV+D91QpQ3hD4vfs+z1jELfzfzYdNg0+0pT+K2/+Tam10kXmP/ddIEXdOy913tP/DvlmtGmaYtm7nfUyx8LFpkfvvrM/PjNDPPDF5/ahfEcs+iPhWbRwgXm+y+SC1CXXzF813QZew2ophVWaqt/Zr03bFR1VS2uqIwiewTENGy8bFQQ02a1tZ0/NDnm/TrPLNesKg/nGfCSVr21XWtds+vBJ5ln71tyDfizo240+Nv90P5WS+Uoe+Vp54DckzvhelxoP4CsDRWz6667ushWDd+9Q1CpBWm4ulpv8Fl1ehcWVz1XF0UtooUH/f35+wPdN1X6HE3Km+SZBDeNh7WvEZlsscIHJK7HWFz3Gke4ahU8ikYy4uvNWX/8JGn64/B3FQJlJ4BYffXVq7gLeVtxxRVDfJY46513vasZFqlZs2behE0Wg1iY4B5XECbTQkkmKhK2Op641z0pRX1EcWloKSIWMnqRFRVXBBphYaImqmFxCnXHBB9310PYIDuPUPvDrjb+oCkDVSrc81wdBEEWVJXPOusslx2OIUUtChEwzbbtMq6hl+pqvygeJgkQnmExWegxAUj4sfMBISXaNo4YYbIlZG2pyKu3A51kEegilOAFGkYQRBx33HFO0IUjIvjDIhVq9dgpx66Vn/TAjf4w6giGP670o373tH+Xuj8GdtYuiMH4oI/mwQ1/2Ck7/fTTvSMIhdz3rYU8UQt8wS3qe9FpJe3D9Fir+3jJTz9bt26tf4a+o83HaRyGRv7HA0IGLFSGDBnifWtx4Yv1jxPOF5t+vvFL3a5nfTMzi6XHbr8s63fUjwW/Z6vU67C9ThhoJo97ynw2ZYJz3vuYc0zHLbu632EvM6dPNc/cc4PBjnwa1KJlsrkRhAZhx0/y5WPlduvGRlnKzritzQnz0/dLtLHm2OdyzdaPjYcAadWb7dbMUQNvNI2Wa2Yeu+3/XN4QGuHPGic1PfqeaXBUpcHSNnCehOO/or5ur7M0skuMhbloWuGoRqtWrbwNPcxNZTyFNpOMR3qchrZEdVGx/UFtmqPlg7msmaLi6Dl/3JijN4aj0ozy08KgpPUKQYoIICAkwbwviHCcpLq0coLyrw1u9cuhEPYGAsdGkkk7FmlR4fQRgqjjAi5T+6LPW1oDWM5LpxWnmeEiFfHil6ZGJRW3S6LjFvOh+M+4YcBI8ocd1yjKh/+odJL6ocOwRmQM1OexeNBkDcB5R1aw0Mp3R0mnk8+7X9sBaoZxpNtjsW07Li+/f9q45FP/xbRf2DSB9sKee+6ZJXxAHwItGGgFwB4J/uJIH9caPnx4VnB91rBPnz5ZfqX4kaQ+rIEmb+cYC2itOQahwplnnulJ+2UXXPPoFx4m+d4lDHYRqoP0LlSp8sM3Zm/88YSWENjocQeTFAh5oNqpNb+S8qK/5STfAibsYaTH0KT9gtZG0GNeUB46bJB/Wm72ZhXvrDeEwrJYQdpoW8AZ54jhh2NBaREETOVEpW7Xv83JtuOAIxJJ/xo1rrIr5ces/lL1TEOfdgEW+HH07P23mbP36pgjfMDRj0136GG67t3H27GPS0f7+7UctF9Nvy/bsMo+ysLf5yVmJ816s92aOfTMS429YcTAXoauJwiQrjujtxlw8Fbm68+qjoklZXTzzTd3/SQ2eeSIlDVK7pIQWzDoq3AUUwgCCxAWpzIGQeifZCNR0ij2Wez3p/v1pH1x2Poj37IkmRPkm2aa4fXcABsVfu1JnZcea7V7Pu9z5851wbGhkIT0WBc1LhbbTpLwUtvDlIUGhO5ckhh4wkcWtcuG3STZwZPOL6oikZ50dgiHyY6QnrRXx9nP6shDypb0CVsSgqe9Fi3r7HDSNMolHIRX1qK/9/fuu+8aa8HWqdWDR6iaQ2pqLeCWnOU4bYcgBtJs20HpR7nhqEIlEgwPjRgxwrGOOobwZ/31s3ee0FfocC6CesFkSYwFPvjggwbHObAwRFsSzRr0GdoYl4qe6mvS+sCOEo782BsqzNixY80NN9xgZKKHfg8G/ew1nVm2d/RuBvDCIrwuE/pACClhkNhePWmgrST1DUEEJsnY+cpn1wY7LdKvJqlLLM7DSGsFok0mIRxvEIrSrpAwpX5iMgpbE4IrJqD26j2z//77G78GBsYhqHeT8keg5SpVNhDs9Zbm8ocn5p9IQIynRlxrpk6oUptHkAeuO8907rqHWbvjJgExjHn/9ZfM7YOOc36b77SP6d73DHuko0uOUcqPrIFLbbvCRSqTlznff52Ik2/tMRYhaEMkpVLU28rt1jJH/HeI6X3KJeb1J0eZJ+683Ah/EEScvud65pqxn5i2aybXDMW8BkcmMD6CXn/9dW/OiCMWQnqzBd88xiQQtPMgNLfXw0tQo8M6xzJ+qatzND2ehFWPvWnCeeG4fVKhgIuU54seN5KsBZG8XoPp+HlmzeAJECgLDQitGqPPsobxr4UFQWG0QAM7fXGkPwpMevSOiFaHjFMZissniXaDVqWNS6+6/PVCTRunq678S5UPrCrbK0UN2giOZgjB4NyUKVPkZ1k902zb/oLFtc8kA4w/zXL4LWf4wQsmOlhM6zYtPCbpK7CYxw6skBjV0scvcI416c6HpBP0TLs+oEUCw4MQQtjrh7MsUkOoovPT2kv2+t4g9uqkGzQVYEMDwgbcHqF3aXAjRz6kzz/7tcyC0olqn3qilHQM0Vbnkx7bCOIrLTeou8rZcaRpr7vzbPToskle2jaTuPGZDIHWq1cZc5wx9R1761WyeFGhPp/2vhl5+WkuyMZd93Tv1516gFkwf6H7rV9ee3yk+4mbMs644RGz4Ra5wgcE+vHrz13Ycnz55acfzOIY+7v+2ztatEp2VATlLUW9CY6NmjS0BjKPssKG6ab/VQ9kaUSMvvY8CZb4qe0+4Mgu5uzybUP7VAu4IayXfhTjKG5swrcvpA2Ii1s5P+vqHE0v3MPqR49h2kh+WPhi3bVgXY93Uelq2xQQkpBKh0D9KBWY0mWbnbI+F4SOKk6dNW4R3KVLF5eBvhbPOfpetPVdbdEdwXQDhtYFpLn5kBZmxE2aoEYruz/55FHqsLqj0OfySp1vvunrBVQ+cTFg4MyxPs+PHe1ypDTbNsqnrxqMWwSVq1Amqp4w4GmBZdQxC312MypNfbsFNAdwxEMfvxDDj1FphPlVV33gJhgY+RJtL/Rt2t6NXhxjNyrp7kFYuZK653tdaNJ00w6HnRscv4BdESFttV3cop7QgBB6/vnn5TX0GfX9QWAkk3jUpUz2wxIDzv/73/+cdzlMtCZOrNqJx7lbqHKHkT6eERaG7sEI4HpKrXL/4cTXggMmdIXhyOtPqxLg733sueY/Q8eY9TZdMg+DUckRl/YPTO3Dia86950O/Lc9U+1+Zr38ZOeFcqVnlkeZ/Zgx7Z1Ijia+WHUMofVq7c1SDSKDZ3mmXW9Zif/zA1rqXXr2Nuff+YLznvb2K+496Yu+CQfCBH3rmN7sQXq4/WefffZxScNWl55n6tuIXKA8X2C4trqokuZoaeICTcA4Q964elpIb+6KW9pPbcgSGy+4cTGKsPYUrUSE04KyqHj0KwyB+qVWgUnCFgx4aZVlfS1hUHyowkbR3nvv7bxhKM5/tabztC84fqHVi3VchMNOpr6uLB9jbIivPzLwEXWmqDrU/sFTvqQHE6i9yq5vvumUIrxMupG2GI4pJB/Uc9euXV3UoO8Cndf8+fNdmJp40e2z2LYN/rVwKerWknnz5nlG4WqizMXk6a+vMAN56AeuvPLKRFlhcST3WeN7gABThBwwlqW/+UQJqkDVWR8whNq5c5XFc2AghKMEcvwMC1ocPSgV6W/46aef9m4kKVVeaaerF8kLFizIK3k9sYY2hd4d8ieEsSPK+C/GUH2tsTaa6U8Lvx944AHXZoG/LkdQ+Opw05NXLYjz542dNn3drd+fv+MR2GLnfV2gkZedarWf3M+8X0ZedppT2199vc7mgH4Xegvrk6+4x6X10kO3mTefWXItp3O0L9oGQqOmzbVX1vvYu6LnfFmBa/DH2Huqbv/ws4HLgp4YXjXGdO6S/80Oadabnz/9u33HKhtZfyyMvh1Kx5N3CLBFqIl5md7kC7rSV89roIGKMQeETaGwMVvyCnvqM/pRfWdY/ELddVnKcY5WKlxQZ/qWEz9+2ODSR1x32GEHf5DUf0PLWdoh+NMbRUGZ4WilENZ92maFuPOZHgJlcQQDxRk8eLArFSyMY4IURGhAWjoaFAbWvfUuJN6DtCow4cF1aiLxwoQbNyH4Saz4wh2L73PPPTfUUCF2EbEjKqQtjWORgrIFERYypZzkB+WZ1A3q6rD2LnT44YebRx/NnUyIPzQ5sLsWdWZZwhb71Nf6RLULDGpRKlhYqMqZRfDkP8t99dVXG3TcUMG+7rrrimW74Phpt22tag8V8qCdbggfcPWgTAoKZr4GIsrgI1nriZC4YRcA17TmI8DS/YQ+koFbJYqhtOoDNgVgbFUbJ/TzBU0yTJCEtB0B7ErBPooQhL7oB7WQQvzwhGAVO11Ru/Q6vH737zLo8786XHW/Y9EPgUhYmcGP1iLQwqMkvGICpgXv6FeD+kwcfcL3F0c6DPpCjKlBWmHYjcT1w0K4bUILgcS9up+6z0UbCNIYxHFJGHitxL6ouvGMyu/g0y933jiGceNZh5hff/7FuflfcEsF7DX4acILT5rn7r/ZOfe7apRZZtkl2/qtV1vD/PuSKkO9N5/bx8y2ixBNq3eoEoC+9XTVLUI6zOtjHjL53NSh41b3+7jHRppXHhuVky2OZtwx+OQsGxbQFMmX0qi3zz+YbCaNezbyuMhbz1TtVCe53SOoHDD6LARNQRBs5ejvXPxxLbSQXsRqrVTxT/rUx8r03C5p/ELDlfscrZS4YG2kNdkEQxjm3G+//eSndyU4bPtUB2FuJ4Tb7oI2UHESAHMcLaCIE+JLmnwWjkAeCmCFZ5IkJnbZMRkTSSUM0WDyt/3223s2GSA9w+IBbkno2muv9QQVmKjgWAM6PiyiIRHDZAsTZRgT06qcWGRqa7SSD3Y7ce4Xi1gQNCagervbbrt56SIPCB6wKEde4FWObkB6q++SBw8TJkzwjG1hlwfx3njjjSzJoORbTk8sTjGIQIiC8uLmAJR/66239u5yxgIeE2UcXRBBAMqJXdZSErQWZOGIBZLezcNZLiwOYRQJVxGCMNDhTCF2qXH0AkIotIVbbrnFHX+BIEp2uBEHAiXdGSEf3IaQxjl/pJ8vpdm2MZm/4IILPBZQtxDowOggJgkLFy70zrqjUxYhXb681nR47AyjnYrRRRi0ggVuuOFsOQyOQuMq36NPMEYpd5aL9gPKqlVJCyl7WvWBfkVu4sDCFuduofKPPgdCJvSzWtMMmPi/VexUYQIofe55551n7r33Xk8jTGxo4JuHbRwYGEO/gMUsrrzNhyDUw/f2/vvve9HAL3Yi8B2iX0E7rK7JiuYbRypguBPHVCDExhgCYQmsZMNYMgwh6h0djBH5EoQEcsUchNCoJwixIIiC4AOCc3zvwDaOgDsMruJ6XxC+awgbUI+oL4xLsP1xxx13uKRQJgjhy4HAP/pvlBV/0MpAvUNQA/sl6KfRvpJgUQ7lKWceWtorvA87e4i554ozPDbHj7nPfPDmi/bqxQPMau03MI2atjBzZ31rZn/7pXn7hUe8ayNxI8VG23RzxcKxCAguhPqcc61ZY90N5Kf37Narr3n7+UfMOy897h2huOnsQ835I150Ry06bbWzmTJ+yTGmx++43LvCc8td9zetVm1nfvnxe/PWsw+aya+NzUqz3H+gjG8/9z+Dsq3Ydk3PdsVbzz6UZaBz10NOtn5t8y5KGvU2bcLLnr0O3HzSpcehZtX2G5pWbdcwyzZuYuv8ezPJ1tXLj1QJjnY6YMncKV9mMdfyb7hhXh9EOKqMHWf/jUzSNwbFiXPT1ydijoijk5i3Ii+MWbBTIVp+cWnl61/Oc7RS4oK5EMYwCMNxwxg2NSZPnmxwY5ieQ1588cXVdoUl1gAQaoldEczRMMfArUqof7QFHM+QOSLqGvxvuOGG+VY7w+eLgF1cWeFPeZCdzGasEMIqqpnIPztpy9gG5MLYSWpgAezkLWN3QF24sHTtpCdjF9eBaYij3QXO2EYZmxbysBM9ieY9rfQvYyexsXFt55ixQhAXzk5ws9LBD9uBO397hjvHXztoLO31k9or591OeF26fv4lsP1QE9WP4GwFEBLVPYG1+NudZ+ce9GKvcHJh7YIxKEjGdngZnaakLU97bMKLJ7/jnkjLj5XdRczJw6pbB/KTj6Pd7XTlA1/5UJpt2wrUsvgIw8h20A4HO7jkw64LWxPt1wqiEpXPCqEyVn3SC2sHJsdz2ItdcGala4VcYUHzck+jPvDthdWj3x3fvt1ZDuTRalBkrKAlcVp2gRiYTpyj1cQIzcNOaFx0fJvCP/q3OLr++utdeCtEzAke1R5RFskr7ol0rBZITvpJHKyALzYfjGMYD4QPK2QITBp9FfwkXNTTTvhzxiqdqO5Xo/pq+Ek+iBNFGFskLNqdn+xOpfOXcEFPK7R34fAd+mnYsGHOH/MFP8X5+8NLvwBekHe+FJdf2u06jL/R0zMZ+btvWiZz1Pk3OZyCcNZuVgDh4t7/YSbTadtdXdyOW+2UQXqStn4OGz87Y21OuLCHnHGFC3fvlMUZe2zD+en89Lu9ijNz+NlVc6ObXvzapSF56TyQrrj7n/CTtBHH769/3/raLBd2lXbr5oQdMuYj57/FLvtltu1+sPstefifO+zbN3P35D9y0kK+xw6+zcU/oN9FgWGKqTfk0ec/17g8/Lz5f6M899mpI+LlS/75DdK2xzxDk7GC0Sy+MGeOWp/E9U+IaxeZWWnq8lnBuuMl7vt0Af95SdIflOscLR9c/OX2/9a4/fe//83YjYRQvAV7jMlhFDUeFxPHXseZwXgnPEQ9rcZExm56BGaXbz8dmAgdHQJlcwTDNgiD62sgpcJue5BkEpI1qBVjh0d24BAvbCcau7lQB4K0TYytIbwQ3GAQBzsrhx56qDgHPrHrBQv60MIAH0FkO0RvV1QbnkQ47CzCwF3//sGGmLALhZ0wWADWZ3Gx6+Mn7OgKxV3jqMMGpSXp4KnT0u86DFS3YLgOOGgNAR0G79ixws0Duo4kjNYwCbKzIOHw1DyH8QQJK3b1IM0MImkbwLZv376hqsaoO6iPYccR9aEJaUA6L2Q7yVTOhunySdpJn2m2bWg8YJfbX27wAlxQdkixsWMgbb9Q3nWbDKtTwUCHjctPp6XfkRaOYeD7C7vOC5pX2O0+/vjjDYwzgpZZZhnvGfUP7UkTrvZMg9KoD2iwQKsnrMzgE30stCBwV3tQ/4gw6MvwLeOoRtg3hnDYscfue69evfAzb4JWEjQKgvp9fS+3bge6fYRlqMP72wXi6DT8/tgtg7ZTVLnhh/vtoR3mjx/Gk98dGgioA7RDP6FecG0w+jhtWV6XS8dBX4WxBJoPYXWPvhttA5pqoqmn05D3pH217sd1HElHPzVG+l3CQOMBbS2sL4KmDm75wC6eqG0HpaPd9Lvko930u/j7n7o/CMPeH0f/1nnodwmj09RtUvz9Tx0+KD1/+KDfmF7sfviJ5rpnPzd28WywIx5EcN/9sFPM/idd4LxffWKU01yAQcsT/2+k02pwgf55Wb5VS9Pv8nud86ghZ5sfvv7S+730Mra93v2q6XnkWc5fv8CmxPEX3mFOvOwus84mWzuvpRrkKu8u27Cx89dt0jn+86L9dBx/OPyur/JZqkHV3Cso7GKrsdR/yChjBSVmtbVzd0+tAMNYAYMty3CzbKPg8UWXS7/r/IqpN6Tzr133MwefdpkzEqrTlncYED37ljHm5CtH5WUoU+LjiRujdN+JcThq3ug/bgFbCrqudNp4131NUDi4oW8O00zT5/v1N6Tf/XnK7yT9QbnO0fLBRcqb5InryGH8GJqhQfMJ9NkwMArt4TDSfV+SekA6SeLg+DQ01KGJEdYGZR6Iq59xBDWIdL+r8w0KS7d4BOpBFBEfrGZCQFXYSpy8jqZjx46hjSIJd1BnhfEqGPqyEkBP1VyfeU6Shg6Ds7VQc4YqLholPjhMnnXHpMPLO+LhbCvUkdAB4mOACnIlEs5945gD7p3Hx4gOCGrtNVUe8AF+oKKL+sAizN+RoO5x7AZnraHaDZ5xCwvagu5c/PUBOwEQjiEM1AKTdo7+dErxO822DUObUEnDmT0xJBU0uJeiHNWRJsqHBQxsJGBChGMJIqTKN385hoV4SAvHOdLGKo36QDvHVZr4LtD/YNGJ40eYIOZLGC7Qf0k/iu8G31CU0cB88sD3iWMd6B+RF/oTCD5r+ntDf4FjOrCHgr4OfQb+tHAkn3KGhcW3jHaEsQoCXH1DVFicKHe78+PZvoFqLNKCnYpKmTiBZ7QD9L2YzAddxxlVdvrlIvDgx7lu2uXXn+eaH+2tFX8u+sM0btbCNGuxomnWEmOjDlWa9z8XLTY/fjPD/PTdVwbXU67cbj0DAUU501efTjdndO/gsbjhFt3MoLurro/8ff4C8+2Mjzy/VdfawDRsHLyoSaN8hdbbb3N/Nd/NnO4ZA4WAZYWVVjHLr9Q2kNcD1k2D05pJA/02+hLM1zHuYbxOa8xKUqJynaMViwsM52PjBoQNCH0VNez1YK6FMRL9dzmNO2gHmMdgfoV5Lux2FDoPTFL/DBOMQFkLIIJZpisRIAJEoOYRgB0IaNaAYBcGmgskIkAEiEC5IhAngChXvsuVLy2AWH/zrmbwva+UK6tF81XJAoiiC88EAhHQAgho3on9ocDAdCQCPgTql7EChI9V/iQCRIAIlAcCMJgowgdwBDV5EhEgAkSACBABIkAEiAARIALRCJS3fls07/QlAkSACFQ7AosWLfKsKEvGOPOIIw0kIkAEiAARIAJEgAgQASJABKIRoAAiGh/6EgEiUMcREC0x2E94/fXXvWsL5cpIQIOrGklEgAgQASJABIgAESACRIAIxCPQIG2jafFZMgQRIAJEoHIQwC0FDz/8sMcwDDlqstdQeUYStRvfiQARIAJEgAgQASJABIgAEQhGIPcuo+BwdCUCRIAI1EkEYIXfL3gAEFdccYU57rjj6iQmLDQRIAJEgAgQASJABIgAESgEgQZQK466frCQRBmHCBABIlBbEOjTp493bReuRmzatKl3pRTuKMe1uyQiQASIABGomwgs12wFs233g73Cr7pOp7oJAktdZxHAtc4HHXSQV/6NNtqozuLAgheGAK/hLAw3xiICRIAIEAEiQASIQMUgwGs4K6aqyo5RXsNZdlVChohARSPAazgruvrIPBEgAkSACBABIkAEiAARIAJEgAgQgcpAgBoQlVFP5JIIEAEiQASIABEgAkSACBABIkAEiEBFI0ANiIquPjJPBIgAESACRIAIEAEiQASIABEgAkSgMhCoXxlskksiQASIABEgAkSACBABIkAEiAARIAJEoJIRoACikmuPvBMBIkAEiAARIAJEgAgQASJABIgAEagQBCiAqJCKIptEgAgQASJABIgAESACRIAIEAEiQAQqGQEKICq59sg7ESACRIAIEAEiQASIABEgAkSACBCBCkGgfr169SqEVbJJBIgAESACRIAIEAEiQASIABEgAkSACFQqAtSAqNSaI99EgAgQASJABIgAESACRIAIEAEiQAQqCAEKICqossgqESACRIAIEAEiQASIABEgAkSACBCBSkWAAohKrTnyTQSIABEgAkSACBABIkAEiAARIAJEoIIQaFBBvJLVEAT69etnZs+ebRo0aGDuvPNOs/TSS4eEpDMRqL0InHjiiebnn3/22v/IkSNrb0GLKNlff/1l7rrrLjNhwgQzdepUs3jxYrPRRhuZTp06mZ49e5o11lijiNQZlQgQASJABIgAESACRIAIRCNQL2MpOgh9yx2B1q1bmx9//NFjc/78+aZx48ZZLA8dOtQMHz7cW2AMGDAgy6+2/KgLZawtdVWqcjRr1sz89ttvXvKFdGtYnJ922mlm4sSJ5uyzzzb77rtvqVitkXS/+uor07t3b/Pmm28G5v/qq6+aLl26BPrRsfYg8NJLL5lBgwaZ9u3bm2uvvdY0b968bArHfrxsqoKMEAEiQASIABEoGQIUQJQM2upLOEoAgQUZFmZCn332mVlrrbXkZ6141oUy1oqKKnEhihVAvPjii2an/2/vPuCtKA49js+9IBZsICioIAQpKvaCsYA99oLYu1ETsbwYNep7L7aosRETY+8+O6JiARtGsZFo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AAEEEEAAAQRCFqAGRMi5R9oRQAABBBBAAAEEEEAAAQQQCESAAohAMopkIoAAAggggAACCCCAAAIIIBCyAAUQIeceaUcAAQQQQAABBBBAAAEEEEAgEAEKIALJKJKJAAIIIIAAAggggAACCCCAQMgCFECEnHukHQEEEEAAAQQQQAABBBBAAIFABCiACCSjSCYCCCCAAAIIIIAAAggggAACIQtQABFy7pF2BBBAAAEEEEAAAQQQQAABBAIRoAAikIwimQgggAACCCCAAAIIIIAAAgiELEABRMi5R9oRQAABBBBAAAEEEEAAAQQQCESgNpfLBZJUkokAAggggAACCCCAAAIIIIAAAqEK1NbU1ISadtKNAAIIIIAAAggggAACCCCAAAKBCNAEI5CMIpkIIIAAAggggAACCCCAAAIIhCxAAUTIuUfaEUAAAQQQQAABBBBAAAEEEAhEgD4gAskokokAAggggAACCCCAAAIIIIBAyALUgAg590g7AggggAACCCCAAAIIIIAAAoEI0AllIBlFMhFAAAEEEEAAAQQQQAABBBAIWYAaECHnHmlHAAEEEEAAAQQQQAABBBBAIBAB+oAIJKNIJgIIIIAAAggggAACCCCAAAIhC1ADIuTcI+0IIIAAAggggAACCCCAAAIIBCJAAUQgGUUyEUAAAQQQQAABBBBAAAEEEAhZgE4oQ8490o4AAggggAACCCCAAAIIIIBAIALUgAgko0gmAggggAACCCCAAAIIIIAAAiEL1NbV1YWcftKOAAIIIIAAAggggAACCCCAAAIBCNTkbAggnSQRAQQQQAABBBBAAAEEEEAAAQQCFmAYzoAzj6QjgAACCCCAAAIIIIAAAgggEIoAnVCGklOkEwEEEEAAAQQQQAABBBBAAIGABagBEXDmkXQEEEAAAQQQQAABBBBAAAEEQhFgFIxQcop0IoAAAggggAACCCCAAAIIIBCwAAUQAWceSUcAAQQQQAABBBBAAAEEEEAgFAEKIELJKdKJAAIIIIAAAggggAACCCCAQMACFEAEnHkkHQEEEEAAAQQQQAABBBBAAIFQBBgFI5ScIp0IIIAAAggggAACCCCAAAIIBCxADYiAM4+kI4AAAggggAACCCCAAAIIIBCKAAUQoeQU6UQAAQQQQAABBBBAAAEEEEAgYAEKIALOPJKOAAIIIIAAAggggAACCCCA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"/><use stroke="#7E7C7B" xlink:href="#rect-1"/></g><path id="Line" fill="#C06334" fill-rule="nonzero" d="M309.315 59.871l1.064 1.694-.847.532-130.147 81.799 3.193 5.08L167 150.5l8.128-13.377 3.193 5.079 130.147-81.799.847-.532z"/><path id="Line-Copy" fill="#C06334" fill-rule="nonzero" d="M349.496 60.872l.004 1 .45 128.874 6.001-.02L349 204.75l-7.049-13.975 5.999-.022-.45-128.875-.003-1 2-.006z"/><path id="Line-Copy-2" fill="#C06334" fill-rule="nonzero" d="M386.71 57.027l.256.966 35.404 133.219 5.8-1.54L425 205l-10.361-11.732 5.798-1.542-35.403-133.22-.257-.966 1.933-.513z"/><text id="selection" fill="#181717" font-family="PTMono-Regular, PT Mono" font-size="20" font-weight="normal"><tspan x="295" y="44">selection</tspan></text></g></g></svg> \ No newline at end of file diff --git a/2-ui/99-ui-misc/03-event-loop/2-micro-macro-queue/solution.md b/2-ui/99-ui-misc/03-event-loop/2-micro-macro-queue/solution.md new file mode 100644 index 000000000..2911b76cf --- /dev/null +++ b/2-ui/99-ui-misc/03-event-loop/2-micro-macro-queue/solution.md @@ -0,0 +1,50 @@ +The console output is: 1 7 3 5 2 6 4. + +The task is quite simple, we just need to know how microtask and macrotask queues work. + +Let's see what's going on, step by step. + +```js +console.log(1); +// The first line executes immediately, it outputs `1`. +// Macrotask and microtask queues are empty, as of now. + +setTimeout(() => console.log(2)); +// `setTimeout` appends the callback to the macrotask queue. +// - macrotask queue content: +// `console.log(2)` + +Promise.resolve().then(() => console.log(3)); +// The callback is appended to the microtask queue. +// - microtask queue content: +// `console.log(3)` + +Promise.resolve().then(() => setTimeout(() => console.log(4))); +// The callback with `setTimeout(...4)` is appended to microtasks +// - microtask queue content: +// `console.log(3); setTimeout(...4)` + +Promise.resolve().then(() => console.log(5)); +// The callback is appended to the microtask queue +// - microtask queue content: +// `console.log(3); setTimeout(...4); console.log(5)` + +setTimeout(() => console.log(6)); +// `setTimeout` appends the callback to macrotasks +// - macrotask queue content: +// `console.log(2); console.log(6)` + +console.log(7); +// Outputs 7 immediately. +``` + +To summarize, + +1. Numbers `1` and `7` show up immediately, because simple `console.log` calls don't use any queues. +2. Then, after the main code flow is finished, the microtask queue runs. + - It has commands: `console.log(3); setTimeout(...4); console.log(5)`. + - Numbers `3` and `5` show up, while `setTimeout(() => console.log(4))` adds the `console.log(4)` call to the end of the macrotask queue. + - The macrotask queue is now: `console.log(2); console.log(6); console.log(4)`. +3. After the microtask queue becomes empty, the macrotask queue executes. It outputs `2`, `6`, `4`. + +Finally, we have the output: `1 7 3 5 2 6 4`. \ No newline at end of file diff --git a/2-ui/99-ui-misc/03-event-loop/2-micro-macro-queue/task.md b/2-ui/99-ui-misc/03-event-loop/2-micro-macro-queue/task.md new file mode 100644 index 000000000..ad406b3be --- /dev/null +++ b/2-ui/99-ui-misc/03-event-loop/2-micro-macro-queue/task.md @@ -0,0 +1,21 @@ +importance: 5 + +--- + +# What will be the output of this code? + +```js +console.log(1); + +setTimeout(() => console.log(2)); + +Promise.resolve().then(() => console.log(3)); + +Promise.resolve().then(() => setTimeout(() => console.log(4))); + +Promise.resolve().then(() => console.log(5)); + +setTimeout(() => console.log(6)); + +console.log(7); +``` diff --git a/2-ui/99-ui-misc/03-event-loop/article.md b/2-ui/99-ui-misc/03-event-loop/article.md new file mode 100644 index 000000000..f33188491 --- /dev/null +++ b/2-ui/99-ui-misc/03-event-loop/article.md @@ -0,0 +1,339 @@ + +# Event loop: microtasks and macrotasks + +Browser JavaScript execution flow, as well as in Node.js, is based on an *event loop*. + +Understanding how event loop works is important for optimizations, and sometimes for the right architecture. + +In this chapter we first cover theoretical details about how things work, and then see practical applications of that knowledge. + +## Event Loop + +The *event loop* concept is very simple. There's an endless loop, where the JavaScript engine waits for tasks, executes them and then sleeps, waiting for more tasks. + +The general algorithm of the engine: + +1. While there are tasks: + - execute them, starting with the oldest task. +2. Sleep until a task appears, then go to 1. + +That's a formalization of what we see when browsing a page. The JavaScript engine does nothing most of the time, it only runs if a script/handler/event activates. + +Examples of tasks: + +- When an external script `<script src="...">` loads, the task is to execute it. +- When a user moves their mouse, the task is to dispatch `mousemove` event and execute handlers. +- When the time is due for a scheduled `setTimeout`, the task is to run its callback. +- ...and so on. + +Tasks are set -- the engine handles them -- then waits for more tasks (while sleeping and consuming close to zero CPU). + +It may happen that a task comes while the engine is busy, then it's enqueued. + +The tasks form a queue, the so-called "macrotask queue" ([v8](https://v8.dev/) term): + + + +For instance, while the engine is busy executing a `script`, a user may move their mouse causing `mousemove`, and `setTimeout` may be due and so on, these tasks form a queue, as illustrated in the picture above. + +Tasks from the queue are processed on a "first come – first served" basis. When the engine browser is done with the `script`, it handles `mousemove` event, then `setTimeout` handler, and so on. + +So far, quite simple, right? + +Two more details: +1. Rendering never happens while the engine executes a task. It doesn't matter if the task takes a long time. Changes to the DOM are painted only after the task is complete. +2. If a task takes too long, the browser can't do other tasks, such as processing user events. So after some time, it raises an alert like "Page Unresponsive", suggesting killing the task with the whole page. That happens when there are a lot of complex calculations or a programming error leading to an infinite loop. + +That was the theory. Now let's see how we can apply that knowledge. + +## Use-case 1: splitting CPU-hungry tasks + +Let's say we have a CPU-hungry task. + +For example, syntax-highlighting (used to colorize code examples on this page) is quite CPU-heavy. To highlight the code, it performs the analysis, creates many colored elements, adds them to the document -- for a large amount of text that takes a lot of time. + +While the engine is busy with syntax highlighting, it can't do other DOM-related stuff, process user events, etc. It may even cause the browser to "hiccup" or even "hang" for a bit, which is unacceptable. + +We can avoid problems by splitting the big task into pieces. Highlight the first 100 lines, then schedule `setTimeout` (with zero-delay) for the next 100 lines, and so on. + +To demonstrate this approach, for the sake of simplicity, instead of text-highlighting, let's take a function that counts from `1` to `1000000000`. + +If you run the code below, the engine will "hang" for some time. For server-side JS that's clearly noticeable, and if you are running it in-browser, then try to click other buttons on the page -- you'll see that no other events get handled until the counting finishes. + +```js run +let i = 0; + +let start = Date.now(); + +function count() { + + // do a heavy job + for (let j = 0; j < 1e9; j++) { + i++; + } + + alert("Done in " + (Date.now() - start) + 'ms'); +} + +count(); +``` + +The browser may even show a "the script takes too long" warning. + +Let's split the job using nested `setTimeout` calls: + +```js run +let i = 0; + +let start = Date.now(); + +function count() { + + // do a piece of the heavy job (*) + do { + i++; + } while (i % 1e6 != 0); + + if (i == 1e9) { + alert("Done in " + (Date.now() - start) + 'ms'); + } else { + setTimeout(count); // schedule the new call (**) + } + +} + +count(); +``` + +Now the browser interface is fully functional during the "counting" process. + +A single run of `count` does a part of the job `(*)`, and then re-schedules itself `(**)` if needed: + +1. First run counts: `i=1...1000000`. +2. Second run counts: `i=1000001..2000000`. +3. ...and so on. + +Now, if a new side task (e.g. `onclick` event) appears while the engine is busy executing part 1, it gets queued and then executes when part 1 finished, before the next part. Periodic returns to the event loop between `count` executions provide just enough "air" for the JavaScript engine to do something else, to react to other user actions. + +The notable thing is that both variants -- with and without splitting the job by `setTimeout` -- are comparable in speed. There's not much difference in the overall counting time. + +To make them closer, let's make an improvement. + +We'll move the scheduling to the beginning of the `count()`: + +```js run +let i = 0; + +let start = Date.now(); + +function count() { + + // move the scheduling to the beginning + if (i < 1e9 - 1e6) { + setTimeout(count); // schedule the new call + } + + do { + i++; + } while (i % 1e6 != 0); + + if (i == 1e9) { + alert("Done in " + (Date.now() - start) + 'ms'); + } + +} + +count(); +``` + +Now when we start to `count()` and see that we'll need to `count()` more, we schedule that immediately, before doing the job. + +If you run it, it's easy to notice that it takes significantly less time. + +Why? + +That's simple: as you remember, there's the in-browser minimal delay of 4ms for many nested `setTimeout` calls. Even if we set `0`, it's `4ms` (or a bit more). So the earlier we schedule it - the faster it runs. + +Finally, we've split a CPU-hungry task into parts - now it doesn't block the user interface. And its overall execution time isn't much longer. + +## Use case 2: progress indication + +Another benefit of splitting heavy tasks for browser scripts is that we can show progress indication. + +As mentioned earlier, changes to DOM are painted only after the currently running task is completed, irrespective of how long it takes. + +On one hand, that's great, because our function may create many elements, add them one-by-one to the document and change their styles -- the visitor won't see any "intermediate", unfinished state. An important thing, right? + +Here's the demo, the changes to `i` won't show up until the function finishes, so we'll see only the last value: + + +```html run +<div id="progress"></div> + +<script> + + function count() { + for (let i = 0; i < 1e6; i++) { + i++; + progress.innerHTML = i; + } + } + + count(); +</script> +``` + +...But we also may want to show something during the task, e.g. a progress bar. + +If we split the heavy task into pieces using `setTimeout`, then changes are painted out in-between them. + +This looks prettier: + +```html run +<div id="progress"></div> + +<script> + let i = 0; + + function count() { + + // do a piece of the heavy job (*) + do { + i++; + progress.innerHTML = i; + } while (i % 1e3 != 0); + + if (i < 1e7) { + setTimeout(count); + } + + } + + count(); +</script> +``` + +Now the `<div>` shows increasing values of `i`, a kind of a progress bar. + + +## Use case 3: doing something after the event + +In an event handler we may decide to postpone some actions until the event bubbled up and was handled on all levels. We can do that by wrapping the code in zero delay `setTimeout`. + +In the chapter <info:dispatch-events> we saw an example: custom event `menu-open` is dispatched in `setTimeout`, so that it happens after the "click" event is fully handled. + +```js +menu.onclick = function() { + // ... + + // create a custom event with the clicked menu item data + let customEvent = new CustomEvent("menu-open", { + bubbles: true + }); + + // dispatch the custom event asynchronously + setTimeout(() => menu.dispatchEvent(customEvent)); +}; +``` + +## Macrotasks and Microtasks + +Along with *macrotasks*, described in this chapter, there are *microtasks*, mentioned in the chapter <info:microtask-queue>. + +Microtasks come solely from our code. They are usually created by promises: an execution of `.then/catch/finally` handler becomes a microtask. Microtasks are used "under the cover" of `await` as well, as it's another form of promise handling. + +There's also a special function `queueMicrotask(func)` that queues `func` for execution in the microtask queue. + +**Immediately after every *macrotask*, the engine executes all tasks from *microtask* queue, prior to running any other macrotasks or rendering or anything else.** + +For instance, take a look: + +```js run +setTimeout(() => alert("timeout")); + +Promise.resolve() + .then(() => alert("promise")); + +alert("code"); +``` + +What's going to be the order here? + +1. `code` shows first, because it's a regular synchronous call. +2. `promise` shows second, because `.then` passes through the microtask queue, and runs after the current code. +3. `timeout` shows last, because it's a macrotask. + +The richer event loop picture looks like this (order is from top to bottom, that is: the script first, then microtasks, rendering and so on): + + + +All microtasks are completed before any other event handling or rendering or any other macrotask takes place. + +That's important, as it guarantees that the application environment is basically the same (no mouse coordinate changes, no new network data, etc) between microtasks. + +If we'd like to execute a function asynchronously (after the current code), but before changes are rendered or new events handled, we can schedule it with `queueMicrotask`. + +Here's an example with "counting progress bar", similar to the one shown previously, but `queueMicrotask` is used instead of `setTimeout`. You can see that it renders at the very end. Just like the synchronous code: + +```html run +<div id="progress"></div> + +<script> + let i = 0; + + function count() { + + // do a piece of the heavy job (*) + do { + i++; + progress.innerHTML = i; + } while (i % 1e3 != 0); + + if (i < 1e6) { + *!* + queueMicrotask(count); + */!* + } + + } + + count(); +</script> +``` + +## Summary + +A more detailed event loop algorithm (though still simplified compared to the [specification](https://html.spec.whatwg.org/multipage/webappapis.html#event-loop-processing-model)): + +1. Dequeue and run the oldest task from the *macrotask* queue (e.g. "script"). +2. Execute all *microtasks*: + - While the microtask queue is not empty: + - Dequeue and run the oldest microtask. +3. Render changes if any. +4. If the macrotask queue is empty, wait till a macrotask appears. +5. Go to step 1. + +To schedule a new *macrotask*: +- Use zero delayed `setTimeout(f)`. + +That may be used to split a big calculation-heavy task into pieces, for the browser to be able to react to user events and show progress between them. + +Also, used in event handlers to schedule an action after the event is fully handled (bubbling done). + +To schedule a new *microtask* +- Use `queueMicrotask(f)`. +- Also promise handlers go through the microtask queue. + +There's no UI or network event handling between microtasks: they run immediately one after another. + +So one may want to `queueMicrotask` to execute a function asynchronously, but within the environment state. + +```smart header="Web Workers" +For long heavy calculations that shouldn't block the event loop, we can use [Web Workers](https://html.spec.whatwg.org/multipage/workers.html). + +That's a way to run code in another, parallel thread. + +Web Workers can exchange messages with the main process, but they have their own variables, and their own event loop. + +Web Workers do not have access to DOM, so they are useful, mainly, for calculations, to use multiple CPU cores simultaneously. +``` diff --git a/2-ui/99-ui-misc/03-event-loop/eventLoop-full.svg b/2-ui/99-ui-misc/03-event-loop/eventLoop-full.svg new file mode 100644 index 000000000..593cbab9b --- /dev/null +++ b/2-ui/99-ui-misc/03-event-loop/eventLoop-full.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" width="407" height="391" viewBox="0 0 407 391"><defs><style>@import url(https://fonts.googleapis.com/css?family=Open+Sans:bold,italic,bolditalic%7CPT+Mono);@font-face{font-family:'PT Mono';font-weight:700;font-style:normal;src:local('PT MonoBold'),url(/font/PTMonoBold.woff2) format('woff2'),url(/font/PTMonoBold.woff) format('woff'),url(/font/PTMonoBold.ttf) format('truetype')}</style></defs><g id="promise" fill="none" fill-rule="evenodd" stroke="none" stroke-width="1"><g id="eventLoop-full.svg"><text id="..." fill="#181717" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="257.4" y="71">...</tspan></text><path id="Rectangle-1-Copy-6" fill="#FBF2EC" stroke="#DBAF88" stroke-width="2" d="M216 86h108v28H216z"/><path id="Rectangle-1-Copy-8" fill="#FBF2EC" stroke="#DBAF88" stroke-width="2" d="M216 195h108v28H216z"/><text id="mousemove" fill="#AF6E24" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="232.2" y="214">mousemove</tspan></text><path id="Rectangle-1-Copy-9" fill="#FBF2EC" stroke="#DBAF88" stroke-width="2" d="M216 302h108v28H216z"/><text id="event-loop" fill="#181717" font-family="OpenSans-Regular, Open Sans" font-size="24" font-weight="normal"><tspan x="44.922" y="189">event</tspan> <tspan x="51.115" y="222">loop</tspan></text><text id="render-copy-2" fill="#181717" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="297.3" y="176">render</tspan></text><g id="np_paint_2296353_000000-copy-2" fill="#C06334" fill-rule="nonzero" transform="translate(256 158)"><path id="Shape" d="M3.079 0A3.095 3.095 0 000 3.079V22.92A3.095 3.095 0 003.079 26H22.92A3.095 3.095 0 0026 22.921V3.08A3.095 3.095 0 0022.921 0H3.08zm0 2.053H22.92c.587 0 1.026.44 1.026 1.026v13.043l-2.886-2.684a1.027 1.027 0 00-1.443.032l-5.72 5.955-5.035-4.148a1.021 1.021 0 00-1.38.075l-5.43 5.43V3.08c0-.587.44-1.026 1.026-1.026zM6.158 3.42A3.095 3.095 0 003.078 6.5a3.095 3.095 0 003.08 3.079A3.095 3.095 0 009.237 6.5a3.095 3.095 0 00-3.08-3.079zm0 2.053c.579 0 1.026.447 1.026 1.026s-.447 1.026-1.026 1.026A1.012 1.012 0 015.132 6.5c0-.579.447-1.026 1.026-1.026zm14.176.566c-.377 0-.759.722-.759 1.08-.46.112-.748.358-.748.716s.371.717.748.717h2.662c.73 0 1.11-1.433-.021-1.433-.022-.677-.445-.86-1.134-.716-.183-.284-.375-.386-.748-.364zM16.71 9.237c-.314 0-.631.584-.631.876-.382.093-.63.296-.63.588 0 .293.316.589.63.589h2.213c.608 0 .931-1.176-.01-1.176-.018-.555-.379-.706-.952-.588-.152-.232-.31-.308-.62-.29zm3.688 6.382l3.55 3.293v4.01c0 .586-.44 1.025-1.027 1.025H3.08a1.01 1.01 0 01-.855-.449l6.05-6.04 4.202 3.453-1.24 1.294 1.475 1.422 7.687-8.008z"/></g><text id="microtasks-copy-2" fill="#181717" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="297.5" y="140">microtasks</tspan></text><g id="Group-Copy-2" fill="#C06334" transform="translate(256 124)"><path id="Fill-52" d="M23.145.978C21.737.348 20.186 0 18.56 0c-2.59 0-4.983.885-6.921 2.38L10.474.618a.286.286 0 00-.305-.125.303.303 0 00-.226.249L8.797 7.779a.317.317 0 00.07.258.287.287 0 00.22.102h.018l3.112-.206 3.504-.233a.296.296 0 00.258-.204.315.315 0 00-.078-.33l-1.46-1.415a7.18 7.18 0 014.118-1.301c1.07 0 2.083.238 3.003.662a.284.284 0 00.23.003.306.306 0 00.162-.171l1.35-3.568a.314.314 0 00-.159-.398" transform="matrix(-1 0 0 1 32.117 0)"/><path id="Fill-54" d="M12.787 13.315a12.66 12.66 0 001.346 4.7c1.225 2.393 3.101 4.186 5.274 5.27l-.929 1.908a.318.318 0 00.04.342c.077.094.201.13.315.09l6.454-2.269a.3.3 0 00.183-.187.32.32 0 00-.018-.251l-.01-.016-1.644-2.779-1.852-3.127a.29.29 0 00-.295-.142.298.298 0 00-.24.228l-.498 2.018a7.607 7.607 0 01-3.041-3.19 8.083 8.083 0 01-.865-3.087.314.314 0 00-.105-.214.286.286 0 00-.22-.068l-3.636.44a.305.305 0 00-.26.334" transform="matrix(-1 0 0 1 38.273 0)"/><path id="Fill-56" d="M2.646 22.333a12.003 12.003 0 003.205-3.576 12.684 12.684 0 001.713-7.424l2.04-.112a.293.293 0 00.262-.207.316.316 0 00-.084-.332L4.681 5.958a.28.28 0 00-.247-.072.291.291 0 00-.198.14l-.01.018-1.47 2.883-1.654 3.247a.32.32 0 00.03.339.285.285 0 00.307.104l1.916-.558a8.078 8.078 0 01-1.111 4.358 7.652 7.652 0 01-2.117 2.33.31.31 0 00-.123.203.325.325 0 00.053.234l2.183 3.08a.285.285 0 00.406.069" transform="matrix(-1 0 0 1 9.882 0)"/></g><text id="render-copy-2" fill="#181717" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="297.3" y="285">render</tspan></text><g id="np_paint_2296353_000000-copy-2" fill="#C06334" fill-rule="nonzero" transform="translate(256 267)"><path id="Shape" d="M3.079 0A3.095 3.095 0 000 3.079V22.92A3.095 3.095 0 003.079 26H22.92A3.095 3.095 0 0026 22.921V3.08A3.095 3.095 0 0022.921 0H3.08zm0 2.053H22.92c.587 0 1.026.44 1.026 1.026v13.043l-2.886-2.684a1.027 1.027 0 00-1.443.032l-5.72 5.955-5.035-4.148a1.021 1.021 0 00-1.38.075l-5.43 5.43V3.08c0-.587.44-1.026 1.026-1.026zM6.158 3.42A3.095 3.095 0 003.078 6.5a3.095 3.095 0 003.08 3.079A3.095 3.095 0 009.237 6.5a3.095 3.095 0 00-3.08-3.079zm0 2.053c.579 0 1.026.447 1.026 1.026s-.447 1.026-1.026 1.026A1.012 1.012 0 015.132 6.5c0-.579.447-1.026 1.026-1.026zm14.176.566c-.377 0-.759.722-.759 1.08-.46.112-.748.358-.748.716s.371.717.748.717h2.662c.73 0 1.11-1.433-.021-1.433-.022-.677-.445-.86-1.134-.716-.183-.284-.375-.386-.748-.364zM16.71 9.237c-.314 0-.631.584-.631.876-.382.093-.63.296-.63.588 0 .293.316.589.63.589h2.213c.608 0 .931-1.176-.01-1.176-.018-.555-.379-.706-.952-.588-.152-.232-.31-.308-.62-.29zm3.688 6.382l3.55 3.293v4.01c0 .586-.44 1.025-1.027 1.025H3.08a1.01 1.01 0 01-.855-.449l6.05-6.04 4.202 3.453-1.24 1.294 1.475 1.422 7.687-8.008z"/></g><text id="microtasks-copy-2" fill="#181717" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="297.5" y="249">microtasks</tspan></text><g id="Group-Copy-2" fill="#C06334" transform="translate(256 233)"><path id="Fill-52" d="M23.145.978C21.737.348 20.186 0 18.56 0c-2.59 0-4.983.885-6.921 2.38L10.474.618a.286.286 0 00-.305-.125.303.303 0 00-.226.249L8.797 7.779a.317.317 0 00.07.258.287.287 0 00.22.102h.018l3.112-.206 3.504-.233a.296.296 0 00.258-.204.315.315 0 00-.078-.33l-1.46-1.415a7.18 7.18 0 014.118-1.301c1.07 0 2.083.238 3.003.662a.284.284 0 00.23.003.306.306 0 00.162-.171l1.35-3.568a.314.314 0 00-.159-.398" transform="matrix(-1 0 0 1 32.117 0)"/><path id="Fill-54" d="M12.787 13.315a12.66 12.66 0 001.346 4.7c1.225 2.393 3.101 4.186 5.274 5.27l-.929 1.908a.318.318 0 00.04.342c.077.094.201.13.315.09l6.454-2.269a.3.3 0 00.183-.187.32.32 0 00-.018-.251l-.01-.016-1.644-2.779-1.852-3.127a.29.29 0 00-.295-.142.298.298 0 00-.24.228l-.498 2.018a7.607 7.607 0 01-3.041-3.19 8.083 8.083 0 01-.865-3.087.314.314 0 00-.105-.214.286.286 0 00-.22-.068l-3.636.44a.305.305 0 00-.26.334" transform="matrix(-1 0 0 1 38.273 0)"/><path id="Fill-56" d="M2.646 22.333a12.003 12.003 0 003.205-3.576 12.684 12.684 0 001.713-7.424l2.04-.112a.293.293 0 00.262-.207.316.316 0 00-.084-.332L4.681 5.958a.28.28 0 00-.247-.072.291.291 0 00-.198.14l-.01.018-1.47 2.883-1.654 3.247a.32.32 0 00.03.339.285.285 0 00.307.104l1.916-.558a8.078 8.078 0 01-1.111 4.358 7.652 7.652 0 01-2.117 2.33.31.31 0 00-.123.203.325.325 0 00.053.234l2.183 3.08a.285.285 0 00.406.069" transform="matrix(-1 0 0 1 9.882 0)"/></g><path id="Path" fill="#C06334" fill-rule="nonzero" d="M240.536 23.5c18.067 0 28.19 5.407 30.493 19.865l.067.441.016.179.264 10.223 5.906-11.165 2.652 1.402-8.582 16.229-1.247 2.357-1.367-2.29-9.412-15.76 2.576-1.539 6.476 10.845-.263-10.128-.046-.305c-1.998-12.562-10.586-17.259-27.028-17.353l-.505-.001h-51.072c-18.854 0-27.785 5.925-27.961 22.709l-.003.512v294.675c0 9.183 2.661 14.683 7.881 17.703 4.3 2.487 10.047 3.365 19.488 3.4l.595.001h51.072c9.796 0 15.693-.862 20.083-3.401 5.127-2.966 7.785-8.324 7.878-17.214l.003-.489v-6.472h3v6.472c0 10.183-3.152 16.697-9.379 20.3-4.884 2.825-11.037 3.766-20.972 3.803l-.613.001h-51.072c-10.296 0-16.602-.921-21.585-3.804-6.122-3.542-9.271-9.897-9.376-19.785l-.003-.515V49.721c0-18.944 10.246-26.078 30.352-26.219l.612-.002h51.072z"/><text id="script" fill="#AF6E24" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="245.3" y="105">script</tspan></text><text id="setTimeout" fill="#AF6E24" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="228.5" y="321">setTimeout</tspan></text></g></g></svg> \ No newline at end of file diff --git a/2-ui/99-ui-misc/03-event-loop/eventLoop.svg b/2-ui/99-ui-misc/03-event-loop/eventLoop.svg new file mode 100644 index 000000000..6dc459ef8 --- /dev/null +++ b/2-ui/99-ui-misc/03-event-loop/eventLoop.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" width="500" height="279" viewBox="0 0 500 279"><defs><style>@import url(https://fonts.googleapis.com/css?family=Open+Sans:bold,italic,bolditalic%7CPT+Mono);@font-face{font-family:'PT Mono';font-weight:700;font-style:normal;src:local('PT MonoBold'),url(/font/PTMonoBold.woff2) format('woff2'),url(/font/PTMonoBold.woff) format('woff'),url(/font/PTMonoBold.ttf) format('truetype')}</style></defs><g id="promise" fill="none" fill-rule="evenodd" stroke="none" stroke-width="1"><g id="eventLoop.svg"><path id="Rectangle-1-Copy-5" fill="#FBF2EC" stroke="#DBAF88" stroke-width="2" d="M218 173h108v28H218z"/><text id="..." fill="#AF6E24" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="258.9" y="189">...</tspan></text><path id="Rectangle-1-Copy-6" fill="#FBF2EC" stroke="#DBAF88" stroke-width="2" d="M218 90h108v28H218z"/><path id="Rectangle-1-Copy-8" fill="#FBF2EC" stroke="#DBAF88" stroke-width="2" d="M218 117h108v28H218z"/><text id="mousemove" fill="#AF6E24" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="233.7" y="136">mousemove</tspan></text><path id="Rectangle-1-Copy-9" fill="#FBF2EC" stroke="#DBAF88" stroke-width="2" d="M218 145h108v28H218z"/><text id="script" fill="#AF6E24" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="246.8" y="109">script</tspan></text><text id="event-loop" fill="#C06334" font-family="OpenSans-Regular, Open Sans" font-size="24" font-weight="normal"><tspan x="76.422" y="134">event</tspan> <tspan x="82.615" y="167">loop</tspan></text><text id="macrotask-queue" fill="#AF6E24" font-family="OpenSans-Regular, Open Sans" font-size="24" font-weight="normal"><tspan x="348.371" y="136">macrotask</tspan> <tspan x="371.451" y="169">queue</tspan></text><path id="Path" fill="#C06334" fill-rule="nonzero" d="M192 40c22.467 0 43.818 7.359 61.285 20.712l.622.479.143.122 8.961 8.422-4.584-14.61 3.817-1.197 6.869 21.895 1.064 3.392-3.452-.852-22.278-5.5.959-3.883 14.864 3.669-8.886-8.352-.55-.424c-16.564-12.656-36.757-19.698-58.036-19.87L192 44c-30.748 0-59.095 14.403-77.315 38.412l-.549.73-3.208-2.387C129.87 55.303 159.664 40 192 40z"/><path id="Path-Copy-2" fill="#C06334" fill-rule="nonzero" d="M269.882 208.148l2.823 2.834-.366.365a533.245 533.245 0 00-3.982 4.033l-.333.34c-9.922 10.12-14.79 14.544-22.017 19.272-15.185 9.934-34.01 15.688-51.594 15.688-25.222 0-47.144-6.827-64.077-19.673l-.589-.45-.089-.07-.08-.078-8.854-8.581 4.36 14.68-3.835 1.138-6.532-21.998-1.012-3.409 3.439.906 22.19 5.841-1.018 3.868-14.808-3.898 8.766 8.497.488.374c16.02 12.15 36.782 18.698 60.792 18.85l.859.003c16.796 0 34.862-5.522 49.404-15.035 6.911-4.521 11.624-8.806 21.35-18.725l.334-.34a633.126 633.126 0 013.46-3.511l.736-.736.185-.185z"/><text id="setTimeout" fill="#AF6E24" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="230" y="164">setTimeout</tspan></text></g></g></svg> \ No newline at end of file diff --git a/2-ui/99-ui-misc/index.md b/2-ui/99-ui-misc/index.md new file mode 100644 index 000000000..79cd72fe7 --- /dev/null +++ b/2-ui/99-ui-misc/index.md @@ -0,0 +1,2 @@ + +# Miscellaneous diff --git a/3-frames-and-windows/01-popup-windows/article.md b/3-frames-and-windows/01-popup-windows/article.md index 57c0c50d3..f2c87d1e0 100644 --- a/3-frames-and-windows/01-popup-windows/article.md +++ b/3-frames-and-windows/01-popup-windows/article.md @@ -7,13 +7,21 @@ Basically, you just run: window.open('https://javascript.info/') ``` -... And it will open a new window with given URL. Most modern browsers are configured to open new tabs instead of separate windows. +...And it will open a new window with given URL. Most modern browsers are configured to open url in new tabs instead of separate windows. -## Popup blocking +Popups exist from really ancient times. The initial idea was to show another content without closing the main window. As of now, there are other ways to do that: we can load content dynamically with [fetch](info:fetch) and show it in a dynamically generated `<div>`. So, popups is not something we use everyday. + +Also, popups are tricky on mobile devices, that don't show multiple windows simultaneously. + +Still, there are tasks where popups are still used, e.g. for OAuth authorization (login with Google/Facebook/...), because: + +1. A popup is a separate window which has its own independent JavaScript environment. So opening a popup from a third-party, non-trusted site is safe. +2. It's very easy to open a popup. +3. A popup can navigate (change URL) and send messages to the opener window. -Popups exist from really ancient times. The initial idea was to show another content without closing the main window. As of now, there are other ways to do that: JavaScript is able to send requests for server, so popups are rarely used. But sometimes they are still handy. +## Popup blocking -In the past evil sites abused popups a lot. A bad page could open tons of popup windows with ads. So now most browsers try to block popups and protect the user. +In the past, evil sites abused popups a lot. A bad page could open tons of popup windows with ads. So now most browsers try to block popups and protect the user. **Most browsers block popups if they are called outside of user-triggered event handlers like `onclick`.** @@ -30,38 +38,6 @@ button.onclick = () => { This way users are somewhat protected from unwanted popups, but the functionality is not disabled totally. -What if the popup opens from `onclick`, but after `setTimeout`? That's a bit tricky. - -Try this code: - -```js run -// open after 3 seconds -setTimeout(() => window.open('http://google.com'), 3000); -``` - -The popup opens in Chrome, but gets blocked in Firefox. - -...If we decrease the delay, the popup works in Firefox too: - -```js run -// open after 1 seconds -setTimeout(() => window.open('http://google.com'), 1000); -``` - -The difference is that Firefox treats a timeout of 2000ms or less are acceptable, but after it -- removes the "trust", assuming that now it's "outside of the user action". So the first one is blocked, and the second one is not. - -## Modern usage - -As of now, we have many methods to load and show data on-page with JavaScript. But there are still situations when a popup works best. - -For instance, many shops use online chats for consulting people. A visitor clicks on the button, it runs `window.open` and opens the popup with the chat. - -Why a popup is good here, why not in-page? - -1. A popup is a separate window with its own independent JavaScript environment. So a chat service doesn't need to integrate with scripts of the main shop site. -2. A popup is very simple to attach to a site, little to no overhead. It's only a small button, without additional scripts. -3. A popup may persist even if the user left the page. For example, a consult advices the user to visit the page of a new "Super-Cooler" goodie. The user goes there in the main window without leaving the chat. - ## window.open The syntax to open a popup is: `window.open(url, name, params)`: @@ -73,7 +49,7 @@ name : A name of the new window. Each window has a `window.name`, and here we can specify which window to use for the popup. If there's already a window with such name -- the given URL opens in it, otherwise a new window is opened. params -: The configuration string for the new window. It contains settings, delimited by a comma. There must be no spaces in params, for instance: `width:200,height=100`. +: The configuration string for the new window. It contains settings, delimited by a comma. There must be no spaces in params, for instance: `width=200,height=100`. Settings for `params`: @@ -91,9 +67,9 @@ Settings for `params`: There is also a number of less supported browser-specific features, which are usually not used. Check <a href="https://developer.mozilla.org/en/DOM/window.open">window.open in MDN</a> for examples. -## Example: a minimalistic window +## Example: a minimalistic window -Let's open a window with minimal set of features just to see which of them browser allows to disable: +Let's open a window with minimal set of features, just to see which of them browser allows to disable: ```js run let params = `scrollbars=no,resizable=no,status=no,location=no,toolbar=no,menubar=no, @@ -118,20 +94,30 @@ Most browsers show the example above as required. Rules for omitted settings: - If there is no 3rd argument in the `open` call, or it is empty, then the default window parameters are used. -- If there is a string of params, but some yes/no features are omitted, then the omitted features are disabled, if the browser allows that. So if you specify params, make sure you explicitly set all required features to yes. +- If there is a string of params, but some `yes/no` features are omitted, then the omitted features assumed to have `no` value. So if you specify params, make sure you explicitly set all required features to yes. - If there is no `left/top` in params, then the browser tries to open a new window near the last opened window. - If there is no `width/height`, then the new window will be the same size as the last opened. -## Accessing a popup +## Accessing popup from window + +The `open` call returns a reference to the new window. It can be used to manipulate its properties, change location and even more. -The `open` call returns a reference to the new window. It can be used to manipulate it's properties, change location and even more. +In this example, we generate popup content from JavaScript: -In the example below, the contents of the new window is modified after loading. +```js +let newWin = window.open("about:blank", "hello", "width=200,height=200"); + +newWin.document.write("Hello, world!"); +``` + +And here we modify the contents after loading: ```js run let newWindow = open('/', 'example', 'width=300,height=300') newWindow.focus(); +alert(newWindow.location.href); // (*) about:blank, loading hasn't started yet + newWindow.onload = function() { let html = `<div style="font-size:30px">Welcome!</div>`; *!* @@ -140,65 +126,133 @@ newWindow.onload = function() { }; ``` -Please note that external `document` content is only accessible for windows from the same origin (the same protocol://domain:port). +Please note: immediately after `window.open`, the new window isn't loaded yet. That's demonstrated by `alert` in line `(*)`. So we wait for `onload` to modify it. We could also use `DOMContentLoaded` handler for `newWin.document`. + +```warn header="Same origin policy" +Windows may freely access content of each other only if they come from the same origin (the same protocol://domain:port). + +Otherwise, e.g. if the main window is from `site.com`, and the popup from `gmail.com`, that's impossible for user safety reasons. For the details, see chapter <info:cross-window-communication>. +``` + +## Accessing window from popup -For windows with URLs from another sites, we are able to change the location by assigning `newWindow.location=...`, but we can't read the location or access the content. That's for user safety, so that an evil page can't open a popup with `http://gmail.com` and read the data. We'll talk more about it later. +A popup may access the "opener" window as well using `window.opener` reference. It is `null` for all windows except popups. -## Accessing the opener window +If you run the code below, it replaces the opener (current) window content with "Test": -A popup may access the "opener" window as well. A JavaScript in it may use `window.opener` to access the window that opened it. It is `null` for all windows except popups. +```js run +let newWin = window.open("about:blank", "hello", "width=200,height=200"); + +newWin.document.write( + "<script>window.opener.document.body.innerHTML = 'Test'<\/script>" +); +``` -So both the main window and the popup have a reference to each other. They may modify each other freely assuming that they come from the same origin. If that's not so, then there are still means to communicate, to be covered in the next chapter <info:cross-window-communication>. +So the connection between the windows is bidirectional: the main window and the popup have a reference to each other. ## Closing a popup -If we don't need a popup any more, we can call `newWindow.close()` on it. +To close a window: `win.close()`. + +To check if a window is closed: `win.closed`. -Technically, the `close()` method is available for any `window`, but `window.close()` is ignored by most browsers if `window` is not created with `window.open()`. +Technically, the `close()` method is available for any `window`, but `window.close()` is ignored by most browsers if `window` is not created with `window.open()`. So it'll only work on a popup. -The `newWindow.closed` is `true` if the window is closed. That's useful to check if the popup (or the main window) is still open or not. A user could close it, and our code should take that possibility into account. +The `closed` property is `true` if the window is closed. That's useful to check if the popup (or the main window) is still open or not. A user can close it anytime, and our code should take that possibility into account. This code loads and then closes the window: ```js run -let newWindow = open('/', 'example', 'width=300,height=300') +let newWindow = open('/', 'example', 'width=300,height=300'); + newWindow.onload = function() { newWindow.close(); alert(newWindow.closed); // true }; ``` -## Focus/blur on a popup -Theoretically, there are `window.focus()` and `window.blur()` methods to focus/unfocus on a window. Also there are `focus/blur` events that allow to focus a window and catch the moment when the visitor switches elsewhere. +## Moving and resizing + +There are methods to move/resize a window: + +`win.moveBy(x,y)` +: Move the window relative to current position `x` pixels to the right and `y` pixels down. Negative values are allowed (to move left/up). -In the past evil pages abused those. For instance, look at this code: +`win.moveTo(x,y)` +: Move the window to coordinates `(x,y)` on the screen. + +`win.resizeBy(width,height)` +: Resize the window by given `width/height` relative to the current size. Negative values are allowed. + +`win.resizeTo(width,height)` +: Resize the window to the given size. + +There's also `window.onresize` event. + +```warn header="Only popups" +To prevent abuse, the browser usually blocks these methods. They only work reliably on popups that we opened, that have no additional tabs. +``` + +```warn header="No minification/maximization" +JavaScript has no way to minify or maximize a window. These OS-level functions are hidden from Frontend-developers. + +Move/resize methods do not work for maximized/minimized windows. +``` + +## Scrolling a window + +We already talked about scrolling a window in the chapter <info:size-and-scroll-window>. + +`win.scrollBy(x,y)` +: Scroll the window `x` pixels right and `y` down relative the current scroll. Negative values are allowed. + +`win.scrollTo(x,y)` +: Scroll the window to the given coordinates `(x,y)`. + +`elem.scrollIntoView(top = true)` +: Scroll the window to make `elem` show up at the top (the default) or at the bottom for `elem.scrollIntoView(false)`. + +There's also `window.onscroll` event. + +## Focus/blur on a window + +Theoretically, there are `window.focus()` and `window.blur()` methods to focus/unfocus on a window. And there are also `focus/blur` events that allow to catch the moment when the visitor focuses on a window and switches elsewhere. + +Although, in practice they are severely limited, because in the past evil pages abused them. + +For instance, look at this code: ```js run window.onblur = () => window.focus(); ``` -When a user attempts to switch out of the window (`blur`), it brings it back to focus. The intention is to "lock" the user within the `window`. +When a user attempts to switch out of the window (`window.onblur`), it brings the window back into focus. The intention is to "lock" the user within the `window`. -So, there are limitations that forbid the code like that. There are many limitations to protect the user from ads and evils pages. They depend on the browser. +So browsers had to introduce many limitations to forbid the code like that and protect the user from ads and evils pages. They depend on the browser. -For instance, a mobile browser usually ignores that call completely. Also focusing doesn't work when a popup opens in a separate tab rather than a new window. +For instance, a mobile browser usually ignores `window.focus()` completely. Also focusing doesn't work when a popup opens in a separate tab rather than a new window. -Still, there are some things that can be done. +Still, there are some use cases when such calls do work and can be useful. For instance: -- When we open a popup, it's might be a good idea to run a `newWindow.focus()` on it. Just in case, for some OS/browser combinations it ensures that the user is in the new window now. +- When we open a popup, it might be a good idea to run `newWindow.focus()` on it. Just in case, for some OS/browser combinations it ensures that the user is in the new window now. - If we want to track when a visitor actually uses our web-app, we can track `window.onfocus/onblur`. That allows us to suspend/resume in-page activities, animations etc. But please note that the `blur` event means that the visitor switched out from the window, but they still may observe it. The window is in the background, but still may be visible. -## Summary +## Summary + +Popup windows are used rarely, as there are alternatives: loading and displaying information in-page, or in iframe. + +If we're going to open a popup, a good practice is to inform the user about it. An "opening window" icon near a link or button would allow the visitor to survive the focus shift and keep both windows in mind. - A popup can be opened by the `open(url, name, params)` call. It returns the reference to the newly opened window. -- By default, browsers block `open` calls from the code outside of user actions. Usually a notification appears, so that a user may allow them. -- The popup may access the opener window using the `window.opener` property, so the two are connected. -- If the main window and the popup come from the same origin, they can freely read and modify each other. Otherwise, they can change location of each other and communicate using messages (to be covered). -- To close the popup: use `close()` call. Also the user may close them (just like any other windows). The `window.closed` is `true` after that. -- Methods `focus()` and `blur()` allow to focus/unfocus a window. Sometimes. -- Events `focus` and `blur` allow to track switching in and out of the window. But please note that a window may still be visible even in the background state, after `blur`. +- Browsers block `open` calls from the code outside of user actions. Usually a notification appears, so that a user may allow them. +- Browsers open a new tab by default, but if sizes are provided, then it'll be a popup window. +- The popup may access the opener window using the `window.opener` property. +- The main window and the popup can freely read and modify each other if they have the same origin. Otherwise, they can change location of each other and [exchange messages](info:cross-window-communication). + +To close the popup: use `close()` call. Also the user may close them (just like any other windows). The `window.closed` is `true` after that. -Also if we open a popup, a good practice is to notify the user about it. An icon with the opening window can help the visitor to survive the focus shift and keep both windows in mind. +- Methods `focus()` and `blur()` allow to focus/unfocus a window. But they don't work all the time. +- Events `focus` and `blur` allow to track switching in and out of the window. But please note that a window may still be visible even in the background state, after `blur`. diff --git a/3-frames-and-windows/03-cross-window-communication/article.md b/3-frames-and-windows/03-cross-window-communication/article.md index 53cb3cd6e..4d4e320e4 100644 --- a/3-frames-and-windows/03-cross-window-communication/article.md +++ b/3-frames-and-windows/03-cross-window-communication/article.md @@ -26,37 +26,18 @@ The "Same Origin" policy states that: - if we have a reference to another window, e.g. a popup created by `window.open` or a window inside `<iframe>`, and that window comes from the same origin, then we have full access to that window. - otherwise, if it comes from another origin, then we can't access the content of that window: variables, document, anything. The only exception is `location`: we can change it (thus redirecting the user). But we cannot *read* location (so we can't see where the user is now, no information leak). -Now let's see some examples. First, we'll look at pages that come from the same origin and do not conflict with the "Same Origin" policy, and afterwards we'll cover cross-window messaging that allows to work around the "Same Origin" policy. +### In action: iframe +An `<iframe>` tag hosts a separate embedded window, with its own separate `document` and `window` objects. -````warn header="Subdomains may be same-origin" -There's a small exclusion in the "Same Origin" policy. +We can access them using properties: -If windows share the same second-level domain, for instance `john.site.com`, `peter.site.com` and `site.com` (so that their common second-level domain is `site.com`), they can be treated as coming from the "same origin". +- `iframe.contentWindow` to get the window inside the `<iframe>`. +- `iframe.contentDocument` to get the document inside the `<iframe>`, shorthand for `iframe.contentWindow.document`. -To make it work, all such pages (including the one from `site.com`) should run the code: +When we access something inside the embedded window, the browser checks if the iframe has the same origin. If that's not so then the access is denied (writing to `location` is an exception, it's still permitted). -```js -document.domain = 'site.com'; -``` - -That's all. Now they can interact without limitations. Again, that's only possible for pages with the same second-level domain. -```` - -## Accessing an iframe contents - -Our first example covers iframes. An `<iframe>` is a two-faced beast. From one side it's a tag, just like `<script>` or `<img>`. From the other side it's a window-in-window. - -The embedded window has a separate `document` and `window` objects. - -We can access them like using the properties: - -- `iframe.contentWindow` is a reference to the window inside the `<iframe>`. -- `iframe.contentDocument` is a reference to the document inside the `<iframe>`. - -When we access an embedded window, the browser checks if the iframe has the same origin. If that's not so then the access is denied (with exclusions noted above). - -For instance, here's an `<iframe>` from another origin: +For instance, let's try reading and writing to `<iframe>` from another origin: ```html run <iframe src="https://example.com" id="iframe"></iframe> @@ -64,44 +45,47 @@ For instance, here's an `<iframe>` from another origin: <script> iframe.onload = function() { // we can get the reference to the inner window - let iframeWindow = iframe.contentWindow; - +*!* + let iframeWindow = iframe.contentWindow; // OK +*/!* try { // ...but not to the document inside it - let doc = iframe.contentDocument; +*!* + let doc = iframe.contentDocument; // ERROR +*/!* } catch(e) { alert(e); // Security Error (another origin) } - // also we can't read the URL of the page in it + // also we can't READ the URL of the page in iframe try { - alert(iframe.contentWindow.location); + // Can't read URL from the Location object +*!* + let href = iframe.contentWindow.location.href; // ERROR +*/!* } catch(e) { alert(e); // Security Error } - // ...but we can change it (and thus load something else into the iframe)! - iframe.contentWindow.location = '/'; // works + // ...we can WRITE into location (and thus load something else into the iframe)! +*!* + iframe.contentWindow.location = '/'; // OK +*/!* - iframe.onload = null; // clear the handler, to run this code only once + iframe.onload = null; // clear the handler, not to run it after the location change }; </script> ``` The code above shows errors for any operations except: -- Getting the reference to the inner window `iframe.contentWindow` -- Changing its `location`. - -```smart header="`iframe.onload` vs `iframe.contentWindow.onload`" -The `iframe.onload` event is actually the same as `iframe.contentWindow.onload`. It triggers when the embedded window fully loads with all resources. - -...But `iframe.onload` is always available, while `iframe.contentWindow.onload` needs the same origin. -``` +- Getting the reference to the inner window `iframe.contentWindow` - that's allowed. +- Writing to `location`. -And now an example with the same origin. We can do anything with the embedded window: +Contrary to that, if the `<iframe>` has the same origin, we can do anything with it: ```html run +<!-- iframe from the same site --> <iframe src="/" id="iframe"></iframe> <script> @@ -112,9 +96,40 @@ And now an example with the same origin. We can do anything with the embedded wi </script> ``` -### Please wait until the iframe loads +```smart header="`iframe.onload` vs `iframe.contentWindow.onload`" +The `iframe.onload` event (on the `<iframe>` tag) is essentially the same as `iframe.contentWindow.onload` (on the embedded window object). It triggers when the embedded window fully loads with all resources. + +...But we can't access `iframe.contentWindow.onload` for an iframe from another origin, so using `iframe.onload`. +``` + +## Windows on subdomains: document.domain + +By definition, two URLs with different domains have different origins. + +But if windows share the same second-level domain, for instance `john.site.com`, `peter.site.com` and `site.com` (so that their common second-level domain is `site.com`), we can make the browser ignore that difference, so that they can be treated as coming from the "same origin" for the purposes of cross-window communication. + +To make it work, each such window should run the code: + +```js +document.domain = 'site.com'; +``` + +That's all. Now they can interact without limitations. Again, that's only possible for pages with the same second-level domain. + +```warn header="Deprecated, but still working" +The `document.domain` property is in the process of being removed from the [specification](https://html.spec.whatwg.org/multipage/origin.html#relaxing-the-same-origin-restriction). The cross-window messaging (explained soon below) is the suggested replacement. + +That said, as of now all browsers support it. And the support will be kept for the future, not to break old code that relies on `document.domain`. +``` + + +## Iframe: wrong document pitfall -When an iframe is created, it immediately has a document. But that document is different from the one that finally loads into it! +When an iframe comes from the same origin, and we may access its `document`, there's a pitfall. It's not related to cross-origin things, but important to know. + +Upon its creation an iframe immediately has a document. But that document is different from the one that loads into it! + +So if we do something with the document immediately, that will probably be lost. Here, look: @@ -134,11 +149,13 @@ Here, look: </script> ``` -That's actually a well-known pitfall for developers. We shouldn't work with the document immediately, because that's the *wrong document*. If we set any event handlers on it, they will be ignored. +We shouldn't work with the document of a not-yet-loaded iframe, because that's the *wrong document*. If we set any event handlers on it, they will be ignored. + +How to detect the moment when the document is there? -...But the `onload` event triggers when the whole iframe with all resources is loaded. What if we want to act sooner, on `DOMContentLoaded` of the embedded document? +The right document is definitely at place when `iframe.onload` triggers. But it only triggers when the whole iframe with all resources is loaded. -That's not possible if the iframe comes from another origin. But for the same origin we can try to catch the moment when a new document appears, and then setup necessary handlers, like this: +We can try to catch the moment earlier using checks in `setInterval`: ```html run <iframe src="/" id="iframe"></iframe> @@ -148,21 +165,17 @@ That's not possible if the iframe comes from another origin. But for the same or // every 100 ms check if the document is the new one let timer = setInterval(() => { - if (iframe.contentDocument == oldDoc) return; + let newDoc = iframe.contentDocument; + if (newDoc == oldDoc) return; - // new document, let's set handlers - iframe.contentDocument.addEventListener('DOMContentLoaded', () => { - iframe.contentDocument.body.prepend('Hello, world!'); - }); + alert("New document is here!"); clearInterval(timer); // cancel setInterval, don't need it any more }, 100); </script> ``` -Let me know in comments if you know a better solution here. - -## window.frames +## Collection: window.frames An alternative way to get a window object for `<iframe>` -- is to get it from the named collection `window.frames`: @@ -204,11 +217,11 @@ if (window == top) { // current window == window.top? } ``` -## The sandbox attribute +## The "sandbox" iframe attribute The `sandbox` attribute allows for the exclusion of certain actions inside an `<iframe>` in order to prevent it executing untrusted code. It "sandboxes" the iframe by treating it as coming from another origin and/or applying other limitations. -By default, for `<iframe sandbox src="...">` the "default set" of restrictions is applied to the iframe. But we can provide a space-separated list of "excluded" limitations as a value of the attribute, like this: `<iframe sandbox="allow-forms allow-popups">`. The listed limitations are not applied. +There's a "default set" of restrictions applied for `<iframe sandbox src="...">`. But it can be relaxed if we provide a space-separated list of restrictions that should not be applied as a value of the attribute, like this: `<iframe sandbox="allow-forms allow-popups">`. In other words, an empty `"sandbox"` attribute puts the strictest limitations possible, but we can put a space-delimited list of those that we want to lift. @@ -257,14 +270,14 @@ The window that wants to send a message calls [postMessage](mdn:api/Window.postM Arguments: `data` -: The data to send. Can be any object, the data is cloned using the "structured cloning algorithm". IE supports only strings, so we should `JSON.stringify` complex objects to support that browser. +: The data to send. Can be any object, the data is cloned using the "structured serialization algorithm". IE supports only strings, so we should `JSON.stringify` complex objects to support that browser. `targetOrigin` : Specifies the origin for the target window, so that only a window from the given origin will get the message. -The `targetOrigin` is a safety measure. Remember, if the target window comes from another origin, we can't read it's `location`. So we can't be sure which site is open in the intended window right now: the user could navigate away. +The `targetOrigin` is a safety measure. Remember, if the target window comes from another origin, we can't read its `location` in the sender window. So we can't be sure which site is open in the intended window right now: the user could navigate away, and the sender window has no idea about it. -Specifying `targetOrigin` ensures that the window only receives the data if it's still at that site. Good when the data is sensitive. +Specifying `targetOrigin` ensures that the window only receives the data if it's still at the right site. Important when the data is sensitive. For instance, here `win` will only receive the message if it has a document from the origin `http://example.com`: @@ -306,7 +319,7 @@ The event object has special properties: : The origin of the sender, for instance `http://javascript.info`. `source` -: The reference to the sender window. We can immediately `postMessage` back if we want. +: The reference to the sender window. We can immediately `source.postMessage(...)` back if we want. To assign that handler, we should use `addEventListener`, a short syntax `window.onmessage` does not work. @@ -320,6 +333,8 @@ window.addEventListener("message", function(event) { } alert( "received: " + event.data ); + + // can message back using event.source.postMessage(...) }); ``` @@ -327,17 +342,13 @@ The full example: [codetabs src="postmessage" height=120] -```smart header="There's no delay" -There's totally no delay between `postMessage` and the `message` event. That happens synchronously, even faster than `setTimeout(...,0)`. -``` - ## Summary To call methods and access the content of another window, we should first have a reference to it. -For popups we have two properties: -- `window.open` -- opens a new window and returns a reference to it, -- `window.opener` -- a reference to the opener window from a popup +For popups we have these references: +- From the opener window: `window.open` -- opens a new window and returns a reference to it, +- From the popup: `window.opener` -- is a reference to the opener window from a popup. For iframes, we can access parent/children windows using: - `window.frames` -- a collection of nested window objects, @@ -347,18 +358,17 @@ For iframes, we can access parent/children windows using: If windows share the same origin (host, port, protocol), then windows can do whatever they want with each other. Otherwise, only possible actions are: -- Change the location of another window (write-only access). +- Change the `location` of another window (write-only access). - Post a message to it. - -Exclusions are: +Exceptions are: - Windows that share the same second-level domain: `a.site.com` and `b.site.com`. Then setting `document.domain='site.com'` in both of them puts them into the "same origin" state. - If an iframe has a `sandbox` attribute, it is forcefully put into the "different origin" state, unless the `allow-same-origin` is specified in the attribute value. That can be used to run untrusted code in iframes from the same site. -The `postMessage` interface allows two windows to talk with security checks: +The `postMessage` interface allows two windows with any origins to talk: 1. The sender calls `targetWin.postMessage(data, targetOrigin)`. -2. If `targetOrigin` is not `'*'`, then the browser checks if window `targetWin` has the URL from `targetWin` site. +2. If `targetOrigin` is not `'*'`, then the browser checks if window `targetWin` has the origin `targetOrigin`. 3. If it is so, then `targetWin` triggers the `message` event with special properties: - `origin` -- the origin of the sender window (like `http://my.site.com`) - `source` -- the reference to the sender window. diff --git a/3-frames-and-windows/03-cross-window-communication/sandbox.view/index.html b/3-frames-and-windows/03-cross-window-communication/sandbox.view/index.html index 478830610..46dd7b5cc 100644 --- a/3-frames-and-windows/03-cross-window-communication/sandbox.view/index.html +++ b/3-frames-and-windows/03-cross-window-communication/sandbox.view/index.html @@ -7,7 +7,7 @@ <body> - <div>The iframe below is has <code>sandbox</code> attribute.</div> + <div>The iframe below has the <code>sandbox</code> attribute.</div> <iframe sandbox src="sandboxed.html" style="height:60px;width:90%"></iframe> diff --git a/3-frames-and-windows/06-clickjacking/article.md b/3-frames-and-windows/06-clickjacking/article.md index 9752835e5..34d0a91ae 100644 --- a/3-frames-and-windows/06-clickjacking/article.md +++ b/3-frames-and-windows/06-clickjacking/article.md @@ -57,12 +57,12 @@ Here's the same example, but closer to reality, with `opacity:0` for `<iframe>`: [codetabs src="clickjacking" height=160] -All we need to attack -- is to position the `<iframe>` on the evil page in such a way that the button is right over the link. That's usually possible with CSS. +All we need to attack -- is to position the `<iframe>` on the evil page in such a way that the button is right over the link. So that when a user clicks the link, they actually click the button. That's usually doable with CSS. ```smart header="Clickjacking is for clicks, not for keyboard" -The attack only affects mouse actions. +The attack only affects mouse actions (or similar, like taps on mobile). -Technically, if we have a text field to hack, then we can position an iframe in such a way that text fields overlap each other. So when a visitor tries to focus on the input they see on the page, they actually focus on the input inside the iframe. +Keyboard input is much difficult to redirect. Technically, if we have a text field to hack, then we can position an iframe in such a way that text fields overlap each other. So when a visitor tries to focus on the input they see on the page, they actually focus on the input inside the iframe. But then there's a problem. Everything that the visitor types will be hidden, because the iframe is not visible. @@ -87,19 +87,19 @@ This not a reliable defence, because there are many ways to hack around it. Let' ### Blocking top-navigation -We can block the transition caused by changing `top.location` in the [beforeunload](info:onload-ondomcontentloaded#window.onbeforeunload) event. +We can block the transition caused by changing `top.location` in [beforeunload](info:onload-ondomcontentloaded#window.onbeforeunload) event handler. -The top page (belonging to the hacker) sets a handler to it, and when the `iframe` tries to change `top.location` the visitor gets a message asking them whether they want to leave. +The top page (enclosing one, belonging to the hacker) sets a preventing handler to it, like this: -Like this: ```js window.onbeforeunload = function() { - window.onbeforeunload = null; - return "Want to leave without learning all the secrets (he-he)?"; + return false; }; ``` -In most cases the visitor would answer negatively because they don't know about the iframe - all they can see is the top page, leading them to think there is no reason to leave. So `top.location` won't change! +When the `iframe` tries to change `top.location`, the visitor gets a message asking them whether they want to leave. + +In most cases the visitor would answer negatively because they don't know about the iframe - all they can see is the top page, there's no reason to leave. So `top.location` won't change! In action: @@ -123,7 +123,7 @@ There are other ways to work around that simple protection too. The server-side header `X-Frame-Options` can permit or forbid displaying the page inside a frame. -It must be sent *by the server*: the browser will ignore it if found in a `<meta>` tag. So, `<meta http-equiv="X-Frame-Options"...>` won't do anything. +It must be sent exactly as HTTP-header: the browser will ignore it if found in HTML `<meta>` tag. So, `<meta http-equiv="X-Frame-Options"...>` won't do anything. The header may have 3 values: @@ -154,9 +154,9 @@ Depending on your browser, the `iframe` above is either empty or alerting you th ## Showing with disabled functionality -The `X-Frame-Options` header has a side-effect. Other sites won't be able to show our page in a frame, even if they have good reasons to do so. +The `X-Frame-Options` header has a side effect. Other sites won't be able to show our page in a frame, even if they have good reasons to do so. -So there are other solutions... For instance, we can "cover" the page with a `<div>` with `height: 100%; width: 100%;`, so that it intercepts all clicks. That `<div>` should disappear if `window == top` or if we figure out that we don't need the protection. +So there are other solutions... For instance, we can "cover" the page with a `<div>` with styles `height: 100%; width: 100%;`, so that it will intercept all clicks. That `<div>` is to be removed if `window == top` or if we figure out that we don't need the protection. Something like this: @@ -191,43 +191,25 @@ The demo: ## Samesite cookie attribute -The `samesite` cookie attribute can also prevent clickjacking attacks. The purpose of the attribute is to prevent cookies from being sent to a website when the user doesn't intend to visit the website. It is designed to prevent cross-site request forgery attacks, but also helps with clickjacking because a hijacked click usually results in an unintended request to a different site. When a cookie has the `samesite` attribute, whether the value is `strict` or `lax`, cookies are not sent to a website when it is loaded inside an iframe. - -The `samesite` attribute can be set using HTTP response headers or JavaScript. Via HTTP, it looks like: - -`Set-Cookie: demoCookie=demoValue; samesite=lax` - -or +The `samesite` cookie attribute can also prevent clickjacking attacks. -`Set-Cookie: demoCookie=demoValue; samesite=strict` +A cookie with such attribute is only sent to a website if it's opened directly, not via a frame, or otherwise. More information in the chapter <info:cookie#samesite>. -In JavaScript, it is: +If the site, such as Facebook, had `samesite` attribute on its authentication cookie, like this: -```html -document.cookie = "demoCookie=demoValue; SameSite=Lax"; -document.cookie = "demoCookie=demoValue; SameSite=Strict"; +``` +Set-Cookie: authorization=secret; samesite ``` -When the value is `lax`, these types of requests are blocked: -- Form POST submit (<form method="POST" action="...">) -- iframe (<iframe src="..."></iframe>) -- AJAX ($.get("...")) -- Image (<img src="...">) -- Script (<script src="..."></script>) -- Stylesheet (<link rel="stylesheet" type="text/css" href="...">) - -When the value is `strict`, these types of requests are also blocked, in addition to those under `lax`: -- Clicking a link (<a href="..."></a>) -- Prerender (<link rel="prerender" href=".."/>) -- Form GET submit (<form method="GET" action="...">) +...Then such cookie wouldn't be sent when Facebook is open in iframe from another site. So the attack would fail. -In this case, we are concerned with iframe requests. A clickjacking attempt would fail because the user is not considered logged into, for example, Facebook, so they can't "Like" anything through the iframe. +The `samesite` cookie attribute will not have an effect when cookies are not used. This may allow other websites to easily show our public, unauthenticated pages in iframes. -The `samesite` attribute will not have an effect when cookies are not used. This may allow websites to easily show public, unauthenticated pages in iframes on unaffiliated websites. However, this may also allow clickjacking attacks to work in a few limited cases. An anonymous polling website that prevents duplicate voting by checking IP addresses, for example, would still be vulnerable to clickjacking because it does not authenticate users using cookies. +However, this may also allow clickjacking attacks to work in a few limited cases. An anonymous polling website that prevents duplicate voting by checking IP addresses, for example, would still be vulnerable to clickjacking because it does not authenticate users using cookies. ## Summary -Clickjacking is a way to "trick" users into clicking on a malicious site without even knowing what's happening. That's dangerous if there are important click-activated actions. +Clickjacking is a way to "trick" users into clicking on a victim site without even knowing what's happening. That's dangerous if there are important click-activated actions. A hacker can post a link to their evil page in a message, or lure visitors to their page by some other means. There are many variations. diff --git a/4-binary/01-arraybuffer-binary-arrays/01-concat/_js.view/solution.js b/4-binary/01-arraybuffer-binary-arrays/01-concat/_js.view/solution.js index 2f51384ef..00c37bb94 100644 --- a/4-binary/01-arraybuffer-binary-arrays/01-concat/_js.view/solution.js +++ b/4-binary/01-arraybuffer-binary-arrays/01-concat/_js.view/solution.js @@ -2,9 +2,9 @@ function concat(arrays) { // sum of individual array lengths let totalLength = arrays.reduce((acc, value) => acc + value.length, 0); - if (!arrays.length) return null; - let result = new Uint8Array(totalLength); + + if (!arrays.length) return result; // for each array - copy it over result // next array is copied right after the previous one diff --git a/4-binary/01-arraybuffer-binary-arrays/article.md b/4-binary/01-arraybuffer-binary-arrays/article.md index 5a0482bbb..2827e277e 100644 --- a/4-binary/01-arraybuffer-binary-arrays/article.md +++ b/4-binary/01-arraybuffer-binary-arrays/article.md @@ -9,7 +9,7 @@ Although, there's a bit of confusion, because there are many classes. To name a Binary data in JavaScript is implemented in a non-standard way, compared to other languages. But when we sort things out, everything becomes fairly simple. -**The basic binary object is `ArrayBuffer` -- a reference to a fixed-length contiguos memory area.** +**The basic binary object is `ArrayBuffer` -- a reference to a fixed-length contiguous memory area.** We create it like this: ```js run @@ -30,11 +30,11 @@ Let's eliminate a possible source of confusion. `ArrayBuffer` has nothing in com **To manipulate an `ArrayBuffer`, we need to use a "view" object.** -A view object does not store anything on it's own. It's the "eyeglasses" that give an interpretation of the bytes stored in the `ArrayBuffer`. +A view object does not store anything on its own. It's the "eyeglasses" that give an interpretation of the bytes stored in the `ArrayBuffer`. For instance: -- **`Uint8Array`** -- treats each byte in `ArrayBuffer` as a separate number, with possible values are from 0 to 255 (a byte is 8-bit, so it can hold only that much). Such value is called a "8-bit unsigned integer". +- **`Uint8Array`** -- treats each byte in `ArrayBuffer` as a separate number, with possible values from 0 to 255 (a byte is 8-bit, so it can hold only that much). Such value is called a "8-bit unsigned integer". - **`Uint16Array`** -- treats every 2 bytes as an integer, with possible values from 0 to 65535. That's called a "16-bit unsigned integer". - **`Uint32Array`** -- treats every 4 bytes as an integer, with possible values from 0 to 4294967295. That's called a "32-bit unsigned integer". - **`Float64Array`** -- treats every 8 bytes as a floating point number with possible values from <code>5.0x10<sup>-324</sup></code> to <code>1.8x10<sup>308</sup></code>. @@ -71,10 +71,13 @@ for(let num of view) { ## TypedArray -The common term for all these views (`Uint8Array`, `Uint32Array`, etc) is [TypedArray](https://tc39.github.io/ecma262/#sec-typedarray-objects). They share the same set of methods and properities. +The common term for all these views (`Uint8Array`, `Uint32Array`, etc) is [TypedArray](https://tc39.github.io/ecma262/#sec-typedarray-objects). They share the same set of methods and properties. -They are much more like regular arrays: have indexes and iterable. +Please note, there's no constructor called `TypedArray`, it's just a common "umbrella" term to represent one of views over `ArrayBuffer`: `Int8Array`, `Uint8Array` and so on, the full list will soon follow. +When you see something like `new TypedArray`, it means any of `new Int8Array`, `new Uint8Array`, etc. + +Typed arrays behave like regular arrays: have indexes and are iterable. A typed array constructor (be it `Int8Array` or `Float64Array`, doesn't matter) behaves differently depending on argument types. @@ -99,17 +102,17 @@ new TypedArray(); *!* let arr = new Uint8Array([0, 1, 2, 3]); */!* - alert( arr.length ); // 4 - alert( arr[1] ); // 1 + alert( arr.length ); // 4, created binary array of the same length + alert( arr[1] ); // 1, filled with 4 bytes (unsigned 8-bit integers) with given values ``` -3. If another `TypedArray` is supplied, it does the same: creates a typed array of the same length and copies values. Values are converted to the new type in the process. +3. If another `TypedArray` is supplied, it does the same: creates a typed array of the same length and copies values. Values are converted to the new type in the process, if needed. ```js run let arr16 = new Uint16Array([1, 1000]); *!* let arr8 = new Uint8Array(arr16); */!* alert( arr8[0] ); // 1 - alert( arr8[1] ); // 232 (tried to copy 1000, but can't fit 1000 into 8 bits) + alert( arr8[1] ); // 232, tried to copy 1000, but can't fit 1000 into 8 bits (explanations below) ``` 4. For a numeric argument `length` -- creates the typed array to contain that many elements. Its byte length will be `length` multiplied by the number of bytes in a single item `TypedArray.BYTES_PER_ELEMENT`: @@ -123,9 +126,9 @@ new TypedArray(); We can create a `TypedArray` directly, without mentioning `ArrayBuffer`. But a view cannot exist without an underlying `ArrayBuffer`, so gets created automatically in all these cases except the first one (when provided). -To access the `ArrayBuffer`, there are properties: -- `arr.buffer` -- references the `ArrayBuffer`. -- `arr.byteLength` -- the length of the `ArrayBuffer`. +To access the underlying `ArrayBuffer`, there are following properties in `TypedArray`: +- `buffer` -- references the `ArrayBuffer`. +- `byteLength` -- the length of the `ArrayBuffer`. So, we can always move from one view to another: ```js @@ -206,10 +209,10 @@ These methods allow us to copy typed arrays, mix them, create new arrays from ex ## DataView -[DataView](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/DataView) is a special super-flexible "untyped" view over `ArrayBuffer`. It allows to access the data on any offset in any format. +[DataView](mdn:/JavaScript/Reference/Global_Objects/DataView) is a special super-flexible "untyped" view over `ArrayBuffer`. It allows to access the data on any offset in any format. - For typed arrays, the constructor dictates what the format is. The whole array is supposed to be uniform. The i-th number is `arr[i]`. -- With `DataView` we access the data with methods like `.getUint8(i)` or `.gteUint16(i)`. We choose the format at method call time instead of the construction time. +- With `DataView` we access the data with methods like `.getUint8(i)` or `.getUint16(i)`. We choose the format at method call time instead of the construction time. The syntax: @@ -224,6 +227,7 @@ new DataView(buffer, [byteOffset], [byteLength]) For instance, here we extract numbers in different formats from the same buffer: ```js run +// binary array of 4 bytes, all have the maximal value 255 let buffer = new Uint8Array([255, 255, 255, 255]).buffer; let dataView = new DataView(buffer); @@ -231,16 +235,16 @@ let dataView = new DataView(buffer); // get 8-bit number at offset 0 alert( dataView.getUint8(0) ); // 255 -// now get 16-bit number at offset 0, that's 2 bytes, both with max value +// now get 16-bit number at offset 0, it consists of 2 bytes, together interpreted as 65535 alert( dataView.getUint16(0) ); // 65535 (biggest 16-bit unsigned int) // get 32-bit number at offset 0 alert( dataView.getUint32(0) ); // 4294967295 (biggest 32-bit unsigned int) -dataView.setUint32(0, 0); // set 4-byte number to zero +dataView.setUint32(0, 0); // set 4-byte number to zero, thus setting all bytes to 0 ``` -`DataView` is great when we store mixed-format data in the same buffer. E.g we store a sequence of pairs (16-bit integer, 32-bit float). Then `DataView` allows to access them easily. +`DataView` is great when we store mixed-format data in the same buffer. For example, when we store a sequence of pairs (16-bit integer, 32-bit float), `DataView` allows to access them easily. ## Summary @@ -249,20 +253,19 @@ dataView.setUint32(0, 0); // set 4-byte number to zero To do almost any operation on `ArrayBuffer`, we need a view. - It can be a `TypedArray`: - - `Uint8Array`, `Uint16Array`, `Uint32Array` -- for integer numbers of 8, 16 and 32 bits. + - `Uint8Array`, `Uint16Array`, `Uint32Array` -- for unsigned integers of 8, 16, and 32 bits. - `Uint8ClampedArray` -- for 8-bit integers, "clamps" them on assignment. - `Int8Array`, `Int16Array`, `Int32Array` -- for signed integer numbers (can be negative). - `Float32Array`, `Float64Array` -- for signed floating-point numbers of 32 and 64 bits. - Or a `DataView` -- the view that uses methods to specify a format, e.g. `getUint8(offset)`. -In most cases we create and operate directly on typed arrays, leaving `ArrayBuffer` under cover, as a "common discriminator". We can access it as `.buffer` and make another view if needed. +In most cases we create and operate directly on typed arrays, leaving `ArrayBuffer` under cover, as a "common denominator". We can access it as `.buffer` and make another view if needed. -There are also two additional terms: +There are also two additional terms, that are used in descriptions of methods that operate on binary data: - `ArrayBufferView` is an umbrella term for all these kinds of views. - `BufferSource` is an umbrella term for `ArrayBuffer` or `ArrayBufferView`. -These are used in descriptions of methods that operate on binary data. `BufferSource` is one of the most common teerms, as it means "any kind of binary data" -- an `ArrayBuffer` or a view over it. - +We'll see these terms in the next chapters. `BufferSource` is one of the most common terms, as it means "any kind of binary data" -- an `ArrayBuffer` or a view over it. Here's a cheatsheet: diff --git a/4-binary/02-text-decoder/article.md b/4-binary/02-text-decoder/article.md index 9287279ec..a0c80145c 100644 --- a/4-binary/02-text-decoder/article.md +++ b/4-binary/02-text-decoder/article.md @@ -2,7 +2,7 @@ What if the binary data is actually a string? For instance, we received a file with textual data. -The build-in [TextDecoder](https://encoding.spec.whatwg.org/#interface-textdecoder) object allows to read the value into an an actual JavaScript string, given the buffer and the encoding. +The built-in [TextDecoder](https://encoding.spec.whatwg.org/#interface-textdecoder) object allows one to read the value into an actual JavaScript string, given the buffer and the encoding. We first need to create it: ```js @@ -12,7 +12,7 @@ let decoder = new TextDecoder([label], [options]); - **`label`** -- the encoding, `utf-8` by default, but `big5`, `windows-1251` and many other are also supported. - **`options`** -- optional object: - **`fatal`** -- boolean, if `true` then throw an exception for invalid (non-decodable) characters, otherwise (default) replace them with character `\uFFFD`. - - **`ignoreBOM`** -- boolean, if `true` then ignore BOM (an optional byte-order unicode mark), rarely needed. + - **`ignoreBOM`** -- boolean, if `true` then ignore BOM (an optional byte-order Unicode mark), rarely needed. ...And then decode: @@ -58,7 +58,7 @@ alert( new TextDecoder().decode(binaryString) ); // Hello The syntax is: -```js run +```js let encoder = new TextEncoder(); ``` diff --git a/4-binary/03-blob/article.md b/4-binary/03-blob/article.md index 0bf1ffe78..a6ef50c33 100644 --- a/4-binary/03-blob/article.md +++ b/4-binary/03-blob/article.md @@ -2,13 +2,16 @@ `ArrayBuffer` and views are a part of ECMA standard, a part of JavaScript. -In the browser, there are additional higher-level objects, described in [File API](https://www.w3.org/TR/FileAPI/). +In the browser, there are additional higher-level objects, described in [File API](https://www.w3.org/TR/FileAPI/), in particular `Blob`. -`Blob` consists of an optional string `type` (a MIME-type usually), plus `blobParts` -- a sequence of other `Blob` objects, strings and `BufferSources`. +`Blob` consists of an optional string `type` (a MIME-type usually), plus `blobParts` -- a sequence of other `Blob` objects, strings and `BufferSource`.  +<<<<<<< HEAD Thanks to `type`, we can download/upload blobs, and it naturally becomes `Content-Type` in network requests. +======= +>>>>>>> 540d753e90789205fc6e75c502f68382c87dea9b The constructor syntax is: @@ -18,8 +21,8 @@ new Blob(blobParts, options); - **`blobParts`** is an array of `Blob`/`BufferSource`/`String` values. - **`options`** optional object: - - **`type`** -- blob type, usually MIME-type, e.g. `image/png`, - - **`endings`** -- whether to transform end-of-line to make the blob correspond to current OS newlines (`\r\n` or `\n`). By default `"transparent"` (do nothing), but also can be `"native"` (transform). + - **`type`** -- `Blob` type, usually MIME-type, e.g. `image/png`, + - **`endings`** -- whether to transform end-of-line to make the `Blob` correspond to current OS newlines (`\r\n` or `\n`). By default `"transparent"` (do nothing), but also can be `"native"` (transform). For example: @@ -31,13 +34,13 @@ let blob = new Blob(["<html>…</html>"], {type: 'text/html'}); ```js // create Blob from a typed array and strings -let hello = new Uint8Array([72, 101, 108, 108, 111]); // "hello" in binary form +let hello = new Uint8Array([72, 101, 108, 108, 111]); // "Hello" in binary form let blob = new Blob([hello, ' ', 'world'], {type: 'text/plain'}); ``` -We can extract blob slices with: +We can extract `Blob` slices with: ```js blob.slice([byteStart], [byteEnd], [contentType]); @@ -49,17 +52,19 @@ blob.slice([byteStart], [byteEnd], [contentType]); The arguments are similar to `array.slice`, negative numbers are allowed too. -```smart header="Blobs are immutable" -We can't change data directly in a blob, but we can slice parts of blobs, create new blobs from them, mix them into a new blob and so on. +```smart header="`Blob` objects are immutable" +We can't change data directly in a `Blob`, but we can slice parts of a `Blob`, create new `Blob` objects from them, mix them into a new `Blob` and so on. This behavior is similar to JavaScript strings: we can't change a character in a string, but we can make a new corrected string. ``` ## Blob as URL -A Blob can be easily used as an URL for `<a>`, `<img>` or other tags, to show its contents. +A Blob can be easily used as a URL for `<a>`, `<img>` or other tags, to show its contents. -Let's start with a simple example. By clicking on a link you download a dynamically-generated blob with `hello world` contents as a file: +Thanks to `type`, we can also download/upload `Blob` objects, and the `type` naturally becomes `Content-Type` in network requests. + +Let's start with a simple example. By clicking on a link you download a dynamically-generated `Blob` with `hello world` contents as a file: ```html run <!-- download attribute forces the browser to download instead of navigating --> @@ -74,7 +79,7 @@ link.href = URL.createObjectURL(blob); We can also create a link dynamically in JavaScript and simulate a click by `link.click()`, then download starts automatically. -Here's the similar "on the fly" blob creation and download code, but without HTML: +Here's the similar code that causes user to download the dynamically created `Blob`, without any HTML: ```js run let link = document.createElement('a'); @@ -89,35 +94,37 @@ link.click(); URL.revokeObjectURL(link.href); ``` -**`URL.createObjectURL` takes a blob and creates an unique URL for it, in the form `blob:<origin>/<uuid>`.** +`URL.createObjectURL` takes a `Blob` and creates a unique URL for it, in the form `blob:<origin>/<uuid>`. -That's what the generated url looks like: +That's what the value of `link.href` looks like: ``` blob:https://javascript.info/1e67e00e-860d-40a5-89ae-6ab0cbee6273 ``` -The browser for each url generated by `URL.createObjectURL` stores an the url -> blob mapping internally. So such urls are short, but allow to access the blob. +For each URL generated by `URL.createObjectURL` the browser stores a URL -> `Blob` mapping internally. So such URLs are short, but allow to access the `Blob`. + +A generated URL (and hence the link with it) is only valid within the current document, while it's open. And it allows to reference the `Blob` in `<img>`, `<a>`, basically any other object that expects a URL. -A generated url is only valid while the current document is open. And it allows to reference the blob in `<img>`, `<a>`, any other object that expects an url. +There's a side effect though. While there's a mapping for a `Blob`, the `Blob` itself resides in the memory. The browser can't free it. -There's a side-effect though. While there's an mapping for a blob, the blob itself resides in the memory. The browser can't free it. +The mapping is automatically cleared on document unload, so `Blob` objects are freed then. But if an app is long-living, then that doesn't happen soon. -The mapping is automatically cleared on document unload, so blobs are freed then. But if an app is long-living, then that doesn't happen soon. So if we create an URL, that blob will hang in memory, even if not needed any more. +**So if we create a URL, that `Blob` will hang in memory, even if not needed any more.** -**`URL.revokeObjectURL(url)` removes the reference from the internal mapping, thus allowing the blob to be deleted (if there are no other references), and the memory to be freed.** +`URL.revokeObjectURL(url)` removes the reference from the internal mapping, thus allowing the `Blob` to be deleted (if there are no other references), and the memory to be freed. -In the last example, we intend the blob to be used only once, for instant downloading, so we call `URL.revokeObjectURL(link.href)` immediately. +In the last example, we intend the `Blob` to be used only once, for instant downloading, so we call `URL.revokeObjectURL(link.href)` immediately. -In the previous example though, with the clickable HTML-link, we don't call `URL.revokeObjectURL(link.href)`, because that would make the blob url invalid. After the revocation, as the mapping is removed, the url doesn't work any more. +In the previous example with the clickable HTML-link, we don't call `URL.revokeObjectURL(link.href)`, because that would make the `Blob` url invalid. After the revocation, as the mapping is removed, the URL doesn't work any more. ## Blob to base64 -An alternative to `URL.createObjectURL` is to convert a blob into a base64-encoded string. +An alternative to `URL.createObjectURL` is to convert a `Blob` into a base64-encoded string. That encoding represents binary data as a string of ultra-safe "readable" characters with ASCII-codes from 0 to 64. And what's more important -- we can use this encoding in "data-urls". -A [data url](https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/Data_URIs) has the form `data:[<mediatype>][;base64],<data>`. We can use such urls everywhere, on par with "regular" urls. +A [data url](mdn:/http/Data_URIs) has the form `data:[<mediatype>][;base64],<data>`. We can use such urls everywhere, on par with "regular" urls. For instance, here's a smiley: @@ -128,7 +135,7 @@ For instance, here's a smiley: The browser will decode the string and show the image: <img src="data:image/png;base64,R0lGODlhDAAMAKIFAF5LAP/zxAAAANyuAP/gaP///wAAAAAAACH5BAEAAAUALAAAAAAMAAwAAAMlWLPcGjDKFYi9lxKBOaGcF35DhWHamZUW0K4mAbiwWtuf0uxFAgA7"> -To transform a blob into base64, we'll use the built-in `FileReader` object. It can read data from Blobs in multiple formats. In the [next chapter](info:file) we'll cover it more in-depth. +To transform a `Blob` into base64, we'll use the built-in `FileReader` object. It can read data from Blobs in multiple formats. In the [next chapter](info:file) we'll cover it more in-depth. Here's the demo of downloading a blob, now via base-64: @@ -149,23 +156,23 @@ reader.onload = function() { }; ``` -Both ways of making an URL of a blob are usable. But usually `URL.createObjectURL(blob)` is simpler and faster. +Both ways of making a URL of a `Blob` are usable. But usually `URL.createObjectURL(blob)` is simpler and faster. ```compare title-plus="URL.createObjectURL(blob)" title-minus="Blob to data url" + We need to revoke them if care about memory. + Direct access to blob, no "encoding/decoding" - No need to revoke anything. -- Performance and memory losses on big blobs for encoding. +- Performance and memory losses on big `Blob` objects for encoding. ``` ## Image to blob -We can create a blob of an image, an image part, or even make a page screenshot. That's handy to upload it somewhere. +We can create a `Blob` of an image, an image part, or even make a page screenshot. That's handy to upload it somewhere. Image operations are done via `<canvas>` element: -1. Draw an image (or its part) on canvas using [canvas.drawImage](https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D/drawImage). -2. Call canvas method [.toBlob(callback, format, quality)](https://developer.mozilla.org/en-US/docs/Web/API/HTMLCanvasElement/toBlob) that creates a blob and runs `callback` with it when done. +1. Draw an image (or its part) on canvas using [canvas.drawImage](mdn:/api/CanvasRenderingContext2D/drawImage). +2. Call canvas method [.toBlob(callback, format, quality)](mdn:/api/HTMLCanvasElement/toBlob) that creates a `Blob` and runs `callback` with it when done. In the example below, an image is just copied, but we could cut from it, or transform it on canvas prior to making a blob: @@ -184,7 +191,7 @@ let context = canvas.getContext('2d'); context.drawImage(img, 0, 0); // we can context.rotate(), and do many other things on canvas -// toBlob is async opereation, callback is called when done +// toBlob is async operation, callback is called when done canvas.toBlob(function(blob) { // blob ready, download it let link = document.createElement('a'); @@ -203,27 +210,50 @@ If we prefer `async/await` instead of callbacks: let blob = await new Promise(resolve => canvasElem.toBlob(resolve, 'image/png')); ``` -For screenshotting a page, we can use a library such as <https://github.com/niklasvh/html2canvas>. What it does is just walks the page and draws it on `<canvas>`. Then we can get a blob of it the same way as above. +For screenshotting a page, we can use a library such as <https://github.com/niklasvh/html2canvas>. What it does is just walks the page and draws it on `<canvas>`. Then we can get a `Blob` of it the same way as above. ## From Blob to ArrayBuffer The `Blob` constructor allows to create a blob from almost anything, including any `BufferSource`. -But if we need to perform low-level processing, we can get the lowest-level `ArrayBuffer` from it using `FileReader`: +But if we need to perform low-level processing, we can get the lowest-level `ArrayBuffer` from `blob.arrayBuffer()`: ```js // get arrayBuffer from blob -let fileReader = new FileReader(); +const bufferPromise = await blob.arrayBuffer(); -*!* -fileReader.readAsArrayBuffer(blob); -*/!* - -fileReader.onload = function(event) { - let arrayBuffer = fileReader.result; -}; +// or +blob.arrayBuffer().then(buffer => /* process the ArrayBuffer */); ``` +## From Blob to stream + +When we read and write to a blob of more than `2 GB`, the use of `arrayBuffer` becomes more memory intensive for us. At this point, we can directly convert the blob to a stream. + +A stream is a special object that allows to read from it (or write into it) portion by portion. It's outside of our scope here, but here's an example, and you can read more at <https://developer.mozilla.org/en-US/docs/Web/API/Streams_API>. Streams are convenient for data that is suitable for processing piece-by-piece. + +The `Blob` interface's `stream()` method returns a `ReadableStream` which upon reading returns the data contained within the `Blob`. + +Then we can read from it, like this: + +```js +// get readableStream from blob +const readableStream = blob.stream(); +const stream = readableStream.getReader(); + +while (true) { + // for each iteration: value is the next blob fragment + let { done, value } = await stream.read(); + if (done) { + // no more data in the stream + console.log('all blob processed.'); + break; + } + + // do something with the data portion we've just read from the blob + console.log(value); +} +``` ## Summary @@ -231,9 +261,11 @@ While `ArrayBuffer`, `Uint8Array` and other `BufferSource` are "binary data", a That makes Blobs convenient for upload/download operations, that are so common in the browser. -Methods that perform web-requests, such as [XMLHttpRequest](info:xmlhttprequest), [fetch](info:fetch-basics) and so on, can work with `Blob` natively, as well as with other binary types. +Methods that perform web-requests, such as [XMLHttpRequest](info:xmlhttprequest), [fetch](info:fetch) and so on, can work with `Blob` natively, as well as with other binary types. + +We can easily convert between `Blob` and low-level binary data types: -We can easily convert betweeen `Blob` and low-level binary data types: +- We can make a `Blob` from a typed array using `new Blob(...)` constructor. +- We can get back `ArrayBuffer` from a Blob using `blob.arrayBuffer()`, and then create a view over it for low-level binary processing. -- We can make a Blob from a typed array using `new Blob(...)` constructor. -- We can get back `ArrayBuffer` from a Blob using `FileReader`, and then create a view over it for low-level binary processing. +Conversion streams are very useful when we need to handle large blob. You can easily create a `ReadableStream` from a blob. The `Blob` interface's `stream()` method returns a `ReadableStream` which upon reading returns the data contained within the blob. diff --git a/4-binary/04-file/article.md b/4-binary/04-file/article.md index af2671298..20878b650 100644 --- a/4-binary/04-file/article.md +++ b/4-binary/04-file/article.md @@ -1,6 +1,6 @@ # File and FileReader -A [File](https://www.w3.org/TR/FileAPI/#dfn-file) object inherits from `Blob`, but is extended with filesystem-related capabilities. +A [File](https://www.w3.org/TR/FileAPI/#dfn-file) object inherits from `Blob` and is extended with filesystem-related capabilities. There are two ways to obtain it. @@ -10,14 +10,18 @@ First, there's a constructor, similar to `Blob`: new File(fileParts, fileName, [options]) ``` -- **`fileParts`** -- is an array of Blob/BufferSource/String value, same as `Blob`. +- **`fileParts`** -- is an array of Blob/BufferSource/String values. - **`fileName`** -- file name string. - **`options`** -- optional object: - - **`lastModified`** -- a timestamp (integer date) of last modification. + - **`lastModified`** -- the timestamp (integer date) of last modification. -Second, more often we get a file from `<input type="file">` or drag'n'drop or other browser interfaces. Then the file gets these from OS. +Second, more often we get a file from `<input type="file">` or drag'n'drop or other browser interfaces. In that case, the file gets this information from OS. -For instance: +As `File` inherits from `Blob`, `File` objects have the same properties, plus: +- `name` -- the file name, +- `lastModified` -- the timestamp of last modification. + +That's how we can get a `File` object from `<input type="file">`: ```html run <input type="file" onchange="showFile(this)"> @@ -38,9 +42,9 @@ The input may select multiple files, so `input.files` is an array-like object wi ## FileReader -[FileReader](https://www.w3.org/TR/FileAPI/#dfn-filereader) is an object with the sole purpose of reading from `Blob` (and hence `File` too) objects. +[FileReader](https://www.w3.org/TR/FileAPI/#dfn-filereader) is an object with the sole purpose of reading data from `Blob` (and hence `File` too) objects. -It's event based, as reading from disk may take time. +It delivers the data using events, as reading from disk may take time. The constructor: @@ -50,17 +54,23 @@ let reader = new FileReader(); // no arguments The main methods: -- **`readAsArrayBuffer(blob)`** -- read the data as `ArrayBuffer` -- **`readAsText(blob, [encoding])`** -- read the data as a string (encoding is `utf-8` by default) -- **`readAsDataURL(blob)`** -- encode the data as base64 data url. +- **`readAsArrayBuffer(blob)`** -- read the data in binary format `ArrayBuffer`. +- **`readAsText(blob, [encoding])`** -- read the data as a text string with the given encoding (`utf-8` by default). +- **`readAsDataURL(blob)`** -- read the binary data and encode it as base64 data url. - **`abort()`** -- cancel the operation. +The choice of `read*` method depends on which format we prefer, how we're going to use the data. + +- `readAsArrayBuffer` -- for binary files, to do low-level binary operations. For high-level operations, like slicing, `File` inherits from `Blob`, so we can call them directly, without reading. +- `readAsText` -- for text files, when we'd like to get a string. +- `readAsDataURL` -- when we'd like to use this data in `src` for `img` or another tag. There's an alternative to reading a file for that, as discussed in chapter <info:blob>: `URL.createObjectURL(file)`. + As the reading proceeds, there are events: - `loadstart` -- loading started. - `progress` -- occurs during reading. - `load` -- no errors, reading complete. - `abort` -- `abort()` called. -- `error` -- error has occured. +- `error` -- error has occurred. - `loadend` -- reading finished with either success or failure. When the reading is finished, we can access the result as: @@ -95,28 +105,28 @@ function readFile(input) { ``` ```smart header="`FileReader` for blobs" -As mentioned in the chapter <info:blob>, `FileReader` works for any blobs, not just files. +As mentioned in the chapter <info:blob>, `FileReader` can read not just files, but any blobs. -So we can use it to convert a blob to another format: +We can use it to convert a blob to another format: - `readAsArrayBuffer(blob)` -- to `ArrayBuffer`, - `readAsText(blob, [encoding])` -- to string (an alternative to `TextDecoder`), - `readAsDataURL(blob)` -- to base64 data url. ``` -```smart header="`FileReaderSync` is available for workers only" +```smart header="`FileReaderSync` is available inside Web Workers" For Web Workers, there also exists a synchronous variant of `FileReader`, called [FileReaderSync](https://www.w3.org/TR/FileAPI/#FileReaderSync). Its reading methods `read*` do not generate events, but rather return a result, as regular functions do. -That's only inside a Web Worker though, because delays and hang-ups in Web Workers are less important, they do not affect the page. +That's only inside a Web Worker though, because delays in synchronous calls, that are possible while reading from files, in Web Workers are less important. They do not affect the page. ``` ## Summary `File` objects inherit from `Blob`. -In addition to `Blob` methods and properties, `File` objects also have `fileName` and `lastModified` properties, plus the internal ability to read from filesystem. We usually get `File` objects from user input, like `<input>` or drag'n'drop. +In addition to `Blob` methods and properties, `File` objects also have `name` and `lastModified` properties, plus the internal ability to read from filesystem. We usually get `File` objects from user input, like `<input>` or Drag'n'Drop events (`ondragend`). `FileReader` objects can read from a file or a blob, in one of three formats: - String (`readAsText`). @@ -125,4 +135,4 @@ In addition to `Blob` methods and properties, `File` objects also have `fileName In many cases though, we don't have to read the file contents. Just as we did with blobs, we can create a short url with `URL.createObjectURL(file)` and assign it to `<a>` or `<img>`. This way the file can be downloaded or shown up as an image, as a part of canvas etc. -And if we're going to send a `File` over a network, that's also easy, as network API like `XMLHttpRequest` or `fetch` natively accepts `File` objects. +And if we're going to send a `File` over a network, that's also easy: network API like `XMLHttpRequest` or `fetch` natively accepts `File` objects. diff --git a/5-network/01-fetch-basics/article.md b/5-network/01-fetch-basics/article.md deleted file mode 100644 index 783c39962..000000000 --- a/5-network/01-fetch-basics/article.md +++ /dev/null @@ -1,361 +0,0 @@ - -# Fetch: Basics - -Method `fetch()` is the modern way of sending requests over HTTP. - -It evolved for several years and continues to improve, right now the support is pretty solid among browsers. - -The basic syntax is: - -```js -let promise = fetch(url, [options]) -``` - -- **`url`** -- the URL to access. -- **`options`** -- optional parameters: method, headers etc. - -The browser starts the request right away and returns a `promise`. - -Getting a response is usually a two-stage process. - -**The `promise` resolves with an object of the built-in [Response](https://fetch.spec.whatwg.org/#response-class) class as soon as the server responds with headers.** - - -So we can check HTTP status, to see whether it is successful or not, check headers, but don't have the body yet. - -The promise rejects if the `fetch` was unable to make HTTP-request, e.g. network problems, or there's no such site. HTTP-errors, even such as 404 or 500, are considered a normal flow. - -We can see them in response properties: - -- **`ok`** -- boolean, `true` if the HTTP status code is 200-299. -- **`status`** -- HTTP status code. - -For example: - -```js -let response = await fetch(url); - -if (response.ok) { // if HTTP-status is 200-299 - // get the response body (see below) - let json = await response.json(); -} else { - alert("HTTP-Error: " + response.status); -} -``` - -To get the response body, we need to use an additional method call. - -`Response` provides multiple promise-based methods to access the body in various formats: - -- **`response.json()`** -- parse the response as JSON object, -- **`response.text()`** -- return the response as text, -- **`response.formData()`** -- return the response as FormData object (form/multipart encoding), -- **`response.blob()`** -- return the response as [Blob](info:blob) (binary data with type), -- **`response.arrayBuffer()`** -- return the response as [ArrayBuffer](info:arraybuffer-binary-arrays) (pure binary data), -- additionally, `response.body` is a [ReadableStream](https://streams.spec.whatwg.org/#rs-class) object, it allows to read the body chunk-by-chunk, we'll see an example later. - -For instance, here we get a JSON-object with latest commits from GitHub: - -```js run async -let response = await fetch('https://api.github.com/repos/javascript-tutorial/en.javascript.info/commits'); - -*!* -let commits = await response.json(); // read response body and parse as JSON -*/!* - -alert(commits[0].author.login); -``` - -Or, the same using pure promises syntax: - -```js run -fetch('https://api.github.com/repos/javascript-tutorial/en.javascript.info/commits') - .then(response => response.json()) - .then(commits => alert(commits[0].author.login)); -``` - -To get the text: -```js -let text = await response.text(); -``` - -And for the binary example, let's fetch and show an image (see chapter [Blob](info:blob) for details about operations on blobs): - -```js async run -let response = await fetch('/article/fetch/logo-fetch.svg'); - -*!* -let blob = await response.blob(); // download as Blob object -*/!* - -// create <img> for it -let img = document.createElement('img'); -img.style = 'position:fixed;top:10px;left:10px;width:100px'; -document.body.append(img); - -// show it -img.src = URL.createObjectURL(blob); - -setTimeout(() => { // hide after two seconds - img.remove(); - URL.revokeObjectURL(img.src); -}, 2000); -``` - -````warn -We can choose only one body-parsing method. - -If we got the response with `response.text()`, then `response.json()` won't work, as the body content has already been processed. - -```js -let text = await response.text(); // response body consumed -let parsed = await response.json(); // fails (already consumed) -```` - -## Headers - -There's a Map-like headers object in `response.headers`. - -We can get individual headers or iterate over them: - -```js run async -let response = await fetch('https://api.github.com/repos/javascript-tutorial/en.javascript.info/commits'); - -// get one header -alert(response.headers.get('Content-Type')); // application/json; charset=utf-8 - -// iterate over all headers -for (let [key, value] of response.headers) { - alert(`${key} = ${value}`); -} -``` - -To set a header, we can use the `headers` option, like this: - -```js -let response = fetch(protectedUrl, { - headers: { - Authentication: 'abcdef' - } -}); -``` - -...But there's a list of [forbidden HTTP headers](https://fetch.spec.whatwg.org/#forbidden-header-name) that we can't set: - -- `Accept-Charset`, `Accept-Encoding` -- `Access-Control-Request-Headers` -- `Access-Control-Request-Method` -- `Connection` -- `Content-Length` -- `Cookie`, `Cookie2` -- `Date` -- `DNT` -- `Expect` -- `Host` -- `Keep-Alive` -- `Origin` -- `Referer` -- `TE` -- `Trailer` -- `Transfer-Encoding` -- `Upgrade` -- `Via` -- `Proxy-*` -- `Sec-*` - -These headers ensure proper and safe HTTP, so they are controlled exclusively by the browser. - -## POST requests - -To make a `POST` request, or a request with another method, we need to use `fetch` options: - -- **`method`** -- HTTP-method, e.g. `POST`, -- **`body`** -- one of: - - a string (e.g. JSON), - - `FormData` object, to submit the data as `form/multipart`, - - `Blob`/`BufferSource` to send binary data, - - [URLSearchParams](info:url), to submit the data as `x-www-form-urlencoded`, rarely used. - -Let's see examples. - -## Submit JSON - -This code submits a `user` object as JSON: - -```js run async -let user = { - name: 'John', - surname: 'Smith' -}; - -*!* -let response = await fetch('/article/fetch-basics/post/user', { - method: 'POST', - headers: { - 'Content-Type': 'application/json;charset=utf-8' - }, - body: JSON.stringify(user) -}); -*/!* - -let result = await response.json(); -alert(result.message); -``` - -Please note, if the body is a string, then `Content-Type` is set to `text/plain;charset=UTF-8` by default. So we use `headers` option to send `application/json` instead. - -## Submit a form - -Let's do the same with an HTML `<form>`. - - -```html run -<form id="formElem"> - <input type="text" name="name" value="John"> - <input type="text" name="surname" value="Smith"> -</form> - -<script> -(async () => { - let response = await fetch('/article/fetch-basics/post/user', { - method: 'POST', -*!* - body: new FormData(formElem) -*/!* - }); - - let result = await response.json(); - - alert(result.message); -})(); -</script> -``` - -Here [FormData](https://xhr.spec.whatwg.org/#formdata) automatically encodes the form, `<input type="file">` fields are handled also, and sends it using `Content-Type: form/multipart`. - -## Submit an image - -We can also submit binary data directly using `Blob` or `BufferSource`. - -For example, here's a `<canvas>` where we can draw by moving a mouse. A click on the "submit" button sends the image to server: - -```html run autorun height="90" -<body style="margin:0"> - <canvas id="canvasElem" width="100" height="80" style="border:1px solid"></canvas> - - <input type="button" value="Submit" onclick="submit()"> - - <script> - canvasElem.onmousemove = function(e) { - let ctx = canvasElem.getContext('2d'); - ctx.lineTo(e.clientX, e.clientY); - ctx.stroke(); - }; - - async function submit() { - let blob = await new Promise(resolve => canvasElem.toBlob(resolve, 'image/png')); - let response = await fetch('/article/fetch-basics/post/image', { - method: 'POST', - body: blob - }); - let result = await response.json(); - alert(result.message); - } - - </script> -</body> -``` - -Here we also didn't need to set `Content-Type` manually, because a `Blob` object has a built-in type (here `image/png`, as generated by `toBlob`). - -The `submit()` function can be rewritten without `async/await` like this: - -```js -function submit() { - canvasElem.toBlob(function(blob) { - fetch('/article/fetch-basics/post/image', { - method: 'POST', - body: blob - }) - .then(response => response.json()) - .then(result => alert(JSON.stringify(result, null, 2))) - }, 'image/png'); -} -``` - -## Custom FormData with image - -In practice though, it's often more convenient to send an image as a part of the form, with additional fields, such as "name" and other metadata. - -Also, servers are usually more suited to accept multipart-encoded forms, rather than raw binary data. - -```html run autorun height="90" -<body style="margin:0"> - <canvas id="canvasElem" width="100" height="80" style="border:1px solid"></canvas> - - <input type="button" value="Submit" onclick="submit()"> - - <script> - canvasElem.onmousemove = function(e) { - let ctx = canvasElem.getContext('2d'); - ctx.lineTo(e.clientX, e.clientY); - ctx.stroke(); - }; - - async function submit() { - let blob = await new Promise(resolve => canvasElem.toBlob(resolve, 'image/png')); - -*!* - let formData = new FormData(); - formData.append("name", "myImage"); - formData.append("image", blob); -*/!* - - let response = await fetch('/article/fetch-basics/post/image-form', { - method: 'POST', - body: formData - }); - let result = await response.json(); - alert(result.message); - } - - </script> -</body> -``` - -Now, from the server standpoint, the image is a "file" in the form. - -## Summary - -A typical fetch request consists of two `awaits`: - -```js -let response = await fetch(url, options); // resolves with response headers -let result = await response.json(); // read body as json -``` - -Or, promise-style: -```js -fetch(url, options) - .then(response => response.json()) - .then(result => /* process result */) -``` - -Response properties: -- `response.status` -- HTTP code of the response, -- `response.ok` -- `true` is the status is 200-299. -- `response.headers` -- Map-like object with HTTP headers. - -Methods to get response body: -- **`response.json()`** -- parse the response as JSON object, -- **`response.text()`** -- return the response as text, -- **`response.formData()`** -- return the response as FormData object (form/multipart encoding), -- **`response.blob()`** -- return the response as [Blob](info:blob) (binary data with type), -- **`response.arrayBuffer()`** -- return the response as [ArrayBuffer](info:arraybuffer-binary-arrays) (pure binary data), - -Fetch options so far: -- `method` -- HTTP-method, -- `headers` -- an object with request headers (not any header is allowed), -- `body` -- string/FormData/BufferSource/Blob/UrlSearchParams data to submit. - -In the next chapters we'll see more options and use cases. diff --git a/5-network/01-fetch/01-fetch-users/_js.view/solution.js b/5-network/01-fetch/01-fetch-users/_js.view/solution.js new file mode 100644 index 000000000..da448b47a --- /dev/null +++ b/5-network/01-fetch/01-fetch-users/_js.view/solution.js @@ -0,0 +1,24 @@ + +async function getUsers(names) { + let jobs = []; + + for(let name of names) { + let job = fetch(`https://api.github.com/users/${name}`).then( + successResponse => { + if (successResponse.status != 200) { + return null; + } else { + return successResponse.json(); + } + }, + failResponse => { + return null; + } + ); + jobs.push(job); + } + + let results = await Promise.all(jobs); + + return results; +} diff --git a/5-network/01-fetch/01-fetch-users/_js.view/source.js b/5-network/01-fetch/01-fetch-users/_js.view/source.js new file mode 100644 index 000000000..0c62e7bb5 --- /dev/null +++ b/5-network/01-fetch/01-fetch-users/_js.view/source.js @@ -0,0 +1,4 @@ + +async function getUsers(names) { + /* your code */ +} diff --git a/5-network/01-fetch/01-fetch-users/_js.view/test.js b/5-network/01-fetch/01-fetch-users/_js.view/test.js new file mode 100644 index 000000000..95eaf876e --- /dev/null +++ b/5-network/01-fetch/01-fetch-users/_js.view/test.js @@ -0,0 +1,10 @@ +describe("getUsers", function() { + + it("gets users from GitHub", async function() { + let users = await getUsers(['iliakan', 'remy', 'no.such.users']); + assert.equal(users[0].login, 'iliakan'); + assert.equal(users[1].login, 'remy'); + assert.equal(users[2], null); + }); + +}); diff --git a/5-network/01-fetch/01-fetch-users/solution.md b/5-network/01-fetch/01-fetch-users/solution.md new file mode 100644 index 000000000..3cb88e4ea --- /dev/null +++ b/5-network/01-fetch/01-fetch-users/solution.md @@ -0,0 +1,40 @@ + +To fetch a user we need: `fetch('https://api.github.com/users/USERNAME')`. + +If the response has status `200`, call `.json()` to read the JS object. + +Otherwise, if a `fetch` fails, or the response has non-200 status, we just return `null` in the resulting array. + +So here's the code: + +```js demo +async function getUsers(names) { + let jobs = []; + + for(let name of names) { + let job = fetch(`https://api.github.com/users/${name}`).then( + successResponse => { + if (successResponse.status != 200) { + return null; + } else { + return successResponse.json(); + } + }, + failResponse => { + return null; + } + ); + jobs.push(job); + } + + let results = await Promise.all(jobs); + + return results; +} +``` + +Please note: `.then` call is attached directly to `fetch`, so that when we have the response, it doesn't wait for other fetches, but starts to read `.json()` immediately. + +If we used `await Promise.all(names.map(name => fetch(...)))`, and call `.json()` on the results, then it would wait for all fetches to respond. By adding `.json()` directly to each `fetch`, we ensure that individual fetches start reading data as JSON without waiting for each other. + +That's an example of how low-level Promise API can still be useful even if we mainly use `async/await`. diff --git a/5-network/01-fetch/01-fetch-users/task.md b/5-network/01-fetch/01-fetch-users/task.md new file mode 100644 index 000000000..4605b4955 --- /dev/null +++ b/5-network/01-fetch/01-fetch-users/task.md @@ -0,0 +1,13 @@ +# Fetch users from GitHub + +Create an async function `getUsers(names)`, that gets an array of GitHub logins, fetches the users from GitHub and returns an array of GitHub users. + +The GitHub url with user information for the given `USERNAME` is: `https://api.github.com/users/USERNAME`. + +There's a test example in the sandbox. + +Important details: + +1. There should be one `fetch` request per user. +2. Requests shouldn't wait for each other. So that the data arrives as soon as possible. +3. If any request fails, or if there's no such user, the function should return `null` in the resulting array. diff --git a/5-network/01-fetch/article.md b/5-network/01-fetch/article.md new file mode 100644 index 000000000..4669fc451 --- /dev/null +++ b/5-network/01-fetch/article.md @@ -0,0 +1,316 @@ + +# Fetch + +JavaScript can send network requests to the server and load new information whenever it's needed. + +For example, we can use a network request to: + +- Submit an order, +- Load user information, +- Receive latest updates from the server, +- ...etc. + +...And all of that without reloading the page! + +There's an umbrella term "AJAX" (abbreviated <b>A</b>synchronous <b>J</b>avaScript <b>A</b>nd <b>X</b>ML) for network requests from JavaScript. We don't have to use XML though: the term comes from old times, that's why that word is there. You may have heard that term already. + +There are multiple ways to send a network request and get information from the server. + +The `fetch()` method is modern and versatile, so we'll start with it. It's not supported by old browsers (can be polyfilled), but very well supported among the modern ones. + +The basic syntax is: + +```js +let promise = fetch(url, [options]) +``` + +- **`url`** -- the URL to access. +- **`options`** -- optional parameters: method, headers etc. + +Without `options`, this is a simple GET request, downloading the contents of the `url`. + +The browser starts the request right away and returns a promise that the calling code should use to get the result. + +Getting a response is usually a two-stage process. + +**First, the `promise`, returned by `fetch`, resolves with an object of the built-in [Response](https://fetch.spec.whatwg.org/#response-class) class as soon as the server responds with headers.** + +At this stage we can check HTTP status, to see whether it is successful or not, check headers, but don't have the body yet. + +The promise rejects if the `fetch` was unable to make HTTP-request, e.g. network problems, or there's no such site. Abnormal HTTP-statuses, such as 404 or 500 do not cause an error. + +We can see HTTP-status in response properties: + +- **`status`** -- HTTP status code, e.g. 200. +- **`ok`** -- boolean, `true` if the HTTP status code is 200-299. + +For example: + +```js +let response = await fetch(url); + +if (response.ok) { // if HTTP-status is 200-299 + // get the response body (the method explained below) + let json = await response.json(); +} else { + alert("HTTP-Error: " + response.status); +} +``` + +**Second, to get the response body, we need to use an additional method call.** + +`Response` provides multiple promise-based methods to access the body in various formats: + +- **`response.text()`** -- read the response and return as text, +- **`response.json()`** -- parse the response as JSON, +- **`response.formData()`** -- return the response as `FormData` object (explained in the [next chapter](info:formdata)), +- **`response.blob()`** -- return the response as [Blob](info:blob) (binary data with type), +- **`response.arrayBuffer()`** -- return the response as [ArrayBuffer](info:arraybuffer-binary-arrays) (low-level representation of binary data), +- additionally, `response.body` is a [ReadableStream](https://streams.spec.whatwg.org/#rs-class) object, it allows you to read the body chunk-by-chunk, we'll see an example later. + +For instance, let's get a JSON-object with latest commits from GitHub: + +```js run async +let url = 'https://api.github.com/repos/javascript-tutorial/en.javascript.info/commits'; +let response = await fetch(url); + +*!* +let commits = await response.json(); // read response body and parse as JSON +*/!* + +alert(commits[0].author.login); +``` + +Or, the same without `await`, using pure promises syntax: + +```js run +fetch('https://api.github.com/repos/javascript-tutorial/en.javascript.info/commits') + .then(response => response.json()) + .then(commits => alert(commits[0].author.login)); +``` + +To get the response text, `await response.text()` instead of `.json()`: + +```js run async +let response = await fetch('https://api.github.com/repos/javascript-tutorial/en.javascript.info/commits'); + +let text = await response.text(); // read response body as text + +alert(text.slice(0, 80) + '...'); +``` + +As a show-case for reading in binary format, let's fetch and show a logo image of ["fetch" specification](https://fetch.spec.whatwg.org) (see chapter [Blob](info:blob) for details about operations on `Blob`): + +```js async run +let response = await fetch('/article/fetch/logo-fetch.svg'); + +*!* +let blob = await response.blob(); // download as Blob object +*/!* + +// create <img> for it +let img = document.createElement('img'); +img.style = 'position:fixed;top:10px;left:10px;width:100px'; +document.body.append(img); + +// show it +img.src = URL.createObjectURL(blob); + +setTimeout(() => { // hide after three seconds + img.remove(); + URL.revokeObjectURL(img.src); +}, 3000); +``` + +````warn +We can choose only one body-reading method. + +If we've already got the response with `response.text()`, then `response.json()` won't work, as the body content has already been processed. + +```js +let text = await response.text(); // response body consumed +let parsed = await response.json(); // fails (already consumed) +``` +```` + +## Response headers + +The response headers are available in a Map-like headers object in `response.headers`. + +It's not exactly a Map, but it has similar methods to get individual headers by name or iterate over them: + +```js run async +let response = await fetch('https://api.github.com/repos/javascript-tutorial/en.javascript.info/commits'); + +// get one header +alert(response.headers.get('Content-Type')); // application/json; charset=utf-8 + +// iterate over all headers +for (let [key, value] of response.headers) { + alert(`${key} = ${value}`); +} +``` + +## Request headers + +To set a request header in `fetch`, we can use the `headers` option. It has an object with outgoing headers, like this: + +```js +let response = fetch(protectedUrl, { + headers: { + Authentication: 'secret' + } +}); +``` + +...But there's a list of [forbidden HTTP headers](https://fetch.spec.whatwg.org/#forbidden-header-name) that we can't set: + +- `Accept-Charset`, `Accept-Encoding` +- `Access-Control-Request-Headers` +- `Access-Control-Request-Method` +- `Connection` +- `Content-Length` +- `Cookie`, `Cookie2` +- `Date` +- `DNT` +- `Expect` +- `Host` +- `Keep-Alive` +- `Origin` +- `Referer` +- `TE` +- `Trailer` +- `Transfer-Encoding` +- `Upgrade` +- `Via` +- `Proxy-*` +- `Sec-*` + +These headers ensure proper and safe HTTP, so they are controlled exclusively by the browser. + +## POST requests + +To make a `POST` request, or a request with another method, we need to use `fetch` options: + +- **`method`** -- HTTP-method, e.g. `POST`, +- **`body`** -- the request body, one of: + - a string (e.g. JSON-encoded), + - `FormData` object, to submit the data as `multipart/form-data`, + - `Blob`/`BufferSource` to send binary data, + - [URLSearchParams](info:url), to submit the data in `x-www-form-urlencoded` encoding, rarely used. + +The JSON format is used most of the time. + +For example, this code submits `user` object as JSON: + +```js run async +let user = { + name: 'John', + surname: 'Smith' +}; + +*!* +let response = await fetch('/article/fetch/post/user', { + method: 'POST', + headers: { + 'Content-Type': 'application/json;charset=utf-8' + }, + body: JSON.stringify(user) +}); +*/!* + +let result = await response.json(); +alert(result.message); +``` + +Please note, if the request `body` is a string, then `Content-Type` header is set to `text/plain;charset=UTF-8` by default. + +But, as we're going to send JSON, we use `headers` option to send `application/json` instead, the correct `Content-Type` for JSON-encoded data. + +## Sending an image + +We can also submit binary data with `fetch` using `Blob` or `BufferSource` objects. + +In this example, there's a `<canvas>` where we can draw by moving a mouse over it. A click on the "submit" button sends the image to the server: + +```html run autorun height="90" +<body style="margin:0"> + <canvas id="canvasElem" width="100" height="80" style="border:1px solid"></canvas> + + <input type="button" value="Submit" onclick="submit()"> + + <script> + canvasElem.onmousemove = function(e) { + let ctx = canvasElem.getContext('2d'); + ctx.lineTo(e.clientX, e.clientY); + ctx.stroke(); + }; + + async function submit() { + let blob = await new Promise(resolve => canvasElem.toBlob(resolve, 'image/png')); + let response = await fetch('/article/fetch/post/image', { + method: 'POST', + body: blob + }); + + // the server responds with confirmation and the image size + let result = await response.json(); + alert(result.message); + } + + </script> +</body> +``` + +Please note, here we don't set `Content-Type` header manually, because a `Blob` object has a built-in type (here `image/png`, as generated by `toBlob`). For `Blob` objects that type becomes the value of `Content-Type`. + +The `submit()` function can be rewritten without `async/await` like this: + +```js +function submit() { + canvasElem.toBlob(function(blob) { + fetch('/article/fetch/post/image', { + method: 'POST', + body: blob + }) + .then(response => response.json()) + .then(result => alert(JSON.stringify(result, null, 2))) + }, 'image/png'); +} +``` + +## Summary + +A typical fetch request consists of two `await` calls: + +```js +let response = await fetch(url, options); // resolves with response headers +let result = await response.json(); // read body as json +``` + +Or, without `await`: + +```js +fetch(url, options) + .then(response => response.json()) + .then(result => /* process result */) +``` + +Response properties: +- `response.status` -- HTTP code of the response, +- `response.ok` -- `true` if the status is 200-299. +- `response.headers` -- Map-like object with HTTP headers. + +Methods to get response body: +- **`response.text()`** -- return the response as text, +- **`response.json()`** -- parse the response as JSON object, +- **`response.formData()`** -- return the response as `FormData` object (`multipart/form-data` encoding, see the next chapter), +- **`response.blob()`** -- return the response as [Blob](info:blob) (binary data with type), +- **`response.arrayBuffer()`** -- return the response as [ArrayBuffer](info:arraybuffer-binary-arrays) (low-level binary data), + +Fetch options so far: +- `method` -- HTTP-method, +- `headers` -- an object with request headers (not any header is allowed), +- `body` -- the data to send (request body) as `string`, `FormData`, `BufferSource`, `Blob` or `UrlSearchParams` object. + +In the next chapters we'll see more options and use cases of `fetch`. diff --git a/5-network/01-fetch-basics/logo-fetch.svg b/5-network/01-fetch/logo-fetch.svg similarity index 100% rename from 5-network/01-fetch-basics/logo-fetch.svg rename to 5-network/01-fetch/logo-fetch.svg diff --git a/5-network/01-fetch-basics/post.view/server.js b/5-network/01-fetch/post.view/server.js similarity index 55% rename from 5-network/01-fetch-basics/post.view/server.js rename to 5-network/01-fetch/post.view/server.js index 18610676a..b55870b2a 100644 --- a/5-network/01-fetch-basics/post.view/server.js +++ b/5-network/01-fetch/post.view/server.js @@ -2,7 +2,6 @@ const Koa = require('koa'); const app = new Koa(); const bodyParser = require('koa-bodyparser'); const getRawBody = require('raw-body') -const busboy = require('async-busboy'); const Router = require('koa-router'); let router = new Router(); @@ -22,28 +21,6 @@ router.post('/image', async (ctx) => { }; }); -router.post('/image-form', async (ctx) => { - - let files = []; - const { fields } = await busboy(ctx.req, { - onFile(fieldname, file, filename, encoding, mimetype) { - // read all file stream to continue - getRawBody(file, { limit: '1mb'}).then(body => { - files.push({ - fieldname, - filename, - length: body.length - }); - }) - - } - }); - - ctx.body = { - message: `Image saved, name: ${fields.name}, size:${files[0].length}.` - }; -}); - app .use(bodyParser()) .use(router.routes()) diff --git a/5-network/02-fetch-progress/article.md b/5-network/02-fetch-progress/article.md deleted file mode 100644 index e7e945f66..000000000 --- a/5-network/02-fetch-progress/article.md +++ /dev/null @@ -1,104 +0,0 @@ - -# Fetch: Download progress - -Fetch allows to track download progress, but not upload progress. - -Please note: there's currently no way for fetch to track upload progress. For that purpose, please use [XMLHttpRequest](info:xmlhttprequest). - -To track download progress, we can use `response.body` property. It's a "readable stream" -- a special object that provides body chunk-by-chunk, as it comes, so we can see how much is available at the moment. - -Here's the sketch of code that uses it to read response: - -```js -// instead of response.json() and other methods -const reader = response.body.getReader(); - -// infinite loop while the body is downloading -while(true) { - // done is true for the last chunk - // value is Uint8Array of the chunk bytes - const {done, value} = await reader.read(); - - if (done) { - break; - } - - console.log(`Received ${value.length} bytes`) -} -``` - -So, we loop, while `await reader.read()` returns response chunks. - -A chunk has two properties: -- **`done`** -- true when the reading is complete. -- **`value`** -- a typed array of bytes: `Uint8Array`. - -To log the progress, we just need to count chunks. - -Here's the full code to get response and log the progress, more explanations follow: - -```js run async -// Step 1: start the fetch and obtain a reader -let response = await fetch('https://api.github.com/repos/javascript-tutorial/en.javascript.info/commits?per_page=100'); - -const reader = response.body.getReader(); - -// Step 2: get total length -const contentLength = +response.headers.get('Content-Length'); - -// Step 3: read the data -let receivedLength = 0; // length at the moment -let chunks = []; // array of received binary chunks (comprises the body) -while(true) { - const {done, value} = await reader.read(); - - if (done) { - break; - } - - chunks.push(value); - receivedLength += value.length; - - console.log(`Received ${receivedLength} of ${contentLength}`) -} - -// Step 4: concatenate chunks into single Uint8Array -let chunksAll = new Uint8Array(receivedLength); // (4.1) -let position = 0; -for(let chunk of chunks) { - chunksAll.set(chunk, position); // (4.2) - position += chunk.length; -} - -// Step 5: decode into a string -let result = new TextDecoder("utf-8").decode(chunksAll); - -// We're done! -let commits = JSON.parse(result); -alert(commits[0].author.login); -``` - -Let's explain that step-by-step: - -1. We perform `fetch` as usual, but instead of calling `response.json()`, we obtain a stream reader `response.body.getReader()`. - - Please note, we can't use both these methods to read the same response. Either use a reader or a response method to get the result. -2. Prior to reading, we can figure out the full response length from the `Content-Length` header. - - It may be absent for cross-domain requests (see chapter <info:fetch-crossorigin>) and, well, technically a server doesn't have to set it. But usually it's at place. -3. Call `await reader.read()` until it's done. - - We gather response `chunks` in the array. That's important, because after the response is consumed, we won't be able to "re-read" it using `response.json()` or another way (you can try, there'll be an error). -4. At the end, we have `chunks` -- an array of `Uint8Array` byte chunks. We need to join them into a single result. Unfortunately, there's no single method that concatenates those, so there's some code to do that: - 1. We create `new Uint8Array(receivedLength)` -- a same-typed array with the combined length. - 2. Then use `.set(chunk, position)` method to copy each `chunk` one after another in the resulting array. -5. We have the result in `chunksAll`. It's a byte array though, not a string. - - To create a string, we need to interpret these bytes. The built-in [TextDecoder](info:text-decoder) does exactly that. Then we can `JSON.parse` it. - -What if we need binary content instead of JSON? That's even simpler. Instead of steps 4 and 5, we could make a blob of all chunks: -```js -let blob = new Blob(chunks); -``` - -Once again, please note, that's not for upload progress (no way now), only for download progress. diff --git a/5-network/02-formdata/article.md b/5-network/02-formdata/article.md new file mode 100644 index 000000000..a73d554b1 --- /dev/null +++ b/5-network/02-formdata/article.md @@ -0,0 +1,189 @@ + +# FormData + +This chapter is about sending HTML forms: with or without files, with additional fields and so on. + +[FormData](https://xhr.spec.whatwg.org/#interface-formdata) objects can help with that. As you might have guessed, it's the object to represent HTML form data. + +The constructor is: +```js +let formData = new FormData([form]); +``` + +If HTML `form` element is provided, it automatically captures its fields. + +The special thing about `FormData` is that network methods, such as `fetch`, can accept a `FormData` object as a body. It's encoded and sent out with `Content-Type: multipart/form-data`. + +From the server point of view, that looks like a usual form submission. + +## Sending a simple form + +Let's send a simple form first. + +As you can see, that's almost one-liner: + +```html run autorun +<form id="formElem"> + <input type="text" name="name" value="John"> + <input type="text" name="surname" value="Smith"> + <input type="submit"> +</form> + +<script> + formElem.onsubmit = async (e) => { + e.preventDefault(); + + let response = await fetch('/article/formdata/post/user', { + method: 'POST', +*!* + body: new FormData(formElem) +*/!* + }); + + let result = await response.json(); + + alert(result.message); + }; +</script> +``` + +In this example, the server code is not presented, as it's beyond our scope. The server accepts the POST request and replies "User saved". + +## FormData Methods + +We can modify fields in `FormData` with methods: + +- `formData.append(name, value)` - add a form field with the given `name` and `value`, +- `formData.append(name, blob, fileName)` - add a field as if it were `<input type="file">`, the third argument `fileName` sets file name (not form field name), as it were a name of the file in user's filesystem, +- `formData.delete(name)` - remove the field with the given `name`, +- `formData.get(name)` - get the value of the field with the given `name`, +- `formData.has(name)` - if there exists a field with the given `name`, returns `true`, otherwise `false` + +A form is technically allowed to have many fields with the same `name`, so multiple calls to `append` add more same-named fields. + +There's also method `set`, with the same syntax as `append`. The difference is that `.set` removes all fields with the given `name`, and then appends a new field. So it makes sure there's only one field with such `name`, the rest is just like `append`: + +- `formData.set(name, value)`, +- `formData.set(name, blob, fileName)`. + +Also we can iterate over formData fields using `for..of` loop: + +```js run +let formData = new FormData(); +formData.append('key1', 'value1'); +formData.append('key2', 'value2'); + +// List key/value pairs +for(let [name, value] of formData) { + alert(`${name} = ${value}`); // key1 = value1, then key2 = value2 +} +``` + +## Sending a form with a file + +The form is always sent as `Content-Type: multipart/form-data`, this encoding allows to send files. So, `<input type="file">` fields are sent also, similar to a usual form submission. + +Here's an example with such form: + +```html run autorun +<form id="formElem"> + <input type="text" name="firstName" value="John"> + Picture: <input type="file" name="picture" accept="image/*"> + <input type="submit"> +</form> + +<script> + formElem.onsubmit = async (e) => { + e.preventDefault(); + + let response = await fetch('/article/formdata/post/user-avatar', { + method: 'POST', +*!* + body: new FormData(formElem) +*/!* + }); + + let result = await response.json(); + + alert(result.message); + }; +</script> +``` + +## Sending a form with Blob data + +As we've seen in the chapter <info:fetch>, it's easy to send dynamically generated binary data e.g. an image, as `Blob`. We can supply it directly as `fetch` parameter `body`. + +In practice though, it's often convenient to send an image not separately, but as a part of the form, with additional fields, such as "name" and other metadata. + +Also, servers are usually more suited to accept multipart-encoded forms, rather than raw binary data. + +This example submits an image from `<canvas>`, along with some other fields, as a form, using `FormData`: + +```html run autorun height="90" +<body style="margin:0"> + <canvas id="canvasElem" width="100" height="80" style="border:1px solid"></canvas> + + <input type="button" value="Submit" onclick="submit()"> + + <script> + canvasElem.onmousemove = function(e) { + let ctx = canvasElem.getContext('2d'); + ctx.lineTo(e.clientX, e.clientY); + ctx.stroke(); + }; + + async function submit() { + let imageBlob = await new Promise(resolve => canvasElem.toBlob(resolve, 'image/png')); + +*!* + let formData = new FormData(); + formData.append("firstName", "John"); + formData.append("image", imageBlob, "image.png"); +*/!* + + let response = await fetch('/article/formdata/post/image-form', { + method: 'POST', + body: formData + }); + let result = await response.json(); + alert(result.message); + } + + </script> +</body> +``` + +Please note how the image `Blob` is added: + +```js +formData.append("image", imageBlob, "image.png"); +``` + +That's same as if there were `<input type="file" name="image">` in the form, and the visitor submitted a file named `"image.png"` (3rd argument) with the data `imageBlob` (2nd argument) from their filesystem. + +The server reads form data and the file, as if it were a regular form submission. + +## Summary + +[FormData](https://xhr.spec.whatwg.org/#interface-formdata) objects are used to capture HTML form and submit it using `fetch` or another network method. + +We can either create `new FormData(form)` from an HTML form, or create an object without a form at all, and then append fields with methods: + +- `formData.append(name, value)` +- `formData.append(name, blob, fileName)` +- `formData.set(name, value)` +- `formData.set(name, blob, fileName)` + +Let's note two peculiarities here: + +1. The `set` method removes fields with the same name, `append` doesn't. That's the only difference between them. +2. To send a file, 3-argument syntax is needed, the last argument is a file name, that normally is taken from user filesystem for `<input type="file">`. + +Other methods are: + +- `formData.delete(name)` +- `formData.get(name)` +- `formData.has(name)` + +That's it! diff --git a/5-network/02-formdata/post.view/server.js b/5-network/02-formdata/post.view/server.js new file mode 100644 index 000000000..a335b07b1 --- /dev/null +++ b/5-network/02-formdata/post.view/server.js @@ -0,0 +1,78 @@ +const Koa = require('koa'); +const app = new Koa(); +const bodyParser = require('koa-bodyparser'); +const getRawBody = require('raw-body') +const busboy = require('async-busboy'); +const Router = require('koa-router'); + +let router = new Router(); + +router.post('/user', async (ctx) => { + ctx.body = { + message: "User saved" + }; +}); + +router.post('/image-form', async (ctx) => { + + let files = []; + const { fields } = await busboy(ctx.req, { + onFile(fieldname, file, filename, encoding, mimetype) { + // read all file stream to continue + let length = 0; + file.on('data', function(data) { + length += data.length; + }); + file.on('end', () => { + files.push({ + fieldname, + filename, + length + }); + }); + } + }); + + ctx.body = { + message: `Image saved, firstName: ${fields.firstName}, Image size:${files[0].length}, fileName: ${files[0].filename}` + }; +}); + + +router.post('/user-avatar', async (ctx) => { + + let files = []; + const { fields } = await busboy(ctx.req, { + onFile(fieldname, file, filename, encoding, mimetype) { + // read all file stream to continue + let length = 0; + file.on('data', function(data) { + length += data.length; + }); + file.on('end', () => { + files.push({ + fieldname, + filename, + length + }); + }); + + } + }); + + ctx.body = { + message: `User with picture, firstName: ${fields.firstName}, picture size:${files[0].length}` + }; +}); + +app + .use(bodyParser()) + .use(router.routes()) + .use(router.allowedMethods()); + + +if (!module.parent) { + http.createServer(app.callback()).listen(8080); +} else { + exports.accept = app.callback(); +} diff --git a/5-network/03-fetch-abort/article.md b/5-network/03-fetch-abort/article.md deleted file mode 100644 index 3e6f4cb42..000000000 --- a/5-network/03-fetch-abort/article.md +++ /dev/null @@ -1,110 +0,0 @@ - -# Fetch: Abort - -Aborting a `fetch` is a little bit tricky. Remember, `fetch` returns a promise. And JavaScript generally has no concept of "aborting" a promise. So how can we cancel a fetch? - -There's a special built-in object for such purposes: `AbortController`. - -The usage is pretty simple: - -- Step 1: create a controller: - - ```js - let controller = new AbortController(); - ``` - - A controller is an extremely simple object. It has a single method `abort()`, and a single property `signal`. When `abort()` is called, the `abort` event triggers on `controller.signal`: - - Like this: - - ```js run - let controller = new AbortController(); - let signal = controller.signal; - - // triggers when controller.abort() is called - signal.addEventListener('abort', () => alert("abort!")); - - controller.abort(); // abort! - - alert(signal.aborted); // true (after abort) - ``` - -- Step 2: pass the `signal` property to `fetch` option: - - ```js - let controller = new AbortController(); - fetch(url, { - signal: controller.signal - }); - ``` - - Now `fetch` listens to the signal. - -- Step 3: to abort, call `controller.abort()`: - - ```js - controller.abort(); - ``` - - We're done: `fetch` gets the event from `signal` and aborts the request. - -When a fetch is aborted, its promise rejects with an error named `AbortError`, so we should handle it: - -```js run async -// abort in 1 second -let controller = new AbortController(); -setTimeout(() => controller.abort(), 1000); - -try { - let response = await fetch('/article/fetch-abort/demo/hang', { - signal: controller.signal - }); -} catch(err) { - if (err.name == 'AbortError') { // handle abort() - alert("Aborted!"); - } else { - throw err; - } -} -``` - -**`AbortController` is scalable, it allows to cancel multiple fetches at once.** - -For instance, here we fetch many `urls` in parallel, and the controller aborts them all: - -```js -let urls = [...]; // a list of urls to fetch in parallel - -let controller = new AbortController(); - -let fetchJobs = urls.map(url => fetch(url, { - signal: controller.signal -})); - -let results = await Promise.all(fetchJobs); - -// from elsewhere: -// controller.abort() stops all fetches -``` - -If we have our own jobs, different from `fetch`, we can use a single `AbortController` to stop those, together with fetches. - - -```js -let urls = [...]; -let controller = new AbortController(); - -let ourJob = new Promise((resolve, reject) => { - ... - controller.signal.addEventListener('abort', reject); -}); - -let fetchJobs = urls.map(url => fetch(url, { - signal: controller.signal -})); - -let results = await Promise.all([...fetchJobs, ourJob]); - -// from elsewhere: -// controller.abort() stops all fetches and ourJob -``` diff --git a/5-network/03-fetch-progress/article.md b/5-network/03-fetch-progress/article.md new file mode 100644 index 000000000..76b05d514 --- /dev/null +++ b/5-network/03-fetch-progress/article.md @@ -0,0 +1,114 @@ + +# Fetch: Download progress + +The `fetch` method allows to track *download* progress. + +Please note: there's currently no way for `fetch` to track *upload* progress. For that purpose, please use [XMLHttpRequest](info:xmlhttprequest), we'll cover it later. + +To track download progress, we can use `response.body` property. It's a `ReadableStream` -- a special object that provides body chunk-by-chunk, as it comes. Readable streams are described in the [Streams API](https://streams.spec.whatwg.org/#rs-class) specification. + +Unlike `response.text()`, `response.json()` and other methods, `response.body` gives full control over the reading process, and we can count how much is consumed at any moment. + +Here's the sketch of code that reads the response from `response.body`: + +```js +// instead of response.json() and other methods +const reader = response.body.getReader(); + +// infinite loop while the body is downloading +while(true) { + // done is true for the last chunk + // value is Uint8Array of the chunk bytes + const {done, value} = await reader.read(); + + if (done) { + break; + } + + console.log(`Received ${value.length} bytes`) +} +``` + +The result of `await reader.read()` call is an object with two properties: +- **`done`** -- `true` when the reading is complete, otherwise `false`. +- **`value`** -- a typed array of bytes: `Uint8Array`. + +```smart +Streams API also describes asynchronous iteration over `ReadableStream` with `for await..of` loop, but it's not yet widely supported (see [browser issues](https://github.com/whatwg/streams/issues/778#issuecomment-461341033)), so we use `while` loop. +``` + +We receive response chunks in the loop, until the loading finishes, that is: until `done` becomes `true`. + +To log the progress, we just need for every received fragment `value` to add its length to the counter. + +Here's the full working example that gets the response and logs the progress in console, more explanations to follow: + +```js run async +// Step 1: start the fetch and obtain a reader +let response = await fetch('https://api.github.com/repos/javascript-tutorial/en.javascript.info/commits?per_page=100'); + +const reader = response.body.getReader(); + +// Step 2: get total length +const contentLength = +response.headers.get('Content-Length'); + +// Step 3: read the data +let receivedLength = 0; // received that many bytes at the moment +let chunks = []; // array of received binary chunks (comprises the body) +while(true) { + const {done, value} = await reader.read(); + + if (done) { + break; + } + + chunks.push(value); + receivedLength += value.length; + + console.log(`Received ${receivedLength} of ${contentLength}`) +} + +// Step 4: concatenate chunks into single Uint8Array +let chunksAll = new Uint8Array(receivedLength); // (4.1) +let position = 0; +for(let chunk of chunks) { + chunksAll.set(chunk, position); // (4.2) + position += chunk.length; +} + +// Step 5: decode into a string +let result = new TextDecoder("utf-8").decode(chunksAll); + +// We're done! +let commits = JSON.parse(result); +alert(commits[0].author.login); +``` + +Let's explain that step-by-step: + +1. We perform `fetch` as usual, but instead of calling `response.json()`, we obtain a stream reader `response.body.getReader()`. + + Please note, we can't use both these methods to read the same response: either use a reader or a response method to get the result. +2. Prior to reading, we can figure out the full response length from the `Content-Length` header. + + It may be absent for cross-origin requests (see chapter <info:fetch-crossorigin>) and, well, technically a server doesn't have to set it. But usually it's at place. +3. Call `await reader.read()` until it's done. + + We gather response chunks in the array `chunks`. That's important, because after the response is consumed, we won't be able to "re-read" it using `response.json()` or another way (you can try, there'll be an error). +4. At the end, we have `chunks` -- an array of `Uint8Array` byte chunks. We need to join them into a single result. Unfortunately, there's no single method that concatenates those, so there's some code to do that: + 1. We create `chunksAll = new Uint8Array(receivedLength)` -- a same-typed array with the combined length. + 2. Then use `.set(chunk, position)` method to copy each `chunk` one after another in it. +5. We have the result in `chunksAll`. It's a byte array though, not a string. + + To create a string, we need to interpret these bytes. The built-in [TextDecoder](info:text-decoder) does exactly that. Then we can `JSON.parse` it, if necessary. + + What if we need binary content instead of a string? That's even simpler. Replace steps 4 and 5 with a single line that creates a `Blob` from all chunks: + ```js + let blob = new Blob(chunks); + ``` + +At the end we have the result (as a string or a blob, whatever is convenient), and progress-tracking in the process. + +Once again, please note, that's not for *upload* progress (no way now with `fetch`), only for *download* progress. + +Also, if the size is unknown, we should check `receivedLength` in the loop and break it once it reaches a certain limit. So that the `chunks` won't overflow the memory. diff --git a/5-network/02-fetch-progress/logo-fetch.svg b/5-network/03-fetch-progress/logo-fetch.svg similarity index 100% rename from 5-network/02-fetch-progress/logo-fetch.svg rename to 5-network/03-fetch-progress/logo-fetch.svg diff --git a/5-network/02-fetch-progress/progress.view/index.html b/5-network/03-fetch-progress/progress.view/index.html similarity index 100% rename from 5-network/02-fetch-progress/progress.view/index.html rename to 5-network/03-fetch-progress/progress.view/index.html diff --git a/5-network/02-fetch-progress/progress.view/long.txt b/5-network/03-fetch-progress/progress.view/long.txt similarity index 100% rename from 5-network/02-fetch-progress/progress.view/long.txt rename to 5-network/03-fetch-progress/progress.view/long.txt diff --git a/5-network/04-fetch-abort/article.md b/5-network/04-fetch-abort/article.md new file mode 100644 index 000000000..eadc5aac2 --- /dev/null +++ b/5-network/04-fetch-abort/article.md @@ -0,0 +1,148 @@ + +# Fetch: Abort + +As we know, `fetch` returns a promise. And JavaScript generally has no concept of "aborting" a promise. So how can we cancel an ongoing `fetch`? E.g. if the user actions on our site indicate that the `fetch` isn't needed any more. + +There's a special built-in object for such purposes: `AbortController`. It can be used to abort not only `fetch`, but other asynchronous tasks as well. + +The usage is very straightforward: + +## The AbortController object + +Create a controller: + +```js +let controller = new AbortController(); +``` + +A controller is an extremely simple object. + +- It has a single method `abort()`, +- And a single property `signal` that allows to set event listeners on it. + +When `abort()` is called: +- `controller.signal` emits the `"abort"` event. +- `controller.signal.aborted` property becomes `true`. + +Generally, we have two parties in the process: +1. The one that performs a cancelable operation, it sets a listener on `controller.signal`. +2. The one that cancels: it calls `controller.abort()` when needed. + +Here's the full example (without `fetch` yet): + +```js run +let controller = new AbortController(); +let signal = controller.signal; + +// The party that performs a cancelable operation +// gets the "signal" object +// and sets the listener to trigger when controller.abort() is called +signal.addEventListener('abort', () => alert("abort!")); + +// The other party, that cancels (at any point later): +controller.abort(); // abort! + +// The event triggers and signal.aborted becomes true +alert(signal.aborted); // true +``` + +As we can see, `AbortController` is just a mean to pass `abort` events when `abort()` is called on it. + +We could implement the same kind of event listening in our code on our own, without the `AbortController` object. + +But what's valuable is that `fetch` knows how to work with the `AbortController` object. It's integrated in it. + +## Using with fetch + +To be able to cancel `fetch`, pass the `signal` property of an `AbortController` as a `fetch` option: + +```js +let controller = new AbortController(); +fetch(url, { + signal: controller.signal +}); +``` + +The `fetch` method knows how to work with `AbortController`. It will listen to `abort` events on `signal`. + +Now, to abort, call `controller.abort()`: + +```js +controller.abort(); +``` + +We're done: `fetch` gets the event from `signal` and aborts the request. + +When a fetch is aborted, its promise rejects with an error `AbortError`, so we should handle it, e.g. in `try..catch`. + +Here's the full example with `fetch` aborted after 1 second: + +```js run async +// abort in 1 second +let controller = new AbortController(); +setTimeout(() => controller.abort(), 1000); + +try { + let response = await fetch('/article/fetch-abort/demo/hang', { + signal: controller.signal + }); +} catch(err) { + if (err.name == 'AbortError') { // handle abort() + alert("Aborted!"); + } else { + throw err; + } +} +``` + +## AbortController is scalable + +`AbortController` is scalable. It allows to cancel multiple fetches at once. + +Here's a sketch of code that fetches many `urls` in parallel, and uses a single controller to abort them all: + +```js +let urls = [...]; // a list of urls to fetch in parallel + +let controller = new AbortController(); + +// an array of fetch promises +let fetchJobs = urls.map(url => fetch(url, { + signal: controller.signal +})); + +let results = await Promise.all(fetchJobs); + +// if controller.abort() is called from anywhere, +// it aborts all fetches +``` + +If we have our own asynchronous tasks, different from `fetch`, we can use a single `AbortController` to stop those, together with fetches. + +We just need to listen to its `abort` event in our tasks: + +```js +let urls = [...]; +let controller = new AbortController(); + +let ourJob = new Promise((resolve, reject) => { // our task + ... + controller.signal.addEventListener('abort', reject); +}); + +let fetchJobs = urls.map(url => fetch(url, { // fetches + signal: controller.signal +})); + +// Wait for fetches and our task in parallel +let results = await Promise.all([...fetchJobs, ourJob]); + +// if controller.abort() is called from anywhere, +// it aborts all fetches and ourJob +``` + +## Summary + +- `AbortController` is a simple object that generates an `abort` event on its `signal` property when the `abort()` method is called (and also sets `signal.aborted` to `true`). +- `fetch` integrates with it: we pass the `signal` property as the option, and then `fetch` listens to it, so it's possible to abort the `fetch`. +- We can use `AbortController` in our code. The "call `abort()`" -> "listen to `abort` event" interaction is simple and universal. We can use it even without `fetch`. diff --git a/5-network/03-fetch-abort/demo.view/server.js b/5-network/04-fetch-abort/demo.view/server.js similarity index 100% rename from 5-network/03-fetch-abort/demo.view/server.js rename to 5-network/04-fetch-abort/demo.view/server.js diff --git a/5-network/04-fetch-crossorigin/demo.view/index.html b/5-network/04-fetch-crossorigin/demo.view/index.html deleted file mode 100644 index 7e367598c..000000000 --- a/5-network/04-fetch-crossorigin/demo.view/index.html +++ /dev/null @@ -1,31 +0,0 @@ -<!doctype html> -<script> - -async function init() { - const response = await fetch('long.txt'); - const reader = response.body.getReader(); - - const contentLength = +response.headers.get('Content-Length'); - let receivedLength = 0; - - while(true) { - const chunk = await reader.read(); - - if (chunk.done) { - console.log("done!"); - break; - } - - receivedLength += chunk.value.length; - console.log(`${receivedLength}/${contentLength} received`) - } - - let result = await response.text(); - console.log(result); - //const chunkCount = await read(reader); - //console.log(`Finished! Received ${chunkCount} chunks.`); -} - -init(); - -</script> diff --git a/5-network/04-fetch-crossorigin/demo.view/server.js b/5-network/04-fetch-crossorigin/demo.view/server.js deleted file mode 100644 index 588ca0653..000000000 --- a/5-network/04-fetch-crossorigin/demo.view/server.js +++ /dev/null @@ -1,31 +0,0 @@ -const Koa = require('koa'); -const app = new Koa(); - -const Router = require('koa-router'); - -let router = new Router(); - -router.get('/script', async (ctx) => { - let callback = ctx.query.callback; - - if (!callback) { - ctx.throw(400, 'Callback required!'); - } - - ctx.type = 'application/javascript'; - ctx.body = `${callback}({ - temperature: 25, - humidity: 78 - })`; -}); - -app - .use(router.routes()) - .use(router.allowedMethods()); - - -if (!module.parent) { - http.createServer(app.callback()).listen(8080); -} else { - exports.accept = app.callback(); -} diff --git a/5-network/05-fetch-api/article.md b/5-network/05-fetch-api/article.md deleted file mode 100644 index 7b0330f26..000000000 --- a/5-network/05-fetch-api/article.md +++ /dev/null @@ -1,190 +0,0 @@ - -# Fetch API - -So far, we know quite a bit about fetch. - -Now let's see the rest of API, to cover all its abilities. - -Here's the full list of all possible fetch options with their default values (alternatives in comments): - -```js -let promise = fetch(url, { - method: "GET", // POST, PUT, DELETE, etc. - headers: { - "Content-Type": "text/plain;charset=UTF-8" // for a string body, depends on body - }, - body: undefined // string, FormData, Blob, BufferSource, or URLSearchParams - referrer: "about:client", // "" for no-referrer, or an url from the current origin - referrerPolicy: "no-referrer-when-downgrade", // no-referrer, origin, same-origin... - mode: "cors", // same-origin, no-cors - credentials: "same-origin", // omit, include - cache: "default", // no-store, reload, no-cache, force-cache, or only-if-cached - redirect: "follow", // manual, error - integrity: "", // a hash, like "sha256-abcdef1234567890" - keepalive: false, // true - signal: undefined, // AbortController to abort request - window: window // null -}); -``` - -An impressive list, right? - -We fully covered `method`, `headers` and `body` in the chapter <info:fetch-basics>. - -The `signal` option is covered in <info:fetch-abort>. - -Now let's explore the rest of options. - -## referrer, referrerPolicy - -These options govern how `fetch` sets HTTP `Referer` header. - -That header contains the url of the page that made the request. In most scenarios, it plays a very minor informational role, but sometimes, for security purposes, it makes sense to remove or modify it. -. - -**The `referrer` option allows to set any `Referer` within the current origin) or disable it.** - -To send no referer, set an empty string: -```js -fetch('/page', { -*!* - referrer: "" // no Referer header -*/!* -}); -``` - -To set another url within the current origin: - -```js -fetch('/page', { - // assuming we're on https://javascript.info - // we can set any Referer header, but only within the current origin -*!* - referrer: "https://javascript.info/anotherpage" -*/!* -}); -``` - -**The `referrerPolicy` option sets general rules for `Referer`.** - -Possible values are described in the [Referrer Policy specification](https://w3c.github.io/webappsec-referrer-policy/): - -- **`"no-referrer-when-downgrade"`** -- default value: `Referer` is sent always, unless we send a request from HTTPS to HTTP (to less secure protocol). -- **`"no-referrer"`** -- never send `Referer`. -- **`"origin"`** -- only send the origin in `Referer`, not the full page URL, e.g. `http://site.com` instead of `http://site.com/path`. -- **`"origin-when-cross-origin"`** -- send full referrer to the same origin, but only the origin part for cross-origin requests. -- **`"same-origin"`** -- send full referrer to the same origin, but no referer for for cross-origin requests. -- **`"strict-origin"`** -- send only origin, don't send referrer for HTTPS→HTTP requests. -- **`"strict-origin-when-cross-origin"`** -- for same-origin send full referrer, for cross-origin send only origin, unless it's HTTPS→HTTP request, then send nothing. -- **`"unsafe-url"`** -- always send full url in `Referer`. - -Let's say we have an admin zone with URL structure that shouldn't be visible from outside. - -If we send a cross-origin `fetch`, then by default it sends the `Referer` header with the full url of our page (except when we request from HTTPS to HTTP, then no `Referer`). - -E.g. `Referer: https://javascript.info/admin/secret/paths`. - -If we'd like to totally hide the referrer: - -```js -fetch('https://another.com/page', { - referrerPolicy: "no-referrer" // no Referer, same effect as referrer: "" -}); -``` - -Otherwise, if we'd like the remote side to see where the request comes from, we can send only the "origin" part of the url: - -```js -fetch('https://another.com/page', { - referrerPolicy: "strict-origin" // Referer: https://javascript.info -}); -``` - -## mode - -The `mode` option serves as a safe-guard that prevents cross-origin requests: - -- **`"cors"`** -- the default, cross-origin requests are allowed, as described in <info:fetch-crossorigin>, -- **`"same-origin"`** -- cross-origin requests are forbidden, -- **`"no-cors"`** -- only simple cross-origin requests are allowed. - -That may be useful in contexts when the fetch url comes from 3rd-party, and we want a "power off switch" to limit cross-origin capabilities. - -## credentials - -The `credentials` option specifies whether `fetch` should send cookies and HTTP-Authorization headers with the request. - -- **`"same-origin"`** -- the default, don't send for cross-origin requests, -- **`"include"`** -- always send, requires `Accept-Control-Allow-Credentials` from cross-origin server, -- **`"omit"`** -- never send, even for same-origin requests. - -## cache - -By default, `fetch` requests make use of standard HTTP-caching. That is, it honors `Expires`, `Cache-Control` headers, sends `If-Modified-Since`, and so on. Just like regular HTTP-requests do. - -The `cache` options allows to ignore HTTP-cache or fine-tune its usage: - -- **`"default"`** -- `fetch` uses standard HTTP-cache rules and headers; -- **`"no-store"`** -- totally ignore HTTP-cache, this mode becomes the default if we set a header `If-Modified-Since`, `If-None-Match`, `If-Unmodified-Since`, `If-Match`, or `If-Range`; -- **`"reload"`** -- don't take the result from HTTP-cache (if any), but populate cache with the response (if response headers allow); -- **`"no-cache"`** -- create a conditional request if there is a cached response, and a normal request otherwise. Populate HTTP-cache with the response; -- **`"force-cache"`** -- use a response from HTTP-cache, even if it's stale. If there's no response in HTTP-cache, make a regular HTTP-request, behave normally; -- **`"only-if-cached"`** -- use a response from HTTP-cache, even if it's stale. If there's no response in HTTP-cache, then error. Only works when `mode` is `"same-origin"`. - -## redirect - -Normally, `fetch` transparently follows HTTP-redirects, like 301, 302 etc. - -The `redirect` option allows to change that: - -- **`"follow"`** -- the default, follow HTTP-redirects, -- **`"error"`** -- error in case of HTTP-redirect, -- **`"manual"`** -- don't follow HTTP-redirect, but `response.url` will be the new URL, and `response.redirected` will be `true`, so that we can perform the redirect manually to the new URL (if needed). - -## integrity - -The `integrity` option allows to check if the response matches the known-ahead checksum. - -As described in the [specification](https://w3c.github.io/webappsec-subresource-integrity/), supported hash-functions are SHA-256, SHA-384, and SHA-512, there might be others depending on a browser. - -For example, we're downloading a file, and we know that it's SHA-256 checksum is "abc" (a real checksum is longer, of course). - -We can put it in the `integrity` option, like this: - -```js -fetch('http://site.com/file', { - integrity: 'sha256-abd' -}); -``` - -Then `fetch` will calculate SHA-256 on its own and compare it with our string. In case of a mismatch, an error is triggered. - -## keepalive - -The `keepalive` option indicates that the request may outlive the page. - -For example, we gather statistics about how the current visitor uses our page (mouse clicks, page fragments he views), to improve user experience. - -When the visitor leaves our page -- we'd like to save it on our server. - -We can use `window.onunload` for that: - -```js run -window.onunload = function() { - fetch('/analytics', { - method: 'POST', - body: "statistics", -*!* - keepalive: true -*/!* - }); -}; -``` - -Normally, when a document is unloaded, all associated network requests are aborted. But `keepalive` option tells the browser to perform the request in background, even after it leaves the page. So it's essential for our request to succeed. - -- We can't send megabytes: the body limit for keepalive requests is 64kb. - - If we gather more data, we can send it out regularly, then there won't be a lot for the "onunload" request. - - The limit is for all currently ongoing requests. So we cheat it by creating 100 requests, each 64kb. -- We don't get the server response if the request is made `onunload`, because the document is already unloaded at that time. - - Usually, the server sends empty response to such requests, so it's not a problem. diff --git a/5-network/04-fetch-crossorigin/1-do-we-need-origin/solution.md b/5-network/05-fetch-crossorigin/1-do-we-need-origin/solution.md similarity index 79% rename from 5-network/04-fetch-crossorigin/1-do-we-need-origin/solution.md rename to 5-network/05-fetch-crossorigin/1-do-we-need-origin/solution.md index 8cbb2c88a..d44494e18 100644 --- a/5-network/04-fetch-crossorigin/1-do-we-need-origin/solution.md +++ b/5-network/05-fetch-crossorigin/1-do-we-need-origin/solution.md @@ -2,7 +2,7 @@ We need `Origin`, because sometimes `Referer` is absent. For instance, when we ` The [Content Security Policy](http://en.wikipedia.org/wiki/Content_Security_Policy) may forbid sending a `Referer`. -As we'll see, `fetch` also has options that prevent sending the `Referer` and even allow to change it (within the same site). +As we'll see, `fetch` has options that prevent sending the `Referer` and even allow to change it (within the same site). By specification, `Referer` is an optional HTTP-header. diff --git a/5-network/04-fetch-crossorigin/1-do-we-need-origin/task.md b/5-network/05-fetch-crossorigin/1-do-we-need-origin/task.md similarity index 89% rename from 5-network/04-fetch-crossorigin/1-do-we-need-origin/task.md rename to 5-network/05-fetch-crossorigin/1-do-we-need-origin/task.md index 6bfdc1094..fb8142a3b 100644 --- a/5-network/04-fetch-crossorigin/1-do-we-need-origin/task.md +++ b/5-network/05-fetch-crossorigin/1-do-we-need-origin/task.md @@ -25,4 +25,4 @@ As you can see, both `Referer` and `Origin` are present. The questions: 1. Why `Origin` is needed, if `Referer` has even more information? -2. If it possible that there's no `Referer` or `Origin`, or it's incorrect? +2. Is it possible that there's no `Referer` or `Origin`, or is it incorrect? diff --git a/5-network/05-fetch-crossorigin/article.md b/5-network/05-fetch-crossorigin/article.md new file mode 100644 index 000000000..4420f43c7 --- /dev/null +++ b/5-network/05-fetch-crossorigin/article.md @@ -0,0 +1,384 @@ +# Fetch: Cross-Origin Requests + +If we send a `fetch` request to another web-site, it will probably fail. + +For instance, let's try fetching `http://example.com`: + +```js run async +try { + await fetch('http://example.com'); +} catch(err) { + alert(err); // Failed to fetch +} +``` + +Fetch fails, as expected. + +The core concept here is *origin* -- a domain/port/protocol triplet. + +Cross-origin requests -- those sent to another domain (even a subdomain) or protocol or port -- require special headers from the remote side. + +That policy is called "CORS": Cross-Origin Resource Sharing. + +## Why is CORS needed? A brief history + +CORS exists to protect the internet from evil hackers. + +Seriously. Let's make a very brief historical digression. + +**For many years a script from one site could not access the content of another site.** + +That simple, yet powerful rule was a foundation of the internet security. E.g. an evil script from website `hacker.com` could not access the user's mailbox at website `gmail.com`. People felt safe. + +JavaScript also did not have any special methods to perform network requests at that time. It was a toy language to decorate a web page. + +But web developers demanded more power. A variety of tricks were invented to work around the limitation and make requests to other websites. + +### Using forms + +One way to communicate with another server was to submit a `<form>` there. People submitted it into `<iframe>`, just to stay on the current page, like this: + +```html +<!-- form target --> +*!* +<iframe name="iframe"></iframe> +*/!* + +<!-- a form could be dynamically generated and submitted by JavaScript --> +*!* +<form target="iframe" method="POST" action="http://another.com/…"> +*/!* + ... +</form> +``` + +So, it was possible to make a GET/POST request to another site, even without networking methods, as forms can send data anywhere. But as it's forbidden to access the content of an `<iframe>` from another site, it wasn't possible to read the response. + +To be precise, there were actually tricks for that, they required special scripts at both the iframe and the page. So the communication with the iframe was technically possible. Right now there's no point to go into details, let these dinosaurs rest in peace. + +### Using scripts + +Another trick was to use a `script` tag. A script could have any `src`, with any domain, like `<script src="http://another.com/…">`. It's possible to execute a script from any website. + +If a website, e.g. `another.com` intended to expose data for this kind of access, then a so-called "JSONP (JSON with padding)" protocol was used. + +Here's how it worked. + +Let's say we, at our site, need to get the data from `http://another.com`, such as the weather: + +1. First, in advance, we declare a global function to accept the data, e.g. `gotWeather`. + + ```js + // 1. Declare the function to process the weather data + function gotWeather({ temperature, humidity }) { + alert(`temperature: ${temperature}, humidity: ${humidity}`); + } + ``` +2. Then we make a `<script>` tag with `src="http://another.com/weather.json?callback=gotWeather"`, using the name of our function as the `callback` URL-parameter. + + ```js + let script = document.createElement('script'); + script.src = `http://another.com/weather.json?callback=gotWeather`; + document.body.append(script); + ``` +3. The remote server `another.com` dynamically generates a script that calls `gotWeather(...)` with the data it wants us to receive. + ```js + // The expected answer from the server looks like this: + gotWeather({ + temperature: 25, + humidity: 78 + }); + ``` +4. When the remote script loads and executes, `gotWeather` runs, and, as it's our function, we have the data. + +That works, and doesn't violate security, because both sides agreed to pass the data this way. And, when both sides agree, it's definitely not a hack. There are still services that provide such access, as it works even for very old browsers. + +After a while, networking methods appeared in browser JavaScript. + +At first, cross-origin requests were forbidden. But as a result of long discussions, cross-origin requests were allowed, but with any new capabilities requiring an explicit allowance by the server, expressed in special headers. + +## Safe requests + +There are two types of cross-origin requests: + +1. Safe requests. +2. All the others. + +Safe Requests are simpler to make, so let's start with them. + +A request is safe if it satisfies two conditions: + +1. [Safe method](https://fetch.spec.whatwg.org/#cors-safelisted-method): GET, POST or HEAD +2. [Safe headers](https://fetch.spec.whatwg.org/#cors-safelisted-request-header) -- the only allowed custom headers are: + - `Accept`, + - `Accept-Language`, + - `Content-Language`, + - `Content-Type` with the value `application/x-www-form-urlencoded`, `multipart/form-data` or `text/plain`. + +Any other request is considered "unsafe". For instance, a request with `PUT` method or with an `API-Key` HTTP-header does not fit the limitations. + +**The essential difference is that a safe request can be made with a `<form>` or a `<script>`, without any special methods.** + +So, even a very old server should be ready to accept a safe request. + +Contrary to that, requests with non-standard headers or e.g. method `DELETE` can't be created this way. For a long time JavaScript was unable to do such requests. So an old server may assume that such requests come from a privileged source, "because a webpage is unable to send them". + +When we try to make a unsafe request, the browser sends a special "preflight" request that asks the server -- does it agree to accept such cross-origin requests, or not? + +And, unless the server explicitly confirms that with headers, an unsafe request is not sent. + +Now we'll go into details. + +## CORS for safe requests + +If a request is cross-origin, the browser always adds the `Origin` header to it. + +For instance, if we request `https://anywhere.com/request` from `https://javascript.info/page`, the headers will look like: + +```http +GET /request +Host: anywhere.com +*!* +Origin: https://javascript.info +*/!* +... +``` + +As you can see, the `Origin` header contains exactly the origin (domain/protocol/port), without a path. + +The server can inspect the `Origin` and, if it agrees to accept such a request, add a special header `Access-Control-Allow-Origin` to the response. That header should contain the allowed origin (in our case `https://javascript.info`), or a star `*`. Then the response is successful, otherwise it's an error. + +The browser plays the role of a trusted mediator here: +1. It ensures that the correct `Origin` is sent with a cross-origin request. +2. It checks for permitting `Access-Control-Allow-Origin` in the response, if it exists, then JavaScript is allowed to access the response, otherwise it fails with an error. + + + +Here's an example of a permissive server response: +```http +200 OK +Content-Type:text/html; charset=UTF-8 +*!* +Access-Control-Allow-Origin: https://javascript.info +*/!* +``` + +## Response headers + +For cross-origin request, by default JavaScript may only access so-called "safe" response headers: + +- `Cache-Control` +- `Content-Language` +- `Content-Length` +- `Content-Type` +- `Expires` +- `Last-Modified` +- `Pragma` + +Accessing any other response header causes an error. + +To grant JavaScript access to any other response header, the server must send the `Access-Control-Expose-Headers` header. It contains a comma-separated list of unsafe header names that should be made accessible. + +For example: + +```http +200 OK +Content-Type:text/html; charset=UTF-8 +Content-Length: 12345 +Content-Encoding: gzip +API-Key: 2c9de507f2c54aa1 +Access-Control-Allow-Origin: https://javascript.info +*!* +Access-Control-Expose-Headers: Content-Encoding,API-Key +*/!* +``` + +With such an `Access-Control-Expose-Headers` header, the script is allowed to read the `Content-Encoding` and `API-Key` headers of the response. + +## "Unsafe" requests + +We can use any HTTP-method: not just `GET/POST`, but also `PATCH`, `DELETE` and others. + +Some time ago no one could even imagine that a webpage could make such requests. So there may still exist webservices that treat a non-standard method as a signal: "That's not a browser". They can take it into account when checking access rights. + +So, to avoid misunderstandings, any "unsafe" request -- that couldn't be done in the old times, the browser does not make such requests right away. First, it sends a preliminary, so-called "preflight" request, to ask for permission. + +A preflight request uses the method `OPTIONS`, no body and three headers: + +- `Access-Control-Request-Method` header has the method of the unsafe request. +- `Access-Control-Request-Headers` header provides a comma-separated list of its unsafe HTTP-headers. +- `Origin` header tells from where the request came. (such as `https://javascript.info`) + +If the server agrees to serve the requests, then it should respond with empty body, status 200 and headers: + +- `Access-Control-Allow-Origin` must be either `*` or the requesting origin, such as `https://javascript.info`, to allow it. +- `Access-Control-Allow-Methods` must have the allowed method. +- `Access-Control-Allow-Headers` must have a list of allowed headers. +- Additionally, the header `Access-Control-Max-Age` may specify a number of seconds to cache the permissions. So the browser won't have to send a preflight for subsequent requests that satisfy given permissions. + + + +Let's see how it works step-by-step on the example of a cross-origin `PATCH` request (this method is often used to update data): + +```js +let response = await fetch('https://site.com/service.json', { + method: 'PATCH', + headers: { + 'Content-Type': 'application/json', + 'API-Key': 'secret' + } +}); +``` + +There are three reasons why the request is unsafe (one is enough): +- Method `PATCH` +- `Content-Type` is not one of: `application/x-www-form-urlencoded`, `multipart/form-data`, `text/plain`. +- "Unsafe" `API-Key` header. + +### Step 1 (preflight request) + +Prior to sending such a request, the browser, on its own, sends a preflight request that looks like this: + +```http +OPTIONS /service.json +Host: site.com +Origin: https://javascript.info +Access-Control-Request-Method: PATCH +Access-Control-Request-Headers: Content-Type,API-Key +``` + +- Method: `OPTIONS`. +- The path -- exactly the same as the main request: `/service.json`. +- Cross-origin special headers: + - `Origin` -- the source origin. + - `Access-Control-Request-Method` -- requested method. + - `Access-Control-Request-Headers` -- a comma-separated list of "unsafe" headers. + +### Step 2 (preflight response) + +The server should respond with status 200 and the headers: +- `Access-Control-Allow-Origin: https://javascript.info` +- `Access-Control-Allow-Methods: PATCH` +- `Access-Control-Allow-Headers: Content-Type,API-Key`. + +That allows future communication, otherwise an error is triggered. + +If the server expects other methods and headers in the future, it makes sense to allow them in advance by adding them to the list. + +For example, this response also allows `PUT`, `DELETE` and additional headers: + +```http +200 OK +Access-Control-Allow-Origin: https://javascript.info +Access-Control-Allow-Methods: PUT,PATCH,DELETE +Access-Control-Allow-Headers: API-Key,Content-Type,If-Modified-Since,Cache-Control +Access-Control-Max-Age: 86400 +``` + +Now the browser can see that `PATCH` is in `Access-Control-Allow-Methods` and `Content-Type,API-Key` are in the list `Access-Control-Allow-Headers`, so it sends out the main request. + +If there's the header `Access-Control-Max-Age` with a number of seconds, then the preflight permissions are cached for the given time. The response above will be cached for 86400 seconds (one day). Within this timeframe, subsequent requests will not cause a preflight. Assuming that they fit the cached allowances, they will be sent directly. + +### Step 3 (actual request) + +When the preflight is successful, the browser now makes the main request. The process here is the same as for safe requests. + +The main request has the `Origin` header (because it's cross-origin): + +```http +PATCH /service.json +Host: site.com +Content-Type: application/json +API-Key: secret +Origin: https://javascript.info +``` + +### Step 4 (actual response) + +The server should not forget to add `Access-Control-Allow-Origin` to the main response. A successful preflight does not relieve from that: + +```http +Access-Control-Allow-Origin: https://javascript.info +``` + +Then JavaScript is able to read the main server response. + +```smart +Preflight request occurs "behind the scenes", it's invisible to JavaScript. + +JavaScript only gets the response to the main request or an error if there's no server permission. +``` + +## Credentials + +A cross-origin request initiated by JavaScript code by default does not bring any credentials (cookies or HTTP authentication). + +That's uncommon for HTTP-requests. Usually, a request to `http://site.com` is accompanied by all cookies from that domain. Cross-origin requests made by JavaScript methods on the other hand are an exception. + +For example, `fetch('http://another.com')` does not send any cookies, even those (!) that belong to `another.com` domain. + +Why? + +That's because a request with credentials is much more powerful than without them. If allowed, it grants JavaScript the full power to act on behalf of the user and access sensitive information using their credentials. + +Does the server really trust the script that much? Then it must explicitly allow requests with credentials with an additional header. + +To send credentials in `fetch`, we need to add the option `credentials: "include"`, like this: + +```js +fetch('http://another.com', { + credentials: "include" +}); +``` + +Now `fetch` sends cookies originating from `another.com` with request to that site. + +If the server agrees to accept the request *with credentials*, it should add a header `Access-Control-Allow-Credentials: true` to the response, in addition to `Access-Control-Allow-Origin`. + +For example: + +```http +200 OK +Access-Control-Allow-Origin: https://javascript.info +Access-Control-Allow-Credentials: true +``` + +Please note: `Access-Control-Allow-Origin` is prohibited from using a star `*` for requests with credentials. Like shown above, it must provide the exact origin there. That's an additional safety measure, to ensure that the server really knows who it trusts to make such requests. + +## Summary + +From the browser point of view, there are two kinds of cross-origin requests: "safe" and all the others. + +"Safe" requests must satisfy the following conditions: +- Method: GET, POST or HEAD. +- Headers -- we can set only: + - `Accept` + - `Accept-Language` + - `Content-Language` + - `Content-Type` to the value `application/x-www-form-urlencoded`, `multipart/form-data` or `text/plain`. + +The essential difference is that safe requests were doable since ancient times using `<form>` or `<script>` tags, while unsafe were impossible for browsers for a long time. + +So, the practical difference is that safe requests are sent right away, with the `Origin` header, while for the other ones the browser makes a preliminary "preflight" request, asking for permission. + +**For safe requests:** + +- → The browser sends the `Origin` header with the origin. +- ← For requests without credentials (not sent by default), the server should set: + - `Access-Control-Allow-Origin` to `*` or same value as `Origin` +- ← For requests with credentials, the server should set: + - `Access-Control-Allow-Origin` to same value as `Origin` + - `Access-Control-Allow-Credentials` to `true` + +Additionally, to grant JavaScript access to any response headers except `Cache-Control`, `Content-Language`, `Content-Type`, `Expires`, `Last-Modified` or `Pragma`, the server should list the allowed ones in `Access-Control-Expose-Headers` header. + +**For unsafe requests, a preliminary "preflight" request is issued before the requested one:** + +- → The browser sends an `OPTIONS` request to the same URL, with the headers: + - `Access-Control-Request-Method` has requested method. + - `Access-Control-Request-Headers` lists unsafe requested headers. +- ← The server should respond with status 200 and the headers: + - `Access-Control-Allow-Methods` with a list of allowed methods, + - `Access-Control-Allow-Headers` with a list of allowed headers, + - `Access-Control-Max-Age` with a number of seconds to cache the permissions. +- Then the actual request is sent, and the previous "safe" scheme is applied. diff --git a/5-network/04-fetch-crossorigin/cors-gmail-messages.svg b/5-network/05-fetch-crossorigin/cors-gmail-messages.svg similarity index 73% rename from 5-network/04-fetch-crossorigin/cors-gmail-messages.svg rename to 5-network/05-fetch-crossorigin/cors-gmail-messages.svg index cfe15d7ad..5779836d0 100644 --- a/5-network/04-fetch-crossorigin/cors-gmail-messages.svg +++ b/5-network/05-fetch-crossorigin/cors-gmail-messages.svg @@ -1,3 +1,4 @@ +<<<<<<< HEAD:5-network/04-fetch-crossorigin/cors-gmail-messages.svg <?xml version="1.0" encoding="UTF-8"?> <svg width="651px" height="285px" viewBox="0 0 651 285" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <!-- Generator: sketchtool 55.2 (78181) - https://sketchapp.com --> @@ -51,4 +52,7 @@ </text> </g> </g> -</svg> \ No newline at end of file +</svg> +======= +<svg xmlns="http://www.w3.org/2000/svg" width="651" height="285" viewBox="0 0 651 285"><defs><style>@import url(https://fonts.googleapis.com/css?family=Open+Sans:bold,italic,bolditalic%7CPT+Mono);@font-face{font-family:'PT Mono';font-weight:700;font-style:normal;src:local('PT MonoBold'),url(/font/PTMonoBold.woff2) format('woff2'),url(/font/PTMonoBold.woff) format('woff'),url(/font/PTMonoBold.ttf) format('truetype')}</style></defs><g id="network" fill="none" fill-rule="evenodd" stroke="none" stroke-width="1"><g id="cors-gmail-messages.svg"><path id="Rectangle-1" fill="#FBF2EC" stroke="#DBAF88" stroke-width="2" d="M11 48h298v199H11z"/><g id="<script>-let-respons" fill-rule="nonzero" transform="translate(15.937 58.259)"><path id="<script>" fill="#7E7C7B" d="M5.339 9.099l-.745.752L0 6.016 4.594 2.18l.745.758-3.726 3.063L5.34 9.099zm7.95-1.23a1.634 1.634 0 01-.458 1.158 2.084 2.084 0 01-.492.38 3.272 3.272 0 01-.598.259c-.212.068-.43.119-.653.15a4.637 4.637 0 01-.656.048 12.3 12.3 0 01-1.282-.061 8.646 8.646 0 01-1.145-.199V8.511c.4.114.8.2 1.196.26.397.059.79.088 1.183.088.57 0 .991-.077 1.264-.232.274-.155.41-.376.41-.663a.812.812 0 00-.064-.332.753.753 0 00-.236-.28 2.254 2.254 0 00-.53-.277 11.81 11.81 0 00-.98-.328 6.963 6.963 0 01-.859-.311 2.877 2.877 0 01-.68-.414 1.776 1.776 0 01-.451-.56 1.649 1.649 0 01-.164-.759 1.744 1.744 0 01.588-1.265c.214-.195.503-.358.868-.488.364-.13.82-.195 1.367-.195.269 0 .567.015.896.044.328.03.67.081 1.025.154v1.06a9.803 9.803 0 00-1.063-.202 6.926 6.926 0 00-.872-.065c-.296 0-.545.023-.748.068a1.553 1.553 0 00-.492.188.734.734 0 00-.27.28.748.748 0 00-.082.346c0 .123.023.235.071.335.048.1.137.197.267.29.13.094.311.187.543.28.233.094.536.196.91.305.405.118.747.243 1.025.372.278.13.504.275.677.435.173.159.297.339.372.54.075.2.113.428.113.683zm7.595 1.62c-.31.118-.628.205-.954.262a5.845 5.845 0 01-1.008.086c-1.085 0-1.92-.294-2.505-.882-.586-.588-.879-1.447-.879-2.577 0-.542.084-1.035.253-1.477a3.142 3.142 0 011.805-1.863c.424-.17.89-.256 1.401-.256.356 0 .688.025.998.075.31.05.606.133.889.247v1.134a3.77 3.77 0 00-.906-.338 4.248 4.248 0 00-.954-.106c-.305 0-.593.058-.864.174-.271.116-.51.284-.715.503a2.38 2.38 0 00-.485.8c-.119.314-.178.67-.178 1.066 0 .83.202 1.45.605 1.863.404.412.963.618 1.678.618a3.897 3.897 0 001.818-.438v1.108zm2.645-6.611h1.087l.034 1.265c.406-.488.806-.841 1.2-1.06a2.436 2.436 0 011.193-.328c.71 0 1.25.23 1.617.69.367.46.536 1.144.509 2.051h-1.203c.013-.601-.074-1.038-.263-1.309-.19-.271-.466-.407-.83-.407-.16 0-.321.029-.483.086a1.947 1.947 0 00-.499.273 4.47 4.47 0 00-.543.482 8.898 8.898 0 00-.616.711v4.41H23.53V2.877zm9.755.984h-2.03v-.984h3.233V8.75h2.044v.991h-5.503V8.75h2.256V3.862zM33.701 0c.132 0 .255.024.37.072a.893.893 0 01.297.201.919.919 0 01.27.663.96.96 0 01-.27.663.893.893 0 01-.298.202.944.944 0 01-.369.072.944.944 0 01-.369-.072.893.893 0 01-.297-.201.96.96 0 01-.27-.663.919.919 0 01.27-.664.893.893 0 01.297-.201.944.944 0 01.37-.072zM44.51 6.187c0 .61-.086 1.143-.257 1.6-.17.455-.406.833-.707 1.134a2.9 2.9 0 01-1.066.677c-.41.15-.855.225-1.333.225-.22 0-.437-.011-.653-.034a4.952 4.952 0 01-.66-.116v2.87h-1.19V2.879h1.06l.075 1.148c.342-.469.707-.798 1.094-.987.387-.19.807-.284 1.258-.284.392 0 .736.082 1.032.246.296.164.545.395.745.694.2.298.351.658.451 1.08.1.421.15.892.15 1.412zm-1.217.054c0-.36-.026-.69-.079-.991a2.586 2.586 0 00-.25-.772 1.37 1.37 0 00-.437-.503 1.104 1.104 0 00-.635-.181c-.15 0-.303.024-.458.072a1.857 1.857 0 00-.482.239 3.59 3.59 0 00-.527.444 7 7 0 00-.591.687v3.33c.219.09.449.162.69.215.242.052.479.078.711.078.643 0 1.147-.217 1.511-.652.365-.436.547-1.09.547-1.966zm8.58 3.405a5.793 5.793 0 01-.835.146 8.52 8.52 0 01-.875.045c-.861 0-1.504-.195-1.928-.585-.423-.39-.635-.987-.635-1.794V3.876h-1.921v-.998h1.92V.99l1.19-.307v2.194h3.083v.998h-3.083v3.486c0 .492.131.86.393 1.104.262.244.648.366 1.159.366.219 0 .458-.017.718-.051.26-.034.53-.088.813-.16v1.025zm2.501-6.707l.738-.758 4.594 3.835-4.594 3.835-.738-.752 3.726-3.07-3.726-3.09z"/><path id="let" fill="#1C85B5" d="M2.495 33.06H.465v-.978h3.233v8.668h2.044v.991H.24v-.991h2.256v-7.69zm11.156 4.887c0 .169-.002.31-.006.424a6.37 6.37 0 01-.021.321h-4.82c0 .702.197 1.241.589 1.617.392.376.957.564 1.695.564.2 0 .4-.008.601-.024.201-.016.395-.037.582-.065.186-.027.365-.058.536-.092.171-.034.33-.072.475-.113v.978a9.161 9.161 0 01-2.365.308c-.588 0-1.094-.08-1.518-.24a2.597 2.597 0 01-1.042-.694 2.857 2.857 0 01-.602-1.114 5.273 5.273 0 01-.194-1.494c0-.483.069-.94.208-1.37a3.44 3.44 0 01.608-1.135c.267-.326.594-.585.981-.776a2.94 2.94 0 011.32-.287c.478 0 .902.075 1.271.225.37.15.68.364.933.64.253.275.445.61.575 1.005.13.394.194.835.194 1.322zm-1.237-.17a2.593 2.593 0 00-.089-.838 1.763 1.763 0 00-.338-.653 1.576 1.576 0 00-.571-.427 1.916 1.916 0 00-.793-.154c-.26 0-.497.05-.71.15-.215.1-.4.242-.555.424a2.19 2.19 0 00-.376.657 3.026 3.026 0 00-.177.84h3.61zm8.668 3.869a5.793 5.793 0 01-.834.146 8.52 8.52 0 01-.875.045c-.861 0-1.504-.195-1.928-.585-.424-.39-.635-.987-.635-1.794v-3.582h-1.921v-.998h1.92V32.99l1.19-.307v2.194h3.083v.998h-3.083v3.486c0 .492.131.86.393 1.104.262.244.648.366 1.159.366.219 0 .458-.017.718-.051.26-.034.53-.088.813-.16v1.025z"/><path id="response" fill="#181717" d="M31.227 34.878h1.086l.035 1.265c.405-.488.805-.841 1.2-1.06a2.436 2.436 0 011.192-.328c.711 0 1.25.23 1.617.69.367.46.537 1.144.51 2.051h-1.204c.014-.601-.074-1.038-.263-1.309-.19-.271-.466-.407-.83-.407-.16 0-.32.029-.483.086a1.947 1.947 0 00-.499.273 4.47 4.47 0 00-.543.482 8.898 8.898 0 00-.615.711v4.41h-1.203v-6.864zm13.213 3.07c0 .168-.002.31-.006.423a6.37 6.37 0 01-.02.321h-4.82c0 .702.196 1.241.588 1.617.392.376.957.564 1.695.564.2 0 .401-.008.602-.024.2-.016.394-.037.58-.065.187-.027.366-.058.537-.092.171-.034.33-.072.475-.113v.978a9.161 9.161 0 01-2.365.308c-.588 0-1.094-.08-1.518-.24a2.597 2.597 0 01-1.042-.694 2.857 2.857 0 01-.602-1.114 5.273 5.273 0 01-.194-1.494c0-.483.07-.94.208-1.37a3.44 3.44 0 01.609-1.135c.266-.326.593-.585.98-.776a2.94 2.94 0 011.32-.287c.478 0 .902.075 1.271.225.37.15.68.364.933.64.253.275.445.61.575 1.005.13.394.194.835.194 1.322zm-1.237-.172a2.593 2.593 0 00-.089-.837 1.763 1.763 0 00-.338-.653 1.576 1.576 0 00-.57-.427 1.916 1.916 0 00-.794-.154c-.26 0-.497.05-.71.15-.215.1-.4.242-.555.424a2.19 2.19 0 00-.376.657 3.026 3.026 0 00-.177.84h3.61zm8.572 2.092a1.634 1.634 0 01-.458 1.159 2.084 2.084 0 01-.492.38 3.272 3.272 0 01-.598.259c-.212.068-.43.119-.653.15a4.637 4.637 0 01-.656.048 12.3 12.3 0 01-1.282-.061 8.646 8.646 0 01-1.145-.199v-1.093c.401.114.8.2 1.197.26.396.059.79.088 1.182.088.57 0 .991-.077 1.265-.232.273-.155.41-.376.41-.663a.812.812 0 00-.065-.332.753.753 0 00-.236-.28 2.254 2.254 0 00-.53-.277 11.81 11.81 0 00-.98-.328 6.963 6.963 0 01-.859-.311 2.877 2.877 0 01-.68-.414 1.776 1.776 0 01-.45-.56 1.649 1.649 0 01-.165-.759 1.744 1.744 0 01.588-1.265c.214-.195.504-.358.868-.488.365-.13.82-.195 1.367-.195.27 0 .568.015.896.044.328.03.67.081 1.025.154v1.06a9.803 9.803 0 00-1.063-.202 6.926 6.926 0 00-.871-.065c-.297 0-.546.023-.749.068a1.553 1.553 0 00-.492.188.734.734 0 00-.27.28.748.748 0 00-.082.346c0 .123.024.235.072.335.048.1.136.197.266.29.13.094.311.187.544.28.232.094.535.196.909.305.405.118.747.243 1.025.372.278.13.504.275.677.435.173.159.297.339.373.54.075.2.112.428.112.683zm8.128-1.681c0 .61-.085 1.143-.256 1.6-.17.455-.407.833-.708 1.134a2.9 2.9 0 01-1.066.677c-.41.15-.854.225-1.333.225-.219 0-.436-.011-.653-.034a4.952 4.952 0 01-.66-.116v2.87h-1.189v-9.665h1.06l.075 1.148c.342-.469.706-.798 1.094-.987.387-.19.806-.284 1.257-.284.392 0 .736.082 1.033.246.296.164.544.395.745.694.2.298.35.658.45 1.08.101.421.151.892.151 1.412zm-1.216.054c0-.36-.027-.69-.08-.991a2.586 2.586 0 00-.249-.772 1.37 1.37 0 00-.437-.503 1.104 1.104 0 00-.636-.181c-.15 0-.303.024-.458.072a1.857 1.857 0 00-.482.239 3.59 3.59 0 00-.526.444 7 7 0 00-.591.687v3.33c.218.09.448.162.69.215.242.052.478.078.71.078.643 0 1.147-.217 1.512-.652.364-.436.547-1.09.547-1.966zm9.023.014a4.55 4.55 0 01-.226 1.466c-.15.445-.366.825-.649 1.142a2.913 2.913 0 01-1.032.738 3.447 3.447 0 01-1.381.263c-.492 0-.933-.076-1.323-.229a2.617 2.617 0 01-.991-.673 2.98 2.98 0 01-.622-1.1c-.144-.438-.215-.942-.215-1.511 0-.534.075-1.02.225-1.46.15-.44.367-.818.65-1.135a2.913 2.913 0 011.032-.738 3.447 3.447 0 011.38-.263c.493 0 .934.076 1.323.229.39.153.72.376.992.67.27.294.478.66.622 1.097.143.437.215.939.215 1.504zm-1.217.055c0-.424-.047-.795-.14-1.111a2.237 2.237 0 00-.4-.793 1.65 1.65 0 00-.632-.479 2.077 2.077 0 00-.83-.16c-.356 0-.66.07-.913.208-.253.14-.46.325-.622.557a2.4 2.4 0 00-.356.81 4.06 4.06 0 00-.113.968c0 .423.047.795.14 1.114.094.319.227.584.4.796.174.212.383.372.63.479.245.107.523.16.833.16.356 0 .66-.07.913-.208.253-.14.46-.325.622-.557a2.4 2.4 0 00.355-.81 4.09 4.09 0 00.113-.974zm2.94-3.432h1.06l.047 1.107c.2-.237.394-.434.581-.591.187-.157.37-.284.55-.38a2.06 2.06 0 01.55-.201c.188-.039.381-.058.582-.058.706 0 1.24.208 1.603.625.362.417.543 1.045.543 1.884v4.477h-1.19V37.36c0-.537-.1-.935-.3-1.192-.2-.258-.499-.387-.896-.387-.145 0-.288.022-.427.065a1.557 1.557 0 00-.434.226c-.15.107-.313.252-.489.434-.175.182-.372.41-.59.683v4.553h-1.19v-6.863zm13.131 4.99a1.634 1.634 0 01-.458 1.159 2.084 2.084 0 01-.492.38 3.272 3.272 0 01-.598.259c-.212.068-.43.119-.653.15a4.637 4.637 0 01-.656.048 12.3 12.3 0 01-1.282-.061 8.646 8.646 0 01-1.145-.199v-1.093c.401.114.8.2 1.197.26.396.059.79.088 1.182.088.57 0 .991-.077 1.265-.232.273-.155.41-.376.41-.663a.812.812 0 00-.065-.332.753.753 0 00-.236-.28 2.254 2.254 0 00-.53-.277 11.81 11.81 0 00-.98-.328 6.963 6.963 0 01-.858-.311 2.877 2.877 0 01-.68-.414 1.776 1.776 0 01-.452-.56 1.649 1.649 0 01-.164-.759 1.744 1.744 0 01.588-1.265c.214-.195.504-.358.868-.488.365-.13.82-.195 1.367-.195.27 0 .568.015.896.044.328.03.67.081 1.025.154v1.06a9.803 9.803 0 00-1.063-.202 6.926 6.926 0 00-.871-.065c-.297 0-.546.023-.749.068a1.553 1.553 0 00-.492.188.734.734 0 00-.27.28.748.748 0 00-.082.346c0 .123.024.235.072.335.048.1.136.197.266.29.13.094.311.187.544.28.232.094.535.196.909.305.406.118.747.243 1.025.372.278.13.504.275.677.435.173.159.297.339.373.54.075.2.112.428.112.683zm8.06-1.92c0 .168-.002.31-.007.423a6.37 6.37 0 01-.02.321h-4.82c0 .702.196 1.241.588 1.617.392.376.957.564 1.696.564.2 0 .4-.008.601-.024.2-.016.394-.037.581-.065.187-.027.366-.058.537-.092.17-.034.329-.072.475-.113v.978a9.161 9.161 0 01-2.365.308c-.588 0-1.094-.08-1.518-.24a2.597 2.597 0 01-1.042-.694 2.857 2.857 0 01-.602-1.114 5.273 5.273 0 01-.195-1.494c0-.483.07-.94.209-1.37a3.44 3.44 0 01.608-1.135c.267-.326.594-.585.981-.776a2.94 2.94 0 011.32-.287c.478 0 .902.075 1.27.225.37.15.681.364.934.64.253.275.444.61.574 1.005.13.394.195.835.195 1.322zm-1.237-.172a2.593 2.593 0 00-.09-.837 1.763 1.763 0 00-.338-.653 1.576 1.576 0 00-.57-.427 1.916 1.916 0 00-.793-.154c-.26 0-.497.05-.711.15-.214.1-.399.242-.554.424a2.19 2.19 0 00-.376.657 3.026 3.026 0 00-.178.84h3.61z"/><path id="=" fill="#DBAF88" d="M105.916 37.325h-5.879V36.32h5.879v1.005zm0 2.38h-5.879v-1.006h5.879v1.005z"/><path id="await" fill="#1C85B5" d="M120.025 41.741l-.027-.923c-.374.37-.753.636-1.138.8-.385.164-.79.246-1.214.246-.391 0-.726-.05-1.004-.15a1.883 1.883 0 01-.687-.414 1.603 1.603 0 01-.397-.618 2.289 2.289 0 01-.126-.773c0-.688.256-1.227.769-1.617.512-.39 1.27-.584 2.273-.584h1.422v-.602c0-.405-.13-.73-.39-.974-.26-.243-.656-.365-1.19-.365-.387 0-.769.043-1.145.13-.376.086-.764.21-1.165.369v-1.074a7.36 7.36 0 011.087-.3 7.6 7.6 0 01.642-.1c.224-.025.45-.037.677-.037.415 0 .789.045 1.121.137.333.09.614.23.844.417.23.186.407.421.53.704.123.282.185.615.185.998v4.73h-1.067zm-.13-3.124h-1.51c-.296 0-.552.03-.766.09-.214.058-.39.143-.526.252-.137.11-.238.24-.304.393-.067.153-.1.325-.1.516 0 .132.021.259.062.38.041.12.107.227.198.32.091.094.21.168.356.223.146.055.323.082.533.082.273 0 .587-.083.94-.25.353-.166.726-.429 1.118-.789v-1.217zm9.776-3.74l-.998 6.864h-1.443l-.99-2.87-.199-.698-.226.738-.95 2.83h-1.401l-.991-6.863h1.162l.574 4.662.123 1.04.294-.91.998-3.083h.855l1.073 3.042.307.91.103-.965.533-4.696h1.176zm5.749 6.864l-.027-.923c-.374.37-.754.636-1.139.8-.385.164-.79.246-1.213.246-.392 0-.727-.05-1.005-.15a1.883 1.883 0 01-.687-.414 1.603 1.603 0 01-.396-.618 2.289 2.289 0 01-.127-.773c0-.688.257-1.227.77-1.617.512-.39 1.27-.584 2.272-.584h1.422v-.602c0-.405-.13-.73-.39-.974-.26-.243-.656-.365-1.19-.365-.386 0-.768.043-1.144.13-.376.086-.765.21-1.166.369v-1.074a7.36 7.36 0 011.087-.3 7.6 7.6 0 01.643-.1c.223-.025.449-.037.677-.037.414 0 .788.045 1.12.137.333.09.615.23.845.417.23.186.407.421.53.704.123.282.184.615.184.998v4.73h-1.066zm-.13-3.124h-1.51c-.297 0-.552.03-.766.09-.215.058-.39.143-.527.252-.136.11-.238.24-.304.393-.066.153-.099.325-.099.516 0 .132.02.259.062.38.04.12.107.227.198.32.09.094.21.168.355.223.146.055.324.082.533.082.274 0 .587-.083.94-.25.354-.166.726-.429 1.118-.789v-1.217zm5.756-2.755h-2.03v-.984h3.233v5.872h2.044v.991h-5.503v-.991h2.256v-4.888zm.417-3.862c.132 0 .255.024.369.072a.893.893 0 01.297.201.919.919 0 01.27.663.96.96 0 01-.27.663.893.893 0 01-.297.202.944.944 0 01-.37.072.944.944 0 01-.368-.072.893.893 0 01-.298-.201.96.96 0 01-.27-.663.919.919 0 01.27-.664.893.893 0 01.298-.201.944.944 0 01.369-.072zm10.473 9.646a5.793 5.793 0 01-.834.146 8.52 8.52 0 01-.875.045c-.862 0-1.504-.195-1.928-.585-.424-.39-.636-.987-.636-1.794v-3.582h-1.92v-.998h1.92V32.99l1.19-.307v2.194h3.083v.998h-3.083v3.486c0 .492.13.86.393 1.104.262.244.648.366 1.158.366.219 0 .458-.017.718-.051.26-.034.531-.088.814-.16v1.025z"/><path id="fetch" fill="#181717" d="M167.89 33.19c-.624-.133-1.161-.199-1.613-.199-1.07 0-1.606.56-1.606 1.682v1.203h3.008v.991h-3.008v4.874h-1.21v-4.874h-2.208v-.991h2.208v-1.135c0-1.827.952-2.741 2.857-2.741.474 0 .998.055 1.573.164v1.025zm7.404 4.757c0 .169-.002.31-.007.424a6.37 6.37 0 01-.02.321h-4.82c0 .702.196 1.241.588 1.617.392.376.957.564 1.695.564.201 0 .402-.008.602-.024.2-.016.394-.037.581-.065.187-.027.366-.058.537-.092.17-.034.329-.072.475-.113v.978a9.161 9.161 0 01-2.365.308c-.588 0-1.094-.08-1.518-.24a2.597 2.597 0 01-1.042-.694 2.857 2.857 0 01-.602-1.114 5.273 5.273 0 01-.195-1.494c0-.483.07-.94.209-1.37a3.44 3.44 0 01.608-1.135c.267-.326.594-.585.981-.776a2.94 2.94 0 011.32-.287c.478 0 .902.075 1.27.225.37.15.681.364.934.64.253.275.444.61.574 1.005.13.394.195.835.195 1.322zm-1.237-.17a2.593 2.593 0 00-.09-.838 1.763 1.763 0 00-.338-.653 1.576 1.576 0 00-.57-.427 1.916 1.916 0 00-.793-.154c-.26 0-.497.05-.711.15-.215.1-.4.242-.554.424a2.19 2.19 0 00-.376.657 3.026 3.026 0 00-.178.84h3.61zm8.668 3.869a5.793 5.793 0 01-.834.146 8.52 8.52 0 01-.875.045c-.862 0-1.504-.195-1.928-.585-.424-.39-.636-.987-.636-1.794v-3.582h-1.92v-.998h1.92V32.99l1.19-.307v2.194h3.083v.998h-3.083v3.486c0 .492.13.86.393 1.104.262.244.648.366 1.158.366.22 0 .458-.017.718-.051.26-.034.531-.088.814-.16v1.025zm7.499-.158c-.31.119-.628.206-.954.263a5.845 5.845 0 01-1.008.086c-1.085 0-1.92-.294-2.506-.882-.585-.588-.878-1.447-.878-2.577 0-.542.084-1.035.253-1.477a3.142 3.142 0 011.805-1.863c.423-.17.89-.256 1.4-.256.356 0 .69.025.999.075.31.05.606.133.889.247v1.134a3.77 3.77 0 00-.906-.338 4.248 4.248 0 00-.954-.106c-.305 0-.593.058-.864.174-.272.116-.51.284-.715.503a2.38 2.38 0 00-.485.8c-.119.314-.178.67-.178 1.066 0 .83.202 1.45.605 1.863.403.412.963.618 1.678.618a3.897 3.897 0 001.818-.438v1.108zm7.881.253h-1.189V37.36c0-.528-.1-.924-.297-1.186-.199-.262-.482-.393-.851-.393-.16 0-.31.022-.448.065a1.557 1.557 0 00-.434.226 3.73 3.73 0 00-.492.434c-.178.182-.383.41-.616.683v4.553h-1.19v-9.659h1.19v2.796l-.04 1.08c.186-.223.37-.411.55-.564.18-.153.36-.277.54-.373.18-.095.363-.164.55-.205.187-.04.38-.061.581-.061.684 0 1.212.208 1.586.625.374.417.56 1.045.56 1.884v4.477z"/><path id="(" fill="#7E7C7B" d="M204.395 44.612c-2.101-1.946-3.152-4.097-3.152-6.453 0-.551.056-1.102.168-1.65.111-.55.291-1.1.54-1.652a9.028 9.028 0 01.984-1.654c.408-.551.904-1.098 1.487-1.64l.69.704c-1.768 1.745-2.652 3.68-2.652 5.803 0 1.058.223 2.074.67 3.05.447.974 1.107 1.895 1.982 2.76l-.717.732z"/><path id="'https://gmail.com/messages'" fill="#478964" d="M19.093 46.082l-.198 3.206h-1.176l-.192-3.206h1.566zm9.673 9.66h-1.19v-4.383c0-.528-.099-.924-.297-1.186-.198-.262-.482-.393-.851-.393-.16 0-.309.022-.448.065a1.557 1.557 0 00-.434.226 3.73 3.73 0 00-.492.434c-.178.182-.383.41-.616.683v4.553H23.25v-9.659h1.19v2.796l-.042 1.08c.187-.223.37-.411.55-.564.18-.153.36-.277.54-.373.18-.095.364-.164.551-.205.187-.04.38-.061.581-.061.684 0 1.212.208 1.586.625.374.417.56 1.045.56 1.884v4.477zm7.71-.096a5.793 5.793 0 01-.833.146 8.52 8.52 0 01-.875.045c-.862 0-1.504-.195-1.928-.585-.424-.39-.636-.987-.636-1.794v-3.582h-1.92v-.998h1.92V46.99l1.19-.307v2.194h3.083v.998h-3.083v3.486c0 .492.13.86.393 1.104.262.244.648.366 1.158.366.22 0 .458-.017.718-.051.26-.034.531-.088.814-.16v1.025zm7.698 0a5.793 5.793 0 01-.834.146 8.52 8.52 0 01-.875.045c-.861 0-1.504-.195-1.928-.585-.424-.39-.636-.987-.636-1.794v-3.582h-1.92v-.998h1.92V46.99l1.19-.307v2.194h3.083v.998H41.09v3.486c0 .492.13.86.393 1.104.262.244.648.366 1.159.366.218 0 .458-.017.717-.051.26-.034.531-.088.814-.16v1.025zm8.032-3.46c0 .611-.085 1.144-.256 1.6-.171.456-.407.834-.708 1.135a2.9 2.9 0 01-1.066.677c-.41.15-.855.225-1.333.225-.219 0-.437-.011-.653-.034a4.952 4.952 0 01-.66-.116v2.87h-1.19v-9.665h1.06l.076 1.148c.341-.469.706-.798 1.093-.987.388-.19.807-.284 1.258-.284.392 0 .736.082 1.032.246.297.164.545.395.745.694.201.298.351.658.452 1.08.1.421.15.892.15 1.412zm-1.217.055c0-.36-.026-.69-.078-.991a2.586 2.586 0 00-.25-.772 1.37 1.37 0 00-.437-.503 1.104 1.104 0 00-.636-.181c-.15 0-.303.024-.458.072a1.857 1.857 0 00-.482.239 3.59 3.59 0 00-.526.444 7 7 0 00-.592.687v3.33c.219.09.45.162.69.215.242.052.48.078.712.078.642 0 1.146-.217 1.51-.652.365-.436.547-1.09.547-1.966zm8.484 1.627a1.634 1.634 0 01-.458 1.159 2.084 2.084 0 01-.493.38 3.272 3.272 0 01-.598.259c-.212.068-.43.119-.653.15a4.637 4.637 0 01-.656.048 12.3 12.3 0 01-1.282-.061 8.646 8.646 0 01-1.145-.199v-1.093c.402.114.8.2 1.197.26.396.059.79.088 1.182.088.57 0 .992-.077 1.265-.232.273-.155.41-.376.41-.663a.812.812 0 00-.065-.332.753.753 0 00-.236-.28 2.254 2.254 0 00-.53-.277 11.81 11.81 0 00-.98-.328 6.963 6.963 0 01-.858-.311 2.877 2.877 0 01-.68-.414 1.776 1.776 0 01-.452-.56 1.649 1.649 0 01-.164-.759 1.744 1.744 0 01.588-1.265c.214-.195.504-.358.868-.488.365-.13.82-.195 1.368-.195.268 0 .567.015.895.044.328.03.67.081 1.025.154v1.06a9.803 9.803 0 00-1.063-.202 6.926 6.926 0 00-.871-.065c-.296 0-.546.023-.749.068a1.553 1.553 0 00-.492.188.734.734 0 00-.27.28.748.748 0 00-.082.346c0 .123.024.235.072.335.048.1.137.197.267.29.13.094.31.187.543.28.232.094.535.196.91.305.405.118.747.243 1.025.372.278.13.503.275.676.435.173.159.298.339.373.54.075.2.113.428.113.683zm5.017-5.113c.142 0 .276.028.404.085a1.107 1.107 0 01.564.564.978.978 0 01.085.404.971.971 0 01-.085.406 1.12 1.12 0 01-.23.332 1.058 1.058 0 01-.738.308c-.146 0-.281-.028-.407-.083a1.07 1.07 0 01-.557-.557 1.006 1.006 0 01-.082-.406 1.058 1.058 0 01.308-.738 1.12 1.12 0 01.331-.23.971.971 0 01.407-.085zm0 5.01c.142 0 .276.03.404.086a1.107 1.107 0 01.564.564.978.978 0 01.085.403.971.971 0 01-.085.407 1.12 1.12 0 01-.23.332 1.058 1.058 0 01-.738.307c-.146 0-.281-.027-.407-.082a1.07 1.07 0 01-.557-.557 1.006 1.006 0 01-.082-.407 1.058 1.058 0 01.308-.738 1.12 1.12 0 01.331-.229.971.971 0 01.407-.085zm10.46-7.683l-4.69 11.129h-1.135l4.69-11.129h1.134zm7.696 0l-4.689 11.129h-1.135l4.69-11.129h1.134zm7.124 3.767c.127.16.226.345.297.557.07.212.106.44.106.687 0 .355-.065.68-.195.974-.13.294-.313.546-.55.755a2.54 2.54 0 01-.851.489c-.33.116-.694.174-1.09.174-.288 0-.557-.03-.807-.092a2.064 2.064 0 01-.595-.229c-.087.128-.16.248-.219.362a.817.817 0 00-.089.383c0 .173.084.317.25.43.166.115.386.176.66.185l1.804.069c.342.009.658.052.947.13.29.077.538.189.745.335.207.145.37.325.485.54.117.214.175.462.175.745 0 .305-.066.594-.198.868a1.985 1.985 0 01-.612.721c-.276.207-.626.373-1.05.496-.423.123-.927.184-1.51.184-.556 0-1.03-.044-1.419-.133-.39-.089-.71-.212-.96-.37a1.49 1.49 0 01-.547-.56 1.51 1.51 0 01-.171-.714c0-.333.077-.624.232-.875.155-.25.395-.492.718-.725a1.133 1.133 0 01-.52-.475 1.322 1.322 0 01-.164-.632c0-.296.07-.567.21-.814.138-.246.303-.478.495-.697a3.57 3.57 0 01-.23-.307 1.91 1.91 0 01-.28-.701 2.536 2.536 0 01-.037-.462c0-.355.065-.68.195-.974.13-.294.312-.545.547-.755.234-.21.517-.373.847-.489.33-.116.696-.174 1.097-.174.169 0 .33.011.486.034.155.023.291.052.41.089h2.488v.97h-1.1zm-4.13 6.883c0 .324.17.56.506.708.338.148.807.222 1.409.222.378 0 .696-.034.953-.102.258-.069.465-.159.622-.27.158-.112.27-.24.339-.383.068-.144.102-.29.102-.441 0-.278-.114-.483-.342-.615-.227-.133-.576-.21-1.045-.233l-1.791-.061c-.15.1-.275.198-.373.294a1.292 1.292 0 00-.229.29 1.127 1.127 0 00-.116.294 1.309 1.309 0 00-.034.297zm.363-5.612c0 .219.036.42.11.602.072.182.175.337.307.465.132.127.288.226.468.297.18.07.38.106.598.106.237 0 .448-.04.633-.12.184-.08.34-.188.464-.324.126-.137.222-.294.288-.472.066-.178.099-.362.099-.554 0-.219-.037-.42-.11-.601a1.316 1.316 0 00-.307-.465 1.404 1.404 0 00-.469-.298c-.18-.07-.379-.106-.598-.106-.237 0-.447.041-.632.123-.185.082-.34.19-.465.325s-.22.29-.287.468c-.066.178-.1.363-.1.554zm11.416 4.621v-4.928c0-.215-.008-.39-.024-.527a1.2 1.2 0 00-.075-.325.348.348 0 00-.13-.167.43.43 0 00-.448.034c-.077.055-.16.144-.25.267a4.216 4.216 0 00-.293.488c-.107.203-.234.453-.38.749v4.41h-1.087v-4.8c0-.25-.008-.453-.024-.608a1.42 1.42 0 00-.075-.362.34.34 0 00-.133-.178.431.431 0 00-.43.02.988.988 0 00-.243.247c-.09.118-.188.28-.298.485-.11.205-.239.467-.39.786v4.41h-1.093v-6.864h.91l.054 1.306c.118-.26.233-.481.345-.663.112-.183.227-.33.345-.441.119-.112.245-.194.38-.247.134-.052.283-.078.447-.078.37 0 .65.12.841.362.192.242.287.615.287 1.121.11-.237.217-.447.322-.632a2.31 2.31 0 01.338-.465c.12-.125.254-.22.4-.287.146-.066.314-.1.506-.1.861 0 1.292.664 1.292 1.99v4.997h-1.094zm7.212 0l-.027-.923c-.374.37-.754.636-1.139.8-.385.164-.79.246-1.213.246-.392 0-.727-.05-1.005-.15a1.883 1.883 0 01-.687-.414 1.603 1.603 0 01-.396-.618 2.289 2.289 0 01-.127-.773c0-.688.256-1.227.77-1.617.512-.39 1.27-.584 2.272-.584h1.422v-.602c0-.405-.13-.73-.39-.974-.26-.243-.656-.365-1.19-.365-.386 0-.768.043-1.144.13-.376.086-.765.21-1.166.369v-1.074a7.36 7.36 0 011.087-.3 7.6 7.6 0 01.643-.1c.223-.025.449-.037.677-.037.414 0 .788.045 1.12.137.333.09.615.23.845.417.23.186.407.421.53.704.123.282.184.615.184.998v4.73h-1.066zm-.13-3.124h-1.51c-.297 0-.552.03-.766.09-.215.058-.39.143-.527.252-.136.11-.238.24-.304.393-.066.153-.1.325-.1.516 0 .132.021.259.062.38.041.12.108.227.199.32.09.094.21.168.355.223.146.055.324.082.533.082.274 0 .587-.083.94-.25.353-.166.726-.429 1.118-.789v-1.217zm5.756-2.755h-2.03v-.984h3.233v5.872h2.044v.991H108v-.991h2.256v-4.888zm.417-3.862c.132 0 .255.024.369.072a.893.893 0 01.297.201.919.919 0 01.27.663.96.96 0 01-.27.663.893.893 0 01-.297.202.944.944 0 01-.37.072.944.944 0 01-.368-.072.893.893 0 01-.298-.201.96.96 0 01-.27-.663.919.919 0 01.27-.664.893.893 0 01.298-.201.944.944 0 01.369-.072zm7.28 1.06h-2.03v-.978h3.233v8.668h2.044v.991h-5.503v-.991h2.256v-7.69zm8.06 6.528a1.113 1.113 0 01.803.335c.102.105.183.227.243.366.059.139.088.288.088.447 0 .155-.03.301-.088.438a1.148 1.148 0 01-.605.601c-.14.06-.286.09-.441.09-.16 0-.308-.03-.445-.09a1.148 1.148 0 01-.601-.601 1.088 1.088 0 01-.09-.438 1.178 1.178 0 01.332-.813 1.12 1.12 0 01.804-.335zm10.329 1.9c-.31.119-.628.206-.954.263a5.845 5.845 0 01-1.008.086c-1.085 0-1.92-.294-2.506-.882-.585-.588-.878-1.447-.878-2.577 0-.542.084-1.035.253-1.477.169-.442.406-.82.71-1.134.306-.315.67-.558 1.095-.728.424-.171.89-.257 1.401-.257.356 0 .688.025.998.075.31.05.606.133.889.247v1.134a3.77 3.77 0 00-.906-.338 4.248 4.248 0 00-.954-.106c-.305 0-.593.058-.864.174-.272.116-.51.284-.715.503a2.38 2.38 0 00-.485.8c-.119.314-.178.67-.178 1.066 0 .83.202 1.45.605 1.863.404.412.963.618 1.678.618a3.897 3.897 0 001.818-.438v1.108zm8.34-3.233a4.55 4.55 0 01-.226 1.466c-.15.445-.367.825-.65 1.142a2.913 2.913 0 01-1.032.738 3.447 3.447 0 01-1.38.263c-.493 0-.934-.076-1.323-.229a2.617 2.617 0 01-.991-.673 2.98 2.98 0 01-.623-1.1c-.143-.438-.215-.942-.215-1.511 0-.534.075-1.02.226-1.46.15-.44.367-.818.65-1.135a2.913 2.913 0 011.031-.738 3.447 3.447 0 011.381-.263c.492 0 .933.076 1.323.229.39.153.72.376.991.67.271.294.479.66.622 1.097.144.437.216.939.216 1.504zm-1.217.055c0-.424-.047-.795-.14-1.111a2.237 2.237 0 00-.4-.793 1.65 1.65 0 00-.633-.479 2.077 2.077 0 00-.83-.16c-.356 0-.66.07-.913.208-.253.14-.46.325-.622.557a2.4 2.4 0 00-.355.81 4.06 4.06 0 00-.113.968c0 .423.047.795.14 1.114.094.319.227.584.4.796.173.212.383.372.629.479.246.107.524.16.834.16.355 0 .66-.07.912-.208.253-.14.46-.325.623-.557a2.4 2.4 0 00.355-.81 4.09 4.09 0 00.113-.974zm7.834 3.431v-4.928c0-.215-.008-.39-.024-.527a1.2 1.2 0 00-.075-.325.348.348 0 00-.13-.167.43.43 0 00-.448.034c-.077.055-.16.144-.25.267a4.216 4.216 0 00-.293.488 30.3 30.3 0 00-.38.749v4.41h-1.087v-4.8c0-.25-.008-.453-.024-.608a1.42 1.42 0 00-.075-.362.34.34 0 00-.133-.178.431.431 0 00-.43.02.988.988 0 00-.243.247c-.09.118-.188.28-.298.485-.11.205-.24.467-.39.786v4.41h-1.093v-6.864h.909l.055 1.306c.118-.26.233-.481.345-.663.111-.183.227-.33.345-.441.119-.112.245-.194.38-.247.134-.052.283-.078.447-.078.37 0 .65.12.841.362.191.242.287.615.287 1.121.11-.237.217-.447.321-.632a2.31 2.31 0 01.339-.465c.12-.125.254-.22.4-.287.146-.066.314-.1.506-.1.86 0 1.292.664 1.292 1.99v4.997H151.3zm8.32-9.659l-4.69 11.129h-1.135l4.69-11.129h1.134zm7.074 9.66v-4.93c0-.214-.008-.39-.024-.526a1.2 1.2 0 00-.075-.325.348.348 0 00-.13-.167.43.43 0 00-.448.034c-.077.055-.16.144-.249.267a4.216 4.216 0 00-.294.488c-.107.203-.233.453-.38.749v4.41h-1.086v-4.8c0-.25-.008-.453-.024-.608a1.42 1.42 0 00-.075-.362.34.34 0 00-.134-.178.431.431 0 00-.43.02.988.988 0 00-.243.247c-.089.118-.188.28-.297.485-.11.205-.24.467-.39.786v4.41h-1.094v-6.864h.91l.054 1.306c.119-.26.234-.481.345-.663.112-.183.227-.33.346-.441.118-.112.245-.194.379-.247.134-.052.284-.078.448-.078.369 0 .65.12.84.362.192.242.288.615.288 1.121.109-.237.216-.447.321-.632a2.31 2.31 0 01.338-.465c.121-.125.254-.22.4-.287.146-.066.315-.1.506-.1.861 0 1.292.664 1.292 1.99v4.997h-1.094zm8.6-3.795c0 .169-.002.31-.007.424a6.37 6.37 0 01-.02.321h-4.82c0 .702.196 1.241.588 1.617.392.376.957.564 1.695.564.201 0 .402-.008.602-.024.2-.016.394-.037.581-.065.187-.027.366-.058.537-.092.17-.034.329-.072.475-.113v.978a9.161 9.161 0 01-2.365.308c-.588 0-1.094-.08-1.518-.24a2.597 2.597 0 01-1.042-.694 2.857 2.857 0 01-.602-1.114 5.273 5.273 0 01-.195-1.494c0-.483.07-.94.209-1.37a3.44 3.44 0 01.608-1.135c.267-.326.594-.585.981-.776a2.94 2.94 0 011.32-.287c.478 0 .902.075 1.27.225.37.15.681.364.934.64.253.275.444.61.574 1.005.13.394.195.835.195 1.322zm-1.237-.17a2.593 2.593 0 00-.09-.838 1.763 1.763 0 00-.338-.653 1.576 1.576 0 00-.57-.427 1.916 1.916 0 00-.793-.154c-.26 0-.497.05-.711.15-.215.1-.4.242-.554.424a2.19 2.19 0 00-.376.657 3.026 3.026 0 00-.178.84h3.61zm8.572 2.091a1.634 1.634 0 01-.458 1.159 2.084 2.084 0 01-.492.38 3.272 3.272 0 01-.598.259c-.212.068-.43.119-.653.15a4.637 4.637 0 01-.657.048 12.3 12.3 0 01-1.281-.061 8.646 8.646 0 01-1.145-.199v-1.093c.4.114.8.2 1.196.26.397.059.79.088 1.183.088.57 0 .99-.077 1.264-.232.274-.155.41-.376.41-.663a.812.812 0 00-.065-.332.753.753 0 00-.235-.28 2.254 2.254 0 00-.53-.277 11.81 11.81 0 00-.981-.328 6.963 6.963 0 01-.858-.311 2.877 2.877 0 01-.68-.414 1.776 1.776 0 01-.451-.56 1.649 1.649 0 01-.164-.759 1.744 1.744 0 01.587-1.265c.215-.195.504-.358.869-.488.364-.13.82-.195 1.367-.195.269 0 .567.015.895.044.328.03.67.081 1.026.154v1.06a9.803 9.803 0 00-1.063-.202 6.926 6.926 0 00-.872-.065c-.296 0-.546.023-.748.068a1.553 1.553 0 00-.493.188.734.734 0 00-.27.28.748.748 0 00-.082.346c0 .123.024.235.072.335.048.1.137.197.267.29.13.094.31.187.543.28.233.094.536.196.91.305.405.118.747.243 1.025.372.278.13.503.275.677.435.173.159.297.339.372.54.075.2.113.428.113.683zm7.697 0a1.634 1.634 0 01-.458 1.159 2.084 2.084 0 01-.492.38 3.272 3.272 0 01-.598.259c-.212.068-.43.119-.653.15a4.637 4.637 0 01-.656.048 12.3 12.3 0 01-1.282-.061 8.646 8.646 0 01-1.145-.199v-1.093c.401.114.8.2 1.196.26.397.059.791.088 1.183.088.57 0 .991-.077 1.265-.232.273-.155.41-.376.41-.663a.812.812 0 00-.065-.332.753.753 0 00-.236-.28 2.254 2.254 0 00-.53-.277 11.81 11.81 0 00-.98-.328 6.963 6.963 0 01-.859-.311 2.877 2.877 0 01-.68-.414 1.776 1.776 0 01-.451-.56 1.649 1.649 0 01-.164-.759 1.744 1.744 0 01.588-1.265c.214-.195.503-.358.868-.488.364-.13.82-.195 1.367-.195.269 0 .567.015.896.044.328.03.67.081 1.025.154v1.06a9.803 9.803 0 00-1.063-.202 6.926 6.926 0 00-.872-.065c-.296 0-.545.023-.748.068a1.553 1.553 0 00-.492.188.734.734 0 00-.27.28.748.748 0 00-.082.346c0 .123.024.235.071.335.048.1.137.197.267.29.13.094.311.187.543.28.233.094.536.196.91.305.405.118.747.243 1.025.372.278.13.504.275.677.435.173.159.297.339.372.54.076.2.113.428.113.683zm6.672 1.873l-.027-.923c-.374.37-.753.636-1.138.8-.386.164-.79.246-1.214.246-.392 0-.727-.05-1.005-.15a1.883 1.883 0 01-.687-.414 1.603 1.603 0 01-.396-.618 2.289 2.289 0 01-.127-.773c0-.688.257-1.227.77-1.617.512-.39 1.27-.584 2.272-.584h1.422v-.602c0-.405-.13-.73-.39-.974-.26-.243-.656-.365-1.189-.365-.387 0-.769.043-1.145.13-.376.086-.764.21-1.165.369v-1.074a7.36 7.36 0 011.086-.3 7.6 7.6 0 01.643-.1c.223-.025.449-.037.677-.037.414 0 .788.045 1.12.137.334.09.615.23.845.417.23.186.407.421.53.704.123.282.184.615.184.998v4.73h-1.066zm-.13-3.124h-1.51c-.297 0-.552.03-.766.09-.214.058-.39.143-.527.252-.136.11-.238.24-.304.393-.066.153-.099.325-.099.516 0 .132.02.259.062.38.04.12.107.227.198.32.091.094.21.168.355.223.146.055.324.082.534.082.273 0 .586-.083.94-.25.353-.166.725-.429 1.117-.789v-1.217zm8.36-2.768c.128.16.227.345.298.557.07.212.106.44.106.687 0 .355-.065.68-.195.974-.13.294-.313.546-.55.755a2.54 2.54 0 01-.851.489c-.33.116-.694.174-1.09.174-.288 0-.557-.03-.807-.092a2.064 2.064 0 01-.595-.229c-.087.128-.16.248-.219.362a.817.817 0 00-.089.383c0 .173.083.317.25.43.166.115.386.176.66.185l1.804.069c.342.009.658.052.947.13.29.077.538.189.745.335.207.145.37.325.485.54.117.214.175.462.175.745 0 .305-.066.594-.198.868a1.985 1.985 0 01-.612.721c-.276.207-.626.373-1.05.496-.423.123-.927.184-1.51.184-.556 0-1.03-.044-1.419-.133-.39-.089-.71-.212-.96-.37a1.49 1.49 0 01-.547-.56 1.51 1.51 0 01-.171-.714c0-.333.077-.624.232-.875.155-.25.395-.492.718-.725a1.133 1.133 0 01-.52-.475 1.322 1.322 0 01-.164-.632c0-.296.07-.567.21-.814.138-.246.303-.478.495-.697a3.57 3.57 0 01-.23-.307 1.91 1.91 0 01-.28-.701 2.536 2.536 0 01-.037-.462c0-.355.065-.68.195-.974.13-.294.312-.545.546-.755.235-.21.518-.373.848-.489.33-.116.696-.174 1.097-.174.169 0 .33.011.486.034.155.023.291.052.41.089h2.488v.97h-1.1zm-4.128 6.883c0 .324.168.56.505.708.338.148.807.222 1.409.222.378 0 .696-.034.953-.102.258-.069.465-.159.622-.27.158-.112.27-.24.339-.383.068-.144.102-.29.102-.441 0-.278-.114-.483-.342-.615-.227-.133-.576-.21-1.045-.233l-1.791-.061c-.15.1-.275.198-.373.294a1.292 1.292 0 00-.229.29 1.127 1.127 0 00-.116.294 1.309 1.309 0 00-.034.297zm.362-5.612c0 .219.036.42.11.602.072.182.175.337.307.465.132.127.288.226.468.297.18.07.38.106.598.106.237 0 .448-.04.633-.12.184-.08.34-.188.464-.324.126-.137.222-.294.288-.472.066-.178.099-.362.099-.554 0-.219-.037-.42-.11-.601a1.316 1.316 0 00-.307-.465 1.404 1.404 0 00-.469-.298c-.18-.07-.379-.106-.598-.106-.237 0-.447.041-.632.123-.185.082-.34.19-.465.325s-.22.29-.287.468c-.066.178-.1.363-.1.554zm12.318.827c0 .169-.002.31-.007.424a6.372 6.372 0 01-.02.321h-4.82c0 .702.197 1.241.588 1.617.392.376.958.564 1.696.564.2 0 .4-.008.601-.024.2-.016.395-.037.581-.065.187-.027.366-.058.537-.092.17-.034.33-.072.475-.113v.978a9.161 9.161 0 01-2.365.308c-.588 0-1.094-.08-1.518-.24a2.597 2.597 0 01-1.042-.694 2.857 2.857 0 01-.602-1.114 5.273 5.273 0 01-.195-1.494c0-.483.07-.94.209-1.37a3.44 3.44 0 01.608-1.135c.267-.326.594-.585.981-.776a2.94 2.94 0 011.32-.287c.478 0 .902.075 1.271.225.37.15.68.364.933.64.253.275.445.61.574 1.005.13.394.195.835.195 1.322zm-1.237-.17a2.593 2.593 0 00-.089-.838 1.763 1.763 0 00-.338-.653 1.576 1.576 0 00-.571-.427 1.916 1.916 0 00-.793-.154c-.26 0-.497.05-.711.15-.214.1-.399.242-.554.424a2.19 2.19 0 00-.376.657 3.026 3.026 0 00-.177.84h3.609zm8.572 2.091a1.634 1.634 0 01-.458 1.159 2.084 2.084 0 01-.492.38 3.272 3.272 0 01-.598.259c-.212.068-.43.119-.653.15a4.637 4.637 0 01-.656.048 12.3 12.3 0 01-1.282-.061 8.646 8.646 0 01-1.145-.199v-1.093c.401.114.8.2 1.196.26.397.059.791.088 1.183.088.57 0 .991-.077 1.265-.232.273-.155.41-.376.41-.663a.812.812 0 00-.065-.332.753.753 0 00-.236-.28 2.254 2.254 0 00-.53-.277 11.81 11.81 0 00-.98-.328 6.963 6.963 0 01-.859-.311 2.877 2.877 0 01-.68-.414 1.776 1.776 0 01-.451-.56 1.649 1.649 0 01-.164-.759 1.744 1.744 0 01.588-1.265c.214-.195.503-.358.868-.488s.82-.195 1.367-.195c.269 0 .568.015.896.044.328.03.67.081 1.025.154v1.06a9.803 9.803 0 00-1.063-.202 6.926 6.926 0 00-.872-.065c-.296 0-.545.023-.748.068a1.553 1.553 0 00-.492.188.734.734 0 00-.27.28.748.748 0 00-.082.346c0 .123.024.235.071.335.048.1.137.197.267.29.13.094.311.187.544.28.232.094.535.196.909.305.405.118.747.243 1.025.372.278.13.504.275.677.435.173.159.297.339.372.54.076.2.113.428.113.683zm5.804-7.786l-.198 3.206h-1.176l-.191-3.206h1.565z"/><path id=");" fill="#7E7C7B" d="M1.559 59.563c2.1 1.945 3.151 4.11 3.151 6.494 0 .492-.05 1.002-.15 1.53-.1.53-.272 1.07-.513 1.624a9.296 9.296 0 01-.974 1.685c-.408.57-.922 1.142-1.542 1.716l-.69-.704c.888-.88 1.552-1.798 1.99-2.755.437-.957.655-1.96.655-3.007 0-2.17-.881-4.12-2.645-5.852l.718-.731zm6.91 11.58c.233.009.459-.012.677-.062a2.02 2.02 0 00.578-.222c.166-.098.3-.22.4-.366a.86.86 0 00.15-.499.95.95 0 00-.099-.465 2.238 2.238 0 00-.222-.328 2.438 2.438 0 01-.222-.321.91.91 0 01-.1-.458.915.915 0 01.223-.588.857.857 0 01.287-.212 1.12 1.12 0 01.875.017c.148.066.278.168.39.304.111.137.2.308.266.513.066.205.1.447.1.725 0 .378-.07.741-.209 1.09a2.657 2.657 0 01-.622.926c-.276.27-.62.483-1.032.643-.413.16-.892.24-1.44.24v-.937zm2.14-8.388c.142 0 .276.028.404.085a1.107 1.107 0 01.564.564.978.978 0 01.085.404.971.971 0 01-.085.406 1.12 1.12 0 01-.23.332 1.058 1.058 0 01-.738.308c-.145 0-.281-.028-.406-.083a1.07 1.07 0 01-.557-.557 1.006 1.006 0 01-.083-.406 1.058 1.058 0 01.308-.738 1.12 1.12 0 01.332-.23.971.971 0 01.406-.085z"/><path id="let" fill="#1C85B5" d="M2.495 117.06H.465v-.978h3.233v8.668h2.044v.991H.24v-.991h2.256v-7.69zm11.156 4.887c0 .169-.002.31-.006.424a6.37 6.37 0 01-.021.321h-4.82c0 .702.197 1.241.589 1.617.392.376.957.564 1.695.564.2 0 .4-.008.601-.024.201-.016.395-.037.582-.065.186-.027.365-.058.536-.092.171-.034.33-.072.475-.113v.978a9.161 9.161 0 01-2.365.308c-.588 0-1.094-.08-1.518-.24a2.597 2.597 0 01-1.042-.694 2.857 2.857 0 01-.602-1.114 5.273 5.273 0 01-.194-1.494c0-.483.069-.94.208-1.37a3.44 3.44 0 01.608-1.135c.267-.326.594-.585.981-.776a2.94 2.94 0 011.32-.287c.478 0 .902.075 1.271.225.37.15.68.364.933.64.253.275.445.61.575 1.005.13.394.194.835.194 1.322zm-1.237-.17a2.593 2.593 0 00-.089-.838 1.763 1.763 0 00-.338-.653 1.576 1.576 0 00-.571-.427 1.916 1.916 0 00-.793-.154c-.26 0-.497.05-.71.15-.215.1-.4.242-.555.424a2.19 2.19 0 00-.376.657 3.026 3.026 0 00-.177.84h3.61zm8.668 3.869a5.793 5.793 0 01-.834.146 8.52 8.52 0 01-.875.045c-.861 0-1.504-.195-1.928-.585-.424-.39-.635-.987-.635-1.794v-3.582h-1.921v-.998h1.92v-1.887l1.19-.307v2.194h3.083v.998h-3.083v3.486c0 .492.131.86.393 1.104.262.244.648.366 1.159.366.219 0 .458-.017.718-.051.26-.034.53-.088.813-.16v1.025z"/><path id="messages" fill="#181717" d="M35.84 125.741v-4.928c0-.215-.007-.39-.023-.527a1.2 1.2 0 00-.075-.325.348.348 0 00-.13-.167.43.43 0 00-.448.034c-.077.055-.16.144-.25.267a4.216 4.216 0 00-.293.488c-.107.203-.234.453-.38.749v4.41h-1.087v-4.8c0-.25-.008-.453-.024-.608a1.42 1.42 0 00-.075-.362.34.34 0 00-.133-.178.431.431 0 00-.43.02.988.988 0 00-.243.247c-.09.118-.188.28-.298.485-.11.205-.24.467-.39.786v4.41h-1.093v-6.864h.909l.055 1.306c.118-.26.233-.481.345-.663.112-.183.227-.33.345-.441.119-.112.245-.194.38-.247.134-.052.283-.078.447-.078.37 0 .65.12.841.362.191.242.287.615.287 1.121.11-.237.217-.447.321-.632a2.31 2.31 0 01.339-.465c.12-.125.254-.22.4-.287.146-.066.314-.1.506-.1.86 0 1.292.664 1.292 1.99v4.997H35.84zm8.6-3.794c0 .169-.002.31-.006.424a6.37 6.37 0 01-.02.321h-4.82c0 .702.196 1.241.588 1.617.392.376.957.564 1.695.564.2 0 .401-.008.602-.024.2-.016.394-.037.58-.065.187-.027.366-.058.537-.092.171-.034.33-.072.475-.113v.978a9.161 9.161 0 01-2.365.308c-.588 0-1.094-.08-1.518-.24a2.597 2.597 0 01-1.042-.694 2.857 2.857 0 01-.602-1.114 5.273 5.273 0 01-.194-1.494c0-.483.07-.94.208-1.37a3.44 3.44 0 01.609-1.135c.266-.326.593-.585.98-.776a2.94 2.94 0 011.32-.287c.478 0 .902.075 1.271.225.37.15.68.364.933.64.253.275.445.61.575 1.005.13.394.194.835.194 1.322zm-1.237-.17a2.593 2.593 0 00-.089-.838 1.763 1.763 0 00-.338-.653 1.576 1.576 0 00-.57-.427 1.916 1.916 0 00-.794-.154c-.26 0-.497.05-.71.15-.215.1-.4.242-.555.424a2.19 2.19 0 00-.376.657 3.026 3.026 0 00-.177.84h3.61zm8.572 2.091a1.634 1.634 0 01-.458 1.159 2.084 2.084 0 01-.492.38 3.272 3.272 0 01-.598.259c-.212.068-.43.119-.653.15a4.638 4.638 0 01-.656.048 12.3 12.3 0 01-1.282-.061 8.646 8.646 0 01-1.145-.199v-1.093c.401.114.8.2 1.197.26.396.059.79.088 1.182.088.57 0 .991-.077 1.265-.232.273-.155.41-.376.41-.663a.812.812 0 00-.065-.332.753.753 0 00-.236-.28 2.254 2.254 0 00-.53-.277 11.81 11.81 0 00-.98-.328 6.963 6.963 0 01-.859-.311 2.877 2.877 0 01-.68-.414 1.776 1.776 0 01-.45-.56 1.649 1.649 0 01-.165-.759 1.744 1.744 0 01.588-1.265c.214-.195.504-.358.868-.488.365-.13.82-.195 1.367-.195.27 0 .568.015.896.044.328.03.67.081 1.025.154v1.06a9.803 9.803 0 00-1.063-.202 6.926 6.926 0 00-.871-.065c-.297 0-.546.023-.749.068a1.553 1.553 0 00-.492.188.734.734 0 00-.27.28.748.748 0 00-.082.346c0 .123.024.235.072.335.048.1.136.197.266.29.13.094.311.187.544.28.232.094.535.196.909.305.405.118.747.243 1.025.372.278.13.504.275.677.435.173.159.297.339.373.54.075.2.112.428.112.683zm7.698 0a1.634 1.634 0 01-.458 1.159 2.084 2.084 0 01-.493.38 3.272 3.272 0 01-.598.259c-.212.068-.43.119-.653.15a4.638 4.638 0 01-.656.048 12.3 12.3 0 01-1.282-.061 8.646 8.646 0 01-1.145-.199v-1.093c.402.114.8.2 1.197.26.396.059.79.088 1.182.088.57 0 .992-.077 1.265-.232.273-.155.41-.376.41-.663a.812.812 0 00-.065-.332.753.753 0 00-.236-.28 2.254 2.254 0 00-.53-.277 11.81 11.81 0 00-.98-.328 6.963 6.963 0 01-.858-.311 2.877 2.877 0 01-.68-.414 1.776 1.776 0 01-.452-.56 1.649 1.649 0 01-.164-.759 1.744 1.744 0 01.588-1.265c.214-.195.504-.358.868-.488.365-.13.82-.195 1.368-.195.268 0 .567.015.895.044.328.03.67.081 1.025.154v1.06a9.803 9.803 0 00-1.063-.202 6.926 6.926 0 00-.871-.065c-.296 0-.546.023-.749.068a1.553 1.553 0 00-.492.188.734.734 0 00-.27.28.748.748 0 00-.082.346c0 .123.024.235.072.335.048.1.137.197.267.29.13.094.31.187.543.28.232.094.535.196.91.305.405.118.747.243 1.025.372.278.13.503.275.676.435.173.159.298.339.373.54.075.2.113.428.113.683zm6.672 1.873l-.028-.923c-.374.37-.753.636-1.138.8-.385.164-.79.246-1.213.246-.392 0-.727-.05-1.005-.15a1.883 1.883 0 01-.687-.414 1.603 1.603 0 01-.397-.618 2.289 2.289 0 01-.126-.773c0-.688.256-1.227.769-1.617.513-.39 1.27-.584 2.273-.584h1.422v-.602c0-.405-.13-.73-.39-.974-.26-.243-.656-.365-1.19-.365-.387 0-.768.043-1.144.13-.376.086-.765.21-1.166.369v-1.074a7.36 7.36 0 011.087-.3 7.6 7.6 0 01.642-.1c.224-.025.45-.037.677-.037.415 0 .789.045 1.121.137.333.09.614.23.845.417.23.186.406.421.53.704.122.282.184.615.184.998v4.73h-1.066zm-.13-3.124h-1.511c-.296 0-.552.03-.766.09-.214.058-.39.143-.526.252-.137.11-.238.24-.304.393-.066.153-.1.325-.1.516 0 .132.021.259.062.38.041.12.107.227.198.32.092.094.21.168.356.223.146.055.323.082.533.082.273 0 .587-.083.94-.25.353-.166.726-.429 1.118-.789v-1.217zm8.36-2.768c.128.16.227.345.297.557.071.212.106.44.106.687 0 .355-.065.68-.195.974-.13.294-.313.546-.55.755a2.54 2.54 0 01-.85.489c-.331.116-.695.174-1.091.174-.287 0-.556-.03-.807-.092a2.064 2.064 0 01-.595-.229c-.086.128-.16.248-.218.362a.817.817 0 00-.09.383c0 .173.084.317.25.43.167.115.387.176.66.185l1.805.069c.341.009.657.052.946.13.29.077.538.189.746.335.207.145.369.325.485.54.116.214.174.462.174.745 0 .305-.066.594-.198.868a1.985 1.985 0 01-.612.721c-.276.207-.625.373-1.05.496-.423.123-.927.184-1.51.184-.556 0-1.029-.044-1.418-.133-.39-.089-.71-.212-.96-.37a1.49 1.49 0 01-.548-.56 1.51 1.51 0 01-.17-.714c0-.333.077-.624.232-.875.155-.25.394-.492.718-.725a1.133 1.133 0 01-.52-.475 1.322 1.322 0 01-.164-.632c0-.296.07-.567.209-.814.139-.246.304-.478.495-.697a3.57 3.57 0 01-.229-.307 1.91 1.91 0 01-.28-.701 2.536 2.536 0 01-.038-.462c0-.355.065-.68.195-.974.13-.294.312-.545.547-.755.235-.21.517-.373.848-.489.33-.116.696-.174 1.097-.174.168 0 .33.011.485.034.155.023.292.052.41.089h2.489v.97h-1.101zm-4.129 6.883c0 .324.169.56.506.708.337.148.807.222 1.408.222.378 0 .696-.034.954-.102.257-.069.465-.159.622-.27.157-.112.27-.24.338-.383.069-.144.103-.29.103-.441 0-.278-.114-.483-.342-.615-.228-.133-.577-.21-1.046-.233l-1.791-.061c-.15.1-.275.198-.373.294a1.292 1.292 0 00-.229.29 1.127 1.127 0 00-.116.294 1.309 1.309 0 00-.034.297zm.362-5.612c0 .219.037.42.11.602.073.182.175.337.307.465.133.127.289.226.469.297.18.07.379.106.598.106.237 0 .448-.04.632-.12.185-.08.34-.188.465-.324.125-.137.221-.294.287-.472.066-.178.1-.362.1-.554 0-.219-.037-.42-.11-.601a1.316 1.316 0 00-.308-.465 1.404 1.404 0 00-.468-.298c-.18-.07-.38-.106-.598-.106-.237 0-.448.041-.633.123-.184.082-.339.19-.464.325-.126.135-.221.29-.287.468-.067.178-.1.363-.1.554zm12.319.827c0 .169-.003.31-.007.424a6.37 6.37 0 01-.02.321h-4.82c0 .702.196 1.241.588 1.617.392.376.957.564 1.695.564.2 0 .401-.008.602-.024.2-.016.394-.037.58-.065.188-.027.367-.058.538-.092.17-.034.329-.072.475-.113v.978a9.161 9.161 0 01-2.365.308c-.589 0-1.094-.08-1.518-.24a2.597 2.597 0 01-1.043-.694 2.857 2.857 0 01-.601-1.114 5.273 5.273 0 01-.195-1.494c0-.483.07-.94.208-1.37a3.44 3.44 0 01.609-1.135c.266-.326.593-.585.98-.776a2.94 2.94 0 011.32-.287c.479 0 .902.075 1.272.225.369.15.68.364.933.64.253.275.444.61.574 1.005.13.394.195.835.195 1.322zm-1.238-.17a2.593 2.593 0 00-.088-.838 1.763 1.763 0 00-.339-.653 1.576 1.576 0 00-.57-.427 1.916 1.916 0 00-.794-.154c-.26 0-.496.05-.71.15-.215.1-.4.242-.554.424a2.19 2.19 0 00-.376.657 3.026 3.026 0 00-.178.84h3.61zm8.573 2.091a1.634 1.634 0 01-.458 1.159 2.084 2.084 0 01-.492.38 3.272 3.272 0 01-.599.259c-.212.068-.43.119-.652.15a4.638 4.638 0 01-.657.048 12.3 12.3 0 01-1.281-.061 8.646 8.646 0 01-1.145-.199v-1.093c.4.114.8.2 1.196.26.396.059.79.088 1.182.088.57 0 .992-.077 1.265-.232.274-.155.41-.376.41-.663a.812.812 0 00-.065-.332.753.753 0 00-.236-.28 2.254 2.254 0 00-.53-.277 11.81 11.81 0 00-.98-.328 6.963 6.963 0 01-.858-.311 2.877 2.877 0 01-.68-.414 1.776 1.776 0 01-.452-.56 1.649 1.649 0 01-.164-.759 1.744 1.744 0 01.588-1.265c.214-.195.504-.358.868-.488.365-.13.82-.195 1.368-.195.269 0 .567.015.895.044.328.03.67.081 1.026.154v1.06a9.803 9.803 0 00-1.063-.202 6.926 6.926 0 00-.872-.065c-.296 0-.546.023-.749.068a1.553 1.553 0 00-.492.188.734.734 0 00-.27.28.748.748 0 00-.082.346c0 .123.024.235.072.335.048.1.137.197.267.29.13.094.31.187.543.28.232.094.536.196.91.305.405.118.747.243 1.025.372.278.13.503.275.676.435.174.159.298.339.373.54.075.2.113.428.113.683z"/><path id="=" fill="#DBAF88" d="M105.916 121.325h-5.879v-1.005h5.879v1.005zm0 2.38h-5.879v-1.006h5.879v1.005z"/><path id="await" fill="#1C85B5" d="M120.025 125.741l-.027-.923c-.374.37-.753.636-1.138.8-.385.164-.79.246-1.214.246-.391 0-.726-.05-1.004-.15a1.883 1.883 0 01-.687-.414 1.603 1.603 0 01-.397-.618 2.289 2.289 0 01-.126-.773c0-.688.256-1.227.769-1.617.512-.39 1.27-.584 2.273-.584h1.422v-.602c0-.405-.13-.73-.39-.974-.26-.243-.656-.365-1.19-.365-.387 0-.769.043-1.145.13-.376.086-.764.21-1.165.369v-1.074a7.36 7.36 0 011.087-.3 7.6 7.6 0 01.642-.1c.224-.025.45-.037.677-.037.415 0 .789.045 1.121.137.333.09.614.23.844.417.23.186.407.421.53.704.123.282.185.615.185.998v4.73h-1.067zm-.13-3.124h-1.51c-.296 0-.552.03-.766.09-.214.058-.39.143-.526.252-.137.11-.238.24-.304.393-.067.153-.1.325-.1.516 0 .132.021.259.062.38.041.12.107.227.198.32.091.094.21.168.356.223.146.055.323.082.533.082.273 0 .587-.083.94-.25.353-.166.726-.429 1.118-.789v-1.217zm9.776-3.74l-.998 6.864h-1.443l-.99-2.87-.199-.698-.226.738-.95 2.83h-1.401l-.991-6.863h1.162l.574 4.662.123 1.04.294-.91.998-3.083h.855l1.073 3.042.307.91.103-.965.533-4.696h1.176zm5.749 6.864l-.027-.923c-.374.37-.754.636-1.139.8-.385.164-.79.246-1.213.246-.392 0-.727-.05-1.005-.15a1.883 1.883 0 01-.687-.414 1.603 1.603 0 01-.396-.618 2.289 2.289 0 01-.127-.773c0-.688.257-1.227.77-1.617.512-.39 1.27-.584 2.272-.584h1.422v-.602c0-.405-.13-.73-.39-.974-.26-.243-.656-.365-1.19-.365-.386 0-.768.043-1.144.13-.376.086-.765.21-1.166.369v-1.074a7.36 7.36 0 011.087-.3 7.6 7.6 0 01.643-.1c.223-.025.449-.037.677-.037.414 0 .788.045 1.12.137.333.09.615.23.845.417.23.186.407.421.53.704.123.282.184.615.184.998v4.73h-1.066zm-.13-3.124h-1.51c-.297 0-.552.03-.766.09-.215.058-.39.143-.527.252-.136.11-.238.24-.304.393-.066.153-.099.325-.099.516 0 .132.02.259.062.38.04.12.107.227.198.32.09.094.21.168.355.223.146.055.324.082.533.082.274 0 .587-.083.94-.25.354-.166.726-.429 1.118-.789v-1.217zm5.756-2.755h-2.03v-.984h3.233v5.872h2.044v.991h-5.503v-.991h2.256v-4.888zm.417-3.862c.132 0 .255.024.369.072a.893.893 0 01.297.201.919.919 0 01.27.663.96.96 0 01-.27.663.893.893 0 01-.297.202.944.944 0 01-.37.072.944.944 0 01-.368-.072.893.893 0 01-.298-.201.96.96 0 01-.27-.663.919.919 0 01.27-.664.893.893 0 01.298-.201.944.944 0 01.369-.072zm10.473 9.646a5.793 5.793 0 01-.834.146 8.52 8.52 0 01-.875.045c-.862 0-1.504-.195-1.928-.585-.424-.39-.636-.987-.636-1.794v-3.582h-1.92v-.998h1.92v-1.887l1.19-.307v2.194h3.083v.998h-3.083v3.486c0 .492.13.86.393 1.104.262.244.648.366 1.158.366.219 0 .458-.017.718-.051.26-.034.531-.088.814-.16v1.025z"/><path id="response" fill="#181717" d="M162.08 118.878h1.087l.034 1.265c.406-.488.806-.841 1.2-1.06a2.436 2.436 0 011.193-.328c.71 0 1.25.23 1.616.69.367.46.537 1.144.51 2.051h-1.203c.013-.601-.074-1.038-.264-1.309-.189-.271-.466-.407-.83-.407-.16 0-.32.029-.482.086a1.947 1.947 0 00-.5.273 4.47 4.47 0 00-.543.482 8.898 8.898 0 00-.615.711v4.41h-1.203v-6.864zm13.214 3.07c0 .168-.002.31-.007.423a6.37 6.37 0 01-.02.321h-4.82c0 .702.196 1.241.588 1.617.392.376.957.564 1.695.564.201 0 .402-.008.602-.024.2-.016.394-.037.581-.065.187-.027.366-.058.537-.092.17-.034.329-.072.475-.113v.978a9.161 9.161 0 01-2.365.308c-.588 0-1.094-.08-1.518-.24a2.597 2.597 0 01-1.042-.694 2.857 2.857 0 01-.602-1.114 5.273 5.273 0 01-.195-1.494c0-.483.07-.94.209-1.37a3.44 3.44 0 01.608-1.135c.267-.326.594-.585.981-.776a2.94 2.94 0 011.32-.287c.478 0 .902.075 1.27.225.37.15.681.364.934.64.253.275.444.61.574 1.005.13.394.195.835.195 1.322zm-1.237-.172a2.593 2.593 0 00-.09-.837 1.763 1.763 0 00-.338-.653 1.576 1.576 0 00-.57-.427 1.916 1.916 0 00-.793-.154c-.26 0-.497.05-.711.15-.215.1-.4.242-.554.424a2.19 2.19 0 00-.376.657 3.026 3.026 0 00-.178.84h3.61zm8.572 2.092a1.634 1.634 0 01-.458 1.159 2.084 2.084 0 01-.492.38 3.272 3.272 0 01-.598.259c-.212.068-.43.119-.653.15a4.638 4.638 0 01-.657.048 12.3 12.3 0 01-1.281-.061 8.646 8.646 0 01-1.145-.199v-1.093c.4.114.8.2 1.196.26.397.059.79.088 1.183.088.57 0 .99-.077 1.264-.232.274-.155.41-.376.41-.663a.812.812 0 00-.065-.332.753.753 0 00-.235-.28 2.254 2.254 0 00-.53-.277 11.81 11.81 0 00-.981-.328 6.963 6.963 0 01-.858-.311 2.877 2.877 0 01-.68-.414 1.776 1.776 0 01-.451-.56 1.649 1.649 0 01-.164-.759 1.744 1.744 0 01.587-1.265c.215-.195.504-.358.869-.488.364-.13.82-.195 1.367-.195.269 0 .567.015.895.044.328.03.67.081 1.026.154v1.06a9.803 9.803 0 00-1.063-.202 6.926 6.926 0 00-.872-.065c-.296 0-.546.023-.748.068a1.553 1.553 0 00-.493.188.734.734 0 00-.27.28.748.748 0 00-.082.346c0 .123.024.235.072.335.048.1.137.197.267.29.13.094.31.187.543.28.233.094.536.196.91.305.405.118.747.243 1.025.372.278.13.503.275.677.435.173.159.297.339.372.54.075.2.113.428.113.683zm8.128-1.681c0 .61-.086 1.143-.257 1.6-.17.455-.406.833-.707 1.134a2.9 2.9 0 01-1.066.677c-.41.15-.855.225-1.333.225-.22 0-.437-.011-.653-.034a4.952 4.952 0 01-.66-.116v2.87h-1.19v-9.665h1.06l.075 1.148c.342-.469.707-.798 1.094-.987.387-.19.807-.284 1.258-.284.392 0 .736.082 1.032.246.296.164.545.395.745.694.2.298.351.658.451 1.08.1.421.15.892.15 1.412zm-1.217.054c0-.36-.026-.69-.079-.991a2.586 2.586 0 00-.25-.772 1.37 1.37 0 00-.437-.503 1.104 1.104 0 00-.635-.181c-.15 0-.303.024-.458.072a1.857 1.857 0 00-.482.239 3.59 3.59 0 00-.527.444 7 7 0 00-.59.687v3.33c.218.09.448.162.69.215.241.052.478.078.71.078.643 0 1.147-.217 1.511-.652.365-.436.547-1.09.547-1.966zm9.023.014a4.55 4.55 0 01-.225 1.466c-.15.445-.367.825-.65 1.142a2.913 2.913 0 01-1.032.738 3.447 3.447 0 01-1.38.263c-.493 0-.934-.076-1.323-.229a2.617 2.617 0 01-.992-.673 2.98 2.98 0 01-.622-1.1c-.143-.438-.215-.942-.215-1.511 0-.534.075-1.02.226-1.46.15-.44.366-.818.649-1.135a2.913 2.913 0 011.032-.738 3.447 3.447 0 011.381-.263c.492 0 .933.076 1.323.229.39.153.72.376.991.67.271.294.479.66.622 1.097.144.437.215.939.215 1.504zm-1.216.055c0-.424-.047-.795-.14-1.111a2.237 2.237 0 00-.4-.793 1.65 1.65 0 00-.633-.479 2.077 2.077 0 00-.83-.16c-.356 0-.66.07-.913.208-.253.14-.46.325-.622.557a2.4 2.4 0 00-.355.81 4.06 4.06 0 00-.113.968c0 .423.047.795.14 1.114.093.319.227.584.4.796.173.212.383.372.629.479.246.107.524.16.834.16.355 0 .66-.07.912-.208.253-.14.46-.325.622-.557a2.4 2.4 0 00.356-.81 4.09 4.09 0 00.113-.974zm2.94-3.432h1.059l.048 1.107c.2-.237.394-.434.58-.591.187-.157.37-.284.55-.38a2.06 2.06 0 01.551-.201c.187-.039.38-.058.581-.058.707 0 1.241.208 1.603.625.363.417.544 1.045.544 1.884v4.477h-1.19v-4.382c0-.537-.1-.935-.3-1.192-.201-.258-.5-.387-.896-.387-.146 0-.288.022-.427.065a1.557 1.557 0 00-.434.226c-.15.107-.314.252-.49.434-.175.182-.372.41-.59.683v4.553h-1.19v-6.863zm13.131 4.99a1.634 1.634 0 01-.458 1.159 2.084 2.084 0 01-.492.38 3.272 3.272 0 01-.598.259c-.212.068-.43.119-.653.15a4.638 4.638 0 01-.656.048 12.3 12.3 0 01-1.282-.061 8.646 8.646 0 01-1.145-.199v-1.093c.4.114.8.2 1.196.26.397.059.79.088 1.183.088.57 0 .99-.077 1.264-.232.274-.155.41-.376.41-.663a.812.812 0 00-.064-.332.753.753 0 00-.236-.28 2.254 2.254 0 00-.53-.277 11.81 11.81 0 00-.981-.328 6.963 6.963 0 01-.858-.311 2.877 2.877 0 01-.68-.414 1.776 1.776 0 01-.451-.56 1.649 1.649 0 01-.164-.759 1.744 1.744 0 01.588-1.265c.214-.195.503-.358.868-.488.364-.13.82-.195 1.367-.195.269 0 .567.015.895.044.329.03.67.081 1.026.154v1.06a9.803 9.803 0 00-1.063-.202 6.926 6.926 0 00-.872-.065c-.296 0-.546.023-.748.068a1.553 1.553 0 00-.492.188.734.734 0 00-.27.28.748.748 0 00-.083.346c0 .123.024.235.072.335.048.1.137.197.267.29.13.094.31.187.543.28.233.094.536.196.91.305.405.118.747.243 1.025.372.278.13.503.275.677.435.173.159.297.339.372.54.075.2.113.428.113.683zm8.06-1.92c0 .168-.003.31-.007.423a6.37 6.37 0 01-.02.321h-4.82c0 .702.196 1.241.588 1.617.392.376.957.564 1.695.564.2 0 .401-.008.602-.024.2-.016.394-.037.58-.065.188-.027.366-.058.537-.092.171-.034.33-.072.475-.113v.978a9.161 9.161 0 01-2.365.308c-.588 0-1.094-.08-1.517-.24a2.597 2.597 0 01-1.043-.694 2.857 2.857 0 01-.601-1.114 5.273 5.273 0 01-.195-1.494c0-.483.07-.94.208-1.37a3.44 3.44 0 01.609-1.135c.266-.326.593-.585.98-.776a2.94 2.94 0 011.32-.287c.478 0 .902.075 1.271.225.37.15.68.364.933.64.253.275.445.61.575 1.005.13.394.195.835.195 1.322zm-1.238-.172a2.593 2.593 0 00-.089-.837 1.763 1.763 0 00-.338-.653 1.576 1.576 0 00-.57-.427 1.916 1.916 0 00-.794-.154c-.26 0-.497.05-.71.15-.215.1-.4.242-.554.424a2.19 2.19 0 00-.376.657 3.026 3.026 0 00-.178.84h3.61z"/><path id="." fill="#7E7C7B" d="M226.078 123.588a1.113 1.113 0 01.803.335c.103.105.184.227.243.366.06.139.089.288.089.447 0 .155-.03.301-.089.438a1.148 1.148 0 01-.605.601c-.139.06-.286.09-.44.09-.16 0-.308-.03-.445-.09a1.148 1.148 0 01-.602-.601 1.088 1.088 0 01-.089-.438 1.178 1.178 0 01.332-.813 1.12 1.12 0 01.803-.335z"/><path id="json" fill="#181717" d="M235.724 118.878v6.74c0 .479-.069.904-.205 1.275a2.557 2.557 0 01-.588.94 2.485 2.485 0 01-.94.581c-.372.132-.79.198-1.255.198a5.24 5.24 0 01-.987-.092 4.354 4.354 0 01-.872-.256v-1.135a4.512 4.512 0 001.976.472c.52 0 .927-.164 1.223-.493.296-.328.445-.81.445-1.449v-5.797h-3.364v-.984h4.567zm-.718-2.878c.132 0 .255.024.369.072a.893.893 0 01.297.201.96.96 0 01.27.664.919.919 0 01-.27.663.893.893 0 01-.297.201.944.944 0 01-.37.072.944.944 0 01-.368-.072.893.893 0 01-.298-.201.919.919 0 01-.27-.663.96.96 0 01.27-.663.893.893 0 01.298-.202.944.944 0 01.369-.072zm9.201 7.868a1.634 1.634 0 01-.458 1.159 2.084 2.084 0 01-.492.38 3.272 3.272 0 01-.598.259c-.212.068-.43.119-.653.15a4.638 4.638 0 01-.656.048 12.3 12.3 0 01-1.282-.061 8.646 8.646 0 01-1.145-.199v-1.093c.4.114.8.2 1.196.26.397.059.79.088 1.183.088.57 0 .991-.077 1.264-.232.274-.155.41-.376.41-.663a.812.812 0 00-.064-.332.753.753 0 00-.236-.28 2.254 2.254 0 00-.53-.277 11.81 11.81 0 00-.981-.328 6.963 6.963 0 01-.858-.311 2.877 2.877 0 01-.68-.414 1.776 1.776 0 01-.451-.56 1.649 1.649 0 01-.164-.759 1.744 1.744 0 01.588-1.265c.214-.195.503-.358.868-.488.364-.13.82-.195 1.367-.195.269 0 .567.015.895.044.329.03.67.081 1.026.154v1.06a9.803 9.803 0 00-1.063-.202 6.926 6.926 0 00-.872-.065c-.296 0-.545.023-.748.068a1.553 1.553 0 00-.492.188.734.734 0 00-.27.28.748.748 0 00-.082.346c0 .123.023.235.071.335.048.1.137.197.267.29.13.094.31.187.543.28.233.094.536.196.91.305.405.118.747.243 1.025.372.278.13.504.275.677.435.173.159.297.339.372.54.075.2.113.428.113.683zm8.237-1.613a4.55 4.55 0 01-.225 1.466c-.15.445-.367.825-.65 1.142a2.913 2.913 0 01-1.032.738 3.447 3.447 0 01-1.38.263c-.493 0-.934-.076-1.324-.229a2.617 2.617 0 01-.99-.673 2.98 2.98 0 01-.623-1.1c-.143-.438-.215-.942-.215-1.511 0-.534.075-1.02.225-1.46.15-.44.367-.818.65-1.135a2.913 2.913 0 011.032-.738 3.447 3.447 0 011.381-.263c.492 0 .933.076 1.323.229.39.153.72.376.99.67.272.294.48.66.623 1.097.144.437.215.939.215 1.504zm-1.216.055c0-.424-.047-.795-.14-1.111a2.237 2.237 0 00-.4-.793 1.65 1.65 0 00-.633-.479 2.077 2.077 0 00-.83-.16c-.356 0-.66.07-.913.208-.253.14-.46.325-.622.557a2.4 2.4 0 00-.356.81 4.06 4.06 0 00-.112.968c0 .423.046.795.14 1.114.093.319.227.584.4.796.173.212.383.372.629.479.246.107.524.16.834.16.355 0 .66-.07.912-.208.253-.14.46-.325.622-.557a2.4 2.4 0 00.356-.81 4.09 4.09 0 00.113-.974zm2.939-3.432h1.06l.047 1.107c.2-.237.395-.434.581-.591.187-.157.37-.284.55-.38a2.06 2.06 0 01.551-.201c.187-.039.38-.058.581-.058.706 0 1.24.208 1.603.625.362.417.544 1.045.544 1.884v4.477h-1.19v-4.382c0-.537-.1-.935-.3-1.192-.201-.258-.5-.387-.896-.387-.146 0-.288.022-.427.065a1.557 1.557 0 00-.434.226c-.15.107-.314.252-.49.434-.175.182-.372.41-.59.683v4.553h-1.19v-6.863z"/><path id="();" fill="#7E7C7B" d="M265.973 128.612c-2.101-1.946-3.152-4.097-3.152-6.453 0-.551.056-1.102.168-1.65.111-.55.291-1.1.54-1.652a9.028 9.028 0 01.984-1.654c.408-.551.904-1.098 1.487-1.64l.69.704c-1.768 1.745-2.652 3.68-2.652 5.803 0 1.058.223 2.074.67 3.05.447.974 1.107 1.895 1.982 2.76l-.717.732zm4.99-13.05c2.1 1.946 3.151 4.111 3.151 6.495 0 .492-.05 1.002-.15 1.53-.1.53-.271 1.07-.513 1.624a9.296 9.296 0 01-.974 1.685c-.408.57-.922 1.142-1.541 1.716l-.69-.704c.888-.88 1.55-1.798 1.988-2.755.438-.957.657-1.96.657-3.007 0-2.17-.882-4.12-2.646-5.852l.718-.731zm6.911 11.58c.232.01.458-.01.677-.06a2.02 2.02 0 00.577-.223c.167-.098.3-.22.4-.366a.86.86 0 00.15-.499.95.95 0 00-.098-.465 2.238 2.238 0 00-.223-.328 2.438 2.438 0 01-.222-.321.91.91 0 01-.099-.458.915.915 0 01.222-.588.857.857 0 01.287-.212 1.12 1.12 0 01.875.017c.149.066.278.168.39.304.112.137.2.308.267.513.066.205.099.447.099.725 0 .378-.07.741-.209 1.09a2.657 2.657 0 01-.622.926c-.276.27-.62.483-1.032.643-.412.16-.892.24-1.439.24v-.937zm2.14-8.387c.14 0 .275.028.403.085a1.107 1.107 0 01.564.564.978.978 0 01.085.404.971.971 0 01-.085.406 1.12 1.12 0 01-.229.332 1.058 1.058 0 01-.738.308c-.146 0-.282-.028-.407-.083a1.07 1.07 0 01-.557-.557 1.006 1.006 0 01-.082-.406 1.058 1.058 0 01.308-.738 1.12 1.12 0 01.33-.23.971.971 0 01.408-.085z"/><path id="..." fill="#DBAF88" d="M2.857 137.588a1.113 1.113 0 01.804.335c.102.105.183.227.242.366.06.139.09.288.09.447 0 .155-.03.301-.09.438a1.148 1.148 0 01-.605.601c-.139.06-.286.09-.44.09-.16 0-.308-.03-.445-.09a1.148 1.148 0 01-.601-.601 1.088 1.088 0 01-.09-.438 1.178 1.178 0 01.332-.813 1.12 1.12 0 01.803-.335zm7.698 0a1.113 1.113 0 01.803.335c.102.105.183.227.243.366.059.139.088.288.088.447 0 .155-.03.301-.088.438a1.148 1.148 0 01-.605.601c-.14.06-.286.09-.441.09-.16 0-.308-.03-.445-.09a1.148 1.148 0 01-.601-.601 1.088 1.088 0 01-.09-.438 1.178 1.178 0 01.332-.813 1.12 1.12 0 01.804-.335zm7.697 0a1.113 1.113 0 01.803.335c.103.105.184.227.243.366.06.139.089.288.089.447 0 .155-.03.301-.09.438a1.148 1.148 0 01-.604.601c-.14.06-.286.09-.441.09-.16 0-.308-.03-.444-.09a1.148 1.148 0 01-.602-.601 1.088 1.088 0 01-.089-.438 1.178 1.178 0 01.332-.813 1.12 1.12 0 01.803-.335z"/><path id="</script>" fill="#7E7C7B" d="M5.339 171.099l-.745.752L0 168.016l4.594-3.835.745.758-3.726 3.063 3.726 3.097zm8.032-9.017l-4.69 11.129H7.548l4.69-11.129h1.134zm7.615 7.786a1.634 1.634 0 01-.458 1.159 2.084 2.084 0 01-.492.38 3.272 3.272 0 01-.598.259c-.212.068-.43.119-.653.15a4.638 4.638 0 01-.656.048 12.3 12.3 0 01-1.282-.061 8.646 8.646 0 01-1.145-.199v-1.093c.401.114.8.2 1.196.26.397.059.791.088 1.183.088.57 0 .991-.077 1.265-.232.273-.155.41-.376.41-.663a.812.812 0 00-.065-.332.753.753 0 00-.236-.28 2.254 2.254 0 00-.53-.277 11.81 11.81 0 00-.98-.328 6.963 6.963 0 01-.859-.311 2.877 2.877 0 01-.68-.414 1.776 1.776 0 01-.45-.56 1.649 1.649 0 01-.165-.759 1.744 1.744 0 01.588-1.265c.214-.195.503-.358.868-.488s.82-.195 1.367-.195c.27 0 .568.015.896.044.328.03.67.081 1.025.154v1.06a9.803 9.803 0 00-1.063-.202 6.926 6.926 0 00-.871-.065c-.297 0-.546.023-.749.068a1.553 1.553 0 00-.492.188.734.734 0 00-.27.28.748.748 0 00-.082.346c0 .123.024.235.072.335.047.1.136.197.266.29.13.094.311.187.544.28.232.094.535.196.909.305.405.118.747.243 1.025.372.278.13.504.275.677.435.173.159.297.339.373.54.075.2.112.428.112.683zm7.595 1.62c-.31.119-.628.206-.954.263a5.845 5.845 0 01-1.008.086c-1.085 0-1.92-.294-2.505-.882-.586-.588-.879-1.447-.879-2.577 0-.542.085-1.035.253-1.477a3.142 3.142 0 011.805-1.863c.424-.17.89-.256 1.401-.256.356 0 .688.025.998.075.31.05.607.133.89.247v1.134a3.771 3.771 0 00-.907-.338 4.248 4.248 0 00-.953-.106c-.306 0-.594.058-.865.174-.271.116-.51.284-.714.503a2.38 2.38 0 00-.486.8c-.118.314-.178.67-.178 1.066 0 .83.202 1.45.605 1.863.404.412.963.618 1.679.618a3.897 3.897 0 001.818-.438v1.108zm2.646-6.61h1.086l.035 1.265c.405-.488.805-.841 1.2-1.06a2.436 2.436 0 011.192-.328c.711 0 1.25.23 1.617.69.367.46.537 1.144.51 2.051h-1.204c.014-.601-.074-1.038-.263-1.309-.19-.271-.466-.407-.83-.407-.16 0-.32.029-.483.086a1.947 1.947 0 00-.499.273 4.47 4.47 0 00-.543.482 8.898 8.898 0 00-.615.711v4.41h-1.203v-6.864zm9.754.984h-2.03v-.984h3.234v5.872h2.044v.991h-5.503v-.991h2.255v-4.888zm.417-3.862c.133 0 .256.024.37.072a.893.893 0 01.297.201.919.919 0 01.27.663.96.96 0 01-.27.663.893.893 0 01-.297.202.944.944 0 01-.37.072.944.944 0 01-.369-.072.893.893 0 01-.297-.201.96.96 0 01-.27-.663.919.919 0 01.27-.664.893.893 0 01.297-.201.944.944 0 01.37-.072zm10.808 6.187c0 .61-.085 1.143-.256 1.6-.171.455-.407.833-.708 1.134a2.9 2.9 0 01-1.066.677c-.41.15-.855.225-1.333.225-.219 0-.437-.011-.653-.034a4.952 4.952 0 01-.66-.116v2.87h-1.19v-9.665h1.06l.076 1.148c.341-.469.706-.798 1.093-.987.388-.19.807-.284 1.258-.284.392 0 .736.082 1.032.246.297.164.545.395.745.694.201.298.351.658.452 1.08.1.421.15.892.15 1.412zm-1.217.054c0-.36-.026-.69-.078-.991a2.586 2.586 0 00-.25-.772 1.37 1.37 0 00-.437-.503 1.104 1.104 0 00-.636-.181c-.15 0-.303.024-.458.072a1.857 1.857 0 00-.482.239 3.59 3.59 0 00-.526.444 7 7 0 00-.592.687v3.33c.219.09.45.162.69.215.242.052.48.078.712.078.642 0 1.146-.217 1.51-.652.365-.436.547-1.09.547-1.966zm8.58 3.405a5.793 5.793 0 01-.835.146 8.52 8.52 0 01-.875.045c-.861 0-1.504-.195-1.927-.585-.424-.39-.636-.987-.636-1.794v-3.582h-1.921v-.998h1.92v-1.887l1.19-.307v2.194h3.083v.998h-3.083v3.486c0 .492.131.86.393 1.104.262.244.649.366 1.16.366.218 0 .457-.017.717-.051.26-.034.53-.088.813-.16v1.025zm2.501-6.707l.739-.758 4.593 3.835-4.593 3.835-.739-.752 3.726-3.07-3.726-3.09z"/></g><text id="evil.com" fill="#AF6E24" font-family="OpenSans-Bold, Open Sans" font-size="16" font-weight="bold"><tspan x="129" y="36">evil.com</tspan></text><path id="Rectangle-1-Copy" fill="#FBF2EC" stroke="#DBAF88" stroke-width="2" d="M494 48h140v199H494z"/><text id="got-the-cookie?-okay" fill="#AF6E24" font-family="OpenSans-Regular, Open Sans" font-size="16" font-weight="normal"><tspan x="508.465" y="133">got the cookie?</tspan> <tspan x="544.852" y="155">okay!</tspan></text><text id="gmail.com" fill="#AF6E24" font-family="OpenSans-Bold, Open Sans" font-size="16" font-weight="bold"><tspan x="528" y="36">gmail.com</tspan></text><path id="Line" fill="#C06334" fill-rule="nonzero" d="M308.215 100.812l1.487.202 158.667 21.513 1.075-7.927 17.551 11.967-20.104 6.861 1.075-7.928-158.668-21.514-1.486-.201.403-2.973z"/><path id="Line-Copy" fill="#C06334" fill-rule="nonzero" d="M491.796 151.82l.383 2.976-1.488.192L332.54 175.34l1.021 7.935-20.057-6.997 17.632-11.847 1.021 7.934 158.152-20.354 1.487-.191z"/><text id="GET-/messages" fill="#AF6E24" font-family="OpenSans-Regular, Open Sans" font-size="16" font-weight="normal" transform="rotate(7 408.585 101.617)"><tspan x="352.085" y="107.617">GET /messages</tspan></text><text id="cookie:-user=John" fill="#AF6E24" font-family="OpenSans-Regular, Open Sans" font-size="16" font-weight="normal" transform="rotate(7 402.573 127.8)"><tspan x="336.073" y="133.8">cookie: user=John</tspan></text><text id="{"messages":-[...]}" fill="#AF6E24" font-family="OpenSans-Regular, Open Sans" font-size="16" font-weight="normal" transform="rotate(-7 408.333 176.276)"><tspan x="342.833" y="182.276">{"messages": [...]}</tspan></text></g></g></svg> +>>>>>>> 540d753e90789205fc6e75c502f68382c87dea9b:5-network/05-fetch-crossorigin/cors-gmail-messages.svg diff --git a/5-network/04-fetch-crossorigin/xhr-another-domain.svg b/5-network/05-fetch-crossorigin/xhr-another-domain.svg similarity index 55% rename from 5-network/04-fetch-crossorigin/xhr-another-domain.svg rename to 5-network/05-fetch-crossorigin/xhr-another-domain.svg index 3525652bc..47bf429ed 100644 --- a/5-network/04-fetch-crossorigin/xhr-another-domain.svg +++ b/5-network/05-fetch-crossorigin/xhr-another-domain.svg @@ -1,3 +1,4 @@ +<<<<<<< HEAD:5-network/04-fetch-crossorigin/xhr-another-domain.svg <?xml version="1.0" encoding="UTF-8"?> <svg width="610px" height="411px" viewBox="0 0 610 411" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <!-- Generator: sketchtool 55.2 (78181) - https://sketchapp.com --> @@ -48,4 +49,7 @@ <path id="Line-3" d="M85,332 L302,332 L302,334 L85,334 L85,340 L71,333 L85,326 L85,332 Z" fill="#EE6B47" fill-rule="nonzero"></path> </g> </g> -</svg> \ No newline at end of file +</svg> +======= +<svg xmlns="http://www.w3.org/2000/svg" width="633" height="411" viewBox="0 0 633 411"><defs><style>@import url(https://fonts.googleapis.com/css?family=Open+Sans:bold,italic,bolditalic%7CPT+Mono);@font-face{font-family:'PT Mono';font-weight:700;font-style:normal;src:local('PT MonoBold'),url(/font/PTMonoBold.woff2) format('woff2'),url(/font/PTMonoBold.woff) format('woff'),url(/font/PTMonoBold.ttf) format('truetype')}</style></defs><g id="network" fill="none" fill-rule="evenodd" stroke="none" stroke-width="1"><g id="xhr-another-domain.svg"><path id="Rectangle-227" fill="#FBF2EC" stroke="#DBAF88" stroke-width="2" d="M1 16h128v64H1z"/><text id="JavaScript" fill="#AF6E24" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal"><tspan x="35" y="50">JavaScript</tspan></text><path id="Rectangle-228" fill="#FBF2EC" stroke="#DBAF88" stroke-width="2" d="M261 16h128v64H261z"/><text id="Browser" fill="#AF6E24" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal"><tspan x="296" y="50">Browser</tspan></text><path id="Rectangle-229" fill="#FBF2EC" stroke="#DBAF88" stroke-width="2" d="M504 16h128v64H504z"/><text id="Server" fill="#AF6E24" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal"><tspan x="544" y="50">Server</tspan></text><path id="Line" stroke="#7E7C7B" stroke-linecap="square" d="M66 81v320M326 81v320M569 81v320"/><path id="Line" fill="#C06334" fill-rule="nonzero" d="M312 133l14 7-14 7v-6H66v-2h246v-6z"/><text id="Origin:-https://java" fill="#AF6E24" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal"><tspan x="354.313" y="205">Origin: https://javascript.info</tspan></text><text id="HTTP-request" fill="#AF6E24" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal"><tspan x="401.015" y="174">HTTP-request</tspan></text><text id="fetch()" fill="#AF6E24" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal"><tspan x="171" y="131">fetch()</tspan></text><text id="HTTP-response" fill="#AF6E24" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal"><tspan x="398.419" y="250">HTTP-response</tspan></text><text id="Access-Control-Allow" fill="#AF6E24" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal"><tspan x="347" y="287">Access-Control-Allow-Origin: * </tspan> <tspan x="364.141" y="305">(or https://javascript.info)</tspan></text><text id="if-the-header-allows" fill="#AF6E24" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal"><tspan x="85" y="325">if the header allows, then success,</tspan></text><text id="otherwise-fail" fill="#AF6E24" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal"><tspan x="148" y="353">otherwise fail</tspan></text><path id="Line" fill="#C06334" fill-rule="nonzero" d="M554 180l14 7-14 7v-6H328v-2h226v-6z"/><path id="Line-2" fill="#C06334" fill-rule="nonzero" d="M340 258v6h228v2H340v6l-14-7 14-7z"/><path id="Line-3" fill="#C06334" fill-rule="nonzero" d="M80 326v6h247v2H80v6l-14-7 14-7z"/></g></g></svg> +>>>>>>> 540d753e90789205fc6e75c502f68382c87dea9b:5-network/05-fetch-crossorigin/xhr-another-domain.svg diff --git a/5-network/04-fetch-crossorigin/xhr-preflight.svg b/5-network/05-fetch-crossorigin/xhr-preflight.svg similarity index 54% rename from 5-network/04-fetch-crossorigin/xhr-preflight.svg rename to 5-network/05-fetch-crossorigin/xhr-preflight.svg index 5ec17688b..0546c805a 100644 --- a/5-network/04-fetch-crossorigin/xhr-preflight.svg +++ b/5-network/05-fetch-crossorigin/xhr-preflight.svg @@ -1,3 +1,4 @@ +<<<<<<< HEAD:5-network/04-fetch-crossorigin/xhr-preflight.svg <?xml version="1.0" encoding="UTF-8"?> <svg width="610px" height="633px" viewBox="0 0 610 633" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <!-- Generator: sketchtool 55.2 (78181) - https://sketchapp.com --> @@ -79,4 +80,7 @@ </text> </g> </g> -</svg> \ No newline at end of file +</svg> +======= +<svg xmlns="http://www.w3.org/2000/svg" width="620" height="633" viewBox="0 0 620 633"><defs><style>@import url(https://fonts.googleapis.com/css?family=Open+Sans:bold,italic,bolditalic%7CPT+Mono);@font-face{font-family:'PT Mono';font-weight:700;font-style:normal;src:local('PT MonoBold'),url(/font/PTMonoBold.woff2) format('woff2'),url(/font/PTMonoBold.woff) format('woff'),url(/font/PTMonoBold.ttf) format('truetype')}</style></defs><g id="network" fill="none" fill-rule="evenodd" stroke="none" stroke-width="1"><g id="xhr-preflight.svg"><path id="Rectangle-227" fill="#FBF2EC" stroke="#DBAF88" stroke-width="2" d="M1 16h128v64H1z"/><text id="JavaScript" fill="#AF6E24" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal"><tspan x="33" y="50">JavaScript</tspan></text><path id="Rectangle-228" fill="#FBF2EC" stroke="#DBAF88" stroke-width="2" d="M240 16h128v64H240z"/><text id="Browser" fill="#AF6E24" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal"><tspan x="278" y="48">Browser</tspan></text><path id="Rectangle-229" fill="#FBF2EC" stroke="#DBAF88" stroke-width="2" d="M491 16h128v64H491z"/><text id="Server" fill="#AF6E24" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal"><tspan x="534" y="50">Server</tspan></text><path id="Line" stroke="#7E7C7B" stroke-linecap="square" d="M66 82v520M305 82v520M556 82v520"/><path id="Line" fill="#C06334" fill-rule="nonzero" d="M291 133l14 7-14 7-.001-6H67v-2h223.999l.001-6z"/><text id="fetch()" fill="#AF6E24" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal"><tspan x="166" y="131">fetch()</tspan></text><text id="OPTIONS" fill="#AF6E24" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal"><tspan x="400" y="173">OPTIONS</tspan></text><text id="Origin-Access-Contro" fill="#AF6E24" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal"><tspan x="406.721" y="198">Origin</tspan> <tspan x="321.866" y="216">Access-Control-Request-Method</tspan> <tspan x="320" y="234">Access-Control-Request-Headers</tspan></text><path id="Line" fill="#C06334" fill-rule="nonzero" d="M319 285.5v6h237v2H319v6l-14-7 14-7z"/><text id="200-OK" fill="#AF6E24" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal"><tspan x="407" y="285">200 OK</tspan></text><path id="Line-4" fill="#C06334" fill-rule="nonzero" d="M542 173l14 7-14 7-.001-6H305v-2h236.999l.001-6z"/><path id="Line-2" fill="#C06334" fill-rule="nonzero" d="M319 495v6h237v2H319v6l-14-7 14-7z"/><path id="Line-3" fill="#C06334" fill-rule="nonzero" d="M90.5 544.5v8h214v3h-214v8l-19-9.5 19-9.5z"/><text id="Access-Control-Allow" fill="#AF6E24" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal"><tspan x="336" y="522">Access-Control-Allow-Origin</tspan></text><text id="Main-HTTP-response" fill="#AF6E24" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal"><tspan x="355" y="495">Main HTTP-response</tspan></text><text id="otherwise-error" fill="#AF6E24" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal"><tspan x="130" y="570">otherwise error</tspan></text><text id="if-allowed:-success," fill="#AF6E24" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal"><tspan x="115.5" y="545">if allowed: success,</tspan></text><path id="Line-5" fill="#C06334" fill-rule="nonzero" d="M542 429l14 7-14 7-.001-6H304v-2h237.999l.001-6z"/><text id="Origin" fill="#AF6E24" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal"><tspan x="405" y="454">Origin</tspan></text><text id="Main-HTTP-request" fill="#AF6E24" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal"><tspan x="360" y="429">Main HTTP-request</tspan></text><text id="preflight" fill="#7E7C7B" font-family="OpenSans-Regular, Open Sans" font-size="22" font-weight="normal"><tspan x="210.145" y="186">preflight</tspan></text><text id="if-allowed" fill="#7E7C7B" font-family="OpenSans-Regular, Open Sans" font-size="22" font-weight="normal"><tspan x="198.338" y="441">if allowed</tspan></text><text id="1" fill="#181717" font-family="OpenSans-Regular, Open Sans" font-size="24" font-weight="normal"><tspan x="570.139" y="186">1</tspan></text><text id="2" fill="#181717" font-family="OpenSans-Regular, Open Sans" font-size="24" font-weight="normal"><tspan x="570.139" y="302">2</tspan></text><text id="3" fill="#181717" font-family="OpenSans-Regular, Open Sans" font-size="24" font-weight="normal"><tspan x="570.139" y="443">3</tspan></text><text id="4" fill="#181717" font-family="OpenSans-Regular, Open Sans" font-size="24" font-weight="normal"><tspan x="570.139" y="509">4</tspan></text><text id="Access-Control-Allow" fill="#AF6E24" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal"> <tspan x="340.89" y="311.33">Access-Control-Allow-Origin</tspan> <tspan x="332" y="329.33">Access-Control-Allow-Methods</tspan> <tspan x="333.473" y="347.33">Access-Control-Allow-Headers</tspan> <tspan x="352.443" y="365.33">Access-Control-Max-Age</tspan></text></g></g></svg> +>>>>>>> 540d753e90789205fc6e75c502f68382c87dea9b:5-network/05-fetch-crossorigin/xhr-preflight.svg diff --git a/5-network/06-fetch-api/article.md b/5-network/06-fetch-api/article.md new file mode 100644 index 000000000..5f55c78ef --- /dev/null +++ b/5-network/06-fetch-api/article.md @@ -0,0 +1,224 @@ + +# Fetch API + +So far, we know quite a bit about `fetch`. + +Let's see the rest of API, to cover all its abilities. + +```smart +Please note: most of these options are used rarely. You may skip this chapter and still use `fetch` well. + +Still, it's good to know what `fetch` can do, so if the need arises, you can return and read the details. +``` + +Here's the full list of all possible `fetch` options with their default values (alternatives in comments): + +```js +let promise = fetch(url, { + method: "GET", // POST, PUT, DELETE, etc. + headers: { + // the content type header value is usually auto-set + // depending on the request body + "Content-Type": "text/plain;charset=UTF-8" + }, + body: undefined, // string, FormData, Blob, BufferSource, or URLSearchParams + referrer: "about:client", // or "" to send no Referer header, + // or an url from the current origin + referrerPolicy: "strict-origin-when-cross-origin", // no-referrer-when-downgrade, no-referrer, origin, same-origin... + mode: "cors", // same-origin, no-cors + credentials: "same-origin", // omit, include + cache: "default", // no-store, reload, no-cache, force-cache, or only-if-cached + redirect: "follow", // manual, error + integrity: "", // a hash, like "sha256-abcdef1234567890" + keepalive: false, // true + signal: undefined, // AbortController to abort request + window: window // null +}); +``` + +An impressive list, right? + +We fully covered `method`, `headers` and `body` in the chapter <info:fetch>. + +The `signal` option is covered in <info:fetch-abort>. + +Now let's explore the remaining capabilities. + +## referrer, referrerPolicy + +These options govern how `fetch` sets the HTTP `Referer` header. + +Usually that header is set automatically and contains the url of the page that made the request. In most scenarios, it's not important at all, sometimes, for security purposes, it makes sense to remove or shorten it. + +**The `referrer` option allows to set any `Referer` (within the current origin) or remove it.** + +To send no referrer, set an empty string: +```js +fetch('/page', { +*!* + referrer: "" // no Referer header +*/!* +}); +``` + +To set another url within the current origin: + +```js +fetch('/page', { + // assuming we're on https://javascript.info + // we can set any Referer header, but only within the current origin +*!* + referrer: "https://javascript.info/anotherpage" +*/!* +}); +``` + +**The `referrerPolicy` option sets general rules for `Referer`.** + +Requests are split into 3 types: + +1. Request to the same origin. +2. Request to another origin. +3. Request from HTTPS to HTTP (from safe to unsafe protocol). + +Unlike the `referrer` option that allows to set the exact `Referer` value, `referrerPolicy` tells the browser general rules for each request type. + +Possible values are described in the [Referrer Policy specification](https://w3c.github.io/webappsec-referrer-policy/): + +- **`"strict-origin-when-cross-origin"`** -- the default value: for same-origin send the full `Referer`, for cross-origin send only the origin, unless it's HTTPS→HTTP request, then send nothing. +- **`"no-referrer-when-downgrade"`** -- full `Referer` is always sent, unless we send a request from HTTPS to HTTP (to the less secure protocol). +- **`"no-referrer"`** -- never send `Referer`. +- **`"origin"`** -- only send the origin in `Referer`, not the full page URL, e.g. only `http://site.com` instead of `http://site.com/path`. +- **`"origin-when-cross-origin"`** -- send the full `Referer` to the same origin, but only the origin part for cross-origin requests (as above). +- **`"same-origin"`** -- send the full `Referer` to the same origin, but no `Referer` for cross-origin requests. +- **`"strict-origin"`** -- send only the origin, not the `Referer` for HTTPS→HTTP requests. +- **`"unsafe-url"`** -- always send the full url in `Referer`, even for HTTPS→HTTP requests. + +Here's a table with all combinations: + +| Value | To same origin | To another origin | HTTPS→HTTP | +|-------|----------------|-------------------|------------| +| `"no-referrer"` | - | - | - | +| `"no-referrer-when-downgrade"` | full | full | - | +| `"origin"` | origin | origin | origin | +| `"origin-when-cross-origin"` | full | origin | origin | +| `"same-origin"` | full | - | - | +| `"strict-origin"` | origin | origin | - | +| `"strict-origin-when-cross-origin"` or `""` (default) | full | origin | - | +| `"unsafe-url"` | full | full | full | + +Let's say we have an admin zone with a URL structure that shouldn't be known from outside of the site. + +If we send a `fetch`, then by default it always sends the `Referer` header with the full url of our page (except when we request from HTTPS to HTTP, then no `Referer`). + +E.g. `Referer: https://javascript.info/admin/secret/paths`. + +If we'd like other websites know only the origin part, not the URL-path, we can set the option: + +```js +fetch('https://another.com/page', { + // ... + referrerPolicy: "origin-when-cross-origin" // Referer: https://javascript.info +}); +``` + +We can put it to all `fetch` calls, maybe integrate into JavaScript library of our project that does all requests and uses `fetch` inside. + +Its only difference compared to the default behavior is that for requests to another origin `fetch` sends only the origin part of the URL (e.g. `https://javascript.info`, without path). For requests to our origin we still get the full `Referer` (maybe useful for debugging purposes). + +```smart header="Referrer policy is not only for `fetch`" +Referrer policy, described in the [specification](https://w3c.github.io/webappsec-referrer-policy/), is not just for `fetch`, but more global. + +In particular, it's possible to set the default policy for the whole page using the `Referrer-Policy` HTTP header, or per-link, with `<a rel="noreferrer">`. +``` + +## mode + +The `mode` option is a safe-guard that prevents occasional cross-origin requests: + +- **`"cors"`** -- the default, cross-origin requests are allowed, as described in <info:fetch-crossorigin>, +- **`"same-origin"`** -- cross-origin requests are forbidden, +- **`"no-cors"`** -- only safe cross-origin requests are allowed. + +This option may be useful when the URL for `fetch` comes from a 3rd-party, and we want a "power off switch" to limit cross-origin capabilities. + +## credentials + +The `credentials` option specifies whether `fetch` should send cookies and HTTP-Authorization headers with the request. + +- **`"same-origin"`** -- the default, don't send for cross-origin requests, +- **`"include"`** -- always send, requires `Access-Control-Allow-Credentials` from cross-origin server in order for JavaScript to access the response, that was covered in the chapter <info:fetch-crossorigin>, +- **`"omit"`** -- never send, even for same-origin requests. + +## cache + +By default, `fetch` requests make use of standard HTTP-caching. That is, it respects the `Expires` and `Cache-Control` headers, sends `If-Modified-Since` and so on. Just like regular HTTP-requests do. + +The `cache` options allows to ignore HTTP-cache or fine-tune its usage: + +- **`"default"`** -- `fetch` uses standard HTTP-cache rules and headers, +- **`"no-store"`** -- totally ignore HTTP-cache, this mode becomes the default if we set a header `If-Modified-Since`, `If-None-Match`, `If-Unmodified-Since`, `If-Match`, or `If-Range`, +- **`"reload"`** -- don't take the result from HTTP-cache (if any), but populate the cache with the response (if the response headers permit this action), +- **`"no-cache"`** -- create a conditional request if there is a cached response, and a normal request otherwise. Populate HTTP-cache with the response, +- **`"force-cache"`** -- use a response from HTTP-cache, even if it's stale. If there's no response in HTTP-cache, make a regular HTTP-request, behave normally, +- **`"only-if-cached"`** -- use a response from HTTP-cache, even if it's stale. If there's no response in HTTP-cache, then error. Only works when `mode` is `"same-origin"`. + +## redirect + +Normally, `fetch` transparently follows HTTP-redirects, like 301, 302 etc. + +The `redirect` option allows to change that: + +- **`"follow"`** -- the default, follow HTTP-redirects, +- **`"error"`** -- error in case of HTTP-redirect, +- **`"manual"`** -- allows to process HTTP-redirects manually. In case of redirect, we'll get a special response object, with `response.type="opaqueredirect"` and zeroed/empty status and most other properies. + +## integrity + +The `integrity` option allows to check if the response matches the known-ahead checksum. + +As described in the [specification](https://w3c.github.io/webappsec-subresource-integrity/), supported hash-functions are SHA-256, SHA-384, and SHA-512, there might be others depending on the browser. + +For example, we're downloading a file, and we know that its SHA-256 checksum is "abcdef" (a real checksum is longer, of course). + +We can put it in the `integrity` option, like this: + +```js +fetch('http://site.com/file', { + integrity: 'sha256-abcdef' +}); +``` + +Then `fetch` will calculate SHA-256 on its own and compare it with our string. In case of a mismatch, an error is triggered. + +## keepalive + +The `keepalive` option indicates that the request may "outlive" the webpage that initiated it. + +For example, we gather statistics on how the current visitor uses our page (mouse clicks, page fragments he views), to analyze and improve the user experience. + +When the visitor leaves our page -- we'd like to save the data to our server. + +We can use the `window.onunload` event for that: + +```js run +window.onunload = function() { + fetch('/analytics', { + method: 'POST', + body: "statistics", +*!* + keepalive: true +*/!* + }); +}; +``` + +Normally, when a document is unloaded, all associated network requests are aborted. But the `keepalive` option tells the browser to perform the request in the background, even after it leaves the page. So this option is essential for our request to succeed. + +It has a few limitations: + +- We can't send megabytes: the body limit for `keepalive` requests is 64KB. + - If we need to gather a lot of statistics about the visit, we should send it out regularly in packets, so that there won't be a lot left for the last `onunload` request. + - This limit applies to all `keepalive` requests together. In other words, we can perform multiple `keepalive` requests in parallel, but the sum of their body lengths should not exceed 64KB. +- We can't handle the server response if the document is unloaded. So in our example `fetch` will succeed due to `keepalive`, but subsequent functions won't work. + - In most cases, such as sending out statistics, it's not a problem, as the server just accepts the data and usually sends an empty response to such requests. diff --git a/5-network/05-fetch-api/logo-fetch.svg b/5-network/06-fetch-api/logo-fetch.svg similarity index 100% rename from 5-network/05-fetch-api/logo-fetch.svg rename to 5-network/06-fetch-api/logo-fetch.svg diff --git a/5-network/05-fetch-api/post.view/index.html b/5-network/06-fetch-api/post.view/index.html similarity index 100% rename from 5-network/05-fetch-api/post.view/index.html rename to 5-network/06-fetch-api/post.view/index.html diff --git a/5-network/05-fetch-api/post.view/server.js b/5-network/06-fetch-api/post.view/server.js similarity index 100% rename from 5-network/05-fetch-api/post.view/server.js rename to 5-network/06-fetch-api/post.view/server.js diff --git a/5-network/07-url/article.md b/5-network/07-url/article.md new file mode 100644 index 000000000..58b3ab1ae --- /dev/null +++ b/5-network/07-url/article.md @@ -0,0 +1,217 @@ + +# URL objects + +The built-in [URL](https://url.spec.whatwg.org/#api) class provides a convenient interface for creating and parsing URLs. + +There are no networking methods that require exactly a `URL` object, strings are good enough. So technically we don't have to use `URL`. But sometimes it can be really helpful. + +## Creating a URL + +The syntax to create a new `URL` object: + +```js +new URL(url, [base]) +``` + +- **`url`** -- the full URL or only path (if base is set, see below), +- **`base`** -- an optional base URL: if set and `url` argument has only path, then the URL is generated relative to `base`. + +For example: + +```js +let url = new URL('https://javascript.info/profile/admin'); +``` + +These two URLs are same: + +```js run +let url1 = new URL('https://javascript.info/profile/admin'); +let url2 = new URL('/profile/admin', 'https://javascript.info'); + +alert(url1); // https://javascript.info/profile/admin +alert(url2); // https://javascript.info/profile/admin +``` + +We can easily create a new URL based on the path relative to an existing URL: + +```js run +let url = new URL('https://javascript.info/profile/admin'); +let newUrl = new URL('tester', url); + +alert(newUrl); // https://javascript.info/profile/tester +``` + +The `URL` object immediately allows us to access its components, so it's a nice way to parse the url, e.g.: + +```js run +let url = new URL('https://javascript.info/url'); + +alert(url.protocol); // https: +alert(url.host); // javascript.info +alert(url.pathname); // /url +``` + +Here's the cheatsheet for URL components: + + + +- `href` is the full url, same as `url.toString()` +- `protocol` ends with the colon character `:` +- `search` - a string of parameters, starts with the question mark `?` +- `hash` starts with the hash character `#` +- there may be also `user` and `password` properties if HTTP authentication is present: `http://login:password@site.com` (not painted above, rarely used). + + +```smart header="We can pass `URL` objects to networking (and most other) methods instead of a string" +We can use a `URL` object in `fetch` or `XMLHttpRequest`, almost everywhere where a URL-string is expected. + +Generally, the `URL` object can be passed to any method instead of a string, as most methods will perform the string conversion, that turns a `URL` object into a string with full URL. +``` + +## SearchParams "?..." + +Let's say we want to create a url with given search params, for instance, `https://google.com/search?query=JavaScript`. + +We can provide them in the URL string: + +```js +new URL('https://google.com/search?query=JavaScript') +``` + +...But parameters need to be encoded if they contain spaces, non-latin letters, etc (more about that below). + +So there's a URL property for that: `url.searchParams`, an object of type [URLSearchParams](https://url.spec.whatwg.org/#urlsearchparams). + +It provides convenient methods for search parameters: + +- **`append(name, value)`** -- add the parameter by `name`, +- **`delete(name)`** -- remove the parameter by `name`, +- **`get(name)`** -- get the parameter by `name`, +- **`getAll(name)`** -- get all parameters with the same `name` (that's possible, e.g. `?user=John&user=Pete`), +- **`has(name)`** -- check for the existence of the parameter by `name`, +- **`set(name, value)`** -- set/replace the parameter, +- **`sort()`** -- sort parameters by name, rarely needed, +- ...and it's also iterable, similar to `Map`. + +An example with parameters that contain spaces and punctuation marks: + +```js run +let url = new URL('https://google.com/search'); + +url.searchParams.set('q', 'test me!'); // added parameter with a space and ! + +alert(url); // https://google.com/search?q=test+me%21 + +url.searchParams.set('tbs', 'qdr:y'); // added parameter with a colon : + +// parameters are automatically encoded +alert(url); // https://google.com/search?q=test+me%21&tbs=qdr%3Ay + +// iterate over search parameters (decoded) +for(let [name, value] of url.searchParams) { + alert(`${name}=${value}`); // q=test me!, then tbs=qdr:y +} +``` + + +## Encoding + +There's a standard [RFC3986](https://tools.ietf.org/html/rfc3986) that defines which characters are allowed in URLs and which are not. + +Those that are not allowed, must be encoded, for instance non-latin letters and spaces - replaced with their UTF-8 codes, prefixed by `%`, such as `%20` (a space can be encoded by `+`, for historical reasons, but that's an exception). + +The good news is that `URL` objects handle all that automatically. We just supply all parameters unencoded, and then convert the `URL` to string: + +```js run +// using some cyrillic characters for this example + +let url = new URL('https://ru.wikipedia.org/wiki/Тест'); + +url.searchParams.set('key', 'ъ'); +alert(url); //https://ru.wikipedia.org/wiki/%D0%A2%D0%B5%D1%81%D1%82?key=%D1%8A +``` + +As you can see, both `Тест` in the url path and `ъ` in the parameter are encoded. + +The URL became longer, because each cyrillic letter is represented with two bytes in UTF-8, so there are two `%..` entities. + +### Encoding strings + +In old times, before `URL` objects appeared, people used strings for URLs. + +As of now, `URL` objects are often more convenient, but strings can still be used as well. In many cases using a string makes the code shorter. + +If we use a string though, we need to encode/decode special characters manually. + +There are built-in functions for that: + +- [encodeURI](mdn:/JavaScript/Reference/Global_Objects/encodeURI) - encodes URL as a whole. +- [decodeURI](mdn:/JavaScript/Reference/Global_Objects/decodeURI) - decodes it back. +- [encodeURIComponent](mdn:/JavaScript/Reference/Global_Objects/encodeURIComponent) - encodes a URL component, such as a search parameter, or a hash, or a pathname. +- [decodeURIComponent](mdn:/JavaScript/Reference/Global_Objects/decodeURIComponent) - decodes it back. + +A natural question is: "What's the difference between `encodeURIComponent` and `encodeURI`? When we should use either?" + +That's easy to understand if we look at the URL, that's split into components in the picture above: + +``` +https://site.com:8080/path/page?p1=v1&p2=v2#hash +``` + +As we can see, characters such as `:`, `?`, `=`, `&`, `#` are allowed in URL. + +...On the other hand, if we look at a single URL component, such as a search parameter, these characters must be encoded, not to break the formatting. + +- `encodeURI` encodes only characters that are totally forbidden in URL. +- `encodeURIComponent` encodes same characters, and, in addition to them, characters `#`, `$`, `&`, `+`, `,`, `/`, `:`, `;`, `=`, `?` and `@`. + +So, for a whole URL we can use `encodeURI`: + +```js run +// using cyrillic characters in url path +let url = encodeURI('http://site.com/привет'); + +alert(url); // http://site.com/%D0%BF%D1%80%D0%B8%D0%B2%D0%B5%D1%82 +``` + +...While for URL parameters we should use `encodeURIComponent` instead: + +```js run +let music = encodeURIComponent('Rock&Roll'); + +let url = `https://google.com/search?q=${music}`; +alert(url); // https://google.com/search?q=Rock%26Roll +``` + +Compare it with `encodeURI`: + +```js run +let music = encodeURI('Rock&Roll'); + +let url = `https://google.com/search?q=${music}`; +alert(url); // https://google.com/search?q=Rock&Roll +``` + +As we can see, `encodeURI` does not encode `&`, as this is a legit character in URL as a whole. + +But we should encode `&` inside a search parameter, otherwise, we get `q=Rock&Roll` - that is actually `q=Rock` plus some obscure parameter `Roll`. Not as intended. + +So we should use only `encodeURIComponent` for each search parameter, to correctly insert it in the URL string. The safest is to encode both name and value, unless we're absolutely sure that it has only allowed characters. + +````smart header="Encoding difference compared to `URL`" +Classes [URL](https://url.spec.whatwg.org/#url-class) and [URLSearchParams](https://url.spec.whatwg.org/#interface-urlsearchparams) are based on the latest URI specification: [RFC3986](https://tools.ietf.org/html/rfc3986), while `encode*` functions are based on the obsolete version [RFC2396](https://www.ietf.org/rfc/rfc2396.txt). + +There are a few differences, e.g. IPv6 addresses are encoded differently: + +```js run +// valid url with IPv6 address +let url = 'http://[2607:f8b0:4005:802::1007]/'; + +alert(encodeURI(url)); // http://%5B2607:f8b0:4005:802::1007%5D/ +alert(new URL(url)); // http://[2607:f8b0:4005:802::1007]/ +``` + +As we can see, `encodeURI` replaced square brackets `[...]`, that's not correct, the reason is: IPv6 urls did not exist at the time of RFC2396 (August 1998). + +Such cases are rare, `encode*` functions work well most of the time. +```` diff --git a/5-network/07-url/url-object.svg b/5-network/07-url/url-object.svg new file mode 100644 index 000000000..628ccc13b --- /dev/null +++ b/5-network/07-url/url-object.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" width="698" height="246" viewBox="0 0 698 246"><defs><style>@import url(https://fonts.googleapis.com/css?family=Open+Sans:bold,italic,bolditalic%7CPT+Mono);@font-face{font-family:'PT Mono';font-weight:700;font-style:normal;src:local('PT MonoBold'),url(/font/PTMonoBold.woff2) format('woff2'),url(/font/PTMonoBold.woff) format('woff'),url(/font/PTMonoBold.ttf) format('truetype')}</style></defs><g id="network" fill="none" fill-rule="evenodd" stroke="none" stroke-width="1"><g id="url-object.svg"><path id="Line-Copy" fill="#C06334" stroke="#C06334" stroke-dasharray="1" stroke-linecap="square" stroke-width="2" d="M27 38v180"/><path id="Line-Copy-2" fill="#C06334" stroke="#C06334" stroke-dasharray="1" stroke-linecap="square" stroke-width="2" d="M109 132v86"/><path id="Line-Copy-6" fill="#C06334" stroke="#C06334" stroke-dasharray="1" stroke-linecap="square" stroke-width="2" d="M136 112v106"/><path id="Line-Copy-10" fill="#C06334" stroke="#C06334" stroke-dasharray="1" stroke-linecap="square" stroke-width="2" d="M27 38l665 .5"/><path id="Line-Copy-11" fill="#C06334" stroke="#C06334" stroke-dasharray="1" stroke-linecap="square" stroke-width="2" d="M27 74.5h280"/><path id="Line-Copy-7" fill="#C06334" stroke="#C06334" stroke-dasharray="1" stroke-linecap="square" stroke-width="2" d="M254 132v86"/><path id="Line-Copy-8" fill="#C06334" stroke="#C06334" stroke-dasharray="1" stroke-linecap="square" stroke-width="2" d="M243 132v86"/><path id="Line-Copy-9" fill="#C06334" stroke="#C06334" stroke-dasharray="1" stroke-linecap="square" stroke-width="2" d="M308 38v180"/><path id="Line-Copy-13" fill="#C06334" stroke="#C06334" stroke-dasharray="1" stroke-linecap="square" stroke-width="2" d="M439 132v86"/><path id="Line-Copy-14" fill="#C06334" stroke="#C06334" stroke-dasharray="1" stroke-linecap="square" stroke-width="2" d="M622 132v86"/><path id="Line-Copy-15" fill="#C06334" stroke="#C06334" stroke-dasharray="1" stroke-linecap="square" stroke-width="2" d="M692 39v179"/><text id="href" fill="#AF6E24" font-family="PTMono-Regular, PT Mono" font-size="16" font-weight="normal"><tspan x="337" y="33">href</tspan></text><text id="origin" fill="#AF6E24" font-family="PTMono-Regular, PT Mono" font-size="16" font-weight="normal"><tspan x="135" y="68">origin</tspan></text><path id="Line-Copy-12" fill="#C06334" stroke="#C06334" stroke-dasharray="1" stroke-linecap="square" stroke-width="2" d="M136 112.5h170"/><text id="host" fill="#AF6E24" font-family="PTMono-Regular, PT Mono" font-size="16" font-weight="normal"><tspan x="202" y="106">host</tspan></text><text id="protocol" fill="#AF6E24" font-family="PTMono-Regular, PT Mono" font-size="16" font-weight="normal"><tspan x="30.6" y="152">protocol</tspan></text><path id="https://site.com:8080/path/page?p1=v1&p2=v2…#hash" fill="#181717" fill-rule="nonzero" d="M31.772 196.4h2.808v4.716h.09a4.03 4.03 0 011.296-.981c.492-.234 1.104-.351 1.836-.351.576 0 1.077.06 1.503.18.426.12.774.33 1.044.63s.471.711.603 1.233c.132.522.198 1.185.198 1.989V209h-1.404v-4.914c0-.516-.03-.966-.09-1.35-.06-.384-.177-.705-.351-.963a1.626 1.626 0 00-.711-.585c-.3-.132-.684-.198-1.152-.198a2.76 2.76 0 00-.954.171c-.312.114-.597.27-.855.468s-.48.438-.666.72a2.693 2.693 0 00-.387.927V209h-1.386v-11.394h-1.422V196.4zm13.686 3.6H47.6v-1.782l1.404-.396V200h4.806v1.206h-4.806v4.248c0 .876.213 1.524.639 1.944.426.42 1.035.63 1.827.63.54 0 1.011-.102 1.413-.306a7.614 7.614 0 001.089-.666l.468 1.062c-.42.336-.921.606-1.503.81a5.377 5.377 0 01-1.791.306c-.48 0-.933-.069-1.359-.207a3.12 3.12 0 01-1.125-.639 3.06 3.06 0 01-.774-1.107c-.192-.45-.288-.987-.288-1.611v-4.464h-2.142V200zm13.2 0H60.8v-1.782l1.404-.396V200h4.806v1.206h-4.806v4.248c0 .876.213 1.524.639 1.944.426.42 1.035.63 1.827.63.54 0 1.011-.102 1.413-.306a7.614 7.614 0 001.089-.666l.468 1.062c-.42.336-.921.606-1.503.81a5.377 5.377 0 01-1.791.306c-.48 0-.933-.069-1.359-.207a3.12 3.12 0 01-1.125-.639 3.06 3.06 0 01-.774-1.107c-.192-.45-.288-.987-.288-1.611v-4.464h-2.142V200zm14.37 3.15a18.063 18.063 0 00-.081-1.512 5.988 5.988 0 00-.063-.468h-1.206V200h2.394l.18 1.26h.09a4.06 4.06 0 011.233-1.053c.498-.282 1.107-.423 1.827-.423 1.284 0 2.25.354 2.898 1.062.648.708.972 1.866.972 3.474 0 .756-.111 1.437-.333 2.043a4.295 4.295 0 01-.945 1.539c-.408.42-.9.744-1.476.972a5.141 5.141 0 01-1.908.342c-.252 0-.477-.009-.675-.027a5.93 5.93 0 01-.54-.072 4.255 4.255 0 01-.477-.117 6.561 6.561 0 01-.504-.18v3.78h-1.386v-9.45zm4.14-2.052c-.36 0-.699.066-1.017.198a3.034 3.034 0 00-1.449 1.242 2.118 2.118 0 00-.288.792v4.104a3.3 3.3 0 00.891.423c.33.102.765.153 1.305.153.96 0 1.728-.315 2.304-.945.576-.63.864-1.551.864-2.763 0-1.02-.201-1.809-.603-2.367-.402-.558-1.071-.837-2.007-.837zm15.216 5.472c0-.384-.15-.681-.45-.891-.3-.21-.672-.378-1.116-.504a20.643 20.643 0 00-1.449-.351 8.36 8.36 0 01-1.449-.432 3.247 3.247 0 01-1.116-.729c-.3-.306-.45-.735-.45-1.287 0-.456.099-.846.297-1.17.198-.324.459-.591.783-.801.324-.21.702-.366 1.134-.468a5.856 5.856 0 011.35-.153c.84 0 1.563.105 2.169.315.606.21 1.089.429 1.449.657l-.576 1.134a15.16 15.16 0 00-1.287-.621c-.462-.198-1.041-.297-1.737-.297-.264 0-.525.027-.783.081a2.767 2.767 0 00-.702.243c-.21.108-.378.249-.504.423a1.06 1.06 0 00-.189.639c0 .312.15.552.45.72.3.168.672.309 1.116.423.444.114.927.222 1.449.324a7.044 7.044 0 011.449.441c.444.192.816.45 1.116.774.3.324.45.762.45 1.314 0 .828-.327 1.512-.981 2.052-.654.54-1.635.81-2.943.81-.396 0-.786-.036-1.17-.108a7.096 7.096 0 01-1.08-.288 6.498 6.498 0 01-.918-.405 3.86 3.86 0 01-.684-.459l.72-1.17c.144.144.336.291.576.441a5.437 5.437 0 001.719.693 4.833 4.833 0 001.908.027c.282-.054.531-.138.747-.252.216-.114.387-.264.513-.45s.189-.411.189-.675zm9.51-5.634c0-.384.108-.681.324-.891.216-.21.504-.315.864-.315.384 0 .684.105.9.315.216.21.324.507.324.891 0 .348-.108.636-.324.864-.216.228-.516.342-.9.342-.36 0-.648-.114-.864-.342-.216-.228-.324-.516-.324-.864zm0 7.074c0-.384.108-.681.324-.891.216-.21.504-.315.864-.315.384 0 .684.105.9.315.216.21.324.507.324.891 0 .348-.108.636-.324.864-.216.228-.516.342-.9.342-.36 0-.648-.114-.864-.342-.216-.228-.324-.516-.324-.864zm17.124-11.826l1.134.504-6.57 14.832-1.134-.504 6.57-14.832zm13.2 0l1.134.504-6.57 14.832-1.134-.504 6.57-14.832zm12.966 10.386c0-.384-.15-.681-.45-.891-.3-.21-.672-.378-1.116-.504a20.643 20.643 0 00-1.449-.351 8.36 8.36 0 01-1.449-.432 3.247 3.247 0 01-1.116-.729c-.3-.306-.45-.735-.45-1.287 0-.456.099-.846.297-1.17.198-.324.459-.591.783-.801.324-.21.702-.366 1.134-.468a5.856 5.856 0 011.35-.153c.84 0 1.563.105 2.169.315.606.21 1.089.429 1.449.657l-.576 1.134a15.16 15.16 0 00-1.287-.621c-.462-.198-1.041-.297-1.737-.297-.264 0-.525.027-.783.081a2.767 2.767 0 00-.702.243c-.21.108-.378.249-.504.423a1.06 1.06 0 00-.189.639c0 .312.15.552.45.72.3.168.672.309 1.116.423.444.114.927.222 1.449.324a7.044 7.044 0 011.449.441c.444.192.816.45 1.116.774.3.324.45.762.45 1.314 0 .828-.327 1.512-.981 2.052-.654.54-1.635.81-2.943.81-.396 0-.786-.036-1.17-.108a7.096 7.096 0 01-1.08-.288 6.498 6.498 0 01-.918-.405 3.86 3.86 0 01-.684-.459l.72-1.17c.144.144.336.291.576.441a5.437 5.437 0 001.719.693 4.833 4.833 0 001.908.027c.282-.054.531-.138.747-.252.216-.114.387-.264.513-.45s.189-.411.189-.675zm7.206 2.43v-1.206h3.132v-6.588h-3.132V200h4.572v7.794h3.06V209h-7.632zm2.646-11.556c0-.324.108-.603.324-.837.216-.234.492-.351.828-.351.348 0 .639.117.873.351.234.234.351.513.351.837 0 .312-.117.576-.351.792a1.238 1.238 0 01-.873.324c-.336 0-.612-.108-.828-.324a1.077 1.077 0 01-.324-.792zm9.222 2.556h2.142v-1.782l1.404-.396V200h4.806v1.206h-4.806v4.248c0 .876.213 1.524.639 1.944.426.42 1.035.63 1.827.63.54 0 1.011-.102 1.413-.306a7.614 7.614 0 001.089-.666l.468 1.062c-.42.336-.921.606-1.503.81a5.377 5.377 0 01-1.791.306c-.48 0-.933-.069-1.359-.207a3.12 3.12 0 01-1.125-.639 3.06 3.06 0 01-.774-1.107c-.192-.45-.288-.987-.288-1.611v-4.464h-2.142V200zm22.164 7.866a4.53 4.53 0 01-.765.54 5.645 5.645 0 01-.963.432 7.06 7.06 0 01-1.089.279 6.633 6.633 0 01-1.143.099c-.72 0-1.356-.111-1.908-.333a3.674 3.674 0 01-1.386-.954 4.158 4.158 0 01-.846-1.485c-.192-.576-.288-1.224-.288-1.944 0-.756.105-1.428.315-2.016.21-.588.513-1.08.909-1.476a3.959 3.959 0 011.44-.909c.564-.21 1.194-.315 1.89-.315.504 0 1.002.066 1.494.198a2.95 2.95 0 011.305.747c.378.366.669.87.873 1.512.204.642.276 1.473.216 2.493h-6.966c0 1.08.291 1.887.873 2.421.582.534 1.359.801 2.331.801.324 0 .645-.039.963-.117.318-.078.621-.171.909-.279.288-.108.543-.228.765-.36.222-.132.393-.252.513-.36l.558 1.026zm-3.798-6.894a4.86 4.86 0 00-1.125.126 2.564 2.564 0 00-.936.423c-.27.198-.492.456-.666.774-.174.318-.285.711-.333 1.179h5.598c-.06-.792-.315-1.407-.765-1.845-.45-.438-1.041-.657-1.773-.657zm11.67 7.038c0-.384.108-.681.324-.891.216-.21.504-.315.864-.315.384 0 .684.105.9.315.216.21.324.507.324.891 0 .348-.108.636-.324.864-.216.228-.516.342-.9.342-.36 0-.648-.114-.864-.342-.216-.228-.324-.516-.324-.864zm16.908-6.624a7.111 7.111 0 00-.891-.243 4.64 4.64 0 00-.945-.099c-1.176 0-2.052.276-2.628.828-.576.552-.864 1.428-.864 2.628 0 .528.084.999.252 1.413.168.414.408.765.72 1.053.312.288.687.51 1.125.666.438.156.921.234 1.449.234.564 0 1.113-.096 1.647-.288.534-.192.981-.444 1.341-.756l.63 1.044a5.095 5.095 0 01-.63.45 6.053 6.053 0 01-1.971.774 6.38 6.38 0 01-1.305.126c-.78 0-1.467-.111-2.061-.333a3.914 3.914 0 01-1.485-.954 4.083 4.083 0 01-.9-1.494 5.818 5.818 0 01-.306-1.935c0-.756.105-1.428.315-2.016.21-.588.513-1.08.909-1.476a3.959 3.959 0 011.44-.909c.564-.21 1.194-.315 1.89-.315.888 0 1.611.078 2.169.234.558.156 1.029.33 1.413.522l-.018.054v2.502h-1.296v-1.71zm6.324 3.114c0-1.452.378-2.601 1.134-3.447.756-.846 1.836-1.269 3.24-1.269.756 0 1.407.123 1.953.369s.999.579 1.359.999c.36.42.627.918.801 1.494.174.576.261 1.194.261 1.854 0 .72-.096 1.371-.288 1.953a4.057 4.057 0 01-.846 1.485 3.738 3.738 0 01-1.377.945c-.546.222-1.167.333-1.863.333-.744 0-1.392-.123-1.944-.369a3.815 3.815 0 01-1.368-.999 4.073 4.073 0 01-.801-1.494 6.381 6.381 0 01-.261-1.854zm1.494 0c0 .42.051.84.153 1.26.102.42.267.798.495 1.134.228.336.525.606.891.81.366.204.813.306 1.341.306.96 0 1.683-.297 2.169-.891.486-.594.729-1.467.729-2.619 0-.432-.051-.855-.153-1.269a3.353 3.353 0 00-.504-1.125 2.656 2.656 0 00-.9-.81c-.366-.204-.813-.306-1.341-.306-.96 0-1.68.294-2.16.882-.48.588-.72 1.464-.72 2.628zm15.396 4.5v-5.994a9.51 9.51 0 00-.027-.729 2.442 2.442 0 00-.126-.63 1.01 1.01 0 00-.288-.441.734.734 0 00-.495-.162c-.408 0-.753.168-1.035.504-.282.336-.495.756-.639 1.26V209h-1.368v-9h.936l.27 1.098h.072c.12-.18.237-.351.351-.513.114-.162.246-.303.396-.423.15-.12.327-.213.531-.279.204-.066.462-.099.774-.099.18 0 .366.027.558.081.192.054.369.138.531.252.162.114.303.267.423.459s.198.426.234.702c.276-.468.585-.834.927-1.098.342-.264.813-.396 1.413-.396.396 0 .717.066.963.198s.438.321.576.567c.138.246.234.54.288.882.054.342.081.723.081 1.143V209h-1.368v-6.12c0-.252-.012-.489-.036-.711a2.268 2.268 0 00-.135-.585.967.967 0 00-.27-.396c-.114-.096-.267-.144-.459-.144-.42 0-.774.168-1.062.504-.288.336-.504.816-.648 1.44V209h-1.368zm12.678-8.064c0-.384.108-.681.324-.891.216-.21.504-.315.864-.315.384 0 .684.105.9.315.216.21.324.507.324.891 0 .348-.108.636-.324.864-.216.228-.516.342-.9.342-.36 0-.648-.114-.864-.342-.216-.228-.324-.516-.324-.864zm0 7.074c0-.384.108-.681.324-.891.216-.21.504-.315.864-.315.384 0 .684.105.9.315.216.21.324.507.324.891 0 .348-.108.636-.324.864-.216.228-.516.342-.9.342-.36 0-.648-.114-.864-.342-.216-.228-.324-.516-.324-.864zm10.356-2.07c0-1.452.882-2.622 2.646-3.51-.336-.18-.648-.366-.936-.558a3.746 3.746 0 01-.747-.648 2.737 2.737 0 01-.495-.828 2.996 2.996 0 01-.18-1.08c0-.444.09-.858.27-1.242.18-.384.438-.714.774-.99a3.842 3.842 0 011.224-.657 4.988 4.988 0 011.602-.243c.552 0 1.053.072 1.503.216a3.5 3.5 0 011.152.603c.318.258.561.561.729.909.168.348.252.72.252 1.116 0 .684-.171 1.311-.513 1.881-.342.57-.891 1.089-1.647 1.557.348.18.672.372.972.576.3.204.561.432.783.684.222.252.396.537.522.855.126.318.189.681.189 1.089 0 .504-.09.975-.27 1.413a3 3 0 01-.801 1.125 3.88 3.88 0 01-1.305.738c-.516.18-1.116.27-1.8.27-.636 0-1.2-.09-1.692-.27a3.696 3.696 0 01-1.233-.72c-.33-.3-.579-.648-.747-1.044a3.148 3.148 0 01-.252-1.242zm6.678-.18c0-.348-.081-.657-.243-.927a2.74 2.74 0 00-.648-.729 5.59 5.59 0 00-.927-.594c-.348-.18-.708-.36-1.08-.54-.864.42-1.479.882-1.845 1.386-.366.504-.549.978-.549 1.422 0 .3.057.585.171.855.114.27.282.507.504.711.222.204.498.366.828.486.33.12.711.18 1.143.18.348 0 .681-.048.999-.144.318-.096.6-.237.846-.423s.441-.42.585-.702c.144-.282.216-.609.216-.981zm-4.986-6.498c0 .336.078.636.234.9.156.264.363.501.621.711.258.21.555.402.891.576.336.174.69.345 1.062.513.636-.42 1.113-.84 1.431-1.26.318-.42.477-.882.477-1.386 0-.3-.063-.567-.189-.801a1.948 1.948 0 00-.504-.603 2.292 2.292 0 00-.729-.387 2.77 2.77 0 00-.864-.135c-.384 0-.726.054-1.026.162-.3.108-.552.252-.756.432-.204.18-.363.381-.477.603a1.463 1.463 0 00-.171.675zm11.148 3.438c0-1.02.09-1.935.27-2.745.18-.81.45-1.494.81-2.052.36-.558.816-.984 1.368-1.278.552-.294 1.206-.441 1.962-.441.804 0 1.485.144 2.043.432a3.466 3.466 0 011.359 1.26c.348.552.6 1.233.756 2.043.156.81.234 1.737.234 2.781 0 1.02-.09 1.935-.27 2.745-.18.81-.45 1.494-.81 2.052-.36.558-.816.984-1.368 1.278-.552.294-1.206.441-1.962.441-.792 0-1.467-.159-2.025-.477a3.8 3.8 0 01-1.368-1.341c-.354-.576-.609-1.263-.765-2.061a13.774 13.774 0 01-.234-2.637zm7.326 0c0-.636-.036-1.242-.108-1.818l-5.346 4.878c.204.684.51 1.23.918 1.638.408.408.942.612 1.602.612 1.056 0 1.809-.438 2.259-1.314.45-.876.675-2.208.675-3.996zm-5.832 0c0 .3.009.588.027.864.018.276.039.546.063.81l5.364-4.86c-.204-.648-.507-1.164-.909-1.548-.402-.384-.945-.576-1.629-.576-1.068 0-1.821.441-2.259 1.323-.438.882-.657 2.211-.657 3.987zm12.066 3.24c0-1.452.882-2.622 2.646-3.51-.336-.18-.648-.366-.936-.558a3.746 3.746 0 01-.747-.648 2.737 2.737 0 01-.495-.828 2.996 2.996 0 01-.18-1.08c0-.444.09-.858.27-1.242.18-.384.438-.714.774-.99a3.842 3.842 0 011.224-.657 4.988 4.988 0 011.602-.243c.552 0 1.053.072 1.503.216a3.5 3.5 0 011.152.603c.318.258.561.561.729.909.168.348.252.72.252 1.116 0 .684-.171 1.311-.513 1.881-.342.57-.891 1.089-1.647 1.557.348.18.672.372.972.576.3.204.561.432.783.684.222.252.396.537.522.855.126.318.189.681.189 1.089 0 .504-.09.975-.27 1.413a3 3 0 01-.801 1.125 3.88 3.88 0 01-1.305.738c-.516.18-1.116.27-1.8.27-.636 0-1.2-.09-1.692-.27a3.696 3.696 0 01-1.233-.72c-.33-.3-.579-.648-.747-1.044a3.148 3.148 0 01-.252-1.242zm6.678-.18c0-.348-.081-.657-.243-.927a2.74 2.74 0 00-.648-.729 5.59 5.59 0 00-.927-.594c-.348-.18-.708-.36-1.08-.54-.864.42-1.479.882-1.845 1.386-.366.504-.549.978-.549 1.422 0 .3.057.585.171.855.114.27.282.507.504.711.222.204.498.366.828.486.33.12.711.18 1.143.18.348 0 .681-.048.999-.144.318-.096.6-.237.846-.423s.441-.42.585-.702c.144-.282.216-.609.216-.981zm-4.986-6.498c0 .336.078.636.234.9.156.264.363.501.621.711.258.21.555.402.891.576.336.174.69.345 1.062.513.636-.42 1.113-.84 1.431-1.26.318-.42.477-.882.477-1.386 0-.3-.063-.567-.189-.801a1.948 1.948 0 00-.504-.603 2.292 2.292 0 00-.729-.387 2.77 2.77 0 00-.864-.135c-.384 0-.726.054-1.026.162-.3.108-.552.252-.756.432-.204.18-.363.381-.477.603a1.463 1.463 0 00-.171.675zm11.148 3.438c0-1.02.09-1.935.27-2.745.18-.81.45-1.494.81-2.052.36-.558.816-.984 1.368-1.278.552-.294 1.206-.441 1.962-.441.804 0 1.485.144 2.043.432a3.466 3.466 0 011.359 1.26c.348.552.6 1.233.756 2.043.156.81.234 1.737.234 2.781 0 1.02-.09 1.935-.27 2.745-.18.81-.45 1.494-.81 2.052-.36.558-.816.984-1.368 1.278-.552.294-1.206.441-1.962.441-.792 0-1.467-.159-2.025-.477a3.8 3.8 0 01-1.368-1.341c-.354-.576-.609-1.263-.765-2.061a13.774 13.774 0 01-.234-2.637zm7.326 0c0-.636-.036-1.242-.108-1.818l-5.346 4.878c.204.684.51 1.23.918 1.638.408.408.942.612 1.602.612 1.056 0 1.809-.438 2.259-1.314.45-.876.675-2.208.675-3.996zm-5.832 0c0 .3.009.588.027.864.018.276.039.546.063.81l5.364-4.86c-.204-.648-.507-1.164-.909-1.548-.402-.384-.945-.576-1.629-.576-1.068 0-1.821.441-2.259 1.323-.438.882-.657 2.211-.657 3.987zm18.834-6.516l1.134.504-6.57 14.832-1.134-.504 6.57-14.832zm6.81 6.966a18.063 18.063 0 00-.081-1.512 5.988 5.988 0 00-.063-.468h-1.206V200h2.394l.18 1.26h.09a4.06 4.06 0 011.233-1.053c.498-.282 1.107-.423 1.827-.423 1.284 0 2.25.354 2.898 1.062.648.708.972 1.866.972 3.474 0 .756-.111 1.437-.333 2.043a4.295 4.295 0 01-.945 1.539c-.408.42-.9.744-1.476.972a5.141 5.141 0 01-1.908.342c-.252 0-.477-.009-.675-.027a5.93 5.93 0 01-.54-.072 4.255 4.255 0 01-.477-.117 6.561 6.561 0 01-.504-.18v3.78h-1.386v-9.45zm4.14-2.052c-.36 0-.699.066-1.017.198a3.034 3.034 0 00-1.449 1.242 2.118 2.118 0 00-.288.792v4.104a3.3 3.3 0 00.891.423c.33.102.765.153 1.305.153.96 0 1.728-.315 2.304-.945.576-.63.864-1.551.864-2.763 0-1.02-.201-1.809-.603-2.367-.402-.558-1.071-.837-2.007-.837zm9.276-.396a5.717 5.717 0 011.746-.648 9.544 9.544 0 011.908-.198c.612 0 1.113.096 1.503.288.39.192.696.441.918.747.222.306.372.654.45 1.044.078.39.117.783.117 1.179 0 .456-.012.942-.036 1.458a66.688 66.688 0 00-.054 1.548c0 .6.036 1.17.108 1.71h1.206V209h-2.394l-.162-1.35h-.09c-.072.108-.18.246-.324.414a2.964 2.964 0 01-.567.495 3.664 3.664 0 01-.855.423c-.336.12-.732.18-1.188.18-.888 0-1.59-.228-2.106-.684-.516-.456-.774-1.08-.774-1.872 0-.612.135-1.122.405-1.53.27-.408.657-.72 1.161-.936.504-.216 1.113-.342 1.827-.378.714-.036 1.515.012 2.403.144.06-.552.069-1.011.027-1.377-.042-.366-.138-.657-.288-.873a1.206 1.206 0 00-.63-.459c-.27-.09-.603-.135-.999-.135-.54 0-1.056.075-1.548.225-.492.15-.93.303-1.314.459l-.45-1.044zm2.646 7.254c.336 0 .648-.054.936-.162.288-.108.54-.246.756-.414a2.743 2.743 0 00.864-1.116v-1.26c-.624-.108-1.2-.162-1.728-.162s-.984.057-1.368.171c-.384.114-.684.291-.9.531-.216.24-.324.552-.324.936 0 .396.135.741.405 1.035.27.294.723.441 1.359.441zm9.168-7.956h2.142v-1.782l1.404-.396V200h4.806v1.206h-4.806v4.248c0 .876.213 1.524.639 1.944.426.42 1.035.63 1.827.63.54 0 1.011-.102 1.413-.306a7.614 7.614 0 001.089-.666l.468 1.062c-.42.336-.921.606-1.503.81a5.377 5.377 0 01-1.791.306c-.48 0-.933-.069-1.359-.207a3.12 3.12 0 01-1.125-.639 3.06 3.06 0 01-.774-1.107c-.192-.45-.288-.987-.288-1.611v-4.464h-2.142V200zm12.714-3.6h2.808v4.716h.09a4.03 4.03 0 011.296-.981c.492-.234 1.104-.351 1.836-.351.576 0 1.077.06 1.503.18.426.12.774.33 1.044.63s.471.711.603 1.233c.132.522.198 1.185.198 1.989V209h-1.404v-4.914c0-.516-.03-.966-.09-1.35-.06-.384-.177-.705-.351-.963a1.626 1.626 0 00-.711-.585c-.3-.132-.684-.198-1.152-.198a2.76 2.76 0 00-.954.171c-.312.114-.597.27-.855.468s-.48.438-.666.72a2.693 2.693 0 00-.387.927V209h-1.386v-11.394h-1.422V196.4zm21.246-.216l1.134.504-6.57 14.832-1.134-.504 6.57-14.832zm6.81 6.966a18.063 18.063 0 00-.081-1.512 5.988 5.988 0 00-.063-.468h-1.206V200h2.394l.18 1.26h.09a4.06 4.06 0 011.233-1.053c.498-.282 1.107-.423 1.827-.423 1.284 0 2.25.354 2.898 1.062.648.708.972 1.866.972 3.474 0 .756-.111 1.437-.333 2.043a4.295 4.295 0 01-.945 1.539c-.408.42-.9.744-1.476.972a5.141 5.141 0 01-1.908.342c-.252 0-.477-.009-.675-.027a5.93 5.93 0 01-.54-.072 4.255 4.255 0 01-.477-.117 6.561 6.561 0 01-.504-.18v3.78h-1.386v-9.45zm4.14-2.052c-.36 0-.699.066-1.017.198a3.034 3.034 0 00-1.449 1.242 2.118 2.118 0 00-.288.792v4.104a3.3 3.3 0 00.891.423c.33.102.765.153 1.305.153.96 0 1.728-.315 2.304-.945.576-.63.864-1.551.864-2.763 0-1.02-.201-1.809-.603-2.367-.402-.558-1.071-.837-2.007-.837zm9.276-.396a5.717 5.717 0 011.746-.648 9.544 9.544 0 011.908-.198c.612 0 1.113.096 1.503.288.39.192.696.441.918.747.222.306.372.654.45 1.044.078.39.117.783.117 1.179 0 .456-.012.942-.036 1.458a66.688 66.688 0 00-.054 1.548c0 .6.036 1.17.108 1.71h1.206V209h-2.394l-.162-1.35h-.09c-.072.108-.18.246-.324.414a2.964 2.964 0 01-.567.495 3.664 3.664 0 01-.855.423c-.336.12-.732.18-1.188.18-.888 0-1.59-.228-2.106-.684-.516-.456-.774-1.08-.774-1.872 0-.612.135-1.122.405-1.53.27-.408.657-.72 1.161-.936.504-.216 1.113-.342 1.827-.378.714-.036 1.515.012 2.403.144.06-.552.069-1.011.027-1.377-.042-.366-.138-.657-.288-.873a1.206 1.206 0 00-.63-.459c-.27-.09-.603-.135-.999-.135-.54 0-1.056.075-1.548.225-.492.15-.93.303-1.314.459l-.45-1.044zm2.646 7.254c.336 0 .648-.054.936-.162.288-.108.54-.246.756-.414a2.743 2.743 0 00.864-1.116v-1.26c-.624-.108-1.2-.162-1.728-.162s-.984.057-1.368.171c-.384.114-.684.291-.9.531-.216.24-.324.552-.324.936 0 .396.135.741.405 1.035.27.294.723.441 1.359.441zm18.042 1.494c0 .564-.108 1.059-.324 1.485a2.917 2.917 0 01-.891 1.053 4.02 4.02 0 01-1.323.621 6.185 6.185 0 01-1.638.207c-.708 0-1.326-.072-1.854-.216a5.515 5.515 0 01-1.368-.558l.684-1.278c.108.096.249.189.423.279.174.09.375.174.603.252.228.078.471.141.729.189.258.048.513.072.765.072.528 0 .969-.048 1.323-.144.354-.096.639-.246.855-.45.216-.204.372-.468.468-.792.096-.324.144-.72.144-1.188v-1.008h-.072c-.276.396-.63.702-1.062.918-.432.216-.99.324-1.674.324-1.368 0-2.373-.381-3.015-1.143-.642-.762-.963-1.947-.963-3.555 0-1.536.408-2.697 1.224-3.483.816-.786 2.028-1.179 3.636-1.179.744 0 1.377.051 1.899.153.522.102.999.231 1.431.387v9.054zm-4.014-1.44c.732 0 1.308-.189 1.728-.567.42-.378.714-.957.882-1.737v-4.266c-.528-.252-1.266-.378-2.214-.378-.96 0-1.716.282-2.268.846-.552.564-.828 1.428-.828 2.592 0 .516.048.987.144 1.413.096.426.249.795.459 1.107.21.312.486.555.828.729.342.174.765.261 1.269.261zm17.304-.144a4.53 4.53 0 01-.765.54 5.645 5.645 0 01-.963.432 7.06 7.06 0 01-1.089.279 6.633 6.633 0 01-1.143.099c-.72 0-1.356-.111-1.908-.333a3.674 3.674 0 01-1.386-.954 4.158 4.158 0 01-.846-1.485c-.192-.576-.288-1.224-.288-1.944 0-.756.105-1.428.315-2.016.21-.588.513-1.08.909-1.476a3.959 3.959 0 011.44-.909c.564-.21 1.194-.315 1.89-.315.504 0 1.002.066 1.494.198a2.95 2.95 0 011.305.747c.378.366.669.87.873 1.512.204.642.276 1.473.216 2.493h-6.966c0 1.08.291 1.887.873 2.421.582.534 1.359.801 2.331.801.324 0 .645-.039.963-.117.318-.078.621-.171.909-.279.288-.108.543-.228.765-.36.222-.132.393-.252.513-.36l.558 1.026zm-3.798-6.894a4.86 4.86 0 00-1.125.126 2.564 2.564 0 00-.936.423c-.27.198-.492.456-.666.774-.174.318-.285.711-.333 1.179h5.598c-.06-.792-.315-1.407-.765-1.845-.45-.438-1.041-.657-1.773-.657zm11.652 4.842a1.011 1.011 0 01-.018-.198v-.198c0-.504.093-.936.279-1.296.186-.36.417-.681.693-.963a6.74 6.74 0 01.891-.765c.318-.228.615-.471.891-.729s.507-.543.693-.855c.186-.312.279-.684.279-1.116 0-.228-.054-.474-.162-.738a2.314 2.314 0 00-.495-.738 2.501 2.501 0 00-.864-.558c-.354-.144-.777-.216-1.269-.216a3.7 3.7 0 00-1.071.144 4.343 4.343 0 00-.864.36 4.644 4.644 0 00-.702.477c-.21.174-.399.339-.567.495l-.918-.828a4.62 4.62 0 011.953-1.431c.798-.318 1.713-.477 2.745-.477.624 0 1.17.102 1.638.306.468.204.855.465 1.161.783.306.318.534.672.684 1.062.15.39.225.771.225 1.143 0 .576-.099 1.059-.297 1.449-.198.39-.447.738-.747 1.044-.3.306-.621.582-.963.828-.342.246-.663.51-.963.792-.3.282-.549.597-.747.945-.198.348-.297.774-.297 1.278h-1.188zm-.36 2.358c0-.324.093-.579.279-.765.186-.186.435-.279.747-.279.324 0 .582.093.774.279.192.186.288.441.288.765 0 .312-.096.564-.288.756-.192.192-.45.288-.774.288-.312 0-.561-.096-.747-.288-.186-.192-.279-.444-.279-.756zm11.112-5.022a18.063 18.063 0 00-.081-1.512 5.988 5.988 0 00-.063-.468h-1.206V200h2.394l.18 1.26h.09a4.06 4.06 0 011.233-1.053c.498-.282 1.107-.423 1.827-.423 1.284 0 2.25.354 2.898 1.062.648.708.972 1.866.972 3.474 0 .756-.111 1.437-.333 2.043a4.295 4.295 0 01-.945 1.539c-.408.42-.9.744-1.476.972a5.141 5.141 0 01-1.908.342c-.252 0-.477-.009-.675-.027a5.93 5.93 0 01-.54-.072 4.255 4.255 0 01-.477-.117 6.561 6.561 0 01-.504-.18v3.78h-1.386v-9.45zm4.14-2.052c-.36 0-.699.066-1.017.198a3.034 3.034 0 00-1.449 1.242 2.118 2.118 0 00-.288.792v4.104a3.3 3.3 0 00.891.423c.33.102.765.153 1.305.153.96 0 1.728-.315 2.304-.945.576-.63.864-1.551.864-2.763 0-1.02-.201-1.809-.603-2.367-.402-.558-1.071-.837-2.007-.837zm9.618 6.606h2.826v-9.468l-2.88 2.016-.702-1.026 3.96-2.826h1.008v11.304h2.772V209h-6.984v-1.296zm12.138-6.93h8.352v1.296h-8.352v-1.296zm0 2.952h8.352v1.296h-8.352v-1.296zm17.412 3.528h.198L502.16 200h1.566l-3.798 9h-1.584l-3.87-9h1.656l3.006 7.254zm10.05.45h2.826v-9.468l-2.88 2.016-.702-1.026 3.96-2.826h1.008v11.304h2.772V209h-6.984v-1.296zm11.454-2.43c0-.792.222-1.548.666-2.268.444-.72 1.062-1.326 1.854-1.818a11.046 11.046 0 01-.747-1.296c-.21-.432-.315-.9-.315-1.404 0-.288.048-.57.144-.846.096-.276.249-.522.459-.738.21-.216.48-.39.81-.522.33-.132.729-.198 1.197-.198.492 0 .906.063 1.242.189.336.126.606.291.81.495.204.204.351.432.441.684.09.252.135.51.135.774 0 .504-.195 1.023-.585 1.557-.39.534-1.005 1.047-1.845 1.539.192.348.417.705.675 1.071.258.366.531.729.819 1.089.288.36.582.717.882 1.071.3.354.6.681.9.981a3.19 3.19 0 00.351-.702c.102-.276.186-.564.252-.864a8.368 8.368 0 00.189-1.728h1.278a10.485 10.485 0 01-.36 2.259c-.204.75-.504 1.383-.9 1.899a5.657 5.657 0 001.35 1.188v1.53c-.636-.312-1.362-.87-2.178-1.674-.216.216-.435.423-.657.621a4.088 4.088 0 01-1.692.909 4.734 4.734 0 01-1.233.144c-.492 0-.972-.081-1.44-.243a3.787 3.787 0 01-1.26-.729 3.608 3.608 0 01-.9-1.224c-.228-.492-.342-1.074-.342-1.746zm6.678 1.368c-.348-.348-.69-.726-1.026-1.134a34.295 34.295 0 01-1.809-2.403 30.16 30.16 0 01-.657-.999c-.648.492-1.101.99-1.359 1.494a3.505 3.505 0 00-.387 1.62c0 .468.087.873.261 1.215.174.342.393.627.657.855.264.228.555.396.873.504.318.108.627.162.927.162.6 0 1.101-.135 1.503-.405.402-.27.741-.573 1.017-.909zm-3.816-8.154c0 .36.075.717.225 1.071.15.354.345.705.585 1.053.636-.408 1.077-.78 1.323-1.116.246-.336.369-.63.369-.882 0-.384-.093-.696-.279-.936-.186-.24-.507-.36-.963-.36-.432 0-.75.108-.954.324-.204.216-.306.498-.306.846zm11.526 4.662a18.063 18.063 0 00-.081-1.512 5.988 5.988 0 00-.063-.468h-1.206V200h2.394l.18 1.26h.09a4.06 4.06 0 011.233-1.053c.498-.282 1.107-.423 1.827-.423 1.284 0 2.25.354 2.898 1.062.648.708.972 1.866.972 3.474 0 .756-.111 1.437-.333 2.043a4.295 4.295 0 01-.945 1.539c-.408.42-.9.744-1.476.972a5.141 5.141 0 01-1.908.342c-.252 0-.477-.009-.675-.027a5.93 5.93 0 01-.54-.072 4.255 4.255 0 01-.477-.117 6.562 6.562 0 01-.504-.18v3.78h-1.386v-9.45zm4.14-2.052c-.36 0-.699.066-1.017.198a3.034 3.034 0 00-1.449 1.242 2.118 2.118 0 00-.288.792v4.104a3.3 3.3 0 00.891.423c.33.102.765.153 1.305.153.96 0 1.728-.315 2.304-.945.576-.63.864-1.551.864-2.763 0-1.02-.201-1.809-.603-2.367-.402-.558-1.071-.837-2.007-.837zm16.332-1.512c0 1.104-.522 2.334-1.566 3.69-1.044 1.356-2.502 2.832-4.374 4.428h6.336V209h-7.992v-1.296c.228-.216.54-.498.936-.846a57.05 57.05 0 001.278-1.161c.456-.426.921-.885 1.395-1.377a15.64 15.64 0 001.287-1.512 8.867 8.867 0 00.936-1.548c.24-.516.36-1.014.36-1.494 0-.72-.189-1.287-.567-1.701-.378-.414-.945-.621-1.701-.621-.648 0-1.194.072-1.638.216a3.988 3.988 0 00-1.206.63l-.612-.99a5.806 5.806 0 011.719-.846 6.962 6.962 0 011.989-.27c1.128 0 1.98.306 2.556.918.576.612.864 1.44.864 2.484zm5.424 1.188h8.352v1.296h-8.352v-1.296zm0 2.952h8.352v1.296h-8.352v-1.296zm17.412 3.528h.198L581.36 200h1.566l-3.798 9h-1.584l-3.87-9h1.656l3.006 7.254zm16.764-7.668c0 1.104-.522 2.334-1.566 3.69-1.044 1.356-2.502 2.832-4.374 4.428h6.336V209h-7.992v-1.296c.228-.216.54-.498.936-.846s.822-.735 1.278-1.161c.456-.426.921-.885 1.395-1.377a15.64 15.64 0 001.287-1.512 8.867 8.867 0 00.936-1.548c.24-.516.36-1.014.36-1.494 0-.72-.189-1.287-.567-1.701-.378-.414-.945-.621-1.701-.621-.648 0-1.194.072-1.638.216a3.988 3.988 0 00-1.206.63l-.612-.99a5.806 5.806 0 011.719-.846 6.962 6.962 0 011.989-.27c1.128 0 1.98.306 2.556.918.576.612.864 1.44.864 2.484zm12.966 8.424c0-.384.108-.681.324-.891.216-.21.504-.315.864-.315.384 0 .684.105.9.315.216.21.324.507.324.891 0 .348-.108.636-.324.864-.216.228-.516.342-.9.342-.36 0-.648-.114-.864-.342-.216-.228-.324-.516-.324-.864zm-4.572 0c0-.384.108-.681.324-.891.216-.21.504-.315.864-.315.384 0 .684.105.9.315.216.21.324.507.324.891 0 .348-.108.636-.324.864-.216.228-.516.342-.9.342-.36 0-.648-.114-.864-.342-.216-.228-.324-.516-.324-.864zm-4.536 0c0-.384.108-.681.324-.891.216-.21.504-.315.864-.315.384 0 .684.105.9.315.216.21.324.507.324.891 0 .348-.108.636-.324.864-.216.228-.516.342-.9.342-.36 0-.648-.114-.864-.342-.216-.228-.324-.516-.324-.864zm32.898-3.06h-2.61l-.702 3.006h-1.242l.702-3.006h-1.764l.252-1.152h1.782l.558-2.358h-1.692l.252-1.152h1.71l.684-2.844h1.242l-.684 2.844h2.61l.684-2.844h1.242l-.684 2.844h1.746l-.288 1.152h-1.728l-.558 2.358h1.674l-.288 1.152h-1.656l-.702 3.006h-1.242l.702-3.006zm-2.34-1.152h2.61l.558-2.358h-2.61l-.558 2.358zm9.456-7.398h2.808v4.716h.09a4.03 4.03 0 011.296-.981c.492-.234 1.104-.351 1.836-.351.576 0 1.077.06 1.503.18.426.12.774.33 1.044.63s.471.711.603 1.233c.132.522.198 1.185.198 1.989V209h-1.404v-4.914c0-.516-.03-.966-.09-1.35-.06-.384-.177-.705-.351-.963a1.626 1.626 0 00-.711-.585c-.3-.132-.684-.198-1.152-.198a2.76 2.76 0 00-.954.171c-.312.114-.597.27-.855.468s-.48.438-.666.72a2.693 2.693 0 00-.387.927V209h-1.386v-11.394h-1.422V196.4zm15.072 4.302a5.717 5.717 0 011.746-.648 9.544 9.544 0 011.908-.198c.612 0 1.113.096 1.503.288.39.192.696.441.918.747.222.306.372.654.45 1.044.078.39.117.783.117 1.179 0 .456-.012.942-.036 1.458a66.688 66.688 0 00-.054 1.548c0 .6.036 1.17.108 1.71h1.206V209h-2.394l-.162-1.35h-.09c-.072.108-.18.246-.324.414a2.964 2.964 0 01-.567.495 3.664 3.664 0 01-.855.423c-.336.12-.732.18-1.188.18-.888 0-1.59-.228-2.106-.684-.516-.456-.774-1.08-.774-1.872 0-.612.135-1.122.405-1.53.27-.408.657-.72 1.161-.936.504-.216 1.113-.342 1.827-.378.714-.036 1.515.012 2.403.144.06-.552.069-1.011.027-1.377-.042-.366-.138-.657-.288-.873a1.206 1.206 0 00-.63-.459c-.27-.09-.603-.135-.999-.135-.54 0-1.056.075-1.548.225-.492.15-.93.303-1.314.459l-.45-1.044zm2.646 7.254c.336 0 .648-.054.936-.162.288-.108.54-.246.756-.414a2.743 2.743 0 00.864-1.116v-1.26c-.624-.108-1.2-.162-1.728-.162s-.984.057-1.368.171c-.384.114-.684.291-.9.531-.216.24-.324.552-.324.936 0 .396.135.741.405 1.035.27.294.723.441 1.359.441zm16.494-1.386c0-.384-.15-.681-.45-.891-.3-.21-.672-.378-1.116-.504a20.643 20.643 0 00-1.449-.351 8.36 8.36 0 01-1.449-.432 3.247 3.247 0 01-1.116-.729c-.3-.306-.45-.735-.45-1.287 0-.456.099-.846.297-1.17.198-.324.459-.591.783-.801.324-.21.702-.366 1.134-.468a5.856 5.856 0 011.35-.153c.84 0 1.563.105 2.169.315.606.21 1.089.429 1.449.657l-.576 1.134a15.16 15.16 0 00-1.287-.621c-.462-.198-1.041-.297-1.737-.297-.264 0-.525.027-.783.081a2.767 2.767 0 00-.702.243c-.21.108-.378.249-.504.423a1.06 1.06 0 00-.189.639c0 .312.15.552.45.72.3.168.672.309 1.116.423.444.114.927.222 1.449.324a7.044 7.044 0 011.449.441c.444.192.816.45 1.116.774.3.324.45.762.45 1.314 0 .828-.327 1.512-.981 2.052-.654.54-1.635.81-2.943.81-.396 0-.786-.036-1.17-.108a7.096 7.096 0 01-1.08-.288 6.498 6.498 0 01-.918-.405 3.86 3.86 0 01-.684-.459l.72-1.17c.144.144.336.291.576.441a5.437 5.437 0 001.719.693 4.833 4.833 0 001.908.027c.282-.054.531-.138.747-.252.216-.114.387-.264.513-.45s.189-.411.189-.675zm5.388-10.17h2.808v4.716h.09a4.03 4.03 0 011.296-.981c.492-.234 1.104-.351 1.836-.351.576 0 1.077.06 1.503.18.426.12.774.33 1.044.63s.471.711.603 1.233c.132.522.198 1.185.198 1.989V209h-1.404v-4.914c0-.516-.03-.966-.09-1.35-.06-.384-.177-.705-.351-.963a1.626 1.626 0 00-.711-.585c-.3-.132-.684-.198-1.152-.198a2.76 2.76 0 00-.954.171c-.312.114-.597.27-.855.468s-.48.438-.666.72a2.693 2.693 0 00-.387.927V209h-1.386v-11.394h-1.422V196.4z"/><text id="hostname" fill="#AF6E24" font-family="PTMono-Regular, PT Mono" font-size="16" font-weight="normal"><tspan x="147" y="152">hostname</tspan></text><text id="port" fill="#AF6E24" font-family="PTMono-Regular, PT Mono" font-size="16" font-weight="normal"><tspan x="261" y="152">port</tspan></text><text id="pathname" fill="#AF6E24" font-family="PTMono-Regular, PT Mono" font-size="16" font-weight="normal"><tspan x="334" y="152">pathname</tspan></text><text id="search" fill="#AF6E24" font-family="PTMono-Regular, PT Mono" font-size="16" font-weight="normal"><tspan x="496" y="152">search</tspan></text><text id="hash" fill="#AF6E24" font-family="PTMono-Regular, PT Mono" font-size="16" font-weight="normal"><tspan x="637" y="152">hash</tspan></text></g></g></svg> \ No newline at end of file diff --git a/5-network/07-xmlhttprequest/article.md b/5-network/08-xmlhttprequest/article.md similarity index 78% rename from 5-network/07-xmlhttprequest/article.md rename to 5-network/08-xmlhttprequest/article.md index bda4bd1b7..43d816cab 100644 --- a/5-network/07-xmlhttprequest/article.md +++ b/5-network/08-xmlhttprequest/article.md @@ -2,19 +2,19 @@ `XMLHttpRequest` is a built-in browser object that allows to make HTTP requests in JavaScript. -Despite of having the word "XML" in its name, it can operate on any data, not only in XML format. We can upload/download files, track progress and much more. +Despite having the word "XML" in its name, it can operate on any data, not only in XML format. We can upload/download files, track progress and much more. Right now, there's another, more modern method `fetch`, that somewhat deprecates `XMLHttpRequest`. -In modern web-development `XMLHttpRequest` may be used for three reasons: +In modern web-development `XMLHttpRequest` is used for three reasons: 1. Historical reasons: we need to support existing scripts with `XMLHttpRequest`. 2. We need to support old browsers, and don't want polyfills (e.g. to keep scripts tiny). 3. We need something that `fetch` can't do yet, e.g. to track upload progress. -Does that sound familiar? If yes, then all right, go on with `XMLHttpRequest`. Otherwise, please head on to fetch (coming soon). +Does that sound familiar? If yes, then all right, go on with `XMLHttpRequest`. Otherwise, please head on to <info:fetch>. -## Basic flow +## The basics XMLHttpRequest has two modes of operation: synchronous and asynchronous. @@ -22,20 +22,21 @@ Let's see the asynchronous first, as it's used in the majority of cases. To do the request, we need 3 steps: -1. Create `XMLHttpRequest`. +1. Create `XMLHttpRequest`: ```js - let xhr = new XMLHttpRequest(); // no arguments + let xhr = new XMLHttpRequest(); ``` + The constructor has no arguments. -2. Initialize it. +2. Initialize it, usually right after `new XMLHttpRequest`: ```js xhr.open(method, URL, [async, user, password]) ``` - This method is usually called first after `new XMLHttpRequest`. It specifies the main parameters of the request: + This method specifies the main parameters of the request: - `method` -- HTTP-method. Usually `"GET"` or `"POST"`. - - `URL` -- the URL to request. + - `URL` -- the URL to request, a string, can be [URL](info:url) object. - `async` -- if explicitly set to `false`, then the request is synchronous, we'll cover that a bit later. - `user`, `password` -- login and password for basic HTTP auth (if required). @@ -49,14 +50,14 @@ To do the request, we need 3 steps: This method opens the connection and sends the request to server. The optional `body` parameter contains the request body. - Some request methods like `GET` do not have a body. And some of them like `POST` use `body` to send the data to the server. We'll see examples later. + Some request methods like `GET` do not have a body. And some of them like `POST` use `body` to send the data to the server. We'll see examples of that later. -4. Listen to events for response. +4. Listen to `xhr` events for response. - These three are the most widely used: - - `load` -- when the result is ready, that includes HTTP errors like 404. + These three events are the most widely used: + - `load` -- when the request is complete (even if HTTP status is like 400 or 500), and the response is fully downloaded. - `error` -- when the request couldn't be made, e.g. network down or invalid URL. - - `progress` -- triggers periodically during the download, reports how much downloaded. + - `progress` -- triggers periodically while the response is being downloaded, reports how much has been downloaded. ```js xhr.onload = function() { @@ -92,7 +93,7 @@ xhr.onload = function() { if (xhr.status != 200) { // analyze HTTP status of the response alert(`Error ${xhr.status}: ${xhr.statusText}`); // e.g. 404: Not Found } else { // show the result - alert(`Done, got ${xhr.response.length} bytes`); // responseText is the server + alert(`Done, got ${xhr.response.length} bytes`); // response is the server response } }; @@ -110,7 +111,7 @@ xhr.onerror = function() { }; ``` -Once the server has responded, we can receive the result in the following properties of the request object: +Once the server has responded, we can receive the result in the following `xhr` properties: `status` : HTTP status code (a number): `200`, `404`, `403` and so on, can be `0` in case of a non-HTTP failure. @@ -119,23 +120,28 @@ Once the server has responded, we can receive the result in the following proper : HTTP status message (a string): usually `OK` for `200`, `Not Found` for `404`, `Forbidden` for `403` and so on. `response` (old scripts may use `responseText`) -: The server response. +: The server response body. -If we changed our mind, we can terminate the request at any time. The call to `xhr.abort()` does that: +We can also specify a timeout using the corresponding property: ```js -xhr.abort(); // terminate the request +xhr.timeout = 10000; // timeout in ms, 10 seconds ``` -That triggers `abort` event. +If the request does not succeed within the given time, it gets canceled and `timeout` event triggers. -We can also specify a timeout using the corresponding property: +````smart header="URL search parameters" +To add parameters to URL, like `?name=value`, and ensure the proper encoding, we can use [URL](info:url) object: ```js -xhr.timeout = 10000; // timeout in ms, 10 seconds +let url = new URL('https://google.com/search'); +url.searchParams.set('q', 'test me!'); + +// the parameter 'q' is encoded +xhr.open('GET', url); // https://google.com/search?q=test+me%21 ``` -If the request does not succeed within the given time, it gets canceled and `timeout` event triggers. +```` ## Response Type @@ -143,9 +149,9 @@ We can use `xhr.responseType` property to set the response format: - `""` (default) -- get as string, - `"text"` -- get as string, -- `"arraybuffer"` -- get as `ArrayBuffer` (for binary data, see chapter <info:arraybuffer-and-views>), +- `"arraybuffer"` -- get as `ArrayBuffer` (for binary data, see chapter <info:arraybuffer-binary-arrays>), - `"blob"` -- get as `Blob` (for binary data, see chapter <info:blob>), -- `"document"` -- get as XML document (can use XPath and other XML methods), +- `"document"` -- get as XML document (can use XPath and other XML methods) or HTML document (based on the MIME type of the received data), - `"json"` -- get as JSON (parsed automatically). For example, let's get the response as JSON: @@ -184,7 +190,7 @@ All states, as in [the specification](https://xhr.spec.whatwg.org/#states): UNSENT = 0; // initial state OPENED = 1; // open called HEADERS_RECEIVED = 2; // response headers received -LOADING = 3; // response is loading (a data packed is received) +LOADING = 3; // response is loading (a data packet is received) DONE = 4; // request complete ``` @@ -203,9 +209,17 @@ xhr.onreadystatechange = function() { }; ``` -You can find `readystatechange` listeners in really old code, for historical reasons. +You can find `readystatechange` listeners in really old code, it's there for historical reasons, as there was a time when there were no `load` and other events. Nowadays, `load/error/progress` handlers deprecate it. + +## Aborting request + +We can terminate the request at any time. The call to `xhr.abort()` does that: + +```js +xhr.abort(); // terminate the request +``` -Nowadays, `load/error/progress` handlers deprecate it. +That triggers `abort` event, and `xhr.status` becomes `0`. ## Synchronous requests @@ -229,7 +243,7 @@ try { } } catch(err) { // instead of onerror alert("Request failed"); -}; +} ``` It might look good, but synchronous calls are used rarely, because they block in-page JavaScript till the loading is complete. In some browsers it becomes impossible to scroll. If a synchronous call takes too much time, the browser may suggest to close the "hanging" webpage. @@ -255,13 +269,13 @@ There are 3 methods for HTTP-headers: ```warn header="Headers limitations" Several headers are managed exclusively by the browser, e.g. `Referer` and `Host`. - The full list is [in the specification](http://www.w3.org/TR/XMLHttpRequest/#the-setrequestheader-method). + The full list is [in the specification](https://xhr.spec.whatwg.org/#the-setrequestheader()-method). - XMLHttpRequest is not allowed to change them, for the sake of user safety and correctness of the request. + `XMLHttpRequest` is not allowed to change them, for the sake of user safety and correctness of the request. ``` ````warn header="Can't remove a header" - Another peciliarity of `XMLHttpRequest` is that one can't undo `setRequestHeader`. + Another peculiarity of `XMLHttpRequest` is that one can't undo `setRequestHeader`. Once the header is set, it's set. Additional calls add information to the header, don't overwrite it. @@ -290,7 +304,7 @@ There are 3 methods for HTTP-headers: Headers are returned as a single line, e.g.: - ``` + ```http Cache-Control: max-age=31536000 Content-Length: 4260 Content-Type: image/png @@ -312,11 +326,13 @@ There are 3 methods for HTTP-headers: result[name] = value; return result; }, {}); + + // headers['Content-Type'] = 'image/png' ``` ## POST, FormData -To make a POST request, we can use the built-in [FormData](https://developer.mozilla.org/en-US/docs/Web/API/FormData) object. +To make a POST request, we can use the built-in [FormData](mdn:api/FormData) object. The syntax: @@ -325,14 +341,14 @@ let formData = new FormData([form]); // creates an object, optionally fill from formData.append(name, value); // appends a field ``` -Create it, optionally from a form, `append` more fields if needed, and then: +We create it, optionally fill from a form, `append` more fields if needed, and then: 1. `xhr.open('POST', ...)` – use `POST` method. 2. `xhr.send(formData)` to submit the form to the server. For instance: -```html run +```html run refresh <form name="person"> <input name="name" value="John"> <input name="surname" value="Smith"> @@ -350,6 +366,7 @@ For instance: xhr.open("POST", "/article/xmlhttprequest/post/user"); xhr.send(formData); + xhr.onload = () => alert(xhr.response); </script> ``` @@ -373,19 +390,19 @@ xhr.setRequestHeader('Content-type', 'application/json; charset=utf-8'); xhr.send(json); ``` -The `.send(body)` method is pretty omnivore. It can send almost everything, including Blob and BufferSource objects. +The `.send(body)` method is pretty omnivore. It can send almost any `body`, including `Blob` and `BufferSource` objects. ## Upload progress -The `progress` event only works on the downloading stage. +The `progress` event triggers only on the downloading stage. -That is: if we `POST` something, `XMLHttpRequest` first uploads our data, then downloads the response. +That is: if we `POST` something, `XMLHttpRequest` first uploads our data (the request body), then downloads the response. -If we're uploading something big, then we're surely more interested in tracking the upload progress. But `progress` event doesn't help here. +If we're uploading something big, then we're surely more interested in tracking the upload progress. But `xhr.onprogress` doesn't help here. -There's another object `xhr.upload`, without methods, exclusively for upload events. +There's another object, without methods, exclusively to track upload events: `xhr.upload`. -Here's the list: +It generates events, similar to `xhr`, but `xhr.upload` triggers them solely on uploading: - `loadstart` -- upload started. - `progress` -- triggers periodically during the upload. @@ -444,7 +461,7 @@ function upload(file) { ## Cross-origin requests -`XMLHttpRequest` can make cross-domain requests, using the same CORS policy as [fetch](info:fetch-crossorigin). +`XMLHttpRequest` can make cross-origin requests, using the same CORS policy as [fetch](info:fetch-crossorigin). Just like `fetch`, it doesn't send cookies and HTTP-authorization to another origin by default. To enable them, set `xhr.withCredentials` to `true`: @@ -458,6 +475,8 @@ xhr.open('POST', 'http://anywhere.com/request'); ... ``` +See the chapter <info:fetch-crossorigin> for details about cross-origin headers. + ## Summary @@ -468,7 +487,7 @@ let xhr = new XMLHttpRequest(); xhr.open('GET', '/my/url'); -xhr.send(); // for POST, can send a string or FormData +xhr.send(); xhr.onload = function() { if (xhr.status != 200) { // HTTP error? @@ -490,17 +509,19 @@ xhr.onerror = function() { }; ``` -There are actually more events, the [modern specification](http://www.w3.org/TR/XMLHttpRequest/#events) lists them (in the lifecycle order): +There are actually more events, the [modern specification](https://xhr.spec.whatwg.org/#events) lists them (in the lifecycle order): - `loadstart` -- the request has started. -- `progress` -- a data packet of the response has arrived, the whole response body at the moment is in `responseText`. +- `progress` -- a data packet of the response has arrived, the whole response body at the moment is in `response`. - `abort` -- the request was canceled by the call `xhr.abort()`. -- `error` -- connection error has occured, e.g. wrong domain name. Doesn't happen for HTTP-errors like 404. +- `error` -- connection error has occurred, e.g. wrong domain name. Doesn't happen for HTTP-errors like 404. - `load` -- the request has finished successfully. - `timeout` -- the request was canceled due to timeout (only happens if it was set). -- `loadend` -- the request has finished (succeffully or not). +- `loadend` -- triggers after `load`, `error`, `timeout` or `abort`. + +The `error`, `abort`, `timeout`, and `load` events are mutually exclusive. Only one of them may happen. -The most used events are load completion (`load`), load failure (`error`), and also `progress` to track the progress. +The most used events are load completion (`load`), load failure (`error`), or we can use a single `loadend` handler and check the properties of the request object `xhr` to see what happened. We've already seen another event: `readystatechange`. Historically, it appeared long ago, before the specification settled. Nowadays, there's no need to use it, we can replace it with newer events, but it can often be found in older scripts. diff --git a/5-network/07-xmlhttprequest/example.view/index.html b/5-network/08-xmlhttprequest/example.view/index.html similarity index 100% rename from 5-network/07-xmlhttprequest/example.view/index.html rename to 5-network/08-xmlhttprequest/example.view/index.html diff --git a/5-network/07-xmlhttprequest/example.view/server.js b/5-network/08-xmlhttprequest/example.view/server.js similarity index 100% rename from 5-network/07-xmlhttprequest/example.view/server.js rename to 5-network/08-xmlhttprequest/example.view/server.js diff --git a/5-network/07-xmlhttprequest/hello.txt b/5-network/08-xmlhttprequest/hello.txt similarity index 100% rename from 5-network/07-xmlhttprequest/hello.txt rename to 5-network/08-xmlhttprequest/hello.txt diff --git a/5-network/07-xmlhttprequest/phones-async.view/index.html b/5-network/08-xmlhttprequest/phones-async.view/index.html similarity index 100% rename from 5-network/07-xmlhttprequest/phones-async.view/index.html rename to 5-network/08-xmlhttprequest/phones-async.view/index.html diff --git a/5-network/07-xmlhttprequest/phones-async.view/phones.json b/5-network/08-xmlhttprequest/phones-async.view/phones.json similarity index 100% rename from 5-network/07-xmlhttprequest/phones-async.view/phones.json rename to 5-network/08-xmlhttprequest/phones-async.view/phones.json diff --git a/5-network/07-xmlhttprequest/phones-async.view/server.js b/5-network/08-xmlhttprequest/phones-async.view/server.js similarity index 100% rename from 5-network/07-xmlhttprequest/phones-async.view/server.js rename to 5-network/08-xmlhttprequest/phones-async.view/server.js diff --git a/5-network/07-xmlhttprequest/phones.json b/5-network/08-xmlhttprequest/phones.json similarity index 100% rename from 5-network/07-xmlhttprequest/phones.json rename to 5-network/08-xmlhttprequest/phones.json diff --git a/5-network/07-xmlhttprequest/phones.view/index.html b/5-network/08-xmlhttprequest/phones.view/index.html similarity index 100% rename from 5-network/07-xmlhttprequest/phones.view/index.html rename to 5-network/08-xmlhttprequest/phones.view/index.html diff --git a/5-network/07-xmlhttprequest/phones.view/phones.json b/5-network/08-xmlhttprequest/phones.view/phones.json similarity index 100% rename from 5-network/07-xmlhttprequest/phones.view/phones.json rename to 5-network/08-xmlhttprequest/phones.view/phones.json diff --git a/5-network/07-xmlhttprequest/phones.view/server.js b/5-network/08-xmlhttprequest/phones.view/server.js similarity index 100% rename from 5-network/07-xmlhttprequest/phones.view/server.js rename to 5-network/08-xmlhttprequest/phones.view/server.js diff --git a/5-network/07-xmlhttprequest/post.view/index.html b/5-network/08-xmlhttprequest/post.view/index.html similarity index 100% rename from 5-network/07-xmlhttprequest/post.view/index.html rename to 5-network/08-xmlhttprequest/post.view/index.html diff --git a/5-network/07-xmlhttprequest/post.view/server.js b/5-network/08-xmlhttprequest/post.view/server.js similarity index 100% rename from 5-network/07-xmlhttprequest/post.view/server.js rename to 5-network/08-xmlhttprequest/post.view/server.js diff --git a/5-network/09-resume-upload/article.md b/5-network/09-resume-upload/article.md new file mode 100644 index 000000000..b0aa447d6 --- /dev/null +++ b/5-network/09-resume-upload/article.md @@ -0,0 +1,82 @@ +# Resumable file upload + +With `fetch` method it's fairly easy to upload a file. + +How to resume the upload after lost connection? There's no built-in option for that, but we have the pieces to implement it. + +Resumable uploads should come with upload progress indication, as we expect big files (if we may need to resume). So, as `fetch` doesn't allow to track upload progress, we'll use [XMLHttpRequest](info:xmlhttprequest). + +## Not-so-useful progress event + +To resume upload, we need to know how much was uploaded till the connection was lost. + +There's `xhr.upload.onprogress` to track upload progress. + +Unfortunately, it won't help us to resume the upload here, as it triggers when the data is *sent*, but was it received by the server? The browser doesn't know. + +Maybe it was buffered by a local network proxy, or maybe the remote server process just died and couldn't process them, or it was just lost in the middle and didn't reach the receiver. + +That's why this event is only useful to show a nice progress bar. + +To resume upload, we need to know *exactly* the number of bytes received by the server. And only the server can tell that, so we'll make an additional request. + +## Algorithm + +1. First, create a file id, to uniquely identify the file we're going to upload: + ```js + let fileId = file.name + '-' + file.size + '-' + file.lastModified; + ``` + That's needed for resume upload, to tell the server what we're resuming. + + If the name or the size or the last modification date changes, then there'll be another `fileId`. + +2. Send a request to the server, asking how many bytes it already has, like this: + ```js + let response = await fetch('status', { + headers: { + 'X-File-Id': fileId + } + }); + + // The server has that many bytes + let startByte = +await response.text(); + ``` + + This assumes that the server tracks file uploads by `X-File-Id` header. Should be implemented at server-side. + + If the file doesn't yet exist at the server, then the server response should be `0` + +3. Then, we can use `Blob` method `slice` to send the file from `startByte`: + ```js + xhr.open("POST", "upload"); + + // File id, so that the server knows which file we upload + xhr.setRequestHeader('X-File-Id', fileId); + + // The byte we're resuming from, so the server knows we're resuming + xhr.setRequestHeader('X-Start-Byte', startByte); + + xhr.upload.onprogress = (e) => { + console.log(`Uploaded ${startByte + e.loaded} of ${startByte + e.total}`); + }; + + // file can be from input.files[0] or another source + xhr.send(file.slice(startByte)); + ``` + + Here we send the server both file id as `X-File-Id`, so it knows which file we're uploading, and the starting byte as `X-Start-Byte`, so it knows we're not uploading it initially, but resuming. + + The server should check its records, and if there was an upload of that file, and the current uploaded size is exactly `X-Start-Byte`, then append the data to it. + + +Here's the demo with both client and server code, written on Node.js. + +It works only partially on this site, as Node.js is behind another server named Nginx, that buffers uploads, passing them to Node.js when fully complete. + +But you can download it and run locally for the full demonstration: + +[codetabs src="upload-resume" height=200] + +As we can see, modern networking methods are close to file managers in their capabilities -- control over headers, progress indicator, sending file parts, etc. + +We can implement resumable upload and much more. diff --git a/5-network/09-resume-upload/upload-resume.view/index.html b/5-network/09-resume-upload/upload-resume.view/index.html new file mode 100644 index 000000000..f1178145e --- /dev/null +++ b/5-network/09-resume-upload/upload-resume.view/index.html @@ -0,0 +1,50 @@ +<!DOCTYPE HTML> + +<script src="uploader.js"></script> + +<form name="upload" method="POST" enctype="multipart/form-data" action="/upload"> + <input type="file" name="myfile"> + <input type="submit" name="submit" value="Upload (Resumes automatically)"> +</form> + +<button onclick="uploader.stop()">Stop upload</button> + + +<div id="log">Progress indication</div> + +<script> + function log(html) { + document.getElementById('log').innerHTML = html; + console.log(html); + } + + function onProgress(loaded, total) { + log("progress " + loaded + ' / ' + total); + } + + let uploader; + + document.forms.upload.onsubmit = async function(e) { + e.preventDefault(); + + let file = this.elements.myfile.files[0]; + if (!file) return; + + uploader = new Uploader({file, onProgress}); + + try { + let uploaded = await uploader.upload(); + + if (uploaded) { + log('success'); + } else { + log('stopped'); + } + + } catch(err) { + console.error(err); + log('error'); + } + }; + +</script> diff --git a/5-network/09-resume-upload/upload-resume.view/server.js b/5-network/09-resume-upload/upload-resume.view/server.js new file mode 100644 index 000000000..83ce59f7a --- /dev/null +++ b/5-network/09-resume-upload/upload-resume.view/server.js @@ -0,0 +1,123 @@ +let http = require('http'); +let static = require('node-static'); +let fileServer = new static.Server('.'); +let path = require('path'); +let fs = require('fs'); +let debug = require('debug')('example:resume-upload'); + +let uploads = Object.create(null); + +function onUpload(req, res) { + + let fileId = req.headers['x-file-id']; + let startByte = +req.headers['x-start-byte']; + + if (!fileId) { + res.writeHead(400, "No file id"); + res.end(); + } + + // we'll files "nowhere" + let filePath = '/dev/null'; + // could use a real path instead, e.g. + // let filePath = path.join('/tmp', fileId); + + debug("onUpload fileId: ", fileId); + + // initialize a new upload + if (!uploads[fileId]) uploads[fileId] = {}; + let upload = uploads[fileId]; + + debug("bytesReceived:" + upload.bytesReceived + " startByte:" + startByte) + + let fileStream; + + // if startByte is 0 or not set, create a new file, otherwise check the size and append to existing one + if (!startByte) { + upload.bytesReceived = 0; + fileStream = fs.createWriteStream(filePath, { + flags: 'w' + }); + debug("New file created: " + filePath); + } else { + // we can check on-disk file size as well to be sure + if (upload.bytesReceived != startByte) { + res.writeHead(400, "Wrong start byte"); + res.end(upload.bytesReceived); + return; + } + // append to existing file + fileStream = fs.createWriteStream(filePath, { + flags: 'a' + }); + debug("File reopened: " + filePath); + } + + + req.on('data', function(data) { + debug("bytes received", upload.bytesReceived); + upload.bytesReceived += data.length; + }); + + // send request body to file + req.pipe(fileStream); + + // when the request is finished, and all its data is written + fileStream.on('close', function() { + if (upload.bytesReceived == req.headers['x-file-size']) { + debug("Upload finished"); + delete uploads[fileId]; + + // can do something else with the uploaded file here + + res.end("Success " + upload.bytesReceived); + } else { + // connection lost, we leave the unfinished file around + debug("File unfinished, stopped at " + upload.bytesReceived); + res.end(); + } + }); + + // in case of I/O error - finish the request + fileStream.on('error', function(err) { + debug("fileStream error"); + res.writeHead(500, "File error"); + res.end(); + }); + +} + +function onStatus(req, res) { + let fileId = req.headers['x-file-id']; + let upload = uploads[fileId]; + debug("onStatus fileId:", fileId, " upload:", upload); + if (!upload) { + res.end("0") + } else { + res.end(String(upload.bytesReceived)); + } +} + + +function accept(req, res) { + if (req.url == '/status') { + onStatus(req, res); + } else if (req.url == '/upload' && req.method == 'POST') { + onUpload(req, res); + } else { + fileServer.serve(req, res); + } + +} + + + + +// ----------------------------------- + +if (!module.parent) { + http.createServer(accept).listen(8080); + console.log('Server listening at port 8080'); +} else { + exports.accept = accept; +} diff --git a/5-network/09-resume-upload/upload-resume.view/uploader.js b/5-network/09-resume-upload/upload-resume.view/uploader.js new file mode 100644 index 000000000..10002039c --- /dev/null +++ b/5-network/09-resume-upload/upload-resume.view/uploader.js @@ -0,0 +1,75 @@ +class Uploader { + + constructor({file, onProgress}) { + this.file = file; + this.onProgress = onProgress; + + // create fileId that uniquely identifies the file + // we could also add user session identifier (if had one), to make it even more unique + this.fileId = file.name + '-' + file.size + '-' + file.lastModified; + } + + async getUploadedBytes() { + let response = await fetch('status', { + headers: { + 'X-File-Id': this.fileId + } + }); + + if (response.status != 200) { + throw new Error("Can't get uploaded bytes: " + response.statusText); + } + + let text = await response.text(); + + return +text; + } + + async upload() { + this.startByte = await this.getUploadedBytes(); + + let xhr = this.xhr = new XMLHttpRequest(); + xhr.open("POST", "upload", true); + + // send file id, so that the server knows which file to resume + xhr.setRequestHeader('X-File-Id', this.fileId); + // send the byte we're resuming from, so the server knows we're resuming + xhr.setRequestHeader('X-Start-Byte', this.startByte); + + xhr.upload.onprogress = (e) => { + this.onProgress(this.startByte + e.loaded, this.startByte + e.total); + }; + + console.log("send the file, starting from", this.startByte); + xhr.send(this.file.slice(this.startByte)); + + // return + // true if upload was successful, + // false if aborted + // throw in case of an error + return await new Promise((resolve, reject) => { + + xhr.onload = xhr.onerror = () => { + console.log("upload end status:" + xhr.status + " text:" + xhr.statusText); + + if (xhr.status == 200) { + resolve(true); + } else { + reject(new Error("Upload failed: " + xhr.statusText)); + } + }; + + // onabort triggers only when xhr.abort() is called + xhr.onabort = () => resolve(false); + + }); + + } + + stop() { + if (this.xhr) { + this.xhr.abort(); + } + } + +} diff --git a/5-network/10-long-polling/article.md b/5-network/10-long-polling/article.md new file mode 100644 index 000000000..e9d8abe39 --- /dev/null +++ b/5-network/10-long-polling/article.md @@ -0,0 +1,98 @@ +# Long polling + +Long polling is the simplest way of having persistent connection with server, that doesn't use any specific protocol like WebSocket or Server Sent Events. + +Being very easy to implement, it's also good enough in a lot of cases. + +## Regular Polling + +The simplest way to get new information from the server is periodic polling. That is, regular requests to the server: "Hello, I'm here, do you have any information for me?". For example, once every 10 seconds. + +In response, the server first takes a notice to itself that the client is online, and second - sends a packet of messages it got till that moment. + +That works, but there are downsides: +1. Messages are passed with a delay up to 10 seconds (between requests). +2. Even if there are no messages, the server is bombed with requests every 10 seconds, even if the user switched somewhere else or is asleep. That's quite a load to handle, speaking performance-wise. + +So, if we're talking about a very small service, the approach may be viable, but generally, it needs an improvement. + +## Long polling + +So-called "long polling" is a much better way to poll the server. + +It's also very easy to implement, and delivers messages without delays. + +The flow: + +1. A request is sent to the server. +2. The server doesn't close the connection until it has a message to send. +3. When a message appears - the server responds to the request with it. +4. The browser makes a new request immediately. + +This situation, where the browser has sent a request and keeps a pending connection with the server, is standard for this method. Only when a message is delivered, the connection is closed and reestablished. + + + +If the connection is lost, because of, say, a network error, the browser immediately sends a new request. + +A sketch of client-side `subscribe` function that makes long requests: + +```js +async function subscribe() { + let response = await fetch("/subscribe"); + + if (response.status == 502) { + // Status 502 is a connection timeout error, + // may happen when the connection was pending for too long, + // and the remote server or a proxy closed it + // let's reconnect + await subscribe(); + } else if (response.status != 200) { + // An error - let's show it + showMessage(response.statusText); + // Reconnect in one second + await new Promise(resolve => setTimeout(resolve, 1000)); + await subscribe(); + } else { + // Get and show the message + let message = await response.text(); + showMessage(message); + // Call subscribe() again to get the next message + await subscribe(); + } +} + +subscribe(); +``` + +As you can see, `subscribe` function makes a fetch, then waits for the response, handles it and calls itself again. + +```warn header="Server should be ok with many pending connections" +The server architecture must be able to work with many pending connections. + +Certain server architectures run one process per connection, resulting in there being as many processes as there are connections, while each process consumes quite a bit of memory. So, too many connections will just consume it all. + +That's often the case for backends written in languages like PHP and Ruby. + +Servers written using Node.js usually don't have such problems. + +That said, it isn't a programming language issue. Most modern languages, including PHP and Ruby allow to implement a proper backend. Just please make sure that your server architecture works fine with many simultaneous connections. +``` + +## Demo: a chat + +Here's a demo chat, you can also download it and run locally (if you're familiar with Node.js and can install modules): + +[codetabs src="longpoll" height=500] + +Browser code is in `browser.js`. + +## Area of usage + +Long polling works great in situations when messages are rare. + +If messages come very often, then the chart of requesting-receiving messages, painted above, becomes saw-like. + +Every message is a separate request, supplied with headers, authentication overhead, and so on. + +So, in this case, another method is preferred, such as [Websocket](info:websocket) or [Server Sent Events](info:server-sent-events). diff --git a/5-network/10-long-polling/long-polling.svg b/5-network/10-long-polling/long-polling.svg new file mode 100644 index 000000000..045ef371f --- /dev/null +++ b/5-network/10-long-polling/long-polling.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" width="521" height="320" viewBox="0 0 521 320"><defs><style>@import url(https://fonts.googleapis.com/css?family=Open+Sans:bold,italic,bolditalic%7CPT+Mono);@font-face{font-family:'PT Mono';font-weight:700;font-style:normal;src:local('PT MonoBold'),url(/font/PTMonoBold.woff2) format('woff2'),url(/font/PTMonoBold.woff) format('woff'),url(/font/PTMonoBold.ttf) format('truetype')}</style></defs><g id="network" fill="none" fill-rule="evenodd" stroke="none" stroke-width="1"><g id="long-polling.svg"><text id="Browser" fill="#181717" font-family="OpenSans-Regular, Open Sans" font-size="16" font-weight="normal"><tspan x="27" y="74">Browser</tspan></text><text id="Server" fill="#181717" font-family="OpenSans-Regular, Open Sans" font-size="16" font-weight="normal"><tspan x="31" y="226">Server</tspan></text><path id="Line" fill="#181717" fill-rule="nonzero" d="M450.81 75.82l.435.244 8 4.5.775.436-.775.436-8 4.5-.436.245-.49-.872.436-.245 6.336-3.564H66.5v-1h390.591l-6.336-3.564-.436-.245.49-.872zM450.81 200.32l.435.244 8 4.5.775.436-.775.436-8 4.5-.436.245-.49-.872.436-.245L457.09 206H65.5v-1h391.591l-6.336-3.564-.436-.245.49-.872z"/><text id="request" fill="#AF6E24" font-family="PTMono-Bold, PT Mono" font-size="14" font-weight="bold" transform="rotate(76 113.291 143.266)"><tspan x="83.891" y="146.266">request</tspan></text><text id="connection-hangs" fill="#AF6E24" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal"><tspan x="126" y="227">connection</tspan> <tspan x="142.519" y="245">hangs</tspan></text><text id="connection-breaks-en" fill="#AF6E24" font-family="OpenSans-Regular, Open Sans" font-size="12" font-weight="normal"><tspan x="186.09" y="264">connection breaks</tspan> <tspan x="196.479" y="282">end of request</tspan></text><path id="Line-3" fill="#C06334" fill-rule="nonzero" d="M90.233 80.79l.238.972 27.169 110.901 5.828-1.427L120 206.5l-10.13-11.932 5.827-1.429L88.529 82.238l-.238-.971 1.942-.476z"/><text id="data" fill="#AF6E24" font-family="PTMono-Bold, PT Mono" font-size="14" font-weight="bold" transform="rotate(-76 206.38 143.266)"><tspan x="189.58" y="146.266">data</tspan></text><path id="Line-2" fill="#C06334" fill-rule="nonzero" d="M233.226 82l3.107 15.341-5.794-1.565-29.574 109.485-.26.965-1.931-.521.26-.966L228.61 95.255l-5.792-1.565L233.226 82z"/><path id="Line-2-Copy" fill="#C06334" fill-rule="nonzero" d="M377.226 82l3.107 15.341-5.794-1.565-29.574 109.485-.26.965-1.931-.521.26-.966L372.61 95.255l-5.792-1.565L377.226 82z"/><text id="request-copy" fill="#AF6E24" font-family="PTMono-Bold, PT Mono" font-size="14" font-weight="bold" transform="rotate(76 260.291 143.266)"><tspan x="230.891" y="146.266">request</tspan></text><text id="connection-hangs-copy" fill="#AF6E24" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal"><tspan x="270" y="227">connection</tspan> <tspan x="286.519" y="245">hangs</tspan></text><path id="Line-3-Copy-3" fill="#C06334" fill-rule="nonzero" d="M237.233 80.79l.238.972 27.169 110.901 5.828-1.427L267 206.5l-10.13-11.932 5.827-1.429-27.168-110.901-.238-.971 1.942-.476z"/><text id="request-copy-2" fill="#AF6E24" font-family="PTMono-Bold, PT Mono" font-size="14" font-weight="bold" transform="rotate(76 404.291 143.266)"><tspan x="374.891" y="146.266">request</tspan></text><path id="Line-3-Copy-4" fill="#C06334" fill-rule="nonzero" d="M381.233 80.79l.238.972 27.169 110.901 5.828-1.427L411 206.5l-10.13-11.932 5.827-1.429-27.168-110.901-.238-.971 1.942-.476z"/><text id="data-copy" fill="#AF6E24" font-family="PTMono-Bold, PT Mono" font-size="14" font-weight="bold" transform="rotate(-76 350.38 143.266)"><tspan x="333.58" y="146.266">data</tspan></text><path id="Line" stroke="#7E7C7B" stroke-dasharray="3,3" stroke-linecap="square" d="M235 40.75v201"/><text id="connection-breaks-en-copy" fill="#AF6E24" font-family="OpenSans-Regular, Open Sans" font-size="12" font-weight="normal"><tspan x="330.09" y="264">connection breaks</tspan> <tspan x="340.479" y="282">end of request</tspan></text><path id="Line-Copy" stroke="#7E7C7B" stroke-dasharray="3,3" stroke-linecap="square" d="M379 40.75v201"/></g></g></svg> \ No newline at end of file diff --git a/5-network/10-long-polling/longpoll.view/browser.js b/5-network/10-long-polling/longpoll.view/browser.js new file mode 100644 index 000000000..3a66aa5c6 --- /dev/null +++ b/5-network/10-long-polling/longpoll.view/browser.js @@ -0,0 +1,54 @@ +// Sending messages, a simple POST +function PublishForm(form, url) { + + function sendMessage(message) { + fetch(url, { + method: 'POST', + body: message + }); + } + + form.onsubmit = function() { + let message = form.message.value; + if (message) { + form.message.value = ''; + sendMessage(message); + } + return false; + }; +} + +// Receiving messages with long polling +function SubscribePane(elem, url) { + + function showMessage(message) { + let messageElem = document.createElement('div'); + messageElem.append(message); + elem.append(messageElem); + } + + async function subscribe() { + let response = await fetch(url); + + if (response.status == 502) { + // Connection timeout + // happens when the connection was pending for too long + // let's reconnect + await subscribe(); + } else if (response.status != 200) { + // Show Error + showMessage(response.statusText); + // Reconnect in one second + await new Promise(resolve => setTimeout(resolve, 1000)); + await subscribe(); + } else { + // Got message + let message = await response.text(); + showMessage(message); + await subscribe(); + } + } + + subscribe(); + +} diff --git a/5-network/10-long-polling/longpoll.view/index.html b/5-network/10-long-polling/longpoll.view/index.html new file mode 100644 index 000000000..7452c1838 --- /dev/null +++ b/5-network/10-long-polling/longpoll.view/index.html @@ -0,0 +1,18 @@ +<!DOCTYPE html> +<script src="browser.js"></script> + +All visitors of this page will see messages of each other. + +<form name="publish"> + <input type="text" name="message" /> + <input type="submit" value="Send" /> +</form> + +<div id="subscribe"> +</div> + +<script> + new PublishForm(document.forms.publish, 'publish'); + // random url parameter to avoid any caching issues + new SubscribePane(document.getElementById('subscribe'), 'subscribe?random=' + Math.random()); +</script> diff --git a/5-network/10-long-polling/longpoll.view/server.js b/5-network/10-long-polling/longpoll.view/server.js new file mode 100644 index 000000000..c3903e375 --- /dev/null +++ b/5-network/10-long-polling/longpoll.view/server.js @@ -0,0 +1,87 @@ +let http = require('http'); +let url = require('url'); +let querystring = require('querystring'); +let static = require('node-static'); + +let fileServer = new static.Server('.'); + +let subscribers = Object.create(null); + +function onSubscribe(req, res) { + let id = Math.random(); + + res.setHeader('Content-Type', 'text/plain;charset=utf-8'); + res.setHeader("Cache-Control", "no-cache, must-revalidate"); + + subscribers[id] = res; + + req.on('close', function() { + delete subscribers[id]; + }); + +} + +function publish(message) { + + for (let id in subscribers) { + let res = subscribers[id]; + res.end(message); + } + + subscribers = Object.create(null); +} + +function accept(req, res) { + let urlParsed = url.parse(req.url, true); + + // new client wants messages + if (urlParsed.pathname == '/subscribe') { + onSubscribe(req, res); + return; + } + + // sending a message + if (urlParsed.pathname == '/publish' && req.method == 'POST') { + // accept POST + req.setEncoding('utf8'); + let message = ''; + req.on('data', function(chunk) { + message += chunk; + }).on('end', function() { + publish(message); // publish it to everyone + res.end("ok"); + }); + + return; + } + + // the rest is static + fileServer.serve(req, res); + +} + +function close() { + for (let id in subscribers) { + let res = subscribers[id]; + res.end(); + } +} + +// ----------------------------------- + +if (!module.parent) { + http.createServer(accept).listen(8080); + console.log('Server running on port 8080'); +} else { + exports.accept = accept; + + if (process.send) { + process.on('message', (msg) => { + if (msg === 'shutdown') { + close(); + } + }); + } + + process.on('SIGINT', close); +} diff --git a/5-network/08-websocket/article.md b/5-network/11-websocket/article.md similarity index 54% rename from 5-network/08-websocket/article.md rename to 5-network/11-websocket/article.md index 723922087..268b674f0 100644 --- a/5-network/08-websocket/article.md +++ b/5-network/11-websocket/article.md @@ -1,8 +1,6 @@ # WebSocket -The `WebSocket` protocol, described in the specification [RFC 6455](http://tools.ietf.org/html/rfc6455) provides a way to exchange data between browser and server via a persistent connection. - -Once a websocket connection is established, both client and server may send the data to each other. +The `WebSocket` protocol, described in the specification [RFC 6455](https://datatracker.ietf.org/doc/html/rfc6455), provides a way to exchange data between browser and server via a persistent connection. The data can be passed in both directions as "packets", without breaking the connection and the need of additional HTTP-requests. WebSocket is especially great for services that require continuous data exchange, e.g. online games, real-time trading systems and so on. @@ -17,11 +15,11 @@ let socket = new WebSocket("*!*ws*/!*://javascript.info"); There's also encrypted `wss://` protocol. It's like HTTPS for websockets. ```smart header="Always prefer `wss://`" -The `wss://` protocol not only encrypted, but also more reliable. +The `wss://` protocol is not only encrypted, but also more reliable. That's because `ws://` data is not encrypted, visible for any intermediary. Old proxy servers do not know about WebSocket, they may see "strange" headers and abort the connection. -On the other hand, `wss://` is WebSocket over TLS, (same as HTTPS is HTTP over TLS), the transport security layer encrypts the data at sender and decrypts at the receiver, so it passes encrypted through proxies. They can't see what's inside and let it through. +On the other hand, `wss://` is WebSocket over TLS, (same as HTTPS is HTTP over TLS), the transport security layer encrypts the data at the sender and decrypts it at the receiver. So data packets are passed encrypted through proxies. They can't see what's inside and let them through. ``` Once the socket is created, we should listen to events on it. There are totally 4 events: @@ -38,12 +36,13 @@ Here's an example: let socket = new WebSocket("wss://javascript.info/article/websocket/demo/hello"); socket.onopen = function(e) { - alert("[open] Connection established, send -> server"); + alert("[open] Connection established"); + alert("Sending to server"); socket.send("My name is John"); }; socket.onmessage = function(event) { - alert(`[message] Data received: ${event.data} <- server`); + alert(`[message] Data received from server: ${event.data}`); }; socket.onclose = function(event) { @@ -57,11 +56,11 @@ socket.onclose = function(event) { }; socket.onerror = function(error) { - alert(`[error] ${error.message}`); + alert(`[error]`); }; ``` -For demo purposes, there's a small server [server.js](demo/server.js) written in Node.js, for the example above, running. It responds with "hello", then waits 5 seconds and closes the connection. +For demo purposes, there's a small server [server.js](demo/server.js) written in Node.js, for the example above, running. It responds with "Hello from server, John", then waits 5 seconds and closes the connection. So you'll see events `open` -> `message` -> `close`. @@ -71,13 +70,13 @@ Now let's talk more in-depth. ## Opening a websocket -When `new WebSocket(url)` is created, it starts an HTTP handshake (HTTPS for `wss://`). +When `new WebSocket(url)` is created, it starts connecting immediately. -The browser asks the server: "Do you support Websocket?" And if the server says "yes", then the talk continues in WebSocket protocol, which is not HTTP at all. +During the connection, the browser (using headers) asks the server: "Do you support Websocket?" And if the server replies "yes", then the talk continues in WebSocket protocol, which is not HTTP at all.  -Here's an example of browser request for `new WebSocket("wss://javascript.info/chat")`. +Here's an example of browser headers for a request made by `new WebSocket("wss://javascript.info/chat")`. ``` GET /chat @@ -89,10 +88,10 @@ Sec-WebSocket-Key: Iv8io/9s+lYFgZWcXczP8Q== Sec-WebSocket-Version: 13 ``` -- `Origin` -- the origin of the client page. WebSocket is cross-origin by nature. There are no special headers or other limitations. Old servers are unable to handle WebSocket anyway, so there are no compabitility issues. But `Origin` header is important, as it allows the server to decide whether or not to talk WebSocket with this website. +- `Origin` -- the origin of the client page, e.g. `https://javascript.info`. WebSocket objects are cross-origin by nature. There are no special headers or other limitations. Old servers are unable to handle WebSocket anyway, so there are no compatibility issues. But the `Origin` header is important, as it allows the server to decide whether or not to talk WebSocket with this website. - `Connection: Upgrade` -- signals that the client would like to change the protocol. - `Upgrade: websocket` -- the requested protocol is "websocket". -- `Sec-WebSocket-Key` -- a random browser-generated key for security. +- `Sec-WebSocket-Key` -- a random browser-generated key, used to ensure that the server supports WebSocket protocol. It's random to prevent proxies from caching any following communication. - `Sec-WebSocket-Version` -- WebSocket protocol version, 13 is the current one. ```smart header="WebSocket handshake can't be emulated" @@ -108,9 +107,9 @@ Connection: Upgrade Sec-WebSocket-Accept: hsBlbuDTkk24srzEOTBUlZAlC2g= ``` -Here `Sec-WebSocket-Accept` is `Sec-WebSocket-Key`, recoded using a special algorithm. The browser uses it to make sure that the response corresponds to the request. +Here `Sec-WebSocket-Accept` is `Sec-WebSocket-Key`, recoded using a special algorithm. Upon seeing it, the browser understands that the server really does support the WebSocket protocol. -Afterwards, the data is transfered using WebSocket protocol, we'll see its structure ("frames") soon. And that's not HTTP at all. +Afterwards, the data is transferred using the WebSocket protocol, we'll see its structure ("frames") soon. And that's not HTTP at all. ### Extensions and subprotocols @@ -118,19 +117,17 @@ There may be additional headers `Sec-WebSocket-Extensions` and `Sec-WebSocket-Pr For instance: -- `Sec-WebSocket-Extensions: deflate-frame` means that the browser supports data compression. An extension is something related to transferring the data, not data itself. - -- `Sec-WebSocket-Protocol: soap, wamp` means that we're going to transfer not just any data, but the data in [SOAP](http://en.wikipedia.org/wiki/SOAP) or WAMP ("The WebSocket Application Messaging Protocol") protocols. WebSocket subprotocols are registered in the [IANA catalogue](http://www.iana.org/assignments/websocket/websocket.xml). +- `Sec-WebSocket-Extensions: deflate-frame` means that the browser supports data compression. An extension is something related to transferring the data, functionality that extends the WebSocket protocol. The header `Sec-WebSocket-Extensions` is sent automatically by the browser, with the list of all extensions it supports. -`Sec-WebSocket-Extensions` is sent by the browser automatically, with a list of possible extensions it supports. +- `Sec-WebSocket-Protocol: soap, wamp` means that we'd like to transfer not just any data, but the data in [SOAP](https://en.wikipedia.org/wiki/SOAP) or WAMP ("The WebSocket Application Messaging Protocol") protocols. WebSocket subprotocols are registered in the [IANA catalogue](https://www.iana.org/assignments/websocket/websocket.xml). So, this header describes the data formats that we're going to use. -`Sec-WebSocket-Protocol` is depends on us: we decide what kind of data we send. The second optional parameter of `new WebSocket` lists subprotocols: + This optional header is set using the second parameter of `new WebSocket`. That's the array of subprotocols, e.g. if we'd like to use SOAP or WAMP: -```js -let socket = new WebSocket("wss://javascript.info/chat", ["soap", "wamp"]); -``` + ```js + let socket = new WebSocket("wss://javascript.info/chat", ["soap", "wamp"]); + ``` -The server should respond with a list of protocls and extensions that it agrees to use. +The server should respond with a list of protocols and extensions that it agrees to use. For example, the request: @@ -161,31 +158,31 @@ Sec-WebSocket-Protocol: soap */!* ``` -Here the server responds that it supports the extension `deflate-frame`, and only SOAP of the requested subprotocols. +Here the server responds that it supports the extension "deflate-frame", and only SOAP of the requested subprotocols. -## WebSocket data +## Data transfer -WebSocket communication consists of "frames" that can be sent from either side: +WebSocket communication consists of "frames" -- data fragments, that can be sent from either side, and can be of several kinds: - "text frames" -- contain text data that parties send to each other. - "binary data frames" -- contain binary data that parties send to each other. - "ping/pong frames" are used to check the connection, sent from the server, the browser responds to these automatically. -- "connection close frame" and a few other service frames. +- there's also "connection close frame" and a few other service frames. -In the browser, we only care about text or binary frames. +In the browser, we directly work only with text or binary frames. -**WebSocket `.send()` can send either text or binary data, doesn't matter.** +**WebSocket `.send()` method can send either text or binary data.** -For sending, `socket.send(body)` allows strings or any binary format, including `Blob`, `ArrayBuffer`, etc. No settings required: just send it out. +A call `socket.send(body)` allows `body` in string or a binary format, including `Blob`, `ArrayBuffer`, etc. No settings are required: just send it out in any format. -**Textual data always comes as string. For receiving binary data, we can choose between `Blob` and `ArrayBuffer` formats.** +**When we receive the data, text always comes as string. And for binary data, we can choose between `Blob` and `ArrayBuffer` formats.** -The `socket.bufferType` is `"blob"` by default, so binary data comes in Blobs. +That's set by `socket.binaryType` property, it's `"blob"` by default, so binary data comes as `Blob` objects. [Blob](info:blob) is a high-level binary object, it directly integrates with `<a>`, `<img>` and other tags, so that's a sane default. But for binary processing, to access individual data bytes, we can change it to `"arraybuffer"`: ```js -socket.bufferType = "arraybuffer"; +socket.binaryType = "arraybuffer"; socket.onmessage = (event) => { // event.data is either a string (if text) or arraybuffer (if binary) }; @@ -193,16 +190,17 @@ socket.onmessage = (event) => { ## Rate limiting -Imagine, our app is generating a lot of data to send. But network connection is not that fast. The user may be on a mobile, in rural area. +Imagine, our app is generating a lot of data to send. But the user has a slow network connection, maybe on a mobile internet, outside of a city. -We can call `socket.send(data)` again and again. But the data will be buffered in memory and sent out only as fast as network speed allows. +We can call `socket.send(data)` again and again. But the data will be buffered (stored) in memory and sent out only as fast as network speed allows. -The `socket.bufferedAmount` property stores how many bytes are buffered at this moment, waiting to be sent over the network. +The `socket.bufferedAmount` property stores how many bytes remain buffered at this moment, waiting to be sent over the network. We can examine it to see whether the socket is actually available for transmission. ```js -// every 100ms examine the socket and send more data only if no data buffered +// every 100ms examine the socket and send more data +// only if all the existing data was sent out setInterval(() => { if (socket.bufferedAmount == 0) { socket.send(moreData()); @@ -215,18 +213,21 @@ setInterval(() => { Normally, when a party wants to close the connection (both browser and server have equal rights), they send a "connection close frame" with a numeric code and a textual reason. -The method is: +The method for that is: ```js socket.close([code], [reason]); ``` -Then the other party in `close` event handle can get the code and the reason, e.g.: +- `code` is a special WebSocket closing code (optional) +- `reason` is a string that describes the reason of closing (optional) + +Then the other party in the `close` event handler gets the code and the reason, e.g.: ```js -// one party: +// closing party: socket.close(1000, "Work complete"); -// another party +// the other party socket.onclose = event => { // event.code === 1000 // event.reason === "Work complete" @@ -234,12 +235,10 @@ socket.onclose = event => { }; ``` -The `code` is not just any number, but a special WebSocket closing code. - -Most common values: +Most common code values: -- `1000` -- the default, normal closure, -- `1006` -- can't set such code manually, indicates that the connection was broken (no close frame). +- `1000` -- the default, normal closure (used if no `code` supplied), +- `1006` -- no way to set such code manually, indicates that the connection was lost (no close frame). There are other codes like: @@ -248,9 +247,9 @@ There are other codes like: - `1011` -- unexpected error on server, - ...and so on. -Please refer to the [RFC6455, §7.4.1](https://tools.ietf.org/html/rfc6455#section-7.4.1) for the full list. +The full list can be found in [RFC6455, §7.4.1](https://tools.ietf.org/html/rfc6455#section-7.4.1). -WebSocket codes are somewhat like HTTP codes, but different. In particular, an codes less than `1000` are reserved, there'll be an error if we try to set such a code. +WebSocket codes are somewhat like HTTP codes, but different. In particular, codes lower than `1000` are reserved, there'll be an error if we try to set such a code. ```js // in case connection is broken @@ -274,9 +273,9 @@ To get connection state, additionally there's `socket.readyState` property with ## Chat example -Let's review a chat example using browser WebSocket API and Node.js WebSocket module <https://github.com/websockets/ws>. +Let's review a chat example using browser WebSocket API and Node.js WebSocket module <https://github.com/websockets/ws>. We'll pay the main attention to the client side, but the server is also simple. -HTML: there's a `<form>` to send messages and a `<div>` for incoming messages: +HTML: we need a `<form>` to send messages and a `<div>` for incoming messages: ```html <!-- message form --> @@ -289,7 +288,12 @@ HTML: there's a `<form>` to send messages and a `<div>` for incoming messages: <div id="messages"></div> ``` -JavaScript is also simple. We open a socket, then on form submission -- `socket.send(message)`, on incoming message -- append it to `div#messages`: +From JavaScript we want three things: +1. Open the connection. +2. On form submission -- `socket.send(message)` for the message. +3. On incoming message -- append it to `div#messages`. + +Here's the code: ```js let socket = new WebSocket("wss://javascript.info/article/websocket/chat/ws"); @@ -302,7 +306,7 @@ document.forms.publish.onsubmit = function() { return false; }; -// show message in div#messages +// message received - show the message in div#messages socket.onmessage = function(event) { let message = event.data; @@ -312,14 +316,13 @@ socket.onmessage = function(event) { } ``` -Server-side code is a little bit beyound our scope here. We're using browser WebSocket API, a server may have another library. +Server-side code is a little bit beyond our scope. Here we'll use Node.js, but you don't have to. Other platforms also have their means to work with WebSocket. -Still it can also be pretty simple. We'll use Node.js with <https://github.com/websockets/ws> module for websockets. +The server-side algorithm will be: -The algorithm will be: 1. Create `clients = new Set()` -- a set of sockets. -2. For each accepted websocket, `clients.add(socket)` and listen for its messages. -3. When a message received: iterate over clients and send it to everyone. +2. For each accepted websocket, add it to the set `clients.add(socket)` and set `message` event listener to get its messages. +3. When a message is received: iterate over clients and send it to everyone. 4. When a connection is closed: `clients.delete(socket)`. ```js @@ -329,7 +332,8 @@ const wss = new ws.Server({noServer: true}); const clients = new Set(); http.createServer((req, res) => { - // in real project we have additional code here to handle non-websocket requests + // here we only handle websocket connections + // in real project we'd have some other code here to handle non-websocket requests wss.handleUpgrade(req, req.socket, Buffer.alloc(0), onSocketConnect); }); @@ -355,12 +359,11 @@ Here's the working example: [iframe src="chat" height="100" zip] -You can also download it (upper-right button in the iframe) and run locally. Just don't forget to install [Node.js](https://nodejs.org/en/) and `npm install ws` before running. - +You can also download it (upper-right button in the iframe) and run it locally. Just don't forget to install [Node.js](https://nodejs.org/en/) and `npm install ws` before running. ## Summary -WebSocket is a modern way to have persisten browser-server connections. +WebSocket is a modern way to have persistent browser-server connections. - WebSockets don't have cross-origin limitations. - They are well-supported in browsers. @@ -378,8 +381,8 @@ Events: - `error`, - `close`. -WebSocket by itself does not include reconnection, authentication and many other high-level mechanisms. So there are client/server libraries add them. But it's also possible to implement these manually and integrate WebSockets with an existing site. +WebSocket by itself does not include reconnection, authentication and many other high-level mechanisms. So there are client/server libraries for that, and it's also possible to implement these capabilities manually. -For integration purposes, a WebSocket server is usually running in parallel with the main server, and they share a single database. Requests to WebSocket use `wss://ws.site.com`, a subdomain that leads to WebSocket server, while `https://site.com` goes to the main HTTP-server. +Sometimes, to integrate WebSocket into existing projects, people run a WebSocket server in parallel with the main HTTP-server, and they share a single database. Requests to WebSocket use `wss://ws.site.com`, a subdomain that leads to the WebSocket server, while `https://site.com` goes to the main HTTP-server. -Surely, other ways of integration are also possible. Many servers (such as Node.js) can support both HTTP and WebSocket protocols. +Surely, other ways of integration are also possible. diff --git a/5-network/08-websocket/chat.view/index.html b/5-network/11-websocket/chat.view/index.html similarity index 100% rename from 5-network/08-websocket/chat.view/index.html rename to 5-network/11-websocket/chat.view/index.html diff --git a/5-network/08-websocket/chat.view/server.js b/5-network/11-websocket/chat.view/server.js similarity index 100% rename from 5-network/08-websocket/chat.view/server.js rename to 5-network/11-websocket/chat.view/server.js diff --git a/5-network/08-websocket/demo.view/server.js b/5-network/11-websocket/demo.view/server.js similarity index 74% rename from 5-network/08-websocket/demo.view/server.js rename to 5-network/11-websocket/demo.view/server.js index 7b17734d7..bff739938 100644 --- a/5-network/08-websocket/demo.view/server.js +++ b/5-network/11-websocket/demo.view/server.js @@ -9,8 +9,9 @@ function accept(req, res) { res.end(); return; } + // can be Connection: keep-alive, Upgrade - if (req.headers.connection.match(/\bupgrade\b/i)) { + if (!req.headers.connection.match(/\bupgrade\b/i)) { res.end(); return; } @@ -20,8 +21,9 @@ function accept(req, res) { function onConnect(ws) { ws.on('message', function (message) { - let name = message.match(/\w+$/) || "Guest"; - ws.send(`Hello, ${name}!`); + message = message.toString(); + let name = message.match(/([\p{Alpha}\p{M}\p{Nd}\p{Pc}\p{Join_C}]+)$/gu) || "Guest"; + ws.send(`Hello from server, ${name}!`); setTimeout(() => ws.close(1000, "Bye!"), 5000); }); diff --git a/5-network/08-websocket/websocket-handshake.svg b/5-network/11-websocket/websocket-handshake.svg similarity index 57% rename from 5-network/08-websocket/websocket-handshake.svg rename to 5-network/11-websocket/websocket-handshake.svg index b05713747..2c406b5a3 100644 --- a/5-network/08-websocket/websocket-handshake.svg +++ b/5-network/11-websocket/websocket-handshake.svg @@ -1,3 +1,4 @@ +<<<<<<< HEAD:5-network/08-websocket/websocket-handshake.svg <?xml version="1.0" encoding="UTF-8"?> <svg width="429px" height="404px" viewBox="0 0 429 404" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <!-- Generator: sketchtool 55.2 (78181) - https://sketchapp.com --> @@ -31,4 +32,7 @@ </text> </g> </g> -</svg> \ No newline at end of file +</svg> +======= +<svg xmlns="http://www.w3.org/2000/svg" width="429" height="348" viewBox="0 0 429 348"><defs><style>@import url(https://fonts.googleapis.com/css?family=Open+Sans:bold,italic,bolditalic%7CPT+Mono);@font-face{font-family:'PT Mono';font-weight:700;font-style:normal;src:local('PT MonoBold'),url(/font/PTMonoBold.woff2) format('woff2'),url(/font/PTMonoBold.woff) format('woff'),url(/font/PTMonoBold.ttf) format('truetype')}</style></defs><g id="network" fill="none" fill-rule="evenodd" stroke="none" stroke-width="1"><g id="websocket-handshake.svg"><path id="Rectangle-227" fill="#FBF2EC" stroke="#DBAF88" stroke-width="2" d="M2 16h128v64H2z"/><text id="Browser" fill="#AF6E24" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal"><tspan x="40" y="49">Browser</tspan></text><path id="Rectangle-228" fill="#FBF2EC" stroke="#DBAF88" stroke-width="2" d="M298 16h128v64H298z"/><text id="Server" fill="#AF6E24" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal"><tspan x="340" y="49">Server</tspan></text><path id="Line" stroke="#7E7C7B" stroke-linecap="square" d="M67 81v250.5M363 81v251.5"/><path id="Line" fill="#C06334" fill-rule="nonzero" d="M349 133l14 7-14 7v-6H68v-2h281v-6z"/><path id="Line-Copy" fill="#C06334" fill-rule="nonzero" d="M83 204v6h281v2H83v6l-14-7 14-7z"/><text id="HTTP-request" fill="#AF6E24" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal"><tspan x="172.015" y="130">HTTP-request</tspan></text><text id=""Hey,-server,-let's" fill="#AF6E24" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal"><tspan x="102.605" y="161">"Hey, server, let's talk WebSocket?"</tspan></text><text id="HTTP-response-"Okay!" fill="#AF6E24" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal"><tspan x="166.419" y="204">HTTP-response</tspan> <tspan x="191.972" y="226">"Okay!"</tspan></text><path id="Line-Copy-2" fill="#C06334" fill-rule="nonzero" d="M81 272v6h2v2h-2v6l-14-7 14-7zm268 0l14 7-14 7v-14zm-254 6v2h-4v-2h4zm6 0v2h-4v-2h4zm6 0v2h-4v-2h4zm6 0v2h-4v-2h4zm6 0v2h-4v-2h4zm6 0v2h-4v-2h4zm6 0v2h-4v-2h4zm6 0v2h-4v-2h4zm6 0v2h-4v-2h4zm6 0v2h-4v-2h4zm6 0v2h-4v-2h4zm6 0v2h-4v-2h4zm6 0v2h-4v-2h4zm6 0v2h-4v-2h4zm6 0v2h-4v-2h4zm6 0v2h-4v-2h4zm6 0v2h-4v-2h4zm6 0v2h-4v-2h4zm6 0v2h-4v-2h4zm6 0v2h-4v-2h4zm6 0v2h-4v-2h4zm-126 0v2h-4v-2h4zm138 0v2h-4v-2h4zm6 0v2h-4v-2h4zm6 0v2h-4v-2h4zm6 0v2h-4v-2h4zm6 0v2h-4v-2h4zm6 0v2h-4v-2h4zm6 0v2h-4v-2h4zm6 0v2h-4v-2h4zm6 0v2h-4v-2h4zm6 0v2h-4v-2h4zm6 0v2h-4v-2h4zm6 0v2h-4v-2h4zm6 0v2h-4v-2h4zm6 0v2h-4v-2h4zm6 0v2h-4v-2h4zm6 0v2h-4v-2h4zm6 0v2h-4v-2h4zm6 0v2h-4v-2h4zm6 0v2h-4v-2h4zm6 0v2h-4v-2h4zm6 0v2h-4v-2h4zm-126 0v2h-4v-2h4z" transform="matrix(-1 0 0 1 430 0)"/><text id="WebSocket-protocol" fill="#AF6E24" font-family="OpenSans-Regular, Open Sans" font-size="14" font-weight="normal"><tspan x="151.604" y="272">WebSocket protocol</tspan></text></g></g></svg> +>>>>>>> 540d753e90789205fc6e75c502f68382c87dea9b:5-network/11-websocket/websocket-handshake.svg diff --git a/5-network/12-server-sent-events/article.md b/5-network/12-server-sent-events/article.md new file mode 100644 index 000000000..c59d671a4 --- /dev/null +++ b/5-network/12-server-sent-events/article.md @@ -0,0 +1,271 @@ +# Server Sent Events + +The [Server-Sent Events](https://html.spec.whatwg.org/multipage/comms.html#the-eventsource-interface) specification describes a built-in class `EventSource`, that keeps connection with the server and allows to receive events from it. + +Similar to `WebSocket`, the connection is persistent. + +But there are several important differences: + +| `WebSocket` | `EventSource` | +|-------------|---------------| +| Bi-directional: both client and server can exchange messages | One-directional: only server sends data | +| Binary and text data | Only text | +| WebSocket protocol | Regular HTTP | + +`EventSource` is a less-powerful way of communicating with the server than `WebSocket`. + +Why should one ever use it? + +The main reason: it's simpler. In many applications, the power of `WebSocket` is a little bit too much. + +We need to receive a stream of data from server: maybe chat messages or market prices, or whatever. That's what `EventSource` is good at. Also it supports auto-reconnect, something we need to implement manually with `WebSocket`. Besides, it's a plain old HTTP, not a new protocol. + +## Getting messages + +To start receiving messages, we just need to create `new EventSource(url)`. + +The browser will connect to `url` and keep the connection open, waiting for events. + +The server should respond with status 200 and the header `Content-Type: text/event-stream`, then keep the connection and write messages into it in the special format, like this: + +``` +data: Message 1 + +data: Message 2 + +data: Message 3 +data: of two lines +``` + +- A message text goes after `data:`, the space after the colon is optional. +- Messages are delimited with double line breaks `\n\n`. +- To send a line break `\n`, we can immediately send one more `data:` (3rd message above). + +In practice, complex messages are usually sent JSON-encoded. Line-breaks are encoded as `\n` within them, so multiline `data:` messages are not necessary. + +For instance: + +```js +data: {"user":"John","message":"First line*!*\n*/!* Second line"} +``` + +...So we can assume that one `data:` holds exactly one message. + +For each such message, the `message` event is generated: + +```js +let eventSource = new EventSource("/events/subscribe"); + +eventSource.onmessage = function(event) { + console.log("New message", event.data); + // will log 3 times for the data stream above +}; + +// or eventSource.addEventListener('message', ...) +``` + +### Cross-origin requests + +`EventSource` supports cross-origin requests, like `fetch` and any other networking methods. We can use any URL: + +```js +let source = new EventSource("https://another-site.com/events"); +``` + +The remote server will get the `Origin` header and must respond with `Access-Control-Allow-Origin` to proceed. + +To pass credentials, we should set the additional option `withCredentials`, like this: + +```js +let source = new EventSource("https://another-site.com/events", { + withCredentials: true +}); +``` + +Please see the chapter <info:fetch-crossorigin> for more details about cross-origin headers. + + +## Reconnection + +Upon creation, `new EventSource` connects to the server, and if the connection is broken -- reconnects. + +That's very convenient, as we don't have to care about it. + +There's a small delay between reconnections, a few seconds by default. + +The server can set the recommended delay using `retry:` in response (in milliseconds): + +```js +retry: 15000 +data: Hello, I set the reconnection delay to 15 seconds +``` + +The `retry:` may come both together with some data, or as a standalone message. + +The browser should wait that many milliseconds before reconnecting. Or longer, e.g. if the browser knows (from OS) that there's no network connection at the moment, it may wait until the connection appears, and then retry. + +- If the server wants the browser to stop reconnecting, it should respond with HTTP status 204. +- If the browser wants to close the connection, it should call `eventSource.close()`: + +```js +let eventSource = new EventSource(...); + +eventSource.close(); +``` + +Also, there will be no reconnection if the response has an incorrect `Content-Type` or its HTTP status differs from 301, 307, 200 and 204. In such cases the `"error"` event will be emitted, and the browser won't reconnect. + +```smart +When a connection is finally closed, there's no way to "reopen" it. If we'd like to connect again, just create a new `EventSource`. +``` + +## Message id + +When a connection breaks due to network problems, either side can't be sure which messages were received, and which weren't. + +To correctly resume the connection, each message should have an `id` field, like this: + +``` +data: Message 1 +id: 1 + +data: Message 2 +id: 2 + +data: Message 3 +data: of two lines +id: 3 +``` + +When a message with `id:` is received, the browser: + +- Sets the property `eventSource.lastEventId` to its value. +- Upon reconnection sends the header `Last-Event-ID` with that `id`, so that the server may re-send following messages. + +```smart header="Put `id:` after `data:`" +Please note: the `id` is appended below message `data` by the server, to ensure that `lastEventId` is updated after the message is received. +``` + +## Connection status: readyState + +The `EventSource` object has `readyState` property, that has one of three values: + +```js no-beautify +EventSource.CONNECTING = 0; // connecting or reconnecting +EventSource.OPEN = 1; // connected +EventSource.CLOSED = 2; // connection closed +``` + +When an object is created, or the connection is down, it's always `EventSource.CONNECTING` (equals `0`). + +We can query this property to know the state of `EventSource`. + +## Event types + +By default `EventSource` object generates three events: + +- `message` -- a message received, available as `event.data`. +- `open` -- the connection is open. +- `error` -- the connection could not be established, e.g. the server returned HTTP 500 status. + +The server may specify another type of event with `event: ...` at the event start. + +For example: + +``` +event: join +data: Bob + +data: Hello + +event: leave +data: Bob +``` + +To handle custom events, we must use `addEventListener`, not `onmessage`: + +```js +eventSource.addEventListener('join', event => { + alert(`Joined ${event.data}`); +}); + +eventSource.addEventListener('message', event => { + alert(`Said: ${event.data}`); +}); + +eventSource.addEventListener('leave', event => { + alert(`Left ${event.data}`); +}); +``` + +## Full example + +Here's the server that sends messages with `1`, `2`, `3`, then `bye` and breaks the connection. + +Then the browser automatically reconnects. + +[codetabs src="eventsource"] + +## Summary + +`EventSource` object automatically establishes a persistent connection and allows the server to send messages over it. + +It offers: +- Automatic reconnect, with tunable `retry` timeout. +- Message ids to resume events, the last received identifier is sent in `Last-Event-ID` header upon reconnection. +- The current state is in the `readyState` property. + +That makes `EventSource` a viable alternative to `WebSocket`, as the latter is more low-level and lacks such built-in features (though they can be implemented). + +In many real-life applications, the power of `EventSource` is just enough. + +Supported in all modern browsers (not IE). + +The syntax is: + +```js +let source = new EventSource(url, [credentials]); +``` + +The second argument has only one possible option: `{ withCredentials: true }`, it allows sending cross-origin credentials. + +Overall cross-origin security is same as for `fetch` and other network methods. + +### Properties of an `EventSource` object + +`readyState` +: The current connection state: either `EventSource.CONNECTING (=0)`, `EventSource.OPEN (=1)` or `EventSource.CLOSED (=2)`. + +`lastEventId` +: The last received `id`. Upon reconnection the browser sends it in the header `Last-Event-ID`. + +### Methods + +`close()` +: Closes the connection. + +### Events + +`message` +: Message received, the data is in `event.data`. + +`open` +: The connection is established. + +`error` +: In case of an error, including both lost connection (will auto-reconnect) and fatal errors. We can check `readyState` to see if the reconnection is being attempted. + +The server may set a custom event name in `event:`. Such events should be handled using `addEventListener`, not `on<event>`. + +### Server response format + +The server sends messages, delimited by `\n\n`. + +A message may have following fields: + +- `data:` -- message body, a sequence of multiple `data` is interpreted as a single message, with `\n` between the parts. +- `id:` -- renews `lastEventId`, sent in `Last-Event-ID` on reconnect. +- `retry:` -- recommends a retry delay for reconnections in ms. There's no way to set it from JavaScript. +- `event:` -- event name, must precede `data:`. + +A message may include one or more fields in any order, but `id:` usually goes the last. diff --git a/5-network/12-server-sent-events/eventsource.view/index.html b/5-network/12-server-sent-events/eventsource.view/index.html new file mode 100644 index 000000000..795b07ebb --- /dev/null +++ b/5-network/12-server-sent-events/eventsource.view/index.html @@ -0,0 +1,50 @@ +<!DOCTYPE html> +<script> +let eventSource; + +function start() { // when "Start" button pressed + if (!window.EventSource) { + // IE or an old browser + alert("The browser doesn't support EventSource."); + return; + } + + eventSource = new EventSource('digits'); + + eventSource.onopen = function(e) { + log("Event: open"); + }; + + eventSource.onerror = function(e) { + log("Event: error"); + if (this.readyState == EventSource.CONNECTING) { + log(`Reconnecting (readyState=${this.readyState})...`); + } else { + log("Error has occured."); + } + }; + + eventSource.addEventListener('bye', function(e) { + log("Event: bye, data: " + e.data); + }); + + eventSource.onmessage = function(e) { + log("Event: message, data: " + e.data); + }; +} + +function stop() { // when "Stop" button pressed + eventSource.close(); + log("eventSource.close()"); +} + +function log(msg) { + logElem.innerHTML += msg + "<br>"; + document.documentElement.scrollTop = 99999999; +} +</script> + +<button onclick="start()">Start</button> Press the "Start" to begin. +<div id="logElem" style="margin: 6px 0"></div> + +<button onclick="stop()">Stop</button> "Stop" to finish. diff --git a/5-network/12-server-sent-events/eventsource.view/server.js b/5-network/12-server-sent-events/eventsource.view/server.js new file mode 100644 index 000000000..ad279aaab --- /dev/null +++ b/5-network/12-server-sent-events/eventsource.view/server.js @@ -0,0 +1,48 @@ +let http = require('http'); +let url = require('url'); +let querystring = require('querystring'); +let static = require('node-static'); +let fileServer = new static.Server('.'); + +function onDigits(req, res) { + res.writeHead(200, { + 'Content-Type': 'text/event-stream; charset=utf-8', + 'Cache-Control': 'no-cache' + }); + + let i = 0; + + let timer = setInterval(write, 1000); + write(); + + function write() { + i++; + + if (i == 4) { + res.write('event: bye\ndata: bye-bye\n\n'); + clearInterval(timer); + res.end(); + return; + } + + res.write('data: ' + i + '\n\n'); + + } +} + +function accept(req, res) { + + if (req.url == '/digits') { + onDigits(req, res); + return; + } + + fileServer.serve(req, res); +} + + +if (!module.parent) { + http.createServer(accept).listen(8080); +} else { + exports.accept = accept; +} diff --git a/6-data-storage/01-cookie/article.md b/6-data-storage/01-cookie/article.md index ce6e17dbb..1b9e93414 100644 --- a/6-data-storage/01-cookie/article.md +++ b/6-data-storage/01-cookie/article.md @@ -1,27 +1,27 @@ # Cookies, document.cookie -Cookies are small strings of data that are stored directly in the browser. They are a part of HTTP protocol, defined by [RFC 6265](https://tools.ietf.org/html/rfc6265) specification. +Cookies are small strings of data that are stored directly in the browser. They are a part of the HTTP protocol, defined by the [RFC 6265](https://tools.ietf.org/html/rfc6265) specification. -Most of the time, cookies are set by a web server. Then they are automatically added to every request to the same domain. +Cookies are usually set by a web server using the response `Set-Cookie` HTTP header. Then, the browser automatically adds them to (almost) every request to the same domain using the `Cookie` HTTP header. One of the most widespread use cases is authentication: -1. Upon sign in, the server uses `Set-Cookie` HTTP-header in the response to set a cookie with "session identifier". -2. Next time when the request is set to the same domain, the browser sends the over the net using `Cookie` HTTP-header. +1. Upon sign-in, the server uses the `Set-Cookie` HTTP header in the response to set a cookie with a unique "session identifier". +2. Next time the request is sent to the same domain, the browser sends the cookie over the net using the `Cookie` HTTP header. 3. So the server knows who made the request. We can also access cookies from the browser, using `document.cookie` property. -There are many tricky things about cookies and their options. In this chapter we'll cover them in detail. +There are many tricky things about cookies and their attributes. In this chapter, we'll cover them in detail. ## Reading from document.cookie ```online -Do you have any cookies on this site? Let's see: +Does your browser store any cookies from this site? Let's see: ``` ```offline -Assuming you're on a website, it's possible to see the cookies, like this: +Assuming you're on a website, it's possible to see the cookies from it, like this: ``` ```js run @@ -31,17 +31,17 @@ alert( document.cookie ); // cookie1=value1; cookie2=value2;... ``` -The value of `document.cookie` consists of `name=value` pairs, delimited by `; `. Each one is a separate cookie. +The value of `document.cookie` consists of `name=value` pairs, delimited by `; `. Each one is a separate cookie. -To find a particular cookie, we can split `document.cookie` by `; `, and then find the right name. We can use either a regular expression or array functions to do that. +To find a particular cookie, we can split `document.cookie` by `; `, and then find the right name. We can use either a regular expression or array functions to do that. -We leave it as an exercise for the reader. Also, at the end of the chapter you'll find helper functions to manipulate cookies. +We leave it as an exercise for the reader. Also, at the end of the chapter, you'll find helper functions to manipulate cookies. ## Writing to document.cookie -We can write to `document.cookie`. But it's not a data property, it's an accessor. +We can write to `document.cookie`. But it's not a data property, it's an [accessor (getter/setter)](info:property-accessors). An assignment to it is treated specially. -**A write operation to `document.cookie` passes through the browser that updates cookies mentioned in it, but doesn't touch other cookies.** +**A write operation to `document.cookie` updates only the cookie mentioned in it and doesn't touch other cookies.** For instance, this call sets a cookie with the name `user` and value `John`: @@ -50,12 +50,12 @@ document.cookie = "user=John"; // update only cookie named 'user' alert(document.cookie); // show all cookies ``` -If you run it, then probably you'll see multiple cookies. That's because `document.cookie=` operation does not overwrite all cookies. It only sets the mentioned cookie `user`. +If you run it, you will likely see multiple cookies. That's because the `document.cookie=` operation does not overwrite all cookies. It only sets the mentioned cookie `user`. -Technically, name and value can have any characters, but to keep the formatting valid they should be escaped using a built-in `encodeURIComponent` function: +Technically, name and value can have any characters. To keep the valid formatting, they should be escaped using a built-in `encodeURIComponent` function: ```js run -// special values, need encoding +// special characters (spaces) need encoding let name = "my name"; let value = "John Smith" @@ -67,76 +67,86 @@ alert(document.cookie); // ...; my%20name=John%20Smith ```warn header="Limitations" -There are few limitations: -- The `name=value` pair, after `encodeURIComponent`, should not exceed 4kb. So we can't store anything huge in a cookie. -- The total number of cookies per domain is limited to around 20+, the exact limit depends on a browser. +There are a few limitations: +- You can only set/update a single cookie at a time using `document.cookie`. +- The `name=value` pair, after `encodeURIComponent`, should not exceed 4KB. So we can't store anything huge in a cookie. +- The total number of cookies per domain is limited to around 20+, the exact limit depends on the browser. ``` -Cookies have several options, many of them are important and should be set. +Cookies have several attributes, many of which are important and should be set. -The options are listed after `key=value`, delimited by `;`, like this: +The attributes are listed after `key=value`, delimited by `;`, like this: ```js run document.cookie = "user=John; path=/; expires=Tue, 19 Jan 2038 03:14:07 GMT" ``` -## path - -- **`path=/mypath`** - -The url path prefix, where the cookie is accessible. Must be absolute. By default, it's the current path. - -If a cookie is set with `path=/admin`, it's visible at pages `/admin` and `/admin/something`, but not at `/home` or `/adminpage`. - -Usually, we set `path=/` to make the cookie accessible from all website pages. - ## domain - **`domain=site.com`** -A domain where the cookie is accessible. In practice though, there are limitations. We can't set any domain. +A domain defines where the cookie is accessible. In practice though, there are limitations. We can't set any domain. -By default, a cookie is accessible only at the domain that set it. So, if the cookie was set by `site.com`, we won't get it `other.com`. +**There's no way to let a cookie be accessible from another 2nd-level domain, so `other.com` will never receive a cookie set at `site.com`.** + +It's a safety restriction, to allow us to store sensitive data in cookies that should be available only on one site. -...But what's more tricky, we also won't get the cookie at a subdomain `forum.site.com`! +By default, a cookie is accessible only at the domain that set it. + +Please note, by default, a cookie is not shared with a subdomain, such as `forum.site.com`. ```js -// at site.com +// if we set a cookie at site.com website... document.cookie = "user=John" -// at forum.site.com +// ...we won't see it at forum.site.com alert(document.cookie); // no user ``` -**There's no way to let a cookie be accessible from another 2nd-level domain, so `other.com` will never receive a cookie set at `site.com`.** +...But this can be changed. If we'd like to allow subdomains like `forum.site.com` to get a cookie set at `site.com`, that's possible. -It's a safety restriction, to allow us to store sensitive data in cookies. +For that to happen, when setting a cookie at `site.com`, we should explicitly set the `domain` attribute to the root domain: `domain=site.com`. Then all subdomains will see such a cookie. -...But if we'd like to grant access to subdomains like `forum.site.com`, that's possible. We should explicitly set `domain` option to the root domain: `domain=site.com`: +For example: ```js -// at site.com, make the cookie accessible on any subdomain: -document.cookie = "user=John; domain=site.com" +// at site.com +// make the cookie accessible on any subdomain *.site.com: +document.cookie = "user=John; *!*domain=site.com*/!*" + +// later // at forum.site.com -alert(document.cookie); // with user +alert(document.cookie); // has cookie user=John +``` + +```warn header="Legacy syntax" +Historically, `domain=.site.com` (with a dot before `site.com`) used to work the same way, allowing access to the cookie from subdomains. Leading dots in domain names are now ignored, but some browsers may decline to set the cookie containing such dots. ``` -For historical reasons, `domain=.site.com` (a dot at the start) also works this way, it might better to add the dot to support very old browsers. +To summarize, the `domain` attribute allows to make a cookie accessible at subdomains. + +## path + +- **`path=/mypath`** + +The URL path prefix must be absolute. It makes the cookie accessible for pages under that path. By default, it's the current path. + +If a cookie is set with `path=/admin`, it's visible on pages `/admin` and `/admin/something`, but not at `/home`, `/home/admin` or `/`. -So, `domain` option allows to make a cookie accessible at subdomains. +Usually, we should set `path` to the root: `path=/` to make the cookie accessible from all website pages. If this attribute is not set the default is calculated using [this method](https://developer.mozilla.org/en-US/docs/Web/HTTP/Cookies#path_default_value). ## expires, max-age -By default, if a cookie doesn't have one of these options, it disappears when the browser is closed. Such cookies are called "session cookies" +By default, if a cookie doesn't have one of these attributes, it disappears when the browser/tab is closed. Such cookies are called "session cookies" -To let cookies survive browser close, we can set either `expires` or `max-age` option. +To let cookies survive a browser close, we can set either the `expires` or `max-age` attribute. `max-Age` has precedence if both are set. - **`expires=Tue, 19 Jan 2038 03:14:07 GMT`** -Cookie expiration date, when the browser will delete it automatically. +The cookie expiration date defines the time when the browser will automatically delete it (according to the browser's time zone). -The date must be exactly in this format, in GMT timezone. We can use `date.toUTCString` to get it. For instance, we can set the cookie to expire in 1 day: +The date must be exactly in this format, in the GMT timezone. We can use `date.toUTCString` to get it. For instance, we can set the cookie to expire in 1 day: ```js // +1 day from now @@ -149,17 +159,17 @@ If we set `expires` to a date in the past, the cookie is deleted. - **`max-age=3600`** -An alternative to `expires`, specifies the cookie expiration in seconds from the current moment. +It's an alternative to `expires` and specifies the cookie's expiration in seconds from the current moment. -If zero or negative, then the cookie is deleted: +If set to zero or a negative value, the cookie is deleted: ```js -// cookie will die +1 hour from now +// cookie will die in +1 hour from now document.cookie = "user=John; max-age=3600"; // delete cookie (let it expire right now) document.cookie = "user=John; max-age=0"; -``` +``` ## secure @@ -171,98 +181,101 @@ The cookie should be transferred only over HTTPS. That is, cookies are domain-based, they do not distinguish between the protocols. -With this option, if a cookie is set by `https://site.com`, then it doesn't appear when the same site is accessed by HTTP, as `http://site.com`. So if a cookie has sensitive content that should never be sent over unencrypted HTTP, then the flag is the right thing. +With this attribute, if a cookie is set by `https://site.com`, then it doesn't appear when the same site is accessed by HTTP, as `http://site.com`. So if a cookie has sensitive content that should never be sent over unencrypted HTTP, the `secure` flag is the right thing. ```js // assuming we're on https:// now -// set the cookie secure (only accessible if over HTTPS) +// set the cookie to be secure (only accessible over HTTPS) document.cookie = "user=John; secure"; -``` +``` ## samesite -That's another security option, to protect from so-called XSRF (cross-site request forgery) attacks. +This is another security attribute `samesite`. It's designed to protect from so-called XSRF (cross-site request forgery) attacks. -To understand when it's useful, let's introduce the following attack scenario. +To understand how it works and when it's useful, let's take a look at XSRF attacks. ### XSRF attack -Imagine, you are logged into the site `bank.com`. That is: you have an authentication cookie from that site. Your browser sends it to `bank.com` with every request, so that it recognizes you and performs all sensitive financial operations. +Imagine, you are logged into the site `bank.com`. That is: you have an authentication cookie from that site. Your browser sends it to `bank.com` with every request so that it recognizes you and performs all sensitive financial operations. -Now, while browsing the web in another window, you occasionally come to another site `evil.com`, that automatically submits a form `<form action="https://bank.com/pay">` to `bank.com` with input fields that initiate a transaction to the hacker's account. +Now, while browsing the web in another window, you accidentally come to another site `evil.com`. That site has JavaScript code that submits a form `<form action="https://bank.com/pay">` to `bank.com` with fields that initiate a transaction to the hacker's account. -The form is submitted from `evil.com` directly to the bank site, and your cookie is also sent, just because it's sent every time you visit `bank.com`. So the bank recognizes you and actually performs the payment. +The browser sends cookies every time you visit the site `bank.com`, even if the form was submitted from `evil.com`. So the bank recognizes you and performs the payment.  -That's called a cross-site request forgery (or XSRF) attack. +This is a so-called "Cross-Site Request Forgery" (in short, XSRF) attack. -Real banks are protected from it of course. All forms generated by `bank.com` have a special field, so called "xsrf protection token", that an evil page can't neither generate, nor somehow extract from a remote page (it can submit a form there, but can't get the data back). +Real banks are protected from it of course. All forms generated by `bank.com` have a special field, a so-called "XSRF protection token", that an evil page can't generate or extract from a remote page. It can submit a form there, but can't get the data back. The site `bank.com` checks for such a token in every form it receives. -But that takes time to implement: we need to ensure that every form has the token field, and we must also check all requests. +Such a protection takes time to implement though. We need to ensure that every form has the required token field, and we must also check all requests. -### Enter cookie samesite option +### Use cookie samesite attribute -The cookie `samesite` option provides another way to protect from such attacks, that (in theory) should not require "xsrf protection tokens". +The cookie `samesite` attribute provides another way to protect from such attacks, that (in theory) should not require "xsrf protection tokens". It has two possible values: -- **`samesite=strict` (same as `samesite` without value)** +- **`samesite=strict`** -A cookie with `samesite=strict` is never sent if the user comes from outside the site. +A cookie with `samesite=strict` is never sent if the user comes from outside the same site. -In other words, whether a user follows a link from their mail or submits a form from `evil.com`, or does any operation that originates from another domain, the cookie is not sent. +In other words, whether a user follows a link from their email, submits a form from `evil.com`, or does any operation that originates from another domain, the cookie is not sent. -If authentication cookies have `samesite` option, then XSRF attack has no chances to succeed, because a submission from `evil.com` comes without cookies. So `bank.com` will not recognize the user and will not proceed with the payment. +If authentication cookies have the `samesite=strict` attribute, then an XSRF attack has no chance of succeeding, because a submission from `evil.com` comes without cookies. So `bank.com` will not recognize the user and will not proceed with the payment. -The protection is quite reliable. Only operations that come from `bank.com` will send the `samesite` cookie. +The protection is quite reliable. Only operations that come from `bank.com` will send the `samesite=strict` cookie, e.g. a form submission from another page at `bank.com`. Although, there's a small inconvenience. -When a user follows a legitimate link to `bank.com`, like from their own notes, they'll be surprised that `bank.com` does not recognize them. Indeed, `samesite=strict` cookies are not sent in that case. +When a user follows a legitimate link to `bank.com`, like from their notes, they'll be surprised that `bank.com` does not recognize them. Indeed, `samesite=strict` cookies are not sent in that case. -We could work around that by using two cookies: one for "general recognition", only for the purposes of saying: "Hello, John", and the other one for data-changing operations with `samesite=strict`. Then a person coming from outside of the site will see a welcome, but payments must be initiated from the bank website. +We could work around that by using two cookies: one for "general recognition", only to say: "Hello, John", and the other one for data-changing operations with `samesite=strict`. Then, a person coming from outside of the site will see a welcome, but payments must be initiated from the bank's website, for the second cookie to be sent. -- **`samesite=lax`** +- **`samesite=lax` (same as `samesite` without value)** -A more relaxed approach that also protects from XSRF and doesn't break user experience. +A more relaxed approach that also protects from XSRF and doesn't break the user experience. Lax mode, just like `strict`, forbids the browser to send cookies when coming from outside the site, but adds an exception. A `samesite=lax` cookie is sent if both of these conditions are true: 1. The HTTP method is "safe" (e.g. GET, but not POST). - The full list safe of HTTP methods is in the [RFC7231 specification](https://tools.ietf.org/html/rfc7231). Basically, these are the methods that should be used for reading, but not writing the data. They must not perform any data-changing operations. Following a link is always GET, the safe method. + The full list of safe HTTP methods is in the [RFC7231 specification](https://tools.ietf.org/html/rfc7231#section-4.2.1). These are the methods that should be used for reading, but not writing the data. They must not perform any data-changing operations. Following a link is always GET, the safe method. -2. The operation performs top-level navigation (changes URL in the browser address bar). +2. The operation performs a top-level navigation (changes URL in the browser address bar). - That's usually true, but if the navigation is performed in an `<iframe>`, then it's not top-level. Also, AJAX requests do not perform any navigation, hence they don't fit. + This is usually true, but if the navigation is performed in an `<iframe>`, then it is not top-level. Additionally, JavaScript methods for network requests do not perform any navigation. -So, what `samesite=lax` does is basically allows a most common "go to URL" operation to have cookies. E.g. opening a website link from notes satisfies these conditions. +So, what `samesite=lax` does, is to allow the most common "go to URL" operation to have cookies. E.g. opening a website link from notes that satisfy these conditions. -But anything more complicated, like AJAX request from another site or a form submittion loses cookies. +But anything more complicated, like a network request from another site or a form submission, loses cookies. If that's fine for you, then adding `samesite=lax` will probably not break the user experience and add protection. -Overall, `samesite` is a great option, but it has an important drawback: -- `samesite` is ignored (not supported) by old browsers, year 2017 or so. +Overall, `samesite` is a great attribute. + +There's a drawback: + +- `samesite` is ignored (not supported) by very old browsers, the year 2017 or so. **So if we solely rely on `samesite` to provide protection, then old browsers will be vulnerable.** -But we surely can use `samesite` together with other protection measures, like xsrf tokens, to add an additional layer of defence and then, in the future, when old browsers die out, we'll probably be able to drop xsrf tokens. +But we can use `samesite` together with other protection measures, like xsrf tokens, to add a layer of defence and then, in the future, when old browsers die out, we'll probably be able to drop xsrf tokens. ## httpOnly -This option has nothing to do with JavaScript, but we have to mention it for completeness. +This attribute has nothing to do with JavaScript, but we have to mention it for completeness. -The web-server uses `Set-Cookie` header to set a cookie. And it may set the `httpOnly` option. +The web server uses the `Set-Cookie` header to set a cookie. Also, it may set the `httpOnly` attribute. -This option forbids any JavaScript access to the cookie. We can't see such cookie or manipulate it using `document.cookie`. +This attribute forbids any JavaScript access to the cookie. We can't see such a cookie or manipulate it using `document.cookie`. -That's used as a precaution measure, to protect from certain attacks when a hacker injects his own JavaScript code into a page and waits for a user to visit that page. That shouldn't be possible at all, a hacker should not be able to inject their code into our site, but there may be bugs that let hackers do it. +This is used as a precautionary measure, to protect from certain attacks when a hacker injects his own JavaScript code into a page and waits for a user to visit that page. That shouldn't be possible at all, hackers should not be able to inject their code into our site, but there may be bugs that let them do it. -Normally, if such thing happens, and a user visits a web-page with hacker's code, then that code executes and gains access to `document.cookie` with user cookies containing authentication information. That's bad. +Normally, if such a thing happens, and a user visits a web-page with a hacker's JavaScript code, then that code executes and gains access to `document.cookie` with user cookies containing authentication information. That's bad. But if a cookie is `httpOnly`, then `document.cookie` doesn't see it, so it is protected. @@ -272,10 +285,9 @@ Here's a small set of functions to work with cookies, more convenient than a man There exist many cookie libraries for that, so these are for demo purposes. Fully working though. - ### getCookie(name) -The shortest way to access cookie is to use a [regular expression](info:regular-expressions). +The shortest way to access a cookie is to use a [regular expression](info:regular-expressions). The function `getCookie(name)` returns the cookie with the given `name`: @@ -294,30 +306,30 @@ Here `new RegExp` is generated dynamically, to match `; name=<value>`. Please note that a cookie value is encoded, so `getCookie` uses a built-in `decodeURIComponent` function to decode it. -### setCookie(name, value, options) +### setCookie(name, value, attributes) -Sets the cookie `name` to the given `value` with `path=/` by default (can be modified to add other defaults): +Sets the cookie's `name` to the given `value` with `path=/` by default (can be modified to add other defaults): ```js run -function setCookie(name, value, options = {}) { +function setCookie(name, value, attributes = {}) { - options = { + attributes = { path: '/', // add other defaults here if necessary - ...options + ...attributes }; - if (options.expires.toUTCString) { - options.expires = options.expires.toUTCString(); + if (attributes.expires instanceof Date) { + attributes.expires = attributes.expires.toUTCString(); } let updatedCookie = encodeURIComponent(name) + "=" + encodeURIComponent(value); - for (let optionKey in options) { - updatedCookie += "; " + optionKey; - let optionValue = options[optionKey]; - if (optionValue !== true) { - updatedCookie += "=" + optionValue; + for (let attributeKey in attributes) { + updatedCookie += "; " + attributeKey; + let attributeValue = attributes[attributeKey]; + if (attributeValue !== true) { + updatedCookie += "=" + attributeValue; } } @@ -341,7 +353,7 @@ function deleteCookie(name) { ``` ```warn header="Updating or deleting must use same path and domain" -Please note: when we update or delete a cookie, we should use exactly the same path and domain options as when we set it. +Please note: when we update or delete a cookie, we should use exactly the same path and domain attributes as when we set it. ``` Together: [cookie.js](cookie.js). @@ -349,11 +361,11 @@ Together: [cookie.js](cookie.js). ## Appendix: Third-party cookies -A cookie is called "third-party" if it's placed by domain other than the user is visiting. +A cookie is called "third-party" if it's placed by a domain other than the page the user is visiting. For instance: 1. A page at `site.com` loads a banner from another site: `<img src="https://ads.com/banner.png">`. -2. Along with the banner, the remote server at `ads.com` may set `Set-Cookie` header with cookie like `id=1234`. Such cookie originates from `ads.com` domain, and will only be visible at `ads.com`: +2. Along with the banner, the remote server at `ads.com` may set the `Set-Cookie` header with a cookie like `id=1234`. Such a cookie originates from the `ads.com` domain, and will only be visible at `ads.com`:  @@ -361,14 +373,14 @@ For instance:  -4. What's even more important, when the users moves from `site.com` to another site `other.com` that also has a banner, then `ads.com` gets the cookie, as it belongs to `ads.com`, thus recognizing the visitor and tracking him as he moves between sites: +4. What's even more important is, when the user moves from `site.com` to another site `other.com`, which also has a banner, then `ads.com` gets the cookie, as it belongs to `ads.com`, thus recognizing the visitor and tracking him as he moves between sites:  Third-party cookies are traditionally used for tracking and ads services, due to their nature. They are bound to the originating domain, so `ads.com` can track the same user between different sites, if they all access it. -Naturally, some people don't like being tracked, so browsers allow to disable such cookies. +Naturally, some people don't like being tracked, so browsers allow them to disable such cookies. Also, some modern browsers employ special policies for such cookies: - Safari does not allow third-party cookies at all. @@ -378,49 +390,49 @@ Also, some modern browsers employ special policies for such cookies: ```smart If we load a script from a third-party domain, like `<script src="https://google-analytics.com/analytics.js">`, and that script uses `document.cookie` to set a cookie, then such cookie is not third-party. -If a script sets a cookie, then no matter where the script came from -- it belongs to the domain of the current webpage. +If a script sets a cookie, then no matter where the script came from -- the cookie belongs to the domain of the current webpage. ``` ## Appendix: GDPR -This topic is not related to JavaScript at all, just something to keep in mind when setting cookies. +This topic is not related to JavaScript at all, it is just something to keep in mind when setting cookies. -There's a legislation in Europe called GDPR, that enforces a set of rules for websites to respect users' privacy. And one of such rules is to require an explicit permission for tracking cookies from a user. +There's a legislation in Europe called GDPR, that enforces a set of rules for websites to respect the users' privacy. One of these rules is to require explicit permission for tracking cookies from the user. -Please note, that's only about tracking/identifying cookies. +Please note, that's only about tracking/identifying/authorizing cookies. So, if we set a cookie that just saves some information, but neither tracks nor identifies the user, then we are free to do it. -But if we are going to set a cookie with an authentication session or a tracking id, then a user must allow that. +But if we are going to set a cookie with an authentication session or a tracking ID, then a user must allow that. -Websites generally have two variants of following GDPR. You must have seen them both already in the web: +Websites generally have two variants of complying with GDPR. You are likely to have seen them both on the web: 1. If a website wants to set tracking cookies only for authenticated users. - To do so, the registration form should have a checkbox like "accept the privacy policy", the user must check it, and then the website is free to set auth cookies. + To do so, the registration form should have a checkbox like "accept the privacy policy" (that describes how cookies are used), the user must check it, and then the website is free to set auth cookies. 2. If a website wants to set tracking cookies for everyone. - To do so legally, a website shows a modal "splash screen" for newcomers, and require them to agree for cookies. Then the website can set them and let people see the content. That can be disturbing for new visitors though. No one likes to see "must-click" modal splash screens instead of the content. But GDPR requires an explicit agreement. + To do so legally, a website shows a modal "splash screen" for newcomers and requires them to agree to the cookies. Then the website can set them and let people see the content. That can be disturbing for new visitors though. No one likes to see such "must-click" modal splash screens instead of the content. But GDPR requires an explicit agreement. -GDPR is not only about cookies, it's about other privacy-related issues too, but that's too much beyond our scope. +GDPR is not only about cookies, it is about other privacy-related issues too, but that is beyond our scope. ## Summary -`document.cookie` provides access to cookies -- write operations modify only cookies mentioned in it. -- name/value must be encoded. -- one cookie up to 4kb, 20+ cookies per site (depends on a browser). +`document.cookie` provides access to cookies. +- Write operations modify only the cookie mentioned in it. +- Name/value must be encoded. +- One cookie may not exceed 4KB in size. The number of cookies allowed on a domain is around 20+ (varies by browser). -Cookie options: +Cookie attributes: - `path=/`, by default current path, makes the cookie visible only under that path. -- `domain=site.com`, by default a cookie is visible on current domain only, if set explicitly to the domain, makes the cookie visible on subdomains. -- `expires` or `max-age` sets cookie expiration time, without them the cookie dies when the browser is closed. +- `domain=site.com`, by default a cookie is visible on the current domain only. If the domain is set explicitly, the cookie becomes visible on subdomains. +- `expires` or `max-age` sets the cookie expiration time. Without them, the cookie dies when the browser is closed. - `secure` makes the cookie HTTPS-only. -- `samesite` forbids the browser to send the cookie with requests coming from outside the site, helps to prevent XSRF attacks. +- `samesite` forbids the browser to send the cookie with requests coming from outside the site. This helps to prevent XSRF attacks. Additionally: -- Third-party cookies may be forbidden by the browser, e.g. Safari does that by default. +- The browser may forbid third-party cookies, e.g. Safari does that by default. There is also work in progress to implement this in Chrome. - When setting a tracking cookie for EU citizens, GDPR requires to ask for permission. diff --git a/6-data-storage/01-cookie/cookie.js b/6-data-storage/01-cookie/cookie.js index 7d8eebf3e..653ea5b7f 100644 --- a/6-data-storage/01-cookie/cookie.js +++ b/6-data-storage/01-cookie/cookie.js @@ -1,6 +1,6 @@ function getCookie(name) { let matches = document.cookie.match(new RegExp( - "(?:^|; )" + name.replace(/([\.$?*|{}\(\)\[\]\\\/\+^])/g, '\\$1') + "=([^;]*)" + "(?:^|; )" + name.replace(/([.$?*|{}()[\]\\/+^])/g, '\\$1') + "=([^;]*)" )); return matches ? decodeURIComponent(matches[1]) : undefined; } @@ -13,7 +13,7 @@ function setCookie(name, value, options = {}) { ...options }; - if (options.expires.toUTCString) { + if (options.expires instanceof Date) { options.expires = options.expires.toUTCString(); } diff --git a/6-data-storage/02-localstorage/1-form-autosave/task.md b/6-data-storage/02-localstorage/1-form-autosave/task.md index b2e0a4222..2b147d79c 100644 --- a/6-data-storage/02-localstorage/1-form-autosave/task.md +++ b/6-data-storage/02-localstorage/1-form-autosave/task.md @@ -3,7 +3,7 @@ Create a `textarea` field that "autosaves" its value on every change. -So, if the user occasionally closes the page, and opens it again, he'll find his unfinished input at place. +So, if the user accidentally closes the page, and opens it again, he'll find his unfinished input at place. Like this: diff --git a/6-data-storage/02-localstorage/article.md b/6-data-storage/02-localstorage/article.md index 128a9698e..a99bcb653 100644 --- a/6-data-storage/02-localstorage/article.md +++ b/6-data-storage/02-localstorage/article.md @@ -6,11 +6,11 @@ What's interesting about them is that the data survives a page refresh (for `ses We already have cookies. Why additional objects? -- Unlike cookies, web storage objects are not sent to server with each request. Because of that, we can store much more. Most browsers allow at least 2 megabytes of data (or more) and have settings to configure that. -- The server can't manipulate storage objects via HTTP headers, everything's done in JavaScript. +- Unlike cookies, web storage objects are not sent to server with each request. Because of that, we can store much more. Most modern browsers allow at least 5 megabytes of data (or more) and have settings to configure that. +- Also unlike cookies, the server can't manipulate storage objects via HTTP headers. Everything's done in JavaScript. - The storage is bound to the origin (domain/protocol/port triplet). That is, different protocols or subdomains infer different storage objects, they can't access data from each other. -Both storage objects provide same methods and properties: +Both storage objects provide the same methods and properties: - `setItem(key, value)` -- store key/value pair. - `getItem(key)` -- get the value by key. @@ -19,6 +19,8 @@ Both storage objects provide same methods and properties: - `key(index)` -- get the key on a given position. - `length` -- the number of stored items. +As you can see, it's like a `Map` collection (`setItem/getItem/removeItem`), but also allows access by index with `key(index)`. + Let's see how it works. ## localStorage demo @@ -40,9 +42,9 @@ localStorage.setItem('test', 1); alert( localStorage.getItem('test') ); // 1 ``` -We only have to be on the same domain/port/protocol, the url path can be different. +We only have to be on the same origin (domain/port/protocol), the url path can be different. -The `localStorage` is shared, so if we set the data in one window, the change becomes visible in the other one. +The `localStorage` is shared between all windows with the same origin, so if we set the data in one window, the change becomes visible in another one. ## Object-like access @@ -59,9 +61,10 @@ alert( localStorage.test ); // 2 delete localStorage.test; ``` -That's allowed for historical reasons, and mostly works, but generally not recommended for two reasons: +That's allowed for historical reasons, and mostly works, but generally not recommended, because: 1. If the key is user-generated, it can be anything, like `length` or `toString`, or another built-in method of `localStorage`. In that case `getItem/setItem` work fine, while object-like access fails: + ```js run let key = 'length'; localStorage[key] = 5; // Error, can't assign length @@ -71,11 +74,11 @@ That's allowed for historical reasons, and mostly works, but generally not recom ## Looping over keys -Methods provide get/set/remove functionality. But how to get all the keys? +As we've seen, the methods provide "get/set/remove by key" functionality. But how to get all saved values or keys? Unfortunately, storage objects are not iterable. -One way is to use "array-like" iteration: +One way is to loop over them as over an array: ```js run for(let i=0; i<localStorage.length; i++) { @@ -84,9 +87,9 @@ for(let i=0; i<localStorage.length; i++) { } ``` -Another way is to use object-specific `for key in localStorage` loop. +Another way is to use `for key in localStorage` loop, just as we do with regular objects. -That iterates over keys, but also outputs few built-in fields that we don't need: +It iterates over keys, but also outputs few built-in fields that we don't need: ```js run // bad try @@ -117,25 +120,24 @@ for(let key of keys) { The latter works, because `Object.keys` only returns the keys that belong to the object, ignoring the prototype. - ## Strings only Please note that both key and value must be strings. -If we any other type, like a number, or an object, it gets converted to string automatically: +If they were any other type, like a number, or an object, they would get converted to a string automatically: ```js run -sessionStorage.user = {name: "John"}; -alert(sessionStorage.user); // [object Object] +localStorage.user = {name: "John"}; +alert(localStorage.user); // [object Object] ``` We can use `JSON` to store objects though: ```js run -sessionStorage.user = JSON.stringify({name: "John"}); +localStorage.user = JSON.stringify({name: "John"}); // sometime later -let user = JSON.parse( sessionStorage.user ); +let user = JSON.parse( localStorage.user ); alert( user.name ); // John ``` @@ -146,7 +148,6 @@ Also it is possible to stringify the whole storage object, e.g. for debugging pu alert( JSON.stringify(localStorage, null, 2) ); ``` - ## sessionStorage The `sessionStorage` object is used much less often than `localStorage`. @@ -155,7 +156,7 @@ Properties and methods are the same, but it's much more limited: - The `sessionStorage` exists only within the current browser tab. - Another tab with the same page will have a different storage. - - But it is shared between iframes in the tab (assuming they come from the same origin). + - But it is shared between iframes in the same tab (assuming they come from the same origin). - The data survives page refresh, but not closing/opening the tab. Let's see that in action. @@ -178,7 +179,7 @@ That's exactly because `sessionStorage` is bound not only to the origin, but als ## Storage event -When the data gets updated in `localStorage` or `sessionStorage`, [storage](https://www.w3.org/TR/webstorage/#the-storage-event) event triggers, with properties: +When the data gets updated in `localStorage` or `sessionStorage`, [storage](https://html.spec.whatwg.org/multipage/webstorage.html#the-storageevent-interface) event triggers, with properties: - `key` – the key that was changed (`null` if `.clear()` is called). - `oldValue` – the old value (`null` if the key is newly added). @@ -196,11 +197,11 @@ Imagine, you have two windows with the same site in each. So `localStorage` is s You might want to open this page in two browser windows to test the code below. ``` -Now if both windows are listening for `window.onstorage`, then each one will react on updates that happened in the other one. +If both windows are listening for `window.onstorage`, then each one will react on updates that happened in the other one. ```js run // triggers on updates made to the same storage from other documents -window.onstorage = event => { +window.onstorage = event => { // can also use window.addEventListener('storage', event => { if (event.key != 'now') return; alert(event.key + ':' + event.newValue + " at " + event.url); }; @@ -210,24 +211,25 @@ localStorage.setItem('now', Date.now()); Please note that the event also contains: `event.url` -- the url of the document where the data was updated. -Also, `event.storageArea` contains the storage object -- the event is the same for both `sessionStorage` and `localStorage`, so `storageArea` references the one that was modified. We may event want to set something back in it, to "respond" to a change. +Also, `event.storageArea` contains the storage object -- the event is the same for both `sessionStorage` and `localStorage`, so `event.storageArea` references the one that was modified. We may even want to set something back in it, to "respond" to a change. **That allows different windows from the same origin to exchange messages.** -Modern browsers also support [Broadcast channel API](https://developer.mozilla.org/en-US/docs/Web/API/Broadcast_Channel_API), the special API for same-origin inter-window communication, it's more full featured, but less supported. There are libraries that polyfill that API, based on `localStorage`, that make it available everywhere. +Modern browsers also support [Broadcast channel API](mdn:/api/Broadcast_Channel_API), the special API for same-origin inter-window communication, it's more full featured, but less supported. There are libraries that polyfill that API, based on `localStorage`, that make it available everywhere. ## Summary -Web storage objects `localStorage` and `sessionStorage` allow to store key/value in the browser. +Web storage objects `localStorage` and `sessionStorage` allow to store key/value pairs in the browser. + - Both `key` and `value` must be strings. -- The limit is 2mb+, depends on the browser. +- The limit is 5mb+, depends on the browser. - They do not expire. - The data is bound to the origin (domain/port/protocol). | `localStorage` | `sessionStorage` | |----------------|------------------| | Shared between all tabs and windows with the same origin | Visible within a browser tab, including iframes from the same origin | -| Survives browser restart | Dies on tab close | +| Survives browser restart | Survives page refresh (but not tab close) | API: @@ -235,13 +237,13 @@ API: - `getItem(key)` -- get the value by key. - `removeItem(key)` -- remove the key with its value. - `clear()` -- delete everything. -- `key(index)` -- get the key on a given position. +- `key(index)` -- get the key number `index`. - `length` -- the number of stored items. - Use `Object.keys` to get all keys. -- Can use the keys as object properties, in that case `storage` event doesn't trigger. +- We access keys as object properties, in that case `storage` event isn't triggered. Storage event: - Triggers on `setItem`, `removeItem`, `clear` calls. -- Contains all the data about the operation, the document `url` and the storage object. +- Contains all the data about the operation (`key/oldValue/newValue`), the document `url` and the storage object `storageArea`. - Triggers on all `window` objects that have access to the storage except the one that generated it (within a tab for `sessionStorage`, globally for `localStorage`). diff --git a/6-data-storage/03-indexeddb/article.md b/6-data-storage/03-indexeddb/article.md index 5218ce850..43344e487 100644 --- a/6-data-storage/03-indexeddb/article.md +++ b/6-data-storage/03-indexeddb/article.md @@ -5,22 +5,28 @@ libs: # IndexedDB -IndexedDB is a built-in database, much more powerful than `localStorage`. +IndexedDB is a database that is built into a browser, much more powerful than `localStorage`. -- Key/value storage: value can be (almost) anything, multiple key types. +- Stores almost any kind of values by keys, multiple key types. - Supports transactions for reliability. - Supports key range queries, indexes. -- Can store much more data than `localStorage`. +- Can store much bigger volumes of data than `localStorage`. That power is usually excessive for traditional client-server apps. IndexedDB is intended for offline apps, to be combined with ServiceWorkers and other technologies. The native interface to IndexedDB, described in the specification <https://www.w3.org/TR/IndexedDB>, is event-based. -We can also use `async/await` with the help of a promise-based wrapper, like <https://github.com/jakearchibald/idb>. That's pretty convenient, but the wrapper is not perfect, it can't replace events for all cases, so we'll start with events, and then use the wrapper. +We can also use `async/await` with the help of a promise-based wrapper, like <https://github.com/jakearchibald/idb>. That's pretty convenient, but the wrapper is not perfect, it can't replace events for all cases. So we'll start with events, and then, after we gain an understanding of IndexedDB, we'll use the wrapper. + +```smart header="Where's the data?" +Technically, the data is usually stored in the visitor's home directory, along with browser settings, extensions, etc. + +Different browsers and OS-level users have each their own independant storage. +``` ## Open database -To start working with IndexedDB, we need to open a database. +To start working with IndexedDB, we first need to `open` (connect to) a database. The syntax: @@ -31,22 +37,24 @@ let openRequest = indexedDB.open(name, version); - `name` -- a string, the database name. - `version` -- a positive integer version, by default `1` (explained below). -We can have many databases with different names, all within the current origin (domain/protocol/port). So different websites can't access databases of each other. +We can have many databases with different names, but all of them exist within the current origin (domain/protocol/port). Different websites can't access each other's databases. -After the call, we need to listen to events on `openRequest` object: -- `success`: database is ready, use the database object `openRequest.result` for further work. -- `error`: open failed. -- `upgradeneeded`: database version is outdated (see below). +The call returns `openRequest` object, we should listen to events on it: +- `success`: database is ready, there's the "database object" in `openRequest.result`, we should use it for further calls. +- `error`: opening failed. +- `upgradeneeded`: database is ready, but its version is outdated (see below). **IndexedDB has a built-in mechanism of "schema versioning", absent in server-side databases.** -Unlike server-side databases, IndexedDB is client-side, we don't have the data at hands. But when we publish a new version of our app, we may need to update the database. +Unlike server-side databases, IndexedDB is client-side, the data is stored in the browser, so we, developers, don't have full-time access to it. So, when we have published a new version of our app, and the user visits our webpage, we may need to update the database. If the local database version is less than specified in `open`, then a special event `upgradeneeded` is triggered, and we can compare versions and upgrade data structures as needed. -The event also triggers when the database did not exist yet, so we can perform initialization. +The `upgradeneeded` event also triggers when the database doesn't yet exist (technically, its version is `0`), so we can perform the initialization. + +Let's say we published the first version of our app. -For instance, when we first publish our app, we open it with version `1` and perform the initialization in `upgradeneeded` handler: +Then we can open the database with version `1` and perform the initialization in an `upgradeneeded` handler like this: ```js let openRequest = indexedDB.open("store", *!*1*/!*); @@ -57,24 +65,26 @@ openRequest.onupgradeneeded = function() { }; openRequest.onerror = function() { - console.error("Error", openResult.error); + console.error("Error", openRequest.error); }; openRequest.onsuccess = function() { let db = openRequest.result; - // continue to work with database using db object + // continue working with database using db object }; ``` -When we publish the 2nd version: +Then, later, we publish the 2nd version. + +We can open it with version `2` and perform the upgrade like this: ```js let openRequest = indexedDB.open("store", *!*2*/!*); -// check the existing database version, do the updates if needed: -openRequest.onupgradeneeded = function() { +openRequest.onupgradeneeded = function(event) { + // the existing database version is less than 2 (or it doesn't exist) let db = openRequest.result; - switch(db.version) { // existing (old) db version + switch(event.oldVersion) { // existing db version case 0: // version 0 means that the client had no database // perform initialization @@ -85,7 +95,9 @@ openRequest.onupgradeneeded = function() { }; ``` -After `openRequest.onsuccess` we have the database object in `openRequest.result`, that we'll use for further operations. +Please note: as our current version is `2`, the `onupgradeneeded` handler has a code branch for version `0`, suitable for users that are accessing for the first time and have no database, and also for version `1`, for upgrades. + +And then, only if `onupgradeneeded` handler finishes without errors, `openRequest.onsuccess` triggers, and the database is considered successfully opened. To delete a database: @@ -94,9 +106,77 @@ let deleteRequest = indexedDB.deleteDatabase(name) // deleteRequest.onsuccess/onerror tracks the result ``` +```warn header="We can't open a database using an older open call version" +If the current user database has a higher version than in the `open` call, e.g. the existing DB version is `3`, and we try to `open(...2)`, then that's an error, `openRequest.onerror` triggers. + +That's rare, but such a thing may happen when a visitor loads outdated JavaScript code, e.g. from a proxy cache. So the code is old, but his database is new. + +To protect from errors, we should check `db.version` and suggest a page reload. Use proper HTTP caching headers to avoid loading the old code, so that you'll never have such problems. +``` + +### Parallel update problem + +As we're talking about versioning, let's tackle a small related problem. + +Let's say: +1. A visitor opened our site in a browser tab, with database version `1`. +2. Then we rolled out an update, so our code is newer. +3. And then the same visitor opens our site in another tab. + +So there's a tab with an open connection to DB version `1`, while the second one attempts to update it to version `2` in its `upgradeneeded` handler. + +The problem is that a database is shared between two tabs, as it's the same site, same origin. And it can't be both version `1` and `2`. To perform the update to version `2`, all connections to version 1 must be closed, including the one in the first tab. + +In order to organize that, the `versionchange` event triggers on the "outdated" database object. We should listen for it and close the old database connection (and probably suggest a page reload, to load the updated code). + +If we don't listen for the `versionchange` event and don't close the old connection, then the second, new connection won't be made. The `openRequest` object will emit the `blocked` event instead of `success`. So the second tab won't work. + +Here's the code to correctly handle the parallel upgrade. It installs the `onversionchange` handler, that triggers if the current database connection becomes outdated (db version is updated elsewhere) and closes the connection. + +```js +let openRequest = indexedDB.open("store", 2); + +openRequest.onupgradeneeded = ...; +openRequest.onerror = ...; + +openRequest.onsuccess = function() { + let db = openRequest.result; + + *!* + db.onversionchange = function() { + db.close(); + alert("Database is outdated, please reload the page.") + }; + */!* + + // ...the db is ready, use it... +}; + +*!* +openRequest.onblocked = function() { + // this event shouldn't trigger if we handle onversionchange correctly + + // it means that there's another open connection to the same database + // and it wasn't closed after db.onversionchange triggered for it +}; +*/!* +``` + +...In other words, here we do two things: + +1. The `db.onversionchange` listener informs us about a parallel update attempt, if the current database version becomes outdated. +2. The `openRequest.onblocked` listener informs us about the opposite situation: there's a connection to an outdated version elsewhere, and it doesn't close, so the newer connection can't be made. + +We can handle things more gracefully in `db.onversionchange`, prompt the visitor to save the data before the connection is closed and so on. + +Or, an alternative approach would be to not close the database in `db.onversionchange`, but instead use the `onblocked` handler (in the new tab) to alert the visitor, tell him that the newer version can't be loaded until they close other tabs. + +These update collisions happen rarely, but we should at least have some handling for them, at least an `onblocked` handler, to prevent our script from dying silently. ## Object store +To store something in IndexedDB, we need an *object store*. + An object store is a core concept of IndexedDB. Counterparts in other databases are called "tables" or "collections". It's where the data is stored. A database may have multiple stores: one for users, another one for goods, etc. Despite being named an "object store", primitives can be stored too. @@ -105,17 +185,20 @@ Despite being named an "object store", primitives can be stored too. IndexedDB uses the [standard serialization algorithm](https://www.w3.org/TR/html53/infrastructure.html#section-structuredserializeforstorage) to clone-and-store an object. It's like `JSON.stringify`, but more powerful, capable of storing much more datatypes. -An example of object that can't be stored: an object with circular references. Such objects are not serializable. `JSON.stringify` also fails for such objects. +An example of an object that can't be stored: an object with circular references. Such objects are not serializable. `JSON.stringify` also fails for such objects. -**There must be an unique `key` for every value in the store.** +**There must be a unique `key` for every value in the store.** -A key must have a type one of: number, date, string, binary, or array. It's a unique object identifier: we can search/remove/update values by the key. +A key must be one of these types - number, date, string, binary, or array. It's a unique identifier, so we can search/remove/update values by the key.  -We can provide a key when we add an value to the store, similar to `localStorage`. That's good for storing primitive values. But when we store objects, IndexedDB allows to setup an object property as the key, that's much more convenient. Or we can auto-generate keys. +As we'll see very soon, we can provide a key when we add a value to the store, similar to `localStorage`. But when we store objects, IndexedDB allows setting up an object property as the key, which is much more convenient. Or we can auto-generate keys. + +But we need to create an object store first. The syntax to create an object store: + ```js db.createObjectStore(name[, keyOptions]); ``` @@ -127,36 +210,39 @@ Please note, the operation is synchronous, no `await` needed. - `keyPath` -- a path to an object property that IndexedDB will use as the key, e.g. `id`. - `autoIncrement` -- if `true`, then the key for a newly stored object is generated automatically, as an ever-incrementing number. -If we don't supply any options, then we'll need to provide a key explicitly later, when storing an object. +If we don't supply `keyOptions`, then we'll need to provide a key explicitly later, when storing an object. For instance, this object store uses `id` property as the key: + ```js db.createObjectStore('books', {keyPath: 'id'}); ``` **An object store can only be created/modified while updating the DB version, in `upgradeneeded` handler.** -That's a technical limitation. Outside of the handler we'll be able to add/remove/update the data, but object stores are changed only during version update. +That's a technical limitation. Outside of the handler we'll be able to add/remove/update the data, but object stores can only be created/removed/altered during a version update. + +To perform a database version upgrade, there are two main approaches: -To do an upgrade, there are two main ways: -1. We can compare versions and run per-version operations. -2. Or we can get a list of existing object stores as `db.objectStoreNames`. That object is a [DOMStringList](https://html.spec.whatwg.org/multipage/common-dom-interfaces.html#domstringlist), and it provides `contains(name)` method to check for the existance. And then we can do updates depending on what exists. +1. We can implement per-version upgrade functions: from 1 to 2, from 2 to 3, from 3 to 4 etc. Then, in `upgradeneeded` we can compare versions (e.g. old 2, now 4) and run per-version upgrades step by step, for every intermediate version (2 to 3, then 3 to 4). +2. Or we can just examine the database: get a list of existing object stores as `db.objectStoreNames`. That object is a [DOMStringList](https://html.spec.whatwg.org/multipage/common-dom-interfaces.html#domstringlist) that provides `contains(name)` method to check for existance. And then we can do updates depending on what exists and what doesn't. + +For small databases the second variant may be simpler. Here's the demo of the second approach: ```js -let openRequest = indexedDB.open("db", 1); +let openRequest = indexedDB.open("db", 2); -// create an object store for books if not exists +// create/upgrade the database without version checks openRequest.onupgradeneeded = function() { let db = openRequest.result; - if (!db.objectStoreNames.contains('books')) { - db.createObjectStore('books', {keyPath: 'id'}); + if (!db.objectStoreNames.contains('books')) { // if there's no "books" store + db.createObjectStore('books', {keyPath: 'id'}); // create it } }; ``` - To delete an object store: ```js @@ -167,9 +253,10 @@ db.deleteObjectStore('books') The term "transaction" is generic, used in many kinds of databases. -A transaction is a group operations, that should either all succeed or all fail. +A transaction is a group of operations, that should either all succeed or all fail. + +For instance, when a person buys something, we need to: -For instance, when a person buys something, we need: 1. Subtract the money from their account. 2. Add the item to their inventory. @@ -181,21 +268,21 @@ Transactions can guarantee that. To start a transaction: -```js run +```js db.transaction(store[, type]); ``` - `store` is a store name that the transaction is going to access, e.g. `"books"`. Can be an array of store names if we're going to access multiple stores. - `type` – a transaction type, one of: - `readonly` -- can only read, the default. - - `readwrite` -- can only read and write, but not modify object stores. + - `readwrite` -- can only read and write the data, but not create/remove/alter object stores. -There'is also `versionchange` transaction type: such transactions can do everything, but we can't create them manually. IndexedDB automatically creates a `versionchange` transaction when opening the database, for `updateneeded` handler. That's why it's a single place where we can update the database structure, create/remove object stores. +There's also `versionchange` transaction type: such transactions can do everything, but we can't create them manually. IndexedDB automatically creates a `versionchange` transaction when opening the database, for `upgradeneeded` handler. That's why it's a single place where we can update the database structure, create/remove object stores. -```smart header="What are transaction types for?" +```smart header="Why are there different types of transactions?" Performance is the reason why transactions need to be labeled either `readonly` and `readwrite`. -Many `readonly` transactions can access concurrently the same store, but `readwrite` transactions can't. A `readwrite` transaction "locks" the store for writing. The next transaction must wait before the previous one finishes before accessing the same store. +Many `readonly` transactions are able to access the same store concurrently, but `readwrite` transactions can't. A `readwrite` transaction "locks" the store for writing. The next transaction must wait before the previous one finishes before accessing the same store. ``` After the transaction is created, we can add an item to the store, like this: @@ -227,29 +314,29 @@ request.onerror = function() { }; ``` -There are basically four steps: +There were basically four steps: -1. Create a transaction, mention all stores it's going to access, at `(1)`. +1. Create a transaction, mentioning all the stores it's going to access, at `(1)`. 2. Get the store object using `transaction.objectStore(name)`, at `(2)`. 3. Perform the request to the object store `books.add(book)`, at `(3)`. -4. ...Handle request success/error `(4)`, make other requests if needed, etc. +4. ...Handle request success/error `(4)`, then we can make other requests if needed, etc. Object stores support two methods to store a value: - **put(value, [key])** - Add the `value` to the store. The `key` is supplied only if the object store did not have `keyPath` or `autoIncrement` option. If there's already a value with same key, it will be replaced. + Add the `value` to the store. The `key` is supplied only if the object store did not have `keyPath` or `autoIncrement` option. If there's already a value with the same key, it will be replaced. - **add(value, [key])** Same as `put`, but if there's already a value with the same key, then the request fails, and an error with the name `"ConstraintError"` is generated. -Just like when opening a database, we send a request: `books.add(book)`, and then wait for `success/error` events. +Similar to opening a database, we can send a request: `books.add(book)`, and then wait for `success/error` events. - The `request.result` for `add` is the key of the new object. - The error is in `request.error` (if any). -## Transactions autocommit +## Transactions' autocommit -In the example above we started the transaction and made `add` request. We could make more requests. How do we finish ("commit") the transaction? +In the example above we started the transaction and made `add` request. But as we stated previously, a transaction may have multiple associated requests, that must either all succeed or all fail. How do we mark the transaction as finished, with no more requests to come? The short answer is: we don't. @@ -257,19 +344,13 @@ In the next version 3.0 of the specification, there will probably be a manual wa **When all transaction requests are finished, and the [microtasks queue](info:microtask-queue) is empty, it is committed automatically.** -```smart header="What's an \"empty microtask queue\"?" -The microtask queue is explained in [another chapter](info:async-await#microtask-queue). In short, an empty microtask queue means that for all settled promises their `.then/catch/finally` handlers are executed. - -In other words, handling of finished promises and resuming "awaits" is done before closing the transaction. - -That's a minor technical detail. If we're using `async/await` instead of low-level promise calls, then we can assume that a transaction commits when all its requests are done, and the current code finishes. -``` +Usually, we can assume that a transaction commits when all its requests are complete, and the current code finishes. -So, in the example above no special code is needed to finish the transaction. +So, in the example above no special call is needed to finish the transaction. -Transactions auto-commit principle has an important side effect. We can't insert an async operation like `fetch`, `setTimeout` in the middle of transaction. IndexedDB will not keep the transaction waiting till these are done. +Transactions auto-commit principle has an important side effect. We can't insert an async operation like `fetch`, `setTimeout` in the middle of a transaction. IndexedDB will not keep the transaction waiting till these are done. -In the code below `request2` in line `(*)` fails, because the transaction is already committed, can't make any request in it: +In the code below, `request2` in the line `(*)` fails, because the transaction is already committed, and can't make any request in it: ```js let request1 = books.add(book); @@ -290,7 +371,7 @@ That's because `fetch` is an asynchronous operation, a macrotask. Transactions a Authors of IndexedDB spec believe that transactions should be short-lived. Mostly for performance reasons. -Notably, `readwrite` transactions "lock" the stores for writing. So if one part of application initiated `readwrite` on `books` object store, then another part that wants to do the same has to wait: the new transaction "hangs" till the first one is done. That can lead to strange delays if transactions take a long time. +Notably, `readwrite` transactions "lock" the stores for writing. So if one part of the application initiated `readwrite` on `books` object store, then another part that wants to do the same has to wait: the new transaction "hangs" till the first one is done. That can lead to strange delays if transactions take a long time. So, what to do? @@ -331,9 +412,9 @@ That's to be expected, not only because of possible errors at our side, but also **A failed request automatically aborts the transaction, canceling all its changes.** -Sometimes a request may fail with a non-critical error. We'd like to handle it in `request.onerror` and continue the transaction. Then, to prevent the transaction abort, we should call `event.preventDefault()`. +In some situations, we may want to handle the failure (e.g. try another request), without canceling existing changes, and continue the transaction. That's possible. The `request.onerror` handler is able to prevent the transaction abort by calling `event.preventDefault()`. -In the example below a new book is added with the same key (`id`). The `store.add` method generates a `"ConstraintError"` in that case. We handle it without canceling the transaction: +In the example below a new book is added with the same key (`id`) as the existing one. The `store.add` method generates a `"ConstraintError"` in that case. We handle it without canceling the transaction: ```js let transaction = db.transaction("books", "readwrite"); @@ -347,6 +428,7 @@ request.onerror = function(event) { if (request.error.name == "ConstraintError") { console.log("Book with such id already exists"); // handle the error event.preventDefault(); // don't abort the transaction + // use another key for the book? } else { // unexpected error, can't handle it // the transaction will abort @@ -394,24 +476,29 @@ request.onerror = function(event) { }; ``` -## Searching by keys +## Searching + +There are two main types of search in an object store: -There are two main ways to search in an object store: -1. By a key or a key range. That is: by `book.id` in our "books" storage. -2. By another object field, e.g. `book.price`. We need an index for that. +1. By a key value or a key range. In our "books" storage that would be a value or range of values of `book.id`. +2. By another object field, e.g. `book.price`. This required an additional data structure, named "index". -First let's deal with the keys and key ranges `(1)`. +### By key -Methods that involve searching support either exact keys or so-called "range queries" -- [IDBKeyRange](https://www.w3.org/TR/IndexedDB/#keyrange) objects that specify a "key range". +First let's deal with the first type of search: by key. -Ranges are created using following calls: +Searching methods support both exact key values and so-called "ranges of values" -- [IDBKeyRange](https://www.w3.org/TR/IndexedDB/#keyrange) objects that specify an acceptable "key range". -- `IDBKeyRange.lowerBound(lower, [open])` means: `>lower` (or `≥lower` if `open` is true) -- `IDBKeyRange.upperBound(upper, [open])` means: `<upper` (or `≤upper` if `open` is true) -- `IDBKeyRange.bound(lower, upper, [lowerOpen], [upperOpen])` means: between `lower` and `upper`, with optional equality if the corresponding `open` is true. +`IDBKeyRange` objects are created using following calls: + +- `IDBKeyRange.lowerBound(lower, [open])` means: `≥lower` (or `>lower` if `open` is true) +- `IDBKeyRange.upperBound(upper, [open])` means: `≤upper` (or `<upper` if `open` is true) +- `IDBKeyRange.bound(lower, upper, [lowerOpen], [upperOpen])` means: between `lower` and `upper`. If the open flags is true, the corresponding key is not included in the range. - `IDBKeyRange.only(key)` -- a range that consists of only one `key`, rarely used. -All searching methods accept a `query` argument that can be either an exact key or a key range: +We'll see practical examples of using them very soon. + +To perform the actual search, there are following methods. They accept a `query` argument that can be either an exact key or a key range: - `store.get(query)` -- search for the first value by a key or a range. - `store.getAll([query], [count])` -- search for all values, limit by `count` if given. @@ -427,27 +514,26 @@ Request examples: // get one book books.get('js') -// get books with 'css' < id < 'html' +// get books with 'css' <= id <= 'html' books.getAll(IDBKeyRange.bound('css', 'html')) -// get books with 'html' <= id -books.getAll(IDBKeyRange.lowerBound('html', true)) +// get books with id < 'html' +books.getAll(IDBKeyRange.upperBound('html', true)) // get all books books.getAll() -// get all keys: id >= 'js' +// get all keys, where id > 'js' books.getAllKeys(IDBKeyRange.lowerBound('js', true)) ``` ```smart header="Object store is always sorted" -Object store sorts values by key internally. +An object store sorts values by key internally. So requests that return many values always return them in sorted by key order. ``` - -## Searching by any field with an index +### By a field using an index To search by other object fields, we need to create an additional data structure named "index". @@ -463,7 +549,7 @@ objectStore.createIndex(name, keyPath, [options]); - **`keyPath`** -- path to the object field that the index should track (we're going to search by that field), - **`option`** -- an optional object with properties: - **`unique`** -- if true, then there may be only one object in the store with the given value at the `keyPath`. The index will enforce that by generating an error if we try to add a duplicate. - - **`multiEntry`** -- only used if there value on `keyPath` is an array. In that case, by default, the index will treat the whole array as the key. But if `multiEntry` is true, then the index will keep a list of store objects for each value in that array. So array members become index keys. + - **`multiEntry`** -- only used if the value on `keyPath` is an array. In that case, by default, the index will treat the whole array as the key. But if `multiEntry` is true, then the index will keep a list of store objects for each value in that array. So array members become index keys. In our example, we store books keyed by `id`. @@ -476,7 +562,7 @@ openRequest.onupgradeneeded = function() { // we must create the index here, in versionchange transaction let books = db.createObjectStore('books', {keyPath: 'id'}); *!* - let index = inventory.createIndex('price_idx', 'price'); + let index = books.createIndex('price_idx', 'price'); */!* }; ``` @@ -516,7 +602,7 @@ request.onsuccess = function() { We can also use `IDBKeyRange` to create ranges and looks for cheap/expensive books: ```js -// find books where price < 5 +// find books where price <= 5 let request = priceIndex.getAll(IDBKeyRange.upperBound(5)); ``` @@ -524,11 +610,12 @@ Indexes are internally sorted by the tracked object field, `price` in our case. ## Deleting from store -The `delete` method looks up values to delete by a query, just like `getAll`. +The `delete` method looks up values to delete by a query, the call format is similar to `getAll`: - **`delete(query)`** -- delete matching values by query. For instance: + ```js // delete the book with id='js' books.delete('js'); @@ -547,6 +634,7 @@ request.onsuccess = function() { ``` To delete everything: + ```js books.clear(); // clear the storage. ``` @@ -555,9 +643,7 @@ books.clear(); // clear the storage. Methods like `getAll/getAllKeys` return an array of keys/values. -But an object storage can be huge, bigger than the available memory. - -Then `getAll` will fail to get all records as an array. +But an object storage can be huge, bigger than the available memory. Then `getAll` will fail to get all records as an array. What to do? @@ -568,6 +654,7 @@ Cursors provide the means to work around that. As an object store is sorted internally by key, a cursor walks the store in key order (ascending by default). The syntax: + ```js // like getAll, but with a cursor: let request = store.openCursor(query, [direction]); @@ -608,15 +695,15 @@ request.onsuccess = function() { The main cursor methods are: - `advance(count)` -- advance the cursor `count` times, skipping values. -- `continue([key])` -- advance the cursor to the next value in range matching or after key. +- `continue([key])` -- advance the cursor to the next value in range matching (or immediately after `key` if given). Whether there are more values matching the cursor or not -- `onsuccess` gets called, and then in `result` we can get the cursor pointing to the next record, or `undefined`. In the example above the cursor was made for the object store. -But we also can make a cursor over an index. As we remember, indexes allow to search by an object field. Cursors over indexes to precisely the same as over object stores -- they save memory by returning one value at a timee. +But we also can make a cursor over an index. As we remember, indexes allow to search by an object field. Cursors over indexes do precisely the same as over object stores -- they save memory by returning one value at a time. -For cursors over indexes, `cursor.key` is the index key (e.g. price), and we should use `cursor.primaryKey` property the object key: +For cursors over indexes, `cursor.key` is the index key (e.g. price), and we should use `cursor.primaryKey` property for the object key: ```js let request = priceIdx.openCursor(IDBKeyRange.upperBound(5)); @@ -625,7 +712,7 @@ let request = priceIdx.openCursor(IDBKeyRange.upperBound(5)); request.onsuccess = function() { let cursor = request.result; if (cursor) { - let key = cursor.primaryKey; // next object store key (id field) + let primaryKey = cursor.primaryKey; // next object store key (id field) let value = cursor.value; // next object store object (book object) let key = cursor.key; // next index key (price) console.log(key, value); @@ -645,7 +732,7 @@ Let's use a thin promise wrapper <https://github.com/jakearchibald/idb> further Then, instead of `onsuccess/onerror` we can write like this: ```js -let db = await idb.openDb('store', 1, db => { +let db = await idb.openDB('store', 1, db => { if (db.oldVersion == 0) { // perform the initialization db.createObjectStore('books', {keyPath: 'id'}); @@ -665,14 +752,13 @@ try { } catch(err) { console.log('error', err.message); } - ``` So we have all the sweet "plain async code" and "try..catch" stuff. ### Error handling -If we don't catch the error, then it falls through, just as usual. +If we don't catch an error, then it falls through, till the closest outer `try..catch`. An uncaught error becomes an "unhandled promise rejection" event on `window` object. @@ -688,7 +774,7 @@ window.addEventListener('unhandledrejection', event => { ### "Inactive transaction" pitfall -A we know already, a transaction auto-commits as soon as the browser is done with the current code and microtasks. So if we put an *macrotask* like `fetch` in the middle of a transaction, then the transaction won't wait for it to finish. It just auto-commits. So the next request in it fails. +As we already know, a transaction auto-commits as soon as the browser is done with the current code and microtasks. So if we put a *macrotask* like `fetch` in the middle of a transaction, then the transaction won't wait for it to finish. It just auto-commits. So the next request in it would fail. For a promise wrapper and `async/await` the situation is the same. @@ -707,7 +793,8 @@ await inventory.add({ id: 'js', price: 10, created: new Date() }); // Error The next `inventory.add` after `fetch` `(*)` fails with an "inactive transaction" error, because the transaction is already committed and closed at that time. -The workaround is same as when working with native IndexedDB: either make a new transaction or just split things apart. +The workaround is the same as when working with native IndexedDB: either make a new transaction or just split things apart. + 1. Prepare the data and fetch all that's needed first. 2. Then save in the database. @@ -715,7 +802,7 @@ The workaround is same as when working with native IndexedDB: either make a new Internally, the wrapper performs a native IndexedDB request, adding `onerror/onsuccess` to it, and returns a promise that rejects/resolves with the result. -That works most fine of the time. The examples are at the lib page <https://github.com/jakearchibald/idb>. +That works fine most of the time. The examples are at the lib page <https://github.com/jakearchibald/idb>. In few rare cases, when we need the original `request` object, we can access it as `promise.request` property of the promise: @@ -734,14 +821,13 @@ let result = await promise; // if still needed IndexedDB can be thought of as a "localStorage on steroids". It's a simple key-value database, powerful enough for offline apps, yet simple to use. -The best manual is the specification, [the current one](https://w3c.github.io/IndexedDB) is 2.0, but few methods from [3.0](https://w3c.github.io/IndexedDB/) (it's not much different) are partially supported. +The best manual is the specification, [the current one](https://www.w3.org/TR/IndexedDB-2/) is 2.0, but few methods from [3.0](https://w3c.github.io/IndexedDB/) (it's not much different) are partially supported. -The usage can be described with a few phrases: +The basic usage can be described with a few phrases: 1. Get a promise wrapper like [idb](https://github.com/jakearchibald/idb). 2. Open a database: `idb.openDb(name, version, onupgradeneeded)` - - Create object storages in indexes in `onupgradeneeded` handlers. - - Update version if needed - either by comparing numbers or just checking what exists. + - Create object storages and indexes in `onupgradeneeded` handler or perform version update if needed. 3. For requests: - Create transaction `db.transaction('books')` (readwrite if needed). - Get the object store `transaction.objectStore('books')`. diff --git a/6-data-storage/03-indexeddb/indexeddb-cursor.svg b/6-data-storage/03-indexeddb/indexeddb-cursor.svg new file mode 100644 index 000000000..c41ac75d9 --- /dev/null +++ b/6-data-storage/03-indexeddb/indexeddb-cursor.svg @@ -0,0 +1,45 @@ +<?xml version="1.0" encoding="UTF-8"?> +<svg width="312px" height="291px" viewBox="0 0 312 291" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> + <!-- Generator: sketchtool 55.2 (78181) - https://sketchapp.com --> + <title>indexeddb-cursor.svg</title> + <desc>Created with sketchtool.</desc> + <g id="data-storage" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd"> + <g id="indexeddb-cursor.svg"> + <path d="M161,43 L161,101 L268,101 L268,43 L161,43 Z" id="Rectangle-1" stroke="#E8C48E" stroke-width="2" fill="#FFF9EB"></path> + <path d="M161,43 L161,101 L274,101 L274,43 L161,43 Z" id="Rectangle-1-Copy" stroke="#E8C48E" stroke-width="2" fill="#FFF9EB"></path> + <text id="id:-'html'-price:-3" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal" fill="#8A704D"> + <tspan x="171" y="66">id: 'html'</tspan> + <tspan x="171" y="81">price: 3</tspan> + </text> + <path d="M161,101 L161,159 L274,159 L274,101 L161,101 Z" id="Rectangle-1-Copy-2" stroke="#E8C48E" stroke-width="2" fill="#FFF9EB"></path> + <text id="id:-'css'-price:-5" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal" fill="#8A704D"> + <tspan x="171" y="124">id: 'css'</tspan> + <tspan x="171" y="139">price: 5</tspan> + </text> + <path d="M161,159 L161,217 L274,217 L274,159 L161,159 Z" id="Rectangle-1-Copy-3" stroke="#E8C48E" stroke-width="2" fill="#FFF9EB"></path> + <text id="id:-'js'-price:-10" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal" fill="#8A704D"> + <tspan x="171" y="182">id: 'js'</tspan> + <tspan x="171" y="197">price: 10</tspan> + </text> + <path d="M161,217 L161,275 L274,275 L274,217 L161,217 Z" id="Rectangle-1-Copy-4" stroke="#E8C48E" stroke-width="2" fill="#FFF9EB"></path> + <text id="id:-'nodejs'-price:" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal" fill="#8A704D"> + <tspan x="171" y="240">id: 'nodejs'</tspan> + <tspan x="171" y="255">price: 10</tspan> + </text> + <text id="books" font-family="OpenSans-Regular, Open Sans" font-size="18" font-weight="normal" fill="#8A704D"> + <tspan x="160" y="31">books</tspan> + </text> + <text id="cursor" font-family="OpenSans-Regular, Open Sans" font-size="24" font-weight="normal" fill="#8A704D"> + <tspan x="1" y="79">cursor</tspan> + </text> + <path id="Line" d="M92.5290935,61.9295774 L167.596553,69.6069312 L167.393069,71.5965528 L92.3256094,63.919199 L91.7151573,69.8880639 L78.5,61.5 L93.1395456,55.9607125 L92.5290935,61.9295774 Z" fill="#EE6B47" fill-rule="nonzero"></path> + <path id="Line-Copy" d="M91.9207297,79.2074366 L166.941663,74.9448836 L167.055116,76.9416631 L92.0341831,81.2042161 L92.3745433,87.1945546 L78,81 L91.5803696,73.2170981 L91.9207297,79.2074366 Z" fill="#EE6B47" fill-rule="nonzero"></path> + <text id="primaryKey" font-family="OpenSans-Regular, Open Sans" font-size="16" font-weight="normal" fill="#8A704D"> + <tspan x="66" y="51">primaryKey</tspan> + </text> + <text id="key" font-family="OpenSans-Regular, Open Sans" font-size="16" font-weight="normal" fill="#8A704D"> + <tspan x="93" y="101">key</tspan> + </text> + </g> + </g> +</svg> \ No newline at end of file diff --git a/7-animation/1-bezier-curve/article.md b/7-animation/1-bezier-curve/article.md index 106a92dd5..63b9a03ce 100644 --- a/7-animation/1-bezier-curve/article.md +++ b/7-animation/1-bezier-curve/article.md @@ -2,7 +2,13 @@ Bezier curves are used in computer graphics to draw shapes, for CSS animation and in many other places. -They are actually a very simple thing, worth to study once and then feel comfortable in the world of vector graphics and advanced animations. +They are a very simple thing, worth to study once and then feel comfortable in the world of vector graphics and advanced animations. + +```smart header="Some theory, please" +This article provides a theoretical, but very needed insight into what Bezier curves are, while [the next one](info:css-animations#bezier-curve) shows how we can use them for CSS animations. + +Please take your time to read and understand the concept, it'll serve you well. +``` ## Control points @@ -31,7 +37,7 @@ For two points we have a linear curve (that's a straight line), for three points   -Because of that last property, in computer graphics it's possible to optimize intersection tests. If convex hulls do not intersect, then curves do not either. So checking for the convex hulls intersection first can give a very fast "no intersection" result. Checking the intersection or convex hulls is much easier, because they are rectangles, triangles and so on (see the picture above), much simpler figures than the curve. +Because of that last property, in computer graphics it's possible to optimize intersection tests. If convex hulls do not intersect, then curves do not either. So checking for the convex hulls intersection first can give a very fast "no intersection" result. Checking the intersection of convex hulls is much easier, because they are rectangles, triangles and so on (see the picture above), much simpler figures than the curve. **The main value of Bezier curves for drawing -- by moving the points the curve is changing *in intuitively obvious way*.** @@ -50,7 +56,7 @@ Here are some examples: ## De Casteljau's algorithm There's a mathematical formula for Bezier curves, but let's cover it a bit later, because -[De Casteljau's algorithm](https://en.wikipedia.org/wiki/De_Casteljau%27s_algorithm) it is identical to the mathematical definition and visually shows how it is constructed. +[De Casteljau's algorithm](https://en.wikipedia.org/wiki/De_Casteljau%27s_algorithm) is identical to the mathematical definition and visually shows how it is constructed. First let's see the 3-points example. @@ -130,14 +136,14 @@ A non-smooth Bezier curve (yeah, that's possible too): [iframe src="demo.svg?p=0,0,1,1,0,1,1,0&animate=1" height=370] ```online -If there's anything unclear in the algorithm description, then live examples above show how +If there's something unclear in the algorithm description, please look at the live examples above to see how the curve is built. ``` As the algorithm is recursive, we can build Bezier curves of any order, that is: using 5, 6 or more control points. But in practice many points are less useful. Usually we take 2-3 points, and for complex lines glue several curves together. That's simpler to develop and calculate. ```smart header="How to draw a curve *through* given points?" -We use control points for a Bezier curve. As we can see, they are not on the curve, except the first and the last ones. +To specify a Bezier curve, control points are used. As we can see, they are not on the curve, except the first and the last ones. Sometimes we have another task: to draw a curve *through several points*, so that all of them are on a single smooth curve. That task is called [interpolation](https://en.wikipedia.org/wiki/Interpolation), and here we don't cover it. @@ -176,7 +182,7 @@ Instead of <code>x<sub>1</sub>, y<sub>1</sub>, x<sub>2</sub>, y<sub>2</sub>, x<s For instance, if control points are `(0,0)`, `(0.5, 1)` and `(1, 0)`, the equations become: - <code>x = (1−t)<sup>2</sup> * 0 + 2(1−t)t * 0.5 + t<sup>2</sup> * 1 = (1-t)t + t<sup>2</sup> = t</code> -- <code>y = (1−t)<sup>2</sup> * 0 + 2(1−t)t * 1 + t<sup>2</sup> * 0 = 2(1-t)t = –t<sup>2</sup> + 2t</code> +- <code>y = (1−t)<sup>2</sup> * 0 + 2(1−t)t * 1 + t<sup>2</sup> * 0 = 2(1-t)t = –2t<sup>2</sup> + 2t</code> Now as `t` runs from `0` to `1`, the set of values `(x,y)` for each `t` forms the curve for such control points. @@ -186,12 +192,12 @@ Bezier curves are defined by their control points. We saw two definitions of Bezier curves: -1. Using a mathematical formulas. -2. Using a drawing process: De Casteljau's algorithm +1. Using a drawing process: De Casteljau's algorithm. +2. Using a mathematical formulas. Good properties of Bezier curves: -- We can draw smooth lines with a mouse by moving around control points. +- We can draw smooth lines with a mouse by moving control points. - Complex shapes can be made of several Bezier curves. Usage: diff --git a/7-animation/1-bezier-curve/bezier3-draw1.svg b/7-animation/1-bezier-curve/bezier3-draw1.svg index fd3ca092f..9fb69bbaf 100644 --- a/7-animation/1-bezier-curve/bezier3-draw1.svg +++ b/7-animation/1-bezier-curve/bezier3-draw1.svg @@ -1 +1,5 @@ -<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="340" height="350" viewBox="0 0 340 350"><defs><style>@import url(https://fonts.googleapis.com/css?family=Open+Sans:bold,italic,bolditalic%7CPT+Mono);@font-face{font-family:'PT Mono';font-weight:700;font-style:normal;src:local('PT MonoBold'),url(/font/PTMonoBold.woff2) format('woff2'),url(/font/PTMonoBold.woff) format('woff'),url(/font/PTMonoBold.ttf) format('truetype')}</style></defs><g id="animation" fill="none" fill-rule="evenodd" stroke="none" stroke-width="1"><g id="bezier3-draw1.svg"><path id="Path-8" stroke="#DBAF88" d="M37.282 314.328L171.238 46.82l134.966 268.494"/><path id="Path-7" stroke="#A7333A" stroke-width="2" d="M37.738 314.328c98.312-197.562 188.187-157.862 268.157 1.49"/><circle id="Oval-1" cx="37" cy="316" r="4" fill="#FFF" stroke="#DBAF88"/><text id="1" fill="#AF6E24" font-family="OpenSans-Bold, Open Sans" font-size="14" font-weight="bold"><tspan x="33" y="337">1</tspan></text><circle id="Oval-3" cx="306" cy="316" r="4" fill="#FFF" stroke="#DBAF88"/><text id="3" fill="#AF6E24" font-family="OpenSans-Bold, Open Sans" font-size="14" font-weight="bold"><tspan x="302" y="337">3</tspan></text><circle id="Oval-2" cx="171" cy="47" r="4" fill="#FFF" stroke="#DBAF88"/><circle id="Oval-4" cx="104" cy="215" r="4" fill="#A7333A"/><text id="2" fill="#AF6E24" font-family="OpenSans-Bold, Open Sans" font-size="14" font-weight="bold"><tspan x="167" y="39">2</tspan></text><text id=".25" fill="#AF6E24" font-family="OpenSans-Bold, Open Sans" font-size="14" font-weight="bold"><tspan x="100" y="238">0.25</tspan></text><text id="t-=-0.25" fill="#AF6E24" font-family="OpenSans-Bold, Open Sans" font-size="14" font-weight="bold"><tspan x="12" y="254.849">t = 0.25</tspan></text><text id=".25" fill="#AF6E24" font-family="OpenSans-Bold, Open Sans" font-size="14" font-weight="bold"><tspan x="209" y="112">0.25</tspan></text><path id="Line" stroke="#1C85B5" stroke-linecap="square" stroke-width="2" d="M70.5 247.5l134-133"/><image id="ease-in" width="133" height="135" x="231" y="-133" xlink:href="data:image/png;base64,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"/></g></g></svg> \ No newline at end of file +<<<<<<< HEAD +<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="340" height="350" viewBox="0 0 340 350"><defs><style>@import url(https://fonts.googleapis.com/css?family=Open+Sans:bold,italic,bolditalic%7CPT+Mono);@font-face{font-family:'PT Mono';font-weight:700;font-style:normal;src:local('PT MonoBold'),url(/font/PTMonoBold.woff2) format('woff2'),url(/font/PTMonoBold.woff) format('woff'),url(/font/PTMonoBold.ttf) format('truetype')}</style></defs><g id="animation" fill="none" fill-rule="evenodd" stroke="none" stroke-width="1"><g id="bezier3-draw1.svg"><path id="Path-8" stroke="#DBAF88" d="M37.282 314.328L171.238 46.82l134.966 268.494"/><path id="Path-7" stroke="#A7333A" stroke-width="2" d="M37.738 314.328c98.312-197.562 188.187-157.862 268.157 1.49"/><circle id="Oval-1" cx="37" cy="316" r="4" fill="#FFF" stroke="#DBAF88"/><text id="1" fill="#AF6E24" font-family="OpenSans-Bold, Open Sans" font-size="14" font-weight="bold"><tspan x="33" y="337">1</tspan></text><circle id="Oval-3" cx="306" cy="316" r="4" fill="#FFF" stroke="#DBAF88"/><text id="3" fill="#AF6E24" font-family="OpenSans-Bold, Open Sans" font-size="14" font-weight="bold"><tspan x="302" y="337">3</tspan></text><circle id="Oval-2" cx="171" cy="47" r="4" fill="#FFF" stroke="#DBAF88"/><circle id="Oval-4" cx="104" cy="215" r="4" fill="#A7333A"/><text id="2" fill="#AF6E24" font-family="OpenSans-Bold, Open Sans" font-size="14" font-weight="bold"><tspan x="167" y="39">2</tspan></text><text id=".25" fill="#AF6E24" font-family="OpenSans-Bold, Open Sans" font-size="14" font-weight="bold"><tspan x="100" y="238">0.25</tspan></text><text id="t-=-0.25" fill="#AF6E24" font-family="OpenSans-Bold, Open Sans" font-size="14" font-weight="bold"><tspan x="12" y="254.849">t = 0.25</tspan></text><text id=".25" fill="#AF6E24" font-family="OpenSans-Bold, Open Sans" font-size="14" font-weight="bold"><tspan x="209" y="112">0.25</tspan></text><path id="Line" stroke="#1C85B5" stroke-linecap="square" stroke-width="2" d="M70.5 247.5l134-133"/><image id="ease-in" width="133" height="135" x="231" y="-133" xlink:href="data:image/png;base64,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"/></g></g></svg> +======= +<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="340" height="350" viewBox="0 0 340 350"><defs><style>@import url(https://fonts.googleapis.com/css?family=Open+Sans:bold,italic,bolditalic%7CPT+Mono);@font-face{font-family:'PT Mono';font-weight:700;font-style:normal;src:local('PT MonoBold'),url(/font/PTMonoBold.woff2) format('woff2'),url(/font/PTMonoBold.woff) format('woff'),url(/font/PTMonoBold.ttf) format('truetype')}</style></defs><g id="animation" fill="none" fill-rule="evenodd" stroke="none" stroke-width="1"><g id="bezier3-draw1.svg"><path id="Path-8" stroke="#DBAF88" d="M37.282 314.328L171.238 46.82l134.966 268.494"/><path id="Path-7" stroke="#A7333A" stroke-width="2" d="M37.738 314.328c98.312-197.562 188.187-157.862 268.157 1.49"/><circle id="Oval-1" cx="37" cy="316" r="4" fill="#FFF" stroke="#DBAF88"/><text id="1" fill="#AF6E24" font-family="OpenSans-Bold, Open Sans" font-size="14" font-weight="bold"><tspan x="33" y="337">1</tspan></text><circle id="Oval-3" cx="306" cy="316" r="4" fill="#FFF" stroke="#DBAF88"/><text id="3" fill="#AF6E24" font-family="OpenSans-Bold, Open Sans" font-size="14" font-weight="bold"><tspan x="302" y="337">3</tspan></text><circle id="Oval-2" cx="171" cy="47" r="4" fill="#FFF" stroke="#DBAF88"/><circle id="Oval-4" cx="104" cy="215" r="4" fill="#A7333A"/><text id="2" fill="#AF6E24" font-family="OpenSans-Bold, Open Sans" font-size="14" font-weight="bold"><tspan x="167" y="39">2</tspan></text><text id=".25" fill="#AF6E24" font-family="OpenSans-Bold, Open Sans" font-size="14" font-weight="bold"><tspan x="100" y="238">0.25</tspan></text><text id="t-=-0.25" fill="#AF6E24" font-family="OpenSans-Bold, Open Sans" font-size="14" font-weight="bold"><tspan x="12" y="254.849">t = 0.25</tspan></text><text id=".25" fill="#AF6E24" font-family="OpenSans-Bold, Open Sans" font-size="14" font-weight="bold"><tspan x="209" y="112">0.25</tspan></text><path id="Line" stroke="#1C85B5" stroke-linecap="square" stroke-width="2" d="M70.5 247.5l134-133"/><image id="ease-in" width="133" height="135" x="231" y="-133" xlink:href="data:image/png;base64,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"/></g></g></svg> +>>>>>>> 540d753e90789205fc6e75c502f68382c87dea9b diff --git a/7-animation/1-bezier-curve/bezier3-e.svg b/7-animation/1-bezier-curve/bezier3-e.svg index 4c5c741dc..35a72767a 100644 --- a/7-animation/1-bezier-curve/bezier3-e.svg +++ b/7-animation/1-bezier-curve/bezier3-e.svg @@ -1 +1,5 @@ -<svg xmlns="http://www.w3.org/2000/svg" width="149" height="187" viewBox="0 0 149 187"><defs><style>@import url(https://fonts.googleapis.com/css?family=Open+Sans:bold,italic,bolditalic%7CPT+Mono);@font-face{font-family:'PT Mono';font-weight:700;font-style:normal;src:local('PT MonoBold'),url(/font/PTMonoBold.woff2) format('woff2'),url(/font/PTMonoBold.woff) format('woff'),url(/font/PTMonoBold.ttf) format('truetype')}</style></defs><g id="animation" fill="none" fill-rule="evenodd" stroke="none" stroke-width="1"><g id="bezier3-e.svg"><path id="Triangle-1" stroke="#DBAF88" d="M74.5 43L125 144H24z"/><path id="Path-4" stroke="#A7333A" stroke-width="2" d="M24.279 143.124c50.221-100.184 89.93-17.718 99.822.521"/><circle id="Oval-1" cx="24" cy="144" r="4" fill="#FFF" stroke="#DBAF88"/><text id="1" fill="#AF6E24" font-family="OpenSans-Bold, Open Sans" font-size="14" font-weight="bold"><tspan x="20" y="165">1</tspan></text><circle id="Oval-2" cx="124" cy="144" r="4" fill="#FFF" stroke="#DBAF88"/><text id="3" fill="#AF6E24" font-family="OpenSans-Bold, Open Sans" font-size="14" font-weight="bold"><tspan x="120" y="165">3</tspan></text><circle id="Oval-3" cx="74" cy="44" r="4" fill="#FFF" stroke="#DBAF88"/><text id="-4" fill="#AF6E24" font-family="OpenSans-Bold, Open Sans" font-size="14" font-weight="bold"><tspan x="70.19" y="36">3</tspan></text></g></g></svg> \ No newline at end of file +<<<<<<< HEAD +<svg xmlns="http://www.w3.org/2000/svg" width="149" height="187" viewBox="0 0 149 187"><defs><style>@import url(https://fonts.googleapis.com/css?family=Open+Sans:bold,italic,bolditalic%7CPT+Mono);@font-face{font-family:'PT Mono';font-weight:700;font-style:normal;src:local('PT MonoBold'),url(/font/PTMonoBold.woff2) format('woff2'),url(/font/PTMonoBold.woff) format('woff'),url(/font/PTMonoBold.ttf) format('truetype')}</style></defs><g id="animation" fill="none" fill-rule="evenodd" stroke="none" stroke-width="1"><g id="bezier3-e.svg"><path id="Triangle-1" stroke="#DBAF88" d="M74.5 43L125 144H24z"/><path id="Path-4" stroke="#A7333A" stroke-width="2" d="M24.279 143.124c50.221-100.184 89.93-17.718 99.822.521"/><circle id="Oval-1" cx="24" cy="144" r="4" fill="#FFF" stroke="#DBAF88"/><text id="1" fill="#AF6E24" font-family="OpenSans-Bold, Open Sans" font-size="14" font-weight="bold"><tspan x="20" y="165">1</tspan></text><circle id="Oval-2" cx="124" cy="144" r="4" fill="#FFF" stroke="#DBAF88"/><text id="3" fill="#AF6E24" font-family="OpenSans-Bold, Open Sans" font-size="14" font-weight="bold"><tspan x="120" y="165">3</tspan></text><circle id="Oval-3" cx="74" cy="44" r="4" fill="#FFF" stroke="#DBAF88"/><text id="-4" fill="#AF6E24" font-family="OpenSans-Bold, Open Sans" font-size="14" font-weight="bold"><tspan x="70.19" y="36">3</tspan></text></g></g></svg> +======= +<svg xmlns="http://www.w3.org/2000/svg" width="149" height="187" viewBox="0 0 149 187"><defs><style>@import url(https://fonts.googleapis.com/css?family=Open+Sans:bold,italic,bolditalic%7CPT+Mono);@font-face{font-family:'PT Mono';font-weight:700;font-style:normal;src:local('PT MonoBold'),url(/font/PTMonoBold.woff2) format('woff2'),url(/font/PTMonoBold.woff) format('woff'),url(/font/PTMonoBold.ttf) format('truetype')}</style></defs><g id="animation" fill="none" fill-rule="evenodd" stroke="none" stroke-width="1"><g id="bezier3-e.svg"><path id="Triangle-1" stroke="#DBAF88" d="M74.5 43L125 144H24z"/><path id="Path-4" stroke="#A7333A" stroke-width="2" d="M24.279 143.124c50.221-100.184 89.93-17.718 99.822.521"/><circle id="Oval-1" cx="24" cy="144" r="4" fill="#FFF" stroke="#DBAF88"/><text id="1" fill="#AF6E24" font-family="OpenSans-Bold, Open Sans" font-size="14" font-weight="bold"><tspan x="20" y="165">1</tspan></text><circle id="Oval-2" cx="124" cy="144" r="4" fill="#FFF" stroke="#DBAF88"/><text id="3" fill="#AF6E24" font-family="OpenSans-Bold, Open Sans" font-size="14" font-weight="bold"><tspan x="120" y="165">3</tspan></text><circle id="Oval-3" cx="74" cy="44" r="4" fill="#FFF" stroke="#DBAF88"/><text id="2" fill="#AF6E24" font-family="OpenSans-Bold, Open Sans" font-size="14" font-weight="bold"><tspan x="70.19" y="36">2</tspan></text></g></g></svg> +>>>>>>> 540d753e90789205fc6e75c502f68382c87dea9b diff --git a/7-animation/1-bezier-curve/bezier3.svg b/7-animation/1-bezier-curve/bezier3.svg index 35f1eb6e3..988655054 100644 --- a/7-animation/1-bezier-curve/bezier3.svg +++ b/7-animation/1-bezier-curve/bezier3.svg @@ -1 +1,5 @@ -<svg xmlns="http://www.w3.org/2000/svg" width="149" height="187" viewBox="0 0 149 187"><defs><style>@import url(https://fonts.googleapis.com/css?family=Open+Sans:bold,italic,bolditalic%7CPT+Mono);@font-face{font-family:'PT Mono';font-weight:700;font-style:normal;src:local('PT MonoBold'),url(/font/PTMonoBold.woff2) format('woff2'),url(/font/PTMonoBold.woff) format('woff'),url(/font/PTMonoBold.ttf) format('truetype')}</style></defs><g id="animation" fill="none" fill-rule="evenodd" stroke="none" stroke-width="1"><g id="bezier3.svg"><path id="Path-4" stroke="#A7333A" stroke-width="2" d="M24.279 143.124c50.221-100.184 89.93-17.718 99.822.521"/><circle id="Oval-1" cx="24" cy="144" r="4" fill="#FFF" stroke="#DBAF88"/><text id="1" fill="#AF6E24" font-family="OpenSans-Bold, Open Sans" font-size="14" font-weight="bold"><tspan x="20" y="165">1</tspan></text><circle id="Oval-2" cx="124" cy="144" r="4" fill="#FFF" stroke="#DBAF88"/><text id="3" fill="#AF6E24" font-family="OpenSans-Bold, Open Sans" font-size="14" font-weight="bold"><tspan x="120" y="165">3</tspan></text><circle id="Oval-3" cx="74" cy="44" r="4" fill="#FFF" stroke="#DBAF88"/><text id="2" fill="#AF6E24" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="69.99" y="32">2</tspan></text></g></g></svg> \ No newline at end of file +<<<<<<< HEAD +<svg xmlns="http://www.w3.org/2000/svg" width="149" height="187" viewBox="0 0 149 187"><defs><style>@import url(https://fonts.googleapis.com/css?family=Open+Sans:bold,italic,bolditalic%7CPT+Mono);@font-face{font-family:'PT Mono';font-weight:700;font-style:normal;src:local('PT MonoBold'),url(/font/PTMonoBold.woff2) format('woff2'),url(/font/PTMonoBold.woff) format('woff'),url(/font/PTMonoBold.ttf) format('truetype')}</style></defs><g id="animation" fill="none" fill-rule="evenodd" stroke="none" stroke-width="1"><g id="bezier3.svg"><path id="Path-4" stroke="#A7333A" stroke-width="2" d="M24.279 143.124c50.221-100.184 89.93-17.718 99.822.521"/><circle id="Oval-1" cx="24" cy="144" r="4" fill="#FFF" stroke="#DBAF88"/><text id="1" fill="#AF6E24" font-family="OpenSans-Bold, Open Sans" font-size="14" font-weight="bold"><tspan x="20" y="165">1</tspan></text><circle id="Oval-2" cx="124" cy="144" r="4" fill="#FFF" stroke="#DBAF88"/><text id="3" fill="#AF6E24" font-family="OpenSans-Bold, Open Sans" font-size="14" font-weight="bold"><tspan x="120" y="165">3</tspan></text><circle id="Oval-3" cx="74" cy="44" r="4" fill="#FFF" stroke="#DBAF88"/><text id="2" fill="#AF6E24" font-family="PTMono-Regular, PT Mono" font-size="14" font-weight="normal"><tspan x="69.99" y="32">2</tspan></text></g></g></svg> +======= +<svg xmlns="http://www.w3.org/2000/svg" width="149" height="187" viewBox="0 0 149 187"><defs><style>@import url(https://fonts.googleapis.com/css?family=Open+Sans:bold,italic,bolditalic%7CPT+Mono);@font-face{font-family:'PT Mono';font-weight:700;font-style:normal;src:local('PT MonoBold'),url(/font/PTMonoBold.woff2) format('woff2'),url(/font/PTMonoBold.woff) format('woff'),url(/font/PTMonoBold.ttf) format('truetype')}</style></defs><g id="animation" fill="none" fill-rule="evenodd" stroke="none" stroke-width="1"><g id="bezier3.svg"><path id="Path-4" stroke="#A7333A" stroke-width="2" d="M24.279 143.124c50.221-100.184 89.93-17.718 99.822.521"/><circle id="Oval-1" cx="24" cy="144" r="4" fill="#FFF" stroke="#DBAF88"/><text id="1" fill="#AF6E24" font-family="OpenSans-Bold, Open Sans" font-size="14" font-weight="bold"><tspan x="20" y="165">1</tspan></text><circle id="Oval-2" cx="124" cy="144" r="4" fill="#FFF" stroke="#DBAF88"/><text id="3" fill="#AF6E24" font-family="OpenSans-Bold, Open Sans" font-size="14" font-weight="bold"><tspan x="120" y="165">3</tspan></text><circle id="Oval-3" cx="74" cy="44" r="4" fill="#FFF" stroke="#DBAF88"/><text id="2" fill="#AF6E24" font-family="OpenSans-Bold, Open Sans" font-size="14" font-weight="bold"><tspan x="70.19" y="36">2</tspan></text></g></g></svg> +>>>>>>> 540d753e90789205fc6e75c502f68382c87dea9b diff --git a/7-animation/1-bezier-curve/demo.svg b/7-animation/1-bezier-curve/demo.svg index 5240697ee..50ff5e4c4 100644 --- a/7-animation/1-bezier-curve/demo.svg +++ b/7-animation/1-bezier-curve/demo.svg @@ -153,6 +153,12 @@ http://www.w3.org/Graphics/SVG/IG/resources/svgprimer.html#path_C points[i].y = y; setPointCoords(point, i); drawPath(); +<<<<<<< HEAD +======= + if (t > 0) { + drawT(points, t - STEP); + } +>>>>>>> 540d753e90789205fc6e75c502f68382c87dea9b } document.onmouseup = function() { document.onmousemove = document.onmouseup = null; @@ -212,6 +218,10 @@ http://www.w3.org/Graphics/SVG/IG/resources/svgprimer.html#path_C } } +<<<<<<< HEAD +======= + const STEP = 0.005; +>>>>>>> 540d753e90789205fc6e75c502f68382c87dea9b let t = 0; let timer; @@ -241,7 +251,11 @@ http://www.w3.org/Graphics/SVG/IG/resources/svgprimer.html#path_C return; } +<<<<<<< HEAD t += 0.005; +======= + t += STEP; +>>>>>>> 540d753e90789205fc6e75c502f68382c87dea9b }, 30); } diff --git a/7-animation/2-css-animations/1-animate-logo-css/solution.view/index.html b/7-animation/2-css-animations/1-animate-logo-css/solution.view/index.html index 4e90e2478..d77f25e28 100644 --- a/7-animation/2-css-animations/1-animate-logo-css/solution.view/index.html +++ b/7-animation/2-css-animations/1-animate-logo-css/solution.view/index.html @@ -27,12 +27,12 @@ <img id="flyjet" src="https://en.js.cx/clipart/flyjet.jpg"> <script> - flyjet.onclick = function() { + let ended = false; // will change to true after the animation finishes - let ended = false; + flyjet.onclick = function() { flyjet.addEventListener('transitionend', function() { - if (!ended) { + if (!ended) { // check to show the message only once ended = true; alert('Done!'); } diff --git a/7-animation/2-css-animations/2-animate-logo-bezier-css/task.md b/7-animation/2-css-animations/2-animate-logo-bezier-css/task.md index 9e21f4101..18e63b480 100644 --- a/7-animation/2-css-animations/2-animate-logo-bezier-css/task.md +++ b/7-animation/2-css-animations/2-animate-logo-bezier-css/task.md @@ -4,7 +4,7 @@ importance: 5 # Animate the flying plane (CSS) -Modify the solution of the previous task <info:task/animate-logo-css> to make the plane grow more than it's original size 400x240px (jump out), and then return to that size. +Modify the solution of the previous task <info:task/animate-logo-css> to make the plane grow more than its original size 400x240px (jump out), and then return to that size. Here's how it should look (click on the plane): diff --git a/7-animation/2-css-animations/3-animate-circle/solution.view/index.html b/7-animation/2-css-animations/3-animate-circle/solution.view/index.html index 88b154254..43b927e8a 100644 --- a/7-animation/2-css-animations/3-animate-circle/solution.view/index.html +++ b/7-animation/2-css-animations/3-animate-circle/solution.view/index.html @@ -5,7 +5,7 @@ <meta charset="utf-8"> <style> .circle { - transition-property: width, height, margin-left, margin-top; + transition-property: width, height; transition-duration: 2s; position: fixed; transform: translateX(-50%) translateY(-50%); diff --git a/7-animation/2-css-animations/3-animate-circle/source.view/index.html b/7-animation/2-css-animations/3-animate-circle/source.view/index.html index a423280de..e305f4cf6 100644 --- a/7-animation/2-css-animations/3-animate-circle/source.view/index.html +++ b/7-animation/2-css-animations/3-animate-circle/source.view/index.html @@ -5,7 +5,7 @@ <meta charset="utf-8"> <style> .circle { - transition-property: width, height, margin-left, margin-top; + transition-property: width, height; transition-duration: 2s; position: fixed; transform: translateX(-50%) translateY(-50%); diff --git a/1-js/11-async/05-promise-api/02-promise-errors-as-results-2/solution.md b/7-animation/2-css-animations/4-animate-circle-callback/solution.md similarity index 100% rename from 1-js/11-async/05-promise-api/02-promise-errors-as-results-2/solution.md rename to 7-animation/2-css-animations/4-animate-circle-callback/solution.md diff --git a/1-js/11-async/01-callbacks/01-animate-circle-callback/solution.view/index.html b/7-animation/2-css-animations/4-animate-circle-callback/solution.view/index.html similarity index 94% rename from 1-js/11-async/01-callbacks/01-animate-circle-callback/solution.view/index.html rename to 7-animation/2-css-animations/4-animate-circle-callback/solution.view/index.html index b2192681c..64746e85f 100644 --- a/1-js/11-async/01-callbacks/01-animate-circle-callback/solution.view/index.html +++ b/7-animation/2-css-animations/4-animate-circle-callback/solution.view/index.html @@ -10,7 +10,7 @@ text-align: center; } .circle { - transition-property: width, height, margin-left, margin-top; + transition-property: width, height; transition-duration: 2s; position: fixed; transform: translateX(-50%) translateY(-50%); diff --git a/1-js/11-async/01-callbacks/01-animate-circle-callback/task.md b/7-animation/2-css-animations/4-animate-circle-callback/task.md similarity index 100% rename from 1-js/11-async/01-callbacks/01-animate-circle-callback/task.md rename to 7-animation/2-css-animations/4-animate-circle-callback/task.md diff --git a/7-animation/2-css-animations/article.md b/7-animation/2-css-animations/article.md index 844a27587..a6a41eaeb 100644 --- a/7-animation/2-css-animations/article.md +++ b/7-animation/2-css-animations/article.md @@ -1,14 +1,14 @@ # CSS-animations -CSS animations allow to do simple animations without JavaScript at all. +CSS animations make it possible to do simple animations without JavaScript at all. -JavaScript can be used to control CSS animation and make it even better with a little of code. +JavaScript can be used to control CSS animations and make them even better, with little code. ## CSS transitions [#css-transition] The idea of CSS transitions is simple. We describe a property and how its changes should be animated. When the property changes, the browser paints the animation. -That is: all we need is to change the property. And the fluent transition is made by the browser. +That is, all we need is to change the property, and the fluid transition will be done by the browser. For instance, the CSS below animates changes of `background-color` for 3 seconds: @@ -47,7 +47,7 @@ There are 4 properties to describe CSS transitions: - `transition-timing-function` - `transition-delay` -We'll cover them in a moment, for now let's note that the common `transition` property allows to declare them together in the order: `property duration timing-function delay`, and also animate multiple properties at once. +We'll cover them in a moment, for now let's note that the common `transition` property allows declaring them together in the order: `property duration timing-function delay`, as well as animating multiple properties at once. For instance, this button animates both `color` and `font-size`: @@ -70,25 +70,25 @@ growing.onclick = function() { </script> ``` -Now let's cover animation properties one by one. +Now, let's cover animation properties one by one. ## transition-property -In `transition-property` we write a list of property to animate, for instance: `left`, `margin-left`, `height`, `color`. +In `transition-property`, we write a list of properties to animate, for instance: `left`, `margin-left`, `height`, `color`. Or we could write `all`, which means "animate all properties". -Not all properties can be animated, but [many of them](http://www.w3.org/TR/css3-transitions/#animatable-properties-). The value `all` means "animate all properties". +Do note that, there are properties which can not be animated. However, [most of the generally used properties are animatable](https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_animated_properties). ## transition-duration -In `transition-duration` we can specify how long the animation should take. The time should be in [CSS time format](http://www.w3.org/TR/css3-values/#time): in seconds `s` or milliseconds `ms`. +In `transition-duration` we can specify how long the animation should take. The time should be in [CSS time format](https://www.w3.org/TR/css3-values/#time): in seconds `s` or milliseconds `ms`. ## transition-delay -In `transition-delay` we can specify the delay *before* the animation. For instance, if `transition-delay: 1s`, then animation starts after 1 second after the change. +In `transition-delay` we can specify the delay *before* the animation. For instance, if `transition-delay` is `1s` and `transition-duration` is `2s`, then the animation starts 1 second after the property change and the total duration will be 2 seconds. -Negative values are also possible. Then the animation starts from the middle. For instance, if `transition-duration` is `2s`, and the delay is `-1s`, then the animation takes 1 second and starts from the half. +Negative values are also possible. Then the animation is shown immediately, but the starting point of the animation will be after given value (time). For example, if `transition-delay` is `-1s` and `transition-duration` is `2s`, then animation starts from the halfway point and total duration will be 1 second. -Here's the animation shifts numbers from `0` to `9` using CSS `translate` property: +Here the animation shifts numbers from `0` to `9` using CSS `translate` property: [codetabs src="digits"] @@ -108,13 +108,13 @@ In the example above JavaScript adds the class `.animate` to the element -- and stripe.classList.add('animate'); ``` -We can also start it "from the middle", from the exact number, e.g. corresponding to the current second, using the negative `transition-delay`. +We could also start it from somewhere in the middle of the transition, from an exact number, e.g. corresponding to the current second, using a negative `transition-delay`. Here if you click the digit -- it starts the animation from the current second: [codetabs src="digits-negative-delay"] -JavaScript does it by an extra line: +JavaScript does it with an extra line: ```js stripe.onclick = function() { @@ -129,25 +129,25 @@ stripe.onclick = function() { ## transition-timing-function -Timing function describes how the animation process is distributed along the time. Will it start slowly and then go fast or vise versa. +The timing function describes how the animation process is distributed along its timeline. Will it start slowly and then go fast, or vice versa. -That's the most complicated property from the first sight. But it becomes very simple if we devote a bit time to it. +It appears to be the most complicated property at first. But it becomes very simple if we devote a bit time to it. -That property accepts two kinds of values: a Bezier curve or steps. Let's start from the curve, as it's used more often. +That property accepts two kinds of values: a Bezier curve or steps. Let's start with the curve, as it's used more often. ### Bezier curve -The timing function can be set as a [Bezier curve](/bezier-curve) with 4 control points that satisfies the conditions: +The timing function can be set as a [Bezier curve](/bezier-curve) with 4 control points that satisfy the conditions: 1. First control point: `(0,0)`. 2. Last control point: `(1,1)`. -3. For intermediate points values of `x` must be in the interval `0..1`, `y` can be anything. +3. For intermediate points, the values of `x` must be in the interval `0..1`, `y` can be anything. The syntax for a Bezier curve in CSS: `cubic-bezier(x2, y2, x3, y3)`. Here we need to specify only 2nd and 3rd control points, because the 1st one is fixed to `(0,0)` and the 4th one is `(1,1)`. -The timing function describes how fast the animation process goes in time. +The timing function describes how fast the animation process goes. -- The `x` axis is the time: `0` -- the starting moment, `1` -- the last moment of `transition-duration`. +- The `x` axis is the time: `0` -- the start, `1` -- the end of `transition-duration`. - The `y` axis specifies the completion of the process: `0` -- the starting value of the property, `1` -- the final value. The simplest variant is when the animation goes uniformly, with the same linear speed. That can be specified by the curve `cubic-bezier(0, 0, 1, 1)`. @@ -168,7 +168,7 @@ The CSS `transition` is based on that curve: .train { left: 0; transition: left 5s cubic-bezier(0, 0, 1, 1); - /* JavaScript sets left to 450px */ + /* click on a train sets left to 450px, thus triggering the animation */ } ``` @@ -191,13 +191,13 @@ CSS: .train { left: 0; transition: left 5s cubic-bezier(0, .5, .5, 1); - /* JavaScript sets left to 450px */ + /* click on a train sets left to 450px, thus triggering the animation */ } ``` There are several built-in curves: `linear`, `ease`, `ease-in`, `ease-out` and `ease-in-out`. -The `linear` is a shorthand for `cubic-bezier(0, 0, 1, 1)` -- a straight line, we saw it already. +The `linear` is a shorthand for `cubic-bezier(0, 0, 1, 1)` -- a straight line, which we described above. Other names are shorthands for the following `cubic-bezier`: @@ -210,27 +210,27 @@ Other names are shorthands for the following `cubic-bezier`: So we could use `ease-out` for our slowing down train: - ```css .train { left: 0; transition: left 5s ease-out; - /* transition: left 5s cubic-bezier(0, .5, .5, 1); */ + /* same as transition: left 5s cubic-bezier(0, .5, .5, 1); */ } ``` But it looks a bit differently. -**A Bezier curve can make the animation "jump out" of its range.** +**A Bezier curve can make the animation exceed its range.** -The control points on the curve can have any `y` coordinates: even negative or huge. Then the Bezier curve would also jump very low or high, making the animation go beyond its normal range. +The control points on the curve can have any `y` coordinates: even negative or huge ones. Then the Bezier curve would also extend very low or high, making the animation go beyond its normal range. In the example below the animation code is: + ```css .train { left: 100px; transition: left 5s cubic-bezier(.5, -1, .5, 2); - /* JavaScript sets left to 400px */ + /* click on a train sets left to 450px */ } ``` @@ -244,21 +244,29 @@ But if you click the train, you'll see that: [codetabs src="train-over"] -Why it happens -- pretty obvious if we look at the graph of the given Bezier curve: +Why it happens is pretty obvious if we look at the graph of the given Bezier curve:  -We moved the `y` coordinate of the 2nd point below zero, and for the 3rd point we made put it over `1`, so the curve goes out of the "regular" quadrant. The `y` is out of the "standard" range `0..1`. +We moved the `y` coordinate of the 2nd point below zero, and for the 3rd point we made it over `1`, so the curve goes out of the "regular" quadrant. The `y` is out of the "standard" range `0..1`. -As we know, `y` measures "the completion of the animation process". The value `y = 0` corresponds to the starting property value and `y = 1` -- the ending value. So values `y<0` move the property lower than the starting `left` and `y>1` -- over the final `left`. +As we know, `y` measures "the completion of the animation process". The value `y = 0` corresponds to the starting property value and `y = 1` -- the ending value. So values `y<0` move the property beyond the starting `left` and `y>1` -- past the final `left`. That's a "soft" variant for sure. If we put `y` values like `-99` and `99` then the train would jump out of the range much more. -But how to make the Bezier curve for a specific task? There are many tools. For instance, we can do it on the site <http://cubic-bezier.com/>. +But how do we make a Bezier curve for a specific task? There are many tools. + +- For instance, we can do it on the site <https://cubic-bezier.com>. +- Browser developer tools also have special support for Bezier curves in CSS: + 1. Open the developer tools with `key:F12` (Mac: `key:Cmd+Opt+I`). + 2. Select the `Elements` tab, then pay attention to the `Styles` sub-panel at the right side. + 3. CSS properties with a word `cubic-bezier` will have an icon before this word. + 4. Click this icon to edit the curve. + ### Steps -Timing function `steps(number of steps[, start/end])` allows to split animation into steps. +The timing function `steps(number of steps[, start/end])` allows splitting an transition into multiple steps. Let's see that in an example with digits. @@ -266,7 +274,19 @@ Here's a list of digits, without any animations, just as a source: [codetabs src="step-list"] -We'll make the digits appear in a discrete way by making the part of the list outside of the red "window" invisible and shifting the list to the left with each step. +In the HTML, a stripe of digits is enclosed into a fixed-length `<div id="digits">`: + +```html +<div id="digit"> + <div id="stripe">0123456789</div> +</div> +``` + +The `#digit` div has a fixed width and a border, so it looks like a red window. + +We'll make a timer: the digits will appear one by one, in a discrete way. + +To achieve that, we'll hide the `#stripe` outside of `#digit` using `overflow: hidden`, and then shift the `#stripe` to the left step-by-step. There will be 9 steps, a step-move for each digit: @@ -277,58 +297,60 @@ There will be 9 steps, a step-move for each digit: } ``` -In action: - -[codetabs src="step"] - The first argument of `steps(9, start)` is the number of steps. The transform will be split into 9 parts (10% each). The time interval is automatically divided into 9 parts as well, so `transition: 9s` gives us 9 seconds for the whole animation – 1 second per digit. The second argument is one of two words: `start` or `end`. -The `start` means that in the beginning of animation we need to do make the first step immediately. +The `start` means that in the beginning of animation we need to make the first step immediately. + +In action: + +[codetabs src="step"] -We can observe that during the animation: when we click on the digit it changes to `1` (the first step) immediately, and then changes in the beginning of the next second. +A click on the digit changes it to `1` (the first step) immediately, and then changes in the beginning of the next second. The process is progressing like this: - `0s` -- `-10%` (first change in the beginning of the 1st second, immediately) - `1s` -- `-20%` - ... -- `8s` -- `-80%` +- `8s` -- `-90%` - (the last second shows the final value). +Here, the first change was immediate because of `start` in the `steps`. + The alternative value `end` would mean that the change should be applied not in the beginning, but at the end of each second. -So the process would go like this: +So the process for `steps(9, end)` would go like this: -- `0s` -- `0` +- `0s` -- `0` (during the first second nothing changes) - `1s` -- `-10%` (first change at the end of the 1st second) - `2s` -- `-20%` - ... - `9s` -- `-90%` -Here's `step(9, end)` in action (note the pause between the first digit change): +Here's `steps(9, end)` in action (note the pause before the first digit change): [codetabs src="step-end"] -There are also shorthand values: +There are also some pre-defined shorthands for `steps(...)`: - `step-start` -- is the same as `steps(1, start)`. That is, the animation starts immediately and takes 1 step. So it starts and finishes immediately, as if there were no animation. - `step-end` -- the same as `steps(1, end)`: make the animation in a single step at the end of `transition-duration`. -These values are rarely used, because that's not really animation, but rather a single-step change. +These values are rarely used, as they represent not a real animation, but rather a single-step change. We mention them here for completeness. -## Event transitionend +## Event: "transitionend" -When the CSS animation finishes the `transitionend` event triggers. +When the CSS animation finishes, the `transitionend` event triggers. It is widely used to do an action after the animation is done. Also we can join animations. -For instance, the ship in the example below starts to swim there and back on click, each time farther and farther to the right: +For instance, the ship in the example below starts to sail there and back when clicked, each time farther and farther to the right: [iframe src="boat" height=300 edit link] -The animation is initiated by the function `go` that re-runs each time when the transition finishes and flips the direction: +The animation is initiated by the function `go` that re-runs each time the transition finishes, and flips the direction: ```js boat.onclick = function() { @@ -337,11 +359,11 @@ boat.onclick = function() { function go() { if (times % 2) { - // swim to the right + // sail to the right boat.classList.remove('back'); boat.style.marginLeft = 100 * times + 200 + 'px'; } else { - // swim to the left + // sail to the left boat.classList.add('back'); boat.style.marginLeft = 100 * times - 200 + 'px'; } @@ -357,7 +379,7 @@ boat.onclick = function() { }; ``` -The event object for `transitionend` has few specific properties: +The event object for `transitionend` has a few specific properties: `event.propertyName` : The property that has finished animating. Can be good if we animate multiple properties simultaneously. @@ -369,7 +391,7 @@ The event object for `transitionend` has few specific properties: We can join multiple simple animations together using the `@keyframes` CSS rule. -It specifies the "name" of the animation and rules: what, when and where to animate. Then using the `animation` property we attach the animation to the element and specify additional parameters for it. +It specifies the "name" of the animation and rules - what, when and where to animate. Then using the `animation` property, we can attach the animation to the element and specify additional parameters for it. Here's an example with explanations: @@ -405,11 +427,92 @@ Here's an example with explanations: There are many articles about `@keyframes` and a [detailed specification](https://drafts.csswg.org/css-animations/). -Probably you won't need `@keyframes` often, unless everything is in the constant move on your sites. +You probably won't need `@keyframes` often, unless everything is in constant motion on your sites. + +## Performance + +Most CSS properties can be animated, because most of them are numeric values. For instance, `width`, `color`, `font-size` are all numbers. When you animate them, the browser gradually changes these numbers frame by frame, creating a smooth effect. + +However, not all animations will look as smooth as you'd like, because different CSS properties cost differently to change. + +In more technical details, when there's a style change, the browser goes through 3 steps to render the new look: + +1. **Layout**: re-compute the geometry and position of each element, then +2. **Paint**: re-compute how everything should look like at their places, including background, colors, +3. **Composite**: render the final results into pixels on screen, apply CSS transforms if they exist. + +During a CSS animation, this process repeats every frame. However, CSS properties that never affect geometry or position, such as `color`, may skip the Layout step. If a `color` changes, the browser doesn't calculate any new geometry, it goes to Paint -> Composite. And there are few properties that directly go to Composite. You can find a longer list of CSS properties and which stages they trigger at <https://csstriggers.com>. + +The calculations may take time, especially on pages with many elements and a complex layout. And the delays are actually visible on most devices, leading to "jittery", less fluid animations. + +Animations of properties that skip the Layout step are faster. It's even better if Paint is skipped too. + +The `transform` property is a great choice, because: +- CSS transforms affect the target element box as a whole (rotate, flip, stretch, shift it). +- CSS transforms never affect neighbour elements. + +...So browsers apply `transform` "on top" of existing Layout and Paint calculations, in the Composite stage. + +In other words, the browser calculates the Layout (sizes, positions), paints it with colors, backgrounds, etc at the Paint stage, and then applies `transform` to element boxes that need it. + +Changes (animations) of the `transform` property never trigger Layout and Paint steps. More than that, the browser leverages the graphics accelerator (a special chip on the CPU or graphics card) for CSS transforms, thus making them very efficient. + +Luckily, the `transform` property is very powerful. By using `transform` on an element, you could rotate and flip it, stretch and shrink it, move it around, and [much more](https://developer.mozilla.org/docs/Web/CSS/transform#syntax). So instead of `left/margin-left` properties we can use `transform: translateX(…)`, use `transform: scale` for increasing element size, etc. + +The `opacity` property also never triggers Layout (also skips Paint in Mozilla Gecko). We can use it for show/hide or fade-in/fade-out effects. + +Paring `transform` with `opacity` can usually solve most of our needs, providing fluid, good-looking animations. + +For example, here clicking on the `#boat` element adds the class with `transform: translateX(300px)` and `opacity: 0`, thus making it move `300px` to the right and disappear: + +```html run height=260 autorun no-beautify +<img src="https://js.cx/clipart/boat.png" id="boat"> + +<style> +#boat { + cursor: pointer; + transition: transform 2s ease-in-out, opacity 2s ease-in-out; +} + +.move { + transform: translateX(300px); + opacity: 0; +} +</style> +<script> + boat.onclick = () => boat.classList.add('move'); +</script> +``` + +Here's a more complex example, with `@keyframes`: + +```html run height=80 autorun no-beautify +<h2 onclick="this.classList.toggle('animated')">click me to start / stop</h2> +<style> + .animated { + animation: hello-goodbye 1.8s infinite; + width: fit-content; + } + @keyframes hello-goodbye { + 0% { + transform: translateY(-60px) rotateX(0.7turn); + opacity: 0; + } + 50% { + transform: none; + opacity: 1; + } + 100% { + transform: translateX(230px) rotateZ(90deg) scale(0.5); + opacity: 0; + } + } +</style> +``` ## Summary -CSS animations allow to smoothly (or not) animate changes of one or multiple CSS properties. +CSS animations allow smoothly (or step-by-step) animated changes of one or multiple CSS properties. They are good for most animation tasks. We're also able to use JavaScript for animations, the next chapter is devoted to that. @@ -419,9 +522,11 @@ Limitations of CSS animations compared to JavaScript animations: + Simple things done simply. + Fast and lightweight for CPU. - JavaScript animations are flexible. They can implement any animation logic, like an "explosion" of an element. -- Not just property changes. We can create new elements in JavaScript for purposes of animation. +- Not just property changes. We can create new elements in JavaScript as part of the animation. ``` -The majority of animations can be implemented using CSS as described in this chapter. And `transitionend` event allows to run JavaScript after the animation, so it integrates fine with the code. +In early examples in this chapter, we animate `font-size`, `left`, `width`, `height`, etc. In real life projects, we should use `transform: scale()` and `transform: translate()` for better performance. + +The majority of animations can be implemented using CSS as described in this chapter. And the `transitionend` event allows JavaScript to be run after the animation, so it integrates fine with the code. But in the next chapter we'll do some JavaScript animations to cover more complex cases. diff --git a/7-animation/3-js-animation/1-animate-ball/solution.md b/7-animation/3-js-animation/1-animate-ball/solution.md index 3a9b8564f..0dc67b8bd 100644 --- a/7-animation/3-js-animation/1-animate-ball/solution.md +++ b/7-animation/3-js-animation/1-animate-ball/solution.md @@ -1,10 +1,8 @@ To bounce we can use CSS property `top` and `position:absolute` for the ball inside the field with `position:relative`. -The bottom coordinate of the field is `field.clientHeight`. But the `top` property gives coordinates for the top of the ball, the edge position is `field.clientHeight - ball.clientHeight`. +The bottom coordinate of the field is `field.clientHeight`. The CSS `top` property refers to the upper edge of the ball. So it should go from `0` till `field.clientHeight - ball.clientHeight`, that's the final lowest position of the upper edge of the ball. -So we animate the `top` from `0` to `field.clientHeight - ball.clientHeight`. - -Now to get the "bouncing" effect we can use the timing function `bounce` in `easeOut` mode. +To get the "bouncing" effect we can use the timing function `bounce` in `easeOut` mode. Here's the final code for the animation: diff --git a/7-animation/3-js-animation/1-animate-ball/solution.view/index.html b/7-animation/3-js-animation/1-animate-ball/solution.view/index.html index 7e031e8d1..146033cf7 100644 --- a/7-animation/3-js-animation/1-animate-ball/solution.view/index.html +++ b/7-animation/3-js-animation/1-animate-ball/solution.view/index.html @@ -21,7 +21,7 @@ } function bounce(timeFraction) { - for (let a = 0, b = 1, result; 1; a += b, b /= 2) { + for (let a = 0, b = 1; 1; a += b, b /= 2) { if (timeFraction >= (7 - 4 * a) / 11) { return -Math.pow((11 - 6 * a - 11 * timeFraction) / 4, 2) + Math.pow(b, 2) } diff --git a/7-animation/3-js-animation/2-animate-ball-hops/solution.view/index.html b/7-animation/3-js-animation/2-animate-ball-hops/solution.view/index.html index b246f422f..f587ff607 100644 --- a/7-animation/3-js-animation/2-animate-ball-hops/solution.view/index.html +++ b/7-animation/3-js-animation/2-animate-ball-hops/solution.view/index.html @@ -21,7 +21,7 @@ } function bounce(timeFraction) { - for (let a = 0, b = 1, result; 1; a += b, b /= 2) { + for (let a = 0, b = 1; 1; a += b, b /= 2) { if (timeFraction >= (7 - 4 * a) / 11) { return -Math.pow((11 - 6 * a - 11 * timeFraction) / 4, 2) + Math.pow(b, 2) } diff --git a/7-animation/3-js-animation/article.md b/7-animation/3-js-animation/article.md index b367ec09f..9a65912ff 100644 --- a/7-animation/3-js-animation/article.md +++ b/7-animation/3-js-animation/article.md @@ -55,7 +55,7 @@ Let's imagine we have several animations running simultaneously. If we run them separately, then even though each one has `setInterval(..., 20)`, then the browser would have to repaint much more often than every `20ms`. -That's because they have different starting time, so "every 20ms" differs between different animations. The intervals are not alignned. So we'll have several independent runs within `20ms`. +That's because they have different starting time, so "every 20ms" differs between different animations. The intervals are not aligned. So we'll have several independent runs within `20ms`. In other words, this: @@ -75,11 +75,11 @@ setInterval(animate2, 20); // in different places of the script setInterval(animate3, 20); ``` -These several independent redraws should be grouped together, to make the redraw easier for the browser (and hence smoother for people). +These several independent redraws should be grouped together, to make the redraw easier for the browser and hence load less CPU load and look smoother. -There's one more thing to keep in mind. Sometimes when CPU is overloaded, or there are other reasons to redraw less often (like when the browser tab is hidden), so we really shouldn't run it every `20ms`. +There's one more thing to keep in mind. Sometimes CPU is overloaded, or there are other reasons to redraw less often (like when the browser tab is hidden), so we really shouldn't run it every `20ms`. -But how do we know about that in JavaScript? There's a specification [Animation timing](http://www.w3.org/TR/animation-timing/) that provides the function `requestAnimationFrame`. It addresses all these issues and even more. +But how do we know about that in JavaScript? There's a specification [Animation timing](https://www.w3.org/TR/animation-timing/) that provides the function `requestAnimationFrame`. It addresses all these issues and even more. The syntax: ```js @@ -96,7 +96,7 @@ The returned value `requestId` can be used to cancel the call: cancelAnimationFrame(requestId); ``` -The `callback` gets one argument -- the time passed from the beginning of the page load in microseconds. This time can also be obtained by calling [performance.now()](mdn:api/Performance/now). +The `callback` gets one argument -- the time passed from the beginning of the page load in milliseconds. This time can also be obtained by calling [performance.now()](mdn:api/Performance/now). Usually `callback` runs very soon, unless the CPU is overloaded or the laptop battery is almost discharged, or there's another reason. @@ -159,7 +159,11 @@ Function `animate` accepts 3 parameters that essentially describes the animation } ``` +<<<<<<< HEAD It's graph: +======= + Its graph: +>>>>>>> 540d753e90789205fc6e75c502f68382c87dea9b  That's just like `transition-timing-function: linear`. There are more interesting variants shown below. @@ -227,7 +231,7 @@ See in action (click to activate): [iframe height=40 src="quad" link] -...Or the cubic curve or event greater `n`. Increasing the power makes it speed up faster. +...Or the cubic curve or even greater `n`. Increasing the power makes it speed up faster. Here's the graph for `progress` in the power `5`: @@ -283,7 +287,7 @@ The `bounce` function does the same, but in the reverse order: "bouncing" starts ```js function bounce(timeFraction) { - for (let a = 0, b = 1, result; 1; a += b, b /= 2) { + for (let a = 0, b = 1; 1; a += b, b /= 2) { if (timeFraction >= (7 - 4 * a) / 11) { return -Math.pow((11 - 6 * a - 11 * timeFraction) / 4, 2) + Math.pow(b, 2) } @@ -397,7 +401,7 @@ The effect is clearly seen if we compare the graphs of `easeIn`, `easeOut` and `  -- <span style="color:#EE6B47">Red</span> is the regular variantof `circ` (`easeIn`). +- <span style="color:#EE6B47">Red</span> is the regular variant of `circ` (`easeIn`). - <span style="color:#8DB173">Green</span> -- `easeOut`. - <span style="color:#62C0DC">Blue</span> -- `easeInOut`. @@ -405,7 +409,7 @@ As we can see, the graph of the first half of the animation is the scaled down ` ## More interesting "draw" -Instead of moving the element we can do something else. All we need is to write the write the proper `draw`. +Instead of moving the element we can do something else. All we need is to write the proper `draw`. Here's the animated "bouncing" text typing: @@ -452,4 +456,4 @@ Surely we could improve it, add more bells and whistles, but JavaScript animatio JavaScript animations can use any timing function. We covered a lot of examples and transformations to make them even more versatile. Unlike CSS, we are not limited to Bezier curves here. -The same is about `draw`: we can animate anything, not just CSS properties. +The same is true about `draw`: we can animate anything, not just CSS properties. diff --git a/7-animation/3-js-animation/bounce-easeinout.view/index.html b/7-animation/3-js-animation/bounce-easeinout.view/index.html index 837c50db1..aed3d9d08 100644 --- a/7-animation/3-js-animation/bounce-easeinout.view/index.html +++ b/7-animation/3-js-animation/bounce-easeinout.view/index.html @@ -26,7 +26,7 @@ function bounce(timeFraction) { - for (let a = 0, b = 1, result; 1; a += b, b /= 2) { + for (let a = 0, b = 1; 1; a += b, b /= 2) { if (timeFraction >= (7 - 4 * a) / 11) { return -Math.pow((11 - 6 * a - 11 * timeFraction) / 4, 2) + Math.pow(b, 2) } diff --git a/7-animation/3-js-animation/bounce-easeout.view/index.html b/7-animation/3-js-animation/bounce-easeout.view/index.html index e52eae8de..69dbb7ce0 100644 --- a/7-animation/3-js-animation/bounce-easeout.view/index.html +++ b/7-animation/3-js-animation/bounce-easeout.view/index.html @@ -22,7 +22,7 @@ } function bounce(timeFraction) { - for (let a = 0, b = 1, result; 1; a += b, b /= 2) { + for (let a = 0, b = 1; 1; a += b, b /= 2) { if (timeFraction >= (7 - 4 * a) / 11) { return -Math.pow((11 - 6 * a - 11 * timeFraction) / 4, 2) + Math.pow(b, 2) } diff --git a/7-animation/3-js-animation/bounce.view/index.html b/7-animation/3-js-animation/bounce.view/index.html index 1be2580d9..3575ed820 100644 --- a/7-animation/3-js-animation/bounce.view/index.html +++ b/7-animation/3-js-animation/bounce.view/index.html @@ -19,7 +19,7 @@ animate({ duration: 3000, timing: function bounce(timeFraction) { - for (let a = 0, b = 1, result; 1; a += b, b /= 2) { + for (let a = 0, b = 1; 1; a += b, b /= 2) { if (timeFraction >= (7 - 4 * a) / 11) { return -Math.pow((11 - 6 * a - 11 * timeFraction) / 4, 2) + Math.pow(b, 2) } diff --git a/7-animation/3-js-animation/text.view/index.html b/7-animation/3-js-animation/text.view/index.html index e404fe5c4..4947e4cd4 100644 --- a/7-animation/3-js-animation/text.view/index.html +++ b/7-animation/3-js-animation/text.view/index.html @@ -29,14 +29,14 @@ timing: bounce, draw: function(progress) { let result = (to - from) * progress + from; - textArea.value = text.substr(0, Math.ceil(result)) + textArea.value = text.slice(0, Math.ceil(result)) } }); } function bounce(timeFraction) { - for (let a = 0, b = 1, result; 1; a += b, b /= 2) { + for (let a = 0, b = 1; 1; a += b, b /= 2) { if (timeFraction >= (7 - 4 * a) / 11) { return -Math.pow((11 - 6 * a - 11 * timeFraction) / 4, 2) + Math.pow(b, 2) } diff --git a/8-web-components/1-webcomponents-intro/article.md b/8-web-components/1-webcomponents-intro/article.md index f9427462b..c3522dea9 100644 --- a/8-web-components/1-webcomponents-intro/article.md +++ b/8-web-components/1-webcomponents-intro/article.md @@ -26,9 +26,9 @@ The International Space Station: ...And this thing flies, keeps humans alive in space! -How such complex devices are created? +How are such complex devices created? -Which principles we could borrow to make our development same-level reliable and scalable? Or, at least, close to it. +Which principles could we borrow to make our development same-level reliable and scalable? Or, at least, close to it? ## Component architecture @@ -57,14 +57,14 @@ Components may have subcomponents, e.g. messages may be parts of a higher-level How do we decide, what is a component? That comes from intuition, experience and common sense. Usually it's a separate visual entity that we can describe in terms of what it does and how it interacts with the page. In the case above, the page has blocks, each of them plays its own role, it's logical to make these components. A component has: -- its own JavaScript class. +- Its own JavaScript class. - DOM structure, managed solely by its class, outside code doesn't access it ("encapsulation" principle). - CSS styles, applied to the component. - API: events, class methods etc, to interact with other components. Once again, the whole "component" thing is nothing special. -There exist many frameworks and development methodologies to build them, each one with its own bells and whistles. Usually, special CSS classes and conventions are used to provide "component feel" -- CSS scoping and DOM encapsulation. +There exist many frameworks and development methodologies to build them, each with its own bells and whistles. Usually, special CSS classes and conventions are used to provide "component feel" -- CSS scoping and DOM encapsulation. "Web components" provide built-in browser capabilities for that, so we don't have to emulate them any more. diff --git a/8-web-components/1-webcomponents-intro/web-components-twitter.svg b/8-web-components/1-webcomponents-intro/web-components-twitter.svg index 9d3b0b00b..344e6420d 100644 --- a/8-web-components/1-webcomponents-intro/web-components-twitter.svg +++ b/8-web-components/1-webcomponents-intro/web-components-twitter.svg @@ -1 +1,5 @@ -<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="716" height="399" viewBox="0 0 716 399"><defs><style>@import url(https://fonts.googleapis.com/css?family=Open+Sans:bold,italic,bolditalic%7CPT+Mono);@font-face{font-family:'PT Mono';font-weight:700;font-style:normal;src:local('PT MonoBold'),url(/font/PTMonoBold.woff2) format('woff2'),url(/font/PTMonoBold.woff) format('woff'),url(/font/PTMonoBold.ttf) format('truetype')}</style></defs><g id="dom" fill="none" fill-rule="evenodd" stroke="none" stroke-width="1"><g id="web-components-twitter.svg"><image id="Снимок-экрана-2019-03-28-в-20.29.32" width="717" height="407" x="0" y="0" xlink:href="data:image/png;base64,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6rp2Tdh1dXfo7qZ6l/rNe5h7yvaCvYq9f/6a/uutfVH7Wvb77K8/YHug+iDjYGkD0jC9oadR1NjelNrUdmj0oZZm/+aDh4cf3n7E8kjVUcOjy45RjxUf6z9edLz3hPRE98mskx0tk1vunRp36sbpsadbz0SdOX82/Oypc+xzx88HnD9ywe/CoYs+FxsveV1quOx5+eBvnr8dbPVqbbjifaXpqu/V5rZRbceuBV07eT30+tkb3BuXbsbcbLuVdOvO7Qm32+8I7jy7m3v35e8Fv/fdm3ufcL/0ge6D8oemD2v+5fivPe1e7UcfhT66/Djh8b0OfsfzP+R/fOosfkJ/Uv7U4mntM/dnR7rCu67+Of7PzufS533dJX/p/VX9wuHFgb+D/77cM66n86XsZf+rJa+NX29/M/JNS29c78O3eW/73pW+N36/44PPh3MfUz4+7Zv2ifSp4rPj5+YvUV/u9+f190t5Mp5qK4DBgWZmAvBqOwD0VAAYV+H+Ybz6nKcSRH02VSHwn7D6LKgSLwDq4U25XeecAGAvHHbBkBvelVv1xGCAengMDo3IMz3c1Vw0eOIhvO/vf20GAAnuZz7L+vv71vf3f94Kk70LwImp6vOlUojwbLApWIluGk1cDL6TfwOWyYCwhO6N0AAAADhlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAAqACAAQAAAABAAAFmqADAAQAAAABAAADLgAAAADjQlLXAABAAElEQVR4AeydB2Bkd3ntv+lVGvW6q+327uK1vca9YQPGBmMb7AA2AfySQAghLyGkkeSlkbwUEkIKJMAjARuIcQNjm2JjGxt3cN319qZdrVarrtH0qne+v3TlWVltV6PRSDofzE6793/v/d258sy5557PNoISFgmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmcIgH7Kc7H2UiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEjAEKDQzA8CCZAACZAACZAACZAACZAACZAACZAACZAACZAACZDAnAhQaJ4TPs5MAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAoZmfARIgARIgARIgARIgARIgARIgARIgARIgARIgARIggTkRoNA8J3ycmQRIgARIgARIgARIgARIgARIgARIgARIgARIgARIgEIz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BEiABEiABEiABEiABEiABEiABEhguRBY+mEuy2VPcjtJgARIgARIgARIgARIgARIgARIgARIgARIgARIYIEIUGheIPBcLAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAksFQIUmpfKnuR2kAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkMACEaDQvEDguVgSIAESIAESIAESIAESIAESIAESIAESIAESIAESWCoEKDQvlT3J7SABEiABEiABEiABEiABEiABEiABEiABEiABEiCBBSLgnGq5v/JE71Rv8fWTIPD1t9SfxNSclARIgARIgARIgARIgARIgARIgARIgARIgARIgAQWHwE6mhffPuMakwAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkEBZEZjS0VxWa7mIV4bO8EW885bQqtNZv4R2JjeFBEiABEiABEiABEiABEiABEiABEiABMqQAB3NZbhTuEokQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIksJgI2B772dMji2mFua4kQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQALlRcB57Fhnea0R14YESIAESIAESIAESIAESIAESIAESIAESIAESIAESGBREbB19Q3S0byodhlXlgRIgARIgARIgARIgARIgARIgARIgARIgARIgATKiwAzmstrf3BtSIAESIAESIAESIAESIAESIAESIAESIAESIAESGDREaDQvOh2GVeYBEiABEiABEiABEiABEiABEiABEiABEiABEiABMqLAIXm8tofXBsSIAESIAESIAESIAESIAESIAESIAESIAESIAESWHQEKDQvul3GFSYBEiABEiABEiABEiABEiABEiABEiABEiABEiCB8iJAobm89gfXhgRIgARIgARIgARIgARIgARIgARIgARIgARIgAQWHQEKzYtul3GFSYAESIAESIAESIAESIAESIAESIAESIAESIAESKC8CFBoLq/9wbUhARIgARIgARIgARIgARIgARIgARIgARIgARIggUVHgELzottlXGESIAESIAESIAESIAESIAESIAESIAESIAESIAESKC8CFJrLa39wbUiABEiABEiABEiABEiABEiABEiABEiABEiABEhg0RGg0LzodhlXmARIgARIgARIgARIgARIgARIgARIgARIgARIgATKiwCF5vLaH1wbEiABEiABEiABEiABEiABEiABEiABEiABEiABElh0BCg0L7pdxhUmARIgARIgARIgARIgARIgARIgARIgARIgARIggfIiQKG5vPYH14YESIAESIAESIAESIAESIAESIAESIAESIAESIAEFh0B51Rr/MevZaZ6i6+TAAmQAAmQAAmMEfi7M1xkQQIkQAIkQAIkQAIkQAIkQAIkQALLngAdzcv+I0AAJEACJEACJEACJEACJEACJEACJEACJEACJEACJDA3AlM6muc2LOcmARIgARIgARI4FQKuYMWpzMZ5SIAESIAESIAESIAESIAESIAESGBeCWSikWnHp6N5Wjx8kwRIgARIgARIgARIgARIgARIgARIgARIgARIgARIYCYCFJpnIsT3SYAESIAESIAESIAESIAESIAESIAESIAESIAESIAEpiVAoXlaPHyTBEiABEiABEiABEiABEiABEiABEiABEiABEiABEhgJgIUmmcixPdJgARIgARIgARIgARIgARIgARIgARIgARIgARIgASmJUCheVo8fJMESIAESIAESIAESIAESIAESIAESIAESIAESIAESGAmAhSaZyLE90mABEiABEiABEiABEiABEiABEiABEiABEiABEiABKYlQKF5Wjx8kwRIgARIgARIgARIgARIgARIgARIgARIgARIgARIYCYCFJpnIsT3SYAESIAESIAESIAESIAESIAESIAESIAESIAESIAEpiVAoXlaPHyTBEiABEiABEiABEiABEiABEiABEiABEiABEiABEhgJgIUmmcixPdJgARIgARIgARIgARIgARIgARIgARIgARIgARIgASmJUCheVo8fJMESIAESIAESIAESIAESIAESIAESIAESIAESIAESGAmAhSaZyLE90mABEiABEiABEiABEiABEiABEiABEiABEiABEiABKYlQKF5Wjx8kwRIgARIgARIgARIgARIgARIgARIgARIgARIgARIYCYCFJpnIsT3SYAESIAESIAESIAESIAESIAESIAESIAESIAESIAEpiVAoXlaPHyTBEiABEiABEiABEiABEiABEiABEiABEiABEiABEhgJgLOmSbg+yRAAiRAAiRAAiRAAqdGIJUbkSRubrtNfE7cHHbxOGyC/7NIgARIgARIgARIgARIgARI4KQI4KeF6G+MRC4vieyIpPMj4sWPC/2NUQ5Fobkc9gLXgQRIgARIgARIYEkR0C990WxeAk67tPid5svfktpAbgwJkAAJkAAJkAAJkAAJkEDJCaie7IeBxe90iHjEmFp6kznRWxC/PdTcspBFoXkh6XPZJEACJEACJEACS4oADAUylM5LBg9aITCH3EwpW1I7mBtDAiRAAiRAAiRAAiRAAmVEQN3MKwNOCeM3SGc8C6ezTarwGwQXVC5I8dfPgmDnQkmABEiABEiABJYaAZiYpS+VF9zJugoXRealtoO5PSRAAiRAAiRAAiRAAiRQpgTU4KK/QfS3iP4m0d8mC1F0NC8EdS6TBEiABEiABEjgBAIjI4iaGByUWHRYErGoxPWWiEsmkxEZOxtfUVkpw0NhqaioxC0kDqdLKqurJVRbJzbbAp2yH9sKdTIPqMiM7ViNL3iaycwiARIgARIgARIgARIgARIggVIR0Jzm1UGn7B/O4LdJTuo8jpI7myk0l2pvczkkQAIkQAIkQAJvIDDU0y39x4/JcH8fzr5DbI7FzM3phogcqhQnssdisThuUUkl4+KGuDzU3yORgT5xu1zSe8QuDrtDqhoaJFTfINUNTW9YRile0LiMLNTmtRSZS4GbyyABEiABEiABEiABEiABEpiEgBpeVgVdcjCSMZF+NZ7ShllQaJ5kp/AlEiABEiABEiCB+SMwkkd+2KEDcqz9kIxkM2IbyYvTYRcXhGO/xw03c0SOHm6X/sEBiLc5OJed0tfbJ9XVVbJ54ybJpjOY3iEtjU2Sg4M4AiE6nU7IYF+PdB7cJ/WtK6WhtU1s9tJ8qdLGf0l0ftYvcYEFbr4xf3uNI5MACZAACZAACZAACZAACSwGAvqbRH+b6BWX+lullA0CKTQvhk8I15EESIAESIAElgiB40cOQwzeL+lk0sRMCERmjwsdkyEYJxMJSaVSEobAfGD/Ptm1Z7ck8bwa8RgxOJ09brdEw2GJDkfE7XDKpo0bpba2VrwerwQrgpKHKJ1OJeXYof3Sc/SINK9aK3UtK+adXDSbN8to8vFr1bzD5gJIgARIgARIgARIgARIgARmJKC/TQZSadHfKj5cJVqq4i+iUpHmckiABEiABEhgGRNIRKNyYMd26TnWaQRmJ1zKDriSR3JZ6RsalOHwoPQP9Mvx493ShSiN7p4eCUeGJQ8BOpVMSFazmvE4Ho0YoVlFZ81xXtHaKk1NzeJwOU1eswuisx1O5kw6JYf37jQxGyvWnS5ef2Be6KfgZM5AZ65G8w1EorFIgARIgARIgARIgARIgARIYMEJ6G8T/Y0yiIg//c2i+c2lKArNpaDMZZAACZAACZDAMibQ03lU9m17BeJv2ojMKgTncjkZRPO//r5eaT8AB3J3lwzAyTwwMCCxeMwIzA6cebcjfzkFl3I2gwgNzJfGWXmN3shj/kPtiNfo75fOzmMSicflzK1bJYgMZxWxtSlfNpuVMLKfoxCy207bLDWNzUXfCxqZoVWDRhssEiABEiABEiABEiABEiABEigXAvobRYVm/c1Coblc9grXgwRIgARIgARI4JQJHD2wTw7t2oEM5VGR2ePxmLG6u7tl165dsh8RGR3IY45EwkYcVpez3nLZHATnBKa1idPtFKfNKXachc+ks3hFJIX7ZGoAYvUQBOohsSPfuXnFSkw+mvWsYrbNZjNjqqh9cOc2OKOTiNNYc8rbMtmM6mbW8pbIITC6NP5LAiRAAiRAAiRAAiRAAiRAAtMTsH6jQGsuWdHRXDLUXBAJkAAJkAAJLC8Ch/fukqP790Lw1e0eQbM/jcuwi4rML7/8krz66quIyjguCbiRoQuLy+0RO4TiNHLEMnAwZ/NwC8OZnIeo7PR5TOM/qM14LyPZEQjOOnA+K1Ckpa9/UI4e7RSnNhT0+8UStHXJZjrcdx7cCzd0TlrWrNeXi1JZrJ8WmjuzSIAESIAESIAESIAESIAESKBsCFi/UbSBeqmKQnOpSHM5JEACJEACJLCMCKiTuWPfHiPyqtCrwq8d9yosP/fcc/Liiy+ax6pC2yAea8ay3seSKYkiz3kEInMwGDRu5jiczTZbytAzuc42dT3D5Yx58rk8BGiRHkRobNu+TeKJuCThXF63bp2J0NCZdJ484jY0TqPr8EFo1U5palttxpvrP6qFs0iABEiABEiABEiABEiABEigXAmU8jcLheZy/RRwvUiABEiABEhgkRLo6+qUI3AzW/EVuhkmLzkSkZdeekmeffZZGR4eNkKwDafZNQZjBIKxupUdDhdEaR+mzyHHeQTiM/LE3F74odHgL5OWbCJphGNN4MC7Zhn6xamntxdO6ePIa+6UvXv3yrXXXitr1641QrcKzNZNRe9jh/aJx+uV6oamRUqYq00CJEACJEACJEACJEACJEAC5UeAQnP57ROuEQmQAAmQAAksWgKJWFQOIQ9ZXcRaKjbnEVehwvKRI0eko+MIBOSs+Hw+k9ucG9GYjLR4nD7JwXUci8bMPKFQCHnMKSM4Nzc1Sf/AoInRUKdzDrEZWTu+wqgbGrccRGqb5MWFJoDaTDAcDpv4jNraWuOKVoez2+0246rgrHV4zw7xBSvE6w+Y5/yHBEiABEiABEiABEiABEiABEhgbgSQiMgiARIgARIgARIggeIQOAIBF7kXEHVVZFZtOCfxeEyOHTsq27a9ggaAO9H4bxjicAavR40Ancc0uWwGMRhZCMKIxEBjvZyKz3hcEfCjiV/cZDF7EZVRgfxlH/Kabba8ZCFEZ9JJzJfGczif4VKuqKhAFrRLdu7cabKgdatUjPbivcIIDXVYd+zfXZyN5igkQAIkQAIkQAIkQAIkQAIkQAJCRzM/BCRAAiRAAiRAAkUh0HP0sAwP9L1hLM1HjqPh3+DgoLlXd7ET7mN1FzsRnaFNAl0uu7jQKDCHqIx0KiUj6Zw4nH6xY5roQBgRGnbjTvb5NVYjK8PRCHoAJtAwMGeynzMpGxzSGfE1Nxs3c8fRo7J9+3Zpa2szArO6mrUKIzTC/X3S29kh9a0r37DOfIEESIAESIAESIAESIAESGD5EYhl8tIZz0m6yMHGbvzuafU7JIDfPUu5KDQv5b3LbSMBEiABEiCBEhEYgZjcdWi/iacoXGQKorEKzBppoWKzuopVZFaxWCsYDEhzY53U1lTBnZyW4aEwBGeHVMKZHIvFJY3mgCs3nybZDERkuJudbheiNjIyjLxnFZujsRgaACYkHInjedQ0GKyqqjIu5t27d8sVV1whlZWVGCtmlqtuZ3U4WxEax9oPSF1zqxGyC9ebj0mABEiABEiABEiABEiABJYXgW0DaXnwSFwyRRaZLYouiM3vbvPLmTVu66Uld0+hecntUm4QCZAACZAACZSeQHdHu4m+UCFZhdzRGkE0Rgq5zB1y6NAh6evrMwKzisx6U6dzdahStmw+HRnNNglDkF7RUCNVyGe2qZM5EpWqiko5bcMGyWB6k+eMiI0UnMsZxGwk4FLuh4Dd1YUmgN19YnMMSwzNAnX5tTU1RnTWxoDr1q0zbmgrN1pFZmsdNQf6ONa9edXa0kPjEkmABEiABEiABEiABEiABMqCgDqZLZF5dYVTAs7iOo9j2by0R7JmGet0/CXqbKbQXBYfZ64ECZAACZAACSxuAn1dR+AKRh4yNsPSmbXtnr6Wy2dlKDwIYTgBV7FDshCJdZrqmmpZvbpNmuprJDLYIz73iLStaDRC82D/gNQG62TVipUQiX3GKZ3J5SAyp81tBPOr2Fzhc4hDMojQQCPBVE6iGqcx5pZOY1oVuRsaGozQbInLel9460V+NIXmxf3549qTAAmQAAmQAAmQAAmQwFwIaFyGOplVZL51Q8Vchppy3tv2RYzYrMs6LVRcIXvKhZb4DQrNJQbOxZEACZAACZDAUiMw0NMlqUT8dfFW5WZVmVHqIna7PaIRGmk4kDW6YiSXx7QjcCsHpRkisBvN/6o1QqM2JE2NjRL0+aTa50WEhlNq4G7WUhdy0O2VnBdjZdMmmzkN4dmFTGcH3s+POKVvKC69ff2SRPNBlbxXrGiVasRo1NXVicfjwSoZGdy8NyaJm8fZVFoGe7qluqERz1kkQAIkQAIkQAIkQAIkQALLjYCVyVxsJ3MhR2tsa1mF7y2VxxSal8qe5HaQAAmQAAmQwAIR6D9+VHIQj9WmPOoUVhlX7c0q7NrF6/FJZbDSCMx5yYrPg0wyCMe1iM2o8LrFj+aAgWCtBCAiBzwQmHUeX1A8aBLosTtMs788RGUVr7U54Aje18aBXsznRd6zy+GWZDovhzu6pAfj5Udy4vZ6sYg88pkrpBHidQJicg6uZ5t9NKPZrCfW0pKehxDrUWqh+XA0K33JnHggtJ9RPXlO274w8qhxGZ8DLM+unXyajlhWehI5qcTldxtCLtmObDn98qpj6tilrt1DGdFLA3XJ59R5irJ43R7dLjs4bJ2CQ1EWtEQGOYLPVi8+W/Veh7QFF+br/i96U6KfhU58PuuwHhurXHJpk3eJEOZmkAAJkAAJkAAJkAAJTEZgYb55TrYmfI0ESIAESIAESGDREVCncbivd1xkVokZLxlDMx4ZN3NtTa2E4Ex22O3ihEDsh7tYLxQLwcXsh7jshcvZ63Ygp9ktdtWrMZ8LArMTU41kcsa9rEK2uqEdiN5w4v1MNid53HRJPojT9bU1iNlokaHBsAwNR4zQHBsOS9exTonEouLxBZDhAZEaWR7G2YzsjbyuKMbVrOjjncdl9abNRigv1U547FhCftaVNIv7ymV1op2oJ9Y/bguPNyP5pwtqpBaC3cT60o5h6YbQ3IgYkb8/v0a+sD2MbRT5vTNDUwrYE8c42ecq+van8rIZ4mEDlltYX941LGEI/1pff0t94Vun/PjgcFa+iO3UKtaYp7wyi2DGuw/G5LXBtGxBo5lPbxm9KqBUqz2Mff85fG5VYLZqD06YPN2dlHsPxeT/s3ceAHZUZft/d2/ZXpNNT0gPhBA6UoW/iIo0P4pUOyqiH4gdVD4VVLBjBywUpRcFpElVegmBBEJ6SNvUzfbd2/b+n+fcPTd3794tIclmkzyvzt65M2fOnPnNJXPmmXeec/kBVVZVsGu+KuqPV58iIAIiIAIiIAIisLsSUC9vdz3zOm4REAEREAER2AYEmuo3wj85DwIyM4/znZdyPrOQISrn4TstK8qRuRxE5nESWamUUmOw0UgiQxklnODc0QHRmNnGKB9AuWAAWcfYHsWxPIlBBiEQUzl1GdPYCusYXIekZdSSZyXFxTZ65EgbVjPEwiHYdSAbOgEP5/nzF9jy5ctT2dD5QWyT2i6O/cdicVh6RK2ttd0NPFi3DoL5AMaBGdm+b22Kddszs1IzR7x+CRmi2QE0LpuZywdy9Oq/L2q2Gxc02b9XtWU3Sd93cwI/yxCZmYV/AkZW50MQRj1E6J++Ub+bE9Lhi4AIiIAIiIAI7IwE3sRD/D8goeK2Jc1Wh4QLRW4CEppzc9FSERABERABERCBfhBoadgsGtHWgAIzfZkpLPuJom8Y37EaonHcmpubUHMS69ENcUm83A75yyiTH4TIjO0pOnMD6stJ1BkMwRID8zEM9JeAwBxgFnRRMaYiC8FCg1MpPJ8rIWrnQZVOYj/c/6ZNddbY0GAcGJCWGkmI2kmozRS2acfhPqlWI+rrNrnPgfozHdYWPof5dWQIZ0e2sDxrQ/cy8+ujjhG3Pbhm29hUZLdjS78fO7oImdfqYm4pt21ZnuLuuZNL7eQ9irdltX3WxUx3WrkwLpxebhfPqLDTJ5S4TPvDhqdsM2ox+A2tXhQiIAIiIAIiIAIisLMQYPLH/ctbXR9mPqzBnq5VskVP5053AT2R0XIREAEREAEREIE+CbRRNIYaTMGUvsdeaHZiMwbzC9ICA8JxWSk8l8MYCJCZyxCCaXVRXVXp1jHPORKDF3FTszU0NsJPOWJ5EInDhUUQlMOwu0C9EJbzUR/SmZ2wGoNI3AbxuBVluS2zpenZXF1VBYE54MRlWmtwvgh+zSjAVGbXTtp9MEWa7aUVB7Oui5ERHUddAxlBQPO2E29DMM6O2RtTy0YWp7JBlzVttiLwZX0ZWjFPhj9zrgAa24Ssi5Y4Zfu+g37IG+Hv28506XcRJ0HkLKaHdg5/aFc32sI2bW3wcOhxzTr7E8ym5dTP4q5K1t1fbr4NrJ/72ZKgD/eWtIt185z2dOz0Q34/BP/J5bl/E75tEZxj1tOfIOW+jss/MKE1RvaDj49kiN4LG7tn8PenDSojAiIgAiIgAiIgAjuCAIYfgZ3f5j7nu+0n74i2D/Q+5dE80MS1PxEQAREQARHYhQjEoxFkMDNbOTUQIJTm1DyO0YvPBWHYZ5SVOXG3vT2CAf/CNnLkCNhdFFkThOWGOgjLybgb8I5+y0Mqq6yjZphVQywLQmAOou4gMp0TEIcTyag1t7VbPbKUN8GDuQ37p1Bd4LKbS62qstJNK1attkIIzTUjRuB7FURuCta03YA3MzqJyGtGAzGsIMVmZmDT7sNJ2AN7cmbAQ3ct7CfWIsuTXVcyY7Afu7ozM/TT08rsh6/VWxzHT7F5fNnm7ht9eBljMeCb39YtwJ+mWNJoY/AWyvhuMcXfMyeV2jEjuw7KRjH1FthhvLQu4vbj66Bv9HtRltmxDPo/L4Dfru9cP462P7Om3caUBO3b+1e6Mr97q9FltR7RmcHKY7kdrxg+tbq9izBaBKX9g2OK7ZQMAdJV0McfMrj27UZbA2Y+KsP59r97l9vELGH1FdiN3AVfYHpYZwbF+wv2Ku8yUN4f0O43kJFLNgEc91Pw0PYiMzlMKg+6LN1SDLro4yl4bN++uNlGob4T9yixmxc2WT2EW/Kmzk7LiM/uWd7lnPltKdrSX5uDQjJLhudvOOr5fyOL7ANjinwxo4XKj2fXWwWO8Vv7Vdpv5jZgGbzL+cAEkevYaWvyAs7lIcMK7FNT8d8ewp87nksK24+saHOfXMe2HoGB+j4xpQz/TXDJ5vgPzu+DnRk83GMIBaZXhezYUUX2ezDjsX8XvsuM9Z2cx+L3kB1laL+Pd/kMw2+uTxEQAREQAREQAREYUALstx6DPtozGHOiDH3BozTAcY/8u/cCeyyqFSIgAiIgAiIgAiLQlQClI2YEM6h7UYhy8lfnDAcALC0pcYMB5mMAvlg0YWGIoqUlxdbe2mKb6uosHm2zwoKQ81lOIF0gFo1ZU3OzVVdUOtG5pLgEGQQdzkd5U1ODG9yvCds2t7Zaa1sb7DRiyEwOYx/VTnAePqzGAvMgGyPrmd7NpRC0A1DS8vLgE50XgIgL32fURy8Ol9WM7FsKzVn6mjum7f2HPs0Ua4lrMbI8fQYqPeC4jAInlzFDlJmnL0M49UIzBVwvth4wpLttxnXwkPPBY2N9FIgpQpais3xQp9UGRc7/e7UOWcybM1spJnI5M2YfQ/soPp4NgZp+dF5kZt2+TmYW+2C2x5HofHuB81cQRmmpwGA7gp11t0Hc/seyFmvDOT8Ldfc3rnxtE8d1dOGPi6LtlRDjf3X4ECvvFII5+Nyf3qZNSypYlsfBbWnf8INZm+y3RwxNZ177Y3t45eZXIX395DAPr0l+/cU6J6pSXGU0QbAljyUQv3+N4/TB7bif1Z37+SxE7cMg+vp4G3X9DF7F/jgo9HKe5/NWCNccTPGMiRjAEtEKTtxHBCLud16uS4vfvm25jn0DziW3ycxWXt+Zpf6Pd1rS59rXwX1zYEpm63x2z5QwzX3fhrY8ksGD7eTv4nVk28+Drzi5rMv43VzSy8CDj2XUM62H7HvuUyECIiACIiACIiACg5EA+7eHoj/HvmxvsRBJGRSkj0b57CSI3rbbVdZJaN5VzqSOQwREQAREQAR2AAH2s0LIOk5CRKbSDL0KHxykDxma+GQ3jIMFVlVUWFlZiUXam/EJb2UIyx2JDiuGrUXN6FE2ZEilFcFvmam8bRCQ47DFiCIjOYKpEJWGQwUWSza7ZbTTqKkptRGw14DLssXh29xQ32gb6xogKIecJUd5aQm8nYOwxKDIDDkcdeAr7DcgQCfxHZnMDCQ1p8RmtrTTq9mtGKA/FNzYEnKjeOeFZu/PTAsExj7IfKYQOHtjJC1AUpjmdgxmruaK/TEYGzNqCyEss35m0DIT9l4IvF5ofnZtJC08noNsV2YiF6M8RdTvQ4ylAM3MYArNX9+3wqJQJX+EDFuKmPTdPXV8cZcON315fdCawYvMh6Mss7MpVjKj9ufItma27uOr2rdIaKYoehp8f48fWwxxNukypSnOkgUzb71ofSsytBnMXv58Z/YyWT8NjjdAbGc9FPQzB2V0G+APs+j/d0a5zYCPNnk9AbH99iUtTrxl5vMVB6UyeH15/0lxmJYVFOpZ96/nNjph9i8QvA8cGnYPDvATt9++2eD2X40HCF+bWenaSOH9emRqv4bz9OCKVtsLWcPcvw8eHzOs+3PsfptcnzyfQwsD9tWZFTYCGdc8B7/F74JC9PO4KfJC8yL8vrzIvAceDvG88oEHy/309Qb3mav+XMsorPM3x5iK37wfHDBXWS0TAREQAREQAREQgcFKoD8iM9/kYz/zFvRP2S/1/fvBekzbul2b32Hb1jWrPhEQAREQAREQgd2CQMqbGT7KsKDwHs0ciC+EQQAj7W22GjYW7e3tzqKiAMtCyB7uiMUxQGDARo8c5YTo2jVrbOHChbZgwQJbi/kofZehCja3NNvqNbWwyqi31vZWLI9aG7KY169fbytWLLdVK1ba+nXrXR1jx4yy4iKIpBCsaZURhKVHCG2iAB6EuhmgTQZ6PiEMQsgBCgth4VFYWGBsE72c+0hO2C7nkvv0HszeBoM7mtuZAXxgZ9ax97tlJi6FSgYFSQbtMHIJd1x2EcRBvupHgXU/iM5ekM4cKZt2EQyKicdBJKXIzOBrgbRxYDRGUztltjBFSmZaM0pQlt9p35ArMjOdp0E0p8jMYD1fxGBx/OT++vL+TW2V+kvLhhPhA8262A7aTFAAZTCDmNEMIdvbXnwOQjuPrXPXdjSsMSgEM1a3bM7Edgs6/1wKG5CZEPdZjPv4EERtCryMlbA0ocifHfSm/jDKsTxrp0h8+QEpOxGK1fe90+o2eXhlq2sb2//9A6vS55/nieeLNiSMBzrLuy+df/pz7Jnlc837/VJkZowDm492Zk/zLPtzcfvilDDMdv0f2ukZ1+B8X3lwVfpcukp6+UPB+iev17sHAbT/+HIvWc+9VKNVIiACIiACIiACIjCoCbDP40XmEUh0oNjMt8OY4bw7hTKad6ezrWMVAREQAREQgW1MIA5BmDYUFD+hpbkMYYrNQSq6ENyiyExet3YNxOA18GkusQ1rojZ0aDXE3qBVlpdj0L5NVlu70hKdNheFyHAOBkpghxG3ZthnJODZXFFegUEBg+47rTIoYjc1Ndm69evS4jb2bMOGjbDy8kobNXwEBOyRtmDJMquurrTWliarrMY+w4XwaIa45jRGCLYcHNC1mzYaXLjZOmIbY+q1OmYrr25ts5Xw3WXQKsGLfQfDWoMxvTLsmo3mukxZbsOMWcaUHmwIsn2YWXZfiM3PIWuV9gc+KPjSToRCvA9mHL8Fa4RMGwm/bks+R0M0pRBOG4e/zm+y2Rsixsxmtp8DIV4Dq4stjUz/Yr8ts2RfhCcxs7AZ9FG+7qihbt6LyjzkFRCJ6b2cefyuUMYfCqkTM3yw/SpmUNPqgzcNc8FmUoYfNMmdmMNrmqIxJ4rT83i+IFaTK6MGx0+LC06ZQf9jlqcXdnb059izt8n+zt+Lf5jg1+3f+Tvjd9p28MEBvaMZ74Owv/mX4RY5MX0/2LW8ivPZWzCjndnP/LXxocIPD662IirdChEQAREQAREQARHYCQlwrJDSUCrRIrP5TEKgqMx+4iFIFGG/8REkF3DMDIrPZ04s7bHPnlnPrjAvoXlXOIs6BhEQAREQARHYQQQSFJkhEtM6g2IS/9A6w32DfhaLtFsSonEl/JZHjhhuyxYvhMBcge+wc0A2cV6yFBnFe7hsZ1pw0NOZQjI9k52AjfpjELMTyIB2fsoY0I8DBg6rqbEiiNJ5KM9g2Up4NJeWw5oBgvLQIVW2fmMdPJ4rrQQDBdJCIw/id6KDYi7FZrSQVhmd7U3ZZuwYAYwWFrQoYNbrGvjweoGRtgrMJmUws5YD/tHm4BWIexRqV0GMZByQIRK6BZ1/RnZmxmYuy3WE1P04cOD98O6leM0sZHaSt1XQLuNa+EWzTmZh+0xsipnvgeXHR8aXpH2S+7NPCrTZkeu4KDCzc/+f2jZbBm60puhPjAHnXEFOzPLmQwAKwZlRguU+yztzOefHlARc+fWdgnJta2pb+jHTmqSnYGt9VrYv099j9+VzfVLgz45sfkTlxfhcA/txex7Xqxuya+r6/SFYgNDHmfV/D1nRzIBXiIAIiIAIiIAIiMDOSIDWduzbsI9JS7kJnYkJSygyw2KNfV2+hUiRmcFBrxlebP4oxObdIXL3pHeHI9cxioAIiIAIiIAIbDWBYLAAAikyNamKQbyljOSsNDBDsZk+zBSBqyrKbNzYsfY6rC1KMUBfcWGR8/UNYVDAckwUlykyswZ6OjM7uh0iNTOdk8mEs75gRjSzjkuKC62qqsKGVlU54Zhid4JezkUlVoSBAyPYhmJ2BcTsstJS59HMmvMpLkOXTjKNme3E5EXxZF4HsqN3TLeImbEUMdk5ZcYvB51jUEzODPotU2imrQazKbwYfBC8f3NFfxNHadnxC/glp6ik7DAoaI4uDjqx0ftF59pHf5axw71n5RB7Ct7I9HqmQM62U7ClwE7P5KsPqbbyHuw3svfB89ZX8Fg42B85MbgNM5X5GiNvCh5e0eYEULcy609v3Cj4M+hTnRm9tclnivNBAsMnk3MbCte9RTtH58uI3vaTUazXWfpP9xUJ30gU7Hqkm7dktnJfQW9mBr3GvfVGX9tovQiIgAiIgAiIgAgMNgLsw1JkZvBhPMcHodjMoMjMwbA57gdt1DIjU2y+A5nN/e3vZtaxs83vmDuqnY2S2isCIiACIiACIpCTQChcYB3IWOYgexSYvYTFgQApUQXgkUybDFgg2+jRo23E8GHwbg4ggTjhyhaGKbIGnMhMIZiCMLfpQLZxRzQGMTBh+aiL9ZUUFFm0rR0DteVbObKUk7APpjVHHEIzBeNAIGwB7KgtEnFezVXMmoZXcxLrY/B2ZjJlqlUYEJCt6/yTGryww4LIhN4RQWa0mKCIPAe2CsyKYLxnWNf2HILv/4RvL/2VaX/BoB0BbSK2Jq6d1+R4UPS8DN7E3ruXdXI/Wys0sx7WTQ9jTgx61d25tMV90lbjPgzidx4GItxW8d817WmR+RRYWpy8R4nLCvf1P7m6vUeheXVWtrLfhp/M/GaMgmCdGfSEpjbrhejMdWuRpc4YUpDaht7ZFNn5IOGSfvgV+0zozDq393wB1HYK0hTH32mKuRHWs/e5tFPEz16e+d1nZOfyEM8sp3kREAEREAEREAERGKwEZiERhAM1M5itzIGRKTxTbGZQeOYbhhxDJFdkis0cTHtXDwnNu/oZ1vGJgAiIgAiIwHYkEIKNRTsG7KNYmwrKpkkn7tKOgpnKRbCtaG1qsOrKCps8caLLWI5G2qy0qNwKgiEMChhyg/ZRaE4NLJjvPJojUO0o3FGeS0DM5iB+zA5NIkuan0EI0pCsmUKNKR9CXx6slrke2c0FBTa0Zqiz56C7BoXtGOw36EXMQQZT5h7YFh1DLuNnEbKgd1TsC9GRQjN9fEmSWbXTsryXKW7SnoFWBI+tanNNpZ/v1gTrokjKOBmCbKbIzGX0It6aeBQZyz574xeHbvZjpk/wZftV2oXPbnCWFu/0Q7TcknY4P2RsQH9oWnNkBo/XH3Pmcj/PAQXXQRzOtpigH7G3k5iY4c/M7XjOHof3MwdTzAz6bfuBA2l9wmAG+3wI7fRqJv9sy41bFjW788uB83552GZmmfUOxPyQwnyjSP7M2oh9FBk7+EmmoxFCOY+hr/j6vhV4wyBpPBaFCIiACIiACIiACOxsBGbD9u0BJESwr0fBmP7LDPaLXobYzJiMvp1PpnALcvzJFJtzrN6lFqnXt0udTh2MCIiACIiACAwsgQLYYFBk9n7K7rPTLoO2GRSDC5D13I5B/Ngh22PcWKq++N7irCyCUIHDyEIuhD9zUUEYfsqFLhu5AN+5bQjrQxgIsAjCMT2ZmaEchuDM7ULcDt+LIXYXY30QKcu02ejoiGM+hOzp4W4bCtlMX6bY7NuZ8mfGMtdtZNcRQjNsN3ZUHNjZaWVLGBQlc2XHctA7hi/HLOetiUwbhewRsSkSP9+ZOZ2gGJ8R3l6CgmxvMQ2WCXRYYPYGB9LLDIqY3oJiUvm2zX1gRi6DIiezTnzQf/oHs+rT/JhNnSuueK2+y3Z8CMDMbwYzyGkHkh23QiDmzYgPekJ/79VN6X2dNj6V5cJsFzaP2cJXoC2ZojfPAR8isFVktyPjrM7XQdm+n7y+uZ20Pvn2Kz17S2e2+Uoc31Wz6+26TnaZ6zQvAiIgAiIgAiIgAoOZwBuwq7sPY5iwX8ZkgkMxtogPWmT4/uBSvP21qPONRL8+1yfF5gllO7Z/l6td23rZtu3Vb+vWqT4REAEREAEREIFBTaCorDydzUzB2cl77I1BTM7DxCfaYQjFzFRug9hcjqzhNatWWhRWFhzkr4PWFvBXTkI4zsdEAZmD9lGI89uHIDgXY+BAGGSk1nMd5pnVTJsNfotDRGbWcwS2GXHUS1G5ZtgIJ1YHUR+/J1E+D5nPbgBBzHcJZJaWlFd2WTSQX/aAsOytCrhferzlCg4cSE9lH9k+zn55fz8pZo9EpnQtsnhpkTEHGcYlEPLrIQxTCOV5oBbLU3rRcxudlzIHKBwKv2Nm/rID/qmn1xutEa6Cz3J28LhoC0JxkrYfD8IbmYMcMpPXvzrIfRw9smsmcHY9W/qd2Sb0fma7v/linWtvGw7Ei7r+uDgaOOOMiV0fMrDcN7AdB69jvrcfSJC/Gg5umCu4r2vmNrgMZWZSN3ZmirPsB8YU2RAwY5AfB4Ph65YcVPB/wZUWKGyfz5jm9l7odRvtgD/7wRN8X0yvQzyn1zLbyePncTKYpdyAzObeYrPI33f2c2/1aJ0IiIAIiIAIiIAIDCQB9rf/0Skyv29UkR0+vHtyB8Vm9o3Yh74N/Tr23Zjd3FsUox+4q4cymnf1M6zjEwEREAEREIHtSKC4ohJZwkmIu3E30Z6CAnI8zglWFZClCiESl5eXWXt7JDXoHwbdoxtzNAJ/ZYjMHPDPDfrnJCxmJaM+bBuNRpwgnUjEsW27NTY0WFNTo7W2tqYEZSxn2RjKtmF9FPtua4O9AeqMo85ytI2WGnn5AQwayIEJkb8MlcxPFKjd/7CMInfxDhSaeYrGlaaESM771/I4nxkUmn1Q3N3SvioF1uz4+sxKJxRzOQVVZv1SZJ6ILONrDh+a9oBugnDqhdAz0ZGuzLBD6G1guO/C95kDGXLX3J6ZzF5k5jF8Z/8qJ3ZntyvX9xzNd8X8gHt+m+lVYTsVlhk8XgqjFDwpHtOm4jMQij82JSUWU0Sn2JsZbKsX+ukx7EVmHu/lB1S5Y8ksz3kKxadNKHEPCyiie5GZgvGnsD8/WIzfjsLzV2dWpNmyvGc7EYMVfu/Aqi58uV1/j93vg5+5suJz/QYyt8mc//KMCifC8/gYZMljOmpEYXpE9U7rabdef0RABERABERABERgZyfAvuG9eBOP9wxHjyx0/Z6ejomezey3s09Jsbk/mc091bWrLM+r3bCJfcZucelcZR50g6IFIiACIiACIpBF4Mczen9qnVW8z6+h0tzZkn1uuAMLLJ3zhm1aU+uyhtkMaLvIHKaoiwH/oI7lG4TFuo22vrYWA/t12PLFiy3a0mqVpaU2tLrKykqKrKAwDIsM2GXADoOWG02NjbZh/QZkKSessqrSimFr0dLSYg2NDShbYJXYrqSkxG1DMTsShTAdS1hjc6ttamyCZUKHTd9nP0sGQjZ0xEjLDyEjmo1JNS5Ni5nRzFmtGFJjY6bNSC/v7wyzehn7QNjc2YPi76rWuJUio3lchnUHdFPnx8vM50xxeUuP14vMG7GfUijkI4qDLmN4S+vZkvLcJ88RPYX3gIDrBVPWQUGdg/JNxCuMFGR/CLsM3hzwZuEL08td1vXSRj4soa9ysJuXMuu4H55992BQQ9Z7zeFDnBBLv2mK8hOwv/4M1Ehhegn2A+wu+7toS5RgNmKAApo7RPcON7Ajd/nbNxuNvtX0Ev8W/LYVIiACIiACIiACIrAzE2AW893o1/ngg3VmM/cnHsJggcxsDqJTeRbelOOYHLmC9XM/pyNBYe8Bun+Y0/k2ZPZg1rna159lseaUnVxPZWWd0RMZLRcBERABERABEegXgYqaYbZx5SpkDVNYhr2FE3PpQQtrDAjLFI+tMGgFFRhQDFnHVcOGWe3S5chKZgYyBvkrpFTcAb9ePOSORSwB0bi9HYPi5SFjF77NoVAR6s5DpgB8mQuLLBkKWHM0ajRGCISDFoIHdB4sNNoiMYswm7S13YaPHmMFJeWWF2SGATt6IbQFsjJVQ6aGIkWBQjgXYBhBK6uu6dex7sqFqmBpUQXe2UERdq9t4BccQkVjYKMxpqtLRfbutul37pP2HbmC9h+cegpmP2+pTzJ/WuMhMG9JcD97bgO+W7LP/pT909tN9iw8ur0tCrPnyzozm/lQgiOwM7IHRuxP3SojAiIgAiIgAiIgAoOZAK0y+isy8ziY2cyclhfXwUZjSUuvYvNgPu5t0bYt6wlviz2qDhEQAREQAREQgV2KQPWIETarpdmiGOAvANEsgIzMjjwKxxFYWrRaa3ubxSAMR9parTgUtiiyIg0D9MUhHDcgSzkeTFiJFbnB/eIQmeMQjPMgLIcLiuDvHEZ9IYjJIcjK8HGOBqw9HrVm2Gd0tKGagpDLcGaZKAXqjqgVV5TYkGE1VlJRhn2gx4f2RGCvkaB1BlRm+kVTEMyD2MxPitcVNcN3qXOigxGBrSXAASopNNPq5IpZm+zEPUqsIpRnCzBg4T3LUqOv01f8lD1Sgxxu7f60vQiIgAiIgAiIgAjsSAJ8+M9gIgIH/9vS+BAG+2P0JjY38z4IwWSIXTUkNO+qZ1bHJQIiIAIiIAIDSKAR4u9tN9/oBuhjlnAM2cntGPCvpb3Fic30YI5F2q0SgwdWl5RaRXGxjR81xgpLKiH8YvA/eCQH8BmFVUYUXs4BZDOHMFBgHsRhitRBZCyHguy2hOG/DB9ovMYfwCB/RchmLoJQHOuIW317o7UhY7q0tMLKh8CftyAJ8bkDoncU9XLAQFp6BCAuBylZ438UnDusesyYASSlXYnAzkGAXtXvx03WY6vabAnsQH6NgQ4zgzdIF8JipGCQWn1ktlXzIiACIiACIiACItAXgdGwiWP/hvZqNy5scgNk97VNrvWsg/ZtHPh5z8rNbwu24GZkGfpUXM997aohoXlXPbM6LhEQAREQAREYQAInnXaGXfvrX1rduvUYHLADYnAMYnPCkLTsBgMMwO6iIy9orRgAMBlrcAMBlsKjGanLyDqGKBzAoIHwaI5FImzmAlQAAEAASURBVBbBwH5J+C23QkyG/OwGEOSgfxywL9oRcwMEJvOTVlTGwd5gfMGBAyEYxyFwx2GHESoutADqauNgggkMO4jBADsgMCeRfckcZupiLqsZn+FQoY0cN3YASWlXg5UAB+jbszlkU+E53N+gN3cUD0OqYTuyK8a5k0vtWIrNK9ucf3c7jnUYsnzo4c3lHBhQIQIiIAIiIAIiIAK7AoESWISdOK7YHsAYHBSEtzbQbbI3O/2RfV0UmbkP7mtXDQnNu+qZ1XGJgAiIgAiIwAASCMHi4hMXXGhXfOsbsKRArjBE4bx82llErLGpzoox4F8SQnA7PJyb0a44BONRyEIOYGC/BJfDXoOv4YeRxRwsC7is5khLOzyUIVQXFCBLuRQey8hQhoczxWQOCFgKa4wgLDWYOR3D9glkO+ejHQVFFZbIC2GAQAjPHWgHvKOTaE8CAwRS2KabBnRn18bRk/ZwnwOISrsapAQOhlUEpy0J+jFvqSfzltQ/GMqOKArYeVPwUEghAiIgAiIgAiIgArs4gZnVYZuE/t0qDCbNAZu3ZdCag5nMu7LITF4Smrflr0Z1iYAIiIAIiMBuTOCcj3/ann7kEXvmyaecQExzipLCUispLYcgjMH64Ncci7Yhq7nN8qA2N7S2WAu+s0wIg9AVFhVaYbjQWVrEOFBgYQt1YSuF1QYzkGOwzAhCvA7lwy6jqMDC8HlOIHs6Ck/n1laUj+VbuITicyUGBsw3uGhAfDaI09hfEL7PEJvzYbcRDiOvOT9sVUOrbdjIUbvxGdOhi4AIiIAIiIAIiIAIiIAIZBKgEDy1YtfNOM481u0xL6F5e1BVnSIgAiIgAiKwmxL4zg+vss+cdqo1NzY7qwraWXDwPkNmMbOVKyvLICQjkxnWF4FwENnIEWtuy7cCdOjowxyDOkx/5mAgaCEIz0m8cxaHLUYgP+j8lcP4DMEWI4DyUWREM2M6Bl/nJLKZLa8AmdOj4e08zNrguxFjBjPqbG2LW7gIzszYhvYbzJLOR0bBhImTd9OzpMMWAREQAREQAREQAREQAREQgW1PQBL9tmeqGkVABERABERgtyUwdvwEu/zqn1hVVaVVlJVZVWWFDR1SDS/koCXiMYwTCNsLZC+XYjDAUthpFENMjmJ5c1urNba1WF1To9W3NEJcTloxrDFKKspppGzJIIRoZDEXlZdYYVmx+96CwQWZFd2G7fOCBcicHmIVlcOR7VwJAZpWGRj0L7/QZS8XhEtQTTEGFCyE53OB7Tl9hhUVl+y250kHLgIiIAIiIAIiIAIiIAIiIALbmoAymrc1UdUnAiIgAiIgArs5gSPff5xdsGGD3frn65FRnOcyki1QZZsa6iD2BiyMZYlYOz7zrbKiAv7KrfBTjliiqcllMheGCyyvrRk+y/RnLsLgfgWWD+uMAAb1i8EMowWCdCu2aYfQ3B5tx7YJa4dvcx58m0PNDRYqDFmwABnQKB8IBq0sWAZP5zA8ommZYTZlymSrGTZ8Nz9LOnwREAEREAEREAEREAEREAER2LYEJDRvW56qTQREQAREQAREAAROOutsWFpE7L67/g5fZQzyB6E33oHsYgjFhRB/g0VBqy4vhz8zRGWsa2lpsiYIzdHmZpQPWlNbGzKiI8iIrrayUJl1xDuQiZyEiUbCWiEub2pqcOVjsN7ogBlHU7TJVm9cYq2vJa20rNymTtvT9pw23SrLqjHwHzKiITLDztkmTBpvY8eP2WbnCIeGQQoxoUa9JrbNsKoiERABERABERABERABERCBrSTAexQG71kGKiQ0DxRp7UcEREAEREAEdjMCp573SbNQ0v5y/S8svxUyLJTeodWVVlYEC4tknlWUFFsATIqKi5x/cgJ+zlF4NNNGozUC7+VEAl7MYQtCjI7FYmYRCrrIaG5psfWb6qwOExKdrQI2HYEis8bISlu5Zq0lVuVZS2y1RZMbkbk80kpKKq24uNz23+8Qmzxl/DY9C0E0IAoROwov6UJkaitEQAREQAREQAREQAREQAREYDAQ4D0KI8CbpgEKCc0DBFq7EQEREAEREIHdkcCpZ37K+SxfddUlVlNdbXtMGG0FGOyvvb7ZAhCWOQVhoREuLLNwQaGVFJfaxg0bbdOmetuAz0g0Zg0tzRCU85AhHYMQHXWWGS3wZk5gMMDy8jKrGFphgdKgxcvabGhjoTU3tyO7uNmWrpltKzbMhx/0EPvkuRfb1KlTt/kpwPiCGJTQrAF/CosomytEQAREQAREQAREQAREQAREYMcT4D0KIzyAr15KaN7x510tEAEREAEREIFdmsAHP3SazZh5gD3y6A3WsqnWovWtFoDvclE47DKaQzBOLiwssrKSUjcVFRZaKBSyjRvrIDhvso11dRBxCzE8IG0qEshpTmJ90CrLK23I0GqrqC63YFWelU3cA9nFI6y9PWYtEJvb2xI2dsRMO/F959uImrHbhTGzmFviSatHJ264hObtwliVioAIiIAIiIAIiIAIiIAIbDkB3qMwBvLNSwnNW36etIUIiIAIiIAIiMAWEhg9aoJ9+pPftzfeeMIef+BmK4UlRkWo1CItzD42g/2yMzouCoYtPLQG3sqV1jSy2eobGq0JVhlBCMvFJSXwW4ZVRTzqLDOKYb1B242ERZFVHLGy6qAVoN7yZCFE7HE2Y+wJNmnEEVvY0i0rXoD2pLKak1YX6bDqggFMF9iypqq0CIiACIiACIiACIiACIjAbkKA9yZRDCbDexXeswxUSGgeKNLajwiIgAiIgAiIgM2c+T7be+/32rxZj9vCF5+29qZWy0MHiJMbpAJ9oHxYa4RLwlZVUWFjx+wBX+YOWGhEraSsFKJywjbVb7Km5iaj2pyPKU5vZww8mGhtxXbFNnPch2y/PU7AuoHp5pQG820TsgXWtMUxcGEInbmB68jpJyUCIiACIiACIiACIiACIiACmQRiuLfivQmD9yoDGQNzBzaQR6R9iYAIiIAIiIAIDGoCgUDQZhz8QTctm/uK1S2db63rVzrROBqPW0tbO7yYY5YfDFoYAwcGId4m4xgEsKnZIrEIPJibIDy3WxDrQ4ECDPRXbJOm7Wvjp+5nE2oOHvBjLwrmWVsiz9ox2MaKloRNKAuapOYBPw3aoQiIgAiIgAiIgAiIgAjs9gT4ouiKlrhxHEBaZvBeZSBDQvNA0ta+REAEREAEREAEuhAYP+Mg45Ts6LCGNcutaV0tfJzXIdO50SKRVmtBlnJrWytE6HwMAhg1PpevGjrSKobU2JDhY6xm5DgbPmay5ecP7JP6LgeBL5UYYWMDXk9riXfY0qa4jS0JKLM5G5K+i4AIiIAIiIAIiIAIiIAIbDcCzGSmyMwxZJjIzHuUgQ4JzQNNXPsTAREQAREQARHoRiAPQnHlqPFu6rZyJ1hAtwz6M9dFkHkNsXlhY4eNKArKs3knOHdqogiIgAiIgAiIgAiIgAjs7AToyUy7DGYyU2SuLgggWWfgj0pC88Az1x5FQAREQAREQAR2QQJ8K20oOnQc3Zk2Gqta47a+Pc9lElQgmyCMV9cGPqdgFwStQxIBERABERABERABERCB3ZxAB44/inuOBtx78P6DA/8xaJfBTOYdITJz/xKaSUEhAiIgAiIgAiIgAtuAgM9sbsPras3IbGaHb117wk3boHpVIQIiIAIiIAIiIAIiIAIiIALdCISQ0cKB/wbakzm7IRKas4nouwiIgAiIgAiIgAhsJQF28IqCAYsgy4DZzUgywGtsSetMNNjK2rW5CIiACIiACIiACIiACIjA7kyACS6BvDyjDTOzmAswDYaQ0DwYzoLaIAIiIAIiIAIisEsSYIdvsHT6dknAOigREAEREAEREAEREAEREIFBQ0BWgYPmVKghIiACIiACIiACIiACIiACIiACIiACIiACIiACIrBzEpDQvHOeN7VaBERABERABERABERABERABERABERABERABERABAYNAQnNg+ZUqCEiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIisHMSkNC8c543tVoEREAEREAEREAEREAEREAEREAEREAEREAEREAEBg0BCc2D5lSoISIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiKwcxKQ0Lxznje1WgREQAREQAREQAREQAREQAREQAREQAREQAREQAQGDQEJzYPmVKghIiACIiACIiACIiACIiACIiACIiACIiACIiACIrBzEpDQvHOeN7VaBERABERABERABERABERABERABERABERABERABAYNAQnNg+ZUqCEiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIisHMSkNC8c543tVoEREAEREAEREAEREAEREAEREAEREAEREAEREAEBg0BCc2D5lSoISIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiKwcxKQ0Lxznje1WgREQAREQAREQAREQAREQAREQAREQAREQAREQAQGDQEJzYPmVKghIiACIiACIiACIiACIiACIiACIiACIiACIiACIrBzEpDQvHOeN7VaBERABERABERABERABERABERABERABERABERABAYNAQnNg+ZUqCEiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIisHMSCO6czVarRUAEREAERGDXJBBrbto1D0xHJQIiIAIiIAIiIAIiIAIiIAIisEsTUEbzLn16dXAiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIisP0JKKN5+zPWHkRABERABESg3wRGDKnsd1kVFAEREAEREAEREAEREAEREAEREIGBIrBmY32vu1JGc694tFIEREAEREAEREAEREAEREAEREAEREAEREAEREAERKAvAhKa+yKk9SIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAr0SkNDcKx6tFAEREAEREAEREAEREAEREAEREAEREAEREAEREAER6IuAhOa+CGm9CIiACIiACIiACIiACIiACIiACIiACIiACIiACIhArwQkNPeKRytFQAREQAREQAREQAREQAREQAREQAREQAREQAREQAT6IiChuS9CWi8CIiACIiACIiACIiACIiACIiACIiACIiACIiACItArAQnNveLRShEQAREQAREQAREQAREQAREQAREQAREQAREQAREQgb4IBPsqsLusH1UctGmVIZtYFrSRxQGrCOdbcTDfwvl5Fsgzy8PUWySTZglM0Y6ktcY7rCHaYbWtCVvSFLf59TFb3RrvbXOtEwEREAEREAEREAEREAEREAEREAEREAEREAEREIGdlsBuKTQXQDmeDlH50GGFNqk8aFUFAYOevFVBITrICRUVBwM2tDCAukN25IhUtdCfbVMkYYsb4/bCunZ7C+JzhMq0QgREQAREQAREQAREQAREQAREQAREQAREQAREQAR2cgK7jdBM4feIEQX2npoCZCwP/GFTyB6CNnA6ZFiB+9nUIsv5xfURe3ZNxDa0J3byn5KaLwIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIisLsSGHjFdQBJh6DuHgVx+f2ji50dxgDuul+7ouD9kT04lTibjcdWtdp/ITrHmP6sEAEREAEREAEREAEREAEREAEREAEREAEREAEREIGdhMAuKTSPLgnaSeOK7SBkL9NfeUuipbnZmjG1tbZae1ubtbe0WnNLsyUh/iZhxNzR0WGtLS2WSCQsGAxaUVGRBUMheDjnWWlZqYULCi0cDlsJ5kvLyt2y/uyfvtAfm1Jm50wus1eQ5Xz/8lZb1SJf5/6wUxkREAEREAEREAEREAEREAEREAEREAEREAEREIEdS2CXEponwxP59IklNq0i1C+qFIvrNm6w+vp6a2xowPxGa29vNyjKEIwhUls+BOYOi0ajTkjOz89P10uRmYIy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QFrPv1keozmkZxuiwhDuAbFUGxQLUYEsRhOA6BaTT8WoTUccZTivl1HiMv5oJOAvgS/XJWiRGfkrKA/7jDQMmvg7cOJUj2DuD6fymEYCJEACJEACJEACJEACJEACJEACJEACmUkgY5WXzDwTHosESIAELASeWhAn1ljMt9QobNnKRRIgARIgARIgARIgARIgARIgARIgARIggVASoNAcSposiwRIINsQOHbWFRUIUW/614rSoVqyTeVYERIgARIgARIgARIgARIgARIgARIgARLIZQQoNOeyC8rTIQEScBH4+tKMi8dMxiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAp4E/J+pynM/rpEACZAACZAACZAACZAACZAACZAACZAACZAACZAACZCAJkChmQ2BBEiABEiABEiABEiABEiABEiABEiABEiABEiABEggKAIUmoPCx51JgARIgARIgARIgARIgARIgARIgARIgARIgARIgAQoNLMNkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJBEWAQnNQ+LgzCZAACZAACZAACZAACZAACZAACZAACZAACZAACZAAhWa2ARIgARIgARIgARIgARIgARIgARIgARIgARIgARIggaAIUGgOCh93JgESIAESIAESIAESIAESIAESIAESIAESIAESIAESoNDMNkACJEACJEACJEACJEACJEACJEACJEACJEACJEACJBAUgYig9ubOJEACJEACJEACJEACQRE4dy5J9uz/T+KPHJU8+JcHf6I/CxcqKBXKlpa8efmTLSjI3JkESIAESIAESIAESIAESCDDCfCpJcMR8wAkQAIkQAIkQAIk4Eng5KnTMnbyLNm0bafsO3BQkpLOe2awrIWF5ZHSJUtIbMWy0qNjWylZPMaylYskQAI5icCFCxfk9JmzkpiYKOfPXxDc35GRkZIvMq8eXLKeC/KeOZsoZ8+edefNmzev5M8XmSqvdT8uZz8Cp06fkW0798ixhBNBVw5tpXKFslIspmjQZbEAEiABEiABEgg1AQrNoSbK8kiABEiABEiABEjAB4FV6zbJ0JHj5WjCcYmICNcey5XKl9GigdKVBOKS+k/Oq7/jJ07Krj37Zfe+/7QgvWTFOrnm8o7SvvUl2uvZx2G4KZsRSDx3TvbuP6gFIqeqnVXC4/pN29WgQ5LTZiVG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7BMPN5IACZAACZBA5hKg0Jy5vLPL0YzQbOrTuF4tFYe1h5oAjrGYDZPc9InYytt27fUZr7lerarKe7WK42kvW7VeChTI53W7405MzJYEcO+PmzJLh8iprMKrtFBhVWALl6+W7aqNxFYoJz07t5M6NZzbQrY8KVbKg8C+AwdlyLBRsnf/fx7pwawUyJ9Pf0c0b1wvmGK4LwmQAAmQAAkETIBCc8DIuAMJkAAJkAAJZB0BCs1Zxz4rj7xl+y55/8uf9SR/N17VTZo1rJOV1eGxSYAEMpHAAeXtOnfRCjXh30o5fvKUPnJhNdlfq6YNpU3zRlKqRLFMrA0PlVEEDsUfUYNLx4MuPjIyUsqWKiHh4QxlFDRMFkACJEACJBAwAQrNASPjDiRAAiRAAiSQdQQoNGcd+6w+8satO6R8mVJSSAlMNBIggYuLQKKa1PHQ4SN6YlBEx6hTo6oUjy6qJwC8uEjwbEmABEiABEiABLIzAQrN2fnqsG4kQAIkQAIkYCNAodkGhKskQAIkQAIkQAIkQAIkQAIkQALZgkBaQjPft8kWl4mVIAESIAESIAESIAESIAESIAESIAESIAESIAESIIGcS4BCc869dqw5CZAACZAACZAACZAACZAACZAACZAACZAACZAACWQLAhSas8VlYCVIgARIgARIgARIgARIgARIgARIgARIgARIgARIIOcSoNCcc68da04CJEACJEACJEACJEACJEACJEACJEACJEACJEAC2YIAheZscRlYCRIgARIgARIgARIgARIgARIgARIgARIgARIgARLIuQQoNOfca8eakwAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkEC2IEChOVtcBlaCBEiABEiABEiABEiABEiABEiABEiABEiABEiABHIuAQrNOffaseYkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkkC0IUGjOFpeBlSABEiABEiABEiABEiABEiABEiABEiABEiABEiCBnEsgwlvVyxSP9raJ6SRAAiRAAiRAAskE9scdIQsSIAESIAESIAESIAESIAESIAESuOgJ0KP5om8CBEACJEACJEACJEACJEACJEACJEACJEACJEACJEACwRGg0BwcP+5NAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAhc9AQrNF30TIAASIAESIAESIAES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QCDZjTZdlIxoThcxi28IGAKGgCFgCBgChoAhYAgYAoaAIVARCCSb/1aviEpUxjJ0ObuqrqrLEbvLObt3TVhNjZswggUYAoaAIWAIGAKGgCFgCBgChoAhYAgYAoaAIWAIGAKGgCGwCSNQdRM+dzt1Q8AQMAQMAUPAEDAEDAFDwBAwBAwBQ+D/2TsPwCqq9O2/UhMghZCQAoEAoffei0oRLCCoiB172YK7rtvU/bu73xbdteuKil1AehGpIkqV3ltCAgFCQnovFL/znMu5TG7aTXKT3ITn1cnMnDlz5pzfnZB7n3nvc0iABEiABEiABEjABQQoNLsAIpsgARIgARIgARIgARIgARIgARIgARIgARIgARIggWuZAIXma/nV59hJgARIgARIgARIgARIgARIgARIgARIgARIgARIwAUEKDS7ACKbIAESIAESIAESIAESIAESIAESIAESIAESIAESIIFrmQCF5mv51efYSYAESIAESIAESIAESIAESIAESIAESIAESIAESMAFBCg0uwAimyABEiABEiABEiABEiABEiABEiABEiABEiABEiCBa5kAheZr+dXn2EmABEiABEiABEiABEiABEiABEiABEiABEiABEjABQQoNLsAIpsgARIgARIgARIgARIgARIgARIgARIgARIgARIggWuZAIXma/nV59hJgARIgARIgARIgARIgARIgARIgARIgARIgARIwAUEKDS7ACKbIAESIAESIAESIAESIAESIAESIAESIAESIAESIIFrmQCF5mv51efYSYAESIAESIAESIAESIAESIAESIAESIAESIAESMAFBOq5oI1yNRGXlFqu83gSCZAACZAACZSFQFAz37JUZ10SIAESIAESIAESIAESIAESIAESIIFyEGBGczmg8RQSIAESIAESIAESIAESIAESIAESIAESIAESIAESIIGrBKoto5kZZldfBG6RAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQQE0mUG1Cc02Gxr6TAAmQAAmQAAmQgKsIXLx4Sc7GnZfk1DS5Dv9dh0X0uknjRtIyOFDq1+dbNlfxZjskQAIkQAIkQAIkQAIkQAKVQ4CfWiqHK1slARIgARIgARIggWIJZOfkyop1GyUiOkbOxSfIpUuXi61bp851EhjgL2GhwXLT9UMloFnTYuvyAAmQgHsT+Pnn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"/><path id="Rectangle" stroke="#C06334" stroke-width="3" d="M1.5 1.5h714v33H1.5z"/><path id="Rectangle-Copy" stroke="#C06334" stroke-width="3" d="M1.5 43.5h230v169H1.5z"/><path id="Rectangle-Copy-2" stroke="#C06334" stroke-width="3" d="M241.5 95.5h473v128h-473z"/><path id="Rectangle-Copy-3" stroke="#C06334" stroke-width="3" d="M241.5 333.5h473v64h-473z"/><path id="Rectangle-Copy-6" stroke="#C06334" stroke-width="3" d="M241.5 228.5h473v101h-473z"/><path id="Rectangle-Copy-4" stroke="#C06334" stroke-width="3" d="M714.5 47.5v43h-473v-43h473z"/><path id="Rectangle-Copy-5" stroke="#C06334" stroke-width="3" d="M1.5 221.5h230v176H1.5z"/><circle id="Oval-5-Copy" cx="18" cy="17" r="12" fill="#FBF2EC" stroke="#DBAF88" stroke-width="2"/><text id="1" fill="#181717" font-family="PTMono-Bold, PT Mono" font-size="18" font-weight="bold"><tspan x="13" y="22">1</tspan></text><circle id="Oval-5-Copy" cx="18" cy="60" r="12" fill="#FBF2EC" stroke="#DBAF88" stroke-width="2"/><text id="2" fill="#181717" font-family="PTMono-Bold, PT Mono" font-size="18" font-weight="bold"><tspan x="13" y="65">2</tspan></text><circle id="Oval-5-Copy-2" cx="259" cy="65" r="12" fill="#FBF2EC" stroke="#DBAF88" stroke-width="2"/><text id="4" fill="#181717" font-family="PTMono-Bold, PT Mono" font-size="18" font-weight="bold"><tspan x="254" y="70">4</tspan></text><circle id="Oval-5-Copy-3" cx="19" cy="238" r="12" fill="#FBF2EC" stroke="#DBAF88" stroke-width="2"/><text id="3-copy" fill="#181717" font-family="PTMono-Bold, PT Mono" font-size="18" font-weight="bold"><tspan x="14" y="243">3</tspan></text><circle id="Oval-5-Copy" cx="259" cy="113" r="12" fill="#FBF2EC" stroke="#DBAF88" stroke-width="2"/><text id="5" fill="#181717" font-family="PTMono-Bold, PT Mono" font-size="18" font-weight="bold"><tspan x="254" y="118">5</tspan></text><circle id="Oval-5-Copy-4" cx="259" cy="246" r="12" fill="#FBF2EC" stroke="#DBAF88" stroke-width="2"/><text id="6" fill="#181717" font-family="PTMono-Bold, PT Mono" font-size="18" font-weight="bold"><tspan x="254" y="251">6</tspan></text><circle id="Oval-5-Copy-5" cx="259" cy="351" r="12" fill="#FBF2EC" stroke="#DBAF88" stroke-width="2"/><text id="7" fill="#181717" font-family="PTMono-Bold, PT Mono" font-size="18" font-weight="bold"><tspan x="254" y="356">7</tspan></text></g></g></svg> \ No newline at end of file +<<<<<<< HEAD +<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="716" height="399" viewBox="0 0 716 399"><defs><style>@import url(https://fonts.googleapis.com/css?family=Open+Sans:bold,italic,bolditalic%7CPT+Mono);@font-face{font-family:'PT Mono';font-weight:700;font-style:normal;src:local('PT MonoBold'),url(/font/PTMonoBold.woff2) format('woff2'),url(/font/PTMonoBold.woff) format('woff'),url(/font/PTMonoBold.ttf) format('truetype')}</style></defs><g id="dom" fill="none" fill-rule="evenodd" stroke="none" stroke-width="1"><g id="web-components-twitter.svg"><image id="Снимок-экрана-2019-03-28-в-20.29.32" width="717" height="407" x="0" y="0" xlink:href="data:image/png;base64,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6rp2Tdh1dXfo7qZ6l/rNe5h7yvaCvYq9f/6a/uutfVH7Wvb77K8/YHug+iDjYGkD0jC9oadR1NjelNrUdmj0oZZm/+aDh4cf3n7E8kjVUcOjy45RjxUf6z9edLz3hPRE98mskx0tk1vunRp36sbpsadbz0SdOX82/Oypc+xzx88HnD9ywe/CoYs+FxsveV1quOx5+eBvnr8dbPVqbbjifaXpqu/V5rZRbceuBV07eT30+tkb3BuXbsbcbLuVdOvO7Qm32+8I7jy7m3v35e8Fv/fdm3ufcL/0ge6D8oemD2v+5fivPe1e7UcfhT66/Djh8b0OfsfzP+R/fOosfkJ/Uv7U4mntM/dnR7rCu67+Of7PzufS533dJX/p/VX9wuHFgb+D/77cM66n86XsZf+rJa+NX29/M/JNS29c78O3eW/73pW+N36/44PPh3MfUz4+7Zv2ifSp4rPj5+YvUV/u9+f190t5Mp5qK4DBgWZmAvBqOwD0VAAYV+H+Ybz6nKcSRH02VSHwn7D6LKgSLwDq4U25XeecAGAvHHbBkBvelVv1xGCAengMDo3IMz3c1Vw0eOIhvO/vf20GAAnuZz7L+vv71vf3f94Kk70LwImp6vOlUojwbLApWIluGk1cDL6TfwOWyYCwhO6N0AAAADhlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAAqACAAQAAAABAAAFmqADAAQAAAABAAADLgAAAADjQlLXAABAAElEQVR4AeydB2Bkd3ntv+lVGvW6q+327uK1vca9YQPGBmMb7AA2AfySQAghLyGkkeSlkbwUEkIKJMAjARuIcQNjm2JjGxt3cN319qZdrVarrtH0qne+v3TlWVltV6PRSDofzE6793/v/d258sy5557PNoISFgmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmcIgH7Kc7H2UiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEjAEKDQzA8CCZAACZAACZAACZAACZAACZAACZAACZAACZAACZDAnAhQaJ4TPs5MAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAoZmfARIgARIgARIgARIgARIgARIgARIgARIgARIgARIggTkRoNA8J3ycmQRIgARIgARIgARIgARIgARIgARIgARIgARIgARIgEIz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BEiABEiABEiABEiABEiABEiABEhguRBY+mEuy2VPcjtJgARIgARIgARIgARIgARIgARIgARIgARIgARIYIEIUGheIPBcLAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAksFQIUmpfKnuR2kAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkMACEaDQvEDguVgSIAESIAESIAESIAESIAESIAESIAESIAESIAESWCoEKDQvlT3J7SABEiABEiABEiABEiABEiABEiABEiABEiABEiCBBSLgnGq5v/JE71Rv8fWTIPD1t9SfxNSclARIgARIgARIgARIgARIgARIgARIgARIgARIgAQWHwE6mhffPuMakwAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkEBZEZjS0VxWa7mIV4bO8EW885bQqtNZv4R2JjeFBEiABEiABEiABEiABEiABEiABEiABMqQAB3NZbhTuEokQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIksJgI2B772dMji2mFua4kQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQALlRcB57Fhnea0R14YESIAESIAESIAESIAESIAESIAESIAESIAESIAESGBREbB19Q3S0byodhlXlgRIgARIgARIgARIgARIgARIgARIgARIgARIgATKiwAzmstrf3BtSIAESIAESIAESIAESIAESIAESIAESIAESIAESGDREaDQvOh2GVeYBEiABEiABEiABEiABEiABEiABEiABEiABEiABMqLAIXm8tofXBsSIAESIAESIAESIAESIAESIAESIAESIAESIAESWHQEKDQvul3GFSYBEiABEiABEiABEiABEiABEiABEiABEiABEiCB8iJAobm89gfXhgRIgARIgARIgARIgARIgARIgARIgARIgARIgAQWHQEKzYtul3GFSYAESIAESIAESIAESIAESIAESIAESIAESIAESKC8CFBoLq/9wbUhARIgARIgARIgARIgARIgARIgARIgARIgARIggUVHgELzottlXGESIAESIAESIAESIAESIAESIAESIAESIAESIAESKC8CFJrLa39wbUiABEiABEiABEiABEiABEiABEiABEiABEiABEhg0RGg0LzodhlXmARIgARIgARIgARIgARIgARIgARIgARIgARIgATKiwCF5vLaH1wbEiABEiABEiABEiABEiABEiABEiABEiABEiABElh0BCg0L7pdxhUmARIgARIgARIgARIgARIgARIgARIgARIgARIggfIiQKG5vPYH14YESIAESIAESIAESIAESIAESIAESIAESIAESIAEFh0B51Rr/MevZaZ6i6+TAAmQAAmQAAmMEfi7M1xkQQIkQAIkQAIkQAIkQAIkQAIkQALLngAdzcv+I0AAJEACJEACJEACJEACJEACJEACJEACJEACJEACJDA3AlM6muc2LOcmARIgARIgARI4FQKuYMWpzMZ5SIAESIAESIAESIAESIAESIAESGBeCWSikWnHp6N5Wjx8kwRIgARIgARIgARIgARIgARIgARIgARIgARIgARIYCYCFJpnIsT3SYAESIAESIAESIAESIAESIAESIAESIAESIAESIAEpiVAoXlaPHyTBEiABEiABEiABEiABEiABEiABEiABEiABEiABEhgJgIUmmcixPdJgARIgARIgARIgARIgARIgARIgARIgARIgARIgASmJUCheVo8fJMESIAESIAESIAESIAESIAESIAESIAESIAESIAESGAmAhSaZyLE90mABEiABEiABEiABEiABEiABEiABEiABEiABEiABKYlQKF5Wjx8kwRIgARIgARIgARIgARIgARIgARIgARIgARIgARIYCYCFJpnIsT3SYAESIAESIAESIAESIAESIAESIAESIAESIAESIAEpiVAoXlaPHyTBEiABEiABEiABEiABEiABEiABEiABEiABEiABEhgJgIUmmcixPdJgARIgARIgARIgARIgARIgARIgARIgARIgARIgASmJUCheVo8fJMESIAESIAESIAESIAESIAESIAESIAESIAESIAESGAmAhSaZyLE90mABEiABEiABEiABEiABEiABEiABEiABEiABEiABKYlQKF5Wjx8kwRIgARIgARIgARIgARIgARIgARIgARIgARIgARIYCYCFJpnIsT3SYAESIAESIAESIAESIAESIAESIAESIAESIAESIAEpiVAoXlaPHyTBEiABEiABEiABEiABEiABEiABEiABEiABEiABEhgJgLOmSbg+yRAAiRAAiRAAiRAAqdGIJUbkSRubrtNfE7cHHbxOGyC/7NIgARIgARIgARIgARIgARI4KQI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Gqta47a+Pc9lElQgmyCMV9cGPqdgFwStQxIBERABERABERABERCB3ZxAB44/inuOBtx78P6DA/8xaJfBTOYdITJz/xKaSUEhAiIgAiIgAiIgAtuAgM9sbsPras3IbGaHb117wk3boHpVIQIiIAIiIAIiIAIiIAIiIALdCISQ0cKB/wbakzm7IRKas4nouwiIgAiIgAiIgAhsJQF28IqCAYsgy4DZzUgywGtsSetMNNjK2rW5CIiACIiACIiACIiACIjA7kyACS6BvDyjDTOzmAswDYaQ0DwYzoLaIAIiIAIiIAIisEsSYIdvsHT6dknAOigREAEREAEREAEREAEREIFBQ0BWgYPmVKghIiACIiACIiACIiACIiACIiACIiACIiACIiACIrBzEpDQvHOeN7VaBERABERABERABERABERABERABERABERABERABAYNAQnNg+ZUqCEiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIisHMSkNC8c543tVoEREAEREAEREAEREAEREAEREAEREAEREAEREAEBg0BCc2D5lSoISIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiKwcxKQ0Lxznje1WgREQAREQAREQAREQAREQAREQAREQAREQAREQAQGDQEJzYPmVKghIiACIiACIiACIiACIiACIiACIiACIiACIiACIrBzEpDQvHOeN7VaBERABERABERABERABERABERABERABERABERABAYNAQnNg+ZUqCEiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIisHMSkNC8c543tVoEREAEREAEREAEREAEREAEREAEREAEREAEREAEBg0BCc2D5lSoISIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiKwcxKQ0Lxznje1WgREQAREQAREQAREQAREQAREQAREQAREQAREQAQGDQEJzYPmVKghIiACIiACIiACIiACIiACIiACIiACIiACIiACIrBzEpDQvHOeN7VaBERABERABERABERABERABERABERABERABERABAYNAQnNg+ZUqCEiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIisHMSCO6czVarRUAEREAERGDXJBBrbto1D0xHJQIiIAIiIAIiIAIiIAIiIAIisEsTUEbzLn16dXAiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIisP0JKKN5+zPWHkRABERABESg3wRGDKnsd1kVFAEREAEREAEREAEREAEREAEREIGBIrBmY32vu1JGc694tFIEREAEREAEREAEREAEREAEREAEREAEREAEREAERKAvAhKa+yKk9SIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAr0SkNDcKx6tFAEREAEREAEREAEREAEREAEREAEREAEREAEREAER6IuAhOa+CGm9CIiACIiACIiACIiACIiACIiACIiACIiACIiACIhArwQkNPeKRytFQAREQAREQAREQAREQAREQAREQAREQAREQAREQAT6IiChuS9CWi8CIiACIiACIiACIiACIiACIiACIiACIiACIiACItArAQnNveLRShEQAREQAREQAREQAREQAREQAREQAREQAREQAREQgb4IBPsqsLusH1UctGmVIZtYFrSRxQGrCOdbcTDfwvl5Fsgzy8PUWySTZglM0Y6ktcY7rCHaYbWtCVvSFLf59TFb3RrvbXOtEwEREAEREAEREAEREAEREAEREAEREAEREAEREIGdlsBuKTQXQDmeDlH50GGFNqk8aFUFAYOevFVBITrICRUVBwM2tDCAukN25IhUtdCfbVMkYYsb4/bCunZ7C+JzhMq0QgREQAREQAREQAREQAREQAREQAREQAREQAREQAR2cgK7jdBM4feIEQX2npoCZCwP/GFTyB6CNnA6ZFiB+9nUIsv5xfURe3ZNxDa0J3byn5KaLwIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIisLsSGHjFdQBJh6DuHgVx+f2ji50dxgDuul+7ouD9kT04lTibjcdWtdp/ITrHmP6sEAEREAEREAEREAEREAEREAEREAEREAEREAEREIGdhMAuKTSPLgnaSeOK7SBkL9NfeUuipbnZmjG1tbZae1ubtbe0WnNLsyUh/iZhxNzR0WGtLS2WSCQsGAxaUVGRBUMheDjnWWlZqYULCi0cDlsJ5kvLyt2y/uyfvtAfm1Jm50wus1eQ5Xz/8lZb1SJf5/6wUxkREAEREAEREAEREAEREAEREAEREAEREAEREIEdS2CXEponwxP59IklNq0i1C+qFIvrNm6w+vp6a2xowPxGa29vNyjKEIwhUls+BOYOi0ajTkjOz89P10uRmYIy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QFrPv1keozmkZxuiwhDuAbFUGxQLUYEsRhOA6BaTT8WoTUccZTivl1HiMv5oJOAvgS/XJWiRGfkrKA/7jDQMmvg7cOJUj2DuD6fymEYCJEACJEACJEACJEACJEACJEACJEACmUkgY5WXzDwTHosESIAELASeWhAn1ljMt9QobNnKRRIgARIgARIgARIgARIgARIgARIgARIggVASoNAcSposiwRIINsQOHbWFRUIUW/614rSoVqyTeVYERIgARIgARIgARIgARIgARIgARIgARLIZQQoNOeyC8rTIQEScBH4+tKMi8dMxiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAp4E/J+pynM/rpEACZAACZAACZAACZAACZAACZAACZAACZAACZAACZCAJkChmQ2BBEiABEiABEiABEiABEiABEiABEiABEiABEiABEggKAIUmoPCx51JgARIgARIgARIgARIgARIgARIgARIgARIgARIgAQoNLMNkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJBEWAQnNQ+LgzCZAACZAACZAACZAACZAACZAACZAACZAACZAACZAAhWa2ARIgARIgARIgARIgARIgARIgARIgARIgARIgARIggaAIUGgOCh93JgESIAESIAESIAESIAESIAESIAESIAESIAESIAESoNDMNkACJEACJEACJEACJEACJEACJEACJEACJEACJEACJBAUgYig9ubOJEACJEACJEACJEACQRE4dy5J9uz/T+KPHJU8+JcHf6I/CxcqKBXKlpa8efmTLSjI3JkESIAESIAESIAESIAESCDDCfCpJcMR8wAkQAIkQAIkQAIk4Eng5KnTMnbyLNm0bafsO3BQkpLOe2awrIWF5ZHSJUtIbMWy0qNjWylZPMaylYskQAI5icCFCxfk9JmzkpiYKOfPXxDc35GRkZIvMq8eXLKeC/KeOZsoZ8+edefNmzev5M8XmSqvdT8uZz8Cp06fkW0798ixhBNBVw5tpXKFslIspmjQZbEAEiABEiABEgg1AQrNoSbK8kiABEiABEiABEjAB4FV6zbJ0JHj5WjCcYmICNcey5XKl9GigdKVBOKS+k/Oq7/jJ07Krj37Zfe+/7QgvWTFOrnm8o7SvvUl2uvZx2G4KZsRSDx3TvbuP6gFIqeqnVXC4/pN29WgQ5LTZiVG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7BMPN5IACZAACZBA5hKg0Jy5vLPL0YzQbOrTuF4tFYe1h5oAjrGYDZPc9InYytt27fUZr7lerarKe7WK42kvW7VeChTI53W7405MzJYEcO+PmzJLh8iprMKrtFBhVWALl6+W7aqNxFYoJz07t5M6NZzbQrY8KVbKg8C+AwdlyLBRsnf/fx7pwawUyJ9Pf0c0b1wvmGK4LwmQAAmQAAkETIBCc8DIuAMJkAAJkAAJZB0BCs1Zxz4rj7xl+y55/8uf9SR/N17VTZo1rJOV1eGxSYAEMpHAAeXtOnfRCjXh30o5fvKUPnJhNdlfq6YNpU3zRlKqRLFMrA0PlVEEDsUfUYNLx4MuPjIyUsqWKiHh4QxlFDRMFkACJEACJBAwAQrNASPjDiRAAiRAAiSQdQQoNGcd+6w+8satO6R8mVJSSAlMNBIggYuLQKKa1PHQ4SN6YlBEx6hTo6oUjy6qJwC8uEjwbEmABEiABEiABLIzAQrN2fnqsG4kQAIkQAIkYCNAodkGhKskQAIkQAIkQAIkQAIkQAIkQALZgkBaQjPft8kWl4mVIAESIAESIAESIAESIAESIAESIAESIAESIAESIIGcS4BCc869dqw5CZAACZAACZAACZAACZAACZAACZAACZAACZAACWQLAhSas8VlYCVIgARIgARIgARIgARIgARIgARIgARIgARIgARIIOcSoNCcc68da04CJEACJEACJEACJEACJEACJEACJEACJEACJEAC2YIAheZscRlYCRIgARIgARIgARIgARIgARIgARIgARIgARIgARLIuQQoNOfca8eakwAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkEC2IEChOVtcBlaCBEiABEiABEiABEiABEiABEiABEiABEiABEiABHIuAQrNOffaseYkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkkC0IUGjOFpeBlSABEiABEiABEiABEiABEiABEiABEiABEiABEiCBnEsgwlvVyxSP9raJ6SRAAiRAAiRAAskE9scdIQsSIAESIAESIAESIAESIAESIAESuOgJ0KP5om8CBEACJEACJEACJEACJEACJEACJEACJEACJEACJEACwRGg0BwcP+5NAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAhc9AQrNF30TIAASIAESIAESIAES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QCDZjTZdlIxoThcxi28IGAKGgCFgCBgChoAhYAgYAoaAIVARCCSb/1aviEpUxjJ0ObuqrqrLEbvLObt3TVhNjZswggUYAoaAIWAIGAKGgCFgCBgChoAhYAgYAoaAIWAIGAKGgCGwCSNQdRM+dzt1Q8AQMAQMAUPAEDAEDAFDwBAwBAwBQ+D/2TsPwCqq9O2/UhMghZCQAoEAoffei0oRLCCoiB172YK7rtvU/bu73xbdteuKil1AehGpIkqV3ltCAgFCQnovFL/znMu5TG7aTXKT3ITn1cnMnDlz5pzfnZB7n3nvc0iABEiABEiABEjABQQoNLsAIpsgARIgARIgARIgARIgARIgARIgARIgARIgARIggWuZAIXma/nV59hJgARIgARIgARIgARIgARIgARIgARIgARIgARIwAUEKDS7ACKbIAESIAESIAESIAESIAESIAESIAESIAESIAESIIFrmQCF5mv51efYSYAESIAESIAESIAESIAESIAESIAESIAESIAESMAFBCg0uwAimyABEiABEiABEiABEiABEiABEiABEiABEiABEiCBa5kAheZr+dXn2EmABEiABEiABEiABEiABEiABEiABEiABEiABEjABQQoNLsAIpsgARIgARIgARIgARIgARIgARIgARIgARIgARIggWuZAIXma/nV59hJgARIgARIgARIgARIgARIgARIgARIgARIgARIwAUEKDS7ACKbIAESIAESIAESIAESIAESIAESIAESIAESIAESIIFrmQCF5mv51efYSYAESIAESIAESIAESIAESIAESIAESIAESIAESMAFBOq5oI1yNRGXlFqu83gSCZAACZAACZSFQFAz37JUZ10SIAESIAESIAESIAESIAESIAESIIFyEGBGczmg8RQSIAESIAESIAESIAESIAESIAESIAESIAESIAESIIGrBKoto5kZZldfBG6RAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQQE0mUG1Cc02Gxr6TAAmQAAmQAAmQgKsIXLx4Sc7GnZfk1DS5Dv9dh0X0uknjRtIyOFDq1+dbNlfxZjskQAIkQAIkQAIkQAIkQAKVQ4CfWiqHK1slARIgARIgARIggWIJZOfkyop1GyUiOkbOxSfIpUuXi61bp851EhjgL2GhwXLT9UMloFnTYuvyAAmQgHsT+Pnn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"/><path id="Rectangle" stroke="#C06334" stroke-width="3" d="M1.5 1.5h714v33H1.5z"/><path id="Rectangle-Copy" stroke="#C06334" stroke-width="3" d="M1.5 43.5h230v169H1.5z"/><path id="Rectangle-Copy-2" stroke="#C06334" stroke-width="3" d="M241.5 95.5h473v128h-473z"/><path id="Rectangle-Copy-3" stroke="#C06334" stroke-width="3" d="M241.5 333.5h473v64h-473z"/><path id="Rectangle-Copy-6" stroke="#C06334" stroke-width="3" d="M241.5 228.5h473v101h-473z"/><path id="Rectangle-Copy-4" stroke="#C06334" stroke-width="3" d="M714.5 47.5v43h-473v-43h473z"/><path id="Rectangle-Copy-5" stroke="#C06334" stroke-width="3" d="M1.5 221.5h230v176H1.5z"/><circle id="Oval-5-Copy" cx="18" cy="17" r="12" fill="#FBF2EC" stroke="#DBAF88" stroke-width="2"/><text id="1" fill="#181717" font-family="PTMono-Bold, PT Mono" font-size="18" font-weight="bold"><tspan x="13" y="22">1</tspan></text><circle id="Oval-5-Copy" cx="18" cy="60" r="12" fill="#FBF2EC" stroke="#DBAF88" stroke-width="2"/><text id="2" fill="#181717" font-family="PTMono-Bold, PT Mono" font-size="18" font-weight="bold"><tspan x="13" y="65">2</tspan></text><circle id="Oval-5-Copy-2" cx="259" cy="65" r="12" fill="#FBF2EC" stroke="#DBAF88" stroke-width="2"/><text id="4" fill="#181717" font-family="PTMono-Bold, PT Mono" font-size="18" font-weight="bold"><tspan x="254" y="70">4</tspan></text><circle id="Oval-5-Copy-3" cx="19" cy="238" r="12" fill="#FBF2EC" stroke="#DBAF88" stroke-width="2"/><text id="3-copy" fill="#181717" font-family="PTMono-Bold, PT Mono" font-size="18" font-weight="bold"><tspan x="14" y="243">3</tspan></text><circle id="Oval-5-Copy" cx="259" cy="113" r="12" fill="#FBF2EC" stroke="#DBAF88" stroke-width="2"/><text id="5" fill="#181717" font-family="PTMono-Bold, PT Mono" font-size="18" font-weight="bold"><tspan x="254" y="118">5</tspan></text><circle id="Oval-5-Copy-4" cx="259" cy="246" r="12" fill="#FBF2EC" stroke="#DBAF88" stroke-width="2"/><text id="6" fill="#181717" font-family="PTMono-Bold, PT Mono" font-size="18" font-weight="bold"><tspan x="254" y="251">6</tspan></text><circle id="Oval-5-Copy-5" cx="259" cy="351" r="12" fill="#FBF2EC" stroke="#DBAF88" stroke-width="2"/><text id="7" fill="#181717" font-family="PTMono-Bold, PT Mono" font-size="18" font-weight="bold"><tspan x="254" y="356">7</tspan></text></g></g></svg> +======= +<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="716" height="399" viewBox="0 0 716 399"><defs><style>@import url(https://fonts.googleapis.com/css?family=Open+Sans:bold,italic,bolditalic%7CPT+Mono);@font-face{font-family:'PT Mono';font-weight:700;font-style:normal;src:local('PT MonoBold'),url(/font/PTMonoBold.woff2) format('woff2'),url(/font/PTMonoBold.woff) format('woff'),url(/font/PTMonoBold.ttf) format('truetype')}</style></defs><g id="dom" fill="none" fill-rule="evenodd" stroke="none" stroke-width="1"><g id="web-components-twitter.svg"><image id="Снимок-экрана-2019-03-28-в-20.29.32" width="717" height="407" x="0" y="0" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABZoAAAMuCAYAAACQG7arAAAAAXNSR0IArs4c6QAAAERlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAA6ABAAMAAAABAAEAAKACAAQAAAABAAAFmqADAAQAAAABAAADLgAAAADAinDtAABAAElEQVR4Aey9B2CkBZ3+/51eMpPes9lsb8DSi4BUERABBQUExfPkTj1/3nniFcudev/rHqd36Hm2Q1EUaUoRBem9l2V7S7KbbHqb3uf/fN/J7GazqZvJZJI8X5hk5u3v5503O/O8z/t8TWmUsEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEjgKAmYj3I+zkYCJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACBgEKzXwjkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJzIgAheYZ4ePMJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACFJr5HiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEpgRAQrNM8LHmUmABEiABEiABEiABEiABEiABEiABEiABEiABEiABCg08z1AAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiQwIwIUmmeEjzOTAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAlYiYAESIAESIAESIAESIAESIAESIAESIAESIAESIAE5gOB/ZGU7A4kpTWUkvZoUvpiaRlMpCWSSkt6PuxAHrbRhHU4zSYptZqkwm6SBodFmtxmWeWxSKNz9nzHpjQqD/vHVZAACZAACZAACZAACZAACZAACZAACZAACZAACZDAtAnsDSXlpf6EvDaUkI5Yatrzc4ZDBOrsZjmlxCpnlFtlhdtyaEQOnlFozgFELoIESIAESIAESIAESIAESIAESIAEZpNAMpWSWDwhsURSEsmk6OuUuvfoHZtN7Fz2LBMwmUxixsNiMYvVYhG7FQ+bVSzm2XNczvIuTWvxev4GAwHp7++X3r4+6dPH0KBEIhERcNHyej0S9PmltqZWqior8dorNTU14vF4MElmmmmtdJ5N/NpgQh7piclmOJhZuSdwLBzOF1fZ5ZTS3IReUGjO/THiEkmABEiABEiABEiABEiABEiABEhgxgRSEKHCkZiEYzGJ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QAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkMO8IUGied4eMG0wCJEACJEACJEACJEACJEACJEACJEACJEACJEAChUWAQnNhHQ9uDQmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAnMOwLW8bb4kq3jjeFwEiABEiABEiCBLIHfb8g+428SIAESIAESIAESIAESIAESIAESWLwE6GhevMeee04CJEACJEACJEACJEACJEACJEACJEACJEACJEACOSEwrqM5J0vnQkiABEiABEiABKZFwOIpntb0nJgESIAESIAESIAESIAESIAESIAE8kEgGfBNuBo6mifEw5EkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAKTEaDQPBkhjicBEiABEiABEiABEiABEiABEiABEiABEiABEiABEpiQAIXmCfFwJAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQwGQEKDRPRojjSYAESIAESIAESIAESIAESIAESIAESIAESIAESIAEJiRAoXlCPBxJAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiQwGQEKzZMR4ngSIAESIAESIAESIAESIAESIAESIAESIAESIAESIIEJCVBonhAPR5IACZAACZAACZAACZAACZAACZAACZAACZAACZAACUxGgELzZIQ4ngRIgARIgARIgARIgARIgARIgARIgARIgARIgARIYEICFJonxMORJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACkxGg0DwZIY4nARIgARIgARIgARIgARIgARIgARIgARIgARIgARKYkACF5gnxcCQJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkMBkBCg0T0aI40mABEiABEiABEiABEiABEiABEiABEiABEiABEiABCYkQKF5QjwcSQIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkMBkBCs2TEeJ4EiABEiABEiABEiABEiABEiABEiABEiABEiABEiCBCQlQaJ4QD0eSAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAlMRsA62QQcTwIkQAIkQAIkQAIkcHQEIqm0hJNpcZhN4raYpAgPJx74n0UCJEACJEACJEACJEACJEAC0yKArxYSwY8gHiE8ovi+4dLvGPi+UQhFobkQjgK3gQRIgARIgARIYEER0A99vkRKvFazLHVZjA9/C2oHuTMkQAIkQAIkQAIkQAIkQAJ5J6CGlSIrDCx4aKmppTOawiMpxfjuoeaWuSwKzXNJn+smARIgARIgARJYUARgKJC+eErieNLkskqZfW4/6C0ouNwZEiABEiABEiABEiABEiCBwwiom3m52yIDMbO0hhNwOpukwmaWuTI4M6P5sMPDFyRAAiRAAiRAAiRwdAQSmK0rlhJozbLOQ5H56ChyLhIgARIgARIgARIgARIggekSUIOLfgfR7yL6nUS/m8xF0dE8F9S5ThIgARIgARIggcMIpNPIGRsYkFBgSMLBgIT0EQ5JPB4XGTYFe4uLxTc4JF5vMR4lYrHaxFtWJsUVVWIyza1zWJ3MPSoyYz9W4wOeZjKzSIAESIAESIAESIAESIAESCBfBLQXzOoii2zzJ6QHURo1dkvenc0UmvN1tLkeEiABEiABEiCBIwj4ujulv/OA+Pt6cfU9Lf5gUAJ4WO0QkUuKxWq1SDAYwiMg0UhIHBCXh/q6JdDfK3abTfr2mcVitkhJdbV4q6qltLruiHXkY0AmLkNkLUXmfODmOkiABEiABEiABEiABEiABMYgoIaXlUVW2RFIGpF+Vfb8hllQaB7joHAQCZAACZAACZDA7BFIp1LS0bxbOlqaRRJxMaVTYrWYxQbhuMhhh6PZL22tLdI30C+JVFLMVqv09vRKeVmpbFi3XhKxuNgsFqmvqZUkHMQBCNGxWFgGerulY+8uqWxoxKNJTOb8fKjSxn/hpEiVw4Tmf3Qyz947h0smARIgARIgARIgARIgARKYjIB+J9HvJj3RtOh3lXw2CKTQPNnR4XgSIAESIAESIIGcEeje1yIH9u6WeCRixEwIRGaHzQKxOS3RcFii0agMDfTJ3t27ZOuObRKJxqQM8RjqaHbYHRIYGpSgLyB2i1XWr1snlRUV4nQ4pcjrkRRE6Vg0YojYPW37pLZphZTXN+Zs28dbkC+RwiiTLHFaxpuEw0mABEiABEiABEiABEiABEggbwT0u0lPNCH6XcUNk06+ikJzvkhzPSRAAiRAAiSwiAlEAgFp3rJJeg60GwKzFS5lCz7wpJMJ6R0cEP/QgPQiDqOzs0s6EKXR1d0tQ36fpFSARmRGUrOakYMcDvgk4PNDdLYbOc6NDfVSW1svZptViiFIWyE6m+Fkjseism/nVhlEzEbDyrXicHtmhX4E4cyxlEkq0XwDkWgsEiABEiABEiABEiABEiABEphzAvrdRL+j9MZE9DuLM089ZCg0z/mh5waQAAmQAAmQwMIm0NO+X/ZseguRFzFDZFYhOJlMygCa//X19kjLnt3S03VA+hGV0dffL8FQ0BCYLchnNiN/OQKXcjKeRBazGY7lKEzQKUlh/uYWxGv09UlVe4f4QiE57sQTxYMMZxWxtSlfIoEr+Mh+DkLIXrJmg5TV1OccdBi3omnlO/ss5zvCBZIACZAACZAACZAACZAACSwoAvodpTeWRMwfheYFdWC5MyRAAiRAAiSwWAkc2LNTWrdtQYZyRmR2OBwGiq6uLtm2bZvsRkTGfuQx+/2DEIcFLmc094PTOYlbvAKhCAIp4BRGt2SbySbQnOFUTmCISBQfmCLRPojVgxCoB8WEfOfaJYjJMGWynlXMNplMhuCsonbL1k0SQ1xHDeI0clkxTc1AuWhnzoDgTxIgARIgARIgARIgARIggYIgkP2OEh3+zpKPjaKjOR+UuQ4SIAESIAESWIQE9iO64sDunRB8defTaPancRlmUZH5zTffkLfffhtRGZ0ShhsZurDYkMFsNlkklkhKHA7mBJzLJojPSdzuZXM5JQElOm22on9gXOJpNBGEqGxKIVIDzQB7+wakra1drBCc3W63ZAVtXbMKzloH9u6EGzoptctXG69z8SOu6jik7zzdiZaLTeYySIAESIAESIAESIAESIAEFgGB7HcU/R6Vr6LQnC/SXA8JkAAJkAAJLCIC6mRu37XDEHlV6FXh14zfKiy/9NJL8vrrryOLuVNVYJiQLWKBCK2W5UAkKgHkOaeRI+bxeOBmtkooFMZkUYOeFW7nFMRoK5oBWjFPKpkSTa/oQoTGpnc2SSgckgicyytXrjQiNHQmdUinIFprnEZn616sxirVS5fn5Gik0hkROycL40JIgARIgARIgARIgARIgARIIMcE8vmdhUJzjg8eF0cCJEACJEACi51AX0ebtO3cZjTly7qJNS95yO+XN954Q1588UXx+XxiQ5YyTMkSQQxGGoKxTQVniw2itAv5yknkOKcxPo3Gf074odHgLx6DkBwxhGNN4MBYYx0JCM3dPT1wSndKe3u77Ny5Uy677DJZsWKFIXSrwJx96PZ0NO8Su9MppdV1i/1Qcf9JgARIgARIgARIgARIgARIIGcEKDTnDCUXRAIkQAIkQAIkEAn6pRV5yOoi1tKs5BTiKlRY3rdvn+zfv08SyYQ4XS7kLccQh6ExGTFxWF2ShOs4GAga85SUlGB81BCc62pr0SRwAMoyBGM4nZPphCQQoaFuaH2oqxk/IVxbpB/NBIeGhoz4jIqKCsMVrQ5nu91uLFcFZ639O7aIy+MVh9tjvOYPEiABEiABEiABEiABEiABEiCBmRGAj4hFAiRAAiRAAiRAArkh0AYB15ROQdRVkVm14SSiL4Jy4ECbbNr0FhoAbpWA3wdxOI7hfgjQfklhmmQijmEJCMKIxEBjvaSKz3heXOSWaCSELOaEuBCVUYz8ZZfLAX05JQkVomMRzBfDazifnS7xer3IgrbJ1q1bjSxo3St1MTvhYB4ZoaEO67bd23Oz01wKCZAACZAACZAACZAACZAACZCA0NHMNwEJkAAJkAAJkEBOCPS2tYi/v/eIZWk+cggN/wYGBtC3LwQB2WbkJ6u72IYOFdok0Gozi10FZqjTsWhEBHEaVqtbzBCtg31DyFU2wZ3sFacbTQERq+EL+I1lJeCW1uzneNQksVhcXHV1hpt5f1ubvPPOO7J06VJDYFZXs9bICA1fX6/0te+TioalR2wzB5AACZAACZAACZAACZAACSw+AoF4SlrCKYmmcrvvDphwlrnM4sH3noVcFJoX8tHlvpEACZAACZBAngikISZ3Nu824ilGrjIajRoCs0ZaqNiszfysVhvE4oQxmcdTJHU1FVJRXmpEafgHh8RmKZdiOJODwZDE0Rywcf0aScQhInvcaA5oQ9RGXHzIe1axORAMSjAcRv5zSIbQRFCbDZaWlhou5u3bt8t5550nxcXFWFbQELfV7awO52yERkfLHimvW4Is6IX9gW/kMeFzEiABEiABEiABEiABEiCBIwm8OpCQ2/dHIDJn4vaOnGJmQxww2dzY6JRTyxauHLtw92xmx55zkwAJkAAJkAAJTINAz/5mNPRLGO7hbANAbdfn80WRy7xfmpubpae3V+KIyNBHEkJzCh/gykq8snHDWmQ0i/jgeF5aVSalyGc2we0c8AekzFssa1avxjwJZDOnJIZ5o3AuxxGlEYZLuRcCdkcHmgB29YnJAuEZzQJ1/RXl5YborI0BV65caWQ1Z3OjVWTObqPmQHdj22uaVk5jbzkpCZAACZAACZAACZAACZDAQiKgTuasyLzBa5FiS26NKD70ldnqTxrrWA8DzUJ1NlNoXkhnBfeFBEiABEiABOaIQF/HPoQyQ8DV/9CjTysFoVmHJVJxGRjqhzAcRsM+q8SRz6zTlJaXybJlS6UW4nJgoEtc9pQsXVItZf8/e+cBKEdVfvFv+77e8tJDOiGB0BGQakERpElvFkQRe/0roNgV7F0BRZBmQxRF6b2XAElII73319/bvv9z7u5s9rXkJXl5aefTeTM7c++dO79dMjNnvjm3ssoaNmy0QeV1NmbkPhCJoy5TOplOO5E5hkEEs/BkTqbLrCLqhw8YBhVERnVrPG0t7R2FbOkEylHkHjx4sBOaPXGZ8+JpPfyjJTTnvjP9FQEREAEREAEREAEREIG9kUDOLiNrFJk/O750hyD42YJ2JzZzXwfsoRYaEpp3yE9HjYqACIiACIjA3kOgYe1Ki3e0OfGWArATm7M5tZlZxOFw1OLxBGwwYm6gPsPTfA7eV1NRZsMhAkfgvxwuw3JtlQ0dMsQqSkqstiQKz+ag1VZVOpDMQq5AO+loxGIpCssQnSE8hyBk82Imkw3ZusYOZE1vsDgGH4yjFyNHjrAa2GgMGjTIIpEIZG/2qfuUQt8a18JyY/DQvedL05GKgAiIgAiIgAiIgAiIgAgUCHiezP2dyVzYARZybeM+pp/9n4v3sbOXJTTv7G9A+xcBERABERCB3ZzAxtXLLZ1G9jI0XGYq+3wQki2Q+4B5SaTEqsorbTmEYV5TlUD0hTJsgyAiV0bDVhbCVFZn5RCRyyIQmM1vJSXlFkX2c8QXcIP9ZVCXlQOQi7PYHsarbNFw2EpQJhQIW0cC7ZWvtnVoL51NWTgahQ9zBv7MFTYE4nUHxGRmPfv9OY9ml9GMXnqycxNsPQZaaF7QlrbVsYxFIbQfVt3zJdms5pQ1JCGmA+yRtT2XWdSetpXIiqgJ+WxKZdBehrccfeXYJtse6JjehMzyFFhjx0fXhfpl9zweHlcAHI7qhUO/7GgPaWQhflur8Nsahoz/cWX4b3EnxFPrk/ZaU8r4Ox+OfhxSFbSThoR3Qk+0SxEQAREQAREQAREQgYEi0PMdy0DtXfsRAREQAREQARHYrQkw07h5/TonKuesKTjQHiYcFf+GwxH4JddZFXyXA34MBIgM57IIpWSD+FxmpRCdoxigryQM4TgYtgDEZFcPAnOQpZJpJEBjQhY0B/ILBAMWwj5po5FNQXzGPkohTg+uq4XNxjBrxGCCjc0tTmhua2601StXWEtbq4VLyiwAMTzr86MGBOYs5vRqRrsZCNBrVqyxfSbv77KyB+oL+dequN26KuF29+IxVcbBQbrG5TMw2CFEVsbDR1RaPQS7rnH1rDabBaF5CkaxvuvwSvvozFYjmZunlvcqYHdtY2s/U/Rdi1QMiofDsN/iuHpOqy2D8M94/bjq4k3bvDy3JWMfx3Ey+qvNbe7MblDxhkUxu78hae+pDdl1+5cNaI8b8d1/Br/B1yAwF6LJ7I41CRu9uMP+eHCl1UW6/9YLZbUgAiIgAiIgAiIgAiKw2xLofGew2x6GOi4CIiACIiACIrAzCLQ2rkeWsDkB2Q8R148PfgjKnPvwmZYVlchcDiLzOAtRlxceyXjcicQBCNL8nIGQTLGX5QMuQxlZx6hPfZUDBmYoEDvlmt7KaDc/MAe3McuZecllpaU2YtgwG1JfZ+EQ7DpCQYjTKZs7d54tXboUwjLsov1BtJdrMwWhOplE5i8ynTvaY27gwYa1EMwHMI6r25Td+VpjkSiX7wOzUj2RmaseX58TpYu7yETyuRCZGcdDVByo+DH85a56s93+AbFcIQLFBD5fJDKfhoz2z2BkdT4EYSxxInRLcXEti4AIiIAIiIAIiMBuQeDVxqR9e26b3YAH5+vivDlR9EQgd9XX0xatEwEREAEREAEREIEtEGhvaiyUoK0BBWb6MlNY9iaKvmFkIjNhN4OBAFtbKDTBDoIDYMBjmVIxRWAf6viDEEtRn4Iy/jirjQzaDIYiLks3mUohwxnmGchujpaUWgR+ziFYaHAqryy36spK82F7FuW4/4aGjdbc1GQcGDCTRRY0RO0s1GYK21laeXAZFhuMpo0Nbj5Qfw6GtYVnavAcsk+7xuPrOq97YkOqaxGb0ZR0XLjhhEEDJzR360jRiouGR218VBmrRUgGfPFiiLvfGl9iH9gHNjUDGMx0fyWfyfyryWX2nSlldtmYqMu0vyBvmzGjPWOr8g9HBrBr2pUIiIAIiIAIiIAIbDOBBO4vblkWt2W4hnmlMWX/W61ki95gSmjujYzWi4AIiIAIiIAIbJFArLUlly1MQ4oiodmJzRjML5S3y6gsL0d2c9hlNfuQnkyri1oM1BfEdlpZxJNJa25phe1FM/yUceFGcTpaagEIzFm064Ow7Ed7SGeG+Oxz1hntiaS1o2wcmclZXPyVwOu5tqYGVQPW3NzksqaDQfg9w68ZBSBAsyYWmR5N2wy0SysOZl2XIiM6xf0OYMBS2SblMz1fRIZE13hiY27d1NLc5dorLd2znp/bmBOf6UQwGf7MPQXQ2AZkXbSk+pZ5QT/kdfD37WC69DbERaMiVo2s8xpPRS9qg22vRV/Yp+0NWFfbGvSTbfYlNiKbllMfi7sm2XZfuXl9YPvcz9ZEY5IPPLamRu477e3YD6wK2BnDIza5ouffhLenGL5j/jb6Eiy1peN6Pv/AZAx+kMd1efDxQYjfXrzR0v2hibdNcxEQAREQAREQARHY1Qhg+BFLFl2stRct72p93dn92fzV587unfYvAiIgAiIgAiKwSxNIJeJIQN40wF7WWWbQzALJypgo5kbg01xZUeHE3VgsbuUQnIcNGwq7i6i1Qlhu3hiHWJ10A95x4MBB1TWWqYcIXM1M5ZBbH0SmcxricMoS1gqriwZkKTfAg7kd++fggBFkN0cxgGBNdRWmalu6YqVFy9M2aOhQfK5BHyByM0saadW03KBk64OfBrOsAxCwKXhT8h7oOAZ2F7NWxG0Osjy5d3Jj8Np1Rj4z9Jp9S+2C11qtHcc/vzVtE8o3KbjP5IW9g7HOq5trARnaUGK/NLPNHkEZT6Km+Pt/40rtlKGbbDtYnmLqbxZ22D/XQrynEJ+PCgC6cFjYPjGuxK256o02ew5Z1A35Bv+Avv8NGR0HlAXtVweVuzLfnNPmslovzmew8lhuxCuGt69MWEvRRTnH9PvwiBK7ZCuzbsngWry2+AaYeTE67LMfInt2Uhdh9WkMSPdr7Jse1sVB8f5b+5V1GijvO+j3wxD3Lxoawe/BZ3etitnavB5KDkdWBuzr+5VaJTPx8/Hf1Qn7wcJ2m1waQPZwiX1/fpstg3BLPBT/+SDh65PKOn1nXl2KttfObrNpOB5apPBb3Q/9Ohf7P2vEpkxkWqhc9nqLDYOP+a8PrLBrZsH/uDVT+J56OvafzW/Hd5mw0weH7fMTSt0uve/umvGlGGAyY7cuj9tyqvUI9vUC/CY+i238b6I47oe38q3LYs6ihcdVhgIn1gTtfcMi9sXZre7Yf3sw/vtGrMhznoLfQ9eownfkRR+feXjFNRcBERABERABERCBnUqgNOizs3CN9h9cX9UiW+RkDXDc6/fR/Sqw16LaIAIiIAIiIAIiIAKdCVByY0Ywg/ok5TwnXfEPpgCE5/KyMjcYoB+ezKlE2sLlQawrtXh7m23cuNHSiQ6LRoLOZzkNBSoJm4vm1larq6q2OojE5RjIL4mM5LbmVtvY2mTNGNyvpb0VgnOHtXW0WzKVRGZyBPuodYLzkMH1FpiNwf5gjUHv5orSEojJ9HeGoIyMaArWzhManXVZzci+pdC8SQbj0QxM0Kf5Joi1FPDmIMvTy0CdhlfyuI4CJ9cxQ3QxBMwnYKfhCc3UbGflxda31XYWjtn7z0E49YIiJtujQExv5UpcLB+bzzjlq4AfeLXZFsTcN+eqUEyk+Elh+Eb0D/jsY2NLbBUGAPREZhb02lwa41IuoGHaJRAtv5AXODlY4f/y2dnsRzTfNpOxf7gE3yFSRK7IC9leG5ubX/Rai3lJuN5x0fv3Qojxjx5VadV5Ifhh3Ah8YW57oSmWxWG7urRvuODVFnvi6Cor4cEhVqNRHtuvcbxeeO2Tw8P4Tl55qdn+dEil7ZPPRG+EUMs6zyLb/Nk3Wr1qTjRmH6djP+dhPz+CqP32+k3WJtOb0nb5jE3HQaGX5SmevwHBnyL0h8fmMoBbwYn7aIaIe/4rTQXx2+tbT8e+Ct8l6zB73Itl+I647rdLOwrftdcGi3FgSn53X8aDDS9uQF9+U8SD/eTv4r4NSXsSNhkYo9EWIqvci+9j4MHvex+6zP+1YpPH+IG9ZN93qaKPIiACIiACIiACIrDLEDgJ4vLbcD3HhITNxazmlN2P69BTUb5rEsTm6u0p2zalZOwpR6TjEAEREAEREAERGDAC1OhCsLUIBpF9jKzjMCfPMoPZzeiJHxdjNVVVVlFRCuE3ZBWVJU5Y5iB/ZbC1GD92vB049SCbesCBNn78BKsbNBjthSyeSruJSaW00KBMlcC6ACwy6uuH2oTxE23/A6baAag3fOgwi3XEIGQnYZ9RZVXlpVbiLDEoMuNyB0IatGT0FdnP9HfGfiPIqI5GIxamxzP8nKFMDxg3b0dTkSVLsY/xfJEH82P5gf+Og48z44T8QH+Pb9wk1lGY9np8QpGI6Srk/5xeF7TnIKa+cly13bh/uZUiw5xxAwReLx5GFrMnMn8Tvr7Povyzx1TZkxBtPa/lB9bl9vuzqWX24BGVTvhmffru8vMtEF+9oC/vlybmMmNpzeCJzBeh7EvHVru2n0Dbh+czs29BpvPWBEXRq8aU2DS09Rz6+Y28SE0Wf4F3nhfXY8BCBrOX/3FohWPwIupch74x2A4F/Z6CnH5/QLm9jPIvYh/X5kVfCrXMQu4trkE5lifvm6eWu+xf9usaCN6ezQV0WvvCrJzIPA7K7X2HVRr7xe+J3xfjF8tjzv/Pfcj/YTvMsO7LsRfX67rM73pi1G//xfc2Df28B2wm4TPjL8he9mI2fl+eyPwWfFePvqXK9fMB1GP54ux0r05vcwrrfKjAOKEqaMPzQn1v5bVeBERABERABERABHZFAn0RmX+1qMPm4I21n+OBPa+n9raQ0Ly3feM6XhEQAREQARHoZwI5b2YM6IdB/IoHAwzBZzkR67BVsLGIxWLIbg5YFOtCyCzOwlc5DP/kEcOGOyF61erVNu/NN23evHm2BssJeDYjAdpakb28cvUqa8Sgg+0xiHXJhHV0YKTndets2bKltnLZclu3dp1rY9TI4VZaErUyDBBIu44gBO8w+kR/5iAUcQ5WSM05hP1G0I8SWHhQaOZyMD9YYT+j2WJzTIjYP+/B/FyRT/NT+Qxgb4C/EwblMpaZ8UqhkvFM3p+Zdhg9CXdTIOZ9ewrEZaTxUl4+El4VZw7OZdUuQ2ayF95AhBQTz4SvbxnTfhFVEOXPH5rLqoVDhAtmCw+ByFiaz+RgZjQ/1xbZIuRK5v7SQ9mLgyAw5pOHXdbxd5DlOxKvHtJCY0vev14bnH8EfbwAPtBsK4J+0GaCGd+MRXnrhmak5nq2F9+AdcX4sk0Z6+9BtjUzthlL2zb1z63I/7nl4HI7AvYQLMZ9nD0y6gRebn4VVhYU+bvG5+FBfB7KsTxbPwwPCe48JGcnQjuSO5bmRPC/r8hZcrDLtx5SYSPz3z+/J35fh6CvjNuWxty8+E9fjr24fE/L3n5H5MXlcdjfp5GtzqCY7X0Xv16Y2z+/nxvRz7o846God9thFc5uw1Xawh/eYH1weotrexR+J9ch61khAiIgAiIgAiIgAnsaAV7zUGSmRdgYXN9x/kuIzcxw3ptCQvPe9G3rWEVABERABESgnwmkIAgnMIgehWQKwHFkFSfjCSQHp+C7nLEEbDDWrlkNMXi1VVWUWSoZt/pBHLAvaNWVldbS1GAL5s+1pYsXW9PGDRaPxyCkwj4jlbJW2Ge0oc0gMpADEINb8Lkdnylst7S02NKlS235iuW2YvkytLHA1lNwxgXd8CFDIWAPRVsdVltbbe1tLc5GgwMU+mmR4a5+0rDPSFkmDf/iDCb0l593RhxbkxN/Z8B3l9GGq1LaITCOr8ttO4QiLT5TCPSycL2B146q2mTJwDpenNPFh5nrj85nRkOvLsQ3IPi+hCzcG/I+u9zAwekeg03HzRBFtydGQ8T0BgX88rx2+xr8hembzEznYRDC7zuqyk29CdU97ftsCM1d4y3gw9hI7wcEfZR5TJyKrUYWQCSmfzHtH3oLZutOymdbF5c5dyQeSuT0aXuZqc1Fwe/mgh68psfAu9kTjl/KP0h4qTFXdwKOn9YW9Jwuno6CwM14sqn777Evx+4qb+bPMWDlPUzwih2d/53xM/2bGfSOZlw6LOqEc/ch/4di+ilFdYq3FS/ze/7I9Db3u+VDhbuQvV3qPW0oLqhlERABERABERABEdgNCPCarTiRwusykxAoKlNcPgn2dFfvW2Yn441Dfqb4vDeJzbkrWY+M5iIgAiIgAiIgAiKwFQTSGWTYwgs5i/RjJ93hTxZCMT/5oFclIRxn4aFcDb/lYUOH2OKFb0JgrsLnSpdN7M+WI6N4DOwtAs6Cg57OQYjQ9EymjzKnJMTsNDKg/cxIhkpcGona4Pp6K4H9hQ/lGSxXDY/m8soK84ejVl9XY+s2NMDjuRoez6VWCpsMpjOnMxTPIAuirSyEcHaa/WXW86ah+NjiwMXxuAilRQGzXlcgA3hGXmCkrQKzXBnMrD0E4ufLuLh9ckPCDocY6Q0W6InRXXs8qocB2fI6aaei1P0wvp/dsazDnsXAgQvQB9pK9Fd8GxfaX4BfNNu8F/YgnBgcxO7U+rC9f3S04JPcl30O7cF2oafjCgMaxfL/YLDCaTA6zieAb3EXPYnMrEROQyGW8iHAgnYewybBux7rKb72FPuW+V0W9OJ8dvd8Vzfnx3w2/Jt7C/5SOUhjcfT12IvrdF0e1Qd+HCPQE+OZDd5TjIeIjv/Ce9pUWPc3DDhIiw2WpLd1Rf73XCigBREQAREQAREQARHYTQg8iWSJ22Fvxmu+T8G6bd98YsJcisyLYOGH66d3QmQ+F2+4Md43Ije/H9ejFJs/nn+DbDc53G3upoTmbUaniiIgAiIgAiIgAkEMwpfKwleBehjEW0ptzkoDCxSbM2kK0RmrhQC8z6hR9jqsKsoxQF9ZtMRCuEgLY1DASkw5cZmezrDgwHpqvx0QqZlpnIV3Mq0vKpERzeEGyyAa18CHOVlTYykIxxS70/BujmLQwJLSMotD+KaYXQUxu6K83Hk0s2UK1Vno0lkfO5uTlT1RPAtV3A+rjZ0R+2GwP2bKUoh9Ht7ML8PPlnF8PvvY69OJ+EyhmbYap2PuicHH5n19vXLevK+Jo6/Ap/gjM1pd1inrDgaGsSUBmwAhkQMF/g0Xx9sTx+GC+6EjK+2+1Ul7BMdHgZx9p2BLgf0uCMH/PBwPH3qx3+i6757l3M6l+A1fgUEDX8AgfQwKncxUHodjmoKbghvzAqjb2OXP5rRQj2nR2Ieu9uZeEQzid8eI8UeNQJKvC/ZpGATqzUWsi9C8+dKba2nTtlC+P5vWdF9KF2V85/Kbu5fp8A6k+6bCmlfyD03eBhsRz3qjsFELIiACIiACIiACIrCbEOAbeRSZGRx3g9nLFJsZv4LInMS6t2OQ7/PwBlxxFIvNv4HYXNfH693iNna35Z1zR7W7UVJ/RUAEREAEREAEeiQQhBdyBjYXfmQLU2D2hDC/E9WQyYhM5TAzlKGqjRgxwoYOGYzM5QASiNOubDSMbfBsZiYzhWAKwvRyhjxtGQzsl0A5tuXDVBYpsQSsOYLIaq5ElnIW13a05khBaKZgHAiEzY8ddcDKg17NNVUVVoKBA7MuKzqBejk9nPmV1PpyXcy6uiwTRCb0zggym4qsUYrIz8FW4eXmnLD79vrOF6onDA7bj+DbuxAq7UMYyZpBOwLaRGxPXI1sY8qxw9HW72Gf4Xn3ss1HsJ/tFZrZDv2eL4KvMicGXx/87eKYs4egCwUv3D+Zv1h3BbbzzwMY1M4Tmb+4T9QuxlSccHzXKmba9ryT+RDCe4s1ec19bJes4DVIAaY2W7wPr42led/o0RFKy2bjIOIvSaTs3Xhw8P0++BWvivfeH28f/T2PQlHngIjMsn8TWTocYb1rzMLvdUvRmBfKe8qi3lJdbRcBERABERABERCBXYHAcxuSdlteZL4E2cqrkHHwCIRnis0MCs8nQmTmGCI9RbHYvMbLFOmp4B6ybvvuTPYQCDoMERABERABERCBbSMQgo0FRd5NEwVciG4QbmmpwUzlaBkEYgjCddVVNnHcOJexnIB/chDicjQYhhVGxCrQDqdyZDyXYYoG4cvshOesBdkexOwwxC8n1aUgCkOQLkEGcim8mytLIsiKRjYzBvcLoc0s9htFm4PqByHLOYL9oU8QrJNJTBD4kklkHWBQwUQqjnkcAw9ynjAf2tpZcXzep/lRWFdQeGWG89TKnDDp9WkfiJsVeSXzJmQCM47J+/l6ZbZ2zgvj1fRJQHwMYmyxyMx1LyLbeXviHvTzLU832hkvNnVqZkpl0H55YLkbCJAb5uQzjzsV2o4P0/J+yPSHvhTWHMUCMAcKpDDcW0yHgfWqvDhcXOYZ3GR4dhKT0f/ioOR6L8TrrkG/7WfzA8B4lhxTkcHOeLwh5W5Mutb5LW5aDn2q0U5/oTOzruV29Ocx0dxjo7vxsKErrUZkoz/Wg4d01z79bGqZPXBEpV3Zjw8Ruu5Dn0VABERABERABERgRxF4Ad5rtyyDFSB2cCGsMI7Hm3rnQ2ymRQavozkdhOtCL5mit35QbKZn894QEpr3hm9ZxygCIiACIiACO4hAGDYYBWGZ4jKmLO0ynNAMQRgZzVFkPcc4iB/6MHqfUW6QwFhHm8tgDkIBjCAbOgqRtyQSsjJkIpdCHI5gAMAQ1oehEoe4LRx2nswlaCuM1GTWCwVRD+tLwyVWhvXQtNGX3CB/QQjVw4YMQZtRlMdFHcVwDv7n+khhPOOypLGEXjG1NetsN3YQpi02e2z+wtPLET0Y9g7F4qjXAAdyY3jlumY9e+X6Oi+2UZjRZURsisR/RmYwIw5+xeHZSyzvQZAtLncgLBOYuLEYf25b0nlgwZWo6yUPT63oLKoXt7EtyyV5j4tmgFqd90ZmOxy85fLXNtmEtPdi//DB11s61VuIjn5pTrvrCn2aaQfSNb61oMN4M+JFO0TmD8GD2fuuLoeQz7gQ2S58kMBs4SvQFwrfXjDTmw8RWOdIsNuZ8dlxpW73fBDxeVireP1cAhbnT2vuU9c+iuO7cnqLfX9ujl2fKqmQCIiACIiACIiACOwCBF5CUsDNSzvc3cL5GIy6+A2v8/JiM7v5Bt7+mo1pS0Gxef98wsGWyu7O23fuFezuTE59FwEREAEREAERsGhFpROaiYKCs8uBhLDoc0JuxgJYR+sM2mp0QGyuhHfymhXL81nEScuEQ/BMxmCCEJTdQICY+yAwB+CjzDb4RDwEsboUWc6QsJ3AnLPogAEG2qQ1ByMFETmNrOd4HFYaGDwQ6dRWP3ioE7qDaI+fsyjvg+2GG0AQ802BNpCNUFpZvWnVAC9xwDXPqoC7psdbT3EiBM77kfXsxWHbmdFMMXtqqd9mIIuXFhmPNDRaHQT8FRCGKYR63tEUPt/zfJPdfXilG6BwZDRgzPz9L/yi/4vs2ynItr4L27oGj+tgTK9BnKTtx2/hjTwajbaDN8VnBvdx6tCeXzXs2l5fP78NnG5ZlXCC7SkvNdsE+DM3QVT2sre947phRU78/vDYzrYpLPdu1KNfNW8bPP2Yv7ZvYnDDnoKMPvpGq8s6r0LB5UVZ01fCr68efWBwgMerMBjMN5C5/Cq4HPd8s7NAYSa7lzHNTOwrx+aEXldpJ/w5sjZop9aF7D5kcj+KzPZH0U8eP4+TMQoeg8uQ2by5mFsQ+bd887W5drRNBERABERABERABAaSAMcw+X1eZD5nWMTeAQu7rkGxmfc+D+VtNOjZPHkLQnKFN+BH18b2oM/Fd1l70GHpUERABERABERABAaCQElVDbKEsxB3U25KYp6E0JtKcYL4C8E4CpG4EoMBxmJxZ6URgOUFTTCSThTGYH6wuuBEIdkNIQiBk3UTCdpaQCzEgICxWMyam5qspaXZ2tvbISjHLeUGCsxaEmU7sD0Ba4yODthgYGDAJNqrRN+gKuP/AQjRHJiQmcwcaDA32CD35f6H3fohcJdUovxOjIPLN12WndBDxiy7dmzReoq7WxhLrtvReJnIxRt+fkCFE4q5joLqmxAHKTIfDeuOR46qMmbwMlZCOE3kk29phTC6aDCTtl4yg1nvhoPK7XQMWEiRkkLqLGQyeyIzj+FO+EKPhNjdl2AbPYU34J637eDqkH1ldIkTsSmMUvCkeEzrkR/tW2rfnJATcal1z2/3pNNcbfb1rDznteDhicw83r8eUmFHQYDtGvTKvmpMiXtY0IJj9ERmCsbXY38f6zLK+FkjInbz1PICW5b3ROa3Irv7zkMqrbaIL/fX12Mv7ltPWfE9/QaK6xQvf29KmV0DEZ7HxyApHtP7h4btMtxcMfAcQSECIiACIiACIiACewwBXhvetASZzLhOPBPXPO8a0l1k9g72XFwPnYTrRg5LQc/mvmQ2e3X31Llv5foG4OgeJ8/qvk5rREAEREAEREAEOhO4f0rnz9v7KVDePSt0e9vc0fWXznjdmlavcj7I3JdLFobAnM2mkEFMgSxtDRs32PpVq8yPzOJlCxZYsq3dasrLbVBtjVWWlli4BFYZsMsIYjC/LDyYW5qbbf269chSTlt1TbWVlpZbW1ubNTY3WgTCdXVdjZXBl5l1KFDHE2knNDe1tltDc4vFIHxOnnqwZQMhqxs2DP7LUcugM1l2jp3KB9YgazpjlXX1NmzSVG91n+feQG+H72Sbgz53eDMFN0B1XdyRtiookeOgHnoiJXRTmwEPCg7o1lX83Exz3TYl0NBKCL5rsR9aHI/AoHgVW6N6dmtxyyu4z2UQthuQeTsBQn510cCJtNHYCNuKSeVBd6yffL3VnoJ1xbmwMfnqfmXOc+9NeEdz2Mr9KvwW8YAU7fbOZXG7fnGHE2LvgyjPi+oFGCSvEcLxvthfXwZqpLffXIxMGPJnbXQpMtt30UwXHJK1479NDuzI+MbsNrsHGTxvg53Lz+C3rRABERABERABERCB3ZkAs5hvwHWdF6dDYH4vspn7En/DYIHMbA7hevFTeEi/Xy+ZzX/EYNjPYSyRK8dE7RAkRgxEvJwfc4XjvfRHpFs3b6HWPSWjP/aqNkRABERABERABPYaApX1Q6xh+QpLQ0T2QWAOOjEXWcnZpKVhfwIys20AAEAASURBVEHxOBMNWqiq3PzIdq4ePNjWLFqKrGRkICNjIBTNQMzLWDwNSwgMzJeBaByLw1bDhyxYDOoXCpWibR/aQwZvSallQgFrSSStw+DzHA5YKIzX1mCh0YE6MYh2Te1xGzxipEXKINpDYE5nwxCTQ5hDYEY7WWfLgQxn+Dnn7DkyVl5bv9d8X70daB38JOoi3S8Nqa8eRC+I7YwwGhoDIXXMADpCcJ+077Ae3C6GwMqCU29BYfmAvCd2b2W6rucjjAnw196a4H4O7Ae+W7PPvpT9wbx2uwMe3Z4tCpOaPZGZDyXuxc0UY/8uAyP2pW2VEQEREAEREAEREIFdmcApsMroq8jM42BmM3NZHoQV3S8XxTYrNu/Kx90ffet+N9EfraoNERABERABERCBvYZA9dCh8OBttSQG+AtANAsgIzMN3+V4Og5Li3Zrj3VYMpGweEe7lYXCsLxAtnMwbEkIx43tbZYMpaADRjG4HywuIDKnIBj7IQiHI8h0RvkAspJD8HIug1zsTwYslkpYK+wz0h0QtTGAYCQaR5kwrDZgoZFJWElVqdUNqbfS6gq3jyz6E6ONB977p4t0zuMZdhnI0KQwGIqWWEX90L3m+9KBikBfCBw/KOyEZlqdXPlai31gnxKrQeLNzKaU/XhJbsBC+opfisENFSIgAiIgAiIgAiKwuxOI5PMPRiAR4UwM/re1cQ4G+2NsTmxuwqDpDGY+76khoXlP/WZ1XCIgAiIgAiIwgAQaIf7+9bZb3QB98NCAR3LCOuCv3BZrg9AMURgqbyoes2oMHjiorNyqkZk8dvhIG1xWDeE3NxBgAPME2knCyzngCziR2Q9RmiJ1EBnLIQwqaEahOuVE4gAG+YuGI1YCoTiJwQAb4k14tT9l5RXVVlFXav5I1tIQn9M+eD2n/ChD14wAxOUQ7DwgWlN0RovVI0cNICntSgR2DwL0ov4ovKRvXBG3Z2Eh8iwGOiyOMtwg/XQyHhHtolYfxX3VsgiIgAiIgAiIgAhsicAYWEvwTbMVsFf72YJ2q+SA4tsQbIPWaL+AZ/PhVZvsMZohMs/CNRW3c197akho3lO/WR2XCIiACIiACAwggVPPPs9u/MVPrWHtOgy6l8Hge0mIzSnL4BqKgwH6YXeRhhVGOwYAXJ9sskQsYeXwaDZkPtdky5CRjEEDQ0EnRscxsF8Wmc1IWIYYHHADCGYxGgcH7IujXQ4QmA1kLFqBehCnsxCXYbgBaw1OaQuWRrG/kLUnMEBgOjcYYJrlkH1JR2ani2EZ/4eYHbUh+0hoHsCfyi67q/Mhqh4Gq4ypW2GX8ZaaoH02HbXBsB3ZE+MTGPSRGT33QGxeAJsbDvq4D7J8JpYF7fThYSuRyLwnfu06JhEQAREQARHYKwmUYxyK94+K2p+WxZwgnBsGedtRcIDA5+HHXBwUmbkP7mtPDQnNe+o3q+MSAREQAREQgQEkEILFxaUf+7h97ytfgu8xsoYhCsNAGdnIcWtuabCSshIMDgg7Dfgjt6FfqcqkDYeHsx8iNH2cY8h6DvpKLRwOWxCDZyQ6kIXcFqPXhUXh00xROgOxOQEPZ4rJYdQrhzVGEJYazJxOwJ4DsjYG/YtYpKTKUj5kPmMAuCSyCXyZDARvZDfzVTUfPKOxzSBss4/Dxu+T6+sAstKudk0Cx2HEcE5bE/Rj3lpP5q1pf1coy9dHPzm+ZFfoivogAiIgAiIgAiIgAjuUwBFIIphcXooBsjF+TM7lot/2R2sOZjLvySIzYUlo7refjBoSAREQAREQgb2bwIXv/7A99cAD9sxjjzuBmPYU5dFyKyuvtAAG7aNfczLRbm1xjObcmoU/c7vVJTtcmWAkbNGSqJWES5ylRTKesli0jbqwlcNqg77KzJAO+kOYIlZaErFwEAP8QUROwNO5vR3+zCnYa5RRfK7FwIABS6YgaMMcI4F9WBBLEJb9eAUuHKbIHLaaQbVWP2zE3v2l6ehFQAREQAREQAREQAREQAQKBCgEH7AHZxwXDnQHLUho3kFg1awIiIAIiIAI7I0Erv7u9fbRs8+ytuZWy0Acpp1FB3yXg/DQYLZydXU5hGQKxhkkPEN8RoZySwx+aCE4J8OHOQl1OACLjVAg6CwwsnjnjJnKAX/Q+SuHMA/BFiMQhp8zfJkTsMdIpjJIfMaAHb6olZaNhNA8xDrakc2MDOYs2mzv6LBQic+CuGCk/QazpP30Rhs3YW/8inTMIiACIiACIiACIiACIiACIrBDCOy5piA7BJcaFQEREAEREAER2ByBkWPG2lev/4HV1FRj4L8Kq6muskF1tfBCDsK6IolxAjEABrKXy0tLrQJ2GmXIYk6kktbS0W5NHW22oaXZGtuaDCWtpKrCyqorLRsJWQYicaAUA/9VYfCxylLLBP3WisxoZkW3o74FI8icHmRV1UOR7VwDARqe0OkQBOUSZC/DTiNcjj6UYkDBKDyfozZpygFWUgqPaIUIiIAIiIAIiIAIiIAIiIAIiEC/EFBGc79gVCMiIAIiIAIiIAIegbe+81320fXr7S9/uAkZxbC8QEayBaptY9NGiL0BiwQwtEYyZmHYWFRXVVky1mZxeDk3tLYg0zkI+wxkJ3e0wmeZ/swlFobA7Ed2tN8fsISlrRWCdBtsOGLxmMUSHZiQNc19REss0NpkwSiyoSO4xEH5QDBoFcEKeDqH4RFNy4ysTZw4weoHD/W6q7kIiIAIiIAIiIAIiIAIiIAIiEA/EJDQ3A8Q1YQIiIAIiIAIiEBnAqdccBEsLeL277/fDtsL2GZA6E1mIBhDKI5C/A2VBK2ustLKMKifPxqytrYWa2lpgd9yKwbrC1pzLGZVEJ9rq2qtIlRhGdhjBIMY0A//a4ddRkNroyufhPUGjDWsKdFqKzYssrZXs1ZeUWkTJ022yZOmWFUFsqlhw5GFhQfsnG3M+DE2cszIzp3djk9+DG6Yyfooc+PYFCIgAiIgAiIgAiIgAiIgAiKwaxDgPQqD9ywDFRKaB4q09iMCIiACIiACexmBMy75ECwvsvbHm35kvnY/BvZL26DaaqssKbUIxNnqslI3KnFJKTKRYY1BP+c4PJpbYaPRDpE5mU5jfdgCGPgvmYQ9RgKZ0PhfW1ubrWvYaBsxIdHZqmDT4S9JW2NiiS1dvcbSK/3WklpucVuHzOVhVlZWY6WllXbIQUfahIlj+vVbCKEDcVy3xdOw+kD2tkIEREAEREAEREAEREAEREAEdgUCvEdhBHnTNEAhoXmAQGs3IiACIiACIrA3Ejjr/MusFF7L113/KRtcW2ejxw63KDKWE43IXIbw7CZYaFREYW8RiVoZfJM3rt8AEbnR1mEeSyTh2dwKQRkWHPBiTiQTsMzosNb2NktjMMDKygqrHFRllRUYWLCy1aqbg9baGkN2caPNX/2yLV4PL+jServs4s/Zvvvu2+9fAcYktDhSBRoSEJox4KBCBERABERABERABERABERABHYFArxHYUQG8NVLCc27wjevPoiACIiACIjAHkzg3SefawccdJjd/+AfrKNhhaUaOizEgf2YrYzjDkMWjsBfubKs3E2l0aiFQiHbsGGjNTQ02IaNG2C/XILhAQ02FSlLYSmEwQWrK6utblCtVdZWmK82a/uNH2mxbJ3FYilrg9gc68ja6CGH2hlv/5gNG7TPDiHMLOaWVNY2JDM2vGQAr+B2yNGoUREQAREQAREQAREQAREQgT2FAO9RGAP55qVv5fqGnLzdheLJs7qs0EcREAEREAEREIFuBO6f0m3Vdq0IlFduV/1dvfL0GQ/bY/+5xSrSPqvBIH3xtpiVw6u5tKzMDd5Hp+NUNo3BAVPWgkzmxqZma4ZVRhDCsisDYTcB72e+/VUK6w3abiQDcUtXtVtkTNYSoYT5swErDQ+yQ0a+z/YdcsIOR7I6nrZExmejSwJWH1FW8w4Hrh2IgAiIgAiIgAiIgAiIgAhslsA6+Pst6UhbGIOhD+Vo7P0U6dbmzbakjObN4tFGERABERABERCB/iRw4NR32v5TTrS50x6yRS88ZvGWdvNnsm5y1mEYqMIPa40IMp5rK6ts1MjRGGgvAwuNhJVVlCObOW0NjRutpbXFqDb7MWUxyl8sFbO29g4LQrA+fJ+z7Ih9zoBkHerPrvfaVmXQb+vxWtoKZFJXQRAP+yU29wpLG0RABERABERABERABERABHYogQTur3hvghsm473KQIYymgeStvYlAiIgAiKwxxFQRvP2faXLZr5kTYvmWGztUicaJ1KwveiIY1DApPmDQQth4MBgOAQ7jJhZKID1cWtubbKORMyC2B6NRsxfajZo/4k2et9DbMKgo7evQ9tYe10iY0gYsIqgz/YtD+CSTiECIiACIiACIiACIiACIiACA0uAthXzWvF2KHRmvHBp9RxUph9jSxnNEpr7EbaaEgEREAER2PsISGjun++cWcmtq5dY69qV8HFea/HmJovH2zHoX7u1d7S7wQA70knnzxwuLbPKusFWO2SkDRo22gaPnGh+f/9eQG3tUSFpwNZAbKYNGsXmsaV+ZTZvLUSVFwEREAEREAEREAEREAER2GYCzGRe1J52InMIlhlDwgEk82xzcz1W3JLQLOuMHrFppQiIgAiIgAiIwEAS8EEorhg+1k0Dud/+2hcv4OoxnPM6+DUze2AW/oyIBuXZ3F+A1Y4IiIAIiIAIiIAIiIAIiECvBOjJTLuMVNZnFJnr4cu8M1JxJDT3+hVpgwiIgAiIgAiIgAj0nQAvqpg1wNGdOzDYIQffWB03qwv5rSbsswgGMtwZF3t9PwKVFAEREAEREAEREAEREAER2B0I4EVKi6ez1oCxYnj/EecKGPjRLqMOloM7675DQvPu8OtRH0VABERABERABHYLAi6zGT5o7bjoa07xgs9nK3HVtxKCs0IEREAEREAEREAEREAEREAEdgSBMLKYOfBfKZJbdmZIaN6Z9LVvERABERABERCBPZIAL/BKAwGLwSetA6IzMwxS2axl8CqbQgREQAREQAREQAREQAREQAS2h4Dfl7WgD29NInW5BPce0Z08Zo13LBKaPRKai4AIiIAIiIAIiEA/E4gixZmTQgREQAREQAREQAREQAREQAT2dAI7y7JjT+eq4xMBERABERABERABERABERABERABERABERABERCBvYaAhOa95qvWgYqACIiACIiACIiACIiACIiACIiACIiACIiACIjAjiEgoXnHcFWrIiACIiACIiACIiACIiACIiACIiACIiACIiACIrDXEJDQvNd81TpQERABERABERABERABERABERABERABERABERABEdgxBCQ07xiualUEREAEREAEREAEREAEREAEREAEREAEREAEREAE9hoCEpr3mq9aByoCIiACIiACIiACIiACIiACIiACIiACIiACIiACO4aAhOYdw1WtioAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiMBeQ0BC817zVetARUAEREAEREAEREAEREAEREAEREAEREAEREAERGDHEJDQvGO4qlUREAEREAEREAEREAEREAEREAEREAEREAEREAER2GsISGjea75qHagIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAI7BgCEpp3DFe1KgIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAJ7DQEJzXvNV60DFQEREAEREAEREAEREAEREAEREAEREAEREAEREIEdQ0BC847hqlZFQAREQAREQAREQAREQAREQAREQAREQAREQAREYK8hIKF5r/mqdaAiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIisGMISGjeMVzVqgiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAjsNQSCe82R6kBFQAREQAREYDcgkG5t3g16qS6KgAiIgAiIgAiIgAiIgAiIgAiIQGcCymjuzEOfREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEtpKAMpq3EpiKi4AIiIAIiMCOJDCsrnpHNq+2RUAEREAEREAEREAEREAEREAERGCbCKza0LjZespo3iwebRQBERABERABERABERABERABERABERABERABERABEdgSAQnNWyKk7SIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgApslIKF5s3i0UQREQAREQAREQAREQAREQAREQAREQAREQAREQAREYEsEJDRviZC2i4AIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIbJaAhObN4tFGERABERABERABERABERABERABERABERABERABERCBLRGQ0LwlQtouAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiKwWQISmjeLRxtFQAREQAREQAREQAREQAREQAREQAREQAREQAREQAS2RCC4pQJ7y/YDSwN2eHXQppQHbFSp32pCfisP+izi91nAZ+bDtLnIZs3SmOKZrLWmstaQzNiy9ozNak3by40pm96e3lx1bRMBERABERABERABERABERABERABERABERABERCB3ZbAXik0VwXMToCofFJ9xCZXBKwu4jfoydsVFKKhS1sQDZVhYUjUb/tVmJ00JNcs9GfbEM/Y7Ja0PbQubk9AfG6S9rxdzFVZBERABERABERABERABERABERABERABERABERg1yCw1wjNEyH8njEkbCfWh2xUCZTmAQ4K2fXoA6fj0QfGso60Pb4uaf9ak7A3Y5kB7pF2JwIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAL9Q2CPFprLoO5eODRkZw2L2kjYYexqQcH70n04RW05bDbuWRWzu1YnrY3pzwoREAEREAEREAEREAEREAEREAEREAEREAEREAER2E0I7JFC88FlAbtsVNSOHRRy/spb8120tbZaK6aO9naLd3RYrK3dWttaLQvxNwsj5kwmYx1tbZZOpy0YDFq0pMSCoRA8nH1WXlFu4UjUwuGwlWK5vKLSrevL/imEf2p8qX18nNnT65N287KYvdYmb42+sFMZERABERABERABERABERABERABERABERABERCBnUtgjxKaj6sM2hVjozYV874ExeKNG9ZbY2OjNTc1WcOGDRaLxQyKMgTjiAUMWdAQluOJBDycfeb3b8qKpshMQZniczuEZ9Zra2lxu02mUhYMBCyAKYgyFRUVVlVTbVW1tVZbV2d+rO8tOPDgCbDW4DSjOWU3LIrZU5grREAEREAEREAEREAEREAEREAEREAEREAEREAERGBXJdA3RXZX7X2+X4eXB+wz40rtQI7yt4WgILx2zWpbv26dNW7c6LKSKRYnICa3I4s5mUy6FmheEQoEITb7LACBOQ3BOQ0BmRnNFJzDzGKm8Iy6WazjegrMDH7O5kXpLMTspoYGt6/s/AWWQfna+kE2aMgQGzJsmEWjUVenpz8UzH91ULlNx6iBP1/Ybi+3KsO5J05aJwIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIisHMJ+Faub+jREPjkWTu3Y33Z+2DI5FfBbuLtg8NbLL5i+XJbhWkNRGYKyyEIxZyYmZyCQEyBOR6Pu2V+pnAcDcECI1ri7DGY0cwy7bDTSGHO7bTLCKB+iBPa4naKzRmIyxShKUYz65nCtGe7QaEZ2jUmnytD0Xno8OE2fPiILR7D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VhPLz49HuUP7ppyJE8T92pKQtDFI0EDQwLKjgY31TDr35rtto+12kb3VbCE9m/M0iwigGVvD4CaAHoOsDATXyk4DJvlgqNuhGNgMAI2FYuZNmsDjNJWD+iJLRj1PuQfyteRpNlK27FiGZvFkqM5MgdDZKgt8Cu9yx/xs61aSaysV51jHwmxrX5BpxTlZNuKIY+yx9z5fpkDmX3/91ZOV9ek30Fbp098GDRmqXBWr2K6779kkeRnP/eGbbmHn/O3clB/6a6+97uf33e+A+HmAuuuuv9HWWGsd6646B6+6uvVcpa9tsLF4au+4K16Ojf/97wO/fuTRxzY5nmqnLfUmXo+9on/9Bgy2AYOGaHBimB11zHE2ZszYxGLz3QZk/JOoD9ZdfyOvp//AITbyyKPt+RdenO91yScZ8CDCdbvtd3J99+0/yOs88aRT9L45rknxX375xXVz6GFHOGh62ulnuE4HDl7N9Uq+gh9//KnJNal2LrzoYq8nSip80cWX+D73kyzkg9hxp1398xoiPaEz2gVcTxbu5fobbrLNttzGevXuZz169TH6xDtCaweI+R2SZJfvRveevf172HXlnrb1ttvHI4Rpt7X3wPsVnwufMZ81dfGdvve++/29M/EeuC++23w/SDxJwmPu94orr44X+27UKEP//E6oj+801yUnqpwwYbxfs/rqQ+PXRhvFSpodSb3e71slBIrUz596bEH15CjKef+dutse23Z1eqGU5WnDX8BTng0HgwaCBoIGggaCBoIGggZWOA0s9YhmNNivX385JPvbvffeJRCU969YDC4vwyTlY2os72ROZYHDqUgluInBUImaYAEsg+NYe46vKkDYQdtqRQhnpBMJVW159XkeWaXLBSZzHpdY8LMIkmuILlYdOL60V6sXzjo5yERSV1eJ97lC25lVipzK9ihmj16mL4q6duoMXU9/hOm6KHZYznWM+7lSESPV4o4meVGa+pqdJ0BcjnksglsRWvRf16s5B5uJVgYABixPE2icm5dv+YXFiu7Ot4qyCjnicszliDt1hlqL3lfhr9QV3gfoQxxY9lCyWAQQ+2mq0yv3XkIJ0mC9e3W3IoEEy4PsvfeeBl9gJEQ3vyqn+/X/vBEd8vVee+4R3yfqZy8NZiRHEw8btrptteUW1q9vXxsyZIg9/Mgjduutt8evWxwbt9/2L09eR11w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bxkkdWtyUcj80yNYUxIgARLI/wS27d6b6UlQ0ZwpHh4kARIgARIggdwlQEVz7vLOK6VZRbOtT/uWTdR/cy9dAI6+mC2TgvQL38prN21Tf80HA55Wq6b11Xq1vt/j8xavlJIliwc87jcRA/MkAVz7v42boi5ytknd2nHSpV0rU88ZC5bIuk1bpX6tODn3jG7SorH/vpAnT4qV8iKwbcdO+XDESNm6fadXeHZ2SpYorveI3uqGp0V2smFaEiABEiABEgiZABXNISNjAhIgARIgARI4fgSoaD5+7I9nyf+u3yQvv/+1LvJXSgacd5Z0atPseFaHZZMACeQige279sjU2Yt0wb9FknAo0ZRcVhf7O6lDG/Xf3EaqVq6Yi7VhUTlFYNeevbIv4UC2sy9evLjEVa0sUVF0ZZRtmMyABEiABEggZAJUNIeMjAlIgARIgARI4PgRoKL5+LE/3iWvXLtBalWvKqVVwUQhARIoXASSdVHHnfF7dWHQ9cYtCiyYK8eWNwsAFi4SPFsSIAESIAESIIG8TICK5rzcOqwbCZAACZAACfgQoKLZBwh3SYAESIAESIAESIAESIAESIAE8gSBrBTNfN8mTzQTK0ECJEACJEACJEACJEACJEACJEACJEACJEACJEAC+ZcAFc35t+1YcxIgARIgARIgARIgARIgARIgARIgARIgARIgARLIEwSoaM4TzcBKkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkED+JUBFc/5tO9acBEiABEiABEiABEiABEiABEiABEiABEiABEiABPIEASqa80QzsBIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkkH8JUNGcf9uONScBEiABEiABEiABEiABEiABEiABEiABEiABEiCBPEGAiuY80QysBAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAnkXwJUNOfftmPNSYAESIAESIAESIAESIAESIAESIAESIAESIAESCBPEKCiOU80AytBAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAvmXQHSgqteoFBvoEMNJgARIgARIgATSCGzbvZcsSIAESIAESIAESIAESIAESIAESKDQE6BFc6HvAgRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAtkjQEVz9vgxNQmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAkUegJUNBf6LkAAJEACJEACJEACJEACJEACJEACJEACJEACJEACJJA9AlQ0Z48fU5MACZAACZAACZAACZAACZAACZAACZAACZAACZBAoSdARXOh7wIEQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQALZI0BFc/b4MTUJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJFHoCVDQX+i5AACRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiSQPQLR2UvO1CRAAiRAAiRAApEksG333khmx7xIgARIgARIgARIgARIgARIgARIIFcI0KI5VzCzEBIgARIgARIgARIgARIgARIgARIgARIgARIgARIouARo0Vxw25ZnRgIkQAIkkA8J1KgUmw9rzSqTAAmQAAmQAAmQAAmQAAmQAAkUdAJZvYFLi+aC3gN4fiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiSQwwSoaM5hwMyeBEiABEiABEiABEiABEiABEiABEiABEiABEiABAo6ASqaC3oL8/xIgARIgARIgARIgARIgARIgARIgARIgARIgARIIIcJUNGcw4CZPQmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAkUdAJUNBf0Fub5kQAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkEAOE6CiOYcBM3sSIAESIAESIAESIAESIAESIAESIAESIAESIAESKOgEqGgu6C3M8yMBEiABEiABEiABEiABEiABEiABEiABEiABEiCBHCZARXMOA2b2JEACJEACJEACJEACJEACJEACJEACJEACJEACJFDQCVDRXNBbmOdHAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAjlMgIrmHAbM7EmABEiABEiABEiABEiABEiABEiABEiABEiABEigoBOgormgtzDPjwRIgARIgARIgARIgARIgARIgARIgARIgARIgARymAAVzTkMmNmTAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQQEEnQEVzQW9hnh8JkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJ5DABKppzGDCzJwESIAESIAESIAESIAESIAESIAESIAESIAESIIGCToCK5oLewjw/EiABEiABEiABEiABEiABEiAB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gZ4Y5CtdghtLjzBf6U4rFC++axxafSVQ1S/ams6LQnNNibE9CZAACZAACZAACZAACZAACZBAXRCo6u/fc0ZoBmwIxMYUo8i/eU/aHvlq8yIVnL+UpJS9EhkSLK2bR0oTzfLePDhaerY63ywtmroywtvoaGvHURc3kNcgARIgARLwbgJV/aKt6egpNNeUGNuTAAmQAAmQAAmQAAmQAAmQAAnUBYGq/v49p4RmJ3CXC3MjOan/th/ZJgvWL5D1+9ZKi9AwGZgwQM5re4HEhrVRUw1NCmgcm+lj6+THbRIgARIgAReBqn7R1pQTheaaEmN7EiABEiABEiABEiABEiABEiCBuiBQ1d+/+uH6c7PYdHY+6tDcsUUn6XhxpwpB2LYVNuABEiABEiABEiABEiABEiABEiABEiABEiABEiABEjiHCTAb2Dl88zl1EiABEiABEiABEiABEiABEiABEiABEiABEiABEvAEAQrNnqDIPkiABEiABEiABEiABEiABEiABEiABEiABEiABEjgHCZAofkcvvmcOgmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAl4ggCFZk9QZB8kQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkcA4ToNB8Dt98Tp0ESIAESIAESIAESIAESIAESIAESIAESIAESIAEPEGAQrMnKLIPEiABEiABEiABEiABEiABEiABEiABEiABEiABEjiHCVBoPodvPqdOAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAp4gQKHZExTZBwmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmcwwQoNJ/DN59TJwESIAESIAESIAESIAESIAESIAESIAESIAESIAFPEKDQ7AmK7IMESIAESIAESIAESIAESIAESIAESIAESIAESIAEzmECFJrP4ZvPqZMACZAACZAACZAACZAACZAACZAACZAACZAACZCAJwg09kQnp9PHwZRjp3MazyEBEiABEiCBGhGIiQyrUXs2JgESIAESIAESIAESIAESIAESIAESqDkBRjTXnBnPIAESIAESIAESIAESIAESIAESIAESIAESIAESIAEScBA4axHNjDBz3AVukgAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkEA9JnDWhOZ6zIxDJwESIAESIAESIAGPEThxolD2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"/><path id="Rectangle" stroke="#C06334" stroke-width="3" d="M1.5 1.5h714v33H1.5z"/><path id="Rectangle-Copy" stroke="#C06334" stroke-width="3" d="M1.5 43.5h230v169H1.5z"/><path id="Rectangle-Copy-2" stroke="#C06334" stroke-width="3" d="M241.5 95.5h473v128h-473z"/><path id="Rectangle-Copy-3" stroke="#C06334" stroke-width="3" d="M241.5 333.5h473v64h-473z"/><path id="Rectangle-Copy-6" stroke="#C06334" stroke-width="3" d="M241.5 228.5h473v101h-473z"/><path id="Rectangle-Copy-4" stroke="#C06334" stroke-width="3" d="M714.5 47.5v43h-473v-43h473z"/><path id="Rectangle-Copy-5" stroke="#C06334" stroke-width="3" d="M1.5 221.5h230v176H1.5z"/><circle id="Oval-5-Copy" cx="18" cy="17" r="12" fill="#FBF2EC" stroke="#DBAF88" stroke-width="2"/><text id="1" fill="#181717" font-family="PTMono-Bold, PT Mono" font-size="18" font-weight="bold"><tspan x="13" y="22">1</tspan></text><circle id="Oval-5-Copy" cx="18" cy="60" r="12" fill="#FBF2EC" stroke="#DBAF88" stroke-width="2"/><text id="2" fill="#181717" font-family="PTMono-Bold, PT Mono" font-size="18" font-weight="bold"><tspan x="13" y="65">2</tspan></text><circle id="Oval-5-Copy-2" cx="259" cy="65" r="12" fill="#FBF2EC" stroke="#DBAF88" stroke-width="2"/><text id="4" fill="#181717" font-family="PTMono-Bold, PT Mono" font-size="18" font-weight="bold"><tspan x="254" y="70">4</tspan></text><circle id="Oval-5-Copy-3" cx="19" cy="238" r="12" fill="#FBF2EC" stroke="#DBAF88" stroke-width="2"/><text id="3-copy" fill="#181717" font-family="PTMono-Bold, PT Mono" font-size="18" font-weight="bold"><tspan x="14" y="243">3</tspan></text><circle id="Oval-5-Copy" cx="259" cy="113" r="12" fill="#FBF2EC" stroke="#DBAF88" stroke-width="2"/><text id="5" fill="#181717" font-family="PTMono-Bold, PT Mono" font-size="18" font-weight="bold"><tspan x="254" y="118">5</tspan></text><circle id="Oval-5-Copy-4" cx="259" cy="246" r="12" fill="#FBF2EC" stroke="#DBAF88" stroke-width="2"/><text id="6" fill="#181717" font-family="PTMono-Bold, PT Mono" font-size="18" font-weight="bold"><tspan x="254" y="251">6</tspan></text><circle id="Oval-5-Copy-5" cx="259" cy="351" r="12" fill="#FBF2EC" stroke="#DBAF88" stroke-width="2"/><text id="7" fill="#181717" font-family="PTMono-Bold, PT Mono" font-size="18" font-weight="bold"><tspan x="254" y="356">7</tspan></text></g></g></svg> +>>>>>>> 540d753e90789205fc6e75c502f68382c87dea9b diff --git a/8-web-components/2-custom-elements/article.md b/8-web-components/2-custom-elements/article.md index 85434c75a..a84ed1192 100644 --- a/8-web-components/2-custom-elements/article.md +++ b/8-web-components/2-custom-elements/article.md @@ -3,7 +3,7 @@ We can create custom HTML elements, described by our class, with its own methods and properties, events and so on. -Once an custom element is defined, we can use it on par with built-in HTML elements. +Once a custom element is defined, we can use it on par with built-in HTML elements. That's great, as HTML dictionary is rich, but not infinite. There are no `<easy-tabs>`, `<sliding-carousel>`, `<beautiful-upload>`... Just think of any other tag we might need. @@ -12,9 +12,9 @@ We can define them with a special class, and then use as if they were always a p There are two kinds of custom elements: 1. **Autonomous custom elements** -- "all-new" elements, extending the abstract `HTMLElement` class. -2. **Customized built-in elements** -- extending built-in elements, like customized `HTMLButtonElement` etc. +2. **Customized built-in elements** -- extending built-in elements, like a customized button, based on `HTMLButtonElement` etc. -First we'll create autonomous elements, and then customized built-in ones. +First we'll cover autonomous elements, and then move to customized built-in ones. To create a custom element, we need to tell the browser several details about it: how to show it, what to do when the element is added or removed to page, etc. @@ -30,12 +30,12 @@ class MyElement extends HTMLElement { } connectedCallback() { - // browser calls it when the element is added to the document + // browser calls this method when the element is added to the document // (can be called many times if an element is repeatedly added/removed) } disconnectedCallback() { - // browser calls it when the element is removed from the document + // browser calls this method when the element is removed from the document // (can be called many times if an element is repeatedly added/removed) } @@ -115,7 +115,7 @@ customElements.define("time-formatted", TimeFormatted); // (2) ></time-formatted> ``` -1. The class has only one method `connectedCallback()` -- the browser calls it when `<time-formatted>` element is added to page (or when HTML parser detects it), and it uses the built-in [Intl.DateTimeFormat](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/DateTimeFormat) data formatter, well-supported across the browsers, to show a nicely formatted time. +1. The class has only one method `connectedCallback()` -- the browser calls it when `<time-formatted>` element is added to page (or when HTML parser detects it), and it uses the built-in [Intl.DateTimeFormat](mdn:/JavaScript/Reference/Global_Objects/DateTimeFormat) data formatter, well-supported across the browsers, to show a nicely formatted time. 2. We need to register our new element by `customElements.define(tag, class)`. 3. And then we can use it everywhere. @@ -138,7 +138,7 @@ In the example above, element content is rendered (created) in `connectedCallbac Why not in the `constructor`? -The reason is simple: when `constructor` is called, it's yet too early. The element instance is created, but not populated yet. The browser did not yet process/assign attributes at this stage: calls to `getAttribute` would return `null`. So we can't really render there. +The reason is simple: when `constructor` is called, it's yet too early. The element is created, but the browser did not yet process/assign attributes at this stage: calls to `getAttribute` would return `null`. So we can't really render there. Besides, if you think about it, that's better performance-wise -- to delay the work until it's really needed. @@ -149,7 +149,7 @@ The `connectedCallback` triggers when the element is added to the document. Not In the current implementation of `<time-formatted>`, after the element is rendered, further attribute changes don't have any effect. That's strange for an HTML element. Usually, when we change an attribute, like `a.href`, we expect the change to be immediately visible. So let's fix this. -We can observe attributes by providing their list in `observedAttributes()` static getter. For such attributes, `attributeChangedCallback` is called when they are modified. It doesn't trigger for an attribute for performance reasons. +We can observe attributes by providing their list in `observedAttributes()` static getter. For such attributes, `attributeChangedCallback` is called when they are modified. It doesn't trigger for other, unlisted attributes (that's for performance reasons). Here's a new `<time-formatted>`, that auto-updates when attributes change: @@ -242,7 +242,7 @@ customElements.define('user-info', class extends HTMLElement { If you run it, the `alert` is empty. -That's exactly because there are no children on that stage, the DOM is unfinished. HTML parser connected the custom element `<user-info>`, and will now proceed to its children, but just didn't yet. +That's exactly because there are no children on that stage, the DOM is unfinished. HTML parser connected the custom element `<user-info>`, and is going to proceed to its children, but just didn't yet. If we'd like to pass information to custom element, we can use attributes. They are available immediately. @@ -297,12 +297,12 @@ Output order: 1. outer connected. 2. inner connected. -2. outer initialized. +3. outer initialized. 4. inner initialized. -We can clearly see that the outer element does not wait for the inner one. +We can clearly see that the outer element finishes initialization `(3)` before the inner one `(4)`. -There's no built-in callback that triggers after nested elements are ready. But we can implement such thing on our own. For instance, inner elements can dispatch events like `initialized`, and outer ones can listen and react on them. +There's no built-in callback that triggers after nested elements are ready. If needed, we can implement such thing on our own. For instance, inner elements can dispatch events like `initialized`, and outer ones can listen and react on them. ## Customized built-in elements @@ -310,7 +310,7 @@ New elements that we create, such as `<time-formatted>`, don't have any associat But such things can be important. E.g, a search engine would be interested to know that we actually show a time. And if we're making a special kind of button, why not reuse the existing `<button>` functionality? -We can extend and customize built-in elements by inheriting from their classes. +We can extend and customize built-in HTML elements by inheriting from their classes. For example, buttons are instances of `HTMLButtonElement`, let's build upon it. @@ -320,11 +320,12 @@ For example, buttons are instances of `HTMLButtonElement`, let's build upon it. class HelloButton extends HTMLButtonElement { /* custom element methods */ } ``` -2. Provide an third argument to `customElements.define`, that specifies the tag: +2. Provide the third argument to `customElements.define`, that specifies the tag: ```js customElements.define('hello-button', HelloButton, *!*{extends: 'button'}*/!*); ``` - There exist different tags that share the same class, that's why it's needed. + + There may be different tags that share the same DOM-class, that's why specifying `extends` is needed. 3. At the end, to use our custom element, insert a regular `<button>` tag, but add `is="hello-button"` to it: ```html @@ -364,7 +365,7 @@ Our new button extends the built-in one. So it keeps the same styles and standar ## References - HTML Living Standard: <https://html.spec.whatwg.org/#custom-elements>. -- Compatiblity: <https://caniuse.com/#feat=custom-elements>. +- Compatiblity: <https://caniuse.com/#feat=custom-elementsv1>. ## Summary @@ -396,4 +397,4 @@ Custom elements can be of two types: /* <button is="my-button"> */ ``` -Custom elements are well-supported among browsers. Edge is a bit behind, but there's a polyfill <https://github.com/webcomponents/webcomponentsjs>. +Custom elements are well-supported among browsers. There's a polyfill <https://github.com/webcomponents/polyfills/tree/master/packages/webcomponentsjs>. diff --git a/8-web-components/3-shadow-dom/article.md b/8-web-components/3-shadow-dom/article.md index 7a58dddb3..92614f777 100644 --- a/8-web-components/3-shadow-dom/article.md +++ b/8-web-components/3-shadow-dom/article.md @@ -35,9 +35,9 @@ input::-webkit-slider-runnable-track { <input type="range"> ``` -Once again, `pseudo` is a non-standard attribute. Chronologically, browsers first started to experiment with internal DOM structures to implement controls, and then, after time, shadow DOM was standartized to allow us, developers, to do the similar thing. +Once again, `pseudo` is a non-standard attribute. Chronologically, browsers first started to experiment with internal DOM structures to implement controls, and then, after time, shadow DOM was standardized to allow us, developers, to do the similar thing. -Furhter on, we'll use the modern shadow DOM standard, covered by [DOM spec](https://dom.spec.whatwg.org/#shadow-trees) other related specifications. +Further on, we'll use the modern shadow DOM standard, covered by [DOM spec](https://dom.spec.whatwg.org/#shadow-trees) and other related specifications. ## Shadow tree @@ -98,7 +98,7 @@ alert(elem.shadowRoot.host === elem); // true Shadow DOM is strongly delimited from the main document: -1. Shadow DOM elements are not visible to `querySelector` from the light DOM. In particular, Shadow DOM elements may have ids that conflict with those in the light DOM. They be unique only within the shadow tree. +1. Shadow DOM elements are not visible to `querySelector` from the light DOM. In particular, Shadow DOM elements may have ids that conflict with those in the light DOM. They must be unique only within the shadow tree. 2. Shadow DOM has own stylesheets. Style rules from the outer DOM don't get applied. For example: diff --git a/8-web-components/4-template-element/article.md b/8-web-components/4-template-element/article.md index 4d9df9cb3..5499c4edc 100644 --- a/8-web-components/4-template-element/article.md +++ b/8-web-components/4-template-element/article.md @@ -1,9 +1,9 @@ # Template element -A built-in `<template>` element serves as a storage for markup. The browser ignores it contents, only checks for syntax validity, but we can access and use it in JavaScript, to create other elements. +A built-in `<template>` element serves as a storage for HTML markup templates. The browser ignores its contents, only checks for syntax validity, but we can access and use it in JavaScript, to create other elements. -In theory, we could create any invisible element somewhere in HTML for markup storage purposes. What's special about `<template>`? +In theory, we could create any invisible element somewhere in HTML for HTML markup storage purposes. What's special about `<template>`? First, its content can be any valid HTML, even if it normally requires a proper enclosing tag. @@ -31,9 +31,9 @@ We can put styles and scripts into `<template>` as well: </template> ``` -The browser considers `<template>` content "out of the document", so the style is not applied, scripts are executed, `<video autoplay>` is not run, etc. +The browser considers `<template>` content "out of the document": styles are not applied, scripts are not executed, `<video autoplay>` is not run, etc. -The content becomes live (the script executes) when we insert it. +The content becomes live (styles apply, scripts run etc) when we insert it into the document. ## Inserting template @@ -87,7 +87,7 @@ Let's rewrite a Shadow DOM example from the previous chapter using `<template>`: </script> ``` -In the line `(*)` when we clone and insert `tmpl.content`, its children (`<style>`, `<p>`) are inserted instead. +In the line `(*)` when we clone and insert `tmpl.content`, as its `DocumentFragment`, its children (`<style>`, `<p>`) are inserted instead. They form the shadow DOM: @@ -109,8 +109,8 @@ To summarize: The `<template>` tag is quite unique, because: -- The browser checks the syntax inside it (as opposed to using a template string inside a script). -- ...But still allows to use any top-level HTML tags, even those that don't make sense without proper wrappers (e.g. `<tr>`). +- The browser checks HTML syntax inside it (as opposed to using a template string inside a script). +- ...But still allows use of any top-level HTML tags, even those that don't make sense without proper wrappers (e.g. `<tr>`). - The content becomes interactive: scripts run, `<video autoplay>` plays etc, when inserted into the document. -The `<template>` tag does not feature any sophisticated iteration mechanisms, data binding or variable substitutions, making it less powerful than frameworks. But we can build those on top of it. +The `<template>` element does not feature any iteration mechanisms, data binding or variable substitutions, but we can implement those on top of it. diff --git a/8-web-components/5-slots-composition/article.md b/8-web-components/5-slots-composition/article.md index d90fbc98f..c41e26e05 100644 --- a/8-web-components/5-slots-composition/article.md +++ b/8-web-components/5-slots-composition/article.md @@ -58,7 +58,7 @@ customElements.define('user-card', class extends HTMLElement { In the shadow DOM, `<slot name="X">` defines an "insertion point", a place where elements with `slot="X"` are rendered. -Then the browser performs "composition": it takes elements from the light DOM and renders them in corresponding slots of the shadow DOM. At the end, we have exactly what we want -- a generic component that can be filled with data. +Then the browser performs "composition": it takes elements from the light DOM and renders them in corresponding slots of the shadow DOM. At the end, we have exactly what we want -- a component that can be filled with data. Here's the DOM structure after the script, not taking composition into account: @@ -76,7 +76,7 @@ Here's the DOM structure after the script, not taking composition into account: </user-card> ``` -There's nothing odd here. We created the shadow DOM, so here it is. Now the element has both light and shadow DOM. +We created the shadow DOM, so here it is, under `#shadow-root`. Now the element has both light and shadow DOM. For rendering purposes, for each `<slot name="...">` in shadow DOM, the browser looks for `slot="..."` with the same name in the light DOM. These elements are rendered inside the slots: @@ -89,7 +89,7 @@ The result is called "flattened" DOM: #shadow-root <div>Name: <slot name="username"> - <!-- slotted element is inserted into the slot as a whole --> + <!-- slotted element is inserted into the slot --> <span slot="username">John Smith</span> </slot> </div> @@ -101,16 +101,16 @@ The result is called "flattened" DOM: </user-card> ``` -...But the "flattened" DOM is only created for rendering and event-handling purposes. That's how things are shown. The nodes are actually not moved around! +...But the flattened DOM exists only for rendering and event-handling purposes. It's kind of "virtual". That's how things are shown. But the nodes in the document are actually not moved around! -That can be easily checked if we run `querySelector`: nodes are still at their places. +That can be easily checked if we run `querySelectorAll`: nodes are still at their places. ```js // light DOM <span> nodes are still at the same place, under `<user-card>` -alert( document.querySelector('user-card span').length ); // 2 +alert( document.querySelectorAll('user-card span').length ); // 2 ``` -It may look bizarre, but for shadow DOM with slots we have one more "DOM level", the "flattened" DOM -- result of slot insertion. The browser renders it and uses for style inheritance, event propagation. But JavaScript still sees the document "as is", before flattening. +So, the flattened DOM is derived from shadow DOM by inserting slots. The browser renders it and uses for style inheritance, event propagation (more about that later). But JavaScript still sees the document "as is", before flattening. ````warn header="Only top-level children may have slot=\"...\" attribute" The `slot="..."` attribute is only valid for direct children of the shadow host (in our example, `<user-card>` element). For nested elements it's ignored. @@ -120,18 +120,44 @@ For example, the second `<span>` here is ignored (as it's not a top-level child <user-card> <span slot="username">John Smith</span> <div> - <!-- bad slot, not top-level: --> + <!-- invalid slot, must be direct child of user-card --> <span slot="birthday">01.01.2001</span> </div> </user-card> ``` - -In practice, there's no sense in slotting a deeply nested element, so this limitation just ensures the correct DOM structure. ```` +If there are multiple elements in light DOM with the same slot name, they are appended into the slot, one after another. + +For example, this: + +```html +<user-card> + <span slot="username">John</span> + <span slot="username">Smith</span> +</user-card> +``` + +Gives this flattened DOM with two elements in `<slot name="username">`: + +```html +<user-card> + #shadow-root + <div>Name: + <slot name="username"> + <span slot="username">John</span> + <span slot="username">Smith</span> + </slot> + </div> + <div>Birthday: + <slot name="birthday"></slot> + </div> +</user-card> +``` + ## Slot fallback content -If we put something inside a `<slot>`, it becomes the fallback content. The browser shows it if there's no corresponding filler in light DOM. +If we put something inside a `<slot>`, it becomes the fallback, "default" content. The browser shows it if there's no corresponding filler in light DOM. For example, in this piece of shadow DOM, `Anonymous` renders if there's no `slot="username"` in light DOM. @@ -141,11 +167,11 @@ For example, in this piece of shadow DOM, `Anonymous` renders if there's no `slo </div> ``` -## Default slot +## Default slot: first unnamed The first `<slot>` in shadow DOM that doesn't have a name is a "default" slot. It gets all nodes from the light DOM that aren't slotted elsewhere. -For example, let's add the default slot to our `<user-card>` that collects any unslotted information about the user: +For example, let's add the default slot to our `<user-card>` that shows all unslotted information about the user: ```html run autorun="no-epub" untrusted height=140 <script> @@ -202,11 +228,11 @@ The flattened DOM looks like this: </slot> </div> <fieldset> - <legend>About me</legend> + <legend>Other information</legend> *!* <slot> - <div>Hello</div> - <div>I am John!</div> + <div>I like to swim.</div> + <div>...And play volleyball too!</div> </slot> */!* </fieldset> @@ -243,7 +269,7 @@ The shadow DOM template with proper slots: ``` 1. `<span slot="title">` goes into `<slot name="title">`. -2. There are many `<li slot="item">` in the template, but only one `<slot name="item">` in the template. That's perfectly normal. All elements with `slot="item"` get appended to `<slot name="item">` one after another, thus forming the list. +2. There are many `<li slot="item">` in the `<custom-menu>`, but only one `<slot name="item">` in the template. So all such `<li slot="item">` are appended to `<slot name="item">` one after another, thus forming the list. The flattened DOM becomes: @@ -293,7 +319,7 @@ Here's the full demo: Of course, we can add more functionality to it: events, methods and so on. -## Monitoring slots +## Updating slots What if the outer code wants to add/remove menu items dynamically? @@ -301,7 +327,7 @@ What if the outer code wants to add/remove menu items dynamically? Also, as light DOM nodes are not copied, but just rendered in slots, the changes inside them immediately become visible. -So we don't have to do anything to update rendering. But if the component wants to know about slot changes, then `slotchange` event is available. +So we don't have to do anything to update rendering. But if the component code wants to know about slot changes, then `slotchange` event is available. For example, here the menu item is inserted dynamically after 1 second, and the title changes after 2 seconds: @@ -355,7 +381,7 @@ If we'd like to track internal modifications of light DOM from JavaScript, that' Finally, let's mention the slot-related JavaScript methods. -As we've seen before, JavaScript looks at the "real" DOM, without flattening. But, if the shadow tree has `{mode: 'open'}`, then we can figure out which elements assigned to a slot and, vise-versa, the slot by the element inside it: +As we've seen before, JavaScript looks at the "real" DOM, without flattening. But, if the shadow tree has `{mode: 'open'}`, then we can figure out which elements assigned to a slot and, vice-versa, the slot by the element inside it: - `node.assignedSlot` -- returns the `<slot>` element that the `node` is assigned to. - `slot.assignedNodes({flatten: true/false})` -- DOM nodes, assigned to the slot. The `flatten` option is `false` by default. If explicitly set to `true`, then it looks more deeply into the flattened DOM, returning nested slots in case of nested components and the fallback content if no node assigned. @@ -383,7 +409,7 @@ customElements.define('custom-menu', class extends HTMLElement { <ul><slot name="item"></slot></ul> </div>`; - // slottable is added/removed/replaced + // triggers when slot content changes *!* this.shadowRoot.firstElementChild.addEventListener('slotchange', e => { let slot = e.target; @@ -406,7 +432,7 @@ setTimeout(() => { ## Summary -Slots allow to show light DOM children in shadow DOM. +Usually, if an element has shadow DOM, then its light DOM is not displayed. Slots allow to show elements from light DOM in specified places of shadow DOM. There are two kinds of slots: @@ -421,12 +447,12 @@ Composition does not really move nodes, from JavaScript point of view the DOM is JavaScript can access slots using methods: - `slot.assignedNodes/Elements()` -- returns nodes/elements inside the `slot`. -- `node.assignedSlot` -- the reverse meethod, returns slot by a node. +- `node.assignedSlot` -- the reverse property, returns slot by a node. If we'd like to know what we're showing, we can track slot contents using: - `slotchange` event -- triggers the first time a slot is filled, and on any add/remove/replace operation of the slotted element, but not its children. The slot is `event.target`. - [MutationObserver](info:mutation-observer) to go deeper into slot content, watch changes inside it. -Now, as we have elements from light DOM in the shadow DOM, let's see how to style them properly. The basic rule is that shadow elements are styled inside, and light elements -- outside, but there are notable exceptions. +Now, as we know how to show elements from light DOM in shadow DOM, let's see how to style them properly. The basic rule is that shadow elements are styled inside, and light elements -- outside, but there are notable exceptions. We'll see the details in the next chapter. diff --git a/8-web-components/6-shadow-dom-style/article.md b/8-web-components/6-shadow-dom-style/article.md index 66e5cc13d..98e246a7f 100644 --- a/8-web-components/6-shadow-dom-style/article.md +++ b/8-web-components/6-shadow-dom-style/article.md @@ -1,6 +1,6 @@ # Shadow DOM styling -Shadow DOM may include both `<style>` and `<link rel="stylesheet" href="…">` tags. In the latter case, stylesheets are HTTP-cached, so they are not redownloaded. There's no overhead in @importing or linking same styles for many components. +Shadow DOM may include both `<style>` and `<link rel="stylesheet" href="…">` tags. In the latter case, stylesheets are HTTP-cached, so they are not redownloaded for multiple components that use same template. As a general rule, local styles work only inside the shadow tree, and document styles work outside of it. But there are few exceptions. @@ -44,7 +44,7 @@ customElements.define('custom-dialog', class extends HTMLElement { ## Cascading -The shadow host (`<custom-dialog>` itself) resides in the light DOM, so it's affected by the main CSS cascade. +The shadow host (`<custom-dialog>` itself) resides in the light DOM, so it's affected by document CSS rules. If there's a property styled both in `:host` locally, and in the document, then the document style takes precedence. @@ -58,7 +58,7 @@ custom-dialog { ``` ...Then the `<custom-dialog>` would be without padding. -It's very convenient, as we can setup "default" styles in the component `:host` rule, and then easily override them in the document. +It's very convenient, as we can setup "default" component styles in its `:host` rule, and then easily override them in the document. The exception is when a local property is labelled `!important`, for such properties, local styles take precedence. @@ -79,6 +79,7 @@ For example, we'd like to center the `<custom-dialog>` only if it has `centered` left: 50%; top: 50%; transform: translate(-50%, -50%); + border-color: blue; } :host { @@ -108,24 +109,9 @@ customElements.define('custom-dialog', class extends HTMLElement { </custom-dialog> ``` -Now the additional centering styles are only applied to the first dialog `<custom-dialog centered>`. +Now the additional centering styles are only applied to the first dialog: `<custom-dialog centered>`. -## :host-context(selector) - -Same as `:host`, but applied only if the shadow host or any of its ancestors in the outer document matches the `selector`. - -E.g. `:host-context(.dark-theme)` matches only if there's `dark-theme` class on `<custom-dialog>` on above it: - -```html -<body class="dark-theme"> - <!-- - :host-context(.dark-theme) applies to custom-dialogs inside .dark-theme - --> - <custom-dialog>...</custom-dialog> -</body> -``` - -To summarize, we can use `:host`-family of selectors to style the main element of the component, depending on the context. These styles (unless `!important`) can be overridden by the document. +To summarize, we can use `:host`-family of selectors to style the main element of the component. These styles (unless `!important`) can be overridden by the document. ## Styling slotted content @@ -190,11 +176,11 @@ customElements.define('user-card', class extends HTMLElement { </script> ``` -Here `<p>John Smith</p>` becomes bold, because CSS inheritance is in effect between the `<slot>` and its contents. But not all CSS properties are inherited. +Here `<p>John Smith</p>` becomes bold, because CSS inheritance is in effect between the `<slot>` and its contents. But in CSS itself not all properties are inherited. Another option is to use `::slotted(selector)` pseudo-class. It matches elements based on two conditions: -1. The element from the light DOM that is inserted into a `<slot>`. Then slot name doesn't matter. Just any slotted element, but only the element itself, not its children. +1. That's a slotted element, that comes from the light DOM. Slot name doesn't matter. Just any slotted element, but only the element itself, not its children. 2. The element matches the `selector`. In our example, `::slotted(div)` selects exactly `<div slot="username">`, but not its children: @@ -239,26 +225,25 @@ Also, `::slotted` can only be used in CSS. We can't use it in `querySelector`. ## CSS hooks with custom properties -How do we style a component in-depth from the main document? +How do we style internal elements of a component from the main document? -Naturally, document styles apply to `<custom-dialog>` element or `<user-card>`, etc. But how can we affect its internals? For instance, in `<user-card>` we'd like to allow the outer document change how user fields look. +Selectors like `:host` apply rules to `<custom-dialog>` element or `<user-card>`, but how to style shadow DOM elements inside them? -Just as we expose methods to interact with our component, we can expose CSS variables (custom CSS properties) to style it. +There's no selector that can directly affect shadow DOM styles from the document. But just as we expose methods to interact with our component, we can expose CSS variables (custom CSS properties) to style it. **Custom CSS properties exist on all levels, both in light and shadow.** -For example, in shadow DOM we can use `--user-card-field-color` CSS variable to style fields: +For example, in shadow DOM we can use `--user-card-field-color` CSS variable to style fields, and the outer document can set its value: ```html <style> .field { color: var(--user-card-field-color, black); - /* if --user-card-field-color is not defined, use black */ + /* if --user-card-field-color is not defined, use black color */ } </style> <div class="field">Name: <slot name="username"></slot></div> <div class="field">Birthday: <slot name="birthday"></slot></div> -</style> ``` Then, we can declare this property in the outer document for `<user-card>`: @@ -317,12 +302,12 @@ Shadow DOM can include styles, such as `<style>` or `<link rel="stylesheet">`. Local styles can affect: - shadow tree, -- shadow host with `:host`-family pseudoclasses, +- shadow host with `:host` and `:host()` pseudoclasses, - slotted elements (coming from light DOM), `::slotted(selector)` allows to select slotted elements themselves, but not their children. Document styles can affect: -- shadow host (as it's in the outer document) -- slotted elements and their contents (as it's physically in the outer document) +- shadow host (as it lives in the outer document) +- slotted elements and their contents (as that's also in the outer document) When CSS properties conflict, normally document styles have precedence, unless the property is labelled as `!important`. Then local styles have precedence. diff --git a/8-web-components/7-shadow-dom-events/article.md b/8-web-components/7-shadow-dom-events/article.md index 14e310a55..d1f627e3e 100644 --- a/8-web-components/7-shadow-dom-events/article.md +++ b/8-web-components/7-shadow-dom-events/article.md @@ -2,9 +2,9 @@ The idea behind shadow tree is to encapsulate internal implementation details of a component. -Let's say, a click event happens inside a shadow DOM of `<user-card>` component. But scripts in the main document have no idea about the shadow DOM internals, especially if the component comes from a 3rd-party library or so. +Let's say, a click event happens inside a shadow DOM of `<user-card>` component. But scripts in the main document have no idea about the shadow DOM internals, especially if the component comes from a 3rd-party library. -So, to keep things simple, the browser *retargets* the event. +So, to keep the details encapsulated, the browser *retargets* the event. **Events that happen in shadow DOM have the host element as the target, when caught outside of the component.** @@ -35,11 +35,11 @@ If you click on the button, the messages are: 1. Inner target: `BUTTON` -- internal event handler gets the correct target, the element inside shadow DOM. 2. Outer target: `USER-CARD` -- document event handler gets shadow host as the target. -Event retargeting is a great thing to have, because the outer document doesn't have no know about component internals. From its point of view, the event happened on `<user-card>`. +Event retargeting is a great thing to have, because the outer document doesn't have to know about component internals. From its point of view, the event happened on `<user-card>`. **Retargeting does not occur if the event occurs on a slotted element, that physically lives in the light DOM.** -For example, if a user clicks on `<span slot="username">` in the example below, the event target is exactly this element, for both shadow and light handlers: +For example, if a user clicks on `<span slot="username">` in the example below, the event target is exactly this `span` element, for both shadow and light handlers: ```html run autorun="no-epub" untrusted height=60 <user-card id="userCard"> @@ -75,7 +75,7 @@ For purposes of event bubbling, flattened DOM is used. So, if we have a slotted element, and an event occurs somewhere inside it, then it bubbles up to the `<slot>` and upwards. -The full path to the original event target, with all the shadow root elements, can be obtained using `event.composedPath()`. As we can see from the name of the method, that path is taken after the composition. +The full path to the original event target, with all the shadow elements, can be obtained using `event.composedPath()`. As we can see from the name of the method, that path is taken after the composition. In the example above, the flattened DOM is: @@ -119,7 +119,7 @@ All touch events and pointer events also have `composed: true`. There are some events that have `composed: false` though: -- `mouseenter`, `mouseleave` (they also do not bubble), +- `mouseenter`, `mouseleave` (they do not bubble at all), - `load`, `unload`, `abort`, `error`, - `select`, - `slotchange`. @@ -189,4 +189,4 @@ These events can be caught only on elements within the same DOM. If we dispatch a `CustomEvent`, then we should explicitly set `composed: true`. -Please note that in case of nested components, composed events bubble through all shadow DOM boundaries. So, if an event is intended only for the immediate enclosing component, we can also dispatch it on the shadow host. Then it's out of the shadow DOM already. +Please note that in case of nested components, one shadow DOM may be nested into another. In that case composed events bubble through all shadow DOM boundaries. So, if an event is intended only for the immediate enclosing component, we can also dispatch it on the shadow host and set `composed: false`. Then it's out of the component shadow DOM, but won't bubble up to higher-level DOM. diff --git a/9-regular-expressions/01-regexp-introduction/article.md b/9-regular-expressions/01-regexp-introduction/article.md index 59775d3c0..ade62cdf2 100644 --- a/9-regular-expressions/01-regexp-introduction/article.md +++ b/9-regular-expressions/01-regexp-introduction/article.md @@ -1,59 +1,65 @@ # Patterns and flags -Regular expressions is a powerful way of searching and replacing inside a string. +Regular expressions are patterns that provide a powerful way to search and replace in text. -In JavaScript regular expressions are implemented using objects of a built-in `RegExp` class and integrated with strings. +In JavaScript, they are available via the [RegExp](mdn:js/RegExp) object, as well as being integrated in methods of strings. -Please note that regular expressions vary between programming languages. In this tutorial we concentrate on JavaScript. Of course there's a lot in common, but they are a somewhat different in Perl, Ruby, PHP etc. - -## Regular expressions +## Regular Expressions A regular expression (also "regexp", or just "reg") consists of a *pattern* and optional *flags*. -There are two syntaxes to create a regular expression object. +There are two syntaxes that can be used to create a regular expression object. -The long syntax: +The "long" syntax: ```js regexp = new RegExp("pattern", "flags"); ``` -...And the short one, using slashes `"/"`: +And the "short" one, using slashes `"/"`: ```js regexp = /pattern/; // no flags regexp = /pattern/gmi; // with flags g,m and i (to be covered soon) ``` -Slashes `"/"` tell JavaScript that we are creating a regular expression. They play the same role as quotes for strings. +Slashes `pattern:/.../` tell JavaScript that we are creating a regular expression. They play the same role as quotes for strings. -## Usage +In both cases `regexp` becomes an instance of the built-in `RegExp` class. -To search inside a string, we can use method [search](mdn:js/String/search). +The main difference between these two syntaxes is that pattern using slashes `/.../` does not allow for expressions to be inserted (like string template literals with `${...}`). They are fully static. -Here's an example: +Slashes are used when we know the regular expression at the code writing time -- and that's the most common situation. While `new RegExp` is more often used when we need to create a regexp "on the fly" from a dynamically generated string. For instance: -```js run -let str = "I love JavaScript!"; // will search here +```js +let tag = prompt("What tag do you want to find?", "h2"); -let regexp = /love/; -alert( str.search(regexp) ); // 2 +let regexp = new RegExp(`<${tag}>`); // same as /<h2>/ if answered "h2" in the prompt above ``` -The `str.search` method looks for the pattern `pattern:/love/` and returns the position inside the string. As we might guess, `pattern:/love/` is the simplest possible pattern. What it does is a simple substring search. +## Flags -The code above is the same as: +Regular expressions may have flags that affect the search. -```js run -let str = "I love JavaScript!"; // will search here +There are only 6 of them in JavaScript: -let substr = 'love'; -alert( str.search(substr) ); // 2 -``` +`pattern:i` +: With this flag the search is case-insensitive: no difference between `A` and `a` (see the example below). -So searching for `pattern:/love/` is the same as searching for `"love"`. +`pattern:g` +: With this flag the search looks for all matches, without it -- only the first match is returned. -But that's only for now. Soon we'll create more complex regular expressions with much more searching power. +`pattern:m` +: Multiline mode (covered in the chapter <info:regexp-multiline-mode>). + +`pattern:s` +: Enables "dotall" mode, that allows a dot `pattern:.` to match newline character `\n` (covered in the chapter <info:regexp-character-classes>). + +`pattern:u` +: Enables full Unicode support. The flag enables correct processing of surrogate pairs. More about that in the chapter <info:regexp-unicode>. + +`pattern:y` +: "Sticky" mode: searching at the exact position in the text (covered in the chapter <info:regexp-sticky>) ```smart header="Colors" From here on the color scheme is: @@ -63,65 +69,109 @@ From here on the color scheme is: - result -- `match:green` ``` +## Searching: str.match -````smart header="When to use `new RegExp`?" -Normally we use the short syntax `/.../`. But it does not support variable insertions `${...}`. +As mentioned previously, regular expressions are integrated with string methods. -On the other hand, `new RegExp` allows to construct a pattern dynamically from a string, so it's more flexible. +The method `str.match(regexp)` finds all matches of `regexp` in the string `str`. -Here's an example of a dynamically generated regexp: +It has 3 working modes: -```js run -let tag = prompt("Which tag you want to search?", "h2"); -let regexp = new RegExp(`<${tag}>`); +1. If the regular expression has flag `pattern:g`, it returns an array of all matches: + ```js run + let str = "We will, we will rock you"; -// finds <h2> by default -alert( "<h1> <h2> <h3>".search(regexp)); -``` -```` + alert( str.match(/we/gi) ); // We,we (an array of 2 substrings that match) + ``` + Please note that both `match:We` and `match:we` are found, because flag `pattern:i` makes the regular expression case-insensitive. +2. If there's no such flag it returns only the first match in the form of an array, with the full match at index `0` and some additional details in properties: + ```js run + let str = "We will, we will rock you"; -## Flags + let result = str.match(/we/i); // without flag g -Regular expressions may have flags that affect the search. + alert( result[0] ); // We (1st match) + alert( result.length ); // 1 -There are only 5 of them in JavaScript: + // Details: + alert( result.index ); // 0 (position of the match) + alert( result.input ); // We will, we will rock you (source string) + ``` + The array may have other indexes, besides `0` if a part of the regular expression is enclosed in parentheses. We'll cover that in the chapter <info:regexp-groups>. -`i` -: With this flag the search is case-insensitive: no difference between `A` and `a` (see the example below). +3. And, finally, if there are no matches, `null` is returned (doesn't matter if there's flag `pattern:g` or not). -`g` -: With this flag the search looks for all matches, without it -- only the first one (we'll see uses in the next chapter). + This a very important nuance. If there are no matches, we don't receive an empty array, but instead receive `null`. Forgetting about that may lead to errors, e.g.: -`m` -: Multiline mode (covered in the chapter <info:regexp-multiline-mode>). + ```js run + let matches = "JavaScript".match(/HTML/); // = null + + if (!matches.length) { // Error: Cannot read property 'length' of null + alert("Error in the line above"); + } + ``` + + If we'd like the result to always be an array, we can write it this way: -`s` -: "Dotall" mode, allows `.` to match newlines (covered in the chapter <info:regexp-character-classes>). + ```js run + let matches = "JavaScript".match(/HTML/)*!* || []*/!*; -`u` -: Enables full unicode support. The flag enables correct processing of surrogate pairs. More about that in the chapter <info:regexp-unicode>. + if (!matches.length) { + alert("No matches"); // now it works + } + ``` -`y` -: Sticky mode (covered in the chapter <info:regexp-sticky>) +## Replacing: str.replace -We'll cover all these flags further in the tutorial. +The method `str.replace(regexp, replacement)` replaces matches found using `regexp` in string `str` with `replacement` (all matches if there's flag `pattern:g`, otherwise, only the first one). -For now, the simplest flag is `i`, here's an example: +For instance: ```js run -let str = "I love JavaScript!"; +// no flag g +alert( "We will, we will".replace(/we/i, "I") ); // I will, we will + +// with flag g +alert( "We will, we will".replace(/we/ig, "I") ); // I will, I will +``` + +The second argument is the `replacement` string. We can use special character combinations in it to insert fragments of the match: + +| Symbols | Action in the replacement string | +|--------|--------| +|`$&`|inserts the whole match| +|<code>$`</code>|inserts a part of the string before the match| +|`$'`|inserts a part of the string after the match| +|`$n`|if `n` is a 1-2 digit number, then it inserts the contents of n-th parentheses, more about it in the chapter <info:regexp-groups>| +|`$<name>`|inserts the contents of the parentheses with the given `name`, more about it in the chapter <info:regexp-groups>| +|`$$`|inserts character `$` | -alert( str.search(/LOVE/i) ); // 2 (found lowercased) +An example with `pattern:$&`: + +```js run +alert( "I love HTML".replace(/HTML/, "$& and JavaScript") ); // I love HTML and JavaScript +``` + +## Testing: regexp.test + +The method `regexp.test(str)` looks for at least one match, if found, returns `true`, otherwise `false`. + +```js run +let str = "I love JavaScript"; +let regexp = /LOVE/i; -alert( str.search(/LOVE/) ); // -1 (nothing found without 'i' flag) +alert( regexp.test(str) ); // true ``` -So the `i` flag already makes regular expressions more powerful than a simple substring search. But there's so much more. We'll cover other flags and features in the next chapters. +Later in this chapter we'll study more regular expressions, walk through more examples, and also meet other methods. +Full information about the methods is given in the article <info:regexp-methods>. ## Summary -- A regular expression consists of a pattern and optional flags: `g`, `i`, `m`, `u`, `s`, `y`. -- Without flags and special symbols that we'll study later, the search by a regexp is the same as a substring search. -- The method `str.search(regexp)` returns the index where the match is found or `-1` if there's no match. In the next chapter we'll see other methods. +- A regular expression consists of a pattern and optional flags: `pattern:g`, `pattern:i`, `pattern:m`, `pattern:u`, `pattern:s`, `pattern:y`. +- Without flags and special symbols (that we'll study later), the search by a regexp is the same as a substring search. +- The method `str.match(regexp)` looks for matches: all of them if there's `pattern:g` flag, otherwise, only the first one. +- The method `str.replace(regexp, replacement)` replaces matches found using `regexp` with `replacement`: all of them if there's `pattern:g` flag, otherwise only the first one. +- The method `regexp.test(str)` returns `true` if there's at least one match, otherwise, it returns `false`. diff --git a/9-regular-expressions/02-regexp-character-classes/article.md b/9-regular-expressions/02-regexp-character-classes/article.md new file mode 100644 index 000000000..201c78a05 --- /dev/null +++ b/9-regular-expressions/02-regexp-character-classes/article.md @@ -0,0 +1,203 @@ +# Character classes + +Consider a practical task -- we have a phone number like `"+7(903)-123-45-67"`, and we need to turn it into pure numbers: `79031234567`. + +To do so, we can find and remove anything that's not a number. Character classes can help with that. + +A *character class* is a special notation that matches any symbol from a certain set. + +For the start, let's explore the "digit" class. It's written as `pattern:\d` and corresponds to "any single digit". + +For instance, let's find the first digit in the phone number: + +```js run +let str = "+7(903)-123-45-67"; + +let regexp = /\d/; + +alert( str.match(regexp) ); // 7 +``` + +Without the flag `pattern:g`, the regular expression only looks for the first match, that is the first digit `pattern:\d`. + +Let's add the `pattern:g` flag to find all digits: + +```js run +let str = "+7(903)-123-45-67"; + +let regexp = /\d/g; + +alert( str.match(regexp) ); // array of matches: 7,9,0,3,1,2,3,4,5,6,7 + +// let's make the digits-only phone number of them: +alert( str.match(regexp).join('') ); // 79031234567 +``` + +That was a character class for digits. There are other character classes as well. + +Most used are: + +`pattern:\d` ("d" is from "digit") +: A digit: a character from `0` to `9`. + +`pattern:\s` ("s" is from "space") +: A space symbol: includes spaces, tabs `\t`, newlines `\n` and few other rare characters, such as `\v`, `\f` and `\r`. + +`pattern:\w` ("w" is from "word") +: A "wordly" character: either a letter of Latin alphabet or a digit or an underscore `_`. Non-Latin letters (like cyrillic or hindi) do not belong to `pattern:\w`. + +For instance, `pattern:\d\s\w` means a "digit" followed by a "space character" followed by a "wordly character", such as `match:1 a`. + +**A regexp may contain both regular symbols and character classes.** + +For instance, `pattern:CSS\d` matches a string `match:CSS` with a digit after it: + +```js run +let str = "Is there CSS4?"; +let regexp = /CSS\d/ + +alert( str.match(regexp) ); // CSS4 +``` + +Also we can use many character classes: + +```js run +alert( "I love HTML5!".match(/\s\w\w\w\w\d/) ); // ' HTML5' +``` + +The match (each regexp character class has the corresponding result character): + + + +## Inverse classes + +For every character class there exists an "inverse class", denoted with the same letter, but uppercased. + +The "inverse" means that it matches all other characters, for instance: + +`pattern:\D` +: Non-digit: any character except `pattern:\d`, for instance a letter. + +`pattern:\S` +: Non-space: any character except `pattern:\s`, for instance a letter. + +`pattern:\W` +: Non-wordly character: anything but `pattern:\w`, e.g a non-latin letter or a space. + +In the beginning of the chapter we saw how to make a number-only phone number from a string like `subject:+7(903)-123-45-67`: find all digits and join them. + +```js run +let str = "+7(903)-123-45-67"; + +alert( str.match(/\d/g).join('') ); // 79031234567 +``` + +An alternative, shorter way is to find non-digits `pattern:\D` and remove them from the string: + +```js run +let str = "+7(903)-123-45-67"; + +alert( str.replace(/\D/g, "") ); // 79031234567 +``` + +## A dot is "any character" + +A dot `pattern:.` is a special character class that matches "any character except a newline". + +For instance: + +```js run +alert( "Z".match(/./) ); // Z +``` + +Or in the middle of a regexp: + +```js run +let regexp = /CS.4/; + +alert( "CSS4".match(regexp) ); // CSS4 +alert( "CS-4".match(regexp) ); // CS-4 +alert( "CS 4".match(regexp) ); // CS 4 (space is also a character) +``` + +Please note that a dot means "any character", but not the "absence of a character". There must be a character to match it: + +```js run +alert( "CS4".match(/CS.4/) ); // null, no match because there's no character for the dot +``` + +### Dot as literally any character with "s" flag + +By default, a dot doesn't match the newline character `\n`. + +For instance, the regexp `pattern:A.B` matches `match:A`, and then `match:B` with any character between them, except a newline `\n`: + +```js run +alert( "A\nB".match(/A.B/) ); // null (no match) +``` + +There are many situations when we'd like a dot to mean literally "any character", newline included. + +That's what flag `pattern:s` does. If a regexp has it, then a dot `pattern:.` matches literally any character: + +```js run +alert( "A\nB".match(/A.B/s) ); // A\nB (match!) +``` + +````warn header="Not supported in IE" +The `pattern:s` flag is not supported in IE. + +Luckily, there's an alternative, that works everywhere. We can use a regexp like `pattern:[\s\S]` to match "any character" (this pattern will be covered in the article <info:regexp-character-sets-and-ranges>). + +```js run +alert( "A\nB".match(/A[\s\S]B/) ); // A\nB (match!) +``` + +The pattern `pattern:[\s\S]` literally says: "a space character OR not a space character". In other words, "anything". We could use another pair of complementary classes, such as `pattern:[\d\D]`, that doesn't matter. Or even the `pattern:[^]` -- as it means match any character except nothing. + +Also we can use this trick if we want both kind of "dots" in the same pattern: the actual dot `pattern:.` behaving the regular way ("not including a newline"), and also a way to match "any character" with `pattern:[\s\S]` or alike. +```` + +````warn header="Pay attention to spaces" +Usually we pay little attention to spaces. For us strings `subject:1-5` and `subject:1 - 5` are nearly identical. + +But if a regexp doesn't take spaces into account, it may fail to work. + +Let's try to find digits separated by a hyphen: + +```js run +alert( "1 - 5".match(/\d-\d/) ); // null, no match! +``` + +Let's fix it adding spaces into the regexp `pattern:\d - \d`: + +```js run +alert( "1 - 5".match(/\d - \d/) ); // 1 - 5, now it works +// or we can use \s class: +alert( "1 - 5".match(/\d\s-\s\d/) ); // 1 - 5, also works +``` + +**A space is a character. Equal in importance with any other character.** + +We can't add or remove spaces from a regular expression and expect it to work the same. + +In other words, in a regular expression all characters matter, spaces too. +```` + +## Summary + +There exist following character classes: + +- `pattern:\d` -- digits. +- `pattern:\D` -- non-digits. +- `pattern:\s` -- space symbols, tabs, newlines. +- `pattern:\S` -- all but `pattern:\s`. +- `pattern:\w` -- Latin letters, digits, underscore `'_'`. +- `pattern:\W` -- all but `pattern:\w`. +- `pattern:.` -- any character if with the regexp `'s'` flag, otherwise any except a newline `\n`. + +...But that's not all! + +Unicode encoding, used by JavaScript for strings, provides many properties for characters, like: which language the letter belongs to (if it's a letter), is it a punctuation sign, etc. + +We can search by these properties as well. That requires flag `pattern:u`, covered in the next article. diff --git a/9-regular-expressions/02-regexp-character-classes/love-html5-classes.svg b/9-regular-expressions/02-regexp-character-classes/love-html5-classes.svg new file mode 100644 index 000000000..60d31da35 --- /dev/null +++ b/9-regular-expressions/02-regexp-character-classes/love-html5-classes.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" width="236" height="38" viewBox="0 0 236 38"><defs><style>@import url(https://fonts.googleapis.com/css?family=Open+Sans:bold,italic,bolditalic%7CPT+Mono);@font-face{font-family:'PT Mono';font-weight:700;font-style:normal;src:local('PT MonoBold'),url(/font/PTMonoBold.woff2) format('woff2'),url(/font/PTMonoBold.woff) format('woff'),url(/font/PTMonoBold.ttf) format('truetype')}</style></defs><g id="regexp" fill="none" fill-rule="evenodd" stroke="none" stroke-width="1"><g id="love-html5-classes.svg" fill-rule="nonzero"><path id="IloveHTML5" fill="#AF6E24" d="M11 19h10.538v1.66h-4.369v12.388h4.369v1.66H11v-1.66h4.347V20.66H11V19zm36.788 0h3.644v11.938c0 .913.15 1.556.45 1.93.3.374.743.561 1.328.561.41 0 .802-.075 1.175-.224.373-.15.787-.404 1.24-.763l.79 1.234c-.233.21-.49.396-.768.561a5.651 5.651 0 01-1.734.673c-.293.06-.564.09-.812.09a4.554 4.554 0 01-1.45-.213 2.47 2.47 0 01-1.064-.685c-.286-.314-.501-.729-.648-1.245-.146-.516-.22-1.156-.22-1.919V20.504h-1.931V19zm16.385 10.098c0-1.81.46-3.242 1.383-4.297.922-1.055 2.24-1.582 3.952-1.582.922 0 1.716.153 2.382.46a4.683 4.683 0 011.657 1.245c.44.524.765 1.145.977 1.863a8.12 8.12 0 01.319 2.311c0 .898-.118 1.71-.352 2.435-.234.726-.578 1.343-1.032 1.851a4.558 4.558 0 01-1.68 1.178c-.665.277-1.422.416-2.271.416-.908 0-1.698-.154-2.371-.46a4.66 4.66 0 01-1.669-1.246 5.115 5.115 0 01-.977-1.862 8.12 8.12 0 01-.318-2.312zm1.822 0c0 .524.062 1.047.187 1.571.124.524.325.995.603 1.414.278.419.64.755 1.087 1.01.446.254.992.381 1.636.381 1.17 0 2.052-.37 2.645-1.11.593-.741.89-1.83.89-3.266 0-.538-.063-1.066-.187-1.582a4.226 4.226 0 00-.615-1.402 3.266 3.266 0 00-1.098-1.01c-.446-.255-.991-.382-1.635-.382-1.171 0-2.05.367-2.635 1.1-.585.733-.878 1.825-.878 3.276zm21.303 3.434h.241l3.447-9.044h1.91l-4.632 11.22h-1.932l-4.72-11.22h2.02l3.666 9.044zm22.73.763c-.264.239-.575.463-.933.673-.359.21-.75.389-1.175.538a8.46 8.46 0 01-1.328.348 7.92 7.92 0 01-1.394.124c-.878 0-1.654-.139-2.327-.416a4.48 4.48 0 01-1.69-1.189 5.213 5.213 0 01-1.033-1.851c-.234-.718-.351-1.526-.351-2.424 0-.942.128-1.78.384-2.513.256-.733.626-1.347 1.109-1.84a4.816 4.816 0 011.756-1.133c.688-.262 1.456-.393 2.305-.393a6.86 6.86 0 011.823.247c.6.164 1.13.475 1.591.93.461.457.816 1.086 1.065 1.886.249.8.337 1.836.263 3.108h-8.496c0 1.346.355 2.352 1.065 3.018.71.666 1.658.999 2.843.999.395 0 .787-.049 1.175-.146a9.656 9.656 0 001.108-.348c.352-.135.663-.284.933-.449.271-.164.48-.314.626-.449l.68 1.28zm-4.633-8.595c-.483 0-.94.052-1.372.157-.432.105-.812.28-1.141.527-.33.247-.6.569-.813.965-.212.397-.347.887-.406 1.47h6.828c-.073-.987-.384-1.754-.933-2.3-.55-.546-1.27-.82-2.163-.82zm38.544 2.805h-6.893v7.203h-1.822V19h1.822v6.844h6.893V19h1.823v15.708h-1.823v-7.203zM152.531 19h11.416v4.107h-1.625V20.66h-3.183v12.387h2.415v1.66h-6.652v-1.66h2.415V20.66h-3.162v2.446h-1.624V19zm26.9 5.273l.22-2.131h-.11l-1.053 1.93-2.24 3.837h-.548l-2.35-3.86-1.01-1.907h-.11l.264 2.11v10.456h-1.778V19h1.69l3.645 5.97h.044l3.512-5.97h1.647v15.708h-1.822V24.273zm9.69-5.273h1.822v14.048h6.213v-3.905h1.625v5.565h-9.66V19zm21.39 14.407c.557 0 1.069-.071 1.537-.213a3.16 3.16 0 001.197-.651c.33-.292.585-.655.768-1.089.183-.433.275-.942.275-1.526 0-1.077-.377-1.896-1.131-2.457-.754-.56-1.782-.841-3.085-.841l-2.063.112V19h7.53v1.616h-5.884v4.555l1.098-.045c1.625 0 2.905.404 3.842 1.212.937.808 1.405 1.96 1.405 3.456 0 .838-.143 1.578-.428 2.221a4.677 4.677 0 01-1.175 1.627 4.976 4.976 0 01-1.767.999 7.079 7.079 0 01-2.228.337c-.44 0-.857-.034-1.252-.101a8.91 8.91 0 01-1.075-.247 6.429 6.429 0 01-.846-.314c-.241-.113-.413-.214-.516-.303l.703-1.459c.249.15.63.33 1.142.539.512.209 1.163.314 1.953.314z"/><path id="\s\w\w\w\w\d" fill="#C06334" d="M122.288 13.776l-1.056.464-5.92-13.184 1.072-.448 5.904 13.168zm4.563-3.936c0-.341-.133-.605-.4-.792a3.282 3.282 0 00-.992-.448 18.35 18.35 0 00-1.288-.312 7.43 7.43 0 01-1.288-.384 2.886 2.886 0 01-.992-.648c-.267-.272-.4-.653-.4-1.144 0-.405.088-.752.264-1.04.176-.288.408-.525.696-.712a3.181 3.181 0 011.008-.416c.384-.09.784-.136 1.2-.136.747 0 1.39.093 1.928.28.539.187.968.381 1.288.584l-.512 1.008a13.475 13.475 0 00-1.144-.552c-.41-.176-.925-.264-1.544-.264-.235 0-.467.024-.696.072a2.46 2.46 0 00-.624.216 1.244 1.244 0 00-.448.376.943.943 0 00-.168.568c0 .277.133.49.4.64.267.15.597.275.992.376.395.101.824.197 1.288.288.464.09.893.221 1.288.392.395.17.725.4.992.688.267.288.4.677.4 1.168 0 .736-.29 1.344-.872 1.824-.581.48-1.453.72-2.616.72-.352 0-.699-.032-1.04-.096a6.308 6.308 0 01-.96-.256 5.776 5.776 0 01-.816-.36 3.431 3.431 0 01-.608-.408l.64-1.04c.128.128.299.259.512.392a4.833 4.833 0 001.528.616 4.296 4.296 0 001.696.024c.25-.048.472-.123.664-.224.192-.101.344-.235.456-.4.112-.165.168-.365.168-.6zm12.966 3.936l-1.056.464-5.92-13.184 1.072-.448 5.904 13.168zm2.978-8.016l1.6 4.448h.112L145.643 4h1.168l-1.568 8h-1.424l-1.536-4.416h-.048l-1.6 4.416h-1.424l-1.68-8h1.232l1.296 6.24h.096l1.552-4.48h1.088zm14.55 8.016l-1.056.464-5.92-13.184 1.072-.448 5.904 13.168zm2.979-8.016l1.6 4.448h.112L163.172 4h1.168l-1.568 8h-1.424l-1.536-4.416h-.048l-1.6 4.416h-1.424l-1.68-8h1.232l1.296 6.24h.096l1.552-4.48h1.088zm14.55 8.016l-1.056.464-5.92-13.184 1.072-.448 5.904 13.168zm2.979-8.016l1.6 4.448h.112L180.7 4h1.168l-1.568 8h-1.424l-1.536-4.416h-.048l-1.6 4.416h-1.424l-1.68-8h1.232l1.296 6.24h.096l1.552-4.48h1.088zm14.55 8.016l-1.057.464-5.92-13.184 1.072-.448 5.904 13.168zm2.978-8.016l1.6 4.448h.112L198.23 4h1.168l-1.568 8h-1.424l-1.536-4.416h-.048l-1.6 4.416h-1.424l-1.68-8h1.232l1.296 6.24h.096l1.552-4.48h1.088zm14.55 8.016l-1.056.464-5.92-13.184 1.072-.448 5.904 13.168zM213.07.8h2.592v8.464c0 .096.005.216.016.36a17.83 17.83 0 00.096.928c.021.155.042.29.064.408h1.072V12h-2.128l-.16-1.232h-.064c-.235.405-.584.744-1.048 1.016-.464.272-1 .408-1.608.408-1.206 0-2.094-.339-2.664-1.016-.571-.677-.856-1.73-.856-3.16 0-.672.096-1.267.288-1.784.192-.517.466-.95.824-1.296.357-.347.786-.61 1.288-.792a4.912 4.912 0 011.68-.272c.224 0 .424.005.6.016.176.01.338.027.488.048.149.021.29.05.424.088l.44.12V1.872h-1.344V.8zm-.96 10.32c.65 0 1.162-.168 1.536-.504.373-.336.629-.84.768-1.512V5.392a2.478 2.478 0 00-.792-.352c-.294-.075-.68-.112-1.16-.112-.854 0-1.526.248-2.016.744-.491.496-.736 1.277-.736 2.344 0 .437.04.845.12 1.224.08.379.213.707.4.984.186.277.434.496.744.656.309.16.688.24 1.136.24z"/></g></g></svg> \ No newline at end of file diff --git a/9-regular-expressions/02-regexp-methods/article.md b/9-regular-expressions/02-regexp-methods/article.md deleted file mode 100644 index f66a9c794..000000000 --- a/9-regular-expressions/02-regexp-methods/article.md +++ /dev/null @@ -1,458 +0,0 @@ -# Methods of RegExp and String - -There are two sets of methods to deal with regular expressions. - -1. First, regular expressions are objects of the built-in [RegExp](mdn:js/RegExp) class, it provides many methods. -2. Besides that, there are methods in regular strings can work with regexps. - - -## Recipes - -Which method to use depends on what we'd like to do. - -Methods become much easier to understand if we separate them by their use in real-life tasks. - -So, here are general recipes, the details to follow: - -**To search for all matches:** - -Use regexp `g` flag and: -- Get a flat array of matches -- `str.match(reg)` -- Get an array or matches with details -- `str.matchAll(reg)`. - -**To search for the first match only:** -- Get the full first match -- `str.match(reg)` (without `g` flag). -- Get the string position of the first match -- `str.search(reg)`. -- Check if there's a match -- `regexp.test(str)`. -- Find the match from the given position -- `regexp.exec(str)` (set `regexp.lastIndex` to position). - -**To replace all matches:** -- Replace with another string or a function result -- `str.replace(reg, str|func)` - -**To split the string by a separator:** -- `str.split(str|reg)` - -Now you can continue reading this chapter to get the details about every method... But if you're reading for the first time, then you probably want to know more about regexps. So you can move to the next chapter, and then return here if something about a method is unclear. - -## str.search(reg) - -We've seen this method already. It returns the position of the first match or `-1` if none found: - -```js run -let str = "A drop of ink may make a million think"; - -alert( str.search( *!*/a/i*/!* ) ); // 0 (first match at zero position) -``` - -**The important limitation: `search` only finds the first match.** - -We can't find next matches using `search`, there's just no syntax for that. But there are other methods that can. - -## str.match(reg), no "g" flag - -The behavior of `str.match` varies depending on whether `reg` has `g` flag or not. - -First, if there's no `g` flag, then `str.match(reg)` looks for the first match only. - -The result is an array with that match and additional properties: - -- `index` -- the position of the match inside the string, -- `input` -- the subject string. - -For instance: - -```js run -let str = "Fame is the thirst of youth"; - -let result = str.match( *!*/fame/i*/!* ); - -alert( result[0] ); // Fame (the match) -alert( result.index ); // 0 (at the zero position) -alert( result.input ); // "Fame is the thirst of youth" (the string) -``` - -A match result may have more than one element. - -**If a part of the pattern is delimited by parentheses `(...)`, then it becomes a separate element in the array.** - -If parentheses have a name, designated by `(?<name>...)` at their start, then `result.groups[name]` has the content. We'll see that later in the chapter [about groups](info:regexp-groups). - -For instance: - -```js run -let str = "JavaScript is a programming language"; - -let result = str.match( *!*/JAVA(SCRIPT)/i*/!* ); - -alert( result[0] ); // JavaScript (the whole match) -alert( result[1] ); // script (the part of the match that corresponds to the parentheses) -alert( result.index ); // 0 -alert( result.input ); // JavaScript is a programming language -``` - -Due to the `i` flag the search is case-insensitive, so it finds `match:JavaScript`. The part of the match that corresponds to `pattern:SCRIPT` becomes a separate array item. - -So, this method is used to find one full match with all details. - - -## str.match(reg) with "g" flag - -When there's a `"g"` flag, then `str.match` returns an array of all matches. There are no additional properties in that array, and parentheses do not create any elements. - -For instance: - -```js run -let str = "HO-Ho-ho!"; - -let result = str.match( *!*/ho/ig*/!* ); - -alert( result ); // HO, Ho, ho (array of 3 matches, case-insensitive) -``` - -Parentheses do not change anything, here we go: - -```js run -let str = "HO-Ho-ho!"; - -let result = str.match( *!*/h(o)/ig*/!* ); - -alert( result ); // HO, Ho, ho -``` - -**So, with `g` flag `str.match` returns a simple array of all matches, without details.** - -If we want to get information about match positions and contents of parentheses then we should use `matchAll` method that we'll cover below. - -````warn header="If there are no matches, `str.match` returns `null`" -Please note, that's important. If there are no matches, the result is not an empty array, but `null`. - -Keep that in mind to evade pitfalls like this: - -```js run -let str = "Hey-hey-hey!"; - -alert( str.match(/Z/g).length ); // Error: Cannot read property 'length' of null -``` - -Here `str.match(/Z/g)` is `null`, it has no `length` property. -```` - -## str.matchAll(regexp) - -The method `str.matchAll(regexp)` is used to find all matches with all details. - -For instance: - -```js run -let str = "Javascript or JavaScript? Should we uppercase 'S'?"; - -let result = str.matchAll( *!*/java(script)/ig*/!* ); - -let [match1, match2] = result; - -alert( match1[0] ); // Javascript (the whole match) -alert( match1[1] ); // script (the part of the match that corresponds to the parentheses) -alert( match1.index ); // 0 -alert( match1.input ); // = str (the whole original string) - -alert( match2[0] ); // JavaScript (the whole match) -alert( match2[1] ); // Script (the part of the match that corresponds to the parentheses) -alert( match2.index ); // 14 -alert( match2.input ); // = str (the whole original string) -``` - -````warn header="`matchAll` returns an iterable, not array" -For instance, if we try to get the first match by index, it won't work: - -```js run -let str = "Javascript or JavaScript??"; - -let result = str.matchAll( /javascript/ig ); - -*!* -alert(result[0]); // undefined (?! there must be a match) -*/!* -``` - -The reason is that the iterator is not an array. We need to run `Array.from(result)` on it, or use `for..of` loop to get matches. - -In practice, if we need all matches, then `for..of` works, so it's not a problem. - -And, to get only few matches, we can use destructuring: - -```js run -let str = "Javascript or JavaScript??"; - -*!* -let [firstMatch] = str.matchAll( /javascript/ig ); -*/!* - -alert(firstMatch); // Javascript -``` -```` - -```warn header="`matchAll` is supernew, may need a polyfill" -The method may not work in old browsers. A polyfill might be needed (this site uses core-js). - -Or you could make a loop with `regexp.exec`, explained below. -``` - -## str.split(regexp|substr, limit) - -Splits the string using the regexp (or a substring) as a delimiter. - -We already used `split` with strings, like this: - -```js run -alert('12-34-56'.split('-')) // array of [12, 34, 56] -``` - -But we can split by a regular expression, the same way: - -```js run -alert('12-34-56'.split(/-/)) // array of [12, 34, 56] -``` - -## str.replace(str|reg, str|func) - -This is a generic method for searching and replacing, one of most useful ones. The swiss army knife for searching and replacing. - -We can use it without regexps, to search and replace a substring: - -```js run -// replace a dash by a colon -alert('12-34-56'.replace("-", ":")) // 12:34-56 -``` - -There's a pitfall though. - -**When the first argument of `replace` is a string, it only looks for the first match.** - -You can see that in the example above: only the first `"-"` is replaced by `":"`. - -To find all dashes, we need to use not the string `"-"`, but a regexp `pattern:/-/g`, with an obligatory `g` flag: - -```js run -// replace all dashes by a colon -alert( '12-34-56'.replace( *!*/-/g*/!*, ":" ) ) // 12:34:56 -``` - -The second argument is a replacement string. We can use special characters in it: - -| Symbol | Inserts | -|--------|--------| -|`$$`|`"$"` | -|`$&`|the whole match| -|<code>$`</code>|a part of the string before the match| -|`$'`|a part of the string after the match| -|`$n`|if `n` is a 1-2 digit number, then it means the contents of n-th parentheses counting from left to right, otherwise it means a parentheses with the given name | - - -For instance if we use `$&` in the replacement string, that means "put the whole match here". - -Let's use it to prepend all entries of `"John"` with `"Mr."`: - -```js run -let str = "John Doe, John Smith and John Bull"; - -// for each John - replace it with Mr. and then John -alert(str.replace(/John/g, 'Mr.$&')); // Mr.John Doe, Mr.John Smith and Mr.John Bull -``` - -Quite often we'd like to reuse parts of the source string, recombine them in the replacement or wrap into something. - -To do so, we should: -1. First, mark the parts by parentheses in regexp. -2. Use `$1`, `$2` (and so on) in the replacement string to get the content matched by 1st, 2nd and so on parentheses. - -For instance: - -```js run -let str = "John Smith"; - -// swap first and last name -alert(str.replace(/(john) (smith)/i, '$2, $1')) // Smith, John -``` - -**For situations that require "smart" replacements, the second argument can be a function.** - -It will be called for each match, and its result will be inserted as a replacement. - -For instance: - -```js run -let i = 0; - -// replace each "ho" by the result of the function -alert("HO-Ho-ho".replace(/ho/gi, function() { - return ++i; -})); // 1-2-3 -``` - -In the example above the function just returns the next number every time, but usually the result is based on the match. - -The function is called with arguments `func(str, p1, p2, ..., pn, offset, input, groups)`: - -1. `str` -- the match, -2. `p1, p2, ..., pn` -- contents of parentheses (if there are any), -3. `offset` -- position of the match, -4. `input` -- the source string, -5. `groups` -- an object with named groups (see chapter [](info:regexp-groups)). - -If there are no parentheses in the regexp, then there are only 3 arguments: `func(str, offset, input)`. - -Let's use it to show full information about matches: - -```js run -// show and replace all matches -function replacer(str, offset, input) { - alert(`Found ${str} at position ${offset} in string ${input}`); - return str.toLowerCase(); -} - -let result = "HO-Ho-ho".replace(/ho/gi, replacer); -alert( 'Result: ' + result ); // Result: ho-ho-ho - -// shows each match: -// Found HO at position 0 in string HO-Ho-ho -// Found Ho at position 3 in string HO-Ho-ho -// Found ho at position 6 in string HO-Ho-ho -``` - -In the example below there are two parentheses, so `replacer` is called with 5 arguments: `str` is the full match, then parentheses, and then `offset` and `input`: - -```js run -function replacer(str, name, surname, offset, input) { - // name is the first parentheses, surname is the second one - return surname + ", " + name; -} - -let str = "John Smith"; - -alert(str.replace(/(John) (Smith)/, replacer)) // Smith, John -``` - -Using a function gives us the ultimate replacement power, because it gets all the information about the match, has access to outer variables and can do everything. - -## regexp.exec(str) - -We've already seen these searching methods: - -- `search` -- looks for the position of the match, -- `match` -- if there's no `g` flag, returns the first match with parentheses and all details, -- `match` -- if there's a `g` flag -- returns all matches, without details parentheses, -- `matchAll` -- returns all matches with details. - -The `regexp.exec` method is the most flexible searching method of all. Unlike previous methods, `exec` should be called on a regexp, rather than on a string. - -It behaves differently depending on whether the regexp has the `g` flag. - -If there's no `g`, then `regexp.exec(str)` returns the first match, exactly as `str.match(reg)`. Such behavior does not give us anything new. - -But if there's `g`, then: -- `regexp.exec(str)` returns the first match and *remembers* the position after it in `regexp.lastIndex` property. -- The next call starts to search from `regexp.lastIndex` and returns the next match. -- If there are no more matches then `regexp.exec` returns `null` and `regexp.lastIndex` is set to `0`. - -We could use it to get all matches with their positions and parentheses groups in a loop, instead of `matchAll`: - -```js run -let str = 'A lot about JavaScript at https://javascript.info'; - -let regexp = /javascript/ig; - -let result; - -while (result = regexp.exec(str)) { - alert( `Found ${result[0]} at ${result.index}` ); - // shows: Found JavaScript at 12, then: - // shows: Found javascript at 34 -} -``` - -Surely, `matchAll` does the same, at least for modern browsers. But what `matchAll` can't do -- is to search from a given position. - -Let's search from position `13`. What we need is to assign `regexp.lastIndex=13` and call `regexp.exec`: - -```js run -let str = "A lot about JavaScript at https://javascript.info"; - -let regexp = /javascript/ig; -*!* -regexp.lastIndex = 13; -*/!* - -let result; - -while (result = regexp.exec(str)) { - alert( `Found ${result[0]} at ${result.index}` ); - // shows: Found javascript at 34 -} -``` - -Now, starting from the given position `13`, there's only one match. - - -## regexp.test(str) - -The method `regexp.test(str)` looks for a match and returns `true/false` whether it finds it. - -For instance: - -```js run -let str = "I love JavaScript"; - -// these two tests do the same -alert( *!*/love/i*/!*.test(str) ); // true -alert( str.search(*!*/love/i*/!*) != -1 ); // true -``` - -An example with the negative answer: - -```js run -let str = "Bla-bla-bla"; - -alert( *!*/love/i*/!*.test(str) ); // false -alert( str.search(*!*/love/i*/!*) != -1 ); // false -``` - -If the regexp has `'g'` flag, then `regexp.test` advances `regexp.lastIndex` property, just like `regexp.exec`. - -So we can use it to search from a given position: - -```js run -let regexp = /love/gi; - -let str = "I love JavaScript"; - -// start the search from position 10: -regexp.lastIndex = 10 -alert( regexp.test(str) ); // false (no match) -``` - - - -````warn header="Same global regexp tested repeatedly may fail to match" -If we apply the same global regexp to different inputs, it may lead to wrong result, because `regexp.test` call advances `regexp.lastIndex` property, so the search in another string may start from non-zero position. - -For instance, here we call `regexp.test` twice on the same text, and the second time fails: - -```js run -let regexp = /javascript/g; // (regexp just created: regexp.lastIndex=0) - -alert( regexp.test("javascript") ); // true (regexp.lastIndex=10 now) -alert( regexp.test("javascript") ); // false -``` - -That's exactly because `regexp.lastIndex` is non-zero on the second test. - -To work around that, one could use non-global regexps or re-adjust `regexp.lastIndex=0` before a new search. -```` - -## Summary - -There's a variety of many methods on both regexps and strings. - -Their abilities and methods overlap quite a bit, we can do the same by different calls. Sometimes that may cause confusion when starting to learn the language. - -Then please refer to the recipes at the beginning of this chapter, as they provide solutions for the majority of regexp-related tasks. diff --git a/9-regular-expressions/03-regexp-character-classes/hello-java-boundaries.svg b/9-regular-expressions/03-regexp-character-classes/hello-java-boundaries.svg deleted file mode 100644 index 65714ef75..000000000 --- a/9-regular-expressions/03-regexp-character-classes/hello-java-boundaries.svg +++ /dev/null @@ -1,18 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<svg width="245px" height="74px" viewBox="0 0 245 74" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> - <!-- Generator: sketchtool 55.2 (78181) - https://sketchapp.com --> - <title>hello-java-boundaries.svg</title> - <desc>Created with sketchtool.</desc> - <g id="regexp" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd"> - <g id="hello-java-boundaries.svg"> - <text id="Hello,-Java!" font-family="PTMono-Regular, PT Mono" font-size="22" font-weight="normal" letter-spacing="4.58333333" fill="#8A704D"> - <tspan x="20" y="61">Hello, Java</tspan> - <tspan x="215.616667" y="61">!</tspan> - </text> - <path id="Line" d="M15.5,25.5 L15.5,8.5 L17.5,8.5 L17.5,25.5 L23.5,25.5 L16.5,39.5 L9.5,25.5 L15.5,25.5 Z" fill="#EE6B47" fill-rule="nonzero"></path> - <path id="Line-2" d="M110.5,25.5 L110.5,8.5 L112.5,8.5 L112.5,25.5 L118.5,25.5 L111.5,39.5 L104.5,25.5 L110.5,25.5 Z" fill="#EE6B47" fill-rule="nonzero"></path> - <path id="Line-3" d="M142.5,25.5 L142.5,8.5 L144.5,8.5 L144.5,25.5 L150.5,25.5 L143.5,39.5 L136.5,25.5 L142.5,25.5 Z" fill="#EE6B47" fill-rule="nonzero"></path> - <path id="Line-4" d="M216.5,25.5 L216.5,8.5 L218.5,8.5 L218.5,25.5 L224.5,25.5 L217.5,39.5 L210.5,25.5 L216.5,25.5 Z" fill="#EE6B47" fill-rule="nonzero"></path> - </g> - </g> -</svg> \ No newline at end of file diff --git a/9-regular-expressions/03-regexp-unicode/article.md b/9-regular-expressions/03-regexp-unicode/article.md new file mode 100644 index 000000000..1be163aff --- /dev/null +++ b/9-regular-expressions/03-regexp-unicode/article.md @@ -0,0 +1,161 @@ +# Unicode: flag "u" and class \p{...} + +JavaScript uses [Unicode encoding](https://en.wikipedia.org/wiki/Unicode) for strings. Most characters are encoded with 2 bytes, but that allows to represent at most 65536 characters. + +That range is not big enough to encode all possible characters, that's why some rare characters are encoded with 4 bytes, for instance like `𝒳` (mathematical X) or `😄` (a smile), some hieroglyphs and so on. + +Here are the Unicode values of some characters: + +| Character | Unicode | Bytes count in Unicode | +|------------|---------|--------| +| a | `0x0061` | 2 | +| ≈ | `0x2248` | 2 | +|𝒳| `0x1d4b3` | 4 | +|𝒴| `0x1d4b4` | 4 | +|😄| `0x1f604` | 4 | + +So characters like `a` and `≈` occupy 2 bytes, while codes for `𝒳`, `𝒴` and `😄` are longer, they have 4 bytes. + +Long time ago, when JavaScript language was created, Unicode encoding was simpler: there were no 4-byte characters. So, some language features still handle them incorrectly. + +For instance, `length` thinks that here are two characters: + +```js run +alert('😄'.length); // 2 +alert('𝒳'.length); // 2 +``` + +...But we can see that there's only one, right? The point is that `length` treats 4 bytes as two 2-byte characters. That's incorrect, because they must be considered only together (so-called "surrogate pair", you can read about them in the article <info:string>). + +By default, regular expressions also treat 4-byte "long characters" as a pair of 2-byte ones. And, as it happens with strings, that may lead to odd results. We'll see that a bit later, in the article <info:regexp-character-sets-and-ranges>. + +Unlike strings, regular expressions have flag `pattern:u` that fixes such problems. With such flag, a regexp handles 4-byte characters correctly. And also Unicode property search becomes available, we'll get to it next. + +## Unicode properties \p{...} + +Every character in Unicode has a lot of properties. They describe what "category" the character belongs to, contain miscellaneous information about it. + +For instance, if a character has `Letter` property, it means that the character belongs to an alphabet (of any language). And `Number` property means that it's a digit: maybe Arabic or Chinese, and so on. + +We can search for characters with a property, written as `pattern:\p{…}`. To use `pattern:\p{…}`, a regular expression must have flag `pattern:u`. + +For instance, `\p{Letter}` denotes a letter in any language. We can also use `\p{L}`, as `L` is an alias of `Letter`. There are shorter aliases for almost every property. + +In the example below three kinds of letters will be found: English, Georgian and Korean. + +```js run +let str = "A ბ ㄱ"; + +alert( str.match(/\p{L}/gu) ); // A,ბ,ㄱ +alert( str.match(/\p{L}/g) ); // null (no matches, \p doesn't work without the flag "u") +``` + +Here's the main character categories and their subcategories: + +- Letter `L`: + - lowercase `Ll` + - modifier `Lm`, + - titlecase `Lt`, + - uppercase `Lu`, + - other `Lo`. +- Number `N`: + - decimal digit `Nd`, + - letter number `Nl`, + - other `No`. +- Punctuation `P`: + - connector `Pc`, + - dash `Pd`, + - initial quote `Pi`, + - final quote `Pf`, + - open `Ps`, + - close `Pe`, + - other `Po`. +- Mark `M` (accents etc): + - spacing combining `Mc`, + - enclosing `Me`, + - non-spacing `Mn`. +- Symbol `S`: + - currency `Sc`, + - modifier `Sk`, + - math `Sm`, + - other `So`. +- Separator `Z`: + - line `Zl`, + - paragraph `Zp`, + - space `Zs`. +- Other `C`: + - control `Cc`, + - format `Cf`, + - not assigned `Cn`, + - private use `Co`, + - surrogate `Cs`. + + +So, e.g. if we need letters in lower case, we can write `pattern:\p{Ll}`, punctuation signs: `pattern:\p{P}` and so on. + +There are also other derived categories, like: +- `Alphabetic` (`Alpha`), includes Letters `L`, plus letter numbers `Nl` (e.g. Ⅻ - a character for the roman number 12), plus some other symbols `Other_Alphabetic` (`OAlpha`). +- `Hex_Digit` includes hexadecimal digits: `0-9`, `a-f`. +- ...And so on. + +Unicode supports many different properties, their full list would require a lot of space, so here are the references: + +- List all properties by a character: <https://unicode.org/cldr/utility/character.jsp>. +- List all characters by a property: <https://unicode.org/cldr/utility/list-unicodeset.jsp>. +- Short aliases for properties: <https://www.unicode.org/Public/UCD/latest/ucd/PropertyValueAliases.txt>. +- A full base of Unicode characters in text format, with all properties, is here: <https://www.unicode.org/Public/UCD/latest/ucd/>. + +### Example: hexadecimal numbers + +For instance, let's look for hexadecimal numbers, written as `xFF`, where `F` is a hex digit (0..9 or A..F). + +A hex digit can be denoted as `pattern:\p{Hex_Digit}`: + +```js run +let regexp = /x\p{Hex_Digit}\p{Hex_Digit}/u; + +alert("number: xAF".match(regexp)); // xAF +``` + +### Example: Chinese hieroglyphs + +Let's look for Chinese hieroglyphs. + +There's a Unicode property `Script` (a writing system), that may have a value: `Cyrillic`, `Greek`, `Arabic`, `Han` (Chinese) and so on, [here's the full list](https://en.wikipedia.org/wiki/Script_(Unicode)). + +To look for characters in a given writing system we should use `pattern:Script=<value>`, e.g. for Cyrillic letters: `pattern:\p{sc=Cyrillic}`, for Chinese hieroglyphs: `pattern:\p{sc=Han}`, and so on: + +```js run +let regexp = /\p{sc=Han}/gu; // returns Chinese hieroglyphs + +let str = `Hello Привет 你好 123_456`; + +alert( str.match(regexp) ); // 你,好 +``` + +### Example: currency + +Characters that denote a currency, such as `$`, `€`, `¥`, have Unicode property `pattern:\p{Currency_Symbol}`, the short alias: `pattern:\p{Sc}`. + +Let's use it to look for prices in the format "currency, followed by a digit": + +```js run +let regexp = /\p{Sc}\d/gu; + +let str = `Prices: $2, €1, ¥9`; + +alert( str.match(regexp) ); // $2,€1,¥9 +``` + +Later, in the article <info:regexp-quantifiers> we'll see how to look for numbers that contain many digits. + +## Summary + +Flag `pattern:u` enables the support of Unicode in regular expressions. + +That means two things: + +1. Characters of 4 bytes are handled correctly: as a single character, not two 2-byte characters. +2. Unicode properties can be used in the search: `\p{…}`. + +With Unicode properties we can look for words in given languages, special characters (quotes, currencies) and so on. diff --git a/9-regular-expressions/12-regexp-anchors/1-start-end/solution.md b/9-regular-expressions/04-regexp-anchors/1-start-end/solution.md similarity index 77% rename from 9-regular-expressions/12-regexp-anchors/1-start-end/solution.md rename to 9-regular-expressions/04-regexp-anchors/1-start-end/solution.md index 1a8cbe9a2..702f992d7 100644 --- a/9-regular-expressions/12-regexp-anchors/1-start-end/solution.md +++ b/9-regular-expressions/04-regexp-anchors/1-start-end/solution.md @@ -1,5 +1,4 @@ - -The empty string is the only match: it starts and immediately finishes. +An empty string is the only match: it starts and immediately finishes. The task once again demonstrates that anchors are not characters, but tests. diff --git a/9-regular-expressions/12-regexp-anchors/1-start-end/task.md b/9-regular-expressions/04-regexp-anchors/1-start-end/task.md similarity index 100% rename from 9-regular-expressions/12-regexp-anchors/1-start-end/task.md rename to 9-regular-expressions/04-regexp-anchors/1-start-end/task.md diff --git a/9-regular-expressions/04-regexp-anchors/article.md b/9-regular-expressions/04-regexp-anchors/article.md new file mode 100644 index 000000000..63e4efa93 --- /dev/null +++ b/9-regular-expressions/04-regexp-anchors/article.md @@ -0,0 +1,52 @@ +# Anchors: string start ^ and end $ + +The caret `pattern:^` and dollar `pattern:$` characters have special meaning in a regexp. They are called "anchors". + +The caret `pattern:^` matches at the beginning of the text, and the dollar `pattern:$` -- at the end. + +For instance, let's test if the text starts with `Mary`: + +```js run +let str1 = "Mary had a little lamb"; +alert( /^Mary/.test(str1) ); // true +``` + +The pattern `pattern:^Mary` means: "string start and then Mary". + +Similar to this, we can test if the string ends with `snow` using `pattern:snow$`: + +```js run +let str1 = "its fleece was white as snow"; +alert( /snow$/.test(str1) ); // true +``` + +In these particular cases we could use string methods `startsWith/endsWith` instead. Regular expressions should be used for more complex tests. + +## Testing for a full match + +Both anchors together `pattern:^...$` are often used to test whether or not a string fully matches the pattern. For instance, to check if the user input is in the right format. + +Let's check whether or not a string is a time in `12:34` format. That is: two digits, then a colon, and then another two digits. + +In regular expressions language that's `pattern:\d\d:\d\d`: + +```js run +let goodInput = "12:34"; +let badInput = "12:345"; + +let regexp = /^\d\d:\d\d$/; +alert( regexp.test(goodInput) ); // true +alert( regexp.test(badInput) ); // false +``` + +Here the match for `pattern:\d\d:\d\d` must start exactly after the beginning of the text `pattern:^`, and the end `pattern:$` must immediately follow. + +The whole string must be exactly in this format. If there's any deviation or an extra character, the result is `false`. + +Anchors behave differently if flag `pattern:m` is present. We'll see that in the next article. + +```smart header="Anchors have \"zero width\"" +Anchors `pattern:^` and `pattern:$` are tests. They have zero width. + +In other words, they do not match a character, but rather force the regexp engine to check the condition (text start/end). +``` diff --git a/9-regular-expressions/04-regexp-escaping/article.md b/9-regular-expressions/04-regexp-escaping/article.md deleted file mode 100644 index 48f4a810d..000000000 --- a/9-regular-expressions/04-regexp-escaping/article.md +++ /dev/null @@ -1,99 +0,0 @@ - -# Escaping, special characters - -As we've seen, a backslash `"\"` is used to denote character classes. So it's a special character in regexps (just like in a regular string). - -There are other special characters as well, that have special meaning in a regexp. They are used to do more powerful searches. Here's a full list of them: `pattern:[ \ ^ $ . | ? * + ( )`. - -Don't try to remember the list -- soon we'll deal with each of them separately and you'll know them by heart automatically. - -## Escaping - -Let's say we want to find a dot literally. Not "any character", but just a dot. - -To use a special character as a regular one, prepend it with a backslash: `pattern:\.`. - -That's also called "escaping a character". - -For example: -```js run -alert( "Chapter 5.1".match(/\d\.\d/) ); // 5.1 (match!) -alert( "Chapter 511".match(/\d\.\d/) ); // null (looking for a real dot \.) -``` - -Parentheses are also special characters, so if we want them, we should use `pattern:\(`. The example below looks for a string `"g()"`: - -```js run -alert( "function g()".match(/g\(\)/) ); // "g()" -``` - -If we're looking for a backslash `\`, it's a special character in both regular strings and regexps, so we should double it. - -```js run -alert( "1\\2".match(/\\/) ); // '\' -``` - -## A slash - -A slash symbol `'/'` is not a special character, but in JavaScript it is used to open and close the regexp: `pattern:/...pattern.../`, so we should escape it too. - -Here's what a search for a slash `'/'` looks like: - -```js run -alert( "/".match(/\//) ); // '/' -``` - -On the other hand, if we're not using `/.../`, but create a regexp using `new RegExp`, then we don't need to escape it: - -```js run -alert( "/".match(new RegExp("/")) ); // '/' -``` - -## new RegExp - -If we are creating a regular expression with `new RegExp`, then we don't have to escape `/`, but need to do some other escaping. - -For instance, consider this: - -```js run -let reg = new RegExp("\d\.\d"); - -alert( "Chapter 5.1".match(reg) ); // null -``` - -It worked with `pattern:/\d\.\d/`, but with `new RegExp("\d\.\d")` it doesn't, why? - -The reason is that backslashes are "consumed" by a string. Remember, regular strings have their own special characters like `\n`, and a backslash is used for escaping. - -Please, take a look, what "\d\.\d" really is: - -```js run -alert("\d\.\d"); // d.d -``` - -The quotes "consume" backslashes and interpret them, for instance: - -- `\n` -- becomes a newline character, -- `\u1234` -- becomes the Unicode character with such code, -- ...And when there's no special meaning: like `\d` or `\z`, then the backslash is simply removed. - -So the call to `new RegExp` gets a string without backslashes. That's why it doesn't work! - -To fix it, we need to double backslashes, because quotes turn `\\` into `\`: - -```js run -*!* -let regStr = "\\d\\.\\d"; -*/!* -alert(regStr); // \d\.\d (correct now) - -let reg = new RegExp(regStr); - -alert( "Chapter 5.1".match(reg) ); // 5.1 -``` - -## Summary - -- To search special characters `pattern:[ \ ^ $ . | ? * + ( )` literally, we need to prepend them with `\` ("escape them"). -- We also need to escape `/` if we're inside `pattern:/.../` (but not inside `new RegExp`). -- When passing a string `new RegExp`, we need to double backslashes `\\`, cause strings consume one of them. diff --git a/9-regular-expressions/05-regexp-character-sets-and-ranges/article.md b/9-regular-expressions/05-regexp-character-sets-and-ranges/article.md deleted file mode 100644 index 5c8a8babb..000000000 --- a/9-regular-expressions/05-regexp-character-sets-and-ranges/article.md +++ /dev/null @@ -1,114 +0,0 @@ -# Sets and ranges [...] - -Several characters or character classes inside square brackets `[…]` mean to "search for any character among given". - -## Sets - -For instance, `pattern:[eao]` means any of the 3 characters: `'a'`, `'e'`, or `'o'`. - -That's called a *set*. Sets can be used in a regexp along with regular characters: - -```js run -// find [t or m], and then "op" -alert( "Mop top".match(/[tm]op/gi) ); // "Mop", "top" -``` - -Please note that although there are multiple characters in the set, they correspond to exactly one character in the match. - -So the example above gives no matches: - -```js run -// find "V", then [o or i], then "la" -alert( "Voila".match(/V[oi]la/) ); // null, no matches -``` - -The pattern assumes: - -- `pattern:V`, -- then *one* of the letters `pattern:[oi]`, -- then `pattern:la`. - -So there would be a match for `match:Vola` or `match:Vila`. - -## Ranges - -Square brackets may also contain *character ranges*. - -For instance, `pattern:[a-z]` is a character in range from `a` to `z`, and `pattern:[0-5]` is a digit from `0` to `5`. - -In the example below we're searching for `"x"` followed by two digits or letters from `A` to `F`: - -```js run -alert( "Exception 0xAF".match(/x[0-9A-F][0-9A-F]/g) ); // xAF -``` - -Please note that in the word `subject:Exception` there's a substring `subject:xce`. It didn't match the pattern, because the letters are lowercase, while in the set `pattern:[0-9A-F]` they are uppercase. - -If we want to find it too, then we can add a range `a-f`: `pattern:[0-9A-Fa-f]`. The `i` flag would allow lowercase too. - -**Character classes are shorthands for certain character sets.** - -For instance: - -- **\d** -- is the same as `pattern:[0-9]`, -- **\w** -- is the same as `pattern:[a-zA-Z0-9_]`, -- **\s** -- is the same as `pattern:[\t\n\v\f\r ]` plus few other unicode space characters. - -We can use character classes inside `[…]` as well. - -For instance, we want to match all wordly characters or a dash, for words like "twenty-third". We can't do it with `pattern:\w+`, because `pattern:\w` class does not include a dash. But we can use `pattern:[\w-]`. - -We also can use a combination of classes to cover every possible character, like `pattern:[\s\S]`. That matches spaces or non-spaces -- any character. That's wider than a dot `"."`, because the dot matches any character except a newline. - -## Excluding ranges - -Besides normal ranges, there are "excluding" ranges that look like `pattern:[^…]`. - -They are denoted by a caret character `^` at the start and match any character *except the given ones*. - -For instance: - -- `pattern:[^aeyo]` -- any character except `'a'`, `'e'`, `'y'` or `'o'`. -- `pattern:[^0-9]` -- any character except a digit, the same as `\D`. -- `pattern:[^\s]` -- any non-space character, same as `\S`. - -The example below looks for any characters except letters, digits and spaces: - -```js run -alert( "alice15@gmail.com".match(/[^\d\sA-Z]/gi) ); // @ and . -``` - -## No escaping in […] - -Usually when we want to find exactly the dot character, we need to escape it like `pattern:\.`. And if we need a backslash, then we use `pattern:\\`. - -In square brackets the vast majority of special characters can be used without escaping: - -- A dot `pattern:'.'`. -- A plus `pattern:'+'`. -- Parentheses `pattern:'( )'`. -- Dash `pattern:'-'` in the beginning or the end (where it does not define a range). -- A caret `pattern:'^'` if not in the beginning (where it means exclusion). -- And the opening square bracket `pattern:'['`. - -In other words, all special characters are allowed except where they mean something for square brackets. - -A dot `"."` inside square brackets means just a dot. The pattern `pattern:[.,]` would look for one of characters: either a dot or a comma. - -In the example below the regexp `pattern:[-().^+]` looks for one of the characters `-().^+`: - -```js run -// No need to escape -let reg = /[-().^+]/g; - -alert( "1 + 2 - 3".match(reg) ); // Matches +, - -``` - -...But if you decide to escape them "just in case", then there would be no harm: - -```js run -// Escaped everything -let reg = /[\-\(\)\.\^\+]/g; - -alert( "1 + 2 - 3".match(reg) ); // also works: +, - -``` diff --git a/9-regular-expressions/05-regexp-multiline-mode/article.md b/9-regular-expressions/05-regexp-multiline-mode/article.md new file mode 100644 index 000000000..82f4d781d --- /dev/null +++ b/9-regular-expressions/05-regexp-multiline-mode/article.md @@ -0,0 +1,87 @@ +# Multiline mode of anchors ^ $, flag "m" + +The multiline mode is enabled by the flag `pattern:m`. + +It only affects the behavior of `pattern:^` and `pattern:$`. + +In the multiline mode they match not only at the beginning and the end of the string, but also at start/end of line. + +## Searching at line start ^ + +In the example below the text has multiple lines. The pattern `pattern:/^\d/gm` takes a digit from the beginning of each line: + +```js run +let str = `1st place: Winnie +2nd place: Piglet +3rd place: Eeyore`; + +*!* +console.log( str.match(/^\d/gm) ); // 1, 2, 3 +*/!* +``` + +Without the flag `pattern:m` only the first digit is matched: + +```js run +let str = `1st place: Winnie +2nd place: Piglet +3rd place: Eeyore`; + +*!* +console.log( str.match(/^\d/g) ); // 1 +*/!* +``` + +That's because by default a caret `pattern:^` only matches at the beginning of the text, and in the multiline mode -- at the start of any line. + +```smart +"Start of a line" formally means "immediately after a line break": the test `pattern:^` in multiline mode matches at all positions preceded by a newline character `\n`. + +And at the text start. +``` + +## Searching at line end $ + +The dollar sign `pattern:$` behaves similarly. + +The regular expression `pattern:\d$` finds the last digit in every line + +```js run +let str = `Winnie: 1 +Piglet: 2 +Eeyore: 3`; + +console.log( str.match(/\d$/gm) ); // 1,2,3 +``` + +Without the flag `pattern:m`, the dollar `pattern:$` would only match the end of the whole text, so only the very last digit would be found. + +```smart +"End of a line" formally means "immediately before a line break": the test `pattern:$` in multiline mode matches at all positions succeeded by a newline character `\n`. + +And at the text end. +``` + +## Searching for \n instead of ^ $ + +To find a newline, we can use not only anchors `pattern:^` and `pattern:$`, but also the newline character `\n`. + +What's the difference? Let's see an example. + +Here we search for `pattern:\d\n` instead of `pattern:\d$`: + +```js run +let str = `Winnie: 1 +Piglet: 2 +Eeyore: 3`; + +console.log( str.match(/\d\n/g) ); // 1\n,2\n +``` + +As we can see, there are 2 matches instead of 3. + +That's because there's no newline after `subject:3` (there's text end though, so it matches `pattern:$`). + +Another difference: now every match includes a newline character `match:\n`. Unlike the anchors `pattern:^` `pattern:$`, that only test the condition (start/end of a line), `\n` is a character, so it becomes a part of the result. + +So, a `\n` in the pattern is used when we need newline characters in the result, while anchors are used to find something at the beginning/end of a line. diff --git a/9-regular-expressions/03-regexp-character-classes/1-find-time-hh-mm/solution.md b/9-regular-expressions/06-regexp-boundary/1-find-time-hh-mm/solution.md similarity index 100% rename from 9-regular-expressions/03-regexp-character-classes/1-find-time-hh-mm/solution.md rename to 9-regular-expressions/06-regexp-boundary/1-find-time-hh-mm/solution.md diff --git a/9-regular-expressions/03-regexp-character-classes/1-find-time-hh-mm/task.md b/9-regular-expressions/06-regexp-boundary/1-find-time-hh-mm/task.md similarity index 99% rename from 9-regular-expressions/03-regexp-character-classes/1-find-time-hh-mm/task.md rename to 9-regular-expressions/06-regexp-boundary/1-find-time-hh-mm/task.md index 5e32b9c48..95ab5777d 100644 --- a/9-regular-expressions/03-regexp-character-classes/1-find-time-hh-mm/task.md +++ b/9-regular-expressions/06-regexp-boundary/1-find-time-hh-mm/task.md @@ -5,4 +5,5 @@ The time has a format: `hours:minutes`. Both hours and minutes has two digits, l Make a regexp to find time in the string: `subject:Breakfast at 09:00 in the room 123:456.` P.S. In this task there's no need to check time correctness yet, so `25:99` can also be a valid result. + P.P.S. The regexp shouldn't match `123:456`. diff --git a/9-regular-expressions/06-regexp-boundary/article.md b/9-regular-expressions/06-regexp-boundary/article.md new file mode 100644 index 000000000..06b5ac9f7 --- /dev/null +++ b/9-regular-expressions/06-regexp-boundary/article.md @@ -0,0 +1,52 @@ +# Word boundary: \b + +A word boundary `pattern:\b` is a test, just like `pattern:^` and `pattern:$`. + +When the regexp engine (program module that implements searching for regexps) comes across `pattern:\b`, it checks that the position in the string is a word boundary. + +There are three different positions that qualify as word boundaries: + +- At string start, if the first string character is a word character `pattern:\w`. +- Between two characters in the string, where one is a word character `pattern:\w` and the other is not. +- At string end, if the last string character is a word character `pattern:\w`. + +For instance, regexp `pattern:\bJava\b` will be found in `subject:Hello, Java!`, where `subject:Java` is a standalone word, but not in `subject:Hello, JavaScript!`. + +```js run +alert( "Hello, Java!".match(/\bJava\b/) ); // Java +alert( "Hello, JavaScript!".match(/\bJava\b/) ); // null +``` + +In the string `subject:Hello, Java!` following positions correspond to `pattern:\b`: + + + +So, it matches the pattern `pattern:\bHello\b`, because: + +1. At the beginning of the string matches the first test `pattern:\b`. +2. Then matches the word `pattern:Hello`. +3. Then the test `pattern:\b` matches again, as we're between `subject:o` and a comma. + +So the pattern `pattern:\bHello\b` would match, but not `pattern:\bHell\b` (because there's no word boundary after `l`) and not `Java!\b` (because the exclamation sign is not a wordly character `pattern:\w`, so there's no word boundary after it). + +```js run +alert( "Hello, Java!".match(/\bHello\b/) ); // Hello +alert( "Hello, Java!".match(/\bJava\b/) ); // Java +alert( "Hello, Java!".match(/\bHell\b/) ); // null (no match) +alert( "Hello, Java!".match(/\bJava!\b/) ); // null (no match) +``` + +We can use `pattern:\b` not only with words, but with digits as well. + +For example, the pattern `pattern:\b\d\d\b` looks for standalone 2-digit numbers. In other words, it looks for 2-digit numbers that are surrounded by characters different from `pattern:\w`, such as spaces or punctuation (or text start/end). + +```js run +alert( "1 23 456 78".match(/\b\d\d\b/g) ); // 23,78 +alert( "12,34,56".match(/\b\d\d\b/g) ); // 12,34,56 +``` + +```warn header="Word boundary `pattern:\b` doesn't work for non-latin alphabets" +The word boundary test `pattern:\b` checks that there should be `pattern:\w` on the one side from the position and "not `pattern:\w`" - on the other side. + +But `pattern:\w` means a latin letter `a-z` (or a digit or an underscore), so the test doesn't work for other characters, e.g. cyrillic letters or hieroglyphs. +``` diff --git a/9-regular-expressions/06-regexp-boundary/hello-java-boundaries.svg b/9-regular-expressions/06-regexp-boundary/hello-java-boundaries.svg new file mode 100644 index 000000000..0314308dd --- /dev/null +++ b/9-regular-expressions/06-regexp-boundary/hello-java-boundaries.svg @@ -0,0 +1,22 @@ +<<<<<<< HEAD:9-regular-expressions/03-regexp-character-classes/hello-java-boundaries.svg +<?xml version="1.0" encoding="UTF-8"?> +<svg width="245px" height="74px" viewBox="0 0 245 74" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> + <!-- Generator: sketchtool 55.2 (78181) - https://sketchapp.com --> + <title>hello-java-boundaries.svg</title> + <desc>Created with sketchtool.</desc> + <g id="regexp" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd"> + <g id="hello-java-boundaries.svg"> + <text id="Hello,-Java!" font-family="PTMono-Regular, PT Mono" font-size="22" font-weight="normal" letter-spacing="4.58333333" fill="#8A704D"> + <tspan x="20" y="61">Hello, Java</tspan> + <tspan x="215.616667" y="61">!</tspan> + </text> + <path id="Line" d="M15.5,25.5 L15.5,8.5 L17.5,8.5 L17.5,25.5 L23.5,25.5 L16.5,39.5 L9.5,25.5 L15.5,25.5 Z" fill="#EE6B47" fill-rule="nonzero"></path> + <path id="Line-2" d="M110.5,25.5 L110.5,8.5 L112.5,8.5 L112.5,25.5 L118.5,25.5 L111.5,39.5 L104.5,25.5 L110.5,25.5 Z" fill="#EE6B47" fill-rule="nonzero"></path> + <path id="Line-3" d="M142.5,25.5 L142.5,8.5 L144.5,8.5 L144.5,25.5 L150.5,25.5 L143.5,39.5 L136.5,25.5 L142.5,25.5 Z" fill="#EE6B47" fill-rule="nonzero"></path> + <path id="Line-4" d="M216.5,25.5 L216.5,8.5 L218.5,8.5 L218.5,25.5 L224.5,25.5 L217.5,39.5 L210.5,25.5 L216.5,25.5 Z" fill="#EE6B47" fill-rule="nonzero"></path> + </g> + </g> +</svg> +======= +<svg xmlns="http://www.w3.org/2000/svg" width="245" height="74" viewBox="0 0 245 74"><defs><style>@import url(https://fonts.googleapis.com/css?family=Open+Sans:bold,italic,bolditalic%7CPT+Mono);@font-face{font-family:'PT Mono';font-weight:700;font-style:normal;src:local('PT MonoBold'),url(/font/PTMonoBold.woff2) format('woff2'),url(/font/PTMonoBold.woff) format('woff'),url(/font/PTMonoBold.ttf) format('truetype')}</style></defs><g id="regexp" fill="none" fill-rule="evenodd" stroke="none" stroke-width="1"><g id="hello-java-boundaries.svg" fill-rule="nonzero"><path id="Hello,Java!" fill="#AF6E24" d="M30.054 53.938h-6.908V61H21.32V45.6h1.826v6.71h6.908V45.6h1.826V61h-1.826v-7.062zm19.367 5.676a5.537 5.537 0 01-.935.66 6.9 6.9 0 01-1.177.528c-.425.147-.869.26-1.33.341-.463.08-.928.121-1.398.121-.88 0-1.657-.136-2.332-.407a4.49 4.49 0 01-1.694-1.166 5.081 5.081 0 01-1.034-1.815c-.234-.704-.352-1.496-.352-2.376 0-.924.129-1.745.385-2.464.257-.719.627-1.32 1.111-1.804a4.839 4.839 0 011.76-1.111c.69-.257 1.46-.385 2.31-.385.616 0 1.225.08 1.826.242a3.606 3.606 0 011.595.913c.462.447.818 1.063 1.067 1.848.25.785.338 1.8.264 3.047h-8.514c0 1.32.356 2.306 1.067 2.959.712.653 1.661.979 2.85.979.395 0 .788-.048 1.176-.143a9.833 9.833 0 001.111-.341c.352-.132.664-.279.935-.44.272-.161.48-.308.627-.44l.682 1.254zm-4.642-8.426a5.94 5.94 0 00-1.375.154 3.134 3.134 0 00-1.144.517c-.33.242-.601.557-.814.946-.212.389-.348.869-.407 1.441h6.842c-.073-.968-.385-1.72-.935-2.255-.55-.535-1.272-.803-2.167-.803zM58.185 45.6h3.652v11.704c0 .895.15 1.525.45 1.892.301.367.745.55 1.332.55.41 0 .803-.073 1.177-.22.374-.147.788-.396 1.243-.748l.792 1.21a4.874 4.874 0 01-.77.55 5.717 5.717 0 01-1.738.66 4.17 4.17 0 01-.814.088c-.543 0-1.027-.07-1.452-.209a2.481 2.481 0 01-1.067-.671c-.286-.308-.503-.715-.65-1.221-.146-.506-.22-1.133-.22-1.881v-10.23h-1.935V45.6zm17.783 0h3.652v11.704c0 .895.15 1.525.451 1.892.3.367.744.55 1.331.55.41 0 .803-.073 1.177-.22.374-.147.788-.396 1.243-.748l.792 1.21a4.874 4.874 0 01-.77.55 5.717 5.717 0 01-1.738.66 4.17 4.17 0 01-.814.088c-.543 0-1.027-.07-1.452-.209a2.481 2.481 0 01-1.067-.671c-.286-.308-.502-.715-.649-1.221-.147-.506-.22-1.133-.22-1.881v-10.23h-1.936V45.6zm16.42 9.9c0-1.775.461-3.179 1.385-4.213.924-1.034 2.244-1.551 3.96-1.551.924 0 1.72.15 2.387.451.668.3 1.221.708 1.661 1.221.44.513.767 1.122.98 1.826.212.704.318 1.46.318 2.266 0 .88-.117 1.676-.352 2.387a4.959 4.959 0 01-1.034 1.815 4.569 4.569 0 01-1.683 1.155c-.667.271-1.426.407-2.277.407-.909 0-1.701-.15-2.376-.451a4.663 4.663 0 01-1.672-1.221 4.979 4.979 0 01-.979-1.826 7.799 7.799 0 01-.319-2.266zm1.825 0c0 .513.063 1.027.187 1.54.125.513.327.975.605 1.386.279.41.642.74 1.09.99.447.25.993.374 1.638.374 1.174 0 2.057-.363 2.651-1.089.594-.726.891-1.793.891-3.201a6.46 6.46 0 00-.187-1.551 4.098 4.098 0 00-.616-1.375 3.247 3.247 0 00-1.1-.99c-.447-.25-.993-.374-1.639-.374-1.173 0-2.053.36-2.64 1.078-.586.719-.88 1.79-.88 3.212zm19.742 4.29c0-.44.143-.796.429-1.067.286-.271.656-.407 1.11-.407.558 0 .99.194 1.299.583.308.389.462.935.462 1.639 0 .572-.096 1.074-.286 1.507a3.802 3.802 0 01-1.64 1.826c-.33.183-.634.319-.912.407l-.55-.858a3.904 3.904 0 001.364-.88c.381-.381.572-.843.572-1.386a2.463 2.463 0 01-.484.066c-.426 0-.76-.121-1.001-.363-.242-.242-.363-.598-.363-1.067zm32.662-14.19h8.712v9.944c0 1.848-.44 3.256-1.32 4.224-.88.968-2.148 1.452-3.806 1.452a7.12 7.12 0 01-1.254-.11 7.234 7.234 0 01-1.144-.297 5.646 5.646 0 01-.913-.407c-.256-.147-.443-.286-.56-.418l.791-1.452c.162.103.341.213.54.33.197.117.417.231.66.341a4.331 4.331 0 001.837.385c1.1 0 1.932-.345 2.496-1.034.565-.69.847-1.804.847-3.344v-7.986h-6.886V45.6zm18.026 5.258a6.988 6.988 0 012.134-.792c.792-.161 1.569-.242 2.332-.242.748 0 1.36.117 1.837.352.476.235.85.539 1.122.913.271.374.454.8.55 1.276.095.477.143.957.143 1.441 0 .557-.015 1.151-.044 1.782a81.5 81.5 0 00-.066 1.892c0 .733.044 1.43.132 2.09h1.474V61h-2.926l-.198-1.65h-.11c-.088.132-.22.3-.396.506a3.623 3.623 0 01-.693.605c-.286.198-.635.37-1.045.517-.411.147-.895.22-1.452.22-1.086 0-1.944-.279-2.574-.836-.631-.557-.946-1.32-.946-2.288 0-.748.165-1.371.495-1.87.33-.499.803-.88 1.419-1.144.616-.264 1.36-.418 2.233-.462.872-.044 1.851.015 2.937.176.073-.675.084-1.236.033-1.683-.052-.447-.169-.803-.352-1.067a1.474 1.474 0 00-.77-.561c-.33-.11-.737-.165-1.221-.165-.66 0-1.291.092-1.892.275-.602.183-1.137.37-1.606.561l-.55-1.276zm3.234 8.866c.41 0 .792-.066 1.144-.198.352-.132.66-.3.924-.506.264-.205.484-.429.66-.671.176-.242.308-.473.396-.693v-1.54a12.447 12.447 0 00-2.112-.198c-.646 0-1.203.07-1.672.209-.47.14-.836.356-1.1.649-.264.293-.396.675-.396 1.144 0 .484.165.906.495 1.265.33.36.883.539 1.66.539zm18.817-.858h.242L190.39 50h1.914l-4.642 11h-1.936l-4.73-11h2.024l3.674 8.866zm13.515-8.008a6.988 6.988 0 012.134-.792c.792-.161 1.57-.242 2.332-.242.748 0 1.36.117 1.837.352.477.235.851.539 1.122.913.272.374.455.8.55 1.276.096.477.143.957.143 1.441 0 .557-.014 1.151-.044 1.782-.029.63-.051 1.261-.066 1.892 0 .733.044 1.43.132 2.09h1.474V61h-2.926l-.198-1.65h-.11c-.088.132-.22.3-.396.506a3.623 3.623 0 01-.693.605c-.286.198-.634.37-1.045.517-.41.147-.894.22-1.452.22-1.085 0-1.943-.279-2.574-.836-.63-.557-.946-1.32-.946-2.288 0-.748.165-1.371.495-1.87.33-.499.803-.88 1.42-1.144.615-.264 1.36-.418 2.232-.462.873-.044 1.852.015 2.937.176.074-.675.085-1.236.033-1.683-.051-.447-.168-.803-.352-1.067a1.474 1.474 0 00-.77-.561c-.33-.11-.737-.165-1.22-.165-.66 0-1.291.092-1.893.275-.601.183-1.136.37-1.606.561l-.55-1.276zm3.234 8.866c.411 0 .792-.066 1.144-.198.352-.132.66-.3.924-.506.264-.205.484-.429.66-.671.176-.242.308-.473.396-.693v-1.54a12.447 12.447 0 00-2.112-.198c-.645 0-1.202.07-1.672.209-.469.14-.836.356-1.1.649-.264.293-.396.675-.396 1.144 0 .484.165.906.495 1.265.33.36.884.539 1.661.539zM221.315 45.6h1.826v7.634l-.374 3.872h-1.078l-.374-3.872V45.6zm-.374 14.388c0-.396.113-.708.34-.935.228-.227.532-.341.914-.341.396 0 .711.114.946.341.234.227.352.539.352.935 0 .381-.118.69-.352.924-.235.235-.55.352-.946.352-.382 0-.686-.117-.913-.352-.228-.235-.341-.543-.341-.924z"/><path id="Line" fill="#C06334" d="M17.5 8.5v17h6l-7 14-7-14h6v-17h2z"/><path id="Line-2" fill="#C06334" d="M112.5 8.5v17h6l-7 14-7-14h6v-17h2z"/><path id="Line-3" fill="#C06334" d="M144.5 8.5v17h6l-7 14-7-14h6v-17h2z"/><path id="Line-4" fill="#C06334" d="M218.5 8.5v17h6l-7 14-7-14h6v-17h2z"/></g></g></svg> +>>>>>>> 540d753e90789205fc6e75c502f68382c87dea9b:9-regular-expressions/06-regexp-boundary/hello-java-boundaries.svg diff --git a/9-regular-expressions/03-regexp-character-classes/love-html5-classes.svg b/9-regular-expressions/06-regexp-boundary/love-html5-classes.svg similarity index 100% rename from 9-regular-expressions/03-regexp-character-classes/love-html5-classes.svg rename to 9-regular-expressions/06-regexp-boundary/love-html5-classes.svg diff --git a/9-regular-expressions/07-regexp-escaping/article.md b/9-regular-expressions/07-regexp-escaping/article.md new file mode 100644 index 000000000..1ad3ac98c --- /dev/null +++ b/9-regular-expressions/07-regexp-escaping/article.md @@ -0,0 +1,99 @@ + +# Escaping, special characters + +As we've seen, a backslash `pattern:\` is used to denote character classes, e.g. `pattern:\d`. So it's a special character in regexps (just like in regular strings). + +There are other special characters as well, that have special meaning in a regexp, such as `pattern:[ ] { } ( ) \ ^ $ . | ? * +`. They are used to do more powerful searches. + +Don't try to remember the list -- soon we'll deal with each of them, and you'll know them by heart automatically. + +## Escaping + +Let's say we want to find literally a dot. Not "any character", but just a dot. + +To use a special character as a regular one, prepend it with a backslash: `pattern:\.`. + +That's also called "escaping a character". + +For example: +```js run +alert( "Chapter 5.1".match(/\d\.\d/) ); // 5.1 (match!) +alert( "Chapter 511".match(/\d\.\d/) ); // null (looking for a real dot \.) +``` + +Parentheses are also special characters, so if we want them, we should use `pattern:\(`. The example below looks for a string `"g()"`: + +```js run +alert( "function g()".match(/g\(\)/) ); // "g()" +``` + +If we're looking for a backslash `\`, it's a special character in both regular strings and regexps, so we should double it. + +```js run +alert( "1\\2".match(/\\/) ); // '\' +``` + +## A slash + +A slash symbol `'/'` is not a special character, but in JavaScript it is used to open and close the regexp: `pattern:/...pattern.../`, so we should escape it too. + +Here's what a search for a slash `'/'` looks like: + +```js run +alert( "/".match(/\//) ); // '/' +``` + +On the other hand, if we're not using `pattern:/.../`, but create a regexp using `new RegExp`, then we don't need to escape it: + +```js run +alert( "/".match(new RegExp("/")) ); // finds / +``` + +## new RegExp + +If we are creating a regular expression with `new RegExp`, then we don't have to escape `/`, but need to do some other escaping. + +For instance, consider this: + +```js run +let regexp = new RegExp("\d\.\d"); + +alert( "Chapter 5.1".match(regexp) ); // null +``` + +The similar search in one of previous examples worked with `pattern:/\d\.\d/`, but `new RegExp("\d\.\d")` doesn't work, why? + +The reason is that backslashes are "consumed" by a string. As we may recall, regular strings have their own special characters, such as `\n`, and a backslash is used for escaping. + +Here's how "\d\.\d" is perceived: + +```js run +alert("\d\.\d"); // d.d +``` + +String quotes "consume" backslashes and interpret them on their own, for instance: + +- `\n` -- becomes a newline character, +- `\u1234` -- becomes the Unicode character with such code, +- ...And when there's no special meaning: like `pattern:\d` or `\z`, then the backslash is simply removed. + +So `new RegExp` gets a string without backslashes. That's why the search doesn't work! + +To fix it, we need to double backslashes, because string quotes turn `\\` into `\`: + +```js run +*!* +let regStr = "\\d\\.\\d"; +*/!* +alert(regStr); // \d\.\d (correct now) + +let regexp = new RegExp(regStr); + +alert( "Chapter 5.1".match(regexp) ); // 5.1 +``` + +## Summary + +- To search for special characters `pattern:[ \ ^ $ . | ? * + ( )` literally, we need to prepend them with a backslash `\` ("escape them"). +- We also need to escape `/` if we're inside `pattern:/.../` (but not inside `new RegExp`). +- When passing a string to `new RegExp`, we need to double backslashes `\\`, cause string quotes consume one of them. diff --git a/9-regular-expressions/05-regexp-character-sets-and-ranges/1-find-range-1/solution.md b/9-regular-expressions/08-regexp-character-sets-and-ranges/1-find-range-1/solution.md similarity index 66% rename from 9-regular-expressions/05-regexp-character-sets-and-ranges/1-find-range-1/solution.md rename to 9-regular-expressions/08-regexp-character-sets-and-ranges/1-find-range-1/solution.md index a6d71f661..85c7748f7 100644 --- a/9-regular-expressions/05-regexp-character-sets-and-ranges/1-find-range-1/solution.md +++ b/9-regular-expressions/08-regexp-character-sets-and-ranges/1-find-range-1/solution.md @@ -5,7 +5,7 @@ Answers: **no, yes**. ```js run alert( "Java".match(/Java[^script]/) ); // null ``` -- Yes, because the regexp is case-insensitive, the `pattern:[^script]` part matches the character `"S"`. +- Yes, because the `pattern:[^script]` part matches the character `"S"`. It's not one of `pattern:script`. As the regexp is case-sensitive (no `pattern:i` flag), it treats `"S"` as a different character from `"s"`. ```js run alert( "JavaScript".match(/Java[^script]/) ); // "JavaS" diff --git a/9-regular-expressions/05-regexp-character-sets-and-ranges/1-find-range-1/task.md b/9-regular-expressions/08-regexp-character-sets-and-ranges/1-find-range-1/task.md similarity index 100% rename from 9-regular-expressions/05-regexp-character-sets-and-ranges/1-find-range-1/task.md rename to 9-regular-expressions/08-regexp-character-sets-and-ranges/1-find-range-1/task.md diff --git a/9-regular-expressions/05-regexp-character-sets-and-ranges/2-find-time-2-formats/solution.md b/9-regular-expressions/08-regexp-character-sets-and-ranges/2-find-time-2-formats/solution.md similarity index 69% rename from 9-regular-expressions/05-regexp-character-sets-and-ranges/2-find-time-2-formats/solution.md rename to 9-regular-expressions/08-regexp-character-sets-and-ranges/2-find-time-2-formats/solution.md index 91568d033..69ade1b19 100644 --- a/9-regular-expressions/05-regexp-character-sets-and-ranges/2-find-time-2-formats/solution.md +++ b/9-regular-expressions/08-regexp-character-sets-and-ranges/2-find-time-2-formats/solution.md @@ -1,8 +1,8 @@ Answer: `pattern:\d\d[-:]\d\d`. ```js run -let reg = /\d\d[-:]\d\d/g; -alert( "Breakfast at 09:00. Dinner at 21-30".match(reg) ); // 09:00, 21-30 +let regexp = /\d\d[-:]\d\d/g; +alert( "Breakfast at 09:00. Dinner at 21-30".match(regexp) ); // 09:00, 21-30 ``` Please note that the dash `pattern:'-'` has a special meaning in square brackets, but only between other characters, not when it's in the beginning or at the end, so we don't need to escape it. diff --git a/9-regular-expressions/05-regexp-character-sets-and-ranges/2-find-time-2-formats/task.md b/9-regular-expressions/08-regexp-character-sets-and-ranges/2-find-time-2-formats/task.md similarity index 76% rename from 9-regular-expressions/05-regexp-character-sets-and-ranges/2-find-time-2-formats/task.md rename to 9-regular-expressions/08-regexp-character-sets-and-ranges/2-find-time-2-formats/task.md index 868115bdf..c8441caf4 100644 --- a/9-regular-expressions/05-regexp-character-sets-and-ranges/2-find-time-2-formats/task.md +++ b/9-regular-expressions/08-regexp-character-sets-and-ranges/2-find-time-2-formats/task.md @@ -5,8 +5,8 @@ The time can be in the format `hours:minutes` or `hours-minutes`. Both hours and Write a regexp to find time: ```js -let reg = /your regexp/g; -alert( "Breakfast at 09:00. Dinner at 21-30".match(reg) ); // 09:00, 21-30 +let regexp = /your regexp/g; +alert( "Breakfast at 09:00. Dinner at 21-30".match(regexp) ); // 09:00, 21-30 ``` P.S. In this task we assume that the time is always correct, there's no need to filter out bad strings like "45:67". Later we'll deal with that too. diff --git a/9-regular-expressions/08-regexp-character-sets-and-ranges/article.md b/9-regular-expressions/08-regexp-character-sets-and-ranges/article.md new file mode 100644 index 000000000..b7b82d45f --- /dev/null +++ b/9-regular-expressions/08-regexp-character-sets-and-ranges/article.md @@ -0,0 +1,197 @@ +# Sets and ranges [...] + +Several characters or character classes inside square brackets `[…]` mean to "search for any character among given". + +## Sets + +For instance, `pattern:[eao]` means any of the 3 characters: `'a'`, `'e'`, or `'o'`. + +That's called a *set*. Sets can be used in a regexp along with regular characters: + +```js run +// find [t or m], and then "op" +alert( "Mop top".match(/[tm]op/gi) ); // "Mop", "top" +``` + +Please note that although there are multiple characters in the set, they correspond to exactly one character in the match. + +So the example below gives no matches: + +```js run +// find "V", then [o or i], then "la" +alert( "Voila".match(/V[oi]la/) ); // null, no matches +``` + +The pattern searches for: + +- `pattern:V`, +- then *one* of the letters `pattern:[oi]`, +- then `pattern:la`. + +So there would be a match for `match:Vola` or `match:Vila`. + +## Ranges + +Square brackets may also contain *character ranges*. + +For instance, `pattern:[a-z]` is a character in range from `a` to `z`, and `pattern:[0-5]` is a digit from `0` to `5`. + +In the example below we're searching for `"x"` followed by two digits or letters from `A` to `F`: + +```js run +alert( "Exception 0xAF".match(/x[0-9A-F][0-9A-F]/g) ); // xAF +``` + +Here `pattern:[0-9A-F]` has two ranges: it searches for a character that is either a digit from `0` to `9` or a letter from `A` to `F`. + +If we'd like to look for lowercase letters as well, we can add the range `a-f`: `pattern:[0-9A-Fa-f]`. Or add the flag `pattern:i`. + +We can also use character classes inside `[…]`. + +For instance, if we'd like to look for a wordly character `pattern:\w` or a hyphen `pattern:-`, then the set is `pattern:[\w-]`. + +Combining multiple classes is also possible, e.g. `pattern:[\s\d]` means "a space character or a digit". + +```smart header="Character classes are shorthands for certain character sets" +For instance: + +- **\d** -- is the same as `pattern:[0-9]`, +- **\w** -- is the same as `pattern:[a-zA-Z0-9_]`, +- **\s** -- is the same as `pattern:[\t\n\v\f\r ]`, plus few other rare Unicode space characters. +``` + +### Example: multi-language \w + +As the character class `pattern:\w` is a shorthand for `pattern:[a-zA-Z0-9_]`, it can't find Chinese hieroglyphs, Cyrillic letters, etc. + +We can write a more universal pattern, that looks for wordly characters in any language. That's easy with Unicode properties: `pattern:[\p{Alpha}\p{M}\p{Nd}\p{Pc}\p{Join_C}]`. + +Let's decipher it. Similar to `pattern:\w`, we're making a set of our own that includes characters with following Unicode properties: + +- `Alphabetic` (`Alpha`) - for letters, +- `Mark` (`M`) - for accents, +- `Decimal_Number` (`Nd`) - for digits, +- `Connector_Punctuation` (`Pc`) - for the underscore `'_'` and similar characters, +- `Join_Control` (`Join_C`) - two special codes `200c` and `200d`, used in ligatures, e.g. in Arabic. + +An example of use: + +```js run +let regexp = /[\p{Alpha}\p{M}\p{Nd}\p{Pc}\p{Join_C}]/gu; + +let str = `Hi 你好 12`; + +// finds all letters and digits: +alert( str.match(regexp) ); // H,i,你,好,1,2 +``` + +Of course, we can edit this pattern: add Unicode properties or remove them. Unicode properties are covered in more details in the article <info:regexp-unicode>. + +```warn header="Unicode properties aren't supported in IE" +Unicode properties `pattern:p{…}` are not implemented in IE. If we really need them, we can use library [XRegExp](https://xregexp.com/). + +Or just use ranges of characters in a language that interests us, e.g. `pattern:[а-я]` for Cyrillic letters. +``` + +## Excluding ranges + +Besides normal ranges, there are "excluding" ranges that look like `pattern:[^…]`. + +They are denoted by a caret character `^` at the start and match any character *except the given ones*. + +For instance: + +- `pattern:[^aeyo]` -- any character except `'a'`, `'e'`, `'y'` or `'o'`. +- `pattern:[^0-9]` -- any character except a digit, the same as `pattern:\D`. +- `pattern:[^\s]` -- any non-space character, same as `\S`. + +The example below looks for any characters except letters, digits and spaces: + +```js run +alert( "alice15@gmail.com".match(/[^\d\sA-Z]/gi) ); // @ and . +``` + +## Escaping in […] + +Usually when we want to find exactly a special character, we need to escape it like `pattern:\.`. And if we need a backslash, then we use `pattern:\\`, and so on. + +In square brackets we can use the vast majority of special characters without escaping: + +- Symbols `pattern:. + ( )` never need escaping. +- A hyphen `pattern:-` is not escaped in the beginning or the end (where it does not define a range). +- A caret `pattern:^` is only escaped in the beginning (where it means exclusion). +- The closing square bracket `pattern:]` is always escaped (if we need to look for that symbol). + +In other words, all special characters are allowed without escaping, except when they mean something for square brackets. + +A dot `.` inside square brackets means just a dot. The pattern `pattern:[.,]` would look for one of characters: either a dot or a comma. + +In the example below the regexp `pattern:[-().^+]` looks for one of the characters `-().^+`: + +```js run +// No need to escape +let regexp = /[-().^+]/g; + +alert( "1 + 2 - 3".match(regexp) ); // Matches +, - +``` + +...But if you decide to escape them "just in case", then there would be no harm: + +```js run +// Escaped everything +let regexp = /[\-\(\)\.\^\+]/g; + +alert( "1 + 2 - 3".match(regexp) ); // also works: +, - +``` + +## Ranges and flag "u" + +If there are surrogate pairs in the set, flag `pattern:u` is required for them to work correctly. + +For instance, let's look for `pattern:[𝒳𝒴]` in the string `subject:𝒳`: + +```js run +alert( '𝒳'.match(/[𝒳𝒴]/) ); // shows a strange character, like [?] +// (the search was performed incorrectly, half-character returned) +``` + +The result is incorrect, because by default regular expressions "don't know" about surrogate pairs. + +The regular expression engine thinks that `[𝒳𝒴]` -- are not two, but four characters: +1. left half of `𝒳` `(1)`, +2. right half of `𝒳` `(2)`, +3. left half of `𝒴` `(3)`, +4. right half of `𝒴` `(4)`. + +We can see their codes like this: + +```js run +for(let i=0; i<'𝒳𝒴'.length; i++) { + alert('𝒳𝒴'.charCodeAt(i)); // 55349, 56499, 55349, 56500 +}; +``` + +So, the example above finds and shows the left half of `𝒳`. + +If we add flag `pattern:u`, then the behavior will be correct: + +```js run +alert( '𝒳'.match(/[𝒳𝒴]/u) ); // 𝒳 +``` + +The similar situation occurs when looking for a range, such as `[𝒳-𝒴]`. + +If we forget to add flag `pattern:u`, there will be an error: + +```js run +'𝒳'.match(/[𝒳-𝒴]/); // Error: Invalid regular expression +``` + +The reason is that without flag `pattern:u` surrogate pairs are perceived as two characters, so `[𝒳-𝒴]` is interpreted as `[<55349><56499>-<55349><56500>]` (every surrogate pair is replaced with its codes). Now it's easy to see that the range `56499-55349` is invalid: its starting code `56499` is greater than the end `55349`. That's the formal reason for the error. + +With the flag `pattern:u` the pattern works correctly: + +```js run +// look for characters from 𝒳 to 𝒵 +alert( '𝒴'.match(/[𝒳-𝒵]/u) ); // 𝒴 +``` diff --git a/9-regular-expressions/08-regexp-greedy-and-lazy/3-find-html-comments/solution.md b/9-regular-expressions/08-regexp-greedy-and-lazy/3-find-html-comments/solution.md deleted file mode 100644 index c066f3e36..000000000 --- a/9-regular-expressions/08-regexp-greedy-and-lazy/3-find-html-comments/solution.md +++ /dev/null @@ -1,17 +0,0 @@ -We need to find the beginning of the comment `match:<!--`, then everything till the end of `match:-->`. - -The first idea could be `pattern:<!--.*?-->` -- the lazy quantifier makes the dot stop right before `match:-->`. - -But a dot in JavaScript means "any symbol except the newline". So multiline comments won't be found. - -We can use `pattern:[\s\S]` instead of the dot to match "anything": - -```js run -let reg = /<!--[\s\S]*?-->/g; - -let str = `... <!-- My -- comment - test --> .. <!----> .. -`; - -alert( str.match(reg) ); // '<!-- My -- comment \n test -->', '<!---->' -``` diff --git a/9-regular-expressions/08-regexp-greedy-and-lazy/4-find-html-tags-greedy-lazy/task.md b/9-regular-expressions/08-regexp-greedy-and-lazy/4-find-html-tags-greedy-lazy/task.md deleted file mode 100644 index 2cf48a4ae..000000000 --- a/9-regular-expressions/08-regexp-greedy-and-lazy/4-find-html-tags-greedy-lazy/task.md +++ /dev/null @@ -1,15 +0,0 @@ -# Find HTML tags - -Create a regular expression to find all (opening and closing) HTML tags with their attributes. - -An example of use: - -```js run -let reg = /your regexp/g; - -let str = '<> <a href="/"> <input type="radio" checked> <b>'; - -alert( str.match(reg) ); // '<a href="/">', '<input type="radio" checked>', '<b>' -``` - -Let's assume that may not contain `<` and `>` inside (in quotes too), that simplifies things a bit. diff --git a/9-regular-expressions/08-regexp-greedy-and-lazy/witch_greedy1.svg b/9-regular-expressions/08-regexp-greedy-and-lazy/witch_greedy1.svg deleted file mode 100644 index 65e490e97..000000000 --- a/9-regular-expressions/08-regexp-greedy-and-lazy/witch_greedy1.svg +++ /dev/null @@ -1,16 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<svg width="463px" height="130px" viewBox="0 0 463 130" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> - <!-- Generator: sketchtool 55.2 (78181) - https://sketchapp.com --> - <title>witch_greedy1.svg</title> - <desc>Created with sketchtool.</desc> - <g id="regexp" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd"> - <g id="witch_greedy1.svg"> - <text id="a-"witch"-and-her-"b" font-family="PTMono-Regular, PT Mono" font-size="22" font-weight="normal" fill="#8A704D"> - <tspan x="20" y="112">a "witch" and her "broom" is one</tspan> - </text> - <rect id="Rectangle-1" stroke="#E8C48E" x="45.5" y="50.5" width="14" height="76"></rect> - <path d="M52.0039062,60.4414062 L51.6757812,65.9375 L49.7539062,65.9375 L49.4140625,60.4414062 L52.0039062,60.4414062 Z M56.5625,60.4414062 L56.234375,65.9375 L54.3125,65.9375 L53.9726562,60.4414062 L56.5625,60.4414062 Z" id="--"-----------------" fill="#CB1E31"></path> - <path id="Line" d="M51.5,30.5 L51.5,8.5 L53.5,8.5 L53.5,30.5 L59.5,30.5 L52.5,44.5 L45.5,30.5 L51.5,30.5 Z" fill="#EE6B47" fill-rule="nonzero"></path> - </g> - </g> -</svg> \ No newline at end of file diff --git a/9-regular-expressions/09-regexp-groups/1-find-webcolor-3-or-6/solution.md b/9-regular-expressions/09-regexp-groups/1-find-webcolor-3-or-6/solution.md deleted file mode 100644 index d653ff970..000000000 --- a/9-regular-expressions/09-regexp-groups/1-find-webcolor-3-or-6/solution.md +++ /dev/null @@ -1,29 +0,0 @@ -A regexp to search 3-digit color `#abc`: `pattern:/#[a-f0-9]{3}/i`. - -We can add exactly 3 more optional hex digits. We don't need more or less. Either we have them or we don't. - -The simplest way to add them -- is to append to the regexp: `pattern:/#[a-f0-9]{3}([a-f0-9]{3})?/i` - -We can do it in a smarter way though: `pattern:/#([a-f0-9]{3}){1,2}/i`. - -Here the regexp `pattern:[a-f0-9]{3}` is in parentheses to apply the quantifier `pattern:{1,2}` to it as a whole. - -In action: - -```js run -let reg = /#([a-f0-9]{3}){1,2}/gi; - -let str = "color: #3f3; background-color: #AA00ef; and: #abcd"; - -alert( str.match(reg) ); // #3f3 #AA00ef #abc -``` - -There's a minor problem here: the pattern found `match:#abc` in `subject:#abcd`. To prevent that we can add `pattern:\b` to the end: - -```js run -let reg = /#([a-f0-9]{3}){1,2}\b/gi; - -let str = "color: #3f3; background-color: #AA00ef; and: #abcd"; - -alert( str.match(reg) ); // #3f3 #AA00ef -``` diff --git a/9-regular-expressions/09-regexp-groups/3-find-decimal-positive-numbers/solution.md b/9-regular-expressions/09-regexp-groups/3-find-decimal-positive-numbers/solution.md deleted file mode 100644 index 23065413e..000000000 --- a/9-regular-expressions/09-regexp-groups/3-find-decimal-positive-numbers/solution.md +++ /dev/null @@ -1,18 +0,0 @@ - -An non-negative integer number is `pattern:\d+`. We should exclude `0` as the first digit, as we don't need zero, but we can allow it in further digits. - -So that gives us `pattern:[1-9]\d*`. - -A decimal part is: `pattern:\.\d+`. - -Because the decimal part is optional, let's put it in parentheses with the quantifier `pattern:'?'`. - -Finally we have the regexp: `pattern:[1-9]\d*(\.\d+)?`: - -```js run -let reg = /[1-9]\d*(\.\d+)?/g; - -let str = "1.5 0 -5 12. 123.4."; - -alert( str.match(reg) ); // 1.5, 0, 12, 123.4 -``` diff --git a/9-regular-expressions/09-regexp-groups/3-find-decimal-positive-numbers/task.md b/9-regular-expressions/09-regexp-groups/3-find-decimal-positive-numbers/task.md deleted file mode 100644 index ad8c81eae..000000000 --- a/9-regular-expressions/09-regexp-groups/3-find-decimal-positive-numbers/task.md +++ /dev/null @@ -1,12 +0,0 @@ -# Find positive numbers - -Create a regexp that looks for positive numbers, including those without a decimal point. - -An example of use: -```js -let reg = /your regexp/g; - -let str = "1.5 0 -5 12. 123.4."; - -alert( str.match(reg) ); // 1.5, 12, 123.4 (ignores 0 and -5) -``` diff --git a/9-regular-expressions/09-regexp-groups/4-find-decimal-numbers/solution.md b/9-regular-expressions/09-regexp-groups/4-find-decimal-numbers/solution.md deleted file mode 100644 index dd2410847..000000000 --- a/9-regular-expressions/09-regexp-groups/4-find-decimal-numbers/solution.md +++ /dev/null @@ -1,11 +0,0 @@ -A positive number with an optional decimal part is (per previous task): `pattern:\d+(\.\d+)?`. - -Let's add an optional `-` in the beginning: - -```js run -let reg = /-?\d+(\.\d+)?/g; - -let str = "-1.5 0 2 -123.4."; - -alert( str.match(reg) ); // -1.5, 0, 2, -123.4 -``` diff --git a/9-regular-expressions/09-regexp-groups/5-parse-expression/solution.md b/9-regular-expressions/09-regexp-groups/5-parse-expression/solution.md deleted file mode 100644 index 3db5f667c..000000000 --- a/9-regular-expressions/09-regexp-groups/5-parse-expression/solution.md +++ /dev/null @@ -1,51 +0,0 @@ -A regexp for a number is: `pattern:-?\d+(\.\d+)?`. We created it in previous tasks. - -An operator is `pattern:[-+*/]`. We put the dash `pattern:-` first, because in the middle it would mean a character range, we don't need that. - -Note that a slash should be escaped inside a JavaScript regexp `pattern:/.../`. - -We need a number, an operator, and then another number. And optional spaces between them. - -The full regular expression: `pattern:-?\d+(\.\d+)?\s*[-+*/]\s*-?\d+(\.\d+)?`. - -To get a result as an array let's put parentheses around the data that we need: numbers and the operator: `pattern:(-?\d+(\.\d+)?)\s*([-+*/])\s*(-?\d+(\.\d+)?)`. - -In action: - -```js run -let reg = /(-?\d+(\.\d+)?)\s*([-+*\/])\s*(-?\d+(\.\d+)?)/; - -alert( "1.2 + 12".match(reg) ); -``` - -The result includes: - -- `result[0] == "1.2 + 12"` (full match) -- `result[1] == "1.2"` (first group `(-?\d+(\.\d+)?)` -- the first number, including the decimal part) -- `result[2] == ".2"` (second group`(\.\d+)?` -- the first decimal part) -- `result[3] == "+"` (third group `([-+*\/])` -- the operator) -- `result[4] == "12"` (forth group `(-?\d+(\.\d+)?)` -- the second number) -- `result[5] == undefined` (fifth group `(\.\d+)?` -- the last decimal part is absent, so it's undefined) - -We only want the numbers and the operator, without the full match or the decimal parts. - -The full match (the arrays first item) can be removed by shifting the array `pattern:result.shift()`. - -The decimal groups can be removed by making them into non-capturing groups, by adding `pattern:?:` to the beginning: `pattern:(?:\.\d+)?`. - -The final solution: - -```js run -function parse(expr) { - let reg = /(-?\d+(?:\.\d+)?)\s*([-+*\/])\s*(-?\d+(?:\.\d+)?)/; - - let result = expr.match(reg); - - if (!result) return []; - result.shift(); - - return result; -} - -alert( parse("-1.23 * 3.45") ); // -1.23, *, 3.45 -``` diff --git a/9-regular-expressions/07-regexp-quantifiers/1-find-text-manydots/solution.md b/9-regular-expressions/09-regexp-quantifiers/1-find-text-manydots/solution.md similarity index 57% rename from 9-regular-expressions/07-regexp-quantifiers/1-find-text-manydots/solution.md rename to 9-regular-expressions/09-regexp-quantifiers/1-find-text-manydots/solution.md index d4ddb1369..21b8762ec 100644 --- a/9-regular-expressions/07-regexp-quantifiers/1-find-text-manydots/solution.md +++ b/9-regular-expressions/09-regexp-quantifiers/1-find-text-manydots/solution.md @@ -2,8 +2,8 @@ Solution: ```js run -let reg = /\.{3,}/g; -alert( "Hello!... How goes?.....".match(reg) ); // ..., ..... +let regexp = /\.{3,}/g; +alert( "Hello!... How goes?.....".match(regexp) ); // ..., ..... ``` Please note that the dot is a special character, so we have to escape it and insert as `\.`. diff --git a/9-regular-expressions/07-regexp-quantifiers/1-find-text-manydots/task.md b/9-regular-expressions/09-regexp-quantifiers/1-find-text-manydots/task.md similarity index 59% rename from 9-regular-expressions/07-regexp-quantifiers/1-find-text-manydots/task.md rename to 9-regular-expressions/09-regexp-quantifiers/1-find-text-manydots/task.md index 6fd91bdcf..4140b4a98 100644 --- a/9-regular-expressions/07-regexp-quantifiers/1-find-text-manydots/task.md +++ b/9-regular-expressions/09-regexp-quantifiers/1-find-text-manydots/task.md @@ -9,6 +9,6 @@ Create a regexp to find ellipsis: 3 (or more?) dots in a row. Check it: ```js -let reg = /your regexp/g; -alert( "Hello!... How goes?.....".match(reg) ); // ..., ..... +let regexp = /your regexp/g; +alert( "Hello!... How goes?.....".match(regexp) ); // ..., ..... ``` diff --git a/9-regular-expressions/07-regexp-quantifiers/2-find-html-colors-6hex/solution.md b/9-regular-expressions/09-regexp-quantifiers/2-find-html-colors-6hex/solution.md similarity index 60% rename from 9-regular-expressions/07-regexp-quantifiers/2-find-html-colors-6hex/solution.md rename to 9-regular-expressions/09-regexp-quantifiers/2-find-html-colors-6hex/solution.md index ec871d05c..afee89c50 100644 --- a/9-regular-expressions/07-regexp-quantifiers/2-find-html-colors-6hex/solution.md +++ b/9-regular-expressions/09-regexp-quantifiers/2-find-html-colors-6hex/solution.md @@ -1,23 +1,23 @@ -We need to look for `#` followed by 6 hexadimal characters. +We need to look for `#` followed by 6 hexadecimal characters. -A hexadimal character can be described as `pattern:[0-9a-fA-F]`. Or if we use the `i` flag, then just `pattern:[0-9a-f]`. +A hexadecimal character can be described as `pattern:[0-9a-fA-F]`. Or if we use the `pattern:i` flag, then just `pattern:[0-9a-f]`. Then we can look for 6 of them using the quantifier `pattern:{6}`. As a result, we have the regexp: `pattern:/#[a-f0-9]{6}/gi`. ```js run -let reg = /#[a-f0-9]{6}/gi; +let regexp = /#[a-f0-9]{6}/gi; let str = "color:#121212; background-color:#AA00ef bad-colors:f#fddee #fd2" -alert( str.match(reg) ); // #121212,#AA00ef +alert( str.match(regexp) ); // #121212,#AA00ef ``` The problem is that it finds the color in longer sequences: ```js run -alert( "#12345678".match( /#[a-f0-9]{6}/gi ) ) // #12345678 +alert( "#12345678".match( /#[a-f0-9]{6}/gi ) ) // #123456 ``` To fix that, we can add `pattern:\b` to the end: diff --git a/9-regular-expressions/07-regexp-quantifiers/2-find-html-colors-6hex/task.md b/9-regular-expressions/09-regexp-quantifiers/2-find-html-colors-6hex/task.md similarity index 71% rename from 9-regular-expressions/07-regexp-quantifiers/2-find-html-colors-6hex/task.md rename to 9-regular-expressions/09-regexp-quantifiers/2-find-html-colors-6hex/task.md index 1960a09c6..9a1923a7e 100644 --- a/9-regular-expressions/07-regexp-quantifiers/2-find-html-colors-6hex/task.md +++ b/9-regular-expressions/09-regexp-quantifiers/2-find-html-colors-6hex/task.md @@ -1,15 +1,15 @@ # Regexp for HTML colors -Create a regexp to search HTML-colors written as `#ABCDEF`: first `#` and then 6 hexadimal characters. +Create a regexp to search HTML-colors written as `#ABCDEF`: first `#` and then 6 hexadecimal characters. An example of use: ```js -let reg = /...your regexp.../ +let regexp = /...your regexp.../ let str = "color:#121212; background-color:#AA00ef bad-colors:f#fddee #fd2 #12345678"; -alert( str.match(reg) ) // #121212,#AA00ef +alert( str.match(regexp) ) // #121212,#AA00ef ``` P.S. In this task we do not need other color formats like `#123` or `rgb(1,2,3)` etc. diff --git a/9-regular-expressions/07-regexp-quantifiers/article.md b/9-regular-expressions/09-regexp-quantifiers/article.md similarity index 63% rename from 9-regular-expressions/07-regexp-quantifiers/article.md rename to 9-regular-expressions/09-regexp-quantifiers/article.md index 5ab592561..1a7eecfeb 100644 --- a/9-regular-expressions/07-regexp-quantifiers/article.md +++ b/9-regular-expressions/09-regexp-quantifiers/article.md @@ -2,7 +2,7 @@ Let's say we have a string like `+7(903)-123-45-67` and want to find all numbers in it. But unlike before, we are interested not in single digits, but full numbers: `7, 903, 123, 45, 67`. -A number is a sequence of 1 or more digits `\d`. To mark how many we need, we need to append a *quantifier*. +A number is a sequence of 1 or more digits `pattern:\d`. To mark how many we need, we can append a *quantifier*. ## Quantity {n} @@ -12,7 +12,7 @@ A quantifier is appended to a character (or a character class, or a `[...]` set It has a few advanced forms, let's see examples: -The exact count: `{5}` +The exact count: `pattern:{5}` : `pattern:\d{5}` denotes exactly 5 digits, the same as `pattern:\d\d\d\d\d`. The example below looks for a 5-digit number: @@ -23,7 +23,7 @@ The exact count: `{5}` We can add `\b` to exclude longer numbers: `pattern:\b\d{5}\b`. -The range: `{3,5}`, match 3-5 times +The range: `pattern:{3,5}`, match 3-5 times : To find numbers from 3 to 5 digits we can put the limits into curly braces: `pattern:\d{3,5}` ```js run @@ -54,8 +54,8 @@ alert(numbers); // 7,903,123,45,67 There are shorthands for most used quantifiers: -`+` -: Means "one or more", the same as `{1,}`. +`pattern:+` +: Means "one or more", the same as `pattern:{1,}`. For instance, `pattern:\d+` looks for numbers: @@ -65,8 +65,8 @@ There are shorthands for most used quantifiers: alert( str.match(/\d+/g) ); // 7,903,123,45,67 ``` -`?` -: Means "zero or one", the same as `{0,1}`. In other words, it makes the symbol optional. +`pattern:?` +: Means "zero or one", the same as `pattern:{0,1}`. In other words, it makes the symbol optional. For instance, the pattern `pattern:ou?r` looks for `match:o` followed by zero or one `match:u`, and then `match:r`. @@ -78,16 +78,16 @@ There are shorthands for most used quantifiers: alert( str.match(/colou?r/g) ); // color, colour ``` -`*` -: Means "zero or more", the same as `{0,}`. That is, the character may repeat any times or be absent. +`pattern:*` +: Means "zero or more", the same as `pattern:{0,}`. That is, the character may repeat any times or be absent. - For example, `pattern:\d0*` looks for a digit followed by any number of zeroes: + For example, `pattern:\d0*` looks for a digit followed by any number of zeroes (may be many or none): ```js run alert( "100 10 1".match(/\d0*/g) ); // 100, 10, 1 ``` - Compare it with `'+'` (one or more): + Compare it with `pattern:+` (one or more): ```js run alert( "100 10 1".match(/\d0+/g) ); // 100, 10 @@ -98,43 +98,45 @@ There are shorthands for most used quantifiers: Quantifiers are used very often. They serve as the main "building block" of complex regular expressions, so let's see more examples. -Regexp "decimal fraction" (a number with a floating point): `pattern:\d+\.\d+` -: In action: - ```js run - alert( "0 1 12.345 7890".match(/\d+\.\d+/g) ); // 12.345 - ``` +**Regexp for decimal fractions (a number with a floating point): `pattern:\d+\.\d+`** -Regexp "open HTML-tag without attributes", like `<span>` or `<p>`: `pattern:/<[a-z]+>/i` -: In action: +In action: +```js run +alert( "0 1 12.345 7890".match(/\d+\.\d+/g) ); // 12.345 +``` + +**Regexp for an "opening HTML-tag without attributes", such as `<span>` or `<p>`.** + +1. The simplest one: `pattern:/<[a-z]+>/i` ```js run alert( "<body> ... </body>".match(/<[a-z]+>/gi) ); // <body> ``` - We look for character `pattern:'<'` followed by one or more English letters, and then `pattern:'>'`. + The regexp looks for character `pattern:'<'` followed by one or more Latin letters, and then `pattern:'>'`. + +2. Improved: `pattern:/<[a-z][a-z0-9]*>/i` -Regexp "open HTML-tag without attributes" (improved): `pattern:/<[a-z][a-z0-9]*>/i` -: Better regexp: according to the standard, HTML tag name may have a digit at any position except the first one, like `<h1>`. + According to the standard, HTML tag name may have a digit at any position except the first one, like `<h1>`. ```js run alert( "<h1>Hi!</h1>".match(/<[a-z][a-z0-9]*>/gi) ); // <h1> ``` -Regexp "opening or closing HTML-tag without attributes": `pattern:/<\/?[a-z][a-z0-9]*>/i` -: We added an optional slash `pattern:/?` before the tag. Had to escape it with a backslash, otherwise JavaScript would think it is the pattern end. +**Regexp "opening or closing HTML-tag without attributes": `pattern:/<\/?[a-z][a-z0-9]*>/i`** - ```js run - alert( "<h1>Hi!</h1>".match(/<\/?[a-z][a-z0-9]*>/gi) ); // <h1>, </h1> - ``` +We added an optional slash `pattern:/?` near the beginning of the pattern. Had to escape it with a backslash, otherwise JavaScript would think it is the pattern end. + +```js run +alert( "<h1>Hi!</h1>".match(/<\/?[a-z][a-z0-9]*>/gi) ); // <h1>, </h1> +``` ```smart header="To make a regexp more precise, we often need make it more complex" We can see one common rule in these examples: the more precise is the regular expression -- the longer and more complex it is. -For instance, for HTML tags we could use a simpler regexp: `pattern:<\w+>`. - -...But because `pattern:\w` means any English letter or a digit or `'_'`, the regexp also matches non-tags, for instance `match:<_>`. So it's much simpler than `pattern:<[a-z][a-z0-9]*>`, but less reliable. +For instance, for HTML tags we could use a simpler regexp: `pattern:<\w+>`. But as HTML has stricter restrictions for a tag name, `pattern:<[a-z][a-z0-9]*>` is more reliable. -Are we ok with `pattern:<\w+>` or we need `pattern:<[a-z][a-z0-9]*>`? +Can we use `pattern:<\w+>` or we need `pattern:<[a-z][a-z0-9]*>`? -In real life both variants are acceptable. Depends on how tolerant we can be to "extra" matches and whether it's difficult or not to filter them out by other means. +In real life both variants are acceptable. Depends on how tolerant we can be to "extra" matches and whether it's difficult or not to remove them from the result by other means. ``` diff --git a/9-regular-expressions/10-regexp-backreferences/article.md b/9-regular-expressions/10-regexp-backreferences/article.md deleted file mode 100644 index a7a934e4a..000000000 --- a/9-regular-expressions/10-regexp-backreferences/article.md +++ /dev/null @@ -1,65 +0,0 @@ -# Backreferences in pattern: \n and \k - -Capturing groups can be accessed not only in the result or in the replacement string, but also in the pattern itself. - -## Backreference by number: \n - -A group can be referenced in the pattern using `\n`, where `n` is the group number. - -To make things clear let's consider a task. - -We need to find a quoted string: either a single-quoted `subject:'...'` or a double-quoted `subject:"..."` -- both variants need to match. - -How to look for them? - -We can put two kinds of quotes in the pattern: `pattern:['"](.*?)['"]`, but it would find strings with mixed quotes, like `match:"...'` and `match:'..."`. That would lead to incorrect matches when one quote appears inside other ones, like the string `subject:"She's the one!"`: - -```js run -let str = `He said: "She's the one!".`; - -let reg = /['"](.*?)['"]/g; - -// The result is not what we expect -alert( str.match(reg) ); // "She' -``` - -As we can see, the pattern found an opening quote `match:"`, then the text is consumed lazily till the other quote `match:'`, that closes the match. - -To make sure that the pattern looks for the closing quote exactly the same as the opening one, we can make a groups of it and use the backreference. - -Here's the correct code: - -```js run -let str = `He said: "She's the one!".`; - -*!* -let reg = /(['"])(.*?)\1/g; -*/!* - -alert( str.match(reg) ); // "She's the one!" -``` - -Now it works! The regular expression engine finds the first quote `pattern:(['"])` and remembers the content of `pattern:(...)`, that's the first capturing group. - -Further in the pattern `pattern:\1` means "find the same text as in the first group", exactly the same quote in our case. - -Please note: - -- To reference a group inside a replacement string -- we use `$1`, while in the pattern -- a backslash `\1`. -- If we use `?:` in the group, then we can't reference it. Groups that are excluded from capturing `(?:...)` are not remembered by the engine. - -## Backreference by name: `\k<name>` - -For named groups, we can backreference by `\k<name>`. - -The same example with the named group: - -```js run -let str = `He said: "She's the one!".`; - -*!* -let reg = /(?<quote>['"])(.*?)\k<quote>/g; -*/!* - -alert( str.match(reg) ); // "She's the one!" -``` diff --git a/9-regular-expressions/08-regexp-greedy-and-lazy/1-lazy-greedy/solution.md b/9-regular-expressions/10-regexp-greedy-and-lazy/1-lazy-greedy/solution.md similarity index 100% rename from 9-regular-expressions/08-regexp-greedy-and-lazy/1-lazy-greedy/solution.md rename to 9-regular-expressions/10-regexp-greedy-and-lazy/1-lazy-greedy/solution.md diff --git a/9-regular-expressions/08-regexp-greedy-and-lazy/1-lazy-greedy/task.md b/9-regular-expressions/10-regexp-greedy-and-lazy/1-lazy-greedy/task.md similarity index 56% rename from 9-regular-expressions/08-regexp-greedy-and-lazy/1-lazy-greedy/task.md rename to 9-regular-expressions/10-regexp-greedy-and-lazy/1-lazy-greedy/task.md index b46f55917..596f61a4e 100644 --- a/9-regular-expressions/08-regexp-greedy-and-lazy/1-lazy-greedy/task.md +++ b/9-regular-expressions/10-regexp-greedy-and-lazy/1-lazy-greedy/task.md @@ -3,5 +3,5 @@ What's the match here? ```js -"123 456".match(/\d+? \d+?/g) ); // ? +alert( "123 456".match(/\d+? \d+?/g) ); // ? ``` diff --git a/9-regular-expressions/10-regexp-greedy-and-lazy/3-find-html-comments/solution.md b/9-regular-expressions/10-regexp-greedy-and-lazy/3-find-html-comments/solution.md new file mode 100644 index 000000000..0244963d1 --- /dev/null +++ b/9-regular-expressions/10-regexp-greedy-and-lazy/3-find-html-comments/solution.md @@ -0,0 +1,15 @@ +We need to find the beginning of the comment `match:<!--`, then everything till the end of `match:-->`. + +An acceptable variant is `pattern:<!--.*?-->` -- the lazy quantifier makes the dot stop right before `match:-->`. We also need to add flag `pattern:s` for the dot to include newlines. + +Otherwise multiline comments won't be found: + +```js run +let regexp = /<!--.*?-->/gs; + +let str = `... <!-- My -- comment + test --> .. <!----> .. +`; + +alert( str.match(regexp) ); // '<!-- My -- comment \n test -->', '<!---->' +``` diff --git a/9-regular-expressions/08-regexp-greedy-and-lazy/3-find-html-comments/task.md b/9-regular-expressions/10-regexp-greedy-and-lazy/3-find-html-comments/task.md similarity index 56% rename from 9-regular-expressions/08-regexp-greedy-and-lazy/3-find-html-comments/task.md rename to 9-regular-expressions/10-regexp-greedy-and-lazy/3-find-html-comments/task.md index 81fd5c634..551d9c725 100644 --- a/9-regular-expressions/08-regexp-greedy-and-lazy/3-find-html-comments/task.md +++ b/9-regular-expressions/10-regexp-greedy-and-lazy/3-find-html-comments/task.md @@ -3,11 +3,11 @@ Find all HTML comments in the text: ```js -let reg = /your regexp/g; +let regexp = /your regexp/g; let str = `... <!-- My -- comment test --> .. <!----> .. `; -alert( str.match(reg) ); // '<!-- My -- comment \n test -->', '<!---->' +alert( str.match(regexp) ); // '<!-- My -- comment \n test -->', '<!---->' ``` diff --git a/9-regular-expressions/08-regexp-greedy-and-lazy/4-find-html-tags-greedy-lazy/solution.md b/9-regular-expressions/10-regexp-greedy-and-lazy/4-find-html-tags-greedy-lazy/solution.md similarity index 51% rename from 9-regular-expressions/08-regexp-greedy-and-lazy/4-find-html-tags-greedy-lazy/solution.md rename to 9-regular-expressions/10-regexp-greedy-and-lazy/4-find-html-tags-greedy-lazy/solution.md index c453926fa..b4d9f7496 100644 --- a/9-regular-expressions/08-regexp-greedy-and-lazy/4-find-html-tags-greedy-lazy/solution.md +++ b/9-regular-expressions/10-regexp-greedy-and-lazy/4-find-html-tags-greedy-lazy/solution.md @@ -2,9 +2,9 @@ The solution is `pattern:<[^<>]+>`. ```js run -let reg = /<[^<>]+>/g; +let regexp = /<[^<>]+>/g; let str = '<> <a href="/"> <input type="radio" checked> <b>'; -alert( str.match(reg) ); // '<a href="/">', '<input type="radio" checked>', '<b>' +alert( str.match(regexp) ); // '<a href="/">', '<input type="radio" checked>', '<b>' ``` diff --git a/9-regular-expressions/10-regexp-greedy-and-lazy/4-find-html-tags-greedy-lazy/task.md b/9-regular-expressions/10-regexp-greedy-and-lazy/4-find-html-tags-greedy-lazy/task.md new file mode 100644 index 000000000..6759152ff --- /dev/null +++ b/9-regular-expressions/10-regexp-greedy-and-lazy/4-find-html-tags-greedy-lazy/task.md @@ -0,0 +1,15 @@ +# Find HTML tags + +Create a regular expression to find all (opening and closing) HTML tags with their attributes. + +An example of use: + +```js run +let regexp = /your regexp/g; + +let str = '<> <a href="/"> <input type="radio" checked> <b>'; + +alert( str.match(regexp) ); // '<a href="/">', '<input type="radio" checked>', '<b>' +``` + +Here we assume that tag attributes may not contain `<` and `>` (inside quotes too), that simplifies things a bit. diff --git a/9-regular-expressions/08-regexp-greedy-and-lazy/article.md b/9-regular-expressions/10-regexp-greedy-and-lazy/article.md similarity index 70% rename from 9-regular-expressions/08-regexp-greedy-and-lazy/article.md rename to 9-regular-expressions/10-regexp-greedy-and-lazy/article.md index f3e9219cb..e20175075 100644 --- a/9-regular-expressions/08-regexp-greedy-and-lazy/article.md +++ b/9-regular-expressions/10-regexp-greedy-and-lazy/article.md @@ -8,7 +8,7 @@ Let's take the following task as an example. We have a text and need to replace all quotes `"..."` with guillemet marks: `«...»`. They are preferred for typography in many countries. -For instance: `"Hello, world"` should become `«Hello, world»`. Some countries prefer other quotes, like `„Witam, świat!”` (Polish) or `「你好,世界」` (Chinese), but for our task let's choose `«...»`. +For instance: `"Hello, world"` should become `«Hello, world»`. There exist other quotes, such as `„Witaj, świecie!”` (Polish) or `「你好,世界」` (Chinese), but for our task let's choose `«...»`. The first thing to do is to locate quoted strings, and then we can replace them. @@ -17,11 +17,11 @@ A regular expression like `pattern:/".+"/g` (a quote, then something, then the o Let's try it: ```js run -let reg = /".+"/g; +let regexp = /".+"/g; let str = 'a "witch" and her "broom" is one'; -alert( str.match(reg) ); // "witch" and her "broom" +alert( str.match(regexp) ); // "witch" and her "broom" ``` ...We can see that it works not as intended! @@ -35,7 +35,7 @@ That can be described as "greediness is the cause of all evil". To find a match, the regular expression engine uses the following algorithm: - For every position in the string - - Match the pattern at that position. + - Try to match the pattern at that position. - If there's no match, go to the next position. These common words do not make it obvious why the regexp fails, so let's elaborate how the search works for the pattern `pattern:".+"`. @@ -44,7 +44,7 @@ These common words do not make it obvious why the regexp fails, so let's elabora The regular expression engine tries to find it at the zero position of the source string `subject:a "witch" and her "broom" is one`, but there's `subject:a` there, so there's immediately no match. - Then it advances: goes to the next positions in the source string and tries to find the first character of the pattern there, and finally finds the quote at the 3rd position: + Then it advances: goes to the next positions in the source string and tries to find the first character of the pattern there, fails again, and finally finds the quote at the 3rd position:  @@ -54,13 +54,13 @@ These common words do not make it obvious why the regexp fails, so let's elabora  -3. Then the dot repeats because of the quantifier `pattern:.+`. The regular expression engine builds the match by taking characters one by one while it is possible. +3. Then the dot repeats because of the quantifier `pattern:.+`. The regular expression engine adds to the match one character after another. - ...When it becomes impossible? All characters match the dot, so it only stops when it reaches the end of the string: + ...Until when? All characters match the dot, so it only stops when it reaches the end of the string:  -4. Now the engine finished repeating for `pattern:.+` and tries to find the next character of the pattern. It's the quote `pattern:"`. But there's a problem: the string has finished, there are no more characters! +4. Now the engine finished repeating `pattern:.+` and tries to find the next character of the pattern. It's the quote `pattern:"`. But there's a problem: the string has finished, there are no more characters! The regular expression engine understands that it took too many `pattern:.+` and starts to *backtrack*. @@ -68,9 +68,9 @@ These common words do not make it obvious why the regexp fails, so let's elabora  - Now it assumes that `pattern:.+` ends one character before the end and tries to match the rest of the pattern from that position. + Now it assumes that `pattern:.+` ends one character before the string end and tries to match the rest of the pattern from that position. - If there were a quote there, then that would be the end, but the last character is `subject:'e'`, so there's no match. + If there were a quote there, then the search would end, but the last character is `subject:'e'`, so there's no match. 5. ...So the engine decreases the number of repetitions of `pattern:.+` by one more character: @@ -84,19 +84,19 @@ These common words do not make it obvious why the regexp fails, so let's elabora 7. The match is complete. -8. So the first match is `match:"witch" and her "broom"`. The further search starts where the first match ends, but there are no more quotes in the rest of the string `subject:is one`, so no more results. +8. So the first match is `match:"witch" and her "broom"`. If the regular expression has flag `pattern:g`, then the search will continue from where the first match ends. There are no more quotes in the rest of the string `subject:is one`, so no more results. That's probably not what we expected, but that's how it works. -**In the greedy mode (by default) the quantifier is repeated as many times as possible.** +**In the greedy mode (by default) a quantified character is repeated as many times as possible.** -The regexp engine tries to fetch as many characters as it can by `pattern:.+`, and then shortens that one by one. +The regexp engine adds to the match as many characters as it can for `pattern:.+`, and then shortens that one by one, if the rest of the pattern doesn't match. -For our task we want another thing. That's what the lazy quantifier mode is for. +For our task we want another thing. That's where a lazy mode can help. ## Lazy mode -The lazy mode of quantifier is an opposite to the greedy mode. It means: "repeat minimal number of times". +The lazy mode of quantifiers is an opposite to the greedy mode. It means: "repeat minimal number of times". We can enable it by putting a question mark `pattern:'?'` after the quantifier, so that it becomes `pattern:*?` or `pattern:+?` or even `pattern:??` for `pattern:'?'`. @@ -105,11 +105,11 @@ To make things clear: usually a question mark `pattern:?` is a quantifier by its The regexp `pattern:/".+?"/g` works as intended: it finds `match:"witch"` and `match:"broom"`: ```js run -let reg = /".+?"/g; +let regexp = /".+?"/g; let str = 'a "witch" and her "broom" is one'; -alert( str.match(reg) ); // witch, broom +alert( str.match(regexp) ); // "witch", "broom" ``` To clearly understand the change, let's trace the search step by step. @@ -140,7 +140,7 @@ To clearly understand the change, let's trace the search step by step.  -In this example we saw how the lazy mode works for `pattern:+?`. Quantifiers `pattern:+?` and `pattern:??` work the similar way -- the regexp engine increases the number of repetitions only if the rest of the pattern can't match on the given position. +In this example we saw how the lazy mode works for `pattern:+?`. Quantifiers `pattern:*?` and `pattern:??` work the similar way -- the regexp engine increases the number of repetitions only if the rest of the pattern can't match on the given position. **Laziness is only enabled for the quantifier with `?`.** @@ -149,20 +149,19 @@ Other quantifiers remain greedy. For instance: ```js run -alert( "123 456".match(/\d+ \d+?/g) ); // 123 4 +alert( "123 456".match(/\d+ \d+?/) ); // 123 4 ``` -1. The pattern `pattern:\d+` tries to match as many numbers as it can (greedy mode), so it finds `match:123` and stops, because the next character is a space `pattern:' '`. -2. Then there's a space in pattern, it matches. +1. The pattern `pattern:\d+` tries to match as many digits as it can (greedy mode), so it finds `match:123` and stops, because the next character is a space `pattern:' '`. +2. Then there's a space in the pattern, it matches. 3. Then there's `pattern:\d+?`. The quantifier is in lazy mode, so it finds one digit `match:4` and tries to check if the rest of the pattern matches from there. ...But there's nothing in the pattern after `pattern:\d+?`. The lazy mode doesn't repeat anything without a need. The pattern finished, so we're done. We have a match `match:123 4`. -4. The next search starts from the character `5`. ```smart header="Optimizations" -Modern regular expression engines can optimize internal algorithms to work faster. So they may work a bit different from the described algorithm. +Modern regular expression engines can optimize internal algorithms to work faster. So they may work a bit differently from the described algorithm. But to understand how regular expressions work and to build regular expressions, we don't need to know about that. They are only used internally to optimize things. @@ -176,11 +175,11 @@ With regexps, there's often more than one way to do the same thing. In our case we can find quoted strings without lazy mode using the regexp `pattern:"[^"]+"`: ```js run -let reg = /"[^"]+"/g; +let regexp = /"[^"]+"/g; let str = 'a "witch" and her "broom" is one'; -alert( str.match(reg) ); // witch, broom +alert( str.match(regexp) ); // "witch", "broom" ``` The regexp `pattern:"[^"]+"` gives correct results, because it looks for a quote `pattern:'"'` followed by one or more non-quotes `pattern:[^"]`, and then the closing quote. @@ -202,20 +201,20 @@ The first idea might be: `pattern:/<a href=".*" class="doc">/g`. Let's check it: ```js run let str = '...<a href="link" class="doc">...'; -let reg = /<a href=".*" class="doc">/g; +let regexp = /<a href=".*" class="doc">/g; // Works! -alert( str.match(reg) ); // <a href="link" class="doc"> +alert( str.match(regexp) ); // <a href="link" class="doc"> ``` It worked. But let's see what happens if there are many links in the text? ```js run let str = '...<a href="link1" class="doc">... <a href="link2" class="doc">...'; -let reg = /<a href=".*" class="doc">/g; +let regexp = /<a href=".*" class="doc">/g; // Whoops! Two links in one match! -alert( str.match(reg) ); // <a href="link1" class="doc">... <a href="link2" class="doc"> +alert( str.match(regexp) ); // <a href="link1" class="doc">... <a href="link2" class="doc"> ``` Now the result is wrong for the same reason as our "witches" example. The quantifier `pattern:.*` took too many characters. @@ -231,10 +230,10 @@ Let's modify the pattern by making the quantifier `pattern:.*?` lazy: ```js run let str = '...<a href="link1" class="doc">... <a href="link2" class="doc">...'; -let reg = /<a href=".*?" class="doc">/g; +let regexp = /<a href=".*?" class="doc">/g; // Works! -alert( str.match(reg) ); // <a href="link1" class="doc">, <a href="link2" class="doc"> +alert( str.match(regexp) ); // <a href="link1" class="doc">, <a href="link2" class="doc"> ``` Now it seems to work, there are two matches: @@ -248,10 +247,10 @@ Now it seems to work, there are two matches: ```js run let str = '...<a href="link1" class="wrong">... <p style="" class="doc">...'; -let reg = /<a href=".*?" class="doc">/g; +let regexp = /<a href=".*?" class="doc">/g; // Wrong match! -alert( str.match(reg) ); // <a href="link1" class="wrong">... <p style="" class="doc"> +alert( str.match(regexp) ); // <a href="link1" class="wrong">... <p style="" class="doc"> ``` Now it fails. The match includes not just a link, but also a lot of text after it, including `<p...>`. @@ -264,7 +263,7 @@ That's what's going on: 2. Then it looks for `pattern:.*?`: takes one character (lazily!), check if there's a match for `pattern:" class="doc">` (none). 3. Then takes another character into `pattern:.*?`, and so on... until it finally reaches `match:" class="doc">`. -But the problem is: that's already beyound the link, in another tag `<p>`. Not what we want. +But the problem is: that's already beyond the link `<a...>`, in another tag `<p>`. Not what we want. Here's the picture of the match aligned with the text: @@ -273,22 +272,20 @@ Here's the picture of the match aligned with the text: <a href="link1" class="wrong">... <p style="" class="doc"> ``` -So the laziness did not work for us here. +So, we need the pattern to look for `<a href="...something..." class="doc">`, but both greedy and lazy variants have problems. -We need the pattern to look for `<a href="...something..." class="doc">`, but both greedy and lazy variants have problems. - -The correct variant would be: `pattern:href="[^"]*"`. It will take all characters inside the `href` attribute till the nearest quote, just what we need. +The correct variant can be: `pattern:href="[^"]*"`. It will take all characters inside the `href` attribute till the nearest quote, just what we need. A working example: ```js run let str1 = '...<a href="link1" class="wrong">... <p style="" class="doc">...'; let str2 = '...<a href="link1" class="doc">... <a href="link2" class="doc">...'; -let reg = /<a href="[^"]*" class="doc">/g; +let regexp = /<a href="[^"]*" class="doc">/g; // Works! -alert( str1.match(reg) ); // null, no matches, that's correct -alert( str2.match(reg) ); // <a href="link1" class="doc">, <a href="link2" class="doc"> +alert( str1.match(regexp) ); // null, no matches, that's correct +alert( str2.match(regexp) ); // <a href="link1" class="doc">, <a href="link2" class="doc"> ``` ## Summary @@ -296,9 +293,9 @@ alert( str2.match(reg) ); // <a href="link1" class="doc">, <a href="link2" class Quantifiers have two modes of work: Greedy -: By default the regular expression engine tries to repeat the quantifier as many times as possible. For instance, `pattern:\d+` consumes all possible digits. When it becomes impossible to consume more (no more digits or string end), then it continues to match the rest of the pattern. If there's no match then it decreases the number of repetitions (backtracks) and tries again. +: By default the regular expression engine tries to repeat the quantified character as many times as possible. For instance, `pattern:\d+` consumes all possible digits. When it becomes impossible to consume more (no more digits or string end), then it continues to match the rest of the pattern. If there's no match then it decreases the number of repetitions (backtracks) and tries again. Lazy -: Enabled by the question mark `pattern:?` after the quantifier. The regexp engine tries to match the rest of the pattern before each repetition of the quantifier. +: Enabled by the question mark `pattern:?` after the quantifier. The regexp engine tries to match the rest of the pattern before each repetition of the quantified character. -As we've seen, the lazy mode is not a "panacea" from the greedy search. An alternative is a "fine-tuned" greedy search, with exclusions. Soon we'll see more examples of it. +As we've seen, the lazy mode is not a "panacea" from the greedy search. An alternative is a "fine-tuned" greedy search, with exclusions, as in the pattern `pattern:"[^"]+"`. diff --git a/9-regular-expressions/10-regexp-greedy-and-lazy/witch_greedy1.svg b/9-regular-expressions/10-regexp-greedy-and-lazy/witch_greedy1.svg new file mode 100644 index 000000000..c9044a226 --- /dev/null +++ b/9-regular-expressions/10-regexp-greedy-and-lazy/witch_greedy1.svg @@ -0,0 +1,20 @@ +<<<<<<< HEAD:9-regular-expressions/08-regexp-greedy-and-lazy/witch_greedy1.svg +<?xml version="1.0" encoding="UTF-8"?> +<svg width="463px" height="130px" viewBox="0 0 463 130" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> + <!-- Generator: sketchtool 55.2 (78181) - https://sketchapp.com --> + <title>witch_greedy1.svg</title> + <desc>Created with sketchtool.</desc> + <g id="regexp" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd"> + <g id="witch_greedy1.svg"> + <text id="a-"witch"-and-her-"b" font-family="PTMono-Regular, PT Mono" font-size="22" font-weight="normal" fill="#8A704D"> + <tspan x="20" y="112">a "witch" and her "broom" is one</tspan> + </text> + <rect id="Rectangle-1" stroke="#E8C48E" x="45.5" y="50.5" width="14" height="76"></rect> + <path d="M52.0039062,60.4414062 L51.6757812,65.9375 L49.7539062,65.9375 L49.4140625,60.4414062 L52.0039062,60.4414062 Z M56.5625,60.4414062 L56.234375,65.9375 L54.3125,65.9375 L53.9726562,60.4414062 L56.5625,60.4414062 Z" id="--"-----------------" fill="#CB1E31"></path> + <path id="Line" d="M51.5,30.5 L51.5,8.5 L53.5,8.5 L53.5,30.5 L59.5,30.5 L52.5,44.5 L45.5,30.5 L51.5,30.5 Z" fill="#EE6B47" fill-rule="nonzero"></path> + </g> + </g> +</svg> +======= +<svg xmlns="http://www.w3.org/2000/svg" width="463" height="130" viewBox="0 0 463 130"><defs><style>@import url(https://fonts.googleapis.com/css?family=Open+Sans:bold,italic,bolditalic%7CPT+Mono);@font-face{font-family:'PT Mono';font-weight:700;font-style:normal;src:local('PT MonoBold'),url(/font/PTMonoBold.woff2) format('woff2'),url(/font/PTMonoBold.woff) format('woff'),url(/font/PTMonoBold.ttf) format('truetype')}</style></defs><g id="regexp" fill="none" fill-rule="evenodd" stroke="none" stroke-width="1"><g id="witch_greedy1.svg"><text id="a-"witch"-and-her-"b" fill="#AF6E24" font-family="PTMono-Regular, PT Mono" font-size="22" font-weight="normal"><tspan x="20" y="112">a "witch" and her "broom" is one</tspan></text><path id="Rectangle-1" stroke="#DBAF88" d="M45.5 50.5h14v76h-14z"/><path id="--"-----------------" fill="#A7333A" d="M52.004 60.441l-.328 5.496h-1.922l-.34-5.496h2.59zm4.559 0l-.329 5.496h-1.922l-.34-5.496h2.59z"/><path id="Line" fill="#C06334" fill-rule="nonzero" d="M53.5 8.5v22h6l-7 14-7-14h6v-22h2z"/></g></g></svg> +>>>>>>> 540d753e90789205fc6e75c502f68382c87dea9b:9-regular-expressions/10-regexp-greedy-and-lazy/witch_greedy1.svg diff --git a/9-regular-expressions/08-regexp-greedy-and-lazy/witch_greedy2.svg b/9-regular-expressions/10-regexp-greedy-and-lazy/witch_greedy2.svg similarity index 58% rename from 9-regular-expressions/08-regexp-greedy-and-lazy/witch_greedy2.svg rename to 9-regular-expressions/10-regexp-greedy-and-lazy/witch_greedy2.svg index 1ee351588..2575297bc 100644 --- a/9-regular-expressions/08-regexp-greedy-and-lazy/witch_greedy2.svg +++ b/9-regular-expressions/10-regexp-greedy-and-lazy/witch_greedy2.svg @@ -1,3 +1,4 @@ +<<<<<<< HEAD:9-regular-expressions/08-regexp-greedy-and-lazy/witch_greedy2.svg <?xml version="1.0" encoding="UTF-8"?> <svg width="463px" height="130px" viewBox="0 0 463 130" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <!-- Generator: sketchtool 55.2 (78181) - https://sketchapp.com --> @@ -13,4 +14,7 @@ <path id="Line" d="M55.5,33.5 L47.5,33.5 L47.5,31.5 L55.5,31.5 L55.5,25.5 L69.5,32.5 L55.5,39.5 L55.5,33.5 Z" fill="#EE6B47" fill-rule="nonzero"></path> </g> </g> -</svg> \ No newline at end of file +</svg> +======= +<svg xmlns="http://www.w3.org/2000/svg" width="463" height="130" viewBox="0 0 463 130"><defs><style>@import url(https://fonts.googleapis.com/css?family=Open+Sans:bold,italic,bolditalic%7CPT+Mono);@font-face{font-family:'PT Mono';font-weight:700;font-style:normal;src:local('PT MonoBold'),url(/font/PTMonoBold.woff2) format('woff2'),url(/font/PTMonoBold.woff) format('woff'),url(/font/PTMonoBold.ttf) format('truetype')}</style></defs><g id="regexp" fill="none" fill-rule="evenodd" stroke="none" stroke-width="1"><g id="witch_greedy2.svg"><text id="a-"witch"-and-her-"b" fill="#AF6E24" font-family="PTMono-Regular, PT Mono" font-size="22" font-weight="normal"><tspan x="20" y="107">a "witch" and her "broom" is one</tspan></text><path id="Rectangle-1" stroke="#DBAF88" d="M45.5 45.5h28v76h-28z"/><path id="--".----------------" fill="#A7333A" d="M52.004 55.441l-.328 5.496h-1.922l-.34-5.496h2.59zm4.559 0l-.329 5.496h-1.922l-.34-5.496h2.59zM66.09 68.31c.265 0 .517.05.756.152.238.102.445.242.62.422.177.18.315.388.417.627.101.238.152.494.152.767 0 .266-.05.516-.152.75a1.95 1.95 0 01-1.793 1.184c-.274 0-.527-.05-.762-.152a1.967 1.967 0 01-1.031-1.032 1.866 1.866 0 01-.152-.75c0-.273.05-.529.152-.767a2.02 2.02 0 01.416-.627 1.895 1.895 0 011.377-.574z"/><path id="Line" fill="#C06334" fill-rule="nonzero" d="M55.5 25.5l14 7-14 7v-6h-8v-2h8v-6z"/></g></g></svg> +>>>>>>> 540d753e90789205fc6e75c502f68382c87dea9b:9-regular-expressions/10-regexp-greedy-and-lazy/witch_greedy2.svg diff --git a/9-regular-expressions/08-regexp-greedy-and-lazy/witch_greedy3.svg b/9-regular-expressions/10-regexp-greedy-and-lazy/witch_greedy3.svg similarity index 76% rename from 9-regular-expressions/08-regexp-greedy-and-lazy/witch_greedy3.svg rename to 9-regular-expressions/10-regexp-greedy-and-lazy/witch_greedy3.svg index e60ed1618..ae122dcd0 100644 --- a/9-regular-expressions/08-regexp-greedy-and-lazy/witch_greedy3.svg +++ b/9-regular-expressions/10-regexp-greedy-and-lazy/witch_greedy3.svg @@ -1,3 +1,4 @@ +<<<<<<< HEAD:9-regular-expressions/08-regexp-greedy-and-lazy/witch_greedy3.svg <?xml version="1.0" encoding="UTF-8"?> <svg width="463px" height="130px" viewBox="0 0 463 130" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <!-- Generator: sketchtool 55.2 (78181) - https://sketchapp.com --> @@ -13,4 +14,7 @@ <path id="Line" d="M425.5,27.5 L50.5,27.5 L50.5,25.5 L425.5,25.5 L425.5,19.5 L439.5,26.5 L425.5,33.5 L425.5,27.5 Z" fill="#EE6B47" fill-rule="nonzero"></path> </g> </g> -</svg> \ No newline at end of file +</svg> +======= +<svg xmlns="http://www.w3.org/2000/svg" width="463" height="130" viewBox="0 0 463 130"><defs><style>@import url(https://fonts.googleapis.com/css?family=Open+Sans:bold,italic,bolditalic%7CPT+Mono);@font-face{font-family:'PT Mono';font-weight:700;font-style:normal;src:local('PT MonoBold'),url(/font/PTMonoBold.woff2) format('woff2'),url(/font/PTMonoBold.woff) format('woff'),url(/font/PTMonoBold.ttf) format('truetype')}</style></defs><g id="regexp" fill="none" fill-rule="evenodd" stroke="none" stroke-width="1"><g id="witch_greedy3.svg"><text id="a-"witch"-and-her-"b" fill="#AF6E24" font-family="PTMono-Regular, PT Mono" font-size="22" font-weight="normal"><tspan x="20" y="107">a "witch" and her "broom" is one</tspan></text><path id="Rectangle-1" stroke="#DBAF88" d="M45.5 45.5h401v76h-401z"/><path id="--"................." fill="#A7333A" d="M52.004 55.441l-.328 5.496h-1.922l-.34-5.496h2.59zm4.559 0l-.329 5.496h-1.922l-.34-5.496h2.59zM66.09 68.31c.265 0 .517.05.756.152.238.102.445.242.62.422.177.18.315.388.417.627.101.238.152.494.152.767 0 .266-.05.516-.152.75a1.95 1.95 0 01-1.793 1.184c-.274 0-.527-.05-.762-.152a1.967 1.967 0 01-1.031-1.032 1.866 1.866 0 01-.152-.75c0-.273.05-.529.152-.767a2.02 2.02 0 01.416-.627 1.895 1.895 0 011.377-.574zm13.195 0c.266 0 .518.05.756.152s.445.242.621.422.315.388.416.627c.102.238.152.494.152.767 0 .266-.05.516-.152.75a1.95 1.95 0 01-1.793 1.184c-.273 0-.527-.05-.762-.152a1.967 1.967 0 01-1.03-1.032 1.866 1.866 0 01-.153-.75c0-.273.05-.529.152-.767a2.02 2.02 0 01.416-.627 1.895 1.895 0 011.377-.574zm13.195 0c.266 0 .518.05.756.152.239.102.446.242.621.422.176.18.315.388.416.627.102.238.153.494.153.767 0 .266-.051.516-.153.75a1.95 1.95 0 01-1.793 1.184c-.273 0-.527-.05-.761-.152a1.967 1.967 0 01-1.031-1.032 1.866 1.866 0 01-.153-.75c0-.273.05-.529.153-.767a2.02 2.02 0 01.416-.627 1.895 1.895 0 011.377-.574zm13.196 0c.265 0 .517.05.756.152.238.102.445.242.62.422.177.18.315.388.417.627.101.238.152.494.152.767 0 .266-.05.516-.152.75a1.95 1.95 0 01-1.793 1.184c-.274 0-.528-.05-.762-.152a1.967 1.967 0 01-1.031-1.032 1.866 1.866 0 01-.153-.75c0-.273.051-.529.153-.767a2.02 2.02 0 01.416-.627 1.895 1.895 0 011.377-.574zm13.195 0c.266 0 .518.05.756.152s.445.242.621.422.314.388.416.627c.102.238.152.494.152.767 0 .266-.05.516-.152.75a1.95 1.95 0 01-1.793 1.184c-.273 0-.527-.05-.762-.152a1.967 1.967 0 01-1.03-1.032 1.866 1.866 0 01-.153-.75c0-.273.05-.529.152-.767a2.02 2.02 0 01.416-.627 1.895 1.895 0 011.377-.574zm13.195 0c.266 0 .518.05.756.152.239.102.446.242.621.422.176.18.315.388.416.627.102.238.153.494.153.767 0 .266-.051.516-.153.75a1.95 1.95 0 01-1.793 1.184c-.273 0-.527-.05-.761-.152a1.967 1.967 0 01-1.032-1.032 1.866 1.866 0 01-.152-.75c0-.273.05-.529.152-.767a2.02 2.02 0 01.416-.627 1.895 1.895 0 011.377-.574zm13.196 0c.265 0 .517.05.756.152.238.102.445.242.62.422.176.18.315.388.417.627.101.238.152.494.152.767 0 .266-.05.516-.152.75a1.95 1.95 0 01-1.793 1.184c-.274 0-.528-.05-.762-.152a1.967 1.967 0 01-1.031-1.032 1.866 1.866 0 01-.153-.75c0-.273.051-.529.153-.767a2.02 2.02 0 01.416-.627 1.895 1.895 0 011.377-.574zm13.195 0c.266 0 .518.05.756.152s.445.242.621.422.314.388.416.627c.102.238.152.494.152.767 0 .266-.05.516-.152.75a1.95 1.95 0 01-1.793 1.184c-.273 0-.527-.05-.762-.152a1.967 1.967 0 01-1.03-1.032 1.866 1.866 0 01-.153-.75c0-.273.05-.529.152-.767a2.02 2.02 0 01.416-.627 1.895 1.895 0 011.377-.574zm13.195 0c.266 0 .518.05.756.152s.446.242.621.422c.176.18.315.388.416.627.102.238.153.494.153.767 0 .266-.051.516-.153.75a1.95 1.95 0 01-1.793 1.184c-.273 0-.527-.05-.761-.152a1.967 1.967 0 01-1.032-1.032 1.866 1.866 0 01-.152-.75c0-.273.05-.529.152-.767a2.02 2.02 0 01.416-.627 1.895 1.895 0 011.377-.574zm13.196 0c.265 0 .517.05.756.152.238.102.445.242.62.422.176.18.315.388.417.627.101.238.152.494.152.767 0 .266-.05.516-.152.75a1.95 1.95 0 01-1.793 1.184c-.274 0-.528-.05-.762-.152a1.967 1.967 0 01-1.031-1.032 1.866 1.866 0 01-.153-.75c0-.273.051-.529.153-.767a2.02 2.02 0 01.416-.627 1.895 1.895 0 011.377-.574zm13.195 0c.266 0 .518.05.756.152s.445.242.62.422c.177.18.315.388.417.627.102.238.152.494.152.767 0 .266-.05.516-.152.75a1.95 1.95 0 01-1.793 1.184c-.273 0-.527-.05-.762-.152a1.967 1.967 0 01-1.031-1.032 1.866 1.866 0 01-.152-.75c0-.273.05-.529.152-.767a2.02 2.02 0 01.416-.627 1.895 1.895 0 011.377-.574zm13.195 0c.266 0 .518.05.756.152s.445.242.621.422.315.388.416.627c.102.238.153.494.153.767 0 .266-.051.516-.153.75a1.95 1.95 0 01-1.793 1.184c-.273 0-.527-.05-.761-.152a1.967 1.967 0 01-1.032-1.032 1.866 1.866 0 01-.152-.75c0-.273.05-.529.152-.767a2.02 2.02 0 01.416-.627 1.895 1.895 0 011.377-.574zm13.196 0c.265 0 .517.05.755.152.239.102.446.242.622.422.175.18.314.388.416.627.101.238.152.494.152.767 0 .266-.05.516-.152.75a1.95 1.95 0 01-1.793 1.184c-.274 0-.528-.05-.762-.152a1.967 1.967 0 01-1.031-1.032 1.866 1.866 0 01-.153-.75c0-.273.051-.529.153-.767a2.02 2.02 0 01.416-.627 1.895 1.895 0 011.377-.574zm13.195 0c.266 0 .517.05.756.152.238.102.445.242.62.422.177.18.315.388.417.627.101.238.152.494.152.767 0 .266-.05.516-.152.75a1.95 1.95 0 01-1.793 1.184c-.274 0-.527-.05-.762-.152a1.967 1.967 0 01-1.031-1.032 1.866 1.866 0 01-.152-.75c0-.273.05-.529.152-.767a2.02 2.02 0 01.416-.627 1.895 1.895 0 011.377-.574zm13.195 0c.266 0 .518.05.756.152s.445.242.621.422.315.388.416.627c.102.238.153.494.153.767 0 .266-.051.516-.153.75a1.95 1.95 0 01-1.793 1.184c-.273 0-.527-.05-.761-.152a1.967 1.967 0 01-1.032-1.032 1.866 1.866 0 01-.152-.75c0-.273.05-.529.152-.767a2.02 2.02 0 01.416-.627 1.895 1.895 0 011.377-.574zm13.196 0c.265 0 .517.05.755.152.239.102.446.242.621.422.176.18.315.388.416.627.102.238.153.494.153.767 0 .266-.05.516-.152.75a1.95 1.95 0 01-1.793 1.184c-.274 0-.528-.05-.762-.152a1.967 1.967 0 01-1.031-1.032 1.866 1.866 0 01-.153-.75c0-.273.051-.529.153-.767a2.02 2.02 0 01.416-.627 1.895 1.895 0 011.377-.574zm13.195 0c.265 0 .517.05.756.152.238.102.445.242.62.422.177.18.315.388.417.627.101.238.152.494.152.767 0 .266-.05.516-.152.75a1.95 1.95 0 01-1.793 1.184c-.274 0-.527-.05-.762-.152a1.967 1.967 0 01-1.031-1.032 1.866 1.866 0 01-.152-.75c0-.273.05-.529.152-.767a2.02 2.02 0 01.416-.627 1.895 1.895 0 011.377-.574zm13.195 0c.266 0 .518.05.756.152s.445.242.621.422.315.388.416.627c.102.238.152.494.152.767 0 .266-.05.516-.152.75a1.95 1.95 0 01-1.793 1.184c-.273 0-.527-.05-.762-.152a1.967 1.967 0 01-1.03-1.032 1.866 1.866 0 01-.153-.75c0-.273.05-.529.152-.767a2.02 2.02 0 01.416-.627 1.895 1.895 0 011.377-.574zm13.195 0c.266 0 .518.05.756.152.239.102.446.242.621.422.176.18.315.388.416.627.102.238.153.494.153.767 0 .266-.051.516-.153.75a1.95 1.95 0 01-1.793 1.184c-.273 0-.527-.05-.761-.152a1.967 1.967 0 01-1.031-1.032 1.866 1.866 0 01-.153-.75c0-.273.05-.529.152-.767a2.02 2.02 0 01.417-.627 1.895 1.895 0 011.377-.574zm13.196 0c.265 0 .517.05.756.152.238.102.445.242.62.422.177.18.315.388.417.627.101.238.152.494.152.767 0 .266-.05.516-.152.75a1.95 1.95 0 01-1.793 1.184c-.274 0-.528-.05-.762-.152a1.967 1.967 0 01-1.031-1.032 1.866 1.866 0 01-.153-.75c0-.273.051-.529.153-.767a2.02 2.02 0 01.416-.627 1.895 1.895 0 011.377-.574zm13.195 0c.266 0 .518.05.756.152s.445.242.621.422.314.388.416.627c.102.238.152.494.152.767 0 .266-.05.516-.152.75a1.95 1.95 0 01-1.793 1.184c-.273 0-.527-.05-.762-.152a1.967 1.967 0 01-1.03-1.032 1.866 1.866 0 01-.153-.75c0-.273.05-.529.152-.767a2.02 2.02 0 01.416-.627 1.895 1.895 0 011.377-.574zm13.195 0c.266 0 .518.05.756.152.239.102.446.242.621.422.176.18.315.388.416.627.102.238.153.494.153.767 0 .266-.051.516-.153.75a1.95 1.95 0 01-1.793 1.184c-.273 0-.527-.05-.761-.152a1.967 1.967 0 01-1.032-1.032 1.866 1.866 0 01-.152-.75c0-.273.05-.529.152-.767a2.02 2.02 0 01.416-.627 1.895 1.895 0 011.377-.574zm13.196 0c.265 0 .517.05.756.152.238.102.445.242.62.422.176.18.315.388.417.627.101.238.152.494.152.767 0 .266-.05.516-.152.75a1.95 1.95 0 01-1.793 1.184c-.274 0-.528-.05-.762-.152a1.967 1.967 0 01-1.031-1.032 1.866 1.866 0 01-.153-.75c0-.273.051-.529.153-.767a2.02 2.02 0 01.416-.627 1.895 1.895 0 011.377-.574zm13.195 0c.266 0 .518.05.756.152s.445.242.621.422.314.388.416.627c.102.238.152.494.152.767 0 .266-.05.516-.152.75a1.95 1.95 0 01-1.793 1.184c-.273 0-.527-.05-.762-.152a1.967 1.967 0 01-1.03-1.032 1.866 1.866 0 01-.153-.75c0-.273.05-.529.152-.767a2.02 2.02 0 01.416-.627 1.895 1.895 0 011.377-.574zm13.195 0c.266 0 .518.05.756.152s.446.242.621.422c.176.18.315.388.416.627.102.238.153.494.153.767 0 .266-.051.516-.153.75a1.95 1.95 0 01-1.793 1.184c-.273 0-.527-.05-.761-.152a1.967 1.967 0 01-1.032-1.032 1.866 1.866 0 01-.152-.75c0-.273.05-.529.152-.767a2.02 2.02 0 01.416-.627 1.895 1.895 0 011.377-.574zm13.196 0c.265 0 .517.05.756.152.238.102.445.242.62.422.176.18.315.388.417.627.101.238.152.494.152.767 0 .266-.05.516-.152.75a1.95 1.95 0 01-1.793 1.184c-.274 0-.528-.05-.762-.152a1.967 1.967 0 01-1.031-1.032 1.866 1.866 0 01-.153-.75c0-.273.051-.529.153-.767a2.02 2.02 0 01.416-.627 1.895 1.895 0 011.377-.574zm13.195 0c.266 0 .518.05.756.152s.445.242.62.422c.177.18.315.388.417.627.102.238.152.494.152.767 0 .266-.05.516-.152.75a1.95 1.95 0 01-1.793 1.184c-.273 0-.527-.05-.762-.152a1.967 1.967 0 01-1.031-1.032 1.866 1.866 0 01-.152-.75c0-.273.05-.529.152-.767a2.02 2.02 0 01.416-.627 1.895 1.895 0 011.377-.574zm13.195 0c.266 0 .518.05.756.152s.445.242.621.422.315.388.416.627c.102.238.153.494.153.767 0 .266-.051.516-.153.75a1.95 1.95 0 01-1.793 1.184c-.273 0-.527-.05-.761-.152a1.967 1.967 0 01-1.032-1.032 1.866 1.866 0 01-.152-.75c0-.273.05-.529.152-.767a2.02 2.02 0 01.416-.627 1.895 1.895 0 011.377-.574zm13.196 0c.265 0 .517.05.755.152.239.102.446.242.622.422.175.18.314.388.416.627.101.238.152.494.152.767 0 .266-.05.516-.152.75a1.95 1.95 0 01-1.793 1.184c-.274 0-.528-.05-.762-.152a1.967 1.967 0 01-1.031-1.032 1.866 1.866 0 01-.153-.75c0-.273.051-.529.153-.767a2.02 2.02 0 01.416-.627 1.895 1.895 0 011.377-.574z"/><path id="Line" fill="#C06334" fill-rule="nonzero" d="M425.5 19.5l14 7-14 7v-6h-375v-2h375v-6z"/></g></g></svg> +>>>>>>> 540d753e90789205fc6e75c502f68382c87dea9b:9-regular-expressions/10-regexp-greedy-and-lazy/witch_greedy3.svg diff --git a/9-regular-expressions/08-regexp-greedy-and-lazy/witch_greedy4.svg b/9-regular-expressions/10-regexp-greedy-and-lazy/witch_greedy4.svg similarity index 76% rename from 9-regular-expressions/08-regexp-greedy-and-lazy/witch_greedy4.svg rename to 9-regular-expressions/10-regexp-greedy-and-lazy/witch_greedy4.svg index 630a62230..6da3b01b0 100644 --- a/9-regular-expressions/08-regexp-greedy-and-lazy/witch_greedy4.svg +++ b/9-regular-expressions/10-regexp-greedy-and-lazy/witch_greedy4.svg @@ -1,3 +1,4 @@ +<<<<<<< HEAD:9-regular-expressions/08-regexp-greedy-and-lazy/witch_greedy4.svg <?xml version="1.0" encoding="UTF-8"?> <svg width="463px" height="130px" viewBox="0 0 463 130" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <!-- Generator: sketchtool 55.2 (78181) - https://sketchapp.com --> @@ -16,4 +17,7 @@ <path d="M423.5,30.5 L439.5,30.5" id="Line" stroke="#B8BAC1" stroke-linecap="square"></path> </g> </g> -</svg> \ No newline at end of file +</svg> +======= +<svg xmlns="http://www.w3.org/2000/svg" width="463" height="130" viewBox="0 0 463 130"><defs><style>@import url(https://fonts.googleapis.com/css?family=Open+Sans:bold,italic,bolditalic%7CPT+Mono);@font-face{font-family:'PT Mono';font-weight:700;font-style:normal;src:local('PT MonoBold'),url(/font/PTMonoBold.woff2) format('woff2'),url(/font/PTMonoBold.woff) format('woff'),url(/font/PTMonoBold.ttf) format('truetype')}</style></defs><g id="regexp" fill="none" fill-rule="evenodd" stroke="none" stroke-width="1"><g id="witch_greedy4.svg"><text id="a-"witch"-and-her-"b" fill="#AF6E24" font-family="PTMono-Regular, PT Mono" font-size="22" font-weight="normal"><tspan x="20" y="107">a "witch" and her "broom" is one</tspan></text><path id="Rectangle-1" stroke="#DBAF88" d="M45.5 45.5h383v76h-383z"/><path id="--"................." fill="#A7333A" d="M52.004 55.441l-.328 5.496h-1.922l-.34-5.496h2.59zm4.559 0l-.329 5.496h-1.922l-.34-5.496h2.59zM66.09 68.31c.265 0 .517.05.756.152.238.102.445.242.62.422.177.18.315.388.417.627.101.238.152.494.152.767 0 .266-.05.516-.152.75a1.95 1.95 0 01-1.793 1.184c-.274 0-.527-.05-.762-.152a1.967 1.967 0 01-1.031-1.032 1.866 1.866 0 01-.152-.75c0-.273.05-.529.152-.767a2.02 2.02 0 01.416-.627 1.895 1.895 0 011.377-.574zm13.195 0c.266 0 .518.05.756.152s.445.242.621.422.315.388.416.627c.102.238.152.494.152.767 0 .266-.05.516-.152.75a1.95 1.95 0 01-1.793 1.184c-.273 0-.527-.05-.762-.152a1.967 1.967 0 01-1.03-1.032 1.866 1.866 0 01-.153-.75c0-.273.05-.529.152-.767a2.02 2.02 0 01.416-.627 1.895 1.895 0 011.377-.574zm13.195 0c.266 0 .518.05.756.152.239.102.446.242.621.422.176.18.315.388.416.627.102.238.153.494.153.767 0 .266-.051.516-.153.75a1.95 1.95 0 01-1.793 1.184c-.273 0-.527-.05-.761-.152a1.967 1.967 0 01-1.031-1.032 1.866 1.866 0 01-.153-.75c0-.273.05-.529.153-.767a2.02 2.02 0 01.416-.627 1.895 1.895 0 011.377-.574zm13.196 0c.265 0 .517.05.756.152.238.102.445.242.62.422.177.18.315.388.417.627.101.238.152.494.152.767 0 .266-.05.516-.152.75a1.95 1.95 0 01-1.793 1.184c-.274 0-.528-.05-.762-.152a1.967 1.967 0 01-1.031-1.032 1.866 1.866 0 01-.153-.75c0-.273.051-.529.153-.767a2.02 2.02 0 01.416-.627 1.895 1.895 0 011.377-.574zm13.195 0c.266 0 .518.05.756.152s.445.242.621.422.314.388.416.627c.102.238.152.494.152.767 0 .266-.05.516-.152.75a1.95 1.95 0 01-1.793 1.184c-.273 0-.527-.05-.762-.152a1.967 1.967 0 01-1.03-1.032 1.866 1.866 0 01-.153-.75c0-.273.05-.529.152-.767a2.02 2.02 0 01.416-.627 1.895 1.895 0 011.377-.574zm13.195 0c.266 0 .518.05.756.152.239.102.446.242.621.422.176.18.315.388.416.627.102.238.153.494.153.767 0 .266-.051.516-.153.75a1.95 1.95 0 01-1.793 1.184c-.273 0-.527-.05-.761-.152a1.967 1.967 0 01-1.032-1.032 1.866 1.866 0 01-.152-.75c0-.273.05-.529.152-.767a2.02 2.02 0 01.416-.627 1.895 1.895 0 011.377-.574zm13.196 0c.265 0 .517.05.756.152.238.102.445.242.62.422.176.18.315.388.417.627.101.238.152.494.152.767 0 .266-.05.516-.152.75a1.95 1.95 0 01-1.793 1.184c-.274 0-.528-.05-.762-.152a1.967 1.967 0 01-1.031-1.032 1.866 1.866 0 01-.153-.75c0-.273.051-.529.153-.767a2.02 2.02 0 01.416-.627 1.895 1.895 0 011.377-.574zm13.195 0c.266 0 .518.05.756.152s.445.242.621.422.314.388.416.627c.102.238.152.494.152.767 0 .266-.05.516-.152.75a1.95 1.95 0 01-1.793 1.184c-.273 0-.527-.05-.762-.152a1.967 1.967 0 01-1.03-1.032 1.866 1.866 0 01-.153-.75c0-.273.05-.529.152-.767a2.02 2.02 0 01.416-.627 1.895 1.895 0 011.377-.574zm13.195 0c.266 0 .518.05.756.152s.446.242.621.422c.176.18.315.388.416.627.102.238.153.494.153.767 0 .266-.051.516-.153.75a1.95 1.95 0 01-1.793 1.184c-.273 0-.527-.05-.761-.152a1.967 1.967 0 01-1.032-1.032 1.866 1.866 0 01-.152-.75c0-.273.05-.529.152-.767a2.02 2.02 0 01.416-.627 1.895 1.895 0 011.377-.574zm13.196 0c.265 0 .517.05.756.152.238.102.445.242.62.422.176.18.315.388.417.627.101.238.152.494.152.767 0 .266-.05.516-.152.75a1.95 1.95 0 01-1.793 1.184c-.274 0-.528-.05-.762-.152a1.967 1.967 0 01-1.031-1.032 1.866 1.866 0 01-.153-.75c0-.273.051-.529.153-.767a2.02 2.02 0 01.416-.627 1.895 1.895 0 011.377-.574zm13.195 0c.266 0 .518.05.756.152s.445.242.62.422c.177.18.315.388.417.627.102.238.152.494.152.767 0 .266-.05.516-.152.75a1.95 1.95 0 01-1.793 1.184c-.273 0-.527-.05-.762-.152a1.967 1.967 0 01-1.031-1.032 1.866 1.866 0 01-.152-.75c0-.273.05-.529.152-.767a2.02 2.02 0 01.416-.627 1.895 1.895 0 011.377-.574zm13.195 0c.266 0 .518.05.756.152s.445.242.621.422.315.388.416.627c.102.238.153.494.153.767 0 .266-.051.516-.153.75a1.95 1.95 0 01-1.793 1.184c-.273 0-.527-.05-.761-.152a1.967 1.967 0 01-1.032-1.032 1.866 1.866 0 01-.152-.75c0-.273.05-.529.152-.767a2.02 2.02 0 01.416-.627 1.895 1.895 0 011.377-.574zm13.196 0c.265 0 .517.05.755.152.239.102.446.242.622.422.175.18.314.388.416.627.101.238.152.494.152.767 0 .266-.05.516-.152.75a1.95 1.95 0 01-1.793 1.184c-.274 0-.528-.05-.762-.152a1.967 1.967 0 01-1.031-1.032 1.866 1.866 0 01-.153-.75c0-.273.051-.529.153-.767a2.02 2.02 0 01.416-.627 1.895 1.895 0 011.377-.574zm13.195 0c.266 0 .517.05.756.152.238.102.445.242.62.422.177.18.315.388.417.627.101.238.152.494.152.767 0 .266-.05.516-.152.75a1.95 1.95 0 01-1.793 1.184c-.274 0-.527-.05-.762-.152a1.967 1.967 0 01-1.031-1.032 1.866 1.866 0 01-.152-.75c0-.273.05-.529.152-.767a2.02 2.02 0 01.416-.627 1.895 1.895 0 011.377-.574zm13.195 0c.266 0 .518.05.756.152s.445.242.621.422.315.388.416.627c.102.238.153.494.153.767 0 .266-.051.516-.153.75a1.95 1.95 0 01-1.793 1.184c-.273 0-.527-.05-.761-.152a1.967 1.967 0 01-1.032-1.032 1.866 1.866 0 01-.152-.75c0-.273.05-.529.152-.767a2.02 2.02 0 01.416-.627 1.895 1.895 0 011.377-.574zm13.196 0c.265 0 .517.05.755.152.239.102.446.242.621.422.176.18.315.388.416.627.102.238.153.494.153.767 0 .266-.05.516-.152.75a1.95 1.95 0 01-1.793 1.184c-.274 0-.528-.05-.762-.152a1.967 1.967 0 01-1.031-1.032 1.866 1.866 0 01-.153-.75c0-.273.051-.529.153-.767a2.02 2.02 0 01.416-.627 1.895 1.895 0 011.377-.574zm13.195 0c.265 0 .517.05.756.152.238.102.445.242.62.422.177.18.315.388.417.627.101.238.152.494.152.767 0 .266-.05.516-.152.75a1.95 1.95 0 01-1.793 1.184c-.274 0-.527-.05-.762-.152a1.967 1.967 0 01-1.031-1.032 1.866 1.866 0 01-.152-.75c0-.273.05-.529.152-.767a2.02 2.02 0 01.416-.627 1.895 1.895 0 011.377-.574zm13.195 0c.266 0 .518.05.756.152s.445.242.621.422.315.388.416.627c.102.238.152.494.152.767 0 .266-.05.516-.152.75a1.95 1.95 0 01-1.793 1.184c-.273 0-.527-.05-.762-.152a1.967 1.967 0 01-1.03-1.032 1.866 1.866 0 01-.153-.75c0-.273.05-.529.152-.767a2.02 2.02 0 01.416-.627 1.895 1.895 0 011.377-.574zm13.195 0c.266 0 .518.05.756.152.239.102.446.242.621.422.176.18.315.388.416.627.102.238.153.494.153.767 0 .266-.051.516-.153.75a1.95 1.95 0 01-1.793 1.184c-.273 0-.527-.05-.761-.152a1.967 1.967 0 01-1.031-1.032 1.866 1.866 0 01-.153-.75c0-.273.05-.529.152-.767a2.02 2.02 0 01.417-.627 1.895 1.895 0 011.377-.574zm13.196 0c.265 0 .517.05.756.152.238.102.445.242.62.422.177.18.315.388.417.627.101.238.152.494.152.767 0 .266-.05.516-.152.75a1.95 1.95 0 01-1.793 1.184c-.274 0-.528-.05-.762-.152a1.967 1.967 0 01-1.031-1.032 1.866 1.866 0 01-.153-.75c0-.273.051-.529.153-.767a2.02 2.02 0 01.416-.627 1.895 1.895 0 011.377-.574zm13.195 0c.266 0 .518.05.756.152s.445.242.621.422.314.388.416.627c.102.238.152.494.152.767 0 .266-.05.516-.152.75a1.95 1.95 0 01-1.793 1.184c-.273 0-.527-.05-.762-.152a1.967 1.967 0 01-1.03-1.032 1.866 1.866 0 01-.153-.75c0-.273.05-.529.152-.767a2.02 2.02 0 01.416-.627 1.895 1.895 0 011.377-.574zm13.195 0c.266 0 .518.05.756.152.239.102.446.242.621.422.176.18.315.388.416.627.102.238.153.494.153.767 0 .266-.051.516-.153.75a1.95 1.95 0 01-1.793 1.184c-.273 0-.527-.05-.761-.152a1.967 1.967 0 01-1.032-1.032 1.866 1.866 0 01-.152-.75c0-.273.05-.529.152-.767a2.02 2.02 0 01.416-.627 1.895 1.895 0 011.377-.574zm13.196 0c.265 0 .517.05.756.152.238.102.445.242.62.422.176.18.315.388.417.627.101.238.152.494.152.767 0 .266-.05.516-.152.75a1.95 1.95 0 01-1.793 1.184c-.274 0-.528-.05-.762-.152a1.967 1.967 0 01-1.031-1.032 1.866 1.866 0 01-.153-.75c0-.273.051-.529.153-.767a2.02 2.02 0 01.416-.627 1.895 1.895 0 011.377-.574zm13.195 0c.266 0 .518.05.756.152s.445.242.621.422.314.388.416.627c.102.238.152.494.152.767 0 .266-.05.516-.152.75a1.95 1.95 0 01-1.793 1.184c-.273 0-.527-.05-.762-.152a1.967 1.967 0 01-1.03-1.032 1.866 1.866 0 01-.153-.75c0-.273.05-.529.152-.767a2.02 2.02 0 01.416-.627 1.895 1.895 0 011.377-.574zm13.195 0c.266 0 .518.05.756.152s.446.242.621.422c.176.18.315.388.416.627.102.238.153.494.153.767 0 .266-.051.516-.153.75a1.95 1.95 0 01-1.793 1.184c-.273 0-.527-.05-.761-.152a1.967 1.967 0 01-1.032-1.032 1.866 1.866 0 01-.152-.75c0-.273.05-.529.152-.767a2.02 2.02 0 01.416-.627 1.895 1.895 0 011.377-.574zm13.196 0c.265 0 .517.05.756.152.238.102.445.242.62.422.176.18.315.388.417.627.101.238.152.494.152.767 0 .266-.05.516-.152.75a1.95 1.95 0 01-1.793 1.184c-.274 0-.528-.05-.762-.152a1.967 1.967 0 01-1.031-1.032 1.866 1.866 0 01-.153-.75c0-.273.051-.529.153-.767a2.02 2.02 0 01.416-.627 1.895 1.895 0 011.377-.574zm13.195 0c.266 0 .518.05.756.152s.445.242.62.422c.177.18.315.388.417.627.102.238.152.494.152.767 0 .266-.05.516-.152.75a1.95 1.95 0 01-1.793 1.184c-.273 0-.527-.05-.762-.152a1.967 1.967 0 01-1.031-1.032 1.866 1.866 0 01-.152-.75c0-.273.05-.529.152-.767a2.02 2.02 0 01.416-.627 1.895 1.895 0 011.377-.574zm13.195 0c.266 0 .518.05.756.152s.445.242.621.422.315.388.416.627c.102.238.153.494.153.767 0 .266-.051.516-.153.75a1.95 1.95 0 01-1.793 1.184c-.273 0-.527-.05-.761-.152a1.967 1.967 0 01-1.032-1.032 1.866 1.866 0 01-.152-.75c0-.273.05-.529.152-.767a2.02 2.02 0 01.416-.627 1.895 1.895 0 011.377-.574z"/><path id="Path" fill="#478964" d="M434.668 55.441l-.328 5.496h-1.922l-.34-5.496zM439.227 55.441l-.329 5.496h-1.921l-.34-5.496z"/><path id="Line" fill="#C06334" fill-rule="nonzero" d="M408.5 23.5l14 7-14 7v-6h-344v-2h344v-6z"/><path id="Line" stroke="#D1CFCD" stroke-linecap="square" d="M423.5 30.5h16"/></g></g></svg> +>>>>>>> 540d753e90789205fc6e75c502f68382c87dea9b:9-regular-expressions/10-regexp-greedy-and-lazy/witch_greedy4.svg diff --git a/9-regular-expressions/08-regexp-greedy-and-lazy/witch_greedy5.svg b/9-regular-expressions/10-regexp-greedy-and-lazy/witch_greedy5.svg similarity index 76% rename from 9-regular-expressions/08-regexp-greedy-and-lazy/witch_greedy5.svg rename to 9-regular-expressions/10-regexp-greedy-and-lazy/witch_greedy5.svg index fa8db5846..173734898 100644 --- a/9-regular-expressions/08-regexp-greedy-and-lazy/witch_greedy5.svg +++ b/9-regular-expressions/10-regexp-greedy-and-lazy/witch_greedy5.svg @@ -1,3 +1,4 @@ +<<<<<<< HEAD:9-regular-expressions/08-regexp-greedy-and-lazy/witch_greedy5.svg <?xml version="1.0" encoding="UTF-8"?> <svg width="463px" height="130px" viewBox="0 0 463 130" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <!-- Generator: sketchtool 55.2 (78181) - https://sketchapp.com --> @@ -16,4 +17,7 @@ <path d="M410.5,29.5 L435.5,29.5" id="Line" stroke="#B8BAC1" stroke-linecap="square"></path> </g> </g> -</svg> \ No newline at end of file +</svg> +======= +<svg xmlns="http://www.w3.org/2000/svg" width="463" height="130" viewBox="0 0 463 130"><defs><style>@import url(https://fonts.googleapis.com/css?family=Open+Sans:bold,italic,bolditalic%7CPT+Mono);@font-face{font-family:'PT Mono';font-weight:700;font-style:normal;src:local('PT MonoBold'),url(/font/PTMonoBold.woff2) format('woff2'),url(/font/PTMonoBold.woff) format('woff'),url(/font/PTMonoBold.ttf) format('truetype')}</style></defs><g id="regexp" fill="none" fill-rule="evenodd" stroke="none" stroke-width="1"><g id="witch_greedy5.svg"><text id="a-"witch"-and-her-"b" fill="#AF6E24" font-family="PTMono-Regular, PT Mono" font-size="22" font-weight="normal"><tspan x="20" y="107">a "witch" and her "broom" is one</tspan></text><path id="Rectangle-1" stroke="#DBAF88" d="M45.5 45.5h370v76h-370z"/><path id="--"................." fill="#A7333A" d="M52.004 55.441l-.328 5.496h-1.922l-.34-5.496h2.59zm4.559 0l-.329 5.496h-1.922l-.34-5.496h2.59zM66.09 68.31c.265 0 .517.05.756.152.238.102.445.242.62.422.177.18.315.388.417.627.101.238.152.494.152.767 0 .266-.05.516-.152.75a1.95 1.95 0 01-1.793 1.184c-.274 0-.527-.05-.762-.152a1.967 1.967 0 01-1.031-1.032 1.866 1.866 0 01-.152-.75c0-.273.05-.529.152-.767a2.02 2.02 0 01.416-.627 1.895 1.895 0 011.377-.574zm13.195 0c.266 0 .518.05.756.152s.445.242.621.422.315.388.416.627c.102.238.152.494.152.767 0 .266-.05.516-.152.75a1.95 1.95 0 01-1.793 1.184c-.273 0-.527-.05-.762-.152a1.967 1.967 0 01-1.03-1.032 1.866 1.866 0 01-.153-.75c0-.273.05-.529.152-.767a2.02 2.02 0 01.416-.627 1.895 1.895 0 011.377-.574zm13.195 0c.266 0 .518.05.756.152.239.102.446.242.621.422.176.18.315.388.416.627.102.238.153.494.153.767 0 .266-.051.516-.153.75a1.95 1.95 0 01-1.793 1.184c-.273 0-.527-.05-.761-.152a1.967 1.967 0 01-1.031-1.032 1.866 1.866 0 01-.153-.75c0-.273.05-.529.153-.767a2.02 2.02 0 01.416-.627 1.895 1.895 0 011.377-.574zm13.196 0c.265 0 .517.05.756.152.238.102.445.242.62.422.177.18.315.388.417.627.101.238.152.494.152.767 0 .266-.05.516-.152.75a1.95 1.95 0 01-1.793 1.184c-.274 0-.528-.05-.762-.152a1.967 1.967 0 01-1.031-1.032 1.866 1.866 0 01-.153-.75c0-.273.051-.529.153-.767a2.02 2.02 0 01.416-.627 1.895 1.895 0 011.377-.574zm13.195 0c.266 0 .518.05.756.152s.445.242.621.422.314.388.416.627c.102.238.152.494.152.767 0 .266-.05.516-.152.75a1.95 1.95 0 01-1.793 1.184c-.273 0-.527-.05-.762-.152a1.967 1.967 0 01-1.03-1.032 1.866 1.866 0 01-.153-.75c0-.273.05-.529.152-.767a2.02 2.02 0 01.416-.627 1.895 1.895 0 011.377-.574zm13.195 0c.266 0 .518.05.756.152.239.102.446.242.621.422.176.18.315.388.416.627.102.238.153.494.153.767 0 .266-.051.516-.153.75a1.95 1.95 0 01-1.793 1.184c-.273 0-.527-.05-.761-.152a1.967 1.967 0 01-1.032-1.032 1.866 1.866 0 01-.152-.75c0-.273.05-.529.152-.767a2.02 2.02 0 01.416-.627 1.895 1.895 0 011.377-.574zm13.196 0c.265 0 .517.05.756.152.238.102.445.242.62.422.176.18.315.388.417.627.101.238.152.494.152.767 0 .266-.05.516-.152.75a1.95 1.95 0 01-1.793 1.184c-.274 0-.528-.05-.762-.152a1.967 1.967 0 01-1.031-1.032 1.866 1.866 0 01-.153-.75c0-.273.051-.529.153-.767a2.02 2.02 0 01.416-.627 1.895 1.895 0 011.377-.574zm13.195 0c.266 0 .518.05.756.152s.445.242.621.422.314.388.416.627c.102.238.152.494.152.767 0 .266-.05.516-.152.75a1.95 1.95 0 01-1.793 1.184c-.273 0-.527-.05-.762-.152a1.967 1.967 0 01-1.03-1.032 1.866 1.866 0 01-.153-.75c0-.273.05-.529.152-.767a2.02 2.02 0 01.416-.627 1.895 1.895 0 011.377-.574zm13.195 0c.266 0 .518.05.756.152s.446.242.621.422c.176.18.315.388.416.627.102.238.153.494.153.767 0 .266-.051.516-.153.75a1.95 1.95 0 01-1.793 1.184c-.273 0-.527-.05-.761-.152a1.967 1.967 0 01-1.032-1.032 1.866 1.866 0 01-.152-.75c0-.273.05-.529.152-.767a2.02 2.02 0 01.416-.627 1.895 1.895 0 011.377-.574zm13.196 0c.265 0 .517.05.756.152.238.102.445.242.62.422.176.18.315.388.417.627.101.238.152.494.152.767 0 .266-.05.516-.152.75a1.95 1.95 0 01-1.793 1.184c-.274 0-.528-.05-.762-.152a1.967 1.967 0 01-1.031-1.032 1.866 1.866 0 01-.153-.75c0-.273.051-.529.153-.767a2.02 2.02 0 01.416-.627 1.895 1.895 0 011.377-.574zm13.195 0c.266 0 .518.05.756.152s.445.242.62.422c.177.18.315.388.417.627.102.238.152.494.152.767 0 .266-.05.516-.152.75a1.95 1.95 0 01-1.793 1.184c-.273 0-.527-.05-.762-.152a1.967 1.967 0 01-1.031-1.032 1.866 1.866 0 01-.152-.75c0-.273.05-.529.152-.767a2.02 2.02 0 01.416-.627 1.895 1.895 0 011.377-.574zm13.195 0c.266 0 .518.05.756.152s.445.242.621.422.315.388.416.627c.102.238.153.494.153.767 0 .266-.051.516-.153.75a1.95 1.95 0 01-1.793 1.184c-.273 0-.527-.05-.761-.152a1.967 1.967 0 01-1.032-1.032 1.866 1.866 0 01-.152-.75c0-.273.05-.529.152-.767a2.02 2.02 0 01.416-.627 1.895 1.895 0 011.377-.574zm13.196 0c.265 0 .517.05.755.152.239.102.446.242.622.422.175.18.314.388.416.627.101.238.152.494.152.767 0 .266-.05.516-.152.75a1.95 1.95 0 01-1.793 1.184c-.274 0-.528-.05-.762-.152a1.967 1.967 0 01-1.031-1.032 1.866 1.866 0 01-.153-.75c0-.273.051-.529.153-.767a2.02 2.02 0 01.416-.627 1.895 1.895 0 011.377-.574zm13.195 0c.266 0 .517.05.756.152.238.102.445.242.62.422.177.18.315.388.417.627.101.238.152.494.152.767 0 .266-.05.516-.152.75a1.95 1.95 0 01-1.793 1.184c-.274 0-.527-.05-.762-.152a1.967 1.967 0 01-1.031-1.032 1.866 1.866 0 01-.152-.75c0-.273.05-.529.152-.767a2.02 2.02 0 01.416-.627 1.895 1.895 0 011.377-.574zm13.195 0c.266 0 .518.05.756.152s.445.242.621.422.315.388.416.627c.102.238.153.494.153.767 0 .266-.051.516-.153.75a1.95 1.95 0 01-1.793 1.184c-.273 0-.527-.05-.761-.152a1.967 1.967 0 01-1.032-1.032 1.866 1.866 0 01-.152-.75c0-.273.05-.529.152-.767a2.02 2.02 0 01.416-.627 1.895 1.895 0 011.377-.574zm13.196 0c.265 0 .517.05.755.152.239.102.446.242.621.422.176.18.315.388.416.627.102.238.153.494.153.767 0 .266-.05.516-.152.75a1.95 1.95 0 01-1.793 1.184c-.274 0-.528-.05-.762-.152a1.967 1.967 0 01-1.031-1.032 1.866 1.866 0 01-.153-.75c0-.273.051-.529.153-.767a2.02 2.02 0 01.416-.627 1.895 1.895 0 011.377-.574zm13.195 0c.265 0 .517.05.756.152.238.102.445.242.62.422.177.18.315.388.417.627.101.238.152.494.152.767 0 .266-.05.516-.152.75a1.95 1.95 0 01-1.793 1.184c-.274 0-.527-.05-.762-.152a1.967 1.967 0 01-1.031-1.032 1.866 1.866 0 01-.152-.75c0-.273.05-.529.152-.767a2.02 2.02 0 01.416-.627 1.895 1.895 0 011.377-.574zm13.195 0c.266 0 .518.05.756.152s.445.242.621.422.315.388.416.627c.102.238.152.494.152.767 0 .266-.05.516-.152.75a1.95 1.95 0 01-1.793 1.184c-.273 0-.527-.05-.762-.152a1.967 1.967 0 01-1.03-1.032 1.866 1.866 0 01-.153-.75c0-.273.05-.529.152-.767a2.02 2.02 0 01.416-.627 1.895 1.895 0 011.377-.574zm13.195 0c.266 0 .518.05.756.152.239.102.446.242.621.422.176.18.315.388.416.627.102.238.153.494.153.767 0 .266-.051.516-.153.75a1.95 1.95 0 01-1.793 1.184c-.273 0-.527-.05-.761-.152a1.967 1.967 0 01-1.031-1.032 1.866 1.866 0 01-.153-.75c0-.273.05-.529.152-.767a2.02 2.02 0 01.417-.627 1.895 1.895 0 011.377-.574zm13.196 0c.265 0 .517.05.756.152.238.102.445.242.62.422.177.18.315.388.417.627.101.238.152.494.152.767 0 .266-.05.516-.152.75a1.95 1.95 0 01-1.793 1.184c-.274 0-.528-.05-.762-.152a1.967 1.967 0 01-1.031-1.032 1.866 1.866 0 01-.153-.75c0-.273.051-.529.153-.767a2.02 2.02 0 01.416-.627 1.895 1.895 0 011.377-.574zm13.195 0c.266 0 .518.05.756.152s.445.242.621.422.314.388.416.627c.102.238.152.494.152.767 0 .266-.05.516-.152.75a1.95 1.95 0 01-1.793 1.184c-.273 0-.527-.05-.762-.152a1.967 1.967 0 01-1.03-1.032 1.866 1.866 0 01-.153-.75c0-.273.05-.529.152-.767a2.02 2.02 0 01.416-.627 1.895 1.895 0 011.377-.574zm13.195 0c.266 0 .518.05.756.152.239.102.446.242.621.422.176.18.315.388.416.627.102.238.153.494.153.767 0 .266-.051.516-.153.75a1.95 1.95 0 01-1.793 1.184c-.273 0-.527-.05-.761-.152a1.967 1.967 0 01-1.032-1.032 1.866 1.866 0 01-.152-.75c0-.273.05-.529.152-.767a2.02 2.02 0 01.416-.627 1.895 1.895 0 011.377-.574zm13.196 0c.265 0 .517.05.756.152.238.102.445.242.62.422.176.18.315.388.417.627.101.238.152.494.152.767 0 .266-.05.516-.152.75a1.95 1.95 0 01-1.793 1.184c-.274 0-.528-.05-.762-.152a1.967 1.967 0 01-1.031-1.032 1.866 1.866 0 01-.153-.75c0-.273.051-.529.153-.767a2.02 2.02 0 01.416-.627 1.895 1.895 0 011.377-.574zm13.195 0c.266 0 .518.05.756.152s.445.242.621.422.314.388.416.627c.102.238.152.494.152.767 0 .266-.05.516-.152.75a1.95 1.95 0 01-1.793 1.184c-.273 0-.527-.05-.762-.152a1.967 1.967 0 01-1.03-1.032 1.866 1.866 0 01-.153-.75c0-.273.05-.529.152-.767a2.02 2.02 0 01.416-.627 1.895 1.895 0 011.377-.574zm13.195 0c.266 0 .518.05.756.152s.446.242.621.422c.176.18.315.388.416.627.102.238.153.494.153.767 0 .266-.051.516-.153.75a1.95 1.95 0 01-1.793 1.184c-.273 0-.527-.05-.761-.152a1.967 1.967 0 01-1.032-1.032 1.866 1.866 0 01-.152-.75c0-.273.05-.529.152-.767a2.02 2.02 0 01.416-.627 1.895 1.895 0 011.377-.574zm13.196 0c.265 0 .517.05.756.152.238.102.445.242.62.422.176.18.315.388.417.627.101.238.152.494.152.767 0 .266-.05.516-.152.75a1.95 1.95 0 01-1.793 1.184c-.274 0-.528-.05-.762-.152a1.967 1.967 0 01-1.031-1.032 1.866 1.866 0 01-.153-.75c0-.273.051-.529.153-.767a2.02 2.02 0 01.416-.627 1.895 1.895 0 011.377-.574zm13.195 0c.266 0 .518.05.756.152s.445.242.62.422c.177.18.315.388.417.627.102.238.152.494.152.767 0 .266-.05.516-.152.75a1.95 1.95 0 01-1.793 1.184c-.273 0-.527-.05-.762-.152a1.967 1.967 0 01-1.031-1.032 1.866 1.866 0 01-.152-.75c0-.273.05-.529.152-.767a2.02 2.02 0 01.416-.627 1.895 1.895 0 011.377-.574z"/><path id="Path" fill="#478964" d="M421.473 55.441l-.328 5.496h-1.922l-.34-5.496zM426.031 55.441l-.328 5.496h-1.922l-.34-5.496z"/><path id="Line" fill="#C06334" fill-rule="nonzero" d="M395.5 22.5l14 7-14 7v-6h-343v-2h343v-6z"/><path id="Line" stroke="#D1CFCD" stroke-linecap="square" d="M410.5 29.5h25"/></g></g></svg> +>>>>>>> 540d753e90789205fc6e75c502f68382c87dea9b:9-regular-expressions/10-regexp-greedy-and-lazy/witch_greedy5.svg diff --git a/9-regular-expressions/08-regexp-greedy-and-lazy/witch_greedy6.svg b/9-regular-expressions/10-regexp-greedy-and-lazy/witch_greedy6.svg similarity index 75% rename from 9-regular-expressions/08-regexp-greedy-and-lazy/witch_greedy6.svg rename to 9-regular-expressions/10-regexp-greedy-and-lazy/witch_greedy6.svg index c0165e88d..bf9557612 100644 --- a/9-regular-expressions/08-regexp-greedy-and-lazy/witch_greedy6.svg +++ b/9-regular-expressions/10-regexp-greedy-and-lazy/witch_greedy6.svg @@ -1,3 +1,4 @@ +<<<<<<< HEAD:9-regular-expressions/08-regexp-greedy-and-lazy/witch_greedy6.svg <?xml version="1.0" encoding="UTF-8"?> <svg width="463px" height="130px" viewBox="0 0 463 130" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <!-- Generator: sketchtool 55.2 (78181) - https://sketchapp.com --> @@ -14,4 +15,7 @@ <path d="M346.5,30.5 L437.5,30.5" id="Line" stroke="#B8BAC1" stroke-linecap="square"></path> </g> </g> -</svg> \ No newline at end of file +</svg> +======= +<svg xmlns="http://www.w3.org/2000/svg" width="463" height="130" viewBox="0 0 463 130"><defs><style>@import url(https://fonts.googleapis.com/css?family=Open+Sans:bold,italic,bolditalic%7CPT+Mono);@font-face{font-family:'PT Mono';font-weight:700;font-style:normal;src:local('PT MonoBold'),url(/font/PTMonoBold.woff2) format('woff2'),url(/font/PTMonoBold.woff) format('woff'),url(/font/PTMonoBold.ttf) format('truetype')}</style></defs><g id="regexp" fill="none" fill-rule="evenodd" stroke="none" stroke-width="1"><g id="witch_greedy6.svg"><text id="a-"witch"-and-her-"b" fill="#AF6E24" font-family="PTMono-Regular, PT Mono" font-size="22" font-weight="normal"><tspan x="20" y="107">a "witch" and her "broom" is one</tspan></text><path id="Rectangle-1" stroke="#DBAF88" d="M45.5 45.5h305v76h-305z"/><path id="--"................." fill="#A7333A" d="M52.004 55.441l-.328 5.496h-1.922l-.34-5.496h2.59zm4.559 0l-.329 5.496h-1.922l-.34-5.496h2.59zM66.09 68.31c.265 0 .517.05.756.152.238.102.445.242.62.422.177.18.315.388.417.627.101.238.152.494.152.767 0 .266-.05.516-.152.75a1.95 1.95 0 01-1.793 1.184c-.274 0-.527-.05-.762-.152a1.967 1.967 0 01-1.031-1.032 1.866 1.866 0 01-.152-.75c0-.273.05-.529.152-.767a2.02 2.02 0 01.416-.627 1.895 1.895 0 011.377-.574zm13.195 0c.266 0 .518.05.756.152s.445.242.621.422.315.388.416.627c.102.238.152.494.152.767 0 .266-.05.516-.152.75a1.95 1.95 0 01-1.793 1.184c-.273 0-.527-.05-.762-.152a1.967 1.967 0 01-1.03-1.032 1.866 1.866 0 01-.153-.75c0-.273.05-.529.152-.767a2.02 2.02 0 01.416-.627 1.895 1.895 0 011.377-.574zm13.195 0c.266 0 .518.05.756.152.239.102.446.242.621.422.176.18.315.388.416.627.102.238.153.494.153.767 0 .266-.051.516-.153.75a1.95 1.95 0 01-1.793 1.184c-.273 0-.527-.05-.761-.152a1.967 1.967 0 01-1.031-1.032 1.866 1.866 0 01-.153-.75c0-.273.05-.529.153-.767a2.02 2.02 0 01.416-.627 1.895 1.895 0 011.377-.574zm13.196 0c.265 0 .517.05.756.152.238.102.445.242.62.422.177.18.315.388.417.627.101.238.152.494.152.767 0 .266-.05.516-.152.75a1.95 1.95 0 01-1.793 1.184c-.274 0-.528-.05-.762-.152a1.967 1.967 0 01-1.031-1.032 1.866 1.866 0 01-.153-.75c0-.273.051-.529.153-.767a2.02 2.02 0 01.416-.627 1.895 1.895 0 011.377-.574zm13.195 0c.266 0 .518.05.756.152s.445.242.621.422.314.388.416.627c.102.238.152.494.152.767 0 .266-.05.516-.152.75a1.95 1.95 0 01-1.793 1.184c-.273 0-.527-.05-.762-.152a1.967 1.967 0 01-1.03-1.032 1.866 1.866 0 01-.153-.75c0-.273.05-.529.152-.767a2.02 2.02 0 01.416-.627 1.895 1.895 0 011.377-.574zm13.195 0c.266 0 .518.05.756.152.239.102.446.242.621.422.176.18.315.388.416.627.102.238.153.494.153.767 0 .266-.051.516-.153.75a1.95 1.95 0 01-1.793 1.184c-.273 0-.527-.05-.761-.152a1.967 1.967 0 01-1.032-1.032 1.866 1.866 0 01-.152-.75c0-.273.05-.529.152-.767a2.02 2.02 0 01.416-.627 1.895 1.895 0 011.377-.574zm13.196 0c.265 0 .517.05.756.152.238.102.445.242.62.422.176.18.315.388.417.627.101.238.152.494.152.767 0 .266-.05.516-.152.75a1.95 1.95 0 01-1.793 1.184c-.274 0-.528-.05-.762-.152a1.967 1.967 0 01-1.031-1.032 1.866 1.866 0 01-.153-.75c0-.273.051-.529.153-.767a2.02 2.02 0 01.416-.627 1.895 1.895 0 011.377-.574zm13.195 0c.266 0 .518.05.756.152s.445.242.621.422.314.388.416.627c.102.238.152.494.152.767 0 .266-.05.516-.152.75a1.95 1.95 0 01-1.793 1.184c-.273 0-.527-.05-.762-.152a1.967 1.967 0 01-1.03-1.032 1.866 1.866 0 01-.153-.75c0-.273.05-.529.152-.767a2.02 2.02 0 01.416-.627 1.895 1.895 0 011.377-.574zm13.195 0c.266 0 .518.05.756.152s.446.242.621.422c.176.18.315.388.416.627.102.238.153.494.153.767 0 .266-.051.516-.153.75a1.95 1.95 0 01-1.793 1.184c-.273 0-.527-.05-.761-.152a1.967 1.967 0 01-1.032-1.032 1.866 1.866 0 01-.152-.75c0-.273.05-.529.152-.767a2.02 2.02 0 01.416-.627 1.895 1.895 0 011.377-.574zm13.196 0c.265 0 .517.05.756.152.238.102.445.242.62.422.176.18.315.388.417.627.101.238.152.494.152.767 0 .266-.05.516-.152.75a1.95 1.95 0 01-1.793 1.184c-.274 0-.528-.05-.762-.152a1.967 1.967 0 01-1.031-1.032 1.866 1.866 0 01-.153-.75c0-.273.051-.529.153-.767a2.02 2.02 0 01.416-.627 1.895 1.895 0 011.377-.574zm13.195 0c.266 0 .518.05.756.152s.445.242.62.422c.177.18.315.388.417.627.102.238.152.494.152.767 0 .266-.05.516-.152.75a1.95 1.95 0 01-1.793 1.184c-.273 0-.527-.05-.762-.152a1.967 1.967 0 01-1.031-1.032 1.866 1.866 0 01-.152-.75c0-.273.05-.529.152-.767a2.02 2.02 0 01.416-.627 1.895 1.895 0 011.377-.574zm13.195 0c.266 0 .518.05.756.152s.445.242.621.422.315.388.416.627c.102.238.153.494.153.767 0 .266-.051.516-.153.75a1.95 1.95 0 01-1.793 1.184c-.273 0-.527-.05-.761-.152a1.967 1.967 0 01-1.032-1.032 1.866 1.866 0 01-.152-.75c0-.273.05-.529.152-.767a2.02 2.02 0 01.416-.627 1.895 1.895 0 011.377-.574zm13.196 0c.265 0 .517.05.755.152.239.102.446.242.622.422.175.18.314.388.416.627.101.238.152.494.152.767 0 .266-.05.516-.152.75a1.95 1.95 0 01-1.793 1.184c-.274 0-.528-.05-.762-.152a1.967 1.967 0 01-1.031-1.032 1.866 1.866 0 01-.153-.75c0-.273.051-.529.153-.767a2.02 2.02 0 01.416-.627 1.895 1.895 0 011.377-.574zm13.195 0c.266 0 .517.05.756.152.238.102.445.242.62.422.177.18.315.388.417.627.101.238.152.494.152.767 0 .266-.05.516-.152.75a1.95 1.95 0 01-1.793 1.184c-.274 0-.527-.05-.762-.152a1.967 1.967 0 01-1.031-1.032 1.866 1.866 0 01-.152-.75c0-.273.05-.529.152-.767a2.02 2.02 0 01.416-.627 1.895 1.895 0 011.377-.574zm13.195 0c.266 0 .518.05.756.152s.445.242.621.422.315.388.416.627c.102.238.153.494.153.767 0 .266-.051.516-.153.75a1.95 1.95 0 01-1.793 1.184c-.273 0-.527-.05-.761-.152a1.967 1.967 0 01-1.032-1.032 1.866 1.866 0 01-.152-.75c0-.273.05-.529.152-.767a2.02 2.02 0 01.416-.627 1.895 1.895 0 011.377-.574zm13.196 0c.265 0 .517.05.755.152.239.102.446.242.621.422.176.18.315.388.416.627.102.238.153.494.153.767 0 .266-.05.516-.152.75a1.95 1.95 0 01-1.793 1.184c-.274 0-.528-.05-.762-.152a1.967 1.967 0 01-1.031-1.032 1.866 1.866 0 01-.153-.75c0-.273.051-.529.153-.767a2.02 2.02 0 01.416-.627 1.895 1.895 0 011.377-.574zm13.195 0c.265 0 .517.05.756.152.238.102.445.242.62.422.177.18.315.388.417.627.101.238.152.494.152.767 0 .266-.05.516-.152.75a1.95 1.95 0 01-1.793 1.184c-.274 0-.527-.05-.762-.152a1.967 1.967 0 01-1.031-1.032 1.866 1.866 0 01-.152-.75c0-.273.05-.529.152-.767a2.02 2.02 0 01.416-.627 1.895 1.895 0 011.377-.574zm13.195 0c.266 0 .518.05.756.152s.445.242.621.422.315.388.416.627c.102.238.152.494.152.767 0 .266-.05.516-.152.75a1.95 1.95 0 01-1.793 1.184c-.273 0-.527-.05-.762-.152a1.967 1.967 0 01-1.03-1.032 1.866 1.866 0 01-.153-.75c0-.273.05-.529.152-.767a2.02 2.02 0 01.416-.627 1.895 1.895 0 011.377-.574zm13.195 0c.266 0 .518.05.756.152.239.102.446.242.621.422.176.18.315.388.416.627.102.238.153.494.153.767 0 .266-.051.516-.153.75a1.95 1.95 0 01-1.793 1.184c-.273 0-.527-.05-.761-.152a1.967 1.967 0 01-1.031-1.032 1.866 1.866 0 01-.153-.75c0-.273.05-.529.152-.767a2.02 2.02 0 01.417-.627 1.895 1.895 0 011.377-.574zm13.196 0c.265 0 .517.05.756.152.238.102.445.242.62.422.177.18.315.388.417.627.101.238.152.494.152.767 0 .266-.05.516-.152.75a1.95 1.95 0 01-1.793 1.184c-.274 0-.528-.05-.762-.152a1.967 1.967 0 01-1.031-1.032 1.866 1.866 0 01-.153-.75c0-.273.051-.529.153-.767a2.02 2.02 0 01.416-.627 1.895 1.895 0 011.377-.574zm13.195 0c.266 0 .518.05.756.152s.445.242.621.422.314.388.416.627c.102.238.152.494.152.767 0 .266-.05.516-.152.75a1.95 1.95 0 01-1.793 1.184c-.273 0-.527-.05-.762-.152a1.967 1.967 0 01-1.03-1.032 1.866 1.866 0 01-.153-.75c0-.273.05-.529.152-.767a2.02 2.02 0 01.416-.627 1.895 1.895 0 011.377-.574zm12.305-12.868l-.328 5.496h-1.922l-.34-5.496h2.59zm4.558 0l-.328 5.496h-1.922l-.34-5.496h2.59z"/><path id="Line" fill="#C06334" fill-rule="nonzero" d="M331.5 23.5l14 7-14 7v-6h-281v-2h281v-6z"/><path id="Line" stroke="#D1CFCD" stroke-linecap="square" d="M346.5 30.5h91"/></g></g></svg> +>>>>>>> 540d753e90789205fc6e75c502f68382c87dea9b:9-regular-expressions/10-regexp-greedy-and-lazy/witch_greedy6.svg diff --git a/9-regular-expressions/08-regexp-greedy-and-lazy/witch_lazy3.svg b/9-regular-expressions/10-regexp-greedy-and-lazy/witch_lazy3.svg similarity index 59% rename from 9-regular-expressions/08-regexp-greedy-and-lazy/witch_lazy3.svg rename to 9-regular-expressions/10-regexp-greedy-and-lazy/witch_lazy3.svg index 61506bb5a..c12fb7289 100644 --- a/9-regular-expressions/08-regexp-greedy-and-lazy/witch_lazy3.svg +++ b/9-regular-expressions/10-regexp-greedy-and-lazy/witch_lazy3.svg @@ -1,3 +1,4 @@ +<<<<<<< HEAD:9-regular-expressions/08-regexp-greedy-and-lazy/witch_lazy3.svg <?xml version="1.0" encoding="UTF-8"?> <svg width="463px" height="130px" viewBox="0 0 463 130" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <!-- Generator: sketchtool 55.2 (78181) - https://sketchapp.com --> @@ -15,4 +16,7 @@ <path id="Line" d="M60,34.5 L45,34.5 L45,32.5 L60,32.5 L60,26.5 L74,33.5 L60,40.5 L60,34.5 Z" fill="#EE6B47" fill-rule="nonzero"></path> </g> </g> -</svg> \ No newline at end of file +</svg> +======= +<svg xmlns="http://www.w3.org/2000/svg" width="463" height="130" viewBox="0 0 463 130"><defs><style>@import url(https://fonts.googleapis.com/css?family=Open+Sans:bold,italic,bolditalic%7CPT+Mono);@font-face{font-family:'PT Mono';font-weight:700;font-style:normal;src:local('PT MonoBold'),url(/font/PTMonoBold.woff2) format('woff2'),url(/font/PTMonoBold.woff) format('woff'),url(/font/PTMonoBold.ttf) format('truetype')}</style></defs><g id="regexp" fill="none" fill-rule="evenodd" stroke="none" stroke-width="1"><g id="witch_lazy3.svg"><text id="a-"witch"-and-her-"b" fill="#AF6E24" font-family="PTMono-Regular, PT Mono" font-size="22" font-weight="normal"><tspan x="20" y="105">a "witch" and her "broom" is one</tspan></text><path id="Rectangle-1" stroke="#DBAF88" d="M45.5 43.5h28v76h-28z"/><path id="--"."---------------" fill="#A7333A" d="M52.004 53.441l-.328 5.496h-1.922l-.34-5.496h2.59zm4.559 0l-.329 5.496h-1.922l-.34-5.496h2.59zM66.09 66.31c.265 0 .517.05.756.152.238.102.445.242.62.422.177.18.315.388.417.627.101.238.152.494.152.767 0 .266-.05.516-.152.75a1.95 1.95 0 01-1.793 1.184c-.274 0-.527-.05-.762-.152a1.967 1.967 0 01-1.031-1.032 1.866 1.866 0 01-.152-.75c0-.273.05-.529.152-.767a2.02 2.02 0 01.416-.627 1.895 1.895 0 011.377-.574z"/><path id="Path" fill="#478964" d="M78.395 53.441l-.329 5.496h-1.921l-.34-5.496zM82.953 53.441l-.328 5.496h-1.922l-.34-5.496z"/><path id="Line" fill="#C06334" fill-rule="nonzero" d="M60 26.5l14 7-14 7v-6H45v-2h15v-6z"/></g></g></svg> +>>>>>>> 540d753e90789205fc6e75c502f68382c87dea9b:9-regular-expressions/10-regexp-greedy-and-lazy/witch_lazy3.svg diff --git a/9-regular-expressions/08-regexp-greedy-and-lazy/witch_lazy4.svg b/9-regular-expressions/10-regexp-greedy-and-lazy/witch_lazy4.svg similarity index 64% rename from 9-regular-expressions/08-regexp-greedy-and-lazy/witch_lazy4.svg rename to 9-regular-expressions/10-regexp-greedy-and-lazy/witch_lazy4.svg index fecc1a5ae..353f8f447 100644 --- a/9-regular-expressions/08-regexp-greedy-and-lazy/witch_lazy4.svg +++ b/9-regular-expressions/10-regexp-greedy-and-lazy/witch_lazy4.svg @@ -1,3 +1,4 @@ +<<<<<<< HEAD:9-regular-expressions/08-regexp-greedy-and-lazy/witch_lazy4.svg <?xml version="1.0" encoding="UTF-8"?> <svg width="463px" height="130px" viewBox="0 0 463 130" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <!-- Generator: sketchtool 55.2 (78181) - https://sketchapp.com --> @@ -15,4 +16,7 @@ <path id="Line" d="M70,30.5 L46,30.5 L46,28.5 L70,28.5 L70,22.5 L84,29.5 L70,36.5 L70,30.5 Z" fill="#EE6B47" fill-rule="nonzero"></path> </g> </g> -</svg> \ No newline at end of file +</svg> +======= +<svg xmlns="http://www.w3.org/2000/svg" width="463" height="130" viewBox="0 0 463 130"><defs><style>@import url(https://fonts.googleapis.com/css?family=Open+Sans:bold,italic,bolditalic%7CPT+Mono);@font-face{font-family:'PT Mono';font-weight:700;font-style:normal;src:local('PT MonoBold'),url(/font/PTMonoBold.woff2) format('woff2'),url(/font/PTMonoBold.woff) format('woff'),url(/font/PTMonoBold.ttf) format('truetype')}</style></defs><g id="regexp" fill="none" fill-rule="evenodd" stroke="none" stroke-width="1"><g id="witch_lazy4.svg"><text id="a-"witch"-and-her-"b" fill="#AF6E24" font-family="PTMono-Regular, PT Mono" font-size="22" font-weight="normal"><tspan x="20" y="105">a "witch" and her "broom" is one</tspan></text><path id="Rectangle-1" stroke="#DBAF88" d="M45.5 43.5h40v76h-40z"/><path id="--".."--------------" fill="#A7333A" d="M52.004 53.441l-.328 5.496h-1.922l-.34-5.496h2.59zm4.559 0l-.329 5.496h-1.922l-.34-5.496h2.59zM66.09 66.31c.265 0 .517.05.756.152.238.102.445.242.62.422.177.18.315.388.417.627.101.238.152.494.152.767 0 .266-.05.516-.152.75a1.95 1.95 0 01-1.793 1.184c-.274 0-.527-.05-.762-.152a1.967 1.967 0 01-1.031-1.032 1.866 1.866 0 01-.152-.75c0-.273.05-.529.152-.767a2.02 2.02 0 01.416-.627 1.895 1.895 0 011.377-.574zm13.195 0c.266 0 .518.05.756.152s.445.242.621.422.315.388.416.627c.102.238.152.494.152.767 0 .266-.05.516-.152.75a1.95 1.95 0 01-1.793 1.184c-.273 0-.527-.05-.762-.152a1.967 1.967 0 01-1.03-1.032 1.866 1.866 0 01-.153-.75c0-.273.05-.529.152-.767a2.02 2.02 0 01.416-.627 1.895 1.895 0 011.377-.574z"/><path id="Path" fill="#478964" d="M91.59 53.441l-.328 5.496H89.34L89 53.441zM96.148 53.441l-.328 5.496h-1.922l-.34-5.496z"/><path id="Line" fill="#C06334" fill-rule="nonzero" d="M70 22.5l14 7-14 7-.001-6H46v-2h23.999l.001-6z"/></g></g></svg> +>>>>>>> 540d753e90789205fc6e75c502f68382c87dea9b:9-regular-expressions/10-regexp-greedy-and-lazy/witch_lazy4.svg diff --git a/9-regular-expressions/08-regexp-greedy-and-lazy/witch_lazy5.svg b/9-regular-expressions/10-regexp-greedy-and-lazy/witch_lazy5.svg similarity index 70% rename from 9-regular-expressions/08-regexp-greedy-and-lazy/witch_lazy5.svg rename to 9-regular-expressions/10-regexp-greedy-and-lazy/witch_lazy5.svg index b75a9d7bd..cbd3a1dc7 100644 --- a/9-regular-expressions/08-regexp-greedy-and-lazy/witch_lazy5.svg +++ b/9-regular-expressions/10-regexp-greedy-and-lazy/witch_lazy5.svg @@ -1,3 +1,4 @@ +<<<<<<< HEAD:9-regular-expressions/08-regexp-greedy-and-lazy/witch_lazy5.svg <?xml version="1.0" encoding="UTF-8"?> <svg width="463px" height="130px" viewBox="0 0 463 130" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <!-- Generator: sketchtool 55.2 (78181) - https://sketchapp.com --> @@ -13,4 +14,7 @@ <path id="Line" d="M120.5,31.5 L51.5,31.5 L51.5,29.5 L120.5,29.5 L120.5,23.5 L134.5,30.5 L120.5,37.5 L120.5,31.5 Z" fill="#EE6B47" fill-rule="nonzero"></path> </g> </g> -</svg> \ No newline at end of file +</svg> +======= +<svg xmlns="http://www.w3.org/2000/svg" width="463" height="130" viewBox="0 0 463 130"><defs><style>@import url(https://fonts.googleapis.com/css?family=Open+Sans:bold,italic,bolditalic%7CPT+Mono);@font-face{font-family:'PT Mono';font-weight:700;font-style:normal;src:local('PT MonoBold'),url(/font/PTMonoBold.woff2) format('woff2'),url(/font/PTMonoBold.woff) format('woff'),url(/font/PTMonoBold.ttf) format('truetype')}</style></defs><g id="regexp" fill="none" fill-rule="evenodd" stroke="none" stroke-width="1"><g id="witch_lazy5.svg"><text id="a-"witch"-and-her-"b" fill="#AF6E24" font-family="PTMono-Regular, PT Mono" font-size="22" font-weight="normal"><tspan x="20" y="105">a "witch" and her "broom" is one</tspan></text><path id="Rectangle-1" stroke="#DBAF88" d="M45.5 43.5h94v76h-94z"/><path id="--"....."---------"." fill="#A7333A" d="M52.004 53.441l-.328 5.496h-1.922l-.34-5.496h2.59zm4.559 0l-.329 5.496h-1.922l-.34-5.496h2.59zM66.09 66.31c.265 0 .517.05.756.152.238.102.445.242.62.422.177.18.315.388.417.627.101.238.152.494.152.767 0 .266-.05.516-.152.75a1.95 1.95 0 01-1.793 1.184c-.274 0-.527-.05-.762-.152a1.967 1.967 0 01-1.031-1.032 1.866 1.866 0 01-.152-.75c0-.273.05-.529.152-.767a2.02 2.02 0 01.416-.627 1.895 1.895 0 011.377-.574zm13.195 0c.266 0 .518.05.756.152s.445.242.621.422.315.388.416.627c.102.238.152.494.152.767 0 .266-.05.516-.152.75a1.95 1.95 0 01-1.793 1.184c-.273 0-.527-.05-.762-.152a1.967 1.967 0 01-1.03-1.032 1.866 1.866 0 01-.153-.75c0-.273.05-.529.152-.767a2.02 2.02 0 01.416-.627 1.895 1.895 0 011.377-.574zm13.195 0c.266 0 .518.05.756.152.239.102.446.242.621.422.176.18.315.388.416.627.102.238.153.494.153.767 0 .266-.051.516-.153.75a1.95 1.95 0 01-1.793 1.184c-.273 0-.527-.05-.761-.152a1.967 1.967 0 01-1.031-1.032 1.866 1.866 0 01-.153-.75c0-.273.05-.529.153-.767a2.02 2.02 0 01.416-.627 1.895 1.895 0 011.377-.574zm13.196 0c.265 0 .517.05.756.152.238.102.445.242.62.422.177.18.315.388.417.627.101.238.152.494.152.767 0 .266-.05.516-.152.75a1.95 1.95 0 01-1.793 1.184c-.274 0-.528-.05-.762-.152a1.967 1.967 0 01-1.031-1.032 1.866 1.866 0 01-.153-.75c0-.273.051-.529.153-.767a2.02 2.02 0 01.416-.627 1.895 1.895 0 011.377-.574zm13.195 0c.266 0 .518.05.756.152s.445.242.621.422.314.388.416.627c.102.238.152.494.152.767 0 .266-.05.516-.152.75a1.95 1.95 0 01-1.793 1.184c-.273 0-.527-.05-.762-.152a1.967 1.967 0 01-1.03-1.032 1.866 1.866 0 01-.153-.75c0-.273.05-.529.152-.767a2.02 2.02 0 01.416-.627 1.895 1.895 0 011.377-.574zm12.305-12.868l-.328 5.496h-1.922l-.34-5.496h2.59zm4.558 0l-.328 5.496h-1.922l-.34-5.496h2.59z"/><path id="Line" fill="#C06334" fill-rule="nonzero" d="M120.5 23.5l14 7-14 7v-6h-69v-2h69v-6z"/></g></g></svg> +>>>>>>> 540d753e90789205fc6e75c502f68382c87dea9b:9-regular-expressions/10-regexp-greedy-and-lazy/witch_lazy5.svg diff --git a/9-regular-expressions/08-regexp-greedy-and-lazy/witch_lazy6.svg b/9-regular-expressions/10-regexp-greedy-and-lazy/witch_lazy6.svg similarity index 73% rename from 9-regular-expressions/08-regexp-greedy-and-lazy/witch_lazy6.svg rename to 9-regular-expressions/10-regexp-greedy-and-lazy/witch_lazy6.svg index 867e30c85..0bf09cde3 100644 --- a/9-regular-expressions/08-regexp-greedy-and-lazy/witch_lazy6.svg +++ b/9-regular-expressions/10-regexp-greedy-and-lazy/witch_lazy6.svg @@ -1,3 +1,4 @@ +<<<<<<< HEAD:9-regular-expressions/08-regexp-greedy-and-lazy/witch_lazy6.svg <?xml version="1.0" encoding="UTF-8"?> <svg width="463px" height="130px" viewBox="0 0 463 130" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <!-- Generator: sketchtool 55.2 (78181) - https://sketchapp.com --> @@ -15,4 +16,7 @@ <path id="Line" d="M118.5,35.5 L53.5,35.5 L53.5,33.5 L118.5,33.5 L118.5,27.5 L132.5,34.5 L118.5,41.5 L118.5,35.5 Z" fill="#EE6B47" fill-rule="nonzero"></path> </g> </g> -</svg> \ No newline at end of file +</svg> +======= +<svg xmlns="http://www.w3.org/2000/svg" width="463" height="130" viewBox="0 0 463 130"><defs><style>@import url(https://fonts.googleapis.com/css?family=Open+Sans:bold,italic,bolditalic%7CPT+Mono);@font-face{font-family:'PT Mono';font-weight:700;font-style:normal;src:local('PT MonoBold'),url(/font/PTMonoBold.woff2) format('woff2'),url(/font/PTMonoBold.woff) format('woff'),url(/font/PTMonoBold.ttf) format('truetype')}</style></defs><g id="regexp" fill="none" fill-rule="evenodd" stroke="none" stroke-width="1"><g id="witch_lazy6.svg"><text id="a-"witch"-and-her-"b" fill="#AF6E24" font-family="PTMono-Regular, PT Mono" font-size="22" font-weight="normal"><tspan x="20" y="105">a "witch" and her "broom" is one</tspan></text><path id="Rectangle-1" stroke="#DBAF88" d="M45.5 43.5h94v76h-94z"/><path id="Rectangle-2" stroke="#DBAF88" d="M256.5 43.5h94v76h-94z"/><path id="--"....."---------"." fill="#A7333A" d="M52.004 53.441l-.328 5.496h-1.922l-.34-5.496h2.59zm4.559 0l-.329 5.496h-1.922l-.34-5.496h2.59zM66.09 66.31c.265 0 .517.05.756.152.238.102.445.242.62.422.177.18.315.388.417.627.101.238.152.494.152.767 0 .266-.05.516-.152.75a1.95 1.95 0 01-1.793 1.184c-.274 0-.527-.05-.762-.152a1.967 1.967 0 01-1.031-1.032 1.866 1.866 0 01-.152-.75c0-.273.05-.529.152-.767a2.02 2.02 0 01.416-.627 1.895 1.895 0 011.377-.574zm13.195 0c.266 0 .518.05.756.152s.445.242.621.422.315.388.416.627c.102.238.152.494.152.767 0 .266-.05.516-.152.75a1.95 1.95 0 01-1.793 1.184c-.273 0-.527-.05-.762-.152a1.967 1.967 0 01-1.03-1.032 1.866 1.866 0 01-.153-.75c0-.273.05-.529.152-.767a2.02 2.02 0 01.416-.627 1.895 1.895 0 011.377-.574zm13.195 0c.266 0 .518.05.756.152.239.102.446.242.621.422.176.18.315.388.416.627.102.238.153.494.153.767 0 .266-.051.516-.153.75a1.95 1.95 0 01-1.793 1.184c-.273 0-.527-.05-.761-.152a1.967 1.967 0 01-1.031-1.032 1.866 1.866 0 01-.153-.75c0-.273.05-.529.153-.767a2.02 2.02 0 01.416-.627 1.895 1.895 0 011.377-.574zm13.196 0c.265 0 .517.05.756.152.238.102.445.242.62.422.177.18.315.388.417.627.101.238.152.494.152.767 0 .266-.05.516-.152.75a1.95 1.95 0 01-1.793 1.184c-.274 0-.528-.05-.762-.152a1.967 1.967 0 01-1.031-1.032 1.866 1.866 0 01-.153-.75c0-.273.051-.529.153-.767a2.02 2.02 0 01.416-.627 1.895 1.895 0 011.377-.574zm13.195 0c.266 0 .518.05.756.152s.445.242.621.422.314.388.416.627c.102.238.152.494.152.767 0 .266-.05.516-.152.75a1.95 1.95 0 01-1.793 1.184c-.273 0-.527-.05-.762-.152a1.967 1.967 0 01-1.03-1.032 1.866 1.866 0 01-.153-.75c0-.273.05-.529.152-.767a2.02 2.02 0 01.416-.627 1.895 1.895 0 011.377-.574zm12.305-12.868l-.328 5.496h-1.922l-.34-5.496h2.59zm4.558 0l-.328 5.496h-1.922l-.34-5.496h2.59zm127.395 0l-.328 5.496h-1.922l-.34-5.496h2.59zm4.558 0l-.328 5.496h-1.921l-.34-5.496h2.59zm9.528 12.868c.265 0 .517.05.756.152.238.102.445.242.62.422.177.18.315.388.417.627.101.238.152.494.152.767 0 .266-.05.516-.152.75a1.95 1.95 0 01-1.793 1.184c-.274 0-.527-.05-.762-.152a1.967 1.967 0 01-1.031-1.032 1.866 1.866 0 01-.152-.75c0-.273.05-.529.152-.767a2.02 2.02 0 01.416-.627 1.895 1.895 0 011.377-.574zm13.195 0c.266 0 .518.05.756.152s.445.242.621.422.315.388.416.627c.102.238.152.494.152.767 0 .266-.05.516-.152.75a1.95 1.95 0 01-1.793 1.184c-.273 0-.527-.05-.762-.152a1.967 1.967 0 01-1.03-1.032 1.866 1.866 0 01-.153-.75c0-.273.05-.529.152-.767a2.02 2.02 0 01.416-.627 1.895 1.895 0 011.377-.574zm13.195 0c.266 0 .518.05.756.152.239.102.446.242.621.422.176.18.315.388.416.627.102.238.153.494.153.767 0 .266-.051.516-.153.75a1.95 1.95 0 01-1.793 1.184c-.273 0-.527-.05-.761-.152a1.967 1.967 0 01-1.031-1.032 1.866 1.866 0 01-.153-.75c0-.273.05-.529.152-.767a2.02 2.02 0 01.417-.627 1.895 1.895 0 011.377-.574zm13.196 0c.265 0 .517.05.756.152.238.102.445.242.62.422.177.18.315.388.417.627.101.238.152.494.152.767 0 .266-.05.516-.152.75a1.95 1.95 0 01-1.793 1.184c-.274 0-.528-.05-.762-.152a1.967 1.967 0 01-1.031-1.032 1.866 1.866 0 01-.153-.75c0-.273.051-.529.153-.767a2.02 2.02 0 01.416-.627 1.895 1.895 0 011.377-.574zm13.195 0c.266 0 .518.05.756.152s.445.242.621.422.314.388.416.627c.102.238.152.494.152.767 0 .266-.05.516-.152.75a1.95 1.95 0 01-1.793 1.184c-.273 0-.527-.05-.762-.152a1.967 1.967 0 01-1.03-1.032 1.866 1.866 0 01-.153-.75c0-.273.05-.529.152-.767a2.02 2.02 0 01.416-.627 1.895 1.895 0 011.377-.574zm12.305-12.868l-.328 5.496h-1.922l-.34-5.496h2.59zm4.558 0l-.328 5.496h-1.922l-.34-5.496h2.59z"/><path id="Line" fill="#C06334" fill-rule="nonzero" d="M331.5 27.5l14 7-14 7v-6h-70v-2h70v-6zM118.5 27.5l14 7-14 7v-6h-65v-2h65v-6z"/></g></g></svg> +>>>>>>> 540d753e90789205fc6e75c502f68382c87dea9b:9-regular-expressions/10-regexp-greedy-and-lazy/witch_lazy6.svg diff --git a/9-regular-expressions/11-regexp-alternation/02-find-matching-bbtags/solution.md b/9-regular-expressions/11-regexp-alternation/02-find-matching-bbtags/solution.md deleted file mode 100644 index 03080f86c..000000000 --- a/9-regular-expressions/11-regexp-alternation/02-find-matching-bbtags/solution.md +++ /dev/null @@ -1,23 +0,0 @@ - -Opening tag is `pattern:\[(b|url|quote)\]`. - -Then to find everything till the closing tag -- let's the pattern `pattern:[\s\S]*?` to match any character including the newline and then a backreference to the closing tag. - -The full pattern: `pattern:\[(b|url|quote)\][\s\S]*?\[/\1\]`. - -In action: - -```js run -let reg = /\[(b|url|quote)\][\s\S]*?\[\/\1\]/g; - -let str = ` - [b]hello![/b] - [quote] - [url]http://google.com[/url] - [/quote] -`; - -alert( str.match(reg) ); // [b]hello![/b],[quote][url]http://google.com[/url][/quote] -``` - -Please note that we had to escape a slash for the closing tag `pattern:[/\1]`, because normally the slash closes the pattern. diff --git a/9-regular-expressions/11-regexp-alternation/03-match-quoted-string/task.md b/9-regular-expressions/11-regexp-alternation/03-match-quoted-string/task.md deleted file mode 100644 index 2ccac4bdf..000000000 --- a/9-regular-expressions/11-regexp-alternation/03-match-quoted-string/task.md +++ /dev/null @@ -1,32 +0,0 @@ -# Find quoted strings - -Create a regexp to find strings in double quotes `subject:"..."`. - -The important part is that strings should support escaping, in the same way as JavaScript strings do. For instance, quotes can be inserted as `subject:\"` a newline as `subject:\n`, and the slash itself as `subject:\\`. - -```js -let str = "Just like \"here\"."; -``` - -For us it's important that an escaped quote `subject:\"` does not end a string. - -So we should look from one quote to the other ignoring escaped quotes on the way. - -That's the essential part of the task, otherwise it would be trivial. - -Examples of strings to match: -```js -.. *!*"test me"*/!* .. -.. *!*"Say \"Hello\"!"*/!* ... (escaped quotes inside) -.. *!*"\\"*/!* .. (double slash inside) -.. *!*"\\ \""*/!* .. (double slash and an escaped quote inside) -``` - -In JavaScript we need to double the slashes to pass them right into the string, like this: - -```js run -let str = ' .. "test me" .. "Say \\"Hello\\"!" .. "\\\\ \\"" .. '; - -// the in-memory string -alert(str); // .. "test me" .. "Say \"Hello\"!" .. "\\ \"" .. -``` diff --git a/9-regular-expressions/11-regexp-alternation/article.md b/9-regular-expressions/11-regexp-alternation/article.md deleted file mode 100644 index 0caa6de02..000000000 --- a/9-regular-expressions/11-regexp-alternation/article.md +++ /dev/null @@ -1,59 +0,0 @@ -# Alternation (OR) | - -Alternation is the term in regular expression that is actually a simple "OR". - -In a regular expression it is denoted with a vertical line character `pattern:|`. - -For instance, we need to find programming languages: HTML, PHP, Java or JavaScript. - -The corresponding regexp: `pattern:html|php|java(script)?`. - -A usage example: - -```js run -let reg = /html|php|css|java(script)?/gi; - -let str = "First HTML appeared, then CSS, then JavaScript"; - -alert( str.match(reg) ); // 'HTML', 'CSS', 'JavaScript' -``` - -We already know a similar thing -- square brackets. They allow to choose between multiple character, for instance `pattern:gr[ae]y` matches `match:gray` or `match:grey`. - -Square brackets allow only characters or character sets. Alternation allows any expressions. A regexp `pattern:A|B|C` means one of expressions `A`, `B` or `C`. - -For instance: - -- `pattern:gr(a|e)y` means exactly the same as `pattern:gr[ae]y`. -- `pattern:gra|ey` means `match:gra` or `match:ey`. - -To separate a part of the pattern for alternation we usually enclose it in parentheses, like this: `pattern:before(XXX|YYY)after`. - -## Regexp for time - -In previous chapters there was a task to build a regexp for searching time in the form `hh:mm`, for instance `12:00`. But a simple `pattern:\d\d:\d\d` is too vague. It accepts `25:99` as the time (99 seconds is valid, but shouldn't be). - -How can we make a better one? - -We can apply more careful matching. First, the hours: - -- If the first digit is `0` or `1`, then the next digit can by anything. -- Or, if the first digit is `2`, then the next must be `pattern:[0-3]`. - -As a regexp: `pattern:[01]\d|2[0-3]`. - -Next, the minutes must be from `0` to `59`. In the regexp language that means `pattern:[0-5]\d`: the first digit `0-5`, and then any digit. - -Let's glue them together into the pattern: `pattern:[01]\d|2[0-3]:[0-5]\d`. - -We're almost done, but there's a problem. The alternation `pattern:|` now happens to be between `pattern:[01]\d` and `pattern:2[0-3]:[0-5]\d`. - -That's wrong, as it should be applied only to hours `[01]\d` OR `2[0-3]`. That's a common mistake when starting to work with regular expressions. - -The correct variant: - -```js run -let reg = /([01]\d|2[0-3]):[0-5]\d/g; - -alert("00:00 10:10 23:59 25:99 1:2".match(reg)); // 00:00,10:10,23:59 -``` diff --git a/9-regular-expressions/11-regexp-groups/01-test-mac/solution.md b/9-regular-expressions/11-regexp-groups/01-test-mac/solution.md new file mode 100644 index 000000000..f7a5f1e39 --- /dev/null +++ b/9-regular-expressions/11-regexp-groups/01-test-mac/solution.md @@ -0,0 +1,21 @@ +A two-digit hex number is `pattern:[0-9a-f]{2}` (assuming the flag `pattern:i` is set). + +We need that number `NN`, and then `:NN` repeated 5 times (more numbers); + +The regexp is: `pattern:[0-9a-f]{2}(:[0-9a-f]{2}){5}` + +Now let's show that the match should capture all the text: start at the beginning and end at the end. That's done by wrapping the pattern in `pattern:^...$`. + +Finally: + +```js run +let regexp = /^[0-9a-f]{2}(:[0-9a-f]{2}){5}$/i; + +alert( regexp.test('01:32:54:67:89:AB') ); // true + +alert( regexp.test('0132546789AB') ); // false (no colons) + +alert( regexp.test('01:32:54:67:89') ); // false (5 numbers, need 6) + +alert( regexp.test('01:32:54:67:89:ZZ') ) // false (ZZ in the end) +``` diff --git a/9-regular-expressions/12-regexp-anchors/2-test-mac/task.md b/9-regular-expressions/11-regexp-groups/01-test-mac/task.md similarity index 50% rename from 9-regular-expressions/12-regexp-anchors/2-test-mac/task.md rename to 9-regular-expressions/11-regexp-groups/01-test-mac/task.md index e72655984..a2e799cfa 100644 --- a/9-regular-expressions/12-regexp-anchors/2-test-mac/task.md +++ b/9-regular-expressions/11-regexp-groups/01-test-mac/task.md @@ -8,13 +8,13 @@ Write a regexp that checks whether a string is MAC-address. Usage: ```js -let reg = /your regexp/; +let regexp = /your regexp/; -alert( reg.test('01:32:54:67:89:AB') ); // true +alert( regexp.test('01:32:54:67:89:AB') ); // true -alert( reg.test('0132546789AB') ); // false (no colons) +alert( regexp.test('0132546789AB') ); // false (no colons) -alert( reg.test('01:32:54:67:89') ); // false (5 numbers, must be 6) +alert( regexp.test('01:32:54:67:89') ); // false (5 numbers, must be 6) -alert( reg.test('01:32:54:67:89:ZZ') ) // false (ZZ ad the end) +alert( regexp.test('01:32:54:67:89:ZZ') ) // false (ZZ at the end) ``` diff --git a/9-regular-expressions/11-regexp-groups/02-find-webcolor-3-or-6/solution.md b/9-regular-expressions/11-regexp-groups/02-find-webcolor-3-or-6/solution.md new file mode 100644 index 000000000..0806dc4fd --- /dev/null +++ b/9-regular-expressions/11-regexp-groups/02-find-webcolor-3-or-6/solution.md @@ -0,0 +1,27 @@ +A regexp to search 3-digit color `#abc`: `pattern:/#[a-f0-9]{3}/i`. + +We can add exactly 3 more optional hex digits. We don't need more or less. The color has either 3 or 6 digits. + +Let's use the quantifier `pattern:{1,2}` for that: we'll have `pattern:/#([a-f0-9]{3}){1,2}/i`. + +Here the pattern `pattern:[a-f0-9]{3}` is enclosed in parentheses to apply the quantifier `pattern:{1,2}`. + +In action: + +```js run +let regexp = /#([a-f0-9]{3}){1,2}/gi; + +let str = "color: #3f3; background-color: #AA00ef; and: #abcd"; + +alert( str.match(regexp) ); // #3f3 #AA00ef #abc +``` + +There's a minor problem here: the pattern found `match:#abc` in `subject:#abcd`. To prevent that we can add `pattern:\b` to the end: + +```js run +let regexp = /#([a-f0-9]{3}){1,2}\b/gi; + +let str = "color: #3f3; background-color: #AA00ef; and: #abcd"; + +alert( str.match(regexp) ); // #3f3 #AA00ef +``` diff --git a/9-regular-expressions/09-regexp-groups/1-find-webcolor-3-or-6/task.md b/9-regular-expressions/11-regexp-groups/02-find-webcolor-3-or-6/task.md similarity index 59% rename from 9-regular-expressions/09-regexp-groups/1-find-webcolor-3-or-6/task.md rename to 9-regular-expressions/11-regexp-groups/02-find-webcolor-3-or-6/task.md index 4efd6f61f..09108484a 100644 --- a/9-regular-expressions/09-regexp-groups/1-find-webcolor-3-or-6/task.md +++ b/9-regular-expressions/11-regexp-groups/02-find-webcolor-3-or-6/task.md @@ -4,11 +4,11 @@ Write a RegExp that matches colors in the format `#abc` or `#abcdef`. That is: ` Usage example: ```js -let reg = /your regexp/g; +let regexp = /your regexp/g; let str = "color: #3f3; background-color: #AA00ef; and: #abcd"; -alert( str.match(reg) ); // #3f3 #AA00ef +alert( str.match(regexp) ); // #3f3 #AA00ef ``` -P.S. This should be exactly 3 or 6 hex digits: values like `#abcd` should not match. +P.S. This should be exactly 3 or 6 hex digits. Values with 4 digits, such as `#abcd`, should not match. diff --git a/9-regular-expressions/11-regexp-groups/03-find-decimal-numbers/solution.md b/9-regular-expressions/11-regexp-groups/03-find-decimal-numbers/solution.md new file mode 100644 index 000000000..813d619ef --- /dev/null +++ b/9-regular-expressions/11-regexp-groups/03-find-decimal-numbers/solution.md @@ -0,0 +1,11 @@ +A positive number with an optional decimal part is: `pattern:\d+(\.\d+)?`. + +Let's add the optional `pattern:-` in the beginning: + +```js run +let regexp = /-?\d+(\.\d+)?/g; + +let str = "-1.5 0 2 -123.4."; + +alert( str.match(regexp) ); // -1.5, 0, 2, -123.4 +``` diff --git a/9-regular-expressions/09-regexp-groups/4-find-decimal-numbers/task.md b/9-regular-expressions/11-regexp-groups/03-find-decimal-numbers/task.md similarity index 71% rename from 9-regular-expressions/09-regexp-groups/4-find-decimal-numbers/task.md rename to 9-regular-expressions/11-regexp-groups/03-find-decimal-numbers/task.md index 121a18a41..4f5a73fff 100644 --- a/9-regular-expressions/09-regexp-groups/4-find-decimal-numbers/task.md +++ b/9-regular-expressions/11-regexp-groups/03-find-decimal-numbers/task.md @@ -5,9 +5,9 @@ Write a regexp that looks for all decimal numbers including integer ones, with t An example of use: ```js -let reg = /your regexp/g; +let regexp = /your regexp/g; let str = "-1.5 0 2 -123.4."; -alert( str.match(re) ); // -1.5, 0, 2, -123.4 +alert( str.match(regexp) ); // -1.5, 0, 2, -123.4 ``` diff --git a/9-regular-expressions/11-regexp-groups/04-parse-expression/solution.md b/9-regular-expressions/11-regexp-groups/04-parse-expression/solution.md new file mode 100644 index 000000000..b23813395 --- /dev/null +++ b/9-regular-expressions/11-regexp-groups/04-parse-expression/solution.md @@ -0,0 +1,70 @@ +A regexp for a number is: `pattern:-?\d+(\.\d+)?`. We created it in the previous task. + +An operator is `pattern:[-+*/]`. The hyphen `pattern:-` goes first in the square brackets, because in the middle it would mean a character range, while we just want a character `-`. + +The slash `/` should be escaped inside a JavaScript regexp `pattern:/.../`, we'll do that later. + +We need a number, an operator, and then another number. And optional spaces between them. + +The full regular expression: `pattern:-?\d+(\.\d+)?\s*[-+*/]\s*-?\d+(\.\d+)?`. + +It has 3 parts, with `pattern:\s*` between them: +1. `pattern:-?\d+(\.\d+)?` - the first number, +2. `pattern:[-+*/]` - the operator, +3. `pattern:-?\d+(\.\d+)?` - the second number. + +To make each of these parts a separate element of the result array, let's enclose them in parentheses: `pattern:(-?\d+(\.\d+)?)\s*([-+*/])\s*(-?\d+(\.\d+)?)`. + +In action: + +```js run +let regexp = /(-?\d+(\.\d+)?)\s*([-+*\/])\s*(-?\d+(\.\d+)?)/; + +alert( "1.2 + 12".match(regexp) ); +``` + +The result includes: + +- `result[0] == "1.2 + 12"` (full match) +- `result[1] == "1.2"` (first group `(-?\d+(\.\d+)?)` -- the first number, including the decimal part) +- `result[2] == ".2"` (second group`(\.\d+)?` -- the first decimal part) +- `result[3] == "+"` (third group `([-+*\/])` -- the operator) +- `result[4] == "12"` (forth group `(-?\d+(\.\d+)?)` -- the second number) +- `result[5] == undefined` (fifth group `(\.\d+)?` -- the last decimal part is absent, so it's undefined) + +We only want the numbers and the operator, without the full match or the decimal parts, so let's "clean" the result a bit. + +The full match (the arrays first item) can be removed by shifting the array `result.shift()`. + +Groups that contain decimal parts (number 2 and 4) `pattern:(.\d+)` can be excluded by adding `pattern:?:` to the beginning: `pattern:(?:\.\d+)?`. + +The final solution: + +```js run +function parse(expr) { + let regexp = /(-?\d+(?:\.\d+)?)\s*([-+*\/])\s*(-?\d+(?:\.\d+)?)/; + + let result = expr.match(regexp); + + if (!result) return []; + result.shift(); + + return result; +} + +alert( parse("-1.23 * 3.45") ); // -1.23, *, 3.45 +``` + +As an alternative to using the non-capturing `?:`, we could name the groups, like this: + +```js run +function parse(expr) { + let regexp = /(?<a>-?\d+(?:\.\d+)?)\s*(?<operator>[-+*\/])\s*(?<b>-?\d+(?:\.\d+)?)/; + + let result = expr.match(regexp); + + return [result.groups.a, result.groups.operator, result.groups.b]; +} + +alert( parse("-1.23 * 3.45") ); // -1.23, *, 3.45; +``` \ No newline at end of file diff --git a/9-regular-expressions/09-regexp-groups/5-parse-expression/task.md b/9-regular-expressions/11-regexp-groups/04-parse-expression/task.md similarity index 100% rename from 9-regular-expressions/09-regexp-groups/5-parse-expression/task.md rename to 9-regular-expressions/11-regexp-groups/04-parse-expression/task.md diff --git a/9-regular-expressions/11-regexp-groups/article.md b/9-regular-expressions/11-regexp-groups/article.md new file mode 100644 index 000000000..8fec60ccc --- /dev/null +++ b/9-regular-expressions/11-regexp-groups/article.md @@ -0,0 +1,364 @@ +# Capturing groups + +A part of a pattern can be enclosed in parentheses `pattern:(...)`. This is called a "capturing group". + +That has two effects: + +1. It allows to get a part of the match as a separate item in the result array. +2. If we put a quantifier after the parentheses, it applies to the parentheses as a whole. + +## Examples + +Let's see how parentheses work in examples. + +### Example: gogogo + +Without parentheses, the pattern `pattern:go+` means `subject:g` character, followed by `subject:o` repeated one or more times. For instance, `match:goooo` or `match:gooooooooo`. + +Parentheses group characters together, so `pattern:(go)+` means `match:go`, `match:gogo`, `match:gogogo` and so on. + +```js run +alert( 'Gogogo now!'.match(/(go)+/ig) ); // "Gogogo" +``` + +### Example: domain + +Let's make something more complex -- a regular expression to search for a website domain. + +For example: + +``` +mail.com +users.mail.com +smith.users.mail.com +``` + +As we can see, a domain consists of repeated words, a dot after each one except the last one. + +In regular expressions that's `pattern:(\w+\.)+\w+`: + +```js run +let regexp = /(\w+\.)+\w+/g; + +alert( "site.com my.site.com".match(regexp) ); // site.com,my.site.com +``` + +The search works, but the pattern can't match a domain with a hyphen, e.g. `my-site.com`, because the hyphen does not belong to class `pattern:\w`. + +We can fix it by replacing `pattern:\w` with `pattern:[\w-]` in every word except the last one: `pattern:([\w-]+\.)+\w+`. + +### Example: email + +The previous example can be extended. We can create a regular expression for emails based on it. + +The email format is: `name@domain`. Any word can be the name, hyphens and dots are allowed. In regular expressions that's `pattern:[-.\w]+`. + +The pattern: + +```js run +let regexp = /[-.\w]+@([\w-]+\.)+[\w-]+/g; + +alert("my@mail.com @ his@site.com.uk".match(regexp)); // my@mail.com, his@site.com.uk +``` + +That regexp is not perfect, but mostly works and helps to fix accidental mistypes. The only truly reliable check for an email can only be done by sending a letter. + +## Parentheses contents in the match + +Parentheses are numbered from left to right. The search engine memorizes the content matched by each of them and allows to get it in the result. + +The method `str.match(regexp)`, if `regexp` has no flag `g`, looks for the first match and returns it as an array: + +1. At index `0`: the full match. +2. At index `1`: the contents of the first parentheses. +3. At index `2`: the contents of the second parentheses. +4. ...and so on... + +For instance, we'd like to find HTML tags `pattern:<.*?>`, and process them. It would be convenient to have tag content (what's inside the angles), in a separate variable. + +Let's wrap the inner content into parentheses, like this: `pattern:<(.*?)>`. + +Now we'll get both the tag as a whole `match:<h1>` and its contents `match:h1` in the resulting array: + +```js run +let str = '<h1>Hello, world!</h1>'; + +let tag = str.match(/<(.*?)>/); + +alert( tag[0] ); // <h1> +alert( tag[1] ); // h1 +``` + +### Nested groups + +Parentheses can be nested. In this case the numbering also goes from left to right. + +For instance, when searching a tag in `subject:<span class="my">` we may be interested in: + +1. The tag content as a whole: `match:span class="my"`. +2. The tag name: `match:span`. +3. The tag attributes: `match:class="my"`. + +Let's add parentheses for them: `pattern:<(([a-z]+)\s*([^>]*))>`. + +Here's how they are numbered (left to right, by the opening paren): + + + +In action: + +```js run +let str = '<span class="my">'; + +let regexp = /<(([a-z]+)\s*([^>]*))>/; + +let result = str.match(regexp); +alert(result[0]); // <span class="my"> +alert(result[1]); // span class="my" +alert(result[2]); // span +alert(result[3]); // class="my" +``` + +The zero index of `result` always holds the full match. + +Then groups, numbered from left to right by an opening paren. The first group is returned as `result[1]`. Here it encloses the whole tag content. + +Then in `result[2]` goes the group from the second opening paren `pattern:([a-z]+)` - tag name, then in `result[3]` the tag: `pattern:([^>]*)`. + +The contents of every group in the string: + + + +### Optional groups + +Even if a group is optional and doesn't exist in the match (e.g. has the quantifier `pattern:(...)?`), the corresponding `result` array item is present and equals `undefined`. + +For instance, let's consider the regexp `pattern:a(z)?(c)?`. It looks for `"a"` optionally followed by `"z"` optionally followed by `"c"`. + +If we run it on the string with a single letter `subject:a`, then the result is: + +```js run +let match = 'a'.match(/a(z)?(c)?/); + +alert( match.length ); // 3 +alert( match[0] ); // a (whole match) +alert( match[1] ); // undefined +alert( match[2] ); // undefined +``` + +The array has the length of `3`, but all groups are empty. + +And here's a more complex match for the string `subject:ac`: + +```js run +let match = 'ac'.match(/a(z)?(c)?/) + +alert( match.length ); // 3 +alert( match[0] ); // ac (whole match) +alert( match[1] ); // undefined, because there's nothing for (z)? +alert( match[2] ); // c +``` + +The array length is permanent: `3`. But there's nothing for the group `pattern:(z)?`, so the result is `["ac", undefined, "c"]`. + +## Searching for all matches with groups: matchAll + +```warn header="`matchAll` is a new method, polyfill may be needed" +The method `matchAll` is not supported in old browsers. + +A polyfill may be required, such as <https://github.com/ljharb/String.prototype.matchAll>. +``` + +When we search for all matches (flag `pattern:g`), the `match` method does not return contents for groups. + +For example, let's find all tags in a string: + +```js run +let str = '<h1> <h2>'; + +let tags = str.match(/<(.*?)>/g); + +alert( tags ); // <h1>,<h2> +``` + +The result is an array of matches, but without details about each of them. But in practice we usually need contents of capturing groups in the result. + +To get them, we should search using the method `str.matchAll(regexp)`. + +It was added to JavaScript language long after `match`, as its "new and improved version". + +Just like `match`, it looks for matches, but there are 3 differences: + +1. It returns not an array, but an iterable object. +2. When the flag `pattern:g` is present, it returns every match as an array with groups. +3. If there are no matches, it returns not `null`, but an empty iterable object. + +For instance: + +```js run +let results = '<h1> <h2>'.matchAll(/<(.*?)>/gi); + +// results - is not an array, but an iterable object +alert(results); // [object RegExp String Iterator] + +alert(results[0]); // undefined (*) + +results = Array.from(results); // let's turn it into array + +alert(results[0]); // <h1>,h1 (1st tag) +alert(results[1]); // <h2>,h2 (2nd tag) +``` + +As we can see, the first difference is very important, as demonstrated in the line `(*)`. We can't get the match as `results[0]`, because that object is a pseudoarray. We can turn it into a real `Array` using `Array.from`. There are more details about pseudoarrays and iterables in the article <info:iterable>. + +There's no need for `Array.from` if we're looping over results: + +```js run +let results = '<h1> <h2>'.matchAll(/<(.*?)>/gi); + +for(let result of results) { + alert(result); + // first alert: <h1>,h1 + // second: <h2>,h2 +} +``` + +...Or using destructuring: + +```js +let [tag1, tag2] = '<h1> <h2>'.matchAll(/<(.*?)>/gi); +``` + +Every match, returned by `matchAll`, has the same format as returned by `match` without flag `pattern:g`: it's an array with additional properties `index` (match index in the string) and `input` (source string): + +```js run +let results = '<h1> <h2>'.matchAll(/<(.*?)>/gi); + +let [tag1, tag2] = results; + +alert( tag1[0] ); // <h1> +alert( tag1[1] ); // h1 +alert( tag1.index ); // 0 +alert( tag1.input ); // <h1> <h2> +``` + +```smart header="Why is a result of `matchAll` an iterable object, not an array?" +Why is the method designed like that? The reason is simple - for the optimization. + +The call to `matchAll` does not perform the search. Instead, it returns an iterable object, without the results initially. The search is performed each time we iterate over it, e.g. in the loop. + +So, there will be found as many results as needed, not more. + +E.g. there are potentially 100 matches in the text, but in a `for..of` loop we found 5 of them, then decided it's enough and made a `break`. Then the engine won't spend time finding other 95 matches. +``` + +## Named groups + +Remembering groups by their numbers is hard. For simple patterns it's doable, but for more complex ones counting parentheses is inconvenient. We have a much better option: give names to parentheses. + +That's done by putting `pattern:?<name>` immediately after the opening paren. + +For example, let's look for a date in the format "year-month-day": + +```js run +*!* +let dateRegexp = /(?<year>[0-9]{4})-(?<month>[0-9]{2})-(?<day>[0-9]{2})/; +*/!* +let str = "2019-04-30"; + +let groups = str.match(dateRegexp).groups; + +alert(groups.year); // 2019 +alert(groups.month); // 04 +alert(groups.day); // 30 +``` + +As you can see, the groups reside in the `.groups` property of the match. + +To look for all dates, we can add flag `pattern:g`. + +We'll also need `matchAll` to obtain full matches, together with groups: + +```js run +let dateRegexp = /(?<year>[0-9]{4})-(?<month>[0-9]{2})-(?<day>[0-9]{2})/g; + +let str = "2019-10-30 2020-01-01"; + +let results = str.matchAll(dateRegexp); + +for(let result of results) { + let {year, month, day} = result.groups; + + alert(`${day}.${month}.${year}`); + // first alert: 30.10.2019 + // second: 01.01.2020 +} +``` + +## Capturing groups in replacement + +Method `str.replace(regexp, replacement)` that replaces all matches with `regexp` in `str` allows to use parentheses contents in the `replacement` string. That's done using `pattern:$n`, where `pattern:n` is the group number. + +For example, + +```js run +let str = "John Bull"; +let regexp = /(\w+) (\w+)/; + +alert( str.replace(regexp, '$2, $1') ); // Bull, John +``` + +For named parentheses the reference will be `pattern:$<name>`. + +For example, let's reformat dates from "year-month-day" to "day.month.year": + +```js run +let regexp = /(?<year>[0-9]{4})-(?<month>[0-9]{2})-(?<day>[0-9]{2})/g; + +let str = "2019-10-30, 2020-01-01"; + +alert( str.replace(regexp, '$<day>.$<month>.$<year>') ); +// 30.10.2019, 01.01.2020 +``` + +## Non-capturing groups with ?: + +Sometimes we need parentheses to correctly apply a quantifier, but we don't want their contents in results. + +A group may be excluded by adding `pattern:?:` in the beginning. + +For instance, if we want to find `pattern:(go)+`, but don't want the parentheses contents (`go`) as a separate array item, we can write: `pattern:(?:go)+`. + +In the example below we only get the name `match:John` as a separate member of the match: + +```js run +let str = "Gogogo John!"; + +*!* +// ?: excludes 'go' from capturing +let regexp = /(?:go)+ (\w+)/i; +*/!* + +let result = str.match(regexp); + +alert( result[0] ); // Gogogo John (full match) +alert( result[1] ); // John +alert( result.length ); // 2 (no more items in the array) +``` + +## Summary + +Parentheses group together a part of the regular expression, so that the quantifier applies to it as a whole. + +Parentheses groups are numbered left-to-right, and can optionally be named with `(?<name>...)`. + +The content, matched by a group, can be obtained in the results: + +- The method `str.match` returns capturing groups only without flag `pattern:g`. +- The method `str.matchAll` always returns capturing groups. + +If the parentheses have no name, then their contents is available in the match array by its number. Named parentheses are also available in the property `groups`. + +We can also use parentheses contents in the replacement string in `str.replace`: by the number `$n` or the name `$<name>`. + +A group may be excluded from numbering by adding `pattern:?:` in its start. That's used when we need to apply a quantifier to the whole group, but don't want it as a separate item in the results array. We also can't reference such parentheses in the replacement string. diff --git a/9-regular-expressions/11-regexp-groups/regexp-nested-groups-matches.svg b/9-regular-expressions/11-regexp-groups/regexp-nested-groups-matches.svg new file mode 100644 index 000000000..ce61ff3a7 --- /dev/null +++ b/9-regular-expressions/11-regexp-groups/regexp-nested-groups-matches.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" width="320" height="130" viewBox="0 0 320 130"><defs><style>@import url(https://fonts.googleapis.com/css?family=Open+Sans:bold,italic,bolditalic%7CPT+Mono);@font-face{font-family:'PT Mono';font-weight:700;font-style:normal;src:local('PT MonoBold'),url(/font/PTMonoBold.woff2) format('woff2'),url(/font/PTMonoBold.woff) format('woff'),url(/font/PTMonoBold.ttf) format('truetype')}</style></defs><g id="regexp" fill="none" fill-rule="evenodd" stroke="none" stroke-width="1"><g id="regexp-nested-groups.svg"><text id="<(([a-z]+)\s*([^>]*)" font-family="PTMono-Regular, PT Mono" font-size="22" font-weight="normal"><tspan x="20" y="75" fill="#8A704D"><</tspan> <tspan x="33.2" y="75" fill="#DB2023">((</tspan> <tspan x="59.6" y="75" fill="#8A704D">[a-z]+</tspan> <tspan x="138.8" y="75" fill="#DB2023">)</tspan> <tspan x="152" y="75" fill="#8A704D">\s*</tspan> <tspan x="191.6" y="75" fill="#DB2023">(</tspan> <tspan x="204.8" y="75" fill="#8A704D">[^>]*</tspan> <tspan x="270.8" y="75" fill="#D0021B">))</tspan> <tspan x="297.2" y="75" fill="#8A704D">></tspan></text><path id="Line" stroke="#D0021B" stroke-linecap="square" d="M42.5 45.646V29.354"/><path id="Line-2" stroke="#D0021B" stroke-linecap="square" d="M290.5 45.646V29.354"/><path id="Line" stroke="#D0021B" stroke-linecap="square" d="M42.5 28.5h248"/><path id="Line-5" stroke="#D0021B" stroke-linecap="square" d="M52.5 101.646V85.354"/><path id="Line-4" stroke="#D0021B" stroke-linecap="square" d="M145.5 101.646V85.354"/><path id="Line-3" stroke="#D0021B" stroke-linecap="square" d="M52.5 102.5h93"/><text id="1" fill="#D0021B" font-family="PTMono-Regular, PT Mono" font-size="20" font-weight="normal"><tspan x="24" y="44">1</tspan></text><text id="span-class="my"" fill="#417505" font-family="PTMono-Regular, PT Mono" font-size="20" font-weight="normal"><tspan x="82" y="23">span class="my"</tspan></text><text id="2" fill="#D0021B" font-family="PTMono-Regular, PT Mono" font-size="20" font-weight="normal"><tspan x="35" y="101">2</tspan></text><text id="span" fill="#417505" font-family="PTMono-Regular, PT Mono" font-size="20" font-weight="normal"><tspan x="73" y="119">span</tspan></text><path id="Line-8" stroke="#D0021B" stroke-linecap="square" d="M197.5 101.646V85.354"/><path id="Line-7" stroke="#D0021B" stroke-linecap="square" d="M277.5 101.646V85.354"/><path id="Line-6" stroke="#D0021B" stroke-linecap="square" d="M197.5 102.5h80"/><text id="3" fill="#D0021B" font-family="PTMono-Regular, PT Mono" font-size="20" font-weight="normal"><tspan x="182" y="101">3</tspan></text><text id="class="my"" fill="#417505" font-family="PTMono-Regular, PT Mono" font-size="20" font-weight="normal"><tspan x="185" y="121">class="my"</tspan></text></g></g></svg> \ No newline at end of file diff --git a/9-regular-expressions/11-regexp-groups/regexp-nested-groups-pattern.svg b/9-regular-expressions/11-regexp-groups/regexp-nested-groups-pattern.svg new file mode 100644 index 000000000..ce61ff3a7 --- /dev/null +++ b/9-regular-expressions/11-regexp-groups/regexp-nested-groups-pattern.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" width="320" height="130" viewBox="0 0 320 130"><defs><style>@import url(https://fonts.googleapis.com/css?family=Open+Sans:bold,italic,bolditalic%7CPT+Mono);@font-face{font-family:'PT Mono';font-weight:700;font-style:normal;src:local('PT MonoBold'),url(/font/PTMonoBold.woff2) format('woff2'),url(/font/PTMonoBold.woff) format('woff'),url(/font/PTMonoBold.ttf) format('truetype')}</style></defs><g id="regexp" fill="none" fill-rule="evenodd" stroke="none" stroke-width="1"><g id="regexp-nested-groups.svg"><text id="<(([a-z]+)\s*([^>]*)" font-family="PTMono-Regular, PT Mono" font-size="22" font-weight="normal"><tspan x="20" y="75" fill="#8A704D"><</tspan> <tspan x="33.2" y="75" fill="#DB2023">((</tspan> <tspan x="59.6" y="75" fill="#8A704D">[a-z]+</tspan> <tspan x="138.8" y="75" fill="#DB2023">)</tspan> <tspan x="152" y="75" fill="#8A704D">\s*</tspan> <tspan x="191.6" y="75" fill="#DB2023">(</tspan> <tspan x="204.8" y="75" fill="#8A704D">[^>]*</tspan> <tspan x="270.8" y="75" fill="#D0021B">))</tspan> <tspan x="297.2" y="75" fill="#8A704D">></tspan></text><path id="Line" stroke="#D0021B" stroke-linecap="square" d="M42.5 45.646V29.354"/><path id="Line-2" stroke="#D0021B" stroke-linecap="square" d="M290.5 45.646V29.354"/><path id="Line" stroke="#D0021B" stroke-linecap="square" d="M42.5 28.5h248"/><path id="Line-5" stroke="#D0021B" stroke-linecap="square" d="M52.5 101.646V85.354"/><path id="Line-4" stroke="#D0021B" stroke-linecap="square" d="M145.5 101.646V85.354"/><path id="Line-3" stroke="#D0021B" stroke-linecap="square" d="M52.5 102.5h93"/><text id="1" fill="#D0021B" font-family="PTMono-Regular, PT Mono" font-size="20" font-weight="normal"><tspan x="24" y="44">1</tspan></text><text id="span-class="my"" fill="#417505" font-family="PTMono-Regular, PT Mono" font-size="20" font-weight="normal"><tspan x="82" y="23">span class="my"</tspan></text><text id="2" fill="#D0021B" font-family="PTMono-Regular, PT Mono" font-size="20" font-weight="normal"><tspan x="35" y="101">2</tspan></text><text id="span" fill="#417505" font-family="PTMono-Regular, PT Mono" font-size="20" font-weight="normal"><tspan x="73" y="119">span</tspan></text><path id="Line-8" stroke="#D0021B" stroke-linecap="square" d="M197.5 101.646V85.354"/><path id="Line-7" stroke="#D0021B" stroke-linecap="square" d="M277.5 101.646V85.354"/><path id="Line-6" stroke="#D0021B" stroke-linecap="square" d="M197.5 102.5h80"/><text id="3" fill="#D0021B" font-family="PTMono-Regular, PT Mono" font-size="20" font-weight="normal"><tspan x="182" y="101">3</tspan></text><text id="class="my"" fill="#417505" font-family="PTMono-Regular, PT Mono" font-size="20" font-weight="normal"><tspan x="185" y="121">class="my"</tspan></text></g></g></svg> \ No newline at end of file diff --git a/9-regular-expressions/12-regexp-anchors/2-test-mac/solution.md b/9-regular-expressions/12-regexp-anchors/2-test-mac/solution.md deleted file mode 100644 index 422bc65e4..000000000 --- a/9-regular-expressions/12-regexp-anchors/2-test-mac/solution.md +++ /dev/null @@ -1,21 +0,0 @@ -A two-digit hex number is `pattern:[0-9a-f]{2}` (assuming the `pattern:i` flag is enabled). - -We need that number `NN`, and then `:NN` repeated 5 times (more numbers); - -The regexp is: `pattern:[0-9a-f]{2}(:[0-9a-f]{2}){5}` - -Now let's show that the match should capture all the text: start at the beginning and end at the end. That's done by wrapping the pattern in `pattern:^...$`. - -Finally: - -```js run -let reg = /^[0-9a-fA-F]{2}(:[0-9a-fA-F]{2}){5}$/i; - -alert( reg.test('01:32:54:67:89:AB') ); // true - -alert( reg.test('0132546789AB') ); // false (no colons) - -alert( reg.test('01:32:54:67:89') ); // false (5 numbers, need 6) - -alert( reg.test('01:32:54:67:89:ZZ') ) // false (ZZ in the end) -``` diff --git a/9-regular-expressions/12-regexp-anchors/article.md b/9-regular-expressions/12-regexp-anchors/article.md deleted file mode 100644 index 0c2dd578a..000000000 --- a/9-regular-expressions/12-regexp-anchors/article.md +++ /dev/null @@ -1,55 +0,0 @@ -# String start ^ and finish $ - -The caret `pattern:'^'` and dollar `pattern:'$'` characters have special meaning in a regexp. They are called "anchors". - -The caret `pattern:^` matches at the beginning of the text, and the dollar `pattern:$` -- in the end. - -For instance, let's test if the text starts with `Mary`: - -```js run -let str1 = "Mary had a little lamb, it's fleece was white as snow"; -let str2 = 'Everywhere Mary went, the lamp was sure to go'; - -alert( /^Mary/.test(str1) ); // true -alert( /^Mary/.test(str2) ); // false -``` - -The pattern `pattern:^Mary` means: "the string start and then Mary". - -Now let's test whether the text ends with an email. - -To match an email, we can use a regexp `pattern:[-.\w]+@([\w-]+\.)+[\w-]{2,20}`. - -To test whether the string ends with the email, let's add `pattern:$` to the pattern: - -```js run -let reg = /[-.\w]+@([\w-]+\.)+[\w-]{2,20}$/g; - -let str1 = 'My email is mail@site.com'; -let str2 = 'Everywhere Mary went, the lamp was sure to go'; - -alert( reg.test(str1) ); // true -alert( reg.test(str2) ); // false -``` - -We can use both anchors together to check whether the string exactly follows the pattern. That's often used for validation. - -For instance we want to check that `str` is exactly a color in the form `#` plus 6 hex digits. The pattern for the color is `pattern:#[0-9a-f]{6}`. - -To check that the *whole string* exactly matches it, we add `pattern:^...$`: - -```js run -let str = "#abcdef"; - -alert( /^#[0-9a-f]{6}$/i.test(str) ); // true -``` - -The regexp engine looks for the text start, then the color, and then immediately the text end. Just what we need. - -```smart header="Anchors have zero length" -Anchors just like `\b` are tests. They have zero-width. - -In other words, they do not match a character, but rather force the regexp engine to check the condition (text start/end). -``` - -The behavior of anchors changes if there's a flag `pattern:m` (multiline mode). We'll explore it in the next chapter. diff --git a/9-regular-expressions/12-regexp-backreferences/article.md b/9-regular-expressions/12-regexp-backreferences/article.md new file mode 100644 index 000000000..b80fa85cf --- /dev/null +++ b/9-regular-expressions/12-regexp-backreferences/article.md @@ -0,0 +1,72 @@ +# Backreferences in pattern: \N and \k<name> + +We can use the contents of capturing groups `pattern:(...)` not only in the result or in the replacement string, but also in the pattern itself. + +## Backreference by number: \N + +A group can be referenced in the pattern using `pattern:\N`, where `N` is the group number. + +To make clear why that's helpful, let's consider a task. + +We need to find quoted strings: either single-quoted `subject:'...'` or a double-quoted `subject:"..."` -- both variants should match. + +How to find them? + +We can put both kinds of quotes in the square brackets: `pattern:['"](.*?)['"]`, but it would find strings with mixed quotes, like `match:"...'` and `match:'..."`. That would lead to incorrect matches when one quote appears inside other ones, like in the string `subject:"She's the one!"`: + +```js run +let str = `He said: "She's the one!".`; + +let regexp = /['"](.*?)['"]/g; + +// The result is not what we'd like to have +alert( str.match(regexp) ); // "She' +``` + +As we can see, the pattern found an opening quote `match:"`, then the text is consumed till the other quote `match:'`, that closes the match. + +To make sure that the pattern looks for the closing quote exactly the same as the opening one, we can wrap it into a capturing group and backreference it: `pattern:(['"])(.*?)\1`. + +Here's the correct code: + +```js run +let str = `He said: "She's the one!".`; + +*!* +let regexp = /(['"])(.*?)\1/g; +*/!* + +alert( str.match(regexp) ); // "She's the one!" +``` + +Now it works! The regular expression engine finds the first quote `pattern:(['"])` and memorizes its content. That's the first capturing group. + +Further in the pattern `pattern:\1` means "find the same text as in the first group", exactly the same quote in our case. + +Similar to that, `pattern:\2` would mean the contents of the second group, `pattern:\3` - the 3rd group, and so on. + +```smart +If we use `?:` in the group, then we can't reference it. Groups that are excluded from capturing `(?:...)` are not memorized by the engine. +``` + +```warn header="Don't mess up: in the pattern `pattern:\1`, in the replacement: `pattern:$1`" +In the replacement string we use a dollar sign: `pattern:$1`, while in the pattern - a backslash `pattern:\1`. +``` + +## Backreference by name: `\k<name>` + +If a regexp has many parentheses, it's convenient to give them names. + +To reference a named group we can use `pattern:\k<name>`. + +In the example below the group with quotes is named `pattern:?<quote>`, so the backreference is `pattern:\k<quote>`: + +```js run +let str = `He said: "She's the one!".`; + +*!* +let regexp = /(?<quote>['"])(.*?)\k<quote>/g; +*/!* + +alert( str.match(regexp) ); // "She's the one!" +``` diff --git a/9-regular-expressions/11-regexp-alternation/01-find-programming-language/solution.md b/9-regular-expressions/13-regexp-alternation/01-find-programming-language/solution.md similarity index 79% rename from 9-regular-expressions/11-regexp-alternation/01-find-programming-language/solution.md rename to 9-regular-expressions/13-regexp-alternation/01-find-programming-language/solution.md index 3419aa498..e33f9cf2f 100644 --- a/9-regular-expressions/11-regexp-alternation/01-find-programming-language/solution.md +++ b/9-regular-expressions/13-regexp-alternation/01-find-programming-language/solution.md @@ -4,11 +4,11 @@ The first idea can be to list the languages with `|` in-between. But that doesn't work right: ```js run -let reg = /Java|JavaScript|PHP|C|C\+\+/g; +let regexp = /Java|JavaScript|PHP|C|C\+\+/g; let str = "Java, JavaScript, PHP, C, C++"; -alert( str.match(reg) ); // Java,Java,PHP,C,C +alert( str.match(regexp) ); // Java,Java,PHP,C,C ``` The regular expression engine looks for alternations one-by-one. That is: first it checks if we have `match:Java`, otherwise -- looks for `match:JavaScript` and so on. @@ -25,9 +25,9 @@ There are two solutions for that problem: In action: ```js run -let reg = /Java(Script)?|C(\+\+)?|PHP/g; +let regexp = /Java(Script)?|C(\+\+)?|PHP/g; let str = "Java, JavaScript, PHP, C, C++"; -alert( str.match(reg) ); // Java,JavaScript,PHP,C,C++ +alert( str.match(regexp) ); // Java,JavaScript,PHP,C,C++ ``` diff --git a/9-regular-expressions/11-regexp-alternation/01-find-programming-language/task.md b/9-regular-expressions/13-regexp-alternation/01-find-programming-language/task.md similarity index 65% rename from 9-regular-expressions/11-regexp-alternation/01-find-programming-language/task.md rename to 9-regular-expressions/13-regexp-alternation/01-find-programming-language/task.md index 61b9526f7..e0f7af95c 100644 --- a/9-regular-expressions/11-regexp-alternation/01-find-programming-language/task.md +++ b/9-regular-expressions/13-regexp-alternation/01-find-programming-language/task.md @@ -5,7 +5,7 @@ There are many programming languages, for instance Java, JavaScript, PHP, C, C++ Create a regexp that finds them in the string `subject:Java JavaScript PHP C++ C`: ```js -let reg = /your regexp/g; +let regexp = /your regexp/g; -alert("Java JavaScript PHP C++ C".match(reg)); // Java JavaScript PHP C++ C +alert("Java JavaScript PHP C++ C".match(regexp)); // Java JavaScript PHP C++ C ``` diff --git a/9-regular-expressions/13-regexp-alternation/02-find-matching-bbtags/solution.md b/9-regular-expressions/13-regexp-alternation/02-find-matching-bbtags/solution.md new file mode 100644 index 000000000..fb6682b6b --- /dev/null +++ b/9-regular-expressions/13-regexp-alternation/02-find-matching-bbtags/solution.md @@ -0,0 +1,23 @@ + +Opening tag is `pattern:\[(b|url|quote)]`. + +Then to find everything till the closing tag -- let's use the pattern `pattern:.*?` with flag `pattern:s` to match any character including the newline and then add a backreference to the closing tag. + +The full pattern: `pattern:\[(b|url|quote)\].*?\[/\1]`. + +In action: + +```js run +let regexp = /\[(b|url|quote)].*?\[\/\1]/gs; + +let str = ` + [b]hello![/b] + [quote] + [url]http://google.com[/url] + [/quote] +`; + +alert( str.match(regexp) ); // [b]hello![/b],[quote][url]http://google.com[/url][/quote] +``` + +Please note that besides escaping `pattern:[`, we had to escape a slash for the closing tag `pattern:[\/\1]`, because normally the slash closes the pattern. diff --git a/9-regular-expressions/11-regexp-alternation/02-find-matching-bbtags/task.md b/9-regular-expressions/13-regexp-alternation/02-find-matching-bbtags/task.md similarity index 78% rename from 9-regular-expressions/11-regexp-alternation/02-find-matching-bbtags/task.md rename to 9-regular-expressions/13-regexp-alternation/02-find-matching-bbtags/task.md index e0919e034..72d715afd 100644 --- a/9-regular-expressions/11-regexp-alternation/02-find-matching-bbtags/task.md +++ b/9-regular-expressions/13-regexp-alternation/02-find-matching-bbtags/task.md @@ -15,7 +15,7 @@ Normal: [url] [b]http://google.com[/b] [/url] [quote] [b]text[/b] [/quote] -Impossible: +Can't happen: [b][b]text[/b][/b] ``` @@ -32,17 +32,17 @@ Create a regexp to find all BB-tags with their contents. For instance: ```js -let reg = /your regexp/g; +let regexp = /your regexp/flags; let str = "..[url]http://google.com[/url].."; -alert( str.match(reg) ); // [url]http://google.com[/url] +alert( str.match(regexp) ); // [url]http://google.com[/url] ``` If tags are nested, then we need the outer tag (if we want we can continue the search in its content): ```js -let reg = /your regexp/g; +let regexp = /your regexp/flags; let str = "..[url][b]http://google.com[/b][/url].."; -alert( str.match(reg) ); // [url][b]http://google.com[/b][/url] +alert( str.match(regexp) ); // [url][b]http://google.com[/b][/url] ``` diff --git a/9-regular-expressions/11-regexp-alternation/03-match-quoted-string/solution.md b/9-regular-expressions/13-regexp-alternation/03-match-quoted-string/solution.md similarity index 60% rename from 9-regular-expressions/11-regexp-alternation/03-match-quoted-string/solution.md rename to 9-regular-expressions/13-regexp-alternation/03-match-quoted-string/solution.md index 143be870c..2749f3ff0 100644 --- a/9-regular-expressions/11-regexp-alternation/03-match-quoted-string/solution.md +++ b/9-regular-expressions/13-regexp-alternation/03-match-quoted-string/solution.md @@ -3,15 +3,15 @@ The solution: `pattern:/"(\\.|[^"\\])*"/g`. Step by step: - First we look for an opening quote `pattern:"` -- Then if we have a backslash `pattern:\\` (we technically have to double it in the pattern, because it is a special character, so that's a single backslash in fact), then any character is fine after it (a dot). +- Then if we have a backslash `pattern:\\` (we have to double it in the pattern because it is a special character), then any character is fine after it (a dot). - Otherwise we take any character except a quote (that would mean the end of the string) and a backslash (to prevent lonely backslashes, the backslash is only used with some other symbol after it): `pattern:[^"\\]` - ...And so on till the closing quote. In action: ```js run -let reg = /"(\\.|[^"\\])*"/g; +let regexp = /"(\\.|[^"\\])*"/g; let str = ' .. "test me" .. "Say \\"Hello\\"!" .. "\\\\ \\"" .. '; -alert( str.match(reg) ); // "test me","Say \"Hello\"!","\\ \"" +alert( str.match(regexp) ); // "test me","Say \"Hello\"!","\\ \"" ``` diff --git a/9-regular-expressions/13-regexp-alternation/03-match-quoted-string/task.md b/9-regular-expressions/13-regexp-alternation/03-match-quoted-string/task.md new file mode 100644 index 000000000..27b6bc5c8 --- /dev/null +++ b/9-regular-expressions/13-regexp-alternation/03-match-quoted-string/task.md @@ -0,0 +1,32 @@ +# Find quoted strings + +Create a regexp to find strings in double quotes `subject:"..."`. + +The strings should support escaping, the same way as JavaScript strings do. For instance, quotes can be inserted as `subject:\"` a newline as `subject:\n`, and the backslash itself as `subject:\\`. + +```js +let str = "Just like \"here\"."; +``` + +Please note, in particular, that an escaped quote `subject:\"` does not end a string. + +So we should search from one quote to the other ignoring escaped quotes on the way. + +That's the essential part of the task, otherwise it would be trivial. + +Examples of strings to match: +```js +.. *!*"test me"*/!* .. +.. *!*"Say \"Hello\"!"*/!* ... (escaped quotes inside) +.. *!*"\\"*/!* .. (double backslash inside) +.. *!*"\\ \""*/!* .. (double backslash and an escaped quote inside) +``` + +In JavaScript we need to double the backslashes to pass them right into the string, like this: + +```js run +let str = ' .. "test me" .. "Say \\"Hello\\"!" .. "\\\\ \\"" .. '; + +// the in-memory string +alert(str); // .. "test me" .. "Say \"Hello\"!" .. "\\ \"" .. +``` diff --git a/9-regular-expressions/11-regexp-alternation/04-match-exact-tag/solution.md b/9-regular-expressions/13-regexp-alternation/04-match-exact-tag/solution.md similarity index 72% rename from 9-regular-expressions/11-regexp-alternation/04-match-exact-tag/solution.md rename to 9-regular-expressions/13-regexp-alternation/04-match-exact-tag/solution.md index 70c4de91a..5d4ba8d96 100644 --- a/9-regular-expressions/11-regexp-alternation/04-match-exact-tag/solution.md +++ b/9-regular-expressions/13-regexp-alternation/04-match-exact-tag/solution.md @@ -10,7 +10,7 @@ In the regexp language: `pattern:<style(>|\s.*?>)`. In action: ```js run -let reg = /<style(>|\s.*?>)/g; +let regexp = /<style(>|\s.*?>)/g; -alert( '<style> <styler> <style test="...">'.match(reg) ); // <style>, <style test="..."> +alert( '<style> <styler> <style test="...">'.match(regexp) ); // <style>, <style test="..."> ``` diff --git a/9-regular-expressions/11-regexp-alternation/04-match-exact-tag/task.md b/9-regular-expressions/13-regexp-alternation/04-match-exact-tag/task.md similarity index 68% rename from 9-regular-expressions/11-regexp-alternation/04-match-exact-tag/task.md rename to 9-regular-expressions/13-regexp-alternation/04-match-exact-tag/task.md index 85976a9e7..e8a9e31b4 100644 --- a/9-regular-expressions/11-regexp-alternation/04-match-exact-tag/task.md +++ b/9-regular-expressions/13-regexp-alternation/04-match-exact-tag/task.md @@ -7,7 +7,7 @@ Write a regexp to find the tag `<style...>`. It should match the full tag: it ma For instance: ```js -let reg = /your regexp/g; +let regexp = /your regexp/g; -alert( '<style> <styler> <style test="...">'.match(reg) ); // <style>, <style test="..."> +alert( '<style> <styler> <style test="...">'.match(regexp) ); // <style>, <style test="..."> ``` diff --git a/9-regular-expressions/13-regexp-alternation/article.md b/9-regular-expressions/13-regexp-alternation/article.md new file mode 100644 index 000000000..0fe2175c7 --- /dev/null +++ b/9-regular-expressions/13-regexp-alternation/article.md @@ -0,0 +1,70 @@ +# Alternation (OR) | + +Alternation is the term in regular expression that is actually a simple "OR". + +In a regular expression it is denoted with a vertical line character `pattern:|`. + +For instance, we need to find programming languages: HTML, PHP, Java or JavaScript. + +The corresponding regexp: `pattern:html|php|java(script)?`. + +A usage example: + +```js run +let regexp = /html|php|css|java(script)?/gi; + +let str = "First HTML appeared, then CSS, then JavaScript"; + +alert( str.match(regexp) ); // 'HTML', 'CSS', 'JavaScript' +``` + +We already saw a similar thing -- square brackets. They allow to choose between multiple characters, for instance `pattern:gr[ae]y` matches `match:gray` or `match:grey`. + +Square brackets allow only characters or character classes. Alternation allows any expressions. A regexp `pattern:A|B|C` means one of expressions `A`, `B` or `C`. + +For instance: + +- `pattern:gr(a|e)y` means exactly the same as `pattern:gr[ae]y`. +- `pattern:gra|ey` means `match:gra` or `match:ey`. + +To apply alternation to a chosen part of the pattern, we can enclose it in parentheses: +- `pattern:I love HTML|CSS` matches `match:I love HTML` or `match:CSS`. +- `pattern:I love (HTML|CSS)` matches `match:I love HTML` or `match:I love CSS`. + +## Example: regexp for time + +In previous articles there was a task to build a regexp for searching time in the form `hh:mm`, for instance `12:00`. But a simple `pattern:\d\d:\d\d` is too vague. It accepts `25:99` as the time (as 99 minutes match the pattern, but that time is invalid). + +How can we make a better pattern? + +We can use more careful matching. First, the hours: + +- If the first digit is `0` or `1`, then the next digit can be any: `pattern:[01]\d`. +- Otherwise, if the first digit is `2`, then the next must be `pattern:[0-3]`. +- (no other first digit is allowed) + +We can write both variants in a regexp using alternation: `pattern:[01]\d|2[0-3]`. + +Next, minutes must be from `00` to `59`. In the regular expression language that can be written as `pattern:[0-5]\d`: the first digit `0-5`, and then any digit. + +If we glue hours and minutes together, we get the pattern: `pattern:[01]\d|2[0-3]:[0-5]\d`. + +We're almost done, but there's a problem. The alternation `pattern:|` now happens to be between `pattern:[01]\d` and `pattern:2[0-3]:[0-5]\d`. + +That is: minutes are added to the second alternation variant, here's a clear picture: + +``` +[01]\d | 2[0-3]:[0-5]\d +``` + +That pattern looks for `pattern:[01]\d` or `pattern:2[0-3]:[0-5]\d`. + +But that's wrong, the alternation should only be used in the "hours" part of the regular expression, to allow `pattern:[01]\d` OR `pattern:2[0-3]`. Let's correct that by enclosing "hours" into parentheses: `pattern:([01]\d|2[0-3]):[0-5]\d`. + +The final solution: + +```js run +let regexp = /([01]\d|2[0-3]):[0-5]\d/g; + +alert("00:00 10:10 23:59 25:99 1:2".match(regexp)); // 00:00,10:10,23:59 +``` diff --git a/9-regular-expressions/13-regexp-multiline-mode/article.md b/9-regular-expressions/13-regexp-multiline-mode/article.md deleted file mode 100644 index 1b5623dc8..000000000 --- a/9-regular-expressions/13-regexp-multiline-mode/article.md +++ /dev/null @@ -1,76 +0,0 @@ -# Multiline mode, flag "m" - -The multiline mode is enabled by the flag `pattern:/.../m`. - -It only affects the behavior of `pattern:^` and `pattern:$`. - -In the multiline mode they match not only at the beginning and end of the string, but also at start/end of line. - -## Line start ^ - -In the example below the text has multiple lines. The pattern `pattern:/^\d+/gm` takes a number from the beginning of each one: - -```js run -let str = `1st place: Winnie -2nd place: Piglet -33rd place: Eeyore`; - -*!* -alert( str.match(/^\d+/gm) ); // 1, 2, 33 -*/!* -``` - -Without the flag `pattern:/.../m` only the first number is matched: - - -```js run -let str = `1st place: Winnie -2nd place: Piglet -33rd place: Eeyore`; - -*!* -alert( str.match(/^\d+/g) ); // 1 -*/!* -``` - -That's because by default a caret `pattern:^` only matches at the beginning of the text, and in the multiline mode -- at the start of a line. - -The regular expression engine moves along the text and looks for a string start `pattern:^`, when finds -- continues to match the rest of the pattern `pattern:\d+`. - -## Line end $ - -The dollar sign `pattern:$` behaves similarly. - -The regular expression `pattern:\w+$` finds the last word in every line - -```js run -let str = `1st place: Winnie -2nd place: Piglet -33rd place: Eeyore`; - -alert( str.match(/\w+$/gim) ); // Winnie,Piglet,Eeyore -``` - -Without the `pattern:/.../m` flag the dollar `pattern:$` would only match the end of the whole string, so only the very last word would be found. - -## Anchors ^$ versus \n - -To find a newline, we can use not only `pattern:^` and `pattern:$`, but also the newline character `\n`. - -The first difference is that unlike anchors, the character `\n` "consumes" the newline character and adds it to the result. - -For instance, here we use it instead of `pattern:$`: - -```js run -let str = `1st place: Winnie -2nd place: Piglet -33rd place: Eeyore`; - -alert( str.match(/\w+\n/gim) ); // Winnie\n,Piglet\n -``` - -Here every match is a word plus a newline character. - -And one more difference -- the newline `\n` does not match at the string end. That's why `Eeyore` is not found in the example above. - -So, anchors are usually better, they are closer to what we want to get. diff --git a/9-regular-expressions/14-regexp-lookahead-lookbehind/1-find-non-negative-integers/solution.md b/9-regular-expressions/14-regexp-lookahead-lookbehind/1-find-non-negative-integers/solution.md new file mode 100644 index 000000000..ebc12689d --- /dev/null +++ b/9-regular-expressions/14-regexp-lookahead-lookbehind/1-find-non-negative-integers/solution.md @@ -0,0 +1,28 @@ + +The regexp for an integer number is `pattern:\d+`. + +We can exclude negatives by prepending it with the negative lookbehind: `pattern:(?<!-)\d+`. + +Although, if we try it now, we may notice one more "extra" result: + +```js run +let regexp = /(?<!-)\d+/g; + +let str = "0 12 -5 123 -18"; + +console.log( str.match(regexp) ); // 0, 12, 123, *!*8*/!* +``` + +As you can see, it matches `match:8`, from `subject:-18`. To exclude it, we need to ensure that the regexp starts matching a number not from the middle of another (non-matching) number. + +We can do it by specifying another negative lookbehind: `pattern:(?<!-)(?<!\d)\d+`. Now `pattern:(?<!\d)` ensures that a match does not start after another digit, just what we need. + +We can also join them into a single lookbehind here: + +```js run +let regexp = /(?<![-\d])\d+/g; + +let str = "0 12 -5 123 -18"; + +alert( str.match(regexp) ); // 0, 12, 123 +``` diff --git a/9-regular-expressions/14-regexp-lookahead-lookbehind/1-find-non-negative-integers/task.md b/9-regular-expressions/14-regexp-lookahead-lookbehind/1-find-non-negative-integers/task.md new file mode 100644 index 000000000..cd58f9923 --- /dev/null +++ b/9-regular-expressions/14-regexp-lookahead-lookbehind/1-find-non-negative-integers/task.md @@ -0,0 +1,14 @@ +# Find non-negative integers + +There's a string of integer numbers. + +Create a regexp that looks for only non-negative ones (zero is allowed). + +An example of use: +```js +let regexp = /your regexp/g; + +let str = "0 12 -5 123 -18"; + +alert( str.match(regexp) ); // 0, 12, 123 +``` diff --git a/9-regular-expressions/14-regexp-lookahead-lookbehind/2-insert-after-head/solution.md b/9-regular-expressions/14-regexp-lookahead-lookbehind/2-insert-after-head/solution.md new file mode 100644 index 000000000..68bca8842 --- /dev/null +++ b/9-regular-expressions/14-regexp-lookahead-lookbehind/2-insert-after-head/solution.md @@ -0,0 +1,36 @@ +In order to insert after the `<body>` tag, we must first find it. We can use the regular expression pattern `pattern:<body.*?>` for that. + +In this task, we don't need to modify the `<body>` tag. We only need to add the text after it. + +Here's how we can do it: + +```js run +let str = '...<body style="...">...'; +str = str.replace(/<body.*?>/, '$&<h1>Hello</h1>'); + +alert(str); // ...<body style="..."><h1>Hello</h1>... +``` + +In the replacement string `$&` means the match itself, that is, the part of the source text that corresponds to `pattern:<body.*?>`. It gets replaced by itself plus `<h1>Hello</h1>`. + +An alternative is to use lookbehind: + +```js run +let str = '...<body style="...">...'; +str = str.replace(/(?<=<body.*?>)/, `<h1>Hello</h1>`); + +alert(str); // ...<body style="..."><h1>Hello</h1>... +``` + +As you can see, there's only lookbehind part in this regexp. + +It works like this: +- At every position in the text. +- Check if it's preceded by `pattern:<body.*?>`. +- If it's so, then we have the match. + +The tag `pattern:<body.*?>` won't be returned. The result of this regexp is literally an empty string, but it matches only at positions preceded by `pattern:<body.*?>`. + +So it replaces the "empty line", preceded by `pattern:<body.*?>`, with `<h1>Hello</h1>`. That's the insertion after `<body>`. + +P.S. Regexp flags, such as `pattern:s` and `pattern:i` can also be useful: `pattern:/<body.*?>/si`. The `pattern:s` flag makes the dot `pattern:.` match a newline character, and `pattern:i` flag makes `pattern:<body>` also match `match:<BODY>` case-insensitively. diff --git a/9-regular-expressions/14-regexp-lookahead-lookbehind/2-insert-after-head/task.md b/9-regular-expressions/14-regexp-lookahead-lookbehind/2-insert-after-head/task.md new file mode 100644 index 000000000..5ee42798a --- /dev/null +++ b/9-regular-expressions/14-regexp-lookahead-lookbehind/2-insert-after-head/task.md @@ -0,0 +1,31 @@ +# Insert After Head + +We have a string with an HTML Document. + +Write a regular expression that inserts `<h1>Hello</h1>` immediately after `<body>` tag. The tag may have attributes. + +For instance: + +```js +let regexp = /your regular expression/; + +let str = ` +<html> + <body style="height: 200px"> + ... + </body> +</html> +`; + +str = str.replace(regexp, `<h1>Hello</h1>`); +``` + +After that the value of `str` should be: + +```html +<html> + <body style="height: 200px"><h1>Hello</h1> + ... + </body> +</html> +``` diff --git a/9-regular-expressions/14-regexp-lookahead-lookbehind/article.md b/9-regular-expressions/14-regexp-lookahead-lookbehind/article.md index 376d52d66..cee8215f9 100644 --- a/9-regular-expressions/14-regexp-lookahead-lookbehind/article.md +++ b/9-regular-expressions/14-regexp-lookahead-lookbehind/article.md @@ -1,105 +1,134 @@ # Lookahead and lookbehind -Sometimes we need to match a pattern only if followed by another pattern. For instance, we'd like to get the price from a string like `subject:1 turkey costs 30€`. +Sometimes we need to find only those matches for a pattern that are followed or preceded by another pattern. -We need a number (let's say a price has no decimal point) followed by `subject:€` sign. +There's a special syntax for that, called "lookahead" and "lookbehind", together referred to as "lookaround". -That's what lookahead is for. +For the start, let's find the price from the string like `subject:1 turkey costs 30€`. That is: a number, followed by `subject:€` sign. ## Lookahead -The syntax is: `pattern:x(?=y)`, it means "look for `pattern:x`, but match only if followed by `pattern:y`". +The syntax is: `pattern:X(?=Y)`, it means "look for `pattern:X`, but match only if followed by `pattern:Y`". There may be any pattern instead of `pattern:X` and `pattern:Y`. -For an integer amount followed by `subject:€`, the regexp will be `pattern:\d+(?=€)`: +For an integer number followed by `subject:€`, the regexp will be `pattern:\d+(?=€)`: ```js run let str = "1 turkey costs 30€"; -alert( str.match(/\d+(?=€)/) ); // 30 (correctly skipped the sole number 1) +alert( str.match(/\d+(?=€)/) ); // 30, the number 1 is ignored, as it's not followed by € ``` -Let's say we want a quantity instead, that is a number, NOT followed by `subject:€`. +Please note: the lookahead is merely a test, the contents of the parentheses `pattern:(?=...)` is not included in the result `match:30`. -Here a negative lookahead can be applied. +When we look for `pattern:X(?=Y)`, the regular expression engine finds `pattern:X` and then checks if there's `pattern:Y` immediately after it. If it's not so, then the potential match is skipped, and the search continues. -The syntax is: `pattern:x(?!y)`, it means "search `pattern:x`, but only if not followed by `pattern:y`". +More complex tests are possible, e.g. `pattern:X(?=Y)(?=Z)` means: + +1. Find `pattern:X`. +2. Check if `pattern:Y` is immediately after `pattern:X` (skip if isn't). +3. Check if `pattern:Z` is also immediately after `pattern:X` (skip if isn't). +4. If both tests passed, then the `pattern:X` is a match, otherwise continue searching. + +In other words, such pattern means that we're looking for `pattern:X` followed by `pattern:Y` and `pattern:Z` at the same time. + +That's only possible if patterns `pattern:Y` and `pattern:Z` aren't mutually exclusive. + +For example, `pattern:\d+(?=\s)(?=.*30)` looks for `pattern:\d+` that is followed by a space `pattern:(?=\s)`, and there's `30` somewhere after it `pattern:(?=.*30)`: + +```js run +let str = "1 turkey costs 30€"; + +alert( str.match(/\d+(?=\s)(?=.*30)/) ); // 1 +``` + +In our string that exactly matches the number `1`. + +## Negative lookahead + +Let's say that we want a quantity instead, not a price from the same string. That's a number `pattern:\d+`, NOT followed by `subject:€`. + +For that, a negative lookahead can be applied. + +The syntax is: `pattern:X(?!Y)`, it means "search `pattern:X`, but only if not followed by `pattern:Y`". ```js run let str = "2 turkeys cost 60€"; -alert( str.match(/\d+(?!€)/) ); // 2 (correctly skipped the price) +alert( str.match(/\d+\b(?!€)/g) ); // 2 (the price is not matched) ``` ## Lookbehind -Lookahead allows to add a condition for "what goes after". +```warn header="Lookbehind browser compatibility" +Please Note: Lookbehind is not supported in non-V8 browsers, such as Safari, Internet Explorer. +``` + +Lookahead allows to add a condition for "what follows". -Lookbehind is similar, but it looks behind. That is, it allows to match a pattern only if there's something before. +Lookbehind is similar, but it looks behind. That is, it allows to match a pattern only if there's something before it. The syntax is: -- Positive lookbehind: `pattern:(?<=y)x`, matches `pattern:x`, but only if it follows after `pattern:y`. -- Negative lookbehind: `pattern:(?<!y)x`, matches `pattern:x`, but only if there's no `pattern:y` before. +- Positive lookbehind: `pattern:(?<=Y)X`, matches `pattern:X`, but only if there's `pattern:Y` before it. +- Negative lookbehind: `pattern:(?<!Y)X`, matches `pattern:X`, but only if there's no `pattern:Y` before it. -For example, let's change the price to US dollars. The dollar sign is usually before the number, so to look for `$30` we'll use `pattern:(?<=\$)\d+` -- an amount preceeded by `subject:$`: +For example, let's change the price to US dollars. The dollar sign is usually before the number, so to look for `$30` we'll use `pattern:(?<=\$)\d+` -- an amount preceded by `subject:$`: ```js run let str = "1 turkey costs $30"; +// the dollar sign is escaped \$ alert( str.match(/(?<=\$)\d+/) ); // 30 (skipped the sole number) ``` -And, to find the quantity -- a number, not preceeded by `subject:$`, we can use a negative lookbehind `pattern:(?<!\$)\d+`: +And, if we need the quantity -- a number, not preceded by `subject:$`, then we can use a negative lookbehind `pattern:(?<!\$)\d+`: ```js run let str = "2 turkeys cost $60"; -alert( str.match(/(?<!\$)\d+/) ); // 2 (skipped the price) +alert( str.match(/(?<!\$)\b\d+/g) ); // 2 (the price is not matched) ``` -## Capture groups +## Capturing groups -Generally, what's inside the lookaround (a common name for both lookahead and lookbehind) parentheses does not become a part of the match. +Generally, the contents inside lookaround parentheses does not become a part of the result. -E.g. in the pattern `pattern:\d+(?!€)`, the `pattern:€` sign doesn't get captured as a part of the match. +E.g. in the pattern `pattern:\d+(?=€)`, the `pattern:€` sign doesn't get captured as a part of the match. That's natural: we look for a number `pattern:\d+`, while `pattern:(?=€)` is just a test that it should be followed by `subject:€`. -But if we want to capture the whole lookaround expression or a part of it, that's possible. Just need to wrap that into additional parentheses. +But in some situations we might want to capture the lookaround expression as well, or a part of it. That's possible. Just wrap that part into additional parentheses. -For instance, here the currency `pattern:(€|kr)` is captured, along with the amount: +In the example below the currency sign `pattern:(€|kr)` is captured, along with the amount: ```js run let str = "1 turkey costs 30€"; -let reg = /\d+(?=(€|kr))/; // extra parentheses around €|kr +let regexp = /\d+(?=(€|kr))/; // extra parentheses around €|kr -alert( str.match(reg) ); // 30, € +alert( str.match(regexp) ); // 30, € ``` And here's the same for lookbehind: ```js run let str = "1 turkey costs $30"; -let reg = /(?<=(\$|£))\d+/; +let regexp = /(?<=(\$|£))\d+/; -alert( str.match(reg) ); // 30, $ +alert( str.match(regexp) ); // 30, $ ``` -Please note that for lookbehind the order stays be same, even though lookahead parentheses are before the main pattern. +## Summary -Usually parentheses are numbered left-to-right, but lookbehind is an exception, it is always captured after the main pattern. So the match for `pattern:\d+` goes in the result first, and then for `pattern:(\$|£)`. +Lookahead and lookbehind (commonly referred to as "lookaround") are useful when we'd like to match something depending on the context before/after it. +For simple regexps we can do the similar thing manually. That is: match everything, in any context, and then filter by context in the loop. -## Summary +Remember, `str.match` (without flag `pattern:g`) and `str.matchAll` (always) return matches as arrays with `index` property, so we know where exactly in the text it is, and can check the context. -Lookahead and lookbehind (commonly referred to as "lookaround") are useful for simple regular expressions, when we'd like not to take something into the match depending on the context before/after it. - -Sometimes we can do the same manually, that is: match all and filter by context in the loop. Remember, `str.matchAll` and `reg.exec` return matches with `.index` property, so we know where exactly in the text it is. But generally regular expressions can do it better. +But generally lookaround is more convenient. Lookaround types: | Pattern | type | matches | |--------------------|------------------|---------| -| `pattern:x(?=y)` | Positive lookahead | `x` if followed by `y` | -| `pattern:x(?!y)` | Negative lookahead | `x` if not followed by `y` | -| `pattern:(?<=y)x` | Positive lookbehind | `x` if after `y` | -| `pattern:(?<!y)x` | Negative lookbehind | `x` if not after `y` | - -Lookahead can also used to disable backtracking. Why that may be needed -- see in the next chapter. +| `X(?=Y)` | Positive lookahead | `pattern:X` if followed by `pattern:Y` | +| `X(?!Y)` | Negative lookahead | `pattern:X` if not followed by `pattern:Y` | +| `(?<=Y)X` | Positive lookbehind | `pattern:X` if after `pattern:Y` | +| `(?<!Y)X` | Negative lookbehind | `pattern:X` if not after `pattern:Y` | diff --git a/9-regular-expressions/15-regexp-catastrophic-backtracking/article.md b/9-regular-expressions/15-regexp-catastrophic-backtracking/article.md new file mode 100644 index 000000000..c1d4040f7 --- /dev/null +++ b/9-regular-expressions/15-regexp-catastrophic-backtracking/article.md @@ -0,0 +1,318 @@ +# Catastrophic backtracking + +Some regular expressions are looking simple, but can execute a veeeeeery long time, and even "hang" the JavaScript engine. + +Sooner or later most developers occasionally face such behavior. The typical symptom -- a regular expression works fine sometimes, but for certain strings it "hangs", consuming 100% of CPU. + +In such case a web-browser suggests to kill the script and reload the page. Not a good thing for sure. + +For server-side JavaScript such a regexp may hang the server process, that's even worse. So we definitely should take a look at it. + +## Example + +Let's say we have a string, and we'd like to check if it consists of words `pattern:\w+` with an optional space `pattern:\s?` after each. + +An obvious way to construct a regexp would be to take a word followed by an optional space `pattern:\w+\s?` and then repeat it with `*`. + +That leads us to the regexp `pattern:^(\w+\s?)*$`, it specifies zero or more such words, that start at the beginning `pattern:^` and finish at the end `pattern:$` of the line. + +In action: + +```js run +let regexp = /^(\w+\s?)*$/; + +alert( regexp.test("A good string") ); // true +alert( regexp.test("Bad characters: $@#") ); // false +``` + +The regexp seems to work. The result is correct. Although, on certain strings it takes a lot of time. So long that JavaScript engine "hangs" with 100% CPU consumption. + +If you run the example below, you probably won't see anything, as JavaScript will just "hang". A web-browser will stop reacting on events, the UI will stop working (most browsers allow only scrolling). After some time it will suggest to reload the page. So be careful with this: + +```js run +let regexp = /^(\w+\s?)*$/; +let str = "An input string that takes a long time or even makes this regexp hang!"; + +// will take a very long time +alert( regexp.test(str) ); +``` + +To be fair, let's note that some regular expression engines can handle such a search effectively, for example V8 engine version starting from 8.8 can do that (so Google Chrome 88 doesn't hang here), while Firefox browser does hang. + +## Simplified example + +What's the matter? Why does the regular expression hang? + +To understand that, let's simplify the example: remove spaces `pattern:\s?`. Then it becomes `pattern:^(\w+)*$`. + +And, to make things more obvious, let's replace `pattern:\w` with `pattern:\d`. The resulting regular expression still hangs, for instance: + +```js run +let regexp = /^(\d+)*$/; + +let str = "012345678901234567890123456789z"; + +// will take a very long time (careful!) +alert( regexp.test(str) ); +``` + +So what's wrong with the regexp? + +First, one may notice that the regexp `pattern:(\d+)*` is a little bit strange. The quantifier `pattern:*` looks extraneous. If we want a number, we can use `pattern:\d+`. + +Indeed, the regexp is artificial; we got it by simplifying the previous example. But the reason why it is slow is the same. So let's understand it, and then the previous example will become obvious. + +What happens during the search of `pattern:^(\d+)*$` in the line `subject:123456789z` (shortened a bit for clarity, please note a non-digit character `subject:z` at the end, it's important), why does it take so long? + +Here's what the regexp engine does: + +1. First, the regexp engine tries to find the content of the parentheses: the number `pattern:\d+`. The plus `pattern:+` is greedy by default, so it consumes all digits: + + ``` + \d+....... + (123456789)z + ``` + + After all digits are consumed, `pattern:\d+` is considered found (as `match:123456789`). + + Then the star quantifier `pattern:(\d+)*` applies. But there are no more digits in the text, so the star doesn't give anything. + + The next character in the pattern is the string end `pattern:$`. But in the text we have `subject:z` instead, so there's no match: + + ``` + X + \d+........$ + (123456789)z + ``` + +2. As there's no match, the greedy quantifier `pattern:+` decreases the count of repetitions, backtracks one character back. + + Now `pattern:\d+` takes all digits except the last one (`match:12345678`): + ``` + \d+....... + (12345678)9z + ``` +3. Then the engine tries to continue the search from the next position (right after `match:12345678`). + + The star `pattern:(\d+)*` can be applied -- it gives one more match of `pattern:\d+`, the number `match:9`: + + ``` + + \d+.......\d+ + (12345678)(9)z + ``` + + The engine tries to match `pattern:$` again, but fails, because it meets `subject:z` instead: + + ``` + X + \d+.......\d+ + (12345678)(9)z + ``` + + +4. There's no match, so the engine will continue backtracking, decreasing the number of repetitions. Backtracking generally works like this: the last greedy quantifier decreases the number of repetitions until it reaches the minimum. Then the previous greedy quantifier decreases, and so on. + + All possible combinations are attempted. Here are their examples. + + The first number `pattern:\d+` has 7 digits, and then a number of 2 digits: + + ``` + X + \d+......\d+ + (1234567)(89)z + ``` + + The first number has 7 digits, and then two numbers of 1 digit each: + + ``` + X + \d+......\d+\d+ + (1234567)(8)(9)z + ``` + + The first number has 6 digits, and then a number of 3 digits: + + ``` + X + \d+.......\d+ + (123456)(789)z + ``` + + The first number has 6 digits, and then 2 numbers: + + ``` + X + \d+.....\d+ \d+ + (123456)(78)(9)z + ``` + + ...And so on. + + +There are many ways to split a sequence of digits `123456789` into numbers. To be precise, there are <code>2<sup>n</sup>-1</code>, where `n` is the length of the sequence. + +- For `123456789` we have `n=9`, that gives 511 combinations. +- For a longer sequence with `n=20` there are about one million (1048575) combinations. +- For `n=30` - a thousand times more (1073741823 combinations). + +Trying each of them is exactly the reason why the search takes so long. + +## Back to words and strings + +The similar thing happens in our first example, when we look for words by pattern `pattern:^(\w+\s?)*$` in the string `subject:An input that hangs!`. + +The reason is that a word can be represented as one `pattern:\w+` or many: + +``` +(input) +(inpu)(t) +(inp)(u)(t) +(in)(p)(ut) +... +``` + +For a human, it's obvious that there may be no match, because the string ends with an exclamation sign `!`, but the regular expression expects a wordly character `pattern:\w` or a space `pattern:\s` at the end. But the engine doesn't know that. + +It tries all combinations of how the regexp `pattern:(\w+\s?)*` can "consume" the string, including variants with spaces `pattern:(\w+\s)*` and without them `pattern:(\w+)*` (because spaces `pattern:\s?` are optional). As there are many such combinations (we've seen it with digits), the search takes a lot of time. + +What to do? + +Should we turn on the lazy mode? + +Unfortunately, that won't help: if we replace `pattern:\w+` with `pattern:\w+?`, the regexp will still hang. The order of combinations will change, but not their total count. + +Some regular expression engines have tricky tests and finite automations that allow to avoid going through all combinations or make it much faster, but most engines don't, and it doesn't always help. + +## How to fix? + +There are two main approaches to fixing the problem. + +The first is to lower the number of possible combinations. + +Let's make the space non-optional by rewriting the regular expression as `pattern:^(\w+\s)*\w*$` - we'll look for any number of words followed by a space `pattern:(\w+\s)*`, and then (optionally) a final word `pattern:\w*`. + +This regexp is equivalent to the previous one (matches the same) and works well: + +```js run +let regexp = /^(\w+\s)*\w*$/; +let str = "An input string that takes a long time or even makes this regex hang!"; + +alert( regexp.test(str) ); // false +``` + +Why did the problem disappear? + +That's because now the space is mandatory. + +The previous regexp, if we omit the space, becomes `pattern:(\w+)*`, leading to many combinations of `\w+` within a single word + +So `subject:input` could be matched as two repetitions of `pattern:\w+`, like this: + +``` +\w+ \w+ +(inp)(ut) +``` + +The new pattern is different: `pattern:(\w+\s)*` specifies repetitions of words followed by a space! The `subject:input` string can't be matched as two repetitions of `pattern:\w+\s`, because the space is mandatory. + +The time needed to try a lot of (actually most of) combinations is now saved. + +## Preventing backtracking + +It's not always convenient to rewrite a regexp though. In the example above it was easy, but it's not always obvious how to do it. + +Besides, a rewritten regexp is usually more complex, and that's not good. Regexps are complex enough without extra efforts. + +Luckily, there's an alternative approach. We can forbid backtracking for the quantifier. + +The root of the problem is that the regexp engine tries many combinations that are obviously wrong for a human. + +E.g. in the regexp `pattern:(\d+)*$` it's obvious for a human, that `pattern:+` shouldn't backtrack. If we replace one `pattern:\d+` with two separate `pattern:\d+\d+`, nothing changes: + +``` +\d+........ +(123456789)! + +\d+...\d+.... +(1234)(56789)! +``` + +And in the original example `pattern:^(\w+\s?)*$` we may want to forbid backtracking in `pattern:\w+`. That is: `pattern:\w+` should match a whole word, with the maximal possible length. There's no need to lower the repetitions count in `pattern:\w+` or to split it into two words `pattern:\w+\w+` and so on. + +Modern regular expression engines support possessive quantifiers for that. Regular quantifiers become possessive if we add `pattern:+` after them. That is, we use `pattern:\d++` instead of `pattern:\d+` to stop `pattern:+` from backtracking. + +Possessive quantifiers are in fact simpler than "regular" ones. They just match as many as they can, without any backtracking. The search process without backtracking is simpler. + +There are also so-called "atomic capturing groups" - a way to disable backtracking inside parentheses. + +...But the bad news is that, unfortunately, in JavaScript they are not supported. + +We can emulate them though using a "lookahead transform". + +### Lookahead to the rescue! + +So we've come to real advanced topics. We'd like a quantifier, such as `pattern:+` not to backtrack, because sometimes backtracking makes no sense. + +The pattern to take as many repetitions of `pattern:\w` as possible without backtracking is: `pattern:(?=(\w+))\1`. Of course, we could take another pattern instead of `pattern:\w`. + +That may seem odd, but it's actually a very simple transform. + +Let's decipher it: + +- Lookahead `pattern:?=` looks forward for the longest word `pattern:\w+` starting at the current position. +- The contents of parentheses with `pattern:?=...` isn't memorized by the engine, so wrap `pattern:\w+` into parentheses. Then the engine will memorize their contents +- ...And allow us to reference it in the pattern as `pattern:\1`. + +That is: we look ahead - and if there's a word `pattern:\w+`, then match it as `pattern:\1`. + +Why? That's because the lookahead finds a word `pattern:\w+` as a whole and we capture it into the pattern with `pattern:\1`. So we essentially implemented a possessive plus `pattern:+` quantifier. It captures only the whole word `pattern:\w+`, not a part of it. + +For instance, in the word `subject:JavaScript` it may not only match `match:Java`, but leave out `match:Script` to match the rest of the pattern. + +Here's the comparison of two patterns: + +```js run +alert( "JavaScript".match(/\w+Script/)); // JavaScript +alert( "JavaScript".match(/(?=(\w+))\1Script/)); // null +``` + +1. In the first variant `pattern:\w+` first captures the whole word `subject:JavaScript` but then `pattern:+` backtracks character by character, to try to match the rest of the pattern, until it finally succeeds (when `pattern:\w+` matches `match:Java`). +2. In the second variant `pattern:(?=(\w+))` looks ahead and finds the word `subject:JavaScript`, that is included into the pattern as a whole by `pattern:\1`, so there remains no way to find `subject:Script` after it. + +We can put a more complex regular expression into `pattern:(?=(\w+))\1` instead of `pattern:\w`, when we need to forbid backtracking for `pattern:+` after it. + +```smart +There's more about the relation between possessive quantifiers and lookahead in articles [Regex: Emulate Atomic Grouping (and Possessive Quantifiers) with LookAhead](https://instanceof.me/post/52245507631/regex-emulate-atomic-grouping-with-lookahead) and [Mimicking Atomic Groups](https://blog.stevenlevithan.com/archives/mimic-atomic-groups). +``` + +Let's rewrite the first example using lookahead to prevent backtracking: + +```js run +let regexp = /^((?=(\w+))\2\s?)*$/; + +alert( regexp.test("A good string") ); // true + +let str = "An input string that takes a long time or even makes this regex hang!"; + +alert( regexp.test(str) ); // false, works and fast! +``` + +Here `pattern:\2` is used instead of `pattern:\1`, because there are additional outer parentheses. To avoid messing up with the numbers, we can give the parentheses a name, e.g. `pattern:(?<word>\w+)`. + +```js run +// parentheses are named ?<word>, referenced as \k<word> +let regexp = /^((?=(?<word>\w+))\k<word>\s?)*$/; + +let str = "An input string that takes a long time or even makes this regex hang!"; + +alert( regexp.test(str) ); // false + +alert( regexp.test("A correct string") ); // true +``` + +The problem described in this article is called "catastrophic backtracking". + +We covered two ways how to solve it: +- Rewrite the regexp to lower the possible combinations count. +- Prevent backtracking. diff --git a/9-regular-expressions/15-regexp-infinite-backtracking-problem/article.md b/9-regular-expressions/15-regexp-infinite-backtracking-problem/article.md deleted file mode 100644 index 54bbccd9b..000000000 --- a/9-regular-expressions/15-regexp-infinite-backtracking-problem/article.md +++ /dev/null @@ -1,293 +0,0 @@ -# Infinite backtracking problem - -Some regular expressions are looking simple, but can execute veeeeeery long time, and even "hang" the JavaScript engine. - -Sooner or later most developers occasionally face such behavior. - -The typical situation -- a regular expression works fine sometimes, but for certain strings it "hangs" consuming 100% of CPU. - -In a web-browser it kills the page. Not a good thing for sure. - -For server-side JavaScript it may become a vulnerability, and it uses regular expressions to process user data. Bad input will make the process hang, causing denial of service. The author personally saw and reported such vulnerabilities even for very well-known and widely used programs. - -So the problem is definitely worth to deal with. - -## Introduction - -The plan will be like this: - -1. First we see the problem how it may occur. -2. Then we simplify the situation and see why it occurs. -3. Then we fix it. - -For instance let's consider searching tags in HTML. - -We want to find all tags, with or without attributes -- like `subject:<a href="..." class="doc" ...>`. We need the regexp to work reliably, because HTML comes from the internet and can be messy. - -In particular, we need it to match tags like `<a test="<>" href="#">` -- with `<` and `>` in attributes. That's allowed by [HTML standard](https://html.spec.whatwg.org/multipage/syntax.html#syntax-attributes). - -Now we can see that a simple regexp like `pattern:<[^>]+>` doesn't work, because it stops at the first `>`, and we need to ignore `<>` if inside an attribute. - -```js run -// the match doesn't reach the end of the tag - wrong! -alert( '<a test="<>" href="#">'.match(/<[^>]+>/) ); // <a test="<> -``` - -To correctly handle such situations we need a more complex regular expression. It will have the form `pattern:<tag (key=value)*>`. - -1. For the `tag` name: `pattern:\w+`, -2. For the `key` name: `pattern:\w+`, -3. And the `value`: a quoted string `pattern:"[^"]*"`. - -If we substitute these into the pattern above and throw in some optional spaces `pattern:\s`, the full regexp becomes: `pattern:<\w+(\s*\w+="[^"]*"\s*)*>`. - -That regexp is not perfect! It doesn't yet support all details of HTML, for instance unquoted values, and there are other ways to improve, but let's not add complexity. It will demonstrate the problem for us. - -The regexp seems to work: - -```js run -let reg = /<\w+(\s*\w+="[^"]*"\s*)*>/g; - -let str='...<a test="<>" href="#">... <b>...'; - -alert( str.match(reg) ); // <a test="<>" href="#">, <b> -``` - -Great! It found both the long tag `match:<a test="<>" href="#">` and the short one `match:<b>`. - -Now, that we've got a seemingly working solution, let's get to the infinite backtracking itself. - -## Infinite backtracking - -If you run our regexp on the input below, it may hang the browser (or another JavaScript host): - -```js run -let reg = /<\w+(\s*\w+="[^"]*"\s*)*>/g; - -let str = `<tag a="b" a="b" a="b" a="b" a="b" a="b" a="b" a="b" - a="b" a="b" a="b" a="b" a="b" a="b" a="b" a="b" a="b" a="b" a="b" a="b" a="b"`; - -*!* -// The search will take a long, long time -alert( str.match(reg) ); -*/!* -``` - -Some regexp engines can handle that search, but most of them can't. - -What's the matter? Why a simple regular expression "hangs" on such a small string? - -Let's simplify the regexp by stripping the tag name and the quotes. So that we look only for `key=value` attributes: `pattern:<(\s*\w+=\w+\s*)*>`. - -Unfortunately, the regexp still hangs: - -```js run -// only search for space-delimited attributes -let reg = /<(\s*\w+=\w+\s*)*>/g; - -let str = `<a=b a=b a=b a=b a=b a=b a=b a=b - a=b a=b a=b a=b a=b a=b a=b a=b a=b a=b a=b a=b a=b a=b`; - -*!* -// the search will take a long, long time -alert( str.match(reg) ); -*/!* -``` - -Here we end the demo of the problem and start looking into what's going on, why it hangs and how to fix it. - -## Detailed example - -To make an example even simpler, let's consider `pattern:(\d+)*$`. - -This regular expression also has the same problem. In most regexp engines that search takes a very long time (careful -- can hang): - -```js run -alert( '12345678901234567890123456789123456789z'.match(/(\d+)*$/) ); -``` - -So what's wrong with the regexp? - -First, one may notice that the regexp is a little bit strange. The quantifier `pattern:*` looks extraneous. If we want a number, we can use `pattern:\d+$`. - -Indeed, the regexp is artificial. But the reason why it is slow is the same as those we saw above. So let's understand it, and then the previous example will become obvious. - -What happen during the search of `pattern:(\d+)*$` in the line `subject:123456789z`? - -1. First, the regexp engine tries to find a number `pattern:\d+`. The plus `pattern:+` is greedy by default, so it consumes all digits: - - ``` - \d+....... - (123456789)z - ``` -2. Then it tries to apply the star quantifier, but there are no more digits, so it the star doesn't give anything. - -3. Then the pattern expects to see the string end `pattern:$`, and in the text we have `subject:z`, so there's no match: - - ``` - X - \d+........$ - (123456789)z - ``` - -4. As there's no match, the greedy quantifier `pattern:+` decreases the count of repetitions (backtracks). - - Now `\d+` doesn't take all digits, but all except the last one: - ``` - \d+....... - (12345678)9z - ``` -5. Now the engine tries to continue the search from the new position (`9`). - - The star `pattern:(\d+)*` can be applied -- it gives the number `match:9`: - - ``` - - \d+.......\d+ - (12345678)(9)z - ``` - - The engine tries to match `$` again, but fails, because meets `subject:z`: - - ``` - X - \d+.......\d+ - (12345678)(9)z - ``` - - -5. There's no match, so the engine will continue backtracking, decreasing the number of repetitions for `pattern:\d+` down to 7 digits. So the rest of the string `subject:89` becomes the second `pattern:\d+`: - - ``` - X - \d+......\d+ - (1234567)(89)z - ``` - - ...Still no match for `pattern:$`. - - The search engine backtracks again. Backtracking generally works like this: the last greedy quantifier decreases the number of repetitions until it can. Then the previous greedy quantifier decreases, and so on. In our case the last greedy quantifier is the second `pattern:\d+`, from `subject:89` to `subject:8`, and then the star takes `subject:9`: - - ``` - X - \d+......\d+\d+ - (1234567)(8)(9)z - ``` -6. ...Fail again. The second and third `pattern:\d+` backtracked to the end, so the first quantifier shortens the match to `subject:123456`, and the star takes the rest: - - ``` - X - \d+.......\d+ - (123456)(789)z - ``` - - Again no match. The process repeats: the last greedy quantifier releases one character (`9`): - - ``` - X - \d+.....\d+ \d+ - (123456)(78)(9)z - ``` -7. ...And so on. - -The regular expression engine goes through all combinations of `123456789` and their subsequences. There are a lot of them, that's why it takes so long. - -What to do? - -Should we turn on the lazy mode? - -Unfortunately, it doesn't: if we replace `pattern:\d+` with `pattern:\d+?`, that still hangs: - -```js run -// sloooooowwwwww -alert( '12345678901234567890123456789123456789z'.match(/(\d+?)*$/) ); -``` - -Lazy quantifiers actually do the same, but in the reverse order. - -Just think about how the search engine would work in this case. - -Some regular expression engines have tricky built-in checks to detect infinite backtracking or other means to work around them, but there's no universal solution. - -## Back to tags - -In the example above, when we search `pattern:<(\s*\w+=\w+\s*)*>` in the string `subject:<a=b a=b a=b a=b` -- the similar thing happens. - -The string has no `>` at the end, so the match is impossible, but the regexp engine doesn't know about it. The search backtracks trying different combinations of `pattern:(\s*\w+=\w+\s*)`: - -``` -(a=b a=b a=b) (a=b) -(a=b a=b) (a=b a=b) -(a=b) (a=b a=b a=b) -... -``` - -## How to fix? - -The backtracking checks many variants that are an obvious fail for a human. - -For instance, in the pattern `pattern:(\d+)*$` a human can easily see that `pattern:(\d+)*` does not need to backtrack `pattern:+`. There's no difference between one or two `\d+`: - -``` -\d+........ -(123456789)z - -\d+...\d+.... -(1234)(56789)z -``` - -Let's get back to more real-life example: `pattern:<(\s*\w+=\w+\s*)*>`. We want it to find pairs `name=value` (as many as it can). - -What we would like to do is to forbid backtracking. - -There's totally no need to decrease the number of repetitions. - -In other words, if it found three `name=value` pairs and then can't find `>` after them, then there's no need to decrease the count of repetitions. There are definitely no `>` after those two (we backtracked one `name=value` pair, it's there): - -``` -(name=value) name=value -``` - -Modern regexp engines support so-called "possessive" quantifiers for that. They are like greedy, but don't backtrack at all. Pretty simple, they capture whatever they can, and the search continues. There's also another tool called "atomic groups" that forbid backtracking inside parentheses. - -Unfortunately, but both these features are not supported by JavaScript. - -### Lookahead to the rescue - -We can forbid backtracking using lookahead. - -The pattern to take as much repetitions as possible without backtracking is: `pattern:(?=(a+))\1`. - -In other words: -- The lookahead `pattern:?=` looks for the maximal count `pattern:a+` from the current position. -- And then they are "consumed into the result" by the backreference `pattern:\1` (`pattern:\1` corresponds to the content of the second parentheses, that is `pattern:a+`). - -There will be no backtracking, because lookahead does not backtrack. If it found like 5 times of `pattern:a+` and the further match failed, then it doesn't go back to 4. - -```smart -There's more about the relation between possessive quantifiers and lookahead in articles [Regex: Emulate Atomic Grouping (and Possessive Quantifiers) with LookAhead](http://instanceof.me/post/52245507631/regex-emulate-atomic-grouping-with-lookahead) and [Mimicking Atomic Groups](http://blog.stevenlevithan.com/archives/mimic-atomic-groups). -``` - -So this trick makes the problem disappear. - -Let's fix the regexp for a tag with attributes from the beginning of the chapter`pattern:<\w+(\s*\w+=(\w+|"[^"]*")\s*)*>`. We'll use lookahead to prevent backtracking of `name=value` pairs: - -```js run -// regexp to search name=value -let attrReg = /(\s*\w+=(\w+|"[^"]*")\s*)/ - -// use new RegExp to nicely insert its source into (?=(a+))\1 -let fixedReg = new RegExp(`<\\w+(?=(${attrReg.source}*))\\1>`, 'g'); - -let goodInput = '...<a test="<>" href="#">... <b>...'; - -let badInput = `<tag a=b a=b a=b a=b a=b a=b a=b a=b - a=b a=b a=b a=b a=b a=b a=b a=b a=b a=b a=b a=b a=b`; - -alert( goodInput.match(fixedReg) ); // <a test="<>" href="#">, <b> -alert( badInput.match(fixedReg) ); // null (no results, fast!) -``` - -Great, it works! We found both a long tag `match:<a test="<>" href="#">` and a small one `match:<b>`, and (!) didn't hang the engine on the bad input. - -Please note the `attrReg.source` property. `RegExp` objects provide access to their source string in it. That's convenient when we want to insert one regexp into another. diff --git a/9-regular-expressions/16-regexp-sticky/article.md b/9-regular-expressions/16-regexp-sticky/article.md new file mode 100644 index 000000000..ece2c960f --- /dev/null +++ b/9-regular-expressions/16-regexp-sticky/article.md @@ -0,0 +1,138 @@ + +# Sticky flag "y", searching at position + +The flag `pattern:y` allows to perform the search at the given position in the source string. + +To grasp the use case of `pattern:y` flag, and better understand the ways of regexps, let's explore a practical example. + +One of common tasks for regexps is "lexical analysis": we get a text, e.g. in a programming language, and need to find its structural elements. For instance, HTML has tags and attributes, JavaScript code has functions, variables, and so on. + +Writing lexical analyzers is a special area, with its own tools and algorithms, so we don't go deep in there, but there's a common task: to read something at the given position. + +E.g. we have a code string `subject:let varName = "value"`, and we need to read the variable name from it, that starts at position `4`. + +We'll look for variable name using regexp `pattern:\w+`. Actually, JavaScript variable names need a bit more complex regexp for accurate matching, but here it doesn't matter. + +- A call to `str.match(/\w+/)` will find only the first word in the line (`let`). That's not it. +- We can add the flag `pattern:g`. But then the call `str.match(/\w+/g)` will look for all words in the text, while we need one word at position `4`. Again, not what we need. + +**So, how to search for a regexp exactly at the given position?** + +Let's try using method `regexp.exec(str)`. + +For a `regexp` without flags `pattern:g` and `pattern:y`, this method looks only for the first match, it works exactly like `str.match(regexp)`. + +...But if there's flag `pattern:g`, then it performs the search in `str`, starting from position stored in the `regexp.lastIndex` property. And, if it finds a match, then sets `regexp.lastIndex` to the index immediately after the match. + +In other words, `regexp.lastIndex` serves as a starting point for the search, that each `regexp.exec(str)` call resets to the new value ("after the last match"). That's only if there's `pattern:g` flag, of course. + +So, successive calls to `regexp.exec(str)` return matches one after another. + +Here's an example of such calls: + +```js run +let str = 'let varName'; // Let's find all words in this string +let regexp = /\w+/g; + +alert(regexp.lastIndex); // 0 (initially lastIndex=0) + +let word1 = regexp.exec(str); +alert(word1[0]); // let (1st word) +alert(regexp.lastIndex); // 3 (position after the match) + +let word2 = regexp.exec(str); +alert(word2[0]); // varName (2nd word) +alert(regexp.lastIndex); // 11 (position after the match) + +let word3 = regexp.exec(str); +alert(word3); // null (no more matches) +alert(regexp.lastIndex); // 0 (resets at search end) +``` + +We can get all matches in the loop: + +```js run +let str = 'let varName'; +let regexp = /\w+/g; + +let result; + +while (result = regexp.exec(str)) { + alert( `Found ${result[0]} at position ${result.index}` ); + // Found let at position 0, then + // Found varName at position 4 +} +``` + +Such use of `regexp.exec` is an alternative to method `str.matchAll`, with a bit more control over the process. + +Let's go back to our task. + +We can manually set `lastIndex` to `4`, to start the search from the given position! + +Like this: + +```js run +let str = 'let varName = "value"'; + +let regexp = /\w+/g; // without flag "g", property lastIndex is ignored + +*!* +regexp.lastIndex = 4; +*/!* + +let word = regexp.exec(str); +alert(word); // varName +``` + +Hooray! Problem solved! + +We performed a search of `pattern:\w+`, starting from position `regexp.lastIndex = 4`. + +The result is correct. + +...But wait, not so fast. + +Please note: the `regexp.exec` call starts searching at position `lastIndex` and then goes further. If there's no word at position `lastIndex`, but it's somewhere after it, then it will be found: + +```js run +let str = 'let varName = "value"'; + +let regexp = /\w+/g; + +*!* +// start the search from position 3 +regexp.lastIndex = 3; +*/!* + +let word = regexp.exec(str); +// found the match at position 4 +alert(word[0]); // varName +alert(word.index); // 4 +``` + +For some tasks, including the lexical analysis, that's just wrong. We need to find a match exactly at the given position at the text, not somewhere after it. And that's what the flag `y` is for. + +**The flag `pattern:y` makes `regexp.exec` to search exactly at position `lastIndex`, not "starting from" it.** + +Here's the same search with flag `pattern:y`: + +```js run +let str = 'let varName = "value"'; + +let regexp = /\w+/y; + +regexp.lastIndex = 3; +alert( regexp.exec(str) ); // null (there's a space at position 3, not a word) + +regexp.lastIndex = 4; +alert( regexp.exec(str) ); // varName (word at position 4) +``` + +As we can see, regexp `pattern:/\w+/y` doesn't match at position `3` (unlike the flag `pattern:g`), but matches at position `4`. + +Not only that's what we need, there's an important performance gain when using flag `pattern:y`. + +Imagine, we have a long text, and there are no matches in it, at all. Then a search with flag `pattern:g` will go till the end of the text and find nothing, and this will take significantly more time than the search with flag `pattern:y`, that checks only the exact position. + +In tasks like lexical analysis, there are usually many searches at an exact position, to check what we have there. Using flag `pattern:y` is the key for correct implementations and a good performance. diff --git a/9-regular-expressions/17-regexp-methods/article.md b/9-regular-expressions/17-regexp-methods/article.md new file mode 100644 index 000000000..897d0ffb6 --- /dev/null +++ b/9-regular-expressions/17-regexp-methods/article.md @@ -0,0 +1,361 @@ +# Methods of RegExp and String + +In this article we'll cover various methods that work with regexps in-depth. + +## str.match(regexp) + +The method `str.match(regexp)` finds matches for `regexp` in the string `str`. + +It has 3 modes: + +1. If the `regexp` doesn't have flag `pattern:g`, then it returns the first match as an array with capturing groups and properties `index` (position of the match), `input` (input string, equals `str`): + + ```js run + let str = "I love JavaScript"; + + let result = str.match(/Java(Script)/); + + alert( result[0] ); // JavaScript (full match) + alert( result[1] ); // Script (first capturing group) + alert( result.length ); // 2 + + // Additional information: + alert( result.index ); // 7 (match position) + alert( result.input ); // I love JavaScript (source string) + ``` + +2. If the `regexp` has flag `pattern:g`, then it returns an array of all matches as strings, without capturing groups and other details. + ```js run + let str = "I love JavaScript"; + + let result = str.match(/Java(Script)/g); + + alert( result[0] ); // JavaScript + alert( result.length ); // 1 + ``` + +3. If there are no matches, no matter if there's flag `pattern:g` or not, `null` is returned. + + That's an important nuance. If there are no matches, we don't get an empty array, but `null`. It's easy to make a mistake forgetting about it, e.g.: + + ```js run + let str = "I love JavaScript"; + + let result = str.match(/HTML/); + + alert(result); // null + alert(result.length); // Error: Cannot read property 'length' of null + ``` + + If we want the result to be an array, we can write like this: + + ```js + let result = str.match(regexp) || []; + ``` + +## str.matchAll(regexp) + +[recent browser="new"] + +The method `str.matchAll(regexp)` is a "newer, improved" variant of `str.match`. + +It's used mainly to search for all matches with all groups. + +There are 3 differences from `match`: + +1. It returns an iterable object with matches instead of an array. We can make a regular array from it using `Array.from`. +2. Every match is returned as an array with capturing groups (the same format as `str.match` without flag `pattern:g`). +3. If there are no results, it returns an empty iterable object instead of `null`. + +Usage example: + +```js run +let str = '<h1>Hello, world!</h1>'; +let regexp = /<(.*?)>/g; + +let matchAll = str.matchAll(regexp); + +alert(matchAll); // [object RegExp String Iterator], not array, but an iterable + +matchAll = Array.from(matchAll); // array now + +let firstMatch = matchAll[0]; +alert( firstMatch[0] ); // <h1> +alert( firstMatch[1] ); // h1 +alert( firstMatch.index ); // 0 +alert( firstMatch.input ); // <h1>Hello, world!</h1> +``` + +If we use `for..of` to loop over `matchAll` matches, then we don't need `Array.from` any more. + +## str.split(regexp|substr, limit) + +Splits the string using the regexp (or a substring) as a delimiter. + +We can use `split` with strings, like this: + +```js run +alert('12-34-56'.split('-')) // array of ['12', '34', '56'] +``` + +But we can split by a regular expression, the same way: + +```js run +alert('12, 34, 56'.split(/,\s*/)) // array of ['12', '34', '56'] +``` + +## str.search(regexp) + +The method `str.search(regexp)` returns the position of the first match or `-1` if none found: + +```js run +let str = "A drop of ink may make a million think"; + +alert( str.search( /ink/i ) ); // 10 (first match position) +``` + +**The important limitation: `search` only finds the first match.** + +If we need positions of further matches, we should use other means, such as finding them all with `str.matchAll(regexp)`. + +## str.replace(str|regexp, str|func) + +This is a generic method for searching and replacing, one of most useful ones. The swiss army knife for searching and replacing. + +We can use it without regexps, to search and replace a substring: + +```js run +// replace a dash by a colon +alert('12-34-56'.replace("-", ":")) // 12:34-56 +``` + +There's a pitfall though. + +**When the first argument of `replace` is a string, it only replaces the first match.** + +You can see that in the example above: only the first `"-"` is replaced by `":"`. + +To find all hyphens, we need to use not the string `"-"`, but a regexp `pattern:/-/g`, with the obligatory `pattern:g` flag: + +```js run +// replace all dashes by a colon +alert( '12-34-56'.replace( *!*/-/g*/!*, ":" ) ) // 12:34:56 +``` + +The second argument is a replacement string. We can use special characters in it: + +| Symbols | Action in the replacement string | +|--------|--------| +|`$&`|inserts the whole match| +|<code>$`</code>|inserts a part of the string before the match| +|`$'`|inserts a part of the string after the match| +|`$n`|if `n` is a 1-2 digit number, inserts the contents of n-th capturing group, for details see [](info:regexp-groups)| +|`$<name>`|inserts the contents of the parentheses with the given `name`, for details see [](info:regexp-groups)| +|`$$`|inserts character `$` | + +For instance: + +```js run +let str = "John Smith"; + +// swap first and last name +alert(str.replace(/(john) (smith)/i, '$2, $1')) // Smith, John +``` + +**For situations that require "smart" replacements, the second argument can be a function.** + +It will be called for each match, and the returned value will be inserted as a replacement. + +The function is called with arguments `func(match, p1, p2, ..., pn, offset, input, groups)`: + +1. `match` -- the match, +2. `p1, p2, ..., pn` -- contents of capturing groups (if there are any), +3. `offset` -- position of the match, +4. `input` -- the source string, +5. `groups` -- an object with named groups. + +If there are no parentheses in the regexp, then there are only 3 arguments: `func(str, offset, input)`. + +For example, let's uppercase all matches: + +```js run +let str = "html and css"; + +let result = str.replace(/html|css/gi, str => str.toUpperCase()); + +alert(result); // HTML and CSS +``` + +Replace each match by its position in the string: + +```js run +alert("Ho-Ho-ho".replace(/ho/gi, (match, offset) => offset)); // 0-3-6 +``` + +In the example below there are two parentheses, so the replacement function is called with 5 arguments: the first is the full match, then 2 parentheses, and after it (not used in the example) the match position and the source string: + +```js run +let str = "John Smith"; + +let result = str.replace(/(\w+) (\w+)/, (match, name, surname) => `${surname}, ${name}`); + +alert(result); // Smith, John +``` + +If there are many groups, it's convenient to use rest parameters to access them: + +```js run +let str = "John Smith"; + +let result = str.replace(/(\w+) (\w+)/, (...match) => `${match[2]}, ${match[1]}`); + +alert(result); // Smith, John +``` + +Or, if we're using named groups, then `groups` object with them is always the last, so we can obtain it like this: + +```js run +let str = "John Smith"; + +let result = str.replace(/(?<name>\w+) (?<surname>\w+)/, (...match) => { + let groups = match.pop(); + + return `${groups.surname}, ${groups.name}`; +}); + +alert(result); // Smith, John +``` + +Using a function gives us the ultimate replacement power, because it gets all the information about the match, has access to outer variables and can do everything. + +## str.replaceAll(str|regexp, str|func) + +This method is essentially the same as `str.replace`, with two major differences: + +1. If the first argument is a string, it replaces *all occurrences* of the string, while `replace` replaces only the *first occurrence*. +2. If the first argument is a regular expression without the `g` flag, there'll be an error. With `g` flag, it works the same as `replace`. + +The main use case for `replaceAll` is replacing all occurrences of a string. + +Like this: + +```js run +// replace all dashes by a colon +alert('12-34-56'.replaceAll("-", ":")) // 12:34:56 +``` + + +## regexp.exec(str) + +The `regexp.exec(str)` method returns a match for `regexp` in the string `str`. Unlike previous methods, it's called on a regexp, not on a string. + +It behaves differently depending on whether the regexp has flag `pattern:g`. + +If there's no `pattern:g`, then `regexp.exec(str)` returns the first match exactly as `str.match(regexp)`. This behavior doesn't bring anything new. + +But if there's flag `pattern:g`, then: +- A call to `regexp.exec(str)` returns the first match and saves the position immediately after it in the property `regexp.lastIndex`. +- The next such call starts the search from position `regexp.lastIndex`, returns the next match and saves the position after it in `regexp.lastIndex`. +- ...And so on. +- If there are no matches, `regexp.exec` returns `null` and resets `regexp.lastIndex` to `0`. + +So, repeated calls return all matches one after another, using property `regexp.lastIndex` to keep track of the current search position. + +In the past, before the method `str.matchAll` was added to JavaScript, calls of `regexp.exec` were used in the loop to get all matches with groups: + +```js run +let str = 'More about JavaScript at https://javascript.info'; +let regexp = /javascript/ig; + +let result; + +while (result = regexp.exec(str)) { + alert( `Found ${result[0]} at position ${result.index}` ); + // Found JavaScript at position 11, then + // Found javascript at position 33 +} +``` + +This works now as well, although for newer browsers `str.matchAll` is usually more convenient. + +**We can use `regexp.exec` to search from a given position by manually setting `lastIndex`.** + +For instance: + +```js run +let str = 'Hello, world!'; + +let regexp = /\w+/g; // without flag "g", lastIndex property is ignored +regexp.lastIndex = 5; // search from 5th position (from the comma) + +alert( regexp.exec(str) ); // world +``` + +If the regexp has flag `pattern:y`, then the search will be performed exactly at the position `regexp.lastIndex`, not any further. + +Let's replace flag `pattern:g` with `pattern:y` in the example above. There will be no matches, as there's no word at position `5`: + +```js run +let str = 'Hello, world!'; + +let regexp = /\w+/y; +regexp.lastIndex = 5; // search exactly at position 5 + +alert( regexp.exec(str) ); // null +``` + +That's convenient for situations when we need to "read" something from the string by a regexp at the exact position, not somewhere further. + +## regexp.test(str) + +The method `regexp.test(str)` looks for a match and returns `true/false` whether it exists. + +For instance: + +```js run +let str = "I love JavaScript"; + +// these two tests do the same +alert( *!*/love/i*/!*.test(str) ); // true +alert( str.search(*!*/love/i*/!*) != -1 ); // true +``` + +An example with the negative answer: + +```js run +let str = "Bla-bla-bla"; + +alert( *!*/love/i*/!*.test(str) ); // false +alert( str.search(*!*/love/i*/!*) != -1 ); // false +``` + +If the regexp has flag `pattern:g`, then `regexp.test` looks from `regexp.lastIndex` property and updates this property, just like `regexp.exec`. + +So we can use it to search from a given position: + +```js run +let regexp = /love/gi; + +let str = "I love JavaScript"; + +// start the search from position 10: +regexp.lastIndex = 10; +alert( regexp.test(str) ); // false (no match) +``` + +````warn header="Same global regexp tested repeatedly on different sources may fail" +If we apply the same global regexp to different inputs, it may lead to wrong result, because `regexp.test` call advances `regexp.lastIndex` property, so the search in another string may start from non-zero position. + +For instance, here we call `regexp.test` twice on the same text, and the second time fails: + +```js run +let regexp = /javascript/g; // (regexp just created: regexp.lastIndex=0) + +alert( regexp.test("javascript") ); // true (regexp.lastIndex=10 now) +alert( regexp.test("javascript") ); // false +``` + +That's exactly because `regexp.lastIndex` is non-zero in the second test. + +To work around that, we can set `regexp.lastIndex = 0` before each search. Or instead of calling methods on regexp, use string methods `str.match/search/...`, they don't use `lastIndex`. +```` diff --git a/9-regular-expressions/20-regexp-unicode/article.md b/9-regular-expressions/20-regexp-unicode/article.md deleted file mode 100644 index 68eebca8b..000000000 --- a/9-regular-expressions/20-regexp-unicode/article.md +++ /dev/null @@ -1,89 +0,0 @@ - -# Unicode: flag "u" - -The unicode flag `/.../u` enables the correct support of surrogate pairs. - -Surrogate pairs are explained in the chapter <info:string>. - -Let's briefly remind them here. In short, normally characters are encoded with 2 bytes. That gives us 65536 characters maximum. But there are more characters in the world. - -So certain rare characters are encoded with 4 bytes, like `𝒳` (mathematical X) or `😄` (a smile). - -Here are the unicode values to compare: - -| Character | Unicode | Bytes | -|------------|---------|--------| -| `a` | 0x0061 | 2 | -| `≈` | 0x2248 | 2 | -|`𝒳`| 0x1d4b3 | 4 | -|`𝒴`| 0x1d4b4 | 4 | -|`😄`| 0x1f604 | 4 | - -So characters like `a` and `≈` occupy 2 bytes, and those rare ones take 4. - -The unicode is made in such a way that the 4-byte characters only have a meaning as a whole. - -In the past JavaScript did not know about that, and many string methods still have problems. For instance, `length` thinks that here are two characters: - -```js run -alert('😄'.length); // 2 -alert('𝒳'.length); // 2 -``` - -...But we can see that there's only one, right? The point is that `length` treats 4 bytes as two 2-byte characters. That's incorrect, because they must be considered only together (so-called "surrogate pair"). - -Normally, regular expressions also treat "long characters" as two 2-byte ones. - -That leads to odd results, for instance let's try to find `pattern:[𝒳𝒴]` in the string `subject:𝒳`: - -```js run -alert( '𝒳'.match(/[𝒳𝒴]/) ); // odd result (wrong match actually, "half-character") -``` - -The result is wrong, because by default the regexp engine does not understand surrogate pairs. - -So, it thinks that `[𝒳𝒴]` are not two, but four characters: -1. the left half of `𝒳` `(1)`, -2. the right half of `𝒳` `(2)`, -3. the left half of `𝒴` `(3)`, -4. the right half of `𝒴` `(4)`. - -We can list them like this: - -```js run -for(let i=0; i<'𝒳𝒴'.length; i++) { - alert('𝒳𝒴'.charCodeAt(i)); // 55349, 56499, 55349, 56500 -}; -``` - -So it finds only the "left half" of `𝒳`. - -In other words, the search works like `'12'.match(/[1234]/)`: only `1` is returned. - -## The "u" flag - -The `/.../u` flag fixes that. - -It enables surrogate pairs in the regexp engine, so the result is correct: - -```js run -alert( '𝒳'.match(/[𝒳𝒴]/u) ); // 𝒳 -``` - -Let's see one more example. - -If we forget the `u` flag and occasionally use surrogate pairs, then we can get an error: - -```js run -'𝒳'.match(/[𝒳-𝒴]/); // SyntaxError: invalid range in character class -``` - -Normally, regexps understand `[a-z]` as a "range of characters with codes between codes of `a` and `z`. - -But without `u` flag, surrogate pairs are assumed to be a "pair of independant characters", so `[𝒳-𝒴]` is like `[<55349><56499>-<55349><56500>]` (replaced each surrogate pair with code points). Now we can clearly see that the range `56499-55349` is unacceptable, as the left range border must be less than the right one. - -Using the `u` flag makes it work right: - -```js run -alert( '𝒴'.match(/[𝒳-𝒵]/u) ); // 𝒴 -``` diff --git a/9-regular-expressions/21-regexp-unicode-properties/article.md b/9-regular-expressions/21-regexp-unicode-properties/article.md deleted file mode 100644 index c11914825..000000000 --- a/9-regular-expressions/21-regexp-unicode-properties/article.md +++ /dev/null @@ -1,86 +0,0 @@ - -# Unicode character properties \p - -[Unicode](https://en.wikipedia.org/wiki/Unicode), the encoding format used by JavaScript strings, has a lot of properties for different characters (or, technically, code points). They describe which "categories" character belongs to, and a variety of technical details. - -In regular expressions these can be set by `\p{…}`. And there must be flag `'u'`. - -For instance, `\p{Letter}` denotes a letter in any of language. We can also use `\p{L}`, as `L` is an alias of `Letter`, there are shorter aliases for almost every property. - -Here's the main tree of properties: - -- Letter `L`: - - lowercase `Ll`, modifier `Lm`, titlecase `Lt`, uppercase `Lu`, other `Lo` -- Number `N`: - - decimal digit `Nd`, letter number `Nl`, other `No`: -- Punctuation `P`: - - connector `Pc`, dash `Pd`, initial quote `Pi`, final quote `Pf`, open `Ps`, close `Pe`, other `Po` -- Mark `M` (accents etc): - - spacing combining `Mc`, enclosing `Me`, non-spacing `Mn` -- Symbol `S`: - - currency `Sc`, modifier `Sk`, math `Sm`, other `So` -- Separator `Z`: - - line `Zl`, paragraph `Zp`, space `Zs` -- Other `C`: - - control `Cc`, format `Cf`, not assigned `Cn`, private use `Co`, surrogate `Cs`. - -```smart header="More information" -Interested to see which characters belong to a property? There's a tool at <http://cldr.unicode.org/unicode-utilities/list-unicodeset> for that. - -You could also explore properties at [Character Property Index](http://unicode.org/cldr/utility/properties.jsp). - -For the full Unicode Character Database in text format (along with all properties), see <https://www.unicode.org/Public/UCD/latest/ucd/>. -``` - -There are also other derived categories, like: -- `Alphabetic` (`Alpha`), includes Letters `L`, plus letter numbers `Nl` (e.g. roman numbers Ⅻ), plus some other symbols `Other_Alphabetic` (`OAltpa`). -- `Hex_Digit` includes hexadimal digits: `0-9`, `a-f`. -- ...Unicode is a big beast, it includes a lot of properties. - -For instance, let's look for a 6-digit hex number: - -```js run -let reg = /\p{Hex_Digit}{6}/u; // flag 'u' is requireds - -alert("color: #123ABC".match(reg)); // 123ABC -``` - -There are also properties with a value. For instance, Unicode "Script" (a writing system) can be Cyrillic, Greek, Arabic, Han (Chinese) etc, the [list is long]("https://en.wikipedia.org/wiki/Script_(Unicode)"). - -To search for certain scripts, we should supply `Script=<value>`, e.g. to search for cyrillic letters: `\p{sc=Cyrillic}`, for Chinese glyphs: `\p{sc=Han}`, etc: - -```js run -let regexp = /\p{sc=Han}+/gu; // get chinese words - -let str = `Hello Привет 你好 123_456`; - -alert( str.match(regexp) ); // 你好 -``` - -## Building multi-language \w - -Let's make a "universal" regexp for `pattern:\w`, for any language. That task has a standard solution in many programming languages with unicode-aware regexps, e.g. Perl. - -```js -/[\p{Alphabetic}\p{Mark}\p{Decimal_Number}\p{Connector_Punctuation}\p{Join_Control}]/u -``` - -Let's decipher. Remember, `pattern:\w` is actually the same as `pattern:[a-zA-Z0-9_]`. - -So the character set includes: - -- `Alphabetic` for letters, -- `Mark` for accents, as in Unicode accents may be represented by separate code points, -- `Decimal_Number` for numbers, -- `Connector_Punctuation` for the `'_'` character and alike, -- `Join_Control` -– two special code points with hex codes `200c` and `200d`, used in ligatures e.g. in arabic. - -Or, if we replace long names with aliases (a list of aliases [here](https://www.unicode.org/Public/UCD/latest/ucd/PropertyValueAliases.txt)): - -```js run -let regexp = /([\p{Alpha}\p{M}\p{Nd}\p{Pc}\p{Join_C}]+)/gu; - -let str = `Hello Привет 你好 123_456`; - -alert( str.match(regexp) ); // Hello,Привет,你好,123_456 -``` diff --git a/9-regular-expressions/22-regexp-sticky/article.md b/9-regular-expressions/22-regexp-sticky/article.md deleted file mode 100644 index 5a790bb31..000000000 --- a/9-regular-expressions/22-regexp-sticky/article.md +++ /dev/null @@ -1,71 +0,0 @@ - -# Sticky flag "y", searching at position - -To grasp the use case of `y` flag, and see how great it is, let's explore a practical use case. - -One of common tasks for regexps is "parsing": when we get a text and analyze it for logical components, build a structure. - -For instance, there are HTML parsers for browser pages, that turn text into a structured document. There are parsers for programming languages, like JavaScript, etc. - -Writing parsers is a special area, with its own tools and algorithms, so we don't go deep in there, but there's a very common question: "What is the text at the given position?". - -For instance, for a programming language variants can be like: -- Is it a "name" `pattern:\w+`? -- Or is it a number `pattern:\d+`? -- Or an operator `pattern:[+-/*]`? -- (a syntax error if it's not anything in the expected list) - -In JavaScript, to perform a search starting from a given position, we can use `regexp.exec` with `regexp.lastIndex` property, but that's not what we need! - -We'd like to check the match exactly at given position, not "starting" from it. - -Here's a (failing) attempt to use `lastIndex`: - -```js run -let str = "(text before) function ..."; - -// attempting to find function at position 5: -let regexp = /function/g; // must use "g" flag, otherwise lastIndex is ignored -regexp.lastIndex = 5 - -alert (regexp.exec(str)); // function -``` - -The match is found, because `regexp.exec` starts to search from the given position and goes on by the text, successfully matching "function" later. - -We could work around that by checking if "`regexp.exec(str).index` property is `5`, and if not, ignore the much. But the main problem here is performance. - -The regexp engine does a lot of unnecessary work by scanning at further positions. The delays are clearly noticeable if the text is long, because there are many such searches in a parser. - -## The "y" flag - -So we've came to the problem: how to search for a match, starting exactly at the given position. - -That's what `y` flag does. It makes the regexp search only at the `lastIndex` position. - -Here's an example - -```js run -let str = "(text before) function ..."; - -*!* -let regexp = /function/y; -regexp.lastIndex = 5; -*/!* - -alert (regexp.exec(str)); // null (no match, unlike "g" flag!) - -*!* -regexp.lastIndex = 14; -*/!* - -alert (regexp.exec(str)); // function (match!) -``` - -As we can see, now the regexp is only matched at the given position. - -So what `y` does is truly unique, and very important for writing parsers. - -The `y` flag allows to apply a regular expression (or many of them one-by-one) exactly at the given position and when we understand what's there, we can move on -- step by step examining the text. - -Without the flag the regexp engine always searches till the end of the text, that takes time, especially if the text is large. So our parser would be very slow. The `y` flag is exactly the right thing here. diff --git a/BACKERS.md b/BACKERS.md new file mode 100644 index 000000000..36b1532bc --- /dev/null +++ b/BACKERS.md @@ -0,0 +1,6 @@ + +# Sponsors and Supporters + +## Supporters + +- Ilya Zelenko diff --git a/LICENSE.md b/LICENSE.md index 60f06924e..cbada5307 100644 --- a/LICENSE.md +++ b/LICENSE.md @@ -1,14 +1,143 @@ -# Attribution-NonCommercial-ShareAlike 4.0 +The tutorial is free to read. -The full license text is at <https://creativecommons.org/licenses/by-nc-sa/4.0/legalcode>. +If you'd like to do something else with it, please get a permission from Ilya Kantor, iliakan@javascript.info. -You are free to: +As of now, we license the tutorial to almost everyone for free under the terms of an open license. Just please be so kind to contact me. + +## License (Short) + +The license is based on [CC-BY-NC](https://creativecommons.org/licenses/by-nc/4.0/legalcode). + +It gives the right to: - **Share** – copy and redistribute the tutorial in any medium or material. - **Adapt** – remix, transform, and build upon the material. Under the following terms: -- **Attribution** — You must give appropriate credit, provide a link to the license, and indicate if changes were made. You may do so in any reasonable manner, but not in any way that suggests the licensor endorses you or your use. +- **Attribution** — You must give appropriate credit. You may do so in any reasonable manner, but not in any way that suggests the licensor endorses you or your use. - **NonCommercial** — You may not use the material for commercial purposes. -- **ShareAlike** — If you remix, transform, or build upon the material, you must distribute your contributions under the same license as the original. + +## License (Legal) + +By exercising the Licensed Rights (defined below), You accept and agree to be bound by the terms and conditions of this license ("License"). To the extent this License may be interpreted as a contract, You are granted the Licensed Rights in consideration of Your acceptance of these terms and conditions, and the Licensor grants You such rights in consideration of benefits the Licensor receives from making the Licensed Material available under these terms and conditions. + +### Section 1 – Definitions. + +a. __Adapted Material__ means material subject to Copyright and Similar Rights that is derived from or based upon the Licensed Material and in which the Licensed Material is translated, altered, arranged, transformed, or otherwise modified in a manner requiring permission under the Copyright and Similar Rights held by the Licensor. For purposes of this License, where the Licensed Material is a musical work, performance, or sound recording, Adapted Material is always produced where the Licensed Material is synched in timed relation with a moving image. + +b. __Adapter's License__ means the license You apply to Your Copyright and Similar Rights in Your contributions to Adapted Material in accordance with the terms and conditions of this License. + +c. __Copyright and Similar Rights__ means copyright and/or similar rights closely related to copyright including, without limitation, performance, broadcast, sound recording, and Sui Generis Database Rights, without regard to how the rights are labeled or categorized. For purposes of this License, the rights specified in Section 2(b)(1)-(2) are not Copyright and Similar Rights. + +d. __Effective Technological Measures__ means those measures that, in the absence of proper authority, may not be circumvented under laws fulfilling obligations under Article 11 of the WIPO Copyright Treaty adopted on December 20, 1996, and/or similar international agreements. + +e. __Exceptions and Limitations__ means fair use, fair dealing, and/or any other exception or limitation to Copyright and Similar Rights that applies to Your use of the Licensed Material. + +f. __Licensed Material__ means the artistic or literary work, database, or other material to which the Licensor applied this License. + +g. __Licensed Rights__ means the rights granted to You subject to the terms and conditions of this License, which are limited to all Copyright and Similar Rights that apply to Your use of the Licensed Material and that the Licensor has authority to license. + +h. __Licensor__ means the individual(s) or entity(ies) granting rights under this License. + +i. __NonCommercial__ means not primarily intended for or directed towards commercial advantage or monetary compensation. For purposes of this License, the exchange of the Licensed Material for other material subject to Copyright and Similar Rights by digital file-sharing or similar means is NonCommercial provided there is no payment of monetary compensation in connection with the exchange. + +j. __Share__ means to provide material to the public by any means or process that requires permission under the Licensed Rights, such as reproduction, public display, public performance, distribution, dissemination, communication, or importation, and to make material available to the public including in ways that members of the public may access the material from a place and at a time individually chosen by them. + +k. __Sui Generis Database Rights__ means rights other than copyright resulting from Directive 96/9/EC of the European Parliament and of the Council of 11 March 1996 on the legal protection of databases, as amended and/or succeeded, as well as other essentially equivalent rights anywhere in the world. + +l. __You__ means the individual or entity exercising the Licensed Rights under this License. Your has a corresponding meaning. + +### Section 2 – Scope. + +a. ___License grant.___ + + 1. Subject to the terms and conditions of this License, the Licensor hereby grants You a worldwide, royalty-free, non-sublicensable, non-exclusive license to exercise the Licensed Rights in the Licensed Material to: + + A. reproduce and Share the Licensed Material, in whole or in part, for NonCommercial purposes only; and + + B. produce, reproduce, and Share Adapted Material for NonCommercial purposes only. + + 2. __Exceptions and Limitations.__ For the avoidance of doubt, where Exceptions and Limitations apply to Your use, this License does not apply, and You do not need to comply with its terms and conditions. + + 3. __Term.__ The term of this License is specified in Section 6(a). + + 4. __Media and formats; technical modifications allowed.__ The Licensor authorizes You to exercise the Licensed Rights in all media and formats whether now known or hereafter created, and to make technical modifications necessary to do so. The Licensor waives and/or agrees not to assert any right or authority to forbid You from making technical modifications necessary to exercise the Licensed Rights, including technical modifications necessary to circumvent Effective Technological Measures. For purposes of this License, simply making modifications authorized by this Section 2(a)(4) never produces Adapted Material. + + 5. __No endorsement.__ Nothing in this License constitutes or may be construed as permission to assert or imply that You are, or that Your use of the Licensed Material is, connected with, or sponsored, endorsed, or granted official status by, the Licensor or others designated to receive attribution as provided in Section 3. + +b. ___Other rights.___ + + 1. Moral rights, such as the right of integrity, are not licensed under this License, nor are publicity, privacy, and/or other similar personality rights; however, to the extent possible, the Licensor waives and/or agrees not to assert any such rights held by the Licensor to the limited extent necessary to allow You to exercise the Licensed Rights, but not otherwise. + + 2. Patent and trademark rights are not licensed under this License. + + 3. To the extent possible, the Licensor waives any right to collect royalties from You for the exercise of the Licensed Rights, whether directly or through a collecting society under any voluntary or waivable statutory or compulsory licensing scheme. In all other cases the Licensor expressly reserves any right to collect such royalties, including when the Licensed Material is used other than for NonCommercial purposes. + +### Section 3 – License Conditions. + +Your exercise of the Licensed Rights is expressly made subject to the following conditions. + +1. If You Share the Licensed Material (including in modified form), You must attribute the Licensor by adding: + + i. identification of the creator(s) of the Licensed Material and any others designated to receive attribution, in any reasonable manner requested by the Licensor (including by pseudonym if designated); + + ii. a URI or hyperlink to the Licensed Material to the extent reasonably practicable; + +2. You may satisfy the conditions in Section 3(1) in any reasonable manner based on the medium, means, and context in which You Share the Licensed Material. For example, it may be reasonable to satisfy the conditions by providing a URI or hyperlink to a resource that includes the required information. + +3. If requested by the Licensor, You must remove any of the information required by Section 3(1) to the extent reasonably practicable. + +### Section 4 – Sui Generis Database Rights. + +Where the Licensed Rights include Sui Generis Database Rights that apply to Your use of the Licensed Material: + +a. for the avoidance of doubt, Section 2(a)(1) grants You the right to extract, reuse, reproduce, and Share all or a substantial portion of the contents of the database for NonCommercial purposes only; + +b. if You include all or a substantial portion of the database contents in a database in which You have Sui Generis Database Rights, then the database in which You have Sui Generis Database Rights (but not its individual contents) is Adapted Material; and + +c. You must comply with the conditions in Section 3 if You Share all or a substantial portion of the contents of the database. + +For the avoidance of doubt, this Section 4 supplements and does not replace Your obligations under this License where the Licensed Rights include other Copyright and Similar Rights. + +### Section 5 – Disclaimer of Warranties and Limitation of Liability. + +a. __Unless otherwise separately undertaken by the Licensor, to the extent possible, the Licensor offers the Licensed Material as-is and as-available, and makes no representations or warranties of any kind concerning the Licensed Material, whether express, implied, statutory, or other. This includes, without limitation, warranties of title, merchantability, fitness for a particular purpose, non-infringement, absence of latent or other defects, accuracy, or the presence or absence of errors, whether or not known or discoverable. Where disclaimers of warranties are not allowed in full or in part, this disclaimer may not apply to You.__ + +b. __To the extent possible, in no event will the Licensor be liable to You on any legal theory (including, without limitation, negligence) or otherwise for any direct, special, indirect, incidental, consequential, punitive, exemplary, or other losses, costs, expenses, or damages arising out of this License or use of the Licensed Material, even if the Licensor has been advised of the possibility of such losses, costs, expenses, or damages. Where a limitation of liability is not allowed in full or in part, this limitation may not apply to You.__ + +c. The disclaimer of warranties and limitation of liability provided above shall be interpreted in a manner that, to the extent possible, most closely approximates an absolute disclaimer and waiver of all liability. + +### Section 6 – Term and Termination. + +a. This License applies for the term of the Copyright and Similar Rights licensed here. However, if You fail to comply with this License, then Your rights under this License terminate automatically. + +b. Where Your right to use the Licensed Material has terminated under Section 6(a), it reinstates: + + 1. automatically as of the date the violation is cured, provided it is cured within 30 days of Your discovery of the violation; or + + 2. upon express reinstatement by the Licensor. + + For the avoidance of doubt, this Section 6(b) does not affect any right the Licensor may have to seek remedies for Your violations of this License. + +c. Notwithstanding the above, the Licensor reserves the right to terminate this License with respect to You if the Licensor expressly notifies You of the termination. + +d. For the avoidance of doubt, the Licensor may also offer the Licensed Material under separate terms or conditions or stop distributing the Licensed Material at any time. + +e. Sections 1, 5, 6, 7, and 8 survive termination of this License. + +### Section 7 – Other Terms and Conditions. + +a. The Licensor shall not be bound by any additional or different terms or conditions communicated by You unless expressly agreed. + +b. Any arrangements, understandings, or agreements regarding the Licensed Material not stated herein are separate from and independent of the terms and conditions of this License. + +### Section 8 – Interpretation. + +a. For the avoidance of doubt, this License does not, and shall not be interpreted to, reduce, limit, restrict, or impose conditions on any use of the Licensed Material that could lawfully be made without permission under this License. + +b. To the extent possible, if any provision of this License is deemed unenforceable, it shall be automatically reformed to the minimum extent necessary to make it enforceable. If the provision cannot be reformed, it shall be severed from this License without affecting the enforceability of the remaining terms and conditions. + +c. No term or condition of this License will be waived and no failure to comply consented to unless expressly agreed to by the Licensor. + +d. Nothing in this License constitutes or may be interpreted as a limitation upon, or waiver of, any privileges and immunities that apply to the Licensor or You, including from the legal processes of any jurisdiction or authority. diff --git a/README.md b/README.md index 98983b623..cc2e55f67 100755 --- a/README.md +++ b/README.md @@ -5,6 +5,7 @@ Dette oppbevaringsstedet er vertsplass for oversettelsen av <https://javascript. **Slik kan du bidra:** +<<<<<<< HEAD - Sjekk ut [Den Norske Oversettelses fremdriften](https://github.com/javascript-tutorial/no.javascript.info/issues/1) issue. - Velg en umarkert artikkel du har lyst til å oversette. - Legg til en kommentar ved artikkelens navn i issue, f.eks `An Introduction to JavaScript`. @@ -14,28 +15,49 @@ Dette oppbevaringsstedet er vertsplass for oversettelsen av <https://javascript. - PR tittel burde være lik tittelen til artikkelen du oversetter, bot'en vil skrive nummeret til issue. Vær grei å la vedlikeholdere gå gjennom og merge, eller foreslå endringer i oversettelsen din. +======= +See <https://javascript.info/translate> for the details. +>>>>>>> 540d753e90789205fc6e75c502f68382c87dea9b Hvis vedlikeholdere ikke svarer, eller du har lyst til å bli en vedlikeholder, kontakt oss i [hovedrepoet](https://github.com/javascript-tutorial/en.javascript.info/issues/new). **La andre få vite hva du oversetter, i meldingbordet, eller chat på ditt språk. Inviter de til å bli med!** +<<<<<<< HEAD 🎉 Tusen takk! Ditt navn og størrelsen på ditt bidrag vil dukke opp i "om prosjekt" delen av nettsiden når dette blir publisert. +======= +Something's wrong? A topic is missing? Explain it to people, add it as PR 👏 + +**You can edit the text in any editor.** The tutorial uses an enhanced "markdown" format, easy to grasp. And if you want to see how it looks on-site, there's a server to run the tutorial locally at <https://github.com/javascript-tutorial/server>. +>>>>>>> 540d753e90789205fc6e75c502f68382c87dea9b P.S. Hele listen av språk kan finnes her <https://javascript.info/translate>. ## Struktur +<<<<<<< HEAD Hvert kapittel, en artikkel eller oppgave holder til i sin egen mappe. Mappen sitt har navnet `N-url`, hvor `N` - står for nummer for hvordan (artiklene organiseres), og `url` er URL-stien på siden. +======= +Every chapter, article, or task has its folder. + +The folder is named like `N-url`, where `N` is a number for the sorting purposes and `URL` is the URL part with the title of the material. +>>>>>>> 540d753e90789205fc6e75c502f68382c87dea9b Hver mappe har en av følgende filer: +<<<<<<< HEAD - `index.md` for en seksjon, - `article.md` for en artikkel, - `task.md` for en oppgave (+`solution.md` med løsningsteksten hvis det finnes en). +======= + - `index.md` stands for a chapter + - `article.md` stands for an article + - `task.md` stands for a task (solution must be provided in `solution.md` file as well) +>>>>>>> 540d753e90789205fc6e75c502f68382c87dea9b En fil starter med `# Tittel overskrift`, og så er teksten skrevet i Markdown-lignende format, redigerbar i hvilken som helst text-editor. @@ -112,6 +134,7 @@ Noen filer, vanligvis oppgaver, har YAML metadata definert i toppen, markert med ```md importance: 5 +<<<<<<< HEAD --- ... ``` @@ -133,3 +156,8 @@ Vennligst ikke oversett eller fjern `[#...]` delen, dette er for URL ankerpunkte Du kan kjøre opplæringsdelens server lokalt for å se hvordan oversettelsene dine ser ut. Serveren og installasjonsinstrukser kan finnes her: <https://github.com/javascript-tutorial/server>. +======= +--- +♥ +Ilya Kantor @iliakan +>>>>>>> 540d753e90789205fc6e75c502f68382c87dea9b diff --git a/css.md b/css.md new file mode 100644 index 000000000..6a6316e69 --- /dev/null +++ b/css.md @@ -0,0 +1,4 @@ + +# CSS for JS developers + +- Outline diff --git a/figures.sketch b/figures.sketch index c740ac577..104333192 100644 Binary files a/figures.sketch and b/figures.sketch differ diff --git a/svgs.zip b/svgs.zip new file mode 100644 index 000000000..46eeb9862 Binary files /dev/null and b/svgs.zip differ