From da647a31d3f265287dbaf3cac6adc8a7272be68c Mon Sep 17 00:00:00 2001 From: damithc Date: Tue, 12 Sep 2023 01:20:47 +0800 Subject: [PATCH 001/301] Migrate docs to MarkBind Let's migrate the docs site from Jekyll to MarkBind. Primary author: @tlylt in se-edu/addressbook-level3/pull/156 Further tweaks: @damithc in se-edu/addressbook-level3/pull/206 --- .github/workflows/docs.yml | 25 + .gitignore | 1 + docs/.gitignore | 23 + docs/AboutUs.md | 6 +- docs/Configuration.md | 6 +- docs/DevOps.md | 13 +- docs/DeveloperGuide.md | 114 +- docs/Documentation.md | 28 +- docs/Gemfile | 10 - docs/Logging.md | 6 +- docs/SettingUp.md | 26 +- docs/Testing.md | 19 +- docs/UserGuide.md | 50 +- docs/_config.yml | 15 - docs/_data/projects.yml | 23 - docs/_includes/custom-head.html | 6 - docs/_includes/head.html | 12 - docs/_includes/header.html | 36 - docs/_layouts/alt-page.html | 14 - docs/_layouts/default.html | 18 - docs/_layouts/page.html | 14 - docs/_markbind/layouts/default.md | 66 + docs/_markbind/variables.json | 3 + docs/_markbind/variables.md | 4 + docs/_sass/minima/_base.scss | 295 - docs/_sass/minima/_layout.scss | 263 - docs/_sass/minima/custom-mixins.scss | 21 - docs/_sass/minima/custom-styles.scss | 34 - docs/_sass/minima/custom-variables.scss | 76 - docs/_sass/minima/initialize.scss | 51 - docs/_sass/minima/skins/classic.scss | 84 - docs/_sass/minima/skins/solarized-dark.scss | 4 - docs/_sass/minima/skins/solarized.scss | 133 - docs/assets/css/style.scss | 12 - docs/images/ArchitectureDiagram.png | Bin 19887 -> 0 bytes docs/images/ArchitectureSequenceDiagram.png | Bin 15175 -> 0 bytes docs/images/BetterModelClassDiagram.png | Bin 14116 -> 0 bytes docs/images/CommitActivityDiagram.png | Bin 16227 -> 0 bytes docs/images/ComponentManagers.png | Bin 17411 -> 0 bytes docs/images/DeleteSequenceDiagram.png | Bin 28536 -> 0 bytes docs/images/LogicClassDiagram.png | Bin 36640 -> 0 bytes docs/images/LogicStorageDIP.png | Bin 5808 -> 0 bytes docs/images/ModelClassDiagram.png | Bin 27204 -> 0 bytes docs/images/ParserClasses.png | Bin 29478 -> 0 bytes docs/images/StorageClassDiagram.png | Bin 29426 -> 0 bytes docs/images/UiClassDiagram.png | Bin 48363 -> 0 bytes docs/images/UndoRedoState0.png | Bin 6619 -> 0 bytes docs/images/UndoRedoState1.png | Bin 7454 -> 0 bytes docs/images/UndoRedoState2.png | Bin 7855 -> 0 bytes docs/images/UndoRedoState3.png | Bin 7588 -> 0 bytes docs/images/UndoRedoState4.png | Bin 7605 -> 0 bytes docs/images/UndoRedoState5.png | Bin 9427 -> 0 bytes docs/images/UndoSequenceDiagram.png | Bin 27508 -> 0 bytes docs/images/tracing/LogicSequenceDiagram.png | Bin 16688 -> 0 bytes docs/index.md | 6 +- docs/package-lock.json | 8587 ++++++++++++++++++ docs/package.json | 14 + docs/site.json | 29 + docs/stylesheets/main.css | 144 + docs/team/johndoe.md | 4 +- docs/tutorials/AddRemark.md | 49 +- docs/tutorials/RemovingFields.md | 23 +- docs/tutorials/TracingCode.md | 76 +- 63 files changed, 9134 insertions(+), 1309 deletions(-) create mode 100644 .github/workflows/docs.yml create mode 100644 docs/.gitignore delete mode 100644 docs/Gemfile delete mode 100644 docs/_config.yml delete mode 100644 docs/_data/projects.yml delete mode 100644 docs/_includes/custom-head.html delete mode 100644 docs/_includes/head.html delete mode 100644 docs/_includes/header.html delete mode 100644 docs/_layouts/alt-page.html delete mode 100644 docs/_layouts/default.html delete mode 100644 docs/_layouts/page.html create mode 100644 docs/_markbind/layouts/default.md create mode 100644 docs/_markbind/variables.json create mode 100644 docs/_markbind/variables.md delete mode 100644 docs/_sass/minima/_base.scss delete mode 100644 docs/_sass/minima/_layout.scss delete mode 100644 docs/_sass/minima/custom-mixins.scss delete mode 100644 docs/_sass/minima/custom-styles.scss delete mode 100644 docs/_sass/minima/custom-variables.scss delete mode 100644 docs/_sass/minima/initialize.scss delete mode 100644 docs/_sass/minima/skins/classic.scss delete mode 100644 docs/_sass/minima/skins/solarized-dark.scss delete mode 100644 docs/_sass/minima/skins/solarized.scss delete mode 100644 docs/assets/css/style.scss delete mode 100644 docs/images/ArchitectureDiagram.png delete mode 100644 docs/images/ArchitectureSequenceDiagram.png delete mode 100644 docs/images/BetterModelClassDiagram.png delete mode 100644 docs/images/CommitActivityDiagram.png delete mode 100644 docs/images/ComponentManagers.png delete mode 100644 docs/images/DeleteSequenceDiagram.png delete mode 100644 docs/images/LogicClassDiagram.png delete mode 100644 docs/images/LogicStorageDIP.png delete mode 100644 docs/images/ModelClassDiagram.png delete mode 100644 docs/images/ParserClasses.png delete mode 100644 docs/images/StorageClassDiagram.png delete mode 100644 docs/images/UiClassDiagram.png delete mode 100644 docs/images/UndoRedoState0.png delete mode 100644 docs/images/UndoRedoState1.png delete mode 100644 docs/images/UndoRedoState2.png delete mode 100644 docs/images/UndoRedoState3.png delete mode 100644 docs/images/UndoRedoState4.png delete mode 100644 docs/images/UndoRedoState5.png delete mode 100644 docs/images/UndoSequenceDiagram.png delete mode 100644 docs/images/tracing/LogicSequenceDiagram.png create mode 100644 docs/package-lock.json create mode 100644 docs/package.json create mode 100644 docs/site.json create mode 100644 docs/stylesheets/main.css diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml new file mode 100644 index 00000000000..57737a615fc --- /dev/null +++ b/.github/workflows/docs.yml @@ -0,0 +1,25 @@ +name: MarkBind Action + +on: + push: + branches: + - master + +jobs: + build_and_deploy: + runs-on: ubuntu-latest + steps: + - name: Install Graphviz + run: sudo apt-get install graphviz + - name: Install Java + uses: actions/setup-java@v3 + with: + java-version: '11' + distribution: 'temurin' + - name: Build & Deploy MarkBind site + uses: MarkBind/markbind-action@v2 + with: + token: ${{ secrets.GITHUB_TOKEN }} + rootDirectory: './docs' + baseUrl: '/addressbook-level3' # replace with your repo name + version: '^5.1.0' diff --git a/.gitignore b/.gitignore index 284c4ca7cd9..eab4c7db6a5 100644 --- a/.gitignore +++ b/.gitignore @@ -21,3 +21,4 @@ src/test/data/sandbox/ # MacOS custom attributes files created by Finder .DS_Store docs/_site/ +docs/_markbind/logs/ diff --git a/docs/.gitignore b/docs/.gitignore new file mode 100644 index 00000000000..1748e487fbd --- /dev/null +++ b/docs/.gitignore @@ -0,0 +1,23 @@ +# Logs +logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* +lerna-debug.log* +_markbind/logs/ + +# Dependency directories +node_modules/ + +# Production build files (change if you output the build to a different directory) +_site/ + +# Env +.env +.env.local + +# IDE configs +.vscode/ +.idea/* +*.iml diff --git a/docs/AboutUs.md b/docs/AboutUs.md index 1c9514e966a..8cf4ab68e9e 100644 --- a/docs/AboutUs.md +++ b/docs/AboutUs.md @@ -1,8 +1,10 @@ --- -layout: page -title: About Us + layout: default.md + title: "About Us" --- +# About Us + We are a team based in the [School of Computing, National University of Singapore](http://www.comp.nus.edu.sg). You can reach us at the email `seer[at]comp.nus.edu.sg` diff --git a/docs/Configuration.md b/docs/Configuration.md index 13cf0faea16..32f6255f3b9 100644 --- a/docs/Configuration.md +++ b/docs/Configuration.md @@ -1,6 +1,8 @@ --- -layout: page -title: Configuration guide + layout: default.md + title: "Configuration guide" --- +# Configuration guide + Certain properties of the application can be controlled (e.g user preferences file location, logging level) through the configuration file (default: `config.json`). diff --git a/docs/DevOps.md b/docs/DevOps.md index d2fd91a6001..8228c845e86 100644 --- a/docs/DevOps.md +++ b/docs/DevOps.md @@ -1,12 +1,15 @@ --- -layout: page -title: DevOps guide + layout: default.md + title: "DevOps guide" + pageNav: 3 --- -* Table of Contents -{:toc} +# DevOps guide --------------------------------------------------------------------------------------------------------------------- + + + + ## Build automation diff --git a/docs/DeveloperGuide.md b/docs/DeveloperGuide.md index 8a861859bfd..a5a11185ae1 100644 --- a/docs/DeveloperGuide.md +++ b/docs/DeveloperGuide.md @@ -1,15 +1,19 @@ --- -layout: page -title: Developer Guide + layout: default.md + title: "Developer Guide" + pageNav: 3 --- -* Table of Contents -{:toc} + +# AB-3 Developer Guide + + + -------------------------------------------------------------------------------------------------------------------- ## **Acknowledgements** -* {list here sources of all reused/adapted ideas, code, documentation, and third-party libraries -- include links to the original source as well} +_{ list here sources of all reused/adapted ideas, code, documentation, and third-party libraries -- include links to the original source as well }_ -------------------------------------------------------------------------------------------------------------------- @@ -21,14 +25,9 @@ Refer to the guide [_Setting up and getting started_](SettingUp.md). ## **Design** -
- -:bulb: **Tip:** The `.puml` files used to create diagrams in this document `docs/diagrams` folder. Refer to the [_PlantUML Tutorial_ at se-edu/guides](https://se-education.org/guides/tutorials/plantUml.html) to learn how to create and edit diagrams. -
- ### Architecture - + The ***Architecture Diagram*** given above explains the high-level design of the App. @@ -53,7 +52,7 @@ The bulk of the app's work is done by the following four components: The *Sequence Diagram* below shows how the components interact with each other for the scenario where the user issues the command `delete 1`. - + Each of the four main components (also shown in the diagram above), @@ -62,7 +61,7 @@ Each of the four main components (also shown in the diagram above), For example, the `Logic` component defines its API in the `Logic.java` interface and implements its functionality using the `LogicManager.java` class which follows the `Logic` interface. Other components interact with a given component through its interface rather than the concrete class (reason: to prevent outside component's being coupled to the implementation of a component), as illustrated in the (partial) class diagram below. - + The sections below give more details of each component. @@ -70,7 +69,7 @@ The sections below give more details of each component. The **API** of this component is specified in [`Ui.java`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/ui/Ui.java) -![Structure of the UI Component](images/UiClassDiagram.png) + The UI consists of a `MainWindow` that is made up of parts e.g.`CommandBox`, `ResultDisplay`, `PersonListPanel`, `StatusBarFooter` etc. All these, including the `MainWindow`, inherit from the abstract `UiPart` class which captures the commonalities between classes that represent parts of the visible GUI. @@ -89,14 +88,16 @@ The `UI` component, Here's a (partial) class diagram of the `Logic` component: - + The sequence diagram below illustrates the interactions within the `Logic` component, taking `execute("delete 1")` API call as an example. -![Interactions Inside the Logic Component for the `delete 1` Command](images/DeleteSequenceDiagram.png) + + + -
:information_source: **Note:** The lifeline for `DeleteCommandParser` should end at the destroy marker (X) but due to a limitation of PlantUML, the lifeline reaches the end of diagram. -
+**Note:** The lifeline for `DeleteCommandParser` should end at the destroy marker (X) but due to a limitation of PlantUML, the lifeline reaches the end of diagram. +
How the `Logic` component works: @@ -107,7 +108,7 @@ How the `Logic` component works: Here are the other classes in `Logic` (omitted from the class diagram above) that are used for parsing a user command: - + How the parsing works: * When called upon to parse a user command, the `AddressBookParser` class creates an `XYZCommandParser` (`XYZ` is a placeholder for the specific command name e.g., `AddCommandParser`) which uses the other classes shown above to parse the user command and create a `XYZCommand` object (e.g., `AddCommand`) which the `AddressBookParser` returns back as a `Command` object. @@ -116,7 +117,7 @@ How the parsing works: ### Model component **API** : [`Model.java`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/model/Model.java) - + The `Model` component, @@ -126,18 +127,20 @@ The `Model` component, * stores a `UserPref` object that represents the user’s preferences. This is exposed to the outside as a `ReadOnlyUserPref` objects. * does not depend on any of the other three components (as the `Model` represents data entities of the domain, they should make sense on their own without depending on other components) -
:information_source: **Note:** An alternative (arguably, a more OOP) model is given below. It has a `Tag` list in the `AddressBook`, which `Person` references. This allows `AddressBook` to only require one `Tag` object per unique tag, instead of each `Person` needing their own `Tag` objects.
+ + +**Note:** An alternative (arguably, a more OOP) model is given below. It has a `Tag` list in the `AddressBook`, which `Person` references. This allows `AddressBook` to only require one `Tag` object per unique tag, instead of each `Person` needing their own `Tag` objects.
- + -
+ ### Storage component **API** : [`Storage.java`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/storage/Storage.java) - + The `Storage` component, * can save both address book data and user preference data in JSON format, and read them back into corresponding objects. @@ -170,54 +173,63 @@ Given below is an example usage scenario and how the undo/redo mechanism behaves Step 1. The user launches the application for the first time. The `VersionedAddressBook` will be initialized with the initial address book state, and the `currentStatePointer` pointing to that single address book state. -![UndoRedoState0](images/UndoRedoState0.png) + Step 2. The user executes `delete 5` command to delete the 5th person in the address book. The `delete` command calls `Model#commitAddressBook()`, causing the modified state of the address book after the `delete 5` command executes to be saved in the `addressBookStateList`, and the `currentStatePointer` is shifted to the newly inserted address book state. -![UndoRedoState1](images/UndoRedoState1.png) + Step 3. The user executes `add n/David …​` to add a new person. The `add` command also calls `Model#commitAddressBook()`, causing another modified address book state to be saved into the `addressBookStateList`. -![UndoRedoState2](images/UndoRedoState2.png) + -
:information_source: **Note:** If a command fails its execution, it will not call `Model#commitAddressBook()`, so the address book state will not be saved into the `addressBookStateList`. + -
+**Note:** If a command fails its execution, it will not call `Model#commitAddressBook()`, so the address book state will not be saved into the `addressBookStateList`. + + Step 4. The user now decides that adding the person was a mistake, and decides to undo that action by executing the `undo` command. The `undo` command will call `Model#undoAddressBook()`, which will shift the `currentStatePointer` once to the left, pointing it to the previous address book state, and restores the address book to that state. -![UndoRedoState3](images/UndoRedoState3.png) + + + + -
:information_source: **Note:** If the `currentStatePointer` is at index 0, pointing to the initial AddressBook state, then there are no previous AddressBook states to restore. The `undo` command uses `Model#canUndoAddressBook()` to check if this is the case. If so, it will return an error to the user rather +**Note:** If the `currentStatePointer` is at index 0, pointing to the initial AddressBook state, then there are no previous AddressBook states to restore. The `undo` command uses `Model#canUndoAddressBook()` to check if this is the case. If so, it will return an error to the user rather than attempting to perform the undo. -
+
The following sequence diagram shows how the undo operation works: -![UndoSequenceDiagram](images/UndoSequenceDiagram.png) + -
:information_source: **Note:** The lifeline for `UndoCommand` should end at the destroy marker (X) but due to a limitation of PlantUML, the lifeline reaches the end of diagram. + -
+**Note:** The lifeline for `UndoCommand` should end at the destroy marker (X) but due to a limitation of PlantUML, the lifeline reaches the end of diagram. + + The `redo` command does the opposite — it calls `Model#redoAddressBook()`, which shifts the `currentStatePointer` once to the right, pointing to the previously undone state, and restores the address book to that state. -
:information_source: **Note:** If the `currentStatePointer` is at index `addressBookStateList.size() - 1`, pointing to the latest address book state, then there are no undone AddressBook states to restore. The `redo` command uses `Model#canRedoAddressBook()` to check if this is the case. If so, it will return an error to the user rather than attempting to perform the redo. + + +**Note:** If the `currentStatePointer` is at index `addressBookStateList.size() - 1`, pointing to the latest address book state, then there are no undone AddressBook states to restore. The `redo` command uses `Model#canRedoAddressBook()` to check if this is the case. If so, it will return an error to the user rather than attempting to perform the redo. -
+ Step 5. The user then decides to execute the command `list`. Commands that do not modify the address book, such as `list`, will usually not call `Model#commitAddressBook()`, `Model#undoAddressBook()` or `Model#redoAddressBook()`. Thus, the `addressBookStateList` remains unchanged. -![UndoRedoState4](images/UndoRedoState4.png) + Step 6. The user executes `clear`, which calls `Model#commitAddressBook()`. Since the `currentStatePointer` is not pointing at the end of the `addressBookStateList`, all address book states after the `currentStatePointer` will be purged. Reason: It no longer makes sense to redo the `add n/David …​` command. This is the behavior that most modern desktop applications follow. -![UndoRedoState5](images/UndoRedoState5.png) + The following activity diagram summarizes what happens when a user executes a new command: - + #### Design considerations: @@ -270,14 +282,14 @@ _{Explain here how the data archiving feature will be implemented}_ Priorities: High (must have) - `* * *`, Medium (nice to have) - `* *`, Low (unlikely to have) - `*` -| Priority | As a …​ | I want to …​ | So that I can…​ | -| -------- | ------------------------------------------ | ------------------------------ | ---------------------------------------------------------------------- | -| `* * *` | new user | see usage instructions | refer to instructions when I forget how to use the App | -| `* * *` | user | add a new person | | -| `* * *` | user | delete a person | remove entries that I no longer need | -| `* * *` | user | find a person by name | locate details of persons without having to go through the entire list | -| `* *` | user | hide private contact details | minimize chance of someone else seeing them by accident | -| `*` | user with many persons in the address book | sort persons by name | locate a person easily | +| Priority | As a …​ | I want to …​ | So that I can…​ | +|----------|--------------------------------------------|------------------------------|------------------------------------------------------------------------| +| `* * *` | new user | see usage instructions | refer to instructions when I forget how to use the App | +| `* * *` | user | add a new person | | +| `* * *` | user | delete a person | remove entries that I no longer need | +| `* * *` | user | find a person by name | locate details of persons without having to go through the entire list | +| `* *` | user | hide private contact details | minimize chance of someone else seeing them by accident | +| `*` | user with many persons in the address book | sort persons by name | locate a person easily | *{More to be added}* @@ -329,10 +341,12 @@ Priorities: High (must have) - `* * *`, Medium (nice to have) - `* *`, Low (unli Given below are instructions to test the app manually. -
:information_source: **Note:** These instructions only provide a starting point for testers to work on; + + +**Note:** These instructions only provide a starting point for testers to work on; testers are expected to do more *exploratory* testing. -
+ ### Launch and shutdown diff --git a/docs/Documentation.md b/docs/Documentation.md index 3e68ea364e7..082e652d947 100644 --- a/docs/Documentation.md +++ b/docs/Documentation.md @@ -1,29 +1,21 @@ --- -layout: page -title: Documentation guide + layout: default.md + title: "Documentation guide" + pageNav: 3 --- -**Setting up and maintaining the project website:** - -* We use [**Jekyll**](https://jekyllrb.com/) to manage documentation. -* The `docs/` folder is used for documentation. -* To learn how set it up and maintain the project website, follow the guide [_[se-edu/guides] **Using Jekyll for project documentation**_](https://se-education.org/guides/tutorials/jekyll.html). -* Note these points when adapting the documentation to a different project/product: - * The 'Site-wide settings' section of the page linked above has information on how to update site-wide elements such as the top navigation bar. - * :bulb: In addition to updating content files, you might have to update the config files `docs\_config.yml` and `docs\_sass\minima\_base.scss` (which contains a reference to `AB-3` that comes into play when converting documentation pages to PDF format). -* If you are using Intellij for editing documentation files, you can consider enabling 'soft wrapping' for `*.md` files, as explained in [_[se-edu/guides] **Intellij IDEA: Useful settings**_](https://se-education.org/guides/tutorials/intellijUsefulSettings.html#enabling-soft-wrapping) +# Documentation Guide +* We use [**MarkBind**](https://markbind.org/) to manage documentation. +* The `docs/` folder contains the source files for the documentation website. +* To learn how set it up and maintain the project website, follow the guide [[se-edu/guides] Working with Forked MarkBind sites](https://se-education.org/guides/tutorials/markbind-forked-sites.html) for project documentation. **Style guidance:** * Follow the [**_Google developer documentation style guide_**](https://developers.google.com/style). +* Also relevant is the [_se-edu/guides **Markdown coding standard**_](https://se-education.org/guides/conventions/markdown.html). -* Also relevant is the [_[se-edu/guides] **Markdown coding standard**_](https://se-education.org/guides/conventions/markdown.html) - -**Diagrams:** - -* See the [_[se-edu/guides] **Using PlantUML**_](https://se-education.org/guides/tutorials/plantUml.html) -**Converting a document to the PDF format:** +**Converting to PDF** -* See the guide [_[se-edu/guides] **Saving web documents as PDF files**_](https://se-education.org/guides/tutorials/savingPdf.html) +* See the guide [_se-edu/guides **Saving web documents as PDF files**_](https://se-education.org/guides/tutorials/savingPdf.html). diff --git a/docs/Gemfile b/docs/Gemfile deleted file mode 100644 index c8385d85874..00000000000 --- a/docs/Gemfile +++ /dev/null @@ -1,10 +0,0 @@ -# frozen_string_literal: true - -source "https://rubygems.org" - -git_source(:github) {|repo_name| "https://github.com/#{repo_name}" } - -gem 'jekyll' -gem 'github-pages', group: :jekyll_plugins -gem 'wdm', '~> 0.1.0' if Gem.win_platform? -gem 'webrick' diff --git a/docs/Logging.md b/docs/Logging.md index 5e4fb9bc217..589644ad5c6 100644 --- a/docs/Logging.md +++ b/docs/Logging.md @@ -1,8 +1,10 @@ --- -layout: page -title: Logging guide + layout: default.md + title: "Logging guide" --- +# Logging guide + * We are using `java.util.logging` package for logging. * The `LogsCenter` class is used to manage the logging levels and logging destinations. * The `Logger` for a class can be obtained using `LogsCenter.getLogger(Class)` which will log messages according to the specified logging level. diff --git a/docs/SettingUp.md b/docs/SettingUp.md index 275445bd551..03df0295bd2 100644 --- a/docs/SettingUp.md +++ b/docs/SettingUp.md @@ -1,27 +1,32 @@ --- -layout: page -title: Setting up and getting started + layout: default.md + title: "Setting up and getting started" + pageNav: 3 --- -* Table of Contents -{:toc} +# Setting up and getting started + + -------------------------------------------------------------------------------------------------------------------- ## Setting up the project in your computer -
:exclamation: **Caution:** + +**Caution:** Follow the steps in the following guide precisely. Things will not work out if you deviate in some steps. -
+ First, **fork** this repo, and **clone** the fork into your computer. If you plan to use Intellij IDEA (highly recommended): 1. **Configure the JDK**: Follow the guide [_[se-edu/guides] IDEA: Configuring the JDK_](https://se-education.org/guides/tutorials/intellijJdk.html) to to ensure Intellij is configured to use **JDK 11**. -1. **Import the project as a Gradle project**: Follow the guide [_[se-edu/guides] IDEA: Importing a Gradle project_](https://se-education.org/guides/tutorials/intellijImportGradleProject.html) to import the project into IDEA.
- :exclamation: Note: Importing a Gradle project is slightly different from importing a normal Java project. +1. **Import the project as a Gradle project**: Follow the guide [_[se-edu/guides] IDEA: Importing a Gradle project_](https://se-education.org/guides/tutorials/intellijImportGradleProject.html) to import the project into IDEA. + + Note: Importing a Gradle project is slightly different from importing a normal Java project. + 1. **Verify the setup**: 1. Run the `seedu.address.Main` and try a few commands. 1. [Run the tests](Testing.md) to ensure they all pass. @@ -34,10 +39,11 @@ If you plan to use Intellij IDEA (highly recommended): If using IDEA, follow the guide [_[se-edu/guides] IDEA: Configuring the code style_](https://se-education.org/guides/tutorials/intellijCodeStyle.html) to set up IDEA's coding style to match ours. -
:bulb: **Tip:** + + **Tip:** Optionally, you can follow the guide [_[se-edu/guides] Using Checkstyle_](https://se-education.org/guides/tutorials/checkstyle.html) to find how to use the CheckStyle within IDEA e.g., to report problems _as_ you write code. -
+ 1. **Set up CI** diff --git a/docs/Testing.md b/docs/Testing.md index 8a99e82438a..78ddc57e670 100644 --- a/docs/Testing.md +++ b/docs/Testing.md @@ -1,12 +1,15 @@ --- -layout: page -title: Testing guide + layout: default.md + title: "Testing guide" + pageNav: 3 --- -* Table of Contents -{:toc} +# Testing guide --------------------------------------------------------------------------------------------------------------------- + + + + ## Running tests @@ -19,8 +22,10 @@ There are two ways to run tests. * **Method 2: Using Gradle** * Open a console and run the command `gradlew clean test` (Mac/Linux: `./gradlew clean test`) -
:link: **Link**: Read [this Gradle Tutorial from the se-edu/guides](https://se-education.org/guides/tutorials/gradle.html) to learn more about using Gradle. -
+ + +**Link**: Read [this Gradle Tutorial from the se-edu/guides](https://se-education.org/guides/tutorials/gradle.html) to learn more about using Gradle. + -------------------------------------------------------------------------------------------------------------------- diff --git a/docs/UserGuide.md b/docs/UserGuide.md index 57437026c7b..b3abf0e8722 100644 --- a/docs/UserGuide.md +++ b/docs/UserGuide.md @@ -1,12 +1,15 @@ --- -layout: page -title: User Guide + layout: default.md + title: "User Guide" + pageNav: 3 --- -AddressBook Level 3 (AB3) is a **desktop app for managing contacts, optimized for use via a Command Line Interface** (CLI) while still having the benefits of a Graphical User Interface (GUI). If you can type fast, AB3 can get your contact management tasks done faster than traditional GUI apps. +# AB-3 User Guide -* Table of Contents -{:toc} +AddressBook Level 3 (AB3) is a **desktop app for managing contacts, optimized for use via a Line Interface** (CLI) while still having the benefits of a Graphical User Interface (GUI). If you can type fast, AB3 can get your contact management tasks done faster than traditional GUI apps. + + + -------------------------------------------------------------------------------------------------------------------- @@ -41,9 +44,9 @@ AddressBook Level 3 (AB3) is a **desktop app for managing contacts, optimized fo ## Features -
+ -**:information_source: Notes about the command format:**
+**Notes about the command format:**
* Words in `UPPER_CASE` are the parameters to be supplied by the user.
e.g. in `add n/NAME`, `NAME` is a parameter which can be used as `add n/John Doe`. @@ -61,7 +64,7 @@ AddressBook Level 3 (AB3) is a **desktop app for managing contacts, optimized fo e.g. if the command specifies `help 123`, it will be interpreted as `help`. * If you are using a PDF version of this document, be careful when copying and pasting commands that span multiple lines as space characters surrounding line-breaks may be omitted when copied over to the application. -
+ ### Viewing help : `help` @@ -78,9 +81,10 @@ Adds a person to the address book. Format: `add n/NAME p/PHONE_NUMBER e/EMAIL a/ADDRESS [t/TAG]…​` -
:bulb: **Tip:** -A person can have any number of tags (including 0) -
+ + +**Tip:** A person can have any number of tags (including 0) + Examples: * `add n/John Doe p/98765432 e/johnd@example.com a/John street, block 123, #01-01` @@ -161,9 +165,11 @@ AddressBook data are saved in the hard disk automatically after any command that AddressBook data are saved automatically as a JSON file `[JAR file location]/data/addressbook.json`. Advanced users are welcome to update data directly by editing that data file. -
:exclamation: **Caution:** -If your changes to the data file makes its format invalid, AddressBook will discard all data and start with an empty data file at the next run. Hence, it is recommended to take a backup of the file before editing it. -
+ + +**Caution:** +If your changes to the data file makes its format invalid, AddressBook will discard all data and start with an empty data file at the next run. Hence, it is recommended to take a backup of the file before editing it. + ### Archiving data files `[coming in v2.0]` @@ -186,12 +192,12 @@ _Details coming soon ..._ ## Command summary -Action | Format, Examples ---------|------------------ -**Add** | `add n/NAME p/PHONE_NUMBER e/EMAIL a/ADDRESS [t/TAG]…​`
e.g., `add n/James Ho p/22224444 e/jamesho@example.com a/123, Clementi Rd, 1234665 t/friend t/colleague` -**Clear** | `clear` +Action | Format, Examples +-----------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------- +**Add** | `add n/NAME p/PHONE_NUMBER e/EMAIL a/ADDRESS [t/TAG]…​`
e.g., `add n/James Ho p/22224444 e/jamesho@example.com a/123, Clementi Rd, 1234665 t/friend t/colleague` +**Clear** | `clear` **Delete** | `delete INDEX`
e.g., `delete 3` -**Edit** | `edit INDEX [n/NAME] [p/PHONE_NUMBER] [e/EMAIL] [a/ADDRESS] [t/TAG]…​`
e.g.,`edit 2 n/James Lee e/jameslee@example.com` -**Find** | `find KEYWORD [MORE_KEYWORDS]`
e.g., `find James Jake` -**List** | `list` -**Help** | `help` +**Edit** | `edit INDEX [n/NAME] [p/PHONE_NUMBER] [e/EMAIL] [a/ADDRESS] [t/TAG]…​`
e.g.,`edit 2 n/James Lee e/jameslee@example.com` +**Find** | `find KEYWORD [MORE_KEYWORDS]`
e.g., `find James Jake` +**List** | `list` +**Help** | `help` diff --git a/docs/_config.yml b/docs/_config.yml deleted file mode 100644 index 6bd245d8f4e..00000000000 --- a/docs/_config.yml +++ /dev/null @@ -1,15 +0,0 @@ -title: "AB-3" -theme: minima - -header_pages: - - UserGuide.md - - DeveloperGuide.md - - AboutUs.md - -markdown: kramdown - -repository: "se-edu/addressbook-level3" -github_icon: "images/github-icon.png" - -plugins: - - jemoji diff --git a/docs/_data/projects.yml b/docs/_data/projects.yml deleted file mode 100644 index 8f3e50cb601..00000000000 --- a/docs/_data/projects.yml +++ /dev/null @@ -1,23 +0,0 @@ -- name: "AB-1" - url: https://se-edu.github.io/addressbook-level1 - -- name: "AB-2" - url: https://se-edu.github.io/addressbook-level2 - -- name: "AB-3" - url: https://se-edu.github.io/addressbook-level3 - -- name: "AB-4" - url: https://se-edu.github.io/addressbook-level4 - -- name: "Duke" - url: https://se-edu.github.io/duke - -- name: "Collate" - url: https://se-edu.github.io/collate - -- name: "Book" - url: https://se-edu.github.io/se-book - -- name: "Resources" - url: https://se-edu.github.io/resources diff --git a/docs/_includes/custom-head.html b/docs/_includes/custom-head.html deleted file mode 100644 index 8559a67ffad..00000000000 --- a/docs/_includes/custom-head.html +++ /dev/null @@ -1,6 +0,0 @@ -{% comment %} - Placeholder to allow defining custom head, in principle, you can add anything here, e.g. favicons: - - 1. Head over to https://realfavicongenerator.net/ to add your own favicons. - 2. Customize default _includes/custom-head.html in your source directory and insert the given code snippet. -{% endcomment %} diff --git a/docs/_includes/head.html b/docs/_includes/head.html deleted file mode 100644 index 83ac5326933..00000000000 --- a/docs/_includes/head.html +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - - {%- include custom-head.html -%} - - {{page.title}} - - diff --git a/docs/_includes/header.html b/docs/_includes/header.html deleted file mode 100644 index 33badcd4f99..00000000000 --- a/docs/_includes/header.html +++ /dev/null @@ -1,36 +0,0 @@ - diff --git a/docs/_layouts/alt-page.html b/docs/_layouts/alt-page.html deleted file mode 100644 index 5dbc6ef245f..00000000000 --- a/docs/_layouts/alt-page.html +++ /dev/null @@ -1,14 +0,0 @@ ---- -layout: default ---- -
- -
-

{{ page.alt_title | escape }}

-
- -
- {{ content }} -
- -
diff --git a/docs/_layouts/default.html b/docs/_layouts/default.html deleted file mode 100644 index e092cd572e0..00000000000 --- a/docs/_layouts/default.html +++ /dev/null @@ -1,18 +0,0 @@ - - - - {%- include head.html -%} - - - - {%- include header.html -%} - -
-
- {{ content }} -
-
- - - - diff --git a/docs/_layouts/page.html b/docs/_layouts/page.html deleted file mode 100644 index 01e4b2a93b8..00000000000 --- a/docs/_layouts/page.html +++ /dev/null @@ -1,14 +0,0 @@ ---- -layout: default ---- -
- -
-

{{ page.title | escape }}

-
- -
- {{ content }} -
- -
diff --git a/docs/_markbind/layouts/default.md b/docs/_markbind/layouts/default.md new file mode 100644 index 00000000000..7348aace92c --- /dev/null +++ b/docs/_markbind/layouts/default.md @@ -0,0 +1,66 @@ + + + + +
+ + AB-3 +
  • User Guide
  • +
  • Developer Guide
  • +
  • About Us
  • +
  • :fab-github: +
  • +
  • + +
  • +
    +
    + +
    + +
    + {{ content }} +
    + + +
    + +
    + +
    + [**Powered by** {{MarkBind}}, generated on {{timestamp}}] +
    +
    diff --git a/docs/_markbind/variables.json b/docs/_markbind/variables.json new file mode 100644 index 00000000000..9d89eb0358b --- /dev/null +++ b/docs/_markbind/variables.json @@ -0,0 +1,3 @@ +{ + "jsonVariableExample": "Your variables can be defined here as well" +} diff --git a/docs/_markbind/variables.md b/docs/_markbind/variables.md new file mode 100644 index 00000000000..89ae5318fa4 --- /dev/null +++ b/docs/_markbind/variables.md @@ -0,0 +1,4 @@ + +To inject this HTML segment in your markbind files, use {{ example }} where you want to place it. +More generally, surround the segment's id with double curly braces. + diff --git a/docs/_sass/minima/_base.scss b/docs/_sass/minima/_base.scss deleted file mode 100644 index 0d3f6e80ced..00000000000 --- a/docs/_sass/minima/_base.scss +++ /dev/null @@ -1,295 +0,0 @@ -html { - font-size: $base-font-size; -} - -/** - * Reset some basic elements - */ -body, h1, h2, h3, h4, h5, h6, -p, blockquote, pre, hr, -dl, dd, ol, ul, figure { - margin: 0; - padding: 0; - -} - - - -/** - * Basic styling - */ -body { - font: $base-font-weight #{$base-font-size}/#{$base-line-height} $base-font-family; - color: $text-color; - background-color: $background-color; - -webkit-text-size-adjust: 100%; - -webkit-font-feature-settings: "kern" 1; - -moz-font-feature-settings: "kern" 1; - -o-font-feature-settings: "kern" 1; - font-feature-settings: "kern" 1; - font-kerning: normal; - display: flex; - min-height: 100vh; - flex-direction: column; - overflow-wrap: break-word; -} - - - -/** - * Set `margin-bottom` to maintain vertical rhythm - */ -h1, h2, h3, h4, h5, h6, -p, blockquote, pre, -ul, ol, dl, figure, -%vertical-rhythm { - margin-bottom: $spacing-unit / 2; -} - -hr { - margin-top: $spacing-unit; - margin-bottom: $spacing-unit; -} - -/** - * `main` element - */ -main { - display: block; /* Default value of `display` of `main` element is 'inline' in IE 11. */ -} - - - -/** - * Images - */ -img { - max-width: 100%; - vertical-align: middle; -} - - - -/** - * Figures - */ -figure > img { - display: block; -} - -figcaption { - font-size: $small-font-size; -} - - - -/** - * Lists - */ -ul, ol { - margin-left: $spacing-unit; -} - -li { - > ul, - > ol { - margin-bottom: 0; - } -} - - - -/** - * Headings - */ -h1, h2, h3, h4, h5, h6 { - font-weight: $base-font-weight; -} - - - -/** - * Links - */ -a { - color: $link-base-color; - text-decoration: none; - - &:visited { - color: $link-visited-color; - } - - &:hover { - color: $text-color; - text-decoration: underline; - } - - .social-media-list &:hover { - text-decoration: none; - - .username { - text-decoration: underline; - } - } -} - - -/** - * Blockquotes - */ -blockquote { - color: $brand-color; - border-left: 4px solid $brand-color-light; - padding-left: $spacing-unit / 2; - @include relative-font-size(1.125); - font-style: italic; - - > :last-child { - margin-bottom: 0; - } - - i, em { - font-style: normal; - } -} - - - -/** - * Code formatting - */ -pre, -code { - font-family: $code-font-family; - font-size: 0.9375em; - border: 1px solid $brand-color-light; - border-radius: 3px; - background-color: $code-background-color; -} - -code { - padding: 1px 5px; -} - -pre { - padding: 8px 12px; - overflow-x: auto; - - > code { - border: 0; - padding-right: 0; - padding-left: 0; - } -} - -.highlight { - border-radius: 3px; - background: $code-background-color; - @extend %vertical-rhythm; - - .highlighter-rouge & { - background: $code-background-color; - } -} - - - -/** - * Wrapper - */ -.wrapper { - max-width: calc(#{$content-width} - (#{$spacing-unit})); - margin-right: auto; - margin-left: auto; - padding-right: $spacing-unit / 2; - padding-left: $spacing-unit / 2; - @extend %clearfix; - - @media screen and (min-width: $on-large) { - max-width: calc(#{$content-width} - (#{$spacing-unit} * 2)); - padding-right: $spacing-unit; - padding-left: $spacing-unit; - } -} - - - -/** - * Clearfix - */ -%clearfix:after { - content: ""; - display: table; - clear: both; -} - - - -/** - * Icons - */ - -.orange { - color: #f66a0a; -} - -.grey { - color: #828282; -} - -/** - * Tables - */ -table { - margin-bottom: $spacing-unit; - width: 100%; - text-align: $table-text-align; - color: $table-text-color; - border-collapse: collapse; - border: 1px solid $table-border-color; - tr { - &:nth-child(even) { - background-color: $table-zebra-color; - } - } - th, td { - padding: ($spacing-unit / 3) ($spacing-unit / 2); - } - th { - background-color: $table-header-bg-color; - border: 1px solid $table-header-border; - } - td { - border: 1px solid $table-border-color; - } - - @include media-query($on-laptop) { - display: block; - overflow-x: auto; - -webkit-overflow-scrolling: touch; - -ms-overflow-style: -ms-autohiding-scrollbar; - } -} - -@media print { - /** - * Prevents page break from cutting through content when printing - */ - body { - display: block; - } - /** - * Replaces the top navigation menu with the project name when printing - */ - .site-header .wrapper { - display: none; - } - .site-header { - text-align: center; - } - .site-header:before { - content: "AB-3"; - font-size: 32px; - } -} - diff --git a/docs/_sass/minima/_layout.scss b/docs/_sass/minima/_layout.scss deleted file mode 100644 index ca99f981701..00000000000 --- a/docs/_sass/minima/_layout.scss +++ /dev/null @@ -1,263 +0,0 @@ -/** - * Site header - */ -.site-header { - border-top: 5px solid $brand-color-dark; - border-bottom: 1px solid $brand-color-light; - min-height: $spacing-unit * 1.865; - line-height: $base-line-height * $base-font-size * 2.25; - - // Positioning context for the mobile navigation icon - position: relative; -} - -.site-title { - @include relative-font-size(1.625); - font-weight: 300; - letter-spacing: -1px; - margin-bottom: 0; - float: left; - - @include media-query($on-palm) { - padding-right: 45px; - } - - &, - &:visited { - color: $brand-color-dark; - } -} - -.site-nav { - position: absolute; - top: 9px; - right: $spacing-unit / 2; - background-color: $background-color; - border: 1px solid $brand-color-light; - border-radius: 5px; - text-align: right; - - .nav-trigger { - display: none; - } - - .menu-icon { - float: right; - width: 36px; - height: 26px; - line-height: 0; - padding-top: 10px; - text-align: center; - - > svg path { - fill: $brand-color-dark; - } - } - - label[for="nav-trigger"] { - display: block; - float: right; - width: 36px; - height: 36px; - z-index: 2; - cursor: pointer; - } - - input ~ .trigger { - clear: both; - display: none; - } - - input:checked ~ .trigger { - display: block; - padding-bottom: 5px; - } - - .page-link { - color: $text-color; - line-height: $base-line-height; - display: block; - padding: 5px 10px; - - // Gaps between nav items, but not on the last one - &:not(:last-child) { - margin-right: 0; - } - margin-left: 20px; - } - - @media screen and (min-width: $on-medium) { - position: static; - float: right; - border: none; - background-color: inherit; - - label[for="nav-trigger"] { - display: none; - } - - .menu-icon { - display: none; - } - - input ~ .trigger { - display: block; - } - - .page-link { - display: inline; - padding: 0; - - &:not(:last-child) { - margin-right: 20px; - } - margin-left: auto; - } - } -} - - - -/** - * Page content - */ -.page-content { - padding: $spacing-unit 0; - flex: 1 0 auto; -} - -.page-heading { - @include relative-font-size(2); -} - -.post-list-heading { - @include relative-font-size(1.75); -} - -.post-list { - margin-left: 0; - list-style: none; - - > li { - margin-bottom: $spacing-unit; - } -} - -.post-meta { - font-size: $small-font-size; - color: $brand-color; -} - -.post-link { - display: block; - @include relative-font-size(1.5); -} - - - -/** - * Posts - */ -.post-header { - margin-bottom: $spacing-unit; -} - -.post-title, -.post-content h1 { - @include relative-font-size(2.625); - letter-spacing: -1px; - line-height: 1.15; - - @media screen and (min-width: $on-large) { - @include relative-font-size(2.625); - } -} - -.post-content { - margin-bottom: $spacing-unit; - - h1, h2, h3 { margin-top: $spacing-unit * 2 } - h4, h5, h6 { margin-top: $spacing-unit } - - h2 { - @include relative-font-size(1.75); - - @media screen and (min-width: $on-large) { - @include relative-font-size(2); - } - } - - h3 { - @include relative-font-size(1.375); - - @media screen and (min-width: $on-large) { - @include relative-font-size(1.625); - } - } - - h4 { - @include relative-font-size(1.25); - } - - h5 { - @include relative-font-size(1.125); - } - h6 { - @include relative-font-size(1.0625); - } -} - - -.social-media-list { - display: table; - margin: 0 auto; - li { - float: left; - margin: 5px 10px 5px 0; - &:last-of-type { margin-right: 0 } - a { - display: block; - padding: $spacing-unit / 4; - border: 1px solid $brand-color-light; - &:hover { border-color: darken($brand-color-light, 10%) } - } - } -} - - - -/** - * Pagination navbar - */ -.pagination { - margin-bottom: $spacing-unit; - @extend .social-media-list; - li { - a, div { - min-width: 41px; - text-align: center; - box-sizing: border-box; - } - div { - display: block; - padding: $spacing-unit / 4; - border: 1px solid transparent; - - &.pager-edge { - color: darken($brand-color-light, 5%); - border: 1px dashed; - } - } - } -} - - - -/** - * Grid helpers - */ -@media screen and (min-width: $on-large) { - .one-half { - width: calc(50% - (#{$spacing-unit} / 2)); - } -} diff --git a/docs/_sass/minima/custom-mixins.scss b/docs/_sass/minima/custom-mixins.scss deleted file mode 100644 index 9d4bedc1c67..00000000000 --- a/docs/_sass/minima/custom-mixins.scss +++ /dev/null @@ -1,21 +0,0 @@ -@mixin alert-variant($background, $border, $color) { - color: $color; - @include gradient-bg($background); - border-color: $border; - - .alert-link { - color: darken($color, 10%); - } -} - -@mixin gradient-bg($color, $foreground: null) { - @if $enable-gradients { - @if $foreground { - background-image: $foreground, linear-gradient(180deg, mix($body-bg, $color, 15%), $color); - } @else { - background-image: linear-gradient(180deg, mix($body-bg, $color, 15%), $color); - } - } @else { - background-color: $color; - } -} diff --git a/docs/_sass/minima/custom-styles.scss b/docs/_sass/minima/custom-styles.scss deleted file mode 100644 index 56b5d56b430..00000000000 --- a/docs/_sass/minima/custom-styles.scss +++ /dev/null @@ -1,34 +0,0 @@ -// Placeholder to allow defining custom styles that override everything else. -// (Use `_sass/minima/custom-variables.scss` to override variable defaults) -h2, h3, h4, h5, h6 { - color: #e46c0a; -} - -// Bootstrap style alerts -.alert { - position: relative; - padding: $alert-padding-y $alert-padding-x; - margin-bottom: $alert-margin-bottom; - border: $alert-border-width solid transparent; - border-radius : $alert-border-radius; -} - -// Headings for larger alerts -.alert-heading { - // Specified to prevent conflicts of changing $headings-color - color: inherit; -} - -// Provide class for links that match alerts -.alert-link { - font-weight: $alert-link-font-weight; -} - -// Generate contextual modifier classes for colorizing the alert. - -@each $color, $value in $theme-colors { - .alert-#{$color} { - @include alert-variant(color-level($value, $alert-bg-level), color-level($value, $alert-border-level), color-level($value, $alert-color-level)); - } -} - diff --git a/docs/_sass/minima/custom-variables.scss b/docs/_sass/minima/custom-variables.scss deleted file mode 100644 index a128970cbe7..00000000000 --- a/docs/_sass/minima/custom-variables.scss +++ /dev/null @@ -1,76 +0,0 @@ -// Placeholder to allow overriding predefined variables smoothly. - -//Bootstrap's default -$white: #fff !default; -$gray-100: #f8f9fa !default; -$gray-200: #e9ecef !default; -$gray-300: #dee2e6 !default; -$gray-400: #ced4da !default; -$gray-500: #adb5bd !default; -$gray-600: #6c757d !default; -$gray-700: #495057 !default; -$gray-800: #343a40 !default; -$gray-900: #212529 !default; -$black: #000 !default; -$blue: #0d6efd !default; -$indigo: #6610f2 !default; -$purple: #6f42c1 !default; -$pink: #d63384 !default; -$red: #dc3545 !default; -$orange: #fd7e14 !default; -$yellow: #ffc107 !default; -$green: #28a745 !default; -$teal: #20c997 !default; -$cyan: #17a2b8 !default; - -$primary: $blue !default; -$secondary: $gray-600 !default; -$success: $green !default; -$info: $cyan !default; -$warning: $yellow !default; -$danger: $red !default; -$light: $gray-100 !default; -$dark: $gray-800 !default; - -$theme-colors: ( - "primary": $primary, - "secondary": $secondary, - "success": $success, - "info": $info, - "warning": $warning, - "danger": $danger, - "light": $light, - "dark": $dark -) !default; - -$theme-color-interval: 8% !default; - -$body-bg: $white !default; -$body-color: $gray-900 !default; -$body-text-align: null !default; - -$enable-gradients: true; - -// Define alert colors, border radius, and padding. -$border-radius: .25rem !default; -$border-width: 1px !default; -$font-weight-bold: 700 !default; - -$alert-padding-y: .75rem !default; -$alert-padding-x: 1.25rem !default; -$alert-margin-bottom: 1rem !default; -$alert-border-radius: $border-radius !default; -$alert-link-font-weight: $font-weight-bold !default; -$alert-border-width: $border-width !default; - -$alert-bg-level: -10 !default; -$alert-border-level: -9 !default; -$alert-color-level: 6 !default; - -// Request a color level -// scss-docs-start color-level -@function color-level($color: $primary, $level: 0) { - $color-base: if($level > 0, $black, $white); - $level: abs($level); - @return mix($color-base, $color, $level * $theme-color-interval); -} diff --git a/docs/_sass/minima/initialize.scss b/docs/_sass/minima/initialize.scss deleted file mode 100644 index 30288811151..00000000000 --- a/docs/_sass/minima/initialize.scss +++ /dev/null @@ -1,51 +0,0 @@ -@charset "utf-8"; - -// Define defaults for each variable. - -$base-font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", "Segoe UI Symbol", "Segoe UI Emoji", "Apple Color Emoji", Roboto, Helvetica, Arial, sans-serif !default; -$code-font-family: "Menlo", "Inconsolata", "Consolas", "Roboto Mono", "Ubuntu Mono", "Liberation Mono", "Courier New", monospace; -$base-font-size: 16px !default; -$base-font-weight: 400 !default; -$small-font-size: $base-font-size * 0.875 !default; -$base-line-height: 1.5 !default; - -$spacing-unit: 30px !default; - -$table-text-align: left !default; - -// Width of the content area -$content-width: 800px !default; - -$on-palm: 600px !default; -$on-laptop: 800px !default; - -$on-medium: $on-palm !default; -$on-large: $on-laptop !default; - -// Use media queries like this: -// @include media-query($on-palm) { -// .wrapper { -// padding-right: $spacing-unit / 2; -// padding-left: $spacing-unit / 2; -// } -// } -// Notice the following mixin uses max-width, in a deprecated, desktop-first -// approach, whereas media queries used elsewhere now use min-width. -@mixin media-query($device) { - @media screen and (max-width: $device) { - @content; - } -} - -@mixin relative-font-size($ratio) { - font-size: #{$ratio}rem; -} - -// Import pre-styling-overrides hook and style-partials. -@import - "minima/custom-variables", // Hook to override predefined variables. - "minima/custom-mixins", // Hook to add custom mixins. - "minima/base", // Defines element resets. - "minima/layout", // Defines structure and style based on CSS selectors. - "minima/custom-styles" // Hook to override existing styles. -; diff --git a/docs/_sass/minima/skins/classic.scss b/docs/_sass/minima/skins/classic.scss deleted file mode 100644 index 37ea9c5244c..00000000000 --- a/docs/_sass/minima/skins/classic.scss +++ /dev/null @@ -1,84 +0,0 @@ -@charset "utf-8"; - -$brand-color: #828282 !default; -$brand-color-light: lighten($brand-color, 40%) !default; -$brand-color-dark: darken($brand-color, 25%) !default; - -$text-color: #111 !default; -$background-color: #fdfdfd !default; -$code-background-color: #eef !default; - -$link-base-color: #2a7ae2 !default; -$link-visited-color: darken($link-base-color, 15%) !default; - -$table-text-color: lighten($text-color, 18%) !default; -$table-zebra-color: lighten($brand-color, 46%) !default; -$table-header-bg-color: lighten($brand-color, 43%) !default; -$table-header-border: lighten($brand-color, 36%) !default; -$table-border-color: $brand-color-light !default; - - -// Syntax highlighting styles should be adjusted appropriately for every "skin" -// ---------------------------------------------------------------------------- - -.highlight { - .c { color: #998; font-style: italic } // Comment - .err { color: #a61717; background-color: #e3d2d2 } // Error - .k { font-weight: bold } // Keyword - .o { font-weight: bold } // Operator - .cm { color: #998; font-style: italic } // Comment.Multiline - .cp { color: #999; font-weight: bold } // Comment.Preproc - .c1 { color: #998; font-style: italic } // Comment.Single - .cs { color: #999; font-weight: bold; font-style: italic } // Comment.Special - .gd { color: #000; background-color: #fdd } // Generic.Deleted - .gd .x { color: #000; background-color: #faa } // Generic.Deleted.Specific - .ge { font-style: italic } // Generic.Emph - .gr { color: #a00 } // Generic.Error - .gh { color: #999 } // Generic.Heading - .gi { color: #000; background-color: #dfd } // Generic.Inserted - .gi .x { color: #000; background-color: #afa } // Generic.Inserted.Specific - .go { color: #888 } // Generic.Output - .gp { color: #555 } // Generic.Prompt - .gs { font-weight: bold } // Generic.Strong - .gu { color: #aaa } // Generic.Subheading - .gt { color: #a00 } // Generic.Traceback - .kc { font-weight: bold } // Keyword.Constant - .kd { font-weight: bold } // Keyword.Declaration - .kp { font-weight: bold } // Keyword.Pseudo - .kr { font-weight: bold } // Keyword.Reserved - .kt { color: #458; font-weight: bold } // Keyword.Type - .m { color: #099 } // Literal.Number - .s { color: #d14 } // Literal.String - .na { color: #008080 } // Name.Attribute - .nb { color: #0086B3 } // Name.Builtin - .nc { color: #458; font-weight: bold } // Name.Class - .no { color: #008080 } // Name.Constant - .ni { color: #800080 } // Name.Entity - .ne { color: #900; font-weight: bold } // Name.Exception - .nf { color: #900; font-weight: bold } // Name.Function - .nn { color: #555 } // Name.Namespace - .nt { color: #000080 } // Name.Tag - .nv { color: #008080 } // Name.Variable - .ow { font-weight: bold } // Operator.Word - .w { color: #bbb } // Text.Whitespace - .mf { color: #099 } // Literal.Number.Float - .mh { color: #099 } // Literal.Number.Hex - .mi { color: #099 } // Literal.Number.Integer - .mo { color: #099 } // Literal.Number.Oct - .sb { color: #d14 } // Literal.String.Backtick - .sc { color: #d14 } // Literal.String.Char - .sd { color: #d14 } // Literal.String.Doc - .s2 { color: #d14 } // Literal.String.Double - .se { color: #d14 } // Literal.String.Escape - .sh { color: #d14 } // Literal.String.Heredoc - .si { color: #d14 } // Literal.String.Interpol - .sx { color: #d14 } // Literal.String.Other - .sr { color: #009926 } // Literal.String.Regex - .s1 { color: #d14 } // Literal.String.Single - .ss { color: #990073 } // Literal.String.Symbol - .bp { color: #999 } // Name.Builtin.Pseudo - .vc { color: #008080 } // Name.Variable.Class - .vg { color: #008080 } // Name.Variable.Global - .vi { color: #008080 } // Name.Variable.Instance - .il { color: #099 } // Literal.Number.Integer.Long -} diff --git a/docs/_sass/minima/skins/solarized-dark.scss b/docs/_sass/minima/skins/solarized-dark.scss deleted file mode 100644 index f3b1f387de0..00000000000 --- a/docs/_sass/minima/skins/solarized-dark.scss +++ /dev/null @@ -1,4 +0,0 @@ -@charset "utf-8"; - -$sol-is-dark: true; -@import "minima/skins/solarized"; diff --git a/docs/_sass/minima/skins/solarized.scss b/docs/_sass/minima/skins/solarized.scss deleted file mode 100644 index 982bd7f2990..00000000000 --- a/docs/_sass/minima/skins/solarized.scss +++ /dev/null @@ -1,133 +0,0 @@ -@charset "utf-8"; - -// Solarized skin -// ============== -// Created by Sander Voerman using the Solarized -// color scheme by Ethan Schoonover . - -// This style sheet implements two options for the minima.skin setting: -// "solarized" for light mode and "solarized-dark" for dark mode. -$sol-is-dark: false !default; - - -// Color scheme -// ------------ -// The inline comments show the canonical L*a*b values for each color. - -$sol-base03: #002b36; // 15 -12 -12 -$sol-base02: #073642; // 20 -12 -12 -$sol-base01: #586e75; // 45 -07 -07 -$sol-base00: #657b83; // 50 -07 -07 -$sol-base0: #839496; // 60 -06 -03 -$sol-base1: #93a1a1; // 65 -05 -02 -$sol-base2: #eee8d5; // 92 -00 10 -$sol-base3: #fdf6e3; // 97 00 10 -$sol-yellow: #b58900; // 60 10 65 -$sol-orange: #cb4b16; // 50 50 55 -$sol-red: #dc322f; // 50 65 45 -$sol-magenta: #d33682; // 50 65 -05 -$sol-violet: #6c71c4; // 50 15 -45 -$sol-blue: #268bd2; // 55 -10 -45 -$sol-cyan: #2aa198; // 60 -35 -05 -$sol-green: #859900; // 60 -20 65 - -$sol-mono3: $sol-base3; -$sol-mono2: $sol-base2; -$sol-mono1: $sol-base1; -$sol-mono00: $sol-base00; -$sol-mono01: $sol-base01; - -@if $sol-is-dark { - $sol-mono3: $sol-base03; - $sol-mono2: $sol-base02; - $sol-mono1: $sol-base01; - $sol-mono00: $sol-base0; - $sol-mono01: $sol-base1; -} - - -// Minima color variables -// ---------------------- - -$brand-color: $sol-mono1 !default; -$brand-color-light: mix($sol-mono1, $sol-mono3) !default; -$brand-color-dark: $sol-mono00 !default; - -$text-color: $sol-mono01 !default; -$background-color: $sol-mono3 !default; -$code-background-color: $sol-mono2 !default; - -$link-base-color: $sol-blue !default; -$link-visited-color: mix($sol-blue, $sol-mono00) !default; - -$table-text-color: $sol-mono00 !default; -$table-zebra-color: mix($sol-mono2, $sol-mono3) !default; -$table-header-bg-color: $sol-mono2 !default; -$table-header-border: $sol-mono1 !default; -$table-border-color: $sol-mono1 !default; - - -// Syntax highlighting styles -// -------------------------- - -.highlight { - .c { color: $sol-mono1; font-style: italic } // Comment - .err { color: $sol-red } // Error - .k { color: $sol-mono01; font-weight: bold } // Keyword - .o { color: $sol-mono01; font-weight: bold } // Operator - .cm { color: $sol-mono1; font-style: italic } // Comment.Multiline - .cp { color: $sol-mono1; font-weight: bold } // Comment.Preproc - .c1 { color: $sol-mono1; font-style: italic } // Comment.Single - .cs { color: $sol-mono1; font-weight: bold; font-style: italic } // Comment.Special - .gd { color: $sol-red } // Generic.Deleted - .gd .x { color: $sol-red } // Generic.Deleted.Specific - .ge { color: $sol-mono00; font-style: italic } // Generic.Emph - .gr { color: $sol-red } // Generic.Error - .gh { color: $sol-mono1 } // Generic.Heading - .gi { color: $sol-green } // Generic.Inserted - .gi .x { color: $sol-green } // Generic.Inserted.Specific - .go { color: $sol-mono00 } // Generic.Output - .gp { color: $sol-mono00 } // Generic.Prompt - .gs { color: $sol-mono01; font-weight: bold } // Generic.Strong - .gu { color: $sol-mono1 } // Generic.Subheading - .gt { color: $sol-red } // Generic.Traceback - .kc { color: $sol-mono01; font-weight: bold } // Keyword.Constant - .kd { color: $sol-mono01; font-weight: bold } // Keyword.Declaration - .kp { color: $sol-mono01; font-weight: bold } // Keyword.Pseudo - .kr { color: $sol-mono01; font-weight: bold } // Keyword.Reserved - .kt { color: $sol-violet; font-weight: bold } // Keyword.Type - .m { color: $sol-cyan } // Literal.Number - .s { color: $sol-magenta } // Literal.String - .na { color: $sol-cyan } // Name.Attribute - .nb { color: $sol-blue } // Name.Builtin - .nc { color: $sol-violet; font-weight: bold } // Name.Class - .no { color: $sol-cyan } // Name.Constant - .ni { color: $sol-violet } // Name.Entity - .ne { color: $sol-violet; font-weight: bold } // Name.Exception - .nf { color: $sol-blue; font-weight: bold } // Name.Function - .nn { color: $sol-mono00 } // Name.Namespace - .nt { color: $sol-blue } // Name.Tag - .nv { color: $sol-cyan } // Name.Variable - .ow { color: $sol-mono01; font-weight: bold } // Operator.Word - .w { color: $sol-mono1 } // Text.Whitespace - .mf { color: $sol-cyan } // Literal.Number.Float - .mh { color: $sol-cyan } // Literal.Number.Hex - .mi { color: $sol-cyan } // Literal.Number.Integer - .mo { color: $sol-cyan } // Literal.Number.Oct - .sb { color: $sol-magenta } // Literal.String.Backtick - .sc { color: $sol-magenta } // Literal.String.Char - .sd { color: $sol-magenta } // Literal.String.Doc - .s2 { color: $sol-magenta } // Literal.String.Double - .se { color: $sol-magenta } // Literal.String.Escape - .sh { color: $sol-magenta } // Literal.String.Heredoc - .si { color: $sol-magenta } // Literal.String.Interpol - .sx { color: $sol-magenta } // Literal.String.Other - .sr { color: $sol-green } // Literal.String.Regex - .s1 { color: $sol-magenta } // Literal.String.Single - .ss { color: $sol-magenta } // Literal.String.Symbol - .bp { color: $sol-mono1 } // Name.Builtin.Pseudo - .vc { color: $sol-cyan } // Name.Variable.Class - .vg { color: $sol-cyan } // Name.Variable.Global - .vi { color: $sol-cyan } // Name.Variable.Instance - .il { color: $sol-cyan } // Literal.Number.Integer.Long -} diff --git a/docs/assets/css/style.scss b/docs/assets/css/style.scss deleted file mode 100644 index b5ec6976efa..00000000000 --- a/docs/assets/css/style.scss +++ /dev/null @@ -1,12 +0,0 @@ ---- -# Only the main Sass file needs front matter (the dashes are enough) ---- - -@import - "minima/skins/{{ site.minima.skin | default: 'classic' }}", - "minima/initialize"; - -.icon { - height: 21px; - width: 21px -} diff --git a/docs/images/ArchitectureDiagram.png b/docs/images/ArchitectureDiagram.png deleted file mode 100644 index cd540665053ef53e3c0eb01ec3607b02f44a3ada..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 19887 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 diff --git a/docs/images/ArchitectureSequenceDiagram.png b/docs/images/ArchitectureSequenceDiagram.png deleted file mode 100644 index 37ad06a2803cb13da66978062b40b9555ecbd55a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15175 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 diff --git a/docs/images/BetterModelClassDiagram.png b/docs/images/BetterModelClassDiagram.png deleted file mode 100644 index 02a42e35e76b2a1b61e7feade34a0271e0640aec..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 14116 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 diff --git a/docs/images/CommitActivityDiagram.png b/docs/images/CommitActivityDiagram.png deleted file mode 100644 index 5b464126b35fc8025f8b92e7261f5ed6287c5eae..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16227 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 diff --git a/docs/images/ComponentManagers.png b/docs/images/ComponentManagers.png deleted file mode 100644 index ae52a35718a82846d19185f2e5bed573d67cfbcc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 17411 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 Nlg1WCg~u-k{133EV@?17 diff --git a/docs/images/LogicClassDiagram.png b/docs/images/LogicClassDiagram.png deleted file mode 100644 index e3b784310fe5f427feccedbf734be63b9e810825..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 36640 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 diff --git a/docs/images/LogicStorageDIP.png b/docs/images/LogicStorageDIP.png deleted file mode 100644 index 871157f5a9c35321a8004b0017fe6a0533129e1f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5808 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 TX#zhdLZYs$rBtk7`R2a>OJ+-` diff --git a/docs/images/ParserClasses.png b/docs/images/ParserClasses.png deleted file mode 100644 index edfd1ff789795245c36851cd2780c707090d0460..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 29478 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�y3#e%kgElqe^sH=7 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 DN7m$8 diff --git a/docs/images/UiClassDiagram.png b/docs/images/UiClassDiagram.png deleted file mode 100644 index 11f06d686714cf02d88c4b32879bb71b11f56e13..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 48363 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 diff --git a/docs/images/UndoRedoState0.png b/docs/images/UndoRedoState0.png deleted file mode 100644 index c5f91b5853370c1d6a8b9f5f9a9724e4a4a2c429..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6619 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 diff --git a/docs/images/UndoRedoState2.png b/docs/images/UndoRedoState2.png deleted file mode 100644 index 20853694e0338a708b62ce3a20c72bff00c0b8e9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7855 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 diff --git a/docs/images/UndoRedoState3.png b/docs/images/UndoRedoState3.png deleted file mode 100644 index 1a9551b31bea8ffedd9db1094f06ef6b74431fe8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7588 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 E2LvS7wEzGB diff --git a/docs/images/UndoRedoState4.png b/docs/images/UndoRedoState4.png deleted file mode 100644 index 46dfae78c94886758c6d6c3c525db41b361d14e7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7605 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 diff --git a/docs/images/UndoRedoState5.png b/docs/images/UndoRedoState5.png deleted file mode 100644 index f45889b5fdff0652cf017fd906297d229e49c8fe..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9427 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 diff --git a/docs/images/UndoSequenceDiagram.png b/docs/images/UndoSequenceDiagram.png deleted file mode 100644 index c7a7e637266b619cb915f925ccec102552979f38..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 27508 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 jA=0.1.90" + } + }, + "node_modules/@fortawesome/fontawesome-free": { + "version": "6.4.2", + "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-free/-/fontawesome-free-6.4.2.tgz", + "integrity": "sha512-m5cPn3e2+FDCOgi1mz0RexTUvvQibBebOUlUlW0+YrMjDTPkiJ6VTKukA1GRsvRw+12KyJndNjj0O4AgTxm2Pg==", + "dev": true, + "hasInstallScript": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/@kwsites/file-exists": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@kwsites/file-exists/-/file-exists-1.1.1.tgz", + "integrity": "sha512-m9/5YGR18lIwxSFDwfE3oA7bWuq9kdau6ugN4H2rJeyhFQZcG9AgSHkQtSD15a8WvTgfz9aikZMrKPHvbpqFiw==", + "dev": true, + "dependencies": { + "debug": "^4.1.1" + } + }, + "node_modules/@kwsites/file-exists/node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/@kwsites/file-exists/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/@kwsites/promise-deferred": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@kwsites/promise-deferred/-/promise-deferred-1.1.1.tgz", + "integrity": "sha512-GaHYm+c0O9MjZRu0ongGBRbinu8gVAMd2UZjji6jVmqKtZluZnptXGWhz1E8j8D2HJ3f/yMxKAUC0b+57wncIw==", + "dev": true + }, + "node_modules/@markbind/core": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/@markbind/core/-/core-5.1.0.tgz", + "integrity": "sha512-YAXjH+qCXnrBzpKIAJkayVLmyIUaG/8Dms3Gpd2VIufeZyW8w0diXdgKSsymjzodTMgghZMdxG3Qpng833ARPg==", + "dev": true, + "dependencies": { + "@fortawesome/fontawesome-free": "^6.4.0", + "@markbind/core-web": "5.1.0", + "@primer/octicons": "^15.0.1", + "@sindresorhus/slugify": "^0.9.1", + "@tlylt/markdown-it-imsize": "^3.0.0", + "bluebird": "^3.7.2", + "bootswatch": "5.1.3", + "cheerio": "^0.22.0", + "crypto-js": "^4.0.0", + "csv-parse": "^4.14.2", + "ensure-posix-path": "^1.1.1", + "fastmatter": "^2.1.1", + "fs-extra": "^9.0.1", + "gh-pages": "^2.1.1", + "highlight.js": "^10.4.1", + "htmlparser2": "^3.10.1", + "ignore": "^5.1.4", + "js-beautify": "1.14.3", + "katex": "^0.15.6", + "lodash": "^4.17.15", + "markdown-it": "^12.3.2", + "markdown-it-attrs": "^4.1.3", + "markdown-it-emoji": "^1.4.0", + "markdown-it-linkify-images": "^3.0.0", + "markdown-it-mark": "^3.0.0", + "markdown-it-regexp": "^0.4.0", + "markdown-it-sub": "^1.0.0", + "markdown-it-sup": "^1.0.0", + "markdown-it-table-of-contents": "^0.4.4", + "markdown-it-task-lists": "^2.1.1", + "markdown-it-texmath": "^1.0.0", + "markdown-it-video": "^0.6.3", + "material-icons": "^1.9.1", + "moment": "^2.29.4", + "nunjucks": "3.2.2", + "path-is-inside": "^1.0.2", + "simple-git": "^2.17.0", + "url-parse": "^1.5.10", + "uuid": "^8.3.1", + "vue": "2.6.14", + "vue-server-renderer": "2.6.14", + "vue-template-compiler": "2.6.14", + "walk-sync": "^2.0.2", + "winston": "^2.4.4" + } + }, + "node_modules/@markbind/core-web": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/@markbind/core-web/-/core-web-5.1.0.tgz", + "integrity": "sha512-TRzz8ZCr25pylKvFxF/WwXDi4Gbtsb2OLXV61WyTFqVy03tFoEJ2mqncpbliI9DrfDdKWcm1YZPgDCedVkYjKA==", + "dev": true + }, + "node_modules/@primer/octicons": { + "version": "15.2.0", + "resolved": "https://registry.npmjs.org/@primer/octicons/-/octicons-15.2.0.tgz", + "integrity": "sha512-4cHZzcZ3F/HQNL4EKSaFyVsW7XtITiJkTeB1JDDmRuP/XobyWyF9gWxuV9c+byUa8dOB5KNQn37iRvNrIehPUQ==", + "dev": true, + "dependencies": { + "object-assign": "^4.1.1" + } + }, + "node_modules/@sindresorhus/slugify": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/@sindresorhus/slugify/-/slugify-0.9.1.tgz", + "integrity": "sha512-b6heYM9dzZD13t2GOiEQTDE0qX+I1GyOotMwKh9VQqzuNiVdPVT8dM43fe9HNb/3ul+Qwd5oKSEDrDIfhq3bnQ==", + "dev": true, + "dependencies": { + "escape-string-regexp": "^1.0.5", + "lodash.deburr": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@tlylt/markdown-it-imsize": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@tlylt/markdown-it-imsize/-/markdown-it-imsize-3.0.0.tgz", + "integrity": "sha512-6kTM+vRJTuN2UxNPyJ8yC+NHrzS+MxVHV+z+bDxSr/Fd7eTah2+otLKC2B17YI/1lQnSumA2qokPGuzsA98c6g==", + "dev": true + }, + "node_modules/@types/minimatch": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.5.tgz", + "integrity": "sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ==", + "dev": true + }, + "node_modules/a-sync-waterfall": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/a-sync-waterfall/-/a-sync-waterfall-1.0.1.tgz", + "integrity": "sha512-RYTOHHdWipFUliRFMCS4X2Yn2X8M87V/OpSqWzKKOGhzqyUxzyVmhHDH9sAvG+ZuQf/TAOFsLCpMw09I1ufUnA==", + "dev": true + }, + "node_modules/abbrev": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", + "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", + "dev": true + }, + "node_modules/accepts": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", + "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", + "dev": true, + "dependencies": { + "mime-types": "~2.1.34", + "negotiator": "0.6.3" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "dev": true, + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/apache-crypt": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/apache-crypt/-/apache-crypt-1.2.5.tgz", + "integrity": "sha512-ICnYQH+DFVmw+S4Q0QY2XRXD8Ne8ewh8HgbuFH4K7022zCxgHM0Hz1xkRnUlEfAXNbwp1Cnhbedu60USIfDxvg==", + "dev": true, + "dependencies": { + "unix-crypt-td-js": "^1.1.4" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/apache-md5": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/apache-md5/-/apache-md5-1.1.7.tgz", + "integrity": "sha512-JtHjzZmJxtzfTSjsCyHgPR155HBe5WGyUyHTaEkfy46qhwCFKx1Epm6nAxgUG3WfUZP1dWhGqj9Z2NOBeZ+uBw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "dependencies": { + "sprintf-js": "~1.0.2" + } + }, + "node_modules/arr-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha512-YVIQ82gZPGBebQV/a8dar4AitzCQs0jjXwMPZllpXMaGjXPYVUawSxQrRsjhjupyVxEvbHgUmIhKVlND+j02kA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/arr-flatten": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", + "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/arr-union": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", + "integrity": "sha512-sKpyeERZ02v1FeCZT8lrfJq5u6goHCtpTAzPwJYe7c8SPFOboNjNg1vz2L4VTn9T4PQxEx13TbXLmYUcS6Ug7Q==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/array-union": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", + "integrity": "sha512-Dxr6QJj/RdU/hCaBjOfxW+q6lyuVE6JFWIrAUpuOOhoJJoQ99cUn3igRaHVB5P9WrgFVN0FfArM3x0cueOU8ng==", + "dev": true, + "dependencies": { + "array-uniq": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/array-uniq": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", + "integrity": "sha512-MNha4BWQ6JbwhFhj03YK552f7cb3AzoE8SzeljgChvL1dl3IcvggXVz1DilzySZkCja+CXuZbdW7yATchWn8/Q==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/array-unique": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha512-SleRWjh9JUud2wH1hPs9rZBZ33H6T9HOiL0uwGnGx9FpE6wKGyfWugmbkEOIs6qWrZhg0LWeLziLrEwQJhs5mQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/asap": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", + "integrity": "sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==", + "dev": true + }, + "node_modules/assign-symbols": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", + "integrity": "sha512-Q+JC7Whu8HhmTdBph/Tq59IoRtoy6KAm5zzPv00WdujX82lbAL8K7WVjne7vdCsAmbF4AYaDOPyO3k0kl8qIrw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/async": { + "version": "2.6.4", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.4.tgz", + "integrity": "sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==", + "dev": true, + "dependencies": { + "lodash": "^4.17.14" + } + }, + "node_modules/async-each": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.3.tgz", + "integrity": "sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ==", + "dev": true + }, + "node_modules/at-least-node": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz", + "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==", + "dev": true, + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/atob": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", + "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", + "dev": true, + "bin": { + "atob": "bin/atob.js" + }, + "engines": { + "node": ">= 4.5.0" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true + }, + "node_modules/base": { + "version": "0.11.2", + "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", + "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", + "dev": true, + "dependencies": { + "cache-base": "^1.0.1", + "class-utils": "^0.3.5", + "component-emitter": "^1.2.1", + "define-property": "^1.0.0", + "isobject": "^3.0.1", + "mixin-deep": "^1.2.0", + "pascalcase": "^0.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/base/node_modules/define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==", + "dev": true, + "dependencies": { + "is-descriptor": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/basic-auth": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/basic-auth/-/basic-auth-2.0.1.tgz", + "integrity": "sha512-NF+epuEdnUYVlGuhaxbbq+dvJttwLnGY+YixlXlME5KpQ5W3CnXA5cVTneY3SPbPDRkcjMbifrwmFYcClgOZeg==", + "dev": true, + "dependencies": { + "safe-buffer": "5.1.2" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/batch": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", + "integrity": "sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw==", + "dev": true + }, + "node_modules/bcryptjs": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/bcryptjs/-/bcryptjs-2.4.3.tgz", + "integrity": "sha512-V/Hy/X9Vt7f3BbPJEi8BdVFMByHi+jNXrYkW3huaybV/kQ0KJg0Y6PkEMbn+zeT+i+SiKZ/HMqJGIIt4LZDqNQ==", + "dev": true + }, + "node_modules/binary-extensions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/bindings": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", + "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", + "dev": true, + "optional": true, + "dependencies": { + "file-uri-to-path": "1.0.0" + } + }, + "node_modules/bluebird": { + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", + "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==", + "dev": true + }, + "node_modules/boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", + "dev": true + }, + "node_modules/bootswatch": { + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/bootswatch/-/bootswatch-5.1.3.tgz", + "integrity": "sha512-NmZFN6rOCoXWQ/PkzmD8FFWDe24kocX9OXWHNVaLxVVnpqpAzEbMFsf8bAfKwVtpNXibasZCzv09B5fLieAh2g==", + "dev": true + }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "dependencies": { + "fill-range": "^7.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cache-base": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", + "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", + "dev": true, + "dependencies": { + "collection-visit": "^1.0.0", + "component-emitter": "^1.2.1", + "get-value": "^2.0.6", + "has-value": "^1.0.0", + "isobject": "^3.0.1", + "set-value": "^2.0.0", + "to-object-path": "^0.3.0", + "union-value": "^1.0.0", + "unset-value": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/chalk": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", + "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cheerio": { + "version": "0.22.0", + "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-0.22.0.tgz", + "integrity": "sha512-8/MzidM6G/TgRelkzDG13y3Y9LxBjCb+8yOEZ9+wwq5gVF2w2pV0wmHvjfT0RvuxGyR7UEuK36r+yYMbT4uKgA==", + "dev": true, + "dependencies": { + "css-select": "~1.2.0", + "dom-serializer": "~0.1.0", + "entities": "~1.1.1", + "htmlparser2": "^3.9.1", + "lodash.assignin": "^4.0.9", + "lodash.bind": "^4.1.4", + "lodash.defaults": "^4.0.1", + "lodash.filter": "^4.4.0", + "lodash.flatten": "^4.2.0", + "lodash.foreach": "^4.3.0", + "lodash.map": "^4.4.0", + "lodash.merge": "^4.4.0", + "lodash.pick": "^4.2.1", + "lodash.reduce": "^4.4.0", + "lodash.reject": "^4.4.0", + "lodash.some": "^4.4.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/chokidar": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", + "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + ], + "dependencies": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/class-utils": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", + "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", + "dev": true, + "dependencies": { + "arr-union": "^3.1.0", + "define-property": "^0.2.5", + "isobject": "^3.0.0", + "static-extend": "^0.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/class-utils/node_modules/define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", + "dev": true, + "dependencies": { + "is-descriptor": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/class-utils/node_modules/is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/class-utils/node_modules/is-accessor-descriptor/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/class-utils/node_modules/is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/class-utils/node_modules/is-data-descriptor/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/class-utils/node_modules/is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "dependencies": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/class-utils/node_modules/kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/collection-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", + "integrity": "sha512-lNkKvzEeMBBjUGHZ+q6z9pSJla0KWAQPvtzhEV9+iGyQYG+pBpl7xKDhxoNSOZH2hhv0v5k0y2yAM4o4SjoSkw==", + "dev": true, + "dependencies": { + "map-visit": "^1.0.0", + "object-visit": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/colors": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz", + "integrity": "sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==", + "dev": true, + "engines": { + "node": ">=0.1.90" + } + }, + "node_modules/commander": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz", + "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==", + "dev": true, + "engines": { + "node": ">= 12" + } + }, + "node_modules/component-emitter": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", + "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==", + "dev": true + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true + }, + "node_modules/config-chain": { + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/config-chain/-/config-chain-1.1.13.tgz", + "integrity": "sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ==", + "dev": true, + "dependencies": { + "ini": "^1.3.4", + "proto-list": "~1.2.1" + } + }, + "node_modules/connect": { + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/connect/-/connect-3.7.0.tgz", + "integrity": "sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ==", + "dev": true, + "dependencies": { + "debug": "2.6.9", + "finalhandler": "1.1.2", + "parseurl": "~1.3.3", + "utils-merge": "1.0.1" + }, + "engines": { + "node": ">= 0.10.0" + } + }, + "node_modules/copy-descriptor": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", + "integrity": "sha512-XgZ0pFcakEUlbwQEVNg3+QAis1FyTL3Qel9FYy8pSkQqoG3PNoT0bOCQtOXcOkur21r2Eq2kI+IE+gsmAEVlYw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/core-util-is": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", + "dev": true + }, + "node_modules/cors": { + "version": "2.8.5", + "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", + "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", + "dev": true, + "dependencies": { + "object-assign": "^4", + "vary": "^1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/crypto-js": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/crypto-js/-/crypto-js-4.1.1.tgz", + "integrity": "sha512-o2JlM7ydqd3Qk9CA0L4NL6mTzU2sdx96a+oOfPu8Mkl/PK51vSyoi8/rQ8NknZtk44vq15lmhAj9CIAGwgeWKw==", + "dev": true + }, + "node_modules/css-select": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-1.2.0.tgz", + "integrity": "sha512-dUQOBoqdR7QwV90WysXPLXG5LO7nhYBgiWVfxF80DKPF8zx1t/pUd2FYy73emg3zrjtM6dzmYgbHKfV2rxiHQA==", + "dev": true, + "dependencies": { + "boolbase": "~1.0.0", + "css-what": "2.1", + "domutils": "1.5.1", + "nth-check": "~1.0.1" + } + }, + "node_modules/css-what": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-2.1.3.tgz", + "integrity": "sha512-a+EPoD+uZiNfh+5fxw2nO9QwFa6nJe2Or35fGY6Ipw1R3R4AGz1d1TEZrCegvw2YTmZ0jXirGYlzxxpYSHwpEg==", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/csv-parse": { + "version": "4.16.3", + "resolved": "https://registry.npmjs.org/csv-parse/-/csv-parse-4.16.3.tgz", + "integrity": "sha512-cO1I/zmz4w2dcKHVvpCr7JVRu8/FymG5OEpmvsZYlccYolPBLoVGKUHgNoc4ZGkFeFlWGEDmMyBM+TTqRdW/wg==", + "dev": true + }, + "node_modules/cycle": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/cycle/-/cycle-1.0.3.tgz", + "integrity": "sha512-TVF6svNzeQCOpjCqsy0/CSy8VgObG3wXusJ73xW2GbG5rGx7lC8zxDSURicsXI2UsGdi2L0QNRCi745/wUDvsA==", + "dev": true, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/de-indent": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/de-indent/-/de-indent-1.0.2.tgz", + "integrity": "sha512-e/1zu3xH5MQryN2zdVaF0OrdNLUbvWxzMbi+iNA6Bky7l1RoP8a2fIbRocyHclXt/arDrrR6lL3TqFD9pMQTsg==", + "dev": true + }, + "node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/decode-uri-component": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", + "integrity": "sha512-hjf+xovcEn31w/EUYdTXQh/8smFL/dzYjohQGEIgjyNavaJfBY2p5F527Bo1VPATxv0VYTUC2bOcXvqFwk78Og==", + "dev": true, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/define-property": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", + "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", + "dev": true, + "dependencies": { + "is-descriptor": "^1.0.2", + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/destroy": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", + "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", + "dev": true, + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } + }, + "node_modules/dom-serializer": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.1.1.tgz", + "integrity": "sha512-l0IU0pPzLWSHBcieZbpOKgkIn3ts3vAh7ZuFyXNwJxJXk/c4Gwj9xaTJwIDVQCXawWD0qb3IzMGH5rglQaO0XA==", + "dev": true, + "dependencies": { + "domelementtype": "^1.3.0", + "entities": "^1.1.1" + } + }, + "node_modules/domelementtype": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz", + "integrity": "sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==", + "dev": true + }, + "node_modules/domhandler": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.4.2.tgz", + "integrity": "sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA==", + "dev": true, + "dependencies": { + "domelementtype": "1" + } + }, + "node_modules/domutils": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.5.1.tgz", + "integrity": "sha512-gSu5Oi/I+3wDENBsOWBiRK1eoGxcywYSqg3rR960/+EfY0CF4EX1VPkgHOZ3WiS/Jg2DtliF6BhWcHlfpYUcGw==", + "dev": true, + "dependencies": { + "dom-serializer": "0", + "domelementtype": "1" + } + }, + "node_modules/duplexer": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz", + "integrity": "sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==", + "dev": true + }, + "node_modules/editorconfig": { + "version": "0.15.3", + "resolved": "https://registry.npmjs.org/editorconfig/-/editorconfig-0.15.3.tgz", + "integrity": "sha512-M9wIMFx96vq0R4F+gRpY3o2exzb8hEj/n9S8unZtHSvYjibBp/iMufSzvmOcV/laG0ZtuTVGtiJggPOSW2r93g==", + "dev": true, + "dependencies": { + "commander": "^2.19.0", + "lru-cache": "^4.1.5", + "semver": "^5.6.0", + "sigmund": "^1.0.1" + }, + "bin": { + "editorconfig": "bin/editorconfig" + } + }, + "node_modules/editorconfig/node_modules/commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true + }, + "node_modules/ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==", + "dev": true + }, + "node_modules/email-addresses": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/email-addresses/-/email-addresses-3.1.0.tgz", + "integrity": "sha512-k0/r7GrWVL32kZlGwfPNgB2Y/mMXVTq/decgLczm/j34whdaspNrZO8CnXPf1laaHxI6ptUlsnAxN+UAPw+fzg==", + "dev": true + }, + "node_modules/encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/ensure-posix-path": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ensure-posix-path/-/ensure-posix-path-1.1.1.tgz", + "integrity": "sha512-VWU0/zXzVbeJNXvME/5EmLuEj2TauvoaTz6aFYK1Z92JCBlDlZ3Gu0tuGR42kpW1754ywTs+QB0g5TP0oj9Zaw==", + "dev": true + }, + "node_modules/entities": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.2.tgz", + "integrity": "sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==", + "dev": true + }, + "node_modules/escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==", + "dev": true + }, + "node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "dev": true, + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/event-stream": { + "version": "3.3.4", + "resolved": "https://registry.npmjs.org/event-stream/-/event-stream-3.3.4.tgz", + "integrity": "sha512-QHpkERcGsR0T7Qm3HNJSyXKEEj8AHNxkY3PK8TS2KJvQ7NiSHe3DDpwVKKtoYprL/AreyzFBeIkBIWChAqn60g==", + "dev": true, + "dependencies": { + "duplexer": "~0.1.1", + "from": "~0", + "map-stream": "~0.1.0", + "pause-stream": "0.0.11", + "split": "0.3", + "stream-combiner": "~0.0.4", + "through": "~2.3.1" + } + }, + "node_modules/event-stream/node_modules/split": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/split/-/split-0.3.3.tgz", + "integrity": "sha512-wD2AeVmxXRBoX44wAycgjVpMhvbwdI2aZjCkvfNcH1YqHQvJVa1duWc73OyVGJUc05fhFaTZeQ/PYsrmyH0JVA==", + "dev": true, + "dependencies": { + "through": "2" + }, + "engines": { + "node": "*" + } + }, + "node_modules/event-stream/node_modules/stream-combiner": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/stream-combiner/-/stream-combiner-0.0.4.tgz", + "integrity": "sha512-rT00SPnTVyRsaSz5zgSPma/aHSOic5U1prhYdRy5HS2kTZviFpmDgzilbtsJsxiroqACmayynDN/9VzIbX5DOw==", + "dev": true, + "dependencies": { + "duplexer": "~0.1.1" + } + }, + "node_modules/expand-brackets": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", + "integrity": "sha512-w/ozOKR9Obk3qoWeY/WDi6MFta9AoMR+zud60mdnbniMcBxRuFJyDt2LdX/14A1UABeqk+Uk+LDfUpvoGKppZA==", + "dev": true, + "dependencies": { + "debug": "^2.3.3", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "posix-character-classes": "^0.1.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/expand-brackets/node_modules/define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", + "dev": true, + "dependencies": { + "is-descriptor": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/expand-brackets/node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "dev": true, + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/expand-brackets/node_modules/is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/expand-brackets/node_modules/is-accessor-descriptor/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/expand-brackets/node_modules/is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/expand-brackets/node_modules/is-data-descriptor/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/expand-brackets/node_modules/is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "dependencies": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/expand-brackets/node_modules/is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/expand-brackets/node_modules/kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==", + "dev": true, + "dependencies": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/extglob": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", + "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", + "dev": true, + "dependencies": { + "array-unique": "^0.3.2", + "define-property": "^1.0.0", + "expand-brackets": "^2.1.4", + "extend-shallow": "^2.0.1", + "fragment-cache": "^0.2.1", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/extglob/node_modules/define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==", + "dev": true, + "dependencies": { + "is-descriptor": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/extglob/node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "dev": true, + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/extglob/node_modules/is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/eyes": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/eyes/-/eyes-0.1.8.tgz", + "integrity": "sha512-GipyPsXO1anza0AOZdy69Im7hGFCNB7Y/NGjDlZGJ3GJJLtwNSb2vrzYrTYJRrRloVx7pl+bhUaTB8yiccPvFQ==", + "dev": true, + "engines": { + "node": "> 0.1.90" + } + }, + "node_modules/fast-safe-stringify": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.1.1.tgz", + "integrity": "sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==", + "dev": true + }, + "node_modules/fastmatter": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/fastmatter/-/fastmatter-2.1.1.tgz", + "integrity": "sha512-NFrjZEPJZTexoJEuyM5J7n4uFaLf0dOI7Ok4b2IZXOYBqCp1Bh5RskANmQ2TuDsz3M35B1yL2AP/Rn+kp85KeA==", + "dev": true, + "dependencies": { + "js-yaml": "^3.13.0", + "split": "^1.0.1", + "stream-combiner": "^0.2.2", + "through2": "^3.0.1" + } + }, + "node_modules/faye-websocket": { + "version": "0.11.4", + "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.4.tgz", + "integrity": "sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==", + "dev": true, + "dependencies": { + "websocket-driver": ">=0.5.1" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/fecha": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fecha/-/fecha-2.3.3.tgz", + "integrity": "sha512-lUGBnIamTAwk4znq5BcqsDaxSmZ9nDVJaij6NvRt/Tg4R69gERA+otPKbS86ROw9nxVMw2/mp1fnaiWqbs6Sdg==", + "dev": true + }, + "node_modules/figlet": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/figlet/-/figlet-1.5.2.tgz", + "integrity": "sha512-WOn21V8AhyE1QqVfPIVxe3tupJacq1xGkPTB4iagT6o+P2cAgEOOwIxMftr4+ZCTI6d551ij9j61DFr0nsP2uQ==", + "dev": true, + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/file-stream-rotator": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/file-stream-rotator/-/file-stream-rotator-0.4.1.tgz", + "integrity": "sha512-W3aa3QJEc8BS2MmdVpQiYLKHj3ijpto1gMDlsgCRSKfIUe6MwkcpODGPQ3vZfb0XvCeCqlu9CBQTN7oQri2TZQ==", + "dev": true, + "dependencies": { + "moment": "^2.11.2" + } + }, + "node_modules/file-uri-to-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", + "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==", + "dev": true, + "optional": true + }, + "node_modules/filename-reserved-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/filename-reserved-regex/-/filename-reserved-regex-1.0.0.tgz", + "integrity": "sha512-UZArj7+U+2reBBVCvVmRlyq9D7EYQdUtuNN+1iz7pF1jGcJ2L0TjiRCxsTZfj2xFbM4c25uGCUDpKTHA7L2TKg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/filenamify": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/filenamify/-/filenamify-1.2.1.tgz", + "integrity": "sha512-DKVP0WQcB7WaIMSwDETqImRej2fepPqvXQjaVib7LRZn9Rxn5UbvK2tYTqGf1A1DkIprQQkG4XSQXSOZp7Q3GQ==", + "dev": true, + "dependencies": { + "filename-reserved-regex": "^1.0.0", + "strip-outer": "^1.0.0", + "trim-repeated": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/filenamify-url": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/filenamify-url/-/filenamify-url-1.0.0.tgz", + "integrity": "sha512-O9K9JcZeF5VdZWM1qR92NSv1WY2EofwudQayPx5dbnnFl9k0IcZha4eV/FGkjnBK+1irOQInij0yiooCHu/0Fg==", + "dev": true, + "dependencies": { + "filenamify": "^1.0.0", + "humanize-url": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/finalhandler": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", + "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", + "dev": true, + "dependencies": { + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "~2.3.0", + "parseurl": "~1.3.3", + "statuses": "~1.5.0", + "unpipe": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/for-in": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", + "integrity": "sha512-7EwmXrOjyL+ChxMhmG5lnW9MPt1aIeZEwKhQzoBUdTV0N3zuwWDZYVJatDvZ2OyzPUvdIAZDsCetk3coyMfcnQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/fragment-cache": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", + "integrity": "sha512-GMBAbW9antB8iZRHLoGw0b3HANt57diZYFO/HL1JGIC1MjKrdmhxvrJbupnVvpys0zsz7yBApXdQyfepKly2kA==", + "dev": true, + "dependencies": { + "map-cache": "^0.2.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/from": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/from/-/from-0.1.7.tgz", + "integrity": "sha512-twe20eF1OxVxp/ML/kq2p1uc6KvFK/+vs8WjEbeKmV2He22MKm7YF2ANIt+EOqhJ5L3K/SuuPhk0hWQDjOM23g==", + "dev": true + }, + "node_modules/fs-extra": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", + "dev": true, + "dependencies": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "dev": true + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "dev": true, + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true + }, + "node_modules/get-value": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", + "integrity": "sha512-Ln0UQDlxH1BapMu3GPtf7CuYNwRZf2gwCuPqbyG6pB8WfmFpzqcy4xtAaAMUhnNqjMKTiCPZG2oMT3YSx8U2NA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/gh-pages": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/gh-pages/-/gh-pages-2.2.0.tgz", + "integrity": "sha512-c+yPkNOPMFGNisYg9r4qvsMIjVYikJv7ImFOhPIVPt0+AcRUamZ7zkGRLHz7FKB0xrlZ+ddSOJsZv9XAFVXLmA==", + "dev": true, + "dependencies": { + "async": "^2.6.1", + "commander": "^2.18.0", + "email-addresses": "^3.0.1", + "filenamify-url": "^1.0.0", + "fs-extra": "^8.1.0", + "globby": "^6.1.0" + }, + "bin": { + "gh-pages": "bin/gh-pages.js", + "gh-pages-clean": "bin/gh-pages-clean.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/gh-pages/node_modules/commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true + }, + "node_modules/gh-pages/node_modules/fs-extra": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", + "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + }, + "engines": { + "node": ">=6 <7 || >=8" + } + }, + "node_modules/gh-pages/node_modules/jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", + "dev": true, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/gh-pages/node_modules/universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "dev": true, + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/globby": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz", + "integrity": "sha512-KVbFv2TQtbzCoxAnfD6JcHZTYCzyliEaaeM/gH8qQdkKr5s0OP9scEgvdcngyk7AVdY6YVW/TJHd+lQ/Df3Daw==", + "dev": true, + "dependencies": { + "array-union": "^1.0.1", + "glob": "^7.0.3", + "object-assign": "^4.0.1", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.10", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", + "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==", + "dev": true + }, + "node_modules/has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.1" + }, + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/has-ansi": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", + "integrity": "sha512-C8vBJ8DwUCx19vhm7urhTuUsr4/IyP6l4VzNQDv+ryHQObW3TTTp9yB68WpYgRe2bbaGuZ/se74IqFeVnMnLZg==", + "dev": true, + "dependencies": { + "ansi-regex": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/has-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", + "integrity": "sha512-IBXk4GTsLYdQ7Rvt+GRBrFSVEkmuOUy4re0Xjd9kJSUQpnTrWR4/y9RpfexN9vkAPMFuQoeWKwqzPozRTlasGw==", + "dev": true, + "dependencies": { + "get-value": "^2.0.6", + "has-values": "^1.0.0", + "isobject": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/has-values": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", + "integrity": "sha512-ODYZC64uqzmtfGMEAX/FvZiRyWLpAC3vYnNunURUnkGVTS+mI0smVsWaPydRBsE3g+ok7h960jChO8mFcWlHaQ==", + "dev": true, + "dependencies": { + "is-number": "^3.0.0", + "kind-of": "^4.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/has-values/node_modules/is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/has-values/node_modules/is-number/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/has-values/node_modules/kind-of": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", + "integrity": "sha512-24XsCxmEbRwEDbz/qz3stgin8TTzZ1ESR56OMCN0ujYg+vRutNSiOj9bHH9u85DKgXguraugV5sFuvbD4FW/hw==", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/hash-sum": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/hash-sum/-/hash-sum-1.0.2.tgz", + "integrity": "sha512-fUs4B4L+mlt8/XAtSOGMUO1TXmAelItBPtJG7CyHJfYTdDjwisntGO2JQz7oUsatOY9o68+57eziUVNw/mRHmA==", + "dev": true + }, + "node_modules/he": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", + "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", + "dev": true, + "bin": { + "he": "bin/he" + } + }, + "node_modules/highlight.js": { + "version": "10.7.3", + "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-10.7.3.tgz", + "integrity": "sha512-tzcUFauisWKNHaRkN4Wjl/ZA07gENAjFl3J/c480dprkGTg5EQstgaNFqBfUqCq54kZRIEcreTsAgF/m2quD7A==", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/htmlparser2": { + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.10.1.tgz", + "integrity": "sha512-IgieNijUMbkDovyoKObU1DUhm1iwNYE/fuifEoEHfd1oZKZDaONBSkal7Y01shxsM49R4XaMdGez3WnF9UfiCQ==", + "dev": true, + "dependencies": { + "domelementtype": "^1.3.1", + "domhandler": "^2.3.0", + "domutils": "^1.5.1", + "entities": "^1.1.1", + "inherits": "^2.0.1", + "readable-stream": "^3.1.1" + } + }, + "node_modules/http-auth": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/http-auth/-/http-auth-3.1.3.tgz", + "integrity": "sha512-Jbx0+ejo2IOx+cRUYAGS1z6RGc6JfYUNkysZM4u4Sfk1uLlGv814F7/PIjQQAuThLdAWxb74JMGd5J8zex1VQg==", + "dev": true, + "dependencies": { + "apache-crypt": "^1.1.2", + "apache-md5": "^1.0.6", + "bcryptjs": "^2.3.0", + "uuid": "^3.0.0" + }, + "engines": { + "node": ">=4.6.1" + } + }, + "node_modules/http-auth/node_modules/uuid": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", + "deprecated": "Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.", + "dev": true, + "bin": { + "uuid": "bin/uuid" + } + }, + "node_modules/http-errors": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", + "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", + "dev": true, + "dependencies": { + "depd": "2.0.0", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "toidentifier": "1.0.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/http-errors/node_modules/statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/http-parser-js": { + "version": "0.5.8", + "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.8.tgz", + "integrity": "sha512-SGeBX54F94Wgu5RH3X5jsDtf4eHyRogWX1XGT3b4HuW3tQPM4AaBzoUji/4AAJNXCEOWZ5O0DgZmJw1947gD5Q==", + "dev": true + }, + "node_modules/humanize-url": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/humanize-url/-/humanize-url-1.0.1.tgz", + "integrity": "sha512-RtgTzXCPVb/te+e82NDhAc5paj+DuKSratIGAr+v+HZK24eAQ8LMoBGYoL7N/O+9iEc33AKHg45dOMKw3DNldQ==", + "dev": true, + "dependencies": { + "normalize-url": "^1.0.0", + "strip-url-auth": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ignore": { + "version": "5.2.4", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz", + "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "dev": true, + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "node_modules/ini": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", + "dev": true + }, + "node_modules/is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "dependencies": { + "kind-of": "^6.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, + "dependencies": { + "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "dev": true + }, + "node_modules/is-core-module": { + "version": "2.13.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.0.tgz", + "integrity": "sha512-Z7dk6Qo8pOCp3l4tsX2C5ZVas4V+UxwQodwZhLopL91TX8UyyHEXafPcyoeeWuLrwzHcr3igO78wNLwHJHsMCQ==", + "dev": true, + "dependencies": { + "has": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "dependencies": { + "kind-of": "^6.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "dependencies": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "dependencies": { + "is-plain-object": "^2.0.4" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-plain-obj": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", + "integrity": "sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dev": true, + "dependencies": { + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-windows": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", + "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-wsl": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", + "integrity": "sha512-gfygJYZ2gLTDlmbWMI0CE2MwnFzSN/2SZfkMlItC4K/JBlsWVDB0bO6XhqcY13YXE7iMcAJnzTCJjPiTeJJ0Mw==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "dev": true + }, + "node_modules/isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/isstream": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", + "integrity": "sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==", + "dev": true + }, + "node_modules/js-beautify": { + "version": "1.14.3", + "resolved": "https://registry.npmjs.org/js-beautify/-/js-beautify-1.14.3.tgz", + "integrity": "sha512-f1ra8PHtOEu/70EBnmiUlV8nJePS58y9qKjl4JHfYWlFH6bo7ogZBz//FAZp7jDuXtYnGYKymZPlrg2I/9Zo4g==", + "dev": true, + "dependencies": { + "config-chain": "^1.1.13", + "editorconfig": "^0.15.3", + "glob": "^7.1.3", + "nopt": "^5.0.0" + }, + "bin": { + "css-beautify": "js/bin/css-beautify.js", + "html-beautify": "js/bin/html-beautify.js", + "js-beautify": "js/bin/js-beautify.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "dev": true, + "dependencies": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/katex": { + "version": "0.15.6", + "resolved": "https://registry.npmjs.org/katex/-/katex-0.15.6.tgz", + "integrity": "sha512-UpzJy4yrnqnhXvRPhjEuLA4lcPn6eRngixW7Q3TJErjg3Aw2PuLFBzTkdUb89UtumxjhHTqL3a5GDGETMSwgJA==", + "dev": true, + "funding": [ + "https://opencollective.com/katex", + "https://github.com/sponsors/katex" + ], + "dependencies": { + "commander": "^8.0.0" + }, + "bin": { + "katex": "cli.js" + } + }, + "node_modules/kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/linkify-it": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-3.0.3.tgz", + "integrity": "sha512-ynTsyrFSdE5oZ/O9GEf00kPngmOfVwazR5GKDq6EYfhlpFug3J2zybX56a2PRRpc9P+FuSoGNAwjlbDs9jJBPQ==", + "dev": true, + "dependencies": { + "uc.micro": "^1.0.1" + } + }, + "node_modules/live-server": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/live-server/-/live-server-1.2.1.tgz", + "integrity": "sha512-Yn2XCVjErTkqnM3FfTmM7/kWy3zP7+cEtC7x6u+wUzlQ+1UW3zEYbbyJrc0jNDwiMDZI0m4a0i3dxlGHVyXczw==", + "dev": true, + "dependencies": { + "chokidar": "^2.0.4", + "colors": "latest", + "connect": "^3.6.6", + "cors": "latest", + "event-stream": "3.3.4", + "faye-websocket": "0.11.x", + "http-auth": "3.1.x", + "morgan": "^1.9.1", + "object-assign": "latest", + "opn": "latest", + "proxy-middleware": "latest", + "send": "latest", + "serve-index": "^1.9.1" + }, + "bin": { + "live-server": "live-server.js" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/live-server/node_modules/anymatch": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", + "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", + "dev": true, + "dependencies": { + "micromatch": "^3.1.4", + "normalize-path": "^2.1.1" + } + }, + "node_modules/live-server/node_modules/anymatch/node_modules/normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha512-3pKJwH184Xo/lnH6oyP1q2pMd7HcypqqmRs91/6/i2CGtWwIKGCkOOMTm/zXbgTEWHw1uNpNi/igc3ePOYHb6w==", + "dev": true, + "dependencies": { + "remove-trailing-separator": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/live-server/node_modules/binary-extensions": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz", + "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/live-server/node_modules/braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "dev": true, + "dependencies": { + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/live-server/node_modules/chokidar": { + "version": "2.1.8", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz", + "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==", + "deprecated": "Chokidar 2 does not receive security updates since 2019. Upgrade to chokidar 3 with 15x fewer dependencies", + "dev": true, + "dependencies": { + "anymatch": "^2.0.0", + "async-each": "^1.0.1", + "braces": "^2.3.2", + "glob-parent": "^3.1.0", + "inherits": "^2.0.3", + "is-binary-path": "^1.0.0", + "is-glob": "^4.0.0", + "normalize-path": "^3.0.0", + "path-is-absolute": "^1.0.0", + "readdirp": "^2.2.1", + "upath": "^1.1.1" + }, + "optionalDependencies": { + "fsevents": "^1.2.7" + } + }, + "node_modules/live-server/node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "dev": true, + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/live-server/node_modules/fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ==", + "dev": true, + "dependencies": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/live-server/node_modules/fsevents": { + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz", + "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==", + "deprecated": "fsevents 1 will break on node v14+ and could be using insecure binaries. Upgrade to fsevents 2.", + "dev": true, + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "dependencies": { + "bindings": "^1.5.0", + "nan": "^2.12.1" + }, + "engines": { + "node": ">= 4.0" + } + }, + "node_modules/live-server/node_modules/glob-parent": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", + "integrity": "sha512-E8Ak/2+dZY6fnzlR7+ueWvhsH1SjHr4jjss4YS/h4py44jY9MhK/VFdaZJAWDz6BbL21KeteKxFSFpq8OS5gVA==", + "dev": true, + "dependencies": { + "is-glob": "^3.1.0", + "path-dirname": "^1.0.0" + } + }, + "node_modules/live-server/node_modules/glob-parent/node_modules/is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha512-UFpDDrPgM6qpnFNI+rh/p3bUaq9hKLZN8bMUWzxmcnZVS3omf4IPK+BrewlnWjO1WmUsMYuSjKh4UJuV4+Lqmw==", + "dev": true, + "dependencies": { + "is-extglob": "^2.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/live-server/node_modules/is-binary-path": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", + "integrity": "sha512-9fRVlXc0uCxEDj1nQzaWONSpbTfx0FmJfzHF7pwlI8DkWGoHBBea4Pg5Ky0ojwwxQmnSifgbKkI06Qv0Ljgj+Q==", + "dev": true, + "dependencies": { + "binary-extensions": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/live-server/node_modules/is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/live-server/node_modules/is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/live-server/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/live-server/node_modules/readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dev": true, + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/live-server/node_modules/readdirp": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz", + "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.1.11", + "micromatch": "^3.1.10", + "readable-stream": "^2.0.2" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/live-server/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/live-server/node_modules/to-regex-range": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", + "integrity": "sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg==", + "dev": true, + "dependencies": { + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true + }, + "node_modules/lodash._reinterpolate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz", + "integrity": "sha512-xYHt68QRoYGjeeM/XOE1uJtvXQAgvszfBhjV4yvsQH0u2i9I6cI6c6/eG4Hh3UAOVn0y/xAXwmTzEay49Q//HA==", + "dev": true + }, + "node_modules/lodash.assignin": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/lodash.assignin/-/lodash.assignin-4.2.0.tgz", + "integrity": "sha512-yX/rx6d/UTVh7sSVWVSIMjfnz95evAgDFdb1ZozC35I9mSFCkmzptOzevxjgbQUsc78NR44LVHWjsoMQXy9FDg==", + "dev": true + }, + "node_modules/lodash.bind": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/lodash.bind/-/lodash.bind-4.2.1.tgz", + "integrity": "sha512-lxdsn7xxlCymgLYo1gGvVrfHmkjDiyqVv62FAeF2i5ta72BipE1SLxw8hPEPLhD4/247Ijw07UQH7Hq/chT5LA==", + "dev": true + }, + "node_modules/lodash.deburr": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/lodash.deburr/-/lodash.deburr-4.1.0.tgz", + "integrity": "sha512-m/M1U1f3ddMCs6Hq2tAsYThTBDaAKFDX3dwDo97GEYzamXi9SqUpjWi/Rrj/gf3X2n8ktwgZrlP1z6E3v/IExQ==", + "dev": true + }, + "node_modules/lodash.defaults": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/lodash.defaults/-/lodash.defaults-4.2.0.tgz", + "integrity": "sha512-qjxPLHd3r5DnsdGacqOMU6pb/avJzdh9tFX2ymgoZE27BmjXrNy/y4LoaiTeAb+O3gL8AfpJGtqfX/ae2leYYQ==", + "dev": true + }, + "node_modules/lodash.filter": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/lodash.filter/-/lodash.filter-4.6.0.tgz", + "integrity": "sha512-pXYUy7PR8BCLwX5mgJ/aNtyOvuJTdZAo9EQFUvMIYugqmJxnrYaANvTbgndOzHSCSR0wnlBBfRXJL5SbWxo3FQ==", + "dev": true + }, + "node_modules/lodash.flatten": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/lodash.flatten/-/lodash.flatten-4.4.0.tgz", + "integrity": "sha512-C5N2Z3DgnnKr0LOpv/hKCgKdb7ZZwafIrsesve6lmzvZIRZRGaZ/l6Q8+2W7NaT+ZwO3fFlSCzCzrDCFdJfZ4g==", + "dev": true + }, + "node_modules/lodash.foreach": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.foreach/-/lodash.foreach-4.5.0.tgz", + "integrity": "sha512-aEXTF4d+m05rVOAUG3z4vZZ4xVexLKZGF0lIxuHZ1Hplpk/3B6Z1+/ICICYRLm7c41Z2xiejbkCkJoTlypoXhQ==", + "dev": true + }, + "node_modules/lodash.map": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/lodash.map/-/lodash.map-4.6.0.tgz", + "integrity": "sha512-worNHGKLDetmcEYDvh2stPCrrQRkP20E4l0iIS7F8EvzMqBBi7ltvFN5m1HvTf1P7Jk1txKhvFcmYsCr8O2F1Q==", + "dev": true + }, + "node_modules/lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "dev": true + }, + "node_modules/lodash.pick": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/lodash.pick/-/lodash.pick-4.4.0.tgz", + "integrity": "sha512-hXt6Ul/5yWjfklSGvLQl8vM//l3FtyHZeuelpzK6mm99pNvN9yTDruNZPEJZD1oWrqo+izBmB7oUfWgcCX7s4Q==", + "dev": true + }, + "node_modules/lodash.reduce": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/lodash.reduce/-/lodash.reduce-4.6.0.tgz", + "integrity": "sha512-6raRe2vxCYBhpBu+B+TtNGUzah+hQjVdu3E17wfusjyrXBka2nBS8OH/gjVZ5PvHOhWmIZTYri09Z6n/QfnNMw==", + "dev": true + }, + "node_modules/lodash.reject": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/lodash.reject/-/lodash.reject-4.6.0.tgz", + "integrity": "sha512-qkTuvgEzYdyhiJBx42YPzPo71R1aEr0z79kAv7Ixg8wPFEjgRgJdUsGMG3Hf3OYSF/kHI79XhNlt+5Ar6OzwxQ==", + "dev": true + }, + "node_modules/lodash.some": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/lodash.some/-/lodash.some-4.6.0.tgz", + "integrity": "sha512-j7MJE+TuT51q9ggt4fSgVqro163BEFjAt3u97IqU+JA2DkWl80nFTrowzLpZ/BnpN7rrl0JA/593NAdd8p/scQ==", + "dev": true + }, + "node_modules/lodash.template": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.template/-/lodash.template-4.5.0.tgz", + "integrity": "sha512-84vYFxIkmidUiFxidA/KjjH9pAycqW+h980j7Fuz5qxRtO9pgB7MDFTdys1N7A5mcucRiDyEq4fusljItR1T/A==", + "dev": true, + "dependencies": { + "lodash._reinterpolate": "^3.0.0", + "lodash.templatesettings": "^4.0.0" + } + }, + "node_modules/lodash.templatesettings": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/lodash.templatesettings/-/lodash.templatesettings-4.2.0.tgz", + "integrity": "sha512-stgLz+i3Aa9mZgnjr/O+v9ruKZsPsndy7qPZOchbqk2cnTU1ZaldKK+v7m54WoKIyxiuMZTKT2H81F8BeAc3ZQ==", + "dev": true, + "dependencies": { + "lodash._reinterpolate": "^3.0.0" + } + }, + "node_modules/lodash.uniq": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", + "integrity": "sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==", + "dev": true + }, + "node_modules/logform": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/logform/-/logform-1.10.0.tgz", + "integrity": "sha512-em5ojIhU18fIMOw/333mD+ZLE2fis0EzXl1ZwHx4iQzmpQi6odNiY/t+ITNr33JZhT9/KEaH+UPIipr6a9EjWg==", + "dev": true, + "dependencies": { + "colors": "^1.2.1", + "fast-safe-stringify": "^2.0.4", + "fecha": "^2.3.3", + "ms": "^2.1.1", + "triple-beam": "^1.2.0" + } + }, + "node_modules/logform/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true + }, + "node_modules/lru-cache": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", + "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", + "dev": true, + "dependencies": { + "pseudomap": "^1.0.2", + "yallist": "^2.1.2" + } + }, + "node_modules/map-cache": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", + "integrity": "sha512-8y/eV9QQZCiyn1SprXSrCmqJN0yNRATe+PO8ztwqrvrbdRLA3eYJF0yaR0YayLWkMbsQSKWS9N2gPcGEc4UsZg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/map-stream": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/map-stream/-/map-stream-0.1.0.tgz", + "integrity": "sha512-CkYQrPYZfWnu/DAmVCpTSX/xHpKZ80eKh2lAkyA6AJTef6bW+6JpbQZN5rofum7da+SyN1bi5ctTm+lTfcCW3g==", + "dev": true + }, + "node_modules/map-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", + "integrity": "sha512-4y7uGv8bd2WdM9vpQsiQNo41Ln1NvhvDRuVt0k2JZQ+ezN2uaQes7lZeZ+QQUHOLQAtDaBJ+7wCbi+ab/KFs+w==", + "dev": true, + "dependencies": { + "object-visit": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/markbind-cli": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/markbind-cli/-/markbind-cli-5.1.0.tgz", + "integrity": "sha512-6POI1Q++2aZa+Udk/oQ6LX1oNPbKUBDY0mN3Up7VOFeK+XYW51faxuCk2Q91JTBxYRKLNtshxf0y12kB4Cj9Qw==", + "dev": true, + "dependencies": { + "@markbind/core": "5.1.0", + "@markbind/core-web": "5.1.0", + "bluebird": "^3.7.2", + "chalk": "^3.0.0", + "cheerio": "^0.22.0", + "chokidar": "^3.3.0", + "colors": "1.4.0", + "commander": "^8.1.0", + "figlet": "^1.2.4", + "find-up": "^4.1.0", + "fs-extra": "^9.0.1", + "live-server": "1.2.1", + "lodash": "^4.17.15", + "url-parse": "^1.5.10", + "winston": "^2.4.4", + "winston-daily-rotate-file": "^3.10.0" + }, + "bin": { + "markbind": "index.js" + } + }, + "node_modules/markdown-it": { + "version": "12.3.2", + "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-12.3.2.tgz", + "integrity": "sha512-TchMembfxfNVpHkbtriWltGWc+m3xszaRD0CZup7GFFhzIgQqxIfn3eGj1yZpfuflzPvfkt611B2Q/Bsk1YnGg==", + "dev": true, + "dependencies": { + "argparse": "^2.0.1", + "entities": "~2.1.0", + "linkify-it": "^3.0.1", + "mdurl": "^1.0.1", + "uc.micro": "^1.0.5" + }, + "bin": { + "markdown-it": "bin/markdown-it.js" + } + }, + "node_modules/markdown-it-attrs": { + "version": "4.1.6", + "resolved": "https://registry.npmjs.org/markdown-it-attrs/-/markdown-it-attrs-4.1.6.tgz", + "integrity": "sha512-O7PDKZlN8RFMyDX13JnctQompwrrILuz2y43pW2GagcwpIIElkAdfeek+erHfxUOlXWPsjFeWmZ8ch1xtRLWpA==", + "dev": true, + "engines": { + "node": ">=6" + }, + "peerDependencies": { + "markdown-it": ">= 9.0.0" + } + }, + "node_modules/markdown-it-emoji": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/markdown-it-emoji/-/markdown-it-emoji-1.4.0.tgz", + "integrity": "sha512-QCz3Hkd+r5gDYtS2xsFXmBYrgw6KuWcJZLCEkdfAuwzZbShCmCfta+hwAMq4NX/4xPzkSHduMKgMkkPUJxSXNg==", + "dev": true + }, + "node_modules/markdown-it-linkify-images": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/markdown-it-linkify-images/-/markdown-it-linkify-images-3.0.0.tgz", + "integrity": "sha512-Vs5yGJa5MWjFgytzgtn8c1U6RcStj3FZKhhx459U8dYbEE5FTWZ6mMRkYMiDlkFO0j4VCsQT1LT557bY0ETgtg==", + "dev": true, + "dependencies": { + "markdown-it": "^13.0.1" + } + }, + "node_modules/markdown-it-linkify-images/node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true + }, + "node_modules/markdown-it-linkify-images/node_modules/entities": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/entities/-/entities-3.0.1.tgz", + "integrity": "sha512-WiyBqoomrwMdFG1e0kqvASYfnlb0lp8M5o5Fw2OFq1hNZxxcNk8Ik0Xm7LxzBhuidnZB/UtBqVCgUz3kBOP51Q==", + "dev": true, + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/markdown-it-linkify-images/node_modules/linkify-it": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-4.0.1.tgz", + "integrity": "sha512-C7bfi1UZmoj8+PQx22XyeXCuBlokoyWQL5pWSP+EI6nzRylyThouddufc2c1NDIcP9k5agmN9fLpA7VNJfIiqw==", + "dev": true, + "dependencies": { + "uc.micro": "^1.0.1" + } + }, + "node_modules/markdown-it-linkify-images/node_modules/markdown-it": { + "version": "13.0.1", + "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-13.0.1.tgz", + "integrity": "sha512-lTlxriVoy2criHP0JKRhO2VDG9c2ypWCsT237eDiLqi09rmbKoUetyGHq2uOIRoRS//kfoJckS0eUzzkDR+k2Q==", + "dev": true, + "dependencies": { + "argparse": "^2.0.1", + "entities": "~3.0.1", + "linkify-it": "^4.0.1", + "mdurl": "^1.0.1", + "uc.micro": "^1.0.5" + }, + "bin": { + "markdown-it": "bin/markdown-it.js" + } + }, + "node_modules/markdown-it-mark": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/markdown-it-mark/-/markdown-it-mark-3.0.1.tgz", + "integrity": "sha512-HyxjAu6BRsdt6Xcv6TKVQnkz/E70TdGXEFHRYBGLncRE9lBFwDNLVtFojKxjJWgJ+5XxUwLaHXy+2sGBbDn+4A==", + "dev": true + }, + "node_modules/markdown-it-regexp": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/markdown-it-regexp/-/markdown-it-regexp-0.4.0.tgz", + "integrity": "sha512-0XQmr46K/rMKnI93Y3CLXsHj4jIioRETTAiVnJnjrZCEkGaDOmUxTbZj/aZ17G5NlRcVpWBYjqpwSlQ9lj+Kxw==", + "dev": true + }, + "node_modules/markdown-it-sub": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/markdown-it-sub/-/markdown-it-sub-1.0.0.tgz", + "integrity": "sha512-z2Rm/LzEE1wzwTSDrI+FlPEveAAbgdAdPhdWarq/ZGJrGW/uCQbKAnhoCsE4hAbc3SEym26+W2z/VQB0cQiA9Q==", + "dev": true + }, + "node_modules/markdown-it-sup": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/markdown-it-sup/-/markdown-it-sup-1.0.0.tgz", + "integrity": "sha512-E32m0nV9iyhRR7CrhnzL5msqic7rL1juWre6TQNxsnApg7Uf+F97JOKxUijg5YwXz86lZ0mqfOnutoryyNdntQ==", + "dev": true + }, + "node_modules/markdown-it-table-of-contents": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/markdown-it-table-of-contents/-/markdown-it-table-of-contents-0.4.4.tgz", + "integrity": "sha512-TAIHTHPwa9+ltKvKPWulm/beozQU41Ab+FIefRaQV1NRnpzwcV9QOe6wXQS5WLivm5Q/nlo0rl6laGkMDZE7Gw==", + "dev": true, + "engines": { + "node": ">6.4.0" + } + }, + "node_modules/markdown-it-task-lists": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/markdown-it-task-lists/-/markdown-it-task-lists-2.1.1.tgz", + "integrity": "sha512-TxFAc76Jnhb2OUu+n3yz9RMu4CwGfaT788br6HhEDlvWfdeJcLUsxk1Hgw2yJio0OXsxv7pyIPmvECY7bMbluA==", + "dev": true + }, + "node_modules/markdown-it-texmath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/markdown-it-texmath/-/markdown-it-texmath-1.0.0.tgz", + "integrity": "sha512-4hhkiX8/gus+6e53PLCUmUrsa6ZWGgJW2XCW6O0ASvZUiezIK900ZicinTDtG3kAO2kon7oUA/ReWmpW2FByxg==", + "dev": true + }, + "node_modules/markdown-it-video": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/markdown-it-video/-/markdown-it-video-0.6.3.tgz", + "integrity": "sha512-T4th1kwy0OcvyWSN4u3rqPGxvbDclpucnVSSaH3ZacbGsAts964dxokx9s/I3GYsrDCJs4ogtEeEeVP18DQj0Q==", + "dev": true + }, + "node_modules/markdown-it/node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true + }, + "node_modules/markdown-it/node_modules/entities": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.1.0.tgz", + "integrity": "sha512-hCx1oky9PFrJ611mf0ifBLBRW8lUUVRlFolb5gWRfIELabBlbp9xZvrqZLZAs+NxFnbfQoeGd8wDkygjg7U85w==", + "dev": true, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/matcher-collection": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/matcher-collection/-/matcher-collection-2.0.1.tgz", + "integrity": "sha512-daE62nS2ZQsDg9raM0IlZzLmI2u+7ZapXBwdoeBUKAYERPDDIc0qNqA8E0Rp2D+gspKR7BgIFP52GeujaGXWeQ==", + "dev": true, + "dependencies": { + "@types/minimatch": "^3.0.3", + "minimatch": "^3.0.2" + }, + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, + "node_modules/material-icons": { + "version": "1.13.11", + "resolved": "https://registry.npmjs.org/material-icons/-/material-icons-1.13.11.tgz", + "integrity": "sha512-kp2oAdaqo/Zp6hpTZW01rOgDPWmxBUszSdDzkRm1idCjjNvdUMnqu8qu58cll6CObo+o0cydOiPLdoSugLm+mQ==", + "dev": true + }, + "node_modules/mdurl": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-1.0.1.tgz", + "integrity": "sha512-/sKlQJCBYVY9Ers9hqzKou4H6V5UWc/M59TH2dvkt+84itfnq7uFOMLpOiOS4ujvHP4etln18fmIxA5R5fll0g==", + "dev": true + }, + "node_modules/micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "dev": true, + "dependencies": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/micromatch/node_modules/braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "dev": true, + "dependencies": { + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/micromatch/node_modules/braces/node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "dev": true, + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/micromatch/node_modules/fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ==", + "dev": true, + "dependencies": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/micromatch/node_modules/fill-range/node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "dev": true, + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/micromatch/node_modules/is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/micromatch/node_modules/is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/micromatch/node_modules/is-number/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/micromatch/node_modules/to-regex-range": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", + "integrity": "sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg==", + "dev": true, + "dependencies": { + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "dev": true, + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "dev": true, + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/mixin-deep": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz", + "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==", + "dev": true, + "dependencies": { + "for-in": "^1.0.2", + "is-extendable": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/moment": { + "version": "2.29.4", + "resolved": "https://registry.npmjs.org/moment/-/moment-2.29.4.tgz", + "integrity": "sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w==", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/morgan": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/morgan/-/morgan-1.10.0.tgz", + "integrity": "sha512-AbegBVI4sh6El+1gNwvD5YIck7nSA36weD7xvIxG4in80j/UoK8AEGaWnnz8v1GxonMCltmlNs5ZKbGvl9b1XQ==", + "dev": true, + "dependencies": { + "basic-auth": "~2.0.1", + "debug": "2.6.9", + "depd": "~2.0.0", + "on-finished": "~2.3.0", + "on-headers": "~1.0.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "node_modules/nan": { + "version": "2.16.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.16.0.tgz", + "integrity": "sha512-UdAqHyFngu7TfQKsCBgAA6pWDkT8MAO7d0jyOecVhN5354xbLqdn8mV9Tat9gepAupm0bt2DbeaSC8vS52MuFA==", + "dev": true, + "optional": true + }, + "node_modules/nanomatch": { + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", + "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==", + "dev": true, + "dependencies": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "fragment-cache": "^0.2.1", + "is-windows": "^1.0.2", + "kind-of": "^6.0.2", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/negotiator": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", + "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/nopt": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-5.0.0.tgz", + "integrity": "sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==", + "dev": true, + "dependencies": { + "abbrev": "1" + }, + "bin": { + "nopt": "bin/nopt.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/normalize-url": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-1.9.1.tgz", + "integrity": "sha512-A48My/mtCklowHBlI8Fq2jFWK4tX4lJ5E6ytFsSOq1fzpvT0SQSgKhSg7lN5c2uYFOrUAOQp6zhhJnpp1eMloQ==", + "dev": true, + "dependencies": { + "object-assign": "^4.0.1", + "prepend-http": "^1.0.0", + "query-string": "^4.1.0", + "sort-keys": "^1.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/nth-check": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-1.0.2.tgz", + "integrity": "sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg==", + "dev": true, + "dependencies": { + "boolbase": "~1.0.0" + } + }, + "node_modules/nunjucks": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/nunjucks/-/nunjucks-3.2.2.tgz", + "integrity": "sha512-KUi85OoF2NMygwODAy28Lh9qHmq5hO3rBlbkYoC8v377h4l8Pt5qFjILl0LWpMbOrZ18CzfVVUvIHUIrtED3sA==", + "dev": true, + "dependencies": { + "a-sync-waterfall": "^1.0.0", + "asap": "^2.0.3", + "commander": "^5.1.0" + }, + "bin": { + "nunjucks-precompile": "bin/precompile" + }, + "engines": { + "node": ">= 6.9.0" + }, + "optionalDependencies": { + "chokidar": "^3.3.0" + } + }, + "node_modules/nunjucks/node_modules/commander": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-5.1.0.tgz", + "integrity": "sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-copy": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", + "integrity": "sha512-79LYn6VAb63zgtmAteVOWo9Vdj71ZVBy3Pbse+VqxDpEP83XuujMrGqHIwAXJ5I/aM0zU7dIyIAhifVTPrNItQ==", + "dev": true, + "dependencies": { + "copy-descriptor": "^0.1.0", + "define-property": "^0.2.5", + "kind-of": "^3.0.3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-copy/node_modules/define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", + "dev": true, + "dependencies": { + "is-descriptor": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-copy/node_modules/is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-copy/node_modules/is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-copy/node_modules/is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "dependencies": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-copy/node_modules/is-descriptor/node_modules/kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-copy/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-hash": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-1.3.1.tgz", + "integrity": "sha512-OSuu/pU4ENM9kmREg0BdNrUDIl1heYa4mBZacJc+vVWz4GtAwu7jO8s4AIt2aGRUTqxykpWzI3Oqnsm13tTMDA==", + "dev": true, + "engines": { + "node": ">= 0.10.0" + } + }, + "node_modules/object-visit": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", + "integrity": "sha512-GBaMwwAVK9qbQN3Scdo0OyvgPW7l3lnaVMj84uTOZlswkX0KpF6fyDBJhtTthf7pymztoN36/KEr1DyhF96zEA==", + "dev": true, + "dependencies": { + "isobject": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object.pick": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", + "integrity": "sha512-tqa/UMy/CCoYmj+H5qc07qvSL9dqcs/WZENZ1JbtWBlATP+iVOe778gE6MSijnyCnORzDuX6hU+LA4SZ09YjFQ==", + "dev": true, + "dependencies": { + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/on-finished": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", + "integrity": "sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==", + "dev": true, + "dependencies": { + "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/on-headers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz", + "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dev": true, + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/opn": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/opn/-/opn-6.0.0.tgz", + "integrity": "sha512-I9PKfIZC+e4RXZ/qr1RhgyCnGgYX0UEIlXgWnCOVACIvFgaC9rz6Won7xbdhoHrd8IIhV7YEpHjreNUNkqCGkQ==", + "deprecated": "The package has been renamed to `open`", + "dev": true, + "dependencies": { + "is-wsl": "^1.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/pascalcase": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", + "integrity": "sha512-XHXfu/yOQRy9vYOtUDVMN60OEJjW013GoObG1o+xwQTpB9eYJX/BjXMsdW13ZDPruFhYYn0AG22w0xgQMwl3Nw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-dirname": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", + "integrity": "sha512-ALzNPpyNq9AqXMBjeymIjFDAkAFH06mHJH/cSBHAgU0s4vfpBn6b2nf8tiRLvagKD8RbTpq2FKTBg7cl9l3c7Q==", + "dev": true + }, + "node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-is-inside": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", + "integrity": "sha512-DUWJr3+ULp4zXmol/SZkFf3JGsS9/SIv+Y3Rt93/UjPpDpklB5f1er4O3POIbUuUJ3FXgqte2Q7SrU6zAqwk8w==", + "dev": true + }, + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true + }, + "node_modules/pause-stream": { + "version": "0.0.11", + "resolved": "https://registry.npmjs.org/pause-stream/-/pause-stream-0.0.11.tgz", + "integrity": "sha512-e3FBlXLmN/D1S+zHzanP4E/4Z60oFAa3O051qt1pxa7DEJWKAyil6upYVXCWadEnuoqa4Pkc9oUx9zsxYeRv8A==", + "dev": true, + "dependencies": { + "through": "~2.3" + } + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/pinkie": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", + "integrity": "sha512-MnUuEycAemtSaeFSjXKW/aroV7akBbY+Sv+RkyqFjgAe73F+MR0TBWKBRDkmfWq/HiFmdavfZ1G7h4SPZXaCSg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/pinkie-promise": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", + "integrity": "sha512-0Gni6D4UcLTbv9c57DfxDGdr41XfgUjqWZu492f0cIGr16zDU06BWP/RAEvOuo7CQ0CNjHaLlM59YJJFm3NWlw==", + "dev": true, + "dependencies": { + "pinkie": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/posix-character-classes": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", + "integrity": "sha512-xTgYBc3fuo7Yt7JbiuFxSYGToMoz8fLoE6TC9Wx1P/u+LfeThMOAqmuyECnlBaaJb+u1m9hHiXUEtwW4OzfUJg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/prepend-http": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-1.0.4.tgz", + "integrity": "sha512-PhmXi5XmoyKw1Un4E+opM2KcsJInDvKyuOumcjjw3waw86ZNjHwVUOOWLc4bCzLdcKNaWBH9e99sbWzDQsVaYg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", + "dev": true + }, + "node_modules/proto-list": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/proto-list/-/proto-list-1.2.4.tgz", + "integrity": "sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==", + "dev": true + }, + "node_modules/proxy-middleware": { + "version": "0.15.0", + "resolved": "https://registry.npmjs.org/proxy-middleware/-/proxy-middleware-0.15.0.tgz", + "integrity": "sha512-EGCG8SeoIRVMhsqHQUdDigB2i7qU7fCsWASwn54+nPutYO8n4q6EiwMzyfWlC+dzRFExP+kvcnDFdBDHoZBU7Q==", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/pseudomap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", + "integrity": "sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ==", + "dev": true + }, + "node_modules/query-string": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/query-string/-/query-string-4.3.4.tgz", + "integrity": "sha512-O2XLNDBIg1DnTOa+2XrIwSiXEV8h2KImXUnjhhn2+UsvZ+Es2uyd5CCRTNQlDGbzUQOW3aYCBx9rVA6dzsiY7Q==", + "dev": true, + "dependencies": { + "object-assign": "^4.1.0", + "strict-uri-encode": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/querystringify": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", + "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==", + "dev": true + }, + "node_modules/randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "dev": true, + "dependencies": { + "safe-buffer": "^5.1.0" + } + }, + "node_modules/range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dev": true, + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dev": true, + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/regex-not": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", + "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", + "dev": true, + "dependencies": { + "extend-shallow": "^3.0.2", + "safe-regex": "^1.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/remove-trailing-separator": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", + "integrity": "sha512-/hS+Y0u3aOfIETiaiirUFwDBDzmXPvO+jAfKTitUngIPzdKc6Z0LoFjM/CK5PL4C+eKwHohlHAb6H0VFfmmUsw==", + "dev": true + }, + "node_modules/repeat-element": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.4.tgz", + "integrity": "sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/repeat-string": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", + "integrity": "sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w==", + "dev": true, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/requires-port": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", + "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==", + "dev": true + }, + "node_modules/resolve": { + "version": "1.22.4", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.4.tgz", + "integrity": "sha512-PXNdCiPqDqeUou+w1C2eTQbNfxKSuMxqTCuvlmmMsk1NWHL5fRrhY6Pl0qEYYc6+QqGClco1Qj8XnjPego4wfg==", + "dev": true, + "dependencies": { + "is-core-module": "^2.13.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/resolve-url": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", + "integrity": "sha512-ZuF55hVUQaaczgOIwqWzkEcEidmlD/xl44x1UZnhOXcYuFN2S6+rcxpG+C1N3So0wvNI3DmJICUFfu2SxhBmvg==", + "deprecated": "https://github.com/lydell/resolve-url#deprecated", + "dev": true + }, + "node_modules/ret": { + "version": "0.1.15", + "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", + "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", + "dev": true, + "engines": { + "node": ">=0.12" + } + }, + "node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "node_modules/safe-regex": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", + "integrity": "sha512-aJXcif4xnaNUzvUuC5gcb46oTS7zvg4jpMTnuqtrEPlR3vFr4pxtdTwaF1Qs3Enjn9HK+ZlwQui+a7z0SywIzg==", + "dev": true, + "dependencies": { + "ret": "~0.1.10" + } + }, + "node_modules/safe-stable-stringify": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/safe-stable-stringify/-/safe-stable-stringify-2.3.1.tgz", + "integrity": "sha512-kYBSfT+troD9cDA85VDnHZ1rpHC50O0g1e6WlGHVCz/g+JS+9WKLj+XwFYyR8UbrZN8ll9HUpDAAddY58MGisg==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/semver": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "dev": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/send": { + "version": "0.18.0", + "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", + "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", + "dev": true, + "dependencies": { + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "mime": "1.6.0", + "ms": "2.1.3", + "on-finished": "2.4.1", + "range-parser": "~1.2.1", + "statuses": "2.0.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/send/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true + }, + "node_modules/send/node_modules/on-finished": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", + "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", + "dev": true, + "dependencies": { + "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/send/node_modules/statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/serialize-javascript": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-3.1.0.tgz", + "integrity": "sha512-JIJT1DGiWmIKhzRsG91aS6Ze4sFUrYbltlkg2onR5OrnNM02Kl/hnY/T4FN2omvyeBbQmMJv+K4cPOpGzOTFBg==", + "dev": true, + "dependencies": { + "randombytes": "^2.1.0" + } + }, + "node_modules/serve-index": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz", + "integrity": "sha512-pXHfKNP4qujrtteMrSBb0rc8HJ9Ms/GrXwcUtUtD5s4ewDJI8bT3Cz2zTVRMKtri49pLx2e0Ya8ziP5Ya2pZZw==", + "dev": true, + "dependencies": { + "accepts": "~1.3.4", + "batch": "0.6.1", + "debug": "2.6.9", + "escape-html": "~1.0.3", + "http-errors": "~1.6.2", + "mime-types": "~2.1.17", + "parseurl": "~1.3.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/serve-index/node_modules/depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/serve-index/node_modules/http-errors": { + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", + "integrity": "sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==", + "dev": true, + "dependencies": { + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.0", + "statuses": ">= 1.4.0 < 2" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/serve-index/node_modules/inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==", + "dev": true + }, + "node_modules/serve-index/node_modules/setprototypeof": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", + "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==", + "dev": true + }, + "node_modules/set-value": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz", + "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==", + "dev": true, + "dependencies": { + "extend-shallow": "^2.0.1", + "is-extendable": "^0.1.1", + "is-plain-object": "^2.0.3", + "split-string": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/set-value/node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "dev": true, + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/set-value/node_modules/is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/setprototypeof": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", + "dev": true + }, + "node_modules/sigmund": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz", + "integrity": "sha512-fCvEXfh6NWpm+YSuY2bpXb/VIihqWA6hLsgboC+0nl71Q7N7o2eaCW8mJa/NLvQhs6jpd3VZV4UiUQlV6+lc8g==", + "dev": true + }, + "node_modules/simple-git": { + "version": "2.48.0", + "resolved": "https://registry.npmjs.org/simple-git/-/simple-git-2.48.0.tgz", + "integrity": "sha512-z4qtrRuaAFJS4PUd0g+xy7aN4y+RvEt/QTJpR184lhJguBA1S/LsVlvE/CM95RsYMOFJG3NGGDjqFCzKU19S/A==", + "dev": true, + "dependencies": { + "@kwsites/file-exists": "^1.1.1", + "@kwsites/promise-deferred": "^1.1.1", + "debug": "^4.3.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/steveukx/" + } + }, + "node_modules/simple-git/node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/simple-git/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/snapdragon": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", + "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", + "dev": true, + "dependencies": { + "base": "^0.11.1", + "debug": "^2.2.0", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "map-cache": "^0.2.2", + "source-map": "^0.5.6", + "source-map-resolve": "^0.5.0", + "use": "^3.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon-node": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", + "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", + "dev": true, + "dependencies": { + "define-property": "^1.0.0", + "isobject": "^3.0.0", + "snapdragon-util": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon-node/node_modules/define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==", + "dev": true, + "dependencies": { + "is-descriptor": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon-util": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", + "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", + "dev": true, + "dependencies": { + "kind-of": "^3.2.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon-util/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon/node_modules/define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", + "dev": true, + "dependencies": { + "is-descriptor": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon/node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "dev": true, + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon/node_modules/is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon/node_modules/is-accessor-descriptor/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon/node_modules/is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon/node_modules/is-data-descriptor/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon/node_modules/is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "dependencies": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon/node_modules/is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon/node_modules/kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/sort-keys": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-1.1.2.tgz", + "integrity": "sha512-vzn8aSqKgytVik0iwdBEi+zevbTYZogewTUM6dtpmGwEcdzbub/TX4bCzRhebDCRC3QzXgJsLRKB2V/Oof7HXg==", + "dev": true, + "dependencies": { + "is-plain-obj": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.6.tgz", + "integrity": "sha512-MjZkVp0NHr5+TPihLcadqnlVoGIoWo4IBHptutGh9wI3ttUYvCG26HkSuDi+K6lsZ25syXJXcctwgyVCt//xqA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-resolve": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.3.tgz", + "integrity": "sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==", + "deprecated": "See https://github.com/lydell/source-map-resolve#deprecated", + "dev": true, + "dependencies": { + "atob": "^2.1.2", + "decode-uri-component": "^0.2.0", + "resolve-url": "^0.2.1", + "source-map-url": "^0.4.0", + "urix": "^0.1.0" + } + }, + "node_modules/source-map-url": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.1.tgz", + "integrity": "sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw==", + "deprecated": "See https://github.com/lydell/source-map-url#deprecated", + "dev": true + }, + "node_modules/split": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/split/-/split-1.0.1.tgz", + "integrity": "sha512-mTyOoPbrivtXnwnIxZRFYRrPNtEFKlpB2fvjSnCQUiAA6qAZzqwna5envK4uk6OIeP17CsdF3rSBGYVBsU0Tkg==", + "dev": true, + "dependencies": { + "through": "2" + }, + "engines": { + "node": "*" + } + }, + "node_modules/split-string": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", + "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", + "dev": true, + "dependencies": { + "extend-shallow": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", + "dev": true + }, + "node_modules/stack-trace": { + "version": "0.0.10", + "resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.10.tgz", + "integrity": "sha512-KGzahc7puUKkzyMt+IqAep+TVNbKP+k2Lmwhub39m1AsTSkaDutx56aDCo+HLDzf/D26BIHTJWNiTG1KAJiQCg==", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/static-extend": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", + "integrity": "sha512-72E9+uLc27Mt718pMHt9VMNiAL4LMsmDbBva8mxWUCkT07fSzEGMYUCk0XWY6lp0j6RBAG4cJ3mWuZv2OE3s0g==", + "dev": true, + "dependencies": { + "define-property": "^0.2.5", + "object-copy": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/static-extend/node_modules/define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", + "dev": true, + "dependencies": { + "is-descriptor": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/static-extend/node_modules/is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/static-extend/node_modules/is-accessor-descriptor/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/static-extend/node_modules/is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/static-extend/node_modules/is-data-descriptor/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/static-extend/node_modules/is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "dependencies": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/static-extend/node_modules/kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/stream-combiner": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/stream-combiner/-/stream-combiner-0.2.2.tgz", + "integrity": "sha512-6yHMqgLYDzQDcAkL+tjJDC5nSNuNIx0vZtRZeiPh7Saef7VHX9H5Ijn9l2VIol2zaNYlYEX6KyuT/237A58qEQ==", + "dev": true, + "dependencies": { + "duplexer": "~0.1.1", + "through": "~2.3.4" + } + }, + "node_modules/strict-uri-encode": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz", + "integrity": "sha512-R3f198pcvnB+5IpnBlRkphuE9n46WyVl8I39W/ZUTZLz4nqSP/oLYUrcnJrw462Ds8he4YKMov2efsTIw1BDGQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.2.0" + } + }, + "node_modules/string_decoder/node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", + "dev": true, + "dependencies": { + "ansi-regex": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/strip-outer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/strip-outer/-/strip-outer-1.0.1.tgz", + "integrity": "sha512-k55yxKHwaXnpYGsOzg4Vl8+tDrWylxDEpknGjhTiZB8dFRU5rTo9CAzeycivxV3s+zlTKwrs6WxMxR95n26kwg==", + "dev": true, + "dependencies": { + "escape-string-regexp": "^1.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/strip-url-auth": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/strip-url-auth/-/strip-url-auth-1.0.1.tgz", + "integrity": "sha512-++41PnXftlL3pvI6lpvhSEO+89g1kIJC4MYB5E6yH+WHa5InIqz51yGd1YOGd7VNSNdoEOfzTMqbAM/2PbgaHQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==", + "dev": true + }, + "node_modules/through2": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/through2/-/through2-3.0.2.tgz", + "integrity": "sha512-enaDQ4MUyP2W6ZyT6EsMzqBPZaM/avg8iuo+l2d3QCs0J+6RaqkHV/2/lOwDTueBHeJ/2LG9lrLW3d5rWPucuQ==", + "dev": true, + "dependencies": { + "inherits": "^2.0.4", + "readable-stream": "2 || 3" + } + }, + "node_modules/to-object-path": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", + "integrity": "sha512-9mWHdnGRuh3onocaHzukyvCZhzvr6tiflAy/JRFXcJX0TjgfWA9pk9t8CMbzmBE4Jfw58pXbkngtBtqYxzNEyg==", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/to-object-path/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/to-regex": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", + "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", + "dev": true, + "dependencies": { + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "regex-not": "^1.0.2", + "safe-regex": "^1.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/toidentifier": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", + "dev": true, + "engines": { + "node": ">=0.6" + } + }, + "node_modules/trim-repeated": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/trim-repeated/-/trim-repeated-1.0.0.tgz", + "integrity": "sha512-pkonvlKk8/ZuR0D5tLW8ljt5I8kmxp2XKymhepUeOdCEfKpZaktSArkLHZt76OB1ZvO9bssUsDty4SWhLvZpLg==", + "dev": true, + "dependencies": { + "escape-string-regexp": "^1.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/triple-beam": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/triple-beam/-/triple-beam-1.3.0.tgz", + "integrity": "sha512-XrHUvV5HpdLmIj4uVMxHggLbFSZYIn7HEWsqePZcI50pco+MPqJ50wMGY794X7AOOhxOBAjbkqfAbEe/QMp2Lw==", + "dev": true + }, + "node_modules/uc.micro": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-1.0.6.tgz", + "integrity": "sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA==", + "dev": true + }, + "node_modules/union-value": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz", + "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==", + "dev": true, + "dependencies": { + "arr-union": "^3.1.0", + "get-value": "^2.0.6", + "is-extendable": "^0.1.1", + "set-value": "^2.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/union-value/node_modules/is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/universalify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "dev": true, + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/unix-crypt-td-js": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/unix-crypt-td-js/-/unix-crypt-td-js-1.1.4.tgz", + "integrity": "sha512-8rMeVYWSIyccIJscb9NdCfZKSRBKYTeVnwmiRYT2ulE3qd1RaDQ0xQDP+rI3ccIWbhu/zuo5cgN8z73belNZgw==", + "dev": true + }, + "node_modules/unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/unset-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", + "integrity": "sha512-PcA2tsuGSF9cnySLHTLSh2qrQiJ70mn+r+Glzxv2TWZblxsxCC52BDlZoPCsz7STd9pN7EZetkWZBAvk4cgZdQ==", + "dev": true, + "dependencies": { + "has-value": "^0.3.1", + "isobject": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/unset-value/node_modules/has-value": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", + "integrity": "sha512-gpG936j8/MzaeID5Yif+577c17TxaDmhuyVgSwtnL/q8UUTySg8Mecb+8Cf1otgLoD7DDH75axp86ER7LFsf3Q==", + "dev": true, + "dependencies": { + "get-value": "^2.0.3", + "has-values": "^0.1.4", + "isobject": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/unset-value/node_modules/has-value/node_modules/isobject": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha512-+OUdGJlgjOBZDfxnDjYYG6zp487z0JGNQq3cYQYg5f5hKR+syHMsaztzGeml/4kGG55CSpKSpWTY+jYGgsHLgA==", + "dev": true, + "dependencies": { + "isarray": "1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/unset-value/node_modules/has-values": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", + "integrity": "sha512-J8S0cEdWuQbqD9//tlZxiMuMNmxB8PlEwvYwuxsTmR1G5RXUePEX/SJn7aD0GMLieuZYSwNH0cQuJGwnYunXRQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/upath": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz", + "integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==", + "dev": true, + "engines": { + "node": ">=4", + "yarn": "*" + } + }, + "node_modules/urix": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", + "integrity": "sha512-Am1ousAhSLBeB9cG/7k7r2R0zj50uDRlZHPGbazid5s9rlF1F/QKYObEKSIunSjIOkJZqwRRLpvewjEkM7pSqg==", + "deprecated": "Please see https://github.com/lydell/urix#deprecated", + "dev": true + }, + "node_modules/url-parse": { + "version": "1.5.10", + "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz", + "integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==", + "dev": true, + "dependencies": { + "querystringify": "^2.1.1", + "requires-port": "^1.0.0" + } + }, + "node_modules/use": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", + "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "dev": true + }, + "node_modules/utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==", + "dev": true, + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "dev": true, + "bin": { + "uuid": "dist/bin/uuid" + } + }, + "node_modules/vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/vue": { + "version": "2.6.14", + "resolved": "https://registry.npmjs.org/vue/-/vue-2.6.14.tgz", + "integrity": "sha512-x2284lgYvjOMj3Za7kqzRcUSxBboHqtgRE2zlos1qWaOye5yUmHn42LB1250NJBLRwEcdrB0JRwyPTEPhfQjiQ==", + "dev": true + }, + "node_modules/vue-server-renderer": { + "version": "2.6.14", + "resolved": "https://registry.npmjs.org/vue-server-renderer/-/vue-server-renderer-2.6.14.tgz", + "integrity": "sha512-HifYRa/LW7cKywg9gd4ZtvtRuBlstQBao5ZCWlg40fyB4OPoGfEXAzxb0emSLv4pBDOHYx0UjpqvxpiQFEuoLA==", + "dev": true, + "dependencies": { + "chalk": "^1.1.3", + "hash-sum": "^1.0.2", + "he": "^1.1.0", + "lodash.template": "^4.5.0", + "lodash.uniq": "^4.5.0", + "resolve": "^1.2.0", + "serialize-javascript": "^3.1.0", + "source-map": "0.5.6" + } + }, + "node_modules/vue-server-renderer/node_modules/ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/vue-server-renderer/node_modules/chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==", + "dev": true, + "dependencies": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/vue-server-renderer/node_modules/supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/vue-template-compiler": { + "version": "2.6.14", + "resolved": "https://registry.npmjs.org/vue-template-compiler/-/vue-template-compiler-2.6.14.tgz", + "integrity": "sha512-ODQS1SyMbjKoO1JBJZojSw6FE4qnh9rIpUZn2EUT86FKizx9uH5z6uXiIrm4/Nb/gwxTi/o17ZDEGWAXHvtC7g==", + "dev": true, + "dependencies": { + "de-indent": "^1.0.2", + "he": "^1.1.0" + } + }, + "node_modules/walk-sync": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/walk-sync/-/walk-sync-2.2.0.tgz", + "integrity": "sha512-IC8sL7aB4/ZgFcGI2T1LczZeFWZ06b3zoHH7jBPyHxOtIIz1jppWHjjEXkOFvFojBVAK9pV7g47xOZ4LW3QLfg==", + "dev": true, + "dependencies": { + "@types/minimatch": "^3.0.3", + "ensure-posix-path": "^1.1.0", + "matcher-collection": "^2.0.0", + "minimatch": "^3.0.4" + }, + "engines": { + "node": "8.* || >= 10.*" + } + }, + "node_modules/websocket-driver": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz", + "integrity": "sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==", + "dev": true, + "dependencies": { + "http-parser-js": ">=0.5.1", + "safe-buffer": ">=5.1.0", + "websocket-extensions": ">=0.1.1" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/websocket-extensions": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.4.tgz", + "integrity": "sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/winston": { + "version": "2.4.6", + "resolved": "https://registry.npmjs.org/winston/-/winston-2.4.6.tgz", + "integrity": "sha512-J5Zu4p0tojLde8mIOyDSsmLmcP8I3Z6wtwpTDHx1+hGcdhxcJaAmG4CFtagkb+NiN1M9Ek4b42pzMWqfc9jm8w==", + "dev": true, + "dependencies": { + "async": "^3.2.3", + "colors": "1.0.x", + "cycle": "1.0.x", + "eyes": "0.1.x", + "isstream": "0.1.x", + "stack-trace": "0.0.x" + }, + "engines": { + "node": ">= 0.10.0" + } + }, + "node_modules/winston-compat": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/winston-compat/-/winston-compat-0.1.5.tgz", + "integrity": "sha512-EPvPcHT604AV3Ji6d3+vX8ENKIml9VSxMRnPQ+cuK/FX6f3hvPP2hxyoeeCOCFvDrJEujalfcKWlWPvAnFyS9g==", + "dev": true, + "dependencies": { + "cycle": "~1.0.3", + "logform": "^1.6.0", + "triple-beam": "^1.2.0" + }, + "engines": { + "node": ">= 6.4.0" + } + }, + "node_modules/winston-daily-rotate-file": { + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/winston-daily-rotate-file/-/winston-daily-rotate-file-3.10.0.tgz", + "integrity": "sha512-KO8CfbI2CvdR3PaFApEH02GPXiwJ+vbkF1mCkTlvRIoXFI8EFlf1ACcuaahXTEiDEKCii6cNe95gsL4ZkbnphA==", + "dev": true, + "dependencies": { + "file-stream-rotator": "^0.4.1", + "object-hash": "^1.3.0", + "semver": "^6.2.0", + "triple-beam": "^1.3.0", + "winston-compat": "^0.1.4", + "winston-transport": "^4.2.0" + }, + "engines": { + "node": ">=6" + }, + "peerDependencies": { + "winston": "^2 || ^3" + } + }, + "node_modules/winston-daily-rotate-file/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/winston-transport": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/winston-transport/-/winston-transport-4.5.0.tgz", + "integrity": "sha512-YpZzcUzBedhlTAfJg6vJDlyEai/IFMIVcaEZZyl3UXIl4gmqRpU7AE89AHLkbzLUsv0NVmw7ts+iztqKxxPW1Q==", + "dev": true, + "dependencies": { + "logform": "^2.3.2", + "readable-stream": "^3.6.0", + "triple-beam": "^1.3.0" + }, + "engines": { + "node": ">= 6.4.0" + } + }, + "node_modules/winston-transport/node_modules/fecha": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/fecha/-/fecha-4.2.3.tgz", + "integrity": "sha512-OP2IUU6HeYKJi3i0z4A19kHMQoLVs4Hc+DPqqxI2h/DPZHTm/vjsfC6P0b4jCMy14XizLBqvndQ+UilD7707Jw==", + "dev": true + }, + "node_modules/winston-transport/node_modules/logform": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/logform/-/logform-2.4.2.tgz", + "integrity": "sha512-W4c9himeAwXEdZ05dQNerhFz2XG80P9Oj0loPUMV23VC2it0orMHQhJm4hdnnor3rd1HsGf6a2lPwBM1zeXHGw==", + "dev": true, + "dependencies": { + "@colors/colors": "1.5.0", + "fecha": "^4.2.0", + "ms": "^2.1.1", + "safe-stable-stringify": "^2.3.1", + "triple-beam": "^1.3.0" + } + }, + "node_modules/winston-transport/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true + }, + "node_modules/winston/node_modules/async": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.4.tgz", + "integrity": "sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==", + "dev": true + }, + "node_modules/winston/node_modules/colors": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.0.3.tgz", + "integrity": "sha512-pFGrxThWcWQ2MsAz6RtgeWe4NK2kUE1WfsrvvlctdII745EW9I0yflqhe7++M5LEc7bV2c/9/5zc8sFcpL0Drw==", + "dev": true, + "engines": { + "node": ">=0.1.90" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "dev": true + }, + "node_modules/yallist": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", + "integrity": "sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A==", + "dev": true + } + }, + "dependencies": { + "@colors/colors": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.5.0.tgz", + "integrity": "sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==", + "dev": true + }, + "@fortawesome/fontawesome-free": { + "version": "6.4.2", + "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-free/-/fontawesome-free-6.4.2.tgz", + "integrity": "sha512-m5cPn3e2+FDCOgi1mz0RexTUvvQibBebOUlUlW0+YrMjDTPkiJ6VTKukA1GRsvRw+12KyJndNjj0O4AgTxm2Pg==", + "dev": true + }, + "@kwsites/file-exists": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@kwsites/file-exists/-/file-exists-1.1.1.tgz", + "integrity": "sha512-m9/5YGR18lIwxSFDwfE3oA7bWuq9kdau6ugN4H2rJeyhFQZcG9AgSHkQtSD15a8WvTgfz9aikZMrKPHvbpqFiw==", + "dev": true, + "requires": { + "debug": "^4.1.1" + }, + "dependencies": { + "debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "requires": { + "ms": "2.1.2" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + } + } + }, + "@kwsites/promise-deferred": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@kwsites/promise-deferred/-/promise-deferred-1.1.1.tgz", + "integrity": "sha512-GaHYm+c0O9MjZRu0ongGBRbinu8gVAMd2UZjji6jVmqKtZluZnptXGWhz1E8j8D2HJ3f/yMxKAUC0b+57wncIw==", + "dev": true + }, + "@markbind/core": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/@markbind/core/-/core-5.1.0.tgz", + "integrity": "sha512-YAXjH+qCXnrBzpKIAJkayVLmyIUaG/8Dms3Gpd2VIufeZyW8w0diXdgKSsymjzodTMgghZMdxG3Qpng833ARPg==", + "dev": true, + "requires": { + "@fortawesome/fontawesome-free": "^6.4.0", + "@markbind/core-web": "5.1.0", + "@primer/octicons": "^15.0.1", + "@sindresorhus/slugify": "^0.9.1", + "@tlylt/markdown-it-imsize": "^3.0.0", + "bluebird": "^3.7.2", + "bootswatch": "5.1.3", + "cheerio": "^0.22.0", + "crypto-js": "^4.0.0", + "csv-parse": "^4.14.2", + "ensure-posix-path": "^1.1.1", + "fastmatter": "^2.1.1", + "fs-extra": "^9.0.1", + "gh-pages": "^2.1.1", + "highlight.js": "^10.4.1", + "htmlparser2": "^3.10.1", + "ignore": "^5.1.4", + "js-beautify": "1.14.3", + "katex": "^0.15.6", + "lodash": "^4.17.15", + "markdown-it": "^12.3.2", + "markdown-it-attrs": "^4.1.3", + "markdown-it-emoji": "^1.4.0", + "markdown-it-linkify-images": "^3.0.0", + "markdown-it-mark": "^3.0.0", + "markdown-it-regexp": "^0.4.0", + "markdown-it-sub": "^1.0.0", + "markdown-it-sup": "^1.0.0", + "markdown-it-table-of-contents": "^0.4.4", + "markdown-it-task-lists": "^2.1.1", + "markdown-it-texmath": "^1.0.0", + "markdown-it-video": "^0.6.3", + "material-icons": "^1.9.1", + "moment": "^2.29.4", + "nunjucks": "3.2.2", + "path-is-inside": "^1.0.2", + "simple-git": "^2.17.0", + "url-parse": "^1.5.10", + "uuid": "^8.3.1", + "vue": "2.6.14", + "vue-server-renderer": "2.6.14", + "vue-template-compiler": "2.6.14", + "walk-sync": "^2.0.2", + "winston": "^2.4.4" + } + }, + "@markbind/core-web": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/@markbind/core-web/-/core-web-5.1.0.tgz", + "integrity": "sha512-TRzz8ZCr25pylKvFxF/WwXDi4Gbtsb2OLXV61WyTFqVy03tFoEJ2mqncpbliI9DrfDdKWcm1YZPgDCedVkYjKA==", + "dev": true + }, + "@primer/octicons": { + "version": "15.2.0", + "resolved": "https://registry.npmjs.org/@primer/octicons/-/octicons-15.2.0.tgz", + "integrity": "sha512-4cHZzcZ3F/HQNL4EKSaFyVsW7XtITiJkTeB1JDDmRuP/XobyWyF9gWxuV9c+byUa8dOB5KNQn37iRvNrIehPUQ==", + "dev": true, + "requires": { + "object-assign": "^4.1.1" + } + }, + "@sindresorhus/slugify": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/@sindresorhus/slugify/-/slugify-0.9.1.tgz", + "integrity": "sha512-b6heYM9dzZD13t2GOiEQTDE0qX+I1GyOotMwKh9VQqzuNiVdPVT8dM43fe9HNb/3ul+Qwd5oKSEDrDIfhq3bnQ==", + "dev": true, + "requires": { + "escape-string-regexp": "^1.0.5", + "lodash.deburr": "^4.1.0" + } + }, + "@tlylt/markdown-it-imsize": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@tlylt/markdown-it-imsize/-/markdown-it-imsize-3.0.0.tgz", + "integrity": "sha512-6kTM+vRJTuN2UxNPyJ8yC+NHrzS+MxVHV+z+bDxSr/Fd7eTah2+otLKC2B17YI/1lQnSumA2qokPGuzsA98c6g==", + "dev": true + }, + "@types/minimatch": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.5.tgz", + "integrity": "sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ==", + "dev": true + }, + "a-sync-waterfall": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/a-sync-waterfall/-/a-sync-waterfall-1.0.1.tgz", + "integrity": "sha512-RYTOHHdWipFUliRFMCS4X2Yn2X8M87V/OpSqWzKKOGhzqyUxzyVmhHDH9sAvG+ZuQf/TAOFsLCpMw09I1ufUnA==", + "dev": true + }, + "abbrev": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", + "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", + "dev": true + }, + "accepts": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", + "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", + "dev": true, + "requires": { + "mime-types": "~2.1.34", + "negotiator": "0.6.3" + } + }, + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", + "dev": true + }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "dev": true, + "requires": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + } + }, + "apache-crypt": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/apache-crypt/-/apache-crypt-1.2.5.tgz", + "integrity": "sha512-ICnYQH+DFVmw+S4Q0QY2XRXD8Ne8ewh8HgbuFH4K7022zCxgHM0Hz1xkRnUlEfAXNbwp1Cnhbedu60USIfDxvg==", + "dev": true, + "requires": { + "unix-crypt-td-js": "^1.1.4" + } + }, + "apache-md5": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/apache-md5/-/apache-md5-1.1.7.tgz", + "integrity": "sha512-JtHjzZmJxtzfTSjsCyHgPR155HBe5WGyUyHTaEkfy46qhwCFKx1Epm6nAxgUG3WfUZP1dWhGqj9Z2NOBeZ+uBw==", + "dev": true + }, + "argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "requires": { + "sprintf-js": "~1.0.2" + } + }, + "arr-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha512-YVIQ82gZPGBebQV/a8dar4AitzCQs0jjXwMPZllpXMaGjXPYVUawSxQrRsjhjupyVxEvbHgUmIhKVlND+j02kA==", + "dev": true + }, + "arr-flatten": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", + "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", + "dev": true + }, + "arr-union": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", + "integrity": "sha512-sKpyeERZ02v1FeCZT8lrfJq5u6goHCtpTAzPwJYe7c8SPFOboNjNg1vz2L4VTn9T4PQxEx13TbXLmYUcS6Ug7Q==", + "dev": true + }, + "array-union": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", + "integrity": "sha512-Dxr6QJj/RdU/hCaBjOfxW+q6lyuVE6JFWIrAUpuOOhoJJoQ99cUn3igRaHVB5P9WrgFVN0FfArM3x0cueOU8ng==", + "dev": true, + "requires": { + "array-uniq": "^1.0.1" + } + }, + "array-uniq": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", + "integrity": "sha512-MNha4BWQ6JbwhFhj03YK552f7cb3AzoE8SzeljgChvL1dl3IcvggXVz1DilzySZkCja+CXuZbdW7yATchWn8/Q==", + "dev": true + }, + "array-unique": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha512-SleRWjh9JUud2wH1hPs9rZBZ33H6T9HOiL0uwGnGx9FpE6wKGyfWugmbkEOIs6qWrZhg0LWeLziLrEwQJhs5mQ==", + "dev": true + }, + "asap": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", + "integrity": "sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==", + "dev": true + }, + "assign-symbols": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", + "integrity": "sha512-Q+JC7Whu8HhmTdBph/Tq59IoRtoy6KAm5zzPv00WdujX82lbAL8K7WVjne7vdCsAmbF4AYaDOPyO3k0kl8qIrw==", + "dev": true + }, + "async": { + "version": "2.6.4", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.4.tgz", + "integrity": "sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==", + "dev": true, + "requires": { + "lodash": "^4.17.14" + } + }, + "async-each": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.3.tgz", + "integrity": "sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ==", + "dev": true + }, + "at-least-node": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz", + "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==", + "dev": true + }, + "atob": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", + "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", + "dev": true + }, + "balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true + }, + "base": { + "version": "0.11.2", + "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", + "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", + "dev": true, + "requires": { + "cache-base": "^1.0.1", + "class-utils": "^0.3.5", + "component-emitter": "^1.2.1", + "define-property": "^1.0.0", + "isobject": "^3.0.1", + "mixin-deep": "^1.2.0", + "pascalcase": "^0.1.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==", + "dev": true, + "requires": { + "is-descriptor": "^1.0.0" + } + } + } + }, + "basic-auth": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/basic-auth/-/basic-auth-2.0.1.tgz", + "integrity": "sha512-NF+epuEdnUYVlGuhaxbbq+dvJttwLnGY+YixlXlME5KpQ5W3CnXA5cVTneY3SPbPDRkcjMbifrwmFYcClgOZeg==", + "dev": true, + "requires": { + "safe-buffer": "5.1.2" + } + }, + "batch": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", + "integrity": "sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw==", + "dev": true + }, + "bcryptjs": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/bcryptjs/-/bcryptjs-2.4.3.tgz", + "integrity": "sha512-V/Hy/X9Vt7f3BbPJEi8BdVFMByHi+jNXrYkW3huaybV/kQ0KJg0Y6PkEMbn+zeT+i+SiKZ/HMqJGIIt4LZDqNQ==", + "dev": true + }, + "binary-extensions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", + "dev": true + }, + "bindings": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", + "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", + "dev": true, + "optional": true, + "requires": { + "file-uri-to-path": "1.0.0" + } + }, + "bluebird": { + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", + "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==", + "dev": true + }, + "boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", + "dev": true + }, + "bootswatch": { + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/bootswatch/-/bootswatch-5.1.3.tgz", + "integrity": "sha512-NmZFN6rOCoXWQ/PkzmD8FFWDe24kocX9OXWHNVaLxVVnpqpAzEbMFsf8bAfKwVtpNXibasZCzv09B5fLieAh2g==", + "dev": true + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "requires": { + "fill-range": "^7.0.1" + } + }, + "cache-base": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", + "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", + "dev": true, + "requires": { + "collection-visit": "^1.0.0", + "component-emitter": "^1.2.1", + "get-value": "^2.0.6", + "has-value": "^1.0.0", + "isobject": "^3.0.1", + "set-value": "^2.0.0", + "to-object-path": "^0.3.0", + "union-value": "^1.0.0", + "unset-value": "^1.0.0" + } + }, + "chalk": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", + "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "cheerio": { + "version": "0.22.0", + "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-0.22.0.tgz", + "integrity": "sha512-8/MzidM6G/TgRelkzDG13y3Y9LxBjCb+8yOEZ9+wwq5gVF2w2pV0wmHvjfT0RvuxGyR7UEuK36r+yYMbT4uKgA==", + "dev": true, + "requires": { + "css-select": "~1.2.0", + "dom-serializer": "~0.1.0", + "entities": "~1.1.1", + "htmlparser2": "^3.9.1", + "lodash.assignin": "^4.0.9", + "lodash.bind": "^4.1.4", + "lodash.defaults": "^4.0.1", + "lodash.filter": "^4.4.0", + "lodash.flatten": "^4.2.0", + "lodash.foreach": "^4.3.0", + "lodash.map": "^4.4.0", + "lodash.merge": "^4.4.0", + "lodash.pick": "^4.2.1", + "lodash.reduce": "^4.4.0", + "lodash.reject": "^4.4.0", + "lodash.some": "^4.4.0" + } + }, + "chokidar": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", + "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", + "dev": true, + "requires": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "fsevents": "~2.3.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + } + }, + "class-utils": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", + "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", + "dev": true, + "requires": { + "arr-union": "^3.1.0", + "define-property": "^0.2.5", + "isobject": "^3.0.0", + "static-extend": "^0.1.1" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + } + }, + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true + } + } + }, + "collection-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", + "integrity": "sha512-lNkKvzEeMBBjUGHZ+q6z9pSJla0KWAQPvtzhEV9+iGyQYG+pBpl7xKDhxoNSOZH2hhv0v5k0y2yAM4o4SjoSkw==", + "dev": true, + "requires": { + "map-visit": "^1.0.0", + "object-visit": "^1.0.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "colors": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz", + "integrity": "sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==", + "dev": true + }, + "commander": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz", + "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==", + "dev": true + }, + "component-emitter": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", + "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==", + "dev": true + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true + }, + "config-chain": { + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/config-chain/-/config-chain-1.1.13.tgz", + "integrity": "sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ==", + "dev": true, + "requires": { + "ini": "^1.3.4", + "proto-list": "~1.2.1" + } + }, + "connect": { + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/connect/-/connect-3.7.0.tgz", + "integrity": "sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ==", + "dev": true, + "requires": { + "debug": "2.6.9", + "finalhandler": "1.1.2", + "parseurl": "~1.3.3", + "utils-merge": "1.0.1" + } + }, + "copy-descriptor": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", + "integrity": "sha512-XgZ0pFcakEUlbwQEVNg3+QAis1FyTL3Qel9FYy8pSkQqoG3PNoT0bOCQtOXcOkur21r2Eq2kI+IE+gsmAEVlYw==", + "dev": true + }, + "core-util-is": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", + "dev": true + }, + "cors": { + "version": "2.8.5", + "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", + "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", + "dev": true, + "requires": { + "object-assign": "^4", + "vary": "^1" + } + }, + "crypto-js": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/crypto-js/-/crypto-js-4.1.1.tgz", + "integrity": "sha512-o2JlM7ydqd3Qk9CA0L4NL6mTzU2sdx96a+oOfPu8Mkl/PK51vSyoi8/rQ8NknZtk44vq15lmhAj9CIAGwgeWKw==", + "dev": true + }, + "css-select": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-1.2.0.tgz", + "integrity": "sha512-dUQOBoqdR7QwV90WysXPLXG5LO7nhYBgiWVfxF80DKPF8zx1t/pUd2FYy73emg3zrjtM6dzmYgbHKfV2rxiHQA==", + "dev": true, + "requires": { + "boolbase": "~1.0.0", + "css-what": "2.1", + "domutils": "1.5.1", + "nth-check": "~1.0.1" + } + }, + "css-what": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-2.1.3.tgz", + "integrity": "sha512-a+EPoD+uZiNfh+5fxw2nO9QwFa6nJe2Or35fGY6Ipw1R3R4AGz1d1TEZrCegvw2YTmZ0jXirGYlzxxpYSHwpEg==", + "dev": true + }, + "csv-parse": { + "version": "4.16.3", + "resolved": "https://registry.npmjs.org/csv-parse/-/csv-parse-4.16.3.tgz", + "integrity": "sha512-cO1I/zmz4w2dcKHVvpCr7JVRu8/FymG5OEpmvsZYlccYolPBLoVGKUHgNoc4ZGkFeFlWGEDmMyBM+TTqRdW/wg==", + "dev": true + }, + "cycle": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/cycle/-/cycle-1.0.3.tgz", + "integrity": "sha512-TVF6svNzeQCOpjCqsy0/CSy8VgObG3wXusJ73xW2GbG5rGx7lC8zxDSURicsXI2UsGdi2L0QNRCi745/wUDvsA==", + "dev": true + }, + "de-indent": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/de-indent/-/de-indent-1.0.2.tgz", + "integrity": "sha512-e/1zu3xH5MQryN2zdVaF0OrdNLUbvWxzMbi+iNA6Bky7l1RoP8a2fIbRocyHclXt/arDrrR6lL3TqFD9pMQTsg==", + "dev": true + }, + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "decode-uri-component": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", + "integrity": "sha512-hjf+xovcEn31w/EUYdTXQh/8smFL/dzYjohQGEIgjyNavaJfBY2p5F527Bo1VPATxv0VYTUC2bOcXvqFwk78Og==", + "dev": true + }, + "define-property": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", + "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", + "dev": true, + "requires": { + "is-descriptor": "^1.0.2", + "isobject": "^3.0.1" + } + }, + "depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "dev": true + }, + "destroy": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", + "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", + "dev": true + }, + "dom-serializer": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.1.1.tgz", + "integrity": "sha512-l0IU0pPzLWSHBcieZbpOKgkIn3ts3vAh7ZuFyXNwJxJXk/c4Gwj9xaTJwIDVQCXawWD0qb3IzMGH5rglQaO0XA==", + "dev": true, + "requires": { + "domelementtype": "^1.3.0", + "entities": "^1.1.1" + } + }, + "domelementtype": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz", + "integrity": "sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==", + "dev": true + }, + "domhandler": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.4.2.tgz", + "integrity": "sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA==", + "dev": true, + "requires": { + "domelementtype": "1" + } + }, + "domutils": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.5.1.tgz", + "integrity": "sha512-gSu5Oi/I+3wDENBsOWBiRK1eoGxcywYSqg3rR960/+EfY0CF4EX1VPkgHOZ3WiS/Jg2DtliF6BhWcHlfpYUcGw==", + "dev": true, + "requires": { + "dom-serializer": "0", + "domelementtype": "1" + } + }, + "duplexer": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz", + "integrity": "sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==", + "dev": true + }, + "editorconfig": { + "version": "0.15.3", + "resolved": "https://registry.npmjs.org/editorconfig/-/editorconfig-0.15.3.tgz", + "integrity": "sha512-M9wIMFx96vq0R4F+gRpY3o2exzb8hEj/n9S8unZtHSvYjibBp/iMufSzvmOcV/laG0ZtuTVGtiJggPOSW2r93g==", + "dev": true, + "requires": { + "commander": "^2.19.0", + "lru-cache": "^4.1.5", + "semver": "^5.6.0", + "sigmund": "^1.0.1" + }, + "dependencies": { + "commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true + } + } + }, + "ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==", + "dev": true + }, + "email-addresses": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/email-addresses/-/email-addresses-3.1.0.tgz", + "integrity": "sha512-k0/r7GrWVL32kZlGwfPNgB2Y/mMXVTq/decgLczm/j34whdaspNrZO8CnXPf1laaHxI6ptUlsnAxN+UAPw+fzg==", + "dev": true + }, + "encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", + "dev": true + }, + "ensure-posix-path": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ensure-posix-path/-/ensure-posix-path-1.1.1.tgz", + "integrity": "sha512-VWU0/zXzVbeJNXvME/5EmLuEj2TauvoaTz6aFYK1Z92JCBlDlZ3Gu0tuGR42kpW1754ywTs+QB0g5TP0oj9Zaw==", + "dev": true + }, + "entities": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.2.tgz", + "integrity": "sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==", + "dev": true + }, + "escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==", + "dev": true + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true + }, + "esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "dev": true + }, + "etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", + "dev": true + }, + "event-stream": { + "version": "3.3.4", + "resolved": "https://registry.npmjs.org/event-stream/-/event-stream-3.3.4.tgz", + "integrity": "sha512-QHpkERcGsR0T7Qm3HNJSyXKEEj8AHNxkY3PK8TS2KJvQ7NiSHe3DDpwVKKtoYprL/AreyzFBeIkBIWChAqn60g==", + "dev": true, + "requires": { + "duplexer": "~0.1.1", + "from": "~0", + "map-stream": "~0.1.0", + "pause-stream": "0.0.11", + "split": "0.3", + "stream-combiner": "~0.0.4", + "through": "~2.3.1" + }, + "dependencies": { + "split": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/split/-/split-0.3.3.tgz", + "integrity": "sha512-wD2AeVmxXRBoX44wAycgjVpMhvbwdI2aZjCkvfNcH1YqHQvJVa1duWc73OyVGJUc05fhFaTZeQ/PYsrmyH0JVA==", + "dev": true, + "requires": { + "through": "2" + } + }, + "stream-combiner": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/stream-combiner/-/stream-combiner-0.0.4.tgz", + "integrity": "sha512-rT00SPnTVyRsaSz5zgSPma/aHSOic5U1prhYdRy5HS2kTZviFpmDgzilbtsJsxiroqACmayynDN/9VzIbX5DOw==", + "dev": true, + "requires": { + "duplexer": "~0.1.1" + } + } + } + }, + "expand-brackets": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", + "integrity": "sha512-w/ozOKR9Obk3qoWeY/WDi6MFta9AoMR+zud60mdnbniMcBxRuFJyDt2LdX/14A1UABeqk+Uk+LDfUpvoGKppZA==", + "dev": true, + "requires": { + "debug": "^2.3.3", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "posix-character-classes": "^0.1.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + } + }, + "is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", + "dev": true + }, + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true + } + } + }, + "extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==", + "dev": true, + "requires": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + } + }, + "extglob": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", + "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", + "dev": true, + "requires": { + "array-unique": "^0.3.2", + "define-property": "^1.0.0", + "expand-brackets": "^2.1.4", + "extend-shallow": "^2.0.1", + "fragment-cache": "^0.2.1", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==", + "dev": true, + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", + "dev": true + } + } + }, + "eyes": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/eyes/-/eyes-0.1.8.tgz", + "integrity": "sha512-GipyPsXO1anza0AOZdy69Im7hGFCNB7Y/NGjDlZGJ3GJJLtwNSb2vrzYrTYJRrRloVx7pl+bhUaTB8yiccPvFQ==", + "dev": true + }, + "fast-safe-stringify": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.1.1.tgz", + "integrity": "sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==", + "dev": true + }, + "fastmatter": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/fastmatter/-/fastmatter-2.1.1.tgz", + "integrity": "sha512-NFrjZEPJZTexoJEuyM5J7n4uFaLf0dOI7Ok4b2IZXOYBqCp1Bh5RskANmQ2TuDsz3M35B1yL2AP/Rn+kp85KeA==", + "dev": true, + "requires": { + "js-yaml": "^3.13.0", + "split": "^1.0.1", + "stream-combiner": "^0.2.2", + "through2": "^3.0.1" + } + }, + "faye-websocket": { + "version": "0.11.4", + "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.4.tgz", + "integrity": "sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==", + "dev": true, + "requires": { + "websocket-driver": ">=0.5.1" + } + }, + "fecha": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fecha/-/fecha-2.3.3.tgz", + "integrity": "sha512-lUGBnIamTAwk4znq5BcqsDaxSmZ9nDVJaij6NvRt/Tg4R69gERA+otPKbS86ROw9nxVMw2/mp1fnaiWqbs6Sdg==", + "dev": true + }, + "figlet": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/figlet/-/figlet-1.5.2.tgz", + "integrity": "sha512-WOn21V8AhyE1QqVfPIVxe3tupJacq1xGkPTB4iagT6o+P2cAgEOOwIxMftr4+ZCTI6d551ij9j61DFr0nsP2uQ==", + "dev": true + }, + "file-stream-rotator": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/file-stream-rotator/-/file-stream-rotator-0.4.1.tgz", + "integrity": "sha512-W3aa3QJEc8BS2MmdVpQiYLKHj3ijpto1gMDlsgCRSKfIUe6MwkcpODGPQ3vZfb0XvCeCqlu9CBQTN7oQri2TZQ==", + "dev": true, + "requires": { + "moment": "^2.11.2" + } + }, + "file-uri-to-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", + "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==", + "dev": true, + "optional": true + }, + "filename-reserved-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/filename-reserved-regex/-/filename-reserved-regex-1.0.0.tgz", + "integrity": "sha512-UZArj7+U+2reBBVCvVmRlyq9D7EYQdUtuNN+1iz7pF1jGcJ2L0TjiRCxsTZfj2xFbM4c25uGCUDpKTHA7L2TKg==", + "dev": true + }, + "filenamify": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/filenamify/-/filenamify-1.2.1.tgz", + "integrity": "sha512-DKVP0WQcB7WaIMSwDETqImRej2fepPqvXQjaVib7LRZn9Rxn5UbvK2tYTqGf1A1DkIprQQkG4XSQXSOZp7Q3GQ==", + "dev": true, + "requires": { + "filename-reserved-regex": "^1.0.0", + "strip-outer": "^1.0.0", + "trim-repeated": "^1.0.0" + } + }, + "filenamify-url": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/filenamify-url/-/filenamify-url-1.0.0.tgz", + "integrity": "sha512-O9K9JcZeF5VdZWM1qR92NSv1WY2EofwudQayPx5dbnnFl9k0IcZha4eV/FGkjnBK+1irOQInij0yiooCHu/0Fg==", + "dev": true, + "requires": { + "filenamify": "^1.0.0", + "humanize-url": "^1.0.0" + } + }, + "fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "requires": { + "to-regex-range": "^5.0.1" + } + }, + "finalhandler": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", + "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", + "dev": true, + "requires": { + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "~2.3.0", + "parseurl": "~1.3.3", + "statuses": "~1.5.0", + "unpipe": "~1.0.0" + } + }, + "find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, + "for-in": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", + "integrity": "sha512-7EwmXrOjyL+ChxMhmG5lnW9MPt1aIeZEwKhQzoBUdTV0N3zuwWDZYVJatDvZ2OyzPUvdIAZDsCetk3coyMfcnQ==", + "dev": true + }, + "fragment-cache": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", + "integrity": "sha512-GMBAbW9antB8iZRHLoGw0b3HANt57diZYFO/HL1JGIC1MjKrdmhxvrJbupnVvpys0zsz7yBApXdQyfepKly2kA==", + "dev": true, + "requires": { + "map-cache": "^0.2.2" + } + }, + "fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", + "dev": true + }, + "from": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/from/-/from-0.1.7.tgz", + "integrity": "sha512-twe20eF1OxVxp/ML/kq2p1uc6KvFK/+vs8WjEbeKmV2He22MKm7YF2ANIt+EOqhJ5L3K/SuuPhk0hWQDjOM23g==", + "dev": true + }, + "fs-extra": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", + "dev": true, + "requires": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + } + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "dev": true + }, + "fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "dev": true, + "optional": true + }, + "function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true + }, + "get-value": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", + "integrity": "sha512-Ln0UQDlxH1BapMu3GPtf7CuYNwRZf2gwCuPqbyG6pB8WfmFpzqcy4xtAaAMUhnNqjMKTiCPZG2oMT3YSx8U2NA==", + "dev": true + }, + "gh-pages": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/gh-pages/-/gh-pages-2.2.0.tgz", + "integrity": "sha512-c+yPkNOPMFGNisYg9r4qvsMIjVYikJv7ImFOhPIVPt0+AcRUamZ7zkGRLHz7FKB0xrlZ+ddSOJsZv9XAFVXLmA==", + "dev": true, + "requires": { + "async": "^2.6.1", + "commander": "^2.18.0", + "email-addresses": "^3.0.1", + "filenamify-url": "^1.0.0", + "fs-extra": "^8.1.0", + "globby": "^6.1.0" + }, + "dependencies": { + "commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true + }, + "fs-extra": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", + "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", + "dev": true, + "requires": { + "graceful-fs": "^4.2.0", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + } + }, + "jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.6" + } + }, + "universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "dev": true + } + } + }, + "glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "requires": { + "is-glob": "^4.0.1" + } + }, + "globby": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz", + "integrity": "sha512-KVbFv2TQtbzCoxAnfD6JcHZTYCzyliEaaeM/gH8qQdkKr5s0OP9scEgvdcngyk7AVdY6YVW/TJHd+lQ/Df3Daw==", + "dev": true, + "requires": { + "array-union": "^1.0.1", + "glob": "^7.0.3", + "object-assign": "^4.0.1", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" + } + }, + "graceful-fs": { + "version": "4.2.10", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", + "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==", + "dev": true + }, + "has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dev": true, + "requires": { + "function-bind": "^1.1.1" + } + }, + "has-ansi": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", + "integrity": "sha512-C8vBJ8DwUCx19vhm7urhTuUsr4/IyP6l4VzNQDv+ryHQObW3TTTp9yB68WpYgRe2bbaGuZ/se74IqFeVnMnLZg==", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "has-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", + "integrity": "sha512-IBXk4GTsLYdQ7Rvt+GRBrFSVEkmuOUy4re0Xjd9kJSUQpnTrWR4/y9RpfexN9vkAPMFuQoeWKwqzPozRTlasGw==", + "dev": true, + "requires": { + "get-value": "^2.0.6", + "has-values": "^1.0.0", + "isobject": "^3.0.0" + } + }, + "has-values": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", + "integrity": "sha512-ODYZC64uqzmtfGMEAX/FvZiRyWLpAC3vYnNunURUnkGVTS+mI0smVsWaPydRBsE3g+ok7h960jChO8mFcWlHaQ==", + "dev": true, + "requires": { + "is-number": "^3.0.0", + "kind-of": "^4.0.0" + }, + "dependencies": { + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "kind-of": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", + "integrity": "sha512-24XsCxmEbRwEDbz/qz3stgin8TTzZ1ESR56OMCN0ujYg+vRutNSiOj9bHH9u85DKgXguraugV5sFuvbD4FW/hw==", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "hash-sum": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/hash-sum/-/hash-sum-1.0.2.tgz", + "integrity": "sha512-fUs4B4L+mlt8/XAtSOGMUO1TXmAelItBPtJG7CyHJfYTdDjwisntGO2JQz7oUsatOY9o68+57eziUVNw/mRHmA==", + "dev": true + }, + "he": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", + "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", + "dev": true + }, + "highlight.js": { + "version": "10.7.3", + "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-10.7.3.tgz", + "integrity": "sha512-tzcUFauisWKNHaRkN4Wjl/ZA07gENAjFl3J/c480dprkGTg5EQstgaNFqBfUqCq54kZRIEcreTsAgF/m2quD7A==", + "dev": true + }, + "htmlparser2": { + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.10.1.tgz", + "integrity": "sha512-IgieNijUMbkDovyoKObU1DUhm1iwNYE/fuifEoEHfd1oZKZDaONBSkal7Y01shxsM49R4XaMdGez3WnF9UfiCQ==", + "dev": true, + "requires": { + "domelementtype": "^1.3.1", + "domhandler": "^2.3.0", + "domutils": "^1.5.1", + "entities": "^1.1.1", + "inherits": "^2.0.1", + "readable-stream": "^3.1.1" + } + }, + "http-auth": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/http-auth/-/http-auth-3.1.3.tgz", + "integrity": "sha512-Jbx0+ejo2IOx+cRUYAGS1z6RGc6JfYUNkysZM4u4Sfk1uLlGv814F7/PIjQQAuThLdAWxb74JMGd5J8zex1VQg==", + "dev": true, + "requires": { + "apache-crypt": "^1.1.2", + "apache-md5": "^1.0.6", + "bcryptjs": "^2.3.0", + "uuid": "^3.0.0" + }, + "dependencies": { + "uuid": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", + "dev": true + } + } + }, + "http-errors": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", + "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", + "dev": true, + "requires": { + "depd": "2.0.0", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "toidentifier": "1.0.1" + }, + "dependencies": { + "statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "dev": true + } + } + }, + "http-parser-js": { + "version": "0.5.8", + "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.8.tgz", + "integrity": "sha512-SGeBX54F94Wgu5RH3X5jsDtf4eHyRogWX1XGT3b4HuW3tQPM4AaBzoUji/4AAJNXCEOWZ5O0DgZmJw1947gD5Q==", + "dev": true + }, + "humanize-url": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/humanize-url/-/humanize-url-1.0.1.tgz", + "integrity": "sha512-RtgTzXCPVb/te+e82NDhAc5paj+DuKSratIGAr+v+HZK24eAQ8LMoBGYoL7N/O+9iEc33AKHg45dOMKw3DNldQ==", + "dev": true, + "requires": { + "normalize-url": "^1.0.0", + "strip-url-auth": "^1.0.0" + } + }, + "ignore": { + "version": "5.2.4", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz", + "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==", + "dev": true + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "dev": true, + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "ini": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", + "dev": true + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, + "requires": { + "binary-extensions": "^2.0.0" + } + }, + "is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "dev": true + }, + "is-core-module": { + "version": "2.13.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.0.tgz", + "integrity": "sha512-Z7dk6Qo8pOCp3l4tsX2C5ZVas4V+UxwQodwZhLopL91TX8UyyHEXafPcyoeeWuLrwzHcr3igO78wNLwHJHsMCQ==", + "dev": true, + "requires": { + "has": "^1.0.3" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + }, + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "requires": { + "is-plain-object": "^2.0.4" + } + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true + }, + "is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "requires": { + "is-extglob": "^2.1.1" + } + }, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true + }, + "is-plain-obj": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", + "integrity": "sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==", + "dev": true + }, + "is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dev": true, + "requires": { + "isobject": "^3.0.1" + } + }, + "is-windows": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", + "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", + "dev": true + }, + "is-wsl": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", + "integrity": "sha512-gfygJYZ2gLTDlmbWMI0CE2MwnFzSN/2SZfkMlItC4K/JBlsWVDB0bO6XhqcY13YXE7iMcAJnzTCJjPiTeJJ0Mw==", + "dev": true + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "dev": true + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", + "dev": true + }, + "isstream": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", + "integrity": "sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==", + "dev": true + }, + "js-beautify": { + "version": "1.14.3", + "resolved": "https://registry.npmjs.org/js-beautify/-/js-beautify-1.14.3.tgz", + "integrity": "sha512-f1ra8PHtOEu/70EBnmiUlV8nJePS58y9qKjl4JHfYWlFH6bo7ogZBz//FAZp7jDuXtYnGYKymZPlrg2I/9Zo4g==", + "dev": true, + "requires": { + "config-chain": "^1.1.13", + "editorconfig": "^0.15.3", + "glob": "^7.1.3", + "nopt": "^5.0.0" + } + }, + "js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "dev": true, + "requires": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + } + }, + "jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.6", + "universalify": "^2.0.0" + } + }, + "katex": { + "version": "0.15.6", + "resolved": "https://registry.npmjs.org/katex/-/katex-0.15.6.tgz", + "integrity": "sha512-UpzJy4yrnqnhXvRPhjEuLA4lcPn6eRngixW7Q3TJErjg3Aw2PuLFBzTkdUb89UtumxjhHTqL3a5GDGETMSwgJA==", + "dev": true, + "requires": { + "commander": "^8.0.0" + } + }, + "kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true + }, + "linkify-it": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-3.0.3.tgz", + "integrity": "sha512-ynTsyrFSdE5oZ/O9GEf00kPngmOfVwazR5GKDq6EYfhlpFug3J2zybX56a2PRRpc9P+FuSoGNAwjlbDs9jJBPQ==", + "dev": true, + "requires": { + "uc.micro": "^1.0.1" + } + }, + "live-server": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/live-server/-/live-server-1.2.1.tgz", + "integrity": "sha512-Yn2XCVjErTkqnM3FfTmM7/kWy3zP7+cEtC7x6u+wUzlQ+1UW3zEYbbyJrc0jNDwiMDZI0m4a0i3dxlGHVyXczw==", + "dev": true, + "requires": { + "chokidar": "^2.0.4", + "colors": "latest", + "connect": "^3.6.6", + "cors": "latest", + "event-stream": "3.3.4", + "faye-websocket": "0.11.x", + "http-auth": "3.1.x", + "morgan": "^1.9.1", + "object-assign": "latest", + "opn": "latest", + "proxy-middleware": "latest", + "send": "latest", + "serve-index": "^1.9.1" + }, + "dependencies": { + "anymatch": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", + "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", + "dev": true, + "requires": { + "micromatch": "^3.1.4", + "normalize-path": "^2.1.1" + }, + "dependencies": { + "normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha512-3pKJwH184Xo/lnH6oyP1q2pMd7HcypqqmRs91/6/i2CGtWwIKGCkOOMTm/zXbgTEWHw1uNpNi/igc3ePOYHb6w==", + "dev": true, + "requires": { + "remove-trailing-separator": "^1.0.1" + } + } + } + }, + "binary-extensions": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz", + "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==", + "dev": true + }, + "braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "dev": true, + "requires": { + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + } + }, + "chokidar": { + "version": "2.1.8", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz", + "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==", + "dev": true, + "requires": { + "anymatch": "^2.0.0", + "async-each": "^1.0.1", + "braces": "^2.3.2", + "fsevents": "^1.2.7", + "glob-parent": "^3.1.0", + "inherits": "^2.0.3", + "is-binary-path": "^1.0.0", + "is-glob": "^4.0.0", + "normalize-path": "^3.0.0", + "path-is-absolute": "^1.0.0", + "readdirp": "^2.2.1", + "upath": "^1.1.1" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ==", + "dev": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + } + }, + "fsevents": { + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz", + "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==", + "dev": true, + "optional": true, + "requires": { + "bindings": "^1.5.0", + "nan": "^2.12.1" + } + }, + "glob-parent": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", + "integrity": "sha512-E8Ak/2+dZY6fnzlR7+ueWvhsH1SjHr4jjss4YS/h4py44jY9MhK/VFdaZJAWDz6BbL21KeteKxFSFpq8OS5gVA==", + "dev": true, + "requires": { + "is-glob": "^3.1.0", + "path-dirname": "^1.0.0" + }, + "dependencies": { + "is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha512-UFpDDrPgM6qpnFNI+rh/p3bUaq9hKLZN8bMUWzxmcnZVS3omf4IPK+BrewlnWjO1WmUsMYuSjKh4UJuV4+Lqmw==", + "dev": true, + "requires": { + "is-extglob": "^2.1.0" + } + } + } + }, + "is-binary-path": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", + "integrity": "sha512-9fRVlXc0uCxEDj1nQzaWONSpbTfx0FmJfzHF7pwlI8DkWGoHBBea4Pg5Ky0ojwwxQmnSifgbKkI06Qv0Ljgj+Q==", + "dev": true, + "requires": { + "binary-extensions": "^1.0.0" + } + }, + "is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", + "dev": true + }, + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + } + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + }, + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "readdirp": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz", + "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.11", + "micromatch": "^3.1.10", + "readable-stream": "^2.0.2" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + }, + "to-regex-range": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", + "integrity": "sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg==", + "dev": true, + "requires": { + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" + } + } + } + }, + "locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "requires": { + "p-locate": "^4.1.0" + } + }, + "lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true + }, + "lodash._reinterpolate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz", + "integrity": "sha512-xYHt68QRoYGjeeM/XOE1uJtvXQAgvszfBhjV4yvsQH0u2i9I6cI6c6/eG4Hh3UAOVn0y/xAXwmTzEay49Q//HA==", + "dev": true + }, + "lodash.assignin": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/lodash.assignin/-/lodash.assignin-4.2.0.tgz", + "integrity": "sha512-yX/rx6d/UTVh7sSVWVSIMjfnz95evAgDFdb1ZozC35I9mSFCkmzptOzevxjgbQUsc78NR44LVHWjsoMQXy9FDg==", + "dev": true + }, + "lodash.bind": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/lodash.bind/-/lodash.bind-4.2.1.tgz", + "integrity": "sha512-lxdsn7xxlCymgLYo1gGvVrfHmkjDiyqVv62FAeF2i5ta72BipE1SLxw8hPEPLhD4/247Ijw07UQH7Hq/chT5LA==", + "dev": true + }, + "lodash.deburr": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/lodash.deburr/-/lodash.deburr-4.1.0.tgz", + "integrity": "sha512-m/M1U1f3ddMCs6Hq2tAsYThTBDaAKFDX3dwDo97GEYzamXi9SqUpjWi/Rrj/gf3X2n8ktwgZrlP1z6E3v/IExQ==", + "dev": true + }, + "lodash.defaults": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/lodash.defaults/-/lodash.defaults-4.2.0.tgz", + "integrity": "sha512-qjxPLHd3r5DnsdGacqOMU6pb/avJzdh9tFX2ymgoZE27BmjXrNy/y4LoaiTeAb+O3gL8AfpJGtqfX/ae2leYYQ==", + "dev": true + }, + "lodash.filter": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/lodash.filter/-/lodash.filter-4.6.0.tgz", + "integrity": "sha512-pXYUy7PR8BCLwX5mgJ/aNtyOvuJTdZAo9EQFUvMIYugqmJxnrYaANvTbgndOzHSCSR0wnlBBfRXJL5SbWxo3FQ==", + "dev": true + }, + "lodash.flatten": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/lodash.flatten/-/lodash.flatten-4.4.0.tgz", + "integrity": "sha512-C5N2Z3DgnnKr0LOpv/hKCgKdb7ZZwafIrsesve6lmzvZIRZRGaZ/l6Q8+2W7NaT+ZwO3fFlSCzCzrDCFdJfZ4g==", + "dev": true + }, + "lodash.foreach": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.foreach/-/lodash.foreach-4.5.0.tgz", + "integrity": "sha512-aEXTF4d+m05rVOAUG3z4vZZ4xVexLKZGF0lIxuHZ1Hplpk/3B6Z1+/ICICYRLm7c41Z2xiejbkCkJoTlypoXhQ==", + "dev": true + }, + "lodash.map": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/lodash.map/-/lodash.map-4.6.0.tgz", + "integrity": "sha512-worNHGKLDetmcEYDvh2stPCrrQRkP20E4l0iIS7F8EvzMqBBi7ltvFN5m1HvTf1P7Jk1txKhvFcmYsCr8O2F1Q==", + "dev": true + }, + "lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "dev": true + }, + "lodash.pick": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/lodash.pick/-/lodash.pick-4.4.0.tgz", + "integrity": "sha512-hXt6Ul/5yWjfklSGvLQl8vM//l3FtyHZeuelpzK6mm99pNvN9yTDruNZPEJZD1oWrqo+izBmB7oUfWgcCX7s4Q==", + "dev": true + }, + "lodash.reduce": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/lodash.reduce/-/lodash.reduce-4.6.0.tgz", + "integrity": "sha512-6raRe2vxCYBhpBu+B+TtNGUzah+hQjVdu3E17wfusjyrXBka2nBS8OH/gjVZ5PvHOhWmIZTYri09Z6n/QfnNMw==", + "dev": true + }, + "lodash.reject": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/lodash.reject/-/lodash.reject-4.6.0.tgz", + "integrity": "sha512-qkTuvgEzYdyhiJBx42YPzPo71R1aEr0z79kAv7Ixg8wPFEjgRgJdUsGMG3Hf3OYSF/kHI79XhNlt+5Ar6OzwxQ==", + "dev": true + }, + "lodash.some": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/lodash.some/-/lodash.some-4.6.0.tgz", + "integrity": "sha512-j7MJE+TuT51q9ggt4fSgVqro163BEFjAt3u97IqU+JA2DkWl80nFTrowzLpZ/BnpN7rrl0JA/593NAdd8p/scQ==", + "dev": true + }, + "lodash.template": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.template/-/lodash.template-4.5.0.tgz", + "integrity": "sha512-84vYFxIkmidUiFxidA/KjjH9pAycqW+h980j7Fuz5qxRtO9pgB7MDFTdys1N7A5mcucRiDyEq4fusljItR1T/A==", + "dev": true, + "requires": { + "lodash._reinterpolate": "^3.0.0", + "lodash.templatesettings": "^4.0.0" + } + }, + "lodash.templatesettings": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/lodash.templatesettings/-/lodash.templatesettings-4.2.0.tgz", + "integrity": "sha512-stgLz+i3Aa9mZgnjr/O+v9ruKZsPsndy7qPZOchbqk2cnTU1ZaldKK+v7m54WoKIyxiuMZTKT2H81F8BeAc3ZQ==", + "dev": true, + "requires": { + "lodash._reinterpolate": "^3.0.0" + } + }, + "lodash.uniq": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", + "integrity": "sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==", + "dev": true + }, + "logform": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/logform/-/logform-1.10.0.tgz", + "integrity": "sha512-em5ojIhU18fIMOw/333mD+ZLE2fis0EzXl1ZwHx4iQzmpQi6odNiY/t+ITNr33JZhT9/KEaH+UPIipr6a9EjWg==", + "dev": true, + "requires": { + "colors": "^1.2.1", + "fast-safe-stringify": "^2.0.4", + "fecha": "^2.3.3", + "ms": "^2.1.1", + "triple-beam": "^1.2.0" + }, + "dependencies": { + "ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true + } + } + }, + "lru-cache": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", + "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", + "dev": true, + "requires": { + "pseudomap": "^1.0.2", + "yallist": "^2.1.2" + } + }, + "map-cache": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", + "integrity": "sha512-8y/eV9QQZCiyn1SprXSrCmqJN0yNRATe+PO8ztwqrvrbdRLA3eYJF0yaR0YayLWkMbsQSKWS9N2gPcGEc4UsZg==", + "dev": true + }, + "map-stream": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/map-stream/-/map-stream-0.1.0.tgz", + "integrity": "sha512-CkYQrPYZfWnu/DAmVCpTSX/xHpKZ80eKh2lAkyA6AJTef6bW+6JpbQZN5rofum7da+SyN1bi5ctTm+lTfcCW3g==", + "dev": true + }, + "map-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", + "integrity": "sha512-4y7uGv8bd2WdM9vpQsiQNo41Ln1NvhvDRuVt0k2JZQ+ezN2uaQes7lZeZ+QQUHOLQAtDaBJ+7wCbi+ab/KFs+w==", + "dev": true, + "requires": { + "object-visit": "^1.0.0" + } + }, + "markbind-cli": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/markbind-cli/-/markbind-cli-5.1.0.tgz", + "integrity": "sha512-6POI1Q++2aZa+Udk/oQ6LX1oNPbKUBDY0mN3Up7VOFeK+XYW51faxuCk2Q91JTBxYRKLNtshxf0y12kB4Cj9Qw==", + "dev": true, + "requires": { + "@markbind/core": "5.1.0", + "@markbind/core-web": "5.1.0", + "bluebird": "^3.7.2", + "chalk": "^3.0.0", + "cheerio": "^0.22.0", + "chokidar": "^3.3.0", + "colors": "1.4.0", + "commander": "^8.1.0", + "figlet": "^1.2.4", + "find-up": "^4.1.0", + "fs-extra": "^9.0.1", + "live-server": "1.2.1", + "lodash": "^4.17.15", + "url-parse": "^1.5.10", + "winston": "^2.4.4", + "winston-daily-rotate-file": "^3.10.0" + } + }, + "markdown-it": { + "version": "12.3.2", + "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-12.3.2.tgz", + "integrity": "sha512-TchMembfxfNVpHkbtriWltGWc+m3xszaRD0CZup7GFFhzIgQqxIfn3eGj1yZpfuflzPvfkt611B2Q/Bsk1YnGg==", + "dev": true, + "requires": { + "argparse": "^2.0.1", + "entities": "~2.1.0", + "linkify-it": "^3.0.1", + "mdurl": "^1.0.1", + "uc.micro": "^1.0.5" + }, + "dependencies": { + "argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true + }, + "entities": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.1.0.tgz", + "integrity": "sha512-hCx1oky9PFrJ611mf0ifBLBRW8lUUVRlFolb5gWRfIELabBlbp9xZvrqZLZAs+NxFnbfQoeGd8wDkygjg7U85w==", + "dev": true + } + } + }, + "markdown-it-attrs": { + "version": "4.1.6", + "resolved": "https://registry.npmjs.org/markdown-it-attrs/-/markdown-it-attrs-4.1.6.tgz", + "integrity": "sha512-O7PDKZlN8RFMyDX13JnctQompwrrILuz2y43pW2GagcwpIIElkAdfeek+erHfxUOlXWPsjFeWmZ8ch1xtRLWpA==", + "dev": true, + "requires": {} + }, + "markdown-it-emoji": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/markdown-it-emoji/-/markdown-it-emoji-1.4.0.tgz", + "integrity": "sha512-QCz3Hkd+r5gDYtS2xsFXmBYrgw6KuWcJZLCEkdfAuwzZbShCmCfta+hwAMq4NX/4xPzkSHduMKgMkkPUJxSXNg==", + "dev": true + }, + "markdown-it-linkify-images": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/markdown-it-linkify-images/-/markdown-it-linkify-images-3.0.0.tgz", + "integrity": "sha512-Vs5yGJa5MWjFgytzgtn8c1U6RcStj3FZKhhx459U8dYbEE5FTWZ6mMRkYMiDlkFO0j4VCsQT1LT557bY0ETgtg==", + "dev": true, + "requires": { + "markdown-it": "^13.0.1" + }, + "dependencies": { + "argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true + }, + "entities": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/entities/-/entities-3.0.1.tgz", + "integrity": "sha512-WiyBqoomrwMdFG1e0kqvASYfnlb0lp8M5o5Fw2OFq1hNZxxcNk8Ik0Xm7LxzBhuidnZB/UtBqVCgUz3kBOP51Q==", + "dev": true + }, + "linkify-it": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-4.0.1.tgz", + "integrity": "sha512-C7bfi1UZmoj8+PQx22XyeXCuBlokoyWQL5pWSP+EI6nzRylyThouddufc2c1NDIcP9k5agmN9fLpA7VNJfIiqw==", + "dev": true, + "requires": { + "uc.micro": "^1.0.1" + } + }, + "markdown-it": { + "version": "13.0.1", + "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-13.0.1.tgz", + "integrity": "sha512-lTlxriVoy2criHP0JKRhO2VDG9c2ypWCsT237eDiLqi09rmbKoUetyGHq2uOIRoRS//kfoJckS0eUzzkDR+k2Q==", + "dev": true, + "requires": { + "argparse": "^2.0.1", + "entities": "~3.0.1", + "linkify-it": "^4.0.1", + "mdurl": "^1.0.1", + "uc.micro": "^1.0.5" + } + } + } + }, + "markdown-it-mark": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/markdown-it-mark/-/markdown-it-mark-3.0.1.tgz", + "integrity": "sha512-HyxjAu6BRsdt6Xcv6TKVQnkz/E70TdGXEFHRYBGLncRE9lBFwDNLVtFojKxjJWgJ+5XxUwLaHXy+2sGBbDn+4A==", + "dev": true + }, + "markdown-it-regexp": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/markdown-it-regexp/-/markdown-it-regexp-0.4.0.tgz", + "integrity": "sha512-0XQmr46K/rMKnI93Y3CLXsHj4jIioRETTAiVnJnjrZCEkGaDOmUxTbZj/aZ17G5NlRcVpWBYjqpwSlQ9lj+Kxw==", + "dev": true + }, + "markdown-it-sub": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/markdown-it-sub/-/markdown-it-sub-1.0.0.tgz", + "integrity": "sha512-z2Rm/LzEE1wzwTSDrI+FlPEveAAbgdAdPhdWarq/ZGJrGW/uCQbKAnhoCsE4hAbc3SEym26+W2z/VQB0cQiA9Q==", + "dev": true + }, + "markdown-it-sup": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/markdown-it-sup/-/markdown-it-sup-1.0.0.tgz", + "integrity": "sha512-E32m0nV9iyhRR7CrhnzL5msqic7rL1juWre6TQNxsnApg7Uf+F97JOKxUijg5YwXz86lZ0mqfOnutoryyNdntQ==", + "dev": true + }, + "markdown-it-table-of-contents": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/markdown-it-table-of-contents/-/markdown-it-table-of-contents-0.4.4.tgz", + "integrity": "sha512-TAIHTHPwa9+ltKvKPWulm/beozQU41Ab+FIefRaQV1NRnpzwcV9QOe6wXQS5WLivm5Q/nlo0rl6laGkMDZE7Gw==", + "dev": true + }, + "markdown-it-task-lists": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/markdown-it-task-lists/-/markdown-it-task-lists-2.1.1.tgz", + "integrity": "sha512-TxFAc76Jnhb2OUu+n3yz9RMu4CwGfaT788br6HhEDlvWfdeJcLUsxk1Hgw2yJio0OXsxv7pyIPmvECY7bMbluA==", + "dev": true + }, + "markdown-it-texmath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/markdown-it-texmath/-/markdown-it-texmath-1.0.0.tgz", + "integrity": "sha512-4hhkiX8/gus+6e53PLCUmUrsa6ZWGgJW2XCW6O0ASvZUiezIK900ZicinTDtG3kAO2kon7oUA/ReWmpW2FByxg==", + "dev": true + }, + "markdown-it-video": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/markdown-it-video/-/markdown-it-video-0.6.3.tgz", + "integrity": "sha512-T4th1kwy0OcvyWSN4u3rqPGxvbDclpucnVSSaH3ZacbGsAts964dxokx9s/I3GYsrDCJs4ogtEeEeVP18DQj0Q==", + "dev": true + }, + "matcher-collection": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/matcher-collection/-/matcher-collection-2.0.1.tgz", + "integrity": "sha512-daE62nS2ZQsDg9raM0IlZzLmI2u+7ZapXBwdoeBUKAYERPDDIc0qNqA8E0Rp2D+gspKR7BgIFP52GeujaGXWeQ==", + "dev": true, + "requires": { + "@types/minimatch": "^3.0.3", + "minimatch": "^3.0.2" + } + }, + "material-icons": { + "version": "1.13.11", + "resolved": "https://registry.npmjs.org/material-icons/-/material-icons-1.13.11.tgz", + "integrity": "sha512-kp2oAdaqo/Zp6hpTZW01rOgDPWmxBUszSdDzkRm1idCjjNvdUMnqu8qu58cll6CObo+o0cydOiPLdoSugLm+mQ==", + "dev": true + }, + "mdurl": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-1.0.1.tgz", + "integrity": "sha512-/sKlQJCBYVY9Ers9hqzKou4H6V5UWc/M59TH2dvkt+84itfnq7uFOMLpOiOS4ujvHP4etln18fmIxA5R5fll0g==", + "dev": true + }, + "micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "dev": true, + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + }, + "dependencies": { + "braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "dev": true, + "requires": { + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ==", + "dev": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", + "dev": true + }, + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "to-regex-range": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", + "integrity": "sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg==", + "dev": true, + "requires": { + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" + } + } + } + }, + "mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "dev": true + }, + "mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "dev": true + }, + "mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "dev": true, + "requires": { + "mime-db": "1.52.0" + } + }, + "minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "mixin-deep": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz", + "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==", + "dev": true, + "requires": { + "for-in": "^1.0.2", + "is-extendable": "^1.0.1" + } + }, + "moment": { + "version": "2.29.4", + "resolved": "https://registry.npmjs.org/moment/-/moment-2.29.4.tgz", + "integrity": "sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w==", + "dev": true + }, + "morgan": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/morgan/-/morgan-1.10.0.tgz", + "integrity": "sha512-AbegBVI4sh6El+1gNwvD5YIck7nSA36weD7xvIxG4in80j/UoK8AEGaWnnz8v1GxonMCltmlNs5ZKbGvl9b1XQ==", + "dev": true, + "requires": { + "basic-auth": "~2.0.1", + "debug": "2.6.9", + "depd": "~2.0.0", + "on-finished": "~2.3.0", + "on-headers": "~1.0.2" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "nan": { + "version": "2.16.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.16.0.tgz", + "integrity": "sha512-UdAqHyFngu7TfQKsCBgAA6pWDkT8MAO7d0jyOecVhN5354xbLqdn8mV9Tat9gepAupm0bt2DbeaSC8vS52MuFA==", + "dev": true, + "optional": true + }, + "nanomatch": { + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", + "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==", + "dev": true, + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "fragment-cache": "^0.2.1", + "is-windows": "^1.0.2", + "kind-of": "^6.0.2", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + } + }, + "negotiator": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", + "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", + "dev": true + }, + "nopt": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-5.0.0.tgz", + "integrity": "sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==", + "dev": true, + "requires": { + "abbrev": "1" + } + }, + "normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true + }, + "normalize-url": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-1.9.1.tgz", + "integrity": "sha512-A48My/mtCklowHBlI8Fq2jFWK4tX4lJ5E6ytFsSOq1fzpvT0SQSgKhSg7lN5c2uYFOrUAOQp6zhhJnpp1eMloQ==", + "dev": true, + "requires": { + "object-assign": "^4.0.1", + "prepend-http": "^1.0.0", + "query-string": "^4.1.0", + "sort-keys": "^1.0.0" + } + }, + "nth-check": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-1.0.2.tgz", + "integrity": "sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg==", + "dev": true, + "requires": { + "boolbase": "~1.0.0" + } + }, + "nunjucks": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/nunjucks/-/nunjucks-3.2.2.tgz", + "integrity": "sha512-KUi85OoF2NMygwODAy28Lh9qHmq5hO3rBlbkYoC8v377h4l8Pt5qFjILl0LWpMbOrZ18CzfVVUvIHUIrtED3sA==", + "dev": true, + "requires": { + "a-sync-waterfall": "^1.0.0", + "asap": "^2.0.3", + "chokidar": "^3.3.0", + "commander": "^5.1.0" + }, + "dependencies": { + "commander": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-5.1.0.tgz", + "integrity": "sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg==", + "dev": true + } + } + }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "dev": true + }, + "object-copy": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", + "integrity": "sha512-79LYn6VAb63zgtmAteVOWo9Vdj71ZVBy3Pbse+VqxDpEP83XuujMrGqHIwAXJ5I/aM0zU7dIyIAhifVTPrNItQ==", + "dev": true, + "requires": { + "copy-descriptor": "^0.1.0", + "define-property": "^0.2.5", + "kind-of": "^3.0.3" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + }, + "dependencies": { + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true + } + } + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "object-hash": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-1.3.1.tgz", + "integrity": "sha512-OSuu/pU4ENM9kmREg0BdNrUDIl1heYa4mBZacJc+vVWz4GtAwu7jO8s4AIt2aGRUTqxykpWzI3Oqnsm13tTMDA==", + "dev": true + }, + "object-visit": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", + "integrity": "sha512-GBaMwwAVK9qbQN3Scdo0OyvgPW7l3lnaVMj84uTOZlswkX0KpF6fyDBJhtTthf7pymztoN36/KEr1DyhF96zEA==", + "dev": true, + "requires": { + "isobject": "^3.0.0" + } + }, + "object.pick": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", + "integrity": "sha512-tqa/UMy/CCoYmj+H5qc07qvSL9dqcs/WZENZ1JbtWBlATP+iVOe778gE6MSijnyCnORzDuX6hU+LA4SZ09YjFQ==", + "dev": true, + "requires": { + "isobject": "^3.0.1" + } + }, + "on-finished": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", + "integrity": "sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==", + "dev": true, + "requires": { + "ee-first": "1.1.1" + } + }, + "on-headers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz", + "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==", + "dev": true + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dev": true, + "requires": { + "wrappy": "1" + } + }, + "opn": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/opn/-/opn-6.0.0.tgz", + "integrity": "sha512-I9PKfIZC+e4RXZ/qr1RhgyCnGgYX0UEIlXgWnCOVACIvFgaC9rz6Won7xbdhoHrd8IIhV7YEpHjreNUNkqCGkQ==", + "dev": true, + "requires": { + "is-wsl": "^1.1.0" + } + }, + "p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "requires": { + "p-limit": "^2.2.0" + } + }, + "p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true + }, + "parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + "dev": true + }, + "pascalcase": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", + "integrity": "sha512-XHXfu/yOQRy9vYOtUDVMN60OEJjW013GoObG1o+xwQTpB9eYJX/BjXMsdW13ZDPruFhYYn0AG22w0xgQMwl3Nw==", + "dev": true + }, + "path-dirname": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", + "integrity": "sha512-ALzNPpyNq9AqXMBjeymIjFDAkAFH06mHJH/cSBHAgU0s4vfpBn6b2nf8tiRLvagKD8RbTpq2FKTBg7cl9l3c7Q==", + "dev": true + }, + "path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "dev": true + }, + "path-is-inside": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", + "integrity": "sha512-DUWJr3+ULp4zXmol/SZkFf3JGsS9/SIv+Y3Rt93/UjPpDpklB5f1er4O3POIbUuUJ3FXgqte2Q7SrU6zAqwk8w==", + "dev": true + }, + "path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true + }, + "pause-stream": { + "version": "0.0.11", + "resolved": "https://registry.npmjs.org/pause-stream/-/pause-stream-0.0.11.tgz", + "integrity": "sha512-e3FBlXLmN/D1S+zHzanP4E/4Z60oFAa3O051qt1pxa7DEJWKAyil6upYVXCWadEnuoqa4Pkc9oUx9zsxYeRv8A==", + "dev": true, + "requires": { + "through": "~2.3" + } + }, + "picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true + }, + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", + "dev": true + }, + "pinkie": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", + "integrity": "sha512-MnUuEycAemtSaeFSjXKW/aroV7akBbY+Sv+RkyqFjgAe73F+MR0TBWKBRDkmfWq/HiFmdavfZ1G7h4SPZXaCSg==", + "dev": true + }, + "pinkie-promise": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", + "integrity": "sha512-0Gni6D4UcLTbv9c57DfxDGdr41XfgUjqWZu492f0cIGr16zDU06BWP/RAEvOuo7CQ0CNjHaLlM59YJJFm3NWlw==", + "dev": true, + "requires": { + "pinkie": "^2.0.0" + } + }, + "posix-character-classes": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", + "integrity": "sha512-xTgYBc3fuo7Yt7JbiuFxSYGToMoz8fLoE6TC9Wx1P/u+LfeThMOAqmuyECnlBaaJb+u1m9hHiXUEtwW4OzfUJg==", + "dev": true + }, + "prepend-http": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-1.0.4.tgz", + "integrity": "sha512-PhmXi5XmoyKw1Un4E+opM2KcsJInDvKyuOumcjjw3waw86ZNjHwVUOOWLc4bCzLdcKNaWBH9e99sbWzDQsVaYg==", + "dev": true + }, + "process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", + "dev": true + }, + "proto-list": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/proto-list/-/proto-list-1.2.4.tgz", + "integrity": "sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==", + "dev": true + }, + "proxy-middleware": { + "version": "0.15.0", + "resolved": "https://registry.npmjs.org/proxy-middleware/-/proxy-middleware-0.15.0.tgz", + "integrity": "sha512-EGCG8SeoIRVMhsqHQUdDigB2i7qU7fCsWASwn54+nPutYO8n4q6EiwMzyfWlC+dzRFExP+kvcnDFdBDHoZBU7Q==", + "dev": true + }, + "pseudomap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", + "integrity": "sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ==", + "dev": true + }, + "query-string": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/query-string/-/query-string-4.3.4.tgz", + "integrity": "sha512-O2XLNDBIg1DnTOa+2XrIwSiXEV8h2KImXUnjhhn2+UsvZ+Es2uyd5CCRTNQlDGbzUQOW3aYCBx9rVA6dzsiY7Q==", + "dev": true, + "requires": { + "object-assign": "^4.1.0", + "strict-uri-encode": "^1.0.0" + } + }, + "querystringify": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", + "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==", + "dev": true + }, + "randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "dev": true, + "requires": { + "safe-buffer": "^5.1.0" + } + }, + "range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", + "dev": true + }, + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + }, + "readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dev": true, + "requires": { + "picomatch": "^2.2.1" + } + }, + "regex-not": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", + "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", + "dev": true, + "requires": { + "extend-shallow": "^3.0.2", + "safe-regex": "^1.1.0" + } + }, + "remove-trailing-separator": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", + "integrity": "sha512-/hS+Y0u3aOfIETiaiirUFwDBDzmXPvO+jAfKTitUngIPzdKc6Z0LoFjM/CK5PL4C+eKwHohlHAb6H0VFfmmUsw==", + "dev": true + }, + "repeat-element": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.4.tgz", + "integrity": "sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ==", + "dev": true + }, + "repeat-string": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", + "integrity": "sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w==", + "dev": true + }, + "requires-port": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", + "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==", + "dev": true + }, + "resolve": { + "version": "1.22.4", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.4.tgz", + "integrity": "sha512-PXNdCiPqDqeUou+w1C2eTQbNfxKSuMxqTCuvlmmMsk1NWHL5fRrhY6Pl0qEYYc6+QqGClco1Qj8XnjPego4wfg==", + "dev": true, + "requires": { + "is-core-module": "^2.13.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + } + }, + "resolve-url": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", + "integrity": "sha512-ZuF55hVUQaaczgOIwqWzkEcEidmlD/xl44x1UZnhOXcYuFN2S6+rcxpG+C1N3So0wvNI3DmJICUFfu2SxhBmvg==", + "dev": true + }, + "ret": { + "version": "0.1.15", + "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", + "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", + "dev": true + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "safe-regex": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", + "integrity": "sha512-aJXcif4xnaNUzvUuC5gcb46oTS7zvg4jpMTnuqtrEPlR3vFr4pxtdTwaF1Qs3Enjn9HK+ZlwQui+a7z0SywIzg==", + "dev": true, + "requires": { + "ret": "~0.1.10" + } + }, + "safe-stable-stringify": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/safe-stable-stringify/-/safe-stable-stringify-2.3.1.tgz", + "integrity": "sha512-kYBSfT+troD9cDA85VDnHZ1rpHC50O0g1e6WlGHVCz/g+JS+9WKLj+XwFYyR8UbrZN8ll9HUpDAAddY58MGisg==", + "dev": true + }, + "semver": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "dev": true + }, + "send": { + "version": "0.18.0", + "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", + "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", + "dev": true, + "requires": { + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "mime": "1.6.0", + "ms": "2.1.3", + "on-finished": "2.4.1", + "range-parser": "~1.2.1", + "statuses": "2.0.1" + }, + "dependencies": { + "ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true + }, + "on-finished": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", + "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", + "dev": true, + "requires": { + "ee-first": "1.1.1" + } + }, + "statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "dev": true + } + } + }, + "serialize-javascript": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-3.1.0.tgz", + "integrity": "sha512-JIJT1DGiWmIKhzRsG91aS6Ze4sFUrYbltlkg2onR5OrnNM02Kl/hnY/T4FN2omvyeBbQmMJv+K4cPOpGzOTFBg==", + "dev": true, + "requires": { + "randombytes": "^2.1.0" + } + }, + "serve-index": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz", + "integrity": "sha512-pXHfKNP4qujrtteMrSBb0rc8HJ9Ms/GrXwcUtUtD5s4ewDJI8bT3Cz2zTVRMKtri49pLx2e0Ya8ziP5Ya2pZZw==", + "dev": true, + "requires": { + "accepts": "~1.3.4", + "batch": "0.6.1", + "debug": "2.6.9", + "escape-html": "~1.0.3", + "http-errors": "~1.6.2", + "mime-types": "~2.1.17", + "parseurl": "~1.3.2" + }, + "dependencies": { + "depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", + "dev": true + }, + "http-errors": { + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", + "integrity": "sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==", + "dev": true, + "requires": { + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.0", + "statuses": ">= 1.4.0 < 2" + } + }, + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==", + "dev": true + }, + "setprototypeof": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", + "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==", + "dev": true + } + } + }, + "set-value": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz", + "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==", + "dev": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-extendable": "^0.1.1", + "is-plain-object": "^2.0.3", + "split-string": "^3.0.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", + "dev": true + } + } + }, + "setprototypeof": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", + "dev": true + }, + "sigmund": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz", + "integrity": "sha512-fCvEXfh6NWpm+YSuY2bpXb/VIihqWA6hLsgboC+0nl71Q7N7o2eaCW8mJa/NLvQhs6jpd3VZV4UiUQlV6+lc8g==", + "dev": true + }, + "simple-git": { + "version": "2.48.0", + "resolved": "https://registry.npmjs.org/simple-git/-/simple-git-2.48.0.tgz", + "integrity": "sha512-z4qtrRuaAFJS4PUd0g+xy7aN4y+RvEt/QTJpR184lhJguBA1S/LsVlvE/CM95RsYMOFJG3NGGDjqFCzKU19S/A==", + "dev": true, + "requires": { + "@kwsites/file-exists": "^1.1.1", + "@kwsites/promise-deferred": "^1.1.1", + "debug": "^4.3.2" + }, + "dependencies": { + "debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "requires": { + "ms": "2.1.2" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + } + } + }, + "snapdragon": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", + "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", + "dev": true, + "requires": { + "base": "^0.11.1", + "debug": "^2.2.0", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "map-cache": "^0.2.2", + "source-map": "^0.5.6", + "source-map-resolve": "^0.5.0", + "use": "^3.1.0" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + } + }, + "is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", + "dev": true + }, + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true + } + } + }, + "snapdragon-node": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", + "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", + "dev": true, + "requires": { + "define-property": "^1.0.0", + "isobject": "^3.0.0", + "snapdragon-util": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==", + "dev": true, + "requires": { + "is-descriptor": "^1.0.0" + } + } + } + }, + "snapdragon-util": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", + "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", + "dev": true, + "requires": { + "kind-of": "^3.2.0" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "sort-keys": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-1.1.2.tgz", + "integrity": "sha512-vzn8aSqKgytVik0iwdBEi+zevbTYZogewTUM6dtpmGwEcdzbub/TX4bCzRhebDCRC3QzXgJsLRKB2V/Oof7HXg==", + "dev": true, + "requires": { + "is-plain-obj": "^1.0.0" + } + }, + "source-map": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.6.tgz", + "integrity": "sha512-MjZkVp0NHr5+TPihLcadqnlVoGIoWo4IBHptutGh9wI3ttUYvCG26HkSuDi+K6lsZ25syXJXcctwgyVCt//xqA==", + "dev": true + }, + "source-map-resolve": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.3.tgz", + "integrity": "sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==", + "dev": true, + "requires": { + "atob": "^2.1.2", + "decode-uri-component": "^0.2.0", + "resolve-url": "^0.2.1", + "source-map-url": "^0.4.0", + "urix": "^0.1.0" + } + }, + "source-map-url": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.1.tgz", + "integrity": "sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw==", + "dev": true + }, + "split": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/split/-/split-1.0.1.tgz", + "integrity": "sha512-mTyOoPbrivtXnwnIxZRFYRrPNtEFKlpB2fvjSnCQUiAA6qAZzqwna5envK4uk6OIeP17CsdF3rSBGYVBsU0Tkg==", + "dev": true, + "requires": { + "through": "2" + } + }, + "split-string": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", + "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", + "dev": true, + "requires": { + "extend-shallow": "^3.0.0" + } + }, + "sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", + "dev": true + }, + "stack-trace": { + "version": "0.0.10", + "resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.10.tgz", + "integrity": "sha512-KGzahc7puUKkzyMt+IqAep+TVNbKP+k2Lmwhub39m1AsTSkaDutx56aDCo+HLDzf/D26BIHTJWNiTG1KAJiQCg==", + "dev": true + }, + "static-extend": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", + "integrity": "sha512-72E9+uLc27Mt718pMHt9VMNiAL4LMsmDbBva8mxWUCkT07fSzEGMYUCk0XWY6lp0j6RBAG4cJ3mWuZv2OE3s0g==", + "dev": true, + "requires": { + "define-property": "^0.2.5", + "object-copy": "^0.1.0" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + } + }, + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true + } + } + }, + "statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==", + "dev": true + }, + "stream-combiner": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/stream-combiner/-/stream-combiner-0.2.2.tgz", + "integrity": "sha512-6yHMqgLYDzQDcAkL+tjJDC5nSNuNIx0vZtRZeiPh7Saef7VHX9H5Ijn9l2VIol2zaNYlYEX6KyuT/237A58qEQ==", + "dev": true, + "requires": { + "duplexer": "~0.1.1", + "through": "~2.3.4" + } + }, + "strict-uri-encode": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz", + "integrity": "sha512-R3f198pcvnB+5IpnBlRkphuE9n46WyVl8I39W/ZUTZLz4nqSP/oLYUrcnJrw462Ds8he4YKMov2efsTIw1BDGQ==", + "dev": true + }, + "string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "dev": true, + "requires": { + "safe-buffer": "~5.2.0" + }, + "dependencies": { + "safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true + } + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "strip-outer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/strip-outer/-/strip-outer-1.0.1.tgz", + "integrity": "sha512-k55yxKHwaXnpYGsOzg4Vl8+tDrWylxDEpknGjhTiZB8dFRU5rTo9CAzeycivxV3s+zlTKwrs6WxMxR95n26kwg==", + "dev": true, + "requires": { + "escape-string-regexp": "^1.0.2" + } + }, + "strip-url-auth": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/strip-url-auth/-/strip-url-auth-1.0.1.tgz", + "integrity": "sha512-++41PnXftlL3pvI6lpvhSEO+89g1kIJC4MYB5E6yH+WHa5InIqz51yGd1YOGd7VNSNdoEOfzTMqbAM/2PbgaHQ==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + }, + "supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "dev": true + }, + "through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==", + "dev": true + }, + "through2": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/through2/-/through2-3.0.2.tgz", + "integrity": "sha512-enaDQ4MUyP2W6ZyT6EsMzqBPZaM/avg8iuo+l2d3QCs0J+6RaqkHV/2/lOwDTueBHeJ/2LG9lrLW3d5rWPucuQ==", + "dev": true, + "requires": { + "inherits": "^2.0.4", + "readable-stream": "2 || 3" + } + }, + "to-object-path": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", + "integrity": "sha512-9mWHdnGRuh3onocaHzukyvCZhzvr6tiflAy/JRFXcJX0TjgfWA9pk9t8CMbzmBE4Jfw58pXbkngtBtqYxzNEyg==", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "to-regex": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", + "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", + "dev": true, + "requires": { + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "regex-not": "^1.0.2", + "safe-regex": "^1.1.0" + } + }, + "to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "requires": { + "is-number": "^7.0.0" + } + }, + "toidentifier": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", + "dev": true + }, + "trim-repeated": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/trim-repeated/-/trim-repeated-1.0.0.tgz", + "integrity": "sha512-pkonvlKk8/ZuR0D5tLW8ljt5I8kmxp2XKymhepUeOdCEfKpZaktSArkLHZt76OB1ZvO9bssUsDty4SWhLvZpLg==", + "dev": true, + "requires": { + "escape-string-regexp": "^1.0.2" + } + }, + "triple-beam": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/triple-beam/-/triple-beam-1.3.0.tgz", + "integrity": "sha512-XrHUvV5HpdLmIj4uVMxHggLbFSZYIn7HEWsqePZcI50pco+MPqJ50wMGY794X7AOOhxOBAjbkqfAbEe/QMp2Lw==", + "dev": true + }, + "uc.micro": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-1.0.6.tgz", + "integrity": "sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA==", + "dev": true + }, + "union-value": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz", + "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==", + "dev": true, + "requires": { + "arr-union": "^3.1.0", + "get-value": "^2.0.6", + "is-extendable": "^0.1.1", + "set-value": "^2.0.1" + }, + "dependencies": { + "is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", + "dev": true + } + } + }, + "universalify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "dev": true + }, + "unix-crypt-td-js": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/unix-crypt-td-js/-/unix-crypt-td-js-1.1.4.tgz", + "integrity": "sha512-8rMeVYWSIyccIJscb9NdCfZKSRBKYTeVnwmiRYT2ulE3qd1RaDQ0xQDP+rI3ccIWbhu/zuo5cgN8z73belNZgw==", + "dev": true + }, + "unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", + "dev": true + }, + "unset-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", + "integrity": "sha512-PcA2tsuGSF9cnySLHTLSh2qrQiJ70mn+r+Glzxv2TWZblxsxCC52BDlZoPCsz7STd9pN7EZetkWZBAvk4cgZdQ==", + "dev": true, + "requires": { + "has-value": "^0.3.1", + "isobject": "^3.0.0" + }, + "dependencies": { + "has-value": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", + "integrity": "sha512-gpG936j8/MzaeID5Yif+577c17TxaDmhuyVgSwtnL/q8UUTySg8Mecb+8Cf1otgLoD7DDH75axp86ER7LFsf3Q==", + "dev": true, + "requires": { + "get-value": "^2.0.3", + "has-values": "^0.1.4", + "isobject": "^2.0.0" + }, + "dependencies": { + "isobject": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha512-+OUdGJlgjOBZDfxnDjYYG6zp487z0JGNQq3cYQYg5f5hKR+syHMsaztzGeml/4kGG55CSpKSpWTY+jYGgsHLgA==", + "dev": true, + "requires": { + "isarray": "1.0.0" + } + } + } + }, + "has-values": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", + "integrity": "sha512-J8S0cEdWuQbqD9//tlZxiMuMNmxB8PlEwvYwuxsTmR1G5RXUePEX/SJn7aD0GMLieuZYSwNH0cQuJGwnYunXRQ==", + "dev": true + } + } + }, + "upath": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz", + "integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==", + "dev": true + }, + "urix": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", + "integrity": "sha512-Am1ousAhSLBeB9cG/7k7r2R0zj50uDRlZHPGbazid5s9rlF1F/QKYObEKSIunSjIOkJZqwRRLpvewjEkM7pSqg==", + "dev": true + }, + "url-parse": { + "version": "1.5.10", + "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz", + "integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==", + "dev": true, + "requires": { + "querystringify": "^2.1.1", + "requires-port": "^1.0.0" + } + }, + "use": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", + "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==", + "dev": true + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "dev": true + }, + "utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==", + "dev": true + }, + "uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "dev": true + }, + "vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", + "dev": true + }, + "vue": { + "version": "2.6.14", + "resolved": "https://registry.npmjs.org/vue/-/vue-2.6.14.tgz", + "integrity": "sha512-x2284lgYvjOMj3Za7kqzRcUSxBboHqtgRE2zlos1qWaOye5yUmHn42LB1250NJBLRwEcdrB0JRwyPTEPhfQjiQ==", + "dev": true + }, + "vue-server-renderer": { + "version": "2.6.14", + "resolved": "https://registry.npmjs.org/vue-server-renderer/-/vue-server-renderer-2.6.14.tgz", + "integrity": "sha512-HifYRa/LW7cKywg9gd4ZtvtRuBlstQBao5ZCWlg40fyB4OPoGfEXAzxb0emSLv4pBDOHYx0UjpqvxpiQFEuoLA==", + "dev": true, + "requires": { + "chalk": "^1.1.3", + "hash-sum": "^1.0.2", + "he": "^1.1.0", + "lodash.template": "^4.5.0", + "lodash.uniq": "^4.5.0", + "resolve": "^1.2.0", + "serialize-javascript": "^3.1.0", + "source-map": "0.5.6" + }, + "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==", + "dev": true, + "requires": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + } + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==", + "dev": true + } + } + }, + "vue-template-compiler": { + "version": "2.6.14", + "resolved": "https://registry.npmjs.org/vue-template-compiler/-/vue-template-compiler-2.6.14.tgz", + "integrity": "sha512-ODQS1SyMbjKoO1JBJZojSw6FE4qnh9rIpUZn2EUT86FKizx9uH5z6uXiIrm4/Nb/gwxTi/o17ZDEGWAXHvtC7g==", + "dev": true, + "requires": { + "de-indent": "^1.0.2", + "he": "^1.1.0" + } + }, + "walk-sync": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/walk-sync/-/walk-sync-2.2.0.tgz", + "integrity": "sha512-IC8sL7aB4/ZgFcGI2T1LczZeFWZ06b3zoHH7jBPyHxOtIIz1jppWHjjEXkOFvFojBVAK9pV7g47xOZ4LW3QLfg==", + "dev": true, + "requires": { + "@types/minimatch": "^3.0.3", + "ensure-posix-path": "^1.1.0", + "matcher-collection": "^2.0.0", + "minimatch": "^3.0.4" + } + }, + "websocket-driver": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz", + "integrity": "sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==", + "dev": true, + "requires": { + "http-parser-js": ">=0.5.1", + "safe-buffer": ">=5.1.0", + "websocket-extensions": ">=0.1.1" + } + }, + "websocket-extensions": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.4.tgz", + "integrity": "sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==", + "dev": true + }, + "winston": { + "version": "2.4.6", + "resolved": "https://registry.npmjs.org/winston/-/winston-2.4.6.tgz", + "integrity": "sha512-J5Zu4p0tojLde8mIOyDSsmLmcP8I3Z6wtwpTDHx1+hGcdhxcJaAmG4CFtagkb+NiN1M9Ek4b42pzMWqfc9jm8w==", + "dev": true, + "requires": { + "async": "^3.2.3", + "colors": "1.0.x", + "cycle": "1.0.x", + "eyes": "0.1.x", + "isstream": "0.1.x", + "stack-trace": "0.0.x" + }, + "dependencies": { + "async": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.4.tgz", + "integrity": "sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==", + "dev": true + }, + "colors": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.0.3.tgz", + "integrity": "sha512-pFGrxThWcWQ2MsAz6RtgeWe4NK2kUE1WfsrvvlctdII745EW9I0yflqhe7++M5LEc7bV2c/9/5zc8sFcpL0Drw==", + "dev": true + } + } + }, + "winston-compat": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/winston-compat/-/winston-compat-0.1.5.tgz", + "integrity": "sha512-EPvPcHT604AV3Ji6d3+vX8ENKIml9VSxMRnPQ+cuK/FX6f3hvPP2hxyoeeCOCFvDrJEujalfcKWlWPvAnFyS9g==", + "dev": true, + "requires": { + "cycle": "~1.0.3", + "logform": "^1.6.0", + "triple-beam": "^1.2.0" + } + }, + "winston-daily-rotate-file": { + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/winston-daily-rotate-file/-/winston-daily-rotate-file-3.10.0.tgz", + "integrity": "sha512-KO8CfbI2CvdR3PaFApEH02GPXiwJ+vbkF1mCkTlvRIoXFI8EFlf1ACcuaahXTEiDEKCii6cNe95gsL4ZkbnphA==", + "dev": true, + "requires": { + "file-stream-rotator": "^0.4.1", + "object-hash": "^1.3.0", + "semver": "^6.2.0", + "triple-beam": "^1.3.0", + "winston-compat": "^0.1.4", + "winston-transport": "^4.2.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, + "winston-transport": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/winston-transport/-/winston-transport-4.5.0.tgz", + "integrity": "sha512-YpZzcUzBedhlTAfJg6vJDlyEai/IFMIVcaEZZyl3UXIl4gmqRpU7AE89AHLkbzLUsv0NVmw7ts+iztqKxxPW1Q==", + "dev": true, + "requires": { + "logform": "^2.3.2", + "readable-stream": "^3.6.0", + "triple-beam": "^1.3.0" + }, + "dependencies": { + "fecha": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/fecha/-/fecha-4.2.3.tgz", + "integrity": "sha512-OP2IUU6HeYKJi3i0z4A19kHMQoLVs4Hc+DPqqxI2h/DPZHTm/vjsfC6P0b4jCMy14XizLBqvndQ+UilD7707Jw==", + "dev": true + }, + "logform": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/logform/-/logform-2.4.2.tgz", + "integrity": "sha512-W4c9himeAwXEdZ05dQNerhFz2XG80P9Oj0loPUMV23VC2it0orMHQhJm4hdnnor3rd1HsGf6a2lPwBM1zeXHGw==", + "dev": true, + "requires": { + "@colors/colors": "1.5.0", + "fecha": "^4.2.0", + "ms": "^2.1.1", + "safe-stable-stringify": "^2.3.1", + "triple-beam": "^1.3.0" + } + }, + "ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true + } + } + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "dev": true + }, + "yallist": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", + "integrity": "sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A==", + "dev": true + } + } +} diff --git a/docs/package.json b/docs/package.json new file mode 100644 index 00000000000..aa7083fd8a7 --- /dev/null +++ b/docs/package.json @@ -0,0 +1,14 @@ +{ + "name": "docs", + "version": "1.0.0", + "description": "AB-3 docs", + "scripts": { + "init": "markbind init", + "build": "markbind build", + "serve": "markbind serve", + "deploy": "markbind deploy" + }, + "devDependencies": { + "markbind-cli": "^5.1.0" + } +} diff --git a/docs/site.json b/docs/site.json new file mode 100644 index 00000000000..ffe411c3f82 --- /dev/null +++ b/docs/site.json @@ -0,0 +1,29 @@ +{ + "baseUrl": "", + "titlePrefix": "", + "titleSuffix": "AddressBook Level-3", + "faviconPath": "images/SeEduLogo.png", + "style": { + "codeTheme": "light" + }, + "ignore": [ + "_markbind/layouts/*", + "_markbind/logs/*", + "_site/*", + "site.json", + "*.md", + "*.njk", + ".git/*", + "node_modules/*" + ], + "pagesExclude": ["node_modules/*"], + "pages": [ + { + "glob": ["**/index.md", "**/*.md"] + } + ], + "deploy": { + "message": "Site Update." + }, + "timeZone": "Asia/Singapore" +} diff --git a/docs/stylesheets/main.css b/docs/stylesheets/main.css new file mode 100644 index 00000000000..1074ade42dd --- /dev/null +++ b/docs/stylesheets/main.css @@ -0,0 +1,144 @@ +mark { + background-color: #ff0; + border-radius: 5px; + padding-top: 0; + padding-bottom: 0; +} + +.indented { + padding-left: 20px; +} + +.theme-card img { + width: 100%; +} + +/* Scrollbar */ + +.slim-scroll::-webkit-scrollbar { + width: 5px; +} + +.slim-scroll::-webkit-scrollbar-thumb { + background: #808080; + border-radius: 20px; +} + +.slim-scroll::-webkit-scrollbar-track { + background: transparent; + border-radius: 20px; +} + +.slim-scroll-blue::-webkit-scrollbar { + width: 5px; +} + +.slim-scroll-blue::-webkit-scrollbar-thumb { + background: #00b0ef; + border-radius: 20px; +} + +.slim-scroll-blue::-webkit-scrollbar-track { + background: transparent; + border-radius: 20px; +} + +/* Layout containers */ + +#flex-body { + display: flex; + flex: 1; + align-items: start; +} + +#content-wrapper { + flex: 1; + margin: 0 auto; + min-width: 0; + max-width: 1000px; + overflow-x: auto; + padding: 0.8rem 20px 0 20px; + transition: 0.4s; + -webkit-transition: 0.4s; +} + +#site-nav, +#page-nav { + display: flex; + flex-direction: column; + position: sticky; + top: var(--sticky-header-height); + flex: 0 0 auto; + max-width: 300px; + max-height: calc(100vh - var(--sticky-header-height)); + width: 300px; +} + +#site-nav { + border-right: 1px solid lightgrey; + padding-bottom: 20px; + z-index: 999; +} + +.site-nav-top { + margin: 0.8rem 0; + padding: 0 12px 12px 12px; +} + +.nav-component { + overflow-y: auto; +} + +#page-nav { + border-left: 1px solid lightgrey; +} + +@media screen and (max-width: 1299.98px) { + #page-nav { + display: none; + } +} + +/* Bootstrap medium(md) responsive breakpoint */ +@media screen and (max-width: 991.98px) { + #site-nav { + display: none; + } +} + +/* Bootstrap small(sm) responsive breakpoint */ +@media (max-width: 767.98px) { + .indented { + padding-left: 10px; + } + + #content-wrapper { + padding: 0 10px; + } +} + +/* Bootstrap extra small(xs) responsive breakpoint */ +@media screen and (max-width: 575.98px) { + #site-nav { + display: none; + } +} + +/* Hide site navigation when printing */ +@media print { + #site-nav { + display: none; + } + + #page-nav { + display: none; + } +} + +h2, +h3, +h4, +h5, +h6 { + color: #e46c0a; +} diff --git a/docs/team/johndoe.md b/docs/team/johndoe.md index 773a07794e2..86aa7ebfc34 100644 --- a/docs/team/johndoe.md +++ b/docs/team/johndoe.md @@ -1,6 +1,6 @@ --- -layout: page -title: John Doe's Project Portfolio Page + layout: default.md + title: "John Doe's Project Portfolio Page" --- ### Project: AddressBook Level 3 diff --git a/docs/tutorials/AddRemark.md b/docs/tutorials/AddRemark.md index d98f38982e7..8b18f27946b 100644 --- a/docs/tutorials/AddRemark.md +++ b/docs/tutorials/AddRemark.md @@ -1,8 +1,11 @@ --- -layout: page -title: "Tutorial: Adding a command" + layout: default.md + title: "Tutorial: Adding a command" + pageNav: 3 --- +# Tutorial: Adding a command + Let's walk you through the implementation of a new command — `remark`. This command allows users of the AddressBook application to add optional remarks to people in their address book and edit it if required. The command should have the following format: @@ -22,7 +25,7 @@ For now, let’s keep `RemarkCommand` as simple as possible and print some outpu **`RemarkCommand.java`:** -``` java +```java package seedu.address.logic.commands; import seedu.address.model.Model; @@ -57,13 +60,13 @@ Run `Main#main` and try out your new `RemarkCommand`. If everything went well, y While we have successfully printed a message to `ResultDisplay`, the command does not do what it is supposed to do. Let’s change the command to throw a `CommandException` to accurately reflect that our command is still a work in progress. -![The relationship between RemarkCommand and Command](../images/add-remark/RemarkCommandClass.png) + Following the convention in other commands, we add relevant messages as constants and use them. **`RemarkCommand.java`:** -``` java +```java public static final String MESSAGE_USAGE = COMMAND_WORD + ": Edits the remark of the person identified " + "by the index number used in the last person listing. " @@ -90,7 +93,7 @@ Let’s change `RemarkCommand` to parse input from the user. We start by modifying the constructor of `RemarkCommand` to accept an `Index` and a `String`. While we are at it, let’s change the error message to echo the values. While this is not a replacement for tests, it is an obvious way to tell if our code is functioning as intended. -``` java +```java import static seedu.address.commons.util.CollectionUtil.requireAllNonNull; //... public class RemarkCommand extends Command { @@ -142,13 +145,13 @@ Now let’s move on to writing a parser that will extract the index and remark f Create a `RemarkCommandParser` class in the `seedu.address.logic.parser` package. The class must extend the `Parser` interface. -![The relationship between Parser and RemarkCommandParser](../images/add-remark/RemarkCommandParserClass.png) + Thankfully, `ArgumentTokenizer#tokenize()` makes it trivial to parse user input. Let’s take a look at the JavaDoc provided for the function to understand what it does. **`ArgumentTokenizer.java`:** -``` java +```java /** * Tokenizes an arguments string and returns an {@code ArgumentMultimap} * object that maps prefixes to their respective argument values. Only the @@ -166,7 +169,7 @@ We can tell `ArgumentTokenizer#tokenize()` to look out for our new prefix `r/` a **`ArgumentMultimap.java`:** -``` java +```java /** * Returns the last value of {@code prefix}. */ @@ -181,7 +184,7 @@ This appears to be what we need to get a String of the remark. But what about th **`DeleteCommandParser.java`:** -``` java +```java Index index = ParserUtil.parseIndex(args); return new DeleteCommand(index); ``` @@ -192,7 +195,7 @@ Now that we have the know-how to extract the data that we need from the user’s **`RemarkCommandParser.java`:** -``` java +```java public RemarkCommand parse(String args) throws ParseException { requireNonNull(args); ArgumentMultimap argMultimap = ArgumentTokenizer.tokenize(args, @@ -212,11 +215,11 @@ public RemarkCommand parse(String args) throws ParseException { } ``` -

    + If you are stuck, check out the sample [here](https://github.com/se-edu/addressbook-level3/commit/dc6d5139d08f6403da0ec624ea32bd79a2ae0cbf#diff-8bf239e8e9529369b577701303ddd96af93178b4ed6735f91c2d8488b20c6b4a). @@ -244,7 +247,7 @@ Simply add the following to [`seedu.address.ui.PersonCard`](https://github.com/s **`PersonCard.java`:** -``` java +```java @FXML private Label remark; ``` @@ -276,11 +279,11 @@ We change the constructor of `Person` to take a `Remark`. We will also need to d Unfortunately, a change to `Person` will cause other commands to break, you will have to modify these commands to use the updated `Person`! -
    + -:bulb: Use the `Find Usages` feature in IntelliJ IDEA on the `Person` class to find these commands. +Use the `Find Usages` feature in IntelliJ IDEA on the `Person` class to find these commands. -
    + Refer to [this commit](https://github.com/se-edu/addressbook-level3/commit/ce998c37e65b92d35c91d28c7822cd139c2c0a5c) and check that you have got everything in order! @@ -291,11 +294,11 @@ AddressBook stores data by serializing `JsonAdaptedPerson` into `json` with the While the changes to code may be minimal, the test data will have to be updated as well. -
    + -:exclamation: You must delete AddressBook’s storage file located at `/data/addressbook.json` before running it! Not doing so will cause AddressBook to default to an empty address book! +You must delete AddressBook’s storage file located at `/data/addressbook.json` before running it! Not doing so will cause AddressBook to default to an empty address book! -
    + Check out [this commit](https://github.com/se-edu/addressbook-level3/commit/556cbd0e03ff224d7a68afba171ad2eb0ce56bbf) to see what the changes entail. @@ -308,7 +311,7 @@ Just add [this one line of code!](https://github.com/se-edu/addressbook-level3/c **`PersonCard.java`:** -``` java +```java public PersonCard(Person person, int displayedIndex) { //... remark.setText(person.getRemark().value); @@ -328,7 +331,7 @@ save it with `Model#setPerson()`. **`RemarkCommand.java`:** -``` java +```java //... public static final String MESSAGE_ADD_REMARK_SUCCESS = "Added remark to Person: %1$s"; public static final String MESSAGE_DELETE_REMARK_SUCCESS = "Removed remark from Person: %1$s"; diff --git a/docs/tutorials/RemovingFields.md b/docs/tutorials/RemovingFields.md index f29169bc924..c73bd379e5e 100644 --- a/docs/tutorials/RemovingFields.md +++ b/docs/tutorials/RemovingFields.md @@ -1,8 +1,11 @@ --- -layout: page -title: "Tutorial: Removing Fields" + layout: default.md + title: "Tutorial: Removing Fields" + pageNav: 3 --- +# Tutorial: Removing Fields + > Perfection is achieved, not when there is nothing more to add, but when there is nothing left to take away. > > — Antoine de Saint-Exupery @@ -10,17 +13,17 @@ title: "Tutorial: Removing Fields" When working on an existing code base, you will most likely find that some features that are no longer necessary. This tutorial aims to give you some practice on such a code 'removal' activity by removing the `address` field from `Person` class. -
    + **If you have done the [Add `remark` command tutorial](AddRemark.html) already**, you should know where the code had to be updated to add the field `remark`. From that experience, you can deduce where the code needs to be changed to _remove_ that field too. The removing of the `address` field can be done similarly.

    However, if you have no such prior knowledge, removing a field can take a quite a bit of detective work. This tutorial takes you through that process. **At least have a read even if you don't actually do the steps yourself.** -
    + -* Table of Contents -{:toc} + + ## Safely deleting `Address` @@ -50,10 +53,10 @@ Let’s try removing references to `Address` in `EditPersonDescriptor`. 1. Remove the usages of `address` and select `Do refactor` when you are done. -
    + - :bulb: **Tip:** Removing usages may result in errors. Exercise discretion and fix them. For example, removing the `address` field from the `Person` class will require you to modify its constructor. -
    + **Tip:** Removing usages may result in errors. Exercise discretion and fix them. For example, removing the `address` field from the `Person` class will require you to modify its constructor. + 1. Repeat the steps for the remaining usages of `Address` @@ -71,7 +74,7 @@ A quick look at the `PersonCard` class and its `fxml` file quickly reveals why i **`PersonCard.java`** -``` java +```java ... @FXML private Label address; diff --git a/docs/tutorials/TracingCode.md b/docs/tutorials/TracingCode.md index 4fb62a83ef6..2b1b0f2d6b7 100644 --- a/docs/tutorials/TracingCode.md +++ b/docs/tutorials/TracingCode.md @@ -1,26 +1,30 @@ --- -layout: page -title: "Tutorial: Tracing code" + layout: default.md + title: "Tutorial: Tracing code" + pageNav: 3 --- +# Tutorial: Tracing code + + > Indeed, the ratio of time spent reading versus writing is well over 10 to 1. We are constantly reading old code as part of the effort to write new code. …​\[Therefore,\] making it easy to read makes it easier to write. > > — Robert C. Martin Clean Code: A Handbook of Agile Software Craftsmanship When trying to understand an unfamiliar code base, one common strategy used is to trace some representative execution path through the code base. One easy way to trace an execution path is to use a debugger to step through the code. In this tutorial, you will be using the IntelliJ IDEA’s debugger to trace the execution path of a specific user command. -* Table of Contents -{:toc} + + ## Before we start Before we jump into the code, it is useful to get an idea of the overall structure and the high-level behavior of the application. This is provided in the 'Architecture' section of the developer guide. In particular, the architecture diagram (reproduced below), tells us that the App consists of several components. -![ArchitectureDiagram](../images/ArchitectureDiagram.png) + It also has a sequence diagram (reproduced below) that tells us how a command propagates through the App. - + Note how the diagram shows only the execution flows _between_ the main components. That is, it does not show details of the execution path *inside* each component. By hiding those details, the diagram aims to inform the reader about the overall execution path of a command without overwhelming the reader with too much details. In this tutorial, you aim to find those omitted details so that you get a more in-depth understanding of how the code works. @@ -37,16 +41,16 @@ As you know, the first step of debugging is to put in a breakpoint where you wan In our case, we would want to begin the tracing at the very point where the App start processing user input (i.e., somewhere in the UI component), and then trace through how the execution proceeds through the UI component. However, the execution path through a GUI is often somewhat obscure due to various *event-driven mechanisms* used by GUI frameworks, which happens to be the case here too. Therefore, let us put the breakpoint where the `UI` transfers control to the `Logic` component. - + According to the sequence diagram you saw earlier (and repeated above for reference), the `UI` component yields control to the `Logic` component through a method named `execute`. Searching through the code base for an `execute()` method that belongs to the `Logic` component yields a promising candidate in `seedu.address.logic.Logic`. -
    + -:bulb: **Intellij Tip:** The ['**Search Everywhere**' feature](https://www.jetbrains.com/help/idea/searching-everywhere.html) can be used here. In particular, the '**Find Symbol**' ('Symbol' here refers to methods, variables, classes etc.) variant of that feature is quite useful here as we are looking for a _method_ named `execute`, not simply the text `execute`. -
    +**Intellij Tip:** The ['**Search Everywhere**' feature](https://www.jetbrains.com/help/idea/searching-everywhere.html) can be used here. In particular, the '**Find Symbol**' ('Symbol' here refers to methods, variables, classes etc.) variant of that feature is quite useful here as we are looking for a _method_ named `execute`, not simply the text `execute`. + A quick look at the `seedu.address.logic.Logic` (an extract given below) confirms that this indeed might be what we’re looking for. @@ -67,14 +71,14 @@ public interface Logic { But apparently, this is an interface, not a concrete implementation. That should be fine because the [Architecture section of the Developer Guide](../DeveloperGuide.html#architecture) tells us that components interact through interfaces. Here's the relevant diagram: - + Next, let's find out which statement(s) in the `UI` code is calling this method, thus transferring control from the `UI` to the `Logic`. -
    + -:bulb: **Intellij Tip:** The ['**Find Usages**' feature](https://www.jetbrains.com/help/idea/find-highlight-usages.html#find-usages) can find from which parts of the code a class/method/variable is being used. -
    +**Intellij Tip:** The ['**Find Usages**' feature](https://www.jetbrains.com/help/idea/find-highlight-usages.html#find-usages) can find from which parts of the code a class/method/variable is being used. + ![`Find Usages` tool window. `Edit` \> `Find` \> `Find Usages`.](../images/tracing/FindUsages.png) @@ -87,10 +91,10 @@ Now let’s set the breakpoint. First, double-click the item to reach the corres Recall from the User Guide that the `edit` command has the format: `edit INDEX [n/NAME] [p/PHONE] [e/EMAIL] [a/ADDRESS] [t/TAG]…​` For this tutorial we will be issuing the command `edit 1 n/Alice Yeoh`. -
    + -:bulb: **Tip:** Over the course of the debugging session, you will encounter every major component in the application. Try to keep track of what happens inside the component and where the execution transfers to another component. -
    +**Tip:** Over the course of the debugging session, you will encounter every major component in the application. Try to keep track of what happens inside the component and where the execution transfers to another component. + 1. To start the debugging session, simply `Run` \> `Debug Main` @@ -110,7 +114,7 @@ Recall from the User Guide that the `edit` command has the format: `edit INDEX [ **LogicManager\#execute().** - ``` java + ```java @Override public CommandResult execute(String commandText) throws CommandException, ParseException { @@ -142,7 +146,7 @@ Recall from the User Guide that the `edit` command has the format: `edit INDEX [ ![StepOver](../images/tracing/StepOver.png) 1. _Step into_ the line where user input in parsed from a String to a Command, which should bring you to the `AddressBookParser#parseCommand()` method (partial code given below): - ``` java + ```java public Command parseCommand(String userInput) throws ParseException { ... final String commandWord = matcher.group("commandWord"); @@ -157,7 +161,7 @@ Recall from the User Guide that the `edit` command has the format: `edit INDEX [ 1. Stepping through the `switch` block, we end up at a call to `EditCommandParser().parse()` as expected (because the command we typed is an edit command). - ``` java + ```java ... case EditCommand.COMMAND_WORD: return new EditCommandParser().parse(arguments); @@ -166,8 +170,10 @@ Recall from the User Guide that the `edit` command has the format: `edit INDEX [ 1. Let’s see what `EditCommandParser#parse()` does by stepping into it. You might have to click the 'step into' button multiple times here because there are two method calls in that statement: `EditCommandParser()` and `parse()`. -
    :bulb: **Intellij Tip:** Sometimes, you might end up stepping into functions that are not of interest. Simply use the `step out` button to get out of them! -
    + + + **Intellij Tip:** Sometimes, you might end up stepping into functions that are not of interest. Simply use the `step out` button to get out of them! + 1. Stepping through the method shows that it calls `ArgumentTokenizer#tokenize()` and `ParserUtil#parseIndex()` to obtain the arguments and index required. @@ -175,17 +181,17 @@ Recall from the User Guide that the `edit` command has the format: `edit INDEX [ ![EditCommand](../images/tracing/EditCommand.png) 1. As you just traced through some code involved in parsing a command, you can take a look at this class diagram to see where the various parsing-related classes you encountered fit into the design of the `Logic` component. - + 1. Let’s continue stepping through until we return to `LogicManager#execute()`. The sequence diagram below shows the details of the execution path through the Logic component. Does the execution path you traced in the code so far match the diagram?
    - ![Tracing an `edit` command through the Logic component](../images/tracing/LogicSequenceDiagram.png) + 1. Now, step over until you read the statement that calls the `execute()` method of the `EditCommand` object received, and step into that `execute()` method (partial code given below): **`EditCommand#execute()`:** - ``` java + ```java @Override public CommandResult execute(Model model) throws CommandException { ... @@ -205,25 +211,28 @@ Recall from the User Guide that the `edit` command has the format: `edit INDEX [ * it uses the `updateFilteredPersonList` method to ask the `Model` to populate the 'filtered list' with _all_ persons.
    FYI, The 'filtered list' is the list of persons resulting from the most recent operation that will be shown to the user immediately after. For the `edit` command, we populate it with all the persons so that the user can see the edited person along with all other persons. If this was a `find` command, we would be setting that list to contain the search results instead.
    To provide some context, given below is the class diagram of the `Model` component. See if you can figure out where the 'filtered list' of persons is being tracked. -
    +
    * :bulb: This may be a good time to read through the [`Model` component section of the DG](../DeveloperGuide.html#model-component) 1. As you step through the rest of the statements in the `EditCommand#execute()` method, you'll see that it creates a `CommandResult` object (containing information about the result of the execution) and returns it.
    Advancing the debugger by one more step should take you back to the middle of the `LogicManager#execute()` method.
    1. Given that you have already seen quite a few classes in the `Logic` component in action, see if you can identify in this partial class diagram some of the classes you've encountered so far, and see how they fit into the class structure of the `Logic` component: - + + * :bulb: This may be a good time to read through the [`Logic` component section of the DG](../DeveloperGuide.html#logic-component) 1. Similar to before, you can step over/into statements in the `LogicManager#execute()` method to examine how the control is transferred to the `Storage` component and what happens inside that component. -
    :bulb: **Intellij Tip:** When trying to step into a statement such as `storage.saveAddressBook(model.getAddressBook())` which contains multiple method calls, Intellij will let you choose (by clicking) which one you want to step into. -
    + + + **Intellij Tip:** When trying to step into a statement such as `storage.saveAddressBook(model.getAddressBook())` which contains multiple method calls, Intellij will let you choose (by clicking) which one you want to step into. + -1. As you step through the code inside the `Storage` component, you will eventually arrive at the `JsonAddressBook#saveAddressBook()` method which calls the `JsonSerializableAddressBook` constructor, to create an object that can be _serialized_ (i.e., stored in storage medium) in JSON format. That constructor is given below (with added line breaks for easier readability): +1. As you step through the code inside the `Storage` component, you will eventually arrive at the `JsonAddressBook#saveAddressBook()` method which calls the `JsonSerializableAddressBook` constructor, to create an object that can be _serialized_ (i.e., stored in storage medium) in JSON format. That constructor is given below (with added line breaks for easier readability): **`JsonSerializableAddressBook` constructor:** - ``` java + ```java /** * Converts a given {@code ReadOnlyAddressBook} into this class for Jackson use. * @@ -243,7 +252,8 @@ Recall from the User Guide that the `edit` command has the format: `edit INDEX [ This is because regular Java objects need to go through an _adaptation_ for them to be suitable to be saved in JSON format. 1. While you are stepping through the classes in the `Storage` component, here is the component's class diagram to help you understand how those classes fit into the structure of the component.
    - + + * :bulb: This may be a good time to read through the [`Storage` component section of the DG](../DeveloperGuide.html#storage-component) 1. We can continue to step through until you reach the end of the `LogicManager#execute()` method and return to the `MainWindow#executeCommand()` method (the place where we put the original breakpoint). @@ -251,7 +261,7 @@ Recall from the User Guide that the `edit` command has the format: `edit INDEX [ 1. Stepping into `resultDisplay.setFeedbackToUser(commandResult.getFeedbackToUser());`, we end up in: **`ResultDisplay#setFeedbackToUser()`** - ``` java + ```java public void setFeedbackToUser(String feedbackToUser) { requireNonNull(feedbackToUser); resultDisplay.setText(feedbackToUser); From 942740192d8c8c681f58b83b9d67826cc2e6bd59 Mon Sep 17 00:00:00 2001 From: byt <55319043+tiif@users.noreply.github.com> Date: Thu, 21 Sep 2023 13:29:17 +0800 Subject: [PATCH 002/301] Update docs.yml for Markbind --- .github/workflows/docs.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml index 57737a615fc..1e1862b0e82 100644 --- a/.github/workflows/docs.yml +++ b/.github/workflows/docs.yml @@ -21,5 +21,5 @@ jobs: with: token: ${{ secrets.GITHUB_TOKEN }} rootDirectory: './docs' - baseUrl: '/addressbook-level3' # replace with your repo name + baseUrl: '/tp' # replace with your repo name version: '^5.1.0' From 484ff6c74704165eb8b55a957248953d33051ccd Mon Sep 17 00:00:00 2001 From: byt <55319043+tiif@users.noreply.github.com> Date: Thu, 21 Sep 2023 13:32:23 +0800 Subject: [PATCH 003/301] Update default.md Change name from AB-3 to D.A.V.E. --- docs/_markbind/layouts/default.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/_markbind/layouts/default.md b/docs/_markbind/layouts/default.md index 7348aace92c..343b9f4af3a 100644 --- a/docs/_markbind/layouts/default.md +++ b/docs/_markbind/layouts/default.md @@ -4,7 +4,7 @@
    - AB-3 + D.A.V.E.
  • User Guide
  • Developer Guide
  • About Us
  • From faaadc930966d7f810810d24d1e6866e49f5a1bb Mon Sep 17 00:00:00 2001 From: byt <55319043+tiif@users.noreply.github.com> Date: Thu, 21 Sep 2023 13:33:42 +0800 Subject: [PATCH 004/301] Update site.json Change titlePrefix to D.A.V.E --- docs/site.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/site.json b/docs/site.json index ffe411c3f82..8e81425cfd9 100644 --- a/docs/site.json +++ b/docs/site.json @@ -1,6 +1,6 @@ { "baseUrl": "", - "titlePrefix": "", + "titlePrefix": "D.A.V.E.", "titleSuffix": "AddressBook Level-3", "faviconPath": "images/SeEduLogo.png", "style": { From 6222ec28d50c546f8c6e8e69a0d159cd995191dd Mon Sep 17 00:00:00 2001 From: Huang Licong Date: Thu, 21 Sep 2023 13:34:27 +0800 Subject: [PATCH 005/301] Update README.md --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index 13f5c77403f..ac8ff7e0100 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,7 @@ [![CI Status](https://github.com/se-edu/addressbook-level3/workflows/Java%20CI/badge.svg)](https://github.com/se-edu/addressbook-level3/actions) +[![codecov](https://codecov.io/gh/AY2324S1-CS2103T-G06-2/tp/graph/badge.svg?token=GCZ85WN999)](https://codecov.io/gh/AY2324S1-CS2103T-G06-2/tp) + ![Ui](docs/images/Ui.png) * This is **a sample project for Software Engineering (SE) students**.
    From 57074592020ac77646e403c1790994c5ca596c07 Mon Sep 17 00:00:00 2001 From: Huang Licong Date: Mon, 2 Oct 2023 11:27:29 +0800 Subject: [PATCH 006/301] Add Example DG --- html-to-markdown.md | 441 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 441 insertions(+) create mode 100644 html-to-markdown.md diff --git a/html-to-markdown.md b/html-to-markdown.md new file mode 100644 index 00000000000..cb48e0cbb22 --- /dev/null +++ b/html-to-markdown.md @@ -0,0 +1,441 @@ + Developer Guide :root \[href^="//x4pollyxxpush.com/"\], :root zeus-ad, :root topadblock, :root span\[id^="ezoic-pub-ad-placeholder-"\], :root guj-ad, :root gpt-ad, :root div\[id^="zergnet-widget"\], :root div\[id^="vuukle-ad-"\], :root div\[id^="sticky\_ad\_"\], :root div\[id^="rc-widget-"\], :root div\[id^="optidigital-adslot"\], :root div\[id^="gpt\_ad\_"\], :root div\[id^="ezoic-pub-ad-"\], :root div\[id^="div-gpt-"\], :root div\[id^="dfp-ad-"\], :root div\[id^="advads\_ad\_"\], :root div\[id^="adspot-"\], :root div\[id^="ads300\_250-widget-"\], :root div\[id^="ads300\_100-widget-"\], :root div\[id^="ads250\_250-widget-"\], :root div\[id^="adrotate\_widgets-"\], :root div\[id^="\_vdo\_ads\_player\_ai\_"\], :root div\[id\*="ScriptRoot"\], :root div\[id\*="MarketGid"\], :root div\[data-native\_ad\], :root div\[data-mini-ad-unit\], :root div\[data-insertion\], :root div\[data-id-advertdfpconf\], :root div\[data-google-query-id\], :root hl-adsense, :root div\[data-contentexchange-widget\], :root div\[data-content="Advertisement"\], :root div\[data-alias="300x250 Ad 2"\], :root div\[data-alias="300x250 Ad 1"\], :root div\[data-adzone\], :root div\[data-adunit-path\], :root div\[data-ad-wrapper\], :root div\[data-ad-placeholder\], :root div\[class^="native-ad-"\], :root div\[data-dfp-id\], :root div\[class^="kiwi-ad-wrapper"\], :root div\[class^="Adstyled\_\_AdWrapper-"\], :root div\[aria-label="Ads"\], :root display-ads, :root display-ad-component, :root bottomadblock, :root atf-ad-slot, :root aside\[id^="adrotate\_widgets-"\], :root article.ad, :root ark-top-ad, :root app-advertisement, :root app-ad, :root amp-fx-flying-carpet, :root amp-embed\[type="taboola"\], :root amp-connatix-player, :root amp-ad-custom, :root amp-ad, :root a\[style="width:100%;height:100%;z-index:10000000000000000;position:absolute;top:0;left:0;"\], :root a\[onmousedown^="this.href='https://paid.outbrain.com/network/redir?"\]\[target="\_blank"\] + .ob\_source, :root a\[onmousedown^="this.href='http://paid.outbrain.com/network/redir?"\]\[target="\_blank"\] + .ob\_source, :root a\[href^="https://yogacomplyfuel.com/"\], :root a\[href^="https://www.sugarinstant.com/?partner\_id="\], :root a\[href^="https://www.purevpn.com/"\]\[href\*="&utm\_source=aff-"\], :root a\[href^="https://www.privateinternetaccess.com/"\] > img, :root a\[href^="https://www.onlineusershielder.com/"\], :root a\[href^="https://www.nutaku.net/signup/landing/"\], :root a\[href^="https://www.nudeidols.com/cams/"\], :root a\[href^="https://www.mypornstarcams.com/landing/click/"\], :root a\[href^="https://www.kingsoffetish.com/tour?partner\_id="\], :root a\[href^="https://www.infowarsstore.com/"\] > img, :root a\[href^="https://www.highcpmrevenuenetwork.com/"\], :root a\[href^="https://www.googleadservices.com/pagead/aclk?"\], :root a\[href^="https://www.goldenfrog.com/vyprvpn?offer\_id="\]\[href\*="&aff\_id="\], :root a\[href^="https://www.get-express-vpn.com/offer/"\], :root a\[href^="https://www.financeads.net/tc.php?"\], :root a\[href^="https://www.brazzersnetwork.com/landing/"\], :root div\[class^="Display\_displayAd"\], :root a\[href^="https://www.sheetmusicplus.com/?aff\_id="\], :root a\[href^="https://www.bang.com/?aff="\], :root a\[href^="https://www.adxsrve.com/"\], :root a\[href^="https://www.5mno3.com/"\], :root a\[href^="https://wirewar.website/"\], :root a\[href^="https://visit-website.com/"\], :root a\[href^="https://twinrdsyn.com/"\], :root a\[href^="https://twinrdsrv.com/"\], :root a\[href^="https://tsartech.g2afse.com/"\], :root \[href^="https://www.mypatriotsupply.com/"\] > img, :root a\[href^="https://trk.softonixs.xyz/"\], :root a\[href^="https://trk.nfl-online-streams.club/"\], :root a\[href^="https://tracking.avapartner.com/"\], :root a\[href^="https://track.wg-aff.com"\], :root a\[href^="https://track.afcpatrk.com/"\], :root a\[href^="https://torguard.net/aff.php"\] > img, :root div\[data-adname\], :root a\[href^="https://thechleads.pro/"\], :root .OUTBRAIN\[data-widget-id^="FMS\_REELD\_"\], :root \[data-role="tile-ads-module"\], :root a\[href^="https://adsrv4k.com/"\], :root a\[href^="https://go.xlviirdr.com"\], :root a\[href^="https://thaudray.com/"\], :root a\[href^="https://taghaugh.com/"\], :root a\[href^="https://click.candyoffers.com/"\], :root \[href^="https://zstacklife.com/"\] img, :root a\[href^="https://t.aslnk.link/"\], :root a\[href^="https://t.adating.link/"\], :root a\[href^="https://go.trackitalltheway.com/"\], :root \[href^="https://track.fiverr.com/visit/"\] > img, :root a\[href^="https://syndication.exoclick.com/"\], :root a\[href^="https://syndication.dynsrvtbg.com/"\], :root a\[href^="https://streamate.com/landing/click/"\], :root a\[href^="https://ad.doubleclick.net/"\], :root a\[href^="https://static.fleshlight.com/images/banners/"\], :root a\[href^="https://sTaRtGAMing.net/tienda/"\], :root citrus-ad-wrapper, :root a\[onmousedown^="this.href='https://paid.outbrain.com/network/redir?"\]\[target="\_blank"\], :root a\[href^="https://sTaRTgamInG.net/tienda/"\], :root \[data-adblockkey\], :root a\[href^="https://sTARtgamIng.net/tienda/"\], :root a\[href^="https://aweptjmp.com/"\], :root a\[href^="https://s.zlinkc.com/"\], :root a\[href^="https://www.mrskin.com/account/"\], :root a\[href^="https://s.optzsrv.com/"\], :root a\[data-obtrack^="http://paid.outbrain.com/network/redir?"\], :root a\[href^="https://reinstandpointdumbest.com/"\], :root a\[href^="https://go.strpjmp.com/"\], :root a\[href^="https://refpa4903566.top/"\], :root a\[href^="https://pubads.g.doubleclick.net/"\], :root a\[href^="https://prf.hn/click/"\]\[href\*="/camref:"\] > img, :root a\[href^="https://serve.awmdelivery.com/"\], :root a\[href^="https://prf.hn/click/"\]\[href\*="/adref:"\] > img, :root a\[href^="https://pb-track.com/"\], :root a\[href^="https://paid.outbrain.com/network/redir?"\], :root ps-connatix-module, :root div\[id^="ad\_position\_"\], :root a\[href^="https://ovb.im/"\], :root div\[id^="ad-div-"\], :root a\[href^="https://newbinotracs.com/"\], :root a\[href^="https://natour.naughtyamerica.com/track/"\], :root \[href^="https://stvkr.com/"\], :root a\[href^="https://mediaserver.entainpartners.com/renderBanner.do?"\], :root a\[href^="https://loboclick.com"\], :root .nya-slot\[style\], :root a\[href^="https://a.bestcontentweb.top/"\], :root a\[href^="https://lobimax.com/"\], :root a\[href^="https://lead1.pl/"\], :root a\[href^="https://refpa.top/"\], :root a\[href^="https://landing.brazzersnetwork.com/"\], :root a\[href^="https://safesurfingtoday.com/"\]\[href\*="?skip="\], :root a\[href^="https://ads.leovegas.com/redirect.aspx?"\], :root a\[href^="https://land.brazzersnetwork.com/landing/"\], :root a\[href^="https://track.adform.net/"\], :root \[data-css-class="dfp-inarticle"\], :root .card-captioned.crd > .crd--cnt > .s2nPlayer, :root a\[href^="https://go.tmrjmp.com"\], :root a\[href^="https://startgamIng.Net/tienda/"\], :root a\[href^="https://l.hyenadata.com/"\], :root a\[href^="https://juicyads.in/"\], :root a\[href^="https://mediaserver.gvcaffiliates.com/renderBanner.do?"\], :root a\[href^="https://join.dreamsexworld.com/"\], :root a\[href^="https://itubego.com/video-downloader/?affid="\], :root a\[href^="https://iqbroker.com/"\]\[href\*="?aff="\], :root a\[href^="https://incisivetrk.cvtr.io/click?"\], :root \[href^="https://www.herbanomic.com/"\] > img, :root a\[href^="https://maymooth-stopic.com/"\], :root div\[data-ad-targeting\], :root a\[href^="https://hotplaystime.life/"\], :root a\[href^="https://hot-growngames.life/"\], :root \[data-revive-zoneid\], :root a\[href^="https://googleads.g.doubleclick.net/pcs/click"\], :root a\[href^="https://clk.wrenchsound.store/"\], :root a\[href^="https://go.zybrdr.com"\], :root \[href^="http://join.michelle-austin.com/"\], :root \[class^="tile-picker\_\_CitrusBannerContainer-sc-"\], :root a\[href^="https://go.xxxiijmp.com"\], :root a\[href^="https://go.xtbaffiliates.com/"\], :root a\[href^="https://ismlks.com/"\], :root a\[href^="//a.bestcontentfare.top/"\], :root \[href^="https://www.mypillow.com/"\] > img, :root a\[href^="https://azpresearch.club/"\], :root a\[href^="https://go.xlirdr.com"\], :root a\[href^="https://go.skinstrip.net"\]\[href\*="?campaignId="\], :root a\[href^="https://go.markets.com/visit/?bta="\], :root a\[href^="https://billing.purevpn.com/aff.php"\] > img, :root a\[href^="https://go.hpyrdr.com/"\], :root a\[href^="https://go.goaserv.com/"\], :root a\[href^="https://go.dmzjmp.com"\], :root a\[href^="https://go.admjmp.com/"\], :root \[href^="https://kingered-banctours.com/"\], :root a\[href^="https://get.surfshark.net/aff\_c?"\]\[href\*="&aff\_id="\] > img, :root a-ad, :root a\[href^="https://affiliate.rusvpn.com/click.php?"\], :root a\[href^="https://geniusdexchange.com/"\], :root a\[href^="https://frameworkdeserve.com/"\], :root a\[href^="https://flirtandsweets.life/"\], :root a\[href^="https://www.mrskin.com/tour"\], :root a\[href^="https://financeads.net/tc.php?"\], :root div\[data-native-ad\], :root a\[href^="https://engine.trackingdesks.com/"\], :root a\[data-redirect^="https://paid.outbrain.com/network/redir?"\], :root \[href^="https://www.reimageplus.com/"\], :root a\[href^="https://engine.phn.doublepimp.com/"\], :root a\[href^="https://engine.blueistheneworanges.com/"\], :root a\[href^="https://dl-protect.net/"\], :root \[href="//jjgirls.com/sex/ChaturbateCams"\], :root a\[href^="https://datingoffers30.info/"\], :root a\[href^="https://clixtrac.com/"\], :root a\[href^="https://click.linksynergy.com/fs-bin/"\] > img, :root ad-shield-ads, :root a\[href^="https://sTartGAMinG.net/tienda/"\], :root AD-TRIPLE-BOX, :root a\[href^="https://click.hoolig.app/"\], :root a\[href^="https://track.totalav.com/"\], :root img\[src^="https://images.purevpnaffiliates.com"\], :root a\[href^="https://porntubemate.com/"\], :root a\[href^="http://www.gfrevenge.com/landing/"\], :root a\[href^="https://clickadilla.com/"\], :root a\[href^="https://click.dtiserv2.com/"\], :root a\[href^="https://go.xlvirdr.com"\], :root a\[href^="http://www.iyalc.com/"\], :root a\[href^="https://claring-loccelkin.com/"\], :root \[class^="s2nPlayer"\], :root a\[href^="https://chaturbate.jjgirls.com/?track="\], :root a\[href^="https://chaturbate.com/in/?track="\], :root a\[href^="https://chaturbate.com/in/?tour="\], :root a\[href^="https://cams.imagetwist.com/in/?track="\], :root a\[href^="https://go.gldrdr.com/"\], :root a\[href^="https://buqkrzbrucz.com/"\], :root a\[href^="https://affcpatrk.com/"\], :root a\[href^="https://bongacams2.com/track?"\], :root a\[href^="https://www.sheetmusicplus.com/"\]\[href\*="?aff\_id="\], :root a\[href^="https://bngpt.com/"\], :root a\[href^="https://bluedelivery.pro/"\], :root a\[href^="https://black77854.com/"\], :root a\[href^="https://bc.game/"\], :root a\[href^="https://ndt5.net/"\], :root a\[href^="https://batheunits.com/"\], :root a\[target="\_blank"\]\[onmousedown="this.href^='http://paid.outbrain.com/network/redir?"\], :root a\[href^="https://banners.livepartners.com/"\], :root a\[href^="//whulsaux.com/"\], :root a\[href^="https://m.do.co/c/"\] > img, :root \[href="https://masstortfinancing.com"\] img, :root a\[href^="https://bongacams10.com/track?"\], :root a\[href^="https://albionsoftwares.com/"\], :root a\[href^="https://t.hrtye.com/"\], :root a\[href^="https://go.etoro.com/"\] > img, :root a\[href^="https://convertmb.com/"\], :root a\[href^="https://join.sexworld3d.com/track/"\], :root a\[href^="https://intenseaffiliates.com/redirect/"\], :root a\[href^="https://ads.ad4game.com/"\], :root \[id^="google\_ads\_iframe"\], :root a\[href^="https://syndication.optimizesrv.com/"\], :root a\[href^="https://affpa.top/"\], :root a\[href^="https://adnetwrk.com/"\], :root a\[href^="https://adjoincomprise.com/"\], :root \[href^="http://misslinkvocation.com/"\], :root a\[href^="https://adclick.g.doubleclick.net/"\], :root a\[href^="https://www.bet365.com/"\]\[href\*="affiliate="\], :root \[href^="https://r.kraken.com/"\], :root a\[href^="https://mmwebhandler.aff-online.com/"\], :root a\[href^="https://go.nordvpn.net/aff"\] > img, :root \[href^="http://clicks.totemcash.com/"\], :root a\[href^="https://misspkl.com/"\], :root a\[href^="https://ad.zanox.com/ppc/"\] > img, :root a\[href^="https://ad.kubiccomps.icu/"\], :root a\[href^="https://a2.adform.net/"\], :root a\[href^="https://iactrivago.ampxdirect.com/"\], :root a\[href^="https://a.medfoodhome.com/"\], :root a\[href^="https://adultfriendfinder.com/go/"\], :root a\[href^="https://a.bestcontentoperation.top/"\], :root a\[href^="http://static.fleshlight.com/images/banners/"\], :root a\[href^="https://a.adtng.com/"\], :root \[data-m-ad-id\], :root a\[href^="https://sTartgAminG.net/tienda/"\], :root a\[href^="https://a-ads.com/"\], :root a\[href^="https://join.virtualtaboo.com/track/"\], :root a\[href^="https://StarTGAminG.net/tienda/"\], :root a\[href^="https://STaRTgamINg.net/tienda/"\], :root a\[href^="https://cpmspace.com/"\], :root \[href^="https://freecourseweb.com/"\] > .sitefriend, :root a\[href^="https://prf.hn/click/"\]\[href\*="/creativeref:"\] > img, :root a\[href^="http://www.adultempire.com/unlimited/promo?"\]\[href\*="&partner\_id="\], :root a\[href^="https://1betandgonow.com/"\], :root \[href="https://ourgoldguy.com/contact/"\] img, :root a\[href^="https://brightadnetwork.com/"\], :root \[href^="https://www.avantlink.com/click.php"\] img, :root a\[href^="http://www.onwebcam.com/random?t\_link="\], :root a\[href^="http://www.mrskin.com/tour"\], :root a\[href^="https://agacelebir.com/"\], :root a\[href^="https://spygasm.com/track?"\], :root a\[href^="http://d2.zedo.com/"\], :root a\[href^="http://www.friendlyduck.com/AF\_"\], :root a\[href^="http://trk.globwo.online/"\], :root a\[href^="http://traffic.tc-clicks.com/"\], :root a\[href^="http://tour.mrskin.com/"\], :root a\[href^="https://funkydaters.com/"\], :root \[id^="ad\_sky"\], :root a\[href^="http://https://www.get-express-vpn.com/offer/"\], :root div\[id^="google\_dfp\_"\], :root a\[href^="http://googleads.g.doubleclick.net/pcs/click"\], :root \[href^="http://go.cm-trk2.com/"\], :root a\[href^="http://click.payserve.com/"\], :root a\[href^="https://porngames.adult/?SID="\], :root a\[href^="https://landing1.brazzersnetwork.com"\], :root #slashboxes > .deals-rail, :root \[href^="http://globsads.com/"\], :root \[href^="https://www.brighteonstore.com/products/"\] img, :root a\[href^="http://bc.vc/?r="\], :root a\[href^="https://mityneedn.com/"\], :root \[href^="http://homemoviestube.com/"\], :root a\[href^="http://ad.doubleclick.net/"\], :root a\[href^="//zunsoach.com/"\], :root a\[href^="//pubads.g.doubleclick.net/"\], :root a\[href^="https://femglobal.app/"\], :root a\[href^="//go.eabids.com/"\], :root a\[data-url^="http://paid.outbrain.com/network/redir?"\] + .author, :root \[href^="https://join.playboyplus.com/track/"\], :root a\[href^="//ardslediana.com/"\], :root \[data-d-ad-id\], :root a\[href\*=".engine.adglare.net/"\], :root \[href^="https://awbbjmp.com/"\], :root a\[href^="https://tracker.loropartners.com/"\], :root #kt\_player > a\[target="\_blank"\], :root a\[href\*=".cfm?fp="\]\[href\*="&maxads="\], :root \[data-ad-width\], :root a\[href^="http://bodelen.com/"\], :root a\[data-oburl^="https://paid.outbrain.com/network/redir?"\], :root \[href^="https://cpa.10kfreesilver.com/"\], :root a\[href^="https://a.bestcontentfood.top/"\], :root a\[href^="http://wct.link/"\], :root \[href^="https://goldforyourfuture.com/clk.trk"\] img, :root \[onclick^="location.href='http://www.reimageplus.com"\], :root \[id^="section-ad-banner"\], :root a\[href^="https://go.julrdr.com/"\], :root .trc\_rbox\_div .syndicatedItemUB, :root \[href^="https://zone.gotrackier.com/"\], :root \[href^="https://detachedbates.com/"\], :root \[href^="https://www.targetingpartner.com/"\], :root a\[href^="https://fourwhenstatistics.com/"\], :root \[href^="https://www.restoro.com/"\], :root a\[href^="https://yourperfectdating.life/"\], :root a\[href^="https://join.virtuallust3d.com/"\], :root .section-subheader > .section-hotel-prices-header, :root \[href^="https://go.affiliatexe.com/"\], :root \[href^="https://www.hostg.xyz/"\] > img, :root \[href^="https://ilovemyfreedoms.com/landing-"\], :root a\[href^="https://staRTgaming.net/tienda/"\], :root a\[href^="https://STaRtgAmInG.net/tienda/"\], :root a\[href^="http://adultfriendfinder.com/go/"\], :root a\[href^="https://fastestvpn.com/lifetime-special-deal?a\_aid="\], :root a\[href^="https://tour.mrskin.com/"\], :root div\[id^="ad-position-"\], :root a\[href^="http://affiliate.glbtracker.com/"\], :root a\[href^="https://leg.xyz/?track="\], :root div\[id^="crt-"\]\[style\], :root a\[href^="http://adultgames.xxx/"\], :root \[href^="https://shiftnetwork.infusionsoft.com/go/"\] > img, :root a\[onmousedown^="this.href='http://paid.outbrain.com/network/redir?"\]\[target="\_blank"\], :root \[href^="https://secure.bmtmicro.com/servlets/"\], :root a\[href^="https://losingoldfry.com/"\], :root .scroll-fixable.rail-right > .deals-rail, :root \[href^="https://routewebtk.com/"\], :root a\[href^="https://oackoubs.com/"\], :root a\[href^="https://ak.psaltauw.net/"\], :root a\[href^="https://go.cmtaffiliates.com/"\], :root \[data-name="adaptiveConstructorAd"\], :root \[href^="https://optimizedelite.com/"\] > img, :root a\[href^="https://awptjmp.com/"\], :root a\[href^="https://go.goasrv.com/"\], :root \[href^="http://mypillow.com/"\] > img, :root a\[href^="http://bongacams.com/track?"\], :root a\[href^="https://fleshlight.sjv.io/"\], :root \[data-ad-manager-id\], :root a\[href^="https://promo-bc.com/"\], :root a\[href^="https://clicks.pipaffiliates.com/"\], :root \[href^="https://noqreport.com/"\] > img, :root a\[href^="https://www.highperformancecpmgate.com/"\], :root a\[href^="https://t.grtyi.com/"\], :root \[href^="https://mylead.global/stl/"\] > img, :root \[href^="https://mypatriotsupply.com/"\] > img, :root \[data-freestar-ad\], :root a\[href^="https://fc.lc/ref/"\], :root .vid-present > .van\_vid\_carousel\_\_padding, :root span\[data-ez-ph-id\], :root \[href^="https://track.aftrk1.com/"\], :root div\[id^="adngin-"\], :root \[data-rc-widget\], :root a\[href^="https://go.xxxijmp.com"\], :root \[href^="https://istlnkcl.com/"\], :root \[href^="https://go.xlrdr.com"\], :root \[href^="https://go.4rabettraff.com/"\], :root a\[href^="https://tm-offers.gamingadult.com/"\], :root \[href^="https://charmingdatings.life/"\], :root \[href^="https://glersakr.com/"\], :root ins.adsbygoogle, :root a\[href^="https://1startfiledownload1.com/"\], :root .trc\_rbox\_border\_elm .syndicatedItem, :root div\[id^="pa\_sticky\_ad\_box\_middle\_"\], :root a\[href^="http://www.onclickmega.com/jump/next.php?"\], :root a\[href^="https://italarizege.xyz/"\], :root a\[href^="https://wittered-mainging.com/"\], :root \[href^="https://engine.gettopple.com/"\], :root \[data-id^="div-gpt-ad"\], :root a\[href^="https://k2s.cc/pr/"\], :root \[href^="https://affect3dnetwork.com/track/"\], :root a\[href^="https://camfapr.com/landing/click/"\], :root \[href="//sexcams.plus/"\], :root a\[href^="https://go.currency.com/"\], :root .resultsList > div > div > div.G-5c\[role="tab"\]\[tabindex="0"\], :root \[href^="http://www.mypillow.com/"\] > img, :root div\[id^="div-ads-"\], :root \[href^="https://rapidgator.net/article/premium/ref/"\], :root \[href^="https://join3.bannedsextapes.com"\], :root div\[data-spotim-slot\], :root \[href^="https://antiagingbed.com/discount/"\] > img, :root a\[href^="https://go.247traffic.com/"\], :root \[href^="https://join.girlsoutwest.com/"\], :root \[href^="http://trafficare.net/"\], :root a\[href^="https://tc.tradetracker.net/"\] > img, :root a\[href^="https://adserver.adreactor.com/"\], :root \[href^="http://join.shemalesfromhell.com/"\], :root \[id^="ad\_slider"\], :root #searchResultsList > div > div\[onclick$="'inline.ad'});"\], :root \[data-adbridg-ad-class\], :root a\[href^="http://www.adultdvdempire.com/?partner\_id="\]\[href\*="&utm\_"\], :root \[href^="http://join.shemale.xxx/"\], :root a\[href^="https://ads.betfair.com/redirect.aspx?"\], :root \[href^="http://www.fleshlightgirls.com/"\], :root \[href^="http://join.trannies-fuck.com/"\], :root .trc\_rbox .syndicatedItem, :root a\[href^="http://cam4com.go2cloud.org/aff\_c?"\], :root a\[href^="https://thefacux.com/"\], :root a\[href^="https://ads.planetwin365affiliate.com/redirect.aspx?"\], :root \[href^="http://join.rodneymoore.com/"\], :root \[href^="https://shrugartisticelder.com"\], :root a\[href^="https://staRTgamIng.net/tienda/"\], :root div\[id^="lazyad-"\], :root a\[href^="http://com-1.pro/"\], :root \[name^="google\_ads\_iframe"\], :root \[href="https://www.masstortfinancing.com/"\] > img, :root .ob\_container .item-container-obpd, :root \[id^="div-gpt-ad"\], :root a\[href^="https://www.geekbuying.com/dynamic-ads/"\], :root a\[href^="https://lnkxt.bannerator.com/"\], :root \[href="https://jdrucker.com/gold"\] > img, :root \[href^="https://v.investologic.co.uk/"\], :root \[href^="https://cipledecline.buzz/"\], :root a\[href^="https://go.xxxjmp.com"\], :root #leader-companion > a\[href\], :root \[data-desktop-ad-id\], :root \[href^="https://wct.link/"\], :root div\[recirculation-ad-container\], :root \[href^="https://traffserve.com/"\], :root \[data-type="ad-vertical"\], :root a\[href^="https://u.expresstech.io/"\], :root \[href^="https://mypillow.com/"\] > img, :root \[href^="https://ad.admitad.com/"\], :root \[data-testid="ad\_testID"\], :root a\[href^="https://track.ultravpn.com/"\], :root \[href^="https://goldcometals.com/clk.trk"\], :root a\[href^="https://go.hpyjmp.com"\], :root \[href^="https://mystore.com/"\] > img, :root \[data-mobile-ad-id\], :root a\[href^="http://tc.tradetracker.net/"\] > img, :root a\[href^="http://affiliates.thrixxx.com/"\], :root div\[id^="yandex\_ad"\], :root a\[href^="https://pb-imc.com/"\], :root a\[href^="https://www.adultempire.com/"\]\[href\*="?partner\_id="\], :root \[data-template-type="nativead"\], :root \[data-ad-name\], :root \[data-ez-name\], :root a\[data-widget-outbrain-redirect^="http://paid.outbrain.com/network/redir?"\], :root \[data-dynamic-ads\], :root a\[href^="http://go.xtbaffiliates.com/"\], :root a\[href^="https://consali.com/"\], :root .grid > .container > #aside-promotion, :root DFP-AD, :root .trc\_related\_container div\[data-item-syndicated="true"\], :root a\[href^="https://www.liquidfire.mobi/"\], :root \[href^="https://click2cvs.com/"\], :root \[href^="//mage98rquewz.com/"\], :root a\[href^="https://webroutetrk.com/"\], :root a\[href^="https://mercurybest.com/"\], :root a\[href^="https://startgAming.net/tienda/"\], :root \[href^="https://safer-redirection.com"\], :root \[onclick\*="content.ad/"\], :root AMP-AD, :root a\[href^="https://sTartGAMiNG.net/tienda/"\], :root \[data-ad-cls\], :root \[id^="ad-wrap-"\], :root div\[id^="taboola-stream-"\], :root \[href^="https://go.astutelinks.com/"\], :root \[class^="amp-ad-"\], :root \[href^="https://affiliate.fastcomet.com/"\] > img, :root \[class^="adDisplay-module"\], :root AD-SLOT, :root .ob\_dual\_right > .ob\_ads\_header ~ .odb\_div, :root \[href^="http://join.shemalepornstar.com/"\], :root a\[href^="https://go.xlviiirdr.com"\], :root .trc\_rbox\_div .syndicatedItem, :root div\[data-adunit\], :root app-large-ad, :root \[href^="https://turtlebids.irauctions.com/"\] img, :root a\[href^="https://www.adskeeper.com"\], :root \[href^="https://totlnkcl.com/"\], :root \[data-ad-module\], :root .plistaList > .itemLinkPET, :root \[href^="https://gmxvmvptfm.com/"\], :root \[href^="https://trackfin.asia/"\], :root .plistaList > .plista\_widget\_underArticle\_item\[data-type="pet"\], :root a\[href\*="//lkstrck2.com/"\], :root a\[href^="https://bs.serving-sys.com"\], :root \[href^="http://residenceseeingstanding.com/"\], :root a\[href^="https://traffdaq.com/"\], :root \[class^="div-gpt-ad"\], :root a\[href^="http://partners.etoro.com/"\], :root \[data-advadstrackid\], :root a\[href^="https://refpazkjixes.top/"\], :root #mgb-container > #mgb, :root \[href^="https://www.cloudways.com/en/?id"\], :root a\[href^="https://trk.sportsflix4k.club/"\], :root a\[href^="https://tweakostensibleinstaller.com/"\], :root a\[href^="https://go.xlivrdr.com"\], :root a\[href^="https://cam4com.go2cloud.org/"\], :root a\[href^="http://li.blogtrottr.com/click?"\] { display: none !important; } + +[AB-3](https://se-education.org/addressbook-level3/) + +[User Guide](https://se-education.org/addressbook-level3/UserGuide.html)[Developer Guide](https://se-education.org/addressbook-level3/DeveloperGuide.html)[About Us](https://se-education.org/addressbook-level3/AboutUs.html) [![View on GitHub](./Developer Guide_files/github-icon.png)](https://github.com/se-edu/addressbook-level3) + +Developer Guide +=============== + +* [**Acknowledgements**](https://se-education.org/addressbook-level3/DeveloperGuide.html#acknowledgements) +* [**Setting up, getting started**](https://se-education.org/addressbook-level3/DeveloperGuide.html#setting-up-getting-started) +* [**Design**](https://se-education.org/addressbook-level3/DeveloperGuide.html#design) + * [Architecture](https://se-education.org/addressbook-level3/DeveloperGuide.html#architecture) + * [UI component](https://se-education.org/addressbook-level3/DeveloperGuide.html#ui-component) + * [Logic component](https://se-education.org/addressbook-level3/DeveloperGuide.html#logic-component) + * [Model component](https://se-education.org/addressbook-level3/DeveloperGuide.html#model-component) + * [Storage component](https://se-education.org/addressbook-level3/DeveloperGuide.html#storage-component) + * [Common classes](https://se-education.org/addressbook-level3/DeveloperGuide.html#common-classes) +* [**Implementation**](https://se-education.org/addressbook-level3/DeveloperGuide.html#implementation) + * [\[Proposed\] Undo/redo feature](https://se-education.org/addressbook-level3/DeveloperGuide.html#proposed-undoredo-feature) + * [Proposed Implementation](https://se-education.org/addressbook-level3/DeveloperGuide.html#proposed-implementation) + * [Design considerations:](https://se-education.org/addressbook-level3/DeveloperGuide.html#design-considerations) + * [\[Proposed\] Data archiving](https://se-education.org/addressbook-level3/DeveloperGuide.html#proposed-data-archiving) +* [**Documentation, logging, testing, configuration, dev-ops**](https://se-education.org/addressbook-level3/DeveloperGuide.html#documentation-logging-testing-configuration-dev-ops) +* [**Appendix: Requirements**](https://se-education.org/addressbook-level3/DeveloperGuide.html#appendix-requirements) + * [Product scope](https://se-education.org/addressbook-level3/DeveloperGuide.html#product-scope) + * [User stories](https://se-education.org/addressbook-level3/DeveloperGuide.html#user-stories) + * [Use cases](https://se-education.org/addressbook-level3/DeveloperGuide.html#use-cases) + * [Non-Functional Requirements](https://se-education.org/addressbook-level3/DeveloperGuide.html#non-functional-requirements) + * [Glossary](https://se-education.org/addressbook-level3/DeveloperGuide.html#glossary) +* [**Appendix: Instructions for manual testing**](https://se-education.org/addressbook-level3/DeveloperGuide.html#appendix-instructions-for-manual-testing) + * [Launch and shutdown](https://se-education.org/addressbook-level3/DeveloperGuide.html#launch-and-shutdown) + * [Deleting a person](https://se-education.org/addressbook-level3/DeveloperGuide.html#deleting-a-person) + * [Saving data](https://se-education.org/addressbook-level3/DeveloperGuide.html#saving-data) + +* * * + +**Acknowledgements** +-------------------- + +* {list here sources of all reused/adapted ideas, code, documentation, and third-party libraries – include links to the original source as well} + +* * * + +**Setting up, getting started** +------------------------------- + +Refer to the guide [_Setting up and getting started_](https://se-education.org/addressbook-level3/SettingUp.html). + +* * * + +**Design** +---------- + +![:bulb:](./Developer Guide_files/1f4a1.png ":bulb:") **Tip:** The `.puml` files used to create diagrams in this document `docs/diagrams` folder. Refer to the [_PlantUML Tutorial_ at se-edu/guides](https://se-education.org/guides/tutorials/plantUml.html) to learn how to create and edit diagrams. + +### Architecture + +![](./Developer Guide_files/ArchitectureDiagram.png) + +The **_Architecture Diagram_** given above explains the high-level design of the App. + +Given below is a quick overview of main components and how they interact with each other. + +**Main components of the architecture** + +**`Main`** (consisting of classes [`Main`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/Main.java) and [`MainApp`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/MainApp.java)) is in charge of the app launch and shut down. + +* At app launch, it initializes the other components in the correct sequence, and connects them up with each other. +* At shut down, it shuts down the other components and invokes cleanup methods where necessary. + +The bulk of the app’s work is done by the following four components: + +* [**`UI`**](https://se-education.org/addressbook-level3/DeveloperGuide.html#ui-component): The UI of the App. +* [**`Logic`**](https://se-education.org/addressbook-level3/DeveloperGuide.html#logic-component): The command executor. +* [**`Model`**](https://se-education.org/addressbook-level3/DeveloperGuide.html#model-component): Holds the data of the App in memory. +* [**`Storage`**](https://se-education.org/addressbook-level3/DeveloperGuide.html#storage-component): Reads data from, and writes data to, the hard disk. + +[**`Commons`**](https://se-education.org/addressbook-level3/DeveloperGuide.html#common-classes) represents a collection of classes used by multiple other components. + +**How the architecture components interact with each other** + +The _Sequence Diagram_ below shows how the components interact with each other for the scenario where the user issues the command `delete 1`. + +![](./Developer Guide_files/ArchitectureSequenceDiagram.png) + +Each of the four main components (also shown in the diagram above), + +* defines its _API_ in an `interface` with the same name as the Component. +* implements its functionality using a concrete `{Component Name}Manager` class (which follows the corresponding API `interface` mentioned in the previous point. + +For example, the `Logic` component defines its API in the `Logic.java` interface and implements its functionality using the `LogicManager.java` class which follows the `Logic` interface. Other components interact with a given component through its interface rather than the concrete class (reason: to prevent outside component’s being coupled to the implementation of a component), as illustrated in the (partial) class diagram below. + +![](./Developer Guide_files/ComponentManagers.png) + +The sections below give more details of each component. + +### UI component + +The **API** of this component is specified in [`Ui.java`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/ui/Ui.java) + +![Structure of the UI Component](./Developer Guide_files/UiClassDiagram.png) + +The UI consists of a `MainWindow` that is made up of parts e.g.`CommandBox`, `ResultDisplay`, `PersonListPanel`, `StatusBarFooter` etc. All these, including the `MainWindow`, inherit from the abstract `UiPart` class which captures the commonalities between classes that represent parts of the visible GUI. + +The `UI` component uses the JavaFx UI framework. The layout of these UI parts are defined in matching `.fxml` files that are in the `src/main/resources/view` folder. For example, the layout of the [`MainWindow`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/ui/MainWindow.java) is specified in [`MainWindow.fxml`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/resources/view/MainWindow.fxml) + +The `UI` component, + +* executes user commands using the `Logic` component. +* listens for changes to `Model` data so that the UI can be updated with the modified data. +* keeps a reference to the `Logic` component, because the `UI` relies on the `Logic` to execute commands. +* depends on some classes in the `Model` component, as it displays `Person` object residing in the `Model`. + +### Logic component + +**API** : [`Logic.java`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/logic/Logic.java) + +Here’s a (partial) class diagram of the `Logic` component: + +![](./Developer Guide_files/LogicClassDiagram.png) + +The sequence diagram below illustrates the interactions within the `Logic` component, taking `execute("delete 1")` API call as an example. + +![Interactions Inside the Logic Component for the `delete 1` Command](./Developer Guide_files/DeleteSequenceDiagram.png) + +![:information_source:](./Developer Guide_files/2139.png ":information_source:") **Note:** The lifeline for `DeleteCommandParser` should end at the destroy marker (X) but due to a limitation of PlantUML, the lifeline reaches the end of diagram. + +How the `Logic` component works: + +1. When `Logic` is called upon to execute a command, it is passed to an `AddressBookParser` object which in turn creates a parser that matches the command (e.g., `DeleteCommandParser`) and uses it to parse the command. +2. This results in a `Command` object (more precisely, an object of one of its subclasses e.g., `DeleteCommand`) which is executed by the `LogicManager`. +3. The command can communicate with the `Model` when it is executed (e.g. to delete a person). +4. The result of the command execution is encapsulated as a `CommandResult` object which is returned back from `Logic`. + +Here are the other classes in `Logic` (omitted from the class diagram above) that are used for parsing a user command: + +![](./Developer Guide_files/ParserClasses.png) + +How the parsing works: + +* When called upon to parse a user command, the `AddressBookParser` class creates an `XYZCommandParser` (`XYZ` is a placeholder for the specific command name e.g., `AddCommandParser`) which uses the other classes shown above to parse the user command and create a `XYZCommand` object (e.g., `AddCommand`) which the `AddressBookParser` returns back as a `Command` object. +* All `XYZCommandParser` classes (e.g., `AddCommandParser`, `DeleteCommandParser`, …) inherit from the `Parser` interface so that they can be treated similarly where possible e.g, during testing. + +### Model component + +**API** : [`Model.java`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/model/Model.java) + +![](./Developer Guide_files/ModelClassDiagram.png) + +The `Model` component, + +* stores the address book data i.e., all `Person` objects (which are contained in a `UniquePersonList` object). +* stores the currently ‘selected’ `Person` objects (e.g., results of a search query) as a separate _filtered_ list which is exposed to outsiders as an unmodifiable `ObservableList` that can be ‘observed’ e.g. the UI can be bound to this list so that the UI automatically updates when the data in the list change. +* stores a `UserPref` object that represents the user’s preferences. This is exposed to the outside as a `ReadOnlyUserPref` objects. +* does not depend on any of the other three components (as the `Model` represents data entities of the domain, they should make sense on their own without depending on other components) + +![:information_source:](./Developer Guide_files/2139.png ":information_source:") **Note:** An alternative (arguably, a more OOP) model is given below. It has a `Tag` list in the `AddressBook`, which `Person` references. This allows `AddressBook` to only require one `Tag` object per unique tag, instead of each `Person` needing their own `Tag` objects. +![](./Developer Guide_files/BetterModelClassDiagram.png) + +### Storage component + +**API** : [`Storage.java`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/storage/Storage.java) + +![](./Developer Guide_files/StorageClassDiagram.png) + +The `Storage` component, + +* can save both address book data and user preference data in JSON format, and read them back into corresponding objects. +* inherits from both `AddressBookStorage` and `UserPrefStorage`, which means it can be treated as either one (if only the functionality of only one is needed). +* depends on some classes in the `Model` component (because the `Storage` component’s job is to save/retrieve objects that belong to the `Model`) + +### Common classes + +Classes used by multiple components are in the `seedu.addressbook.commons` package. + +* * * + +**Implementation** +------------------ + +This section describes some noteworthy details on how certain features are implemented. + +### \[Proposed\] Undo/redo feature + +#### Proposed Implementation + +The proposed undo/redo mechanism is facilitated by `VersionedAddressBook`. It extends `AddressBook` with an undo/redo history, stored internally as an `addressBookStateList` and `currentStatePointer`. Additionally, it implements the following operations: + +* `VersionedAddressBook#commit()` — Saves the current address book state in its history. +* `VersionedAddressBook#undo()` — Restores the previous address book state from its history. +* `VersionedAddressBook#redo()` — Restores a previously undone address book state from its history. + +These operations are exposed in the `Model` interface as `Model#commitAddressBook()`, `Model#undoAddressBook()` and `Model#redoAddressBook()` respectively. + +Given below is an example usage scenario and how the undo/redo mechanism behaves at each step. + +Step 1. The user launches the application for the first time. The `VersionedAddressBook` will be initialized with the initial address book state, and the `currentStatePointer` pointing to that single address book state. + +![UndoRedoState0](./Developer Guide_files/UndoRedoState0.png) + +Step 2. The user executes `delete 5` command to delete the 5th person in the address book. The `delete` command calls `Model#commitAddressBook()`, causing the modified state of the address book after the `delete 5` command executes to be saved in the `addressBookStateList`, and the `currentStatePointer` is shifted to the newly inserted address book state. + +![UndoRedoState1](./Developer Guide_files/UndoRedoState1.png) + +Step 3. The user executes `add n/David …​` to add a new person. The `add` command also calls `Model#commitAddressBook()`, causing another modified address book state to be saved into the `addressBookStateList`. + +![UndoRedoState2](./Developer Guide_files/UndoRedoState2.png) + +![:information_source:](./Developer Guide_files/2139.png ":information_source:") **Note:** If a command fails its execution, it will not call `Model#commitAddressBook()`, so the address book state will not be saved into the `addressBookStateList`. + +Step 4. The user now decides that adding the person was a mistake, and decides to undo that action by executing the `undo` command. The `undo` command will call `Model#undoAddressBook()`, which will shift the `currentStatePointer` once to the left, pointing it to the previous address book state, and restores the address book to that state. + +![UndoRedoState3](./Developer Guide_files/UndoRedoState3.png) + +![:information_source:](./Developer Guide_files/2139.png ":information_source:") **Note:** If the `currentStatePointer` is at index 0, pointing to the initial AddressBook state, then there are no previous AddressBook states to restore. The `undo` command uses `Model#canUndoAddressBook()` to check if this is the case. If so, it will return an error to the user rather than attempting to perform the undo. + +The following sequence diagram shows how the undo operation works: + +![UndoSequenceDiagram](./Developer Guide_files/UndoSequenceDiagram.png) + +![:information_source:](./Developer Guide_files/2139.png ":information_source:") **Note:** The lifeline for `UndoCommand` should end at the destroy marker (X) but due to a limitation of PlantUML, the lifeline reaches the end of diagram. + +The `redo` command does the opposite — it calls `Model#redoAddressBook()`, which shifts the `currentStatePointer` once to the right, pointing to the previously undone state, and restores the address book to that state. + +![:information_source:](./Developer Guide_files/2139.png ":information_source:") **Note:** If the `currentStatePointer` is at index `addressBookStateList.size() - 1`, pointing to the latest address book state, then there are no undone AddressBook states to restore. The `redo` command uses `Model#canRedoAddressBook()` to check if this is the case. If so, it will return an error to the user rather than attempting to perform the redo. + +Step 5. The user then decides to execute the command `list`. Commands that do not modify the address book, such as `list`, will usually not call `Model#commitAddressBook()`, `Model#undoAddressBook()` or `Model#redoAddressBook()`. Thus, the `addressBookStateList` remains unchanged. + +![UndoRedoState4](./Developer Guide_files/UndoRedoState4.png) + +Step 6. The user executes `clear`, which calls `Model#commitAddressBook()`. Since the `currentStatePointer` is not pointing at the end of the `addressBookStateList`, all address book states after the `currentStatePointer` will be purged. Reason: It no longer makes sense to redo the `add n/David …​` command. This is the behavior that most modern desktop applications follow. + +![UndoRedoState5](./Developer Guide_files/UndoRedoState5.png) + +The following activity diagram summarizes what happens when a user executes a new command: + +![](./Developer Guide_files/CommitActivityDiagram.png) + +#### Design considerations: + +**Aspect: How undo & redo executes:** + +* **Alternative 1 (current choice):** Saves the entire address book. + * Pros: Easy to implement. + * Cons: May have performance issues in terms of memory usage. +* **Alternative 2:** Individual command knows how to undo/redo by itself. + * Pros: Will use less memory (e.g. for `delete`, just save the person being deleted). + * Cons: We must ensure that the implementation of each individual command are correct. + +_{more aspects and alternatives to be added}_ + +### \[Proposed\] Data archiving + +_{Explain here how the data archiving feature will be implemented}_ + +* * * + +**Documentation, logging, testing, configuration, dev-ops** +----------------------------------------------------------- + +* [Documentation guide](https://se-education.org/addressbook-level3/Documentation.html) +* [Testing guide](https://se-education.org/addressbook-level3/Testing.html) +* [Logging guide](https://se-education.org/addressbook-level3/Logging.html) +* [Configuration guide](https://se-education.org/addressbook-level3/Configuration.html) +* [DevOps guide](https://se-education.org/addressbook-level3/DevOps.html) + +* * * + +**Appendix: Requirements** +-------------------------- + +### Product scope + +**Target user profile**: + +* has a need to manage a significant number of contacts +* prefer desktop apps over other types +* can type fast +* prefers typing to mouse interactions +* is reasonably comfortable using CLI apps + +**Value proposition**: manage contacts faster than a typical mouse/GUI driven app + +### User stories + +Priorities: High (must have) - `* * *`, Medium (nice to have) - `* *`, Low (unlikely to have) - `*` + +Priority + +As a …​ + +I want to …​ + +So that I can…​ + +`* * *` + +new user + +see usage instructions + +refer to instructions when I forget how to use the App + +`* * *` + +user + +add a new person + +  + +`* * *` + +user + +delete a person + +remove entries that I no longer need + +`* * *` + +user + +find a person by name + +locate details of persons without having to go through the entire list + +`* *` + +user + +hide private contact details + +minimize chance of someone else seeing them by accident + +`*` + +user with many persons in the address book + +sort persons by name + +locate a person easily + +_{More to be added}_ + +### Use cases + +(For all use cases below, the **System** is the `AddressBook` and the **Actor** is the `user`, unless specified otherwise) + +**Use case: Delete a person** + +**MSS** + +1. User requests to list persons +2. AddressBook shows a list of persons +3. User requests to delete a specific person in the list +4. AddressBook deletes the person + + Use case ends. + + +**Extensions** + +* 2a. The list is empty. + + Use case ends. + +* 3a. The given index is invalid. + + * 3a1. AddressBook shows an error message. + + Use case resumes at step 2. + + +_{More to be added}_ + +### Non-Functional Requirements + +1. Should work on any _mainstream OS_ as long as it has Java `11` or above installed. +2. Should be able to hold up to 1000 persons without a noticeable sluggishness in performance for typical usage. +3. A user with above average typing speed for regular English text (i.e. not code, not system admin commands) should be able to accomplish most of the tasks faster using commands than using the mouse. + +_{More to be added}_ + +### Glossary + +* **Mainstream OS**: Windows, Linux, Unix, OS-X +* **Private contact detail**: A contact detail that is not meant to be shared with others + +* * * + +**Appendix: Instructions for manual testing** +--------------------------------------------- + +Given below are instructions to test the app manually. + +![:information_source:](./Developer Guide_files/2139.png ":information_source:") **Note:** These instructions only provide a starting point for testers to work on; testers are expected to do more _exploratory_ testing. + +### Launch and shutdown + +1. Initial launch + + 1. Download the jar file and copy into an empty folder + + 2. Double-click the jar file Expected: Shows the GUI with a set of sample contacts. The window size may not be optimum. + +2. Saving window preferences + + 1. Resize the window to an optimum size. Move the window to a different location. Close the window. + + 2. Re-launch the app by double-clicking the jar file. + Expected: The most recent window size and location is retained. + +3. _{ more test cases …​ }_ + + +### Deleting a person + +1. Deleting a person while all persons are being shown + + 1. Prerequisites: List all persons using the `list` command. Multiple persons in the list. + + 2. Test case: `delete 1` + Expected: First contact is deleted from the list. Details of the deleted contact shown in the status message. Timestamp in the status bar is updated. + + 3. Test case: `delete 0` + Expected: No person is deleted. Error details shown in the status message. Status bar remains the same. + + 4. Other incorrect delete commands to try: `delete`, `delete x`, `...` (where x is larger than the list size) + Expected: Similar to previous. + +2. _{ more test cases …​ }_ + + +### Saving data + +1. Dealing with missing/corrupted data files + + 1. _{explain how to simulate a missing/corrupted file, and the expected behavior}_ +2. _{ more test cases …​ }_ \ No newline at end of file From 5e6423fb804e6ad9ae8d35fb6fbd34f199078b9f Mon Sep 17 00:00:00 2001 From: LicongHuang Date: Mon, 2 Oct 2023 22:02:32 +0800 Subject: [PATCH 007/301] Add command --- .../address/logic/commands/JokeCommand.java | 24 +++++++++++++++++++ .../logic/parser/AddressBookParser.java | 4 ++++ 2 files changed, 28 insertions(+) create mode 100644 src/main/java/seedu/address/logic/commands/JokeCommand.java diff --git a/src/main/java/seedu/address/logic/commands/JokeCommand.java b/src/main/java/seedu/address/logic/commands/JokeCommand.java new file mode 100644 index 00000000000..4be97fa1d5e --- /dev/null +++ b/src/main/java/seedu/address/logic/commands/JokeCommand.java @@ -0,0 +1,24 @@ + +package seedu.address.logic.commands; + +import seedu.address.commons.util.ToStringBuilder; +import seedu.address.logic.Messages; +import seedu.address.model.Model; +import seedu.address.model.person.NameContainsKeywordsPredicate; + +import static java.util.Objects.requireNonNull; + +public class JokeCommand extends Command{ + + public static final String COMMAND_WORD = "joke"; + + public static final String MESSAGE_USAGE = COMMAND_WORD + ": look in to the mirror you sick fork!"; + @Override + public CommandResult execute(Model model) { + return new CommandResult( + String.format(MESSAGE_USAGE, true, false) + ); + } + +} + diff --git a/src/main/java/seedu/address/logic/parser/AddressBookParser.java b/src/main/java/seedu/address/logic/parser/AddressBookParser.java index 3149ee07e0b..cf5e2a423c4 100644 --- a/src/main/java/seedu/address/logic/parser/AddressBookParser.java +++ b/src/main/java/seedu/address/logic/parser/AddressBookParser.java @@ -17,6 +17,7 @@ import seedu.address.logic.commands.FindCommand; import seedu.address.logic.commands.HelpCommand; import seedu.address.logic.commands.ListCommand; +import seedu.address.logic.commands.JokeCommand; import seedu.address.logic.parser.exceptions.ParseException; /** @@ -77,6 +78,9 @@ public Command parseCommand(String userInput) throws ParseException { case HelpCommand.COMMAND_WORD: return new HelpCommand(); + case JokeCommand.COMMAND_WORD: + return new JokeCommand(); + default: logger.finer("This user input caused a ParseException: " + userInput); throw new ParseException(MESSAGE_UNKNOWN_COMMAND); From 15458438a4244751d7f948ae9fb4aa1f35db00d9 Mon Sep 17 00:00:00 2001 From: LicongHuang Date: Mon, 2 Oct 2023 22:57:40 +0800 Subject: [PATCH 008/301] Remove new Command --- .../address/logic/commands/JokeCommand.java | 24 ------------------- 1 file changed, 24 deletions(-) delete mode 100644 src/main/java/seedu/address/logic/commands/JokeCommand.java diff --git a/src/main/java/seedu/address/logic/commands/JokeCommand.java b/src/main/java/seedu/address/logic/commands/JokeCommand.java deleted file mode 100644 index 4be97fa1d5e..00000000000 --- a/src/main/java/seedu/address/logic/commands/JokeCommand.java +++ /dev/null @@ -1,24 +0,0 @@ - -package seedu.address.logic.commands; - -import seedu.address.commons.util.ToStringBuilder; -import seedu.address.logic.Messages; -import seedu.address.model.Model; -import seedu.address.model.person.NameContainsKeywordsPredicate; - -import static java.util.Objects.requireNonNull; - -public class JokeCommand extends Command{ - - public static final String COMMAND_WORD = "joke"; - - public static final String MESSAGE_USAGE = COMMAND_WORD + ": look in to the mirror you sick fork!"; - @Override - public CommandResult execute(Model model) { - return new CommandResult( - String.format(MESSAGE_USAGE, true, false) - ); - } - -} - From 3c95cf58825364e2eaea2e73ba9948f2a2301a54 Mon Sep 17 00:00:00 2001 From: yuxunn <108646986+yuxunn@users.noreply.github.com> Date: Tue, 3 Oct 2023 02:06:03 +0800 Subject: [PATCH 009/301] Delete docs/images/Ui.png --- docs/images/Ui.png | Bin 14607 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 docs/images/Ui.png diff --git a/docs/images/Ui.png b/docs/images/Ui.png deleted file mode 100644 index 5bd77847aa2429edac366ebe3e00650b6dd909d8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 14607 zcmd^mc|4SD+rLWaRx~KdHrYx-*>_ELC86w5#*$qm#x^%9#yZBn&Yd;cLiR0XXNZxV zQO3xgbqr?wuBqpKp8MI}_x=C(htG%8d7amJp2u-~kMFTuh; z^#refNzo}9nrhLI!(|gnuZS3_%0l(9G+sYo7w@BLK_T}wJv5GVX9LfQ zhJA}PsZXP!ap4zFwM};3+?$IfPWE=Zbe2#I$slf4&QM-49^p?UQ}za#kBCQp-#g(? z$&9f;Byuj&(1e4x@{yv1*gC$hA`|{D z%=*y|FPxml8@NM69}JkN{@CzooIga1&iL#NZ9+G+;FM-9x27j=7h5*e$wVnlq}dl5 znwzw#A}?K(;eF>IR^I)+#(t1eO4Y*A;admZAYvtR)4^-~#wJZ9y<5$PIZ6t+<=Pjyvfm?H1?D&bgo531S&19K5=2D_7YcdlO^nd48C~qP|jNV?zuY8 zo*l{OoX2SBi&k-rTQ`~gXyu73$w>^J*!5;gm==z*ojgNn%WMhST5n#$l#v$NW19|= zo5^)GN?y1Y(MjIJ?{$)Cl!-sI+Md+&-HmeTD~C44LQ8V^H4=sD`W{3_e^PcnX79mI zLqp%hZd*fd)359-9b&oD3lCgx*K+e+O}E;S6bu*+PTBkxUACWEu@OeJ3OIUgeL=ym zO6#kjp2wIjEl1Z0>C`q(OsvtDF{DiPc55^Z4cB)D&x`pv&6{=(2@IR%#Ehd+_`ZmB z!@SA*UZ^aa`_bpJpnbIhEBIvwNO=0OnN3=wwoz0*wv*~e&p z*HcHfkSAN3HePWCtt+pSJ{7^2=XfbZ)|rjVyw?;X!8A0FIQhD8UHnA z$e+UiNc>I(JSu?DfM}^k0Q~YNcKjUn*yrow00tYv|D5;}X{Zx#Qo-gI$N+2n0w7?G zN3wif$t{QTqfKkx{<~W^zvYrqORwmb6ErltdbGl##O`P%5BaSSysr3 zPmeS?qQK-2_izZ{ns$w7#}O7#U{|b?ckMNiC9&rLDPqq<`Y&7zAJ1fv2;BP72k5(7 zb0{4R%}OOh1*%8kgTZnr@dieRVM)1 zQ73@Bq z)yC5Edv#GiZ;9^wSCMn$eoM zN{Gw9m$_A0J=yU({fY6Yk5U?=r7KFGTjF{4SG6sejLb}7mt1a{ga0l^gIlqd%GWOM z3o1^=w5bbt&KZvSAn3tyns)*qeD$P^lz-tWc<7UHT%Veu0y)-U5rTUNV3x6}u zRk)*$Y|e_*KyECLa!EId1F(E82g9&Hvme4gxPd# zPdD&?lBy(xxWH*0#nrOZC4#v3nPsJS?A~W|J4?;6($ILk&^kBeOo^{lH_RU7%F`6+GP;RQ( zI~9;8Ur1XU=Ji4d*R-$2O7VG5{8O&F50pCaBsXL;(R5s9z!JH8d}JZ$+F6KDDQ@-z zhK~5Kq^pp3Xt|Mt=JzI6fDrxE?0;5Fs?PpzF!)Xtz)-;C`ogRL>v%Wd|8Gk@!clGJ z_lIg!GboS_`OXGdd%S{xJxw z`R_>kr@>O^^8rTjUm*M!GXJE8|1j{s!}U)T|EDYXg$BRI|AP8dYyJOxa+eT4per9T zTr8+U9_w&p`8NrDkkI@;s=+@i;oqgJj!XsNi@kzk1ax?8HO`_0ghP-5Ismi3q=VvP z&_P*#WY`=^Zr*O(>i5T{&ukOaN#!or+!0^_9ZxMjZNx=)p4W|nz%$+42(aFf7M7jw zZ-2OF{e2NO051Pr*>*q+*;`t>S+|ho|D&~Rr4@%Mvi73X@c6HEvtAbS`@~7kLkVag z0UxD%?~0zMV+y-lzkZg|cy9D+1lWL5;MO22ll1-G@wSf~w}4$nfD7b9hX1&CaqlI+ zcEacP-zUcy4I_KzlWlrAR6SO!{2DL5!s>T8~(_)$`a?^g!Hp_}rD`Jckl@4Ra| zaYNo~7{y-tj^P%H4YJ#I^A7j0X|YBu6t`bpBmHt4luH{P?>xM!N7Tek4$`KX2jNZ* zB~RHV>)sdV)7HD2`10VsHt^(g#gO6Zmj0nD(SbUr1Vv73A}jP8(_^n5#Ux%I19>hy z^pSoDh6>6)ws%tfMFwx;VkaiR;-2&16|PwZda zJ>7PiE(U=*xIcKh?bq`F6Iqmh9qO1P{8nZa^K4k*70cplF007{1c_ry9f?4t>*SN4 z-3Pq@lxC%cL1NeA9Rn>{uZ~0+^NYABoVLi%>XRRJreRxfK`e<9^zi3I(|kbHB7prF z0??z4$_4ISK;ta%ufGja^{&e*2E6dlch_!Rbs=+fHGe*8zLBD$jZ&%w;a7Ug#^(>8 zUVUj96y3s%5?}^+vM4EMX+89BYWr(ld@BOX&Kv0DEnL%yORoI5!>s&t6Hi7@J^N@X zygDdOJz)eG3&ImDnp?Do&jMRvgPe~6i;(8naPTM6%1S|S*h7gnU2*MIb~9XoP~y(? zQWj^uVOIUoU=>5fL@bI(-9HGqP$D@4#2><7x}ceO^Z*)?6{%6+>Jp=4!IS?JRIL7hl$O|o!x5I8dbbY zwHFPfo)%I_vyTHZ(rGg?!}9ZOglMoxCI{zbuWgX62RL6?3orpdC)8=juiJU=Ob0Vm z$gH3Wa%AF7sm82vHdcuL?>9}gOh8iiY2^<#o$ubJTv^y5LQweDXs|=3&)4zfCV0(O zr`@{vui;}c|4B$anA2*~SgPj%{wk z42Z&=cFoAq7{uPV?d1{+<0)!=W8*p~yo5S(s6P4Zy~({pg=>Y`nlHL&J7bg$SNw%~+@wQJ zC&|~ACmE~h$M8cPF6*G^v)Ki-UetS0VXFI&STKm4uznIT%p!=lNw16-=*~-HH2l=s z9e?@2AVr9^Ef(f~XS!?pT&UeH=j}`KAql+n`dTP~WYG}I=k1C5S#kyo!GuwA?VYvq z3(F@9$8FyAwMMfxfkSg{0SKtWr;TMEeCFO}F&G@zO;7lI-IOrfp|p+dJLx!d3P8_l zD`f3_?hG&IrAIbbp9my+?)lFg%xFsvG7crn*FLooia@*(&=Dh9A`iJ@p6uM#y@I$z zXV<}}t@I@)b@v8!HD6QhW`3Xj72tIoR7CzOnEq#k1REtn*ETEdMF<`0?Cf^?38ItGMR{BF(bxK(^vMB*8 zzGE1Ad&bKAvz{`e_hsNDkD7xr)MNu}sj*l4!g^z+ymxbyr2fO1tAe8%u%%0w6YKo0 zeMiDhG)u`6Zag#kz!3qef~PBv1y_O6Oclh8y$d6UG~&-cwaua#gd^OO21+goiyImp zoX*B&uNg_`P0tiZn-H(9CozA~LgpLm6=;i+`Wx0F#DZISLK<%nS@fQ%wmoo4qKmS| zJi|TMzLl8SdkIqkkGoGegkIr&N9joaO^Wdh)#h9y!F9)+`LrLN^vRyPl+>;4JolRy z*-4yrxdneZ!D4>TkVo{{eertzrDO`jjlhCiZjj!{dN16u&jEu24(_*1*;0y>YoFSq z^#V%m17{bj_IoU(=Mz4EwnTI7ER|Ksc`4<+ddHp0abvmDxedwHIL<)zfg zkq&>4xjqKNUGdA&Y$?{nxHmedy-$4u1jw=SCR}^)8R$#V#brjBIhBp<#n!h59lu^m zu|iIn5*Q=~xH=|s+so5ePZoyZ^PYJvo8nw6v|H}GZ-<=;D!?5TAC2YzKr+ z_O2FE=~y1R+agFh6qMU?&wI-09eZvngM`ct!O~c(vw-OCs?jcLDL8#%-8wybugZl+0=!Y6#33-I-F>GQp9{} zqn@ncYD~|ZGc>Wg(rU9Wk)WH#cnk0hr9ilATvBIJ>G%Cr?66FQjPDH%DI5qZ>+2o< zI`yO3fjpgi!yAY7ctNkdG>XzLUl|^hS3BicK$APqOj}+s8 zeLSq1scP6U`2A4H7kd?Oj^V#NCY4W7otWWIrq*>=6X|O9I>?AsgE&YQJ}9dG=?%@^ z8MyO&^`1zF|Mb1rV6=tIKb|;A>}B`@1KnhH$TyCK4efO<$mYiqObGu@ISvEu-AY?0 zdyRM{Ybq_}NG*ADG!jmIE5E5z@>t&FA+w;Wa20IZ*Sd*NxIj9!trf#l(n-*8gNB)+ z%N7H>K>}IQLt!Y2!7_|{ns5!k2$s>7BzZ4K8PYX~;+Ad< zxcru`=p~=9(_%7{CS`>KHlW->SDpupy!$+gv95~;zJP1Tw?=^VDo3@Dt?g#IoR%TC zPFD?!?)-Q%dvIc5@g#zQC76GvY4OKbq3_$G?u z0()i83h9Xqva-EX{XIwR%$ceeln)g*2mw-FkbQz4OtIO?Jm@LJY9( zLm}At+bf^-N5ge4?Wn`Vv}YvFKl{0%w3xK@^NxJl&DQy^exHh17{xs6rF^jed>KcQ zI1h0mVJjtiDS2;dckJK!mFtskeCx_+0`FKQ5-6GVYR%6`K^XzNLB4NVfc%Kg<{$c6 z(-AP4@4IO^cO>U+w9Xx;Dz{2F7>bqHEdyo%poawssG6w#WG__8_aC+T=O9swwr+NZ zJx-uIwD>=%{(pb+ui=c@hlaK0h0Eg2zH_{ReZ1#&P`zg%Gfzq9R0H-?hw4q(o#$Gf zuf$z>ZTj1__O(_9&ke!kpasNwlBcdC=G+)UAs(=|JJQ`%4`T_iVEbluB)ipKI_~HL zJuxWK>Z;k>v?7zOc*;3IHWfu60s5Cir)8CC8P$L&rKWMtKW ztCYn=w@3K3Ddil6-I-$4P0;iD)w&d4`opb`EQwyFf36F~Wz|+V0BkpQDeROvp&%b31=XDIM46|3m(1jG+LYVO zJ4h3w@@s(kJqHqat2SyZtXKo*@WlI%S^JmyE=jMlj3p8z!7>nO4O10eVb6>N_qD)XIW+Gm^&itZw!Q; z`?>5cU`ixb>E|voAyO~#)h#d@XHhQ^AbH7V6rF%{mXM>7@|qP|+Yt>*w&e#{u*TWm z;Wz*xe?}d@NY#G`MaFj+HkTsB14-`i?+ZBc*CzKuhr-nv5*zCdm2{_m6>r>9U5Pw2 z5UrXvLfaIpP(upIDJ@b?{iw>z7Ej>*_w_Q>=)E?CM)oT}?E$}POd z>_WoQj~F+pQXJ41V!%aBjCG@5m)sj`%aPxceD{OhGZfyg7%^HZw`0+@m)3W`na8)V z2<=m%y7fU}#aV%QC|uAV=W7iI%=`CMqzjAJtAmz;70Td4(TKL6FCRCjbqu>|oVH{H zc`TS#O#4zSBq7l7_p#41WjmV1-2QJ@c_YE|D+PSLg(o`ec>#`X77cRVuoDeQh%UIB zSzWwZZJhdAAr^>vL@oo@Vi5rr5#2CvX*XvKylSP+<;dUV$KF*K6L#jIuz0B;Vv1XW z1v1ibGaH+igv~=@G>~!uq8`OQ@x{+Q@s?GW$fv)ME~{1Q945vCJ`u|T**8Nklj+kV z!6yQFygv)PEmsERB0yf6$er?(fW%+Q`z1JKXE2Pp>}6=`i5nsZE>8ye6WZSOfBvJx zuYqU1v~euOUNb-0?M6uPGkcdlg+N-4Vy}Z^0Bit?{}5|1s-?EXPL}E)l3G&38Z4_g z$1Cdx90XTgc_#yr)?1B2l!|QKY*>7=Y$Qd6|i3Bu=z z2Rb4y>RD_5%=u*YGZ=0{fb0hEaKb&c4`Utt*7f2Q+HEhn>?lk0s#h8?Ee_MK?c?69 zSTZ^Guf-w+x=-?Tjf@vE7*6b!ar+BQP}~ES%Tdg9vN3ky@3;)TKIQMO#9mcQ9y4I> zE(0Pxz_l{ahH_qxd25g(kl5T{L&%z+w(rsu2M*oK3(*B%afPqq-$-89EmEz0`UA;j zl(vzew>o}$e3%X85C$Zn@*=>n>?e-vEgL1B*$1z2axyhgk6K%bayketM6+}06%cHx z(Wds(!=S3(&s^TyQIxk3KX>n#!!>sL#F_INK=3CJa$07${HaT|mZ}->Ed6?Bx1{M- zlRR)MFh1?R`fz&hDAyI<6@z%lw$(Pjq9n2SR1WNlwo%9-5Kp6s0K)twh4!xj+n5YURBr;o#MKsLXU3YTDrRLWR+XU%#(RGN3{lJUlLL5F7> zBRq*a8l3mT@RMh&`%$06T(>tFeUHM{PL*?cd*~AX`es>GX|-G+8(?+~+>oVj9_%gw zev28P+?7N6QQrDTbMeDltRuJO15dQD^L0JKq#uG3ulcWGpBDuo4@J5#hdc;yo(i+d zwnw2;p#!-xbwU4$OZn?fW75l{CWyzqcw2wu6;;xr2N`q<^# z{fri|Ub`XPq?t|Ck9voWU15w9IcBoh-NZ+1{jMw;(<69}&!|IJ*e_ljC5{WEgFSu|}*_|u` zuU}Msjo3+|m(-nsXF;i?VwC}voD2kSWM-oJs0Kyc-)-=~`!OBAcCmph$WLguyNsW% zJ$PPYTty#qAdZFk$2=JnlL1;JUR78qFXlUqZ8zhkkM}Z#WaPkCv|7v)@+_Fi9Z5M5mW%b??)&vHwCGa}C0KBOm zl&cFHK7r%HrQpVDI;dVk}o_KeDaiovS=+!*+l^;XA3g-j-G)y~DDo2s7W zg%@Sc*uMCfFUc?VXvQiwQ`=-PZ}1r@ftNp|ZG55dvE_@_6ZDE7=#Gvr@7*SW4ayO! zuk&pN<%bV>(&N(h6q8l8Bf$RU>;kfm@*#baVdX(Bu~6ABj6+1VVU{!o2`}`Ox^b8v zk6J0o^lYK>nNSfLqMrBZ9Ch)oL+L1~&z7n7Z>~J=1?3VFQ=7mB_bGCrAlu?sWQ_}b zf?J0hQj&N0`R*K^l1_dC)EcM460G9^R14$N##OgpKk6%sg|2?<0}3Q#j4WpYW=xl_ z>tilYRPJ*(;arPR&?YcedJ0IW@j~bpLWW0_(bPpOKT-IiG?0|()<|oo6#7^BM=$mf zia?-*<(Igj`U<$trZ0>v)^`qG;R*Uv=990K5U=YpUmpzwswSZs2ey>bE=8pt;HzPN zVt^`py}Kf6h*U)Of{9nABc{FGL;O@|D)gd>)bCGX4#n(Ap(fxDE~qb>B8$y}|3ytV-fR`{o!I^bV*h^2@EoX{TsM$jKvrI9S zZ@#W^#@^hKrLqW#boZ*11-jp)sdVEX)5QHynSnnR7YXShFm&%oiW&p#GM3=-)^_Ms*VHIS8R>$}O82G`A z4$3dZ#xbv;SAtqQ3KBaTNP~0aYypgu2TTuXy2#IS)+$*MQ8h)UZ$QE9lnH9Je}ipR z3FT#snf4;MJH+l+&P=M~`r5uc>G#CnCeCX-Q8vyHr~@ELGa^5(U&O!NlheDTqH)Tk zIG*J;T!XgT74BH)CBFmv1EWiflL3+tXSgtYu1|;dvsE=3!}Sx`?J&JLQbk|dmg_%_ zy^LUx@NM^`d@t*med|Aetxk8t&!*cSI1%~go%cE9eFqF`gDg=ELre$N4I@rMouTOD zsC9mAWq;Otx)wakXz4`(boNNgn2*5eQX|zpzm;3_i7yUBjNutDX`3*i_%qEyI-aNa zwWUa;jju2ln`ZG+J&_wx_j^WzBX#KHC<+qiND7VmJof$UJ*A8h161=#d(JD>Ji zC4yndy1ZH3!R0otlS)3Bjm5Q}`ECc&r2|o5{J3oW;IVs5!u}l%&=WVLJ@CP?7chkf zQJL9mW=pJ~%a@~G`a_mp_JC|%>N{q?d0QtbFtB{-i@#BMw@Ar`!&A$jn4CGL_p zL7k^PT<08YR|ku`XLZ!wscK+_SG3tT0xGj|O8Ud!3!VWb*K)=OKHtksGyGPZ?$C1s zOr-9x3H+2%)2(HWDW>H?!r+;+}Xl=0-_c(1C#B)H=} z<6s1`{c&qPGhHN!UmGsHnREpLun(RDh6;8UA@}~Nx|#En`gLOlFKMW(#|30-bH07X z0GJX1?q!8+=7<9-2q^nM=P>>f$Wb-fmdMv-ws6R$gHr1HRWJCTNX^0Xb%lWNK=sHu-TXw`N6{y)1zwEiw`a%)*OHy3bIL!bxZ2bYOmQrJae(Wsc}h%TWYt)&)!#a9LRl6(3CR;PA{c zcv)^0u1_3so@wRjPkNoPK`UeY^J8f|`yDE=v2Ej9wT9DKKD`hDciuY>p{;_Wwl3iO z0b4tCZ8gbAtBvE@QrBP(6zvw7V^4i$nL6@i%V&LFQwwZ3JH|s_zFIxLStKt>UIst7 ztv_6ootZVxXviGP?J1XX8984W`{iw+8l{}aPz38fpfUeraJzY!I~T}RsKkH=Cq!i| zYzWu2aHcV5i0b}R1rb6a!;%CR&r|@Yz4lCBT#OU~Dnf)GmcbQGXiLNA-y?e*%6PAu z3|%-2WXb&?=P5SI`ap-xvjYpyB_gGDSK58?6QuN0AH&dTj1=@Hz}w49BlmJc%X2t< zd-x$(+0kuwnBQR}6}k%Qz>$IFSzZ9Z(-u1ZfnaJl3nA#3Tck3giZ(`SnnV?@3za7R z43cD~YpmnjW^?-iqm#Y&;1No2{t?8RfIAKFw^p zwy9p={8Wv}0em<~um-Hbv;#&U1Jb6bmLQovlo|4J6|eGAhq&b@)R@Y&vzn zaioNP6OR(;wu=U1?!;i(AT~lSD?-#|-h*tt{}2%JaOpY^0P_iuZJ;ku36V)yemc^UJA!B)ts!m?G< zsFv%1M}pIueNNx{5TO+xN7Zdx+HT1QT3Pq0uLSqQWNRwZ~R9_^Iq_4#cBfG zU%d?m_R*lwFj@b*8JU3i9?%M(fyXdW^S%#3WTv_~JYXSp@a)`(v64oMp2A~-VNsMH zHn5tccx!$1uO|wdnDi{a*PIp#<$~->^frWsG4F=-DJklpridVXg-B_@W*cH+%b>tc z9sH*9#y%~Q8EA1Md6REw0g#h+s|VppNs$AlTcQ@<49+B<^#G7FP+Xgd9(KO#coP`& zRgY#VUeAkKgH!?u=b3FO2^$9d0;ZNaKL?v={2PwGg}F0v_oIAv@qS-v^rV8Y3GV2APWW*=OEy?&IcB2Jq~7IDY3WWuBmQ*Ix}&F;7JF)M`l=u zt^23PC763&Yh-`O7OKozg+#e~>UWrNCXc6^-5Refw5W98?tSCx%+tW5m|KZV_8K8{>z%?Luj5&!g&IJPNbEy|@jJwcs zSnAfmxG|>K1R30(7blnN^BF^cT`6Epb_ohnlXEMQx5Jmu2l4=AHneN}C){ku;`Kpm z^ggxJ*J-_^lWtG|VvacwttFIq>x#Tp*SrVrVkMe}`H zc~dtRD=7E*mjpNz%?0t)>-eqkp*SWB1j)aBA>%g%Zpi*qBygC=*^5Ep!6k^C{la3s z-HB2w+@ZX$8!g_Z!82Oe1%OV^ zgJ&|6j1nVfu3v!cM@rT{Rk(ximI{?r>bMG9kK^Cjnt8VOL&*_pPwNOwF1#*TP>B@S z2|2wTqRy!_a@Or?$hLKOj*;zkKucC67edu+1DoCL`~+n@eYv8TH9iW>f|kFg#pzMAc*=|>VxyT4H*yqO4aXwhek5jsGt z&(WO%Fk4_IV3%xTN)b}3R~`aH+LKocd1$*agdg?rz<&L-llpyditwOwbF%>8HYUpN z%xLmpD6OD1U$M6;eTwx8o{iylS~f@fKXy#pRkHPiGGHXxCCixzL9eZe$~XaCdCb+S z@=s&l7XoY#9$i7iC;6nmm2oH>z0PxL{nQnK?)g}7xyo%}vtzV1(`2 zGOw#k*gF9cmS2L%GZ`!^b ziTdS0ilDU!0VWOCVfmiBd0Na25jOy&?hZW%NrRmR%+Zm%rine*dPe!U7SG-r{%eC7 z#8tm-orKlA!?YJ^FUmcDmZ60%YP_b&3*H9&x(2ek{F*f`y$&2m+r7oJX^CuQK)IWz zI*4g!J(ai+>jYPW1%7|UnI>GM=dP8-#uB!GxJdq4u&b2Xj7lAQjV_J5T$OMFSOM1i z=rgs}Lcbi7qLgvtMk^l1cVHdx)?KFdHU1Ahu>aa$s(21)Ql)twZ3M!f z1Ah5GeH`$6AR9!i@yEw7-k?2(+{7E4RzPxK>=Fj`MUhDa@-($84^~{SN_LZ!}@t(D`z1S;rGn9 z5wE-=LAm!(ZO2_3fzK5_NB~4ZrdH~QzVgoSk$Ij}(I7r~ItxxA)stfs*REhztts=? zBfP!4n{G3PR>QlsF5(4GzG;YEuD14>_BJq=7XY%cfllS~-fSqJ$kNO!l1oO+h@7R) z*ywT#quIVypgrk$3$bZ^J|jW=mQir|@#RZ)==y0nCYnd%eA=uaT`$wL0S3Xmd65#R zt6o|2{?ZdS-oWj_di}fC*G==9o1uxVYr(Cay2jxnH8R~*gWN^>cF>Wc{4jhkckwH+lw|oGJK?-w7E75%khIw&Ow=;Uu)M`6S;2uXzSSR)JV)*;PZo6 zP2|UE9~^hIk7V#Omsx(HxTrI>cr)tf21^!XGaImdv5H+7i*PYX^1NI%@Np9AgD1-pf7hdvbc`-4vtwOsKR+bEha=~JJfV#xKb>M)wQ8(z+ZY6B zJPMho0PR zGK$n&IZ5+qT@yLg7%ffGo0K18L`@##cSqUK_nHBKaK7HXEB*fP9fiVplWN(JVc6Bs zz*~B*UMGPD>kmM0T%Dj>$4Q$Q4J==W+tWvq3ptB<;h*Sx7wK)jK`y433|zoO%in|k@=RrqMBsH`6gb#_qedl7xUiEZePPsxs%ufo#oO6nU|>tMv<8=!TX zDr?udbjK`G)=;hEZVoT`iPRes-Qb1rLX9tvU&_665iUy?lJt4MJ&#|la*KOJw=6kU zb{2bYKmEnBndh11u&XZ5%m# RAXge19gVx{rMDi1{6Bg4z)AoB From 9cea08f8601771e616b7a8b611c01340e6ad2936 Mon Sep 17 00:00:00 2001 From: yuxunn <108646986+yuxunn@users.noreply.github.com> Date: Tue, 3 Oct 2023 02:06:45 +0800 Subject: [PATCH 010/301] Upload Ui.png --- docs/images/Ui.png | Bin 0 -> 68800 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 docs/images/Ui.png diff --git a/docs/images/Ui.png b/docs/images/Ui.png new file mode 100644 index 0000000000000000000000000000000000000000..ef318c3974d45e4cf1d0501c8367d720d74b85bd GIT binary patch literal 68800 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 literal 0 HcmV?d00001 From c544fdd614e17f11e8422435ee004987f06cb899 Mon Sep 17 00:00:00 2001 From: yuxunn <108646986+yuxunn@users.noreply.github.com> Date: Tue, 3 Oct 2023 02:31:24 +0800 Subject: [PATCH 011/301] Update README.md --- README.md | 28 ++++++++++++++++------------ 1 file changed, 16 insertions(+), 12 deletions(-) diff --git a/README.md b/README.md index ac8ff7e0100..8ef9e03af1f 100644 --- a/README.md +++ b/README.md @@ -1,16 +1,20 @@ -[![CI Status](https://github.com/se-edu/addressbook-level3/workflows/Java%20CI/badge.svg)](https://github.com/se-edu/addressbook-level3/actions) +# D.A.V.E (D’financial AdVisor Expert) +[![Java CI](https://github.com/AY2324S1-CS2103T-F08-2/tp/actions/workflows/gradle.yml/badge.svg)](https://github.com/AY2324S1-CS2103T-F08-2/tp/actions/workflows/gradle.yml) +[![codecov](https://codecov.io/gh/AY2324S1-CS2103T-F08-2/tp/graph/badge.svg?token=GCZ85WN999)](https://codecov.io/gh/AY2324S1-CS2103T-F08-2/tp) -[![codecov](https://codecov.io/gh/AY2324S1-CS2103T-G06-2/tp/graph/badge.svg?token=GCZ85WN999)](https://codecov.io/gh/AY2324S1-CS2103T-G06-2/tp) +> Manage your leads and clients information effortlessly through D.A.V.E. to gain an edge in your FA journey! +## About +D.A.V.E. is a leads and clients management tool for student financial advisors specifically in NUS, but can be used for all student financial advisors. + +## UI Mock-up ![Ui](docs/images/Ui.png) -* This is **a sample project for Software Engineering (SE) students**.
    - Example usages: - * as a starting point of a course project (as opposed to writing everything from scratch) - * as a case study -* The project simulates an ongoing software project for a desktop application (called _AddressBook_) used for managing contact details. - * It is **written in OOP fashion**. It provides a **reasonably well-written** code base **bigger** (around 6 KLoC) than what students usually write in beginner-level SE modules, without being overwhelmingly big. - * It comes with a **reasonable level of user and developer documentation**. -* It is named `AddressBook Level 3` (`AB3` for short) because it was initially created as a part of a series of `AddressBook` projects (`Level 1`, `Level 2`, `Level 3` ...). -* For the detailed documentation of this project, see the **[Address Book Product Website](https://se-education.org/addressbook-level3)**. -* This project is a **part of the se-education.org** initiative. If you would like to contribute code to this project, see [se-education.org](https://se-education.org#https://se-education.org/#contributing) for more info. +## Getting Started +1. Ensure you have Java `11` or above installed in your computer. +2. Download the latest `DAVE.jar` from here. +3. Copy the file to the folder you want to use as the *home folder* for D.A.V.E. +4. Double-click `DAVE.jar` to start the app. + +## Acknowledgements +This project is based on the AddressBook-Level3 project created by the [SE-EDU initiative](https://se-education.org). From a49f001d58617259a620bb94ec7677573acd4093 Mon Sep 17 00:00:00 2001 From: LicongHuang Date: Thu, 5 Oct 2023 12:55:16 +0800 Subject: [PATCH 012/301] Add PPP --- docs/team/liconghuang.md | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) create mode 100644 docs/team/liconghuang.md diff --git a/docs/team/liconghuang.md b/docs/team/liconghuang.md new file mode 100644 index 00000000000..79c9437daf6 --- /dev/null +++ b/docs/team/liconghuang.md @@ -0,0 +1,16 @@ + +

    Huang Licong's Project Portfolio Page

    + +

    Project: D.A.V.E.

    + +D.A.V.E. - + +Given below are my contributions to the project. + + - New Feature: to be added soon + - Code contributed: to be added soon + - Project Management: to be added soon + - Enhancement to existing features: to be added soon + - Documentation: to be added soon + - Community: to be added soon + - Tools: to be added soon From c5d9125daa2b735f687dd4ab32901ce5e39e713d Mon Sep 17 00:00:00 2001 From: Gary Date: Thu, 5 Oct 2023 12:55:30 +0800 Subject: [PATCH 013/301] Update User Guide --- docs/UserGuide.md | 244 +++++++++++++++----------------------------- docs/images/Ui1.png | Bin 0 -> 109808 bytes docs/images/Ui2.png | Bin 0 -> 94049 bytes 3 files changed, 81 insertions(+), 163 deletions(-) create mode 100644 docs/images/Ui1.png create mode 100644 docs/images/Ui2.png diff --git a/docs/UserGuide.md b/docs/UserGuide.md index b3abf0e8722..2cfb20573ad 100644 --- a/docs/UserGuide.md +++ b/docs/UserGuide.md @@ -1,203 +1,121 @@ ---- - layout: default.md - title: "User Guide" - pageNav: 3 ---- +# Welcome to D.A.V.E. (**D**’financial **A**d**V**isor **E**xpert) -# AB-3 User Guide +*Manage your leads and clients information effortlessly through D.A.V.E. to gain an edge in your FA journey!* -AddressBook Level 3 (AB3) is a **desktop app for managing contacts, optimized for use via a Line Interface** (CLI) while still having the benefits of a Graphical User Interface (GUI). If you can type fast, AB3 can get your contact management tasks done faster than traditional GUI apps. +D.A.V.E. is a leads and clients management tool for student financial advisors specifically in NUS, but can be used for all student financial advisors. - - +Here’s a quick overview of D.A.V.E.’s features --------------------------------------------------------------------------------------------------------------------- +- Store and edit information of your leads and clients +- Convert successful leads into clients +- Manage clients’ policies +- Delete policies and leads +- Reminders such as upcoming meetings with leads/clients -## Quick start +# Table of Contents -1. Ensure you have Java `11` or above installed in your Computer. +- [Glossary](#Glossary) +- [Tutorial for new users](#D.A.V.E.-Tutorial-for-new-users) +- [Features](#Features) -1. Download the latest `addressbook.jar` from [here](https://github.com/se-edu/addressbook-level3/releases). +# Glossary -1. Copy the file to the folder you want to use as the _home folder_ for your AddressBook. +## Definitions -1. Open a command terminal, `cd` into the folder you put the jar file in, and use the `java -jar addressbook.jar` command to run the application.
    - A GUI similar to the below should appear in a few seconds. Note how the app contains some sample data.
    - ![Ui](images/Ui.png) +Here are some descriptions of the words we use throughout the User Guide: -1. Type the command in the command box and press Enter to execute it. e.g. typing **`help`** and pressing Enter will open the help window.
    - Some example commands you can try: +| Term | Definition | +| --- | --- | +| Command | An input from the user that tells D.A.V.E. to perform an action (e.g. add a client). | +| GUI | Graphical User Interface (GUI) refers to the visual display of D.A.V.E that users can see. | +| CLI | Command Line Interface (CLI) represents a text-based user interface to interact with the application. | - * `list` : Lists all contacts. +# D.A.V.E. Tutorial for new users - * `add n/John Doe p/98765432 e/johnd@example.com a/John street, block 123, #01-01` : Adds a contact named `John Doe` to the Address Book. +1. Ensure you have Java `11` or above installed in your computer. +2. Download the latest `DAVE.jar` from here. +3. Copy the file to the folder you want to use as the *home folder* for D.A.V.E. +4. Double-click `DAVE.jar` to start the app. - * `delete 3` : Deletes the 3rd contact shown in the current list. +# Features - * `clear` : Deletes all contacts. +![Ui1](images/Ui1.png) - * `exit` : Exits the app. +## Lead features -1. Refer to the [Features](#features) below for details of each command. +### Add lead [Coming soon] --------------------------------------------------------------------------------------------------------------------- +- What it does: Add potential leads and their basic information, e.g. name, age, year of study, major, etc. +- Command format: `add --name --age --year --major `. +- Example usage: `add --name Dave --age 22 --year 2 --major Psychology`. +- Acceptable values for each parameter: + - `name`: can contain any character, up to 100 characters long. + - `age`: any integer between `1` and `100` inclusive. + - `year`: any integer between `1` and `5` inclusive. + - `major`: can contain any character, up to 50 characters long. +- Precise expected outputs when the command succeeds: -## Features +`Lead added. ` - +- Precise expected outputs when the command fails: -**Notes about the command format:**
    +`Lead failed to add. Please enter a valid command` -* Words in `UPPER_CASE` are the parameters to be supplied by the user.
    - e.g. in `add n/NAME`, `NAME` is a parameter which can be used as `add n/John Doe`. +### View all leads [Coming soon] -* Items in square brackets are optional.
    - e.g `n/NAME [t/TAG]` can be used as `n/John Doe t/friend` or as `n/John Doe`. +- What it does: View all leads you have stored, including their basic information and index in the list of leads, e.g. id, name, age, gender, occupation, etc. +- Command: `view_all --leads`. +- Precise expected outputs when the command succeeds: -* Items with `…`​ after them can be used multiple times including zero times.
    - e.g. `[t/TAG]…​` can be used as ` ` (i.e. 0 times), `t/friend`, `t/friend t/family` etc. +`Here are all your leads: ` -* Parameters can be in any order.
    - e.g. if the command specifies `n/NAME p/PHONE_NUMBER`, `p/PHONE_NUMBER n/NAME` is also acceptable. +- Precise expected outputs when the command fails: -* Extraneous parameters for commands that do not take in parameters (such as `help`, `list`, `exit` and `clear`) will be ignored.
    - e.g. if the command specifies `help 123`, it will be interpreted as `help`. +`Failed to view all leads. Please enter a valid command` -* If you are using a PDF version of this document, be careful when copying and pasting commands that span multiple lines as space characters surrounding line-breaks may be omitted when copied over to the application. -
    +### Delete lead [Coming soon] -### Viewing help : `help` +- What it does: Deletes a lead from your list of leads. +- Command format: `delete --id `. +- Example usage: `delete --id 1`. +- Acceptable values for `id` parameter: + - Must be an integer from `1` to the last index of the leads list +- Precise expected outputs when the command succeeds: -Shows a message explaning how to access the help page. +`Lead deleted: ` -![help message](images/helpMessage.png) +- Precise expected outputs when the command fails: -Format: `help` +`Lead failed to delete. Please enter a valid lead id` +### Add meeting time for lead [Coming soon] -### Adding a person: `add` +- What it does: Adds a meeting time for a lead +- Command format: `addmeeting --lead --dt ` +- Example usage: `addmeeting --lead 1 --dt 23/9/2023 5:30PM` +- Acceptable values for each parameter: + - `lead`: Any integer from `1` to the last index of the leads list + - `dt`: A valid DateTime String with the format dd/M/yyyy hh:mma. +- Precise expected outputs when the command succeeds: -Adds a person to the address book. +`Meeting time added to : ` -Format: `add n/NAME p/PHONE_NUMBER e/EMAIL a/ADDRESS [t/TAG]…​` +- Precise expected outputs when the command fails: - +`Meeting time failed to add. Please enter a valid lead id or meeting time` -**Tip:** A person can have any number of tags (including 0) - +### Delete meeting time for lead [Coming soon] -Examples: -* `add n/John Doe p/98765432 e/johnd@example.com a/John street, block 123, #01-01` -* `add n/Betsy Crowe t/friend e/betsycrowe@example.com a/Newgate Prison p/1234567 t/criminal` +- What it does: Delete a meeting time for meetings that has been cancelled or postponed. +- Command format: `deletemeeting --lead --id ` +- Example usage: `deletemeeting --lead 1 --id 1` +- Acceptable values for each parameter: + - `lead`: Any integer from `1` to the last index of the leads list + - `id`: Any integer from `1` to the last index of the list +- Precise expected outputs when the command succeeds: -### Listing all persons : `list` +`Meeting time deleted from : ` -Shows a list of all persons in the address book. +- Precise expected outputs when the command fails: -Format: `list` - -### Editing a person : `edit` - -Edits an existing person in the address book. - -Format: `edit INDEX [n/NAME] [p/PHONE] [e/EMAIL] [a/ADDRESS] [t/TAG]…​` - -* Edits the person at the specified `INDEX`. The index refers to the index number shown in the displayed person list. The index **must be a positive integer** 1, 2, 3, …​ -* At least one of the optional fields must be provided. -* Existing values will be updated to the input values. -* When editing tags, the existing tags of the person will be removed i.e adding of tags is not cumulative. -* You can remove all the person’s tags by typing `t/` without - specifying any tags after it. - -Examples: -* `edit 1 p/91234567 e/johndoe@example.com` Edits the phone number and email address of the 1st person to be `91234567` and `johndoe@example.com` respectively. -* `edit 2 n/Betsy Crower t/` Edits the name of the 2nd person to be `Betsy Crower` and clears all existing tags. - -### Locating persons by name: `find` - -Finds persons whose names contain any of the given keywords. - -Format: `find KEYWORD [MORE_KEYWORDS]` - -* The search is case-insensitive. e.g `hans` will match `Hans` -* The order of the keywords does not matter. e.g. `Hans Bo` will match `Bo Hans` -* Only the name is searched. -* Only full words will be matched e.g. `Han` will not match `Hans` -* Persons matching at least one keyword will be returned (i.e. `OR` search). - e.g. `Hans Bo` will return `Hans Gruber`, `Bo Yang` - -Examples: -* `find John` returns `john` and `John Doe` -* `find alex david` returns `Alex Yeoh`, `David Li`
    - ![result for 'find alex david'](images/findAlexDavidResult.png) - -### Deleting a person : `delete` - -Deletes the specified person from the address book. - -Format: `delete INDEX` - -* Deletes the person at the specified `INDEX`. -* The index refers to the index number shown in the displayed person list. -* The index **must be a positive integer** 1, 2, 3, …​ - -Examples: -* `list` followed by `delete 2` deletes the 2nd person in the address book. -* `find Betsy` followed by `delete 1` deletes the 1st person in the results of the `find` command. - -### Clearing all entries : `clear` - -Clears all entries from the address book. - -Format: `clear` - -### Exiting the program : `exit` - -Exits the program. - -Format: `exit` - -### Saving the data - -AddressBook data are saved in the hard disk automatically after any command that changes the data. There is no need to save manually. - -### Editing the data file - -AddressBook data are saved automatically as a JSON file `[JAR file location]/data/addressbook.json`. Advanced users are welcome to update data directly by editing that data file. - - - -**Caution:** -If your changes to the data file makes its format invalid, AddressBook will discard all data and start with an empty data file at the next run. Hence, it is recommended to take a backup of the file before editing it. - - -### Archiving data files `[coming in v2.0]` - -_Details coming soon ..._ - --------------------------------------------------------------------------------------------------------------------- - -## FAQ - -**Q**: How do I transfer my data to another Computer?
    -**A**: Install the app in the other computer and overwrite the empty data file it creates with the file that contains the data of your previous AddressBook home folder. - --------------------------------------------------------------------------------------------------------------------- - -## Known issues - -1. **When using multiple screens**, if you move the application to a secondary screen, and later switch to using only the primary screen, the GUI will open off-screen. The remedy is to delete the `preferences.json` file created by the application before running the application again. - --------------------------------------------------------------------------------------------------------------------- - -## Command summary - -Action | Format, Examples ------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------- -**Add** | `add n/NAME p/PHONE_NUMBER e/EMAIL a/ADDRESS [t/TAG]…​`
    e.g., `add n/James Ho p/22224444 e/jamesho@example.com a/123, Clementi Rd, 1234665 t/friend t/colleague` -**Clear** | `clear` -**Delete** | `delete INDEX`
    e.g., `delete 3` -**Edit** | `edit INDEX [n/NAME] [p/PHONE_NUMBER] [e/EMAIL] [a/ADDRESS] [t/TAG]…​`
    e.g.,`edit 2 n/James Lee e/jameslee@example.com` -**Find** | `find KEYWORD [MORE_KEYWORDS]`
    e.g., `find James Jake` -**List** | `list` -**Help** | `help` +`Meeting time failed to be deleted. Please enter a valid lead id or meeting time` \ No newline at end of file diff --git a/docs/images/Ui1.png b/docs/images/Ui1.png new file mode 100644 index 0000000000000000000000000000000000000000..110ecc48e191651f538899cbd8b7be491082e96e GIT binary patch literal 109808 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 z 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 literal 0 HcmV?d00001 diff --git a/docs/images/Ui2.png b/docs/images/Ui2.png new file mode 100644 index 0000000000000000000000000000000000000000..ede2d30fb8dbf091f5bdc1f37b78875963e7f7dc GIT binary patch literal 94049 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

    X(Ye;hE&5C<2U3ouO;3CRm&?|03rOyAlH}V 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 Date: Thu, 5 Oct 2023 13:29:45 +0800 Subject: [PATCH 014/301] Update UG --- docs/UserGuide.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/UserGuide.md b/docs/UserGuide.md index 2cfb20573ad..13cf5f0ac3d 100644 --- a/docs/UserGuide.md +++ b/docs/UserGuide.md @@ -118,4 +118,4 @@ Here are some descriptions of the words we use throughout the User Guide: - Precise expected outputs when the command fails: -`Meeting time failed to be deleted. Please enter a valid lead id or meeting time` \ No newline at end of file +`Meeting time failed to be deleted. Please enter a valid lead id or meeting time` From e3e5c97a6841964f2928f52cde3b33728a861b1e Mon Sep 17 00:00:00 2001 From: LicongHuang Date: Thu, 5 Oct 2023 18:46:57 +0800 Subject: [PATCH 015/301] Update DeveloperGuide.md --- docs/DeveloperGuide.md | 62 +++++++++++++++++++++++++++++++++++++++--- 1 file changed, 58 insertions(+), 4 deletions(-) diff --git a/docs/DeveloperGuide.md b/docs/DeveloperGuide.md index a5a11185ae1..2ea5ae7dc6d 100644 --- a/docs/DeveloperGuide.md +++ b/docs/DeveloperGuide.md @@ -25,6 +25,14 @@ Refer to the guide [_Setting up and getting started_](SettingUp.md). ## **Design** +``` mermaid +sequenceDiagram + Alice->>+John: Hello John, how are you? + Alice->>+John: John, can you hear me? + John-->>-Alice: Hi Alice, I can hear you! + John-->>-Alice: I feel great! +``` + ### Architecture @@ -275,11 +283,11 @@ _{Explain here how the data archiving feature will be implemented}_ * prefers typing to mouse interactions * is reasonably comfortable using CLI apps -**Value proposition**: manage contacts faster than a typical mouse/GUI driven app +**Value proposition**: to keep track of their leads as well as clients' details such as their insurance policies, expiry, coverage, personal and contact details, to better assist their leads and clients. ### User stories - + +## Leads + +| Priority | As a | I want to …​ | So that I can…​ | +|----------|--------------------------------|----------------------------------|------------------------------------------| +| `* * *` | student financial advisor | view all my potential leads | recall all my leads | +| `* * *` | student financial advisor | add a potential lead | follow up with them | +| `* * *` | student financial advisor | edit the details of my leads | correct mistakes I have made when adding a lead | +| `* * *` | student financial advisor | mark leads as done | keep track of who I have visited | +| `* * *` | student financial advisor | unmark leads that are marked done | amend a mistake of marking leads that were mistakenly marked | +| `* * *` | student financial advisor | add a meeting time with my lead | keep track of when I need to visit my leads | +| `* * *` | student financial advisor | sort meeting times by most recent | focus on potential leads that are more urgent | +| `* * *` | student financial advisor | convert leads into clients | keep track of who are my leads and clients | + +## Clients + +| Priority | As a student financial advisor, | I want to …​ | So that I can…​ | +|----------|--------------------------------|----------------------------------|------------------------------------------| +| `* * *` | student financial advisor | add clients who have purchased a plan from me | keep track of my clients | +| `* * *` | student financial advisor | update client information | accurately reflect the information of my clients if I had mistakenly added the wrong information prior | +| `* * *` | student financial advisor | remove clients who did not continue their services with me | not clutter up my address book | +| `* * *` | student financial advisor | find available meeting timings | more easily schedule meetings | +| `* * *` | student financial advisor | check whose policies are expiring soon | plan a meeting with them | +| `* * *` | student financial advisor | edit a policy of my client | accurately reflect their policies on the app if my client has changed his or her policy | +| `* * *` | student financial advisor | remove a policy of my client | accurately reflect their policies on the app if my client has unsubscribed from his or her policy | +| `* * *` | student financial advisor | create and manage client profiles | keep track of their financial information, goals, and progress | +| `* * *` | student financial advisor | schedule and manage appointments with my clients | ensure regular communication and updates | +| `* * *` | student financial advisor | set and track financial goals for my clients | help them work toward their objectives | +| `* * *` | student financial advisor | create and manage investment portfolios for my clients | make adjustments as needed | +| `* * *` | student financial advisor | generate and share reports with my clients | keep them informed about their financial progress | +| `* * *` | student financial advisor | securely message and communicate with my clients within the app | address their questions and concerns | +| `* * *` | student financial advisor | have access to analytics and tools that help me analyze my clients' financial data | provide them with the best advice | +| `* * *` | student financial advisor | generate tax reports and provide tax planning advice | help my clients minimize their tax liabilities | +| `* * *` | student financial advisor | keep track of my clients’ birthdays | make the necessary arrangements like sending well wishes to them | +| `* * *` | student financial advisor | send celebration message to all of my clients | not have to utilize another platform to do so | +| `* * *` | student financial advisor | search up a list of clients who purchased a specific policy | monitor the policies based on their specific type | +| `* * *` | student financial advisor | inform my clients about new updates | help them stay updated | +| `* * *` | student financial advisor | sort my clients based on the commissions they have made me | know which clients to prioritize | + +## General Information + +| Priority | As a student financial advisor, | I want to …​ | So that I can…​ | +|----------|--------------------------------|----------------------------------|------------------------------------------| +| `* * *` | student financial advisor | upload and store important documents securely | easily access them when needed | +| `* * *` | student financial advisor | modify my authentication details regularly | ensure my account is safe and secure | +| `* * *` | student financial advisor | write notes on the platform | keep track of any additional notes related to my work | +| `* * *` | student financial advisor | keep track of my commissions | to keep track of my financial performance | +| `* * *` | student financial advisor | keep track of upcoming events | be on track with the different upcoming appointments | ### Use cases From 45f35b6a5e0775150c2d6e49fabb26ed652b307a Mon Sep 17 00:00:00 2001 From: LicongHuang Date: Thu, 5 Oct 2023 18:47:34 +0800 Subject: [PATCH 016/301] Remove html-to-markdown.md --- html-to-markdown.md | 441 -------------------------------------------- 1 file changed, 441 deletions(-) delete mode 100644 html-to-markdown.md diff --git a/html-to-markdown.md b/html-to-markdown.md deleted file mode 100644 index cb48e0cbb22..00000000000 --- a/html-to-markdown.md +++ /dev/null @@ -1,441 +0,0 @@ - Developer Guide :root \[href^="//x4pollyxxpush.com/"\], :root zeus-ad, :root topadblock, :root span\[id^="ezoic-pub-ad-placeholder-"\], :root guj-ad, :root gpt-ad, :root div\[id^="zergnet-widget"\], :root div\[id^="vuukle-ad-"\], :root div\[id^="sticky\_ad\_"\], :root div\[id^="rc-widget-"\], :root div\[id^="optidigital-adslot"\], :root div\[id^="gpt\_ad\_"\], :root div\[id^="ezoic-pub-ad-"\], :root div\[id^="div-gpt-"\], :root div\[id^="dfp-ad-"\], :root div\[id^="advads\_ad\_"\], :root div\[id^="adspot-"\], :root div\[id^="ads300\_250-widget-"\], :root div\[id^="ads300\_100-widget-"\], :root div\[id^="ads250\_250-widget-"\], :root div\[id^="adrotate\_widgets-"\], :root div\[id^="\_vdo\_ads\_player\_ai\_"\], :root div\[id\*="ScriptRoot"\], :root div\[id\*="MarketGid"\], :root div\[data-native\_ad\], :root div\[data-mini-ad-unit\], :root div\[data-insertion\], :root div\[data-id-advertdfpconf\], :root div\[data-google-query-id\], :root hl-adsense, :root div\[data-contentexchange-widget\], :root div\[data-content="Advertisement"\], :root div\[data-alias="300x250 Ad 2"\], :root div\[data-alias="300x250 Ad 1"\], :root div\[data-adzone\], :root div\[data-adunit-path\], :root div\[data-ad-wrapper\], :root div\[data-ad-placeholder\], :root div\[class^="native-ad-"\], :root div\[data-dfp-id\], :root div\[class^="kiwi-ad-wrapper"\], :root div\[class^="Adstyled\_\_AdWrapper-"\], :root div\[aria-label="Ads"\], :root display-ads, :root display-ad-component, :root bottomadblock, :root atf-ad-slot, :root aside\[id^="adrotate\_widgets-"\], :root article.ad, :root ark-top-ad, :root app-advertisement, :root app-ad, :root amp-fx-flying-carpet, :root amp-embed\[type="taboola"\], :root amp-connatix-player, :root amp-ad-custom, :root amp-ad, :root a\[style="width:100%;height:100%;z-index:10000000000000000;position:absolute;top:0;left:0;"\], :root a\[onmousedown^="this.href='https://paid.outbrain.com/network/redir?"\]\[target="\_blank"\] + .ob\_source, :root a\[onmousedown^="this.href='http://paid.outbrain.com/network/redir?"\]\[target="\_blank"\] + .ob\_source, :root a\[href^="https://yogacomplyfuel.com/"\], :root a\[href^="https://www.sugarinstant.com/?partner\_id="\], :root a\[href^="https://www.purevpn.com/"\]\[href\*="&utm\_source=aff-"\], :root a\[href^="https://www.privateinternetaccess.com/"\] > img, :root a\[href^="https://www.onlineusershielder.com/"\], :root a\[href^="https://www.nutaku.net/signup/landing/"\], :root a\[href^="https://www.nudeidols.com/cams/"\], :root a\[href^="https://www.mypornstarcams.com/landing/click/"\], :root a\[href^="https://www.kingsoffetish.com/tour?partner\_id="\], :root a\[href^="https://www.infowarsstore.com/"\] > img, :root a\[href^="https://www.highcpmrevenuenetwork.com/"\], :root a\[href^="https://www.googleadservices.com/pagead/aclk?"\], :root a\[href^="https://www.goldenfrog.com/vyprvpn?offer\_id="\]\[href\*="&aff\_id="\], :root a\[href^="https://www.get-express-vpn.com/offer/"\], :root a\[href^="https://www.financeads.net/tc.php?"\], :root a\[href^="https://www.brazzersnetwork.com/landing/"\], :root div\[class^="Display\_displayAd"\], :root a\[href^="https://www.sheetmusicplus.com/?aff\_id="\], :root a\[href^="https://www.bang.com/?aff="\], :root a\[href^="https://www.adxsrve.com/"\], :root a\[href^="https://www.5mno3.com/"\], :root a\[href^="https://wirewar.website/"\], :root a\[href^="https://visit-website.com/"\], :root a\[href^="https://twinrdsyn.com/"\], :root a\[href^="https://twinrdsrv.com/"\], :root a\[href^="https://tsartech.g2afse.com/"\], :root \[href^="https://www.mypatriotsupply.com/"\] > img, :root a\[href^="https://trk.softonixs.xyz/"\], :root a\[href^="https://trk.nfl-online-streams.club/"\], :root a\[href^="https://tracking.avapartner.com/"\], :root a\[href^="https://track.wg-aff.com"\], :root a\[href^="https://track.afcpatrk.com/"\], :root a\[href^="https://torguard.net/aff.php"\] > img, :root div\[data-adname\], :root a\[href^="https://thechleads.pro/"\], :root .OUTBRAIN\[data-widget-id^="FMS\_REELD\_"\], :root \[data-role="tile-ads-module"\], :root a\[href^="https://adsrv4k.com/"\], :root a\[href^="https://go.xlviirdr.com"\], :root a\[href^="https://thaudray.com/"\], :root a\[href^="https://taghaugh.com/"\], :root a\[href^="https://click.candyoffers.com/"\], :root \[href^="https://zstacklife.com/"\] img, :root a\[href^="https://t.aslnk.link/"\], :root a\[href^="https://t.adating.link/"\], :root a\[href^="https://go.trackitalltheway.com/"\], :root \[href^="https://track.fiverr.com/visit/"\] > img, :root a\[href^="https://syndication.exoclick.com/"\], :root a\[href^="https://syndication.dynsrvtbg.com/"\], :root a\[href^="https://streamate.com/landing/click/"\], :root a\[href^="https://ad.doubleclick.net/"\], :root a\[href^="https://static.fleshlight.com/images/banners/"\], :root a\[href^="https://sTaRtGAMing.net/tienda/"\], :root citrus-ad-wrapper, :root a\[onmousedown^="this.href='https://paid.outbrain.com/network/redir?"\]\[target="\_blank"\], :root a\[href^="https://sTaRTgamInG.net/tienda/"\], :root \[data-adblockkey\], :root a\[href^="https://sTARtgamIng.net/tienda/"\], :root a\[href^="https://aweptjmp.com/"\], :root a\[href^="https://s.zlinkc.com/"\], :root a\[href^="https://www.mrskin.com/account/"\], :root a\[href^="https://s.optzsrv.com/"\], :root a\[data-obtrack^="http://paid.outbrain.com/network/redir?"\], :root a\[href^="https://reinstandpointdumbest.com/"\], :root a\[href^="https://go.strpjmp.com/"\], :root a\[href^="https://refpa4903566.top/"\], :root a\[href^="https://pubads.g.doubleclick.net/"\], :root a\[href^="https://prf.hn/click/"\]\[href\*="/camref:"\] > img, :root a\[href^="https://serve.awmdelivery.com/"\], :root a\[href^="https://prf.hn/click/"\]\[href\*="/adref:"\] > img, :root a\[href^="https://pb-track.com/"\], :root a\[href^="https://paid.outbrain.com/network/redir?"\], :root ps-connatix-module, :root div\[id^="ad\_position\_"\], :root a\[href^="https://ovb.im/"\], :root div\[id^="ad-div-"\], :root a\[href^="https://newbinotracs.com/"\], :root a\[href^="https://natour.naughtyamerica.com/track/"\], :root \[href^="https://stvkr.com/"\], :root a\[href^="https://mediaserver.entainpartners.com/renderBanner.do?"\], :root a\[href^="https://loboclick.com"\], :root .nya-slot\[style\], :root a\[href^="https://a.bestcontentweb.top/"\], :root a\[href^="https://lobimax.com/"\], :root a\[href^="https://lead1.pl/"\], :root a\[href^="https://refpa.top/"\], :root a\[href^="https://landing.brazzersnetwork.com/"\], :root a\[href^="https://safesurfingtoday.com/"\]\[href\*="?skip="\], :root a\[href^="https://ads.leovegas.com/redirect.aspx?"\], :root a\[href^="https://land.brazzersnetwork.com/landing/"\], :root a\[href^="https://track.adform.net/"\], :root \[data-css-class="dfp-inarticle"\], :root .card-captioned.crd > .crd--cnt > .s2nPlayer, :root a\[href^="https://go.tmrjmp.com"\], :root a\[href^="https://startgamIng.Net/tienda/"\], :root a\[href^="https://l.hyenadata.com/"\], :root a\[href^="https://juicyads.in/"\], :root a\[href^="https://mediaserver.gvcaffiliates.com/renderBanner.do?"\], :root a\[href^="https://join.dreamsexworld.com/"\], :root a\[href^="https://itubego.com/video-downloader/?affid="\], :root a\[href^="https://iqbroker.com/"\]\[href\*="?aff="\], :root a\[href^="https://incisivetrk.cvtr.io/click?"\], :root \[href^="https://www.herbanomic.com/"\] > img, :root a\[href^="https://maymooth-stopic.com/"\], :root div\[data-ad-targeting\], :root a\[href^="https://hotplaystime.life/"\], :root a\[href^="https://hot-growngames.life/"\], :root \[data-revive-zoneid\], :root a\[href^="https://googleads.g.doubleclick.net/pcs/click"\], :root a\[href^="https://clk.wrenchsound.store/"\], :root a\[href^="https://go.zybrdr.com"\], :root \[href^="http://join.michelle-austin.com/"\], :root \[class^="tile-picker\_\_CitrusBannerContainer-sc-"\], :root a\[href^="https://go.xxxiijmp.com"\], :root a\[href^="https://go.xtbaffiliates.com/"\], :root a\[href^="https://ismlks.com/"\], :root a\[href^="//a.bestcontentfare.top/"\], :root \[href^="https://www.mypillow.com/"\] > img, :root a\[href^="https://azpresearch.club/"\], :root a\[href^="https://go.xlirdr.com"\], :root a\[href^="https://go.skinstrip.net"\]\[href\*="?campaignId="\], :root a\[href^="https://go.markets.com/visit/?bta="\], :root a\[href^="https://billing.purevpn.com/aff.php"\] > img, :root a\[href^="https://go.hpyrdr.com/"\], :root a\[href^="https://go.goaserv.com/"\], :root a\[href^="https://go.dmzjmp.com"\], :root a\[href^="https://go.admjmp.com/"\], :root \[href^="https://kingered-banctours.com/"\], :root a\[href^="https://get.surfshark.net/aff\_c?"\]\[href\*="&aff\_id="\] > img, :root a-ad, :root a\[href^="https://affiliate.rusvpn.com/click.php?"\], :root a\[href^="https://geniusdexchange.com/"\], :root a\[href^="https://frameworkdeserve.com/"\], :root a\[href^="https://flirtandsweets.life/"\], :root a\[href^="https://www.mrskin.com/tour"\], :root a\[href^="https://financeads.net/tc.php?"\], :root div\[data-native-ad\], :root a\[href^="https://engine.trackingdesks.com/"\], :root a\[data-redirect^="https://paid.outbrain.com/network/redir?"\], :root \[href^="https://www.reimageplus.com/"\], :root a\[href^="https://engine.phn.doublepimp.com/"\], :root a\[href^="https://engine.blueistheneworanges.com/"\], :root a\[href^="https://dl-protect.net/"\], :root \[href="//jjgirls.com/sex/ChaturbateCams"\], :root a\[href^="https://datingoffers30.info/"\], :root a\[href^="https://clixtrac.com/"\], :root a\[href^="https://click.linksynergy.com/fs-bin/"\] > img, :root ad-shield-ads, :root a\[href^="https://sTartGAMinG.net/tienda/"\], :root AD-TRIPLE-BOX, :root a\[href^="https://click.hoolig.app/"\], :root a\[href^="https://track.totalav.com/"\], :root img\[src^="https://images.purevpnaffiliates.com"\], :root a\[href^="https://porntubemate.com/"\], :root a\[href^="http://www.gfrevenge.com/landing/"\], :root a\[href^="https://clickadilla.com/"\], :root a\[href^="https://click.dtiserv2.com/"\], :root a\[href^="https://go.xlvirdr.com"\], :root a\[href^="http://www.iyalc.com/"\], :root a\[href^="https://claring-loccelkin.com/"\], :root \[class^="s2nPlayer"\], :root a\[href^="https://chaturbate.jjgirls.com/?track="\], :root a\[href^="https://chaturbate.com/in/?track="\], :root a\[href^="https://chaturbate.com/in/?tour="\], :root a\[href^="https://cams.imagetwist.com/in/?track="\], :root a\[href^="https://go.gldrdr.com/"\], :root a\[href^="https://buqkrzbrucz.com/"\], :root a\[href^="https://affcpatrk.com/"\], :root a\[href^="https://bongacams2.com/track?"\], :root a\[href^="https://www.sheetmusicplus.com/"\]\[href\*="?aff\_id="\], :root a\[href^="https://bngpt.com/"\], :root a\[href^="https://bluedelivery.pro/"\], :root a\[href^="https://black77854.com/"\], :root a\[href^="https://bc.game/"\], :root a\[href^="https://ndt5.net/"\], :root a\[href^="https://batheunits.com/"\], :root a\[target="\_blank"\]\[onmousedown="this.href^='http://paid.outbrain.com/network/redir?"\], :root a\[href^="https://banners.livepartners.com/"\], :root a\[href^="//whulsaux.com/"\], :root a\[href^="https://m.do.co/c/"\] > img, :root \[href="https://masstortfinancing.com"\] img, :root a\[href^="https://bongacams10.com/track?"\], :root a\[href^="https://albionsoftwares.com/"\], :root a\[href^="https://t.hrtye.com/"\], :root a\[href^="https://go.etoro.com/"\] > img, :root a\[href^="https://convertmb.com/"\], :root a\[href^="https://join.sexworld3d.com/track/"\], :root a\[href^="https://intenseaffiliates.com/redirect/"\], :root a\[href^="https://ads.ad4game.com/"\], :root \[id^="google\_ads\_iframe"\], :root a\[href^="https://syndication.optimizesrv.com/"\], :root a\[href^="https://affpa.top/"\], :root a\[href^="https://adnetwrk.com/"\], :root a\[href^="https://adjoincomprise.com/"\], :root \[href^="http://misslinkvocation.com/"\], :root a\[href^="https://adclick.g.doubleclick.net/"\], :root a\[href^="https://www.bet365.com/"\]\[href\*="affiliate="\], :root \[href^="https://r.kraken.com/"\], :root a\[href^="https://mmwebhandler.aff-online.com/"\], :root a\[href^="https://go.nordvpn.net/aff"\] > img, :root \[href^="http://clicks.totemcash.com/"\], :root a\[href^="https://misspkl.com/"\], :root a\[href^="https://ad.zanox.com/ppc/"\] > img, :root a\[href^="https://ad.kubiccomps.icu/"\], :root a\[href^="https://a2.adform.net/"\], :root a\[href^="https://iactrivago.ampxdirect.com/"\], :root a\[href^="https://a.medfoodhome.com/"\], :root a\[href^="https://adultfriendfinder.com/go/"\], :root a\[href^="https://a.bestcontentoperation.top/"\], :root a\[href^="http://static.fleshlight.com/images/banners/"\], :root a\[href^="https://a.adtng.com/"\], :root \[data-m-ad-id\], :root a\[href^="https://sTartgAminG.net/tienda/"\], :root a\[href^="https://a-ads.com/"\], :root a\[href^="https://join.virtualtaboo.com/track/"\], :root a\[href^="https://StarTGAminG.net/tienda/"\], :root a\[href^="https://STaRTgamINg.net/tienda/"\], :root a\[href^="https://cpmspace.com/"\], :root \[href^="https://freecourseweb.com/"\] > .sitefriend, :root a\[href^="https://prf.hn/click/"\]\[href\*="/creativeref:"\] > img, :root a\[href^="http://www.adultempire.com/unlimited/promo?"\]\[href\*="&partner\_id="\], :root a\[href^="https://1betandgonow.com/"\], :root \[href="https://ourgoldguy.com/contact/"\] img, :root a\[href^="https://brightadnetwork.com/"\], :root \[href^="https://www.avantlink.com/click.php"\] img, :root a\[href^="http://www.onwebcam.com/random?t\_link="\], :root a\[href^="http://www.mrskin.com/tour"\], :root a\[href^="https://agacelebir.com/"\], :root a\[href^="https://spygasm.com/track?"\], :root a\[href^="http://d2.zedo.com/"\], :root a\[href^="http://www.friendlyduck.com/AF\_"\], :root a\[href^="http://trk.globwo.online/"\], :root a\[href^="http://traffic.tc-clicks.com/"\], :root a\[href^="http://tour.mrskin.com/"\], :root a\[href^="https://funkydaters.com/"\], :root \[id^="ad\_sky"\], :root a\[href^="http://https://www.get-express-vpn.com/offer/"\], :root div\[id^="google\_dfp\_"\], :root a\[href^="http://googleads.g.doubleclick.net/pcs/click"\], :root \[href^="http://go.cm-trk2.com/"\], :root a\[href^="http://click.payserve.com/"\], :root a\[href^="https://porngames.adult/?SID="\], :root a\[href^="https://landing1.brazzersnetwork.com"\], :root #slashboxes > .deals-rail, :root \[href^="http://globsads.com/"\], :root \[href^="https://www.brighteonstore.com/products/"\] img, :root a\[href^="http://bc.vc/?r="\], :root a\[href^="https://mityneedn.com/"\], :root \[href^="http://homemoviestube.com/"\], :root a\[href^="http://ad.doubleclick.net/"\], :root a\[href^="//zunsoach.com/"\], :root a\[href^="//pubads.g.doubleclick.net/"\], :root a\[href^="https://femglobal.app/"\], :root a\[href^="//go.eabids.com/"\], :root a\[data-url^="http://paid.outbrain.com/network/redir?"\] + .author, :root \[href^="https://join.playboyplus.com/track/"\], :root a\[href^="//ardslediana.com/"\], :root \[data-d-ad-id\], :root a\[href\*=".engine.adglare.net/"\], :root \[href^="https://awbbjmp.com/"\], :root a\[href^="https://tracker.loropartners.com/"\], :root #kt\_player > a\[target="\_blank"\], :root a\[href\*=".cfm?fp="\]\[href\*="&maxads="\], :root \[data-ad-width\], :root a\[href^="http://bodelen.com/"\], :root a\[data-oburl^="https://paid.outbrain.com/network/redir?"\], :root \[href^="https://cpa.10kfreesilver.com/"\], :root a\[href^="https://a.bestcontentfood.top/"\], :root a\[href^="http://wct.link/"\], :root \[href^="https://goldforyourfuture.com/clk.trk"\] img, :root \[onclick^="location.href='http://www.reimageplus.com"\], :root \[id^="section-ad-banner"\], :root a\[href^="https://go.julrdr.com/"\], :root .trc\_rbox\_div .syndicatedItemUB, :root \[href^="https://zone.gotrackier.com/"\], :root \[href^="https://detachedbates.com/"\], :root \[href^="https://www.targetingpartner.com/"\], :root a\[href^="https://fourwhenstatistics.com/"\], :root \[href^="https://www.restoro.com/"\], :root a\[href^="https://yourperfectdating.life/"\], :root a\[href^="https://join.virtuallust3d.com/"\], :root .section-subheader > .section-hotel-prices-header, :root \[href^="https://go.affiliatexe.com/"\], :root \[href^="https://www.hostg.xyz/"\] > img, :root \[href^="https://ilovemyfreedoms.com/landing-"\], :root a\[href^="https://staRTgaming.net/tienda/"\], :root a\[href^="https://STaRtgAmInG.net/tienda/"\], :root a\[href^="http://adultfriendfinder.com/go/"\], :root a\[href^="https://fastestvpn.com/lifetime-special-deal?a\_aid="\], :root a\[href^="https://tour.mrskin.com/"\], :root div\[id^="ad-position-"\], :root a\[href^="http://affiliate.glbtracker.com/"\], :root a\[href^="https://leg.xyz/?track="\], :root div\[id^="crt-"\]\[style\], :root a\[href^="http://adultgames.xxx/"\], :root \[href^="https://shiftnetwork.infusionsoft.com/go/"\] > img, :root a\[onmousedown^="this.href='http://paid.outbrain.com/network/redir?"\]\[target="\_blank"\], :root \[href^="https://secure.bmtmicro.com/servlets/"\], :root a\[href^="https://losingoldfry.com/"\], :root .scroll-fixable.rail-right > .deals-rail, :root \[href^="https://routewebtk.com/"\], :root a\[href^="https://oackoubs.com/"\], :root a\[href^="https://ak.psaltauw.net/"\], :root a\[href^="https://go.cmtaffiliates.com/"\], :root \[data-name="adaptiveConstructorAd"\], :root \[href^="https://optimizedelite.com/"\] > img, :root a\[href^="https://awptjmp.com/"\], :root a\[href^="https://go.goasrv.com/"\], :root \[href^="http://mypillow.com/"\] > img, :root a\[href^="http://bongacams.com/track?"\], :root a\[href^="https://fleshlight.sjv.io/"\], :root \[data-ad-manager-id\], :root a\[href^="https://promo-bc.com/"\], :root a\[href^="https://clicks.pipaffiliates.com/"\], :root \[href^="https://noqreport.com/"\] > img, :root a\[href^="https://www.highperformancecpmgate.com/"\], :root a\[href^="https://t.grtyi.com/"\], :root \[href^="https://mylead.global/stl/"\] > img, :root \[href^="https://mypatriotsupply.com/"\] > img, :root \[data-freestar-ad\], :root a\[href^="https://fc.lc/ref/"\], :root .vid-present > .van\_vid\_carousel\_\_padding, :root span\[data-ez-ph-id\], :root \[href^="https://track.aftrk1.com/"\], :root div\[id^="adngin-"\], :root \[data-rc-widget\], :root a\[href^="https://go.xxxijmp.com"\], :root \[href^="https://istlnkcl.com/"\], :root \[href^="https://go.xlrdr.com"\], :root \[href^="https://go.4rabettraff.com/"\], :root a\[href^="https://tm-offers.gamingadult.com/"\], :root \[href^="https://charmingdatings.life/"\], :root \[href^="https://glersakr.com/"\], :root ins.adsbygoogle, :root a\[href^="https://1startfiledownload1.com/"\], :root .trc\_rbox\_border\_elm .syndicatedItem, :root div\[id^="pa\_sticky\_ad\_box\_middle\_"\], :root a\[href^="http://www.onclickmega.com/jump/next.php?"\], :root a\[href^="https://italarizege.xyz/"\], :root a\[href^="https://wittered-mainging.com/"\], :root \[href^="https://engine.gettopple.com/"\], :root \[data-id^="div-gpt-ad"\], :root a\[href^="https://k2s.cc/pr/"\], :root \[href^="https://affect3dnetwork.com/track/"\], :root a\[href^="https://camfapr.com/landing/click/"\], :root \[href="//sexcams.plus/"\], :root a\[href^="https://go.currency.com/"\], :root .resultsList > div > div > div.G-5c\[role="tab"\]\[tabindex="0"\], :root \[href^="http://www.mypillow.com/"\] > img, :root div\[id^="div-ads-"\], :root \[href^="https://rapidgator.net/article/premium/ref/"\], :root \[href^="https://join3.bannedsextapes.com"\], :root div\[data-spotim-slot\], :root \[href^="https://antiagingbed.com/discount/"\] > img, :root a\[href^="https://go.247traffic.com/"\], :root \[href^="https://join.girlsoutwest.com/"\], :root \[href^="http://trafficare.net/"\], :root a\[href^="https://tc.tradetracker.net/"\] > img, :root a\[href^="https://adserver.adreactor.com/"\], :root \[href^="http://join.shemalesfromhell.com/"\], :root \[id^="ad\_slider"\], :root #searchResultsList > div > div\[onclick$="'inline.ad'});"\], :root \[data-adbridg-ad-class\], :root a\[href^="http://www.adultdvdempire.com/?partner\_id="\]\[href\*="&utm\_"\], :root \[href^="http://join.shemale.xxx/"\], :root a\[href^="https://ads.betfair.com/redirect.aspx?"\], :root \[href^="http://www.fleshlightgirls.com/"\], :root \[href^="http://join.trannies-fuck.com/"\], :root .trc\_rbox .syndicatedItem, :root a\[href^="http://cam4com.go2cloud.org/aff\_c?"\], :root a\[href^="https://thefacux.com/"\], :root a\[href^="https://ads.planetwin365affiliate.com/redirect.aspx?"\], :root \[href^="http://join.rodneymoore.com/"\], :root \[href^="https://shrugartisticelder.com"\], :root a\[href^="https://staRTgamIng.net/tienda/"\], :root div\[id^="lazyad-"\], :root a\[href^="http://com-1.pro/"\], :root \[name^="google\_ads\_iframe"\], :root \[href="https://www.masstortfinancing.com/"\] > img, :root .ob\_container .item-container-obpd, :root \[id^="div-gpt-ad"\], :root a\[href^="https://www.geekbuying.com/dynamic-ads/"\], :root a\[href^="https://lnkxt.bannerator.com/"\], :root \[href="https://jdrucker.com/gold"\] > img, :root \[href^="https://v.investologic.co.uk/"\], :root \[href^="https://cipledecline.buzz/"\], :root a\[href^="https://go.xxxjmp.com"\], :root #leader-companion > a\[href\], :root \[data-desktop-ad-id\], :root \[href^="https://wct.link/"\], :root div\[recirculation-ad-container\], :root \[href^="https://traffserve.com/"\], :root \[data-type="ad-vertical"\], :root a\[href^="https://u.expresstech.io/"\], :root \[href^="https://mypillow.com/"\] > img, :root \[href^="https://ad.admitad.com/"\], :root \[data-testid="ad\_testID"\], :root a\[href^="https://track.ultravpn.com/"\], :root \[href^="https://goldcometals.com/clk.trk"\], :root a\[href^="https://go.hpyjmp.com"\], :root \[href^="https://mystore.com/"\] > img, :root \[data-mobile-ad-id\], :root a\[href^="http://tc.tradetracker.net/"\] > img, :root a\[href^="http://affiliates.thrixxx.com/"\], :root div\[id^="yandex\_ad"\], :root a\[href^="https://pb-imc.com/"\], :root a\[href^="https://www.adultempire.com/"\]\[href\*="?partner\_id="\], :root \[data-template-type="nativead"\], :root \[data-ad-name\], :root \[data-ez-name\], :root a\[data-widget-outbrain-redirect^="http://paid.outbrain.com/network/redir?"\], :root \[data-dynamic-ads\], :root a\[href^="http://go.xtbaffiliates.com/"\], :root a\[href^="https://consali.com/"\], :root .grid > .container > #aside-promotion, :root DFP-AD, :root .trc\_related\_container div\[data-item-syndicated="true"\], :root a\[href^="https://www.liquidfire.mobi/"\], :root \[href^="https://click2cvs.com/"\], :root \[href^="//mage98rquewz.com/"\], :root a\[href^="https://webroutetrk.com/"\], :root a\[href^="https://mercurybest.com/"\], :root a\[href^="https://startgAming.net/tienda/"\], :root \[href^="https://safer-redirection.com"\], :root \[onclick\*="content.ad/"\], :root AMP-AD, :root a\[href^="https://sTartGAMiNG.net/tienda/"\], :root \[data-ad-cls\], :root \[id^="ad-wrap-"\], :root div\[id^="taboola-stream-"\], :root \[href^="https://go.astutelinks.com/"\], :root \[class^="amp-ad-"\], :root \[href^="https://affiliate.fastcomet.com/"\] > img, :root \[class^="adDisplay-module"\], :root AD-SLOT, :root .ob\_dual\_right > .ob\_ads\_header ~ .odb\_div, :root \[href^="http://join.shemalepornstar.com/"\], :root a\[href^="https://go.xlviiirdr.com"\], :root .trc\_rbox\_div .syndicatedItem, :root div\[data-adunit\], :root app-large-ad, :root \[href^="https://turtlebids.irauctions.com/"\] img, :root a\[href^="https://www.adskeeper.com"\], :root \[href^="https://totlnkcl.com/"\], :root \[data-ad-module\], :root .plistaList > .itemLinkPET, :root \[href^="https://gmxvmvptfm.com/"\], :root \[href^="https://trackfin.asia/"\], :root .plistaList > .plista\_widget\_underArticle\_item\[data-type="pet"\], :root a\[href\*="//lkstrck2.com/"\], :root a\[href^="https://bs.serving-sys.com"\], :root \[href^="http://residenceseeingstanding.com/"\], :root a\[href^="https://traffdaq.com/"\], :root \[class^="div-gpt-ad"\], :root a\[href^="http://partners.etoro.com/"\], :root \[data-advadstrackid\], :root a\[href^="https://refpazkjixes.top/"\], :root #mgb-container > #mgb, :root \[href^="https://www.cloudways.com/en/?id"\], :root a\[href^="https://trk.sportsflix4k.club/"\], :root a\[href^="https://tweakostensibleinstaller.com/"\], :root a\[href^="https://go.xlivrdr.com"\], :root a\[href^="https://cam4com.go2cloud.org/"\], :root a\[href^="http://li.blogtrottr.com/click?"\] { display: none !important; } - -[AB-3](https://se-education.org/addressbook-level3/) - -[User Guide](https://se-education.org/addressbook-level3/UserGuide.html)[Developer Guide](https://se-education.org/addressbook-level3/DeveloperGuide.html)[About Us](https://se-education.org/addressbook-level3/AboutUs.html) [![View on GitHub](./Developer Guide_files/github-icon.png)](https://github.com/se-edu/addressbook-level3) - -Developer Guide -=============== - -* [**Acknowledgements**](https://se-education.org/addressbook-level3/DeveloperGuide.html#acknowledgements) -* [**Setting up, getting started**](https://se-education.org/addressbook-level3/DeveloperGuide.html#setting-up-getting-started) -* [**Design**](https://se-education.org/addressbook-level3/DeveloperGuide.html#design) - * [Architecture](https://se-education.org/addressbook-level3/DeveloperGuide.html#architecture) - * [UI component](https://se-education.org/addressbook-level3/DeveloperGuide.html#ui-component) - * [Logic component](https://se-education.org/addressbook-level3/DeveloperGuide.html#logic-component) - * [Model component](https://se-education.org/addressbook-level3/DeveloperGuide.html#model-component) - * [Storage component](https://se-education.org/addressbook-level3/DeveloperGuide.html#storage-component) - * [Common classes](https://se-education.org/addressbook-level3/DeveloperGuide.html#common-classes) -* [**Implementation**](https://se-education.org/addressbook-level3/DeveloperGuide.html#implementation) - * [\[Proposed\] Undo/redo feature](https://se-education.org/addressbook-level3/DeveloperGuide.html#proposed-undoredo-feature) - * [Proposed Implementation](https://se-education.org/addressbook-level3/DeveloperGuide.html#proposed-implementation) - * [Design considerations:](https://se-education.org/addressbook-level3/DeveloperGuide.html#design-considerations) - * [\[Proposed\] Data archiving](https://se-education.org/addressbook-level3/DeveloperGuide.html#proposed-data-archiving) -* [**Documentation, logging, testing, configuration, dev-ops**](https://se-education.org/addressbook-level3/DeveloperGuide.html#documentation-logging-testing-configuration-dev-ops) -* [**Appendix: Requirements**](https://se-education.org/addressbook-level3/DeveloperGuide.html#appendix-requirements) - * [Product scope](https://se-education.org/addressbook-level3/DeveloperGuide.html#product-scope) - * [User stories](https://se-education.org/addressbook-level3/DeveloperGuide.html#user-stories) - * [Use cases](https://se-education.org/addressbook-level3/DeveloperGuide.html#use-cases) - * [Non-Functional Requirements](https://se-education.org/addressbook-level3/DeveloperGuide.html#non-functional-requirements) - * [Glossary](https://se-education.org/addressbook-level3/DeveloperGuide.html#glossary) -* [**Appendix: Instructions for manual testing**](https://se-education.org/addressbook-level3/DeveloperGuide.html#appendix-instructions-for-manual-testing) - * [Launch and shutdown](https://se-education.org/addressbook-level3/DeveloperGuide.html#launch-and-shutdown) - * [Deleting a person](https://se-education.org/addressbook-level3/DeveloperGuide.html#deleting-a-person) - * [Saving data](https://se-education.org/addressbook-level3/DeveloperGuide.html#saving-data) - -* * * - -**Acknowledgements** --------------------- - -* {list here sources of all reused/adapted ideas, code, documentation, and third-party libraries – include links to the original source as well} - -* * * - -**Setting up, getting started** -------------------------------- - -Refer to the guide [_Setting up and getting started_](https://se-education.org/addressbook-level3/SettingUp.html). - -* * * - -**Design** ----------- - -![:bulb:](./Developer Guide_files/1f4a1.png ":bulb:") **Tip:** The `.puml` files used to create diagrams in this document `docs/diagrams` folder. Refer to the [_PlantUML Tutorial_ at se-edu/guides](https://se-education.org/guides/tutorials/plantUml.html) to learn how to create and edit diagrams. - -### Architecture - -![](./Developer Guide_files/ArchitectureDiagram.png) - -The **_Architecture Diagram_** given above explains the high-level design of the App. - -Given below is a quick overview of main components and how they interact with each other. - -**Main components of the architecture** - -**`Main`** (consisting of classes [`Main`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/Main.java) and [`MainApp`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/MainApp.java)) is in charge of the app launch and shut down. - -* At app launch, it initializes the other components in the correct sequence, and connects them up with each other. -* At shut down, it shuts down the other components and invokes cleanup methods where necessary. - -The bulk of the app’s work is done by the following four components: - -* [**`UI`**](https://se-education.org/addressbook-level3/DeveloperGuide.html#ui-component): The UI of the App. -* [**`Logic`**](https://se-education.org/addressbook-level3/DeveloperGuide.html#logic-component): The command executor. -* [**`Model`**](https://se-education.org/addressbook-level3/DeveloperGuide.html#model-component): Holds the data of the App in memory. -* [**`Storage`**](https://se-education.org/addressbook-level3/DeveloperGuide.html#storage-component): Reads data from, and writes data to, the hard disk. - -[**`Commons`**](https://se-education.org/addressbook-level3/DeveloperGuide.html#common-classes) represents a collection of classes used by multiple other components. - -**How the architecture components interact with each other** - -The _Sequence Diagram_ below shows how the components interact with each other for the scenario where the user issues the command `delete 1`. - -![](./Developer Guide_files/ArchitectureSequenceDiagram.png) - -Each of the four main components (also shown in the diagram above), - -* defines its _API_ in an `interface` with the same name as the Component. -* implements its functionality using a concrete `{Component Name}Manager` class (which follows the corresponding API `interface` mentioned in the previous point. - -For example, the `Logic` component defines its API in the `Logic.java` interface and implements its functionality using the `LogicManager.java` class which follows the `Logic` interface. Other components interact with a given component through its interface rather than the concrete class (reason: to prevent outside component’s being coupled to the implementation of a component), as illustrated in the (partial) class diagram below. - -![](./Developer Guide_files/ComponentManagers.png) - -The sections below give more details of each component. - -### UI component - -The **API** of this component is specified in [`Ui.java`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/ui/Ui.java) - -![Structure of the UI Component](./Developer Guide_files/UiClassDiagram.png) - -The UI consists of a `MainWindow` that is made up of parts e.g.`CommandBox`, `ResultDisplay`, `PersonListPanel`, `StatusBarFooter` etc. All these, including the `MainWindow`, inherit from the abstract `UiPart` class which captures the commonalities between classes that represent parts of the visible GUI. - -The `UI` component uses the JavaFx UI framework. The layout of these UI parts are defined in matching `.fxml` files that are in the `src/main/resources/view` folder. For example, the layout of the [`MainWindow`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/ui/MainWindow.java) is specified in [`MainWindow.fxml`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/resources/view/MainWindow.fxml) - -The `UI` component, - -* executes user commands using the `Logic` component. -* listens for changes to `Model` data so that the UI can be updated with the modified data. -* keeps a reference to the `Logic` component, because the `UI` relies on the `Logic` to execute commands. -* depends on some classes in the `Model` component, as it displays `Person` object residing in the `Model`. - -### Logic component - -**API** : [`Logic.java`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/logic/Logic.java) - -Here’s a (partial) class diagram of the `Logic` component: - -![](./Developer Guide_files/LogicClassDiagram.png) - -The sequence diagram below illustrates the interactions within the `Logic` component, taking `execute("delete 1")` API call as an example. - -![Interactions Inside the Logic Component for the `delete 1` Command](./Developer Guide_files/DeleteSequenceDiagram.png) - -![:information_source:](./Developer Guide_files/2139.png ":information_source:") **Note:** The lifeline for `DeleteCommandParser` should end at the destroy marker (X) but due to a limitation of PlantUML, the lifeline reaches the end of diagram. - -How the `Logic` component works: - -1. When `Logic` is called upon to execute a command, it is passed to an `AddressBookParser` object which in turn creates a parser that matches the command (e.g., `DeleteCommandParser`) and uses it to parse the command. -2. This results in a `Command` object (more precisely, an object of one of its subclasses e.g., `DeleteCommand`) which is executed by the `LogicManager`. -3. The command can communicate with the `Model` when it is executed (e.g. to delete a person). -4. The result of the command execution is encapsulated as a `CommandResult` object which is returned back from `Logic`. - -Here are the other classes in `Logic` (omitted from the class diagram above) that are used for parsing a user command: - -![](./Developer Guide_files/ParserClasses.png) - -How the parsing works: - -* When called upon to parse a user command, the `AddressBookParser` class creates an `XYZCommandParser` (`XYZ` is a placeholder for the specific command name e.g., `AddCommandParser`) which uses the other classes shown above to parse the user command and create a `XYZCommand` object (e.g., `AddCommand`) which the `AddressBookParser` returns back as a `Command` object. -* All `XYZCommandParser` classes (e.g., `AddCommandParser`, `DeleteCommandParser`, …) inherit from the `Parser` interface so that they can be treated similarly where possible e.g, during testing. - -### Model component - -**API** : [`Model.java`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/model/Model.java) - -![](./Developer Guide_files/ModelClassDiagram.png) - -The `Model` component, - -* stores the address book data i.e., all `Person` objects (which are contained in a `UniquePersonList` object). -* stores the currently ‘selected’ `Person` objects (e.g., results of a search query) as a separate _filtered_ list which is exposed to outsiders as an unmodifiable `ObservableList` that can be ‘observed’ e.g. the UI can be bound to this list so that the UI automatically updates when the data in the list change. -* stores a `UserPref` object that represents the user’s preferences. This is exposed to the outside as a `ReadOnlyUserPref` objects. -* does not depend on any of the other three components (as the `Model` represents data entities of the domain, they should make sense on their own without depending on other components) - -![:information_source:](./Developer Guide_files/2139.png ":information_source:") **Note:** An alternative (arguably, a more OOP) model is given below. It has a `Tag` list in the `AddressBook`, which `Person` references. This allows `AddressBook` to only require one `Tag` object per unique tag, instead of each `Person` needing their own `Tag` objects. -![](./Developer Guide_files/BetterModelClassDiagram.png) - -### Storage component - -**API** : [`Storage.java`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/storage/Storage.java) - -![](./Developer Guide_files/StorageClassDiagram.png) - -The `Storage` component, - -* can save both address book data and user preference data in JSON format, and read them back into corresponding objects. -* inherits from both `AddressBookStorage` and `UserPrefStorage`, which means it can be treated as either one (if only the functionality of only one is needed). -* depends on some classes in the `Model` component (because the `Storage` component’s job is to save/retrieve objects that belong to the `Model`) - -### Common classes - -Classes used by multiple components are in the `seedu.addressbook.commons` package. - -* * * - -**Implementation** ------------------- - -This section describes some noteworthy details on how certain features are implemented. - -### \[Proposed\] Undo/redo feature - -#### Proposed Implementation - -The proposed undo/redo mechanism is facilitated by `VersionedAddressBook`. It extends `AddressBook` with an undo/redo history, stored internally as an `addressBookStateList` and `currentStatePointer`. Additionally, it implements the following operations: - -* `VersionedAddressBook#commit()` — Saves the current address book state in its history. -* `VersionedAddressBook#undo()` — Restores the previous address book state from its history. -* `VersionedAddressBook#redo()` — Restores a previously undone address book state from its history. - -These operations are exposed in the `Model` interface as `Model#commitAddressBook()`, `Model#undoAddressBook()` and `Model#redoAddressBook()` respectively. - -Given below is an example usage scenario and how the undo/redo mechanism behaves at each step. - -Step 1. The user launches the application for the first time. The `VersionedAddressBook` will be initialized with the initial address book state, and the `currentStatePointer` pointing to that single address book state. - -![UndoRedoState0](./Developer Guide_files/UndoRedoState0.png) - -Step 2. The user executes `delete 5` command to delete the 5th person in the address book. The `delete` command calls `Model#commitAddressBook()`, causing the modified state of the address book after the `delete 5` command executes to be saved in the `addressBookStateList`, and the `currentStatePointer` is shifted to the newly inserted address book state. - -![UndoRedoState1](./Developer Guide_files/UndoRedoState1.png) - -Step 3. The user executes `add n/David …​` to add a new person. The `add` command also calls `Model#commitAddressBook()`, causing another modified address book state to be saved into the `addressBookStateList`. - -![UndoRedoState2](./Developer Guide_files/UndoRedoState2.png) - -![:information_source:](./Developer Guide_files/2139.png ":information_source:") **Note:** If a command fails its execution, it will not call `Model#commitAddressBook()`, so the address book state will not be saved into the `addressBookStateList`. - -Step 4. The user now decides that adding the person was a mistake, and decides to undo that action by executing the `undo` command. The `undo` command will call `Model#undoAddressBook()`, which will shift the `currentStatePointer` once to the left, pointing it to the previous address book state, and restores the address book to that state. - -![UndoRedoState3](./Developer Guide_files/UndoRedoState3.png) - -![:information_source:](./Developer Guide_files/2139.png ":information_source:") **Note:** If the `currentStatePointer` is at index 0, pointing to the initial AddressBook state, then there are no previous AddressBook states to restore. The `undo` command uses `Model#canUndoAddressBook()` to check if this is the case. If so, it will return an error to the user rather than attempting to perform the undo. - -The following sequence diagram shows how the undo operation works: - -![UndoSequenceDiagram](./Developer Guide_files/UndoSequenceDiagram.png) - -![:information_source:](./Developer Guide_files/2139.png ":information_source:") **Note:** The lifeline for `UndoCommand` should end at the destroy marker (X) but due to a limitation of PlantUML, the lifeline reaches the end of diagram. - -The `redo` command does the opposite — it calls `Model#redoAddressBook()`, which shifts the `currentStatePointer` once to the right, pointing to the previously undone state, and restores the address book to that state. - -![:information_source:](./Developer Guide_files/2139.png ":information_source:") **Note:** If the `currentStatePointer` is at index `addressBookStateList.size() - 1`, pointing to the latest address book state, then there are no undone AddressBook states to restore. The `redo` command uses `Model#canRedoAddressBook()` to check if this is the case. If so, it will return an error to the user rather than attempting to perform the redo. - -Step 5. The user then decides to execute the command `list`. Commands that do not modify the address book, such as `list`, will usually not call `Model#commitAddressBook()`, `Model#undoAddressBook()` or `Model#redoAddressBook()`. Thus, the `addressBookStateList` remains unchanged. - -![UndoRedoState4](./Developer Guide_files/UndoRedoState4.png) - -Step 6. The user executes `clear`, which calls `Model#commitAddressBook()`. Since the `currentStatePointer` is not pointing at the end of the `addressBookStateList`, all address book states after the `currentStatePointer` will be purged. Reason: It no longer makes sense to redo the `add n/David …​` command. This is the behavior that most modern desktop applications follow. - -![UndoRedoState5](./Developer Guide_files/UndoRedoState5.png) - -The following activity diagram summarizes what happens when a user executes a new command: - -![](./Developer Guide_files/CommitActivityDiagram.png) - -#### Design considerations: - -**Aspect: How undo & redo executes:** - -* **Alternative 1 (current choice):** Saves the entire address book. - * Pros: Easy to implement. - * Cons: May have performance issues in terms of memory usage. -* **Alternative 2:** Individual command knows how to undo/redo by itself. - * Pros: Will use less memory (e.g. for `delete`, just save the person being deleted). - * Cons: We must ensure that the implementation of each individual command are correct. - -_{more aspects and alternatives to be added}_ - -### \[Proposed\] Data archiving - -_{Explain here how the data archiving feature will be implemented}_ - -* * * - -**Documentation, logging, testing, configuration, dev-ops** ------------------------------------------------------------ - -* [Documentation guide](https://se-education.org/addressbook-level3/Documentation.html) -* [Testing guide](https://se-education.org/addressbook-level3/Testing.html) -* [Logging guide](https://se-education.org/addressbook-level3/Logging.html) -* [Configuration guide](https://se-education.org/addressbook-level3/Configuration.html) -* [DevOps guide](https://se-education.org/addressbook-level3/DevOps.html) - -* * * - -**Appendix: Requirements** --------------------------- - -### Product scope - -**Target user profile**: - -* has a need to manage a significant number of contacts -* prefer desktop apps over other types -* can type fast -* prefers typing to mouse interactions -* is reasonably comfortable using CLI apps - -**Value proposition**: manage contacts faster than a typical mouse/GUI driven app - -### User stories - -Priorities: High (must have) - `* * *`, Medium (nice to have) - `* *`, Low (unlikely to have) - `*` - -Priority - -As a …​ - -I want to …​ - -So that I can…​ - -`* * *` - -new user - -see usage instructions - -refer to instructions when I forget how to use the App - -`* * *` - -user - -add a new person - -  - -`* * *` - -user - -delete a person - -remove entries that I no longer need - -`* * *` - -user - -find a person by name - -locate details of persons without having to go through the entire list - -`* *` - -user - -hide private contact details - -minimize chance of someone else seeing them by accident - -`*` - -user with many persons in the address book - -sort persons by name - -locate a person easily - -_{More to be added}_ - -### Use cases - -(For all use cases below, the **System** is the `AddressBook` and the **Actor** is the `user`, unless specified otherwise) - -**Use case: Delete a person** - -**MSS** - -1. User requests to list persons -2. AddressBook shows a list of persons -3. User requests to delete a specific person in the list -4. AddressBook deletes the person - - Use case ends. - - -**Extensions** - -* 2a. The list is empty. - - Use case ends. - -* 3a. The given index is invalid. - - * 3a1. AddressBook shows an error message. - - Use case resumes at step 2. - - -_{More to be added}_ - -### Non-Functional Requirements - -1. Should work on any _mainstream OS_ as long as it has Java `11` or above installed. -2. Should be able to hold up to 1000 persons without a noticeable sluggishness in performance for typical usage. -3. A user with above average typing speed for regular English text (i.e. not code, not system admin commands) should be able to accomplish most of the tasks faster using commands than using the mouse. - -_{More to be added}_ - -### Glossary - -* **Mainstream OS**: Windows, Linux, Unix, OS-X -* **Private contact detail**: A contact detail that is not meant to be shared with others - -* * * - -**Appendix: Instructions for manual testing** ---------------------------------------------- - -Given below are instructions to test the app manually. - -![:information_source:](./Developer Guide_files/2139.png ":information_source:") **Note:** These instructions only provide a starting point for testers to work on; testers are expected to do more _exploratory_ testing. - -### Launch and shutdown - -1. Initial launch - - 1. Download the jar file and copy into an empty folder - - 2. Double-click the jar file Expected: Shows the GUI with a set of sample contacts. The window size may not be optimum. - -2. Saving window preferences - - 1. Resize the window to an optimum size. Move the window to a different location. Close the window. - - 2. Re-launch the app by double-clicking the jar file. - Expected: The most recent window size and location is retained. - -3. _{ more test cases …​ }_ - - -### Deleting a person - -1. Deleting a person while all persons are being shown - - 1. Prerequisites: List all persons using the `list` command. Multiple persons in the list. - - 2. Test case: `delete 1` - Expected: First contact is deleted from the list. Details of the deleted contact shown in the status message. Timestamp in the status bar is updated. - - 3. Test case: `delete 0` - Expected: No person is deleted. Error details shown in the status message. Status bar remains the same. - - 4. Other incorrect delete commands to try: `delete`, `delete x`, `...` (where x is larger than the list size) - Expected: Similar to previous. - -2. _{ more test cases …​ }_ - - -### Saving data - -1. Dealing with missing/corrupted data files - - 1. _{explain how to simulate a missing/corrupted file, and the expected behavior}_ -2. _{ more test cases …​ }_ \ No newline at end of file From 784c75081771c59d4fb4605e8a37cdc11aec98db Mon Sep 17 00:00:00 2001 From: LicongHuang Date: Thu, 5 Oct 2023 18:51:01 +0800 Subject: [PATCH 017/301] Edit DevelopGuide.md --- docs/DeveloperGuide.md | 7 ------- 1 file changed, 7 deletions(-) diff --git a/docs/DeveloperGuide.md b/docs/DeveloperGuide.md index 2ea5ae7dc6d..726bd559cf0 100644 --- a/docs/DeveloperGuide.md +++ b/docs/DeveloperGuide.md @@ -25,13 +25,6 @@ Refer to the guide [_Setting up and getting started_](SettingUp.md). ## **Design** -``` mermaid -sequenceDiagram - Alice->>+John: Hello John, how are you? - Alice->>+John: John, can you hear me? - John-->>-Alice: Hi Alice, I can hear you! - John-->>-Alice: I feel great! -``` ### Architecture From 5b76a38cee771c991021620122f8c82875fcc9e2 Mon Sep 17 00:00:00 2001 From: LicongHuang Date: Thu, 5 Oct 2023 18:52:57 +0800 Subject: [PATCH 018/301] Edit AddressBookParser.java --- .../java/seedu/address/logic/parser/AddressBookParser.java | 4 ---- 1 file changed, 4 deletions(-) diff --git a/src/main/java/seedu/address/logic/parser/AddressBookParser.java b/src/main/java/seedu/address/logic/parser/AddressBookParser.java index cf5e2a423c4..3149ee07e0b 100644 --- a/src/main/java/seedu/address/logic/parser/AddressBookParser.java +++ b/src/main/java/seedu/address/logic/parser/AddressBookParser.java @@ -17,7 +17,6 @@ import seedu.address.logic.commands.FindCommand; import seedu.address.logic.commands.HelpCommand; import seedu.address.logic.commands.ListCommand; -import seedu.address.logic.commands.JokeCommand; import seedu.address.logic.parser.exceptions.ParseException; /** @@ -78,9 +77,6 @@ public Command parseCommand(String userInput) throws ParseException { case HelpCommand.COMMAND_WORD: return new HelpCommand(); - case JokeCommand.COMMAND_WORD: - return new JokeCommand(); - default: logger.finer("This user input caused a ParseException: " + userInput); throw new ParseException(MESSAGE_UNKNOWN_COMMAND); From 945af339a5712826bb04dc5ac72273eafc4d0b07 Mon Sep 17 00:00:00 2001 From: yuxunn <108646986+yuxunn@users.noreply.github.com> Date: Thu, 5 Oct 2023 19:24:41 +0800 Subject: [PATCH 019/301] Delete docs/images/Ui.png --- docs/images/Ui.png | Bin 68800 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 docs/images/Ui.png diff --git a/docs/images/Ui.png b/docs/images/Ui.png deleted file mode 100644 index ef318c3974d45e4cf1d0501c8367d720d74b85bd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 68800 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 From ded571b9b68724e526cbc7472e0ddcd70598650c Mon Sep 17 00:00:00 2001 From: yuxunn <108646986+yuxunn@users.noreply.github.com> Date: Thu, 5 Oct 2023 19:25:50 +0800 Subject: [PATCH 020/301] Add files via upload --- docs/images/Ui.png | Bin 0 -> 68800 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 docs/images/Ui.png diff --git a/docs/images/Ui.png b/docs/images/Ui.png new file mode 100644 index 0000000000000000000000000000000000000000..ef318c3974d45e4cf1d0501c8367d720d74b85bd GIT binary patch literal 68800 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 literal 0 HcmV?d00001 From cbc14674e83abc961e433018a2139e28a173c345 Mon Sep 17 00:00:00 2001 From: yuxunn <108646986+yuxunn@users.noreply.github.com> Date: Thu, 5 Oct 2023 22:18:27 +0800 Subject: [PATCH 021/301] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 8ef9e03af1f..67db3628e14 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# D.A.V.E (D’financial AdVisor Expert) +# D.A.V.E. (D’financial AdVisor Expert) [![Java CI](https://github.com/AY2324S1-CS2103T-F08-2/tp/actions/workflows/gradle.yml/badge.svg)](https://github.com/AY2324S1-CS2103T-F08-2/tp/actions/workflows/gradle.yml) [![codecov](https://codecov.io/gh/AY2324S1-CS2103T-F08-2/tp/graph/badge.svg?token=GCZ85WN999)](https://codecov.io/gh/AY2324S1-CS2103T-F08-2/tp) From 9b467e011ac194af0a9bd9c02471fc7cff476ad6 Mon Sep 17 00:00:00 2001 From: LicongHuang Date: Thu, 5 Oct 2023 22:31:44 +0800 Subject: [PATCH 022/301] Update DeveloperGuide --- docs/DeveloperGuide.md | 189 ++++++++++--- docs/diagrams/ArchitectureDiagram.svg | 267 ++++++++++++++++++ docs/diagrams/ArchitectureSequenceDiagram.svg | 102 +++++++ docs/diagrams/BetterModelClassDiagram.svg | 104 +++++++ docs/diagrams/CommitActivityDiagram.svg | 28 ++ docs/diagrams/ComponentManagers.svg | 110 ++++++++ docs/diagrams/DeleteSequenceDiagram.svg | 132 +++++++++ docs/diagrams/LogicClassDiagram.svg | 133 +++++++++ docs/diagrams/ModelClassDiagram.svg | 154 ++++++++++ docs/diagrams/ParserClasses.svg | 127 +++++++++ docs/diagrams/StorageClassDiagram.svg | 130 +++++++++ docs/diagrams/UiClassDiagram.svg | 163 +++++++++++ docs/diagrams/UndoRedoState0.svg | 92 ++++++ docs/diagrams/UndoRedoState1.svg | 94 ++++++ docs/diagrams/UndoRedoState2.svg | 92 ++++++ docs/diagrams/UndoRedoState3.svg | 92 ++++++ docs/diagrams/UndoRedoState4.svg | 92 ++++++ docs/diagrams/UndoRedoState5.svg | 93 ++++++ docs/diagrams/UndoSequenceDiagram.svg | 117 ++++++++ docs/images/ComponentManagers.png | Bin 0 -> 17411 bytes docs/images/DeleteSequenceDiagram.png | Bin 0 -> 28536 bytes docs/images/LogicClassDiagram.png | Bin 0 -> 36640 bytes docs/images/ModelClassDiagram.png | Bin 0 -> 27204 bytes docs/images/ParserClasses.png | Bin 0 -> 29478 bytes docs/images/StorageClassDiagram.png | Bin 0 -> 29426 bytes docs/images/UiClassDiagram.png | Bin 0 -> 48363 bytes 26 files changed, 2277 insertions(+), 34 deletions(-) create mode 100644 docs/diagrams/ArchitectureDiagram.svg create mode 100644 docs/diagrams/ArchitectureSequenceDiagram.svg create mode 100644 docs/diagrams/BetterModelClassDiagram.svg create mode 100644 docs/diagrams/CommitActivityDiagram.svg create mode 100644 docs/diagrams/ComponentManagers.svg create mode 100644 docs/diagrams/DeleteSequenceDiagram.svg create mode 100644 docs/diagrams/LogicClassDiagram.svg create mode 100644 docs/diagrams/ModelClassDiagram.svg create mode 100644 docs/diagrams/ParserClasses.svg create mode 100644 docs/diagrams/StorageClassDiagram.svg create mode 100644 docs/diagrams/UiClassDiagram.svg create mode 100644 docs/diagrams/UndoRedoState0.svg create mode 100644 docs/diagrams/UndoRedoState1.svg create mode 100644 docs/diagrams/UndoRedoState2.svg create mode 100644 docs/diagrams/UndoRedoState3.svg create mode 100644 docs/diagrams/UndoRedoState4.svg create mode 100644 docs/diagrams/UndoRedoState5.svg create mode 100644 docs/diagrams/UndoSequenceDiagram.svg create mode 100644 docs/images/ComponentManagers.png create mode 100644 docs/images/DeleteSequenceDiagram.png create mode 100644 docs/images/LogicClassDiagram.png create mode 100644 docs/images/ModelClassDiagram.png create mode 100644 docs/images/ParserClasses.png create mode 100644 docs/images/StorageClassDiagram.png create mode 100644 docs/images/UiClassDiagram.png diff --git a/docs/DeveloperGuide.md b/docs/DeveloperGuide.md index 726bd559cf0..df59c98e626 100644 --- a/docs/DeveloperGuide.md +++ b/docs/DeveloperGuide.md @@ -28,7 +28,9 @@ Refer to the guide [_Setting up and getting started_](SettingUp.md). ### Architecture - + + + The ***Architecture Diagram*** given above explains the high-level design of the App. @@ -53,7 +55,9 @@ The bulk of the app's work is done by the following four components: The *Sequence Diagram* below shows how the components interact with each other for the scenario where the user issues the command `delete 1`. - + + + Each of the four main components (also shown in the diagram above), @@ -62,7 +66,8 @@ Each of the four main components (also shown in the diagram above), For example, the `Logic` component defines its API in the `Logic.java` interface and implements its functionality using the `LogicManager.java` class which follows the `Logic` interface. Other components interact with a given component through its interface rather than the concrete class (reason: to prevent outside component's being coupled to the implementation of a component), as illustrated in the (partial) class diagram below. - + + The sections below give more details of each component. @@ -70,7 +75,7 @@ The sections below give more details of each component. The **API** of this component is specified in [`Ui.java`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/ui/Ui.java) - +Structure of the UI Component The UI consists of a `MainWindow` that is made up of parts e.g.`CommandBox`, `ResultDisplay`, `PersonListPanel`, `StatusBarFooter` etc. All these, including the `MainWindow`, inherit from the abstract `UiPart` class which captures the commonalities between classes that represent parts of the visible GUI. @@ -89,11 +94,11 @@ The `UI` component, Here's a (partial) class diagram of the `Logic` component: - + The sequence diagram below illustrates the interactions within the `Logic` component, taking `execute("delete 1")` API call as an example. - +Interactions Inside the Logic Component for the `delete 1` Command @@ -109,7 +114,7 @@ How the `Logic` component works: Here are the other classes in `Logic` (omitted from the class diagram above) that are used for parsing a user command: - + How the parsing works: * When called upon to parse a user command, the `AddressBookParser` class creates an `XYZCommandParser` (`XYZ` is a placeholder for the specific command name e.g., `AddCommandParser`) which uses the other classes shown above to parse the user command and create a `XYZCommand` object (e.g., `AddCommand`) which the `AddressBookParser` returns back as a `Command` object. @@ -118,7 +123,7 @@ How the parsing works: ### Model component **API** : [`Model.java`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/model/Model.java) - + The `Model` component, @@ -132,7 +137,7 @@ The `Model` component, **Note:** An alternative (arguably, a more OOP) model is given below. It has a `Tag` list in the `AddressBook`, which `Person` references. This allows `AddressBook` to only require one `Tag` object per unique tag, instead of each `Person` needing their own `Tag` objects.
    - +
    @@ -141,7 +146,7 @@ The `Model` component, **API** : [`Storage.java`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/storage/Storage.java) - + The `Storage` component, * can save both address book data and user preference data in JSON format, and read them back into corresponding objects. @@ -174,15 +179,15 @@ Given below is an example usage scenario and how the undo/redo mechanism behaves Step 1. The user launches the application for the first time. The `VersionedAddressBook` will be initialized with the initial address book state, and the `currentStatePointer` pointing to that single address book state. - +UndoRedoState0 Step 2. The user executes `delete 5` command to delete the 5th person in the address book. The `delete` command calls `Model#commitAddressBook()`, causing the modified state of the address book after the `delete 5` command executes to be saved in the `addressBookStateList`, and the `currentStatePointer` is shifted to the newly inserted address book state. - +UndoRedoState1 Step 3. The user executes `add n/David …​` to add a new person. The `add` command also calls `Model#commitAddressBook()`, causing another modified address book state to be saved into the `addressBookStateList`. - +UndoRedoState2 @@ -192,7 +197,7 @@ Step 3. The user executes `add n/David …​` to add a new person. The `add` co Step 4. The user now decides that adding the person was a mistake, and decides to undo that action by executing the `undo` command. The `undo` command will call `Model#undoAddressBook()`, which will shift the `currentStatePointer` once to the left, pointing it to the previous address book state, and restores the address book to that state. - +UndoRedoState3 @@ -204,7 +209,7 @@ than attempting to perform the undo. The following sequence diagram shows how the undo operation works: - +UndoSequenceDiagram @@ -222,15 +227,15 @@ The `redo` command does the opposite — it calls `Model#redoAddressBook()`, Step 5. The user then decides to execute the command `list`. Commands that do not modify the address book, such as `list`, will usually not call `Model#commitAddressBook()`, `Model#undoAddressBook()` or `Model#redoAddressBook()`. Thus, the `addressBookStateList` remains unchanged. - +UndoRedoState4 Step 6. The user executes `clear`, which calls `Model#commitAddressBook()`. Since the `currentStatePointer` is not pointing at the end of the `addressBookStateList`, all address book states after the `currentStatePointer` will be purged. Reason: It no longer makes sense to redo the `add n/David …​` command. This is the behavior that most modern desktop applications follow. - +UndoRedoState5 The following activity diagram summarizes what happens when a user executes a new command: - + #### Design considerations: @@ -270,11 +275,14 @@ _{Explain here how the data archiving feature will be implemented}_ **Target user profile**: +* is a student financial advisor * has a need to manage a significant number of contacts * prefer desktop apps over other types * can type fast * prefers typing to mouse interactions * is reasonably comfortable using CLI apps +* needs a solution that offers robust client relationship management +* needs event and policy tracking **Value proposition**: to keep track of their leads as well as clients' details such as their insurance policies, expiry, coverage, personal and contact details, to better assist their leads and clients. @@ -299,15 +307,15 @@ Priorities: High (must have) - `* * *`, Medium (nice to have) - `* *`, Low (unli | `* * *` | student financial advisor | view all my potential leads | recall all my leads | | `* * *` | student financial advisor | add a potential lead | follow up with them | | `* * *` | student financial advisor | edit the details of my leads | correct mistakes I have made when adding a lead | -| `* * *` | student financial advisor | mark leads as done | keep track of who I have visited | -| `* * *` | student financial advisor | unmark leads that are marked done | amend a mistake of marking leads that were mistakenly marked | +| `* *` | student financial advisor | mark leads as done | keep track of who I have visited | +| `* *` | student financial advisor | unmark leads that are marked done | amend a mistake of marking leads that were mistakenly marked | | `* * *` | student financial advisor | add a meeting time with my lead | keep track of when I need to visit my leads | | `* * *` | student financial advisor | sort meeting times by most recent | focus on potential leads that are more urgent | | `* * *` | student financial advisor | convert leads into clients | keep track of who are my leads and clients | ## Clients -| Priority | As a student financial advisor, | I want to …​ | So that I can…​ | +| Priority | As a student... | I want to …​ | So that I can…​ | |----------|--------------------------------|----------------------------------|------------------------------------------| | `* * *` | student financial advisor | add clients who have purchased a plan from me | keep track of my clients | | `* * *` | student financial advisor | update client information | accurately reflect the information of my clients if I had mistakenly added the wrong information prior | @@ -318,25 +326,25 @@ Priorities: High (must have) - `* * *`, Medium (nice to have) - `* *`, Low (unli | `* * *` | student financial advisor | remove a policy of my client | accurately reflect their policies on the app if my client has unsubscribed from his or her policy | | `* * *` | student financial advisor | create and manage client profiles | keep track of their financial information, goals, and progress | | `* * *` | student financial advisor | schedule and manage appointments with my clients | ensure regular communication and updates | -| `* * *` | student financial advisor | set and track financial goals for my clients | help them work toward their objectives | -| `* * *` | student financial advisor | create and manage investment portfolios for my clients | make adjustments as needed | -| `* * *` | student financial advisor | generate and share reports with my clients | keep them informed about their financial progress | -| `* * *` | student financial advisor | securely message and communicate with my clients within the app | address their questions and concerns | -| `* * *` | student financial advisor | have access to analytics and tools that help me analyze my clients' financial data | provide them with the best advice | -| `* * *` | student financial advisor | generate tax reports and provide tax planning advice | help my clients minimize their tax liabilities | +| `*` | student financial advisor | set and track financial goals for my clients | help them work toward their objectives | +| `*` | student financial advisor | create and manage investment portfolios for my clients | make adjustments as needed | +| `*` | student financial advisor | generate and share reports with my clients | keep them informed about their financial progress | +| `*` | student financial advisor | securely message and communicate with my clients within the app | address their questions and concerns | +| `* *` | student financial advisor | have access to analytics and tools that help me analyze my clients' financial data | provide them with the best advice | +| `* *` | student financial advisor | generate tax reports and provide tax planning advice | help my clients minimize their tax liabilities | | `* * *` | student financial advisor | keep track of my clients’ birthdays | make the necessary arrangements like sending well wishes to them | | `* * *` | student financial advisor | send celebration message to all of my clients | not have to utilize another platform to do so | -| `* * *` | student financial advisor | search up a list of clients who purchased a specific policy | monitor the policies based on their specific type | -| `* * *` | student financial advisor | inform my clients about new updates | help them stay updated | +| `* *` | student financial advisor | search up a list of clients who purchased a specific policy | monitor the policies based on their specific type | +| `*` | student financial advisor | inform my clients about new updates | help them stay updated | | `* * *` | student financial advisor | sort my clients based on the commissions they have made me | know which clients to prioritize | ## General Information | Priority | As a student financial advisor, | I want to …​ | So that I can…​ | |----------|--------------------------------|----------------------------------|------------------------------------------| -| `* * *` | student financial advisor | upload and store important documents securely | easily access them when needed | -| `* * *` | student financial advisor | modify my authentication details regularly | ensure my account is safe and secure | -| `* * *` | student financial advisor | write notes on the platform | keep track of any additional notes related to my work | +| `*` | student financial advisor | upload and store important documents securely | easily access them when needed | +| `*` | student financial advisor | modify my authentication details regularly | ensure my account is safe and secure | +| `*` | student financial advisor | write notes on the platform | keep track of any additional notes related to my work | | `* * *` | student financial advisor | keep track of my commissions | to keep track of my financial performance | | `* * *` | student financial advisor | keep track of upcoming events | be on track with the different upcoming appointments | @@ -367,6 +375,116 @@ Priorities: High (must have) - `* * *`, Medium (nice to have) - `* *`, Low (unli Use case resumes at step 2. +**Use case: Edit event information** + +**MSS** + +1. User requests to list persons +2. D.A.V.E. shows a list of persons +3. User requests to see a specific person +4. D.A.V.E. shows information of the person +5. User requests to edit the person's event information +6. D.A.V.E. updates the person's information +7. D.A.V.E. displays person's information + +Use case ends + +**Extensions** + +* 2a. The person's information is empty + + Add person event information + +* 3a. The given index is invalid + + * 3a1 D.A.V.E. shows an error message + + Use case resumes at step 2 + +** Use case: Add a New Person ** + +**MSS** + +1. User requests to add a new person +2. AddressBook prompts the user to input the person's information +3. User enters the person's details +4. AddressBook saves the new person's information + +Use case ends + +**Extensions** + + 2a. The person exists in the list + + Use case ends + +**Use case: Schedule a Meeting** + +**MSS** + +1. User requests to list persons +2. AddressBook displays a list of persons +3. User selects a specific person +4. AddressBook shows the person's details +5. User requests to schedule a meeting with the selected person +6. AddressBook prompts the user to enter meeting details (date, time, location, etc.) +7. User provides meeting details +8. AddressBook schedules the meeting and updates the person's information + +Use case ends + +**Extensions** + + 2a. The list of persons is empty. + + Use case ends. + + 3a. The user enters invalid meeting details. + + 5a1. AddressBook shows an error message. + + Use case resumes at step 6. + +**Use case: View Upcoming Appointments** + +**MSS** + +1. User requests to view their upcoming appointments. +2. AddressBook displays a list of scheduled appointments, including date, time, and person involved. + +Use case ends. + +**Extensions** + + 2a. There are no upcoming appointments. + + Use case ends. + +**Use case: Search for a Person** + +**MSS** + +1. User requests to search for a specific person. +2. AddressBook prompts the user to enter search criteria (e.g., name, email, phone number). +3. User provides search criteria. +4. AddressBook performs a search and displays a list of matching persons. +5. User selects a person from the search results. +6. AddressBook shows the selected person's details. + +Use case ends. + +**Extensions** + + + 2a. No persons match the search criteria. + + 2a1. AddressBook displays a message indicating no matches found. + + Use case ends. + + Use case ends. + + *{More to be added}* ### Non-Functional Requirements @@ -374,14 +492,17 @@ Priorities: High (must have) - `* * *`, Medium (nice to have) - `* *`, Low (unli 1. Should work on any _mainstream OS_ as long as it has Java `11` or above installed. 2. Should be able to hold up to 1000 persons without a noticeable sluggishness in performance for typical usage. 3. A user with above average typing speed for regular English text (i.e. not code, not system admin commands) should be able to accomplish most of the tasks faster using commands than using the mouse. - +4. The system should be able to scale gracefully to accommodate a growing number of users, clients, and data without significant performance degradation. +5. It should support easy integration with additional modules or features as the user base expands. +8. The user interface should be intuitive and user-friendly, ensuring that users can quickly learn and navigate the application. *{More to be added}* ### Glossary * **Mainstream OS**: Windows, Linux, Unix, OS-X * **Private contact detail**: A contact detail that is not meant to be shared with others - +* **Graceful scaling**: Ability for the system to handle increased user loads without significant performance loss +* **Integration**: Combining different software components together to easily incorporate additional modules or features as needed -------------------------------------------------------------------------------------------------------------------- ## **Appendix: Instructions for manual testing** diff --git a/docs/diagrams/ArchitectureDiagram.svg b/docs/diagrams/ArchitectureDiagram.svg new file mode 100644 index 00000000000..f337cbed728 --- /dev/null +++ b/docs/diagrams/ArchitectureDiagram.svg @@ -0,0 +1,267 @@ +UILogicStorageModelMainCommons \ No newline at end of file diff --git a/docs/diagrams/ArchitectureSequenceDiagram.svg b/docs/diagrams/ArchitectureSequenceDiagram.svg new file mode 100644 index 00000000000..c68c013000a --- /dev/null +++ b/docs/diagrams/ArchitectureSequenceDiagram.svg @@ -0,0 +1,102 @@ +User:UI:Logic:Model:Storage"delete 1"execute("delete 1")deletePerson(p)saveAddressBook(addressBook)Save to file \ No newline at end of file diff --git a/docs/diagrams/BetterModelClassDiagram.svg b/docs/diagrams/BetterModelClassDiagram.svg new file mode 100644 index 00000000000..09bbb61e16c --- /dev/null +++ b/docs/diagrams/BetterModelClassDiagram.svg @@ -0,0 +1,104 @@ +AddressBookUniquePersonListUniqueTagListTagPersonNamePhoneEmailAddress11** \ No newline at end of file diff --git a/docs/diagrams/CommitActivityDiagram.svg b/docs/diagrams/CommitActivityDiagram.svg new file mode 100644 index 00000000000..81a8f7086fb --- /dev/null +++ b/docs/diagrams/CommitActivityDiagram.svg @@ -0,0 +1,28 @@ +User executes commandPurge redundant statesSave AddressBook toaddressBookStateList[command commits AddressBook][else] \ No newline at end of file diff --git a/docs/diagrams/ComponentManagers.svg b/docs/diagrams/ComponentManagers.svg new file mode 100644 index 00000000000..4b0de76a213 --- /dev/null +++ b/docs/diagrams/ComponentManagers.svg @@ -0,0 +1,110 @@ +LogicModelStorage<<interface>>LogicLogicManager<<interface>>ModelModelManager<<interface>>StorageStorageManagerHiddenOutside \ No newline at end of file diff --git a/docs/diagrams/DeleteSequenceDiagram.svg b/docs/diagrams/DeleteSequenceDiagram.svg new file mode 100644 index 00000000000..341a5d0e851 --- /dev/null +++ b/docs/diagrams/DeleteSequenceDiagram.svg @@ -0,0 +1,132 @@ +LogicModel:LogicManager:AddressBookParser:Modelexecute("delete 1")parseCommand("delete 1"):DeleteCommandParserparse("1")d:DeleteCommanddddexecute()deletePerson(1):CommandResultresult \ No newline at end of file diff --git a/docs/diagrams/LogicClassDiagram.svg b/docs/diagrams/LogicClassDiagram.svg new file mode 100644 index 00000000000..a8ed3aab057 --- /dev/null +++ b/docs/diagrams/LogicClassDiagram.svg @@ -0,0 +1,133 @@ +LogicModelAddressBookParserXYZCommandCommandResult{abstract}Command<<interface>>LogicLogicManagerHiddenModelStorageHiddenOutsideXYZCommand = AddCommand,FindCommand, etc1createsexecutesproduces \ No newline at end of file diff --git a/docs/diagrams/ModelClassDiagram.svg b/docs/diagrams/ModelClassDiagram.svg new file mode 100644 index 00000000000..3a8f7205d53 --- /dev/null +++ b/docs/diagrams/ModelClassDiagram.svg @@ -0,0 +1,154 @@ +Model<<interface>>ReadOnlyAddressBook<<interface>>ReadOnlyUserPrefs<<interface>>ModelAddressBookModelManagerUserPrefsUniquePersonListPersonAddressEmailNamePhoneTagIHiddenOutside111* all** filtered \ No newline at end of file diff --git a/docs/diagrams/ParserClasses.svg b/docs/diagrams/ParserClasses.svg new file mode 100644 index 00000000000..129ae128ffc --- /dev/null +++ b/docs/diagrams/ParserClasses.svg @@ -0,0 +1,127 @@ +Parser classes<<interface>>ParserAddressBookParserXYZCommandParserCliSyntaxParserUtilArgumentMultimapArgumentTokenizerPrefix{abstract}CommandXYZCommandHiddenOutsidecreatescreatesreturns \ No newline at end of file diff --git a/docs/diagrams/StorageClassDiagram.svg b/docs/diagrams/StorageClassDiagram.svg new file mode 100644 index 00000000000..9075e407c06 --- /dev/null +++ b/docs/diagrams/StorageClassDiagram.svg @@ -0,0 +1,130 @@ +StorageUserPrefs StorageAddressBook Storage<<interface>>StorageStorageManager<<interface>>UserPrefsStorageJsonUserPrefsStorage<<interface>>AddressBookStorageJsonAddressBookStorageJsonSerializableAddressBookJsonAdaptedPersonJsonAdaptedTagHiddenOutside11** \ No newline at end of file diff --git a/docs/diagrams/UiClassDiagram.svg b/docs/diagrams/UiClassDiagram.svg new file mode 100644 index 00000000000..d4ad7369def --- /dev/null +++ b/docs/diagrams/UiClassDiagram.svg @@ -0,0 +1,163 @@ +UIModelLogic<<interface>>Ui{abstract}UiPartUiManagerMainWindowHelpWindowResultDisplayPersonListPanelPersonCardStatusBarFooterCommandBoxHiddenModelHiddenLogicHiddenOutside111110..1* \ No newline at end of file diff --git a/docs/diagrams/UndoRedoState0.svg b/docs/diagrams/UndoRedoState0.svg new file mode 100644 index 00000000000..de830542032 --- /dev/null +++ b/docs/diagrams/UndoRedoState0.svg @@ -0,0 +1,92 @@ +Initial stateStatesab0:AddressBookCurrent State \ No newline at end of file diff --git a/docs/diagrams/UndoRedoState1.svg b/docs/diagrams/UndoRedoState1.svg new file mode 100644 index 00000000000..8ec8a3b8266 --- /dev/null +++ b/docs/diagrams/UndoRedoState1.svg @@ -0,0 +1,94 @@ +After command "delete 5"Statesab0:AddressBookab1:AddressBookCurrent State \ No newline at end of file diff --git a/docs/diagrams/UndoRedoState2.svg b/docs/diagrams/UndoRedoState2.svg new file mode 100644 index 00000000000..29aebd1e8eb --- /dev/null +++ b/docs/diagrams/UndoRedoState2.svg @@ -0,0 +1,92 @@ +After command "add n/David"Statesab0:AddressBookab1:AddressBookab2:AddressBookCurrent State \ No newline at end of file diff --git a/docs/diagrams/UndoRedoState3.svg b/docs/diagrams/UndoRedoState3.svg new file mode 100644 index 00000000000..fdc4cfbc13f --- /dev/null +++ b/docs/diagrams/UndoRedoState3.svg @@ -0,0 +1,92 @@ +After command "undo"Statesab0:AddressBookab1:AddressBookab2:AddressBookCurrent State \ No newline at end of file diff --git a/docs/diagrams/UndoRedoState4.svg b/docs/diagrams/UndoRedoState4.svg new file mode 100644 index 00000000000..38bf6d9b03c --- /dev/null +++ b/docs/diagrams/UndoRedoState4.svg @@ -0,0 +1,92 @@ +After command "list"Statesab0:AddressBookab1:AddressBookab2:AddressBookCurrent State \ No newline at end of file diff --git a/docs/diagrams/UndoRedoState5.svg b/docs/diagrams/UndoRedoState5.svg new file mode 100644 index 00000000000..e98cc5eeac8 --- /dev/null +++ b/docs/diagrams/UndoRedoState5.svg @@ -0,0 +1,93 @@ +After command "clear"Statesab0:AddressBookab1:AddressBookab3:AddressBookCurrent StateState ab2 deleted. \ No newline at end of file diff --git a/docs/diagrams/UndoSequenceDiagram.svg b/docs/diagrams/UndoSequenceDiagram.svg new file mode 100644 index 00000000000..c13fd8fdab0 --- /dev/null +++ b/docs/diagrams/UndoSequenceDiagram.svg @@ -0,0 +1,117 @@ +LogicModel:LogicManager:AddressBookParser:Model:VersionedAddressBookexecute(undo)parseCommand(undo)u:UndoCommanduexecute()undoAddressBook()undo()resetData(ReadOnlyAddressBook)result \ No newline at end of file diff --git a/docs/images/ComponentManagers.png b/docs/images/ComponentManagers.png new file mode 100644 index 0000000000000000000000000000000000000000..ae52a35718a82846d19185f2e5bed573d67cfbcc GIT binary patch literal 17411 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 Nlg1WCg~u-k{133EV@?17 literal 0 HcmV?d00001 diff --git a/docs/images/LogicClassDiagram.png b/docs/images/LogicClassDiagram.png new file mode 100644 index 0000000000000000000000000000000000000000..e3b784310fe5f427feccedbf734be63b9e810825 GIT binary patch literal 36640 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 literal 0 HcmV?d00001 diff --git a/docs/images/ModelClassDiagram.png b/docs/images/ModelClassDiagram.png new file mode 100644 index 0000000000000000000000000000000000000000..a19fb1b4ac888fa40de8247a6f05abe3e8a57505 GIT binary patch literal 27204 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 TX#zhdLZYs$rBtk7`R2a>OJ+-` literal 0 HcmV?d00001 diff --git a/docs/images/ParserClasses.png b/docs/images/ParserClasses.png new file mode 100644 index 0000000000000000000000000000000000000000..edfd1ff789795245c36851cd2780c707090d0460 GIT binary patch literal 29478 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�y3#e%kgElqe^sH=7 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 DN7m$8 literal 0 HcmV?d00001 diff --git a/docs/images/UiClassDiagram.png b/docs/images/UiClassDiagram.png new file mode 100644 index 0000000000000000000000000000000000000000..11f06d686714cf02d88c4b32879bb71b11f56e13 GIT binary patch literal 48363 zcmdqIWmuG5)HXbbilBg!BHdD=q;yMzw6wHzcPb^Ibax{mNW)Mn-O|D^ba!`rd-M+P z=Z)id|9-#b5NEDy@3mK)>s;p!dMPK4j`j!*0)e1QN{A{#Ajtg?$PJu3H^5&CO@eyB z2fc&XD+dE>8&?Y>V+V-1k(H61o`aDgnZ7I88wUp)dv0cC8w))v2S-bbCkED*PJLaZ z;4$8&%C8*${yPK-JjW$@Q$;~(p5wmPSjo%gyOT1!P8h|O0eU_V@q`*f2|M136v9?j zEcCL4C?kx-DerBmQiD$Zl?rB0A^D@~G^fgGsk%IW8mTw}ae=21J1jXhKl+nz*M18| zp|Q)92nbT#Tes+qL=g(PAucq`5lR(@*6)4F3niYO@=PV>_VbI%d`{chEY+!)&5xTw z#Aqmn^sT+!nQcI{=s6$PczVS6d-wKsnKuQoR7eNT&rJAa(0ENMJw@>RRjCH1KiJ+N zP`SCU9lTu8#pBw>*J6F0_WrV;=(8V|3(LPxpA-=n z&B1*-A{rN73XN3U77jIxeGrk_O?&XUlRK7f(QB@z?;|tNc1lKAWQcNf91T0k|8>h8F?G> z!C9C~NF1Tn^0wuaj>H_AVLGT^#Omtu$dF>rxbm3YuVV~x(&%2)cvqE+BD)VAl1>=y zKG{obr@K^Cj2Px_v+;U)_@O-JD=PbD1KQDW@0qFaU~~{JhIU_5cLz=~H6yKXQ}*eo zB(eGZDynBneW|_oB2RIg+`0|CKvQd$G84#jViQbKoI@p5jXpsWP&VtJ^c^|ElcELnTwkJD19jK!qmhzU23@>w)e({P0+yQ ziWL#RL^BzF`O|Y*>}z-c!c8t9kEbi&d#u=@(?t`_WrRJS@}jYd5@rpDFMJ`0;Ua zyU9^;rUPmd7%rZ}XeR>w?zJqWf-=7BH^8eZB% zwJE`m7t)--Qaj{e-;W;x^Y~zi0Asy;iZBRu05DJbYsA;3?g4`cenZ$T`q$Uq{rbf- z#Mf>$(2<={XZHPEr0=X1M>K+W&c`I3t}BOzm^pAzpPvf z={`j8*Ps7$kndz*ot>Sbp`paw4nGj?FyjOM5fKrQmPVQ)3_+6!H-(LkI?c5Nk@9<_ z|8gM1g`NafDx0B7$Staliq9n_Y0=T5V+befkbChWAT^al`|e9Y@ZgDw2?t#8XP+W+ zJD-E!i&KN#oM95h2q!@p_1)|i2c+J=18MLd>rM$TKvu!xee4vwV>Le-7Ty5=*ukSf zkqBcZ<+$}umK3r_m5>)vg_NFtpG(lq98*G{YQ($$cB!wL?}^Cx5YFr>Ei2z}K3BDpVK_naxkeNfLi*49 zUXO2`E^oWC4h`c%B>7A)b=4p*iT*y~8#e<{Op{`{JkP0AE zBGovVqMzmATQ?!WzJI?c{zK0PW7Wzv%pc@jNjSY*)Pt;p|9OVkgqNL?{rZH=1WBdG z9r!&6+CQ$FebVwAK80H$E3NjFagX&3IUqwWP$Q7D1A!L_ z?xWXFSUMv&RGLX?(IgY#;9Lf!+CxsT|FW&m=o_V5oh}82IZM#Y)dbUnWaO`Df1fT} zr$s@uf2t)U+~=1sPT>L9wvl3qr#H$lA%svN4)vH#B-}c61?%t?cFs&5PqfWeEq+FtW+#--MGtPRFNU`JRj2#>ktK2vw1NC z{W$%;a6d#6(nC@#c-{GDIrrbhKt*01@e<6q!+Q zKj;2D&K%t!j$2hNPTHd}M>W3A<8&gUiP{LgUGf87Uq!+H{6snSk?r?`v%LK|Y&ZSR zco~^p0z8~cI#!0LQ`^M+>=*Wp3tK$ zSjYE>{@G_}bdJeaeH}7+%LLKCOkC`)sgB49$yk_*R8@_qyWd|siwxXUVqSYevvpf% z9a^Y!SSe;ve-`mo){)F8xPPb9UNWF%<-(3DiIJ#IAyOJZiqf|$kAPI|!-%HA^?2|lkUK4d%cXVSQ zw*|EBVuLU&eMLSqH@l+c(fSqEc3bqMjxh6iI?mowD{VZ*RMY+M6ip_E#y=`+qdfY% zlviqR8U0So7&m?e1FzWPaB!yWka;GI3s_%ez$dyV z)VXI96p z$EJqUeWx93Ag4*dGXIw|Q4a6gPoz>_)2EqJGC+6cG^+ezfIW9F`Zd? zGxe}4Tndv{d2 z63NKa2(QBdu{w52$DZy>9_TLAH}q{rnj~N6xW621ZYVM)6Ls%W4}_I6r=rLjbz1R` za4+Ly^glf&QeCR-JyhXR3{wrB92Nd3Ek0H-*SzT59CkUPAo(DBsS9O$6jo3s5Ep$F z$kTLwN>9fWA!->|KAM@kW*%bExco5U#P^<9rZ>;nBNDuHvPG8a zwY%Yuq$ige&knTeW9llHbVQc49oA^+49`48eGKLKqXm|6qkos|zx=C{F$bi?O$#cO zC<|FEj?Qr^%cvgN;|`j%ip?_{cnhnq7<*KG;FedtLK!V-SK2;W7c$7jv>n7ZK_Q=s zHjGv5qTufah8QDuxNvqbAl|ogGJm1t>F|utchiY!GRJZkwOfR^zk!Et&3?9Fc_!<2 zCPpnBvZ5w;OsKzFa(vz`lYXTvDeF@IlV`Sv zj74vouZ4ByrIkE>6Vi_otu4-I&Fj1j%n7S8quf?+p8w8bwkPYx|xQ;)s5g%dB_NWq7;lvCFow2SEaf7NhsQX?v^Qyr8+nX<*n5a_h^H zRN80Ku%&wj9)!Ie4ny~8(Pa?0?Ci*Nkkb)XPJ^NQe%kepi@ClYYV^|mOe13MRAp+! z@i}QEvk`kVG;wq8%Y^6ZD0W{UGgP;Jdw$(}-eBiEeOou)=*C6hUnnDeKt0$ua=!3A zy}d<@YsOL{d7ydZda04znxsXhp=u4mBm0HQn3o%v`t^oT zAaat%bO~`py43AbTWEYR@3}2E7^Qr?X9zl|i502#tHzpa?a5^)kM_qWvH}rHX6+B_ z?CDDOcDDyx$TWHw92)7(9+x^~1W zadxW>|HRii?zDl%fYk^KvwZQ+f>#gJ@2+v1OKQ*vKlq6yBoFZUdS8 z)U!@{ull4elSZRPxv!(^#6*+5fWMj$qEHfJ;;qOrZT~?olq$o!uXWdyAYaDlm#Ohp z?8u*Sy=NadoGT}p?*P^6gBb0cX@r!no zo%3Dfy4Qqhjh>HxaNm$bpr>M|`^n#b!I>UK7G|!-;7=^=stNdJ#pBd@H12R-tA>s; z#jwa1N1MrEMX@xN`&DeynTJdqFU$D*h5J7f`HTBEpx%4!MM=AEv^AP38tHth?aTY=7w?OIq|w7R`joza$dreXzh$<_5!6&otIuWYrTd|Q>(u89>MOO2 zAN{gV`pHQ>FRfj)xGHv6Ce$@)G?}+do@OxZ*VRC0b!7uaH&%Zn+&lod*V)C2%e()4 zBoE&v|j-k@DxhX>kf&^-BB=`+4M2uGFXObXPwg=sksCQ0=CX)n7Wb=?wt z(hGyR>l*q@dIY@tCxa&B80ze~_L|Dw<%1DLc_1T-G;YmFOO0BZPIA+7!%(-;+w~8# z(kKp<=1SdVSdz2s=Wia#T{v%`6~>(7k=A+aD15z48xUAoW_a*FO4|~3+F0^Z#gFpd zXPunsGXANW)G^^W*K@wt37WK=B--mUhC}91JzpUx)jKs-=IPGdMG%#7HNAWu1DBmJ z@lw=h2T}eAsQ*WKiFEB;X3yhdIRyCSFMjFRK4A5SAf7$e@VN-|$spL9~wfdj{NKrfN1hNIU{6G_W7TfVuvANTNlVKb{4ACAAB%;%t& z=KX?Qne(DB(e>2I>H230Vfp1kF6?S7YmQz-AP6`ebk1E?FyXk7L>-;ExWJ?+xZ55GDb^Tk7OC)aJrDKYq z$^8KFugh_UABW_X*bt_#Kdxf=T^9*tV#$4P9-lzi( zUvBCtKga@B$cwlS&&HSgOxyYHqV#U(Osh%5Dn0~>POyyp@d6n^X znWlV6=cf5XV85_DcTK0?J0}BS6PDM>#jyFlM<1P+N zq@km?QqM^qxScHpjX%NIZ0Atnya=J%Zsjr21sH~oI%tcY7-62KqpDLs1PD=SU$q8} z5bAW+1C(w z$;-cc(TY|zVygN4$e7}~HUAc`oMo*C9$U$y+lB0=m#=DxgYHT(uAIktnmB7PZ>jax zd(4xw8(XD1G;d33xIKb1Pyh3rg@f#Te#+<*{4JKWdtKj*c;Ku_tWB;Uo43$Q(foeWlD(`*i;v(3l3x zsqS3r>v-&3n<$Hvo5F>?ZVp*OSa5ev7wM0wEnjeumBNficBC=;j6ge)Vu$D=5QG+_ zwyUelj%zF1Qlss(!z}qe>Yk|nahGRE(!I~>)`BA-JL-D7iXH#z!GHbW^pxbmgtKZG zUh^8S>-l>t&2jo9BRvftd+|xXc3|%ZkOMNpKH>O~#+R z$;J8$T|tNt+=xnf**a!%$F&L>1n0d6*9K>vNiTn*m5wHBIm?5;c%`pFJD;9LY9wlo z9l7s^TOrR>C&?FAJ<{p#Xw+VOq~Sm)h=kxSeKxe+Y>KOlj6gM=!=7K^fRIZ_O50AB zfAJWjsFSk>-i3ApVE{uqE_T<^*iN^G5l{@Is*&!O>^Wu@Uxdd)3&-LlALl<3DF>a|+bQ+0Wx< z{UlyK%IqjT^s`3~2{!R;xUxX$AVe5aVqM(f1lSF@5b5nnuo^!ZUOO#!k9??qz<$Jt z{wBor*NNt9xw>Rnd2iY>e4fWL0N(dDi=sX0tB)IU!4nvtZatO{G2(GJic%U~po%%V ztL)U+frEdE78x-=RE-HrX>z5JovJF{$jxv{#6})};Czcj+{VsXWlef;c^7^=ozdgI7E^cmC(B2uu8(6-Q&f5j7Q1vn+d_ZG$+o4OBgD-&-% zr{W+F0Bd})5kbjIUzDKo8PvlebcjBJ<0Z4sU(LU(WwLTqV6!mj1w|KhT_oV*zu7dj zUAVYa9s(YR`Rj4B+CP#&okpjYz_L_J0J^kAolyZe9Rq1 z607@|@$2~O^mls%T=kxOg$Z%T-pk^g5X59c(2Bx3hFchEkoXWB&BZ1Squzb6MapVieLlo=w29Im>8;5ZdH>H33A7kt^5%q4PzQ~Ugvhn{$! z_iuvNdV$!gIA8;YqsFDMt2y5&5D;7zcX$pD$M*ER%+98Q;`z}~Qi{mShZSG`GUY{Z zXvm|gY;OQ3sxM1GRMQvPL^OkxbY(BII+2WHz zqfemWbIoBH5TX}*on-RB$uex_kugh)q!6YbiAjxUbQt3WjqDb`l>;F};sMta0bbqa zO#N32&d^zTe-hG@03#I&a0s71$xrh;l%MC7%N8E%P7eZVQ8uwdug=ZyaL&tNGcB8d z)W!d=uV#wiAE~f1H~ny=k$ZphHM#7<`{0lwm@aI6$rdW~fo-0_PlE$m^~I1UQ6DTt zsE@q+0?ZNW;!jp0x^It=rrS4fqrq=Oydzocl4~8yAS`japtF9<{s>$IM; z%zDh$Bc%Fm32@ww6d8(k{c0|N@Kz@*SO|1eTlPz9inZ$^&mt(rUx>(kFaUDQPWLQFy; zm&?x1o{$@i%MckzD&R#mWIa{?fK(b4I7X>=1 z^WCymrb%2Fh6^1L0|Ns+5mYoZG%`x-qn}5vcp_W6y6CGbdOz6g%zT4YTNfIU&h`%9 zz13aNqvyIyif}~17shR%@T>H8L0v6#U|ilZuTdFRW~aYL+5~5rk7`oimEt$p zd*(l!#_y?7zf{t6<#w_|z8?+zC}@q4-K<6CeOQ~!`N;`5a4-WhKpeOdVj}yJUTC_> zA#FJ0@~3f0Q#~lV={|;pTpiO(#$ktZ?1mQrFS|2)v@)E^@ZJx3D%&1PYz~|^2#Z=G zo8Nxv!%4Z8wl;%G!ElZ3d>pfGP;~xaRb1`b3vDr#V^B_55gacz75Y1tZ*4 zTU#3%wNq+Ak4Su7WKW(sT@>g!o~hJc?C^pJ@TcDI5W1|FZ6k$#=|3;AZiPN3l$Mq* zo&M%sUfzA^B=EhpEFY1-?@VR+oP$D&(!+lKfEW}i9~?sxu1{&z4C|@|Z?qWspKbN) zNKy0hdVnKIOiUCD!TYS36a4X`tX48sA9HsuVqQ)5njnF|9FwucOm!4cV!&y$+r$=D zp4HCdg`xLU7?-oexW}HA6W_`>(wMscxR`QKyH6G?E5=dh z#btmhC<~mvO z6by8S^@D;ua}PgazUixWq9lw&4P$^$(B~CL%=hgx-1ms|b|RTr;R(8qHM~cFyp@rX z1WxZGO(ceaRZ}S|ZT=9K+ElaFnkt_g{787~3^(N0kMeCydC2Leyxz9a}{T_1xUXjb|-*KVJYBwUbDCZ1)az>$pZiveY9*I zafRyeznl_edd~aa3WB6Ru8dZ-zKn`UCo_3BayEO4WR@ulD`mTDh@8KpMnKS792Y(* ztECj*&;#Gyt6N{j{r%mGyv=aZZ%ae>t_VhUT2Z{gNiKw}cYHfMA>#!3RkzNoQ4euo zURd%l0Ft~puELHtmDm~Syf{%1)-%?bP3Nc<@MN^}4TQWXBDZ1`$f(Pc)F1 zWW|&yWAna~Uw&8hQ`gJI7{CTT+a1VE1j*#1_?Q{!05?iWXhm=AppQlPuI~z2y;7wH zD9tB1{3+bPt{t3AW@32Sw3{ra1z+Y>`LTQp_YH`y4KY^@3F*RL5TGNdE=x!Wjca%T*Eu_=&T{aEY>!`pn#j~A9Xq1cd}d;eK1WV!fUd-NG|p4ADyBy24} zOe5^gQ)ig6Gih~u326&W%Z~;mAI|?8xCV5G!;?^_s0?CPlNW2HKh z=S?W3gg$});|G-%#}{Txi}9~}{WgGEUPMhWPxD_^@h;V-&Ze)at3nyqh#H2hsKTS?6SaqQA})$X9}Y9ZqPgQhf;p5*=^2rQ9pb zj1QUl5FJ6u&KFaB78N~@>M>N3xL5%S1IZh^#Yoj?Jdgs{1)3#}vN%p46b-32Q z|7`AelH%vL1AkF|Zf^wktjET?XZEI9@*b0aG2Ta~?W%U18X3lo#a26V5 zay!I~#uXEO>5}D=CXB<9ew<{G83^WTp;EysrPb=9b72#NQo(Ee_55beZs`j{`;3Z> zdiTKE)|pm}9e>Il zgWrs7ZRmeDYsMDCR`LkACFb4L(ihUS57SF22>>YM$G5 zgppn0H6@!`g{;KTO)Ej}W1h(%SBbTz*4r#YJ>5t?9vz?>e*GLlT*Gk8sFLR$V@b;a z1`XGd@RM{K#zMt#cS}Upq^2R^lzdH%RMBWp(6G@g@qJF@U<@Do@UQuFcI9l_p1E}| zZLR8o=s*kntGTxG2<7T{TOnyshm5D-NqOqI#?v7+fm9nXS9Jt*^LN%I&DUj4FO%DU=(vB*cTTVsHI(!YHmI9_xYmMh7`{7g zGJz<~Mnj;>Z6d4@C4WD7k*@ljydlkpBevYzR7T5L=u~LyM%R6pd{;?VXLE*$3nxEn zW|lN74$6G@j!?|^xgMSJzcd#?HFoQGMyYUFmsTR0X8_JjM(4c@W4*rj%&Jqv2B(Y} z_hu1s3XvohS3cK5lR=+Y(lx2~;&zxB4h~KZ9Z4K!@R1#v7UL=oNVYe9gUb#0&QI$3 zisL*VqS}*Hx}^PgMDDhWs(^u4LJG7FZOeBJ^><@Bsa!+2!&k-BXd+Mt%@zmv(z2*? zsDneLfiOTsIV~}Qg8P25sO#QK=5w`uP63^jpv%b3%cY0*qcoDsJp(kEyGVlk02J@Q zs_YELm2du?KIUwrE;RdV9SjHi!KUXF_2Z{~#5|3)AD)BBeoz4(%9Z7^hKMpVmk?jk zwiXQySFq@^Nk-T`XHG0fvLS?;;OtZOd%*7PacR6z4S4Jy6(M#A)H0bBvfNJ(*+(zM zbQ1mcP;{-)c?V;LU%4NUF-w_IV0ph+Vl;%M{CPB(& z(_o4FZ63Qv`LG! zI7Bvx#-D00b&DzC3`rcCZIW9#sUgOu45R_-O=WJRZ=^qBLiWgw7QQwhAR!X48eylgtFarBv@pWOcf9UAHZVhe^^&9thgeCh(|~|LDF2dEWdF9QvyYLnyh}Pepd>z~uQT4c1^c ztq(*b30a@m>+oqKpi@2tO_abm_EmD@bEUJu(3m>#%SU(;Vc%K*&#Uz*0Ms|;$;BRE z!iiHgm#owHJyw0dENXaFjrv^2DCe4B= z&?BL^5i{dLo&%eebkJN4)jU+^KcGN{B+UJZ`essgK79#9I_51V(r|xW3r~!o!AL>K z6Z19N>$L!j8^HJ_9;glu{a7VOnE6k-*X&4naUMO$gcaVfXX8>DM!z0hQ4uwdPTW!q zdYGt04(}o?P+7@P9Z-}tkJm6FWZyJ3Hr==3it1Puz#s=Mf??eZirc+#pch&`m}b}~o=^CUev z6}FVYRxfz`A&OdZjnl&JI*LG+_YZkhGtl^4hnmUERk}=EUF(0!HPyPf9IHOCr|S7> zQSt;&zSZ9B^@<79Sx3jqLp8sBnukw&CBWnThmSwjKQ~Tznj(fivG^=`kH(KZVi{Fr zyPe7{qn2-ZBBlTM&(aqBS{8xvFtmSGJB-yM#<)b&?`k)tfq?UJ=>U-GW$XF9;7BP4 z&}M@k&OeV9HS6?{3=UNvZi$IRdhkCxOMo< zlbmU4X{pYD>GiT;y>|9;(A05C8`sGfm+W*U7aOa8=lRV91+o|PXEP&slsTVyF~!U4 zb+{AU5CXKXt7c;XTojq#$h1Qe+J-pfY`C@@u2PSIv-zLoDB*4#IOr9pP^cFikH%N% z5ncKvZ*Vtg^W~-aRk}qpwqU}{kC+RsGQNHIVd`-g%H<6dt0`ecfO9Nwv9yxXK!f*m z0Ty`jhO%u3*uV(8-T_E#Yl;>YxW`5UQX+4VVK9&k$fXeA~bzWv*Esg1#5fw z`!J=NdC7-BmhuqrXRKx4ntj|IG`BjmoFBqunrq@0WK^CqW{x!YU7z2$HpGCq{>SMb z`+)ieCLC0JJj6QefSU*L1%wSM;|tpu^NC>^{4Q`I@sgzWv?lMwa2$C7>{p%`rxK0D z;oG!S>}@nHqAeG^U?|-xlhws19fYA?Y`Evl)Gc+&OSjXvugOKSUNqhyD&+msIFx*# zlYc{88O@Uy)z?BoQ~vpSd|XnUqnWfoyG9< zePTzZ{qeXF7tGJY063fRqy1O)CO<6i?!KSD|^Hwg|$ow$Zx<* z4NPZvT$^3u=H)=B%wNOtPQyF`YmZI_aZF&hkqZGGVOnjRU0q@Vq)2di;VaBm^63b> z3q8%|nm548G}bb(3K=!nDAxyLWi|n89(llvfgzWTO<9oiha8w)nIMp< z9t4Pa<)tC}<0jpow_W@JsyG;ZC2Fkp!?{Pst^<0u%@QJGg}+muhT;$q3RUBdCSG=5 z5f6!$9Fq!In?Jq_a=TiR`iVw9&+rt!a*0V z=u)cyrA@cL-bvKpksct{3Z{t&c?HL6c(q&ec9*hA-5IijnYwD3F6R;$o!x49jOJtZ zpRmd~1fulLAB15=1dR@Y>kkgQO>_sow`2?zF-5^WCoiT?7f%KDUcLckq{K;gVmueY z5Fy6(p2qF~U_hfbT3W>Ar=F%3O>5^>+wQ_P0kKyh+Z`{rNx>c9H~b^T@U6!pWsUtU-|mn3Pf=|cY6XL6c-FUW}Yb z0Rh@xQ(PCok-&{DICCYhn46feL6`t8e8I-zLk-Z8B_z>CY~vQ^aoF2RxP``Fmmn%} zy%lSr#$9cbDNkF?i-{>nf$yJoaalIlaSvk%G`38b9M8oKasYS~NJEzGCReBK>L!nU zx<7|v7U7YMrw-7{S7W9Ee#rU=zU@{hDKk9p07` zT@lTI$t*MVv>43mxi1UCgSs*M=k;mQ75_Ab&~8T{Cn`2!STS+g*Gv$L^nB7l7F++- zF`&AHHgCBBi3f{8UW-SVIQ;Y1Yk4vl^6A=$vnr-o%1*)8ic5y`e#0P`mgNu&XpO?J zg_P9Q)fd*c0H%x&N%#P?2#vOMW(trF>_1t($1h|&4o=;tLf}jB&m9UZ_BbUKfDB^_ zxaH}29!t|aDvpGW%a7tA7^Cqc*1%Q}!BVPdaLGnQHiLeVM}*b)EZBlXscDkXs2I>w z61P{soY^Et=5Nv}_a+$Upa)`dE?5h^{o{~%9^^6JpKtGw@94J%ti7ybl{sfFsw5Lo z2BlQl-pG&WCwTpJYy6zHa565ON?e#DXaZEHi($ zB?TWPe07H&Y#t2Q<>X{@lNMLZU(FmvCH3Sw7QWFcYF`Ki8S3=mMe5c~GMhgOz}L^) z4>EudhFl>Zu=iAL5n&6|R`$$O#|j+^O@fl(cG8w}g2%Gy^H=gE)n_0&X-kMzToQ3y z&yH+Ol2k3l*`deZR0Kap02;LSQHm@qoIwIZeF< zrYM6c5WoMxH$!G#`VW3pbbVF8Z^nR+pJ!tL(w#ORh-xCX(1Pz{lX`CKeN*U00Z77} zrDDkfKMT5g(c7j&i<>c0O2x0MO;8!-#;3OKJ1S7kj?VS8e1IBf+~1BGEvXlQ7E zXbTD55COHecEBSMNnPkR_Czt?m*g}xC4SF+QQx;Cj3!Bs*DN|FcbF_$LCT6W8nO8@ zm4mXp!qG~uJ7smQORJmk2)(#?OcQQAVpFD3$_XL=Pcg~o^*sLx4iaky_|3Snp)b%< zEl>)O)1_{q1n)ndx!U8qdqoVd0g5k>S+;oUSlKB2wpuX3U=xVjRDtwKX)J8OlJ{$W zMelPvQ*W@{c~uSZwiiDvgO{%RtXrqVHrv?9HD}UK8!(cm_YwE0P<={37_yrUOGrv) zmN*-O&TXVW#25JMqya?1^y(cc-QJq>j=Ipx2XDQ>k)!Wmr+z5@@BGtcpz~strgg zfXH&*Z4A@5wpF|XG&~9NtZ&$ApkQ+AKp2L~V0qm&r2!Ojsv|`kU=Du+Dz*;l8qqN$ zxacttN&tH5w5E+NrBLVZYmu{Kh4TGswalghRryt>384D~QfaDm-V6$1FE5z0lSva7 zA4Adw+)5@2v;cPwya^Qt6@gGorm6y{0#7|gjYDt7RS|^g3XpYHCcySriJfaaQ$ zSd*5!aB#5(yRYEp>F;V zOuFE2E5=|GkyPwsrdz?)kr;Z-R>l7eQ1Cq=R?nj%?TjskmfGiN2 zmhLC+|4~~{1ukq*avWMz#0XU<^Gm8CKuXgE)Dg@{ney#bdq>H2Ujb2*S^P>-7Z42F zs#4n^)Zu{@pXq^WYirkuJ!LQl^6=2PZ$h zQ%BK~MoyQYo?zHaIsRr+$~>}m)mZ3(+XM{@3#(QrPlUBCV3ZzAM)1zXGv|N_Gfs-i zs^>WlFyWKm#}z|#DzkTVNW|8Jk2(&ZIdT1$xaw*Q1zC`>YEmaA&7m2_$8*}76Gh`q z8;HSf)a!TmC@u*s+;U>}$>(t7d;*eVBUr&m@ukiM(Oe5Ly(D6JZF zyFT0mMSks|a1i9nUXt}Dalb)6L0gh0FTp*b^HN#FbuKQLA+Q!0Av@5LOG^Z&HF-jT z^Qde|D-PN<+|2*-Sa!m==DcS0P_h#mBi-`;6-F2zfa02Dmv0-fr|Y2B9y;bA5?S79(wX!X0!4ZJeY-B7R2w#wQ68W$ zKoZ4+wqmvBFM`zrV$zV(0d$q2A(=@r@5*v5Dd?X>iVlJa?LrbcJQqjQM1|vFc1SsW zhTw0(@C`g{(oMU`{QMZN5Ix7Lv`L(}htkK8Q;KPit;U)Lmt~73t2H20<8sm44qLH- zrVYB{*fcfQECKlA`OqfJN{K=$xr!i;G}W4|#%)@i50uhDODR9D!m`azFP;}-?ft%b z#3VuLJ1sxWrT`@3ixyF!t@Lw8GFS|cPoD8SANH%vIyg5Q*(~96ZLYa{+*i=?`CW%v zqbVWnN_-s5#o_bdHA=%^9*ECd%MIgiloZ(wX0KY@DAWvK9s+$ z_7?Tz!meUI9HgYE_xn#)(Bb#&4)`dB0kY%5E(8k$I?9(@x=z$7^-j?qbq}BS^RArZ zLuCo_g(r+BJ#FiNa)6JVeKGCtFklH z0nEFX(jzMQOUUw4X@34lvT>(~XXOn@w$n|4vg=iVn(QxOX>0v{L9|!8T||O@Tb0Lt zoeG|-)e@Jwmc7~1(jpl}6Z84yQOTUx1Yy<3px$$eODzlIy*OYW*Jc9{&2Syuzglm= z+wKYEsdM4w4!-Q|Kq{l|5HMDO9e{ZRkh_46tqtTZAO&49&Y53c9;>xCskCrNdI#Rcv!b-T~@l(f4U=XfH##u8{mvQo{F$&5MBPnEXDc1qLIaYX&14KuKuu2L{qjf5+ig2_gD= zOX%uZVPEd`#ibJ9^D3Dbcu3VhbJGe%_QzLQ!uDpHX~^lW0Il7#*!<|;AT?>j7>O>{ zD16wc?&)^J4v@wFTpkQBF>It}hQfFsvrF5?Aw3Zd+jbc%M@LyK4w#h3{tyN*}U8@dKWx^QZ! zYb{79%9~x|zr{Le7hg{Ct{jgOHbJ*Pwx*Lge}ZR-djjYoiR|#? zH5Y!^gsB09%HR7sa5)yJ9H3Fd%7%Jq@9DwH62Z!1+=pmOjWgC|z}A$KEt|8xuNcRW zUt=aMZ>JUiq9Sln$AOpyOgC(H6$k1T ziwM$h4ZiGZ{F(!3A;19{TU7P$(n9DsS&>jb-WgwS@I4hq@GjuaDneezBPs5PM{`Z* zyZ|}9zd%}EW_7kou==Du#q5=G1wd<)&cdCTryf6_9@od$x+-RU8v)v5(z@?!EtQmA z&OhWb@Rz{ggG!O@VYd6|ScsJp0a(qPY0?9r%^s%$j%y2U%9fg3sIK(N)O0j{2Ne=% zSXI~=VEV68z}1RrZ`Z&r<;V0jPhF+eDN#D25GJu3I(Fax0&-1?g+`Z|36n#z*U#|& z4zTavS5wh{T}_STgv+br=<7x1%sRNl1Sg|+%2gnoMoB#K&6_tbi2-z00+`6ES7O)R z|88jl-AB;kg8W1CnN$-<6@OzM=0z@&g8HYYFX+I_6A&-A7^3YA%jUy62cCE*(|}uUuujuALxU#JG#G1Yo6_pMf3z_!({K{dBI7=_^T|@(^<)qU z)VI0Mg7p_CA2wXMKbY$Pw)yRT4`%Xo)U{@d0aywPSPBkeDebwW#P~))J`K=0z}M+8 z!8J_6C7%s~q)niqE(S0e(R>yYEBG5g?5G-_b_#cFhEDc43t-*-RUqi;*!d2(LSUIW zv2$?cT_z*F4Bd3yQ1ktoT@M|FoJ@D5bL8#4E^wt%o|)|pbxHA1oz!m=vA;D zp1Fp!2LRooSoQn<{i8z0yVwgdTofpeV-ZL9dZ-C>x!GSq3)4ok;2FiyArKiTQJ|WF zTz2;xLKV3-RsvL9@mV*3c=1JbeifJrrZp}1$|#v84M&Y$JE~aXZ=VBK=6PML9(rxN zua?d+~MxYMda2^-mIGu$T%3Lno~ex3+_Erss8|_ z#>)3Q+UWyEs4&OrJXMkw|<4uivR4*ga^%6^s z0MtnkH^bp>L=c)MPo9l_>kP1vc5iTgDT|4`HJcRlybL#`#>o&Ax9g_(AXqXOuMMX7 zklrNb@}Ui{TBK*A$R2ZO28?^h#axk8mLQ6I{n>&3=G#U1#?@~|iqZ(I2p>SMmq4Sr z8&dQCG4@qqS#9Cgq;!LbbeDjHfOL0v34$QqUDA@$NcTslbR!^A(p`ddcjrIZ+kKvM z?*3aY7IV${#(2jVbA3yme=LD37PLIqj3w+{L?5!4!W?^6>!^0Ip?~8N1q-%Gh3t}nuT8I zJHHwxK~T!e=M6l=s+k@n-*B}J+dLVDEg$0nFV{3U&-vx;dL|V)pt9_Q6f%rfaxJwr zXb3{wladn}9hPE|KZ^q`Q&`~eaSz4k2wav4v_k930YhAG;O5{e6?beX*wN8<fg%uSpA>3v$Mt%QVtw68 z{mZ%)4mM_TmsGFF!JEa(^N^dTO9%I4v;a4hj#by>A0I}SebA_T_-?UA?oZhaM7X&K ztM^t*5AQ|@Pbx1_DXY#d(if#KVUfW8xGYph-vz}ET7fJCB-6Uv0MkjZ+(k0DL_Lm1 zrYaIa^qos;{-hFI0tublJjlo$ngdE(CJ5|jYwUvQ?({M@v^&-QyX zPYA}xvrqFs>;fwR*>AXO$+}h<8tOht2XIN7#`c9~byPlJ6c>@Sz^yV4;^K-A8efqX zUP_4LAb)DdPFM#nPv8&-3Q?hnw)A*I1Gt6mgwZPtct8*ao^l6LobBW&w*bjJupk- z#9k>QtC(8z$;usE;@$>I$EU?Zwnf;JP3z^|yylJV%gG(?wr(JJVXI;jqK-{+GO13M zM*R6vXB;IX2o0gh>V<9zsu|37Mj!@sbC)`s!zuaIJ23gz-l~(6es8yxtT+BXgQu~k z8W<165dLzaPFmnlC^2Iv_?BaT>?6TRh2jn_VqD7vsLG;H39y#yRGa`W^;a%B|HI*H zvAS=7vj^GrySu#BrULnwORrb$N5Myo8E_3du23Gv72rD{w(IIllgri?n`Gm1z}*9gxn7IN zg%4x6j7glzBojkMgG=B6T962*APCoqFJU`L3Dy>QOO7(8VD#f8(s$lF5&rjX`uA=R z6b5d-LX{|NZe)tbUd{_Zhie-F0?m1$dIYp=AiGZQ=oaPJ+haG_U+;^cd_mOqeDB`X z;bA;n1gy5_Ci$RfF5qf>z9N0=`xsqkatLlP1LQTd!0)$YrVWg@dY{}rfg9-=s!bDp z57znMEY@I?u zev8B6dU?Hh!&6V-#nE+;)#Fiu^dA9vH?O)0zbz<_i)c55|C#uMo=AE0p&?2BQd;pY& zHq%aOa)P$wJLNt>=XkH@G+vg9_x!>nQ;y6`!;f@kHAVhwx+3J@KWryoHx<;#y%%3A zc%RqX*z4}MIxbe1hnY#^6-h*fD>YwL)8!}&d}6t)pL}e;-cd@%B9|Mq*qwZr`?_mRM+LI2DNY zwcFvE_h+J{>i+*cW4IT(^Pgw9HEj3L{NSiA1|L6=R-?SekED>t(w#|*^K!;j&c=V9 zNM%4w-6O)n%`Dy4g#6qi+fMETElWyuYdsa8L;@W%4aU~R>wA~H54cAHm``I9lTZt) z$4+Gky%9>PA=`K6tF2FEV|{=Z9HLxBPiid zyA%5%8=nX)>K!~vs}eWO^)n?1{n^PN$`S+ltyfDI zm8&$D{x(#QpOVz#z*1?`&>U0P_p>B(t<9I=dOJ=R%SRS`YYTjKWs&6V(?_XhD;ee%ypis`znW+W`9TUiu5ad-bgD2i!_D%4m{yPYB;`;Dyqqqa9y}hD(%5M4 znob%fcG(J_Mg{IizP!V1^pynQ&qa{%nHaF-=u;Vac>Da@IyuJMHXDzRH}x}F`xsMC z(RPi#uJmI`>(h=nb^SXcS4Xi{>SO#t41IBQ%))<8q(t7Q_Ex1U^if7%S?Vmf^(c%# z6rTUGmdrEyXX->S5xd93{WrSTp_jkP)(RAD#P1q`>2|N7dg`HIK2l(b32cJY>9azW zt?UP_2BKVj%{#*~G-@52vK3&-ef;K1@?M$o9jTA4d+SAcNLXvVW%E}{7P@y>xbRrG z;<%oo%9XiUFbw`iqT;ySpJytw3ulz!P(s4aXuOM>KW$bW4&s}Jqgc6AH*a44s#bIu zGNwtEqj~I8ph3tuz+LDohGU@gh!i_`xz5F)bm!FZu8}OMD)3KmtkDaK-D+E}&bH4l zZqW``G@37e)7Y7q;D1VWGpbxxsNz&Y5EpEcF-TG)Ly43Q@d`SK$WlH*{8WK4_byYk zUg(>cso3@B!vaE0{c4`;9pB{*L9`Xe#MgIPR1u=Xi8?m>CyaWCBhS^F=G0h6T=PYQ zFC@kGb})h%p-W?lLi|43@-)>-MtsJYrsCj>^@ zPEKTv(a99nF!v4mLe2Yr{lgxAV$767 zAqt@lc8TpTyq1ShOA?J>Pgm5)MmUicNGUhX>VB!?Gk^Q5_A}fo6vrVz_cTO*&Gh2E z=%4B04?$GhYOR+R8Nz?48X>yY?GV^}ZXy`g%*cVoP~&nvdH*MWq6N~aGE^Oikc;k& z_klJN-hVd$Eji6;#&o!6zUUi)*g?GV#}SNZt#t$?sLJ7q;*s3wqX?yvJ9s0mzzybx zgwHd38t+omm7`PMUG1+i9+ulUhoHglLY+NZDrnC(ownCR3mN&~3j6SxEuam9JhL1{ zU=-n4-g{cfEMfKV=!|{!&&V>A;K!DLb!uUD0q^jQlZG?Hx7ZRmub3@PyM@PBtBgXg zl$P86+-7@xr>|@l2gzJRC_VW2EQG(7{t*K6|dNrb}KUbd`$2q}7p5z9+(- zLp&uo3Wt+Tsw~dJg*HkpH0dSrQ35+xq(4@^$(fd z0f;2>Puu3zc1jGFwwpgh&cn~+RvUY9q9^&zG5A&dXl$EZ?$6crY*Cz^&0F5KB=+drW{sorC`3 z<55;*N0_f0LYCjp{{;hn8|uRPQX?Q1Y7jb++zjQW9S$6)j^5oM>8D2imG`um{%2Q8 zab-h_zB|xOEOY_Kpewb+kE15+ zQepkFUys=HNJ}N$HF0>L1X%bMNNm=0f8cVrisMacATnV-Y>1$IZDT(ZniV&py2esJ zbHGuBQDeTFMDD-_C&}^8NusG|_N=1S?X2Uh$@4q}eX_Q^JxjOO0N1isPXmLO{pZ(& z6w$KFpzyL=tvHF?0`DAhq#5GU-;oqxYbDhk*v>bid?vK zppxSGONzyHZNozE|%o*}`*k!kt867+qSE2Pt3IXDuFV{Y z&vudWCx;HUGojnkPPqqB*QKL-m+7*iA0|lmS#)7CDA`i33kH(>9eAq$H=}MMM`2Cy z6JpjR#V}&^Y>Z@lGjRD;rQZjv3E`$AYw~h_|6EM^!lNx!x+HeY=Ya+X`F<`RApqRJ z7j$hW_7pc`d_8(;dl{U{+m6lPlRie#ZCsfP#BBfg)6J4 zfC5E7DJN1q*9%HoLYTo@3Q6!yvhbR$0d+(UGa5suD^`NzPwoBY%<>NZ)xn^%=@`S= zKN~PwP!&b(`R^_8c;H1)-0wyOm-58TMly^M+IR#cq3!+f9F~cf?nGF>j2@pK-J9U0*iG@&=x=cDimd{0JfR*rWDT?<=PdM$ z8!WQ1xyuavYj~SVXdE0qYI4dh9xCqLjsC?cA);LUsI0uzx1$@3q%d1NaudpCQg#ws zrb>2xTKNdsG2$kY{Cj>l7iqUNhy(4c3Uy zO`We$V%6TVmgMaHC@x&V#%qtzl<4yxDz6pmp1wNn#C3l4a@~SAF0LHYLU$rhSp14P z$3a9Gpcz<{V?@%g*S7tiR*jXasmD}vjm9*^(_ylMP!lq63A-E&Htj zN_3Z;3Kik`f{GFAYeQdC*&P-UX$M@rykIVRmd`|HJq8D@_4IhE@#z_A#unV?BG~+h zg9n*x33x^>&uo6$5$gL`vYKEy+ z%4?NErK}5rMc6+-8nDhT8vUSBlB3{PDAIPjJ-5L-@PS?MNb^r@@W$Nw!`$vD{#NJ! zwny7U)qAkVD9=1}$%}ok~cnA1Ke z8r9`<2uV0)Aqx;`Ux2I#iJF5*6Ku1)xDFMWd_kAcaXU}svn|~kK*1n+qv2n2R(bPN z?*pKSbc6X0-?ey;P3Tj5Tp}?l88r7zJA{0}7J;X_@EUXHrBqvN(?XHA$Xdh+% z*(9t2w3%e~F+7VL_`=-)S?zU~dNwRZLBhJN^#7E3#AXrV>{Q7warrRus59i+{UVBA zNaA$xoI!hKgTtH($|EwXFM{ZiTG25x`rk+>>U~8di61!{huK6>whk(UA?Ga65Z_0A zD&>8R5% z$LzjOsTUsIliKkp2dvlK?sx7kUlh=9qe+l-kW&)G69)^$w(PGC4IJGUW`1F4Y|<*( z3pFi15}}sOT%IV7k50aTpD|=KlPE$6%yFQ)$kfUUo?>qI;J5Fi@ArpteZ!O~u(E&l z!H?SxKai9771sxt+kI91IO2Puq|d#YcBaeEgy>-b7}|*l;R%?4X$|?bP~nqBE50P7 z=2D5wK>mh>o=K3vCU1iDa^iE&j<3XZh_zPGEs@C|TRQfwYm0dN^BdjpKgj;A@Y1u)BYO1;##V6Km_kR$JxU4x^U$&2 z@yW8G4%6~-3{Fg!s>&oWyNcI{XvQ6^q3;h8(8uKEzxutx{fxB$jjE1heEop>Rt87WAP|hHM~F8qQI3L20|Ik7dXc*EKQa+7H>-kTrB!-w^X< zum1<^js-?yNNUO}SZz8~$_CgM#n`|uhpod*KgU^=-y)HWp_?SqV<;S(3(=cA-I&3`N+17 z`FR;H@@Y>Dz)lgv;`MeKfkm+X_lgWJdPNLhbP#`k+LOcK=tOW3q5m92MX}Fvr+%0E zs&vWg20mt1*4Lkl1JRp{6YXXDR6e41{K0u~1#R&r1F;UCkDd*kjoGdxRfg3sNPok!4OKiT0@6(mxdHX?b*0@NwJqqb8p`qRydW_{I_ z3P%+Qem9v2H`vS64`w!FdUgqE?c)?ePLXz~SC=CWjOH=gzBgXi={`n7npG_?0;p+4 znBN$5X35b84X(?<&*C?r9?&2wpQvLbw59fnJCMmdE4G$)$38F2Rc0rNlH?KVDp{r; z{K!@{u1mfIp`-ixyh*Tt>jkOyOwm}s2o$cS&mVmeqKmyg|iQfk|YJp7!<#y+f) z-(Gx{?-JyrB}Qb&O?)mI)tYXI(`u4y(B>o2#0Xz(4TpsR_Kv`6a(6Cw0HS^#qWFdI z{p_GufW4tT`L<{hEiX&S_SH^ioRKs_C)8!vp%aINh7L_|3~aFwLH(~O6AhMe7j>Vy zFe#Wbl6%`55kHLN@!N}PLP#@m)|>?9an{^dMCPb@t?Ieycov8#bzlE|eydxJYq`XK55eAPUKD*RDwXWuQ-9$`C?05f6}CeW{QN z>#)T5z+OV0DUqMQzsV`h}C4!exZ#}jN#!Z&3pN)zVVc(+Ni)Izmi z$X0}FnXn{bE>mZA<1`>dTVaK}6Bq5`XEN@azOs#i{-t@jE`lku zDWaLPB0T9KYuVuI-8R?EC91_=0TzV9KLRXtDe8#qwN@-dbz(@R<-$ohN`jLE$R8e= zVLN~GnVHVO75IOIX(#OYtaC|TCS_vJyS~t$)zKAl3)c9oL$MsaZfDlhBiMJoVC_v4 z>LjOs2*PBYSVP*3)h=6j4F$~Fn(6K<;8@+=&bi?rf=aa6F6t`=P&d zI)?q>FCyC7k+SCdnV((?B->x#{ufg#--B8|qJM_qVL?ar=3nDLlS{x;Ss5uM**v@f%dLu!|LT+kdH(WKB3Ldt6QgsW zybmSszJI6JSg_jHy_VAR-zBN$)BeAg6CsKa-SYoRLP#*yrDt*-2(jUY7Y-Wl3NHF~ z1)k!kS%F7hm&>n)B7yqop;2Iic>TOM*#Sxfvwvi+kI3Lp!gFzI@q>bQI)of)#s%F& zwwF17t4zpD;0uuIZW!foBg%fMfdip~Pls*amzf$_k&$rw#fdDTvsZzz;7bK^7Ci6E zH;yyy*t)VsN#CDK!ZupEpZSJPw5AQ8;S5BJ)oV7AcScm_f7}ouh9_)t{BL(XS<}M2CNi=_dum9W zr25lCm3^R^N+YOXt*EYA)#(R&CZ%9aeoJtXF(70*?3$4r zeUsqC2=m`l^BQWjH1YV=EfZ(Cj$8s1ZF+p*+0lh^W^@7n(s(e{C9E zJ!yboToaJ9*nFwn#(>}Q+%IIqBm2ABFxGDUL#HDounT?@w)9<_7pcYt3B!Gq-csUP z4UR(=QPdE;Yl4wk-D+EUbMe4q4u;afK#8Fqt{C(+)0W6jZ|&E)>00?8coQltga56C z%|>a+0+Fk{dFWeKO7mHb!tQYbVn!lehc28pk&ZL!Aq)O#ALnX+e~P3c4uP8P^4Hm# z;`g|Q+7|k8LVvvaR1;IId0I5IgBx@I&HnNiBO1l#lK{O?5=%|eF)^ke@>Lg@>!xYt zj@h{{FvsZzwls+IV2%YbCtb+ASwYOZ&$CcD5EU~#qYm!ZDo zi)c{f!Nl@C2%M68S5ODC6MWtA)qh9d_4w<{30lhsBmrTBV=SFKcf5NM(RKk11*Fgr zq~LxHr6fh3XrDjFZZ0I@&2lza=i6x8qJheKI(r1mzlSPAe^-sNED2IB${_!JVt-b( z(;E1lCXoNsHhgVkBK6D)*7|R6be)h|d?IToI<>xec66pY0=&UOMr3N8@$3z9&yX}s zVh=x_S4&R~r)b&j!c$pieDgP-7-4H5u%<4W`PZp4KS55<6LLDA)vX@8K`^ieEtG?j<-2)j1)-@}iaAxlLm$@LCm`BqM+^T!v9Q@ONg0*zgA-CTsC>N3`08qle@N~>zU?zqQh|llM=eRo+oR4;79c;>*}VaMkN5?G!m+Prw;no zGc6Zhmvzi-p(Jt&nwGe4H=tN?FEzU5S8zE9w1w6b^C1-(q(XK{men&=e+UHff`H(DQ}A(gdOGU<4(kaqLQmG=BBHg=_h&&X zq>!_><$GO&stp?0G0wWtvS8fP$$@;4C#H$jNC;H@!TN2Q)M63gmIMyW4qx_avejKr z=k>Mpq?%$JUcGwtl}Y#FY+Lo}&71VkPi4~ALYJp>uDSPpw-%8i1$*22M+>HxV07YE zSfN4Q3Nzc9_QAXNcPf0XM^X>+7*t8A;2mhq=nemNFw|&h1gX7kqw-E!<#;DwlAl{o zT*nj}u=+2u%Y&s$HJtLkygH;JM*M*L96!bOHOc!~CV@ARXXNWMO}}(@Ytw3qU)N_Y zZn5Q2M=+p20rCQ$`FP*G95>uI z|H=*an~gT@2j?`c6h#jW zo$=#Ib?_a1LtBy>PP2w_SH^86X%GfrMyuhn0yYPBivm|x!L-~A`qWnDYFtb|w0u7pQ6`GB=AKoIaqwDwB?`#_VQ>R{T{Y}hE3T_A zwuN47>~Ho0QFvfsbJfz$=_bh))x$2Pruan^g~+^uRVhdPV^|f)f6IW+|1>MS)$3;3 zCRs`0+dXHS`hJaP=HS~x{FCmK6Pz<0w~xwrL|*~tO)gYBh^UxD0>+DQ%1{$UBacpi zRL7^}mvQZ-GK*K%s(%};;*J#?{c^0Uxzv-;QHNrVYBsur*$Qd{py@^}6aWr(PC1R~ zBDBPSDs;DKR!}+snQ{!z_0Bo~ey^WH9ruBR9Wnx4HQ>(_A>SQ&9@`>4}#xm+A>3{-1`b(-&qkVsKDVa+FjI8t&ugQ zYGYs2{E|}(IEij~do5+GyBt0YTC6@tBhO`ELneQV`8B{IRrn%fc5+e-w!kKVAH=VQ zuH0>k>rEQ2?2TG17U#XXyV>|3A(npz9TNmd)WMjt-SUzHyL6^Sbb4a#pXHZZX2O=f z^3XVZK9_J}E&-$M>Fv81C`TwNgwOe47y1grB66hA0|&F_K7Iv(jG8>In?TCgk3tf) z>Gob7;N7Q=?Ohz)qpkT5G1vdv%cdPLHqjb+G}P?wh0dg42ACvLQCCx0`!ttVD=b=g zfyMdWZ@0)KZ^?d&(yPk z(JtDAWsc+as0VUa*g|x~K;YS@#Ku8NN_uW&s<)U^{uZhB$l)lo$ zX&+vU=yJZiA%UpFYi$VleB0F$q@AcE zt=n(QtR2(mygC-&|FXT7nXXoU)#q0UKx~ySOT#fzeG9;+SpaCwdvQjitFO!?h<>m} zh|@4ZDCY)KN-=xN*3juP=rL-Qy63M~+CZ@b1?CdzgqewvdJ!?s?OB6s`dDm5U4p}p zlul{%z#zasVR?0w0YCs&jd_3W4MqwS7pTOFnWE)Yz`W3u$@BxfvcprW zzK7nR$+WbUMz@JPkui4f<7YMFSi{B><- z&HfqWl4!x9COI2W@>(an?3C^K)nV5Y$^=m_8rA1pxb;UcSC_beZ>XIpaXnnO2B+dB zf6eAPj|!+A^jpp1y%xq-hUwE`9=V?g_)2KEm5_1O9LP#xChO#cJD3bk-nxG-`59HY zoq59)bXEj~FFFKvSVAWuajW7`ILu_zBnCaN>-c*ym^<_(+o_0UWF%ak+Mb<*^}CPM z`Q33gVjDjSe!d~l+#fo9KbDP4SH31R16ypZ4eRe2n?BVLBzj~Rq4$KKH?3v|YTn7+ zA&eF52`yS?>uNgFh=HNmA#&VltXNOTJEPfJ;&7W-%{W3y*su*SlS*Gevuk@i`RY`{ zmke*NN0M06ANc)tQ!1`BWZ>b9W*y!i6`DN=O)n-*Ga%?=;x7BLGi{D;fY67Q1&~vNdMz_ThzG_X(xj5?j+E$ z7_f=R`i-$lO0j~6W4LIWkA*rf+zSVS=$7_6ZH+^vki-*-5DCF4ad8sqjgJ=2mY6;B zTnl;O<=>LJJB0+QrxV>9*9-*LH={~bwu*@BW39ez8|m>^QtXawKWETWDn-~c<0Nn5 zQMf~)>lM#4ej8S*4--aJMBA(xH1OE~Q4_AakRec^{7tfFVFghvYz#|b-FhETyPr4{ zF9*Opu>Aq_DwET0r#2aJzbrvL>Wv$Q{t_jzOb-<=Q@!dCL|ywT_F}(>Q_4tAkl;CD6q&(_=qvQ z#BXjp3#1q%L2c;=j!(4&ZZMMd45DWe9%mM$K-|qF)sW0Ih z@DiVcuz2DBQq37g`}vq?G8F;^%Zt*iU)jd$kLGGG7L?Pxz&-NTxZ0-*!g|QvW8O3- zNV9gjx4#OgMEc7Po736%PmFhhKj3wA2{@EidM>_$fqX!o24qt`kv%BpB$$B_pWl(u|;<9h(qH7pX z0Lro$K|P7k~(~6}QpoCgdR3LQB4+XbghsE#bTZNdjvks~D%ZDw?F9_ATaY z*L!#q^t{rWM)D75uqsrpf_Uy90GrspdqIy;vlby`uP~Xgi>t%H+|)`DoK3T03K4L3rk;bGcIfn*BkgpGKZW{7!|Tap z7VNH*Fh_ReF&poeQpeKF_i4!RH^(QM1R~nh2o$pa9NdEXBM3OM2KyKFEl>OgmM^XI+ zibbhztYR_U=DWG>vJ0TE17ikNp|%OmP}?!m?MtIQE}{zv5bJ>){_$T&=X<$6*!vgP zC8*g8AREw7HIz1#Zi-299u0j>>gg{$u0BWWf%#h!@P0wj>=4n=nf>-Iw_0>_b+6?H zRLw86WyrFI_J7XKB?3O4E44u@0J{Tv+H7l-d(Wxsy)>zcwivxKBEKuwFUBGAh$zsd$L_@aHX% zH#UJ%0g`kd#g3A=U&Khq3&4kMZF7id$2M2)X?JurM4h#-Z+J?ZO~i7vaWi zsvCb#cfeda^ww6Z|K9Y3BE;oitL4?GPV?Q)gPp2{zKS9Jrgmq5a&VJMDhqlFNh03B zy1il7>?ZBWKJY)P4yZvL^Pec;Kb+VdMs~0!#-3u!^oM<5`#r>CO6KI#)HHdFwuI3P zER`0n-stubXAaTK#bj?W^9?Kg*@Ab}yoaG&ozv%m_E%QuW>wB-4dtpBj7G(fCX=g4I*|S9c*^^P;v0aY z?wOk8^xiU4vx6RkigU$rWDf#td@93fV^b18V>;GSi#j5oO_fmcOcjU$NE97 zrvZq83~-Mga+cL*iM3hkH84ojZdN!HizRbm`*3+8YRPthv85c1-c3a-NcbZSyG7>eZZXc~vwZwV9lVjL ztja$VzH`q8<(sgIL=rQcsAU4va!7U9qgN+1h+WhRaY_{O#P!?qKj{Esowl7eKT+(L7R4Ot+>7E~sfe;!(fdFJwrT~7hG4;}h@uNei3IpsPz6brP{?Vg8yB1m&Ma*X{IB`+(WR4V29m=e`$U=y4eC1azX<&o&zG zuwQ_q1wql@SMO9F#ZG4hDydFty#86o`dp7%~1 zfy9B^H>w-E*p_u)g0#GF$RhS>y!@RXpFWeOQ``1>+r6`klevAg^#i(V!AB~&Va4tC zinqWUv&^ONtakp%FZC;uTusA)OywUiP^@?UhqG?b6m}u@-F+SXV3LA($9+xs=TG-Q zhK@rI0wmUdh6*JPeerg)B2C3?gO>UIc32C|trEcZ zW#SPnZDy?6>+{2P_XRIGT-r<@mj{@#b^VI#Ffyhm%g|p93kb$|?Ao7yX*{c^5{5%r zOl$K1;(c$y?oAJZ(~LSX?rA>nfY7lj^6hDTQn&ENGK{>U&wY&4(N3`AZD(DF4aV=K z4e=F00}qO-4~Xhu>aBSXDi(sqeMr&~xuZu^%{2-$p zgPIGv9>G?Tu=`(Y5p(ohICH8pAvThWV}AsU~s=;|9H`)$1|Bi4Mk&9EgR#r(5Dg z+RJYkZn^>82$;CJ)pk{S+9PG$tsT|LC$I)fjiBQER2%%%Gbt!&?ha>tRzv}vK|nZa zA~UewY@M(Stq*uV-Yyzs{)VZ;pWncS#%YLWWxZaqo4f*&7u|vBX94O@X|?V;?E5;Y z=oN!~!!(N_R{sF0v?$vZA5k)(mApzU_KSrr;wh}d%ZMF|1)}yJoBCY{&Zi{#k5u{H z7%7uozdE8-e~^2JJ#!-b+Bi&G78U?h{@?g~QjELML1;XL6P#u?V+DwiPqKa%x%ujj zp(SXa(0r*8EtDpal*pst4yJWEn_@P6YVk2HdFpvt`TbsH$^8AN34zn2EWz5B@b?8H z81#7IJ_4n!P7pBu;oVyj1EQl2G_9<6wNF#f5&eSI7T`v~ln>Z1Vvhkx)cM-;HLJHP zS>>wppx#FvkAmTv^dG#djtHpPo^m1p@^OqWZ&_^3yH%x?9LUsx9()3%K|s1riPRtX z6KgzC0$iO?fI$FIaUYwi;>f?wmD&PiXbY|s^_jWT(EO5 zJR0e(NuSa3xqbmpOjoh+&)XVndp$l$k{s&D@kCOSSSrG^7#iNJRQa?(=Ygvi70>k4 zQeIZ18-1Eqw(!BfnX$9`(rG?*xZYI=#v#>G?bG+RZ_aiPkC&u*W`ITEFPjf0hTrZa za!pvzp*BO3#&w*ZtTqD;*!R2${6E2`>XrX}GY5y&dHFySY!0FMAp zNv6E!i)*1k`TN&C*9?~T-9$aW3B(GI7@RIpEAlV>M2_W5AW(@N{2G#b&M(jC_ed$F~z}f_d zXQu)tDf3codDm^aE%Ns3t6|rnnEsCG1su&toX2*wr*f1vr-28kob)JLmFXgW0BCmN z9x0u&+<+&Jzgu7N&$FWl1CFz;by!G3f}OkG*5rblSCCUBYQupXF%9rdq-KY5V_MHPpj_koi_&9E{wv z+s$}_mA{ApqXNWJh6OGdFvw46v-#Il#R5tc%;E2^NfBq=wROTj3&&JFQii8dM3yYo z0R=NcbN7ihv=OTls^45lAFpGs240e)a#hbAoq#Ssec)5-a|@9Z>hn`0R+}#dicuwy zDK6NoU0K&&0n3jV_zCmcICsEW0J%wuRJX5J!IteH>PL;+Sckwbt{1laJ5oBcVk#1# z8xcCEsR4HWW=70hyGU`Q19bg}TH?FqbAGVl$jni<+$Y&_!yepN=aP>+fYSRCyeDc9 z6hgY@`x;yxAgYb{`{KBO2y|W5N(7e?pAXPIg}?30+3b7|2%{GjQ?vW+0X0<-XQegy zt0mR$g%?Y(^AkpWl|a`N-tZ;ZjOI2A@mDwYgm zUpkE{B4kPp#G0}329g7=c@8juZ#r=Q9<@0*YJdiW83loiyT2&~Q0vn^jo2A@Iwd<* zVuM)_D1gx#U%!Fl`$v?v^c_+Myg>c66&bM=#hH5V)-`N)JDN(=I;=xH#=~u-xH1U$Y;pj2vIm@5&toUiE$BEc>=(ZKRS@0vum@hEl$gQQ-)Mb+Rc;Lynf+5TR zQ*6D4kR#B_s$X_G?8wr-kIdyqJP;cCI5JSP$Y(k*R;4o5Lj%^l2kz6Do1iKA0y~2g zBZ{5iJ`6rO?~=dNzoN=n9w-9oz_tPKxynx_6wlN5yUIPRbpc1-lGIt!^Pj`ck+hy@ zO^HA#u4kZt)N@%OFM8ZnXorEuN?67G;QN zIav3b+pj=pAL?v8&B_NKL;TigL(JYI4Y-LI8!-=1@~+{C)4mxx087MGTQ1w*{)-hO zWcvv+XpkN;d6~Hs5a%cx4oGDn7y=zhl`T%1)Dl#vxuFlN<|fc!EEW}vuIWzzzcx|A zlz;!x=^^DL=&TQKhV>AIWW*Fq(<@JmhXe$=pb%B6eTS_hns-oJR6m#o8=T-A*J zZTp-QSbo`?0M+ja)Ybx*50N(=9^k*~0Zn7SCOXyu11LWrSv3#a#-cZ3W8wS;`R2(X z@1Zd#mD)}-YyQnN(RY5>M(FazjYC0zVx?D|Z8rrwE$q!}kOY9Nel#_X4EPiC{oWu} zAm$h|PgKdlc>U9d)66(T6rdwXAxHJ_`b_%(qC`J`AN*XJ?{H(u5XkuDy1^m(S5xj~ zNr!xKU~_@g@M_LPUS}Pyw-gBJW$C|WPltB@x24ghg)a{#Z2?enT%`J37QcNxa((;^ zw4R}OD)3Oi!cq5>$0-1Q{+*iL7I&u=Ov;HdIN@z4V&L@{M02^ zNiE<^g~WnV!9BK70Zc-mf~`Ma17+XnA2Drf%en`9TVix6M|Sz%5u&bewRA>oH5p#h zA24#%{PO1fGGkVpXH6KGCXJ>WEp*-_HV*e}vlNR68$O&@W&u=uo8)T6)7At`3&1-C zvX*?6yf|2?PgzBW&HYO`kbw5wsr)Jl)aIoU8t(T#gXtOwRsccz4u4`81SP;ODzkMm zLjA)EXrn1@ze8&Jk<#-hTZi^(%Gfr6xXElRb~ni7FPYAewAIrF8^R!A%n*zJXf{F&W9y%cK&Aj2WwL1_YZt1J<4>{3Hg z6hIJ#nC5-S5L5zi^5RYzGZhm6=>W9bt|gqts8~KXdjnv_1i!sYOI(##2r&cpBrr5Q zVO!eN61buz72ve0cVRnxEnSwU-%3D8a|=ft0X#FSR>d{0{zeAn_T_d^Bh=nq)M!29e!k|8^+-u zX2zlubgtVg>R)aP)SiQp40wz{mEiy&8d!;i#9xB!?nqktIfw3YqW#EyLas3He}{V< zOUX`4$$ZUjE*?$#loH7R)&ukCvq7}Zm~?}0AK8J4`(I+!NZPfV{k!){zdb~~F8*tR z3!6s!$dvJ*m4_TI8W_DV>0_Q;kI*+o_gA+q;~>^(A)Ga`HMd2;f7x$gVEuKW6a zK7YXHCl8NDIp61TypGp+j`y*s+R5I5e_4d^%XetNL2#r}GK3_b3O3G{WBYf1CVTCL z#=|KWJGUrHTc~QF*Aw+}({}`2tlH=&@AF0`S^yfSKlLnKL|31qX;>ow29cXjokq+?1_5<3agJh2MbNAp-t^u6gMcBwgn^Z@xU)*^ z%FtE$i#y`q>5!mK?UX5I&h&u{ecqe`&cpvR>gM~$a4U(~{QM_quqzS=o_?RVgm@`g zD8DEz@b5k?bhV1s=UkTu&0{6jt3~5$Z{Gl=vE@7NL3BC7oazL0_y2@dxvC!YhC8IF7Dnry=zUoJH@c{ z=q;>wW$F)i=;8+(Z~xiD@&bt&H@Z0OriuH@*Q55JhZ87a2m;_`FVcJfE!t*tV(8_Z z=-I<-wD@k7m*83m^;)^8>lS?}^t%-4?@7qWkVvH6*mkq>)e&9>T1PxbprC&jjEzV) zqstVbFXzVD<^ru`65i=|T|srDjF1l+cb`3RgSGmXc>l)Csm^9x-m_BSD^+RExBsBd z_*ZKyPEKO6{lV|a?|*gG@83Lt=>U4hsaEgeKkk?bW0}N;-H(L#;x(7wIy%6}Qc9fO zh`Nf;N?Kf8jEQsky*{LiZO}~Nh*ag&I===+23j;wA9q}n7l5yx82J0WuE>?4X$9IH z@pU?JMpNTBg5YB0CMeUa*eT4-%{lZdGS8pr zGvf6)h&*70pK?&To)(Dx(#7_F*SS4WVVG6+y8BvS_0K0AI)_i@d;(EWvyz-|w}JQ_ zDv0^fQ-NJg+^6^XvjH85MI#)vw(iY^t48xZC0QJGxod^9*L#*_4}xh5LJ2b!W~PgG zjSZFWdIb=~5|}(>@P2_N$|fD*ZDM#Iw9UVQY_BtAG2Mf&;b4a$aX8~C)w~f)5L~^t z>j_hz`BBNdKi+ef_*ZoKJ&1Pmjq1;(4o-<84N#KE-~J^IKrEb01VX@Gy+u^ zs>b%tVkZPkTDB?|(_nYK*ZV978<{?ue_X>)77fE?rg?S8Ol3o(v0Z^36Uf<~Usm4% zf3gv6xLgfHEhw{`cPlh{M@fHqd12>LmfbU$da(MwLc(drW*XP}Q`zi!rDQrA(h~GO z7emOB1Q)Uzi^qU+h5KvC&(odf4>gi-=hko=q~~}$wch!tzrp?abB#8s5CSzWdnQ)&$)EaI(UL@ZGvF03zZU5*9vD0Sl5wJ+E-VSrPGYeQ z4Vz2@P^3^9tFEqhL3^c5Y9C~cc@Uh?r2|UvLN9ZgahNzL(6Y1988sNBJ_0u>zjhd} za(JCerp>@Ke!uDIDh6y#j-OKTfdNiHVU&j)aKKQWJFc;{0U_tB>zZ0@!tE?CPm2i+ z`}H9tY+{77Je7)?1myF=bmM4(Pr#a2Ll6x3#?2P~x{vviwq|zBBsOV(`Zwr!V(iS} z*6(>Zynti?1zW3RX}Q9^0%!ZMog}^LHiy7l72}#sP5WBcHJ>x|!S1eek=c_cP24)T z64XRQ1Em)IVyA~0)}sXredycYhTe%hPl_*f+c0{}ZfrcMk}3!{wC6)!O5ik1Uj?$; z@3E$`bPf0#jBy2c9OkOpl188$V2f3=m4?*bn$@?PKa`P@=d#OqL%l`iU=JQRE+!cJ~x>aac8_yYPKVG%f&DF5Ufw(2+zUjA7 z^X&Hp^X#eGfWW||wn?AkwNv!57r981q@NX)+7;05jd{5nCUkND`OAOwSydi=zwH4& z%+A?`e3bm9wU_VHaqqhT?W{zY9o!dqt_o)pxn5U4+V$T5*phsZUPRJpoYG{d0XS-4 zrf)jfZvs#xq+;X0GXh2D0p_Sje$|e!j(N6@#A{MZ1p+nS3rCI&`EQ`GKKk+AEkPQ5kU$z5b+Ynz&!Y;A7NTs87Z zBRecCjMJzNxBKc1rK#G*ZzLBW%+=M}IBNG7x653vQd(>AlnfEn`Kmk&&uZ~|r(bPB z?<{P#=|M-NNiNwJt+hma^-MxJ563BL8B?l158OlGK5~|S31BPB=K&j@58r+V-7)u3+<}FjJUl!S z6lbT$8?>Tcev@h$vi`YQc+-02R*jB&NHP1g?5wON#|+ts!vfUaO7rqUf11e=`uJcs zpN_!yO#mD9DVwh@$kHNivUE}?6!`pvvI=lV5?I9OkR8{$B4OE~m@28h1)*Oan13ue z$W3A!&^UKwl(W_sZTX((QCPmYBF9Dh6d=U58TL#mN>J_KQkDUUuN*QuKWhQD<{Ku60KhXc;;1PvjkB*9ckwl8wz`OCrCw>>CLV=j`807?5w-H z``4yP-!uFMBO{}+u`y=}gKU-5vy;4v$$D?R?g%Qr`C3X|8{E9DtuqoCC8f*Wc{MI8 z+uE$+T|0&+nx`dyhMgmTCiv;uFoX&!%EAbv`RS~@e_Zend=#jVGNnAdRKkKvdi%Pk z3*%qMV+FrUdt7*t;Z`BtL3sL{QJ1pVc#ob>pT}%PTteOz<{8sRenC z5vs($&=c>{rP#PQU-aJS+3TnR5IUr#sgk!qMn$V0$;ZM==1=8g;cojK!{%W8z!6rB zEI;weva(G3R$4Phh}Y@q$Mr!0*Okw=F9!>NbI>2dnf?YAEcHr{{$HXuOmDIdj13GF z_AkDlg{-M!Ahf-%IILGV2c-xs5LI)bQsAtNF$j@R3MJHUtcbn<{s@1x<6@9lFH#Zx zk~N{-a9*?_S%Ez|Dznh)t3MoC`vQH7w&2dLEw@X%8GVy`#zoDS!t!9ZJFT6+aJfUn ze`AI|w2O|TGv+N>VS&c6%dTP*Xa24^rt#kP$Zg-ZdvEWUKB|V6k2CZrqkvUBLCj7UW@0*6tL{Q)!hG(mpgc~jdAkOIk7^Wr9IyATew}SDu z-fDwkYhyukedy(TE(^OPB=D9X1y5chBV;`FFi9zV$DUhpv_+2%>T68mvx8M56*-#D zA7UVjmm8GM$jR*R3fux7?xRpeRc6^N7`z5F2Mh(5k7~~*WJpMISb+18tTg$&HicvA zLuEB#0d5+gmBJJ|+ZA!s1LV~lZA9w`^e#8uY~3|S81Fe&pN$(F1}YFx^CP++(PM2b z4P`&yU)9amD~E>n+rl=cu!sm1Tqu#NnJ4mmpGcoZz%dijf6<$yB;VNp;e4WnE}km!po#mkudkhbCb0WAR5vlUK^i34liDnLQP7*(Aobvs>;K zcB!l8$aNsJx*qL2%=_J+zUur8_IJQ-`L;qYvhxI5#+0_}61bT+1pxA)iAa*zQRKUS z$NPoI`Q9YG?wJLlFyJ`nF!!X#6JR*GgG&%7b?a}paRVf;B2n`-F3$0hB&d2u33b_Y zpq?LhT-+ji|K5`}(SXR3zQbgl13QWqMb zfbHJ3#iQZ<6y+X+0kVii`X3&**6qJxd%hbW^_P5tl9I$tACT8}1p4B2Vw^HiGU9F>O=ce&vA+FqP2Ng0fehJ9t_Hc=7s1cL0D6hxxlY5|Eq8F{uR~jEzq; zX1Ns7;7Ajct}E8{$gC&E|d+ONU!Pex1m$`s>Rm}Tsu8ue(#Cm#PTQ9WqzS#=4^`mRAcXB*1 zTf{Q<{t(2K)H-oLNXxajpfD{J8O=4TB6y1JO67W;z`tSH{SoP6$L?p}8!4B-p^8$Y zA{;v_k}${kZCBkX4cZ`(WkFD6Cg+>Yn*rAZ>WeFVqAAV*NHF>zw>ldVVG&;%ip3lZ z`T5}Kq2ZwaP407LH!gP2kq=*_vVlMWkcoQrlgCV{<|>0V%Ggpa!$G zkD%!kd}~Gs2PgUJMi4=nuG7oZpFfSN(nkMCw4-$o|-^{J|ge>>Dd5$G%`??SGlibup=z%HIe^xLX0WwK*<5T{R zFLbNDnA|wE^lesnl3%Rl1$}0F+qI+n^0P-3+WUt~=^jr@p`!6-Wdxsw`Zn;0u;XLp zK=L{xYQONO60W zizVO)0HU5>1{)?}iOd%dVcwHyFT9>bC?9B^a5cGF*lvQjVfXF#U@~$w92h+1%@M3* zC^oZioGU;%1ls9ud=X^0k@BiV)Q7G7=&iuD0(cv9*`;Unvr3@N3t(h#$+7ql8b-)^ z{>UaQeukuCZoh$HhI0(!w3)(rr)}^ugC&x{*QJ~IB3Ss(#9RgF3MI@A06GZJ->k0k z0!5z)jaL)+WKqvy#_IiXdyHj~&ifq&mc&~ry;w}73HW0H@O?qRBX9c@0rauZ^|HXW zXFVtWW;W7|=OzZt^vp7*!_E`Xx5HP()PIfmC1J?8U3zo*G&>UMCPQx;^pzKuU)MCu$GJfOjXNw(*HH<(zD$qqKIj+s z3T#~&x7$}*yZHPHrH>mZRe`YnPK#dA`Pm2taauXihvUDMaMRyI{SvnZCzM`bal;7h z&dP(8dT=dETH{1~IBdTd%5ZLa%9H|$;M@Qn2>QWdybL+Fh3KrC>(*~@&JRR_AYsN+ zC;CveYUgMP(^NG2^-Fl2lxLFUNa;1K89ZgJn^#1G8)$v9Pc%o9;;EEjbvqYkzkQ+m z+;|8;fLQq?m@;EGgfl?%N?lh)*oCp5oA=77EIh`x~dTu>w|k6 zShjTILQ~`cOtzHiI#7X#Sesd=0W(C@;FnE6C9kCY*%4cv63cxBFyjl~a4^VPRGB$_ zZr`P83>gSm))fxe3KHcepUsx)!Mn60k>8{{)nB=`Xglg{wKDsPi9yf7^3D%k?sD2) ztbpqV2GdqUa8i@BB3`n$!!(U2sCXWkv;M=(az_o3<-q3lCLoE%RcoVTh_C?&2)K=% zoihbx8#wB@z#UJUow2XMst+AK##c-v!07Q5WMhYX67fuQQwM4J~lzQCgn5LFpfR70B;)xc5J2bX|3_yd?L1#omYA_^8Zoa4N&3L~0=50_wgZJQxJ1Ax?Ez8ETc>_B zBsU?+QcQ;Jy&avKV|zy9%`?^t5m7@Vzd=>=sgMHomDkljWFgu&LM7U`N z)}ao&r~XtHe9OelGX^4;G5ua71+V`*#Bek~R^ewVECF=eLG+!C3Yeic z$j3D?`h24j)Q;!2l6|;45HM z2ZA;jfwvn~y_x-ezd^yLD+DgGe(%XVxz+_<&CBVuD(Gl|FI2CNl${zU!O8%y1-QCL zh#5flIY8k28C>K}Lo_!|=+prQ2wK9tw9_mE-uEkc803nOWbnsAK>S+J&l_sY$sx z>6TI_Tbby}!9RoN)>lvDc!NbO8B!~5t;s`2zo`PgZSqbkRcW>JMr1n^dQ6yuz*ytP ztz~cjgGBlVq`O>xPyTZlKK5Fp+yvMLTN_@=XBSmHd!c*=3F6`T0~O^nF}^vnewQPMWH4+pP`?!0K) zt|r#BcRQfLz@}oUQNE3*R?3d*z=rbDB*^f%sq(rD_1(OSi}RpShU|`muPl3|5!|)n zztQGnq{Bud4P5df%UVD|4{>!o03q-Iq^O`_-jvC{M;ag~HpAsUzXT zv7mnexCWXRiy|+jz&i~QDF@o1#d;qr#_YqC5yrfy-v#Cqr<5!yTEwKAG!b*~pQur& z!TGkVV&9#FS_?9Wd*E+6Y1&rRq`PT)FvJNjNP)%$U`inC7)(RyO6in)W;QclwY0|& zD&#!{6jDpxR?2G-<-0cF@r=ZrvfY6bTfzjJRC>k_3kxGbM*5PBK+9aThP1Xy(6buq z6^2_K%puXyFX-+|R7n#BQd430htfTY4w?$UlDJ@o>HnfR+AKD@hskU*tGhtOZSeAK z`+HaG(>%L8clv&+_6r@h7iK^43@cg~AY9;NrnESVj`l>!Z%f>HTk076`#aLA$f$uw zQuwZ!Rzt8RMiAATOaQblM9D4ip?C*_}9j*cF@;~*}$EDUJ6>S zPi70s1I5<$GZfzlid;t@r}*WI*$#?ctrHL|QD~?^?J;D98|a*IgzObc&Kq{;5$hnS zjl7Gklx`kB`1u^a5qT217ZVp^M7>L{wk*=LQ+P%fS*1m+eG6rt+mlD3zi)TaK5i1> zdAxHR`E^3cbvAl}wt~(UQ!7{4R@7iqHRde0yl`{BrGUNi78QTSXl4-YwS@Tv zuA?Usdy#}nf1D+BuW^g+Uv#qB`{rrm_{U0AK$X)(sc2g6myh|r@&||@I#4S<{ zDI*Tf?8K9;QZw^W$a-Jv4-V8{4JH5n(2bVF8G2)%ljTry_Hwo(?;hTn=Fyk;xbS_n z9)57^>gJNQ)PL<@FF0RWw%1aA|7*`L>xx23?mXkv>rtZLiyx=4ip1MrYCvx!U$}Yw zul;F~!FtSD*Ubt92UcmbMEce%zKl9|R+oG=InYQ7TW%q<0r?Zu_eRF&|w4}(g zjy8`9sU*O9b`VV?V0I9~A^%hS&K=9&7dNo+Z}%lhpOw^}>PPamyK#?e4y5RMSMDCG z>o$DMCmv;+4x7tbufH%=z#!zhr8GdX@V!n2ehZaOHp^JVmtD(wJ^V<3SneXc3eS4|R z_FjG$wp0t`b>>t3rDvJn!XupOm_8Ji6^xC%F5;!A-|uBiju_~Oq%JvbCd;&a&%e28 z^bN;?i^=)g-nJ8Zg+|cfL7JA#3!1v$dr1-p*VI4Le@kNFSbj39|N49GlLv{FjL0@7 z*<|wZRedC7vq(3FxawcK)Y@n)S9h(>>WQTKNq;-x>d}S@yceI7y!>hNNmPO=@jW)P zj)5^W=9B&P+ch6^$S+XdJJiQldt=P1QLOng1o`W@Bl?2nh@e%Tbx$0bOX&(n*8tnl z8xx&pc=nbnpBmaNQ?L<7F;cF+KLX0|59`9UIfZ{@mEra>2^sF)D&c)r?cq#}OU_4A zB%kcO$T3k3dYD75=dfR}MV_)S;^ELy9NtiN*|$rqYWyt+=De(LW?y&?$A!vk!}wo( zy@m%SIa{q(%HKV%K&7Mk0YS3deySee(BjO5|Q zyc@a3v0X;_c_f-+u!6Ey=2R=NN`BVrE;)rElZ(UN<0=b0#B6uezvBmSi6i&>WqA2i z{G*OStC1uPt>fiP{@LD<{Nb%3Cw5D19feMQ>>9pv?Rpi zb+Yhg!pF$77AM|YRmu#7lc(61{ifyq3a1A-0_7$;b5kO5@og`bnyp9Q^e)KymTl=s zH@(q7-oKMWj`9;MfV`F%mlb(j=&dYVhMsNn+nd1oypgW@6;8N19S|aj*O1Kk_kBwS^~b{G}R7 zROCHe40v*0@vs;QWlogHnpP6%dAmEr@~Aye(-#`JUBNHo>AHNiRB>6G%+ozX^*UMq z*Z?iU?5`YwAhA-(hfUkwkFhot8;xE0_-gh>nwECEZT#@4R#>Ao`#X*H{+>L??SmO4 zyE&daRz zAHJ@NNk$!BOt|{(Xc2oZ*i$ck!tKduX_}}WOXf+-#xFcEqV&G-P+?K4929+=|4MDm zj=^#r4@>^ubT(CgVb*n+Hu+m2kZ{gw<<_Q-DT6i1Lct{480*HCI94oI6Jo~SUZy; zO-F`Tb{u!edazBE95eH9Bf^&7P%WE?LeOU8E-|{*Ur5FKr;UH}c-OdcD#kx{Ni@G^ zXFT}C6Z~>TuYY$Q$5dd*GyZjCZthy%6J;*=*+p)J70;XfQz+L8=grcw%dyjv#pRv0 zFBpCaf2BRdC2zg8(yWQGVfVHAQ8$~H7H{9izxURWVW0Vh_^S9{ks;8HvZFY_K^Xm& zwlQw@B#yXsSMeb>uZ;aC7m1tneXiI4|3Ad(NqLUssC695zb$n^MM?3{X3}Pj{HDlf z396c8mV8BDBg7`dKmG=p=A!3LrcWEOPOjY|ddRh|0k!#fr^r$eAOm!O8~+>;;&xe{cQ`aa5m>Jyq4FWjx5H7^k=7OwsUdh(vXrT z&MG<2&9@ky?oGI)mS?otQl-30t>H6S$QO}9t0AUjN*F^{Pm8cEsr;H!bUAVd_K=w# zbjzIr2fX^5E!%-RQW@E~JjI=2s-cwo59NbAKag5%Q2I7{7ztS!u9CY*ZP*ugOb)a( z4{qQg>g4|pnzuZ8GNd&|$-{(q$JX;45`6KIXp`Re-1DZ^y{viYw~;#Iu9i|x`u+dg z63z8F30+WJvS>+rtWIM+VfUkArEA_PLk#JDi{W<{D_ZTeajxthpUvZf3sjhhjhO#b zY6QuAkCj>i4;L@)^9N!(J#}mi7KZBWdVDJtrWKb%RbNuo-h00jwvf#6jKt-&OPr)) z1K0o9pK^AepF%5w=bsM2JY4*}w`T3XPBYi?&6OKLTK*9jeh2>*ZRdgDW9%lcq__wH zDM&w;mZ&`kYYt_5opdV~l>>jq7P3xo12(Z9931LL{2l zZV-n574Hy+HIV79IN90DMh+#$U5|szUAZ59{zxl%dMB=|yxnhD)AvIozJv){%@dlo z>T(-W%oE6HHl||ujsD~D_9nR3@ey^>|Jb69cn5pL6!SlVz`OF*b4&!+KNfYl)_j}_ z;r{X;AvekK&!gmbQfKXP?}B2oX&zTRB<6A9N{0}{6#id-UA&%$1r0f3es($ho~KiT z*@D0f0mfIVzYe3{$?EuOJ`3+KL47}TvN^C)5y)Xa<`u`RZp(3cgnQuM5AbZEdR+7r z!-*&CD$X!tY>qeqQwSaHdVSaC>K`yQ_=4 zuPNc>nQe<$o=+RgkZb=t5k>}vSEUF9;+NC%@TV;0WJ-%Kx%QLwK#GNjhx3Rc(nu*N z#!xO)SGm#t{ESJFst(1Ti*QLoUNK>=k+zOMHl}6cep*#>LyvP zb|GiFtCG^IQ{yrCpwqpt=r$^QerkdlP7DOXE;&>gc+v%Lk#SLD<)85JUsI#X;4dON lB#}7q!;Ib*6MmGO&}vVNs4w(+IKyuU1sN6T0?9`K{}0Zw_{snP literal 0 HcmV?d00001 From 6aa1b0b57182121c5b5c66d78d7e26fc1ec46536 Mon Sep 17 00:00:00 2001 From: LicongHuang Date: Thu, 5 Oct 2023 22:35:15 +0800 Subject: [PATCH 023/301] Remove unnecessary file --- html-to-markdown.md | 441 -------------------------------------------- 1 file changed, 441 deletions(-) delete mode 100644 html-to-markdown.md diff --git a/html-to-markdown.md b/html-to-markdown.md deleted file mode 100644 index cb48e0cbb22..00000000000 --- a/html-to-markdown.md +++ /dev/null @@ -1,441 +0,0 @@ - Developer Guide :root \[href^="//x4pollyxxpush.com/"\], :root zeus-ad, :root topadblock, :root span\[id^="ezoic-pub-ad-placeholder-"\], :root guj-ad, :root gpt-ad, :root div\[id^="zergnet-widget"\], :root div\[id^="vuukle-ad-"\], :root div\[id^="sticky\_ad\_"\], :root div\[id^="rc-widget-"\], :root div\[id^="optidigital-adslot"\], :root div\[id^="gpt\_ad\_"\], :root div\[id^="ezoic-pub-ad-"\], :root div\[id^="div-gpt-"\], :root div\[id^="dfp-ad-"\], :root div\[id^="advads\_ad\_"\], :root div\[id^="adspot-"\], :root div\[id^="ads300\_250-widget-"\], :root div\[id^="ads300\_100-widget-"\], :root div\[id^="ads250\_250-widget-"\], :root div\[id^="adrotate\_widgets-"\], :root div\[id^="\_vdo\_ads\_player\_ai\_"\], :root div\[id\*="ScriptRoot"\], :root div\[id\*="MarketGid"\], :root div\[data-native\_ad\], :root div\[data-mini-ad-unit\], :root div\[data-insertion\], :root div\[data-id-advertdfpconf\], :root div\[data-google-query-id\], :root hl-adsense, :root div\[data-contentexchange-widget\], :root div\[data-content="Advertisement"\], :root div\[data-alias="300x250 Ad 2"\], :root div\[data-alias="300x250 Ad 1"\], :root div\[data-adzone\], :root div\[data-adunit-path\], :root div\[data-ad-wrapper\], :root div\[data-ad-placeholder\], :root div\[class^="native-ad-"\], :root div\[data-dfp-id\], :root div\[class^="kiwi-ad-wrapper"\], :root div\[class^="Adstyled\_\_AdWrapper-"\], :root div\[aria-label="Ads"\], :root display-ads, :root display-ad-component, :root bottomadblock, :root atf-ad-slot, :root aside\[id^="adrotate\_widgets-"\], :root article.ad, :root ark-top-ad, :root app-advertisement, :root app-ad, :root amp-fx-flying-carpet, :root amp-embed\[type="taboola"\], :root amp-connatix-player, :root amp-ad-custom, :root amp-ad, :root a\[style="width:100%;height:100%;z-index:10000000000000000;position:absolute;top:0;left:0;"\], :root a\[onmousedown^="this.href='https://paid.outbrain.com/network/redir?"\]\[target="\_blank"\] + .ob\_source, :root a\[onmousedown^="this.href='http://paid.outbrain.com/network/redir?"\]\[target="\_blank"\] + .ob\_source, :root a\[href^="https://yogacomplyfuel.com/"\], :root a\[href^="https://www.sugarinstant.com/?partner\_id="\], :root a\[href^="https://www.purevpn.com/"\]\[href\*="&utm\_source=aff-"\], :root a\[href^="https://www.privateinternetaccess.com/"\] > img, :root a\[href^="https://www.onlineusershielder.com/"\], :root a\[href^="https://www.nutaku.net/signup/landing/"\], :root a\[href^="https://www.nudeidols.com/cams/"\], :root a\[href^="https://www.mypornstarcams.com/landing/click/"\], :root a\[href^="https://www.kingsoffetish.com/tour?partner\_id="\], :root a\[href^="https://www.infowarsstore.com/"\] > img, :root a\[href^="https://www.highcpmrevenuenetwork.com/"\], :root a\[href^="https://www.googleadservices.com/pagead/aclk?"\], :root a\[href^="https://www.goldenfrog.com/vyprvpn?offer\_id="\]\[href\*="&aff\_id="\], :root a\[href^="https://www.get-express-vpn.com/offer/"\], :root a\[href^="https://www.financeads.net/tc.php?"\], :root a\[href^="https://www.brazzersnetwork.com/landing/"\], :root div\[class^="Display\_displayAd"\], :root a\[href^="https://www.sheetmusicplus.com/?aff\_id="\], :root a\[href^="https://www.bang.com/?aff="\], :root a\[href^="https://www.adxsrve.com/"\], :root a\[href^="https://www.5mno3.com/"\], :root a\[href^="https://wirewar.website/"\], :root a\[href^="https://visit-website.com/"\], :root a\[href^="https://twinrdsyn.com/"\], :root a\[href^="https://twinrdsrv.com/"\], :root a\[href^="https://tsartech.g2afse.com/"\], :root \[href^="https://www.mypatriotsupply.com/"\] > img, :root a\[href^="https://trk.softonixs.xyz/"\], :root a\[href^="https://trk.nfl-online-streams.club/"\], :root a\[href^="https://tracking.avapartner.com/"\], :root a\[href^="https://track.wg-aff.com"\], :root a\[href^="https://track.afcpatrk.com/"\], :root a\[href^="https://torguard.net/aff.php"\] > img, :root div\[data-adname\], :root a\[href^="https://thechleads.pro/"\], :root .OUTBRAIN\[data-widget-id^="FMS\_REELD\_"\], :root \[data-role="tile-ads-module"\], :root a\[href^="https://adsrv4k.com/"\], :root a\[href^="https://go.xlviirdr.com"\], :root a\[href^="https://thaudray.com/"\], :root a\[href^="https://taghaugh.com/"\], :root a\[href^="https://click.candyoffers.com/"\], :root \[href^="https://zstacklife.com/"\] img, :root a\[href^="https://t.aslnk.link/"\], :root a\[href^="https://t.adating.link/"\], :root a\[href^="https://go.trackitalltheway.com/"\], :root \[href^="https://track.fiverr.com/visit/"\] > img, :root a\[href^="https://syndication.exoclick.com/"\], :root a\[href^="https://syndication.dynsrvtbg.com/"\], :root a\[href^="https://streamate.com/landing/click/"\], :root a\[href^="https://ad.doubleclick.net/"\], :root a\[href^="https://static.fleshlight.com/images/banners/"\], :root a\[href^="https://sTaRtGAMing.net/tienda/"\], :root citrus-ad-wrapper, :root a\[onmousedown^="this.href='https://paid.outbrain.com/network/redir?"\]\[target="\_blank"\], :root a\[href^="https://sTaRTgamInG.net/tienda/"\], :root \[data-adblockkey\], :root a\[href^="https://sTARtgamIng.net/tienda/"\], :root a\[href^="https://aweptjmp.com/"\], :root a\[href^="https://s.zlinkc.com/"\], :root a\[href^="https://www.mrskin.com/account/"\], :root a\[href^="https://s.optzsrv.com/"\], :root a\[data-obtrack^="http://paid.outbrain.com/network/redir?"\], :root a\[href^="https://reinstandpointdumbest.com/"\], :root a\[href^="https://go.strpjmp.com/"\], :root a\[href^="https://refpa4903566.top/"\], :root a\[href^="https://pubads.g.doubleclick.net/"\], :root a\[href^="https://prf.hn/click/"\]\[href\*="/camref:"\] > img, :root a\[href^="https://serve.awmdelivery.com/"\], :root a\[href^="https://prf.hn/click/"\]\[href\*="/adref:"\] > img, :root a\[href^="https://pb-track.com/"\], :root a\[href^="https://paid.outbrain.com/network/redir?"\], :root ps-connatix-module, :root div\[id^="ad\_position\_"\], :root a\[href^="https://ovb.im/"\], :root div\[id^="ad-div-"\], :root a\[href^="https://newbinotracs.com/"\], :root a\[href^="https://natour.naughtyamerica.com/track/"\], :root \[href^="https://stvkr.com/"\], :root a\[href^="https://mediaserver.entainpartners.com/renderBanner.do?"\], :root a\[href^="https://loboclick.com"\], :root .nya-slot\[style\], :root a\[href^="https://a.bestcontentweb.top/"\], :root a\[href^="https://lobimax.com/"\], :root a\[href^="https://lead1.pl/"\], :root a\[href^="https://refpa.top/"\], :root a\[href^="https://landing.brazzersnetwork.com/"\], :root a\[href^="https://safesurfingtoday.com/"\]\[href\*="?skip="\], :root a\[href^="https://ads.leovegas.com/redirect.aspx?"\], :root a\[href^="https://land.brazzersnetwork.com/landing/"\], :root a\[href^="https://track.adform.net/"\], :root \[data-css-class="dfp-inarticle"\], :root .card-captioned.crd > .crd--cnt > .s2nPlayer, :root a\[href^="https://go.tmrjmp.com"\], :root a\[href^="https://startgamIng.Net/tienda/"\], :root a\[href^="https://l.hyenadata.com/"\], :root a\[href^="https://juicyads.in/"\], :root a\[href^="https://mediaserver.gvcaffiliates.com/renderBanner.do?"\], :root a\[href^="https://join.dreamsexworld.com/"\], :root a\[href^="https://itubego.com/video-downloader/?affid="\], :root a\[href^="https://iqbroker.com/"\]\[href\*="?aff="\], :root a\[href^="https://incisivetrk.cvtr.io/click?"\], :root \[href^="https://www.herbanomic.com/"\] > img, :root a\[href^="https://maymooth-stopic.com/"\], :root div\[data-ad-targeting\], :root a\[href^="https://hotplaystime.life/"\], :root a\[href^="https://hot-growngames.life/"\], :root \[data-revive-zoneid\], :root a\[href^="https://googleads.g.doubleclick.net/pcs/click"\], :root a\[href^="https://clk.wrenchsound.store/"\], :root a\[href^="https://go.zybrdr.com"\], :root \[href^="http://join.michelle-austin.com/"\], :root \[class^="tile-picker\_\_CitrusBannerContainer-sc-"\], :root a\[href^="https://go.xxxiijmp.com"\], :root a\[href^="https://go.xtbaffiliates.com/"\], :root a\[href^="https://ismlks.com/"\], :root a\[href^="//a.bestcontentfare.top/"\], :root \[href^="https://www.mypillow.com/"\] > img, :root a\[href^="https://azpresearch.club/"\], :root a\[href^="https://go.xlirdr.com"\], :root a\[href^="https://go.skinstrip.net"\]\[href\*="?campaignId="\], :root a\[href^="https://go.markets.com/visit/?bta="\], :root a\[href^="https://billing.purevpn.com/aff.php"\] > img, :root a\[href^="https://go.hpyrdr.com/"\], :root a\[href^="https://go.goaserv.com/"\], :root a\[href^="https://go.dmzjmp.com"\], :root a\[href^="https://go.admjmp.com/"\], :root \[href^="https://kingered-banctours.com/"\], :root a\[href^="https://get.surfshark.net/aff\_c?"\]\[href\*="&aff\_id="\] > img, :root a-ad, :root a\[href^="https://affiliate.rusvpn.com/click.php?"\], :root a\[href^="https://geniusdexchange.com/"\], :root a\[href^="https://frameworkdeserve.com/"\], :root a\[href^="https://flirtandsweets.life/"\], :root a\[href^="https://www.mrskin.com/tour"\], :root a\[href^="https://financeads.net/tc.php?"\], :root div\[data-native-ad\], :root a\[href^="https://engine.trackingdesks.com/"\], :root a\[data-redirect^="https://paid.outbrain.com/network/redir?"\], :root \[href^="https://www.reimageplus.com/"\], :root a\[href^="https://engine.phn.doublepimp.com/"\], :root a\[href^="https://engine.blueistheneworanges.com/"\], :root a\[href^="https://dl-protect.net/"\], :root \[href="//jjgirls.com/sex/ChaturbateCams"\], :root a\[href^="https://datingoffers30.info/"\], :root a\[href^="https://clixtrac.com/"\], :root a\[href^="https://click.linksynergy.com/fs-bin/"\] > img, :root ad-shield-ads, :root a\[href^="https://sTartGAMinG.net/tienda/"\], :root AD-TRIPLE-BOX, :root a\[href^="https://click.hoolig.app/"\], :root a\[href^="https://track.totalav.com/"\], :root img\[src^="https://images.purevpnaffiliates.com"\], :root a\[href^="https://porntubemate.com/"\], :root a\[href^="http://www.gfrevenge.com/landing/"\], :root a\[href^="https://clickadilla.com/"\], :root a\[href^="https://click.dtiserv2.com/"\], :root a\[href^="https://go.xlvirdr.com"\], :root a\[href^="http://www.iyalc.com/"\], :root a\[href^="https://claring-loccelkin.com/"\], :root \[class^="s2nPlayer"\], :root a\[href^="https://chaturbate.jjgirls.com/?track="\], :root a\[href^="https://chaturbate.com/in/?track="\], :root a\[href^="https://chaturbate.com/in/?tour="\], :root a\[href^="https://cams.imagetwist.com/in/?track="\], :root a\[href^="https://go.gldrdr.com/"\], :root a\[href^="https://buqkrzbrucz.com/"\], :root a\[href^="https://affcpatrk.com/"\], :root a\[href^="https://bongacams2.com/track?"\], :root a\[href^="https://www.sheetmusicplus.com/"\]\[href\*="?aff\_id="\], :root a\[href^="https://bngpt.com/"\], :root a\[href^="https://bluedelivery.pro/"\], :root a\[href^="https://black77854.com/"\], :root a\[href^="https://bc.game/"\], :root a\[href^="https://ndt5.net/"\], :root a\[href^="https://batheunits.com/"\], :root a\[target="\_blank"\]\[onmousedown="this.href^='http://paid.outbrain.com/network/redir?"\], :root a\[href^="https://banners.livepartners.com/"\], :root a\[href^="//whulsaux.com/"\], :root a\[href^="https://m.do.co/c/"\] > img, :root \[href="https://masstortfinancing.com"\] img, :root a\[href^="https://bongacams10.com/track?"\], :root a\[href^="https://albionsoftwares.com/"\], :root a\[href^="https://t.hrtye.com/"\], :root a\[href^="https://go.etoro.com/"\] > img, :root a\[href^="https://convertmb.com/"\], :root a\[href^="https://join.sexworld3d.com/track/"\], :root a\[href^="https://intenseaffiliates.com/redirect/"\], :root a\[href^="https://ads.ad4game.com/"\], :root \[id^="google\_ads\_iframe"\], :root a\[href^="https://syndication.optimizesrv.com/"\], :root a\[href^="https://affpa.top/"\], :root a\[href^="https://adnetwrk.com/"\], :root a\[href^="https://adjoincomprise.com/"\], :root \[href^="http://misslinkvocation.com/"\], :root a\[href^="https://adclick.g.doubleclick.net/"\], :root a\[href^="https://www.bet365.com/"\]\[href\*="affiliate="\], :root \[href^="https://r.kraken.com/"\], :root a\[href^="https://mmwebhandler.aff-online.com/"\], :root a\[href^="https://go.nordvpn.net/aff"\] > img, :root \[href^="http://clicks.totemcash.com/"\], :root a\[href^="https://misspkl.com/"\], :root a\[href^="https://ad.zanox.com/ppc/"\] > img, :root a\[href^="https://ad.kubiccomps.icu/"\], :root a\[href^="https://a2.adform.net/"\], :root a\[href^="https://iactrivago.ampxdirect.com/"\], :root a\[href^="https://a.medfoodhome.com/"\], :root a\[href^="https://adultfriendfinder.com/go/"\], :root a\[href^="https://a.bestcontentoperation.top/"\], :root a\[href^="http://static.fleshlight.com/images/banners/"\], :root a\[href^="https://a.adtng.com/"\], :root \[data-m-ad-id\], :root a\[href^="https://sTartgAminG.net/tienda/"\], :root a\[href^="https://a-ads.com/"\], :root a\[href^="https://join.virtualtaboo.com/track/"\], :root a\[href^="https://StarTGAminG.net/tienda/"\], :root a\[href^="https://STaRTgamINg.net/tienda/"\], :root a\[href^="https://cpmspace.com/"\], :root \[href^="https://freecourseweb.com/"\] > .sitefriend, :root a\[href^="https://prf.hn/click/"\]\[href\*="/creativeref:"\] > img, :root a\[href^="http://www.adultempire.com/unlimited/promo?"\]\[href\*="&partner\_id="\], :root a\[href^="https://1betandgonow.com/"\], :root \[href="https://ourgoldguy.com/contact/"\] img, :root a\[href^="https://brightadnetwork.com/"\], :root \[href^="https://www.avantlink.com/click.php"\] img, :root a\[href^="http://www.onwebcam.com/random?t\_link="\], :root a\[href^="http://www.mrskin.com/tour"\], :root a\[href^="https://agacelebir.com/"\], :root a\[href^="https://spygasm.com/track?"\], :root a\[href^="http://d2.zedo.com/"\], :root a\[href^="http://www.friendlyduck.com/AF\_"\], :root a\[href^="http://trk.globwo.online/"\], :root a\[href^="http://traffic.tc-clicks.com/"\], :root a\[href^="http://tour.mrskin.com/"\], :root a\[href^="https://funkydaters.com/"\], :root \[id^="ad\_sky"\], :root a\[href^="http://https://www.get-express-vpn.com/offer/"\], :root div\[id^="google\_dfp\_"\], :root a\[href^="http://googleads.g.doubleclick.net/pcs/click"\], :root \[href^="http://go.cm-trk2.com/"\], :root a\[href^="http://click.payserve.com/"\], :root a\[href^="https://porngames.adult/?SID="\], :root a\[href^="https://landing1.brazzersnetwork.com"\], :root #slashboxes > .deals-rail, :root \[href^="http://globsads.com/"\], :root \[href^="https://www.brighteonstore.com/products/"\] img, :root a\[href^="http://bc.vc/?r="\], :root a\[href^="https://mityneedn.com/"\], :root \[href^="http://homemoviestube.com/"\], :root a\[href^="http://ad.doubleclick.net/"\], :root a\[href^="//zunsoach.com/"\], :root a\[href^="//pubads.g.doubleclick.net/"\], :root a\[href^="https://femglobal.app/"\], :root a\[href^="//go.eabids.com/"\], :root a\[data-url^="http://paid.outbrain.com/network/redir?"\] + .author, :root \[href^="https://join.playboyplus.com/track/"\], :root a\[href^="//ardslediana.com/"\], :root \[data-d-ad-id\], :root a\[href\*=".engine.adglare.net/"\], :root \[href^="https://awbbjmp.com/"\], :root a\[href^="https://tracker.loropartners.com/"\], :root #kt\_player > a\[target="\_blank"\], :root a\[href\*=".cfm?fp="\]\[href\*="&maxads="\], :root \[data-ad-width\], :root a\[href^="http://bodelen.com/"\], :root a\[data-oburl^="https://paid.outbrain.com/network/redir?"\], :root \[href^="https://cpa.10kfreesilver.com/"\], :root a\[href^="https://a.bestcontentfood.top/"\], :root a\[href^="http://wct.link/"\], :root \[href^="https://goldforyourfuture.com/clk.trk"\] img, :root \[onclick^="location.href='http://www.reimageplus.com"\], :root \[id^="section-ad-banner"\], :root a\[href^="https://go.julrdr.com/"\], :root .trc\_rbox\_div .syndicatedItemUB, :root \[href^="https://zone.gotrackier.com/"\], :root \[href^="https://detachedbates.com/"\], :root \[href^="https://www.targetingpartner.com/"\], :root a\[href^="https://fourwhenstatistics.com/"\], :root \[href^="https://www.restoro.com/"\], :root a\[href^="https://yourperfectdating.life/"\], :root a\[href^="https://join.virtuallust3d.com/"\], :root .section-subheader > .section-hotel-prices-header, :root \[href^="https://go.affiliatexe.com/"\], :root \[href^="https://www.hostg.xyz/"\] > img, :root \[href^="https://ilovemyfreedoms.com/landing-"\], :root a\[href^="https://staRTgaming.net/tienda/"\], :root a\[href^="https://STaRtgAmInG.net/tienda/"\], :root a\[href^="http://adultfriendfinder.com/go/"\], :root a\[href^="https://fastestvpn.com/lifetime-special-deal?a\_aid="\], :root a\[href^="https://tour.mrskin.com/"\], :root div\[id^="ad-position-"\], :root a\[href^="http://affiliate.glbtracker.com/"\], :root a\[href^="https://leg.xyz/?track="\], :root div\[id^="crt-"\]\[style\], :root a\[href^="http://adultgames.xxx/"\], :root \[href^="https://shiftnetwork.infusionsoft.com/go/"\] > img, :root a\[onmousedown^="this.href='http://paid.outbrain.com/network/redir?"\]\[target="\_blank"\], :root \[href^="https://secure.bmtmicro.com/servlets/"\], :root a\[href^="https://losingoldfry.com/"\], :root .scroll-fixable.rail-right > .deals-rail, :root \[href^="https://routewebtk.com/"\], :root a\[href^="https://oackoubs.com/"\], :root a\[href^="https://ak.psaltauw.net/"\], :root a\[href^="https://go.cmtaffiliates.com/"\], :root \[data-name="adaptiveConstructorAd"\], :root \[href^="https://optimizedelite.com/"\] > img, :root a\[href^="https://awptjmp.com/"\], :root a\[href^="https://go.goasrv.com/"\], :root \[href^="http://mypillow.com/"\] > img, :root a\[href^="http://bongacams.com/track?"\], :root a\[href^="https://fleshlight.sjv.io/"\], :root \[data-ad-manager-id\], :root a\[href^="https://promo-bc.com/"\], :root a\[href^="https://clicks.pipaffiliates.com/"\], :root \[href^="https://noqreport.com/"\] > img, :root a\[href^="https://www.highperformancecpmgate.com/"\], :root a\[href^="https://t.grtyi.com/"\], :root \[href^="https://mylead.global/stl/"\] > img, :root \[href^="https://mypatriotsupply.com/"\] > img, :root \[data-freestar-ad\], :root a\[href^="https://fc.lc/ref/"\], :root .vid-present > .van\_vid\_carousel\_\_padding, :root span\[data-ez-ph-id\], :root \[href^="https://track.aftrk1.com/"\], :root div\[id^="adngin-"\], :root \[data-rc-widget\], :root a\[href^="https://go.xxxijmp.com"\], :root \[href^="https://istlnkcl.com/"\], :root \[href^="https://go.xlrdr.com"\], :root \[href^="https://go.4rabettraff.com/"\], :root a\[href^="https://tm-offers.gamingadult.com/"\], :root \[href^="https://charmingdatings.life/"\], :root \[href^="https://glersakr.com/"\], :root ins.adsbygoogle, :root a\[href^="https://1startfiledownload1.com/"\], :root .trc\_rbox\_border\_elm .syndicatedItem, :root div\[id^="pa\_sticky\_ad\_box\_middle\_"\], :root a\[href^="http://www.onclickmega.com/jump/next.php?"\], :root a\[href^="https://italarizege.xyz/"\], :root a\[href^="https://wittered-mainging.com/"\], :root \[href^="https://engine.gettopple.com/"\], :root \[data-id^="div-gpt-ad"\], :root a\[href^="https://k2s.cc/pr/"\], :root \[href^="https://affect3dnetwork.com/track/"\], :root a\[href^="https://camfapr.com/landing/click/"\], :root \[href="//sexcams.plus/"\], :root a\[href^="https://go.currency.com/"\], :root .resultsList > div > div > div.G-5c\[role="tab"\]\[tabindex="0"\], :root \[href^="http://www.mypillow.com/"\] > img, :root div\[id^="div-ads-"\], :root \[href^="https://rapidgator.net/article/premium/ref/"\], :root \[href^="https://join3.bannedsextapes.com"\], :root div\[data-spotim-slot\], :root \[href^="https://antiagingbed.com/discount/"\] > img, :root a\[href^="https://go.247traffic.com/"\], :root \[href^="https://join.girlsoutwest.com/"\], :root \[href^="http://trafficare.net/"\], :root a\[href^="https://tc.tradetracker.net/"\] > img, :root a\[href^="https://adserver.adreactor.com/"\], :root \[href^="http://join.shemalesfromhell.com/"\], :root \[id^="ad\_slider"\], :root #searchResultsList > div > div\[onclick$="'inline.ad'});"\], :root \[data-adbridg-ad-class\], :root a\[href^="http://www.adultdvdempire.com/?partner\_id="\]\[href\*="&utm\_"\], :root \[href^="http://join.shemale.xxx/"\], :root a\[href^="https://ads.betfair.com/redirect.aspx?"\], :root \[href^="http://www.fleshlightgirls.com/"\], :root \[href^="http://join.trannies-fuck.com/"\], :root .trc\_rbox .syndicatedItem, :root a\[href^="http://cam4com.go2cloud.org/aff\_c?"\], :root a\[href^="https://thefacux.com/"\], :root a\[href^="https://ads.planetwin365affiliate.com/redirect.aspx?"\], :root \[href^="http://join.rodneymoore.com/"\], :root \[href^="https://shrugartisticelder.com"\], :root a\[href^="https://staRTgamIng.net/tienda/"\], :root div\[id^="lazyad-"\], :root a\[href^="http://com-1.pro/"\], :root \[name^="google\_ads\_iframe"\], :root \[href="https://www.masstortfinancing.com/"\] > img, :root .ob\_container .item-container-obpd, :root \[id^="div-gpt-ad"\], :root a\[href^="https://www.geekbuying.com/dynamic-ads/"\], :root a\[href^="https://lnkxt.bannerator.com/"\], :root \[href="https://jdrucker.com/gold"\] > img, :root \[href^="https://v.investologic.co.uk/"\], :root \[href^="https://cipledecline.buzz/"\], :root a\[href^="https://go.xxxjmp.com"\], :root #leader-companion > a\[href\], :root \[data-desktop-ad-id\], :root \[href^="https://wct.link/"\], :root div\[recirculation-ad-container\], :root \[href^="https://traffserve.com/"\], :root \[data-type="ad-vertical"\], :root a\[href^="https://u.expresstech.io/"\], :root \[href^="https://mypillow.com/"\] > img, :root \[href^="https://ad.admitad.com/"\], :root \[data-testid="ad\_testID"\], :root a\[href^="https://track.ultravpn.com/"\], :root \[href^="https://goldcometals.com/clk.trk"\], :root a\[href^="https://go.hpyjmp.com"\], :root \[href^="https://mystore.com/"\] > img, :root \[data-mobile-ad-id\], :root a\[href^="http://tc.tradetracker.net/"\] > img, :root a\[href^="http://affiliates.thrixxx.com/"\], :root div\[id^="yandex\_ad"\], :root a\[href^="https://pb-imc.com/"\], :root a\[href^="https://www.adultempire.com/"\]\[href\*="?partner\_id="\], :root \[data-template-type="nativead"\], :root \[data-ad-name\], :root \[data-ez-name\], :root a\[data-widget-outbrain-redirect^="http://paid.outbrain.com/network/redir?"\], :root \[data-dynamic-ads\], :root a\[href^="http://go.xtbaffiliates.com/"\], :root a\[href^="https://consali.com/"\], :root .grid > .container > #aside-promotion, :root DFP-AD, :root .trc\_related\_container div\[data-item-syndicated="true"\], :root a\[href^="https://www.liquidfire.mobi/"\], :root \[href^="https://click2cvs.com/"\], :root \[href^="//mage98rquewz.com/"\], :root a\[href^="https://webroutetrk.com/"\], :root a\[href^="https://mercurybest.com/"\], :root a\[href^="https://startgAming.net/tienda/"\], :root \[href^="https://safer-redirection.com"\], :root \[onclick\*="content.ad/"\], :root AMP-AD, :root a\[href^="https://sTartGAMiNG.net/tienda/"\], :root \[data-ad-cls\], :root \[id^="ad-wrap-"\], :root div\[id^="taboola-stream-"\], :root \[href^="https://go.astutelinks.com/"\], :root \[class^="amp-ad-"\], :root \[href^="https://affiliate.fastcomet.com/"\] > img, :root \[class^="adDisplay-module"\], :root AD-SLOT, :root .ob\_dual\_right > .ob\_ads\_header ~ .odb\_div, :root \[href^="http://join.shemalepornstar.com/"\], :root a\[href^="https://go.xlviiirdr.com"\], :root .trc\_rbox\_div .syndicatedItem, :root div\[data-adunit\], :root app-large-ad, :root \[href^="https://turtlebids.irauctions.com/"\] img, :root a\[href^="https://www.adskeeper.com"\], :root \[href^="https://totlnkcl.com/"\], :root \[data-ad-module\], :root .plistaList > .itemLinkPET, :root \[href^="https://gmxvmvptfm.com/"\], :root \[href^="https://trackfin.asia/"\], :root .plistaList > .plista\_widget\_underArticle\_item\[data-type="pet"\], :root a\[href\*="//lkstrck2.com/"\], :root a\[href^="https://bs.serving-sys.com"\], :root \[href^="http://residenceseeingstanding.com/"\], :root a\[href^="https://traffdaq.com/"\], :root \[class^="div-gpt-ad"\], :root a\[href^="http://partners.etoro.com/"\], :root \[data-advadstrackid\], :root a\[href^="https://refpazkjixes.top/"\], :root #mgb-container > #mgb, :root \[href^="https://www.cloudways.com/en/?id"\], :root a\[href^="https://trk.sportsflix4k.club/"\], :root a\[href^="https://tweakostensibleinstaller.com/"\], :root a\[href^="https://go.xlivrdr.com"\], :root a\[href^="https://cam4com.go2cloud.org/"\], :root a\[href^="http://li.blogtrottr.com/click?"\] { display: none !important; } - -[AB-3](https://se-education.org/addressbook-level3/) - -[User Guide](https://se-education.org/addressbook-level3/UserGuide.html)[Developer Guide](https://se-education.org/addressbook-level3/DeveloperGuide.html)[About Us](https://se-education.org/addressbook-level3/AboutUs.html) [![View on GitHub](./Developer Guide_files/github-icon.png)](https://github.com/se-edu/addressbook-level3) - -Developer Guide -=============== - -* [**Acknowledgements**](https://se-education.org/addressbook-level3/DeveloperGuide.html#acknowledgements) -* [**Setting up, getting started**](https://se-education.org/addressbook-level3/DeveloperGuide.html#setting-up-getting-started) -* [**Design**](https://se-education.org/addressbook-level3/DeveloperGuide.html#design) - * [Architecture](https://se-education.org/addressbook-level3/DeveloperGuide.html#architecture) - * [UI component](https://se-education.org/addressbook-level3/DeveloperGuide.html#ui-component) - * [Logic component](https://se-education.org/addressbook-level3/DeveloperGuide.html#logic-component) - * [Model component](https://se-education.org/addressbook-level3/DeveloperGuide.html#model-component) - * [Storage component](https://se-education.org/addressbook-level3/DeveloperGuide.html#storage-component) - * [Common classes](https://se-education.org/addressbook-level3/DeveloperGuide.html#common-classes) -* [**Implementation**](https://se-education.org/addressbook-level3/DeveloperGuide.html#implementation) - * [\[Proposed\] Undo/redo feature](https://se-education.org/addressbook-level3/DeveloperGuide.html#proposed-undoredo-feature) - * [Proposed Implementation](https://se-education.org/addressbook-level3/DeveloperGuide.html#proposed-implementation) - * [Design considerations:](https://se-education.org/addressbook-level3/DeveloperGuide.html#design-considerations) - * [\[Proposed\] Data archiving](https://se-education.org/addressbook-level3/DeveloperGuide.html#proposed-data-archiving) -* [**Documentation, logging, testing, configuration, dev-ops**](https://se-education.org/addressbook-level3/DeveloperGuide.html#documentation-logging-testing-configuration-dev-ops) -* [**Appendix: Requirements**](https://se-education.org/addressbook-level3/DeveloperGuide.html#appendix-requirements) - * [Product scope](https://se-education.org/addressbook-level3/DeveloperGuide.html#product-scope) - * [User stories](https://se-education.org/addressbook-level3/DeveloperGuide.html#user-stories) - * [Use cases](https://se-education.org/addressbook-level3/DeveloperGuide.html#use-cases) - * [Non-Functional Requirements](https://se-education.org/addressbook-level3/DeveloperGuide.html#non-functional-requirements) - * [Glossary](https://se-education.org/addressbook-level3/DeveloperGuide.html#glossary) -* [**Appendix: Instructions for manual testing**](https://se-education.org/addressbook-level3/DeveloperGuide.html#appendix-instructions-for-manual-testing) - * [Launch and shutdown](https://se-education.org/addressbook-level3/DeveloperGuide.html#launch-and-shutdown) - * [Deleting a person](https://se-education.org/addressbook-level3/DeveloperGuide.html#deleting-a-person) - * [Saving data](https://se-education.org/addressbook-level3/DeveloperGuide.html#saving-data) - -* * * - -**Acknowledgements** --------------------- - -* {list here sources of all reused/adapted ideas, code, documentation, and third-party libraries – include links to the original source as well} - -* * * - -**Setting up, getting started** -------------------------------- - -Refer to the guide [_Setting up and getting started_](https://se-education.org/addressbook-level3/SettingUp.html). - -* * * - -**Design** ----------- - -![:bulb:](./Developer Guide_files/1f4a1.png ":bulb:") **Tip:** The `.puml` files used to create diagrams in this document `docs/diagrams` folder. Refer to the [_PlantUML Tutorial_ at se-edu/guides](https://se-education.org/guides/tutorials/plantUml.html) to learn how to create and edit diagrams. - -### Architecture - -![](./Developer Guide_files/ArchitectureDiagram.png) - -The **_Architecture Diagram_** given above explains the high-level design of the App. - -Given below is a quick overview of main components and how they interact with each other. - -**Main components of the architecture** - -**`Main`** (consisting of classes [`Main`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/Main.java) and [`MainApp`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/MainApp.java)) is in charge of the app launch and shut down. - -* At app launch, it initializes the other components in the correct sequence, and connects them up with each other. -* At shut down, it shuts down the other components and invokes cleanup methods where necessary. - -The bulk of the app’s work is done by the following four components: - -* [**`UI`**](https://se-education.org/addressbook-level3/DeveloperGuide.html#ui-component): The UI of the App. -* [**`Logic`**](https://se-education.org/addressbook-level3/DeveloperGuide.html#logic-component): The command executor. -* [**`Model`**](https://se-education.org/addressbook-level3/DeveloperGuide.html#model-component): Holds the data of the App in memory. -* [**`Storage`**](https://se-education.org/addressbook-level3/DeveloperGuide.html#storage-component): Reads data from, and writes data to, the hard disk. - -[**`Commons`**](https://se-education.org/addressbook-level3/DeveloperGuide.html#common-classes) represents a collection of classes used by multiple other components. - -**How the architecture components interact with each other** - -The _Sequence Diagram_ below shows how the components interact with each other for the scenario where the user issues the command `delete 1`. - -![](./Developer Guide_files/ArchitectureSequenceDiagram.png) - -Each of the four main components (also shown in the diagram above), - -* defines its _API_ in an `interface` with the same name as the Component. -* implements its functionality using a concrete `{Component Name}Manager` class (which follows the corresponding API `interface` mentioned in the previous point. - -For example, the `Logic` component defines its API in the `Logic.java` interface and implements its functionality using the `LogicManager.java` class which follows the `Logic` interface. Other components interact with a given component through its interface rather than the concrete class (reason: to prevent outside component’s being coupled to the implementation of a component), as illustrated in the (partial) class diagram below. - -![](./Developer Guide_files/ComponentManagers.png) - -The sections below give more details of each component. - -### UI component - -The **API** of this component is specified in [`Ui.java`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/ui/Ui.java) - -![Structure of the UI Component](./Developer Guide_files/UiClassDiagram.png) - -The UI consists of a `MainWindow` that is made up of parts e.g.`CommandBox`, `ResultDisplay`, `PersonListPanel`, `StatusBarFooter` etc. All these, including the `MainWindow`, inherit from the abstract `UiPart` class which captures the commonalities between classes that represent parts of the visible GUI. - -The `UI` component uses the JavaFx UI framework. The layout of these UI parts are defined in matching `.fxml` files that are in the `src/main/resources/view` folder. For example, the layout of the [`MainWindow`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/ui/MainWindow.java) is specified in [`MainWindow.fxml`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/resources/view/MainWindow.fxml) - -The `UI` component, - -* executes user commands using the `Logic` component. -* listens for changes to `Model` data so that the UI can be updated with the modified data. -* keeps a reference to the `Logic` component, because the `UI` relies on the `Logic` to execute commands. -* depends on some classes in the `Model` component, as it displays `Person` object residing in the `Model`. - -### Logic component - -**API** : [`Logic.java`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/logic/Logic.java) - -Here’s a (partial) class diagram of the `Logic` component: - -![](./Developer Guide_files/LogicClassDiagram.png) - -The sequence diagram below illustrates the interactions within the `Logic` component, taking `execute("delete 1")` API call as an example. - -![Interactions Inside the Logic Component for the `delete 1` Command](./Developer Guide_files/DeleteSequenceDiagram.png) - -![:information_source:](./Developer Guide_files/2139.png ":information_source:") **Note:** The lifeline for `DeleteCommandParser` should end at the destroy marker (X) but due to a limitation of PlantUML, the lifeline reaches the end of diagram. - -How the `Logic` component works: - -1. When `Logic` is called upon to execute a command, it is passed to an `AddressBookParser` object which in turn creates a parser that matches the command (e.g., `DeleteCommandParser`) and uses it to parse the command. -2. This results in a `Command` object (more precisely, an object of one of its subclasses e.g., `DeleteCommand`) which is executed by the `LogicManager`. -3. The command can communicate with the `Model` when it is executed (e.g. to delete a person). -4. The result of the command execution is encapsulated as a `CommandResult` object which is returned back from `Logic`. - -Here are the other classes in `Logic` (omitted from the class diagram above) that are used for parsing a user command: - -![](./Developer Guide_files/ParserClasses.png) - -How the parsing works: - -* When called upon to parse a user command, the `AddressBookParser` class creates an `XYZCommandParser` (`XYZ` is a placeholder for the specific command name e.g., `AddCommandParser`) which uses the other classes shown above to parse the user command and create a `XYZCommand` object (e.g., `AddCommand`) which the `AddressBookParser` returns back as a `Command` object. -* All `XYZCommandParser` classes (e.g., `AddCommandParser`, `DeleteCommandParser`, …) inherit from the `Parser` interface so that they can be treated similarly where possible e.g, during testing. - -### Model component - -**API** : [`Model.java`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/model/Model.java) - -![](./Developer Guide_files/ModelClassDiagram.png) - -The `Model` component, - -* stores the address book data i.e., all `Person` objects (which are contained in a `UniquePersonList` object). -* stores the currently ‘selected’ `Person` objects (e.g., results of a search query) as a separate _filtered_ list which is exposed to outsiders as an unmodifiable `ObservableList` that can be ‘observed’ e.g. the UI can be bound to this list so that the UI automatically updates when the data in the list change. -* stores a `UserPref` object that represents the user’s preferences. This is exposed to the outside as a `ReadOnlyUserPref` objects. -* does not depend on any of the other three components (as the `Model` represents data entities of the domain, they should make sense on their own without depending on other components) - -![:information_source:](./Developer Guide_files/2139.png ":information_source:") **Note:** An alternative (arguably, a more OOP) model is given below. It has a `Tag` list in the `AddressBook`, which `Person` references. This allows `AddressBook` to only require one `Tag` object per unique tag, instead of each `Person` needing their own `Tag` objects. -![](./Developer Guide_files/BetterModelClassDiagram.png) - -### Storage component - -**API** : [`Storage.java`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/storage/Storage.java) - -![](./Developer Guide_files/StorageClassDiagram.png) - -The `Storage` component, - -* can save both address book data and user preference data in JSON format, and read them back into corresponding objects. -* inherits from both `AddressBookStorage` and `UserPrefStorage`, which means it can be treated as either one (if only the functionality of only one is needed). -* depends on some classes in the `Model` component (because the `Storage` component’s job is to save/retrieve objects that belong to the `Model`) - -### Common classes - -Classes used by multiple components are in the `seedu.addressbook.commons` package. - -* * * - -**Implementation** ------------------- - -This section describes some noteworthy details on how certain features are implemented. - -### \[Proposed\] Undo/redo feature - -#### Proposed Implementation - -The proposed undo/redo mechanism is facilitated by `VersionedAddressBook`. It extends `AddressBook` with an undo/redo history, stored internally as an `addressBookStateList` and `currentStatePointer`. Additionally, it implements the following operations: - -* `VersionedAddressBook#commit()` — Saves the current address book state in its history. -* `VersionedAddressBook#undo()` — Restores the previous address book state from its history. -* `VersionedAddressBook#redo()` — Restores a previously undone address book state from its history. - -These operations are exposed in the `Model` interface as `Model#commitAddressBook()`, `Model#undoAddressBook()` and `Model#redoAddressBook()` respectively. - -Given below is an example usage scenario and how the undo/redo mechanism behaves at each step. - -Step 1. The user launches the application for the first time. The `VersionedAddressBook` will be initialized with the initial address book state, and the `currentStatePointer` pointing to that single address book state. - -![UndoRedoState0](./Developer Guide_files/UndoRedoState0.png) - -Step 2. The user executes `delete 5` command to delete the 5th person in the address book. The `delete` command calls `Model#commitAddressBook()`, causing the modified state of the address book after the `delete 5` command executes to be saved in the `addressBookStateList`, and the `currentStatePointer` is shifted to the newly inserted address book state. - -![UndoRedoState1](./Developer Guide_files/UndoRedoState1.png) - -Step 3. The user executes `add n/David …​` to add a new person. The `add` command also calls `Model#commitAddressBook()`, causing another modified address book state to be saved into the `addressBookStateList`. - -![UndoRedoState2](./Developer Guide_files/UndoRedoState2.png) - -![:information_source:](./Developer Guide_files/2139.png ":information_source:") **Note:** If a command fails its execution, it will not call `Model#commitAddressBook()`, so the address book state will not be saved into the `addressBookStateList`. - -Step 4. The user now decides that adding the person was a mistake, and decides to undo that action by executing the `undo` command. The `undo` command will call `Model#undoAddressBook()`, which will shift the `currentStatePointer` once to the left, pointing it to the previous address book state, and restores the address book to that state. - -![UndoRedoState3](./Developer Guide_files/UndoRedoState3.png) - -![:information_source:](./Developer Guide_files/2139.png ":information_source:") **Note:** If the `currentStatePointer` is at index 0, pointing to the initial AddressBook state, then there are no previous AddressBook states to restore. The `undo` command uses `Model#canUndoAddressBook()` to check if this is the case. If so, it will return an error to the user rather than attempting to perform the undo. - -The following sequence diagram shows how the undo operation works: - -![UndoSequenceDiagram](./Developer Guide_files/UndoSequenceDiagram.png) - -![:information_source:](./Developer Guide_files/2139.png ":information_source:") **Note:** The lifeline for `UndoCommand` should end at the destroy marker (X) but due to a limitation of PlantUML, the lifeline reaches the end of diagram. - -The `redo` command does the opposite — it calls `Model#redoAddressBook()`, which shifts the `currentStatePointer` once to the right, pointing to the previously undone state, and restores the address book to that state. - -![:information_source:](./Developer Guide_files/2139.png ":information_source:") **Note:** If the `currentStatePointer` is at index `addressBookStateList.size() - 1`, pointing to the latest address book state, then there are no undone AddressBook states to restore. The `redo` command uses `Model#canRedoAddressBook()` to check if this is the case. If so, it will return an error to the user rather than attempting to perform the redo. - -Step 5. The user then decides to execute the command `list`. Commands that do not modify the address book, such as `list`, will usually not call `Model#commitAddressBook()`, `Model#undoAddressBook()` or `Model#redoAddressBook()`. Thus, the `addressBookStateList` remains unchanged. - -![UndoRedoState4](./Developer Guide_files/UndoRedoState4.png) - -Step 6. The user executes `clear`, which calls `Model#commitAddressBook()`. Since the `currentStatePointer` is not pointing at the end of the `addressBookStateList`, all address book states after the `currentStatePointer` will be purged. Reason: It no longer makes sense to redo the `add n/David …​` command. This is the behavior that most modern desktop applications follow. - -![UndoRedoState5](./Developer Guide_files/UndoRedoState5.png) - -The following activity diagram summarizes what happens when a user executes a new command: - -![](./Developer Guide_files/CommitActivityDiagram.png) - -#### Design considerations: - -**Aspect: How undo & redo executes:** - -* **Alternative 1 (current choice):** Saves the entire address book. - * Pros: Easy to implement. - * Cons: May have performance issues in terms of memory usage. -* **Alternative 2:** Individual command knows how to undo/redo by itself. - * Pros: Will use less memory (e.g. for `delete`, just save the person being deleted). - * Cons: We must ensure that the implementation of each individual command are correct. - -_{more aspects and alternatives to be added}_ - -### \[Proposed\] Data archiving - -_{Explain here how the data archiving feature will be implemented}_ - -* * * - -**Documentation, logging, testing, configuration, dev-ops** ------------------------------------------------------------ - -* [Documentation guide](https://se-education.org/addressbook-level3/Documentation.html) -* [Testing guide](https://se-education.org/addressbook-level3/Testing.html) -* [Logging guide](https://se-education.org/addressbook-level3/Logging.html) -* [Configuration guide](https://se-education.org/addressbook-level3/Configuration.html) -* [DevOps guide](https://se-education.org/addressbook-level3/DevOps.html) - -* * * - -**Appendix: Requirements** --------------------------- - -### Product scope - -**Target user profile**: - -* has a need to manage a significant number of contacts -* prefer desktop apps over other types -* can type fast -* prefers typing to mouse interactions -* is reasonably comfortable using CLI apps - -**Value proposition**: manage contacts faster than a typical mouse/GUI driven app - -### User stories - -Priorities: High (must have) - `* * *`, Medium (nice to have) - `* *`, Low (unlikely to have) - `*` - -Priority - -As a …​ - -I want to …​ - -So that I can…​ - -`* * *` - -new user - -see usage instructions - -refer to instructions when I forget how to use the App - -`* * *` - -user - -add a new person - -  - -`* * *` - -user - -delete a person - -remove entries that I no longer need - -`* * *` - -user - -find a person by name - -locate details of persons without having to go through the entire list - -`* *` - -user - -hide private contact details - -minimize chance of someone else seeing them by accident - -`*` - -user with many persons in the address book - -sort persons by name - -locate a person easily - -_{More to be added}_ - -### Use cases - -(For all use cases below, the **System** is the `AddressBook` and the **Actor** is the `user`, unless specified otherwise) - -**Use case: Delete a person** - -**MSS** - -1. User requests to list persons -2. AddressBook shows a list of persons -3. User requests to delete a specific person in the list -4. AddressBook deletes the person - - Use case ends. - - -**Extensions** - -* 2a. The list is empty. - - Use case ends. - -* 3a. The given index is invalid. - - * 3a1. AddressBook shows an error message. - - Use case resumes at step 2. - - -_{More to be added}_ - -### Non-Functional Requirements - -1. Should work on any _mainstream OS_ as long as it has Java `11` or above installed. -2. Should be able to hold up to 1000 persons without a noticeable sluggishness in performance for typical usage. -3. A user with above average typing speed for regular English text (i.e. not code, not system admin commands) should be able to accomplish most of the tasks faster using commands than using the mouse. - -_{More to be added}_ - -### Glossary - -* **Mainstream OS**: Windows, Linux, Unix, OS-X -* **Private contact detail**: A contact detail that is not meant to be shared with others - -* * * - -**Appendix: Instructions for manual testing** ---------------------------------------------- - -Given below are instructions to test the app manually. - -![:information_source:](./Developer Guide_files/2139.png ":information_source:") **Note:** These instructions only provide a starting point for testers to work on; testers are expected to do more _exploratory_ testing. - -### Launch and shutdown - -1. Initial launch - - 1. Download the jar file and copy into an empty folder - - 2. Double-click the jar file Expected: Shows the GUI with a set of sample contacts. The window size may not be optimum. - -2. Saving window preferences - - 1. Resize the window to an optimum size. Move the window to a different location. Close the window. - - 2. Re-launch the app by double-clicking the jar file. - Expected: The most recent window size and location is retained. - -3. _{ more test cases …​ }_ - - -### Deleting a person - -1. Deleting a person while all persons are being shown - - 1. Prerequisites: List all persons using the `list` command. Multiple persons in the list. - - 2. Test case: `delete 1` - Expected: First contact is deleted from the list. Details of the deleted contact shown in the status message. Timestamp in the status bar is updated. - - 3. Test case: `delete 0` - Expected: No person is deleted. Error details shown in the status message. Status bar remains the same. - - 4. Other incorrect delete commands to try: `delete`, `delete x`, `...` (where x is larger than the list size) - Expected: Similar to previous. - -2. _{ more test cases …​ }_ - - -### Saving data - -1. Dealing with missing/corrupted data files - - 1. _{explain how to simulate a missing/corrupted file, and the expected behavior}_ -2. _{ more test cases …​ }_ \ No newline at end of file From f9b20911298b3e854b885acf00e424ccd3e0656c Mon Sep 17 00:00:00 2001 From: LicongHuang Date: Thu, 5 Oct 2023 22:36:34 +0800 Subject: [PATCH 024/301] Remove unnecessary file --- html-to-markdown.md | 441 -------------------------------------------- 1 file changed, 441 deletions(-) delete mode 100644 html-to-markdown.md diff --git a/html-to-markdown.md b/html-to-markdown.md deleted file mode 100644 index cb48e0cbb22..00000000000 --- a/html-to-markdown.md +++ /dev/null @@ -1,441 +0,0 @@ - Developer Guide :root \[href^="//x4pollyxxpush.com/"\], :root zeus-ad, :root topadblock, :root span\[id^="ezoic-pub-ad-placeholder-"\], :root guj-ad, :root gpt-ad, :root div\[id^="zergnet-widget"\], :root div\[id^="vuukle-ad-"\], :root div\[id^="sticky\_ad\_"\], :root div\[id^="rc-widget-"\], :root div\[id^="optidigital-adslot"\], :root div\[id^="gpt\_ad\_"\], :root div\[id^="ezoic-pub-ad-"\], :root div\[id^="div-gpt-"\], :root div\[id^="dfp-ad-"\], :root div\[id^="advads\_ad\_"\], :root div\[id^="adspot-"\], :root div\[id^="ads300\_250-widget-"\], :root div\[id^="ads300\_100-widget-"\], :root div\[id^="ads250\_250-widget-"\], :root div\[id^="adrotate\_widgets-"\], :root div\[id^="\_vdo\_ads\_player\_ai\_"\], :root div\[id\*="ScriptRoot"\], :root div\[id\*="MarketGid"\], :root div\[data-native\_ad\], :root div\[data-mini-ad-unit\], :root div\[data-insertion\], :root div\[data-id-advertdfpconf\], :root div\[data-google-query-id\], :root hl-adsense, :root div\[data-contentexchange-widget\], :root div\[data-content="Advertisement"\], :root div\[data-alias="300x250 Ad 2"\], :root div\[data-alias="300x250 Ad 1"\], :root div\[data-adzone\], :root div\[data-adunit-path\], :root div\[data-ad-wrapper\], :root div\[data-ad-placeholder\], :root div\[class^="native-ad-"\], :root div\[data-dfp-id\], :root div\[class^="kiwi-ad-wrapper"\], :root div\[class^="Adstyled\_\_AdWrapper-"\], :root div\[aria-label="Ads"\], :root display-ads, :root display-ad-component, :root bottomadblock, :root atf-ad-slot, :root aside\[id^="adrotate\_widgets-"\], :root article.ad, :root ark-top-ad, :root app-advertisement, :root app-ad, :root amp-fx-flying-carpet, :root amp-embed\[type="taboola"\], :root amp-connatix-player, :root amp-ad-custom, :root amp-ad, :root a\[style="width:100%;height:100%;z-index:10000000000000000;position:absolute;top:0;left:0;"\], :root a\[onmousedown^="this.href='https://paid.outbrain.com/network/redir?"\]\[target="\_blank"\] + .ob\_source, :root a\[onmousedown^="this.href='http://paid.outbrain.com/network/redir?"\]\[target="\_blank"\] + .ob\_source, :root a\[href^="https://yogacomplyfuel.com/"\], :root a\[href^="https://www.sugarinstant.com/?partner\_id="\], :root a\[href^="https://www.purevpn.com/"\]\[href\*="&utm\_source=aff-"\], :root a\[href^="https://www.privateinternetaccess.com/"\] > img, :root a\[href^="https://www.onlineusershielder.com/"\], :root a\[href^="https://www.nutaku.net/signup/landing/"\], :root a\[href^="https://www.nudeidols.com/cams/"\], :root a\[href^="https://www.mypornstarcams.com/landing/click/"\], :root a\[href^="https://www.kingsoffetish.com/tour?partner\_id="\], :root a\[href^="https://www.infowarsstore.com/"\] > img, :root a\[href^="https://www.highcpmrevenuenetwork.com/"\], :root a\[href^="https://www.googleadservices.com/pagead/aclk?"\], :root a\[href^="https://www.goldenfrog.com/vyprvpn?offer\_id="\]\[href\*="&aff\_id="\], :root a\[href^="https://www.get-express-vpn.com/offer/"\], :root a\[href^="https://www.financeads.net/tc.php?"\], :root a\[href^="https://www.brazzersnetwork.com/landing/"\], :root div\[class^="Display\_displayAd"\], :root a\[href^="https://www.sheetmusicplus.com/?aff\_id="\], :root a\[href^="https://www.bang.com/?aff="\], :root a\[href^="https://www.adxsrve.com/"\], :root a\[href^="https://www.5mno3.com/"\], :root a\[href^="https://wirewar.website/"\], :root a\[href^="https://visit-website.com/"\], :root a\[href^="https://twinrdsyn.com/"\], :root a\[href^="https://twinrdsrv.com/"\], :root a\[href^="https://tsartech.g2afse.com/"\], :root \[href^="https://www.mypatriotsupply.com/"\] > img, :root a\[href^="https://trk.softonixs.xyz/"\], :root a\[href^="https://trk.nfl-online-streams.club/"\], :root a\[href^="https://tracking.avapartner.com/"\], :root a\[href^="https://track.wg-aff.com"\], :root a\[href^="https://track.afcpatrk.com/"\], :root a\[href^="https://torguard.net/aff.php"\] > img, :root div\[data-adname\], :root a\[href^="https://thechleads.pro/"\], :root .OUTBRAIN\[data-widget-id^="FMS\_REELD\_"\], :root \[data-role="tile-ads-module"\], :root a\[href^="https://adsrv4k.com/"\], :root a\[href^="https://go.xlviirdr.com"\], :root a\[href^="https://thaudray.com/"\], :root a\[href^="https://taghaugh.com/"\], :root a\[href^="https://click.candyoffers.com/"\], :root \[href^="https://zstacklife.com/"\] img, :root a\[href^="https://t.aslnk.link/"\], :root a\[href^="https://t.adating.link/"\], :root a\[href^="https://go.trackitalltheway.com/"\], :root \[href^="https://track.fiverr.com/visit/"\] > img, :root a\[href^="https://syndication.exoclick.com/"\], :root a\[href^="https://syndication.dynsrvtbg.com/"\], :root a\[href^="https://streamate.com/landing/click/"\], :root a\[href^="https://ad.doubleclick.net/"\], :root a\[href^="https://static.fleshlight.com/images/banners/"\], :root a\[href^="https://sTaRtGAMing.net/tienda/"\], :root citrus-ad-wrapper, :root a\[onmousedown^="this.href='https://paid.outbrain.com/network/redir?"\]\[target="\_blank"\], :root a\[href^="https://sTaRTgamInG.net/tienda/"\], :root \[data-adblockkey\], :root a\[href^="https://sTARtgamIng.net/tienda/"\], :root a\[href^="https://aweptjmp.com/"\], :root a\[href^="https://s.zlinkc.com/"\], :root a\[href^="https://www.mrskin.com/account/"\], :root a\[href^="https://s.optzsrv.com/"\], :root a\[data-obtrack^="http://paid.outbrain.com/network/redir?"\], :root a\[href^="https://reinstandpointdumbest.com/"\], :root a\[href^="https://go.strpjmp.com/"\], :root a\[href^="https://refpa4903566.top/"\], :root a\[href^="https://pubads.g.doubleclick.net/"\], :root a\[href^="https://prf.hn/click/"\]\[href\*="/camref:"\] > img, :root a\[href^="https://serve.awmdelivery.com/"\], :root a\[href^="https://prf.hn/click/"\]\[href\*="/adref:"\] > img, :root a\[href^="https://pb-track.com/"\], :root a\[href^="https://paid.outbrain.com/network/redir?"\], :root ps-connatix-module, :root div\[id^="ad\_position\_"\], :root a\[href^="https://ovb.im/"\], :root div\[id^="ad-div-"\], :root a\[href^="https://newbinotracs.com/"\], :root a\[href^="https://natour.naughtyamerica.com/track/"\], :root \[href^="https://stvkr.com/"\], :root a\[href^="https://mediaserver.entainpartners.com/renderBanner.do?"\], :root a\[href^="https://loboclick.com"\], :root .nya-slot\[style\], :root a\[href^="https://a.bestcontentweb.top/"\], :root a\[href^="https://lobimax.com/"\], :root a\[href^="https://lead1.pl/"\], :root a\[href^="https://refpa.top/"\], :root a\[href^="https://landing.brazzersnetwork.com/"\], :root a\[href^="https://safesurfingtoday.com/"\]\[href\*="?skip="\], :root a\[href^="https://ads.leovegas.com/redirect.aspx?"\], :root a\[href^="https://land.brazzersnetwork.com/landing/"\], :root a\[href^="https://track.adform.net/"\], :root \[data-css-class="dfp-inarticle"\], :root .card-captioned.crd > .crd--cnt > .s2nPlayer, :root a\[href^="https://go.tmrjmp.com"\], :root a\[href^="https://startgamIng.Net/tienda/"\], :root a\[href^="https://l.hyenadata.com/"\], :root a\[href^="https://juicyads.in/"\], :root a\[href^="https://mediaserver.gvcaffiliates.com/renderBanner.do?"\], :root a\[href^="https://join.dreamsexworld.com/"\], :root a\[href^="https://itubego.com/video-downloader/?affid="\], :root a\[href^="https://iqbroker.com/"\]\[href\*="?aff="\], :root a\[href^="https://incisivetrk.cvtr.io/click?"\], :root \[href^="https://www.herbanomic.com/"\] > img, :root a\[href^="https://maymooth-stopic.com/"\], :root div\[data-ad-targeting\], :root a\[href^="https://hotplaystime.life/"\], :root a\[href^="https://hot-growngames.life/"\], :root \[data-revive-zoneid\], :root a\[href^="https://googleads.g.doubleclick.net/pcs/click"\], :root a\[href^="https://clk.wrenchsound.store/"\], :root a\[href^="https://go.zybrdr.com"\], :root \[href^="http://join.michelle-austin.com/"\], :root \[class^="tile-picker\_\_CitrusBannerContainer-sc-"\], :root a\[href^="https://go.xxxiijmp.com"\], :root a\[href^="https://go.xtbaffiliates.com/"\], :root a\[href^="https://ismlks.com/"\], :root a\[href^="//a.bestcontentfare.top/"\], :root \[href^="https://www.mypillow.com/"\] > img, :root a\[href^="https://azpresearch.club/"\], :root a\[href^="https://go.xlirdr.com"\], :root a\[href^="https://go.skinstrip.net"\]\[href\*="?campaignId="\], :root a\[href^="https://go.markets.com/visit/?bta="\], :root a\[href^="https://billing.purevpn.com/aff.php"\] > img, :root a\[href^="https://go.hpyrdr.com/"\], :root a\[href^="https://go.goaserv.com/"\], :root a\[href^="https://go.dmzjmp.com"\], :root a\[href^="https://go.admjmp.com/"\], :root \[href^="https://kingered-banctours.com/"\], :root a\[href^="https://get.surfshark.net/aff\_c?"\]\[href\*="&aff\_id="\] > img, :root a-ad, :root a\[href^="https://affiliate.rusvpn.com/click.php?"\], :root a\[href^="https://geniusdexchange.com/"\], :root a\[href^="https://frameworkdeserve.com/"\], :root a\[href^="https://flirtandsweets.life/"\], :root a\[href^="https://www.mrskin.com/tour"\], :root a\[href^="https://financeads.net/tc.php?"\], :root div\[data-native-ad\], :root a\[href^="https://engine.trackingdesks.com/"\], :root a\[data-redirect^="https://paid.outbrain.com/network/redir?"\], :root \[href^="https://www.reimageplus.com/"\], :root a\[href^="https://engine.phn.doublepimp.com/"\], :root a\[href^="https://engine.blueistheneworanges.com/"\], :root a\[href^="https://dl-protect.net/"\], :root \[href="//jjgirls.com/sex/ChaturbateCams"\], :root a\[href^="https://datingoffers30.info/"\], :root a\[href^="https://clixtrac.com/"\], :root a\[href^="https://click.linksynergy.com/fs-bin/"\] > img, :root ad-shield-ads, :root a\[href^="https://sTartGAMinG.net/tienda/"\], :root AD-TRIPLE-BOX, :root a\[href^="https://click.hoolig.app/"\], :root a\[href^="https://track.totalav.com/"\], :root img\[src^="https://images.purevpnaffiliates.com"\], :root a\[href^="https://porntubemate.com/"\], :root a\[href^="http://www.gfrevenge.com/landing/"\], :root a\[href^="https://clickadilla.com/"\], :root a\[href^="https://click.dtiserv2.com/"\], :root a\[href^="https://go.xlvirdr.com"\], :root a\[href^="http://www.iyalc.com/"\], :root a\[href^="https://claring-loccelkin.com/"\], :root \[class^="s2nPlayer"\], :root a\[href^="https://chaturbate.jjgirls.com/?track="\], :root a\[href^="https://chaturbate.com/in/?track="\], :root a\[href^="https://chaturbate.com/in/?tour="\], :root a\[href^="https://cams.imagetwist.com/in/?track="\], :root a\[href^="https://go.gldrdr.com/"\], :root a\[href^="https://buqkrzbrucz.com/"\], :root a\[href^="https://affcpatrk.com/"\], :root a\[href^="https://bongacams2.com/track?"\], :root a\[href^="https://www.sheetmusicplus.com/"\]\[href\*="?aff\_id="\], :root a\[href^="https://bngpt.com/"\], :root a\[href^="https://bluedelivery.pro/"\], :root a\[href^="https://black77854.com/"\], :root a\[href^="https://bc.game/"\], :root a\[href^="https://ndt5.net/"\], :root a\[href^="https://batheunits.com/"\], :root a\[target="\_blank"\]\[onmousedown="this.href^='http://paid.outbrain.com/network/redir?"\], :root a\[href^="https://banners.livepartners.com/"\], :root a\[href^="//whulsaux.com/"\], :root a\[href^="https://m.do.co/c/"\] > img, :root \[href="https://masstortfinancing.com"\] img, :root a\[href^="https://bongacams10.com/track?"\], :root a\[href^="https://albionsoftwares.com/"\], :root a\[href^="https://t.hrtye.com/"\], :root a\[href^="https://go.etoro.com/"\] > img, :root a\[href^="https://convertmb.com/"\], :root a\[href^="https://join.sexworld3d.com/track/"\], :root a\[href^="https://intenseaffiliates.com/redirect/"\], :root a\[href^="https://ads.ad4game.com/"\], :root \[id^="google\_ads\_iframe"\], :root a\[href^="https://syndication.optimizesrv.com/"\], :root a\[href^="https://affpa.top/"\], :root a\[href^="https://adnetwrk.com/"\], :root a\[href^="https://adjoincomprise.com/"\], :root \[href^="http://misslinkvocation.com/"\], :root a\[href^="https://adclick.g.doubleclick.net/"\], :root a\[href^="https://www.bet365.com/"\]\[href\*="affiliate="\], :root \[href^="https://r.kraken.com/"\], :root a\[href^="https://mmwebhandler.aff-online.com/"\], :root a\[href^="https://go.nordvpn.net/aff"\] > img, :root \[href^="http://clicks.totemcash.com/"\], :root a\[href^="https://misspkl.com/"\], :root a\[href^="https://ad.zanox.com/ppc/"\] > img, :root a\[href^="https://ad.kubiccomps.icu/"\], :root a\[href^="https://a2.adform.net/"\], :root a\[href^="https://iactrivago.ampxdirect.com/"\], :root a\[href^="https://a.medfoodhome.com/"\], :root a\[href^="https://adultfriendfinder.com/go/"\], :root a\[href^="https://a.bestcontentoperation.top/"\], :root a\[href^="http://static.fleshlight.com/images/banners/"\], :root a\[href^="https://a.adtng.com/"\], :root \[data-m-ad-id\], :root a\[href^="https://sTartgAminG.net/tienda/"\], :root a\[href^="https://a-ads.com/"\], :root a\[href^="https://join.virtualtaboo.com/track/"\], :root a\[href^="https://StarTGAminG.net/tienda/"\], :root a\[href^="https://STaRTgamINg.net/tienda/"\], :root a\[href^="https://cpmspace.com/"\], :root \[href^="https://freecourseweb.com/"\] > .sitefriend, :root a\[href^="https://prf.hn/click/"\]\[href\*="/creativeref:"\] > img, :root a\[href^="http://www.adultempire.com/unlimited/promo?"\]\[href\*="&partner\_id="\], :root a\[href^="https://1betandgonow.com/"\], :root \[href="https://ourgoldguy.com/contact/"\] img, :root a\[href^="https://brightadnetwork.com/"\], :root \[href^="https://www.avantlink.com/click.php"\] img, :root a\[href^="http://www.onwebcam.com/random?t\_link="\], :root a\[href^="http://www.mrskin.com/tour"\], :root a\[href^="https://agacelebir.com/"\], :root a\[href^="https://spygasm.com/track?"\], :root a\[href^="http://d2.zedo.com/"\], :root a\[href^="http://www.friendlyduck.com/AF\_"\], :root a\[href^="http://trk.globwo.online/"\], :root a\[href^="http://traffic.tc-clicks.com/"\], :root a\[href^="http://tour.mrskin.com/"\], :root a\[href^="https://funkydaters.com/"\], :root \[id^="ad\_sky"\], :root a\[href^="http://https://www.get-express-vpn.com/offer/"\], :root div\[id^="google\_dfp\_"\], :root a\[href^="http://googleads.g.doubleclick.net/pcs/click"\], :root \[href^="http://go.cm-trk2.com/"\], :root a\[href^="http://click.payserve.com/"\], :root a\[href^="https://porngames.adult/?SID="\], :root a\[href^="https://landing1.brazzersnetwork.com"\], :root #slashboxes > .deals-rail, :root \[href^="http://globsads.com/"\], :root \[href^="https://www.brighteonstore.com/products/"\] img, :root a\[href^="http://bc.vc/?r="\], :root a\[href^="https://mityneedn.com/"\], :root \[href^="http://homemoviestube.com/"\], :root a\[href^="http://ad.doubleclick.net/"\], :root a\[href^="//zunsoach.com/"\], :root a\[href^="//pubads.g.doubleclick.net/"\], :root a\[href^="https://femglobal.app/"\], :root a\[href^="//go.eabids.com/"\], :root a\[data-url^="http://paid.outbrain.com/network/redir?"\] + .author, :root \[href^="https://join.playboyplus.com/track/"\], :root a\[href^="//ardslediana.com/"\], :root \[data-d-ad-id\], :root a\[href\*=".engine.adglare.net/"\], :root \[href^="https://awbbjmp.com/"\], :root a\[href^="https://tracker.loropartners.com/"\], :root #kt\_player > a\[target="\_blank"\], :root a\[href\*=".cfm?fp="\]\[href\*="&maxads="\], :root \[data-ad-width\], :root a\[href^="http://bodelen.com/"\], :root a\[data-oburl^="https://paid.outbrain.com/network/redir?"\], :root \[href^="https://cpa.10kfreesilver.com/"\], :root a\[href^="https://a.bestcontentfood.top/"\], :root a\[href^="http://wct.link/"\], :root \[href^="https://goldforyourfuture.com/clk.trk"\] img, :root \[onclick^="location.href='http://www.reimageplus.com"\], :root \[id^="section-ad-banner"\], :root a\[href^="https://go.julrdr.com/"\], :root .trc\_rbox\_div .syndicatedItemUB, :root \[href^="https://zone.gotrackier.com/"\], :root \[href^="https://detachedbates.com/"\], :root \[href^="https://www.targetingpartner.com/"\], :root a\[href^="https://fourwhenstatistics.com/"\], :root \[href^="https://www.restoro.com/"\], :root a\[href^="https://yourperfectdating.life/"\], :root a\[href^="https://join.virtuallust3d.com/"\], :root .section-subheader > .section-hotel-prices-header, :root \[href^="https://go.affiliatexe.com/"\], :root \[href^="https://www.hostg.xyz/"\] > img, :root \[href^="https://ilovemyfreedoms.com/landing-"\], :root a\[href^="https://staRTgaming.net/tienda/"\], :root a\[href^="https://STaRtgAmInG.net/tienda/"\], :root a\[href^="http://adultfriendfinder.com/go/"\], :root a\[href^="https://fastestvpn.com/lifetime-special-deal?a\_aid="\], :root a\[href^="https://tour.mrskin.com/"\], :root div\[id^="ad-position-"\], :root a\[href^="http://affiliate.glbtracker.com/"\], :root a\[href^="https://leg.xyz/?track="\], :root div\[id^="crt-"\]\[style\], :root a\[href^="http://adultgames.xxx/"\], :root \[href^="https://shiftnetwork.infusionsoft.com/go/"\] > img, :root a\[onmousedown^="this.href='http://paid.outbrain.com/network/redir?"\]\[target="\_blank"\], :root \[href^="https://secure.bmtmicro.com/servlets/"\], :root a\[href^="https://losingoldfry.com/"\], :root .scroll-fixable.rail-right > .deals-rail, :root \[href^="https://routewebtk.com/"\], :root a\[href^="https://oackoubs.com/"\], :root a\[href^="https://ak.psaltauw.net/"\], :root a\[href^="https://go.cmtaffiliates.com/"\], :root \[data-name="adaptiveConstructorAd"\], :root \[href^="https://optimizedelite.com/"\] > img, :root a\[href^="https://awptjmp.com/"\], :root a\[href^="https://go.goasrv.com/"\], :root \[href^="http://mypillow.com/"\] > img, :root a\[href^="http://bongacams.com/track?"\], :root a\[href^="https://fleshlight.sjv.io/"\], :root \[data-ad-manager-id\], :root a\[href^="https://promo-bc.com/"\], :root a\[href^="https://clicks.pipaffiliates.com/"\], :root \[href^="https://noqreport.com/"\] > img, :root a\[href^="https://www.highperformancecpmgate.com/"\], :root a\[href^="https://t.grtyi.com/"\], :root \[href^="https://mylead.global/stl/"\] > img, :root \[href^="https://mypatriotsupply.com/"\] > img, :root \[data-freestar-ad\], :root a\[href^="https://fc.lc/ref/"\], :root .vid-present > .van\_vid\_carousel\_\_padding, :root span\[data-ez-ph-id\], :root \[href^="https://track.aftrk1.com/"\], :root div\[id^="adngin-"\], :root \[data-rc-widget\], :root a\[href^="https://go.xxxijmp.com"\], :root \[href^="https://istlnkcl.com/"\], :root \[href^="https://go.xlrdr.com"\], :root \[href^="https://go.4rabettraff.com/"\], :root a\[href^="https://tm-offers.gamingadult.com/"\], :root \[href^="https://charmingdatings.life/"\], :root \[href^="https://glersakr.com/"\], :root ins.adsbygoogle, :root a\[href^="https://1startfiledownload1.com/"\], :root .trc\_rbox\_border\_elm .syndicatedItem, :root div\[id^="pa\_sticky\_ad\_box\_middle\_"\], :root a\[href^="http://www.onclickmega.com/jump/next.php?"\], :root a\[href^="https://italarizege.xyz/"\], :root a\[href^="https://wittered-mainging.com/"\], :root \[href^="https://engine.gettopple.com/"\], :root \[data-id^="div-gpt-ad"\], :root a\[href^="https://k2s.cc/pr/"\], :root \[href^="https://affect3dnetwork.com/track/"\], :root a\[href^="https://camfapr.com/landing/click/"\], :root \[href="//sexcams.plus/"\], :root a\[href^="https://go.currency.com/"\], :root .resultsList > div > div > div.G-5c\[role="tab"\]\[tabindex="0"\], :root \[href^="http://www.mypillow.com/"\] > img, :root div\[id^="div-ads-"\], :root \[href^="https://rapidgator.net/article/premium/ref/"\], :root \[href^="https://join3.bannedsextapes.com"\], :root div\[data-spotim-slot\], :root \[href^="https://antiagingbed.com/discount/"\] > img, :root a\[href^="https://go.247traffic.com/"\], :root \[href^="https://join.girlsoutwest.com/"\], :root \[href^="http://trafficare.net/"\], :root a\[href^="https://tc.tradetracker.net/"\] > img, :root a\[href^="https://adserver.adreactor.com/"\], :root \[href^="http://join.shemalesfromhell.com/"\], :root \[id^="ad\_slider"\], :root #searchResultsList > div > div\[onclick$="'inline.ad'});"\], :root \[data-adbridg-ad-class\], :root a\[href^="http://www.adultdvdempire.com/?partner\_id="\]\[href\*="&utm\_"\], :root \[href^="http://join.shemale.xxx/"\], :root a\[href^="https://ads.betfair.com/redirect.aspx?"\], :root \[href^="http://www.fleshlightgirls.com/"\], :root \[href^="http://join.trannies-fuck.com/"\], :root .trc\_rbox .syndicatedItem, :root a\[href^="http://cam4com.go2cloud.org/aff\_c?"\], :root a\[href^="https://thefacux.com/"\], :root a\[href^="https://ads.planetwin365affiliate.com/redirect.aspx?"\], :root \[href^="http://join.rodneymoore.com/"\], :root \[href^="https://shrugartisticelder.com"\], :root a\[href^="https://staRTgamIng.net/tienda/"\], :root div\[id^="lazyad-"\], :root a\[href^="http://com-1.pro/"\], :root \[name^="google\_ads\_iframe"\], :root \[href="https://www.masstortfinancing.com/"\] > img, :root .ob\_container .item-container-obpd, :root \[id^="div-gpt-ad"\], :root a\[href^="https://www.geekbuying.com/dynamic-ads/"\], :root a\[href^="https://lnkxt.bannerator.com/"\], :root \[href="https://jdrucker.com/gold"\] > img, :root \[href^="https://v.investologic.co.uk/"\], :root \[href^="https://cipledecline.buzz/"\], :root a\[href^="https://go.xxxjmp.com"\], :root #leader-companion > a\[href\], :root \[data-desktop-ad-id\], :root \[href^="https://wct.link/"\], :root div\[recirculation-ad-container\], :root \[href^="https://traffserve.com/"\], :root \[data-type="ad-vertical"\], :root a\[href^="https://u.expresstech.io/"\], :root \[href^="https://mypillow.com/"\] > img, :root \[href^="https://ad.admitad.com/"\], :root \[data-testid="ad\_testID"\], :root a\[href^="https://track.ultravpn.com/"\], :root \[href^="https://goldcometals.com/clk.trk"\], :root a\[href^="https://go.hpyjmp.com"\], :root \[href^="https://mystore.com/"\] > img, :root \[data-mobile-ad-id\], :root a\[href^="http://tc.tradetracker.net/"\] > img, :root a\[href^="http://affiliates.thrixxx.com/"\], :root div\[id^="yandex\_ad"\], :root a\[href^="https://pb-imc.com/"\], :root a\[href^="https://www.adultempire.com/"\]\[href\*="?partner\_id="\], :root \[data-template-type="nativead"\], :root \[data-ad-name\], :root \[data-ez-name\], :root a\[data-widget-outbrain-redirect^="http://paid.outbrain.com/network/redir?"\], :root \[data-dynamic-ads\], :root a\[href^="http://go.xtbaffiliates.com/"\], :root a\[href^="https://consali.com/"\], :root .grid > .container > #aside-promotion, :root DFP-AD, :root .trc\_related\_container div\[data-item-syndicated="true"\], :root a\[href^="https://www.liquidfire.mobi/"\], :root \[href^="https://click2cvs.com/"\], :root \[href^="//mage98rquewz.com/"\], :root a\[href^="https://webroutetrk.com/"\], :root a\[href^="https://mercurybest.com/"\], :root a\[href^="https://startgAming.net/tienda/"\], :root \[href^="https://safer-redirection.com"\], :root \[onclick\*="content.ad/"\], :root AMP-AD, :root a\[href^="https://sTartGAMiNG.net/tienda/"\], :root \[data-ad-cls\], :root \[id^="ad-wrap-"\], :root div\[id^="taboola-stream-"\], :root \[href^="https://go.astutelinks.com/"\], :root \[class^="amp-ad-"\], :root \[href^="https://affiliate.fastcomet.com/"\] > img, :root \[class^="adDisplay-module"\], :root AD-SLOT, :root .ob\_dual\_right > .ob\_ads\_header ~ .odb\_div, :root \[href^="http://join.shemalepornstar.com/"\], :root a\[href^="https://go.xlviiirdr.com"\], :root .trc\_rbox\_div .syndicatedItem, :root div\[data-adunit\], :root app-large-ad, :root \[href^="https://turtlebids.irauctions.com/"\] img, :root a\[href^="https://www.adskeeper.com"\], :root \[href^="https://totlnkcl.com/"\], :root \[data-ad-module\], :root .plistaList > .itemLinkPET, :root \[href^="https://gmxvmvptfm.com/"\], :root \[href^="https://trackfin.asia/"\], :root .plistaList > .plista\_widget\_underArticle\_item\[data-type="pet"\], :root a\[href\*="//lkstrck2.com/"\], :root a\[href^="https://bs.serving-sys.com"\], :root \[href^="http://residenceseeingstanding.com/"\], :root a\[href^="https://traffdaq.com/"\], :root \[class^="div-gpt-ad"\], :root a\[href^="http://partners.etoro.com/"\], :root \[data-advadstrackid\], :root a\[href^="https://refpazkjixes.top/"\], :root #mgb-container > #mgb, :root \[href^="https://www.cloudways.com/en/?id"\], :root a\[href^="https://trk.sportsflix4k.club/"\], :root a\[href^="https://tweakostensibleinstaller.com/"\], :root a\[href^="https://go.xlivrdr.com"\], :root a\[href^="https://cam4com.go2cloud.org/"\], :root a\[href^="http://li.blogtrottr.com/click?"\] { display: none !important; } - -[AB-3](https://se-education.org/addressbook-level3/) - -[User Guide](https://se-education.org/addressbook-level3/UserGuide.html)[Developer Guide](https://se-education.org/addressbook-level3/DeveloperGuide.html)[About Us](https://se-education.org/addressbook-level3/AboutUs.html) [![View on GitHub](./Developer Guide_files/github-icon.png)](https://github.com/se-edu/addressbook-level3) - -Developer Guide -=============== - -* [**Acknowledgements**](https://se-education.org/addressbook-level3/DeveloperGuide.html#acknowledgements) -* [**Setting up, getting started**](https://se-education.org/addressbook-level3/DeveloperGuide.html#setting-up-getting-started) -* [**Design**](https://se-education.org/addressbook-level3/DeveloperGuide.html#design) - * [Architecture](https://se-education.org/addressbook-level3/DeveloperGuide.html#architecture) - * [UI component](https://se-education.org/addressbook-level3/DeveloperGuide.html#ui-component) - * [Logic component](https://se-education.org/addressbook-level3/DeveloperGuide.html#logic-component) - * [Model component](https://se-education.org/addressbook-level3/DeveloperGuide.html#model-component) - * [Storage component](https://se-education.org/addressbook-level3/DeveloperGuide.html#storage-component) - * [Common classes](https://se-education.org/addressbook-level3/DeveloperGuide.html#common-classes) -* [**Implementation**](https://se-education.org/addressbook-level3/DeveloperGuide.html#implementation) - * [\[Proposed\] Undo/redo feature](https://se-education.org/addressbook-level3/DeveloperGuide.html#proposed-undoredo-feature) - * [Proposed Implementation](https://se-education.org/addressbook-level3/DeveloperGuide.html#proposed-implementation) - * [Design considerations:](https://se-education.org/addressbook-level3/DeveloperGuide.html#design-considerations) - * [\[Proposed\] Data archiving](https://se-education.org/addressbook-level3/DeveloperGuide.html#proposed-data-archiving) -* [**Documentation, logging, testing, configuration, dev-ops**](https://se-education.org/addressbook-level3/DeveloperGuide.html#documentation-logging-testing-configuration-dev-ops) -* [**Appendix: Requirements**](https://se-education.org/addressbook-level3/DeveloperGuide.html#appendix-requirements) - * [Product scope](https://se-education.org/addressbook-level3/DeveloperGuide.html#product-scope) - * [User stories](https://se-education.org/addressbook-level3/DeveloperGuide.html#user-stories) - * [Use cases](https://se-education.org/addressbook-level3/DeveloperGuide.html#use-cases) - * [Non-Functional Requirements](https://se-education.org/addressbook-level3/DeveloperGuide.html#non-functional-requirements) - * [Glossary](https://se-education.org/addressbook-level3/DeveloperGuide.html#glossary) -* [**Appendix: Instructions for manual testing**](https://se-education.org/addressbook-level3/DeveloperGuide.html#appendix-instructions-for-manual-testing) - * [Launch and shutdown](https://se-education.org/addressbook-level3/DeveloperGuide.html#launch-and-shutdown) - * [Deleting a person](https://se-education.org/addressbook-level3/DeveloperGuide.html#deleting-a-person) - * [Saving data](https://se-education.org/addressbook-level3/DeveloperGuide.html#saving-data) - -* * * - -**Acknowledgements** --------------------- - -* {list here sources of all reused/adapted ideas, code, documentation, and third-party libraries – include links to the original source as well} - -* * * - -**Setting up, getting started** -------------------------------- - -Refer to the guide [_Setting up and getting started_](https://se-education.org/addressbook-level3/SettingUp.html). - -* * * - -**Design** ----------- - -![:bulb:](./Developer Guide_files/1f4a1.png ":bulb:") **Tip:** The `.puml` files used to create diagrams in this document `docs/diagrams` folder. Refer to the [_PlantUML Tutorial_ at se-edu/guides](https://se-education.org/guides/tutorials/plantUml.html) to learn how to create and edit diagrams. - -### Architecture - -![](./Developer Guide_files/ArchitectureDiagram.png) - -The **_Architecture Diagram_** given above explains the high-level design of the App. - -Given below is a quick overview of main components and how they interact with each other. - -**Main components of the architecture** - -**`Main`** (consisting of classes [`Main`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/Main.java) and [`MainApp`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/MainApp.java)) is in charge of the app launch and shut down. - -* At app launch, it initializes the other components in the correct sequence, and connects them up with each other. -* At shut down, it shuts down the other components and invokes cleanup methods where necessary. - -The bulk of the app’s work is done by the following four components: - -* [**`UI`**](https://se-education.org/addressbook-level3/DeveloperGuide.html#ui-component): The UI of the App. -* [**`Logic`**](https://se-education.org/addressbook-level3/DeveloperGuide.html#logic-component): The command executor. -* [**`Model`**](https://se-education.org/addressbook-level3/DeveloperGuide.html#model-component): Holds the data of the App in memory. -* [**`Storage`**](https://se-education.org/addressbook-level3/DeveloperGuide.html#storage-component): Reads data from, and writes data to, the hard disk. - -[**`Commons`**](https://se-education.org/addressbook-level3/DeveloperGuide.html#common-classes) represents a collection of classes used by multiple other components. - -**How the architecture components interact with each other** - -The _Sequence Diagram_ below shows how the components interact with each other for the scenario where the user issues the command `delete 1`. - -![](./Developer Guide_files/ArchitectureSequenceDiagram.png) - -Each of the four main components (also shown in the diagram above), - -* defines its _API_ in an `interface` with the same name as the Component. -* implements its functionality using a concrete `{Component Name}Manager` class (which follows the corresponding API `interface` mentioned in the previous point. - -For example, the `Logic` component defines its API in the `Logic.java` interface and implements its functionality using the `LogicManager.java` class which follows the `Logic` interface. Other components interact with a given component through its interface rather than the concrete class (reason: to prevent outside component’s being coupled to the implementation of a component), as illustrated in the (partial) class diagram below. - -![](./Developer Guide_files/ComponentManagers.png) - -The sections below give more details of each component. - -### UI component - -The **API** of this component is specified in [`Ui.java`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/ui/Ui.java) - -![Structure of the UI Component](./Developer Guide_files/UiClassDiagram.png) - -The UI consists of a `MainWindow` that is made up of parts e.g.`CommandBox`, `ResultDisplay`, `PersonListPanel`, `StatusBarFooter` etc. All these, including the `MainWindow`, inherit from the abstract `UiPart` class which captures the commonalities between classes that represent parts of the visible GUI. - -The `UI` component uses the JavaFx UI framework. The layout of these UI parts are defined in matching `.fxml` files that are in the `src/main/resources/view` folder. For example, the layout of the [`MainWindow`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/ui/MainWindow.java) is specified in [`MainWindow.fxml`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/resources/view/MainWindow.fxml) - -The `UI` component, - -* executes user commands using the `Logic` component. -* listens for changes to `Model` data so that the UI can be updated with the modified data. -* keeps a reference to the `Logic` component, because the `UI` relies on the `Logic` to execute commands. -* depends on some classes in the `Model` component, as it displays `Person` object residing in the `Model`. - -### Logic component - -**API** : [`Logic.java`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/logic/Logic.java) - -Here’s a (partial) class diagram of the `Logic` component: - -![](./Developer Guide_files/LogicClassDiagram.png) - -The sequence diagram below illustrates the interactions within the `Logic` component, taking `execute("delete 1")` API call as an example. - -![Interactions Inside the Logic Component for the `delete 1` Command](./Developer Guide_files/DeleteSequenceDiagram.png) - -![:information_source:](./Developer Guide_files/2139.png ":information_source:") **Note:** The lifeline for `DeleteCommandParser` should end at the destroy marker (X) but due to a limitation of PlantUML, the lifeline reaches the end of diagram. - -How the `Logic` component works: - -1. When `Logic` is called upon to execute a command, it is passed to an `AddressBookParser` object which in turn creates a parser that matches the command (e.g., `DeleteCommandParser`) and uses it to parse the command. -2. This results in a `Command` object (more precisely, an object of one of its subclasses e.g., `DeleteCommand`) which is executed by the `LogicManager`. -3. The command can communicate with the `Model` when it is executed (e.g. to delete a person). -4. The result of the command execution is encapsulated as a `CommandResult` object which is returned back from `Logic`. - -Here are the other classes in `Logic` (omitted from the class diagram above) that are used for parsing a user command: - -![](./Developer Guide_files/ParserClasses.png) - -How the parsing works: - -* When called upon to parse a user command, the `AddressBookParser` class creates an `XYZCommandParser` (`XYZ` is a placeholder for the specific command name e.g., `AddCommandParser`) which uses the other classes shown above to parse the user command and create a `XYZCommand` object (e.g., `AddCommand`) which the `AddressBookParser` returns back as a `Command` object. -* All `XYZCommandParser` classes (e.g., `AddCommandParser`, `DeleteCommandParser`, …) inherit from the `Parser` interface so that they can be treated similarly where possible e.g, during testing. - -### Model component - -**API** : [`Model.java`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/model/Model.java) - -![](./Developer Guide_files/ModelClassDiagram.png) - -The `Model` component, - -* stores the address book data i.e., all `Person` objects (which are contained in a `UniquePersonList` object). -* stores the currently ‘selected’ `Person` objects (e.g., results of a search query) as a separate _filtered_ list which is exposed to outsiders as an unmodifiable `ObservableList` that can be ‘observed’ e.g. the UI can be bound to this list so that the UI automatically updates when the data in the list change. -* stores a `UserPref` object that represents the user’s preferences. This is exposed to the outside as a `ReadOnlyUserPref` objects. -* does not depend on any of the other three components (as the `Model` represents data entities of the domain, they should make sense on their own without depending on other components) - -![:information_source:](./Developer Guide_files/2139.png ":information_source:") **Note:** An alternative (arguably, a more OOP) model is given below. It has a `Tag` list in the `AddressBook`, which `Person` references. This allows `AddressBook` to only require one `Tag` object per unique tag, instead of each `Person` needing their own `Tag` objects. -![](./Developer Guide_files/BetterModelClassDiagram.png) - -### Storage component - -**API** : [`Storage.java`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/storage/Storage.java) - -![](./Developer Guide_files/StorageClassDiagram.png) - -The `Storage` component, - -* can save both address book data and user preference data in JSON format, and read them back into corresponding objects. -* inherits from both `AddressBookStorage` and `UserPrefStorage`, which means it can be treated as either one (if only the functionality of only one is needed). -* depends on some classes in the `Model` component (because the `Storage` component’s job is to save/retrieve objects that belong to the `Model`) - -### Common classes - -Classes used by multiple components are in the `seedu.addressbook.commons` package. - -* * * - -**Implementation** ------------------- - -This section describes some noteworthy details on how certain features are implemented. - -### \[Proposed\] Undo/redo feature - -#### Proposed Implementation - -The proposed undo/redo mechanism is facilitated by `VersionedAddressBook`. It extends `AddressBook` with an undo/redo history, stored internally as an `addressBookStateList` and `currentStatePointer`. Additionally, it implements the following operations: - -* `VersionedAddressBook#commit()` — Saves the current address book state in its history. -* `VersionedAddressBook#undo()` — Restores the previous address book state from its history. -* `VersionedAddressBook#redo()` — Restores a previously undone address book state from its history. - -These operations are exposed in the `Model` interface as `Model#commitAddressBook()`, `Model#undoAddressBook()` and `Model#redoAddressBook()` respectively. - -Given below is an example usage scenario and how the undo/redo mechanism behaves at each step. - -Step 1. The user launches the application for the first time. The `VersionedAddressBook` will be initialized with the initial address book state, and the `currentStatePointer` pointing to that single address book state. - -![UndoRedoState0](./Developer Guide_files/UndoRedoState0.png) - -Step 2. The user executes `delete 5` command to delete the 5th person in the address book. The `delete` command calls `Model#commitAddressBook()`, causing the modified state of the address book after the `delete 5` command executes to be saved in the `addressBookStateList`, and the `currentStatePointer` is shifted to the newly inserted address book state. - -![UndoRedoState1](./Developer Guide_files/UndoRedoState1.png) - -Step 3. The user executes `add n/David …​` to add a new person. The `add` command also calls `Model#commitAddressBook()`, causing another modified address book state to be saved into the `addressBookStateList`. - -![UndoRedoState2](./Developer Guide_files/UndoRedoState2.png) - -![:information_source:](./Developer Guide_files/2139.png ":information_source:") **Note:** If a command fails its execution, it will not call `Model#commitAddressBook()`, so the address book state will not be saved into the `addressBookStateList`. - -Step 4. The user now decides that adding the person was a mistake, and decides to undo that action by executing the `undo` command. The `undo` command will call `Model#undoAddressBook()`, which will shift the `currentStatePointer` once to the left, pointing it to the previous address book state, and restores the address book to that state. - -![UndoRedoState3](./Developer Guide_files/UndoRedoState3.png) - -![:information_source:](./Developer Guide_files/2139.png ":information_source:") **Note:** If the `currentStatePointer` is at index 0, pointing to the initial AddressBook state, then there are no previous AddressBook states to restore. The `undo` command uses `Model#canUndoAddressBook()` to check if this is the case. If so, it will return an error to the user rather than attempting to perform the undo. - -The following sequence diagram shows how the undo operation works: - -![UndoSequenceDiagram](./Developer Guide_files/UndoSequenceDiagram.png) - -![:information_source:](./Developer Guide_files/2139.png ":information_source:") **Note:** The lifeline for `UndoCommand` should end at the destroy marker (X) but due to a limitation of PlantUML, the lifeline reaches the end of diagram. - -The `redo` command does the opposite — it calls `Model#redoAddressBook()`, which shifts the `currentStatePointer` once to the right, pointing to the previously undone state, and restores the address book to that state. - -![:information_source:](./Developer Guide_files/2139.png ":information_source:") **Note:** If the `currentStatePointer` is at index `addressBookStateList.size() - 1`, pointing to the latest address book state, then there are no undone AddressBook states to restore. The `redo` command uses `Model#canRedoAddressBook()` to check if this is the case. If so, it will return an error to the user rather than attempting to perform the redo. - -Step 5. The user then decides to execute the command `list`. Commands that do not modify the address book, such as `list`, will usually not call `Model#commitAddressBook()`, `Model#undoAddressBook()` or `Model#redoAddressBook()`. Thus, the `addressBookStateList` remains unchanged. - -![UndoRedoState4](./Developer Guide_files/UndoRedoState4.png) - -Step 6. The user executes `clear`, which calls `Model#commitAddressBook()`. Since the `currentStatePointer` is not pointing at the end of the `addressBookStateList`, all address book states after the `currentStatePointer` will be purged. Reason: It no longer makes sense to redo the `add n/David …​` command. This is the behavior that most modern desktop applications follow. - -![UndoRedoState5](./Developer Guide_files/UndoRedoState5.png) - -The following activity diagram summarizes what happens when a user executes a new command: - -![](./Developer Guide_files/CommitActivityDiagram.png) - -#### Design considerations: - -**Aspect: How undo & redo executes:** - -* **Alternative 1 (current choice):** Saves the entire address book. - * Pros: Easy to implement. - * Cons: May have performance issues in terms of memory usage. -* **Alternative 2:** Individual command knows how to undo/redo by itself. - * Pros: Will use less memory (e.g. for `delete`, just save the person being deleted). - * Cons: We must ensure that the implementation of each individual command are correct. - -_{more aspects and alternatives to be added}_ - -### \[Proposed\] Data archiving - -_{Explain here how the data archiving feature will be implemented}_ - -* * * - -**Documentation, logging, testing, configuration, dev-ops** ------------------------------------------------------------ - -* [Documentation guide](https://se-education.org/addressbook-level3/Documentation.html) -* [Testing guide](https://se-education.org/addressbook-level3/Testing.html) -* [Logging guide](https://se-education.org/addressbook-level3/Logging.html) -* [Configuration guide](https://se-education.org/addressbook-level3/Configuration.html) -* [DevOps guide](https://se-education.org/addressbook-level3/DevOps.html) - -* * * - -**Appendix: Requirements** --------------------------- - -### Product scope - -**Target user profile**: - -* has a need to manage a significant number of contacts -* prefer desktop apps over other types -* can type fast -* prefers typing to mouse interactions -* is reasonably comfortable using CLI apps - -**Value proposition**: manage contacts faster than a typical mouse/GUI driven app - -### User stories - -Priorities: High (must have) - `* * *`, Medium (nice to have) - `* *`, Low (unlikely to have) - `*` - -Priority - -As a …​ - -I want to …​ - -So that I can…​ - -`* * *` - -new user - -see usage instructions - -refer to instructions when I forget how to use the App - -`* * *` - -user - -add a new person - -  - -`* * *` - -user - -delete a person - -remove entries that I no longer need - -`* * *` - -user - -find a person by name - -locate details of persons without having to go through the entire list - -`* *` - -user - -hide private contact details - -minimize chance of someone else seeing them by accident - -`*` - -user with many persons in the address book - -sort persons by name - -locate a person easily - -_{More to be added}_ - -### Use cases - -(For all use cases below, the **System** is the `AddressBook` and the **Actor** is the `user`, unless specified otherwise) - -**Use case: Delete a person** - -**MSS** - -1. User requests to list persons -2. AddressBook shows a list of persons -3. User requests to delete a specific person in the list -4. AddressBook deletes the person - - Use case ends. - - -**Extensions** - -* 2a. The list is empty. - - Use case ends. - -* 3a. The given index is invalid. - - * 3a1. AddressBook shows an error message. - - Use case resumes at step 2. - - -_{More to be added}_ - -### Non-Functional Requirements - -1. Should work on any _mainstream OS_ as long as it has Java `11` or above installed. -2. Should be able to hold up to 1000 persons without a noticeable sluggishness in performance for typical usage. -3. A user with above average typing speed for regular English text (i.e. not code, not system admin commands) should be able to accomplish most of the tasks faster using commands than using the mouse. - -_{More to be added}_ - -### Glossary - -* **Mainstream OS**: Windows, Linux, Unix, OS-X -* **Private contact detail**: A contact detail that is not meant to be shared with others - -* * * - -**Appendix: Instructions for manual testing** ---------------------------------------------- - -Given below are instructions to test the app manually. - -![:information_source:](./Developer Guide_files/2139.png ":information_source:") **Note:** These instructions only provide a starting point for testers to work on; testers are expected to do more _exploratory_ testing. - -### Launch and shutdown - -1. Initial launch - - 1. Download the jar file and copy into an empty folder - - 2. Double-click the jar file Expected: Shows the GUI with a set of sample contacts. The window size may not be optimum. - -2. Saving window preferences - - 1. Resize the window to an optimum size. Move the window to a different location. Close the window. - - 2. Re-launch the app by double-clicking the jar file. - Expected: The most recent window size and location is retained. - -3. _{ more test cases …​ }_ - - -### Deleting a person - -1. Deleting a person while all persons are being shown - - 1. Prerequisites: List all persons using the `list` command. Multiple persons in the list. - - 2. Test case: `delete 1` - Expected: First contact is deleted from the list. Details of the deleted contact shown in the status message. Timestamp in the status bar is updated. - - 3. Test case: `delete 0` - Expected: No person is deleted. Error details shown in the status message. Status bar remains the same. - - 4. Other incorrect delete commands to try: `delete`, `delete x`, `...` (where x is larger than the list size) - Expected: Similar to previous. - -2. _{ more test cases …​ }_ - - -### Saving data - -1. Dealing with missing/corrupted data files - - 1. _{explain how to simulate a missing/corrupted file, and the expected behavior}_ -2. _{ more test cases …​ }_ \ No newline at end of file From 17c58105cac117088ea0614f94dee4e917896d5e Mon Sep 17 00:00:00 2001 From: LicongHuang Date: Thu, 5 Oct 2023 22:40:47 +0800 Subject: [PATCH 025/301] Change svg to png --- docs/DeveloperGuide.md | 36 +-- docs/diagrams/ArchitectureDiagram.png | Bin 0 -> 19071 bytes docs/diagrams/ArchitectureDiagram.svg | 267 ------------------ docs/diagrams/ArchitectureSequenceDiagram.png | Bin 0 -> 15029 bytes docs/diagrams/ArchitectureSequenceDiagram.svg | 102 ------- docs/diagrams/BetterModelClassDiagram.png | Bin 0 -> 13462 bytes docs/diagrams/BetterModelClassDiagram.svg | 104 ------- docs/diagrams/CommitActivityDiagram.png | Bin 0 -> 16648 bytes docs/diagrams/CommitActivityDiagram.svg | 28 -- docs/diagrams/ComponentManagers.png | Bin 0 -> 18041 bytes docs/diagrams/ComponentManagers.svg | 110 -------- docs/diagrams/DeleteSequenceDiagram.png | Bin 0 -> 30821 bytes docs/diagrams/DeleteSequenceDiagram.svg | 132 --------- docs/diagrams/LogicClassDiagram.png | Bin 0 -> 36827 bytes docs/diagrams/LogicClassDiagram.svg | 133 --------- docs/diagrams/ModelClassDiagram.png | Bin 0 -> 29168 bytes docs/diagrams/ModelClassDiagram.svg | 154 ---------- docs/diagrams/ParserClasses.png | Bin 0 -> 29566 bytes docs/diagrams/ParserClasses.svg | 127 --------- docs/diagrams/StorageClassDiagram.png | Bin 0 -> 32630 bytes docs/diagrams/StorageClassDiagram.svg | 130 --------- docs/diagrams/UiClassDiagram.png | Bin 0 -> 49755 bytes docs/diagrams/UiClassDiagram.svg | 163 ----------- docs/diagrams/UndoRedoState0.png | Bin 0 -> 7172 bytes docs/diagrams/UndoRedoState0.svg | 92 ------ docs/diagrams/UndoRedoState1.png | Bin 0 -> 8361 bytes docs/diagrams/UndoRedoState1.svg | 94 ------ docs/diagrams/UndoRedoState2.png | Bin 0 -> 9128 bytes docs/diagrams/UndoRedoState2.svg | 92 ------ docs/diagrams/UndoRedoState3.png | Bin 0 -> 8529 bytes docs/diagrams/UndoRedoState3.svg | 92 ------ docs/diagrams/UndoRedoState4.png | Bin 0 -> 8544 bytes docs/diagrams/UndoRedoState4.svg | 92 ------ docs/diagrams/UndoRedoState5.png | Bin 0 -> 10012 bytes docs/diagrams/UndoRedoState5.svg | 93 ------ docs/diagrams/UndoSequenceDiagram.png | Bin 0 -> 31151 bytes docs/diagrams/UndoSequenceDiagram.svg | 117 -------- 37 files changed, 18 insertions(+), 2140 deletions(-) create mode 100644 docs/diagrams/ArchitectureDiagram.png delete mode 100644 docs/diagrams/ArchitectureDiagram.svg create mode 100644 docs/diagrams/ArchitectureSequenceDiagram.png delete mode 100644 docs/diagrams/ArchitectureSequenceDiagram.svg create mode 100644 docs/diagrams/BetterModelClassDiagram.png delete mode 100644 docs/diagrams/BetterModelClassDiagram.svg create mode 100644 docs/diagrams/CommitActivityDiagram.png delete mode 100644 docs/diagrams/CommitActivityDiagram.svg create mode 100644 docs/diagrams/ComponentManagers.png delete mode 100644 docs/diagrams/ComponentManagers.svg create mode 100644 docs/diagrams/DeleteSequenceDiagram.png delete mode 100644 docs/diagrams/DeleteSequenceDiagram.svg create mode 100644 docs/diagrams/LogicClassDiagram.png delete mode 100644 docs/diagrams/LogicClassDiagram.svg create mode 100644 docs/diagrams/ModelClassDiagram.png delete mode 100644 docs/diagrams/ModelClassDiagram.svg create mode 100644 docs/diagrams/ParserClasses.png delete mode 100644 docs/diagrams/ParserClasses.svg create mode 100644 docs/diagrams/StorageClassDiagram.png delete mode 100644 docs/diagrams/StorageClassDiagram.svg create mode 100644 docs/diagrams/UiClassDiagram.png delete mode 100644 docs/diagrams/UiClassDiagram.svg create mode 100644 docs/diagrams/UndoRedoState0.png delete mode 100644 docs/diagrams/UndoRedoState0.svg create mode 100644 docs/diagrams/UndoRedoState1.png delete mode 100644 docs/diagrams/UndoRedoState1.svg create mode 100644 docs/diagrams/UndoRedoState2.png delete mode 100644 docs/diagrams/UndoRedoState2.svg create mode 100644 docs/diagrams/UndoRedoState3.png delete mode 100644 docs/diagrams/UndoRedoState3.svg create mode 100644 docs/diagrams/UndoRedoState4.png delete mode 100644 docs/diagrams/UndoRedoState4.svg create mode 100644 docs/diagrams/UndoRedoState5.png delete mode 100644 docs/diagrams/UndoRedoState5.svg create mode 100644 docs/diagrams/UndoSequenceDiagram.png delete mode 100644 docs/diagrams/UndoSequenceDiagram.svg diff --git a/docs/DeveloperGuide.md b/docs/DeveloperGuide.md index df59c98e626..9aa446159ff 100644 --- a/docs/DeveloperGuide.md +++ b/docs/DeveloperGuide.md @@ -28,7 +28,7 @@ Refer to the guide [_Setting up and getting started_](SettingUp.md). ### Architecture - + @@ -57,7 +57,7 @@ The *Sequence Diagram* below shows how the components interact with each other f - + Each of the four main components (also shown in the diagram above), @@ -66,7 +66,7 @@ Each of the four main components (also shown in the diagram above), For example, the `Logic` component defines its API in the `Logic.java` interface and implements its functionality using the `LogicManager.java` class which follows the `Logic` interface. Other components interact with a given component through its interface rather than the concrete class (reason: to prevent outside component's being coupled to the implementation of a component), as illustrated in the (partial) class diagram below. - + The sections below give more details of each component. @@ -75,7 +75,7 @@ The sections below give more details of each component. The **API** of this component is specified in [`Ui.java`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/ui/Ui.java) -Structure of the UI Component +Structure of the UI Component The UI consists of a `MainWindow` that is made up of parts e.g.`CommandBox`, `ResultDisplay`, `PersonListPanel`, `StatusBarFooter` etc. All these, including the `MainWindow`, inherit from the abstract `UiPart` class which captures the commonalities between classes that represent parts of the visible GUI. @@ -94,11 +94,11 @@ The `UI` component, Here's a (partial) class diagram of the `Logic` component: - + The sequence diagram below illustrates the interactions within the `Logic` component, taking `execute("delete 1")` API call as an example. -Interactions Inside the Logic Component for the `delete 1` Command +Interactions Inside the Logic Component for the `delete 1` Command @@ -114,7 +114,7 @@ How the `Logic` component works: Here are the other classes in `Logic` (omitted from the class diagram above) that are used for parsing a user command: - + How the parsing works: * When called upon to parse a user command, the `AddressBookParser` class creates an `XYZCommandParser` (`XYZ` is a placeholder for the specific command name e.g., `AddCommandParser`) which uses the other classes shown above to parse the user command and create a `XYZCommand` object (e.g., `AddCommand`) which the `AddressBookParser` returns back as a `Command` object. @@ -123,7 +123,7 @@ How the parsing works: ### Model component **API** : [`Model.java`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/model/Model.java) - + The `Model` component, @@ -137,7 +137,7 @@ The `Model` component, **Note:** An alternative (arguably, a more OOP) model is given below. It has a `Tag` list in the `AddressBook`, which `Person` references. This allows `AddressBook` to only require one `Tag` object per unique tag, instead of each `Person` needing their own `Tag` objects.
    - +
    @@ -146,7 +146,7 @@ The `Model` component, **API** : [`Storage.java`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/storage/Storage.java) - + The `Storage` component, * can save both address book data and user preference data in JSON format, and read them back into corresponding objects. @@ -179,15 +179,15 @@ Given below is an example usage scenario and how the undo/redo mechanism behaves Step 1. The user launches the application for the first time. The `VersionedAddressBook` will be initialized with the initial address book state, and the `currentStatePointer` pointing to that single address book state. -UndoRedoState0 +UndoRedoState0 Step 2. The user executes `delete 5` command to delete the 5th person in the address book. The `delete` command calls `Model#commitAddressBook()`, causing the modified state of the address book after the `delete 5` command executes to be saved in the `addressBookStateList`, and the `currentStatePointer` is shifted to the newly inserted address book state. -UndoRedoState1 +UndoRedoState1 Step 3. The user executes `add n/David …​` to add a new person. The `add` command also calls `Model#commitAddressBook()`, causing another modified address book state to be saved into the `addressBookStateList`. -UndoRedoState2 +UndoRedoState2 @@ -197,7 +197,7 @@ Step 3. The user executes `add n/David …​` to add a new person. The `add` co Step 4. The user now decides that adding the person was a mistake, and decides to undo that action by executing the `undo` command. The `undo` command will call `Model#undoAddressBook()`, which will shift the `currentStatePointer` once to the left, pointing it to the previous address book state, and restores the address book to that state. -UndoRedoState3 +UndoRedoState3 @@ -209,7 +209,7 @@ than attempting to perform the undo. The following sequence diagram shows how the undo operation works: -UndoSequenceDiagram +UndoSequenceDiagram @@ -227,15 +227,15 @@ The `redo` command does the opposite — it calls `Model#redoAddressBook()`, Step 5. The user then decides to execute the command `list`. Commands that do not modify the address book, such as `list`, will usually not call `Model#commitAddressBook()`, `Model#undoAddressBook()` or `Model#redoAddressBook()`. Thus, the `addressBookStateList` remains unchanged. -UndoRedoState4 +UndoRedoState4 Step 6. The user executes `clear`, which calls `Model#commitAddressBook()`. Since the `currentStatePointer` is not pointing at the end of the `addressBookStateList`, all address book states after the `currentStatePointer` will be purged. Reason: It no longer makes sense to redo the `add n/David …​` command. This is the behavior that most modern desktop applications follow. -UndoRedoState5 +UndoRedoState5 The following activity diagram summarizes what happens when a user executes a new command: - + #### Design considerations: diff --git a/docs/diagrams/ArchitectureDiagram.png b/docs/diagrams/ArchitectureDiagram.png new file mode 100644 index 0000000000000000000000000000000000000000..e4f019fe1427c6b257c55100b72d92dc76a7e530 GIT binary patch literal 19071 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 literal 0 HcmV?d00001 diff --git a/docs/diagrams/ArchitectureDiagram.svg b/docs/diagrams/ArchitectureDiagram.svg deleted file mode 100644 index f337cbed728..00000000000 --- a/docs/diagrams/ArchitectureDiagram.svg +++ /dev/null @@ -1,267 +0,0 @@ -UILogicStorageModelMainCommons \ No newline at end of file diff --git a/docs/diagrams/ArchitectureSequenceDiagram.png b/docs/diagrams/ArchitectureSequenceDiagram.png new file mode 100644 index 0000000000000000000000000000000000000000..d116963061d8767a25b0f575cb4bc92fe2e1651d GIT binary patch literal 15029 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:UI:Logic:Model:Storage"delete 1"execute("delete 1")deletePerson(p)saveAddressBook(addressBook)Save to file \ No newline at end of file diff --git a/docs/diagrams/BetterModelClassDiagram.png b/docs/diagrams/BetterModelClassDiagram.png new file mode 100644 index 0000000000000000000000000000000000000000..42e33522511eb0698ec2bfe554b7bf91aad3a9b7 GIT binary patch literal 13462 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 literal 0 HcmV?d00001 diff --git a/docs/diagrams/BetterModelClassDiagram.svg b/docs/diagrams/BetterModelClassDiagram.svg deleted file mode 100644 index 09bbb61e16c..00000000000 --- a/docs/diagrams/BetterModelClassDiagram.svg +++ /dev/null @@ -1,104 +0,0 @@ -AddressBookUniquePersonListUniqueTagListTagPersonNamePhoneEmailAddress11** \ No newline at end of file diff --git a/docs/diagrams/CommitActivityDiagram.png b/docs/diagrams/CommitActivityDiagram.png new file mode 100644 index 0000000000000000000000000000000000000000..ae566df014dc24d5af2d1df5f7b50a2d5ed932a2 GIT binary patch literal 16648 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 executes commandPurge redundant statesSave AddressBook toaddressBookStateList[command commits AddressBook][else] \ No newline at end of file diff --git a/docs/diagrams/ComponentManagers.png b/docs/diagrams/ComponentManagers.png new file mode 100644 index 0000000000000000000000000000000000000000..7ae8cfe82ddeb422230deb12910238702798ef48 GIT binary patch literal 18041 zcmdVCby${Nw=YU}N_PoJgER<8i-4eXcOxO)N{4`egmiZ|(%mK9EnSk5`+fl9`__Bb z-shaP_qFyPUS7`~bB>y0{6^da$i5OsM!-h^0|P^rcp>rz3=I4o@NWPP0=RxsHXc-CJ`;JmGcb8p8}X|B__i%4u1QniTvZ^esx@Xv z>U!k@tGM9U<)pU8JnLHz5;BnnFtfVFJ{g6H1w}K^rz>aZ25mq#l3g0a_{T28#2}4d z&@ZuqqhsLO_t(t6@m}-qV8LM}B^te5=WO9vMAwo{S*Q!_k(1sG>!+omObTK?q19my zlbBV6RmY6J_Ud#-fn5y-Gli&vgj;8e8mw`B8S$|~0muBMbZV!0PEbpRa#g0I*<|X@ z%F{|-Y!g~T_+HkSqnKv-mwaKpTc1m9TjUiJ$O}``TP2R<)vnj838r%$8LhjAb<_yf zL??06_|(0wpT*P4;`ZQ$zBgRUWcOX`It~qWN?iFYwzImL^+fg>MyoYY_&M}+?pBAX z=kpHwZsfpzKPc$jg+()E>&aJW%cH9vY&n%A;quk)y_vp>os0@O7ac1x0cvSwS6^cX z_5+F5(;1})O{1X+%dBqLdhCTNa(k)?gbK`;UDw7d30jez^lW-W)a#nYpEU0^qWT_q zCv;{s75?xSCtTk37JL323k_$MV&Ta32Xspw%j$)O*}5s4w-mk)sze`a!FijpZLyig z2sMI(m~rA$5(^wDb*hShDSh?(+CZ@NCK5)r3Sv zI9}X~^6&$^+53o;F$BAm6I9M<%%MOOC{!>o;g=F3g7S`^xcAOk;?09NaofgcD=bRRj- z5e@Gi`JYSU5XPgq?|zjVJFfrPy1*vtfMgG0fKBKCdgd3IV(>s)-wFSTNrwocinbW) zD?&v36swjvXQR~*3w9!q)B#wGC4_S%zs z;Jld(zs&d%aN9c-ZROdnh6fSjf4mqS*@Y$(6;62fuE>Oe!P(y2^~DMA*{n?*r{ztM z)>W$ILPM?n?jubzmCfOm!jV_JyE|or4V#&9hJ7(Qp)~DG3=BlP_B$05nwJqtSF1(> zmnu~jbJ+CCq;-NYgO9wL0@5C1`uH=^6?>MOj`eI&yvHsn)i-$SWw0hLa8WXv^<|{= zjk2=iTBH)k-q<2Cmk##;Sj+uONt0G@A?8O%M~{z>OG`^D%qChm%AePcr8w;S>8Skd zw|t{iq=~FVe&BpErZl5BT}9%u!!l_xQ@M+ym=&8R+EW+c-~VD*Wfg)5%x zrO<2t(-F2!{Cb8E>f5F+v5c~mot`)SP8;V z;gm3b7~&F75Qg2S^WvSiau$8IF^3_d9}hw7QuAJ&3)~(#_@PF>AQF+fti&ovPfxM& ze_qUFu&=17)I*-BDD zQ;+VgIrMY^3ZMZmlA^{NXJwUSuNxyeSX5$qT3Xdo{qBOQc~d7yls^RV>?+Xj4NDEhLcB2j-O@80<6gNxF$DrP!06!AT5pZ!^qZ43ycm8dDcSiE&!(S!;`wdT&2g5-SKFlpwSZ@U z6vNZecZk0l4 zt`1i&QHGmR!2ptY&CoWS)|en5Ff$!R9EQBR_;v%IEH&2`mgsYRQqOt8KASyXAkcNprSKAGBn zj>zbEGOi}@nOD@`IByfgRH}x5ni#`}-iXuPTL?1*bM<%KpNkr%=^X;mh80JY?ib3- z+aBO|fuMh)9j$SCF{X4|lbQKy50fmlAhQTWj4Rpc_L)ybepBp^(;0!TJ!5ny_G>SI zk5xqL+nY3_MD7N=ZGnonm!_*8!yG?MFJJ-5=|5@Po4bXf>pdD|3MUGqz#Bb=2c*_5 z>%Y0_1hD>SOzT5g1d{0m$b28uv>AJVKYsCu{Th%@fFN0By6a#RZiL*v?}ylr(9|K1 zyoBWQlKQFt&s}M|3No+CN}QILwOUp>SFjw)e?8C6EE`b*s8?6k-}EFR=9PW|fA#L1 z+I*u&<}|U?ztOf}(RewR8-U?pKJ`xC4$n5C&(2mUuYk{f&h8yWWV5aI8)o(~gCPc= z=twBQOSL7Vjcvi2Ex1o%$mla@x*l|eZPnNy61&;fPs8q0k+;GeclSMe^X845vNF5n z{Efw&qUvslA9%u&NI`CHZ*LwhpK~7HqRrsjsp6FM{CpTi3>wd|Eb&kh{!99z@^UK9 zD&6Vwdd}J6Sz->ly!6si`-#G*{wq9$lgWbHIsh>-q_$q&)AgFQ8BgTw+n-B!c;2bv zWroM?HQ-tHeU3bKr8GKuH&Fpb=Q`9)mbb@|* z(7L^NMacb5a(#gA;<)?0OMHqjXW&4sL$qLg2oV7`A`JvRa+;Vy>vKMrOa^5u?X6M5 zJh#c>U|1A+6p}<}9TG=Ux8YQ;!d7@M9-^5LC6VDHx z?dCb&UdPw&YZfG8C4$I0T=X&%z3k^K;&H83-J&ob%S|;(oOb1^u?33No9#Pcp}JjS(i&Q4~U z3Cj@n+KhwJ@aKTL!o^Hgy?#tZo+s>&UG3S`&rnoQaGOQgf*6fzWf2`Y)`T_G6DjHi zn^YYuyYeC!FfX?=4IK#yH7Cw0u&@wbc9C28iXUA{~)ddTa3Q>BGI zzg7Kz*3}3!i@6|`4;xFrswenk4h1(*1iLIlVrlH$Cl)Ug)?VmCS2s6b}%7r?u94)a=t+eYAHIIJKilCLCZx2gL z8^8Ik!Sa^_q@L6z5;puEmX&CFUZ$sP@bqb5!S3;~t}>H%?@ecqF2#6ST9Pgtpm_X?k+D1C~2&d1<=|qcp ze@c$uRNh`ep*5mhG)Xzs!jv|Gdh_piC15+==<$6Z!NAmINb28|D?3@|bh$L1sn@yY zc4=s6M3V5-AZwc1m?~=?`ET_+*=ffqt9nbvz*OY3{aGTy{>5$JlbC;dN+3?=zvPMs zu6fS4M-YDk87MG!M<{hkzkVz+dJK6VzoDVU)he9vG!4X8U%;@t0Z{@#QOmsh=?T^y zT#k|d66@z`WooZaHxFoe$;F>$Z(;zhj$F&1*8%(bYQ1P@$_7_cN6lV5s4H)i))B&Kr zD}h|3eC!wtpmmtBEm~9cnd1TBA%(ecP(KO#FGOQSHaW97_8O zSXHAb753GfFHhv=nTaBr3nP}#IEx0tYp5?yW(TKe_}v z2IL*oOx&?&5bK#WV4{c!ST3h>UlhCPoj3e+DCx=nR@y&;WBn&0pbQsa8HBAtNiUFW;UR>9^5A<@iHu~&prZFt znnLFe7nDu{2>PdF^M5fX1)$>wEn2*H7hG+gn`%`b zES?|EJaT0=q@op5WE3DGxYBIq<5$GY~!%iC}}M+ zYP{+BNak++lJ6Qhgvh|ZVePMbk&iB8XqqbaP;aLkwmX8B8=m#3qd4 zVHX#fY^WdQDW0*o)VaC3*7B%duwz<{A#rz{3!@k-9%@QC-HZT7oE=IbXjd+VX;voU z<)D{AcKV3=M~nk#+mB0bpCB>9COVr&oTDp#`S?-SjF+z-cN}rab4?70y~UTTgKRsD zeOsSmzamA!a2@Fo09>f<)Jl$5Y`^515%q>8F+Vr{{yk2Kh+n;6k9^mM@F-V7^i+8F z9&DQtTp-~V4-k)-KK}5xLD)_!E2^s_XJwqDSEh(of3-DPeFVgBQPBc72c1;NS@ph{ zFjN9oqwlSeo~u4?OPW9iL%5fcuUD9pgW>i@EG?V#6IRa?%f|e}dLA+1Nm?w%ve!oO zKv-L*P~)Or64L{66VCZ+z*a!er&v-@aBU^j(tB>dQNV4fMT}&sV5)WTxvYo?P0#l7d{O3NqU^cGl@%%A%if091aNouw$HF!$Ezrve4rY{Zh()J&H%lUBc5IeSN=Hh&MhU7m{6 zR8@QLK-s*ha=@Fw+mWFV@$5&b@dN%WjA%Zmu(1AUAQT4a+;0aCD@C!)1cXE8gFyJ7{>D%gEf|zRbdyY5pO1(Up8fR^rp^E^N`k6?F^rI;Z6!1_A zU0Yz_R-r~#2<{=%lwjv%$?YrY>)xf-lTZT$oD?}$E)eM&WGKYX)=y`$loS#iwJS(Q z$A~WXZxfyN>yyUE$GaP}F?iU$K=8*3YdPumsufGAuExV7XD9jl#&FNV&1un~K;sL0 zs5q+}yeEJKcxR*CUhiuZsL80;a%kC~w-#!M;%Kn_9Fdvm4FSU-XZL~u)+)wa-kbCD z_}SZ?6)y*k+Jwo**19`57(PO;EG5OCN!6VaW9Dk24T9PLLq5d%*+SEaEJ$cGI~Z#R(AH zet35!uP`?6etG->Qux5-x><>}7{tFL8KZi2y>wgv0S9JRNZY%`=O$0wiv$);VekMt z`XTx}uEc{zWIP(2j_ga*Xt>rs+q@FEZvWoT6iEawj2$!Vg%OSU`Ln$J#=&0pYe{|a zkwc)II4E#C#-Jwj)8!fog^6ys^MY^Ua_^GfxN-gBN3Ud2{poIM>cO?9fLCkp%i}N1 zI-7PA^%zZ!Js(aAwHlfB8fv>6qI6w7qa*!UEj8^w?X&mvgh6WmrORKvxsNEsja&mHKTDK=>e#Eg@QFQcF z*me0L!6(~@)8${Pt(NSk&|y$W7#sJ#I&=hIzOrXd0XTc1b4?ITBju zI5t(r*^NT=4B(Ck!1gYuSLb2k4S+?rUPN^D^|_UL!NUXV`WYo@4AmT6uC0+deh#3s zY^d4lp<4jZGA(Zmb5rk2k@M9EI~=Vm)mN`dcHkIg11kvs2zg(7vKaA)>AQ9$Tg5 zwB|C^{21!jqC$=CTC+BT3m6A#1oEbD+65=;em4DFZ{#r=z@BP8M=fOfJ_1FOY+_;` zpI7)b_f?I$ZEGyb*!zIWjhDpMV;7)xm;WTI6DE7)VH(M zTJ~&)&7ROe1H@!3cP!N7YQ<)duSzcKRjV&@1TTwb(@DE)>>?x^!#FomUo5-iyZ(4? zIY-K9rDxEGqd%3eX-bd>;`8aFS^W@XI(?sGbw&dDxw_q$8Z2sux=of$lKY!=vB}G9 z1|*b3Mv$1EkC2;ga5nx7zV?I$aF*j+mzYHw|EvMEDr`-w=DgeUPQ$4sf{RXHVJvY! zaLAhvSLB0OO6uUSM_B^bn?otW;-SR-eSNOG6%)_hTu5Y6nLB5XA81spDK{B`(KH%N zWSDL|Uq&2eB)Z+3tGztghK=s&kK?>;XL28|vRu%pwV&cOpRfBF!n?<{TRt+tf4LK9 z@ztc`Bi@@&S65eL!oKkyH$Tx*40@vgx3OPVTI#Jt#DXmzB42KK8_lA3!@zqbax|%) z5|}0|Dr#3{A(!N++pxohGJD?CjEM<&)(GXmNp!|KT#@x0xhzeGIXl@$x(hP=Kiht^ zY(#6h|MZ5(Fg3-$=^=c%F~Gae#+X8?Eue~ZFCg8VlkahsE!$&CT5mOqfy#q$ubO2& zWjDMiq{E_O8knjGOS4!IHbXiJwxZwc?Cf}fnq(o+p`<>bGO;UG&3_BU^-Z(h@YzAr zdPT*LETM)}8*?7n_Tk4&`&~d(xtVt{)9)e4l4b;!);XV@csd@*Od3(O+QWa-TqB;kY4x*G074@;x`LPy#B9r0Q z8)ewZq>wzfMS9UXgMJkg8ylOLsHvz}X}_xqs%BL2G`U1?$f~L$6e+@@uZD>ef7s1R za(7-INKjBv0J?zX*cCua5_mrtH>gB!n*>@`U7d{ARcw9IHaRd&Mpe}!jsv6da<7e> z2@HLZd!3MOx2eeEdOHAv`up12)FoHovMSQJrj<0for3bl6&G%HNrq%J2X8~63WFki zGr`Q(SYC?v;+S&;2JE7$kl=IaXrc#e94+;(Ih{6Jdb1X5R%l{>^`?Ekxg}TN3F$Bd zB{YK-_(umc!Q`xyv^E)!3%NY6leEdXFra1S3beZJ0LaaXvw5s+`(c|=QbFTJYBx|! zlGyb_A&Px!@N%Z|tq&o<=tVfCqzJ6|Yh4qDz~<>*;!cS1WONF#CLV|?W@=b-`>mWT zRZTj2pld5&uI83cq9OSNj!o{H0ql{9C+bkSvNIv?O{R{9G72GA@l>}YmJ2N65V5;= zDH_9p`?o$tjI8)~fqJm$ZGnsaW6ce_U76Cb)0GLwClhK0;zCWK(j>WDnodhT?VPg* z6XB2iJoq&%bV*dc#PnO>gm_J?@H(5e!O24qw`f$6LdNtivf^te>Bw!Xeq zqM@ZNJu7Dvd-@bVF_J=~pgKwx%__bc>|PX;V~=p?4`}Cgc8K2dyIrvHy7MBp>o+F& z+UI#yFGTV9lX}4*d+wg@&J?LuAn*WZv8f}5MX${zjV+ak3uCYTY=qw}_J>DYCl5!F zY&%PGb@dHFInX$*aIZW5CYj{){flT2_U>c}q^*GC!6IEz-M9S1u|T_Ph^(sXDm3*V zvZ&AF)TLT(Ckh4zYrx6dZ@9E@k=ZVb1kMVvA~sx}d*w1(%fI(h59 z$;yI*7DVd7ScTh+d<_WRB-bAS8%*;A^!Z{Fy2Yv@XwC1zA@TQZA$qqjq(7O#LxW#w zKb+G%TvOO5_>R1u+sf7LJ`;Y#&M!WPi7G0N?^Z3iPn%>3S_6&o!=pigXirRR?3S4o zgJ=zy=qZrRDky0Hl>ugJhJp}d7PE0NE{xGo0*sF9_th7PL$Y8jFiTT-WpEh$BJ07A;g;`~frUzmG zUG<8sKswL!(D*-X`c`SYSxOZLzTN4Hh)ZbPhtRpw)9huSq;WF7T~zd$NE$pcR^EDf z71bk#pvhy^T%&ICgJfilP3y6xPF%`ET#nz`noi^sa9<6(SQtTs0L9w?jBOHb*xg2c zM$NivAoef-0}1nWPQb}_IoXPgilTBr;HYl6BNt}fJ3z7M?2 zCB>$0o8RV2(`!X*!!& z`=RXf+-M4{U_Hnq?WV_ELE&vE@rWOi$#EVA_=lI$xm@1LjT5(vUaUKTpCc8Z4+u6E zy|#nyfDbm~EMvv9lhKK}uhIqCa6O&n_IGqjT3d^nnx;|fHMjR(?(;s&@M-=S=2M^=zAZO4=^e`-m+oJz5{RN`(TlW zV^4z{B``1G+{9Fq1Bi14qo}dro3o|>Jss)LWC^^RwiVO^n0d^-(%}ZHaM>xq2qdsI zYf-3vD9GbQF1dH$P5=hwsx!gC9V$A4bf{vYfuR-;^In3_!)?yyJp9adc=yhY&ksE8 z_xTG_$(23gQ-wf6zs=6h-kY}DD%LsDQQSU7d?IUy^bH$_?Q()B21=!8049zgaAi7xN6}h z#UzPl6DT#vTf0KYgE27H=)cTUq=qt`v47Lln2v~fZ;0>pGc{^C2f5rEZB~N!-A=~7 z$KtO|oO{9Ey$Fp7t}$J8+pA&}44dJ69K(2~t^59gQPse}9v#7&?Lrxdb8rNp&LwaC zsC8@1scQCzPM)GGNjl<#C{4JnlG%z$l1V|zq7HknDShMrqxfMNtH+dUE|m|>NZU60 z5a%m%{x9*)p$~!~d`;c`J)%3uq4l}6c;9k%=OF0U8QlHaP3U&vcaH;|%>QmLOX%K+ zR?f)Dyrq4@b%=PL%V|9RWFH?ld(&Tq@Z?;gud&NM$X@5gA3h~?dBW^27AqYroo;Ww zn7T0Ew{v-PvBmk^AB_a$kHA(LcwuBMZQY+Gr2 z!4&vOG>>X~4k1&SojLDDrAkc!tz{yXpfq9+gxqRFPV}F+I2{sYB*owlep5UhZ{EY> z;&{_V@Oy<>ka+O)bj}C@J0j1Vi2fu{&bB>RJQ-TAoN*p zQ{!>a9L|z~QSU(^`uf^-zP=V|83?7a7;m7m-@i^P)k#j|8^NaMVzx648RIvf?0|%& z^+O%>EJl6yslj+yaAL_@kS#kGsBg#6OW{#5+70dh(dg!)2G+z56*sgXXnXG*_QF}9EB zcn9>wfs;5HsxEHbZ$bWph4EtqRq)zF%z97p4QYvdH!bwtk|zUS{p42*d5rWCX%R)g z=jx<&__T^fIo6xsgn^>Gm!o1>GiAvEHjWanBI?t4<_$2MBP$8i2p<|=%{Ei}G6N07 zJ6oV2s>@rB1@vnN*XHvi!#)Z>O$qnWFMAl3$c(@0dfOfD_34b;1_1^|z38<0evAZq zp6!hsfm;Z4RdPwk8(@|rBZHlDZd4Y*O1q`j`D7_8$-a7A)K`-GCX7G|VXs8TvrF6} zcJ57`Qs{@+keK$@p#snf>VVAhQOH!QnV)^Q_k30&3F&iR9kkd@!Y^^WO*zq3h=j_U z820o+-xh1ZqvDl&P>QHM2q)<(!q->oo<|zC=NXqeO^P9n1*`S3lC+rgR zho$AC!%j{iWyf0O>Vr0Fn=UJw&PGyii5hpo>?wwJmy=)KVmFg^&-h^{D;-CO2^$0>kFqLz<^W}8T!H1HP z-3mJHzVyDUiHoQYGZ8{$Kq1cI8j5SiCD0dT$MDOKJ`Bh(BFX%+r2lIj@fTdLlxRl2 z^hz%VHT$leCfn0*n=29Quj+VVOz)kms-*O_=GBFXsOa@st(I#^k;6Vxh0!YDf5rcJ zNU4v_L%^}CcV@pT`C>4n%Qqo8*FN?Si(OtFJ#)O>m|!ZiS;tD?DFB<>ZRCo64+$6Y zuYoIo1=soC+LV1LQbtS({QN2_ZMAxL2YYlStD>|Ne;b@GB^Rv9-nHNW_{s3~478+~a$*I9*?Rqx5*!rQI1xX5`fr#&7;1yPs23 z@QF%%HV##Q@BB>7osk@B;mI|$kz?-4ZqlIn05iB!Up-|pL`HU)u=$SZ-vJC4YG>JAjrTiyf*P=-1qn*KCP!ifWheyoqgj&3mVItWm;u>64 z7sn0wv*~@Yk+-{5KI5TV;G~gOQcmF*KQ^e!N)N}<1?wNMBj8x{b)}FJVpVVDOF&J= z1i>qYx&!id?@`!)lc77o6J=FZy|;O=@8vzG@jPrJ>dm#)sy_ki;Zx7E{!Q(Uu)y^( z6&eAfnF5pg1^-X|G+v^FI8uO0X%IUZQM zRdfV6`~n^_X3TBh`^9za-XAsEtY66Jl$C`x9Ck4F=J9vK=Rlnphlz7G^FVNl|Cy$0 z@d0E%&UKjhxApm=zC8;8=BO&j>)dj*m_v!{$1XCh1{2?H#Hc`1rNaxVR;|88rJS#|`yjBD#qyaVV(f`(pyH6sn~ znvoLe|LOt$6}pC%{Ao)T%25Gr$?MwGwz&T$SQrmREw|jeX?3*r*I`2Sq7?m&U&&j6 zM%HTP6HuZOzZmh@hwLF*`osJ+?FGt#UNuQ1wtRX>>_ogA<|TMnK3aoDh3;|=h*v)_ ze_>oweA|8gU7+>Xnz!Rm2ud#Dxw_?k#s2qj#WqI6gB~|MiF|%bSd|72<#+3UlF0qD z{`&xo=#xD@435SBrw34o<`ej8Z>**7=fduil&;4Lzd36e@I{7RPvFd{tHZAZwn-5M z2HWo{8_MAYzag~FdPX!hD)BS%E5Hfs9*HA^nh8)*`gBO}52qV(r%UC%L8{TRO*XD{^5?NYbBE#A{yo0 zR?oxBes4tveJc%hxlb>GbhlM-I>T?KURYn(OB@nJq2DFOf)pl*!VlmC?Tz|vkMI@W zi?%zZ4855CtrYLD`jsMeq zhlT5afun|G)Z@=;!YH8J6GHUq@7##g788^3?Xd0@p3%n`6E({Ht= z3IZc)qX>09Azgx?{ol)}s6hHyZ^(Yx@#lFEqj6Jjpi=fSRQ%VkdcZddjMF$&ArEjU z6`YAqGbIqi75MH!2J&IR?zBrWnPv4!@$ctsz{gXtuDUB06a?W+T)()?BIN2>5hNb>yvRt4gOF6QD{bo%S1r!U+E9Mzb!6` zVJ0H{N60_O%*4cHrou(?9|Qw5r=!)MivGhL={OX1$0hy0_j#Z@tGM`M5(@QwPqhUa zbjV_~AE1i%|Igo6lt9^sLnz{CJB(`#6SwX4dP@{@M7tH_LuM1mBV6eyHBcnJEH9^x zCZ2$()*^-7iu{mN(`_M5EwgYp5(mghe-I?JV>E|nRYBr>IDm!OtolKnt5?pCU$H~O zSdZ2eQ}*ez%sxb%>ePWx48;F?Hhy8F_VxG^k5REfFN#D0yR;G0aAzpwi{dF8v*+=q z2uRERH0hb{0;Z$mKN{i;lCIjAC}>$#O5Hx%O2 zX!xcs8u!2#v zTPpg3xo_}r9IZrS)%;L;Pxlxa&*s@vfeE~|i|yzs-cX`i2I{Q3uU}C#J3mgDqCPd1 z=QxI)*qa0LOpB8JlQs;MgG?m_h3IG{7H8X5&D78v@Z;YDl&jwrrQ#~jd-81|~q7j`<^@!Zg<)_b!M$~4|M=57AcR!-cG2hP<( zzDkqW3g?r01f;`|u;aBb$f`+6T4blrKmiG8BnzJ|efuhtge2>>F%*1ieS!*xH0mja zn_)Cq4vmN+l@LooZoZ&tN;LE5OQ!v=6U90N?K-V=wjp z3aJ!H!uu`o5rQ$gCbRNH5-@u?iI|JPqPOQO1Pg8sgQ=phK|y&BNmCnC1`WlDRUeJ0J;iG>%GH07H5;cHWZ{TmUzcC- z7uF-4;mA5!qfc5TIKULWmEGpIF3M9{+T3v8!h(Vb@*w0ZFj9K;=2mGd$`-Ig&Ci*=E}DKFmLEYA4F3yY78K!4dDsrRpp zi=$3MQZt=+M~C4^!ROQX$FaQ!QZv~|by|m}^gDRIh8i$F#C=c*XNf+@Uki*E-o&yhLM7BEQ!NVNSU6kO zSwq*gRA#kC`3BvyTOy-#^gXSZrwMPY#^yS!cxp;~!BH=IZLYTJs-%-+av%SbbFp6q zJqs-yhNiwcyXSyrxwx4`^20Do6W~_1you^T6QL<^mg-wLeQDyB6%BSXWm)PMMBqtw4&qB-UGGPhRed@^mLd)j+A9BM>2u{U=+0HkO}eV$1B3q?AKEY z3e*<9a%?DS_>9C4z7Bkk!mz(*p{5M!5wzum6^pK0o-Up`dJ~Pjnwrr9r6S+trE(N5 zmNz`p(?Wbfqaw_2X?!%EjK2=gC|>EweiA%&LogicModelStorage<<interface>>LogicLogicManager<<interface>>ModelModelManager<<interface>>StorageStorageManagerHiddenOutside \ No newline at end of file diff --git a/docs/diagrams/DeleteSequenceDiagram.png b/docs/diagrams/DeleteSequenceDiagram.png new file mode 100644 index 0000000000000000000000000000000000000000..3f9daa566cc30051d9ba9b1e26687c204e86594b GIT binary patch literal 30821 zcmce;by$>b^e#FUhyh9}ASeh(OAl>;l$6p4sFZX`$0(vS2uR5gqDX^uGtv#xJ#@Ep zpJxa~<=gxG&feGYpYQsHH=bC}TKBr|wO&^#389PU2+u(vkc%S10*@e&(_#?FNz$_? z!7u3MWvk#n)Gq}UUaA`zTkC6Ty@Uv98fuz8d#R~${kiq^7cXBLb1^a+>pwGmX>Op; zpl)Pv`8Fpp1aityM@Hf0;qQriZZs?@~oFB03aQ8QFFI0&u%inV3l6ZVQ z!_pI4MdC>E!esE0k8oh*BilFIbKH@`Sc)I=e6TV{hw4H&)J4^pOVX>FOUa$XrxhzH zn(3k*m$g6?D(j{~(Ahj1>NNE)~k>l-XQ2+RZPp9*qxEzf|^_uKSTYpUF z365-*wcs}%S%VVauC~|&xxD?tB>bfyHpkTE+eha5w@-dV;4iQ2e9cB9!xy6zpSnf! zMZC)4hm45ca!nKK)amgj6n1^Qmzyv*jf(1U>`Buvb>N=WJCR0J-kMyzQ|WtQMI~^) z@@HvJakaw0qZR{NB!j-+q8yttYpZ zJ??4BYL#>aIACC0xf08&={t7b3KkX9wf=z0l8XZlCYKs1+UBaCeDTbLMz z$Y}3@>pZ73B+kpdwa>la_)YDU^?bur(*s<&OJiuc*9?Q3znM*5#wS`Ro;T#rhQv^i zD?FY#D}N3qb1~yPd(*jTh5G|$<8wY**XU+FdfJR_cn1lS=O#ECldym;o|aAl<2@TH-x1kW`3as4nz)xtNe zvZu_qEq38;uek*HlXu|4-?_e8!D%`#t}^Kh_$a?)N0U`AyqIM1)#5$0nshA-if-ZE zBKc+LCSg^bEcbgg`A-%2GXrUJ?G51tscMB%f|MtHDT>OL!AMBie95;raGCVg@QNdpWJ3@xOfuotG7}-F3#X7 zd?OM@e^*t_q3_DL{5n~Bs<*tUJ%8sJJLn>#Q&HemPnq%UFQqw*I)bbhY)?FzdJA*f zd8Ap62qAwyi=MNMxjAQ3boK7-x`zv|!V_6e=?GNZ8>M~3+nZvO;I``Mg6vgYKgC>L zVd?d;-$Io52H6DLhSo5DPnBa9y2won2;`-`h`?PLE7j><3_HBm?cLp10f~ZSk&Z4d zN-ev|%iZh`0xAg=&v2B!4bQ~$DNA;9Yl?gz@I;BeD^7T(p@1ys#;bEQsg)$fk*O}z z*CYCi3$<>{^H-HVgXfI(glPD3n$7BwGzgKHY1jAE=8O%6F0PDXic}~n{Qmb)(YJ@_ z_x~y=+{=4!eB}RY6@{U6zyFQWVSF%V_G35&oWwmRkpvIhq&Wp_+JWIweDDk8)6=@4 zvWBhA2j5+t9_PL{20vXQyGeW%TVmo~@d*gy)U~F(f0uyo^K6rtlU{Jy?O0PTKe+pQjg9k?VRCl0trkT1k^?2NkBKRtnIWUnT5v&)tqji~ zKl@IA3E990hMUBY`BdbMg6>P`F^g~O zZP3lorc!~QKmVYy%d=wfr#ER8ccyjxnrD)kF`w)iA7fDhY)pui;@o@W48D(cDe@G$ zm;Hj^z*sl|n8goFPBnY;=gCiJGQ#U}3QaXXon>ENuPD7C7J$o-t5dN#1%XKLQ4*(^ zPKR70%fi*z`rO|L!$l7=vVg9R29|~lRd`+N&QI)LfSr3T$di6wVjyUjgmH)Nh28{G zTp4CDJ)Y%7fOoBX-nmy{8^QwPhywrT=dDMK}LVbZFp3=FU<=o|O{cqd7 z1GlV0mcPB&9`!9q_MhFBUqIqi7_Q}7&9SJ9u4-+4Uh5#W$gMA8ya{i5>vRgD+Q$9G zGOsMRrrwt#3ahMoVQ_QdLnb4g2y0ToN*ZT-;+SG?%k~xoat4MYv9s;%UMamLuVKAj z);Y9O0n3z6AizZ=j_oc_G^y`yyj&=BEN&`r#uVz*BMnj8$lOhf8V}kew!2qMts)GC z^lKK}x5-l85{FudLGJL_NkCUUZ`E#nw^0aMFSImTa`ID?%H{BK@(W+kpHN-rTyxyF z_I-QJDqWP5CYMyssnE&?Ajxc*ig@sx3U4NyjzE7R7D7g*G7rux`X*=%{ z=RFge)V@H``QQJs|5FmD$eQeStQSJj621@RHop>Pd>*&~emsMRcdem@wy^p8VA&a3 zIo#Q;8M~};^@_-w#6_ZPJ@kZ-LHRNa zs=h+ymv^5n)U~l2(c6uTS-Lx{77XSIx~ud#P@znlXLZ+2E`iTs-q@sN-9)}|Q1eW~ zE+PgIH7E>?I*)-4p=td&Qbs!A@_nfH4CEHN8n&0u!C&mMv>Q@nsg7^0ws<>I;-Th4*OQP7?-c`_$Om7q=HheptrS*tvn4;o z_R7!*pcq&(`nkkb*XQVs#%fK|95F#|{+y&l6c_RoqDK-A?pm~HvNob*!z4Euy$NS# z)D(q2&-L?VCgsCsj1_4Xnk?mc=YI?G9Wo*eC8Nm?km2_z4fZpx&VO(0sM)dP!^PzN zjN%;RHUvZH-Ja3?|M}~SFyqpzHXI*IzfGu9w7N!Kz|DJ!AKA>FAaDYLc2>Ula`a^H z6&Mk=gmpl*FtlPjq@c`>rtxW++ct8BR({soIsx-S2wy;~gp>4V_K`7y?IF^T{5&}B z{n(BXf-xB5pgv-Kv@+YIoBL(ua;8W4bb2V_MNL3Sa$#`iz1{LK(9=j2rUBxxpP@>IMHEMRb5uFbq&zdWk zTV20d%oJ6Ssxdm)SaMRodz4bcSg+O?Co7Sx8ZHiB>x~q&&8Hut;x@3&TNAY3uuFM4 zflNr4L2AiXeZxKjxe}3zQ;%$&;?r+$&RO`p!dq58^piO9QiHS``%U;yI@w_3Fgw$d zOaq~F=e=FSC3#Yi8B^Uxi=|2Q%9#91Ka@7F!X?f7?A7d-TVHQ&MJ6Now&qLpX3!$H z9na*2Hc*ma5@nY2t#s+}hj5yW723Z=$0XifY7U*4aGzE$Ghe;aBi7X%tZOs_>A%4mD}AOAyL`JHOsll&9ZM+>%}p2U)aaBm z8KZ8FxtNb7T_$gHZNEL~PS-tR@1t2_QpYByUDuUkYgzQ^zEIgX7D>KnL9cSdHLhV2 z&PN*jG6WVaD)nPqi{XKDJ;A$6%|uVS-x~JfyH}^TX|hdBW+xC(|0F2gY~s8shdNF& z7RABli`TmOKF;=J&kS8nGn};S@wtzG0mRyO;(}++432Ga&ziG`*>8Lu36&FVe@AhHKc_Xsa`g4*kam6+9GtjEe1R}92maZSiEUz zStsHk$({JxM4cK$>+bygv;B0gIXe0Uh0a`ai9Cz*-|-dbRxrx&VaCSd4cu~}+gVN^=hnDdusNFm|6%5E>y?izo)+_Rg3 z%uT_1G}u$U!a>gnF_pwPLy!a8_2;<lwJSJz-3J4wXyho9{6T5fHsB*_7Pp28TCE zs%vzIM)$_adI=MDc5+WQ7~{T8?9k*Ndw-+MKp@2$CSTov=wVW0Po8=)sN_?#WT+zPT$>G^_*%a&E1%cs_)ZGbdi6cv0Uc9 z>c*-$myuK5(P^T{h|B0Qb@j;wT4~6u6ExfdF5%%wtIcxDv_yKM3h}k2cZKy@eT)jM zLm!o=?+f&=8#*Lq6sp&sLEx@6iwpwa5SILE+J(W7Mk}OP(K~i7~hj5b*x?{bWI$Xkn3dU+YRxVXE|LZDIU=}p`hD|MS%|5_tENvK4HSaCVZ z;FL0%<2&chr2JIMXr5NNhn(e|gWH7JyC@JSi(1ZfZTAgp)vK&X3pw;yPmeb~=U4G4 z%Uuk7AXrS@5c#b5^3)1T2W?V`fyEodmZrE|+seX_We4eUM_vF!FYQC`ic zN+VX`J)8Qe_i>{?hN}(3r5@NTF_wJwUTCj^bLNSP%|~mtB{U&;WJ<5>8wKXT*O0=s zb_9Dvkn~nYfb?gHo+|oDi*}atq1=o}1iyuc^fY!uCt|l+CGXs9&RFTHM#4E| zRO0O2wHv+V#Vz-1el)p@Esx98@K=BCkf8z>bZXd*7XKR5co0v5dOeLcrEFs*e^9a! zci)e|QI_M7Y?EiXCLr@|H$qyv!%d~l3~4i!N(!qbWlvc1rU~u-?A!Wf@RByl(g&|T z^4PQVILd*1xtVlQe0xd-(tfC=J>qHOQv7bReWiz-(9$b-;9duni;pmi0kNZX7!}%H-9ZbQhD!QDvQM=Tp9uAq{KOSs)I?swtueBw$+!y zRufUF)v+Y4LbWn=U9}sFpKcrZVP?o1_HE}G@j_FTAyq`jh>Z_k$&IGeTQ_~amiqB* zFTInE$BfD14)5HdW!rS$aVwUaP7Qy|({0%|!n>}avm*7u4Y*O~N}EqscX1J{f4EWj zRH_zBQo-`~00YtteiQB!+^u#^GiaTmXnYa~N~8AK99ZsRXfwkVTN|@R)6M9`=R1#3 zo>5d3npD=c1Gdhxp4XEJm__Dil+Y^J3 zimUymY{n^;%M*)bldb5bW^UA@EDieUS+?Gu*1~REGLPMM8#Y9l^my#nVuD0RM`y1> zZ*N>og##cJH&yCztrY5pk)@a1@qD)g>djw>%%#Y(@=>vL519E`SeZI-3Gt#ak{2C| zq&F@4>1b^zuWf)sqgrNf+%vt)h}94yhn3|ZT+L@S7Mu;4+6@$ujEwnGcG@gPjQXh` zUtS}d5_H=-BfZsxJA{I;ufF4WeS6yf9w2@Ke49CZ-nkW9flBH^<)sbrB#;FRlRpw4 zD7tT*w`#{?&?a;(d4(_SJPMSlVN?iZ^=8^Fj+P*22;f4*i>s8|1tdA+I;l@(vu5^F?p2@>$7pI$eFiEwKT;+ zd&uBpg*Lbn6S?lboxS1oVq;no{xD=>9{4@>TnggE`cmF@OS+qIW0us%KQ3yb zLGFN8qLRY0O2v;pp^k>PSO8;w_uz^3O~*{IT>iWCnZ3(CDHjh&oRZDuSs(V3SGA6^ zooXPU9k@wBVI5yVt@Wn5IZn2nd(N&n?;02;hH#eCXRJk>`l2`JM655q8TN9mdWAD? zP{D;YG);d_n2k;^&H|$TP9#W7ouC6Q-v*Gl2G*N1S;@JRG@GByKddSsuqA5Iq$#%3 zv)Q}&=@XUAuW|moHiyb>g;|01F5*bcAq#dl`*ypqmLEa`f-tDahg$1Hjh0BxLLjdM z?ic$k&=26^;dv5s{_HVp;9YKcY?L>X`34=!&GQsGrrq{(`wV+>!Ae)e-8UMZWsejT zf_!{T>N&?)^*fB0#v9un$P=cJyA>#OYc_NyD5hN`Vz$4sUU7l*^XNevC z@rkj^gp7*H==-Y*LN;Bctl3yzn=PHT1l~3a^HXDr)E}!lgg8mLIJ`)AWrxbgtg$`} z(DuiiJhX%>R?)AeKR<|yjyCE_*IAwI&FV3&*Ng@nn_PHSPqumrs0+^TFU0^DJiWJ7ad%C48P%cg7-hD8rMtTddN@pRa<@>gosXl>E;)mD2W?VIy6hp8?0Rd0Vz+IC$8r&_RP5nq zH%>mBu0mK+-!IM?k92QKP*hKZt@c`qhp=a~hp_3bv?F$8w{WK>%L$$s7ghVyCYsy2 zvJ6y)rO72K)jJI-)${Le$;QiFW2E*@rtrpo?J;1BDI&%U$5Zbxtx|FOfKX_ zoD!la_Q(!HXa!EDn5c$8b~fd7Af)pznT^d#ZcwYYBuqH4>)CEyY^jShy*4HLQ(m_Y zELMj%p6teTUU+(X`epJ5F44ep{9fo# z!J8%dd(Tm|k=fQ~A#LJ?yh$ur+I@X|8l%Jrrfi|Hu@e^M*>i=`gU_@^-8$1&3wLZJ zLfCl|W|)X>QiU_HcllH4;mg)K`31Dum%3yXbZf4igT_Jj{KiW$C>l~HA|_`1ErDt_ zFo?;PShIIt5-@=1Wrih5zaP)2~*Ug@?dzRIR6V``eZEd{o5p7q6#r!!p{ZTH)K0|PmX`@e52 zPlZd{F=hl#d-(YIacER7iifBw#0RVuP&e>#H+GSv74;W2v?MCq$xUi8l);Kd74k2R zN_Or%*d_3t3N1&hVE|X~WEQHws9z_UFk+l$D7-)_QteBa}Up{8UrD zU;eSU19{DNw5mQ361vG4aekUueohf@xRC&>UuHL6*cm$^b6W5W@ZQX9Vo;^fD%U$h zifb2ygv?ay>*B1}U4NLGP9;3%mMj?JZ_|cOUcM;JaTy;M55yXP3S!1eZW7PHT{v2m z-1HY!t0Owq1E54PLacPX0xnWA`*G@X7?z*$64{{m@RznhnNZTMY;XZ?uR!)67qBvG z*G5({cH8o&n@D@d?DPtZ8%G0y^dyK47=58=9%`)N8x7&9_T}HEWA>gQvuFss{B;Qs zjqFhafzN~cn0ikGA8riHf7vd`35Rd;GTYY>RM7BpBHtTGu@G-$`AZydW08-sM$6(e zY>BlPp_U-Sd!#)&U_fmh~5it&%;{-^uk_qkzC^FuOs8ZTK)yQR&8FLu zZrJucBuKR6NcWjpJf?Zr*vwdVDI&+lv{@(+O31SzS;IV1oGqJ5i3x)c>K`f z@#AJH$sMIjwA&k+3f+v^{aK%dBtuxV`#i4luguzy$;vNhbY~fKn^k|HZ!1B&NXWbW zQe(Dfn@q5S^vng4t%th06|Ok#;^8~??Me2Ah3l$%dBTi1lnKjWZ+>LWl?-OV=8Lp$ zP(*FdWbr@W%}r0AC6jQm-unL9yFK=C7TEhikpySNu6;K%+vAsUDtYmg;!2ENeI^y3 zfuVGDF{oagDod%a#zZ3%stYS<=d+gAe}9d_R&mfM!Vu-t$#dy)hj^u4b6*4+oUj}i#*n$o+LJGH^w4baaiy*mY~>>YXaJd4ve?uWs4x5evM zfCIkbYNwM3TWZXFcd;R*O_FOu!{;rW-oTTHBTZ6$x`T1L`4XaD;xUeWzEp$SibjjufQYJb#-kX={6~6C9_Y+s_P~G25$) z?{sJK_Bq%t^yF*`7VG?o@X1&x+*r5C4Fnf#0Ue(%~?kq&EVec@P`Q%Q+?w3wj2PN~PIpnS~Vkg*9A!WB(EP(e3 zmS(pK*3k5aZK-_1c9nL-aMFvqcbN87NQOv3Q`0vI39|K{^;173 zeAXXlWh|yM zd!B$qoI-`Cr2WGTLbeRaWh1gyh7hX(`njxpDu8x|ldhVnDo*O(Iqqs-Nwfm|bwMSq z<$!uDgC{Xepj_lmv5$0vtnfipcdeGPd-K{RG#>yDDRmIS?i_4~M{qza3Op2BE=KEz zGtqHRIi6E5}1C_C3 zG>0fd;8hG0%#~XI>sTM|Nqw_&x}O0TA;Z4L!wK>aGT$2?0E`on<%76m@*xRM&4{Yz zc2?MVW5OT9)S$%S%wYnrrSugAP+TF>>I*n#&BCE8eh%H1D`MvhZ0Y5SFE@97_^|%U zFXr6-JzjF!gJBU+{6lm^cBe%l7}pu@r|cd`G4+9#uW(rn>HSg|`W`64Qsk)3KRV=; zRGJ;4kD8k7(P4xNZ^ykr)z#!dzx}N1w{MMK^r5Rk@3F;=S?p`^6_B9{joV zkg^1(Qry^1twF&oH~)m(iSVA~2b37-ji|?I>h7a8v9Htza1AUetut0KiH>FnMxEhW z#P$yi@nizp=2?5^2IGi3;Q3#H_jf*GEvP$ak2e_IIf{Wh@0?EE@kIH;_@m2RJ?wWk zSu zu`$`!mS~ng6OWC7{)!NVD*mvxGM$|dGc4~kQGlBIadC>AQs$E%1)IKr_^)%r+cYy> z0mO&_9k<+#Fn0U}qCmzzkZ$#@&Ti+JGq3ipwvL6*EoQca_v+aSE+t8ZGXjMm#6P3A zyO72QEd0bFN^WM}L&eUx($`X zd{PX7Ha+<1tT3-F1O4MPJx~Dy7}m`dJQ66VdXcpJ8qJuBMWD^V9Mn;$Ctu`Dy7MDN zJ;@%E{6PXv@8vPdu=!8UZC#-m@^nDrz^^FZ5+oN&0`uKcuW<7&82uPEsM%SN*ZAS`yd~6hISrN!H2wbvdnrZwRXu)DNNaK zCMjgiMyv$~1dwZWpC_2T%A3o&)lpI2OsOSCYYrvi=AHkp%cMyPHP#GaKVK%9!Z5nJ zl6>iMlzehSX%a_YPbLgDpdB7+1qEsmGaF7c$J6iCV28Uhl&`qzhqF#_Z_axXVJTAm z_$`zss95$ck7V_Y_L>MSB<*a=&vy7|uXeTCYZpszMN){Zs9KL;PYnRNJIvPbu`_1Q zVAbZbvX5U{MOTs)g-Sy|s1^I?z=6rdJuSZMH=3VMre_a0?JQ(&Es|n%Tse!x^H{pa@mcL|xKZr{`N6(>l)xvJf8bjx4}D_WMi8O+RP2GrnBE{|3Q zfWZH3Zn8zE5m^xB?D9pUg8nW%8rW8pX3ZInzOAysGTXE?%MN;jB(;~#;#3ZeC}})? zm{(vyG&igWlqDT=1h=9jfG|dZF;?l*<8eCBty}gL`so(4)ta>6Rp9^B=#>=0vV_xy$1bX^1cCuHpiU3^>{~&vCQs( zWEI;VN(4nEoGD&5`aA~DGi7%DKXMH~m8(&SC<3zyj88mBs z%5VVH9H^0?YO7QicFB|*!o;wMp}L8*sv>19Ux3>!jr`YzE(UT95L?#1npwuD$A3AM zxmJYk?)PTVu<;F=eU6bD;FzYkENTk|-2^TB3UsS{3zF3F3<^OFii)MZ&aQo6WYn4` zt=u$hu3*k)b*G2x>SZDUt8XiO^WP`0asS*{!$V*82qL4 z|2WI__=gx3NBx7gLgRj_!|+m;y}+;Z}QcuD!}WFE$vnXO(RR@g{3<_Z^Tdm!)? zC~%KtWVXaFn~QxipMuM)cBWb{J~LtFw#?lvYlse`0ZL8dXX#mdgJjyhyFS;24ei6VWWh}4w;VzK7E(je19Xa?K!Rb9-Y2cF2Nm9 z8V8+o80dHCP?O8QM)TskWaP)iU?!N)en15Q53uW9^yLq0_R!nq>$?(3Ag0TQbj$CfRiq|^3;Ez}h#>^@8Z`-G zpx5lfV6c!Eb|NDo5q2neO#6S~_g@FwJ?8LW|9(5^|CLw#*HHg?wM-FVO>m|e;M+iQ zVQYDVN%mVL{(&8v)gwDGFZs0zMSvS(MVgIR3RB**hJ~t7 zSB`l%L?kG{MH$-Bt7{3(>|QkAhDN$oqITfE1UjD~}8x+^XGG zud}*kxpkG7ETdacl&{>iMVF<}kSiR>N2oH%qnXI*TRVgyi`7k7UA$LfO{~9YbyqSr zo#li;)?EHVlr(ytoum^Qa(Q%*(k|XW*KO`)hgQf%ry-!K`_GreFv-w} zo`nnw`~}3N)njB(9O*HCI3^_m8N>f14>|?8gZ{7Q2t1%idr1(0jzn6I;UH%|m7{8K z_jdnJSLm*owsMn-;|l){?Of8DAQ`QnpJX_TcDSXymGnKxC91&M0Ak+_GfTYvWt(aev@p)vfCXG>fO- z)jbK>5|vk5NO*Tx_1Z}EHWjr)xt|pijwNTpxPbfyDB{-a1?!~G_vl-|R?E8nWp&Ki zw0$+mZk!q86f%{`@Bea4eH_cELvL~K$wtMX>B*`%QR@9ew?X*1tiy{ zrDmTTvsEE7+L;E~;{`yK)1QC}#0AUPZl=~MzU(8y;|~^Q2yhvfsQx-4mHmV`RnK~| zN7^>><`~>JIxGJt6ro;A%*aD1GqQGwEbI%2^T-(pWa!{fh{Z%}O6(~BXHm;PSPH1A zMDrA~doKSYmJjH&ndU8$6>?db2VCBax~A`Q3OJ}L*BkA{gxn4Tv4M0l=iKkW@J8=p zscUU5UfV{tNzF`yacT8u??OIaw{oZ&@P8}aP63+$EjI|Td)*13J+>o{ZaJL4+K{NhJtTVkGdR)r)nfQ6D) zSyNB<)7`O$-4nf0_>9p!*>j9zSz{%>e8n+6k2o@%#|+sNW_Spg~Vb1gC##bbh}?K zLNEACqje5Hwv~NUi0i{8Na^24FS1-p&Z6=%h#}goQ(xAE0X+t}1JFJ5Q9FtVVnZvn zctpFvvM<@0&;6Xozj0hlYq?UbJF4zS-m0u%qPZ2TQr3!b>Mj$)#ZM(ma=gYwu$qO(z>Yd^~0x}ALW6Vz42B>&RE zPz+V6PJNJ|qB*w>AR9g%4~Q0m_%$~{RFXct_-3#~_=&C>- zoMnyZeO@alv!^ctLJsx(J;RyczyES2Lwffr8Megud*e&~d*0$7xJYx~q>?i>%4#`v z($c*}cWOh}*$D^mW&(oXAgcXAKFkx~$%;(BCl}DoYKUvE+WB8xDPQa62)3ERL911K zcQ}cISp@p&Uh!R-;G4u4Q~o~mM|s9Icel8kETkdCvB=_T_94j`=0b<|X|tp;7WjLz zf$KEC0w~$90E!yPRneh3k;GIYm20uR4yNrF3Y~F45+D$@A2tJV{s^0I5HYv<{7XXs zAHThX;?07wy{?>@D?b zXV4eMVY`w9il3j@#O5i=q>j<)5h=&ZajKW=cV;h0IXERwVyT00;lFuq`R}L?=(KTgfMAK z2wlOk;awkoXVC3td((k$q147U&uTO}9Qo~8$*27M$mJ=lUW@LZ9vGLyot z{f#?tn*s-Jb1%(_3nLroF>ep-a|p2n6hU{oVh5<_1gBoN~vX$w5`bCjl15sMn^{ ze2=C9>klwlX*3xFs{Fp-+y9K-icvG5!p4k5!RkM~BjNbmr2KAfUj9&rX@!LsZszSN3+b+%k3x+Fyy3QGxgF0F-Kk8FghiWD znY_AbB)kE&a1hpK9gk30*t_xK;BX)B6_bBr*BfNftL3dkWH2}i1v0o77{K@W$z`?J zSRAjksOeAoc~b*TQMP?n>dIM$?u>c*cfol|EeTZ~gk^|8UEBbGEKEJh6#zFEH%W~x zu?6E8=?(jsd!0(V;XLC92VSktRC`I@j3V2JMFqhS&=u!Ol}<{dat zNm$2g>^ILjW2v>LsL$fb(_uH{YgDPW10t-?&TKd-uP}YLP^|IMRyiK+3St#$xp$5| zTrQIFDAv(QR4Pbk78UNZ~edYle+N-Vbt=(+iTUP>OR$bOS-WJn5}lP)b!#?Xb>U z+&vkB3%cAs#+UGpi)b>fkEw`Xxcrw(j3dFI0s_x}ZMl!}J?H%sw_l#}2V)`AN?_T`ByjAp2pZk^bw_MqC!oMT%e;|x7e`C;2C|VnG`P}nw z!qEBuIK^_scR?uc_dSMO0>LUKE|5h%D~LAau1qCX8oyu4qt{HO->rpkTs@9EKj-l7 zZeRELmB|}9?&mD~U?%45B)aRvJvo>A)b9ji&m~J;Zo$I73ifup{?1+{!+vUt3YRjc zm){7Wq%;J}UxvB=HdK(ByYN@^zb7cgFRbwk%Y;N6C81~>H|~-()9-1sS*QL9>i-8X zM7gWu=N5b@8!uAE9Omo*a=dkmaCl$2=j{LI)BEqY9lMe-Zo;CXKMfz=0!#fL!;!sw zllWkhT7$FuF#ll)X&jyIgB?D0&Ew8uWB%7x#XTIYJaxWUF2`d>>E?}+DrgverU%C|;O%1eS(6|{W3 zcx?k4BieEKl+(xKEJQwsR=1v3jLOpb<}W_-?uR@F$SF|WhvK`tU;nNx*c-lPVhpHt zi0<8#u<)B=j?Zvu$%b3`^;awLzY;lSvGHJnilkiteiOkq{DWJSHMUcE7tj{kv7V9~ zGv~5|TbuVo5{By)5!2T*1zb4RL~1t{NKRe>4cGrHBoi&oqrA|yV8ukig$8UNwJ-L6 zFqD$R<{3{Ut4@?xf-(tEAvuGujy(MvrnxCfn^h#*B9{AW{gk`S+OV2tufcS+`AS|B z7~K`VwO1?o7bu}cx+w+m&xB>AHcSTx%WOTXFLgJh82;{_bsbf)`VSPZR+6UTYl>|n zi?`suhY8O=bLz@5UM<;FPNqtTYcA@-a9_!5zvXS>>v#XnEVpEf+^Ua|%qL!T9;Ag7 zqk^n-hjPUM%MSje6zaNZI;e0|i3R@P3}gh9{M~LTrKRti>%$q&V^V*TNXWr~)<-4&SpNim{|0c5Y?leG zs;QTWfCm`=K_CKUr#T0ycK&Ao)zNAQkCv9DDnG5$>Y2Su`35CU9Wx<0K2QtE z0ZP{N>_MfTFzTUvkx$=C9qedX(5k>;tpIKKQI|r5x4%UHT4%~nou0M)Jsu5kgX9Ap z2mA961CjD`qI-29fSwzav}e5k_)!A2a{sXS9*HcMTYNm`CTEL|W>|bk1c<0{V z&!tgN=WMp9zY@R;tG1Y9xcT**94_Q0-7k-Nm<<~>di=i*-K~1UG`{pI(OJ68vvb?e zzOOybyJXalrwtU7Cx4+Jz!zBz-VgEBCx1Axa_dk7xejWu-b?*^DSm8oA+!VD(@_fw(LoW#41ggK8{q z{zT=KiQYsJUAdV|yLYD|QcZ&IqfXJEHBh)P&pK<(2~dsY!!?uEP{?3vs&^0bRdu;0 z=AQWc;*D!-<3u{5NQ+Q+OmZz%rC6^HShYeEZfc{_4v+> zS#gx}ocmTeiGKTUitcY=>#j=#*`&sxHOB)_T4^!iQlduH>5c2#$)H5;ebAvhnq*`1 z_~nl9ZaRA6$w$5;Hp1v!&>CFlup>6(AWW}_0OSiI$0vVBSb^hM*F6-wz z;=zm6o+wZLufTf6ZtMc*B6Is?BPqlDGdDh=-18r`SyyP@Tr(wOW1vDt^q^kx@AzeW zt%Ii$tjHbey%QGMAq?O;)+E?fe^pWp} z=in$+uX~};h0y59S;tv?VV(6a(kdfM2D8E;Eck4e^>BsOA zqLkE#&Z2UC&#qqW?Z`hne*cVXHkqRv9kQ~JI*IRi;}!7y^yt6TtQZ*-(JTVu6M&&q zx4eESsj`&R)Kz&*MJNUDUoJYW`n_@f@uHuirZ7~s1?Yr*xI(DhU@waO-dovsPD6s8 zCw|}`tjj(HY8#148?;7(Ip&@wtDXX4fdlAH1CWgjqr#o=R0RFOGH*!zuCP?J-dL{L z7ow&>WiZ^gDeTCjQL*#)Tm7R=h8D{`l?@ZUuWg<=@=TP6`@OTYlAeSaqxHQ;iSBsV zUIc9KM9VnJq){2uxj&3VYvj)uV|BPnU?KNvZas3o?g__oVTJajhMlR4!&PeM0nWZj z%&2?8AE>aeP%7+SWfW;YYeOvibEh@}d&CkuL63pYv1{BI)LVNL{{)1%3( z7Y7N_%JZEecUt@D&;H@RpBsI#;O6dDAY*Id1Cm?p_6~hpBI2o5sQGfPQc^VCi3r_! zd?%+rvuC#g5NaiW-Z-6>To>0)T_ei953GT({^PZO)a#!h^Vy4H2ZhLB@NoG6iP z5UQ8;S6@$L2oTs`S~~%OT{G$yO$2ewEr`pWS2^h1QMX_L6##%L9+T{x?L8xamlpGi z8E78+iuCWMqaWykXJ89;45++#UrRgEBy>9*5`o2Fwgt3mSWG}dlz22m>JO0_=B2k!nGD?VsZ4F6*_T6}*aQl^Y@a>xcn^7o^*EA!G42c z(9|*9DjIIvj5JMDr;6FZ*icyts-f>-tLDX;zt&NSE6w%p^zAb64tbQrHoMnAlTxS1 z{kCiozw`Ow15kda_4$%Si*K=Vi67H~r#YLOZ8bIWM|*sI7IdQ}IINTjDW`$aegk9$ zD&ah0;^XAgi>{lqME)N?h6U%``{L8C){tWOg9kLgEjH}dfv&UC4gMXbiQ@AxqwV{w z(nMncTg`Baz7oZ$Es}bQ!1Tf)FQKx>;_z&V^mH5v&>cQ_wT0?B&&K!^s*j}ip|IE# z-}BP$din>02IuxlJ^oOPKY4#6kOhVXx5p6o-0zxpB7E8(^qaxJbxK$hAbFHw3tqtx*noff}=hf){J^9MeuLR`V?8QLW}mR!;(lHrWKA`nGHlCL$XTqX$~UOJ zFL?JrQ3Y<(#`45B6ub1>58NZg#RHsB5vr{+;c=1`qh>#d90j%~P`v|xUx&A1WKkqU zHY}j~gaN6M>dP%&VE>SZbmB1L|2D-R=!+N-|L8S8xSF{OyoEVU$sG_4k{jEQWg)KP zP6_0WL7)|6R)qw4p5mzo_|Tiv z(ekU45bV-v0s;XCAFVQfFsVwe46zl?g0H=sUdvZ8<#}&1qcW%8gcIap8Ao2fMp=mP zazLl{ibsnfM~+@Oh#6c&#;x~3)nsK%-_=7Z0mJ?_>05+Vh+`rY3Gd-bQ#wBeD)pZ% z@9~WL2cP5aVMnMVU|1CrU|1EKpFGc_Uc6sA;J|JCD+@=phXTRJ@%Fy3_}SsbP_Zo5 z-`v^KU1^l)UF{T4@;8wS+@>R9O^e|8zpdYT1u+4W0EFxxEYJx^0Xn=(WQV4 zo3`G6{@0WtcNoCn*^gN@DN5AL|75=Ik=6gCj zF=?}3i*f%DIa%Y#97Gt@THFgZZe0|sh2W&!b*cTBLB*L<1lqx@Ejf?WY6Vgrusk#0 ze-{{n{#hV1ozpCqZD3?N^{|Ynqb?!JVVfn-5;5W@X<^kZlX)0f-0kI(0uDdu!14lo zC*vr?_ItU*)bjmo`-rkXiid5PgQ6P-6~mvIvHF9nd@CIx$QdMqhDLr@&Y~wW;3KNh z`KX;p$;=Y~cLgRxn`OO-xiZN%|Kaf@hoK!3^~DCiO*lON#3>Tsg>^s=A#e@Rpe{|J zyY=F9!=08ocmuf|Xm11+VD6nepPYB>%ddLI%f?fZ6s`@njMl;A)3jz#t^zd4C$j(U zR(-a;p^f@5DW3)KAs^ZDvO%d6VqM%F_4$LnswB|wnIc&-Dvm1oqEIC@5)((IbHBM< zC%z!>lV>l<7nn}9Gm^8h+5a3)=3jeiCMs%cYswE?Qf%xsDv2i?_8Y4zc`G^Vqqd1N z3mh(p&I(ePAH3(f)+VSVk_b*Mv+0Pq`#Cz?t2Q)`A6roemW!fuBN-#f<NeRG0UEXao~b8Gu>aY+ODW>vg#w9$T4v}3+UPQKllMklJhb4p!G?}`x@Eg zlSdip4!=!ME#x6knBK;}@j|)e-I&4@7*Ja9S$goXgX^XG;A3+{)6u+(wQ0^5tar9o zIXab1-8Y+RI|())6PQe+!fc!1my|S7kOqLyQAR2PtH|Gbb))m&CnFxhR1*#&Uj~ER zbX9@NiTy7_w5_ZWmFjEJM~B%w2xQ=p4BarOT{%xM+AX=+rtIF8kr$_0(EO1#r+jNDLZq(tf0rz z0MV9WGnooxfmw95(7d{k>Mu|P?fp2>3*~zQh@m73tXRJA=1N;F8as3sZsXT$=fO4g zVW}1j%-EQ3&T|G^Fa{RXZm{i|{NA)mBF%X6ECW=Fi!K*FCcHP^W}%L8a-8=)=3Zsf zdGtYdrqf*g-jNHjOa-q+6e2P<{-Yi9#tApjA27IzYdcvNu)**k-{*oHnDRjCr8H`- z{{b3^8>^S~IsQvyM^NZVMYMq;IKyJhct3`Xv5!p2+|oYicj7CKPY zHwd$t=7xkmZcs`V3FEL#*_C`*tnoZ~?J?;wuE<8150mM-at=q=O)XOAWualvFBNTiy4B@|I1pgr7)*wV61<7xP@8gg4W7T@(==XES+NgpbzQ+WX-&yyu)l$9L6?G zisBcWg|((&g)+6zS6JTSDYAT5>wX)~Ei3Y|NljF@qA_#8%+b*g&6vY**E1eW2H_`= zElOK=Yb2cBhBF7E1E8+IC}WGf_#A*Eqyw;yv)lK2oF5-T^)CfL)>+?xAnI^7#r}m7N*RoG<05k7JA6PuZHZ@^oN{u zr&Otf1|RNq$jo*brpYP#iN^;h#b-o)7#UD5xu_i^dwJN3{Hf!DMydXF`DfQkzOdhI z`&0L>J~|R-k%wk?AB1@&tQ;%AqM&bJ)!5b2f?_tNg)e7|tfC>1cTV4NuUax+n>d=F z6rM)4WG|Tbn*S*bleW(@-&uA)ZqTq`#ag{%x2b*7~9i|GpfuuMu!%rLRJ{oKw zr~-lfZR%Pn2>qdQGj33%C4)|j{Ov1M1%7O0z>aMI2x-coA z;4EZiTt1$dJM!_|(4jCuv<68>#hf!7i#2mxN%aEHGz|K2FBz!sQwp0XjpN-%1{k`3 zq^L>ooK6#ag!xGoBAvErWawPJkSAUu6O~41U0t%ijvDDx^5-GjS?Zl!Vf5`kQo4=u z=A`13`Sd(DI4zCHIV4_*DjHcH-f*KKKV?6TkT~-En1NLI*RfAp+vjd452x%fyTKZP zhE-Y?*czXeWY=%6Mkm$yFnuRd$QXddturOkaL^~!2gz}nf>ZIvUpF?*H|J+1zi|Pa zO7F-vfhM0SKf5o6Frl`{XeocQ@QRus!*u$^zJ-Dn4-_Ud!78;ajk+TO=#ScN=p9%E zs7};G<}I1K<+-6~MNGO-Es)=qTt7GP#-#ktJ`O;X3Z};{;l|&jv}wzWWMo!uTCIfH zKl!pl4+zA@wK6W_=}#Xl!Sso1)L26;En6I<70LlB;dbB9N!QAAJg2&JRWp=yzOCfV zJJPn6JVjhX>jHw)p3itKEGtV@>;|#h_JGSy@RtMw<`f*6$+uUyX`6PoO$ZVrvT7fxp zY4W#YbgTC?Sq;8&`5<$ns6Ys3XJ@?fJp=Q-k@rPY0rBJ)ig_(}6|f230h6Ho+8f@V+7%j!K8$Hx|fiZxp6CS!*SY3y~AJciDS9 zL^^!OJ;}bKVJMV>B&4ePqUnMIL_jfOv<#uZ(9S(iJppD{GSt6@Spy|gz1ZrMO|>KO>atX~UeEb~NX>LXPCSbIk@rwCMfvDqZoYcf$4Ow-l1*15(gl*!T6 zVpnE^8?JX*!?OU?T4xCDref5d88BkM99h#f=CQy;RCQ?^PrIoD zES|Hqod-yqER8tM#GZb5Oh5)+!k3F!EVZSZrukmF!2PP~h7g_OUuCXWG*o7H6;KL0uEyHB|j#WOGf# zdr8062$qBGfu^kL#p|Lzc^#*}ZCB-9R5taD!IeqW-V--9UI1zfDO?IvW2ISSyuBP8 zG7Ft81@t9gnCkv=P>T4){UCRG#pY_RLZGXdo@(^_p-%M>@T&rD-Qad%7|E&NW{FR4 ztZ9R9Uc#VEHf-Zp9i|3fzKjUC%A@zKEqab`A`^5AZ~j#8J#tJbtD$0{)g?pQE0AWg zvJR1?aD$U6=Z$hFce~~ehyNBc#|ST^&3(}f>dB2_2hhTOZ+`RzMxWm8Tei(AnK14g zce-d=_XUeM9c6GI6{~oYjHCz;Jiqw>ERRv(9el7VwLJaZ=x1I9DRtOg3lB}z zcS2@a*=DfBw-Rf`pgXv^2F18e?msdLFglm9&`TqsDN6<_VcihXvjZ>!+8Yb5<7=tFq+23{*D6ol1~&Z>p5dGj1uy z4=6~5Pv^-@m%1a;ixx@s>3_Z*hg*o#j^l z6It31HHKiIgWz zbm|YO$~-=^R}(g@=pBPuWQaWL0}a&0lv+Q9d*ZX36u7&Yq&?*n;+@MjbIW5sXCc*H zTs9^W64LWzKDs%?uUUTMKFWJ{83j0#npraOU}Av#W&-XL*`G2Si(eYUUnHO#mw!qr zi=Nm88UU&SOcqW@-72-$uszOMwqPJ?n-dg@BLC(U5`6lObG(l1c(KnGk#Goq@^Q*? z0o?lkZj8jlpfA!cNKMoeOjfgOInPD3>%ix?>S+cwcOpO; zdF|r-EyN;5VZAP-)%}-{^INzqvN65_j7Zu71Y2JOKh*%nlBosnw$caR)Bh6En>sT( zCy^bp4rrPJkCD zj_g3!EsBnhC zx=Pr-8Jg-1nGz_Pxr>%!jX!*=kc`1p?j+V;q!DfKx8ohg*1`3s3FY;EKS)8xF z;_gi`_t_Z*8`Rx%SW+gAmQ1H`PiLlT16Vg*P5IfTsDB9*@Gh9{KNNiM8VefkFSspu z1%EXCa#2yZ<4}-z+^-a*>iz_`xK9ztSL~(Hy%*GH#h3Yl1h)|FKLJBivU`Z!u6PU< zaX-vn;Jpg#Nmr>7v+s7>J6Oov7JZ%IJ|Fomhbu&-33mUmn3$Haep$-o7O+c_$NYW5 z{~~!N{{)zpEAKmC_d8A2(HioE%Jq5Z=-60BK}J`{+z3nMR3^r#+*sUk6v3yjiS0v! z9;2@02AZRkWp_Ph@XQ`)c6`+tnlY)48m)oYdW~$Wla39!#LH3LcaCh1$N-j&wGe~% z_sX4IhwC`uI7U(H)>JT1<>B%yfAN5LW9fQ+b8d_i_XUlxuV?TIolZ0wwdET>s8 zaLP%?FM)#}yxD!HC$i2eJPUPS_*i0H4kOqJl-7uCgdor*^G#6kw7inxsmAbx7#W1& zXD>s^X_*7(JpSVnua#@CT8uRv!9SFhjY^fdB%!skveG)nS9Qn806tRB04pDlfy&^z zvM^qP%-oZQ9-}`@v$pP&nzu$4KB1U?4-jfbAq4%J>M~t-I=}YF#}ROeXzkrFsG57c3RtcrFT$sWA%meW$YlL>lR;*LDl-> zo1#%hu8~edEARJI-nRp=R+SXWXsJD=}~`>?T5+;A(Xg76vb%FW9IQHT0?UQQL=-< zJO37TSo90%k7FBy789G6CTDYpRZ-8#{6+4QJusGNKLixGMfG$Iod2Q74wbcyrmJkU zT<89=n9y`lKA+(B^kczz5t%BGo10nXZwQy)>+E4$ogR+zIAtN`Mm2V5-`a4JM1oFQ ze4Dm?OeZQqEzW&rnQ!81TCXd7Amnqgn^>Ay|M1T`lthflkK)@%-PS(;$U_vIj~8Mo zK#L%VL1jMB(|+htL>R4GVaH6#RQKdH^PO$-5WOFJ8p8!Cv~01XwjidWNQN}~xuarb zt*6sG54{ONIY~aT%)Yg_;kY9hkX~RVLY@y&5*>b?k}4z%M7R<=_;=&9(YKU{P%_As zC`2sTC1UW41!TSf2+=-09vg1*x@W;|6CnzLI8pR6-D3epb;T{3q#bgo1$P-zh&}ae zbK6AvD)yJX9awW_uv&`k2(^oNj@~>F-tF#8L8f3 z#ces;XQawTFs(N<;OMPxshsB`X}sc#QKT3mWY#=ZKAWhh8fsf8(w1=AE3dUjbd1|! zBjJ2dw?#1*gN-aZE6mTj*Fp{*@oix6lSzNHhrz2QVs`mG8F&giFa!UrTRoY|#@kcd z4a_Y~k~dM_>@y!rk>~hY?s=Lx{yk}U9nbjoQM8Q1sahg%^HCDDd*ofVUi3hbbDpw0 zo?)Zmk*g0A51raElPOVrw3Yv>$SnTHPUn2H{Ol+i&`?JE%oX1FiUE3tS24_v*`7Lg z#JDDXZG7+ZCqoKVkLl466UA+83wH*!G?5Mu7COhERLepjE=Z-n?}M~zq2RXww5U9m zpc~VDwMFHEc~{>3$AaKnB*4vR`Ue=+q8 z{UiQlt^ixZ5AZ^d*MA=bd|}xnnH+Ta|N71&x5d)0fn40vW}9`TliuY~7yS;gF%<+x ziMvn-*xa}sA#K@o;FN;Cekv1fs6AIe5?6pgs*2dBB(BV}fj;uLPbv`qBcv3NiKI7^ zxS9ag(b#(Vq$LPD{(3neKTS#W*UJhh5F{opMf^vDxr(Gkz?(oA{eHd7LogicModel:LogicManager:AddressBookParser:Modelexecute("delete 1")parseCommand("delete 1"):DeleteCommandParserparse("1")d:DeleteCommanddddexecute()deletePerson(1):CommandResultresult \ No newline at end of file diff --git a/docs/diagrams/LogicClassDiagram.png b/docs/diagrams/LogicClassDiagram.png new file mode 100644 index 0000000000000000000000000000000000000000..cfcecf9905c70c080c6356d9a0e86fa60d199f5f GIT binary patch literal 36827 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 V0-BOi(?E4xX{|EAq{M`Tm literal 0 HcmV?d00001 diff --git a/docs/diagrams/LogicClassDiagram.svg b/docs/diagrams/LogicClassDiagram.svg deleted file mode 100644 index a8ed3aab057..00000000000 --- a/docs/diagrams/LogicClassDiagram.svg +++ /dev/null @@ -1,133 +0,0 @@ -LogicModelAddressBookParserXYZCommandCommandResult{abstract}Command<<interface>>LogicLogicManagerHiddenModelStorageHiddenOutsideXYZCommand = AddCommand,FindCommand, etc1createsexecutesproduces \ No newline at end of file diff --git a/docs/diagrams/ModelClassDiagram.png b/docs/diagrams/ModelClassDiagram.png new file mode 100644 index 0000000000000000000000000000000000000000..4a27eb29eb32a350c65f445cfa32b7e229a2a950 GIT binary patch literal 29168 zcmdSBby$?!`#w6z1{4HT1eCPsQUU1@M5IHcLsS}ujzLPP4G5@ocXxLS%Fx~23=Koa zSu^O~pYP}UJLmj&uIudU+ItW4&b!_f&w8Hwxu1KzKJv2S__$=a5C{Zc;?)a92;>Ss z_*dxa74XgJQSf{4KL#5yRh#$b7BEvieH)0l9#qdt*GBKdy?3yChBh`9yliY1rn*oY zTQgJE_vU6dAM;Q^Aefp)N~$)0zK39dW*nkJ-e|~;J-*`{*nhE=@ew2Sg#^x*H*dr$ z2nGXuOV@PA+{vqQJl`7xV6NXeS+{1D4SMDl%Ku1kYWoOUOCgRcL5!2FYgXGMuyFr7 zz1#hr&7SD`*G*T>qL*hheZ%KoH+Xp1ldc4jd;WM4K-yoo^vJiqZ5pp(;O}$VY078W zOPQw(qLGKiw1dBLm#C{(>D*2Jdg=S>K|kZ8JcmQyD^~<0ZjRv=E-?wrWwiK32}UGf zJBr%BaB2295wpbMy{m*wRo~+Q-<#pMUTupQ3r0nC3fUwU)3rC;ET`XGO~PuNebQj?w^*_%??d+6 z?3}bxAtbEbwoJZdsh%Ueo$sn>YDJtnUwv=*{O$_-{eC6pT?OIK4Br$4cQW?Wn&~7J zS#pGajukF8pV%x`YG;`ugC3ZgJ!~>j)o;T8i}t#F@Y$W>K8AOjcD8wiXMJlnhTpfY zACa9mm|tt;iq3JoBSkswbK{`nMJBeZ)Vo_Zd4fNXy!i`vFJ;B3yW@eAXqIL4D9+!A zwd4lL9jqT2lgy$M#0@7Lir8IW@txWE32(4C(UHf8m)xkn^QFgWeaX1SI(BH;!1u`v zSAp+$EQQCJ`ExchrTAIF4BVE>rz?Xhb-E#VZ__KJOR*^=mhcvA5Sel8cOpWr5fc(S z^XZOi89K^1c!oH(8_}3IZ|X~ic!j*4D)NUbUp%|{D#P^v@}$N}TBpc7HOMyq%e*tQ zD6FeZzJL+_);iCKH?C>_Ky0)t&NBQ)?y3mK?bq>HA6y)Zp%K!itp;Q2KY}kz*>_$% z(+DCpdZ}iWHDj9+aP8-c9uz-9@D-iAAip8eKm<&-&8#9|Z1iq31@^1Yh)?$Y(2~&& z@jF@p_X{@F`NEn6UpxpsmTlzKkw`1(y;3#E=_qVLZY_q{>lO8N3sJ;|?Ph&0oboDA z8*vQHr={2!qf=V(lU5C{Y(m<`$cMIKzAn z@4GpMp%4v$K*=OtJXdniUYo#ixIHk6V{xPTO1h1R`Gb4uzr>VY2p1?c6KG@LG1@)P zjawf@I+|%VXQ{}@UA-^tCQN^SPdGin{??WIkCMMvu1rvY1i5S|=ulU82!1-~14GF%o-EATix^q*V z3=jO#EfLNDo&kA`r<;oID6>bz=k6=r56(0WTgc6s+1LzZl=|viT{AFEG8v3$dCg(= z@LL$|;5J)uS2iCm2H&HKqRnfLfkZ} z!X@#cl`FIh%_K6f{l_yMUYNaNe-37oJtfz>)&c_pm67~AfReAbYirA*!lfrs%u2xT z>yIBlGG3>Znope_k4*gM%-EDFY~Yo;vO=)5=5^Lnj=E^L4>Lz0&jDy!IR8 zdn#sgI9%6F?MHT#vO?-}B(6O%=%hG??RIcUk!tJ( zrDiNH#kuO=6glcol_Aeie937A?Rn7_%A$tjb6edwrexz)vl9ltu@~{XoB(unJrLPMmhhg`|L=_$`?(FQWVWe@o_Np+c zu9f%csnaoot)az}V(oC#xTb8iqFc9a`TF_w_4TFvqTn&o_bl)vU%gUFT6+kD?i90{>xhVlNo*n3AgA5p#4 zh{xfK$SH%4mHP80r>6G)04p+?rz4bssqw&#?xwz^7NPUZ707tx!gO3Z zIETg^=KRg8x4lk%6CHgZRHA=&!2jAr?IKHQ)tC;C(K`zKfwOq!&mSni(SG~ShDPl) zv{a1yU&%#7L@j&!csh>U8md)kWx_XmJZ0#}5c%!s+cA-6^ ze%^FgnVu-sd<=wH809(Kj?3mI~x6X2ukpQ1eNi3s)7`WF^`_f(^S z#nKfgyK*O~=5L8Mg!D^^TPn;%O`<+Lfz4FO2ch~v??vK5U;f>3g`Snssjmw4ftJmQ z)c6*vq2}&JLM#AEdPpS^FOWt5N1`4!@ZTTi%2jbXGQFTfWP%q9_k{T#;qS zjVdZEADU6ntEvKjdlA16-O#Smmdhx-c!8Rt%+%$(39*8sG)o^ueozvoBLu20C&XT| zhuuKHx!CU`CDrBNy@&;*hWf;-%7=1?USB>}jv!}Rd8oN|8~Sow(DpS;Wr5;B2|XLr zE_7H?Ycp6ROO#10D;1h4#zpsgD&dLNb%?bVUyGH-S#58eslD7}ZATfuPUp-bawc2q zgpccv0+-XcUEjS^Q!LXzERjaS!UTs4ZV0hi{ouBxUWe{nHTry<3?0!9c20QAx&Gp< zp?q7cqH{?W5hwK4`dVRP;`r+{E`fteD=!3HjfKlt?)Pe^lbdR`1d4HA3AiXCcf~EC z+E9_%TGxwZd(SYdQX{^DV3N_oK#H`ZtEA#IR)?zU4C)-8QsanHd-7twuJzO;J_ zPVm&6s90x~cq2MnYJrLQo4qdv8yWeJi^sooSyw%SHcNtmeixC~$2{Rw-j-O}h2pqSb&Ib>? zr|mT*Mb@$FHYm=_&fn_JW~VGT9qG*IgrD-N*nlkv-aik?*0 zTjzPJXU5KZNv{`l!U$@)%*3O|VI$o=*>#QtR@aOtV+c5nB4axk446p$n=_<_ZC%H9 z7YKoY8t?T?<*=r}EvMhX7gk69olvEb4c1huaJ!x&Ia|A+FzruTIzfth7d}_noBKqV zHj2!b4lEqnSJqG+abh)ENcR!Qe9Tg_s;(Ry77C9EAw{n8{8h4Sxs^6$Ju4S7YTEn0 zO;R#BwfD1#v0fl@P&2x6IIx1PHtjvD^N_YJSl5A+{3lhxRuzu>Rh`hCXeJ8>O=eRy z)|CJ1L}N>mOgKX3yj~loB%HHqpSB=(OQ#t6W4J|avI$J%jilfw;K&&kWCvxLz2C%4? zPk|9HWovu93~D)7wAT+=6ym?FF|p7uMM^RwI4~lkUFmp-Oor@4WFq2Cr0WoZ!MBEv zw*7V>E=$JnMIbMWD;_@|M|Zri(yHCcO(G<3p>+sHBUe)wRVRiTu|y-zY2n z$TF6yu`%yB%PorHH$Xm^C(ELwf_G?}@Y>fnuJHP`{OO>T|A1XhY~r}HNTW2^zu%=S z5ZVRiwP6JYb(IoTQT!rE`Gv^npleK zL9Hy&rMJ8q70ZRCJ!ZE4zN>qetRf^J_B46^O;T*Ufxwzr=rn6G0&4ldVffDeM=s?ub!kOhXbL+u1;V?_L`{o zpA?TKZqTx630$veF$R87VMFk~ZmNTo;XviDhf0KRa(!GJtYl9!c6t@{s2x9x{uGzc z78DSdQmC&*sTjrbe)AK4P#Tklk=k9$lXM0|caJSmS}QVu z#9$FD^!fKvXRfpLBd(S3avLo3EKFo?jN-q&Gez{1Sc8)bs))nuFPoCz-yzx!-X*ZZ9papDdDTFgS~jy2U61er3{oDN>Q{7_O_J3lnB?W(zm z>^OO&w068DwW|54sl8rteR4z)@vzpMk#Sb=sH~Ds%Wl_&n7GZ0Usz=Z4y_F<3lciO zX!ggQDvA8v!D-31hj>$awq8sua*R%!e?JalA>drR^Ns*1v|}*-|>(Y1}m`Rx>144s=nhiZyfHgy%>yv0jkv&VB)Q$H919 z0UM2i#|A_O?`ncgtxn1Nnn|N%TduLuUGL>wqZIlsb(U9Dc zPmrpba`Wt1YoW5Q0uh4uCZJ)Wi^|k?{=pF6G1Ir;O^eN(!12%Q|{w3@86Qi z5NGE3^bIqwRPFbQxJTL(8V;h+L9svyBIM-rV%>-7zl#(QfhS!-#)HxhyqoQ6C#i;m z5iY$PXU}n?=3$BgF@7TlP4J&?7{P6vg|GZ3_ts2)o{G#%j%M1F!*eDh$K>Z6x`$7Y zRd6o_R;9=-u#Kz+g2i&}_f)bAevcd(mRH;#!@1b5zhG!;C3gmrzKevEVAuWVorh#d z*Qkh{s-ETWuNQ|kOcxsTYz5WD#iM~tsY`V`W&KLahmK{%F&{~$b_}Q^@5exsUEhLW zDkEN9jmz=em3-$GCw6L&Qo?a0w||FXbP!+Odm%l8b;pI4ux=fOvzwAR8BfN7yKq+? zMHTWW4=X9~Sn)pWCgMP<5N$71+|nr46;tP+yl!)zXq{-kK=-SscyDHEr=FuUp=CS1 z-~eGCfy*+VrZ}c+b(1W| z-xzFW*ktmYPt_{t!%|lg4?p}8S$MxP1mcinpE{=X`0pW#$lb|6ZspaI)5;NUuRav| zp-@wOdlR0Pg?BRP!uu}8DMin9AQ5I?feCn=e4oX;2P0)RFH@H^t#B&xzf}c0uC&~S z^`H>>Vcq0p$VGjaP?r*PVAzZ7r+dp}*vTE8;jfyK74k-nz`yJhth(OhG-VL#?$Ie| ziBwMSq_UzunQ-?GfC5KzD#p0lNoE~-+}0P+LVM6Jcj<1rzZqP3cQ@;B)^+6ymJ@eh^O4*y zvG+v|DwFimaxu3WL%aFkPdVyTX$x3awll)vp{ZFsS^6JvqYPtA`G-yvE-bD`sQ8mv2kEc3DwZ z3_LdN@giPGOrnmJ9{WVVZ~I@v(QC4pD#8f?F$6>zl8+AUe(c|qxC$jVGyii;6{F{h z3UM&j4PGsehbBE`XONwNL zyW=Y>|3V)EPBM+t)8;C{Q^m}Y^&!1xHqM;-vN@Qw6r@OK6ux#mG2%OX#=gG!a%^uLVKYBst}Z~; z1ts0jtro9$(J*kqAdVacZVj%C{5nrI_~IlrJKYdEhDgz2pWW|y-cBV&15#e&@2Q;F zi|Jqq&3{ID5)=Zr>BlyIJ2i!l`Ad8n|0r^Y>i#}?o*eDk*(%P_eW-2M*9jXx)v*{|U zqOj_C+yB2fkqJt_luoMOlu1^o-bhRm?(4oq+toa%NDuvgu^AJ&s_SbFzsU~c*Nlu) zw+na9#Rp{QM?I-=0Z+i|>xYXb3@Sf{;38rKesdorz6t+zo!7S&Z_4uz82ta1;6W0p zE0-SV6v2q=#kl#i-(T1Z?J{?(}5 z-Db9TNw%N0p~$T^ZXP0N1T9Qmyh=aYy@m$C# zlFPkhW-I@5@p=_zq#a!5Rr1Oq%r6ul_Vpki-Q@M}1qZ_Q16q=JxJIZR3~b51eFG*T zzB=2qwf-h>QrgFy&O?*a&uTL5Ff2hQt{2Y5$R%$^26b}`(2q9sS~#dSB=ER0FAJ1s zr@uNbITQ)7Zwf6(#N0%U@5aJHf)2&$;u8$z<- zXn>wi5%}Wp^k5BKQgWUQfTm29y(@l=GrCxaILB|eS(?x0pN}IuQKX`t2TNXiVq)4Y z=Je5r38Ru0uWdewg{j#TG_P6?RYjtxK-Q&YwW8xAPSqO(gn=r`O2zR9)1ubr)A;3x z8eSCTR}tNGA(wt0ghArb)HJt#G|?vGJE$hQLZiOk z=`Mafx<65!aBIU+1-*PF#Z%TvPWA-ohmdmGDYoyG!Pdpf5nAZfZRnOu<)>4gt8brk z^Yd%W&i<+}%VUGX7x8ib%uk6&+(SCoSqfAGgv#H;s7Du40f!56-QOc!5D^<8^@tm0 zaW3UT&f`z7SU5P8Qf@jGIt{C8XML`kyo>JXa=2W6?B>fv!TzA3&uL9FGYwWmx17n# z@YbE?ywY@d59iDQstYA1-IWco7~*?~G88=Ev!8dBbt_V@wwg5b&1`L%0?U(NN}3Zq zqcvVjjt>=B@r{Ue{ZV_QeOfIBZ!`JRCq}F#MQ5^-eQ39cTtaMrT-OzTQUb!Pg!n=o zjVTw9GGN_lzT#Q94i zz2;`nKdRI1GJLr@uvBl?Y-mseyYAV21wRGL)5gJY>OTI4$!48?-p3u7w#Jc2;;AzY zihd7GxS<}OP~82}+na^mkIPN`Zx@@@bMvJw^>j(}KD=Knj43ct>aFaEZ4L>%F^XKY zMsV%^$5l}^iEETpo=bfWnB{ei#Wry-bGFOaP$cbT+ttPWRO%U5SqOuRpE~NsjXAKS zqm3{f(3TU_uKuo-B1m}K$`*ZR#~gC{9I*G(e)@Z8${Ye|7eRI6f7RqbsrCQ(gX^9e zlh4Vau!C1^UICrJEewg+qW8w_NzLnI@HY7J7X2%pF7o=A1=>f)S{t5enY<_-T94j? z#IT<3okQ~Bkzd#(@Ask4nCNN8O~4}C8gZvGIuR0_+<`M|;}M`ckNQ156Dyb&bzXCb zJqgdd@h4Li)g%5S=R#-&)D*&Ge`R zNxF-P#7NB{IF}uT!f^2QXlQI4f=O=gU|SfJ+vMIvttBXEUe+W3@5cV`4=k>YbE)E8 z_P?y!-K$q5>THXiVFrIX7SNe4j7~gxSZLn+w^d6E|lEyoWyjjdBpEOV|Km3ly7PWs$Sk`Z)#i+u4$P z5B{usLul-$?wvaTI|rWZk!#~U_-8(EsKNkI zBeoNWMy&pao7gP!HYBy{6cz|}PsbdERmH=7&d^R#1p(78Ca0JQP$Bv8Q7g&<1No}P zUV(xb{IVOC`j`%>p46YRwQj;3$mj18&s5{e=71@g9R?W`N6Z*JO}p*nz^6th%1EVUM1ifD}PH}O{tYb?tv zu%Yr@)%~bF1DH{dhzFC1Q4hRy@zol?+4L>5CAUs?Po9h+vJ_TNbDj4q{I>_1_NyC* zMmnysi&YPmTqBha?EgsGtS~dyi4kLfYps~aDXE1!Rol`FqtEnShk51|MFC{(kY_@~ z8c&sR!0MaSSQg{E2lL_Wy1kgJZ4z90yVlu1WmjH_aBLS>$AAljz-{dzT1{aA#mx!8 z%iq@1$=A~dtfb5YJOI-+CBM~2tl|O95tf>Fz{X*n9H7&(09j%9MYDpNcGIS}(_Sc~ z^QL5V+)4pbpvE-Bkxw2_K+U`eW=ATT1IuQ}bym2U$s?D0##Fwh^{XY_>3~up)lxTX z<8^qn?{DwSYLv2(nwEW8*vVA!AcpzGJ`ZP5KhYq(oNuVhOwM8V7SX2!0Q!{53g?8i z7)-6+DX=!zN&KX7-;mI*TA6k|Peb>rdNuR}6?1w5Wsy~dqO-lk)gAZ+$c{_0XN&-Z z)a;_p#3cnQYL)Bt(~0AyNY4OiPEsv- zr&WU)88tTko#MV(!ll*g`%ZggwRZRz3WF&F++oW1$b-cv;`|vRyJ#5}JpPjy^Km(S znVCT1_>NJ3WJ}R}=uMmPLN+^HOyxY!m(J_BQRHWodel6*VBSFdg>ji?w=LL^( zgip@8qlFBI=4l^ooE!x1oodC3g7TP6d$+>#E`8a*ys%5w7@UIb7ZCVLYJIv{gtoAz zK|Y2uC$iG5y3F@~t5EZL88xTS!ibYGm|Wigis=1bZfmHn)V6tVL2-Pyg26gZTQ%p; z)U_21kg6qgj~*ahOY6?$j2y?l5H7Q+LDgXwNqYv>PQ$})sWA_{13P5+9|~zE`Op>y z#>Pu=0ZVzs33yr6;1C(Q&%f(fF>cBNhvogjwI*yV9OJ(AtaZn#y+!B&2C`Svqyg{(Pwjh>sjk=vLi2+c)%Sxwg+H8l}1owbFAF% zFT~L!9_Uu954x3=Sh+itYM{fnNcupfcQJ)R5lZjxpJDmdkOJF^ItDXdWa(*Ua*Bst zO~n4M$vl^@OJ8lb{&qH%;qxrs{P=)-ZGIf9QM{*Bmg?DAGL+Z5gTOYUm!H1OiTvV- zT8HMIJsd!{udMu9i!) zjZBT>V5#YTRN`m?mG;LJoqPQCWSIiOWYd|r8_Dn8jOo=T1Gv1AUiN-M-9X8aay?|Y zj}=kQ=T6-s(FqpcsfG36I^NMttC}RC7BaKDFz6l^vE@(9h!aAyIOMk^z_uuN!pF9U zlcBL7NGV@qar_K>`XQmv%O&K((d=#n{N&n7pr%XtOCp(kYiC_`UUE^GQAYm@IotnD z8Zp-TkFl(MJX!fWWG5sP0Iin~?Bk6xZ$9hcpA$R@mHn~zL1yC~v5B^kf|}5ZXVV2T z)u*ZMu$xGGFtgwZC&6|9CgF{Ta)yNW(!~PZh0bD$Tr>OigY@4hD?T{TElXK}-LA4# zzQ`YtGf`bSPC1a2I%7-pVp&Iq^j$9Cyx@Kn4k2ZV5Yvj!s}jHuG9$y%DE(zBUUUHz znB}3|_&KGzBJqK)u1A07c33uw7V;$M16Hq^qSx9B6mdxnnNYiy z(w{VDD#+0}6AU2|3M{VV36&u&8v#SJxuunPm;E1V3+t3~(TK@X2xUz@T*ILk8U zE8dZw3RM9dWIHESvzJUCC)u+sj%zU&eTkCDW_Y#i*~){L=Ov@)6|(gQwZiCuvn_dY^6$N{V}`$9&%+zYm$EBBB5XukacqN((Bvlmko#taZQn9$5>HTV#R!j0^sE z0wU*OthIU$E>^f_6>z`w!Wq_`wF4stS3R-+xeCED8V63>&hma#HWJ1A1qQf^ohI$i zyOQWrtY+m{$azOWZ3s9fuqYauHCa6;#fAg8U1?^~J5O^c7bwogxsk+~-!8i5mjer4 zYP{4+>PdcLFgVrod&`7g%>k7erkAqvR7{FK6i)&olUHQAYR;FO>wnITIM)O2-+5ld z;0f=VC8&x>A#H48{nd4x?x#IwiHRlbwWa|Kv+wX`nP5czK^ArJ0kpZA zqtAuOPQvF{*;HHxj^T}@c$LF9dGw-&`{nVA>y`P__!}=Pe1`L~=`|?Lq|JZgc$Lk8 z4U}XJNzgJ+rDNJFuI$%u8~*sVX?}&wx_g&?6K>)MBoryS=1z+Pg^3R;B)CmW%a6r= zKBA1UaoWMgdbarY*hW%xQHnt~*4?vYqs(s_lxI&Ihd#8Wn-oV;bVMMB?r02f+I?)4 zE_h*>a20RLjhf=_>IgP;{Ak{UBqOV@p z>NmftRl-K;#HQul%JpHW7$8r{e*q#WMi!9PuJeC$%*j!ECJW=SzDW3fdZn_(*BNo9 z?i$TBRhybjRk}o6+X)4j1XMpi0&Gb12SUD9{1@hVkoeXBi0ShOi85sT0~k?aAML}^ z-4}lVZE*iTxbr_ce2I(y&%L{Z*EIj4;O+VDr%}M%0AP$NH6b*Iq^Hx@eify=cic)2 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]TIrYXFv7jj5lR+S=rZnkn65{N%W}aq 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�%w9Xx|Myp6OOKd3^ zFtR?E(4hUq`{>|D}EDY}ofslHOEx#o;@y?S{ z>n#JK1N;(g;h~>aB*s0Z%w&7x{QJllbG~2K&kyYx(142!2Eknh3~j!R<(7CjJwMDn z6KgrpN3y>NMA~c#mf8^nD`pVLsoxyDno#q6e1r)A&eu)7W`B#grL z8$gnk7~3Es`PqJX4W=1*+Zve-3w}>3)#)^-{@$F3LjQn@OYS=E&5*ZmBr!oIyx-J^ z9(0$#Zg1FwVSbTo_>>Q><~0#wpHNz&MXNa1 zx-{$V*Q2gp4!-wyYLSD>j|_*P6SmoSCLtdvyV;}6qOKg>TyIP;h4LZg+-^q=rK@Yw z5h0xIbSVRkuH{u}zlHtU9Ti_!*Pfj8+2KI{N5+ba%>xmKEJ|&pCu8C$_m$v7M$+5g z1R9t0?91hs?w1lPxc6kZQuV*liJ_+!fm!mecsC6%OEXe2(lIhK-tZe~HGMSQdXnv_ zib5`$Z@9X*%5B6?!(q;XjX}~gHu^YUB8Z8Jd{2Nuz#}$+h=u3mu@dnD5bIi_*fr4*@J<=rJ5v*vP24ia9~LXSu-C35C+(Lg zD@7BsVpbOXG&}dBx6Cq6IHdLrwuU&kr8(MJ<|}7M+xqXihh)pUFGw%f|G)wm%$Uuq zb`O0yz`=C~b>7D9L5SeLg+17NK3Cl>i9J6i$m?hu{%rMn;MYtDN4SYcW>>H6V@Eu% zU}r~731U+xvxv|7_K%8$&zIF2x#MRg%&nb%Oc2eTa)gkGcK8kcz-UZUrre>GZXgRQ zN+ivmeHM0do2eP^pNE@ak2yZ!0to? z_u>%WP8|2JnnmDESr|6{Q&9XrotBnLrKzOV!d0Yikh_{Fm;^i?MY2yIUS0B;F02j`s=ZK=J~3G>BaY;}ItF4I6d`)CV+)dv zxDBR&15!WbH#W5jX*rF@{wXtVGIo^6csrynSUo?VpUGdmgOg*J_2a8!;t=;e^Myw0 zu?vpG_sHkC*Aw~}>jGc;s?X|}{;b2uRsO>Uhpv&0R7LA-({8P%@U5dC(^ES-i<04P zzI%?fx6JIvq<17tE(Ti&9G;sm1yQSz3YGExqlJnx)wcMerr#+XZCajX33?C zwwxsRxoX0P)lZ04*f$tKY<@SagKA;%*=;+t&?O8li)(W;Jo?Vz+;VW-9I`md(E8xn z%BNWJgrD6U`rY`8?N;J{ArG>S8K+z#sWtou zmGKnydAl%4k`w`(ZE$oJoDHN)t` zOyMr5OA{n!44AQpT)r}&?YTK(K)4sPY&VYkRcv6tHEx1RDQi5&_uwY?^fwB5cOAx6 z2fcQOLAoK5sTwn)EJ0(|aOE`AGOTF#pR<5o(N-3){Fqq683gIIo%7m9VX=ahIW@^?xWzQ{ z_GRB4cQlaPa_76;kl^In>l7Ix8uAW-unx@C@D=rzW!(W0A@Tf3oV$X0Oke!ss=2%| zn{BY)lP?4B`Jd8fnNEr_udi!8&NfRO_r=U-`M$h)Z^F4$(|b$9^%W_rcMo;lkW=}uTj}hNTzuJ--|H24R~U6lPde*Y~iu-_nEy#nlT!iCUJ72?7mpyEtuLoW%!N95?*APn;1EWC`?=U5cv^zSf zzfALskgr19B_-O3lczQkTVEZ@ALwaB_dGADr&*&p)^dM=95-LtqZ9t^;q3Ff$X4Uu zHkuAD>nU}xE|9~fG+O$VtwVB_tP!WNN4x$Lwc!2{|Ca>m@%iU`-d%Eo2-x_S3ZI@3 zaHB|xVJ6O>2LAi@tF+(V2|MIpMw|DlJRMm0GHA6WJAjHbYZEihc}%Rf1#oe_%=y z9zv^5Qg^AVV|CQ0p%#9w^78aouYpA#LM*OLRG1FyEyZ0Idg#7NCec}3S|TuYGz`+m zXJGy_1QjejI^ftXjDEbMSEAY|P6CXa#iQ^wd@l<`keQms@zLKkjp?5(%Kuon()y%i z5hE2vM)bIm`-8^t=Vm)z*f_*>XU{0 zfBPhK$S?YYXV^Qp2`50_0UjC-j$JJDcQjx|bf311j^*jk zDWNF0U;KZallModel<<interface>>ReadOnlyAddressBook<<interface>>ReadOnlyUserPrefs<<interface>>ModelAddressBookModelManagerUserPrefsUniquePersonListPersonAddressEmailNamePhoneTagIHiddenOutside111* all** filtered \ No newline at end of file diff --git a/docs/diagrams/ParserClasses.png b/docs/diagrams/ParserClasses.png new file mode 100644 index 0000000000000000000000000000000000000000..3bdcd4d107c8f86fade7febf712f74c6b2730571 GIT binary patch literal 29566 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 literal 0 HcmV?d00001 diff --git a/docs/diagrams/ParserClasses.svg b/docs/diagrams/ParserClasses.svg deleted file mode 100644 index 129ae128ffc..00000000000 --- a/docs/diagrams/ParserClasses.svg +++ /dev/null @@ -1,127 +0,0 @@ -Parser classes<<interface>>ParserAddressBookParserXYZCommandParserCliSyntaxParserUtilArgumentMultimapArgumentTokenizerPrefix{abstract}CommandXYZCommandHiddenOutsidecreatescreatesreturns \ No newline at end of file diff --git a/docs/diagrams/StorageClassDiagram.png b/docs/diagrams/StorageClassDiagram.png new file mode 100644 index 0000000000000000000000000000000000000000..13cf489ca4f372887a669f7f61ded8320e3a08c4 GIT binary patch literal 32630 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 aMni9ne9~4H0w;nmA)OStorageUserPrefs StorageAddressBook Storage<<interface>>StorageStorageManager<<interface>>UserPrefsStorageJsonUserPrefsStorage<<interface>>AddressBookStorageJsonAddressBookStorageJsonSerializableAddressBookJsonAdaptedPersonJsonAdaptedTagHiddenOutside11** \ No newline at end of file diff --git a/docs/diagrams/UiClassDiagram.png b/docs/diagrams/UiClassDiagram.png new file mode 100644 index 0000000000000000000000000000000000000000..f104adb37c95b13a7daa4a264044ef1c8d8b50c1 GIT binary patch literal 49755 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 zB_cw_lC4?Pb3@^UIModelLogic<<interface>>Ui{abstract}UiPartUiManagerMainWindowHelpWindowResultDisplayPersonListPanelPersonCardStatusBarFooterCommandBoxHiddenModelHiddenLogicHiddenOutside111110..1* \ No newline at end of file diff --git a/docs/diagrams/UndoRedoState0.png b/docs/diagrams/UndoRedoState0.png new file mode 100644 index 0000000000000000000000000000000000000000..a1c72f8a671a41656c3eac3c4cf918449617fe77 GIT binary patch literal 7172 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 stateStatesab0:AddressBookCurrent State \ No newline at end of file diff --git a/docs/diagrams/UndoRedoState1.png b/docs/diagrams/UndoRedoState1.png new file mode 100644 index 0000000000000000000000000000000000000000..1bf9fb9e2ca3a7a4e0d681aa36ecf88a1f684722 GIT binary patch literal 8361 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 gAfter command "delete 5"Statesab0:AddressBookab1:AddressBookCurrent State \ No newline at end of file diff --git a/docs/diagrams/UndoRedoState2.png b/docs/diagrams/UndoRedoState2.png new file mode 100644 index 0000000000000000000000000000000000000000..e413586231a18b267c364ad69d3dc19ed338118f GIT binary patch literal 9128 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 literal 0 HcmV?d00001 diff --git a/docs/diagrams/UndoRedoState2.svg b/docs/diagrams/UndoRedoState2.svg deleted file mode 100644 index 29aebd1e8eb..00000000000 --- a/docs/diagrams/UndoRedoState2.svg +++ /dev/null @@ -1,92 +0,0 @@ -After command "add n/David"Statesab0:AddressBookab1:AddressBookab2:AddressBookCurrent State \ No newline at end of file diff --git a/docs/diagrams/UndoRedoState3.png b/docs/diagrams/UndoRedoState3.png new file mode 100644 index 0000000000000000000000000000000000000000..1a3796d47d2f9b59bd59513ec974a76326897441 GIT binary patch literal 8529 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 command "undo"Statesab0:AddressBookab1:AddressBookab2:AddressBookCurrent State \ No newline at end of file diff --git a/docs/diagrams/UndoRedoState4.png b/docs/diagrams/UndoRedoState4.png new file mode 100644 index 0000000000000000000000000000000000000000..5170761c7107c68ddc1712c05ef27b1aafcc0357 GIT binary patch literal 8544 zcmeHscQl;s+V3bK;T6$ROoSjxw1^sl=wUV=xRNh!P|i61_z4W%MqH-g_5q z^fHJx&Xc_RJ@4Lot$ofq>#T2m|9t;&uY2xtJy-c%*ZsSKRh4B)h^UD`AP|YXoRm5U zgnJhl_g%*Y{vJNqG6epyLZx+~7LHCHuPv>hAX!TXOJ_5vMHR(pH!@jNM;C zjv`nh)I9P*?t|N&zEsDYM!QS{*;n;Hiaz5rtHt6?C9ZimTFoV7#j)B)R$10xWUz6L zDVE?fu^X0LYq99Y6}kg8VzH6p{aB*8xA<7hQZ@JbD73Q`*~ELT(!C*4g7AXW&vU92 zE2<(EbPtEt&Qx;h>^w@qBV;WQ|E)}by5smyf>wbTIt-Qde$sdEY;6Aru zVjT{apQR;hH9Y6;hO5{rG0sDxNTW9n)N#dMidmM-ar$^huEqr(g7-caeHkbUPwUZC zgZFvIMn{rXE7pgRSv?JhwOViN8QUUuM02?;NGc*Wl4|r zn9xxd9FPx}t6q9DDY_`>pS$GZOMGEelo|;4$eq?JXAkP><;@(}&dtp>E{Ze%?5Gp& z^fqH)C+a!P2_(8Ks?`H^(Lx;=r ztRL=#Z^@om5#7Ht!!v*AwZ?-#uJL{8{aEwSOZ*((5N-anXDp&Tapd>)C1L#w?bmxL zFpKBZZF>iHMIXvlrKdou8)EY!wR?^i*cdTl~w$i$d=@KoIc}XtWw~rIR zN4I8!%Fs2v#9Q>3eWlRklnMepkd>Db*K{}Dp1lF3lCB}#Bc7C(_%7i~XE4#KNKWVb zo&NbXOAkLkQK`W0qF^b1~-NRv>p(8-RCFKmCm6T5)yj)^x)$3 z&^dni^q`xoZ13AU%Cu1>>kGLy?VPNA8|e`T^ROu*W716$ZNxz*Gdt{SMne*;(UU)tC>9BU(NGIhJUt%Wb52h#AyHl8(eqi65GOScWNLGE<%?V7uo2I z(Y(6%k$&ycZ8%411UJOcp?Jco_~P%wkFF|#4dSB!PSTU*=F?z|5$u8WYXQGHH8`}T+clH|GbEQFfY zYp=P3)<=<$a>Zl#NHASogjGSk2MN9(4%?nWMn?ywliYjiPcxFO_D+Q{Eq|cWaULvb zxW?X3FXDL|4J@0h_dGOgv3=mRCte~6hr`$U65FWHioImCH3A@2zP`S|I=KSL_cy7| z>kj*b^HC`&3*o{$x8fhb*B`=~WIqNKsH?miW={5sObl_Stwe6nEie?%sk&k^kPUB! z1+^htg;==jbc_ADi(%qtpl3V8j5|hpBqR5 zc9^N!@A<;Bw2~$;?-f-O5D>s&Shbgx?41Vg?&?Y#kx;^LN+>~Fb8>QcA>Q8Dp$rI` zO-yUZ^G0n#Z)8G(*FqCc4Q!_B4OD?vAs0PX08TC;iXEstFKRdoF*Xms|E%TdK(Sft zR~%vJ`imkrj55FN2#b)Cyu4X~My6uwFq2Z;z*-vFI!Ef8AMIP@q7p0ecS5o-DeLZY zbso~v(pf6Wa~1Z}h?ChY7@iaTCts@W7>;z`r{>?T!_HcWxdvDRY)T@ip(AmeMm4Iv z$J^6w3Ph!vlckmrSXZHbnN`??EMOd|+1p&k>;i&`!NI{JQYY-%oO-3-)RG7$SmP}L zJ8WSlN-P}g%q=V?ZALlC)I`(AWWuQTsbQyuMzs?*#>Nj40|Ns~hxzTN2GBLGo9d~tZJdcODdH8`(?Ogn&-8Oe+N9)XV2T@H$TF7trXG+B?;-i7N+ z?(*iVQ{BDGVk|u$-bSqT@ZrOeu(Yz71tsFWyIr}+xPGHT z=At=n`lc;O<1!FwE^B=mBaggovD}GNq~Dd_`T4E?9LdqB6BD5*dB-{wuw)}6L-0sU zTT;LLRf*4)Hwx@a5saU^)$|tcd6%5~w>LG!LbfEKSgM@$$CW)y>N_!`O*g9@{R> z>V`QbMm5B1kRZ6%_*hw4H4l%*O^EAXZU{OI3LrL)7vIx%k&OG4Kf3JT1l;K6imZV- zp?z4zJ535Isuh;Tu$C4H_;p+ACk-$ET&I=U5%C_Fi=Cu*Z!TnIx0HaB$#6ka2QyW{$^I&U@D)&X4mW zgu)GgMd=QUi;JPRIfUStb@XsnS!wBnWAG%`Gy?+zYfv(K12IS(!oiP#hm&==j8X@RzLR^x1tw)1hxPpq+?Hu;zAy)09a(%L0{uCwhX)09BW4L zLJPVz@rnL>u2$YMK~~h`oM5414ZgAEl@+zE(2x*wv4@LC_wL=JOr_?3efQR_7xNxK z{Otkpa$nHN7nS=%)8D!C7dTT;putc@MaB6B1P>379>oedoXboJ@JZ-iJJ@lLeF-WM zS|Kwno@;iMN{{e@--B=DWUZe!OyamWJ3nw=z&TDf0D@fooR*RL$!B;+I8AFHiQPyx znMn3nfkA)5v#2>rJq>BL>!QT*Kw-!(P7mZj$VWLKACfbYgFwaj!TA53)A>x18d=Kr z*FYdg9YaHQX5Y6B7aGd_H1cDywi%VjcV?0WHY zzr>=0-)4xBj*gCr$!dKdm5}toazS)IlXAiY;7AJ#3j+fK-@bhVka&BpKHd#f47N{@ zrN`kKuXeGXO55Mx2Xxij(-R#}q9GB>Y4kPo3y(Fm2{JZzyx2@Khn1cE!<@hF`v%0h zLct$)*NPw7CsfuTP!ymUeIP&QnKX(!b zytmg%s-c*r#MXdctjmR|x7wO05jgPmb^EA%uZy>E*3py(P5g0Xj`QWmPD{k?P)#Kc%D#6_6UO$U9xjMVMyZidE zm|+#Y8gd_V0#ku0L9Q#FClFzrrh-u*2eE2ozO=GhU0#kxBB>}T0if(yJd|MY2R_Om?gLc`8;=*EcrYjb43=y|?w=RK37 z!+tRVyD`Q5HC@8$iWwl$oEC#%>0yU*j0-D6LqkdKOTqsB{@K|qVq#)v^P-5ee3M4w zEy?LB>CoGJwj-uyiCQr+G2stHY8+;3#Kpxi)FtL^L?x)SJUKJ7hxK?Uo8dst4?#h4 zii!z>Z6&|w|e7JayR^DyblslR7QA{PtNjMWx{Cy0cKplwh+Cy8I=ajL+7u#Q5XP+%-Ji;DYA<*wzL)PS=ov)Fg9IyGDl{N zF?dbs!wL{>R29*)AvqkD*J9=zu0eLo+D3-#e$)k*%nT`~w8WGeaHBHvn}((fOwovn z&-!rt1Oe_CgQ**u$Qkwa*_$+R^Nl{|dwU;?ix+V4guJdUaZwSv3JOE?^tRG6fk{Fr zMSH5y<~jl;ff7M{l>| z{H+Sir3*(5p++e_IJO>nFDq!nw&9m09dKS-N~Nm}Vd$%vIHBW>(SG3B)I5}jEG$4~ z{H5EjpFgU-m8&C>$v)U(?@J-#JEB^K7i3gIL7|~N{U&M0%Pa3lWke3-#yez5lmN~BLkweb@*Vf1(f5t#I~+e8 z>P*q23gg-;PZ~(Z&p)wwP>6(aHD1iStcgxmI`$d4p^~_NkfGvri!rttc6OFFf9drp z*1a%UqwwWQ+Z{rcgb9=U)ZthYZ@KNx?nJkWo*u79!k#i~eH`Kj12)KCwnk$1!yh1g zE`FZ3wD`sI7YKVC;H~u+EhM|Ng{+ZN#QXc>w|9&iRJ^|5$oQ-py))}WNtmhupLRva z2$TAc$sl zO;dcLm|SDo@3j)1F21iMB;C=hbg)1BU{qT%RlF$u1MYf?CL06`i6O2oKlR3&)Uut; zw}r}vim=&|cRY9Bn;LdMnYA`D5NSRe3YA8v+CGYzV~b5v@Ww{!qx`;6vm=iFDK^lb z25|?vkTKo~@#oBN(u_(H?6VwJwoTHJa@WngFmQ+0ep`1w>+|Q!7&PyjkCBn(Qz%Kp z!(BJd;Ois*O4eY=6Qr0u5e}%o=#!aMbh@cipu4MtwQ=f)6_j?6;8`6=nLVa zp$rr6(9tq$1Do64p1^m!i1!sxOVtA21$Ta;3yq4hzVcdkL?5qnXl=bV+*KWL5cT%r zwyWPP9D_2~@z|$3%<9|4-(PW4zJj8sha0ahZ|*Xb!*Od#Dl;M>T({p1>NXFRaVHvA zVlY;~gPajztrP#}lz`3OSXL6zpq!0t9sK{Y){ZfvBzN?4lLA8-f_A+qS0 z5+E-b=>Ab`Hv5fQ$fyw;TQ6auP_{SC^C}Gw`?OC%QBkngC!Cr8tU|gVUG_vC0`}RO zAiRhS**Im_iVL@Ym5Reg7COk^Gny$0!TuhaV*niafW;t@da@?`cewh~Vg4GPmZ zx@y*Cls7Vvb$@(lpN-8oEfKu?GX4wJ1WAbi-I5~mpi6O|k`+`s0`Vui>n z_u4FA4%-}UMu*<07caALo!{#)ACR)}KAt=zBSY~!T&#>5u&?mI{eBMSR$#j9yO98p z3D-NI?{Ga(G8skr>_lX^&5it%6No;ASF&(ogOW3|RLEkL;2mEpm0?@QMHQJ!o~rp~ z87Zc$BC>CYtWP(I3vTf}Bbk3m5;vliHQt$@FD8ey?d;TJ#Nzha*9!?ET!O=IT6bVB zm$-bY_n9DWj~bS>N4~Z9eE+N*zt!)P^!@xg0Lut;Tbd|Ki79%rM1bS+;#36yhjiw4 zyP4bUBEk*9|Dv+l+R9Y?7ezG~4%5-xwawAcTd_)K1>+`HLScM4S2XhP2sp23ZqWM2 z1(NP^ii&E>d{~!Pf)?8hL#QqtdQ;?$T=fg0qgN* ztJ}f>95_``W6QlmxW-l8FX~B}r&nf0K6_)9w2`f0mn81zXU~%c@&1j=6C-T?9FSRC z&W6}3jm#d!7*ij@OwPuQ!DFSC?`VCzRO)G?i zoZw)kp`rHB?)Ix&#d>8E8IX<;mBoeT)5|jyDKT;85RmgE->5qm@-d%Z5$mtmkf# z-T2Mm;2T-7c34Di8vMO)W@eEohM@gQ)xXPg*XZ0%%*W@n=<<)aZ(uBdpE<6_TOEc5 zBI0#nkGVuP=_2DMaAJ}oIwKr6Gw#sdWX9g@dYe&H@wdyYz(iCX%>GjbpHPRf{fF`- z#F3S7##U=WT|0=Ur63^VL{CfiZ&h7HrA&PNFRD=Ltk5bBZl^AX)0O{Tar`CkTnWbV zl(ryvL;fm{e-`%dMT@iV<@Zock!3wc6$Tn5u{U3zF9$_|9aIkJwMad*i*Y-o3bU*H}GmEdrYjxfgQdIIRXY-$a%MU{z z=A`o=ivkrdH;ZVI@i=v#ewUk?V}qEjep{GX@bZ=IY<hiJ-dhKQ}AvSIV+@# zitSYyYsX}afq?~oUbT)8bG+71ul(@St=ueaZ=wan@AvPEqGi=W_s2}+Swln%mcOT( zcv(Mz+y#DD;ZI0{@x4NR-|#t53RhGbyymD(|3%CPs|`vP50)y#-7}_K6amU_FQP}} z)kICxS{C%IoSc2Qd)(1-%a1{hvV+FJV_Z*(5hQxOkpbt{!%v`JC(%jJh**lXHKP zh;!pcs;G#sZ2$=&j4_}E;PKqn2h4!30PtJ|h>~>5r>_Q54DNEGG$OzPg(i*O!fre4 z03pf2G27^KW#Cv3@W9{nQL&+lu2#8DH+-okoJ?iSSuU1BxmfTuu(zg)zHnOvYX0D! zlB1!f)>l=f8#m6XH+-4P1Mu^p{3bvVsF`8n1gpNMMkkCFkB~JcMxDlh&K7` z#-Ik0L&L*SQBin!c=5b8r7t_l_YYh*$6U9k_~_~B`T39cJ7}$|n-@b)?x0>zMiwIN zy0xIEgXyvz5wx_oZ;zGR40lE`CyV*arMO6+^aP3EJO=?fm-{1to16Re^i<*piS0K^ zyY(uqJnb)EzF7As6=bh=b2a8`Wc76+*&qrEu-!QtTG~dNVWzof4!J~~)pu;f@;i|^~0$r_%U6C2g8Y{CtbiJ0lt$t&)v0TpFR~gpbrum*%F>} z2t3YPPG~Tk8-usdkp$+Nu&26w79egZ^r_ z5RjN>ZL9#j3!vBZYAjz*RrOXai9&L|{Pt_7{txgQFHkLi+RhgT@A0WHdC0kW7`4i1 z96)#t4XNiustF%bqvS)4pSHBNPL{x*A=GIPR(oTw z-v`UX$r(&zzGA~s<6vyPYj0vIXQU`Q{;yaAEKk9x3*rNg(oK`118S|8cbzOD4wF=h=?o< z)8zt0N@Tjyu@SbdU$Yn)8QIg*0|XpU{gh}Q9qi234qLOcvp;v;7y-CHfH1Ot65A}o zvyq6W$@VL_`6$(^w#JKS>;3Qv2>2c664b9}MEUvokuk`O6c`B5(=YW2?;2J*Bu+|6 ztWS$vTLQSl@87=zWu^3HV5$;Xl;D}=pCTf`HSAE7z8-|krBY)RI@x9gGM--6#qXE^M3~~LR|(iRo@MN5<(CthVB<( m^yoJWbmOo7?0=rV5L>ed*&6IS(+7xPki4|ARH1~a-~R$23_BPA literal 0 HcmV?d00001 diff --git a/docs/diagrams/UndoRedoState4.svg b/docs/diagrams/UndoRedoState4.svg deleted file mode 100644 index 38bf6d9b03c..00000000000 --- a/docs/diagrams/UndoRedoState4.svg +++ /dev/null @@ -1,92 +0,0 @@ -After command "list"Statesab0:AddressBookab1:AddressBookab2:AddressBookCurrent State \ No newline at end of file diff --git a/docs/diagrams/UndoRedoState5.png b/docs/diagrams/UndoRedoState5.png new file mode 100644 index 0000000000000000000000000000000000000000..c1117e601a1d388473d370f00f120ec3cde4e8be GIT binary patch literal 10012 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 command "clear"Statesab0:AddressBookab1:AddressBookab3:AddressBookCurrent StateState ab2 deleted. \ No newline at end of file diff --git a/docs/diagrams/UndoSequenceDiagram.png b/docs/diagrams/UndoSequenceDiagram.png new file mode 100644 index 0000000000000000000000000000000000000000..9577997ff2e262b0d82857d1951590f763dc96a3 GIT binary patch literal 31151 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 a0YlO?sflGLogicModel:LogicManager:AddressBookParser:Model:VersionedAddressBookexecute(undo)parseCommand(undo)u:UndoCommanduexecute()undoAddressBook()undo()resetData(ReadOnlyAddressBook)result \ No newline at end of file From 9ca511b0c0312bcc45d0ff477072144701f471b9 Mon Sep 17 00:00:00 2001 From: Huang Licong Date: Fri, 6 Oct 2023 00:16:26 +0800 Subject: [PATCH 026/301] Update README.md --- README.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/README.md b/README.md index 67db3628e14..996edc4dee2 100644 --- a/README.md +++ b/README.md @@ -18,3 +18,6 @@ D.A.V.E. is a leads and clients management tool for student financial advisors s ## Acknowledgements This project is based on the AddressBook-Level3 project created by the [SE-EDU initiative](https://se-education.org). + +## Contributors +- Licong From fdb1dfb6d15c146aa6f18efd9784ae5d1fda48c9 Mon Sep 17 00:00:00 2001 From: Jie Xiang Date: Fri, 6 Oct 2023 00:48:52 +0800 Subject: [PATCH 027/301] Add PPP --- docs/team/jx124.md | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) create mode 100644 docs/team/jx124.md diff --git a/docs/team/jx124.md b/docs/team/jx124.md new file mode 100644 index 00000000000..5d288e59aae --- /dev/null +++ b/docs/team/jx124.md @@ -0,0 +1,23 @@ +

    Neo Jie Xiang's Project Portfolio Page

    + +

    Project: D.A.V.E.

    + +D.A.V.E. - + +Given below are my contributions to the project. + +- **New Feature**: + - to be added soon. +- **Code contributed**: + - to be added soon. +- **Project Management**: + - to be added soon. +- **Enhancement to existing features**: + - to be added soon. +- **Documentation**: + - to be added soon. +- **Community**: + - to be added soon. +- **Tools**: + - to be added soon. + From 82e94c6adaa064d467d8a1e95dd983ca05c22e05 Mon Sep 17 00:00:00 2001 From: tiif Date: Fri, 6 Oct 2023 00:56:55 +0800 Subject: [PATCH 028/301] updated AboutUs.md --- docs/AboutUs.md | 53 ++++++++++++++++++++++--------------------------- 1 file changed, 24 insertions(+), 29 deletions(-) diff --git a/docs/AboutUs.md b/docs/AboutUs.md index 8cf4ab68e9e..1ca8ccedc34 100644 --- a/docs/AboutUs.md +++ b/docs/AboutUs.md @@ -7,55 +7,50 @@ We are a team based in the [School of Computing, National University of Singapore](http://www.comp.nus.edu.sg). -You can reach us at the email `seer[at]comp.nus.edu.sg` - ## Project team -### John Doe +### Gary - + -[[homepage](http://www.comp.nus.edu.sg/~damithch)] -[[github](https://github.com/johndoe)] -[[portfolio](team/johndoe.md)] +[[github](https://github.com/garylow2001)] -* Role: Project Advisor +* Role: Developer +* Responsibilities: Scheduling and Tracking -### Jane Doe +### Li Cong - + -[[github](http://github.com/johndoe)] -[[portfolio](team/johndoe.md)] +[[github](https://github.com/LicongHuang)] -* Role: Team Lead -* Responsibilities: UI +* Role: Developer +* Responsibilities: Integration -### Johnny Doe +### Jie Xiang - + -[[github](http://github.com/johndoe)] [[portfolio](team/johndoe.md)] +[[github](https://github.com/jx124)] -* Role: Developer -* Responsibilities: Data +* Role: Developer +* Responsibilities: Code Quality -### Jean Doe +### Yu Xun - + -[[github](http://github.com/johndoe)] -[[portfolio](team/johndoe.md)] +[[github](https://github.com/yuxunn)] * Role: Developer -* Responsibilities: Dev Ops + Threading +* Responsibilities: Testing + -### James Doe +### Tiffany - + -[[github](http://github.com/johndoe)] -[[portfolio](team/johndoe.md)] +[[github](https://github.com/tiif)] * Role: Developer -* Responsibilities: UI +* Responsibilities: Deliverable and deadlines From b57942a2a29b252b9b328bf41c7c542fdc72e790 Mon Sep 17 00:00:00 2001 From: Gary Date: Fri, 6 Oct 2023 00:58:49 +0800 Subject: [PATCH 029/301] Add Gary's PPP --- docs/team/garylow2001.md | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 docs/team/garylow2001.md diff --git a/docs/team/garylow2001.md b/docs/team/garylow2001.md new file mode 100644 index 00000000000..613dd50a0f8 --- /dev/null +++ b/docs/team/garylow2001.md @@ -0,0 +1,35 @@ +--- +layout: default.md +title: "Gary's Project Portfolio Page" +--- + +### Project: D.A.V.E. + +D.A.V.E. is a leads and clients management tool for student financial advisors specifically in NUS, but can be used for all student financial advisors. + +Given below are my contributions to the project. + +* **New Feature**: + * to be added soon +* **New Feature**: + * to be added soon + +* **Code contributed**: [RepoSense link]() + +* **Project management**: + * Managed release `v1.1` on GitHub + +* **Enhancements to existing features**: + * to be added soon + +* **Documentation**: + * User Guide: + * Added documentation for the features `view all leads`, `add meeting time for lead` and `delete meeting time for lead` + * Developer Guide: + * to be added soon + +* **Community**: + * PRs reviewed (with non-trivial review comments): to be added soon + +* **Tools**: + * to be added soon From 47a92c414714e698e95fcddcb3e72a220bf3885d Mon Sep 17 00:00:00 2001 From: tiif Date: Fri, 6 Oct 2023 01:27:09 +0800 Subject: [PATCH 030/301] updated default.md for sitewise setting --- docs/_markbind/layouts/default.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/_markbind/layouts/default.md b/docs/_markbind/layouts/default.md index 343b9f4af3a..b6eae2d30a2 100644 --- a/docs/_markbind/layouts/default.md +++ b/docs/_markbind/layouts/default.md @@ -8,7 +8,7 @@
  • Developer Guide
  • About Us
  • -
  • :fab-github: +
  • :fab-github:
  • User Guide