@microsoft/windows-admin-center-sdk 4.123.0 → 4.232.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 (581) hide show
  1. package/angular/assets/strings/cs-CZ/strings.json +1 -1
  2. package/angular/assets/strings/de-DE/strings.json +1 -1
  3. package/angular/assets/strings/es-ES/strings.json +1 -1
  4. package/angular/assets/strings/fr-FR/strings.json +1 -1
  5. package/angular/assets/strings/hu-HU/strings.json +1 -1
  6. package/angular/assets/strings/id-ID/strings.json +1 -1
  7. package/angular/assets/strings/it-IT/strings.json +1 -1
  8. package/angular/assets/strings/ja-JP/strings.json +1 -1
  9. package/angular/assets/strings/ko-KR/strings.json +1 -1
  10. package/angular/assets/strings/nl-NL/strings.json +1 -1
  11. package/angular/assets/strings/pl-PL/strings.json +1 -1
  12. package/angular/assets/strings/pt-BR/strings.json +1 -1
  13. package/angular/assets/strings/pt-PT/strings.json +1 -1
  14. package/angular/assets/strings/ru-RU/strings.json +1 -1
  15. package/angular/assets/strings/strings.json +1 -1
  16. package/angular/assets/strings/sv-SE/strings.json +1 -1
  17. package/angular/assets/strings/tr-TR/strings.json +1 -1
  18. package/angular/assets/strings/zh-CN/strings.json +1 -1
  19. package/angular/assets/strings/zh-TW/strings.json +1 -1
  20. package/angular/esm2020/src/controls/accordion/accordion-panel/accordion-panel.component.mjs +36 -12
  21. package/angular/esm2020/src/controls/actions/containers/action-container.component.mjs +2 -3
  22. package/angular/esm2020/src/controls/alert-bar/alert-bar.component.mjs +2 -2
  23. package/angular/esm2020/src/controls/breadcrumb-header/breadcrumb-header.component.mjs +1 -1
  24. package/angular/esm2020/src/controls/common/base.component.mjs +1 -1
  25. package/angular/esm2020/src/controls/common/spacer-base.component.mjs +25 -1
  26. package/angular/esm2020/src/controls/context-menu/context-menu.component.mjs +2 -3
  27. package/angular/esm2020/src/controls/data-table/data-table.component.mjs +7 -7
  28. package/angular/esm2020/src/controls/dialog/base-dialog.component.mjs +2 -4
  29. package/angular/esm2020/src/controls/dialog/confirmation-list-dialog/confirmation-list-dialog.component.mjs +2 -2
  30. package/angular/esm2020/src/controls/dropdown/dropdown.component.mjs +1 -4
  31. package/angular/esm2020/src/controls/form/form-field/array/array-form-field-accessibility-manager.service.mjs +59 -0
  32. package/angular/esm2020/src/controls/form/form-field/array/array-form-field.component.mjs +24 -35
  33. package/angular/esm2020/src/controls/form/form-field/clock/clock-form-field.component.mjs +10 -7
  34. package/angular/esm2020/src/controls/form/form-field/form-field-accessibility-manager-base.service.mjs +105 -0
  35. package/angular/esm2020/src/controls/form/form-field/form-field.component.mjs +1 -1
  36. package/angular/esm2020/src/controls/form/form-field/list/list-form-field-accessibility-manager.service.mjs +38 -0
  37. package/angular/esm2020/src/controls/form/form-field/list/list-form-field.component.mjs +56 -38
  38. package/angular/esm2020/src/controls/form/form-field/number/number-form-field.component.mjs +22 -4
  39. package/angular/esm2020/src/controls/form/form-field/ordered-list/ordered-list-form-field-accessibility-manager.service.mjs +54 -0
  40. package/angular/esm2020/src/controls/form/form-field/ordered-list/ordered-list-form-field.component.mjs +67 -67
  41. package/angular/esm2020/src/controls/form/form-field/radio-group/classic/radio-group-form-field.component.mjs +5 -5
  42. package/angular/esm2020/src/controls/form/forms.module.mjs +19 -2
  43. package/angular/esm2020/src/controls/icon/icon-text/icon-text.component.mjs +6 -6
  44. package/angular/esm2020/src/controls/icon/layered-icon/status/status-icon.component.mjs +1 -1
  45. package/angular/esm2020/src/controls/layout/editable-layout.component.mjs +2 -3
  46. package/angular/esm2020/src/controls/node-credentials-form/node-credentials-form.component.mjs +2 -2
  47. package/angular/esm2020/src/controls/page-alert-bar/page-alert-bar.component.mjs +4 -4
  48. package/angular/esm2020/src/controls/property-grid/property-grid.component.mjs +33 -13
  49. package/angular/esm2020/src/controls/schema/tabbed-form-loader.component.mjs +2 -2
  50. package/angular/esm2020/src/controls/settings/common-settings/common-settings.component.mjs +5 -5
  51. package/angular/esm2020/src/controls/settings/settings-form.directive.mjs +3 -7
  52. package/angular/esm2020/src/controls/settings/settings-form.service.mjs +2 -4
  53. package/angular/esm2020/src/controls/snap-in-extension/snap-in-extension.component.mjs +1 -1
  54. package/angular/esm2020/src/controls/split-view/split-view.component.mjs +2 -2
  55. package/angular/esm2020/src/controls/wizard/models/wizard-step-snap-in-output.mjs +1 -1
  56. package/angular/esm2020/src/controls/wizard-lite/wizard-navigation-button/wizard-navigation-button.component.mjs +3 -3
  57. package/angular/esm2020/src/data/extension-broker/snap-in-listener.mjs +80 -0
  58. package/angular/esm2020/src/data/index.mjs +2 -1
  59. package/angular/esm2020/src/directives/router/router-link.directive.mjs +2 -2
  60. package/angular/esm2020/src/directives/svg/svg.directive.mjs +2 -3
  61. package/angular/esm2020/src/generated/strings.mjs +1 -1
  62. package/angular/esm2020/src/service/navigation.service.mjs +3 -8
  63. package/angular/esm2020/src/service/user-alive.service.mjs +2 -4
  64. package/angular/fesm2015/microsoft-windows-admin-center-sdk-angular.mjs +665 -239
  65. package/angular/fesm2015/microsoft-windows-admin-center-sdk-angular.mjs.map +1 -1
  66. package/angular/fesm2020/microsoft-windows-admin-center-sdk-angular.mjs +636 -237
  67. package/angular/fesm2020/microsoft-windows-admin-center-sdk-angular.mjs.map +1 -1
  68. package/angular/package.json +1 -1
  69. package/angular/src/controls/accordion/accordion-panel/accordion-panel.component.d.ts +13 -4
  70. package/angular/src/controls/common/spacer-base.component.d.ts +11 -2
  71. package/angular/src/controls/form/form-field/array/array-form-field-accessibility-manager.service.d.ts +38 -0
  72. package/angular/src/controls/form/form-field/array/array-form-field.component.d.ts +3 -1
  73. package/angular/src/controls/form/form-field/form-field-accessibility-manager-base.service.d.ts +37 -0
  74. package/angular/src/controls/form/form-field/list/list-form-field-accessibility-manager.service.d.ts +25 -0
  75. package/angular/src/controls/form/form-field/list/list-form-field.component.d.ts +12 -2
  76. package/angular/src/controls/form/form-field/number/number-form-field.component.d.ts +8 -0
  77. package/angular/src/controls/form/form-field/ordered-list/ordered-list-form-field-accessibility-manager.service.d.ts +37 -0
  78. package/angular/src/controls/form/form-field/ordered-list/ordered-list-form-field.component.d.ts +12 -8
  79. package/angular/src/controls/icon/icon-text/icon-text.component.d.ts +1 -1
  80. package/angular/src/controls/property-grid/property-grid.component.d.ts +2 -0
  81. package/angular/src/controls/wizard/models/wizard-step-snap-in-output.d.ts +1 -1
  82. package/{core → angular/src}/data/extension-broker/snap-in-listener.d.ts +49 -46
  83. package/angular/src/data/index.d.ts +1 -0
  84. package/angular/src/directives/svg/svg.directive.d.ts +1 -2
  85. package/angular/src/generated/strings.d.ts +12 -0
  86. package/core/async/cancellation.js +312 -0
  87. package/core/async/index.js +312 -0
  88. package/core/async/progress.js +312 -0
  89. package/core/azure/azure-constants.d.ts +2 -2
  90. package/core/azure/azure-constants.d.ts.map +1 -1
  91. package/core/azure/azure-constants.js +322 -3
  92. package/core/azure/azure-constants.js.map +1 -1
  93. package/core/azure/azure-logging.js +312 -0
  94. package/core/azure/azure-manager.js +312 -0
  95. package/core/azure/models/aadAppConfig-data.js +312 -0
  96. package/core/azure/models/azureArcStatusEnum.js +312 -0
  97. package/core/azure/models/azureTokenResult-data.js +312 -0
  98. package/core/azure/resources/deployment-operation-request-body.js +312 -0
  99. package/core/azure/resources/deployment-operation-response.js +312 -0
  100. package/core/azure/resources/location-data.js +315 -0
  101. package/core/azure/resources/resource-group-data.js +312 -0
  102. package/core/azure/resources/subscription-data.js +312 -0
  103. package/core/base/data-store/browser-storage-data-store.js +315 -0
  104. package/core/base/data-store/cached-data-store.js +312 -0
  105. package/core/base/data-store/data-store.js +312 -0
  106. package/core/base/data-store/local-data-store.js +312 -0
  107. package/core/base/data-store/memory-data-store.js +312 -0
  108. package/core/base/data-store/session-data-store.js +312 -0
  109. package/core/base/date/date-like.js +312 -0
  110. package/core/base/date/date-range.js +312 -0
  111. package/core/base/date/date-time.js +312 -0
  112. package/core/base/date/date-type.js +312 -0
  113. package/core/base/date/time-unit.js +312 -0
  114. package/core/base/decorators/base.js +312 -0
  115. package/core/base/decorators/debounce.decorators.js +312 -0
  116. package/core/base/decorators/delay.decorator.js +315 -0
  117. package/core/base/decorators/yield.decorator.js +312 -0
  118. package/core/base/environment.js +312 -0
  119. package/core/base/json.js +312 -0
  120. package/core/base/msft-sme.mock.js +316 -0
  121. package/core/base/polyfills/array.js +315 -0
  122. package/core/base/polyfills/string.js +312 -0
  123. package/core/base/rxjs-lifetime-manager.js +312 -0
  124. package/core/base/utilities.js +312 -0
  125. package/core/base/versioned-object.js +312 -0
  126. package/core/data/accessibility-manager.js +312 -0
  127. package/core/data/active-directory/active-directory.js +312 -0
  128. package/core/data/active-directory/models/account-info.js +312 -0
  129. package/core/data/active-directory/models/active-directory-search-options.js +312 -0
  130. package/core/data/active-directory/models/search-type.js +312 -0
  131. package/core/data/animation.js +312 -0
  132. package/core/data/app-context.js +312 -0
  133. package/core/data/asset-manager.js +315 -0
  134. package/core/data/base64-array-buffer.js +312 -0
  135. package/core/data/batch-connection.js +312 -0
  136. package/core/data/cim-connection.js +312 -0
  137. package/core/data/cim-stream.js +312 -0
  138. package/core/data/cim.js +312 -0
  139. package/core/data/column-picker.js +312 -0
  140. package/core/data/cookie.js +312 -0
  141. package/core/data/core-environment.js +315 -0
  142. package/core/data/crypto.js +312 -0
  143. package/core/data/deployment-share.js +312 -0
  144. package/core/data/disposable.js +312 -0
  145. package/core/data/electron.js +315 -0
  146. package/core/data/error-extended.js +312 -0
  147. package/core/data/extension-broker/dialog-listener.js +312 -0
  148. package/core/data/extension-broker/extension-broker.js +312 -0
  149. package/core/data/extension-broker/extension-listener.js +312 -0
  150. package/core/data/extension-broker/model/extension-broker-request-payload.js +312 -0
  151. package/core/data/extension-broker/model/extension-broker-response-error.js +312 -0
  152. package/core/data/extension-broker/model/extension-broker-response-payload.js +312 -0
  153. package/core/data/extension-broker/model/extension-entries.js +315 -0
  154. package/core/data/extension-broker/model/extension-instance.js +315 -0
  155. package/core/data/extension-broker/model/extension-rect.js +312 -0
  156. package/core/data/extension-broker/model/extension-search-options.js +312 -0
  157. package/core/data/extension-broker/service-listener.js +312 -0
  158. package/core/data/extension-broker/worker-listener.js +312 -0
  159. package/core/data/extension-broker/worker-set.js +312 -0
  160. package/core/data/file-transfer.js +312 -0
  161. package/core/data/gateway-connection.js +312 -0
  162. package/core/data/gateway-status.js +312 -0
  163. package/core/data/gateway-url-builder.js +312 -0
  164. package/core/data/gateway-url-translator.d.ts +1 -0
  165. package/core/data/gateway-url-translator.d.ts.map +1 -1
  166. package/core/data/gateway-url-translator.js +337 -6
  167. package/core/data/gateway-url-translator.js.map +1 -1
  168. package/core/data/gateway-urls.js +312 -0
  169. package/core/data/globalization.js +315 -0
  170. package/core/data/http-constants.js +315 -0
  171. package/core/data/http.js +312 -0
  172. package/core/data/jobs/jobs-manager.js +312 -0
  173. package/core/data/jobs/models/job-credentials.js +312 -0
  174. package/core/data/jobs/models/job-node.js +312 -0
  175. package/core/data/jobs/models/job-paginated-response.js +315 -0
  176. package/core/data/jobs/models/job-pagination-options.js +315 -0
  177. package/core/data/jobs/models/job.js +312 -0
  178. package/core/data/jobs/models/node-job.js +312 -0
  179. package/core/data/jobs/models/powershell-job.js +312 -0
  180. package/core/data/language.js +315 -0
  181. package/core/data/lifetime-data.js +312 -0
  182. package/core/data/localization-manager.js +312 -0
  183. package/core/data/native-q.js +312 -0
  184. package/core/data/net.d.ts.map +1 -1
  185. package/core/data/net.js +313 -1
  186. package/core/data/net.js.map +1 -1
  187. package/core/data/node-connection.d.ts.map +1 -1
  188. package/core/data/node-connection.js +312 -2
  189. package/core/data/node-connection.js.map +1 -1
  190. package/core/data/node-extension-install.js +312 -0
  191. package/core/data/powershell-alternate.js +312 -0
  192. package/core/data/powershell-batch.js +312 -0
  193. package/core/data/powershell-connection.js +312 -0
  194. package/core/data/powershell-crypto.js +312 -0
  195. package/core/data/powershell-stream.js +312 -0
  196. package/core/data/powershell.js +312 -0
  197. package/core/data/query-cache.js +312 -0
  198. package/core/data/resource-cache.js +312 -0
  199. package/core/data/schedule-reboot.js +312 -0
  200. package/core/data/settings-manager.js +312 -0
  201. package/core/data/settings-manger.mock.js +312 -0
  202. package/core/data/sme-extension.js +312 -0
  203. package/core/data/ssh-stream.js +312 -0
  204. package/core/data/units.js +312 -0
  205. package/core/data/uri-builder.js +315 -0
  206. package/core/data/wdac-operations.js +312 -0
  207. package/core/data/websocket-stream.js +312 -0
  208. package/core/diagnostics/error-monitor.js +312 -0
  209. package/core/diagnostics/log-level.js +312 -0
  210. package/core/diagnostics/log-record.js +312 -0
  211. package/core/diagnostics/logging-constants.js +312 -0
  212. package/core/diagnostics/logging.js +312 -0
  213. package/core/diagnostics/logging.mock.js +312 -0
  214. package/core/diagnostics/sme-web-telemetry-models.js +312 -0
  215. package/core/diagnostics/sme-web-telemetry.d.ts +1 -2
  216. package/core/diagnostics/sme-web-telemetry.d.ts.map +1 -1
  217. package/core/diagnostics/sme-web-telemetry.js +336 -15
  218. package/core/diagnostics/sme-web-telemetry.js.map +1 -1
  219. package/core/diagnostics/telemetry-control-type.js +312 -0
  220. package/core/diagnostics/telemetry-options.js +312 -0
  221. package/core/diagnostics/telemetry-record.js +312 -0
  222. package/core/dom/dom.js +312 -0
  223. package/core/frame/frame-connection.js +312 -0
  224. package/core/frame/frame-connection.mock.js +312 -0
  225. package/core/frame/shell-navigation-connection.js +312 -0
  226. package/core/generated/powershell-scripts.d.ts.map +1 -1
  227. package/core/generated/powershell-scripts.js +313 -1
  228. package/core/generated/powershell-scripts.js.map +1 -1
  229. package/core/generated/strings.js +312 -0
  230. package/core/host/host-core-manager.js +312 -0
  231. package/core/host/host-core-message-type.js +312 -0
  232. package/core/host/host-core-messages.js +312 -0
  233. package/core/index.d.ts +0 -1
  234. package/core/index.d.ts.map +1 -1
  235. package/core/index.js +312 -1
  236. package/core/index.js.map +1 -1
  237. package/core/manifest/environment-modules.js +312 -0
  238. package/core/manifest/manifest-loader.js +312 -0
  239. package/core/notification/client-notification-instance.js +312 -0
  240. package/core/notification/client-notification.js +312 -0
  241. package/core/notification/notification-connection.js +312 -0
  242. package/core/notification/notification-link-type.js +312 -0
  243. package/core/notification/notification-manager.js +312 -0
  244. package/core/notification/notification-message.js +312 -0
  245. package/core/notification/notification-state.js +312 -0
  246. package/core/notification/notification.js +312 -0
  247. package/core/notification/powershell-notification.js +312 -0
  248. package/core/notification/socket-signalr.js +312 -0
  249. package/core/notification/work-item-connection.js +312 -0
  250. package/core/notification/work-item-manager.js +312 -0
  251. package/core/notification/work-item-request.js +312 -0
  252. package/core/performance/performance-profile-data-type.js +312 -0
  253. package/core/performance/performance-profile-data.js +312 -0
  254. package/core/performance/performance-profile-database.js +312 -0
  255. package/core/performance/performance-profile-record.js +312 -0
  256. package/core/performance/performance-profile.d.ts.map +1 -1
  257. package/core/performance/performance-profile.js +321 -9
  258. package/core/performance/performance-profile.js.map +1 -1
  259. package/core/performance/performance-tracker.js +312 -0
  260. package/core/polyfills.js +312 -0
  261. package/core/resources/scripts/public/crypto/Get-DecryptedDataFromNode.ps1 +216 -0
  262. package/core/resources/scripts/public/crypto/Get-EncryptionJWKOnNode.ps1 +216 -0
  263. package/core/resources/scripts/public/inventory/Get-CimWin32LogicalDisk.ps1 +218 -0
  264. package/core/resources/scripts/public/inventory/Get-CimWin32NetworkAdapter.ps1 +216 -0
  265. package/core/resources/scripts/public/inventory/Get-CimWin32PhysicalMemory.ps1 +216 -0
  266. package/core/resources/scripts/public/inventory/Get-CimWin32Processor.ps1 +216 -0
  267. package/core/resources/scripts/public/inventory/Get-ClusterInventory.ps1 +216 -0
  268. package/core/resources/scripts/public/inventory/Get-ClusterNodes.ps1 +216 -0
  269. package/core/resources/scripts/public/inventory/Get-ServerInventory.ps1 +246 -8
  270. package/core/rpc/alive/rpc-alive-client.js +312 -0
  271. package/core/rpc/alive/rpc-alive-handler.js +312 -0
  272. package/core/rpc/alive/rpc-alive-model.js +315 -0
  273. package/core/rpc/alive/rpc-alive-subject-server.js +312 -0
  274. package/core/rpc/alive/rpc-observable-alive-client.js +312 -0
  275. package/core/rpc/alive/rpc-observable-alive-model.js +312 -0
  276. package/core/rpc/alive/rpc-observable-alive-server.js +312 -0
  277. package/core/rpc/azure/rpc-azure-model.js +312 -0
  278. package/core/rpc/azure/rpc-azure-request-client.js +312 -0
  279. package/core/rpc/azure/rpc-azure-request-handler.js +312 -0
  280. package/core/rpc/azure/rpc-azure-request-subject-server.js +312 -0
  281. package/core/rpc/azure/rpc-azure-response-client.js +312 -0
  282. package/core/rpc/azure/rpc-azure-response-handler.js +315 -0
  283. package/core/rpc/credssp/rpc-credssp-model.js +312 -0
  284. package/core/rpc/credssp/rpc-credssp-request-client.js +312 -0
  285. package/core/rpc/credssp/rpc-credssp-request-handler.js +315 -0
  286. package/core/rpc/credssp/rpc-credssp-request-subject-server.js +312 -0
  287. package/core/rpc/credssp/rpc-credssp-response-client.js +312 -0
  288. package/core/rpc/credssp/rpc-credssp-response-handler.js +315 -0
  289. package/core/rpc/dialog/rpc-dialog-client.js +312 -0
  290. package/core/rpc/dialog/rpc-dialog-handler.js +312 -0
  291. package/core/rpc/dialog/rpc-dialog-model.js +312 -0
  292. package/core/rpc/dialog/rpc-dialog-subject-server.js +315 -0
  293. package/core/rpc/electron/rpc-electron-model.js +312 -0
  294. package/core/rpc/electron/rpc-electron-request-client.js +312 -0
  295. package/core/rpc/electron/rpc-electron-request-handler.js +312 -0
  296. package/core/rpc/electron/rpc-electron-request-subject-server.js +312 -0
  297. package/core/rpc/electron/rpc-electron-response-client.js +312 -0
  298. package/core/rpc/electron/rpc-electron-response-handler.js +312 -0
  299. package/core/rpc/elevate/rpc-observable-elevate-client.js +312 -0
  300. package/core/rpc/elevate/rpc-observable-elevate-model.js +312 -0
  301. package/core/rpc/elevate/rpc-observable-elevate-server.js +312 -0
  302. package/core/rpc/error-monitor/rpc-observable-error-monitor-client.js +312 -0
  303. package/core/rpc/error-monitor/rpc-observable-error-monitor-model.js +315 -0
  304. package/core/rpc/error-monitor/rpc-observable-error-monitor-server.js +312 -0
  305. package/core/rpc/extension-broker/rpc-extension-broker-model.js +315 -0
  306. package/core/rpc/extension-broker/rpc-extension-broker-module-request-subject-server.js +315 -0
  307. package/core/rpc/extension-broker/rpc-extension-broker-request-client.js +312 -0
  308. package/core/rpc/extension-broker/rpc-extension-broker-request-handler.js +312 -0
  309. package/core/rpc/extension-broker/rpc-extension-broker-request-subject-server.js +312 -0
  310. package/core/rpc/extension-broker/rpc-extension-broker-response-client.js +312 -0
  311. package/core/rpc/extension-broker/rpc-extension-broker-response-handler.js +312 -0
  312. package/core/rpc/extension-data/rpc-observable-extension-data-client.js +312 -0
  313. package/core/rpc/extension-data/rpc-observable-extension-data-model.js +312 -0
  314. package/core/rpc/extension-data/rpc-observable-extension-data-server.js +312 -0
  315. package/core/rpc/forward/rpc-forward-auto-client.js +312 -0
  316. package/core/rpc/forward/rpc-forward-down-client.js +315 -0
  317. package/core/rpc/forward/rpc-forward-down-handler.js +312 -0
  318. package/core/rpc/forward/rpc-forward-model.js +312 -0
  319. package/core/rpc/forward/rpc-forward-up-client.js +312 -0
  320. package/core/rpc/forward/rpc-forward-up-handler.js +312 -0
  321. package/core/rpc/forward/rpc-forward-up-subject-server.js +312 -0
  322. package/core/rpc/log/rpc-log-client.js +312 -0
  323. package/core/rpc/log/rpc-log-handler.js +312 -0
  324. package/core/rpc/log/rpc-log-model.js +312 -0
  325. package/core/rpc/log/rpc-log-subject-server.js +312 -0
  326. package/core/rpc/notification/rpc-notification-client.js +312 -0
  327. package/core/rpc/notification/rpc-notification-handler.js +312 -0
  328. package/core/rpc/notification/rpc-notification-model.js +312 -0
  329. package/core/rpc/notification/rpc-notification-subject-server.js +312 -0
  330. package/core/rpc/overlay/rpc-overlay-close-client.js +312 -0
  331. package/core/rpc/overlay/rpc-overlay-close-handler.js +312 -0
  332. package/core/rpc/overlay/rpc-overlay-model.js +312 -0
  333. package/core/rpc/overlay/rpc-overlay-open-client.js +315 -0
  334. package/core/rpc/overlay/rpc-overlay-open-handler.js +312 -0
  335. package/core/rpc/overlay/rpc-overlay-open-subject-server.js +312 -0
  336. package/core/rpc/performance/rpc-observable-performance-client.js +312 -0
  337. package/core/rpc/performance/rpc-observable-performance-config-client.js +312 -0
  338. package/core/rpc/performance/rpc-observable-performance-config-server.js +312 -0
  339. package/core/rpc/performance/rpc-observable-performance-model.js +312 -0
  340. package/core/rpc/performance/rpc-observable-performance-server.js +312 -0
  341. package/core/rpc/report/rpc-report-client.js +312 -0
  342. package/core/rpc/report/rpc-report-handler.js +312 -0
  343. package/core/rpc/report/rpc-report-model.js +312 -0
  344. package/core/rpc/report/rpc-report-subject-server.js +315 -0
  345. package/core/rpc/rpc-base.js +312 -0
  346. package/core/rpc/rpc-channel.js +312 -0
  347. package/core/rpc/rpc-forwarder.js +312 -0
  348. package/core/rpc/rpc-inbound-client.js +312 -0
  349. package/core/rpc/rpc-inbound.js +312 -0
  350. package/core/rpc/rpc-manager.js +312 -0
  351. package/core/rpc/rpc-module-subject-server.js +315 -0
  352. package/core/rpc/rpc-observable-client.js +312 -0
  353. package/core/rpc/rpc-observable-request.js +312 -0
  354. package/core/rpc/rpc-observable-result.js +312 -0
  355. package/core/rpc/rpc-observable-server.js +312 -0
  356. package/core/rpc/rpc-outbound-client.js +312 -0
  357. package/core/rpc/rpc-outbound.js +312 -0
  358. package/core/rpc/rpc-subject-server.js +312 -0
  359. package/core/rpc/rpc.js +312 -0
  360. package/core/rpc/seek/rpc-seek-client.js +312 -0
  361. package/core/rpc/seek/rpc-seek-handler.js +315 -0
  362. package/core/rpc/seek/rpc-seek-model.js +312 -0
  363. package/core/rpc/settings/rpc-settings-client.js +315 -0
  364. package/core/rpc/settings/rpc-settings-handler.js +312 -0
  365. package/core/rpc/settings/rpc-settings-model.js +312 -0
  366. package/core/rpc/settings/rpc-settings-subject-server.js +312 -0
  367. package/core/rpc/shell-navigate/rpc-shell-navigate-client.js +312 -0
  368. package/core/rpc/shell-navigate/rpc-shell-navigate-handler.js +312 -0
  369. package/core/rpc/shell-navigate/rpc-shell-navigate-model.js +312 -0
  370. package/core/rpc/shell-navigate/rpc-shell-navigate-subject-server.js +312 -0
  371. package/core/rpc/sme-extension/rpc-sme-extension-model.js +315 -0
  372. package/core/rpc/sme-extension/rpc-sme-extension-request-client.js +312 -0
  373. package/core/rpc/sme-extension/rpc-sme-extension-request-handler.js +312 -0
  374. package/core/rpc/sme-extension/rpc-sme-extension-request-subject-server.js +312 -0
  375. package/core/rpc/sme-extension/rpc-sme-extension-response-client.js +312 -0
  376. package/core/rpc/sme-extension/rpc-sme-extension-response-handler.js +312 -0
  377. package/core/rpc/telemetry/rpc-telemetry-client.js +312 -0
  378. package/core/rpc/telemetry/rpc-telemetry-handler.js +315 -0
  379. package/core/rpc/telemetry/rpc-telemetry-model.js +312 -0
  380. package/core/rpc/telemetry/rpc-telemetry-subject-server.js +312 -0
  381. package/core/rpc/update-data/rpc-update-data-client.js +312 -0
  382. package/core/rpc/update-data/rpc-update-data-handler.js +312 -0
  383. package/core/rpc/update-data/rpc-update-data-model.js +312 -0
  384. package/core/rpc/update-data/rpc-update-data-subject-server.js +312 -0
  385. package/core/rpc/update-theme/rpc-observable-update-theme-client.js +312 -0
  386. package/core/rpc/update-theme/rpc-observable-update-theme-model.js +312 -0
  387. package/core/rpc/update-theme/rpc-observable-update-theme-server.js +312 -0
  388. package/core/rpc/work-item/rpc-work-item-client.js +312 -0
  389. package/core/rpc/work-item/rpc-work-item-handler.js +312 -0
  390. package/core/rpc/work-item/rpc-work-item-model.js +312 -0
  391. package/core/rpc/work-item/rpc-work-item-subject-server.js +312 -0
  392. package/core/rpc/work-item-find/rpc-work-item-find-client.js +312 -0
  393. package/core/rpc/work-item-find/rpc-work-item-find-handler.js +312 -0
  394. package/core/rpc/work-item-find/rpc-work-item-find-model.js +312 -0
  395. package/core/rpc/work-item-find/rpc-work-item-find-subject-server.js +312 -0
  396. package/core/security/active-connection.js +312 -0
  397. package/core/security/authorization-manager.js +312 -0
  398. package/core/security/connection-manager-settings/common-connection-settings.js +315 -0
  399. package/core/security/connection-manager-settings/connection-settings.js +312 -0
  400. package/core/security/connection-manager.js +312 -0
  401. package/core/security/connection-stream.js +312 -0
  402. package/core/security/connection.js +312 -0
  403. package/core/security/credssp-manager.js +312 -0
  404. package/core/security/sign-on-manager.js +312 -0
  405. package/core/security/tag-manager.js +312 -0
  406. package/core/security/tool-condition-validator.js +312 -0
  407. package/core/security/tool-connection-query.js +312 -0
  408. package/core/security/user-principal.js +312 -0
  409. package/core/shared/cluster-inventory/cluster-inventory-cache.js +312 -0
  410. package/core/shared/cluster-inventory/cluster-inventory.js +312 -0
  411. package/core/shared/cluster-inventory/cluster-node-inventory.js +312 -0
  412. package/core/shared/gateway-inventory/gateway-inventory-cache.js +312 -0
  413. package/core/shared/gateway-inventory/gateway-inventory-detail-cache.js +312 -0
  414. package/core/shared/gateway-inventory/gateway-inventory-detail.js +312 -0
  415. package/core/shared/gateway-inventory/gateway-inventory.js +312 -0
  416. package/core/shared/inventory-query-caches.js +312 -0
  417. package/core/shared/server-inventory/server-inventory-cache.js +312 -0
  418. package/core/shared/server-inventory/server-inventory-detail-cache.js +312 -0
  419. package/core/shared/server-inventory/server-inventory-detail.js +315 -0
  420. package/core/shared/server-inventory/server-inventory.js +312 -0
  421. package/core/shared/shared-cache.js +312 -0
  422. package/core/shared/tool-inventory/tool-inventory-cache.js +312 -0
  423. package/core/shared/tool-inventory/tool-inventory.js +312 -0
  424. package/core/special.js +315 -0
  425. package/core/test-utilities/accessibility-tester.js +312 -0
  426. package/core/test-utilities/console.mock.js +312 -0
  427. package/core/test-utilities/jasmine-axe-matcher.js +312 -0
  428. package/core/test-utilities/wait-async.js +312 -0
  429. package/core/test.js +312 -0
  430. package/core/testing.js +312 -0
  431. package/core/workflow/persistent-local-storage.js +312 -0
  432. package/core/workflow/persistent-work-item-apply-state.js +316 -0
  433. package/core/workflow/persistent-work-item-state.js +312 -0
  434. package/core/workflow/persistent-work-item.js +315 -0
  435. package/core/workflow/persistent-workflow-builder.js +312 -0
  436. package/core/workflow/persistent-workflow-context.js +312 -0
  437. package/core/workflow/persistent-workflow-runner.js +312 -0
  438. package/core/workflow/persistent-workflow-snapshot.js +312 -0
  439. package/core/workflow/persistent-workflow-store.js +312 -0
  440. package/core/workflow/persistent-workflow.js +312 -0
  441. package/package.json +11 -9
  442. package/styles/css/main-v2.css +1 -1
  443. package/styles/fonts/SegoeUI/Bold/SegoeUIBold-5.27.woff +0 -0
  444. package/styles/fonts/SegoeUI/Light/SegoeUILight-5.27.woff +0 -0
  445. package/styles/fonts/SegoeUI/Normal/SegoeUI-5.27.woff +0 -0
  446. package/styles/fonts/SegoeUI/SemiBold/SegoeUISemiBold-5.27.woff +0 -0
  447. package/styles/fonts/SegoeUI/SemiLight/SegoeUISemiLight-5.27.woff +0 -0
  448. package/styles/fonts/ServMDL2/ServMDL2-4.66.woff +0 -0
  449. package/tools/build/webpack/index-html.transform.js +312 -0
  450. package/tools/build/webpack/shell.index-html.transform.js +312 -0
  451. package/tools/build/webpack/shell.webpack.config.js +312 -0
  452. package/tools/build/webpack/webpack.config.js +312 -0
  453. package/tools/code-formatter/.eslintrc.base.json +3 -1
  454. package/tools/code-formatter/lint.d.ts.map +1 -1
  455. package/tools/code-formatter/lint.js +319 -1
  456. package/tools/code-formatter/lint.js.map +1 -1
  457. package/tools/code-formatter/utilities.d.ts +7 -0
  458. package/tools/code-formatter/utilities.d.ts.map +1 -0
  459. package/tools/code-formatter/utilities.js +395 -0
  460. package/tools/code-formatter/utilities.js.map +1 -0
  461. package/tools/gulp-doc-generator/index.js +312 -0
  462. package/tools/gulp-manifest-resource/index.js +312 -0
  463. package/tools/gulp-manifest-validator/index.js +312 -0
  464. package/tools/gulp-merge-json-in-folders/index.js +312 -0
  465. package/tools/gulp-merge-json-in-folders/json-merge.js +312 -0
  466. package/tools/gulp-ps-cim/index.js +315 -0
  467. package/tools/gulp-ps-code/index.d.ts.map +1 -1
  468. package/tools/gulp-ps-code/index.js +323 -2
  469. package/tools/gulp-ps-code/index.js.map +1 -1
  470. package/tools/gulp-ps-code/ps-code-convert.js +312 -0
  471. package/tools/gulp-ps-manifest/index.js +312 -0
  472. package/tools/gulp-ps-module/index.d.ts.map +1 -1
  473. package/tools/gulp-ps-module/index.js +327 -3
  474. package/tools/gulp-ps-module/index.js.map +1 -1
  475. package/tools/gulp-ps-resjson/index.js +315 -0
  476. package/tools/gulp-resjson/index.js +315 -0
  477. package/tools/gulp-resjson/resjson-convert.js +312 -0
  478. package/tools/gulp-schema-form/index.js +312 -0
  479. package/tools/gulp-svg-code/index.js +312 -0
  480. package/tools/gulp-svg-code/svg-code-convert.js +312 -0
  481. package/tools/gulp-update-notes-resource/index.d.ts.map +1 -1
  482. package/tools/gulp-update-notes-resource/index.js +316 -4
  483. package/tools/gulp-update-notes-resource/index.js.map +1 -1
  484. package/tools/module-template/.eslintrc.json +3 -0
  485. package/tools/module-template/build/increment-package-version.ps1 +216 -0
  486. package/tools/module-template/build/push-incremented-version.ps1 +216 -1
  487. package/tools/module-template/build/update-powershell-code.ps1 +216 -0
  488. package/tools/module-template/gulpfile.ts/common/clean.ts +2 -0
  489. package/tools/module-template/gulpfile.ts/common/pack.ts +17 -5
  490. package/tools/module-template/gulpfile.ts/common/powershell.ts +40 -2
  491. package/tools/module-template/gulpfile.ts/common/utilities.ts +1 -0
  492. package/tools/pack-nuget/index.d.ts.map +1 -1
  493. package/tools/pack-nuget/index.js +321 -3
  494. package/tools/pack-nuget/index.js.map +1 -1
  495. package/tools/scripts/Invoke-PesterTest.ps1 +216 -0
  496. package/tools/scripts/New-ExtensionPackage.ps1 +373 -6
  497. package/tools/scripts/Search-NonAsciiText.ps1 +216 -0
  498. package/tools/scripts/package-information/README.md +3 -0
  499. package/tools/scripts/package-information/ms-logo.png +0 -0
  500. package/tools/test-runner/index.js +312 -0
  501. package/tools/utilities/index.js +312 -0
  502. package/tools/wac-cli/src/angular15/configs/angular-json-config.js +312 -0
  503. package/tools/wac-cli/src/angular15/configs/ci-build-yml-config.js +315 -0
  504. package/tools/wac-cli/src/angular15/configs/config.js +312 -0
  505. package/tools/wac-cli/src/angular15/configs/eslint-auto-fix-config.d.ts +9 -0
  506. package/tools/wac-cli/src/angular15/configs/eslint-auto-fix-config.d.ts.map +1 -0
  507. package/tools/wac-cli/src/angular15/configs/eslint-auto-fix-config.js +328 -0
  508. package/tools/wac-cli/src/angular15/configs/eslint-auto-fix-config.js.map +1 -0
  509. package/tools/wac-cli/src/angular15/configs/git-ignore-config.js +312 -0
  510. package/tools/wac-cli/src/angular15/configs/jasmine-test-config.js +315 -0
  511. package/tools/wac-cli/src/angular15/configs/package-json-config.js +312 -0
  512. package/tools/wac-cli/src/angular15/configs/replace-config.js +315 -0
  513. package/tools/wac-cli/src/angular15/configs/tsconfig-config.js +312 -0
  514. package/tools/wac-cli/src/angular15/configs/ui-test-automation-lagacy-config.js +312 -0
  515. package/tools/wac-cli/src/angular15/main.d.ts +19 -3
  516. package/tools/wac-cli/src/angular15/main.d.ts.map +1 -1
  517. package/tools/wac-cli/src/angular15/main.js +353 -7
  518. package/tools/wac-cli/src/angular15/main.js.map +1 -1
  519. package/tools/wac-cli/src/angular15/upgrader/angular-json-upgrader.js +316 -0
  520. package/tools/wac-cli/src/angular15/upgrader/audit/ajax-response-updater.js +312 -0
  521. package/tools/wac-cli/src/angular15/upgrader/audit/css-syntax-error-updater.js +312 -0
  522. package/tools/wac-cli/src/angular15/upgrader/audit/declare-override-updater.js +312 -0
  523. package/tools/wac-cli/src/angular15/upgrader/audit/error-updater-angular15.js +312 -0
  524. package/tools/wac-cli/src/angular15/upgrader/audit/form-control-updater.js +312 -0
  525. package/tools/wac-cli/src/angular15/upgrader/audit/iif-updater-util.js +312 -0
  526. package/tools/wac-cli/src/angular15/upgrader/audit/load-children-callback-updater.js +315 -0
  527. package/tools/wac-cli/src/angular15/upgrader/audit/log-parser.js +312 -0
  528. package/tools/wac-cli/src/angular15/upgrader/audit/observable-throw-updater.js +312 -0
  529. package/tools/wac-cli/src/angular15/upgrader/audit/parameter-count-violation-updater.js +312 -0
  530. package/tools/wac-cli/src/angular15/upgrader/audit/string-replace-updater.js +312 -0
  531. package/tools/wac-cli/src/angular15/upgrader/audit/subjuct-next-updater-util.js +312 -0
  532. package/tools/wac-cli/src/angular15/upgrader/ci-build-yml-upgrader.js +312 -0
  533. package/tools/wac-cli/src/angular15/upgrader/eslint-auto-fix-upgrader.d.ts +18 -0
  534. package/tools/wac-cli/src/angular15/upgrader/eslint-auto-fix-upgrader.d.ts.map +1 -0
  535. package/tools/wac-cli/src/angular15/upgrader/eslint-auto-fix-upgrader.js +361 -0
  536. package/tools/wac-cli/src/angular15/upgrader/eslint-auto-fix-upgrader.js.map +1 -0
  537. package/tools/wac-cli/src/angular15/upgrader/file-replacement-upgrader.js +312 -0
  538. package/tools/wac-cli/src/angular15/upgrader/git-ignore-upgrader.js +312 -0
  539. package/tools/wac-cli/src/angular15/upgrader/jasmine-test-upgrader.js +312 -0
  540. package/tools/wac-cli/src/angular15/upgrader/package-json-upgrader.js +312 -0
  541. package/tools/wac-cli/src/angular15/upgrader/remove-upgrader.js +315 -0
  542. package/tools/wac-cli/src/angular15/upgrader/replace-upgrader.js +312 -0
  543. package/tools/wac-cli/src/angular15/upgrader/tsconfig-upgrader.js +312 -0
  544. package/tools/wac-cli/src/angular15/upgrader/ui-test-automation-legacy-upgrader.js +312 -0
  545. package/tools/wac-cli/src/angular15/upgrader/version-json-upgrader.js +312 -0
  546. package/tools/wac-cli/src/angular15/utils/add-item.js +312 -0
  547. package/tools/wac-cli/src/angular15/utils/command-runner.js +312 -0
  548. package/tools/wac-cli/src/angular15/utils/file-comparison.js +315 -0
  549. package/tools/wac-cli/src/angular15/utils/file-replacement.js +312 -0
  550. package/tools/wac-cli/src/angular15/utils/file-writer.js +312 -0
  551. package/tools/wac-cli/src/angular15/utils/logger.js +312 -0
  552. package/tools/wac-cli/src/angular15/utils/main-debugger.js +312 -0
  553. package/tools/wac-cli/src/angular15/utils/relative-path.js +312 -0
  554. package/tools/wac-cli/src/angular15/utils/remove-item.js +312 -0
  555. package/tools/wac-cli/src/angular15/utils/space-generator.js +312 -0
  556. package/tools/wac-cli/src/angular15/utils/update-shell-references.js +316 -0
  557. package/tools/wac-cli/src/common.js +312 -0
  558. package/tools/wac-cli/src/create/main.js +312 -0
  559. package/tools/wac-cli/src/eslint/main.js +312 -0
  560. package/tools/wac-cli/src/index.js +312 -0
  561. package/tools/wac-cli/src/upgrade/error-updater.js +312 -0
  562. package/tools/wac-cli/src/upgrade/error-updaters/component-selector-updater.js +315 -0
  563. package/tools/wac-cli/src/upgrade/error-updaters/only-arrow-functions-updater.js +315 -0
  564. package/tools/wac-cli/src/upgrade/error-updaters/updater-lookup.js +312 -0
  565. package/tools/wac-cli/src/upgrade/file-updater.js +312 -0
  566. package/tools/wac-cli/src/upgrade/get-files.js +312 -0
  567. package/tools/wac-cli/src/upgrade/main.js +312 -0
  568. package/tools/wac-cli/src/upgrade/models/error-result.js +312 -0
  569. package/tools/wac-cli/src/upgrade/models/updater-interface.js +312 -0
  570. package/tools/wac-cli/src/upgrade/package-updater.js +312 -0
  571. package/tools/wac-cli/templates/wac-template/src/favicon.ico +0 -0
  572. package/tools/wac-cli/templates/wac-template/src/karma.conf.js +312 -0
  573. package/tools/wac-cli/templates/wac-template/src/resources/scripts/Get-Error.ps1 +216 -0
  574. package/tools/wac-cli/templates/wac-template/src/resources/scripts/Get-Exception.ps1 +216 -0
  575. package/tools/wac-cli/templates/wac-template/src/resources/scripts/Get-Process.ps1 +216 -1
  576. package/tools/wac-cli/templates/wac-template/src/resources/scripts/Get-Service.ps1 +216 -1
  577. package/tools/wac-cli/templates/wac-template/src/resources/scripts/Get-WinRmState.ps1 +216 -1
  578. package/core/data/extension-broker/snap-in-listener.d.ts.map +0 -1
  579. package/core/data/extension-broker/snap-in-listener.js +0 -73
  580. package/core/data/extension-broker/snap-in-listener.js.map +0 -1
  581. package/microsoft-windows-admin-center-sdk-4.123.0.tgz +0 -0
@@ -161,13 +161,13 @@ export class PerformanceProfile {
161
161
  if (!powershell.sessionId) {
162
162
  powershell.sessionId = response && response.properties && response.properties.sessionId;
163
163
  if (!powershell.sessionId) {
164
- powershell.sessionId = PerformanceProfile.getBetween(url, 'features/powershellApi/pssessions/', '?');
164
+ powershell.sessionId = PerformanceProfile.getBetween(url, '/pssessions/', '?');
165
165
  }
166
166
  }
167
167
  return powershell;
168
168
  }
169
169
  static cimApi(url, body) {
170
- if (url.indexOf('/features/cim/query') > 0) {
170
+ if (url.indexOf('/features/cim/query') > 0 || url.indexOf('/services/WinREST/CIM/query') > 0) {
171
171
  try {
172
172
  return JSON.parse(body);
173
173
  }
@@ -244,10 +244,10 @@ export class PerformanceProfile {
244
244
  status: batchStatus,
245
245
  method: batchMethod
246
246
  };
247
- if (batchUrl.indexOf('/features/powershellApi/') > 0) {
247
+ if (batchUrl.indexOf('/features/powershellApi/') > 0 || batchUrl.indexOf('/services/WinREST/PowerShell/') > 0) {
248
248
  batchItem.powershell = PerformanceProfile.powershellApi(batchUrl, batchBody, batchResponse);
249
249
  }
250
- else if (batchUrl.includes('/features/cim/query')) {
250
+ else if (batchUrl.includes('/features/cim/query') || batchUrl.includes('/services/WinREST/CIM/')) {
251
251
  batchItem.cim = PerformanceProfile.cimApi(batchUrl, batchBody);
252
252
  }
253
253
  batch.push(batchItem);
@@ -265,7 +265,7 @@ export class PerformanceProfile {
265
265
  if (index1 < 0) {
266
266
  return null;
267
267
  }
268
- return source.substring(index0, index1 - index0);
268
+ return source.substring(index0, index1);
269
269
  }
270
270
  enable(rpc) {
271
271
  MsftSme.setPerformanceProfile(true);
@@ -405,11 +405,11 @@ export class PerformanceProfile {
405
405
  const method = request.method;
406
406
  const end = Date.now();
407
407
  const start = request[startPropertyName];
408
- if (url.indexOf('/features/powershellApi/') > 0) {
408
+ if (url.indexOf('/features/powershellApi/') > 0 || url.indexOf('/services/WinREST/PowerShell/') > 0) {
409
409
  const powershell = PerformanceProfile.powershellApi(url, request.body, response.response);
410
410
  PerformanceProfile.logXhrFetchPowerShell('Http', start, end, url, method, response.status, powershell);
411
411
  }
412
- else if (url.includes('/features/cim/')) {
412
+ else if (url.includes('/features/cim/') || url.includes('/services/WinREST/CIM')) {
413
413
  const cim = PerformanceProfile.cimApi(url, request.body);
414
414
  PerformanceProfile.logXhrFetchCim('Http', start, end, url, method, response.status, cim);
415
415
  }
@@ -433,11 +433,11 @@ export class PerformanceProfile {
433
433
  const end = Date.now();
434
434
  const start = request[startPropertyName];
435
435
  const message = Net.getErrorMessage(error);
436
- if (url.indexOf('features/powershellApi') > 0) {
436
+ if (url.indexOf('features/powershellApi') > 0 || url.indexOf('/services/WinREST/PowerShell/') > 0) {
437
437
  const powershell = PerformanceProfile.powershellApi(url, request.body, error.response);
438
438
  PerformanceProfile.logXhrFetchPowerShell('Http', start, end, url, method, error.status, powershell, message);
439
439
  }
440
- else if (url.includes('/features/cim/')) {
440
+ else if (url.includes('/features/cim/') || url.includes('/services/WinREST/CIM/')) {
441
441
  const cim = PerformanceProfile.cimApi(url, request.body);
442
442
  PerformanceProfile.logXhrFetchCim('Http', start, end, url, method, error.status, cim, message);
443
443
  }
@@ -527,3 +527,315 @@ export class PerformanceProfile {
527
527
  }
528
528
 
529
529
  //# sourceMappingURL=performance-profile.js.map
530
+
531
+ // SIG // Begin signature block
532
+ // SIG // MIInwAYJKoZIhvcNAQcCoIInsTCCJ60CAQExDzANBglg
533
+ // SIG // hkgBZQMEAgEFADB3BgorBgEEAYI3AgEEoGkwZzAyBgor
534
+ // SIG // BgEEAYI3AgEeMCQCAQEEEBDgyQbOONQRoqMAEEvTUJAC
535
+ // SIG // AQACAQACAQACAQACAQAwMTANBglghkgBZQMEAgEFAAQg
536
+ // SIG // WKB3p/kv6D5QfJO8CtOLGWUi/mtLt586w68obYvAFGOg
537
+ // SIG // gg12MIIF9DCCA9ygAwIBAgITMwAAA68wQA5Mo00FQQAA
538
+ // SIG // AAADrzANBgkqhkiG9w0BAQsFADB+MQswCQYDVQQGEwJV
539
+ // SIG // UzETMBEGA1UECBMKV2FzaGluZ3RvbjEQMA4GA1UEBxMH
540
+ // SIG // UmVkbW9uZDEeMBwGA1UEChMVTWljcm9zb2Z0IENvcnBv
541
+ // SIG // cmF0aW9uMSgwJgYDVQQDEx9NaWNyb3NvZnQgQ29kZSBT
542
+ // SIG // aWduaW5nIFBDQSAyMDExMB4XDTIzMTExNjE5MDkwMFoX
543
+ // SIG // DTI0MTExNDE5MDkwMFowdDELMAkGA1UEBhMCVVMxEzAR
544
+ // SIG // BgNVBAgTCldhc2hpbmd0b24xEDAOBgNVBAcTB1JlZG1v
545
+ // SIG // bmQxHjAcBgNVBAoTFU1pY3Jvc29mdCBDb3Jwb3JhdGlv
546
+ // SIG // bjEeMBwGA1UEAxMVTWljcm9zb2Z0IENvcnBvcmF0aW9u
547
+ // SIG // MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA
548
+ // SIG // zkvLNa2un9GBrYNDoRGkGv7d0PqtTBB4ViYakFbjuWpm
549
+ // SIG // F0KcvDAzzaCWJPhVgIXjz+S8cHEoHuWnp/n+UOljT3eh
550
+ // SIG // A8Rs6Lb1aTYub3tB/e0txewv2sQ3yscjYdtTBtFvEm9L
551
+ // SIG // 8Yv76K3Cxzi/Yvrdg+sr7w8y5RHn1Am0Ff8xggY1xpWC
552
+ // SIG // XFI+kQM18njQDcUqSlwBnexYfqHBhzz6YXA/S0EziYBu
553
+ // SIG // 2O2mM7R6gSyYkEOHgIGTVOGnOvvC5xBgC4KNcnQuQSRL
554
+ // SIG // iUI2CmzU8vefR6ykruyzt1rNMPI8OqWHQtSDKXU5JNqb
555
+ // SIG // k4GNjwzcwbSzOHrxuxWHq91l/vLdVDGDUwIDAQABo4IB
556
+ // SIG // czCCAW8wHwYDVR0lBBgwFgYKKwYBBAGCN0wIAQYIKwYB
557
+ // SIG // BQUHAwMwHQYDVR0OBBYEFEcccTTyBDxkjvJKs/m4AgEF
558
+ // SIG // hl7BMEUGA1UdEQQ+MDykOjA4MR4wHAYDVQQLExVNaWNy
559
+ // SIG // b3NvZnQgQ29ycG9yYXRpb24xFjAUBgNVBAUTDTIzMDAx
560
+ // SIG // Mis1MDE4MjYwHwYDVR0jBBgwFoAUSG5k5VAF04KqFzc3
561
+ // SIG // IrVtqMp1ApUwVAYDVR0fBE0wSzBJoEegRYZDaHR0cDov
562
+ // SIG // L3d3dy5taWNyb3NvZnQuY29tL3BraW9wcy9jcmwvTWlj
563
+ // SIG // Q29kU2lnUENBMjAxMV8yMDExLTA3LTA4LmNybDBhBggr
564
+ // SIG // BgEFBQcBAQRVMFMwUQYIKwYBBQUHMAKGRWh0dHA6Ly93
565
+ // SIG // d3cubWljcm9zb2Z0LmNvbS9wa2lvcHMvY2VydHMvTWlj
566
+ // SIG // Q29kU2lnUENBMjAxMV8yMDExLTA3LTA4LmNydDAMBgNV
567
+ // SIG // HRMBAf8EAjAAMA0GCSqGSIb3DQEBCwUAA4ICAQCEsRbf
568
+ // SIG // 80dn60xTweOWHZoWaQdpzSaDqIvqpYHE5ZzuEMJWDdcP
569
+ // SIG // 72MGw8v6BSaJQ+a+hTCXdERnIBDPKvU4ENjgu4EBJocH
570
+ // SIG // lSe8riiZUAR+z+z4OUYqoFd3EqJyfjjOJBR2z94Dy4ss
571
+ // SIG // 7LEkHUbj2NZiFqBoPYu2OGQvEk+1oaUsnNKZ7Nl7FHtV
572
+ // SIG // 7CI2lHBru83e4IPe3glIi0XVZJT5qV6Gx/QhAFmpEVBj
573
+ // SIG // SAmDdgII4UUwuI9yiX6jJFNOEek6MoeP06LMJtbqA3Bq
574
+ // SIG // +ZWmJ033F97uVpyaiS4bj3vFI/ZBgDnMqNDtZjcA2vi4
575
+ // SIG // RRMweggd9vsHyTLpn6+nXoLy03vMeebq0C3k44pgUIEu
576
+ // SIG // PQUlJIRTe6IrN3GcjaZ6zHGuQGWgu6SyO9r7qkrEpS2p
577
+ // SIG // RjnGZjx2RmCamdAWnDdu+DmfNEPAddYjaJJ7PTnd+PGz
578
+ // SIG // G+WeH4ocWgVnm5fJFhItjj70CJjgHqt57e1FiQcyWCwB
579
+ // SIG // hKX2rGgN2UICHBF3Q/rsKOspjMw2OlGphTn2KmFl5J7c
580
+ // SIG // Qxru54A9roClLnHGCiSUYos/iwFHI/dAVXEh0S0KKfTf
581
+ // SIG // M6AC6/9bCbsD61QLcRzRIElvgCgaiMWFjOBL99pemoEl
582
+ // SIG // AHsyzG6uX93fMfas09N9YzA0/rFAKAsNDOcFbQlEHKiD
583
+ // SIG // T7mI20tVoCcmSIhJATCCB3owggVioAMCAQICCmEOkNIA
584
+ // SIG // AAAAAAMwDQYJKoZIhvcNAQELBQAwgYgxCzAJBgNVBAYT
585
+ // SIG // AlVTMRMwEQYDVQQIEwpXYXNoaW5ndG9uMRAwDgYDVQQH
586
+ // SIG // EwdSZWRtb25kMR4wHAYDVQQKExVNaWNyb3NvZnQgQ29y
587
+ // SIG // cG9yYXRpb24xMjAwBgNVBAMTKU1pY3Jvc29mdCBSb290
588
+ // SIG // IENlcnRpZmljYXRlIEF1dGhvcml0eSAyMDExMB4XDTEx
589
+ // SIG // MDcwODIwNTkwOVoXDTI2MDcwODIxMDkwOVowfjELMAkG
590
+ // SIG // A1UEBhMCVVMxEzARBgNVBAgTCldhc2hpbmd0b24xEDAO
591
+ // SIG // BgNVBAcTB1JlZG1vbmQxHjAcBgNVBAoTFU1pY3Jvc29m
592
+ // SIG // dCBDb3Jwb3JhdGlvbjEoMCYGA1UEAxMfTWljcm9zb2Z0
593
+ // SIG // IENvZGUgU2lnbmluZyBQQ0EgMjAxMTCCAiIwDQYJKoZI
594
+ // SIG // hvcNAQEBBQADggIPADCCAgoCggIBAKvw+nIQHC6t2G6q
595
+ // SIG // ghBNNLrytlghn0IbKmvpWlCquAY4GgRJun/DDB7dN2vG
596
+ // SIG // EtgL8DjCmQawyDnVARQxQtOJDXlkh36UYCRsr55JnOlo
597
+ // SIG // XtLfm1OyCizDr9mpK656Ca/XllnKYBoF6WZ26DJSJhIv
598
+ // SIG // 56sIUM+zRLdd2MQuA3WraPPLbfM6XKEW9Ea64DhkrG5k
599
+ // SIG // NXimoGMPLdNAk/jj3gcN1Vx5pUkp5w2+oBN3vpQ97/vj
600
+ // SIG // K1oQH01WKKJ6cuASOrdJXtjt7UORg9l7snuGG9k+sYxd
601
+ // SIG // 6IlPhBryoS9Z5JA7La4zWMW3Pv4y07MDPbGyr5I4ftKd
602
+ // SIG // gCz1TlaRITUlwzluZH9TupwPrRkjhMv0ugOGjfdf8NBS
603
+ // SIG // v4yUh7zAIXQlXxgotswnKDglmDlKNs98sZKuHCOnqWbs
604
+ // SIG // YR9q4ShJnV+I4iVd0yFLPlLEtVc/JAPw0XpbL9Uj43Bd
605
+ // SIG // D1FGd7P4AOG8rAKCX9vAFbO9G9RVS+c5oQ/pI0m8GLhE
606
+ // SIG // fEXkwcNyeuBy5yTfv0aZxe/CHFfbg43sTUkwp6uO3+xb
607
+ // SIG // n6/83bBm4sGXgXvt1u1L50kppxMopqd9Z4DmimJ4X7Iv
608
+ // SIG // hNdXnFy/dygo8e1twyiPLI9AN0/B4YVEicQJTMXUpUMv
609
+ // SIG // dJX3bvh4IFgsE11glZo+TzOE2rCIF96eTvSWsLxGoGyY
610
+ // SIG // 0uDWiIwLAgMBAAGjggHtMIIB6TAQBgkrBgEEAYI3FQEE
611
+ // SIG // AwIBADAdBgNVHQ4EFgQUSG5k5VAF04KqFzc3IrVtqMp1
612
+ // SIG // ApUwGQYJKwYBBAGCNxQCBAweCgBTAHUAYgBDAEEwCwYD
613
+ // SIG // VR0PBAQDAgGGMA8GA1UdEwEB/wQFMAMBAf8wHwYDVR0j
614
+ // SIG // BBgwFoAUci06AjGQQ7kUBU7h6qfHMdEjiTQwWgYDVR0f
615
+ // SIG // BFMwUTBPoE2gS4ZJaHR0cDovL2NybC5taWNyb3NvZnQu
616
+ // SIG // Y29tL3BraS9jcmwvcHJvZHVjdHMvTWljUm9vQ2VyQXV0
617
+ // SIG // MjAxMV8yMDExXzAzXzIyLmNybDBeBggrBgEFBQcBAQRS
618
+ // SIG // MFAwTgYIKwYBBQUHMAKGQmh0dHA6Ly93d3cubWljcm9z
619
+ // SIG // b2Z0LmNvbS9wa2kvY2VydHMvTWljUm9vQ2VyQXV0MjAx
620
+ // SIG // MV8yMDExXzAzXzIyLmNydDCBnwYDVR0gBIGXMIGUMIGR
621
+ // SIG // BgkrBgEEAYI3LgMwgYMwPwYIKwYBBQUHAgEWM2h0dHA6
622
+ // SIG // Ly93d3cubWljcm9zb2Z0LmNvbS9wa2lvcHMvZG9jcy9w
623
+ // SIG // cmltYXJ5Y3BzLmh0bTBABggrBgEFBQcCAjA0HjIgHQBM
624
+ // SIG // AGUAZwBhAGwAXwBwAG8AbABpAGMAeQBfAHMAdABhAHQA
625
+ // SIG // ZQBtAGUAbgB0AC4gHTANBgkqhkiG9w0BAQsFAAOCAgEA
626
+ // SIG // Z/KGpZjgVHkaLtPYdGcimwuWEeFjkplCln3SeQyQwWVf
627
+ // SIG // Liw++MNy0W2D/r4/6ArKO79HqaPzadtjvyI1pZddZYSQ
628
+ // SIG // fYtGUFXYDJJ80hpLHPM8QotS0LD9a+M+By4pm+Y9G6XU
629
+ // SIG // tR13lDni6WTJRD14eiPzE32mkHSDjfTLJgJGKsKKELuk
630
+ // SIG // qQUMm+1o+mgulaAqPyprWEljHwlpblqYluSD9MCP80Yr
631
+ // SIG // 3vw70L01724lruWvJ+3Q3fMOr5kol5hNDj0L8giJ1h/D
632
+ // SIG // Mhji8MUtzluetEk5CsYKwsatruWy2dsViFFFWDgycSca
633
+ // SIG // f7H0J/jeLDogaZiyWYlobm+nt3TDQAUGpgEqKD6CPxNN
634
+ // SIG // ZgvAs0314Y9/HG8VfUWnduVAKmWjw11SYobDHWM2l4bf
635
+ // SIG // 2vP48hahmifhzaWX0O5dY0HjWwechz4GdwbRBrF1HxS+
636
+ // SIG // YWG18NzGGwS+30HHDiju3mUv7Jf2oVyW2ADWoUa9WfOX
637
+ // SIG // pQlLSBCZgB/QACnFsZulP0V3HjXG0qKin3p6IvpIlR+r
638
+ // SIG // +0cjgPWe+L9rt0uX4ut1eBrs6jeZeRhL/9azI2h15q/6
639
+ // SIG // /IvrC4DqaTuv/DDtBEyO3991bWORPdGdVk5Pv4BXIqF4
640
+ // SIG // ETIheu9BCrE/+6jMpF3BoYibV3FWTkhFwELJm3ZbCoBI
641
+ // SIG // a/15n8G9bW1qyVJzEw16UM0xghmiMIIZngIBATCBlTB+
642
+ // SIG // MQswCQYDVQQGEwJVUzETMBEGA1UECBMKV2FzaGluZ3Rv
643
+ // SIG // bjEQMA4GA1UEBxMHUmVkbW9uZDEeMBwGA1UEChMVTWlj
644
+ // SIG // cm9zb2Z0IENvcnBvcmF0aW9uMSgwJgYDVQQDEx9NaWNy
645
+ // SIG // b3NvZnQgQ29kZSBTaWduaW5nIFBDQSAyMDExAhMzAAAD
646
+ // SIG // rzBADkyjTQVBAAAAAAOvMA0GCWCGSAFlAwQCAQUAoIGu
647
+ // SIG // MBkGCSqGSIb3DQEJAzEMBgorBgEEAYI3AgEEMBwGCisG
648
+ // SIG // AQQBgjcCAQsxDjAMBgorBgEEAYI3AgEVMC8GCSqGSIb3
649
+ // SIG // DQEJBDEiBCBAgynJ/hKrHa51Hmml8pliDpsaGQkVZeQq
650
+ // SIG // QU2tGdeFzjBCBgorBgEEAYI3AgEMMTQwMqAUgBIATQBp
651
+ // SIG // AGMAcgBvAHMAbwBmAHShGoAYaHR0cDovL3d3dy5taWNy
652
+ // SIG // b3NvZnQuY29tMA0GCSqGSIb3DQEBAQUABIIBAMTsgxvH
653
+ // SIG // jE6CQ0lpahJlz70taF5e9kWJ77A+/ykRUWaf79NQwkLH
654
+ // SIG // 6UuUoRiAbYIqVy8u+7xZpe0/+JEXFYIxYAdM1lNAswy+
655
+ // SIG // 1KMpHPOC9BRhTx8Mu5YJUXpbO8I045r9b950rJkdwQCn
656
+ // SIG // E9hxd2u/sFlKek1Mh/OCdPzc6UCYl6wZKacLw+zXW+kG
657
+ // SIG // jbf4lkii14/zkLo8f7nSre4aCJhQm3tNR50yyPZEVUQO
658
+ // SIG // gNOm7QAYshKZzW7wesLOLc/9vHdP9VCoeXKn7N6/Bd+i
659
+ // SIG // M8gnw9T9cwiuyJy6yJ1pX0YqVvt1DeurxI84mWSLVk9j
660
+ // SIG // N1cXLZW6P6Jlx81Zlj75rewTz06hghcsMIIXKAYKKwYB
661
+ // SIG // BAGCNwMDATGCFxgwghcUBgkqhkiG9w0BBwKgghcFMIIX
662
+ // SIG // AQIBAzEPMA0GCWCGSAFlAwQCAQUAMIIBWQYLKoZIhvcN
663
+ // SIG // AQkQAQSgggFIBIIBRDCCAUACAQEGCisGAQQBhFkKAwEw
664
+ // SIG // MTANBglghkgBZQMEAgEFAAQgl1YbevdlQ5HEW7vdDDDu
665
+ // SIG // T/70jj4kpEePDiudWB9Q6kcCBmZzCFJD9BgTMjAyNDA2
666
+ // SIG // MjcwNjI0NDYuMTk5WjAEgAIB9KCB2KSB1TCB0jELMAkG
667
+ // SIG // A1UEBhMCVVMxEzARBgNVBAgTCldhc2hpbmd0b24xEDAO
668
+ // SIG // BgNVBAcTB1JlZG1vbmQxHjAcBgNVBAoTFU1pY3Jvc29m
669
+ // SIG // dCBDb3Jwb3JhdGlvbjEtMCsGA1UECxMkTWljcm9zb2Z0
670
+ // SIG // IElyZWxhbmQgT3BlcmF0aW9ucyBMaW1pdGVkMSYwJAYD
671
+ // SIG // VQQLEx1UaGFsZXMgVFNTIEVTTjpGQzQxLTRCRDQtRDIy
672
+ // SIG // MDElMCMGA1UEAxMcTWljcm9zb2Z0IFRpbWUtU3RhbXAg
673
+ // SIG // U2VydmljZaCCEXswggcnMIIFD6ADAgECAhMzAAAB4pmZ
674
+ // SIG // lfHc4yDrAAEAAAHiMA0GCSqGSIb3DQEBCwUAMHwxCzAJ
675
+ // SIG // BgNVBAYTAlVTMRMwEQYDVQQIEwpXYXNoaW5ndG9uMRAw
676
+ // SIG // DgYDVQQHEwdSZWRtb25kMR4wHAYDVQQKExVNaWNyb3Nv
677
+ // SIG // ZnQgQ29ycG9yYXRpb24xJjAkBgNVBAMTHU1pY3Jvc29m
678
+ // SIG // dCBUaW1lLVN0YW1wIFBDQSAyMDEwMB4XDTIzMTAxMjE5
679
+ // SIG // MDcyNVoXDTI1MDExMDE5MDcyNVowgdIxCzAJBgNVBAYT
680
+ // SIG // AlVTMRMwEQYDVQQIEwpXYXNoaW5ndG9uMRAwDgYDVQQH
681
+ // SIG // EwdSZWRtb25kMR4wHAYDVQQKExVNaWNyb3NvZnQgQ29y
682
+ // SIG // cG9yYXRpb24xLTArBgNVBAsTJE1pY3Jvc29mdCBJcmVs
683
+ // SIG // YW5kIE9wZXJhdGlvbnMgTGltaXRlZDEmMCQGA1UECxMd
684
+ // SIG // VGhhbGVzIFRTUyBFU046RkM0MS00QkQ0LUQyMjAxJTAj
685
+ // SIG // BgNVBAMTHE1pY3Jvc29mdCBUaW1lLVN0YW1wIFNlcnZp
686
+ // SIG // Y2UwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoIC
687
+ // SIG // AQC1Y7WYVfpBZm/HCkKYNps4rA5USPe/Bm9mphr2wJgn
688
+ // SIG // dOCVRnk3v0BszPCm0KzA6Jewwu40tNyZHKz7FovVqVcL
689
+ // SIG // CHJEUPAJF9YnQRvR4cgrKQGr37r8+eZIZe26z0Mex/fV
690
+ // SIG // CW7BN8DJqZiWrD1qYBdOc2Zb6VkA1Cw3CGMpeZVyOB1W
691
+ // SIG // eTejEsVjvM8Fq+K/cZDJlF7OyAsQya+Wt/UknjwCUSMs
692
+ // SIG // 52iHNFs2ejBXE0cyyzcjwROCq1b9SxXfehTcQM8J3rUn
693
+ // SIG // j4PPBJkXs69k9x0xRJZ3iV8kGHemEO3giHO8pZVqGNNw
694
+ // SIG // hIPYIaK6falCnAVHxXEuFxJX9xkhEZ5cybCu7P2Rj1OH
695
+ // SIG // Wh09o1hqGIWtkAjppIIzpgRQqkBRcBZrD62Y+HkLM2Ma
696
+ // SIG // uHOB6j51LuIU+Gqqb1Gd6iDl23clONqTS/d3J9Kz005X
697
+ // SIG // jlLDkG4L5UXbYRQgXqcX2+p27Kd33GWjwX027V1WvJy0
698
+ // SIG // LjAgasn7Hm7qp28I/pR0H6iqYr6cneyglgAqI+/F1MGK
699
+ // SIG // stR8mJ0rU5nuE/byurtjvyk4X0TniR4koOOMphY/t+CH
700
+ // SIG // BRIT6IGirzTbE1ZuEG6qYQspJ68AcqqKwQix+m5ZUbST
701
+ // SIG // CcJruxkXU0LCMdhzCqqYRLaUptc97nwEnT64D4bECERZ
702
+ // SIG // B2RrooS9SY4+C7twmwJoWtJTqwIDAQABo4IBSTCCAUUw
703
+ // SIG // HQYDVR0OBBYEFESEDhHavu0HbJabSYgkTaV4CdoFMB8G
704
+ // SIG // A1UdIwQYMBaAFJ+nFV0AXmJdg/Tl0mWnG1M1GelyMF8G
705
+ // SIG // A1UdHwRYMFYwVKBSoFCGTmh0dHA6Ly93d3cubWljcm9z
706
+ // SIG // b2Z0LmNvbS9wa2lvcHMvY3JsL01pY3Jvc29mdCUyMFRp
707
+ // SIG // bWUtU3RhbXAlMjBQQ0ElMjAyMDEwKDEpLmNybDBsBggr
708
+ // SIG // BgEFBQcBAQRgMF4wXAYIKwYBBQUHMAKGUGh0dHA6Ly93
709
+ // SIG // d3cubWljcm9zb2Z0LmNvbS9wa2lvcHMvY2VydHMvTWlj
710
+ // SIG // cm9zb2Z0JTIwVGltZS1TdGFtcCUyMFBDQSUyMDIwMTAo
711
+ // SIG // MSkuY3J0MAwGA1UdEwEB/wQCMAAwFgYDVR0lAQH/BAww
712
+ // SIG // CgYIKwYBBQUHAwgwDgYDVR0PAQH/BAQDAgeAMA0GCSqG
713
+ // SIG // SIb3DQEBCwUAA4ICAQDkVEQxq1UU257pX7INnE7Msoe2
714
+ // SIG // F74VVOzWTJCEwEGLBRD1YL0r4gspa+Wqd5Gu+mM9Lf+p
715
+ // SIG // cbnMyOsO7V6vJ+FsVFIHI+cAIZzaK4Zw/JY2Km3JN+34
716
+ // SIG // IGCt/sBMC4T9Txgubb1ytMWKJlNZ1PpVzsvWUZ0oSPx2
717
+ // SIG // XRa8NrK4LbG1qMPTjLgA0uZYO6JK12tnWgjhp8bmg9SD
718
+ // SIG // vuuRO6r9jtFtLBo+wFnTozXaXsT67KS9ihHDjHiVZpJP
719
+ // SIG // ztIGp4Rc8xwJ1o7TVp3lNdVkOgcb/DqTdX2PcM0KIsnI
720
+ // SIG // LzjiTPd6HeeRBnl8XxfG6Hy1ZVBN8yIpKEnnfvLOtTQz
721
+ // SIG // /sfUTMmtpsCv2LNcXbw5WUx53SCrLH5rt77v2vgRX9ri
722
+ // SIG // KMnFU7wUKb/3a0SQ+vHqONNZpAkRZJsv/gZkJUa8dq2q
723
+ // SIG // agLuZNDXr/olHQVCpl/4jmime+b7kIO4QogQOcSJuWSF
724
+ // SIG // w0pV+O8MBWq9/wYE8J7TKva2ukEQHkv6P7mFpJr6rxPA
725
+ // SIG // Kt/EJioE4gZ1kkv7lT3GhxMgK58hYeRvqnghpi+ODHxJ
726
+ // SIG // xRIcXN7Gj5l4XujIUoAiBiVGQwO99+p0A/H5+Muud+C3
727
+ // SIG // pfi7k+ReWxbdJi8Hfh+RsRszm2Zpv3N6RFrR79boO3Uv
728
+ // SIG // w363HdbJ9hOIJOFtS9Y3UQWyvccJDJsGPgh2XjErwTCC
729
+ // SIG // B3EwggVZoAMCAQICEzMAAAAVxedrngKbSZkAAAAAABUw
730
+ // SIG // DQYJKoZIhvcNAQELBQAwgYgxCzAJBgNVBAYTAlVTMRMw
731
+ // SIG // EQYDVQQIEwpXYXNoaW5ndG9uMRAwDgYDVQQHEwdSZWRt
732
+ // SIG // b25kMR4wHAYDVQQKExVNaWNyb3NvZnQgQ29ycG9yYXRp
733
+ // SIG // b24xMjAwBgNVBAMTKU1pY3Jvc29mdCBSb290IENlcnRp
734
+ // SIG // ZmljYXRlIEF1dGhvcml0eSAyMDEwMB4XDTIxMDkzMDE4
735
+ // SIG // MjIyNVoXDTMwMDkzMDE4MzIyNVowfDELMAkGA1UEBhMC
736
+ // SIG // VVMxEzARBgNVBAgTCldhc2hpbmd0b24xEDAOBgNVBAcT
737
+ // SIG // B1JlZG1vbmQxHjAcBgNVBAoTFU1pY3Jvc29mdCBDb3Jw
738
+ // SIG // b3JhdGlvbjEmMCQGA1UEAxMdTWljcm9zb2Z0IFRpbWUt
739
+ // SIG // U3RhbXAgUENBIDIwMTAwggIiMA0GCSqGSIb3DQEBAQUA
740
+ // SIG // A4ICDwAwggIKAoICAQDk4aZM57RyIQt5osvXJHm9DtWC
741
+ // SIG // 0/3unAcH0qlsTnXIyjVX9gF/bErg4r25PhdgM/9cT8dm
742
+ // SIG // 95VTcVrifkpa/rg2Z4VGIwy1jRPPdzLAEBjoYH1qUoNE
743
+ // SIG // t6aORmsHFPPFdvWGUNzBRMhxXFExN6AKOG6N7dcP2CZT
744
+ // SIG // fDlhAnrEqv1yaa8dq6z2Nr41JmTamDu6GnszrYBbfowQ
745
+ // SIG // HJ1S/rboYiXcag/PXfT+jlPP1uyFVk3v3byNpOORj7I5
746
+ // SIG // LFGc6XBpDco2LXCOMcg1KL3jtIckw+DJj361VI/c+gVV
747
+ // SIG // mG1oO5pGve2krnopN6zL64NF50ZuyjLVwIYwXE8s4mKy
748
+ // SIG // zbnijYjklqwBSru+cakXW2dg3viSkR4dPf0gz3N9QZpG
749
+ // SIG // dc3EXzTdEonW/aUgfX782Z5F37ZyL9t9X4C626p+Nuw2
750
+ // SIG // TPYrbqgSUei/BQOj0XOmTTd0lBw0gg/wEPK3Rxjtp+iZ
751
+ // SIG // fD9M269ewvPV2HM9Q07BMzlMjgK8QmguEOqEUUbi0b1q
752
+ // SIG // GFphAXPKZ6Je1yh2AuIzGHLXpyDwwvoSCtdjbwzJNmSL
753
+ // SIG // W6CmgyFdXzB0kZSU2LlQ+QuJYfM2BjUYhEfb3BvR/bLU
754
+ // SIG // HMVr9lxSUV0S2yW6r1AFemzFER1y7435UsSFF5PAPBXb
755
+ // SIG // GjfHCBUYP3irRbb1Hode2o+eFnJpxq57t7c+auIurQID
756
+ // SIG // AQABo4IB3TCCAdkwEgYJKwYBBAGCNxUBBAUCAwEAATAj
757
+ // SIG // BgkrBgEEAYI3FQIEFgQUKqdS/mTEmr6CkTxGNSnPEP8v
758
+ // SIG // BO4wHQYDVR0OBBYEFJ+nFV0AXmJdg/Tl0mWnG1M1Gely
759
+ // SIG // MFwGA1UdIARVMFMwUQYMKwYBBAGCN0yDfQEBMEEwPwYI
760
+ // SIG // KwYBBQUHAgEWM2h0dHA6Ly93d3cubWljcm9zb2Z0LmNv
761
+ // SIG // bS9wa2lvcHMvRG9jcy9SZXBvc2l0b3J5Lmh0bTATBgNV
762
+ // SIG // HSUEDDAKBggrBgEFBQcDCDAZBgkrBgEEAYI3FAIEDB4K
763
+ // SIG // AFMAdQBiAEMAQTALBgNVHQ8EBAMCAYYwDwYDVR0TAQH/
764
+ // SIG // BAUwAwEB/zAfBgNVHSMEGDAWgBTV9lbLj+iiXGJo0T2U
765
+ // SIG // kFvXzpoYxDBWBgNVHR8ETzBNMEugSaBHhkVodHRwOi8v
766
+ // SIG // Y3JsLm1pY3Jvc29mdC5jb20vcGtpL2NybC9wcm9kdWN0
767
+ // SIG // cy9NaWNSb29DZXJBdXRfMjAxMC0wNi0yMy5jcmwwWgYI
768
+ // SIG // KwYBBQUHAQEETjBMMEoGCCsGAQUFBzAChj5odHRwOi8v
769
+ // SIG // d3d3Lm1pY3Jvc29mdC5jb20vcGtpL2NlcnRzL01pY1Jv
770
+ // SIG // b0NlckF1dF8yMDEwLTA2LTIzLmNydDANBgkqhkiG9w0B
771
+ // SIG // AQsFAAOCAgEAnVV9/Cqt4SwfZwExJFvhnnJL/Klv6lwU
772
+ // SIG // tj5OR2R4sQaTlz0xM7U518JxNj/aZGx80HU5bbsPMeTC
773
+ // SIG // j/ts0aGUGCLu6WZnOlNN3Zi6th542DYunKmCVgADsAW+
774
+ // SIG // iehp4LoJ7nvfam++Kctu2D9IdQHZGN5tggz1bSNU5HhT
775
+ // SIG // dSRXud2f8449xvNo32X2pFaq95W2KFUn0CS9QKC/GbYS
776
+ // SIG // EhFdPSfgQJY4rPf5KYnDvBewVIVCs/wMnosZiefwC2qB
777
+ // SIG // woEZQhlSdYo2wh3DYXMuLGt7bj8sCXgU6ZGyqVvfSaN0
778
+ // SIG // DLzskYDSPeZKPmY7T7uG+jIa2Zb0j/aRAfbOxnT99kxy
779
+ // SIG // bxCrdTDFNLB62FD+CljdQDzHVG2dY3RILLFORy3BFARx
780
+ // SIG // v2T5JL5zbcqOCb2zAVdJVGTZc9d/HltEAY5aGZFrDZ+k
781
+ // SIG // KNxnGSgkujhLmm77IVRrakURR6nxt67I6IleT53S0Ex2
782
+ // SIG // tVdUCbFpAUR+fKFhbHP+CrvsQWY9af3LwUFJfn6Tvsv4
783
+ // SIG // O+S3Fb+0zj6lMVGEvL8CwYKiexcdFYmNcP7ntdAoGokL
784
+ // SIG // jzbaukz5m/8K6TT4JDVnK+ANuOaMmdbhIurwJ0I9JZTm
785
+ // SIG // dHRbatGePu1+oDEzfbzL6Xu/OHBE0ZDxyKs6ijoIYn/Z
786
+ // SIG // cGNTTY3ugm2lBRDBcQZqELQdVTNYs6FwZvKhggLXMIIC
787
+ // SIG // QAIBATCCAQChgdikgdUwgdIxCzAJBgNVBAYTAlVTMRMw
788
+ // SIG // EQYDVQQIEwpXYXNoaW5ndG9uMRAwDgYDVQQHEwdSZWRt
789
+ // SIG // b25kMR4wHAYDVQQKExVNaWNyb3NvZnQgQ29ycG9yYXRp
790
+ // SIG // b24xLTArBgNVBAsTJE1pY3Jvc29mdCBJcmVsYW5kIE9w
791
+ // SIG // ZXJhdGlvbnMgTGltaXRlZDEmMCQGA1UECxMdVGhhbGVz
792
+ // SIG // IFRTUyBFU046RkM0MS00QkQ0LUQyMjAxJTAjBgNVBAMT
793
+ // SIG // HE1pY3Jvc29mdCBUaW1lLVN0YW1wIFNlcnZpY2WiIwoB
794
+ // SIG // ATAHBgUrDgMCGgMVABabmWn6dG56SXSIX4gdXfKU6IZv
795
+ // SIG // oIGDMIGApH4wfDELMAkGA1UEBhMCVVMxEzARBgNVBAgT
796
+ // SIG // Cldhc2hpbmd0b24xEDAOBgNVBAcTB1JlZG1vbmQxHjAc
797
+ // SIG // BgNVBAoTFU1pY3Jvc29mdCBDb3Jwb3JhdGlvbjEmMCQG
798
+ // SIG // A1UEAxMdTWljcm9zb2Z0IFRpbWUtU3RhbXAgUENBIDIw
799
+ // SIG // MTAwDQYJKoZIhvcNAQEFBQACBQDqJ2loMCIYDzIwMjQw
800
+ // SIG // NjI3MTIzMDMyWhgPMjAyNDA2MjgxMjMwMzJaMHcwPQYK
801
+ // SIG // KwYBBAGEWQoEATEvMC0wCgIFAOonaWgCAQAwCgIBAAIC
802
+ // SIG // Ao4CAf8wBwIBAAICEeAwCgIFAOoouugCAQAwNgYKKwYB
803
+ // SIG // BAGEWQoEAjEoMCYwDAYKKwYBBAGEWQoDAqAKMAgCAQAC
804
+ // SIG // AwehIKEKMAgCAQACAwGGoDANBgkqhkiG9w0BAQUFAAOB
805
+ // SIG // gQBQyeCEzACVqiOvZWAx7Wc8WHLpwEgKOi0Xe6Kd80RG
806
+ // SIG // 9jyjcEP9urmBfJ6azBn/zVcd7CBLrXZsFVz+i4bUP/TW
807
+ // SIG // pcmL0CdzuKWcWXQk/yrCGOK8JlyLJG2SRcmPIDNnpjR2
808
+ // SIG // EUnVtiVaZKMVRzNGFN3CMhNLsOjaZpjqkCITWLLaCjGC
809
+ // SIG // BA0wggQJAgEBMIGTMHwxCzAJBgNVBAYTAlVTMRMwEQYD
810
+ // SIG // VQQIEwpXYXNoaW5ndG9uMRAwDgYDVQQHEwdSZWRtb25k
811
+ // SIG // MR4wHAYDVQQKExVNaWNyb3NvZnQgQ29ycG9yYXRpb24x
812
+ // SIG // JjAkBgNVBAMTHU1pY3Jvc29mdCBUaW1lLVN0YW1wIFBD
813
+ // SIG // QSAyMDEwAhMzAAAB4pmZlfHc4yDrAAEAAAHiMA0GCWCG
814
+ // SIG // SAFlAwQCAQUAoIIBSjAaBgkqhkiG9w0BCQMxDQYLKoZI
815
+ // SIG // hvcNAQkQAQQwLwYJKoZIhvcNAQkEMSIEIMVMMlS7roo5
816
+ // SIG // 8TsHpbmq9lyGTutsUo91nS9g0zirhwl8MIH6BgsqhkiG
817
+ // SIG // 9w0BCRACLzGB6jCB5zCB5DCBvQQgK4kqShD9JrjGwVBE
818
+ // SIG // zg6C+HeS1OiP247nCGZDiQiPf/8wgZgwgYCkfjB8MQsw
819
+ // SIG // CQYDVQQGEwJVUzETMBEGA1UECBMKV2FzaGluZ3RvbjEQ
820
+ // SIG // MA4GA1UEBxMHUmVkbW9uZDEeMBwGA1UEChMVTWljcm9z
821
+ // SIG // b2Z0IENvcnBvcmF0aW9uMSYwJAYDVQQDEx1NaWNyb3Nv
822
+ // SIG // ZnQgVGltZS1TdGFtcCBQQ0EgMjAxMAITMwAAAeKZmZXx
823
+ // SIG // 3OMg6wABAAAB4jAiBCAq2C6RW0ycut78mQElOP3ebV+g
824
+ // SIG // 6hNsN4Pb+nSNUOzoJzANBgkqhkiG9w0BAQsFAASCAgBN
825
+ // SIG // jLSEinqnUehoTcE0bqbRRdGbqFt+6oY357UuW/oNrN0W
826
+ // SIG // mPvLkB9/fSS/wf0CCg/ggpNqqXCIJU3sL4d6TVcoZzJ2
827
+ // SIG // H4jj88KU+JGSbOJcbvw+rmGYGF472NEgHL9ZHis9xynU
828
+ // SIG // hIxKuzu3uMxVr/fxgMf7p+QV2ZcoBr9dXewwaOvGBQEU
829
+ // SIG // 2KoQWoiiAbI3/BMVkmQTYbv0ApWngk5qzyiQszoupZCO
830
+ // SIG // ltiQIqwGJXdQ5qzKS/dGwDV0nDXRb1Y2bDJseJJpMnkT
831
+ // SIG // cvWsEj91+mpE7fsVZmPF7j5YuV9G6hhg+WMSMeVLcjZ0
832
+ // SIG // MLJ4Ogk5zRkcTglPuYKOI+Ubds7gtpoC5cvDDqVNHI1/
833
+ // SIG // VeL6Meqm3H8aszWsF/GsO6xeLrcjE7w0gm1iQ7O3RtRO
834
+ // SIG // L8q8GwF8MR8Cg+uYj2JyCK+vkEfxtpRCrU+/xtcTqb8M
835
+ // SIG // ZSClwpcs8A6TH5gIogRHH4DZPkG+Wo3N6S+ceUVMpAiv
836
+ // SIG // XWWuWdS10oBR2MBOeNVpE7IZnPGDur74XnI6h+KNwM1p
837
+ // SIG // yb6CDhjzT6p6OtAdAk8x0gGkmtn+8FmoWZXqqjaclwry
838
+ // SIG // AzCPHDkoUzWJiAb6SVZdm99n/rqWwwACw/XvBFIIREmP
839
+ // SIG // 8kOM0QNhKwijmP4l+/vGGartCUy7yN4WH4MDvcH2XQze
840
+ // SIG // Mm4+6+Y6rLg+DRO7UWwShA==
841
+ // SIG // End signature block
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../packages/core/performance/performance-profile.ts"],"names":[],"mappings":"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","file":"performance-profile.js","sourcesContent":["import { of, Subscription, throwError } from 'rxjs';\r\nimport { AjaxError, AjaxRequest, AjaxResponse } from 'rxjs/ajax';\r\nimport { filter, map, take } from 'rxjs/operators';\r\nimport { CimResultFormat, CimStream, CimStreamMonitorSetContext, CimStreamOptions, CimStreamRequestData } from '../data/cim-stream';\r\nimport { Http } from '../data/http';\r\nimport { Net } from '../data/net';\r\nimport { PowerShellCommand } from '../data/powershell';\r\nimport { PowerShellStream, PowerShellStreamMonitorSetContext, PowerShellStreamOptions } from '../data/powershell-stream';\r\nimport { WebsocketStreamDataRequestState } from '../data/websocket-stream';\r\nimport { Logging } from '../diagnostics/logging';\r\nimport { RpcObservablePerformanceClient } from '../rpc/performance/rpc-observable-performance-client';\r\nimport { RpcObservablePerformanceConfigClient } from '../rpc/performance/rpc-observable-performance-config-client';\r\nimport { RpcObservablePerformanceServer } from '../rpc/performance/rpc-observable-performance-server';\r\nimport { Rpc } from '../rpc/rpc';\r\nimport {\r\n PerformanceProfileData, PerformanceProfileDataCim, PerformanceProfileDataPowerShell, PerformanceProfileXhrFetch\r\n} from './performance-profile-data';\r\nimport { PerformanceProfileDataType } from './performance-profile-data-type';\r\nimport { PerformanceProfileDatabase } from './performance-profile-database';\r\nimport { PerformanceProfileRecord } from './performance-profile-record';\r\n\r\ninterface PowerShellStreamContext {\r\n id: number;\r\n start: number;\r\n progressStart: number;\r\n progressEnd?: number;\r\n count: number;\r\n itemCount: number;\r\n}\r\n\r\ninterface CimStreamContext {\r\n id: number;\r\n start: number;\r\n progressStart: number;\r\n progressEnd?: number;\r\n count: number;\r\n itemCount: number;\r\n}\r\n\r\n/**\r\n * Performance measurement class.\r\n */\r\nexport class PerformanceProfile {\r\n private static monitorName = 'PerformanceProfile';\r\n private static instance: PerformanceProfile;\r\n\r\n private database: PerformanceProfileDatabase = null;\r\n private rpc: Rpc;\r\n private rpcObservablePerformanceClient: RpcObservablePerformanceClient;\r\n private rpcObservablePerformanceServer: RpcObservablePerformanceServer;\r\n private subscription: Subscription;\r\n private moduleVersionMap: { [index: string]: string } = {};\r\n private rpcObservablePerformanceConfigClient: RpcObservablePerformanceConfigClient;\r\n\r\n /**\r\n * Gets the current PerformanceProfile instance.\r\n */\r\n public static get current(): PerformanceProfile {\r\n if (PerformanceProfile.instance) {\r\n return PerformanceProfile.instance;\r\n }\r\n\r\n PerformanceProfile.instance = new PerformanceProfile();\r\n return PerformanceProfile.instance;\r\n }\r\n\r\n public static get database(): PerformanceProfileDatabase {\r\n return PerformanceProfile.current.database;\r\n }\r\n\r\n /**\r\n * Record Route navigation performance measurement.\r\n */\r\n public static logRouteNavigation(\r\n source: string,\r\n start: number,\r\n end: number,\r\n url: string,\r\n target?: string,\r\n errorMessage?: string): void {\r\n const data: PerformanceProfileData = {\r\n source,\r\n start,\r\n end,\r\n errorMessage,\r\n type: PerformanceProfileDataType.RouteNavigation,\r\n routeNavigation: { url, target }\r\n };\r\n PerformanceProfile.current.log(data);\r\n }\r\n\r\n /**\r\n * Record Null packet.\r\n */\r\n public static logNull(source: string): void {\r\n const data: PerformanceProfileData = {\r\n source,\r\n start: 0,\r\n end: 0,\r\n errorMessage: null,\r\n type: PerformanceProfileDataType.Null\r\n };\r\n PerformanceProfile.current.logAnyway(data);\r\n }\r\n\r\n /**\r\n * Record XHR or Fetch performance measurement for PowerShell.\r\n */\r\n private static logXhrFetchPowerShell(\r\n source: string,\r\n start: number,\r\n end: number,\r\n url: string,\r\n method: string,\r\n status: number,\r\n powershell: PerformanceProfileDataPowerShell,\r\n errorMessage?: string): void {\r\n const data: PerformanceProfileData = {\r\n source,\r\n start,\r\n end,\r\n errorMessage,\r\n type: PerformanceProfileDataType.XhrFetch,\r\n xhrFetch: { url, method, status, powershell }\r\n };\r\n PerformanceProfile.current.log(data);\r\n }\r\n\r\n /**\r\n * Record XHR or Fetch performance measurement for CIM.\r\n */\r\n private static logXhrFetchCim(\r\n source: string,\r\n start: number,\r\n end: number,\r\n url: string,\r\n method: string,\r\n status: number,\r\n cim: PerformanceProfileDataCim,\r\n errorMessage?: string): void {\r\n const data: PerformanceProfileData = {\r\n source,\r\n start,\r\n end,\r\n errorMessage,\r\n type: PerformanceProfileDataType.XhrFetch,\r\n xhrFetch: { url, method, status, cim }\r\n };\r\n PerformanceProfile.current.log(data);\r\n }\r\n\r\n /**\r\n * Record XHR or Fetch performance measurement for Batch.\r\n */\r\n private static logXhrFetchBatch(\r\n source: string,\r\n start: number,\r\n end: number,\r\n url: string,\r\n method: string,\r\n status: number,\r\n batch: PerformanceProfileXhrFetch[],\r\n errorMessage?: string): void {\r\n const data: PerformanceProfileData = {\r\n source,\r\n start,\r\n end,\r\n errorMessage,\r\n type: PerformanceProfileDataType.XhrFetch,\r\n xhrFetch: { url, method, status, batch }\r\n };\r\n PerformanceProfile.current.log(data);\r\n }\r\n\r\n /**\r\n * Record XHR or Fetch performance measurement for general.\r\n */\r\n private static logXhrFetch(\r\n source: string,\r\n start: number,\r\n end: number,\r\n url: string,\r\n method: string,\r\n status: number,\r\n errorMessage?: string): void {\r\n const data: PerformanceProfileData = {\r\n source,\r\n start,\r\n end,\r\n errorMessage,\r\n type: PerformanceProfileDataType.XhrFetch,\r\n xhrFetch: { url, method, status }\r\n };\r\n PerformanceProfile.current.log(data);\r\n }\r\n\r\n /**\r\n * Record WebSocket performance measurement.\r\n */\r\n private static logWebSocketPowerShell(\r\n source: string,\r\n nodeName: string,\r\n command: string,\r\n context: PowerShellStreamContext,\r\n errorMessage?: string): void {\r\n const data: PerformanceProfileData = {\r\n source,\r\n start: context.progressStart,\r\n end: context.progressEnd,\r\n errorMessage,\r\n type: PerformanceProfileDataType.WebSocket,\r\n webSocket: { nodeName, id: context.id, count: context.count, itemCount: context.itemCount, powershell: { command } }\r\n };\r\n PerformanceProfile.current.log(data);\r\n }\r\n\r\n /**\r\n * Record WebSocket performance measurement.\r\n */\r\n private static logWebSocketCim(\r\n source: string,\r\n nodeName: string,\r\n cim: CimStreamRequestData,\r\n context: CimStreamContext,\r\n errorMessage?: string): void {\r\n const data: PerformanceProfileData = {\r\n source,\r\n start: context.progressStart,\r\n end: context.progressEnd,\r\n errorMessage,\r\n type: PerformanceProfileDataType.WebSocket,\r\n webSocket: { nodeName, id: context.id, count: context.count, itemCount: context.itemCount, cim }\r\n };\r\n PerformanceProfile.current.log(data);\r\n }\r\n\r\n private static powershellApi(\r\n url: string,\r\n body: string,\r\n response: { completed?: string, sessionId?: string; properties?: { completed: string; sessionId: string; }; }): PerformanceProfileDataPowerShell {\r\n const powershell: { command?: string; sessionId?: string; completed?: string } = {};\r\n if (body && body.indexOf('\\\"properties\\\"') > 0) {\r\n powershell.command = PerformanceProfile.getBetween(body, ',\\\"command\\\":\\\"', '\\\",\\\"')\r\n || PerformanceProfile.getBetween(body, '\\\"script\\\":\\\"##', '##:');\r\n }\r\n\r\n powershell.completed = response && response.completed;\r\n if (!powershell.completed) {\r\n powershell.completed = response && response.properties && response.properties.completed;\r\n }\r\n\r\n powershell.sessionId = response && response.sessionId;\r\n if (!powershell.sessionId) {\r\n powershell.sessionId = response && response.properties && response.properties.sessionId;\r\n if (!powershell.sessionId) {\r\n powershell.sessionId = PerformanceProfile.getBetween(url, 'features/powershellApi/pssessions/', '?');\r\n }\r\n }\r\n\r\n return powershell;\r\n }\r\n\r\n private static cimApi(url: string, body: string): PerformanceProfileDataCim {\r\n if (url.indexOf('/features/cim/query') > 0) {\r\n try {\r\n return JSON.parse(body);\r\n } catch {\r\n return null;\r\n }\r\n }\r\n\r\n const namespaceName = PerformanceProfile.getBetween(url, '/namespaces/', '/classes/');\r\n const className = PerformanceProfile.getBetween(url, '/classes/', '/instances');\r\n return { namespace: namespaceName, className: className };\r\n }\r\n\r\n private static batchApi(body: string, response: string): PerformanceProfileXhrFetch[] {\r\n const delimiter = '\\x0d\\x0a';\r\n const batch: PerformanceProfileXhrFetch[] = [];\r\n let last = body.indexOf(delimiter);\r\n let separator = body.substring(0, last + 2);\r\n const bodySegments = body.split(separator);\r\n last = response.indexOf(delimiter);\r\n separator = response.substring(0, last + 2);\r\n const responseSegments = response.split(separator);\r\n if (bodySegments.length === responseSegments.length && bodySegments.length > 1) {\r\n let batchMethod: string;\r\n let batchUrl: string;\r\n let batchBody: string;\r\n let batchStatus: number;\r\n let batchResponse: any;\r\n for (let i = 1; i < bodySegments.length; i++) {\r\n const bodySegment = bodySegments[i];\r\n const responseSegment = responseSegments[i];\r\n const bodySegmentLines = bodySegment.split(delimiter);\r\n let emptyLines = 0;\r\n for (let j = 0; j < bodySegmentLines.length; j++) {\r\n const line = bodySegmentLines[j];\r\n if (line.length > 0) {\r\n if (emptyLines === 1 && !batchUrl) {\r\n // reached header segment.\r\n const query = line.split(' ');\r\n batchMethod = query[0];\r\n batchUrl = query[1];\r\n } else if (emptyLines >= 2 && !batchBody) {\r\n batchBody = line;\r\n }\r\n } else {\r\n emptyLines++;\r\n }\r\n }\r\n\r\n emptyLines = 0;\r\n const responseSegmentLines = responseSegment.split(delimiter);\r\n for (let j = 0; j < responseSegmentLines.length; j++) {\r\n const line = responseSegmentLines[j];\r\n if (line.length > 0) {\r\n if (emptyLines === 1 && !batchStatus) {\r\n // reached header segment.\r\n const query = line.split(' ');\r\n batchStatus = Number(query[1]);\r\n } else if (emptyLines >= 2 && !batchResponse) {\r\n try {\r\n batchResponse = JSON.parse(line);\r\n } catch {\r\n batchResponse = {};\r\n }\r\n }\r\n } else {\r\n emptyLines++;\r\n }\r\n }\r\n\r\n const batchItem: PerformanceProfileXhrFetch = {\r\n url: batchUrl,\r\n status: batchStatus,\r\n method: batchMethod\r\n };\r\n if (batchUrl.indexOf('/features/powershellApi/') > 0) {\r\n batchItem.powershell = PerformanceProfile.powershellApi(batchUrl, batchBody, batchResponse);\r\n } else if (batchUrl.includes('/features/cim/query')) {\r\n batchItem.cim = PerformanceProfile.cimApi(batchUrl, batchBody);\r\n }\r\n\r\n batch.push(batchItem);\r\n }\r\n }\r\n\r\n return batch;\r\n }\r\n\r\n private static getBetween(source: string, begin: string, end: string): string {\r\n let index0 = source.indexOf(begin);\r\n if (index0 < 0) {\r\n return null;\r\n }\r\n\r\n index0 += begin.length;\r\n const index1 = source.indexOf(end, index0);\r\n if (index1 < 0) {\r\n return null;\r\n }\r\n\r\n return source.substring(index0, index1 - index0);\r\n }\r\n\r\n public enable(rpc: Rpc): void {\r\n MsftSme.setPerformanceProfile(true);\r\n this.registerRpc(rpc);\r\n }\r\n\r\n public disable(rpc: Rpc): void {\r\n MsftSme.setPerformanceProfile(false);\r\n this.registerRpc(rpc);\r\n }\r\n\r\n private checkPerformanceProfile(): boolean {\r\n if (!MsftSme.getPerformanceProfile()) {\r\n if (this.database) {\r\n this.database.close();\r\n this.database = null;\r\n }\r\n\r\n return false;\r\n }\r\n\r\n if (!this.database) {\r\n this.database = new PerformanceProfileDatabase();\r\n }\r\n\r\n return true;\r\n }\r\n\r\n public registerRpc(rpc: Rpc): void {\r\n if (!this.rpc) {\r\n this.rpc = rpc;\r\n if (MsftSme.isShell()) {\r\n this.subscription = rpc.stateChanged\r\n .pipe(\r\n filter(active => active),\r\n take(1))\r\n .subscribe(() => {\r\n this.rpcObservablePerformanceConfigClient = new RpcObservablePerformanceConfigClient(this.rpc);\r\n this.rpcObservablePerformanceServer = new RpcObservablePerformanceServer(rpc);\r\n this.rpcObservablePerformanceServer.register(\r\n request => {\r\n if (request.type === PerformanceProfileDataType.Null) {\r\n // The packet is null packet and retain only the version data.\r\n if (request.sourceVersion === '0.2.0') {\r\n // this version can support config command when on/off switch was used.\r\n this.moduleVersionMap[request.sourceName] = request.sourceVersion;\r\n }\r\n\r\n return of(null);\r\n }\r\n\r\n if (!this.checkPerformanceProfile()) {\r\n return of(null);\r\n }\r\n\r\n return this.database.write(request).pipe(map(() => null));\r\n });\r\n });\r\n } else {\r\n this.subscription = rpc.stateChanged\r\n .pipe(\r\n filter(active => active),\r\n take(1))\r\n .subscribe(() => {\r\n this.rpcObservablePerformanceClient = new RpcObservablePerformanceClient(rpc);\r\n });\r\n }\r\n }\r\n\r\n this.updateMonitors();\r\n }\r\n\r\n public updateMonitors(): void {\r\n const enabled = this.checkPerformanceProfile();\r\n if (this.rpcObservablePerformanceConfigClient) {\r\n // enable/disable the performance profile data collection to current modules.\r\n // but these must be version 0.2.0.\r\n const items = this.rpc.rpcManager.getCurrentRpcOutbound();\r\n if (items) {\r\n for (const item of items) {\r\n if (this.moduleVersionMap[item.name]) {\r\n this.rpcObservablePerformanceConfigClient.config({ enabled }, item).subscribe();\r\n }\r\n }\r\n }\r\n }\r\n\r\n if (enabled) {\r\n this.registerHttp();\r\n this.registerPowerShellStream();\r\n this.registerCimStream();\r\n } else {\r\n Http.unregisterMonitors(PerformanceProfile.monitorName);\r\n PowerShellStream.unregisterMonitors(PerformanceProfile.monitorName);\r\n CimStream.unregisterMonitors(PerformanceProfile.monitorName);\r\n }\r\n }\r\n\r\n private log(message: PerformanceProfileData): void {\r\n if (!this.checkPerformanceProfile()) {\r\n return;\r\n }\r\n\r\n const self = MsftSme.self();\r\n const record: PerformanceProfileRecord = {\r\n ...message,\r\n ...{ sessionId: self.Init.sessionId, timestamp: Date.now(), moduleName: self.Init.moduleName }\r\n };\r\n\r\n if (!record.errorMessage) {\r\n delete record['errorMessage'];\r\n }\r\n\r\n if (this.rpc && this.rpc.stateActive && this.rpcObservablePerformanceClient) {\r\n // send to shell.\r\n this.rpcObservablePerformanceClient.log(record).subscribe();\r\n } else {\r\n // write to database.\r\n this.database.write(record).subscribe();\r\n }\r\n }\r\n\r\n private logAnyway(message: PerformanceProfileData): void {\r\n const self = MsftSme.self();\r\n const record: PerformanceProfileRecord = {\r\n ...message,\r\n ...{ sessionId: self.Init.sessionId, timestamp: Date.now(), moduleName: self.Init.moduleName }\r\n };\r\n\r\n if (!record.errorMessage) {\r\n delete record['errorMessage'];\r\n }\r\n\r\n if (this.rpc && this.rpc.stateActive && this.rpcObservablePerformanceClient) {\r\n // send to shell.\r\n this.rpcObservablePerformanceClient.log(record).subscribe();\r\n }\r\n }\r\n\r\n private registerHttp(): void {\r\n const startPropertyName = '_start_';\r\n\r\n Http.registerMonitorSet({\r\n name: PerformanceProfile.monitorName,\r\n preMonitor: (request: AjaxRequest) => {\r\n if (!request) {\r\n Logging.logWarning('Http', 'Http performance profile measurement error to access the AjaxRequest object.');\r\n return of(request);\r\n }\r\n\r\n request[startPropertyName] = Date.now();\r\n return of(request);\r\n },\r\n successMonitor: (response: AjaxResponse<any>) => {\r\n if (!response || !response.request || !response.request.url) {\r\n Logging.logWarning('Http', 'Http performance profile measurement error to access the AjaxResponse object.');\r\n return of(response);\r\n }\r\n\r\n const request = response.request;\r\n const url = request.url;\r\n const method = request.method;\r\n const end = Date.now();\r\n const start = request[startPropertyName];\r\n if (url.indexOf('/features/powershellApi/') > 0) {\r\n const powershell = PerformanceProfile.powershellApi(url, request.body, response.response);\r\n PerformanceProfile.logXhrFetchPowerShell('Http', start, end, url, method, response.status, powershell);\r\n } else if (url.includes('/features/cim/')) {\r\n const cim = PerformanceProfile.cimApi(url, request.body);\r\n PerformanceProfile.logXhrFetchCim('Http', start, end, url, method, response.status, cim);\r\n } else if (url.indexOf('/api/batch') > 0) {\r\n const batch = PerformanceProfile.batchApi(request.body, response.response);\r\n PerformanceProfile.logXhrFetchBatch('Http', start, end, url, method, response.status, batch);\r\n } else {\r\n PerformanceProfile.logXhrFetch('Http', start, end, url, method, response.status);\r\n }\r\n\r\n return of(response);\r\n },\r\n errorMonitor: (error: AjaxError) => {\r\n if (!error || !error.response || !error.request || !error.request.url) {\r\n Logging.logWarning('Http', 'Http performance profile measurement error to access the AjaxError object.');\r\n return throwError(() => error);\r\n }\r\n\r\n const request = error.request;\r\n const url = request.url;\r\n const method = request.method;\r\n const end = Date.now();\r\n const start = request[startPropertyName];\r\n const message = Net.getErrorMessage(error);\r\n if (url.indexOf('features/powershellApi') > 0) {\r\n const powershell = PerformanceProfile.powershellApi(url, request.body, error.response);\r\n PerformanceProfile.logXhrFetchPowerShell('Http', start, end, url, method, error.status, powershell, message);\r\n } else if (url.includes('/features/cim/')) {\r\n const cim = PerformanceProfile.cimApi(url, request.body);\r\n PerformanceProfile.logXhrFetchCim('Http', start, end, url, method, error.status, cim, message);\r\n } else {\r\n PerformanceProfile.logXhrFetch('Http', start, end, url, method, error.status, message);\r\n }\r\n\r\n return throwError(() => error);\r\n }\r\n });\r\n }\r\n\r\n private registerPowerShellStream(): void {\r\n let masterId = 1;\r\n PowerShellStream.registerMonitorSet({\r\n name: PerformanceProfile.monitorName,\r\n preMonitor: (nodeName: string, command: PowerShellCommand, options?: PowerShellStreamOptions) => {\r\n const start = Date.now();\r\n const id = masterId++;\r\n const context: PowerShellStreamMonitorSetContext<PowerShellStreamContext> = {\r\n nodeName,\r\n command,\r\n options,\r\n data: { id, start, progressStart: start, count: 0, itemCount: 0 }\r\n };\r\n return of(context);\r\n },\r\n successMonitor: (response: any, context: PowerShellStreamMonitorSetContext<PowerShellStreamContext>) => {\r\n context.data.progressEnd = Date.now();\r\n context.data.count++;\r\n context.data.itemCount += (response && response.results && response.results.length || 1);\r\n PerformanceProfile.logWebSocketPowerShell(\r\n 'PowerShellStream',\r\n context.nodeName,\r\n context.command.command,\r\n context.data);\r\n context.data.progressStart = Date.now();\r\n return of(response);\r\n },\r\n errorMonitor: (error: any, context: PowerShellStreamMonitorSetContext<PowerShellStreamContext>) => {\r\n context.data.progressEnd = Date.now();\r\n PerformanceProfile.logWebSocketPowerShell(\r\n 'PowerShellStream',\r\n context.nodeName,\r\n context.command.command,\r\n context.data,\r\n Net.getErrorMessage(error));\r\n return throwError(() => error);\r\n }\r\n });\r\n }\r\n\r\n private registerCimStream(): void {\r\n let masterId = 1;\r\n CimStream.registerMonitorSet({\r\n name: PerformanceProfile.monitorName,\r\n preMonitor: (\r\n nodeName: string,\r\n requestState: WebsocketStreamDataRequestState,\r\n request: CimStreamRequestData,\r\n format: CimResultFormat,\r\n options?: CimStreamOptions) => {\r\n const start = Date.now();\r\n const id = masterId++;\r\n const context: CimStreamMonitorSetContext<CimStreamContext> = {\r\n nodeName,\r\n requestState,\r\n request,\r\n format,\r\n options,\r\n data: { id, start, progressStart: start, count: 0, itemCount: 0 }\r\n };\r\n return of(context);\r\n },\r\n successMonitor: (response: any, context: CimStreamMonitorSetContext<CimStreamContext>) => {\r\n context.data.progressEnd = Date.now();\r\n context.data.count++;\r\n context.data.itemCount += (response && response.results && response.results.length || 1);\r\n PerformanceProfile.logWebSocketCim(\r\n 'CimStream',\r\n context.nodeName,\r\n this.removeCimStreamDetailData(context.request),\r\n context.data);\r\n context.data.progressStart = Date.now();\r\n return of(response);\r\n },\r\n errorMonitor: (error: any, context: CimStreamMonitorSetContext<CimStreamContext>) => {\r\n context.data.progressEnd = Date.now();\r\n PerformanceProfile.logWebSocketCim(\r\n 'CimStream',\r\n context.nodeName,\r\n this.removeCimStreamDetailData(context.request),\r\n context.data,\r\n Net.getErrorMessage(error));\r\n return throwError(() => error);\r\n }\r\n });\r\n }\r\n\r\n private removeCimStreamDetailData(request: CimStreamRequestData): CimStreamRequestData {\r\n const skipKeys = ['data', 'keyProperties'];\r\n const requestRaw: any = request;\r\n const keys = Object.keys(requestRaw);\r\n const trimmedKeys = keys.filter(key => skipKeys.indexOf(key) < 0);\r\n if (keys.length !== trimmedKeys.length) {\r\n const copy: any = {};\r\n for (const key of trimmedKeys) {\r\n copy[key] = requestRaw[key];\r\n }\r\n\r\n return copy;\r\n }\r\n\r\n return request;\r\n }\r\n}\r\n"]}
1
+ {"version":3,"sources":["../../../packages/core/performance/performance-profile.ts"],"names":[],"mappings":"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","file":"performance-profile.js","sourcesContent":["import { of, Subscription, throwError } from 'rxjs';\r\nimport { AjaxError, AjaxRequest, AjaxResponse } from 'rxjs/ajax';\r\nimport { filter, map, take } from 'rxjs/operators';\r\nimport { CimResultFormat, CimStream, CimStreamMonitorSetContext, CimStreamOptions, CimStreamRequestData } from '../data/cim-stream';\r\nimport { Http } from '../data/http';\r\nimport { Net } from '../data/net';\r\nimport { PowerShellCommand } from '../data/powershell';\r\nimport { PowerShellStream, PowerShellStreamMonitorSetContext, PowerShellStreamOptions } from '../data/powershell-stream';\r\nimport { WebsocketStreamDataRequestState } from '../data/websocket-stream';\r\nimport { Logging } from '../diagnostics/logging';\r\nimport { RpcObservablePerformanceClient } from '../rpc/performance/rpc-observable-performance-client';\r\nimport { RpcObservablePerformanceConfigClient } from '../rpc/performance/rpc-observable-performance-config-client';\r\nimport { RpcObservablePerformanceServer } from '../rpc/performance/rpc-observable-performance-server';\r\nimport { Rpc } from '../rpc/rpc';\r\nimport {\r\n PerformanceProfileData, PerformanceProfileDataCim, PerformanceProfileDataPowerShell, PerformanceProfileXhrFetch\r\n} from './performance-profile-data';\r\nimport { PerformanceProfileDataType } from './performance-profile-data-type';\r\nimport { PerformanceProfileDatabase } from './performance-profile-database';\r\nimport { PerformanceProfileRecord } from './performance-profile-record';\r\n\r\ninterface PowerShellStreamContext {\r\n id: number;\r\n start: number;\r\n progressStart: number;\r\n progressEnd?: number;\r\n count: number;\r\n itemCount: number;\r\n}\r\n\r\ninterface CimStreamContext {\r\n id: number;\r\n start: number;\r\n progressStart: number;\r\n progressEnd?: number;\r\n count: number;\r\n itemCount: number;\r\n}\r\n\r\n/**\r\n * Performance measurement class.\r\n */\r\nexport class PerformanceProfile {\r\n private static monitorName = 'PerformanceProfile';\r\n private static instance: PerformanceProfile;\r\n\r\n private database: PerformanceProfileDatabase = null;\r\n private rpc: Rpc;\r\n private rpcObservablePerformanceClient: RpcObservablePerformanceClient;\r\n private rpcObservablePerformanceServer: RpcObservablePerformanceServer;\r\n private subscription: Subscription;\r\n private moduleVersionMap: { [index: string]: string } = {};\r\n private rpcObservablePerformanceConfigClient: RpcObservablePerformanceConfigClient;\r\n\r\n /**\r\n * Gets the current PerformanceProfile instance.\r\n */\r\n public static get current(): PerformanceProfile {\r\n if (PerformanceProfile.instance) {\r\n return PerformanceProfile.instance;\r\n }\r\n\r\n PerformanceProfile.instance = new PerformanceProfile();\r\n return PerformanceProfile.instance;\r\n }\r\n\r\n public static get database(): PerformanceProfileDatabase {\r\n return PerformanceProfile.current.database;\r\n }\r\n\r\n /**\r\n * Record Route navigation performance measurement.\r\n */\r\n public static logRouteNavigation(\r\n source: string,\r\n start: number,\r\n end: number,\r\n url: string,\r\n target?: string,\r\n errorMessage?: string): void {\r\n const data: PerformanceProfileData = {\r\n source,\r\n start,\r\n end,\r\n errorMessage,\r\n type: PerformanceProfileDataType.RouteNavigation,\r\n routeNavigation: { url, target }\r\n };\r\n PerformanceProfile.current.log(data);\r\n }\r\n\r\n /**\r\n * Record Null packet.\r\n */\r\n public static logNull(source: string): void {\r\n const data: PerformanceProfileData = {\r\n source,\r\n start: 0,\r\n end: 0,\r\n errorMessage: null,\r\n type: PerformanceProfileDataType.Null\r\n };\r\n PerformanceProfile.current.logAnyway(data);\r\n }\r\n\r\n /**\r\n * Record XHR or Fetch performance measurement for PowerShell.\r\n */\r\n private static logXhrFetchPowerShell(\r\n source: string,\r\n start: number,\r\n end: number,\r\n url: string,\r\n method: string,\r\n status: number,\r\n powershell: PerformanceProfileDataPowerShell,\r\n errorMessage?: string): void {\r\n const data: PerformanceProfileData = {\r\n source,\r\n start,\r\n end,\r\n errorMessage,\r\n type: PerformanceProfileDataType.XhrFetch,\r\n xhrFetch: { url, method, status, powershell }\r\n };\r\n PerformanceProfile.current.log(data);\r\n }\r\n\r\n /**\r\n * Record XHR or Fetch performance measurement for CIM.\r\n */\r\n private static logXhrFetchCim(\r\n source: string,\r\n start: number,\r\n end: number,\r\n url: string,\r\n method: string,\r\n status: number,\r\n cim: PerformanceProfileDataCim,\r\n errorMessage?: string): void {\r\n const data: PerformanceProfileData = {\r\n source,\r\n start,\r\n end,\r\n errorMessage,\r\n type: PerformanceProfileDataType.XhrFetch,\r\n xhrFetch: { url, method, status, cim }\r\n };\r\n PerformanceProfile.current.log(data);\r\n }\r\n\r\n /**\r\n * Record XHR or Fetch performance measurement for Batch.\r\n */\r\n private static logXhrFetchBatch(\r\n source: string,\r\n start: number,\r\n end: number,\r\n url: string,\r\n method: string,\r\n status: number,\r\n batch: PerformanceProfileXhrFetch[],\r\n errorMessage?: string): void {\r\n const data: PerformanceProfileData = {\r\n source,\r\n start,\r\n end,\r\n errorMessage,\r\n type: PerformanceProfileDataType.XhrFetch,\r\n xhrFetch: { url, method, status, batch }\r\n };\r\n PerformanceProfile.current.log(data);\r\n }\r\n\r\n /**\r\n * Record XHR or Fetch performance measurement for general.\r\n */\r\n private static logXhrFetch(\r\n source: string,\r\n start: number,\r\n end: number,\r\n url: string,\r\n method: string,\r\n status: number,\r\n errorMessage?: string): void {\r\n const data: PerformanceProfileData = {\r\n source,\r\n start,\r\n end,\r\n errorMessage,\r\n type: PerformanceProfileDataType.XhrFetch,\r\n xhrFetch: { url, method, status }\r\n };\r\n PerformanceProfile.current.log(data);\r\n }\r\n\r\n /**\r\n * Record WebSocket performance measurement.\r\n */\r\n private static logWebSocketPowerShell(\r\n source: string,\r\n nodeName: string,\r\n command: string,\r\n context: PowerShellStreamContext,\r\n errorMessage?: string): void {\r\n const data: PerformanceProfileData = {\r\n source,\r\n start: context.progressStart,\r\n end: context.progressEnd,\r\n errorMessage,\r\n type: PerformanceProfileDataType.WebSocket,\r\n webSocket: { nodeName, id: context.id, count: context.count, itemCount: context.itemCount, powershell: { command } }\r\n };\r\n PerformanceProfile.current.log(data);\r\n }\r\n\r\n /**\r\n * Record WebSocket performance measurement.\r\n */\r\n private static logWebSocketCim(\r\n source: string,\r\n nodeName: string,\r\n cim: CimStreamRequestData,\r\n context: CimStreamContext,\r\n errorMessage?: string): void {\r\n const data: PerformanceProfileData = {\r\n source,\r\n start: context.progressStart,\r\n end: context.progressEnd,\r\n errorMessage,\r\n type: PerformanceProfileDataType.WebSocket,\r\n webSocket: { nodeName, id: context.id, count: context.count, itemCount: context.itemCount, cim }\r\n };\r\n PerformanceProfile.current.log(data);\r\n }\r\n\r\n private static powershellApi(\r\n url: string,\r\n body: string,\r\n response: { completed?: string, sessionId?: string; properties?: { completed: string; sessionId: string; }; }): PerformanceProfileDataPowerShell {\r\n const powershell: { command?: string; sessionId?: string; completed?: string } = {};\r\n if (body && body.indexOf('\\\"properties\\\"') > 0) {\r\n powershell.command = PerformanceProfile.getBetween(body, ',\\\"command\\\":\\\"', '\\\",\\\"')\r\n || PerformanceProfile.getBetween(body, '\\\"script\\\":\\\"##', '##:');\r\n }\r\n\r\n powershell.completed = response && response.completed;\r\n if (!powershell.completed) {\r\n powershell.completed = response && response.properties && response.properties.completed;\r\n }\r\n\r\n powershell.sessionId = response && response.sessionId;\r\n if (!powershell.sessionId) {\r\n powershell.sessionId = response && response.properties && response.properties.sessionId;\r\n if (!powershell.sessionId) {\r\n powershell.sessionId = PerformanceProfile.getBetween(url, '/pssessions/', '?');\r\n }\r\n }\r\n\r\n return powershell;\r\n }\r\n\r\n private static cimApi(url: string, body: string): PerformanceProfileDataCim {\r\n if (url.indexOf('/features/cim/query') > 0 || url.indexOf('/services/WinREST/CIM/query') > 0) {\r\n try {\r\n return JSON.parse(body);\r\n } catch {\r\n return null;\r\n }\r\n }\r\n\r\n const namespaceName = PerformanceProfile.getBetween(url, '/namespaces/', '/classes/');\r\n const className = PerformanceProfile.getBetween(url, '/classes/', '/instances');\r\n return { namespace: namespaceName, className: className };\r\n }\r\n\r\n private static batchApi(body: string, response: string): PerformanceProfileXhrFetch[] {\r\n const delimiter = '\\x0d\\x0a';\r\n const batch: PerformanceProfileXhrFetch[] = [];\r\n let last = body.indexOf(delimiter);\r\n let separator = body.substring(0, last + 2);\r\n const bodySegments = body.split(separator);\r\n last = response.indexOf(delimiter);\r\n separator = response.substring(0, last + 2);\r\n const responseSegments = response.split(separator);\r\n if (bodySegments.length === responseSegments.length && bodySegments.length > 1) {\r\n let batchMethod: string;\r\n let batchUrl: string;\r\n let batchBody: string;\r\n let batchStatus: number;\r\n let batchResponse: any;\r\n for (let i = 1; i < bodySegments.length; i++) {\r\n const bodySegment = bodySegments[i];\r\n const responseSegment = responseSegments[i];\r\n const bodySegmentLines = bodySegment.split(delimiter);\r\n let emptyLines = 0;\r\n for (let j = 0; j < bodySegmentLines.length; j++) {\r\n const line = bodySegmentLines[j];\r\n if (line.length > 0) {\r\n if (emptyLines === 1 && !batchUrl) {\r\n // reached header segment.\r\n const query = line.split(' ');\r\n batchMethod = query[0];\r\n batchUrl = query[1];\r\n } else if (emptyLines >= 2 && !batchBody) {\r\n batchBody = line;\r\n }\r\n } else {\r\n emptyLines++;\r\n }\r\n }\r\n\r\n emptyLines = 0;\r\n const responseSegmentLines = responseSegment.split(delimiter);\r\n for (let j = 0; j < responseSegmentLines.length; j++) {\r\n const line = responseSegmentLines[j];\r\n if (line.length > 0) {\r\n if (emptyLines === 1 && !batchStatus) {\r\n // reached header segment.\r\n const query = line.split(' ');\r\n batchStatus = Number(query[1]);\r\n } else if (emptyLines >= 2 && !batchResponse) {\r\n try {\r\n batchResponse = JSON.parse(line);\r\n } catch {\r\n batchResponse = {};\r\n }\r\n }\r\n } else {\r\n emptyLines++;\r\n }\r\n }\r\n\r\n const batchItem: PerformanceProfileXhrFetch = {\r\n url: batchUrl,\r\n status: batchStatus,\r\n method: batchMethod\r\n };\r\n if (batchUrl.indexOf('/features/powershellApi/') > 0 || batchUrl.indexOf('/services/WinREST/PowerShell/') > 0) {\r\n batchItem.powershell = PerformanceProfile.powershellApi(batchUrl, batchBody, batchResponse);\r\n } else if (batchUrl.includes('/features/cim/query') || batchUrl.includes('/services/WinREST/CIM/')) {\r\n batchItem.cim = PerformanceProfile.cimApi(batchUrl, batchBody);\r\n }\r\n\r\n batch.push(batchItem);\r\n }\r\n }\r\n\r\n return batch;\r\n }\r\n\r\n private static getBetween(source: string, begin: string, end: string): string {\r\n let index0 = source.indexOf(begin);\r\n if (index0 < 0) {\r\n return null;\r\n }\r\n\r\n index0 += begin.length;\r\n const index1 = source.indexOf(end, index0);\r\n if (index1 < 0) {\r\n return null;\r\n }\r\n\r\n return source.substring(index0, index1);\r\n }\r\n\r\n public enable(rpc: Rpc): void {\r\n MsftSme.setPerformanceProfile(true);\r\n this.registerRpc(rpc);\r\n }\r\n\r\n public disable(rpc: Rpc): void {\r\n MsftSme.setPerformanceProfile(false);\r\n this.registerRpc(rpc);\r\n }\r\n\r\n private checkPerformanceProfile(): boolean {\r\n if (!MsftSme.getPerformanceProfile()) {\r\n if (this.database) {\r\n this.database.close();\r\n this.database = null;\r\n }\r\n\r\n return false;\r\n }\r\n\r\n if (!this.database) {\r\n this.database = new PerformanceProfileDatabase();\r\n }\r\n\r\n return true;\r\n }\r\n\r\n public registerRpc(rpc: Rpc): void {\r\n if (!this.rpc) {\r\n this.rpc = rpc;\r\n if (MsftSme.isShell()) {\r\n this.subscription = rpc.stateChanged\r\n .pipe(\r\n filter(active => active),\r\n take(1))\r\n .subscribe(() => {\r\n this.rpcObservablePerformanceConfigClient = new RpcObservablePerformanceConfigClient(this.rpc);\r\n this.rpcObservablePerformanceServer = new RpcObservablePerformanceServer(rpc);\r\n this.rpcObservablePerformanceServer.register(\r\n request => {\r\n if (request.type === PerformanceProfileDataType.Null) {\r\n // The packet is null packet and retain only the version data.\r\n if (request.sourceVersion === '0.2.0') {\r\n // this version can support config command when on/off switch was used.\r\n this.moduleVersionMap[request.sourceName] = request.sourceVersion;\r\n }\r\n\r\n return of(null);\r\n }\r\n\r\n if (!this.checkPerformanceProfile()) {\r\n return of(null);\r\n }\r\n\r\n return this.database.write(request).pipe(map(() => null));\r\n });\r\n });\r\n } else {\r\n this.subscription = rpc.stateChanged\r\n .pipe(\r\n filter(active => active),\r\n take(1))\r\n .subscribe(() => {\r\n this.rpcObservablePerformanceClient = new RpcObservablePerformanceClient(rpc);\r\n });\r\n }\r\n }\r\n\r\n this.updateMonitors();\r\n }\r\n\r\n public updateMonitors(): void {\r\n const enabled = this.checkPerformanceProfile();\r\n if (this.rpcObservablePerformanceConfigClient) {\r\n // enable/disable the performance profile data collection to current modules.\r\n // but these must be version 0.2.0.\r\n const items = this.rpc.rpcManager.getCurrentRpcOutbound();\r\n if (items) {\r\n for (const item of items) {\r\n if (this.moduleVersionMap[item.name]) {\r\n this.rpcObservablePerformanceConfigClient.config({ enabled }, item).subscribe();\r\n }\r\n }\r\n }\r\n }\r\n\r\n if (enabled) {\r\n this.registerHttp();\r\n this.registerPowerShellStream();\r\n this.registerCimStream();\r\n } else {\r\n Http.unregisterMonitors(PerformanceProfile.monitorName);\r\n PowerShellStream.unregisterMonitors(PerformanceProfile.monitorName);\r\n CimStream.unregisterMonitors(PerformanceProfile.monitorName);\r\n }\r\n }\r\n\r\n private log(message: PerformanceProfileData): void {\r\n if (!this.checkPerformanceProfile()) {\r\n return;\r\n }\r\n\r\n const self = MsftSme.self();\r\n const record: PerformanceProfileRecord = {\r\n ...message,\r\n ...{ sessionId: self.Init.sessionId, timestamp: Date.now(), moduleName: self.Init.moduleName }\r\n };\r\n\r\n if (!record.errorMessage) {\r\n delete record['errorMessage'];\r\n }\r\n\r\n if (this.rpc && this.rpc.stateActive && this.rpcObservablePerformanceClient) {\r\n // send to shell.\r\n this.rpcObservablePerformanceClient.log(record).subscribe();\r\n } else {\r\n // write to database.\r\n this.database.write(record).subscribe();\r\n }\r\n }\r\n\r\n private logAnyway(message: PerformanceProfileData): void {\r\n const self = MsftSme.self();\r\n const record: PerformanceProfileRecord = {\r\n ...message,\r\n ...{ sessionId: self.Init.sessionId, timestamp: Date.now(), moduleName: self.Init.moduleName }\r\n };\r\n\r\n if (!record.errorMessage) {\r\n delete record['errorMessage'];\r\n }\r\n\r\n if (this.rpc && this.rpc.stateActive && this.rpcObservablePerformanceClient) {\r\n // send to shell.\r\n this.rpcObservablePerformanceClient.log(record).subscribe();\r\n }\r\n }\r\n\r\n private registerHttp(): void {\r\n const startPropertyName = '_start_';\r\n\r\n Http.registerMonitorSet({\r\n name: PerformanceProfile.monitorName,\r\n preMonitor: (request: AjaxRequest) => {\r\n if (!request) {\r\n Logging.logWarning('Http', 'Http performance profile measurement error to access the AjaxRequest object.');\r\n return of(request);\r\n }\r\n\r\n request[startPropertyName] = Date.now();\r\n return of(request);\r\n },\r\n successMonitor: (response: AjaxResponse<any>) => {\r\n if (!response || !response.request || !response.request.url) {\r\n Logging.logWarning('Http', 'Http performance profile measurement error to access the AjaxResponse object.');\r\n return of(response);\r\n }\r\n\r\n const request = response.request;\r\n const url = request.url;\r\n const method = request.method;\r\n const end = Date.now();\r\n const start = request[startPropertyName];\r\n if (url.indexOf('/features/powershellApi/') > 0 || url.indexOf('/services/WinREST/PowerShell/') > 0){\r\n const powershell = PerformanceProfile.powershellApi(url, request.body, response.response);\r\n PerformanceProfile.logXhrFetchPowerShell('Http', start, end, url, method, response.status, powershell);\r\n } else if (url.includes('/features/cim/') || url.includes('/services/WinREST/CIM')) {\r\n const cim = PerformanceProfile.cimApi(url, request.body);\r\n PerformanceProfile.logXhrFetchCim('Http', start, end, url, method, response.status, cim);\r\n } else if (url.indexOf('/api/batch') > 0) {\r\n const batch = PerformanceProfile.batchApi(request.body, response.response);\r\n PerformanceProfile.logXhrFetchBatch('Http', start, end, url, method, response.status, batch);\r\n } else {\r\n PerformanceProfile.logXhrFetch('Http', start, end, url, method, response.status);\r\n }\r\n\r\n return of(response);\r\n },\r\n errorMonitor: (error: AjaxError) => {\r\n if (!error || !error.response || !error.request || !error.request.url) {\r\n Logging.logWarning('Http', 'Http performance profile measurement error to access the AjaxError object.');\r\n return throwError(() => error);\r\n }\r\n\r\n const request = error.request;\r\n const url = request.url;\r\n const method = request.method;\r\n const end = Date.now();\r\n const start = request[startPropertyName];\r\n const message = Net.getErrorMessage(error);\r\n if (url.indexOf('features/powershellApi') > 0 || url.indexOf('/services/WinREST/PowerShell/') > 0) {\r\n const powershell = PerformanceProfile.powershellApi(url, request.body, error.response);\r\n PerformanceProfile.logXhrFetchPowerShell('Http', start, end, url, method, error.status, powershell, message);\r\n } else if (url.includes('/features/cim/') || url.includes('/services/WinREST/CIM/')) {\r\n const cim = PerformanceProfile.cimApi(url, request.body);\r\n PerformanceProfile.logXhrFetchCim('Http', start, end, url, method, error.status, cim, message);\r\n } else {\r\n PerformanceProfile.logXhrFetch('Http', start, end, url, method, error.status, message);\r\n }\r\n\r\n return throwError(() => error);\r\n }\r\n });\r\n }\r\n\r\n private registerPowerShellStream(): void {\r\n let masterId = 1;\r\n PowerShellStream.registerMonitorSet({\r\n name: PerformanceProfile.monitorName,\r\n preMonitor: (nodeName: string, command: PowerShellCommand, options?: PowerShellStreamOptions) => {\r\n const start = Date.now();\r\n const id = masterId++;\r\n const context: PowerShellStreamMonitorSetContext<PowerShellStreamContext> = {\r\n nodeName,\r\n command,\r\n options,\r\n data: { id, start, progressStart: start, count: 0, itemCount: 0 }\r\n };\r\n return of(context);\r\n },\r\n successMonitor: (response: any, context: PowerShellStreamMonitorSetContext<PowerShellStreamContext>) => {\r\n context.data.progressEnd = Date.now();\r\n context.data.count++;\r\n context.data.itemCount += (response && response.results && response.results.length || 1);\r\n PerformanceProfile.logWebSocketPowerShell(\r\n 'PowerShellStream',\r\n context.nodeName,\r\n context.command.command,\r\n context.data);\r\n context.data.progressStart = Date.now();\r\n return of(response);\r\n },\r\n errorMonitor: (error: any, context: PowerShellStreamMonitorSetContext<PowerShellStreamContext>) => {\r\n context.data.progressEnd = Date.now();\r\n PerformanceProfile.logWebSocketPowerShell(\r\n 'PowerShellStream',\r\n context.nodeName,\r\n context.command.command,\r\n context.data,\r\n Net.getErrorMessage(error));\r\n return throwError(() => error);\r\n }\r\n });\r\n }\r\n\r\n private registerCimStream(): void {\r\n let masterId = 1;\r\n CimStream.registerMonitorSet({\r\n name: PerformanceProfile.monitorName,\r\n preMonitor: (\r\n nodeName: string,\r\n requestState: WebsocketStreamDataRequestState,\r\n request: CimStreamRequestData,\r\n format: CimResultFormat,\r\n options?: CimStreamOptions) => {\r\n const start = Date.now();\r\n const id = masterId++;\r\n const context: CimStreamMonitorSetContext<CimStreamContext> = {\r\n nodeName,\r\n requestState,\r\n request,\r\n format,\r\n options,\r\n data: { id, start, progressStart: start, count: 0, itemCount: 0 }\r\n };\r\n return of(context);\r\n },\r\n successMonitor: (response: any, context: CimStreamMonitorSetContext<CimStreamContext>) => {\r\n context.data.progressEnd = Date.now();\r\n context.data.count++;\r\n context.data.itemCount += (response && response.results && response.results.length || 1);\r\n PerformanceProfile.logWebSocketCim(\r\n 'CimStream',\r\n context.nodeName,\r\n this.removeCimStreamDetailData(context.request),\r\n context.data);\r\n context.data.progressStart = Date.now();\r\n return of(response);\r\n },\r\n errorMonitor: (error: any, context: CimStreamMonitorSetContext<CimStreamContext>) => {\r\n context.data.progressEnd = Date.now();\r\n PerformanceProfile.logWebSocketCim(\r\n 'CimStream',\r\n context.nodeName,\r\n this.removeCimStreamDetailData(context.request),\r\n context.data,\r\n Net.getErrorMessage(error));\r\n return throwError(() => error);\r\n }\r\n });\r\n }\r\n\r\n private removeCimStreamDetailData(request: CimStreamRequestData): CimStreamRequestData {\r\n const skipKeys = ['data', 'keyProperties'];\r\n const requestRaw: any = request;\r\n const keys = Object.keys(requestRaw);\r\n const trimmedKeys = keys.filter(key => skipKeys.indexOf(key) < 0);\r\n if (keys.length !== trimmedKeys.length) {\r\n const copy: any = {};\r\n for (const key of trimmedKeys) {\r\n copy[key] = requestRaw[key];\r\n }\r\n\r\n return copy;\r\n }\r\n\r\n return request;\r\n }\r\n}\r\n"]}