@postxl/generators 1.11.6 → 1.12.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (42) hide show
  1. package/dist/backend-view/model-view-service.generator.js +4 -1
  2. package/dist/backend-view/model-view-service.generator.js.map +1 -1
  3. package/dist/backend-view/template/query.utils.test.ts +34 -0
  4. package/dist/backend-view/template/query.utils.ts +89 -0
  5. package/dist/frontend-admin/admin.generator.d.ts +9 -0
  6. package/dist/frontend-admin/admin.generator.js +19 -0
  7. package/dist/frontend-admin/admin.generator.js.map +1 -1
  8. package/dist/frontend-admin/generators/admin-sidebar.generator.js +1 -1
  9. package/dist/frontend-admin/generators/audit-log-sidebar.generator.js +107 -113
  10. package/dist/frontend-admin/generators/audit-log-sidebar.generator.js.map +1 -1
  11. package/dist/frontend-admin/generators/comment-sidebar.generator.d.ts +9 -0
  12. package/dist/frontend-admin/generators/comment-sidebar.generator.js +246 -0
  13. package/dist/frontend-admin/generators/comment-sidebar.generator.js.map +1 -0
  14. package/dist/frontend-admin/generators/detail-sidebar.generator.d.ts +9 -0
  15. package/dist/frontend-admin/generators/detail-sidebar.generator.js +148 -0
  16. package/dist/frontend-admin/generators/detail-sidebar.generator.js.map +1 -0
  17. package/dist/frontend-admin/generators/model-admin-page.generator.js +40 -6
  18. package/dist/frontend-admin/generators/model-admin-page.generator.js.map +1 -1
  19. package/dist/frontend-core/frontend.generator.js +2 -1
  20. package/dist/frontend-core/frontend.generator.js.map +1 -1
  21. package/dist/frontend-core/template/docs/LOGIN_PROCESS.d2 +372 -0
  22. package/dist/frontend-core/template/docs/LOGIN_PROCESS.md +214 -0
  23. package/dist/frontend-core/template/docs/LOGIN_PROCESS.svg +914 -0
  24. package/dist/frontend-core/template/src/components/admin/table-filter.stories.tsx +265 -0
  25. package/dist/frontend-core/template/src/components/admin/table-filter.tsx +224 -128
  26. package/dist/frontend-core/template/src/components/admin/table-view-panel.tsx +159 -0
  27. package/dist/frontend-core/template/src/context-providers/auth-context-provider.tsx +54 -43
  28. package/dist/frontend-core/template/src/hooks/use-table-view-config.tsx +249 -0
  29. package/dist/frontend-core/template/src/pages/dashboard/dashboard.page.tsx +5 -5
  30. package/dist/frontend-core/template/src/pages/error/auth-error.page.tsx +37 -0
  31. package/dist/frontend-core/template/src/pages/error/default-error.page.tsx +24 -40
  32. package/dist/frontend-core/template/src/pages/error/not-found-error.page.tsx +8 -10
  33. package/dist/frontend-core/template/src/pages/login/login.page.tsx +39 -13
  34. package/dist/frontend-core/template/src/pages/unauthorized/unauthorized.page.tsx +2 -2
  35. package/dist/frontend-core/template/src/routes/_auth-routes.tsx +21 -8
  36. package/dist/frontend-core/template/src/routes/auth-error.tsx +19 -0
  37. package/dist/frontend-core/template/vite.config.ts +5 -0
  38. package/dist/frontend-core/types/hook.d.ts +1 -1
  39. package/dist/frontend-tables/generators/model-table.generator.js +30 -5
  40. package/dist/frontend-tables/generators/model-table.generator.js.map +1 -1
  41. package/dist/types/template/query.types.ts +19 -1
  42. package/package.json +5 -5
@@ -0,0 +1,914 @@
1
+ <?xml version="1.0" encoding="utf-8"?><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-d2-version="0.7.1" preserveAspectRatio="xMinYMin meet" viewBox="0 0 3025 4050"><svg class="d2-2476658007 d2-svg" width="3025" height="4050" viewBox="-91 -152 3025 4050"><rect x="-91.000000" y="-152.000000" width="3025.000000" height="4050.000000" rx="0.000000" fill="#FFFFFF" class=" fill-N7" stroke-width="0" /><style type="text/css"><![CDATA[
2
+ .d2-2476658007 .text {
3
+ font-family: "d2-2476658007-font-regular";
4
+ }
5
+ @font-face {
6
+ font-family: d2-2476658007-font-regular;
7
+ src: url("data:application/font-woff;base64,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");
8
+ }
9
+ @font-face {
10
+ font-family: d2-2476658007-font-semibold;
11
+ src: url("data:application/font-woff;base64,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");
12
+ }
13
+ .d2-2476658007 .text-bold {
14
+ font-family: "d2-2476658007-font-bold";
15
+ }
16
+ @font-face {
17
+ font-family: d2-2476658007-font-bold;
18
+ src: url("data:application/font-woff;base64,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");
19
+ }
20
+ .d2-2476658007 .text-italic {
21
+ font-family: "d2-2476658007-font-italic";
22
+ }
23
+ @font-face {
24
+ font-family: d2-2476658007-font-italic;
25
+ src: url("data:application/font-woff;base64,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");
26
+ }]]></style><style type="text/css"><![CDATA[.shape {
27
+ shape-rendering: geometricPrecision;
28
+ stroke-linejoin: round;
29
+ }
30
+ .connection {
31
+ stroke-linecap: round;
32
+ stroke-linejoin: round;
33
+ }
34
+ .blend {
35
+ mix-blend-mode: multiply;
36
+ opacity: 0.5;
37
+ }
38
+
39
+ .d2-2476658007 .fill-N1{fill:#0A0F25;}
40
+ .d2-2476658007 .fill-N2{fill:#676C7E;}
41
+ .d2-2476658007 .fill-N3{fill:#9499AB;}
42
+ .d2-2476658007 .fill-N4{fill:#CFD2DD;}
43
+ .d2-2476658007 .fill-N5{fill:#DEE1EB;}
44
+ .d2-2476658007 .fill-N6{fill:#EEF1F8;}
45
+ .d2-2476658007 .fill-N7{fill:#FFFFFF;}
46
+ .d2-2476658007 .fill-B1{fill:#0D32B2;}
47
+ .d2-2476658007 .fill-B2{fill:#0D32B2;}
48
+ .d2-2476658007 .fill-B3{fill:#E3E9FD;}
49
+ .d2-2476658007 .fill-B4{fill:#E3E9FD;}
50
+ .d2-2476658007 .fill-B5{fill:#EDF0FD;}
51
+ .d2-2476658007 .fill-B6{fill:#F7F8FE;}
52
+ .d2-2476658007 .fill-AA2{fill:#4A6FF3;}
53
+ .d2-2476658007 .fill-AA4{fill:#EDF0FD;}
54
+ .d2-2476658007 .fill-AA5{fill:#F7F8FE;}
55
+ .d2-2476658007 .fill-AB4{fill:#EDF0FD;}
56
+ .d2-2476658007 .fill-AB5{fill:#F7F8FE;}
57
+ .d2-2476658007 .stroke-N1{stroke:#0A0F25;}
58
+ .d2-2476658007 .stroke-N2{stroke:#676C7E;}
59
+ .d2-2476658007 .stroke-N3{stroke:#9499AB;}
60
+ .d2-2476658007 .stroke-N4{stroke:#CFD2DD;}
61
+ .d2-2476658007 .stroke-N5{stroke:#DEE1EB;}
62
+ .d2-2476658007 .stroke-N6{stroke:#EEF1F8;}
63
+ .d2-2476658007 .stroke-N7{stroke:#FFFFFF;}
64
+ .d2-2476658007 .stroke-B1{stroke:#0D32B2;}
65
+ .d2-2476658007 .stroke-B2{stroke:#0D32B2;}
66
+ .d2-2476658007 .stroke-B3{stroke:#E3E9FD;}
67
+ .d2-2476658007 .stroke-B4{stroke:#E3E9FD;}
68
+ .d2-2476658007 .stroke-B5{stroke:#EDF0FD;}
69
+ .d2-2476658007 .stroke-B6{stroke:#F7F8FE;}
70
+ .d2-2476658007 .stroke-AA2{stroke:#4A6FF3;}
71
+ .d2-2476658007 .stroke-AA4{stroke:#EDF0FD;}
72
+ .d2-2476658007 .stroke-AA5{stroke:#F7F8FE;}
73
+ .d2-2476658007 .stroke-AB4{stroke:#EDF0FD;}
74
+ .d2-2476658007 .stroke-AB5{stroke:#F7F8FE;}
75
+ .d2-2476658007 .background-color-N1{background-color:#0A0F25;}
76
+ .d2-2476658007 .background-color-N2{background-color:#676C7E;}
77
+ .d2-2476658007 .background-color-N3{background-color:#9499AB;}
78
+ .d2-2476658007 .background-color-N4{background-color:#CFD2DD;}
79
+ .d2-2476658007 .background-color-N5{background-color:#DEE1EB;}
80
+ .d2-2476658007 .background-color-N6{background-color:#EEF1F8;}
81
+ .d2-2476658007 .background-color-N7{background-color:#FFFFFF;}
82
+ .d2-2476658007 .background-color-B1{background-color:#0D32B2;}
83
+ .d2-2476658007 .background-color-B2{background-color:#0D32B2;}
84
+ .d2-2476658007 .background-color-B3{background-color:#E3E9FD;}
85
+ .d2-2476658007 .background-color-B4{background-color:#E3E9FD;}
86
+ .d2-2476658007 .background-color-B5{background-color:#EDF0FD;}
87
+ .d2-2476658007 .background-color-B6{background-color:#F7F8FE;}
88
+ .d2-2476658007 .background-color-AA2{background-color:#4A6FF3;}
89
+ .d2-2476658007 .background-color-AA4{background-color:#EDF0FD;}
90
+ .d2-2476658007 .background-color-AA5{background-color:#F7F8FE;}
91
+ .d2-2476658007 .background-color-AB4{background-color:#EDF0FD;}
92
+ .d2-2476658007 .background-color-AB5{background-color:#F7F8FE;}
93
+ .d2-2476658007 .color-N1{color:#0A0F25;}
94
+ .d2-2476658007 .color-N2{color:#676C7E;}
95
+ .d2-2476658007 .color-N3{color:#9499AB;}
96
+ .d2-2476658007 .color-N4{color:#CFD2DD;}
97
+ .d2-2476658007 .color-N5{color:#DEE1EB;}
98
+ .d2-2476658007 .color-N6{color:#EEF1F8;}
99
+ .d2-2476658007 .color-N7{color:#FFFFFF;}
100
+ .d2-2476658007 .color-B1{color:#0D32B2;}
101
+ .d2-2476658007 .color-B2{color:#0D32B2;}
102
+ .d2-2476658007 .color-B3{color:#E3E9FD;}
103
+ .d2-2476658007 .color-B4{color:#E3E9FD;}
104
+ .d2-2476658007 .color-B5{color:#EDF0FD;}
105
+ .d2-2476658007 .color-B6{color:#F7F8FE;}
106
+ .d2-2476658007 .color-AA2{color:#4A6FF3;}
107
+ .d2-2476658007 .color-AA4{color:#EDF0FD;}
108
+ .d2-2476658007 .color-AA5{color:#F7F8FE;}
109
+ .d2-2476658007 .color-AB4{color:#EDF0FD;}
110
+ .d2-2476658007 .color-AB5{color:#F7F8FE;}.appendix text.text{fill:#0A0F25}.md{--color-fg-default:#0A0F25;--color-fg-muted:#676C7E;--color-fg-subtle:#9499AB;--color-canvas-default:#FFFFFF;--color-canvas-subtle:#EEF1F8;--color-border-default:#0D32B2;--color-border-muted:#0D32B2;--color-neutral-muted:#EEF1F8;--color-accent-fg:#0D32B2;--color-accent-emphasis:#0D32B2;--color-attention-subtle:#676C7E;--color-danger-fg:red;}.sketch-overlay-B1{fill:url(#streaks-darker-d2-2476658007);mix-blend-mode:lighten}.sketch-overlay-B2{fill:url(#streaks-darker-d2-2476658007);mix-blend-mode:lighten}.sketch-overlay-B3{fill:url(#streaks-bright-d2-2476658007);mix-blend-mode:darken}.sketch-overlay-B4{fill:url(#streaks-bright-d2-2476658007);mix-blend-mode:darken}.sketch-overlay-B5{fill:url(#streaks-bright-d2-2476658007);mix-blend-mode:darken}.sketch-overlay-B6{fill:url(#streaks-bright-d2-2476658007);mix-blend-mode:darken}.sketch-overlay-AA2{fill:url(#streaks-dark-d2-2476658007);mix-blend-mode:overlay}.sketch-overlay-AA4{fill:url(#streaks-bright-d2-2476658007);mix-blend-mode:darken}.sketch-overlay-AA5{fill:url(#streaks-bright-d2-2476658007);mix-blend-mode:darken}.sketch-overlay-AB4{fill:url(#streaks-bright-d2-2476658007);mix-blend-mode:darken}.sketch-overlay-AB5{fill:url(#streaks-bright-d2-2476658007);mix-blend-mode:darken}.sketch-overlay-N1{fill:url(#streaks-darker-d2-2476658007);mix-blend-mode:lighten}.sketch-overlay-N2{fill:url(#streaks-dark-d2-2476658007);mix-blend-mode:overlay}.sketch-overlay-N3{fill:url(#streaks-normal-d2-2476658007);mix-blend-mode:color-burn}.sketch-overlay-N4{fill:url(#streaks-normal-d2-2476658007);mix-blend-mode:color-burn}.sketch-overlay-N5{fill:url(#streaks-bright-d2-2476658007);mix-blend-mode:darken}.sketch-overlay-N6{fill:url(#streaks-bright-d2-2476658007);mix-blend-mode:darken}.sketch-overlay-N7{fill:url(#streaks-bright-d2-2476658007);mix-blend-mode:darken}.light-code{display: block}.dark-code{display: none}]]></style><style type="text/css">.d2-2476658007 .md em,
111
+ .d2-2476658007 .md dfn {
112
+ font-family: "d2-2476658007-font-italic";
113
+ }
114
+
115
+ .d2-2476658007 .md b,
116
+ .d2-2476658007 .md strong {
117
+ font-family: "d2-2476658007-font-bold";
118
+ }
119
+
120
+ .d2-2476658007 .md code,
121
+ .d2-2476658007 .md kbd,
122
+ .d2-2476658007 .md pre,
123
+ .d2-2476658007 .md samp {
124
+ font-family: "d2-2476658007-font-mono";
125
+ font-size: 1em;
126
+ }
127
+
128
+ .d2-2476658007 .md {
129
+ tab-size: 4;
130
+ }
131
+
132
+ /* variables are provided in d2renderers/d2svg/d2svg.go */
133
+
134
+ .d2-2476658007 .md {
135
+ -ms-text-size-adjust: 100%;
136
+ -webkit-text-size-adjust: 100%;
137
+ margin: 0;
138
+ background-color: transparent; /* we don't want to define the background color */
139
+ font-family: "d2-2476658007-font-regular";
140
+ font-size: 16px;
141
+ line-height: 1.5;
142
+ word-wrap: break-word;
143
+ }
144
+
145
+ .d2-2476658007 .md details,
146
+ .d2-2476658007 .md figcaption,
147
+ .d2-2476658007 .md figure {
148
+ display: block;
149
+ }
150
+
151
+ .d2-2476658007 .md summary {
152
+ display: list-item;
153
+ }
154
+
155
+ .d2-2476658007 .md [hidden] {
156
+ display: none !important;
157
+ }
158
+
159
+ .d2-2476658007 .md a {
160
+ background-color: transparent;
161
+ color: var(--color-accent-fg);
162
+ text-decoration: none;
163
+ }
164
+
165
+ .d2-2476658007 .md a:active,
166
+ .d2-2476658007 .md a:hover {
167
+ outline-width: 0;
168
+ }
169
+
170
+ .d2-2476658007 .md abbr[title] {
171
+ border-bottom: none;
172
+ text-decoration: underline dotted;
173
+ }
174
+
175
+ .d2-2476658007 .md dfn {
176
+ font-style: italic;
177
+ }
178
+
179
+ .d2-2476658007 .md h1 {
180
+ margin: 0.67em 0;
181
+ padding-bottom: 0.3em;
182
+ font-size: 2em;
183
+ border-bottom: 1px solid var(--color-border-muted);
184
+ }
185
+
186
+ .d2-2476658007 .md mark {
187
+ background-color: var(--color-attention-subtle);
188
+ color: var(--color-text-primary);
189
+ }
190
+
191
+ .d2-2476658007 .md small {
192
+ font-size: 90%;
193
+ }
194
+
195
+ .d2-2476658007 .md sub,
196
+ .d2-2476658007 .md sup {
197
+ font-size: 75%;
198
+ line-height: 0;
199
+ position: relative;
200
+ vertical-align: baseline;
201
+ }
202
+
203
+ .d2-2476658007 .md sub {
204
+ bottom: -0.25em;
205
+ }
206
+
207
+ .d2-2476658007 .md sup {
208
+ top: -0.5em;
209
+ }
210
+
211
+ .d2-2476658007 .md img {
212
+ border-style: none;
213
+ max-width: 100%;
214
+ box-sizing: content-box;
215
+ background-color: var(--color-canvas-default);
216
+ }
217
+
218
+ .d2-2476658007 .md figure {
219
+ margin: 1em 40px;
220
+ }
221
+
222
+ .d2-2476658007 .md hr {
223
+ box-sizing: content-box;
224
+ overflow: hidden;
225
+ background: transparent;
226
+ border-bottom: 1px solid var(--color-border-muted);
227
+ height: 0.25em;
228
+ padding: 0;
229
+ margin: 24px 0;
230
+ background-color: var(--color-border-default);
231
+ border: 0;
232
+ }
233
+
234
+ .d2-2476658007 .md input {
235
+ font: inherit;
236
+ margin: 0;
237
+ overflow: visible;
238
+ font-family: inherit;
239
+ font-size: inherit;
240
+ line-height: inherit;
241
+ }
242
+
243
+ .d2-2476658007 .md [type="button"],
244
+ .d2-2476658007 .md [type="reset"],
245
+ .d2-2476658007 .md [type="submit"] {
246
+ -webkit-appearance: button;
247
+ }
248
+
249
+ .d2-2476658007 .md [type="button"]::-moz-focus-inner,
250
+ .d2-2476658007 .md [type="reset"]::-moz-focus-inner,
251
+ .d2-2476658007 .md [type="submit"]::-moz-focus-inner {
252
+ border-style: none;
253
+ padding: 0;
254
+ }
255
+
256
+ .d2-2476658007 .md [type="button"]:-moz-focusring,
257
+ .d2-2476658007 .md [type="reset"]:-moz-focusring,
258
+ .d2-2476658007 .md [type="submit"]:-moz-focusring {
259
+ outline: 1px dotted ButtonText;
260
+ }
261
+
262
+ .d2-2476658007 .md [type="checkbox"],
263
+ .d2-2476658007 .md [type="radio"] {
264
+ box-sizing: border-box;
265
+ padding: 0;
266
+ }
267
+
268
+ .d2-2476658007 .md [type="number"]::-webkit-inner-spin-button,
269
+ .d2-2476658007 .md [type="number"]::-webkit-outer-spin-button {
270
+ height: auto;
271
+ }
272
+
273
+ .d2-2476658007 .md [type="search"] {
274
+ -webkit-appearance: textfield;
275
+ outline-offset: -2px;
276
+ }
277
+
278
+ .d2-2476658007 .md [type="search"]::-webkit-search-cancel-button,
279
+ .d2-2476658007 .md [type="search"]::-webkit-search-decoration {
280
+ -webkit-appearance: none;
281
+ }
282
+
283
+ .d2-2476658007 .md ::-webkit-input-placeholder {
284
+ color: inherit;
285
+ opacity: 0.54;
286
+ }
287
+
288
+ .d2-2476658007 .md ::-webkit-file-upload-button {
289
+ -webkit-appearance: button;
290
+ font: inherit;
291
+ }
292
+
293
+ .d2-2476658007 .md a:hover {
294
+ text-decoration: underline;
295
+ }
296
+
297
+ .d2-2476658007 .md hr::before {
298
+ display: table;
299
+ content: "";
300
+ }
301
+
302
+ .d2-2476658007 .md hr::after {
303
+ display: table;
304
+ clear: both;
305
+ content: "";
306
+ }
307
+
308
+ .d2-2476658007 .md table {
309
+ border-spacing: 0;
310
+ border-collapse: collapse;
311
+ display: block;
312
+ width: max-content;
313
+ max-width: 100%;
314
+ overflow: auto;
315
+ }
316
+
317
+ .d2-2476658007 .md td,
318
+ .d2-2476658007 .md th {
319
+ padding: 0;
320
+ }
321
+
322
+ .d2-2476658007 .md details summary {
323
+ cursor: pointer;
324
+ }
325
+
326
+ .d2-2476658007 .md details:not([open]) > *:not(summary) {
327
+ display: none !important;
328
+ }
329
+
330
+ .d2-2476658007 .md kbd {
331
+ display: inline-block;
332
+ padding: 3px 5px;
333
+ color: var(--color-fg-default);
334
+ vertical-align: middle;
335
+ background-color: var(--color-canvas-subtle);
336
+ border: solid 1px var(--color-neutral-muted);
337
+ border-bottom-color: var(--color-neutral-muted);
338
+ border-radius: 6px;
339
+ box-shadow: inset 0 -1px 0 var(--color-neutral-muted);
340
+ }
341
+
342
+ .d2-2476658007 .md h1,
343
+ .d2-2476658007 .md h2,
344
+ .d2-2476658007 .md h3,
345
+ .d2-2476658007 .md h4,
346
+ .d2-2476658007 .md h5,
347
+ .d2-2476658007 .md h6 {
348
+ margin-top: 24px;
349
+ margin-bottom: 16px;
350
+ font-weight: 400;
351
+ line-height: 1.25;
352
+ font-family: "d2-2476658007-font-semibold";
353
+ }
354
+
355
+ .d2-2476658007 .md h2 {
356
+ padding-bottom: 0.3em;
357
+ font-size: 1.5em;
358
+ border-bottom: 1px solid var(--color-border-muted);
359
+ }
360
+
361
+ .d2-2476658007 .md h3 {
362
+ font-size: 1.25em;
363
+ }
364
+
365
+ .d2-2476658007 .md h4 {
366
+ font-size: 1em;
367
+ }
368
+
369
+ .d2-2476658007 .md h5 {
370
+ font-size: 0.875em;
371
+ }
372
+
373
+ .d2-2476658007 .md h6 {
374
+ font-size: 0.85em;
375
+ color: var(--color-fg-muted);
376
+ }
377
+
378
+ .d2-2476658007 .md p {
379
+ margin-top: 0;
380
+ margin-bottom: 10px;
381
+ }
382
+
383
+ .d2-2476658007 .md blockquote {
384
+ margin: 0;
385
+ padding: 0 1em;
386
+ color: var(--color-fg-muted);
387
+ border-left: 0.25em solid var(--color-border-default);
388
+ }
389
+
390
+ .d2-2476658007 .md ul,
391
+ .d2-2476658007 .md ol {
392
+ margin-top: 0;
393
+ margin-bottom: 0;
394
+ padding-left: 2em;
395
+ }
396
+
397
+ .d2-2476658007 .md ol ol,
398
+ .d2-2476658007 .md ul ol {
399
+ list-style-type: lower-roman;
400
+ }
401
+
402
+ .d2-2476658007 .md ul ul ol,
403
+ .d2-2476658007 .md ul ol ol,
404
+ .d2-2476658007 .md ol ul ol,
405
+ .d2-2476658007 .md ol ol ol {
406
+ list-style-type: lower-alpha;
407
+ }
408
+
409
+ .d2-2476658007 .md dd {
410
+ margin-left: 0;
411
+ }
412
+
413
+ .d2-2476658007 .md pre {
414
+ margin-top: 0;
415
+ margin-bottom: 0;
416
+ word-wrap: normal;
417
+ }
418
+
419
+ .d2-2476658007 .md ::placeholder {
420
+ color: var(--color-fg-subtle);
421
+ opacity: 1;
422
+ }
423
+
424
+ .d2-2476658007 .md input::-webkit-outer-spin-button,
425
+ .d2-2476658007 .md input::-webkit-inner-spin-button {
426
+ margin: 0;
427
+ -webkit-appearance: none;
428
+ appearance: none;
429
+ }
430
+
431
+ .d2-2476658007 .md::before {
432
+ display: table;
433
+ content: "";
434
+ }
435
+
436
+ .d2-2476658007 .md::after {
437
+ display: table;
438
+ clear: both;
439
+ content: "";
440
+ }
441
+
442
+ .d2-2476658007 .md > *:first-child {
443
+ margin-top: 0 !important;
444
+ }
445
+
446
+ .d2-2476658007 .md > *:last-child {
447
+ margin-bottom: 0 !important;
448
+ }
449
+
450
+ .d2-2476658007 .md a:not([href]) {
451
+ color: inherit;
452
+ text-decoration: none;
453
+ }
454
+
455
+ .d2-2476658007 .md .absent {
456
+ color: var(--color-danger-fg);
457
+ }
458
+
459
+ .d2-2476658007 .md .anchor {
460
+ float: left;
461
+ padding-right: 4px;
462
+ margin-left: -20px;
463
+ line-height: 1;
464
+ }
465
+
466
+ .d2-2476658007 .md .anchor:focus {
467
+ outline: none;
468
+ }
469
+
470
+ .d2-2476658007 .md p,
471
+ .d2-2476658007 .md blockquote,
472
+ .d2-2476658007 .md ul,
473
+ .d2-2476658007 .md ol,
474
+ .d2-2476658007 .md dl,
475
+ .d2-2476658007 .md table,
476
+ .d2-2476658007 .md pre,
477
+ .d2-2476658007 .md details {
478
+ margin-top: 0;
479
+ margin-bottom: 16px;
480
+ }
481
+
482
+ .d2-2476658007 .md blockquote > :first-child {
483
+ margin-top: 0;
484
+ }
485
+
486
+ .d2-2476658007 .md blockquote > :last-child {
487
+ margin-bottom: 0;
488
+ }
489
+
490
+ .d2-2476658007 .md sup > a::before {
491
+ content: "[";
492
+ }
493
+
494
+ .d2-2476658007 .md sup > a::after {
495
+ content: "]";
496
+ }
497
+
498
+ .d2-2476658007 .md h1:hover .anchor,
499
+ .d2-2476658007 .md h2:hover .anchor,
500
+ .d2-2476658007 .md h3:hover .anchor,
501
+ .d2-2476658007 .md h4:hover .anchor,
502
+ .d2-2476658007 .md h5:hover .anchor,
503
+ .d2-2476658007 .md h6:hover .anchor {
504
+ text-decoration: none;
505
+ }
506
+
507
+ .d2-2476658007 .md h1 tt,
508
+ .d2-2476658007 .md h1 code,
509
+ .d2-2476658007 .md h2 tt,
510
+ .d2-2476658007 .md h2 code,
511
+ .d2-2476658007 .md h3 tt,
512
+ .d2-2476658007 .md h3 code,
513
+ .d2-2476658007 .md h4 tt,
514
+ .d2-2476658007 .md h4 code,
515
+ .d2-2476658007 .md h5 tt,
516
+ .d2-2476658007 .md h5 code,
517
+ .d2-2476658007 .md h6 tt,
518
+ .d2-2476658007 .md h6 code {
519
+ padding: 0 0.2em;
520
+ font-size: inherit;
521
+ }
522
+
523
+ .d2-2476658007 .md ul.no-list,
524
+ .d2-2476658007 .md ol.no-list {
525
+ padding: 0;
526
+ list-style-type: none;
527
+ }
528
+
529
+ .d2-2476658007 .md ol[type="1"] {
530
+ list-style-type: decimal;
531
+ }
532
+
533
+ .d2-2476658007 .md ol[type="a"] {
534
+ list-style-type: lower-alpha;
535
+ }
536
+
537
+ .d2-2476658007 .md ol[type="i"] {
538
+ list-style-type: lower-roman;
539
+ }
540
+
541
+ .d2-2476658007 .md div > ol:not([type]) {
542
+ list-style-type: decimal;
543
+ }
544
+
545
+ .d2-2476658007 .md ul ul,
546
+ .d2-2476658007 .md ul ol,
547
+ .d2-2476658007 .md ol ol,
548
+ .d2-2476658007 .md ol ul {
549
+ margin-top: 0;
550
+ margin-bottom: 0;
551
+ }
552
+
553
+ .d2-2476658007 .md li > p {
554
+ margin-top: 16px;
555
+ }
556
+
557
+ .d2-2476658007 .md li + li {
558
+ margin-top: 0.25em;
559
+ }
560
+
561
+ .d2-2476658007 .md dl {
562
+ padding: 0;
563
+ }
564
+
565
+ .d2-2476658007 .md dl dt {
566
+ padding: 0;
567
+ margin-top: 16px;
568
+ font-size: 1em;
569
+ font-style: italic;
570
+ font-family: "d2-2476658007-font-semibold";
571
+ }
572
+
573
+ .d2-2476658007 .md dl dd {
574
+ padding: 0 16px;
575
+ margin-bottom: 16px;
576
+ }
577
+
578
+ .d2-2476658007 .md table th {
579
+ font-family: "d2-2476658007-font-semibold";
580
+ }
581
+
582
+ .d2-2476658007 .md table th,
583
+ .d2-2476658007 .md table td {
584
+ padding: 6px 13px;
585
+ border: 1px solid var(--color-border-default);
586
+ }
587
+
588
+ .d2-2476658007 .md table tr {
589
+ background-color: var(--color-canvas-default);
590
+ border-top: 1px solid var(--color-border-muted);
591
+ }
592
+
593
+ .d2-2476658007 .md table tr:nth-child(2n) {
594
+ background-color: var(--color-canvas-subtle);
595
+ }
596
+
597
+ .d2-2476658007 .md table img {
598
+ background-color: transparent;
599
+ }
600
+
601
+ .d2-2476658007 .md img[align="right"] {
602
+ padding-left: 20px;
603
+ }
604
+
605
+ .d2-2476658007 .md img[align="left"] {
606
+ padding-right: 20px;
607
+ }
608
+
609
+ .d2-2476658007 .md span.frame {
610
+ display: block;
611
+ overflow: hidden;
612
+ }
613
+
614
+ .d2-2476658007 .md span.frame > span {
615
+ display: block;
616
+ float: left;
617
+ width: auto;
618
+ padding: 7px;
619
+ margin: 13px 0 0;
620
+ overflow: hidden;
621
+ border: 1px solid var(--color-border-default);
622
+ }
623
+
624
+ .d2-2476658007 .md span.frame span img {
625
+ display: block;
626
+ float: left;
627
+ }
628
+
629
+ .d2-2476658007 .md span.frame span span {
630
+ display: block;
631
+ padding: 5px 0 0;
632
+ clear: both;
633
+ color: var(--color-fg-default);
634
+ }
635
+
636
+ .d2-2476658007 .md span.align-center {
637
+ display: block;
638
+ overflow: hidden;
639
+ clear: both;
640
+ }
641
+
642
+ .d2-2476658007 .md span.align-center > span {
643
+ display: block;
644
+ margin: 13px auto 0;
645
+ overflow: hidden;
646
+ text-align: center;
647
+ }
648
+
649
+ .d2-2476658007 .md span.align-center span img {
650
+ margin: 0 auto;
651
+ text-align: center;
652
+ }
653
+
654
+ .d2-2476658007 .md span.align-right {
655
+ display: block;
656
+ overflow: hidden;
657
+ clear: both;
658
+ }
659
+
660
+ .d2-2476658007 .md span.align-right > span {
661
+ display: block;
662
+ margin: 13px 0 0;
663
+ overflow: hidden;
664
+ text-align: right;
665
+ }
666
+
667
+ .d2-2476658007 .md span.align-right span img {
668
+ margin: 0;
669
+ text-align: right;
670
+ }
671
+
672
+ .d2-2476658007 .md span.float-left {
673
+ display: block;
674
+ float: left;
675
+ margin-right: 13px;
676
+ overflow: hidden;
677
+ }
678
+
679
+ .d2-2476658007 .md span.float-left span {
680
+ margin: 13px 0 0;
681
+ }
682
+
683
+ .d2-2476658007 .md span.float-right {
684
+ display: block;
685
+ float: right;
686
+ margin-left: 13px;
687
+ overflow: hidden;
688
+ }
689
+
690
+ .d2-2476658007 .md span.float-right > span {
691
+ display: block;
692
+ margin: 13px auto 0;
693
+ overflow: hidden;
694
+ text-align: right;
695
+ }
696
+
697
+ .d2-2476658007 .md code,
698
+ .d2-2476658007 .md tt {
699
+ padding: 0.2em 0.4em;
700
+ margin: 0;
701
+ font-size: 85%;
702
+ background-color: var(--color-neutral-muted);
703
+ border-radius: 6px;
704
+ }
705
+
706
+ .d2-2476658007 .md code br,
707
+ .d2-2476658007 .md tt br {
708
+ display: none;
709
+ }
710
+
711
+ .d2-2476658007 .md del code {
712
+ text-decoration: inherit;
713
+ }
714
+
715
+ .d2-2476658007 .md pre code {
716
+ font-size: 100%;
717
+ }
718
+
719
+ .d2-2476658007 .md pre > code {
720
+ padding: 0;
721
+ margin: 0;
722
+ word-break: normal;
723
+ white-space: pre;
724
+ background: transparent;
725
+ border: 0;
726
+ }
727
+
728
+ .d2-2476658007 .md .highlight {
729
+ margin-bottom: 16px;
730
+ }
731
+
732
+ .d2-2476658007 .md .highlight pre {
733
+ margin-bottom: 0;
734
+ word-break: normal;
735
+ }
736
+
737
+ .d2-2476658007 .md .highlight pre,
738
+ .d2-2476658007 .md pre {
739
+ padding: 16px;
740
+ overflow: auto;
741
+ font-size: 85%;
742
+ line-height: 1.45;
743
+ background-color: var(--color-canvas-subtle);
744
+ border-radius: 6px;
745
+ }
746
+
747
+ .d2-2476658007 .md pre code,
748
+ .d2-2476658007 .md pre tt {
749
+ display: inline;
750
+ max-width: auto;
751
+ padding: 0;
752
+ margin: 0;
753
+ overflow: visible;
754
+ line-height: inherit;
755
+ word-wrap: normal;
756
+ background-color: transparent;
757
+ border: 0;
758
+ }
759
+
760
+ .d2-2476658007 .md .csv-data td,
761
+ .d2-2476658007 .md .csv-data th {
762
+ padding: 5px;
763
+ overflow: hidden;
764
+ font-size: 12px;
765
+ line-height: 1;
766
+ text-align: left;
767
+ white-space: nowrap;
768
+ }
769
+
770
+ .d2-2476658007 .md .csv-data .blob-num {
771
+ padding: 10px 8px 9px;
772
+ text-align: right;
773
+ background: var(--color-canvas-default);
774
+ border: 0;
775
+ }
776
+
777
+ .d2-2476658007 .md .csv-data tr {
778
+ border-top: 0;
779
+ }
780
+
781
+ .d2-2476658007 .md .csv-data th {
782
+ font-family: "d2-2476658007-font-semibold";
783
+ background: var(--color-canvas-subtle);
784
+ border-top: 0;
785
+ }
786
+
787
+ .d2-2476658007 .md .footnotes {
788
+ font-size: 12px;
789
+ color: var(--color-fg-muted);
790
+ border-top: 1px solid var(--color-border-default);
791
+ }
792
+
793
+ .d2-2476658007 .md .footnotes ol {
794
+ padding-left: 16px;
795
+ }
796
+
797
+ .d2-2476658007 .md .footnotes li {
798
+ position: relative;
799
+ }
800
+
801
+ .d2-2476658007 .md .footnotes li:target::before {
802
+ position: absolute;
803
+ top: -8px;
804
+ right: -8px;
805
+ bottom: -8px;
806
+ left: -24px;
807
+ pointer-events: none;
808
+ content: "";
809
+ border: 2px solid var(--color-accent-emphasis);
810
+ border-radius: 6px;
811
+ }
812
+
813
+ .d2-2476658007 .md .footnotes li:target {
814
+ color: var(--color-fg-default);
815
+ }
816
+
817
+ .d2-2476658007 .md .task-list-item {
818
+ list-style-type: none;
819
+ }
820
+
821
+ .d2-2476658007 .md .task-list-item label {
822
+ font-weight: 400;
823
+ }
824
+
825
+ .d2-2476658007 .md .task-list-item.enabled label {
826
+ cursor: pointer;
827
+ }
828
+
829
+ .d2-2476658007 .md .task-list-item + .task-list-item {
830
+ margin-top: 3px;
831
+ }
832
+
833
+ .d2-2476658007 .md .task-list-item .handle {
834
+ display: none;
835
+ }
836
+
837
+ .d2-2476658007 .md .task-list-item-checkbox {
838
+ margin: 0 0.2em 0.25em -1.6em;
839
+ vertical-align: middle;
840
+ }
841
+
842
+ .d2-2476658007 .md .contains-task-list:dir(rtl) .task-list-item-checkbox {
843
+ margin: 0 -1.6em 0.25em 0.2em;
844
+ }
845
+ </style><g class="dGl0bGU="><g class="shape" ></g><text x="946.500000" y="-27.000000" fill="#0A0F25" class="text-bold fill-N1" style="text-anchor:middle;font-size:24px">SteerEx Authentication Flow</text></g><g class="dXNlcg=="><g class="shape" ><path d="M 924 66 H 876 V 65 C 876 54 881 44 890 39 C 885 35 882 28 882 21 C 882 10 890 0 900 0 C 910 0 918 10 918 21 C 918 28 915 34 911 38 C 919 43 925 53 925 64 V 65 H 924 Z" stroke="#0D32B2" fill="#e3f2fd" class=" stroke-B1" style="stroke-width:2;" /></g><text x="900.000000" y="87.000000" fill="#0A0F25" class="text-bold fill-N1" style="text-anchor:middle;font-size:16px">User</text></g><g class="bG9naW5fcGhhc2U="><g class="shape" ><rect x="772.000000" y="207.000000" width="256.000000" height="229.000000" rx="8.000000" stroke="#bdbdbd" fill="#fafafa" style="stroke-width:2;" /></g><text x="900.000000" y="194.000000" fill="#0A0F25" class="text fill-N1" style="text-anchor:middle;font-size:28px">Login Phase</text></g><g class="a2V5Y2xvYWtfcGhhc2U="><g class="shape" ><rect x="478.000000" y="576.000000" width="954.000000" height="746.000000" rx="8.000000" stroke="#ce93d8" fill="#f3e5f5" style="stroke-width:2;" /></g><text x="955.000000" y="563.000000" fill="#0A0F25" class="text fill-N1" style="text-anchor:middle;font-size:28px">Keycloak Authentication</text></g><g class="YXV0aF9waGFzZQ=="><g class="shape" ><rect x="501.000000" y="1483.000000" width="962.000000" height="565.000000" rx="8.000000" stroke="#81c784" fill="#e8f5e9" style="stroke-width:2;" /></g><text x="982.000000" y="1470.000000" fill="#0A0F25" class="text fill-N1" style="text-anchor:middle;font-size:28px">User Data &amp; Authorization</text></g><g class="ZXJyb3Jz"><g class="shape" ><rect x="10.000000" y="2783.000000" width="1195.000000" height="84.000000" rx="8.000000" stroke="#ef9a9a" fill="#ffebee" style="stroke-width:2;" /></g><text x="607.500000" y="2770.000000" fill="#0A0F25" class="text fill-N1" style="text-anchor:middle;font-size:28px">Error States</text></g><g class="cHJvdGVjdGVkX3BoYXNl"><g class="shape" ><rect x="1290.000000" y="2245.000000" width="517.000000" height="796.000000" rx="8.000000" stroke="#64b5f6" fill="#e3f2fd" style="stroke-width:2;" /></g><text x="1548.500000" y="2232.000000" fill="#0A0F25" class="text fill-N1" style="text-anchor:middle;font-size:28px">Protected Routes</text></g><g class="ZGFzaGJvYXJkX3BoYXNl"><g class="shape" ><rect x="1409.000000" y="3181.000000" width="474.000000" height="229.000000" rx="8.000000" stroke="#ffcc80" fill="#fff8e1" style="stroke-width:2;" /></g><text x="1646.000000" y="3168.000000" fill="#0A0F25" class="text fill-N1" style="text-anchor:middle;font-size:28px">Dashboard Redirects</text></g><g class="ZmluYWw="><g class="shape" ></g><g><foreignObject requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" x="1471.000000" y="3551.000000" width="350" height="64"><div xmlns="http://www.w3.org/1999/xhtml" class="md" style="background-color:#81c784;color:#1b5e20"><p><strong>/dashboard/$programId/$deliverableId/overview</strong></p>
846
+ <p>Application Ready</p>
847
+ </div></foreignObject></g></g><g class="bGVnZW5k"><g class="shape" ><rect x="1903.000000" y="3671.000000" width="930.000000" height="126.000000" rx="8.000000" stroke="#e0e0e0" fill="#fafafa" style="stroke-width:2;" /></g><text x="2368.000000" y="3658.000000" fill="#0A0F25" class="text fill-N1" style="text-anchor:middle;font-size:28px">Legend</text></g><g class="bG9naW5fcGhhc2UuaW5kZXhfcm91dGU="><g class="shape" ></g><g><foreignObject requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" x="811.000000" y="237.000000" width="177" height="24"><div xmlns="http://www.w3.org/1999/xhtml" class="md color-N1" style="background-color:#e3f2fd"><p><strong>/</strong> (Index Route)
848
+ Entry point</p>
849
+ </div></foreignObject></g></g><g class="bG9naW5fcGhhc2UubG9naW5fcGFnZQ=="><g class="shape" ></g><g><foreignObject requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" x="802.000000" y="382.000000" width="196" height="24"><div xmlns="http://www.w3.org/1999/xhtml" class="md color-N1" style="background-color:#fff3e0"><p><strong>/login</strong>
850
+ LoginPage component</p>
851
+ </div></foreignObject></g></g><g class="a2V5Y2xvYWtfcGhhc2Uua2NfaW5pdA=="><g class="shape" ></g><g><foreignObject requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" x="715.000000" y="606.000000" width="369" height="24"><div xmlns="http://www.w3.org/1999/xhtml" class="md color-N1" style="background-color:#e1bee7"><p><strong>Keycloak Init</strong>
852
+ check-sso mode
853
+ loginState = 'inProgress'</p>
854
+ </div></foreignObject></g></g><g class="a2V5Y2xvYWtfcGhhc2UuaW5pdF9yZXN1bHQ="><g class="shape" ><path d="M 900 828 C 899 828 899 828 898 828 L 815 780 C 814 779 814 779 815 778 L 898 730 C 899 729 900 729 901 730 L 985 778 C 986 779 986 779 985 780 L 902 828 C 901 828 901 828 900 828 Z" stroke="#0D32B2" fill="#fff9c4" class=" stroke-B1" style="stroke-width:2;" /></g><g><foreignObject requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" x="864.500000" y="767.000000" width="71" height="24"><div xmlns="http://www.w3.org/1999/xhtml" class="md color-N1" style="background-color:#fff9c4"><p>Init
855
+ result?</p>
856
+ </div></foreignObject></g></g><g class="a2V5Y2xvYWtfcGhhc2Uuc3NvX2NoZWNr"><g class="shape" ><path d="M 1031 1097 C 1030 1097 1030 1097 1029 1097 L 927 1049 C 926 1048 926 1048 927 1047 L 1029 999 C 1030 998 1032 998 1033 999 L 1135 1047 C 1136 1048 1136 1048 1135 1049 L 1033 1097 C 1032 1097 1032 1097 1031 1097 Z" stroke="#0D32B2" fill="#fff9c4" class=" stroke-B1" style="stroke-width:2;" /></g><g><foreignObject requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" x="986.000000" y="1036.000000" width="90" height="24"><div xmlns="http://www.w3.org/1999/xhtml" class="md color-N1" style="background-color:#fff9c4"><p>SSO
857
+ Session?</p>
858
+ </div></foreignObject></g></g><g class="a2V5Y2xvYWtfcGhhc2Uua2NfbG9naW4="><g class="shape" ></g><g><foreignObject requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" x="601.000000" y="1268.000000" width="429" height="24"><div xmlns="http://www.w3.org/1999/xhtml" class="md color-N1" style="background-color:#ffccbc"><p><strong>Keycloak Login</strong>
859
+ User enters credentials
860
+ loginState = 'loggedOut'</p>
861
+ </div></foreignObject></g></g><g class="a2V5Y2xvYWtfcGhhc2Uuc2lsZW50X3Rva2Vu"><g class="shape" ></g><g><foreignObject requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" x="1090.000000" y="1268.000000" width="312" height="24"><div xmlns="http://www.w3.org/1999/xhtml" class="md color-N1" style="background-color:#c8e6c9"><p><strong>Silent Token</strong>
862
+ Via iframe
863
+ loginState = 'loggedIn'</p>
864
+ </div></foreignObject></g></g><g class="a2V5Y2xvYWtfcGhhc2UuZXJyb3Jz"><g class="shape" ><rect x="508.000000" y="985.000000" width="215.000000" height="126.000000" stroke="#0D32B2" fill="#EDF0FD" class=" stroke-B1 fill-B5" style="stroke-width:2;" /></g><text x="615.500000" y="973.000000" fill="#0A0F25" class="text fill-N1" style="text-anchor:middle;font-size:24px">errors</text></g><g class="YXV0aF9waGFzZS5sb2FkX3VzZXI="><g class="shape" ></g><g><foreignObject requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" x="829.000000" y="1513.000000" width="403" height="24"><div xmlns="http://www.w3.org/1999/xhtml" class="md color-N1" style="background-color:#c8e6c9"><p><strong>Load User Data</strong>
865
+ trpc.viewer.viewer
866
+ (enabled when loggedIn)</p>
867
+ </div></foreignObject></g></g><g class="YXV0aF9waGFzZS5sb2FkX2NoZWNr"><g class="shape" ><path d="M 1031 1735 C 1030 1735 1030 1735 1029 1735 L 922 1687 C 921 1686 921 1686 922 1685 L 1029 1637 C 1030 1636 1032 1636 1033 1637 L 1140 1685 C 1141 1686 1141 1686 1140 1687 L 1033 1735 C 1032 1735 1032 1735 1031 1735 Z" stroke="#0D32B2" fill="#fff9c4" class=" stroke-B1" style="stroke-width:2;" /></g><g><foreignObject requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" x="983.500000" y="1674.000000" width="95" height="24"><div xmlns="http://www.w3.org/1999/xhtml" class="md color-N1" style="background-color:#fff9c4"><p>Load
868
+ success?</p>
869
+ </div></foreignObject></g></g><g class="YXV0aF9waGFzZS5yb2xlX2NoZWNr"><g class="shape" ><path d="M 1255 2004 C 1254 2004 1253 2004 1252 2004 L 1078 1956 C 1076 1955 1076 1955 1078 1954 L 1252 1906 C 1254 1905 1257 1905 1258 1906 L 1431 1954 C 1433 1955 1433 1955 1431 1956 L 1258 2004 C 1257 2004 1256 2004 1255 2004 Z" stroke="#0D32B2" fill="#fff9c4" class=" stroke-B1" style="stroke-width:2;" /></g><g><foreignObject requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" x="1173.500000" y="1943.000000" width="163" height="24"><div xmlns="http://www.w3.org/1999/xhtml" class="md color-N1" style="background-color:#fff9c4"><p>Has
870
+ 'unauthorized'
871
+ role?</p>
872
+ </div></foreignObject></g></g><g class="YXV0aF9waGFzZS5lcnJvcnM="><g class="shape" ><rect x="531.000000" y="1892.000000" width="221.000000" height="126.000000" stroke="#0D32B2" fill="#EDF0FD" class=" stroke-B1 fill-B5" style="stroke-width:2;" /></g><text x="641.500000" y="1880.000000" fill="#0A0F25" class="text fill-N1" style="text-anchor:middle;font-size:24px">errors</text></g><g class="ZXJyb3JzLmF1dGhfZXJyb3JfaW5pdA=="><g class="shape" ></g><g><foreignObject requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" x="40.000000" y="2813.000000" width="185" height="24"><div xmlns="http://www.w3.org/1999/xhtml" class="md color-N1" style="background-color:#ffcdd2"><p><strong>/auth-error</strong>
873
+ ?type=errorInit</p>
874
+ </div></foreignObject></g></g><g class="ZXJyb3JzLmF1dGhfZXJyb3JfbG9hZA=="><g class="shape" ></g><g><foreignObject requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" x="285.000000" y="2813.000000" width="226" height="24"><div xmlns="http://www.w3.org/1999/xhtml" class="md color-N1" style="background-color:#ffcdd2"><p><strong>/auth-error</strong>
875
+ ?type=errorLoadUser</p>
876
+ </div></foreignObject></g></g><g class="ZXJyb3JzLmF1dGhfZXJyb3JfdG9rZW4="><g class="shape" ></g><g><foreignObject requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" x="571.000000" y="2813.000000" width="254" height="24"><div xmlns="http://www.w3.org/1999/xhtml" class="md color-N1" style="background-color:#ffcdd2"><p><strong>/auth-error</strong>
877
+ ?type=errorTokenRefresh</p>
878
+ </div></foreignObject></g></g><g class="ZXJyb3JzLnVuYXV0aG9yaXplZA=="><g class="shape" ></g><g><foreignObject requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" x="885.000000" y="2813.000000" width="101" height="24"><div xmlns="http://www.w3.org/1999/xhtml" class="md color-N1" style="background-color:#ffcdd2"><p><strong>/unauthorized</strong></p>
879
+ </div></foreignObject></g></g><g class="ZXJyb3JzLm5vX3Byb2dyYW1z"><g class="shape" ></g><g><foreignObject requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" x="1046.000000" y="2813.000000" width="129" height="24"><div xmlns="http://www.w3.org/1999/xhtml" class="md color-N1" style="background-color:#ffcdd2"><p><strong>Error</strong>
880
+ No Programs</p>
881
+ </div></foreignObject></g></g><g class="cHJvdGVjdGVkX3BoYXNlLmF1dGhfZ3VhcmQ="><g class="shape" ></g><g><foreignObject requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" x="1320.000000" y="2275.000000" width="421" height="24"><div xmlns="http://www.w3.org/1999/xhtml" class="md color-N1" style="background-color:#bbdefb"><p><strong>/_auth-routes</strong>
882
+ AuthGuard component
883
+ (renders when loggedIn)</p>
884
+ </div></foreignObject></g></g><g class="cHJvdGVjdGVkX3BoYXNlLmxvYWRfcHJvZ3JhbXM="><g class="shape" ></g><g><foreignObject requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" x="1506.000000" y="2399.000000" width="239" height="24"><div xmlns="http://www.w3.org/1999/xhtml" class="md color-N1" style="background-color:#b3e5fc"><p><strong>Load Programs</strong>
885
+ useUserPrograms()</p>
886
+ </div></foreignObject></g></g><g class="cHJvdGVjdGVkX3BoYXNlLnByb2dyYW1zX2NoZWNr"><g class="shape" ><path d="M 1626 2642 C 1625 2642 1624 2642 1623 2642 L 1476 2594 C 1474 2593 1474 2593 1476 2592 L 1623 2544 C 1625 2543 1627 2543 1628 2544 L 1775 2592 C 1777 2593 1777 2593 1775 2594 L 1629 2642 C 1628 2642 1627 2642 1626 2642 Z" stroke="#0D32B2" fill="#fff9c4" class=" stroke-B1" style="stroke-width:2;" /></g><g><foreignObject requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" x="1558.000000" y="2581.000000" width="136" height="24"><div xmlns="http://www.w3.org/1999/xhtml" class="md color-N1" style="background-color:#fff9c4"><p>Programs
887
+ available?</p>
888
+ </div></foreignObject></g></g><g class="cHJvdGVjdGVkX3BoYXNlLnNlbGVjdF9wcm9ncmFt"><g class="shape" ></g><g><foreignObject requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" x="1524.000000" y="2813.000000" width="244" height="24"><div xmlns="http://www.w3.org/1999/xhtml" class="md color-N1" style="background-color:#b3e5fc"><p><strong>Select Program</strong>
889
+ localStorage or first</p>
890
+ </div></foreignObject></g></g><g class="cHJvdGVjdGVkX3BoYXNlLnNldF90aGVtZQ=="><g class="shape" ></g><g><foreignObject requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" x="1541.000000" y="2987.000000" width="209" height="24"><div xmlns="http://www.w3.org/1999/xhtml" class="md color-N1" style="background-color:#b3e5fc"><p><strong>Set Theme</strong>
891
+ program.themeKey</p>
892
+ </div></foreignObject></g></g><g class="ZGFzaGJvYXJkX3BoYXNlLnByb2dyYW1faW5kZXg="><g class="shape" ></g><g><foreignObject requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" x="1499.000000" y="3211.000000" width="294" height="24"><div xmlns="http://www.w3.org/1999/xhtml" class="md color-N1" style="background-color:#ffe0b2"><p><strong>/$programId</strong> (index)
893
+ Redirect to deliverable</p>
894
+ </div></foreignObject></g></g><g class="ZGFzaGJvYXJkX3BoYXNlLmRlbGl2ZXJhYmxlX2luZGV4"><g class="shape" ></g><g><foreignObject requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" x="1439.000000" y="3356.000000" width="414" height="24"><div xmlns="http://www.w3.org/1999/xhtml" class="md color-N1" style="background-color:#ffe0b2"><p><strong>/$programId/$deliverableId</strong> (index)
895
+ Default to 'overview' tab</p>
896
+ </div></foreignObject></g></g><g class="bGVnZW5kLmwx"><g class="shape" ><rect x="1933.000000" y="3701.000000" width="84.000000" height="66.000000" rx="4.000000" stroke="#0D32B2" fill="#fff3e0" class=" stroke-B1" style="stroke-width:2;" /></g><text x="1975.000000" y="3739.500000" fill="#0A0F25" class="text-bold fill-N1" style="text-anchor:middle;font-size:16px">Login</text></g><g class="bGVnZW5kLmwy"><g class="shape" ><rect x="2077.000000" y="3701.000000" width="109.000000" height="66.000000" rx="4.000000" stroke="#0D32B2" fill="#e1bee7" class=" stroke-B1" style="stroke-width:2;" /></g><text x="2131.500000" y="3739.500000" fill="#0A0F25" class="text-bold fill-N1" style="text-anchor:middle;font-size:16px">Keycloak</text></g><g class="bGVnZW5kLmwz"><g class="shape" ><rect x="2246.000000" y="3701.000000" width="80.000000" height="66.000000" rx="4.000000" stroke="#0D32B2" fill="#c8e6c9" class=" stroke-B1" style="stroke-width:2;" /></g><text x="2286.000000" y="3739.500000" fill="#0A0F25" class="text-bold fill-N1" style="text-anchor:middle;font-size:16px">Auth</text></g><g class="bGVnZW5kLmw0"><g class="shape" ><rect x="2386.000000" y="3701.000000" width="94.000000" height="66.000000" rx="4.000000" stroke="#0D32B2" fill="#bbdefb" class=" stroke-B1" style="stroke-width:2;" /></g><text x="2433.000000" y="3739.500000" fill="#0A0F25" class="text-bold fill-N1" style="text-anchor:middle;font-size:16px">Routes</text></g><g class="bGVnZW5kLmw1"><g class="shape" ><rect x="2540.000000" y="3701.000000" width="121.000000" height="66.000000" rx="4.000000" stroke="#0D32B2" fill="#ffe0b2" class=" stroke-B1" style="stroke-width:2;" /></g><text x="2600.500000" y="3739.500000" fill="#0A0F25" class="text-bold fill-N1" style="text-anchor:middle;font-size:16px">Dashboard</text></g><g class="bGVnZW5kLmw2"><g class="shape" ><rect x="2721.000000" y="3701.000000" width="82.000000" height="66.000000" rx="4.000000" stroke="#0D32B2" fill="#ffcdd2" class=" stroke-B1" style="stroke-width:2;" /></g><text x="2762.000000" y="3739.500000" fill="#0A0F25" class="text-bold fill-N1" style="text-anchor:middle;font-size:16px">Error</text></g><g class="a2V5Y2xvYWtfcGhhc2UuZXJyb3JzLmF1dGhfZXJyb3JfaW5pdA=="><g class="shape" ><rect x="538.000000" y="1015.000000" width="155.000000" height="66.000000" stroke="#0D32B2" fill="#F7F8FE" class=" stroke-B1 fill-B6" style="stroke-width:2;" /></g><text x="615.500000" y="1053.500000" fill="#0A0F25" class="text-bold fill-N1" style="text-anchor:middle;font-size:16px">auth_error_init</text></g><g class="YXV0aF9waGFzZS5lcnJvcnMuYXV0aF9lcnJvcl9sb2Fk"><g class="shape" ><rect x="561.000000" y="1922.000000" width="161.000000" height="66.000000" stroke="#0D32B2" fill="#F7F8FE" class=" stroke-B1 fill-B6" style="stroke-width:2;" /></g><text x="641.500000" y="1960.500000" fill="#0A0F25" class="text-bold fill-N1" style="text-anchor:middle;font-size:16px">auth_error_load</text></g><g class="bG9naW5fcGhhc2UuKGluZGV4X3JvdXRlIC0mZ3Q7IGxvZ2luX3BhZ2UpWzBd"><marker id="mk-d2-2476658007-3488378134" markerWidth="10.000000" markerHeight="12.000000" refX="7.000000" refY="6.000000" viewBox="0.000000 0.000000 10.000000 12.000000" orient="auto" markerUnits="userSpaceOnUse"> <polygon points="0.000000,0.000000 10.000000,6.000000 0.000000,12.000000" fill="#0D32B2" class="connection fill-B1" stroke-width="2" /> </marker><path d="M 899.500000 262.500000 C 899.500000 309.299988 899.500000 333.700012 899.500000 378.500000" stroke="#0D32B2" fill="none" class="connection stroke-B1" style="stroke-width:2;" marker-end="url(#mk-d2-2476658007-3488378134)" mask="url(#d2-2476658007)" /><text x="900.000000" y="327.000000" fill="#676C7E" class="text-italic fill-N2" style="text-anchor:middle;font-size:16px">Redirect</text></g><g class="a2V5Y2xvYWtfcGhhc2UuKGtjX2luaXQgLSZndDsgaW5pdF9yZXN1bHQpWzBd"><path d="M 899.500000 632.000000 C 899.500000 670.000000 899.599976 689.799988 899.959183 725.000208" stroke="#0D32B2" fill="none" class="connection stroke-B1" style="stroke-width:2;" marker-end="url(#mk-d2-2476658007-3488378134)" mask="url(#d2-2476658007)" /></g><g class="a2V5Y2xvYWtfcGhhc2UuKGluaXRfcmVzdWx0IC0mZ3Q7IHNzb19jaGVjaylbMF0="><path d="M 936.538745 810.277600 C 1011.599976 872.599976 1030.800049 958.799988 1030.979597 994.000052" stroke="#0D32B2" fill="none" class="connection stroke-B1" style="stroke-width:2;" marker-end="url(#mk-d2-2476658007-3488378134)" mask="url(#d2-2476658007)" /><text x="1015.000000" y="892.000000" fill="#676C7E" class="text-italic fill-N2" style="text-anchor:middle;font-size:16px">Success</text></g><g class="a2V5Y2xvYWtfcGhhc2UuKGluaXRfcmVzdWx0IC0mZ3Q7IGVycm9ycy5hdXRoX2Vycm9yX2luaXQpWzBd"><path d="M 846.133516 799.718496 C 662.000000 870.599976 615.500000 962.200012 615.500000 1011.000000" stroke="#0D32B2" fill="none" class="connection stroke-B1" style="stroke-width:2;" marker-end="url(#mk-d2-2476658007-3488378134)" mask="url(#d2-2476658007)" /><text x="682.500000" y="868.000000" fill="#676C7E" class="text-italic fill-N2" style="text-anchor:middle;font-size:16px">Failure → errorInit</text></g><g class="a2V5Y2xvYWtfcGhhc2UuKHNzb19jaGVjayAtJmd0OyBrY19sb2dpbilbMF0="><path d="M 975.181781 1073.833115 C 847.799988 1132.199951 815.500000 1219.699951 815.500000 1264.500000" stroke="#0D32B2" fill="none" class="connection stroke-B1" style="stroke-width:2;" marker-end="url(#mk-d2-2476658007-3488378134)" mask="url(#d2-2476658007)" /><text x="848.000000" y="1138.000000" fill="#676C7E" class="text-italic fill-N2" style="text-anchor:middle;font-size:16px">No</text></g><g class="a2V5Y2xvYWtfcGhhc2UuKHNzb19jaGVjayAtJmd0OyBzaWxlbnRfdG9rZW4pWzBd"><path d="M 1086.812941 1072.844538 C 1213.800049 1132.000000 1246.000000 1219.699951 1246.000000 1264.500000" stroke="#0D32B2" fill="none" class="connection stroke-B1" style="stroke-width:2;" marker-end="url(#mk-d2-2476658007-3488378134)" mask="url(#d2-2476658007)" /><text x="1214.000000" y="1138.000000" fill="#676C7E" class="text-italic fill-N2" style="text-anchor:middle;font-size:16px">Yes</text></g><g class="YXV0aF9waGFzZS4obG9hZF91c2VyIC0mZ3Q7IGxvYWRfY2hlY2spWzBd"><path d="M 1030.750000 1539.000000 C 1030.750000 1577.000000 1030.800049 1596.800049 1030.979597 1632.000052" stroke="#0D32B2" fill="none" class="connection stroke-B1" style="stroke-width:2;" marker-end="url(#mk-d2-2476658007-3488378134)" mask="url(#d2-2476658007)" /></g><g class="YXV0aF9waGFzZS4obG9hZF9jaGVjayAtJmd0OyByb2xlX2NoZWNrKVswXQ=="><path d="M 1086.795145 1712.881734 C 1221.000000 1778.800049 1255.000000 1865.800049 1255.000000 1901.000000" stroke="#0D32B2" fill="none" class="connection stroke-B1" style="stroke-width:2;" marker-end="url(#mk-d2-2476658007-3488378134)" mask="url(#d2-2476658007)" /><text x="1213.000000" y="1780.000000" fill="#676C7E" class="text-italic fill-N2" style="text-anchor:middle;font-size:16px">Success</text></g><g class="YXV0aF9waGFzZS4obG9hZF9jaGVjayAtJmd0OyBlcnJvcnMuYXV0aF9lcnJvcl9sb2FkKVswXQ=="><path d="M 961.074601 1705.541145 C 705.400024 1777.400024 641.000000 1869.199951 641.000000 1918.000000" stroke="#0D32B2" fill="none" class="connection stroke-B1" style="stroke-width:2;" marker-end="url(#mk-d2-2476658007-3488378134)" mask="url(#d2-2476658007)" /><text x="754.500000" y="1769.000000" fill="#676C7E" class="text-italic fill-N2" style="text-anchor:middle;font-size:16px">Failure → errorLoadUser</text></g><g class="cHJvdGVjdGVkX3BoYXNlLihhdXRoX2d1YXJkIC0mZ3Q7IGxvYWRfcHJvZ3JhbXMpWzBd"><path d="M 1550.177385 2300.089211 C 1610.099976 2339.000000 1625.500000 2359.000000 1625.500000 2395.000000" stroke="#0D32B2" fill="none" class="connection stroke-B1" style="stroke-width:2;" marker-end="url(#mk-d2-2476658007-3488378134)" mask="url(#d2-2476658007)" /></g><g class="cHJvdGVjdGVkX3BoYXNlLihsb2FkX3Byb2dyYW1zIC0mZ3Q7IHByb2dyYW1zX2NoZWNrKVswXQ=="><path d="M 1625.500000 2424.500000 C 1625.500000 2471.300049 1625.599976 2495.399902 1625.966386 2539.000141" stroke="#0D32B2" fill="none" class="connection stroke-B1" style="stroke-width:2;" marker-end="url(#mk-d2-2476658007-3488378134)" mask="url(#d2-2476658007)" /></g><g class="cHJvdGVjdGVkX3BoYXNlLihwcm9ncmFtc19jaGVjayAtJmd0OyBzZWxlY3RfcHJvZ3JhbSlbMF0="><path d="M 1634.361922 2641.966980 C 1643.199951 2690.000000 1645.500000 2773.000000 1645.500000 2809.000000" stroke="#0D32B2" fill="none" class="connection stroke-B1" style="stroke-width:2;" marker-end="url(#mk-d2-2476658007-3488378134)" mask="url(#d2-2476658007)" /><text x="1644.000000" y="2732.000000" fill="#676C7E" class="text-italic fill-N2" style="text-anchor:middle;font-size:16px">Yes</text></g><g class="cHJvdGVjdGVkX3BoYXNlLihzZWxlY3RfcHJvZ3JhbSAtJmd0OyBzZXRfdGhlbWUpWzBd"><path d="M 1645.500000 2839.000000 C 1645.500000 2877.000000 1645.500000 2947.000000 1645.500000 2983.000000" stroke="#0D32B2" fill="none" class="connection stroke-B1" style="stroke-width:2;" marker-end="url(#mk-d2-2476658007-3488378134)" mask="url(#d2-2476658007)" /></g><g class="KHVzZXIgLSZndDsgbG9naW5fcGhhc2UuaW5kZXhfcm91dGUpWzBd"><path d="M 899.500000 93.500000 C 899.500000 119.500000 899.500000 197.000000 899.500000 233.000000" stroke="#0D32B2" fill="none" class="connection stroke-B1" style="stroke-width:2;" marker-end="url(#mk-d2-2476658007-3488378134)" mask="url(#d2-2476658007)" /><text x="900.000000" y="170.000000" fill="#676C7E" class="text-italic fill-N2" style="text-anchor:middle;font-size:16px">Opens app</text></g><g class="KGxvZ2luX3BoYXNlLmxvZ2luX3BhZ2UgLSZndDsga2V5Y2xvYWtfcGhhc2Uua2NfaW5pdClbMF0="><path d="M 899.500000 408.000000 C 899.500000 446.000000 899.500000 466.000000 899.500000 481.000000 C 899.500000 496.000000 899.500000 566.000000 899.500000 602.000000" stroke="#0D32B2" fill="none" class="connection stroke-B1" style="stroke-width:2;" marker-end="url(#mk-d2-2476658007-3488378134)" mask="url(#d2-2476658007)" /></g><g class="KGtleWNsb2FrX3BoYXNlLmtjX2xvZ2luIC0mZ3Q7IGF1dGhfcGhhc2UubG9hZF91c2VyKVswXQ=="><path d="M 815.500000 1294.000000 C 815.500000 1332.000000 815.500000 1354.099976 815.500000 1372.250000 C 815.500000 1390.400024 850.299988 1473.000000 985.655576 1511.895281" stroke="#0D32B2" fill="none" class="connection stroke-B1" style="stroke-width:2;" marker-end="url(#mk-d2-2476658007-3488378134)" mask="url(#d2-2476658007)" /><text x="842.000000" y="1459.000000" fill="#676C7E" class="text-italic fill-N2" style="text-anchor:middle;font-size:16px">Token received → loggedIn</text></g><g class="KGtleWNsb2FrX3BoYXNlLnNpbGVudF90b2tlbiAtJmd0OyBhdXRoX3BoYXNlLmxvYWRfdXNlcilbMF0="><path d="M 1246.000000 1294.000000 C 1246.000000 1332.000000 1246.000000 1354.099976 1246.000000 1372.250000 C 1246.000000 1390.400024 1211.199951 1473.000000 1075.844424 1511.895280" stroke="#0D32B2" fill="none" class="connection stroke-B1" style="stroke-width:2;" marker-end="url(#mk-d2-2476658007-3488378134)" mask="url(#d2-2476658007)" /></g><g class="KGF1dGhfcGhhc2Uucm9sZV9jaGVjayAtJmd0OyBlcnJvcnMudW5hdXRob3JpemVkKVswXQ=="><path d="M 1168.090389 1981.594463 C 982.400024 2039.400024 935.500000 2064.000000 935.500000 2079.000000 C 935.500000 2094.000000 935.500000 2116.100098 935.500000 2134.250000 C 935.500000 2152.399902 935.500000 2176.600098 935.500000 2194.750000 C 935.500000 2212.899902 935.500000 2237.399902 935.500000 2256.000000 C 935.500000 2274.600098 935.500000 2299.399902 935.500000 2318.000000 C 935.500000 2336.600098 935.500000 2361.399902 935.500000 2380.000000 C 935.500000 2398.600098 935.500000 2425.500000 935.500000 2447.250000 C 935.500000 2469.000000 935.500000 2505.399902 935.500000 2538.250000 C 935.500000 2571.100098 935.500000 2614.899902 935.500000 2647.750000 C 935.500000 2680.600098 935.500000 2773.000000 935.500000 2809.000000" stroke="#0D32B2" fill="none" class="connection stroke-B1" style="stroke-width:2;" marker-end="url(#mk-d2-2476658007-3488378134)" mask="url(#d2-2476658007)" /><text x="936.000000" y="2319.000000" fill="#676C7E" class="text-italic fill-N2" style="text-anchor:middle;font-size:16px">Yes</text></g><g class="KGF1dGhfcGhhc2Uucm9sZV9jaGVjayAtJmd0OyBwcm90ZWN0ZWRfcGhhc2UuYXV0aF9ndWFyZClbMF0="><path d="M 1334.881531 1983.678116 C 1490.599976 2039.800049 1530.000000 2064.000000 1530.000000 2079.000000 C 1530.000000 2094.000000 1530.000000 2116.100098 1530.000000 2134.250000 C 1530.000000 2152.399902 1530.000000 2235.000000 1530.000000 2271.000000" stroke="#0D32B2" fill="none" class="connection stroke-B1" style="stroke-width:2;" marker-end="url(#mk-d2-2476658007-3488378134)" mask="url(#d2-2476658007)" /><text x="1529.000000" y="2069.000000" fill="#676C7E" class="text-italic fill-N2" style="text-anchor:middle;font-size:16px">No</text></g><g class="KHByb3RlY3RlZF9waGFzZS5wcm9ncmFtc19jaGVjayAtJmd0OyBlcnJvcnMubm9fcHJvZ3JhbXMpWzBd"><path d="M 1594.809271 2634.606911 C 1554.800049 2688.600098 1470.500000 2773.600098 1178.459584 2815.432818" stroke="#0D32B2" fill="none" class="connection stroke-B1" style="stroke-width:2;" marker-end="url(#mk-d2-2476658007-3488378134)" mask="url(#d2-2476658007)" /><text x="1416.000000" y="2787.000000" fill="#676C7E" class="text-italic fill-N2" style="text-anchor:middle;font-size:16px">No</text></g><g class="KHByb3RlY3RlZF9waGFzZS5zZXRfdGhlbWUgLSZndDsgZGFzaGJvYXJkX3BoYXNlLnByb2dyYW1faW5kZXgpWzBd"><path d="M 1645.500000 3013.000000 C 1645.500000 3051.000000 1645.500000 3071.000000 1645.500000 3086.000000 C 1645.500000 3101.000000 1645.500000 3171.000000 1645.500000 3207.000000" stroke="#0D32B2" fill="none" class="connection stroke-B1" style="stroke-width:2;" marker-end="url(#mk-d2-2476658007-3488378134)" mask="url(#d2-2476658007)" /></g><g class="ZGFzaGJvYXJkX3BoYXNlLihwcm9ncmFtX2luZGV4IC0mZ3Q7IGRlbGl2ZXJhYmxlX2luZGV4KVswXQ=="><path d="M 1645.500000 3236.500000 C 1645.500000 3283.300049 1645.500000 3307.699951 1645.500000 3352.500000" stroke="#0D32B2" fill="none" class="connection stroke-B1" style="stroke-width:2;" marker-end="url(#mk-d2-2476658007-3488378134)" mask="url(#d2-2476658007)" /><text x="1646.000000" y="3301.000000" fill="#676C7E" class="text-italic fill-N2" style="text-anchor:middle;font-size:16px">Redirect</text></g><g class="KGRhc2hib2FyZF9waGFzZS5kZWxpdmVyYWJsZV9pbmRleCAtJmd0OyBmaW5hbClbMF0="><path d="M 1645.500000 3382.000000 C 1645.500000 3420.000000 1645.500000 3502.699951 1645.500000 3547.000000" stroke="#0D32B2" fill="none" class="connection stroke-B1" style="stroke-width:2;" marker-end="url(#mk-d2-2476658007-3488378134)" mask="url(#d2-2476658007)" /><text x="1646.000000" y="3471.000000" fill="#676C7E" class="text-italic fill-N2" style="text-anchor:middle;font-size:16px">Redirect</text></g><g class="KHByb3RlY3RlZF9waGFzZS5hdXRoX2d1YXJkIC0mZ3Q7IGVycm9ycy5hdXRoX2Vycm9yX3Rva2VuKVswXQ=="><marker id="mk-d2-2476658007-1251532141" markerWidth="10.000000" markerHeight="12.000000" refX="7.000000" refY="6.000000" viewBox="0.000000 0.000000 10.000000 12.000000" orient="auto" markerUnits="userSpaceOnUse"> <polygon points="0.000000,0.000000 10.000000,6.000000 0.000000,12.000000" fill="#ef9a9a" class="connection" stroke-width="2" /> </marker><path d="M 1509.822615 2300.089211 C 1449.900024 2339.000000 1434.500000 2361.399902 1434.500000 2380.000000 C 1434.500000 2398.600098 1434.500000 2425.500000 1434.500000 2447.250000 C 1434.500000 2469.000000 1434.500000 2505.399902 1434.500000 2538.250000 C 1434.500000 2571.100098 1434.500000 2614.899902 1434.500000 2647.750000 C 1434.500000 2680.600098 1312.500000 2773.199951 828.486093 2813.666736" stroke="#ef9a9a" fill="none" class="connection" style="stroke-width:2;stroke-dasharray:10.000000,9.865639;" marker-end="url(#mk-d2-2476658007-1251532141)" mask="url(#d2-2476658007)" /><text x="1345.500000" y="2754.000000" fill="#676C7E" class="text-italic fill-N2" style="text-anchor:middle;font-size:16px">Token refresh fails → errorTokenRefresh</text></g><mask id="d2-2476658007" maskUnits="userSpaceOnUse" x="-91" y="-152" width="3025" height="4050">
897
+ <rect x="-91" y="-152" width="3025" height="4050" fill="white"></rect>
898
+ <rect x="870.000000" y="311.000000" width="60" height="21" fill="black"></rect>
899
+ <rect x="987.000000" y="876.000000" width="56" height="21" fill="black"></rect>
900
+ <rect x="622.000000" y="852.000000" width="121" height="21" fill="black"></rect>
901
+ <rect x="837.000000" y="1122.000000" width="22" height="21" fill="black"></rect>
902
+ <rect x="1201.000000" y="1122.000000" width="26" height="21" fill="black"></rect>
903
+ <rect x="1185.000000" y="1764.000000" width="56" height="21" fill="black"></rect>
904
+ <rect x="673.000000" y="1753.000000" width="163" height="21" fill="black"></rect>
905
+ <rect x="1631.000000" y="2716.000000" width="26" height="21" fill="black"></rect>
906
+ <rect x="863.000000" y="154.000000" width="74" height="21" fill="black"></rect>
907
+ <rect x="754.000000" y="1443.000000" width="176" height="21" fill="black"></rect>
908
+ <rect x="923.000000" y="2303.000000" width="26" height="21" fill="black"></rect>
909
+ <rect x="1518.000000" y="2053.000000" width="22" height="21" fill="black"></rect>
910
+ <rect x="1405.000000" y="2771.000000" width="22" height="21" fill="black"></rect>
911
+ <rect x="1616.000000" y="3285.000000" width="60" height="21" fill="black"></rect>
912
+ <rect x="1616.000000" y="3455.000000" width="60" height="21" fill="black"></rect>
913
+ <rect x="1215.000000" y="2738.000000" width="261" height="21" fill="black"></rect>
914
+ </mask></svg></svg>