summaryrefslogtreecommitdiff
path: root/docs
diff options
context:
space:
mode:
Diffstat (limited to 'docs')
-rw-r--r--docs/src/SUMMARY.md4
-rw-r--r--docs/src/api/README.md2
-rw-r--r--docs/src/api/statemachine.md111
-rw-r--r--docs/src/gettingstarted/building.md0
-rw-r--r--docs/src/gettingstarted/debugging/README.md6
-rw-r--r--docs/src/gettingstarted/debugging/fsm.md21
-rw-r--r--docs/src/gettingstarted/debugging/fsm_example.svg1
-rw-r--r--docs/src/gettingstarted/debugging/logging.md8
8 files changed, 113 insertions, 40 deletions
diff --git a/docs/src/SUMMARY.md b/docs/src/SUMMARY.md
index deac26b..1754d60 100644
--- a/docs/src/SUMMARY.md
+++ b/docs/src/SUMMARY.md
@@ -9,13 +9,11 @@
- [Package Formats](./gettingstarted/building/packageformats.md)
- [Building for release](./gettingstarted/building/release.md)
- [Testing](./gettingstarted/testing.md)
- - [Debugging](./gettingstarted/debugging/README.md)
- - [Logging](./gettingstarted/debugging/logging.md)
- - [Finite State Machine](./gettingstarted/debugging/fsm.md)
- [API](./api/README.md)
- [Language Interop](./api/languageinterop.md)
- [Architecture](./api/architecture.md)
- [Typical flow](./api/typicalflow.md)
- [Where to find docs](./api/wheretofinddocs.md)
+ - [State Machine](./api/statemachine.md)
- [Let's build a client](./api/letsbuildaclient.md)
- [Code examples](./api/codeexamples.md)
diff --git a/docs/src/api/README.md b/docs/src/api/README.md
index 8684c9c..64e7ee7 100644
--- a/docs/src/api/README.md
+++ b/docs/src/api/README.md
@@ -1,2 +1,2 @@
# API
-This chapter is an introduction to the eduvpn-common API. It is meant as a high-level overview on how to use API and build your own eduVPN/Let's Connect! client. In this chapter, we *go* over the basics of how the interop between Go and language x works, say something about the architecture, explain where to find detailed API documentation, give a typical flow for a client and give a follow along tutorial on building an eduVPN client using Python code.
+This chapter is an introduction to the eduvpn-common API. It is meant as a high-level overview on how to use API and build your own eduVPN/Let's Connect! client. In this chapter, we *go* over the basics of how the interop between Go and language x works, say something about the architecture, explain where to find detailed API documentation, explain the state machine, give a typical flow for a client and give a follow along tutorial on building an eduVPN client using Python code. At last, we will also have a few code examples that can be used as a short reference.
diff --git a/docs/src/api/statemachine.md b/docs/src/api/statemachine.md
new file mode 100644
index 0000000..260266c
--- /dev/null
+++ b/docs/src/api/statemachine.md
@@ -0,0 +1,111 @@
+# Finite state machine
+
+The eduvpn-common library uses a finite state machine internally to keep track of which state the client is in and to communicate data callbacks (e.g. to communicate the Authorization URL in the OAuth process to the client).
+
+## Viewing the FSM
+To view the FSM in an image, register to the library with in debug mode. This
+outputs the graph with a `.graph` extension in the client-specified
+config directory. The format of this
+graph is from [Mermaid](https://mermaid-js.github.io/mermaid/#/). You
+can convert this to an image using the [Mermaid command-line client](https://github.com/mermaid-js/mermaid-cli) installed or from the Mermaid web site, the [Mermaid Live Editor](https://mermaid.live)
+
+## FSM example
+The following is an example of the FSM when the client has obtained a Wireguard/OpenVPN configuration from an eduVPN server
+
+```mermaid
+graph TD
+
+style Deregistered fill:white
+Deregistered(Deregistered) -->|Client registers| No_Server
+
+style No_Server fill:white
+No_Server(No_Server) -->|User clicks a server in the UI| Loading_Server
+
+style Ask_Location fill:white
+Ask_Location(Ask_Location) -->|Location chosen| Chosen_Location
+
+style Ask_Location fill:white
+Ask_Location(Ask_Location) -->|Go back or Error| No_Server
+
+style Chosen_Location fill:white
+Chosen_Location(Chosen_Location) -->|Server has been chosen| Chosen_Server
+
+style Chosen_Location fill:white
+Chosen_Location(Chosen_Location) -->|Go back or Error| No_Server
+
+style Loading_Server fill:white
+Loading_Server(Loading_Server) -->|Server info loaded| Chosen_Server
+
+style Loading_Server fill:white
+Loading_Server(Loading_Server) -->|User chooses a Secure Internet server but no location is configured| Ask_Location
+
+style Loading_Server fill:white
+Loading_Server(Loading_Server) -->|Go back or Error| No_Server
+
+style Chosen_Server fill:white
+Chosen_Server(Chosen_Server) -->|Found tokens in config| Authorized
+
+style Chosen_Server fill:white
+Chosen_Server(Chosen_Server) -->|No tokens found in config| OAuth_Started
+
+style OAuth_Started fill:white
+OAuth_Started(OAuth_Started) -->|User authorizes with browser| Authorized
+
+style OAuth_Started fill:white
+OAuth_Started(OAuth_Started) -->|Go back or Error| No_Server
+
+style Authorized fill:white
+Authorized(Authorized) -->|Re-authorize with OAuth| OAuth_Started
+
+style Authorized fill:white
+Authorized(Authorized) -->|Client requests a config| Request_Config
+
+style Authorized fill:white
+Authorized(Authorized) -->|Client wants to go back to the main screen| No_Server
+
+style Request_Config fill:white
+Request_Config(Request_Config) -->|Multiple profiles found and no profile chosen| Ask_Profile
+
+style Request_Config fill:white
+Request_Config(Request_Config) -->|Only one profile or profile already chosen| Chosen_Profile
+
+style Request_Config fill:white
+Request_Config(Request_Config) -->|Cancel or Error| No_Server
+
+style Request_Config fill:white
+Request_Config(Request_Config) -->|Re-authorize| OAuth_Started
+
+style Ask_Profile fill:white
+Ask_Profile(Ask_Profile) -->|Cancel or Error| No_Server
+
+style Ask_Profile fill:white
+Ask_Profile(Ask_Profile) -->|Profile has been chosen| Chosen_Profile
+
+style Chosen_Profile fill:white
+Chosen_Profile(Chosen_Profile) -->|Cancel or Error| No_Server
+
+style Chosen_Profile fill:white
+Chosen_Profile(Chosen_Profile) -->|Config has been obtained| Got_Config
+
+style Got_Config fill:cyan
+Got_Config(Got_Config) -->|Choose a new server| No_Server
+
+style Got_Config fill:cyan
+Got_Config(Got_Config) -->|Get a new configuration| Loading_Server
+```
+
+The current state is highlighted in the <span style="color:cyan">cyan</span> color.
+
+## State explanation
+
+For the explanation of what all the different states mean, see the [client documentation](https://github.com/eduvpn/eduvpn-common/blob/v2/client/fsm.go#L14-L50)
+
+## States that ask data
+
+In eduvpn-common, there are certain states that require attention from the client.
+
+- OAuth Started: A state that must be handled by the client. How a client can 'handle' this state, we will see in the next section. In this state, the client must open the webbrowser with the authorization URL to complete to OAuth process
+- Ask Profile: The state that asks for a profile selection to the client. Reply to this state by using a "cookie" and the CookieReply function. What this means will be discussed in the Python client example too
+- Ask Location: Same for ask profile but for selecting a secure internet location. Only called if one must be chosen, e.g. due to a selection that is no longer valid
+
+The rest of the states are miscellaneous states, meaning that the client can handle them however it wants to. However, it can be useful to handle most state transitions to e.g. show loading screens or for logging and debuggin purposes.
diff --git a/docs/src/gettingstarted/building.md b/docs/src/gettingstarted/building.md
deleted file mode 100644
index e69de29..0000000
--- a/docs/src/gettingstarted/building.md
+++ /dev/null
diff --git a/docs/src/gettingstarted/debugging/README.md b/docs/src/gettingstarted/debugging/README.md
deleted file mode 100644
index 0b402a9..0000000
--- a/docs/src/gettingstarted/debugging/README.md
+++ /dev/null
@@ -1,6 +0,0 @@
-# Debugging
-
-To debug this library, e.g. to discover bugs or to see how it works internally, the library comes with a few nice additions.
-
-## The debug variable
-To enable debugging, set debugging to True in the method that registers the code with the library (see [API](../api/index.html)). This sets the logging level to `INFO` (meaning show all messages), and generates a Finite State Machine (FSM) `.graph` file. We explain in more detail what these two components (logging and FSM) exactly are and how they can be used.
diff --git a/docs/src/gettingstarted/debugging/fsm.md b/docs/src/gettingstarted/debugging/fsm.md
deleted file mode 100644
index 45ed281..0000000
--- a/docs/src/gettingstarted/debugging/fsm.md
+++ /dev/null
@@ -1,21 +0,0 @@
-# Finite state machine
-
-The eduvpn-common library uses a finite state machine internally to keep track of which state the client is in and to communicate data callbacks (e.g. to communicate the Authorization URL in the OAuth process to the client).
-
-## Viewing the FSM
-To view the FSM in an image, set the debug variable to `True`. This
-outputs the graph with a `.graph` extension in the client-specified
-config directory (See [API](../../api/index.html)). The format of this
-graph is from [Mermaid](https://mermaid-js.github.io/mermaid/#/). You
-can convert this to an image using the [Mermaid command-line client](https://github.com/mermaid-js/mermaid-cli) installed or from the Mermaid web site, the [Mermaid Live Editor](https://mermaid.live)
-
-## FSM example
-The following is an example of the FSM when the client has obtained a Wireguard/OpenVPN configuration from an eduVPN server
-
-![](./fsm_example.svg)
-
-The current state is highlighted in the <span style="color:cyan">cyan</span> color.
-
-## State explanation
-
-For the explanation of what all the different states mean, see the [API documentation](/api/overview/index.md#states)
diff --git a/docs/src/gettingstarted/debugging/fsm_example.svg b/docs/src/gettingstarted/debugging/fsm_example.svg
deleted file mode 100644
index eed1532..0000000
--- a/docs/src/gettingstarted/debugging/fsm_example.svg
+++ /dev/null
@@ -1 +0,0 @@
-<svg aria-roledescription="flowchart-v2" role="graphics-document document" viewBox="-8 -8 2149.5234375 1059" style="max-width: 2149.52px; background-color: white;" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns="http://www.w3.org/2000/svg" width="100%" id="mermaid-1679409544159"><style>#mermaid-1679409544159{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-1679409544159 .error-icon{fill:#552222;}#mermaid-1679409544159 .error-text{fill:#552222;stroke:#552222;}#mermaid-1679409544159 .edge-thickness-normal{stroke-width:2px;}#mermaid-1679409544159 .edge-thickness-thick{stroke-width:3.5px;}#mermaid-1679409544159 .edge-pattern-solid{stroke-dasharray:0;}#mermaid-1679409544159 .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-1679409544159 .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-1679409544159 .marker{fill:#333333;stroke:#333333;}#mermaid-1679409544159 .marker.cross{stroke:#333333;}#mermaid-1679409544159 svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-1679409544159 .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-1679409544159 .cluster-label text{fill:#333;}#mermaid-1679409544159 .cluster-label span{color:#333;}#mermaid-1679409544159 .label text,#mermaid-1679409544159 span{fill:#333;color:#333;}#mermaid-1679409544159 .node rect,#mermaid-1679409544159 .node circle,#mermaid-1679409544159 .node ellipse,#mermaid-1679409544159 .node polygon,#mermaid-1679409544159 .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-1679409544159 .node .label{text-align:center;}#mermaid-1679409544159 .node.clickable{cursor:pointer;}#mermaid-1679409544159 .arrowheadPath{fill:#333333;}#mermaid-1679409544159 .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-1679409544159 .flowchart-link{stroke:#333333;fill:none;}#mermaid-1679409544159 .edgeLabel{background-color:#e8e8e8;text-align:center;}#mermaid-1679409544159 .edgeLabel rect{opacity:0.5;background-color:#e8e8e8;fill:#e8e8e8;}#mermaid-1679409544159 .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-1679409544159 .cluster text{fill:#333;}#mermaid-1679409544159 .cluster span{color:#333;}#mermaid-1679409544159 div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-1679409544159 .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-1679409544159 :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;}</style><g><marker orient="auto" markerHeight="12" markerWidth="12" markerUnits="userSpaceOnUse" refY="5" refX="10" viewBox="0 0 12 20" class="marker flowchart" id="flowchart-pointEnd"><path style="stroke-width: 1; stroke-dasharray: 1, 0;" class="arrowMarkerPath" d="M 0 0 L 10 5 L 0 10 z"/></marker><marker orient="auto" markerHeight="12" markerWidth="12" markerUnits="userSpaceOnUse" refY="5" refX="0" viewBox="0 0 10 10" class="marker flowchart" id="flowchart-pointStart"><path style="stroke-width: 1; stroke-dasharray: 1, 0;" class="arrowMarkerPath" d="M 0 5 L 10 10 L 10 0 z"/></marker><marker orient="auto" markerHeight="11" markerWidth="11" markerUnits="userSpaceOnUse" refY="5" refX="11" viewBox="0 0 10 10" class="marker flowchart" id="flowchart-circleEnd"><circle style="stroke-width: 1; stroke-dasharray: 1, 0;" class="arrowMarkerPath" r="5" cy="5" cx="5"/></marker><marker orient="auto" markerHeight="11" markerWidth="11" markerUnits="userSpaceOnUse" refY="5" refX="-1" viewBox="0 0 10 10" class="marker flowchart" id="flowchart-circleStart"><circle style="stroke-width: 1; stroke-dasharray: 1, 0;" class="arrowMarkerPath" r="5" cy="5" cx="5"/></marker><marker orient="auto" markerHeight="11" markerWidth="11" markerUnits="userSpaceOnUse" refY="5.2" refX="12" viewBox="0 0 11 11" class="marker cross flowchart" id="flowchart-crossEnd"><path style="stroke-width: 2; stroke-dasharray: 1, 0;" class="arrowMarkerPath" d="M 1,1 l 9,9 M 10,1 l -9,9"/></marker><marker orient="auto" markerHeight="11" markerWidth="11" markerUnits="userSpaceOnUse" refY="5.2" refX="-1" viewBox="0 0 11 11" class="marker cross flowchart" id="flowchart-crossStart"><path style="stroke-width: 2; stroke-dasharray: 1, 0;" class="arrowMarkerPath" d="M 1,1 l 9,9 M 10,1 l -9,9"/></marker><g class="root"><g class="clusters"/><g class="edgePaths"><path marker-end="url(#flowchart-pointEnd)" style="fill:none;" class="edge-thickness-normal edge-pattern-solid flowchart-link LS-Deregistered LE-No_Server" id="L-Deregistered-No_Server-0" d="M1159.85546875,33L1159.85546875,38.666666666666664C1159.85546875,44.333333333333336,1159.85546875,55.666666666666664,1159.85546875,67C1159.85546875,78.33333333333333,1159.85546875,89.66666666666667,1159.85546875,95.33333333333333L1159.85546875,101"/><path marker-end="url(#flowchart-pointEnd)" style="fill:none;" class="edge-thickness-normal edge-pattern-solid flowchart-link LS-No_Server LE-No_Server" id="L-No_Server-No_Server-0" d="M1205.59765625,109.46878377254967L1213.63671875,108.05731981045805C1221.67578125,106.64585584836645,1237.75390625,103.82292792418322,1247.802734375,102.4114639620916C1257.8515625,101,1261.87109375,101,1265.890625,103.75C1269.91015625,106.5,1273.9296875,112,1273.9296875,117.5C1273.9296875,123,1269.91015625,128.5,1265.890625,131.25C1261.87109375,134,1257.8515625,134,1247.802734375,132.5885360379084C1237.75390625,131.17707207581677,1221.67578125,128.35414415163356,1213.63671875,126.94268018954195L1205.59765625,125.53121622745033"/><path marker-end="url(#flowchart-pointEnd)" style="fill:none;" class="edge-thickness-normal edge-pattern-solid flowchart-link LS-No_Server LE-Loading_Server" id="L-No_Server-Loading_Server-0" d="M1114.11328125,133.9160397523804L1098.2845052083333,139.59669979365034C1082.4557291666667,145.27735983492028,1050.7981770833333,156.63867991746014,1035.0539977825908,167.98600662539673C1019.3098184818482,179.33333333333334,1019.4790119636964,190.66666666666666,1019.5636087046205,196.33333333333334L1019.6482054455446,202"/><path marker-end="url(#flowchart-pointEnd)" style="fill:none;" class="edge-thickness-normal edge-pattern-solid flowchart-link LS-Ask_Location LE-Chosen_Location" id="L-Ask_Location-Chosen_Location-0" d="M261.8828125,336L261.8828125,341.6666666666667C261.8828125,347.3333333333333,261.8828125,358.6666666666667,266.9621235561056,370C272.0414346122112,381.3333333333333,282.20005672442244,392.6666666666667,287.27936778052805,398.3333333333333L292.35867883663366,404"/><path marker-end="url(#flowchart-pointEnd)" style="fill:none;" class="edge-thickness-normal edge-pattern-solid flowchart-link LS-Ask_Location LE-No_Server" id="L-Ask_Location-No_Server-0" d="M317.4140625,307.6026813827848L347.4440104166667,301.16890115232064C377.4739583333333,294.73512092185655,437.5338541666667,281.86756046092825,467.5638020833333,267.01711356379747C497.59375,252.16666666666666,497.59375,235.33333333333334,497.59375,218.5C497.59375,201.66666666666666,497.59375,184.83333333333334,600.3470052083334,168.5813362510494C703.1002604166666,152.3293391687655,908.6067708333334,136.658678337531,1011.3600260416666,128.82334792191375L1114.11328125,120.98801750629649"/><path marker-end="url(#flowchart-pointEnd)" style="fill:none;" class="edge-thickness-normal edge-pattern-solid flowchart-link LS-Chosen_Location LE-Chosen_Server" id="L-Chosen_Location-Chosen_Server-0" d="M307.1484375,437L307.1484375,442.6666666666667C307.1484375,448.3333333333333,307.1484375,459.6666666666667,313.1363964521452,471C319.1243554042904,482.3333333333333,331.1002733085808,493.6666666666667,337.08823226072604,499.3333333333333L343.07619121287127,505"/><path marker-end="url(#flowchart-pointEnd)" style="fill:none;" class="edge-thickness-normal edge-pattern-solid flowchart-link LS-Chosen_Location LE-No_Server" id="L-Chosen_Location-No_Server-0" d="M376.921875,407.429360111285L410.22265625,401.1911334260708C443.5234375,394.95290674085663,510.125,382.4764533704283,543.42578125,367.8215600185475C576.7265625,353.1666666666667,576.7265625,336.3333333333333,576.7265625,319.5C576.7265625,302.6666666666667,576.7265625,285.8333333333333,576.7265625,269C576.7265625,252.16666666666666,576.7265625,235.33333333333334,576.7265625,218.5C576.7265625,201.66666666666666,576.7265625,184.83333333333334,666.291015625,168.6602257934142C755.85546875,152.48711825349508,934.984375,136.9742365069902,1024.548828125,129.21779563373772L1114.11328125,121.46135476048526"/><path marker-end="url(#flowchart-pointEnd)" style="fill:none;" class="edge-thickness-normal edge-pattern-solid flowchart-link LS-Loading_Server LE-Chosen_Server" id="L-Loading_Server-Chosen_Server-0" d="M955.91015625,227.5197254358896L906.8678385416666,234.43310452990798C857.8255208333334,241.3464836239264,759.7408854166666,255.17324181196318,710.6985677083334,270.5032875726483C661.65625,285.8333333333333,661.65625,302.6666666666667,661.65625,319.5C661.65625,336.3333333333333,661.65625,353.1666666666667,661.65625,370C661.65625,386.8333333333333,661.65625,403.6666666666667,661.65625,420.5C661.65625,437.3333333333333,661.65625,454.1666666666667,621.9798177083334,469.2368157074356C582.3033854166666,484.30696474820456,502.9505208333333,497.6139294964091,463.2740885416667,504.26741187051135L423.59765625,510.92089424461363"/><path marker-end="url(#flowchart-pointEnd)" style="fill:none;" class="edge-thickness-normal edge-pattern-solid flowchart-link LS-Loading_Server LE-Ask_Location" id="L-Loading_Server-Ask_Location-0" d="M955.91015625,222.63675666755017L836.3912760416666,230.36396388962513C716.8723958333334,238.0911711117001,477.8346354166667,253.54558555585004,360.90625644595707,266.9394594445917C243.97787747524754,280.3333333333333,249.15887995049505,291.6666666666667,251.74938118811883,297.3333333333333L254.3398824257426,303"/><path marker-end="url(#flowchart-pointEnd)" style="fill:none;" class="edge-thickness-normal edge-pattern-solid flowchart-link LS-Loading_Server LE-No_Server" id="L-Loading_Server-No_Server-0" d="M1078.7663985148515,202L1098.9850195957097,196.33333333333334C1119.2036406765676,190.66666666666666,1159.640882838284,179.33333333333334,1175.3460705445545,168C1191.0512582508252,156.66666666666666,1182.0243915016501,145.33333333333334,1177.5109581270628,139.66666666666666L1172.9975247524753,134"/><path marker-end="url(#flowchart-pointEnd)" style="fill:none;" class="edge-thickness-normal edge-pattern-solid flowchart-link LS-Chosen_Server LE-Authorized" id="L-Chosen_Server-Authorized-0" d="M423.59765625,529.7677783972832L477.3053385416667,536.806481997736C531.0130208333334,543.8451855981888,638.4283854166666,557.9225927990943,697.857963335396,570.6279630662139C757.2875412541254,583.3333333333334,768.7313325082508,594.6666666666666,774.4532281353135,600.3333333333334L780.1751237623762,606"/><path marker-end="url(#flowchart-pointEnd)" style="fill:none;" class="edge-thickness-normal edge-pattern-solid flowchart-link LS-Chosen_Server LE-OAuth_Started" id="L-Chosen_Server-OAuth_Started-0" d="M344.09340191831683,538L338.4547880569307,543.6666666666666C332.81617419554453,549.3333333333334,321.5389464727723,560.6666666666666,315.90033261138615,574.75C310.26171875,588.8333333333334,310.26171875,605.6666666666666,310.26171875,622.5C310.26171875,639.3333333333334,310.26171875,656.1666666666666,310.26171875,673C310.26171875,689.8333333333334,310.26171875,706.6666666666666,310.26171875,723.5C310.26171875,740.3333333333334,310.26171875,757.1666666666666,403.5390625,773.1798704816621C496.81640625,789.1930742966574,683.37109375,804.3861485933148,776.6484375,811.9826857416436L869.92578125,819.5792228899724"/><path marker-end="url(#flowchart-pointEnd)" style="fill:none;" class="edge-thickness-normal edge-pattern-solid flowchart-link LS-OAuth_Started LE-Authorized" id="L-OAuth_Started-Authorized-0" d="M908.5663288985148,808L901.085873040429,802.3333333333334C893.6054171823431,796.6666666666666,878.6445054661716,785.3333333333334,871.1640496080859,771.25C863.68359375,757.1666666666666,863.68359375,740.3333333333334,863.68359375,723.5C863.68359375,706.6666666666666,863.68359375,689.8333333333334,856.1825366130364,675.75C848.6814794760726,661.6666666666666,833.6793652021452,650.3333333333334,826.1783080651816,644.6666666666666L818.6772509282179,639"/><path marker-end="url(#flowchart-pointEnd)" style="fill:none;" class="edge-thickness-normal edge-pattern-solid flowchart-link LS-OAuth_Started LE-No_Server" id="L-OAuth_Started-No_Server-0" d="M990.76953125,815.7535802662666L1038.8430989583333,808.7946502218888C1086.9166666666667,801.835720177511,1183.0638020833333,787.9178600887554,1231.1373697916667,772.542263377711C1279.2109375,757.1666666666666,1279.2109375,740.3333333333334,1279.2109375,723.5C1279.2109375,706.6666666666666,1279.2109375,689.8333333333334,1279.2109375,673C1279.2109375,656.1666666666666,1279.2109375,639.3333333333334,1279.2109375,622.5C1279.2109375,605.6666666666666,1279.2109375,588.8333333333334,1279.2109375,572C1279.2109375,555.1666666666666,1279.2109375,538.3333333333334,1279.2109375,521.5C1279.2109375,504.6666666666667,1279.2109375,487.8333333333333,1279.2109375,471C1279.2109375,454.1666666666667,1279.2109375,437.3333333333333,1279.2109375,420.5C1279.2109375,403.6666666666667,1279.2109375,386.8333333333333,1279.2109375,370C1279.2109375,353.1666666666667,1279.2109375,336.3333333333333,1279.2109375,319.5C1279.2109375,302.6666666666667,1279.2109375,285.8333333333333,1279.2109375,269C1279.2109375,252.16666666666666,1279.2109375,235.33333333333334,1279.2109375,218.5C1279.2109375,201.66666666666666,1279.2109375,184.83333333333334,1265.8179146039604,170.75C1252.4248917079208,156.66666666666666,1225.6388459158416,145.33333333333334,1212.245823019802,139.66666666666666L1198.8528001237623,134"/><path marker-end="url(#flowchart-pointEnd)" style="fill:none;" class="edge-thickness-normal edge-pattern-solid flowchart-link LS-Authorized LE-OAuth_Started" id="L-Authorized-OAuth_Started-0" d="M751.0859375,637.7748121174557L733.501953125,643.6456767645464C715.91796875,649.5165414116371,680.75,661.2582707058185,663.166015625,675.545802019576C645.58203125,689.8333333333334,645.58203125,706.6666666666666,645.58203125,723.5C645.58203125,740.3333333333334,645.58203125,757.1666666666666,682.97265625,772.2141426611797C720.36328125,787.2616186556928,795.14453125,800.5232373113855,832.53515625,807.1540466392318L869.92578125,813.7848559670782"/><path marker-end="url(#flowchart-pointEnd)" style="fill:none;" class="edge-thickness-normal edge-pattern-solid flowchart-link LS-Authorized LE-Request_Config" id="L-Authorized-Request_Config-0" d="M842.5859375,626.4427771481901L932.6236979166666,634.2023142901584C1022.6614583333334,641.9618514321268,1202.7369791666667,657.4809257160633,1292.7747395833333,670.9071295246983C1382.8125,684.3333333333334,1382.8125,695.6666666666666,1382.8125,701.3333333333334L1382.8125,707"/><path marker-end="url(#flowchart-pointEnd)" style="fill:none;" class="edge-thickness-normal edge-pattern-solid flowchart-link LS-Authorized LE-No_Server" id="L-Authorized-No_Server-0" d="M829.6725711633663,606L840.9497988861386,600.3333333333334C852.2270266089108,594.6666666666666,874.7814820544554,583.3333333333334,886.0587097772277,569.25C897.3359375,555.1666666666666,897.3359375,538.3333333333334,897.3359375,521.5C897.3359375,504.6666666666667,897.3359375,487.8333333333333,897.3359375,471C897.3359375,454.1666666666667,897.3359375,437.3333333333333,897.3359375,420.5C897.3359375,403.6666666666667,897.3359375,386.8333333333333,897.3359375,370C897.3359375,353.1666666666667,897.3359375,336.3333333333333,897.3359375,319.5C897.3359375,302.6666666666667,897.3359375,285.8333333333333,897.3359375,269C897.3359375,252.16666666666666,897.3359375,235.33333333333334,897.3359375,218.5C897.3359375,201.66666666666666,897.3359375,184.83333333333334,933.4654947916666,169.46654514793047C969.5950520833334,154.0997569625276,1041.8541666666667,140.1995139250552,1077.9837239583333,133.24939240631898L1114.11328125,126.29927088758276"/><path marker-end="url(#flowchart-pointEnd)" style="fill:none;" class="edge-thickness-normal edge-pattern-solid flowchart-link LS-Request_Config LE-Ask_Profile" id="L-Request_Config-Ask_Profile-0" d="M1445.7851175742574,740L1467.4120771452144,745.6666666666666C1489.0390367161715,751.3333333333334,1532.2929558580856,762.6666666666666,1563.7129744224421,774C1595.1329929867989,785.3333333333334,1614.7191109735975,796.6666666666666,1624.512169966997,802.3333333333334L1634.305228960396,808"/><path marker-end="url(#flowchart-pointEnd)" style="fill:none;" class="edge-thickness-normal edge-pattern-solid flowchart-link LS-Request_Config LE-Chosen_Profile" id="L-Request_Config-Chosen_Profile-0" d="M1379.2350324876238,740L1378.0064072813532,745.6666666666666C1376.7777820750825,751.3333333333334,1374.3205316625415,762.6666666666666,1373.0919064562706,776.75C1371.86328125,790.8333333333334,1371.86328125,807.6666666666666,1371.86328125,824.5C1371.86328125,841.3333333333334,1371.86328125,858.1666666666666,1410.1555989583333,873.2067807495217C1448.4479166666667,888.2468948323767,1525.0325520833333,901.4937896647534,1563.3248697916667,908.1172370809418L1601.6171875,914.7406844971301"/><path marker-end="url(#flowchart-pointEnd)" style="fill:none;" class="edge-thickness-normal edge-pattern-solid flowchart-link LS-Request_Config LE-No_Server" id="L-Request_Config-No_Server-0" d="M1447.6875,710.0667654360535L1477.5227864583333,703.8889711967113C1507.3580729166667,697.711176957369,1567.0286458333333,685.3555884786846,1596.8639322916667,670.7611275726756C1626.69921875,656.1666666666666,1626.69921875,639.3333333333334,1626.69921875,622.5C1626.69921875,605.6666666666666,1626.69921875,588.8333333333334,1626.69921875,572C1626.69921875,555.1666666666666,1626.69921875,538.3333333333334,1626.69921875,521.5C1626.69921875,504.6666666666667,1626.69921875,487.8333333333333,1626.69921875,471C1626.69921875,454.1666666666667,1626.69921875,437.3333333333333,1626.69921875,420.5C1626.69921875,403.6666666666667,1626.69921875,386.8333333333333,1626.69921875,370C1626.69921875,353.1666666666667,1626.69921875,336.3333333333333,1626.69921875,319.5C1626.69921875,302.6666666666667,1626.69921875,285.8333333333333,1626.69921875,269C1626.69921875,252.16666666666666,1626.69921875,235.33333333333334,1626.69921875,218.5C1626.69921875,201.66666666666666,1626.69921875,184.83333333333334,1556.515625,168.82468008791307C1486.33203125,152.8160268424928,1345.96484375,137.6320536849856,1275.78125,130.040067106232L1205.59765625,122.44808052747841"/><path marker-end="url(#flowchart-pointEnd)" style="fill:none;" class="edge-thickness-normal edge-pattern-solid flowchart-link LS-Request_Config LE-OAuth_Started" id="L-Request_Config-OAuth_Started-0" d="M1317.9375,728.6832002570885L1223.4036458333333,736.2360002142404C1128.8697916666667,743.7888001713924,939.8020833333334,758.8944000856962,865.4228547854785,772.1138667095147C791.0436262376238,785.3333333333334,831.3528774752476,796.6666666666666,851.5075030940594,802.3333333333334L871.6621287128713,808"/><path marker-end="url(#flowchart-pointEnd)" style="fill:none;" class="edge-thickness-normal edge-pattern-solid flowchart-link LS-Ask_Profile LE-No_Server" id="L-Ask_Profile-No_Server-0" d="M1691.9888613861385,808L1702.006342821782,802.3333333333334C1712.0238242574258,796.6666666666666,1732.0587871287128,785.3333333333334,1742.0762685643565,771.25C1752.09375,757.1666666666666,1752.09375,740.3333333333334,1752.09375,723.5C1752.09375,706.6666666666666,1752.09375,689.8333333333334,1752.09375,673C1752.09375,656.1666666666666,1752.09375,639.3333333333334,1752.09375,622.5C1752.09375,605.6666666666666,1752.09375,588.8333333333334,1752.09375,572C1752.09375,555.1666666666666,1752.09375,538.3333333333334,1752.09375,521.5C1752.09375,504.6666666666667,1752.09375,487.8333333333333,1752.09375,471C1752.09375,454.1666666666667,1752.09375,437.3333333333333,1752.09375,420.5C1752.09375,403.6666666666667,1752.09375,386.8333333333333,1752.09375,370C1752.09375,353.1666666666667,1752.09375,336.3333333333333,1752.09375,319.5C1752.09375,302.6666666666667,1752.09375,285.8333333333333,1752.09375,269C1752.09375,252.16666666666666,1752.09375,235.33333333333334,1752.09375,218.5C1752.09375,201.66666666666666,1752.09375,184.83333333333334,1661.0110677083333,168.65007068435204C1569.9283854166667,152.46680803537075,1387.7630208333333,136.93361607074152,1296.6803385416667,129.16702008842688L1205.59765625,121.40042410611227"/><path marker-end="url(#flowchart-pointEnd)" style="fill:none;" class="edge-thickness-normal edge-pattern-solid flowchart-link LS-Ask_Profile LE-Chosen_Profile" id="L-Ask_Profile-Chosen_Profile-0" d="M1662.8203125,841L1662.8203125,846.6666666666666C1662.8203125,852.3333333333334,1662.8203125,863.6666666666666,1662.9325237211222,875C1663.044734942244,886.3333333333334,1663.2691573844884,897.6666666666666,1663.3813686056103,903.3333333333334L1663.4935798267327,909"/><path marker-end="url(#flowchart-pointEnd)" style="fill:none;" class="edge-thickness-normal edge-pattern-solid flowchart-link LS-Chosen_Profile LE-No_Server" id="L-Chosen_Profile-No_Server-0" d="M1722.08083230198,909L1742.0894956683169,903.3333333333334C1762.0981590346535,897.6666666666666,1802.1154857673266,886.3333333333334,1822.1241491336634,872.25C1842.1328125,858.1666666666666,1842.1328125,841.3333333333334,1842.1328125,824.5C1842.1328125,807.6666666666666,1842.1328125,790.8333333333334,1842.1328125,774C1842.1328125,757.1666666666666,1842.1328125,740.3333333333334,1842.1328125,723.5C1842.1328125,706.6666666666666,1842.1328125,689.8333333333334,1842.1328125,673C1842.1328125,656.1666666666666,1842.1328125,639.3333333333334,1842.1328125,622.5C1842.1328125,605.6666666666666,1842.1328125,588.8333333333334,1842.1328125,572C1842.1328125,555.1666666666666,1842.1328125,538.3333333333334,1842.1328125,521.5C1842.1328125,504.6666666666667,1842.1328125,487.8333333333333,1842.1328125,471C1842.1328125,454.1666666666667,1842.1328125,437.3333333333333,1842.1328125,420.5C1842.1328125,403.6666666666667,1842.1328125,386.8333333333333,1842.1328125,370C1842.1328125,353.1666666666667,1842.1328125,336.3333333333333,1842.1328125,319.5C1842.1328125,302.6666666666667,1842.1328125,285.8333333333333,1842.1328125,269C1842.1328125,252.16666666666666,1842.1328125,235.33333333333334,1842.1328125,218.5C1842.1328125,201.66666666666666,1842.1328125,184.83333333333334,1736.0436197916667,168.56428188378C1629.9544270833333,152.29523043422668,1417.7760416666667,136.59046086845333,1311.6868489583333,128.7380760855667L1205.59765625,120.88569130268002"/><path marker-end="url(#flowchart-pointEnd)" style="fill:none;" class="edge-thickness-normal edge-pattern-solid flowchart-link LS-Chosen_Profile LE-Got_Config" id="L-Chosen_Profile-Got_Config-0" d="M1663.8203125,942L1663.8203125,947.6666666666666C1663.8203125,953.3333333333334,1663.8203125,964.6666666666666,1701.4765625,977.2760030424034C1739.1328125,989.8853394181402,1814.4453125,1003.7706788362807,1852.1015625,1010.7133485453509L1889.7578125,1017.656018254421"/><path marker-end="url(#flowchart-pointEnd)" style="fill:none;" class="edge-thickness-normal edge-pattern-solid flowchart-link LS-Got_Config LE-No_Server" id="L-Got_Config-No_Server-0" d="M1939.9473236386139,1010L1940.7100092821784,1004.3333333333334C1941.4726949257426,998.6666666666666,1942.9980662128712,987.3333333333334,1943.7607518564357,973.25C1944.5234375,959.1666666666666,1944.5234375,942.3333333333334,1944.5234375,925.5C1944.5234375,908.6666666666666,1944.5234375,891.8333333333334,1944.5234375,875C1944.5234375,858.1666666666666,1944.5234375,841.3333333333334,1944.5234375,824.5C1944.5234375,807.6666666666666,1944.5234375,790.8333333333334,1944.5234375,774C1944.5234375,757.1666666666666,1944.5234375,740.3333333333334,1944.5234375,723.5C1944.5234375,706.6666666666666,1944.5234375,689.8333333333334,1944.5234375,673C1944.5234375,656.1666666666666,1944.5234375,639.3333333333334,1944.5234375,622.5C1944.5234375,605.6666666666666,1944.5234375,588.8333333333334,1944.5234375,572C1944.5234375,555.1666666666666,1944.5234375,538.3333333333334,1944.5234375,521.5C1944.5234375,504.6666666666667,1944.5234375,487.8333333333333,1944.5234375,471C1944.5234375,454.1666666666667,1944.5234375,437.3333333333333,1944.5234375,420.5C1944.5234375,403.6666666666667,1944.5234375,386.8333333333333,1944.5234375,370C1944.5234375,353.1666666666667,1944.5234375,336.3333333333333,1944.5234375,319.5C1944.5234375,302.6666666666667,1944.5234375,285.8333333333333,1944.5234375,269C1944.5234375,252.16666666666666,1944.5234375,235.33333333333334,1944.5234375,218.5C1944.5234375,201.66666666666666,1944.5234375,184.83333333333334,1821.369140625,168.49064924289567C1698.21484375,152.147965152458,1451.90625,136.29593030491597,1328.751953125,128.36991288114498L1205.59765625,120.44389545737398"/><path marker-end="url(#flowchart-pointEnd)" style="fill:none;" class="edge-thickness-normal edge-pattern-solid flowchart-link LS-Got_Config LE-Loading_Server" id="L-Got_Config-Loading_Server-0" d="M1974.0908879950496,1010L1986.5796462458748,1004.3333333333334C1999.0684044966995,998.6666666666666,2024.0459209983499,987.3333333333334,2036.5346792491748,973.25C2049.0234375,959.1666666666666,2049.0234375,942.3333333333334,2049.0234375,925.5C2049.0234375,908.6666666666666,2049.0234375,891.8333333333334,2049.0234375,875C2049.0234375,858.1666666666666,2049.0234375,841.3333333333334,2049.0234375,824.5C2049.0234375,807.6666666666666,2049.0234375,790.8333333333334,2049.0234375,774C2049.0234375,757.1666666666666,2049.0234375,740.3333333333334,2049.0234375,723.5C2049.0234375,706.6666666666666,2049.0234375,689.8333333333334,2049.0234375,673C2049.0234375,656.1666666666666,2049.0234375,639.3333333333334,2049.0234375,622.5C2049.0234375,605.6666666666666,2049.0234375,588.8333333333334,2049.0234375,572C2049.0234375,555.1666666666666,2049.0234375,538.3333333333334,2049.0234375,521.5C2049.0234375,504.6666666666667,2049.0234375,487.8333333333333,2049.0234375,471C2049.0234375,454.1666666666667,2049.0234375,437.3333333333333,2049.0234375,420.5C2049.0234375,403.6666666666667,2049.0234375,386.8333333333333,2049.0234375,370C2049.0234375,353.1666666666667,2049.0234375,336.3333333333333,2049.0234375,319.5C2049.0234375,302.6666666666667,2049.0234375,285.8333333333333,1888.166015625,269.52329222605584C1727.30859375,253.2132511187784,1405.59375,237.42650223755678,1244.736328125,229.533127796946L1083.87890625,221.63975335633518"/></g><g class="edgeLabels"><g transform="translate(1159.85546875, 67)" class="edgeLabel"><g transform="translate(-53.3515625, -9)" class="label"><foreignObject height="18" width="106.703125"><div style="display: inline-block; white-space: nowrap;" xmlns="http://www.w3.org/1999/xhtml"><span class="edgeLabel">Client registers</span></div></foreignObject></g></g><g transform="translate(1277.94921875, 117.5)" class="edgeLabel"><g transform="translate(-37.3515625, -9)" class="label"><foreignObject height="18" width="74.703125"><div style="display: inline-block; white-space: nowrap;" xmlns="http://www.w3.org/1999/xhtml"><span class="edgeLabel">Reload list</span></div></foreignObject></g></g><g transform="translate(1019.140625, 168)" class="edgeLabel"><g transform="translate(-101.8046875, -9)" class="label"><foreignObject height="18" width="203.609375"><div style="display: inline-block; white-space: nowrap;" xmlns="http://www.w3.org/1999/xhtml"><span class="edgeLabel">User clicks a server in the UI</span></div></foreignObject></g></g><g transform="translate(261.8828125, 370)" class="edgeLabel"><g transform="translate(-58.265625, -9)" class="label"><foreignObject height="18" width="116.53125"><div style="display: inline-block; white-space: nowrap;" xmlns="http://www.w3.org/1999/xhtml"><span class="edgeLabel">Location chosen</span></div></foreignObject></g></g><g transform="translate(497.59375, 218.5)" class="edgeLabel"><g transform="translate(-59.1328125, -9)" class="label"><foreignObject height="18" width="118.265625"><div style="display: inline-block; white-space: nowrap;" xmlns="http://www.w3.org/1999/xhtml"><span class="edgeLabel">Go back or Error</span></div></foreignObject></g></g><g transform="translate(307.1484375, 471)" class="edgeLabel"><g transform="translate(-86.7265625, -9)" class="label"><foreignObject height="18" width="173.453125"><div style="display: inline-block; white-space: nowrap;" xmlns="http://www.w3.org/1999/xhtml"><span class="edgeLabel">Server has been chosen</span></div></foreignObject></g></g><g transform="translate(576.7265625, 269)" class="edgeLabel"><g transform="translate(-59.1328125, -9)" class="label"><foreignObject height="18" width="118.265625"><div style="display: inline-block; white-space: nowrap;" xmlns="http://www.w3.org/1999/xhtml"><span class="edgeLabel">Go back or Error</span></div></foreignObject></g></g><g transform="translate(661.65625, 370)" class="edgeLabel"><g transform="translate(-64.9296875, -9)" class="label"><foreignObject height="18" width="129.859375"><div style="display: inline-block; white-space: nowrap;" xmlns="http://www.w3.org/1999/xhtml"><span class="edgeLabel">Server info loaded</span></div></foreignObject></g></g><g transform="translate(238.796875, 269)" class="edgeLabel"><g transform="translate(-238.796875, -9)" class="label"><foreignObject height="18" width="477.59375"><div style="display: inline-block; white-space: nowrap;" xmlns="http://www.w3.org/1999/xhtml"><span class="edgeLabel">User chooses a Secure Internet server but no location is configured</span></div></foreignObject></g></g><g transform="translate(1200.078125, 168)" class="edgeLabel"><g transform="translate(-59.1328125, -9)" class="label"><foreignObject height="18" width="118.265625"><div style="display: inline-block; white-space: nowrap;" xmlns="http://www.w3.org/1999/xhtml"><span class="edgeLabel">Go back or Error</span></div></foreignObject></g></g><g transform="translate(745.84375, 572)" class="edgeLabel"><g transform="translate(-80.5, -9)" class="label"><foreignObject height="18" width="161"><div style="display: inline-block; white-space: nowrap;" xmlns="http://www.w3.org/1999/xhtml"><span class="edgeLabel">Found tokens in config</span></div></foreignObject></g></g><g transform="translate(310.26171875, 673)" class="edgeLabel"><g transform="translate(-90.28125, -9)" class="label"><foreignObject height="18" width="180.5625"><div style="display: inline-block; white-space: nowrap;" xmlns="http://www.w3.org/1999/xhtml"><span class="edgeLabel">No tokens found in config</span></div></foreignObject></g></g><g transform="translate(863.68359375, 723.5)" class="edgeLabel"><g transform="translate(-103.1484375, -9)" class="label"><foreignObject height="18" width="206.296875"><div style="display: inline-block; white-space: nowrap;" xmlns="http://www.w3.org/1999/xhtml"><span class="edgeLabel">User authorizes with browser</span></div></foreignObject></g></g><g transform="translate(1279.2109375, 471)" class="edgeLabel"><g transform="translate(-59.1328125, -9)" class="label"><foreignObject height="18" width="118.265625"><div style="display: inline-block; white-space: nowrap;" xmlns="http://www.w3.org/1999/xhtml"><span class="edgeLabel">Go back or Error</span></div></foreignObject></g></g><g transform="translate(645.58203125, 723.5)" class="edgeLabel"><g transform="translate(-87.15625, -9)" class="label"><foreignObject height="18" width="174.3125"><div style="display: inline-block; white-space: nowrap;" xmlns="http://www.w3.org/1999/xhtml"><span class="edgeLabel">Re-authorize with OAuth</span></div></foreignObject></g></g><g transform="translate(1382.8125, 673)" class="edgeLabel"><g transform="translate(-83.6015625, -9)" class="label"><foreignObject height="18" width="167.203125"><div style="display: inline-block; white-space: nowrap;" xmlns="http://www.w3.org/1999/xhtml"><span class="edgeLabel">Client requests a config</span></div></foreignObject></g></g><g transform="translate(897.3359375, 370)" class="edgeLabel"><g transform="translate(-150.75, -9)" class="label"><foreignObject height="18" width="301.5"><div style="display: inline-block; white-space: nowrap;" xmlns="http://www.w3.org/1999/xhtml"><span class="edgeLabel">Client wants to go back to the main screen</span></div></foreignObject></g></g><g transform="translate(1575.546875, 774)" class="edgeLabel"><g transform="translate(-156.546875, -9)" class="label"><foreignObject height="18" width="313.09375"><div style="display: inline-block; white-space: nowrap;" xmlns="http://www.w3.org/1999/xhtml"><span class="edgeLabel">Multiple profiles found and no profile chosen</span></div></foreignObject></g></g><g transform="translate(1371.86328125, 824.5)" class="edgeLabel"><g transform="translate(-145.859375, -9)" class="label"><foreignObject height="18" width="291.71875"><div style="display: inline-block; white-space: nowrap;" xmlns="http://www.w3.org/1999/xhtml"><span class="edgeLabel">Only one profile or profile already chosen</span></div></foreignObject></g></g><g transform="translate(1626.69921875, 420.5)" class="edgeLabel"><g transform="translate(-54.2421875, -9)" class="label"><foreignObject height="18" width="108.484375"><div style="display: inline-block; white-space: nowrap;" xmlns="http://www.w3.org/1999/xhtml"><span class="edgeLabel">Cancel or Error</span></div></foreignObject></g></g><g transform="translate(750.734375, 774)" class="edgeLabel"><g transform="translate(-45.8046875, -9)" class="label"><foreignObject height="18" width="91.609375"><div style="display: inline-block; white-space: nowrap;" xmlns="http://www.w3.org/1999/xhtml"><span class="edgeLabel">Re-authorize</span></div></foreignObject></g></g><g transform="translate(1752.09375, 471)" class="edgeLabel"><g transform="translate(-54.2421875, -9)" class="label"><foreignObject height="18" width="108.484375"><div style="display: inline-block; white-space: nowrap;" xmlns="http://www.w3.org/1999/xhtml"><span class="edgeLabel">Cancel or Error</span></div></foreignObject></g></g><g transform="translate(1662.8203125, 875)" class="edgeLabel"><g transform="translate(-85.8359375, -9)" class="label"><foreignObject height="18" width="171.671875"><div style="display: inline-block; white-space: nowrap;" xmlns="http://www.w3.org/1999/xhtml"><span class="edgeLabel">Profile has been chosen</span></div></foreignObject></g></g><g transform="translate(1842.1328125, 521.5)" class="edgeLabel"><g transform="translate(-54.2421875, -9)" class="label"><foreignObject height="18" width="108.484375"><div style="display: inline-block; white-space: nowrap;" xmlns="http://www.w3.org/1999/xhtml"><span class="edgeLabel">Cancel or Error</span></div></foreignObject></g></g><g transform="translate(1663.8203125, 976)" class="edgeLabel"><g transform="translate(-91.1875, -9)" class="label"><foreignObject height="18" width="182.375"><div style="display: inline-block; white-space: nowrap;" xmlns="http://www.w3.org/1999/xhtml"><span class="edgeLabel">Config has been obtained</span></div></foreignObject></g></g><g transform="translate(1944.5234375, 572)" class="edgeLabel"><g transform="translate(-75.59375, -9)" class="label"><foreignObject height="18" width="151.1875"><div style="display: inline-block; white-space: nowrap;" xmlns="http://www.w3.org/1999/xhtml"><span class="edgeLabel">Choose a new server</span></div></foreignObject></g></g><g transform="translate(2049.0234375, 622.5)" class="edgeLabel"><g transform="translate(-84.5, -9)" class="label"><foreignObject height="18" width="169"><div style="display: inline-block; white-space: nowrap;" xmlns="http://www.w3.org/1999/xhtml"><span class="edgeLabel">Get a new configuration</span></div></foreignObject></g></g></g><g class="nodes"><g transform="translate(1159.85546875, 16.5)" id="flowchart-Deregistered-162" class="node default default"><rect height="33" width="106.609375" y="-16.5" x="-53.3046875" ry="5" rx="5" style="fill:white;" class="basic label-container"/><g transform="translate(-45.8046875, -9)" style="" class="label"><foreignObject height="18" width="91.609375"><div style="display: inline-block; white-space: nowrap;" xmlns="http://www.w3.org/1999/xhtml"><span class="nodeLabel">Deregistered</span></div></foreignObject></g></g><g transform="translate(1159.85546875, 117.5)" id="flowchart-No_Server-164" class="node default default"><rect height="33" width="91.484375" y="-16.5" x="-45.7421875" ry="5" rx="5" style="fill:white;fill:white;" class="basic label-container"/><g transform="translate(-38.2421875, -9)" style="" class="label"><foreignObject height="18" width="76.484375"><div style="display: inline-block; white-space: nowrap;" xmlns="http://www.w3.org/1999/xhtml"><span class="nodeLabel">No_Server</span></div></foreignObject></g></g><g transform="translate(1019.89453125, 218.5)" id="flowchart-Loading_Server-170" class="node default default"><rect height="33" width="127.96875" y="-16.5" x="-63.984375" ry="5" rx="5" style="fill:white;fill:white;fill:white;" class="basic label-container"/><g transform="translate(-56.484375, -9)" style="" class="label"><foreignObject height="18" width="112.96875"><div style="display: inline-block; white-space: nowrap;" xmlns="http://www.w3.org/1999/xhtml"><span class="nodeLabel">Loading_Server</span></div></foreignObject></g></g><g transform="translate(261.8828125, 319.5)" id="flowchart-Ask_Location-171" class="node default default"><rect height="33" width="111.0625" y="-16.5" x="-55.53125" ry="5" rx="5" style="fill:white;fill:white;" class="basic label-container"/><g transform="translate(-48.03125, -9)" style="" class="label"><foreignObject height="18" width="96.0625"><div style="display: inline-block; white-space: nowrap;" xmlns="http://www.w3.org/1999/xhtml"><span class="nodeLabel">Ask_Location</span></div></foreignObject></g></g><g transform="translate(307.1484375, 420.5)" id="flowchart-Chosen_Location-173" class="node default default"><rect height="33" width="139.546875" y="-16.5" x="-69.7734375" ry="5" rx="5" style="fill:white;fill:white;" class="basic label-container"/><g transform="translate(-62.2734375, -9)" style="" class="label"><foreignObject height="18" width="124.546875"><div style="display: inline-block; white-space: nowrap;" xmlns="http://www.w3.org/1999/xhtml"><span class="nodeLabel">Chosen_Location</span></div></foreignObject></g></g><g transform="translate(360.51171875, 521.5)" id="flowchart-Chosen_Server-179" class="node default default"><rect height="33" width="126.171875" y="-16.5" x="-63.0859375" ry="5" rx="5" style="fill:white;fill:white;" class="basic label-container"/><g transform="translate(-55.5859375, -9)" style="" class="label"><foreignObject height="18" width="111.171875"><div style="display: inline-block; white-space: nowrap;" xmlns="http://www.w3.org/1999/xhtml"><span class="nodeLabel">Chosen_Server</span></div></foreignObject></g></g><g transform="translate(796.8359375, 622.5)" id="flowchart-Authorized-194" class="node default default"><rect height="33" width="91.5" y="-16.5" x="-45.75" ry="5" rx="5" style="fill:white;fill:white;fill:white;" class="basic label-container"/><g transform="translate(-38.25, -9)" style="" class="label"><foreignObject height="18" width="76.5"><div style="display: inline-block; white-space: nowrap;" xmlns="http://www.w3.org/1999/xhtml"><span class="nodeLabel">Authorized</span></div></foreignObject></g></g><g transform="translate(930.34765625, 824.5)" id="flowchart-OAuth_Started-197" class="node default default"><rect height="33" width="120.84375" y="-16.5" x="-60.421875" ry="5" rx="5" style="fill:white;fill:white;" class="basic label-container"/><g transform="translate(-52.921875, -9)" style="" class="label"><foreignObject height="18" width="105.84375"><div style="display: inline-block; white-space: nowrap;" xmlns="http://www.w3.org/1999/xhtml"><span class="nodeLabel">OAuth_Started</span></div></foreignObject></g></g><g transform="translate(1382.8125, 723.5)" id="flowchart-Request_Config-209" class="node default default"><rect height="33" width="129.75" y="-16.5" x="-64.875" ry="5" rx="5" style="fill:white;fill:white;fill:white;fill:white;" class="basic label-container"/><g transform="translate(-57.375, -9)" style="" class="label"><foreignObject height="18" width="114.75"><div style="display: inline-block; white-space: nowrap;" xmlns="http://www.w3.org/1999/xhtml"><span class="nodeLabel">Request_Config</span></div></foreignObject></g></g><g transform="translate(1662.8203125, 824.5)" id="flowchart-Ask_Profile-215" class="node default default"><rect height="33" width="95.921875" y="-16.5" x="-47.9609375" ry="5" rx="5" style="fill:white;fill:white;" class="basic label-container"/><g transform="translate(-40.4609375, -9)" style="" class="label"><foreignObject height="18" width="80.921875"><div style="display: inline-block; white-space: nowrap;" xmlns="http://www.w3.org/1999/xhtml"><span class="nodeLabel">Ask_Profile</span></div></foreignObject></g></g><g transform="translate(1663.8203125, 925.5)" id="flowchart-Chosen_Profile-218" class="node default default"><rect height="33" width="124.40625" y="-16.5" x="-62.203125" ry="5" rx="5" style="fill:white;fill:white;" class="basic label-container"/><g transform="translate(-54.703125, -9)" style="" class="label"><foreignObject height="18" width="109.40625"><div style="display: inline-block; white-space: nowrap;" xmlns="http://www.w3.org/1999/xhtml"><span class="nodeLabel">Chosen_Profile</span></div></foreignObject></g></g><g transform="translate(1937.7265625, 1026.5)" id="flowchart-Got_Config-236" class="node default default"><rect height="33" width="95.9375" y="-16.5" x="-47.96875" ry="5" rx="5" style="fill:cyan;fill:cyan;" class="basic label-container"/><g transform="translate(-40.46875, -9)" style="" class="label"><foreignObject height="18" width="80.9375"><div style="display: inline-block; white-space: nowrap;" xmlns="http://www.w3.org/1999/xhtml"><span class="nodeLabel">Got_Config</span></div></foreignObject></g></g></g></g></g></svg> \ No newline at end of file
diff --git a/docs/src/gettingstarted/debugging/logging.md b/docs/src/gettingstarted/debugging/logging.md
deleted file mode 100644
index 9a7eae2..0000000
--- a/docs/src/gettingstarted/debugging/logging.md
+++ /dev/null
@@ -1,8 +0,0 @@
-# Logging
-As said, logging is used. The logging gets saved in a client-specified directory (see [API](../../api/index.html)). Logging has the following levels:
-
-- `INFO`: Messages purely for info, these do not indicate any errors. They are merely there for debugging purposes
-- `WARNING`: These messages indicate a warning, e.g. non-fatal errors
-- `ERROR`: Fatal errors which refuses the app from working correctly
-
-By default only messages below or equal to `WARNING` are logged (`WARNING`, `ERROR`). However, if the debug variable is set to `True`, all messages will be logged into the log file.