@networkpro/blog 1.0.5 → 1.0.8

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 (154) hide show
  1. package/2015/01/04/secure-secure-shell/index.html +1552 -0
  2. package/2025/04/30/were-live/index.html +1220 -0
  3. package/2025/05/11/the-network-pro-blog-has-moved/index.html +1202 -0
  4. package/2025/05/15/building-a-better-web-experience/index.html +1200 -0
  5. package/2025/05/16/progressive-web-app-is-live/index.html +1234 -0
  6. package/2025/05/26/welcome-to-the-future-of-network-pro/index.html +1202 -0
  7. package/404.html +970 -0
  8. package/archive/2015/index.html +1141 -0
  9. package/archive/2025/index.html +1379 -0
  10. package/assets/external/avatars.githubusercontent.com/u/170266279.png +0 -0
  11. package/assets/external/unpkg.com/mermaid@11/dist/mermaid.min.js +2607 -0
  12. package/assets/images/favicon.png +0 -0
  13. package/assets/javascripts/bundle.13a4f30d.min.js +16 -0
  14. package/assets/javascripts/bundle.13a4f30d.min.js.map +7 -0
  15. package/assets/javascripts/lunr/min/lunr.ar.min.js +1 -0
  16. package/assets/javascripts/lunr/min/lunr.da.min.js +18 -0
  17. package/assets/javascripts/lunr/min/lunr.de.min.js +18 -0
  18. package/assets/javascripts/lunr/min/lunr.du.min.js +18 -0
  19. package/assets/javascripts/lunr/min/lunr.el.min.js +1 -0
  20. package/assets/javascripts/lunr/min/lunr.es.min.js +18 -0
  21. package/assets/javascripts/lunr/min/lunr.fi.min.js +18 -0
  22. package/assets/javascripts/lunr/min/lunr.fr.min.js +18 -0
  23. package/assets/javascripts/lunr/min/lunr.he.min.js +1 -0
  24. package/assets/javascripts/lunr/min/lunr.hi.min.js +1 -0
  25. package/assets/javascripts/lunr/min/lunr.hu.min.js +18 -0
  26. package/assets/javascripts/lunr/min/lunr.hy.min.js +1 -0
  27. package/assets/javascripts/lunr/min/lunr.it.min.js +18 -0
  28. package/assets/javascripts/lunr/min/lunr.ja.min.js +1 -0
  29. package/assets/javascripts/lunr/min/lunr.jp.min.js +1 -0
  30. package/assets/javascripts/lunr/min/lunr.kn.min.js +1 -0
  31. package/assets/javascripts/lunr/min/lunr.ko.min.js +1 -0
  32. package/assets/javascripts/lunr/min/lunr.multi.min.js +1 -0
  33. package/assets/javascripts/lunr/min/lunr.nl.min.js +18 -0
  34. package/assets/javascripts/lunr/min/lunr.no.min.js +18 -0
  35. package/assets/javascripts/lunr/min/lunr.pt.min.js +18 -0
  36. package/assets/javascripts/lunr/min/lunr.ro.min.js +18 -0
  37. package/assets/javascripts/lunr/min/lunr.ru.min.js +18 -0
  38. package/assets/javascripts/lunr/min/lunr.sa.min.js +1 -0
  39. package/assets/javascripts/lunr/min/lunr.stemmer.support.min.js +1 -0
  40. package/assets/javascripts/lunr/min/lunr.sv.min.js +18 -0
  41. package/assets/javascripts/lunr/min/lunr.ta.min.js +1 -0
  42. package/assets/javascripts/lunr/min/lunr.te.min.js +1 -0
  43. package/assets/javascripts/lunr/min/lunr.th.min.js +1 -0
  44. package/assets/javascripts/lunr/min/lunr.tr.min.js +18 -0
  45. package/assets/javascripts/lunr/min/lunr.vi.min.js +1 -0
  46. package/assets/javascripts/lunr/min/lunr.zh.min.js +1 -0
  47. package/assets/javascripts/lunr/tinyseg.js +206 -0
  48. package/assets/javascripts/lunr/wordcut.js +6708 -0
  49. package/assets/javascripts/workers/search.d50fe291.min.js +42 -0
  50. package/assets/javascripts/workers/search.d50fe291.min.js.map +7 -0
  51. package/assets/stylesheets/main.342714a4.min.css +1 -0
  52. package/assets/stylesheets/main.342714a4.min.css.map +1 -0
  53. package/assets/stylesheets/palette.06af60db.min.css +1 -0
  54. package/assets/stylesheets/palette.06af60db.min.css.map +1 -0
  55. package/category/security/index.html +1141 -0
  56. package/contributing/index.html +1306 -0
  57. package/feed_json_created.json +1 -0
  58. package/feed_json_updated.json +1 -0
  59. package/feed_rss_created.xml +1 -0
  60. package/feed_rss_updated.xml +1 -0
  61. package/index.html +1461 -0
  62. package/package.json +1 -1
  63. package/search/search_index.json +1 -0
  64. package/sitemap.xml +51 -0
  65. package/sitemap.xml.gz +0 -0
  66. package/tags/index.html +1450 -0
  67. package/.browserslistrc +0 -12
  68. package/.editorconfig +0 -60
  69. package/.gitattributes +0 -199
  70. package/.github/workflows/auto-assign.yml +0 -32
  71. package/.github/workflows/build-and-deploy.yml +0 -117
  72. package/.github/workflows/dependency-review.yml +0 -20
  73. package/.github/workflows/publish.yml +0 -143
  74. package/.markdownlint.jsonc +0 -19
  75. package/.prettierignore +0 -38
  76. package/.prettierrc +0 -20
  77. package/.stylelintignore +0 -34
  78. package/.vscode/settings.json +0 -81
  79. package/CNAME +0 -1
  80. package/LICENSE.md +0 -265
  81. package/MKDOCS.md +0 -20
  82. package/assets/.gitkeep +0 -0
  83. package/assets/consulting-terms.pdf +0 -0
  84. package/assets/license/CC-BY-4.0-rdfa.xml +0 -741
  85. package/assets/license/CC-BY-4.0.xml +0 -25
  86. package/assets/license/COPYING-rdfa.xml +0 -1187
  87. package/assets/license/COPYING.odt +0 -0
  88. package/assets/linksheet.json +0 -8
  89. package/assets/pgp/contact.vcf +0 -13
  90. package/assets/pgp/contact@s.neteng.pro.aexpk +0 -17
  91. package/assets/pgp/contact@s.neteng.pro.asc +0 -17
  92. package/assets/pgp/github@sl.neteng.cc.aexpk +0 -29
  93. package/assets/pgp/github@sl.neteng.cc.asc +0 -29
  94. package/assets/pgp/support@neteng.pro.aexpk +0 -47
  95. package/assets/pgp/support@neteng.pro.asc +0 -47
  96. package/docs/LICENSE.md +0 -296
  97. package/docs/PRIVACY.md +0 -212
  98. package/docs/README.md +0 -115
  99. package/docs/TERMS-COND.md +0 -277
  100. package/docs/TERMS-USE.md +0 -212
  101. package/docs/license/CC-BY-4.0.html +0 -1235
  102. package/docs/license/CC-BY-4.0.md +0 -367
  103. package/docs/license/CC-BY-4.0.txt +0 -156
  104. package/docs/license/COPYING.html +0 -1413
  105. package/docs/license/COPYING.md +0 -611
  106. package/docs/license/COPYING.txt +0 -232
  107. package/docs_raw/.authors.yml +0 -11
  108. package/docs_raw/contributing.md +0 -166
  109. package/docs_raw/index.md +0 -28
  110. package/docs_raw/posts/betterweb.md +0 -59
  111. package/docs_raw/posts/drafts/.meta.yml +0 -1
  112. package/docs_raw/posts/live.md +0 -83
  113. package/docs_raw/posts/moved.md +0 -74
  114. package/docs_raw/posts/pwa.md +0 -65
  115. package/docs_raw/posts/secure-secure-shell.md +0 -561
  116. package/docs_raw/sitemap.xml +0 -83
  117. package/docs_raw/tags.md +0 -12
  118. package/eslint.config.mjs +0 -80
  119. package/mkdocs.yml +0 -115
  120. package/postcss.config.mjs +0 -5
  121. package/ref/README.md +0 -56
  122. package/ref/help.md +0 -17
  123. package/stylelint.config.js +0 -109
  124. /package/assets/{nsa-happy-dance.png → external/raw.githubusercontent.com/netwk-pro/netwk-pro.github.io/refs/heads/master/assets/nsa-happy-dance.png} +0 -0
  125. /package/{docs_raw/ext → ext}/__init__.py +0 -0
  126. /package/{docs_raw/ext → ext}/slugs.py +0 -0
  127. /package/{docs_raw/favicon.ico → favicon.ico} +0 -0
  128. /package/{docs_raw/favicon.svg → favicon.svg} +0 -0
  129. /package/{docs_raw/fontawesome → fontawesome}/LICENSE.txt +0 -0
  130. /package/{docs_raw/fontawesome → fontawesome}/brands/facebook.svg +0 -0
  131. /package/{docs_raw/fontawesome → fontawesome}/brands/instagram.svg +0 -0
  132. /package/{docs_raw/fontawesome → fontawesome}/brands/linkedin.svg +0 -0
  133. /package/{docs_raw/fontawesome → fontawesome}/brands/mastodon.svg +0 -0
  134. /package/{docs_raw/fontawesome → fontawesome}/solid/at.svg +0 -0
  135. /package/{docs_raw/hooks → hooks}/socialmedia.py +0 -0
  136. /package/{docs_raw/icon-180x180.png → icon-180x180.png} +0 -0
  137. /package/{docs_raw/icon-192x192.png → icon-192x192.png} +0 -0
  138. /package/{docs_raw/icon-512x512-maskable.png → icon-512x512-maskable.png} +0 -0
  139. /package/{docs_raw/icon-512x512.png → icon-512x512.png} +0 -0
  140. /package/{docs_raw/icon-splash.png → icon-splash.png} +0 -0
  141. /package/{docs_raw/img → img}/acode.png +0 -0
  142. /package/{docs_raw/img → img}/blog-move.png +0 -0
  143. /package/{docs_raw/img → img}/favicon.png +0 -0
  144. /package/{docs_raw/img → img}/linksheet.png +0 -0
  145. /package/{docs_raw/img → img}/logo.png +0 -0
  146. /package/{docs_raw/img → img}/pmx.png +0 -0
  147. /package/{docs_raw/img → img}/tosdr.png +0 -0
  148. /package/{docs_raw/img → img}/urlcheck.png +0 -0
  149. /package/{docs_raw/manifest.json → manifest.json} +0 -0
  150. /package/{docs_raw/robots.txt → robots.txt} +0 -0
  151. /package/{docs_raw/styles → styles}/default.css +0 -0
  152. /package/{docs_raw/styles → styles}/global.css +0 -0
  153. /package/{docs_raw/styles → styles}/normalize.css +0 -0
  154. /package/{docs_raw/styles → styles}/style.css +0 -0
@@ -0,0 +1,1306 @@
1
+
2
+ <!doctype html>
3
+ <html lang="en" class="no-js">
4
+ <head>
5
+
6
+ <meta charset="utf-8">
7
+ <meta name="viewport" content="width=device-width,initial-scale=1">
8
+
9
+
10
+
11
+ <link rel="canonical" href="https://blog.netwk.pro/contributing/">
12
+
13
+
14
+ <link rel="prev" href="../archive/2015/">
15
+
16
+
17
+ <link rel="next" href="../tags/">
18
+
19
+
20
+ <link rel="alternate" type="application/rss+xml" title="RSS feed" href="../feed_rss_created.xml">
21
+ <link rel="alternate" type="application/rss+xml" title="RSS feed of updated content" href="../feed_rss_updated.xml">
22
+
23
+ <link rel="icon" href="/favicon.svg">
24
+ <meta name="generator" content="mkdocs-1.6.1, mkdocs-material-9.6.14">
25
+
26
+
27
+
28
+ <title>Code of Conduct - Network Pro™ Blog</title>
29
+
30
+
31
+
32
+ <link rel="stylesheet" href="../assets/stylesheets/main.342714a4.min.css">
33
+
34
+
35
+ <link rel="stylesheet" href="../assets/stylesheets/palette.06af60db.min.css">
36
+
37
+
38
+
39
+
40
+
41
+
42
+
43
+
44
+
45
+
46
+
47
+
48
+ <script>__md_scope=new URL("..",location),__md_hash=e=>[...e].reduce(((e,_)=>(e<<5)-e+_.charCodeAt(0)),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script>
49
+
50
+
51
+
52
+
53
+
54
+
55
+ </head>
56
+
57
+
58
+
59
+
60
+
61
+
62
+
63
+
64
+
65
+ <body dir="ltr" data-md-color-scheme="default" data-md-color-primary="amber" data-md-color-accent="yellow">
66
+
67
+
68
+ <input class="md-toggle" data-md-toggle="drawer" type="checkbox" id="__drawer" autocomplete="off">
69
+ <input class="md-toggle" data-md-toggle="search" type="checkbox" id="__search" autocomplete="off">
70
+ <label class="md-overlay" for="__drawer"></label>
71
+ <div data-md-component="skip">
72
+
73
+
74
+ <a href="#contributor-covenant-code-of-conduct" class="md-skip">
75
+ Skip to content
76
+ </a>
77
+
78
+ </div>
79
+ <div data-md-component="announce">
80
+
81
+ </div>
82
+
83
+
84
+
85
+
86
+ <header class="md-header" data-md-component="header">
87
+ <nav class="md-header__inner md-grid" aria-label="Header">
88
+ <a href=".." title="Network Pro™ Blog" class="md-header__button md-logo" aria-label="Network Pro™ Blog" data-md-component="logo">
89
+
90
+ <img src="/icon-512x512.png" alt="logo">
91
+
92
+ </a>
93
+ <label class="md-header__button md-icon" for="__drawer">
94
+
95
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M3 6h18v2H3zm0 5h18v2H3zm0 5h18v2H3z"/></svg>
96
+ </label>
97
+ <div class="md-header__title" data-md-component="header-title">
98
+ <div class="md-header__ellipsis">
99
+ <div class="md-header__topic">
100
+ <span class="md-ellipsis">
101
+ Network Pro™ Blog
102
+ </span>
103
+ </div>
104
+ <div class="md-header__topic" data-md-component="header-topic">
105
+ <span class="md-ellipsis">
106
+
107
+ Code of Conduct
108
+
109
+ </span>
110
+ </div>
111
+ </div>
112
+ </div>
113
+
114
+
115
+ <form class="md-header__option" data-md-component="palette">
116
+
117
+
118
+
119
+
120
+ <input class="md-option" data-md-color-media="(prefers-color-scheme)" data-md-color-scheme="default" data-md-color-primary="amber" data-md-color-accent="yellow" aria-label="Switch to light mode" type="radio" name="__palette" id="__palette_0">
121
+
122
+ <label class="md-header__button md-icon" title="Switch to light mode" for="__palette_1" hidden>
123
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="m14.3 16-.7-2h-3.2l-.7 2H7.8L11 7h2l3.2 9zM20 8.69V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12zm-9.15 3.96h2.3L12 9z"/></svg>
124
+ </label>
125
+
126
+
127
+
128
+
129
+
130
+ <input class="md-option" data-md-color-media="(prefers-color-scheme: dark)" data-md-color-scheme="slate" data-md-color-primary="amber" data-md-color-accent="yellow" aria-label="Switch to system preference" type="radio" name="__palette" id="__palette_1">
131
+
132
+ <label class="md-header__button md-icon" title="Switch to system preference" for="__palette_2" hidden>
133
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 18c-.89 0-1.74-.2-2.5-.55C11.56 16.5 13 14.42 13 12s-1.44-4.5-3.5-5.45C10.26 6.2 11.11 6 12 6a6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"/></svg>
134
+ </label>
135
+
136
+
137
+
138
+
139
+
140
+ <input class="md-option" data-md-color-media="(prefers-color-scheme: light)" data-md-color-scheme="default" data-md-color-primary="amber" data-md-color-accent="yellow" aria-label="Switch to dark mode" type="radio" name="__palette" id="__palette_2">
141
+
142
+ <label class="md-header__button md-icon" title="Switch to dark mode" for="__palette_0" hidden>
143
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 8a4 4 0 0 0-4 4 4 4 0 0 0 4 4 4 4 0 0 0 4-4 4 4 0 0 0-4-4m0 10a6 6 0 0 1-6-6 6 6 0 0 1 6-6 6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"/></svg>
144
+ </label>
145
+
146
+
147
+ </form>
148
+
149
+
150
+
151
+ <script>var palette=__md_get("__palette");if(palette&&palette.color){if("(prefers-color-scheme)"===palette.color.media){var media=matchMedia("(prefers-color-scheme: light)"),input=document.querySelector(media.matches?"[data-md-color-media='(prefers-color-scheme: light)']":"[data-md-color-media='(prefers-color-scheme: dark)']");palette.color.media=input.getAttribute("data-md-color-media"),palette.color.scheme=input.getAttribute("data-md-color-scheme"),palette.color.primary=input.getAttribute("data-md-color-primary"),palette.color.accent=input.getAttribute("data-md-color-accent")}for(var[key,value]of Object.entries(palette.color))document.body.setAttribute("data-md-color-"+key,value)}</script>
152
+
153
+
154
+
155
+
156
+
157
+ <label class="md-header__button md-icon" for="__search">
158
+
159
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg>
160
+ </label>
161
+ <div class="md-search" data-md-component="search" role="dialog">
162
+ <label class="md-search__overlay" for="__search"></label>
163
+ <div class="md-search__inner" role="search">
164
+ <form class="md-search__form" name="search">
165
+ <input type="text" class="md-search__input" name="query" aria-label="Search" placeholder="Search" autocapitalize="off" autocorrect="off" autocomplete="off" spellcheck="false" data-md-component="search-query" required>
166
+ <label class="md-search__icon md-icon" for="__search">
167
+
168
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg>
169
+
170
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11z"/></svg>
171
+ </label>
172
+ <nav class="md-search__options" aria-label="Search">
173
+
174
+ <button type="reset" class="md-search__icon md-icon" title="Clear" aria-label="Clear" tabindex="-1">
175
+
176
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"/></svg>
177
+ </button>
178
+ </nav>
179
+
180
+ <div class="md-search__suggest" data-md-component="search-suggest"></div>
181
+
182
+ </form>
183
+ <div class="md-search__output">
184
+ <div class="md-search__scrollwrap" tabindex="0" data-md-scrollfix>
185
+ <div class="md-search-result" data-md-component="search-result">
186
+ <div class="md-search-result__meta">
187
+ Initializing search
188
+ </div>
189
+ <ol class="md-search-result__list" role="presentation"></ol>
190
+ </div>
191
+ </div>
192
+ </div>
193
+ </div>
194
+ </div>
195
+
196
+
197
+
198
+ <div class="md-header__source">
199
+ <a href="https://github.com/netwk-pro/netwk-pro.github.io" title="Go to repository" class="md-source" data-md-component="source">
200
+ <div class="md-source__icon md-icon">
201
+
202
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 6.7.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2024 Fonticons, Inc.--><path d="M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81"/></svg>
203
+ </div>
204
+ <div class="md-source__repository">
205
+ GitHub
206
+ </div>
207
+ </a>
208
+ </div>
209
+
210
+ </nav>
211
+
212
+ </header>
213
+
214
+ <div class="md-container" data-md-component="container">
215
+
216
+
217
+
218
+
219
+
220
+ <nav class="md-tabs" aria-label="Tabs" data-md-component="tabs">
221
+ <div class="md-grid">
222
+ <ul class="md-tabs__list">
223
+
224
+
225
+
226
+
227
+
228
+
229
+ <li class="md-tabs__item">
230
+ <a href=".." class="md-tabs__link">
231
+
232
+
233
+
234
+
235
+
236
+ Home
237
+
238
+ </a>
239
+ </li>
240
+
241
+
242
+
243
+
244
+
245
+
246
+
247
+
248
+
249
+
250
+
251
+
252
+ <li class="md-tabs__item md-tabs__item--active">
253
+ <a href="./" class="md-tabs__link">
254
+
255
+
256
+
257
+
258
+
259
+ Contributing
260
+
261
+ </a>
262
+ </li>
263
+
264
+
265
+
266
+
267
+
268
+
269
+
270
+
271
+
272
+
273
+
274
+ <li class="md-tabs__item">
275
+ <a href="../tags/" class="md-tabs__link">
276
+
277
+
278
+
279
+
280
+
281
+ Tags
282
+
283
+ </a>
284
+ </li>
285
+
286
+
287
+
288
+
289
+
290
+
291
+
292
+
293
+
294
+ <li class="md-tabs__item">
295
+ <a href="https://netwk.pro" class="md-tabs__link">
296
+
297
+
298
+
299
+
300
+
301
+ Website
302
+
303
+ </a>
304
+ </li>
305
+
306
+
307
+
308
+
309
+
310
+
311
+
312
+
313
+
314
+
315
+ <li class="md-tabs__item">
316
+ <a href="../archive/2025/" class="md-tabs__link">
317
+
318
+
319
+
320
+
321
+
322
+ Archive
323
+
324
+ </a>
325
+ </li>
326
+
327
+
328
+
329
+
330
+
331
+
332
+
333
+
334
+
335
+
336
+
337
+ <li class="md-tabs__item">
338
+ <a href="../category/security/" class="md-tabs__link">
339
+
340
+
341
+
342
+
343
+
344
+ Categories
345
+
346
+ </a>
347
+ </li>
348
+
349
+
350
+
351
+
352
+ </ul>
353
+ </div>
354
+ </nav>
355
+
356
+
357
+
358
+ <main class="md-main" data-md-component="main">
359
+ <div class="md-main__inner md-grid">
360
+
361
+
362
+
363
+ <div class="md-sidebar md-sidebar--primary" data-md-component="sidebar" data-md-type="navigation" >
364
+ <div class="md-sidebar__scrollwrap">
365
+ <div class="md-sidebar__inner">
366
+
367
+
368
+
369
+
370
+
371
+
372
+ <nav class="md-nav md-nav--primary md-nav--lifted" aria-label="Navigation" data-md-level="0">
373
+ <label class="md-nav__title" for="__drawer">
374
+ <a href=".." title="Network Pro™ Blog" class="md-nav__button md-logo" aria-label="Network Pro™ Blog" data-md-component="logo">
375
+
376
+ <img src="/icon-512x512.png" alt="logo">
377
+
378
+ </a>
379
+ Network Pro™ Blog
380
+ </label>
381
+
382
+ <div class="md-nav__source">
383
+ <a href="https://github.com/netwk-pro/netwk-pro.github.io" title="Go to repository" class="md-source" data-md-component="source">
384
+ <div class="md-source__icon md-icon">
385
+
386
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 6.7.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2024 Fonticons, Inc.--><path d="M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81"/></svg>
387
+ </div>
388
+ <div class="md-source__repository">
389
+ GitHub
390
+ </div>
391
+ </a>
392
+ </div>
393
+
394
+ <ul class="md-nav__list" data-md-scrollfix>
395
+
396
+
397
+
398
+
399
+
400
+
401
+
402
+
403
+
404
+ <li class="md-nav__item">
405
+ <a href=".." class="md-nav__link">
406
+
407
+
408
+
409
+ <span class="md-ellipsis">
410
+ Home
411
+
412
+ </span>
413
+
414
+
415
+ </a>
416
+ </li>
417
+
418
+
419
+
420
+
421
+
422
+
423
+
424
+
425
+
426
+
427
+
428
+
429
+
430
+
431
+
432
+
433
+
434
+
435
+
436
+
437
+
438
+
439
+
440
+
441
+
442
+
443
+ <li class="md-nav__item md-nav__item--active md-nav__item--section md-nav__item--nested">
444
+
445
+
446
+
447
+ <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2" checked>
448
+
449
+
450
+ <label class="md-nav__link" for="__nav_2" id="__nav_2_label" tabindex="">
451
+
452
+
453
+
454
+ <span class="md-ellipsis">
455
+ Contributing
456
+
457
+ </span>
458
+
459
+
460
+ <span class="md-nav__icon md-icon"></span>
461
+ </label>
462
+
463
+ <nav class="md-nav" data-md-level="1" aria-labelledby="__nav_2_label" aria-expanded="true">
464
+ <label class="md-nav__title" for="__nav_2">
465
+ <span class="md-nav__icon md-icon"></span>
466
+ Contributing
467
+ </label>
468
+ <ul class="md-nav__list" data-md-scrollfix>
469
+
470
+
471
+
472
+
473
+
474
+
475
+
476
+
477
+
478
+ <li class="md-nav__item md-nav__item--active">
479
+
480
+ <input class="md-nav__toggle md-toggle" type="checkbox" id="__toc">
481
+
482
+
483
+
484
+
485
+
486
+ <label class="md-nav__link md-nav__link--active" for="__toc">
487
+
488
+
489
+
490
+ <span class="md-ellipsis">
491
+ Code of Conduct
492
+
493
+ </span>
494
+
495
+
496
+ <span class="md-nav__icon md-icon"></span>
497
+ </label>
498
+
499
+ <a href="./" class="md-nav__link md-nav__link--active">
500
+
501
+
502
+
503
+ <span class="md-ellipsis">
504
+ Code of Conduct
505
+
506
+ </span>
507
+
508
+
509
+ </a>
510
+
511
+
512
+
513
+ <nav class="md-nav md-nav--secondary" aria-label="Table of contents">
514
+
515
+
516
+
517
+
518
+
519
+
520
+ <label class="md-nav__title" for="__toc">
521
+ <span class="md-nav__icon md-icon"></span>
522
+ Table of contents
523
+ </label>
524
+ <ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
525
+
526
+ <li class="md-nav__item">
527
+ <a href="#table-of-contents" class="md-nav__link">
528
+ <span class="md-ellipsis">
529
+ Table of Contents
530
+ </span>
531
+ </a>
532
+
533
+ </li>
534
+
535
+ <li class="md-nav__item">
536
+ <a href="#our-pledge" class="md-nav__link">
537
+ <span class="md-ellipsis">
538
+ Our Pledge
539
+ </span>
540
+ </a>
541
+
542
+ </li>
543
+
544
+ <li class="md-nav__item">
545
+ <a href="#our-standards" class="md-nav__link">
546
+ <span class="md-ellipsis">
547
+ Our Standards
548
+ </span>
549
+ </a>
550
+
551
+ </li>
552
+
553
+ <li class="md-nav__item">
554
+ <a href="#responsibilities" class="md-nav__link">
555
+ <span class="md-ellipsis">
556
+ Responsibilities
557
+ </span>
558
+ </a>
559
+
560
+ </li>
561
+
562
+ <li class="md-nav__item">
563
+ <a href="#scope" class="md-nav__link">
564
+ <span class="md-ellipsis">
565
+ Scope
566
+ </span>
567
+ </a>
568
+
569
+ </li>
570
+
571
+ <li class="md-nav__item">
572
+ <a href="#enforcement" class="md-nav__link">
573
+ <span class="md-ellipsis">
574
+ Enforcement
575
+ </span>
576
+ </a>
577
+
578
+ </li>
579
+
580
+ <li class="md-nav__item">
581
+ <a href="#attribution" class="md-nav__link">
582
+ <span class="md-ellipsis">
583
+ Attribution
584
+ </span>
585
+ </a>
586
+
587
+ </li>
588
+
589
+ </ul>
590
+
591
+ </nav>
592
+
593
+ </li>
594
+
595
+
596
+
597
+
598
+ </ul>
599
+ </nav>
600
+
601
+ </li>
602
+
603
+
604
+
605
+
606
+
607
+
608
+
609
+
610
+
611
+
612
+
613
+
614
+
615
+
616
+
617
+
618
+
619
+
620
+
621
+
622
+
623
+ <li class="md-nav__item md-nav__item--nested">
624
+
625
+
626
+
627
+ <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_3" >
628
+
629
+
630
+ <label class="md-nav__link" for="__nav_3" id="__nav_3_label" tabindex="0">
631
+
632
+
633
+
634
+ <span class="md-ellipsis">
635
+ Tags
636
+
637
+ </span>
638
+
639
+
640
+ <span class="md-nav__icon md-icon"></span>
641
+ </label>
642
+
643
+ <nav class="md-nav" data-md-level="1" aria-labelledby="__nav_3_label" aria-expanded="false">
644
+ <label class="md-nav__title" for="__nav_3">
645
+ <span class="md-nav__icon md-icon"></span>
646
+ Tags
647
+ </label>
648
+ <ul class="md-nav__list" data-md-scrollfix>
649
+
650
+
651
+
652
+
653
+
654
+
655
+
656
+ <li class="md-nav__item">
657
+ <a href="../tags/" class="md-nav__link">
658
+
659
+
660
+
661
+ <span class="md-ellipsis">
662
+ Tag Index
663
+
664
+ </span>
665
+
666
+
667
+ </a>
668
+ </li>
669
+
670
+
671
+
672
+
673
+ </ul>
674
+ </nav>
675
+
676
+ </li>
677
+
678
+
679
+
680
+
681
+
682
+
683
+
684
+
685
+
686
+ <li class="md-nav__item">
687
+ <a href="https://netwk.pro" class="md-nav__link">
688
+
689
+
690
+
691
+ <span class="md-ellipsis">
692
+ Website
693
+
694
+ </span>
695
+
696
+
697
+ </a>
698
+ </li>
699
+
700
+
701
+
702
+
703
+
704
+
705
+
706
+
707
+
708
+
709
+
710
+
711
+
712
+
713
+
714
+
715
+
716
+
717
+
718
+
719
+
720
+
721
+
722
+ <li class="md-nav__item md-nav__item--nested">
723
+
724
+
725
+
726
+ <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_5" >
727
+
728
+
729
+ <label class="md-nav__link" for="__nav_5" id="__nav_5_label" tabindex="0">
730
+
731
+
732
+
733
+ <span class="md-ellipsis">
734
+ Archive
735
+
736
+ </span>
737
+
738
+
739
+ <span class="md-nav__icon md-icon"></span>
740
+ </label>
741
+
742
+ <nav class="md-nav" data-md-level="1" aria-labelledby="__nav_5_label" aria-expanded="false">
743
+ <label class="md-nav__title" for="__nav_5">
744
+ <span class="md-nav__icon md-icon"></span>
745
+ Archive
746
+ </label>
747
+ <ul class="md-nav__list" data-md-scrollfix>
748
+
749
+
750
+
751
+
752
+
753
+
754
+
755
+
756
+
757
+ <li class="md-nav__item">
758
+ <a href="../archive/2025/" class="md-nav__link">
759
+
760
+
761
+
762
+ <span class="md-ellipsis">
763
+ May 2025
764
+
765
+ </span>
766
+
767
+
768
+ </a>
769
+ </li>
770
+
771
+
772
+
773
+
774
+
775
+
776
+
777
+
778
+
779
+
780
+
781
+
782
+ <li class="md-nav__item">
783
+ <a href="../archive/2015/" class="md-nav__link">
784
+
785
+
786
+
787
+ <span class="md-ellipsis">
788
+ January 2015
789
+
790
+ </span>
791
+
792
+
793
+ </a>
794
+ </li>
795
+
796
+
797
+
798
+
799
+ </ul>
800
+ </nav>
801
+
802
+ </li>
803
+
804
+
805
+
806
+
807
+
808
+
809
+
810
+
811
+
812
+
813
+
814
+
815
+
816
+
817
+
818
+
819
+
820
+
821
+
822
+
823
+
824
+ <li class="md-nav__item md-nav__item--nested">
825
+
826
+
827
+
828
+ <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_6" >
829
+
830
+
831
+ <label class="md-nav__link" for="__nav_6" id="__nav_6_label" tabindex="0">
832
+
833
+
834
+
835
+ <span class="md-ellipsis">
836
+ Categories
837
+
838
+ </span>
839
+
840
+
841
+ <span class="md-nav__icon md-icon"></span>
842
+ </label>
843
+
844
+ <nav class="md-nav" data-md-level="1" aria-labelledby="__nav_6_label" aria-expanded="false">
845
+ <label class="md-nav__title" for="__nav_6">
846
+ <span class="md-nav__icon md-icon"></span>
847
+ Categories
848
+ </label>
849
+ <ul class="md-nav__list" data-md-scrollfix>
850
+
851
+
852
+
853
+
854
+
855
+
856
+
857
+
858
+
859
+ <li class="md-nav__item">
860
+ <a href="../category/security/" class="md-nav__link">
861
+
862
+
863
+
864
+ <span class="md-ellipsis">
865
+ Security
866
+
867
+ </span>
868
+
869
+
870
+ </a>
871
+ </li>
872
+
873
+
874
+
875
+
876
+ </ul>
877
+ </nav>
878
+
879
+ </li>
880
+
881
+
882
+
883
+ </ul>
884
+ </nav>
885
+ </div>
886
+ </div>
887
+ </div>
888
+
889
+
890
+
891
+ <div class="md-sidebar md-sidebar--secondary" data-md-component="sidebar" data-md-type="toc" >
892
+ <div class="md-sidebar__scrollwrap">
893
+ <div class="md-sidebar__inner">
894
+
895
+
896
+ <nav class="md-nav md-nav--secondary" aria-label="Table of contents">
897
+
898
+
899
+
900
+
901
+
902
+
903
+ <label class="md-nav__title" for="__toc">
904
+ <span class="md-nav__icon md-icon"></span>
905
+ Table of contents
906
+ </label>
907
+ <ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
908
+
909
+ <li class="md-nav__item">
910
+ <a href="#table-of-contents" class="md-nav__link">
911
+ <span class="md-ellipsis">
912
+ Table of Contents
913
+ </span>
914
+ </a>
915
+
916
+ </li>
917
+
918
+ <li class="md-nav__item">
919
+ <a href="#our-pledge" class="md-nav__link">
920
+ <span class="md-ellipsis">
921
+ Our Pledge
922
+ </span>
923
+ </a>
924
+
925
+ </li>
926
+
927
+ <li class="md-nav__item">
928
+ <a href="#our-standards" class="md-nav__link">
929
+ <span class="md-ellipsis">
930
+ Our Standards
931
+ </span>
932
+ </a>
933
+
934
+ </li>
935
+
936
+ <li class="md-nav__item">
937
+ <a href="#responsibilities" class="md-nav__link">
938
+ <span class="md-ellipsis">
939
+ Responsibilities
940
+ </span>
941
+ </a>
942
+
943
+ </li>
944
+
945
+ <li class="md-nav__item">
946
+ <a href="#scope" class="md-nav__link">
947
+ <span class="md-ellipsis">
948
+ Scope
949
+ </span>
950
+ </a>
951
+
952
+ </li>
953
+
954
+ <li class="md-nav__item">
955
+ <a href="#enforcement" class="md-nav__link">
956
+ <span class="md-ellipsis">
957
+ Enforcement
958
+ </span>
959
+ </a>
960
+
961
+ </li>
962
+
963
+ <li class="md-nav__item">
964
+ <a href="#attribution" class="md-nav__link">
965
+ <span class="md-ellipsis">
966
+ Attribution
967
+ </span>
968
+ </a>
969
+
970
+ </li>
971
+
972
+ </ul>
973
+
974
+ </nav>
975
+ </div>
976
+ </div>
977
+ </div>
978
+
979
+
980
+
981
+ <div class="md-content" data-md-component="content">
982
+ <article class="md-content__inner md-typeset">
983
+
984
+
985
+
986
+ <nav class="md-tags" >
987
+
988
+
989
+
990
+
991
+ <a href="../tags/#tag:contributing" class="md-tag">contributing</a>
992
+
993
+
994
+
995
+
996
+
997
+ <a href="../tags/#tag:network-pro" class="md-tag">network-pro</a>
998
+
999
+
1000
+ </nav>
1001
+
1002
+
1003
+
1004
+
1005
+
1006
+
1007
+ <p><sup><a href="https://spdx.dev/learn/handling-license-info/">SPDX-License-Identifier</a>:
1008
+ <code>CC-BY-4.0 OR GPL-3.0-or-later</code></sup></p>
1009
+ <p><a name="top"></a></p>
1010
+ <h1 id="contributor-covenant-code-of-conduct">Contributor Covenant Code of Conduct</h1>
1011
+ <p><strong>Network Pro Strategies</strong><br />
1012
+ <strong>Effective Date:</strong> May 10, 2025</p>
1013
+ <h2 id="table-of-contents">Table of Contents</h2>
1014
+ <ul>
1015
+ <li><a href="#pledge">Our Pledge</a></li>
1016
+ <li><a href="#standards">Our Standards</a></li>
1017
+ <li><a href="#response">Responsibilities</a></li>
1018
+ <li><a href="#scope">Scope</a></li>
1019
+ <li><a href="#enforce">Enforcement</a></li>
1020
+ <li><a href="#attribute">Attribution</a></li>
1021
+ </ul>
1022
+ <hr />
1023
+ <p><a name="pledge"></a></p>
1024
+ <h2 id="our-pledge">Our Pledge</h2>
1025
+ <p>We as members, contributors, and leaders pledge to make participation in our
1026
+ community a harassment-free experience for everyone, regardless of age, body
1027
+ size, visible or invisible disability, ethnicity, sex characteristics, gender
1028
+ identity and expression, level of experience, education, socio-economic status,
1029
+ nationality, personal appearance, race, caste, color, religion, or sexual
1030
+ identity and orientation.</p>
1031
+ <p>We pledge to act and interact in ways that contribute to an open, welcoming,
1032
+ diverse, inclusive, and healthy community.</p>
1033
+ <p><sub><a href="#top">Back to top</a></sub></p>
1034
+ <p><a name="standards"></a></p>
1035
+ <h2 id="our-standards">Our Standards</h2>
1036
+ <p>Examples of behavior that contributes to a positive environment for our
1037
+ community include:</p>
1038
+ <ul>
1039
+ <li>Demonstrating empathy and kindness toward other people</li>
1040
+ <li>Being respectful of differing opinions, viewpoints, and experiences</li>
1041
+ <li>Giving and gracefully accepting constructive feedback</li>
1042
+ <li>Accepting responsibility and apologizing to those affected by our mistakes,
1043
+ and learning from the experience</li>
1044
+ <li>Focusing on what is best not just for us as individuals, but for the overall
1045
+ community</li>
1046
+ </ul>
1047
+ <p>Examples of unacceptable behavior include:</p>
1048
+ <ul>
1049
+ <li>The use of sexualized language or imagery, and sexual attention or advances of
1050
+ any kind</li>
1051
+ <li>Trolling, insulting or derogatory comments, and personal or political attacks</li>
1052
+ <li>Public or private harassment</li>
1053
+ <li>Publishing others' private information, such as a physical or email address,
1054
+ without their explicit permission</li>
1055
+ <li>Other conduct which could reasonably be considered inappropriate in a
1056
+ professional setting</li>
1057
+ </ul>
1058
+ <p><sub><a href="#top">Back to top</a></sub></p>
1059
+ <p><a name="response"></a></p>
1060
+ <h2 id="responsibilities">Responsibilities</h2>
1061
+ <p>Company and community leaders are responsible for clarifying and enforcing our standards of
1062
+ acceptable behavior and will take appropriate and fair corrective action in
1063
+ response to any behavior that they deem inappropriate, threatening, offensive,
1064
+ or harmful.</p>
1065
+ <p>Company and community leaders have the right and responsibility to remove, edit, or reject
1066
+ comments, commits, code, wiki edits, issues, and other contributions that are
1067
+ not aligned to this Code of Conduct, and will communicate reasons for moderation
1068
+ decisions when appropriate.</p>
1069
+ <p>Network Pro Strategies reserves the right, at its sole discretion, to remove, edit, or reject any contributions that are contrary to or detrimental to its business interests.</p>
1070
+ <p><sub><a href="#top">Back to top</a></sub></p>
1071
+ <p><a name="scope"></a></p>
1072
+ <h2 id="scope">Scope</h2>
1073
+ <p>This Code of Conduct applies within all community spaces, and also applies when
1074
+ an individual is officially representing the company or community in public spaces.
1075
+ Examples of representing our company or community include using an official email address,
1076
+ posting via an official social media account, or acting as an appointed
1077
+ representative at an online or offline event.</p>
1078
+ <p><sub><a href="#top">Back to top</a></sub></p>
1079
+ <p><a name="enforce"></a></p>
1080
+ <h2 id="enforcement">Enforcement</h2>
1081
+ <p>Instances of abusive, harassing, or otherwise unacceptable behavior may be reported by contacting the abuse team at <a href="mailto:abuse@neteng.pro">abuse@neteng.pro</a>. All complaints will be reviewed and investigated and will result in a response that is deemed necessary and appropriate to the circumstances.</p>
1082
+ <p>The abuse team is obligated to maintain confidentiality with regard to the reporter of an incident. Further details of specific enforcement policies may be posted separately.</p>
1083
+ <p>Project maintainers who do not follow or enforce the Code of Conduct in good faith may face temporary or permanent repercussions as determined by other members of the project’s leadership.</p>
1084
+ <p><sub><a href="#top">Back to top</a></sub></p>
1085
+ <p><a name="attribute"></a></p>
1086
+ <h2 id="attribution">Attribution</h2>
1087
+ <p>This Code of Conduct is adapted from the <a href="https://www.contributor-covenant.org">Contributor Covenant</a>,
1088
+ version 2.1, available at
1089
+ <a href="https://www.contributor-covenant.org/version/2/1/code_of_conduct.html">https://www.contributor-covenant.org/version/2/1/code_of_conduct.html</a>.</p>
1090
+ <p>The <strong>Enforcement</strong> section is adapted from the
1091
+ <a href="https://www.contributor-covenant.org">Contributor Covenant</a>,
1092
+ version 1.4, available at
1093
+ <a href="https://www.contributor-covenant.org/version/1/4/code-of-conduct/">https://www.contributor-covenant.org/version/1/4/code-of-conduct/</a>.</p>
1094
+ <p>For answers to common questions about this code of conduct, see the FAQ at
1095
+ <a href="https://www.contributor-covenant.org/faq">https://www.contributor-covenant.org/faq</a>. Translations are available at
1096
+ <a href="https://www.contributor-covenant.org/translations">https://www.contributor-covenant.org/translations</a>.</p>
1097
+ <p><sub><a href="#top">Back to top</a></sub></p>
1098
+ <hr />
1099
+ <p><span style="font-size: 12px; font-weight: bold; text-align: center;"></p>
1100
+ <p><a href="https://netwk.pro">Home</a> &nbsp; | &nbsp; <a href="https://netwk.pro/terms-of-use.html">Terms of Use</a><br />
1101
+ <a href="https://netwk.pro/privacy.html">Privacy Policy</a> &nbsp; | &nbsp; <a href="https://netwk.pro/legal.html">Legal</a></p>
1102
+ <p></span></p>
1103
+ <p>&nbsp;</p>
1104
+ <p><span style="font-size: 12px; text-align: center;"></p>
1105
+ <p>Copyright &copy; 2025<br />
1106
+ <strong><a href="https://netwk.pro/">Network Pro Strategies</a></strong> (Network Pro&trade;)</p>
1107
+ <p>Network Pro&trade;, the shield logo, and the "Locking Down Networks&trade;" slogan are <a href="https://netwk.pro/legal#trademark">trademarks</a> of Network Pro Strategies.</p>
1108
+ <p>Licensed under <strong><a href="https://creativecommons.org/licenses/by/4.0/">CC BY 4.0</a></strong> and the <strong><a href="https://spdx.org/licenses/GPL-3.0-or-later.html">GNU GPL</a></strong>, as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.</p>
1109
+ <p></span></p>
1110
+
1111
+
1112
+
1113
+
1114
+
1115
+
1116
+
1117
+
1118
+
1119
+
1120
+
1121
+
1122
+
1123
+
1124
+
1125
+
1126
+ </article>
1127
+ </div>
1128
+
1129
+
1130
+ <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script>
1131
+ </div>
1132
+
1133
+ <button type="button" class="md-top md-icon" data-md-component="top" hidden>
1134
+
1135
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg>
1136
+ Back to top
1137
+ </button>
1138
+
1139
+ </main>
1140
+
1141
+ <footer class="md-footer">
1142
+
1143
+ <div class="md-footer-meta md-typeset">
1144
+ <div class="md-footer-meta__inner md-grid">
1145
+ <div class="md-copyright">
1146
+
1147
+ <div class="md-copyright__highlight">
1148
+ Copyright &copy; 2025 Network Pro Strategies (Network Pro&trade;) – <a href="#__consent">Change cookie settings</a>
1149
+
1150
+ </div>
1151
+
1152
+
1153
+ Made with
1154
+ <a href="https://squidfunk.github.io/mkdocs-material/" target="_blank" rel="noopener">
1155
+ Material for MkDocs
1156
+ </a>
1157
+
1158
+ </div>
1159
+
1160
+ <div class="md-social">
1161
+
1162
+
1163
+
1164
+
1165
+
1166
+ <a href="https://instagram.com/netwk_pro/" target="_blank" rel="noopener" title="Network Pro on Instagram" class="md-social__link">
1167
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 6.7.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2024 Fonticons, Inc.--><path d="M224.1 141c-63.6 0-114.9 51.3-114.9 114.9s51.3 114.9 114.9 114.9S339 319.5 339 255.9 287.7 141 224.1 141m0 189.6c-41.1 0-74.7-33.5-74.7-74.7s33.5-74.7 74.7-74.7 74.7 33.5 74.7 74.7-33.6 74.7-74.7 74.7m146.4-194.3c0 14.9-12 26.8-26.8 26.8-14.9 0-26.8-12-26.8-26.8s12-26.8 26.8-26.8 26.8 12 26.8 26.8m76.1 27.2c-1.7-35.9-9.9-67.7-36.2-93.9-26.2-26.2-58-34.4-93.9-36.2-37-2.1-147.9-2.1-184.9 0-35.8 1.7-67.6 9.9-93.9 36.1s-34.4 58-36.2 93.9c-2.1 37-2.1 147.9 0 184.9 1.7 35.9 9.9 67.7 36.2 93.9s58 34.4 93.9 36.2c37 2.1 147.9 2.1 184.9 0 35.9-1.7 67.7-9.9 93.9-36.2 26.2-26.2 34.4-58 36.2-93.9 2.1-37 2.1-147.8 0-184.8M398.8 388c-7.8 19.6-22.9 34.7-42.6 42.6-29.5 11.7-99.5 9-132.1 9s-102.7 2.6-132.1-9c-19.6-7.8-34.7-22.9-42.6-42.6-11.7-29.5-9-99.5-9-132.1s-2.6-102.7 9-132.1c7.8-19.6 22.9-34.7 42.6-42.6 29.5-11.7 99.5-9 132.1-9s102.7-2.6 132.1 9c19.6 7.8 34.7 22.9 42.6 42.6 11.7 29.5 9 99.5 9 132.1s2.7 102.7-9 132.1"/></svg>
1168
+ </a>
1169
+
1170
+
1171
+
1172
+
1173
+
1174
+ <a href="https://facebook.com/neteng.pro/" target="_blank" rel="noopener" title="Network Pro on Facebook" class="md-social__link">
1175
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!--! Font Awesome Free 6.7.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2024 Fonticons, Inc.--><path d="M512 256C512 114.6 397.4 0 256 0S0 114.6 0 256c0 120 82.7 220.8 194.2 248.5V334.2h-52.8V256h52.8v-33.7c0-87.1 39.4-127.5 125-127.5 16.2 0 44.2 3.2 55.7 6.4V172c-6-.6-16.5-1-29.6-1-42 0-58.2 15.9-58.2 57.2V256h83.6l-14.4 78.2H287v175.9C413.8 494.8 512 386.9 512 256"/></svg>
1176
+ </a>
1177
+
1178
+
1179
+
1180
+
1181
+
1182
+ <a href="https://linkedin.com/company/netwk-pro/" target="_blank" rel="noopener" title="Network Pro on LinkedIn" class="md-social__link">
1183
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 6.7.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2024 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zm-33.2-243c-21.3 0-38.5-17.3-38.5-38.5S80.9 96 102.2 96c21.2 0 38.5 17.3 38.5 38.5 0 21.3-17.2 38.5-38.5 38.5m282.1 243h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg>
1184
+ </a>
1185
+
1186
+
1187
+
1188
+
1189
+
1190
+
1191
+
1192
+ <a href="https://noc.social/@neteng_pro/" target="_blank" rel="noopener me" title="Network Pro on Mastoon" class="md-social__link">
1193
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 6.7.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2024 Fonticons, Inc.--><path d="M433 179.11c0-97.2-63.71-125.7-63.71-125.7-62.52-28.7-228.56-28.4-290.48 0 0 0-63.72 28.5-63.72 125.7 0 115.7-6.6 259.4 105.63 289.1 40.51 10.7 75.32 13 103.33 11.4 50.81-2.8 79.32-18.1 79.32-18.1l-1.7-36.9s-36.31 11.4-77.12 10.1c-40.41-1.4-83-4.4-89.63-54a102.5 102.5 0 0 1-.9-13.9c85.63 20.9 158.65 9.1 178.75 6.7 56.12-6.7 105-41.3 111.23-72.9 9.8-49.8 9-121.5 9-121.5m-75.12 125.2h-46.63v-114.2c0-49.7-64-51.6-64 6.9v62.5h-46.33V197c0-58.5-64-56.6-64-6.9v114.2H90.19c0-122.1-5.2-147.9 18.41-175 25.9-28.9 79.82-30.8 103.83 6.1l11.6 19.5 11.6-19.5c24.11-37.1 78.12-34.8 103.83-6.1 23.71 27.3 18.4 53 18.4 175z"/></svg>
1194
+ </a>
1195
+
1196
+
1197
+
1198
+
1199
+
1200
+ <a href="https://contact.neteng.pro/" target="_blank" rel="noopener" title="Contact Us" class="md-social__link">
1201
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!--! Font Awesome Free 6.7.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2024 Fonticons, Inc.--><path d="M256 64C150 64 64 150 64 256s86 192 192 192c17.7 0 32 14.3 32 32s-14.3 32-32 32C114.6 512 0 397.4 0 256S114.6 0 256 0s256 114.6 256 256v32c0 53-43 96-96 96-29.3 0-55.6-13.2-73.2-33.9-22.8 21-53.3 33.9-86.8 33.9-70.7 0-128-57.3-128-128s57.3-128 128-128c27.9 0 53.7 8.9 74.7 24.1 5.7-5 13.1-8.1 21.3-8.1 17.7 0 32 14.3 32 32v112c0 17.7 14.3 32 32 32s32-14.3 32-32v-32c0-106-86-192-192-192m64 192a64 64 0 1 0-128 0 64 64 0 1 0 128 0"/></svg>
1202
+ </a>
1203
+
1204
+ </div>
1205
+
1206
+ </div>
1207
+ </div>
1208
+ </footer>
1209
+
1210
+ </div>
1211
+ <div class="md-dialog" data-md-component="dialog">
1212
+ <div class="md-dialog__inner md-typeset"></div>
1213
+ </div>
1214
+
1215
+
1216
+ <div class="md-consent" data-md-component="consent" id="__consent" hidden>
1217
+ <div class="md-consent__overlay"></div>
1218
+ <aside class="md-consent__inner">
1219
+ <form class="md-consent__form md-grid md-typeset" name="consent">
1220
+
1221
+
1222
+
1223
+
1224
+ <h4>Cookie Consent</h4>
1225
+ <p>We use cookies to recognize your repeated visits and preferences, as well as to measure the effectiveness of our documentation and whether users find what they're searching for. With your consent, you're helping us to make our documentation better.</p>
1226
+ <input class="md-toggle" type="checkbox" id="__settings" >
1227
+ <div class="md-consent__settings">
1228
+ <ul class="task-list">
1229
+
1230
+
1231
+
1232
+
1233
+
1234
+
1235
+
1236
+
1237
+
1238
+
1239
+
1240
+ <li class="task-list-item">
1241
+ <label class="task-list-control">
1242
+ <input type="checkbox" name="analytics" >
1243
+ <span class="task-list-indicator"></span>
1244
+ Google Analytics
1245
+ </label>
1246
+ </li>
1247
+
1248
+
1249
+
1250
+
1251
+
1252
+
1253
+
1254
+
1255
+
1256
+
1257
+
1258
+
1259
+ <li class="task-list-item">
1260
+ <label class="task-list-control">
1261
+ <input type="checkbox" name="github" checked>
1262
+ <span class="task-list-indicator"></span>
1263
+ GitHub
1264
+ </label>
1265
+ </li>
1266
+
1267
+
1268
+
1269
+ </ul>
1270
+ </div>
1271
+ <div class="md-consent__controls">
1272
+
1273
+
1274
+
1275
+ <button type="reset" class="md-button md-button--primary">Reject</button>
1276
+
1277
+
1278
+
1279
+
1280
+ <button class="md-button md-button--primary">Accept</button>
1281
+
1282
+
1283
+
1284
+
1285
+
1286
+
1287
+
1288
+ <label class="md-button" for="__settings">Manage settings</label>
1289
+
1290
+
1291
+ </div>
1292
+ </form>
1293
+ </aside>
1294
+ </div>
1295
+ <script>var consent=__md_get("__consent");if(consent)for(var input of document.forms.consent.elements)input.name&&(input.checked=consent[input.name]||!1);else"file:"!==location.protocol&&setTimeout((function(){document.querySelector("[data-md-component=consent]").hidden=!1}),250);var form=document.forms.consent;for(var action of["submit","reset"])form.addEventListener(action,(function(e){if(e.preventDefault(),"reset"===e.type)for(var n of document.forms.consent.elements)n.name&&(n.checked=!1);__md_set("__consent",Object.fromEntries(Array.from(new FormData(form).keys()).map((function(e){return[e,!0]})))),location.hash="",location.reload()}))</script>
1296
+
1297
+
1298
+
1299
+ <script id="__config" type="application/json">{"base": "..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.indexes", "toc.follow", "navigation.top", "search.suggest"], "search": "../assets/javascripts/workers/search.d50fe291.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script>
1300
+
1301
+
1302
+ <script src="../assets/javascripts/bundle.13a4f30d.min.js"></script>
1303
+
1304
+
1305
+ </body>
1306
+ </html>