@trillboards/edge-sdk 0.2.21 → 0.2.25
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.
- package/deploy/macos/scripts/setup-litertlm.sh +30 -0
- package/deploy/windows/build-windows.ps1 +1 -0
- package/deploy/windows/e2e/test-enterprise-trust-store.ps1 +341 -0
- package/deploy/windows/enroll-connector.ps1 +169 -0
- package/deploy/windows/installer.nsi +102 -6
- package/deploy/windows/run-connector.ps1 +30 -0
- package/deploy/windows/setup-litertlm.ps1 +49 -1
- package/dist/AudienceAnalyzeClient.d.ts +32 -1
- package/dist/AudienceAnalyzeClient.d.ts.map +1 -1
- package/dist/AudienceAnalyzeClient.js +34 -5
- package/dist/AudienceAnalyzeClient.js.map +1 -1
- package/dist/CloudSensingManager.d.ts +30 -0
- package/dist/CloudSensingManager.d.ts.map +1 -1
- package/dist/CloudSensingManager.js +61 -1
- package/dist/CloudSensingManager.js.map +1 -1
- package/dist/ConnectorCameraClient.d.ts +79 -0
- package/dist/ConnectorCameraClient.d.ts.map +1 -0
- package/dist/ConnectorCameraClient.js +114 -0
- package/dist/ConnectorCameraClient.js.map +1 -0
- package/dist/EdgeAgent.js +1 -1
- package/dist/EnrollClient.d.ts +81 -0
- package/dist/EnrollClient.d.ts.map +1 -0
- package/dist/EnrollClient.js +97 -0
- package/dist/EnrollClient.js.map +1 -0
- package/dist/cli.d.ts +49 -0
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +392 -0
- package/dist/cli.js.map +1 -1
- package/dist/config.d.ts +15 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +4 -0
- package/dist/config.js.map +1 -1
- package/dist/diagnose.d.ts +37 -4
- package/dist/diagnose.d.ts.map +1 -1
- package/dist/diagnose.js +155 -6
- package/dist/diagnose.js.map +1 -1
- package/dist/enterpriseNetwork.d.ts +130 -0
- package/dist/enterpriseNetwork.d.ts.map +1 -0
- package/dist/enterpriseNetwork.js +568 -0
- package/dist/enterpriseNetwork.js.map +1 -0
- package/dist/enterpriseProxy.d.ts +73 -0
- package/dist/enterpriseProxy.d.ts.map +1 -0
- package/dist/enterpriseProxy.js +406 -0
- package/dist/enterpriseProxy.js.map +1 -0
- package/dist/enterpriseTrust.d.ts +188 -0
- package/dist/enterpriseTrust.d.ts.map +1 -0
- package/dist/enterpriseTrust.js +615 -0
- package/dist/enterpriseTrust.js.map +1 -0
- package/dist/index.d.ts +10 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +29 -1
- package/dist/index.js.map +1 -1
- package/dist/localNetworkAccess.d.ts +166 -0
- package/dist/localNetworkAccess.d.ts.map +1 -0
- package/dist/localNetworkAccess.js +490 -0
- package/dist/localNetworkAccess.js.map +1 -0
- package/dist/sensingRunMode.d.ts +36 -0
- package/dist/sensingRunMode.d.ts.map +1 -1
- package/dist/sensingRunMode.js +63 -1
- package/dist/sensingRunMode.js.map +1 -1
- package/dist/transportFailure.d.ts +118 -0
- package/dist/transportFailure.d.ts.map +1 -0
- package/dist/transportFailure.js +267 -0
- package/dist/transportFailure.js.map +1 -0
- package/package.json +1 -1
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
; installer.nsi
|
|
1
|
+
; installer.nsi - Trillboards Edge on-device (local-sense) CCTV connector (Windows).
|
|
2
2
|
; Per-user, no-admin install (RequestExecutionLevel user) that mirrors the
|
|
3
3
|
; home-domain macOS .pkg: lays down the self-contained tree under
|
|
4
4
|
; %LOCALAPPDATA%\Trillboards\edge, registers a per-user Scheduled Task that
|
|
@@ -26,6 +26,16 @@
|
|
|
26
26
|
!define LITERT_TASK_NAME "TrillboardsLiteRtLm"
|
|
27
27
|
|
|
28
28
|
Var ModelSource
|
|
29
|
+
; -- Unattended (MDM/Intune/SCCM) parameters --------------------------------
|
|
30
|
+
; Before these, the installer parsed exactly ONE switch (/MODEL_SOURCE=) and a
|
|
31
|
+
; perfect silent install still left the machine UNPAIRED, because deviceToken is
|
|
32
|
+
; per-camera-feed and the only writers were the interactive pair/setup paths. A
|
|
33
|
+
; silent install that produces a non-working install is not a deployment story.
|
|
34
|
+
Var EnrollmentToken
|
|
35
|
+
Var SiteLabel
|
|
36
|
+
Var NvrUser
|
|
37
|
+
Var NvrPass
|
|
38
|
+
Var IsUnattended
|
|
29
39
|
|
|
30
40
|
Name "${APP_NAME}"
|
|
31
41
|
OutFile "${OUT_FILE}"
|
|
@@ -47,16 +57,61 @@ BrandingText "Trillboards"
|
|
|
47
57
|
|
|
48
58
|
; Finish page: launch the native Windows Forms setup app through wscript. The
|
|
49
59
|
; setup engine and its cmd wrapper run with CreateNoWindow, so no console flashes.
|
|
50
|
-
|
|
60
|
+
; MUI_FINISHPAGE_RUN_FUNCTION rather than a bare RUN: an admin who passes
|
|
61
|
+
; /ENROLLMENT_TOKEN= without /S still gets the pages, and launching the
|
|
62
|
+
; interactive camera wizard on a machine that just provisioned itself is exactly
|
|
63
|
+
; the human step this feature removes. (Under /S the finish page never renders
|
|
64
|
+
; at all, so this only matters for the visible-but-unattended case.)
|
|
65
|
+
!define MUI_FINISHPAGE_RUN
|
|
66
|
+
!define MUI_FINISHPAGE_RUN_FUNCTION LaunchSetupAppUnlessUnattended
|
|
51
67
|
!define MUI_FINISHPAGE_RUN_TEXT "Set up my CCTV cameras now"
|
|
52
68
|
!define MUI_FINISHPAGE_TEXT "The connector and private local AI are installed. Continue in the Trillboards CCTV Setup app to pair your cameras."
|
|
53
69
|
!insertmacro MUI_PAGE_FINISH
|
|
54
70
|
|
|
71
|
+
Function LaunchSetupAppUnlessUnattended
|
|
72
|
+
${If} $IsUnattended == 1
|
|
73
|
+
Return
|
|
74
|
+
${EndIf}
|
|
75
|
+
Exec '"$WINDIR\System32\wscript.exe" "$INSTDIR\bin\trillboards-setup.vbs"'
|
|
76
|
+
FunctionEnd
|
|
77
|
+
|
|
55
78
|
!insertmacro MUI_UNPAGE_CONFIRM
|
|
56
79
|
!insertmacro MUI_UNPAGE_INSTFILES
|
|
57
80
|
!insertmacro MUI_LANGUAGE "English"
|
|
58
81
|
|
|
59
82
|
Function .onInit
|
|
83
|
+
; -- Unattended parameters ------------------------------------------------
|
|
84
|
+
; /S NSIS silent install (no pages, no prompts)
|
|
85
|
+
; /ENROLLMENT_TOKEN=<tok> the FLEET enrollment credential from the portal
|
|
86
|
+
; /SITE="Store 0417" free-text install label carried into the rollout
|
|
87
|
+
; view and prefixed onto camera names
|
|
88
|
+
;
|
|
89
|
+
; The token is written to $INSTDIR\trillboards.enrollment and the connector
|
|
90
|
+
; DELETES that file the moment it has exchanged it for this machine's own
|
|
91
|
+
; credential - a bootstrap credential must not outlive its bootstrap, or every
|
|
92
|
+
; store PC keeps something that can enroll more machines.
|
|
93
|
+
${GetParameters} $R0
|
|
94
|
+
${GetOptions} $R0 "/ENROLLMENT_TOKEN=" $EnrollmentToken
|
|
95
|
+
${GetOptions} $R0 "/SITE=" $SiteLabel
|
|
96
|
+
; Recorder credentials are OPTIONAL and the deployment is useful without them:
|
|
97
|
+
; with none, the machine still provisions its own identity and simply registers
|
|
98
|
+
; no feeds. With them the install is genuinely zero-touch, because the channels
|
|
99
|
+
; on the cheap DVRs this product targets cannot be opened otherwise - and
|
|
100
|
+
; registering a channel we cannot open would mint a screen that is permanently
|
|
101
|
+
; dark. Whether the recorder password belongs in an MDM package is the
|
|
102
|
+
; customer's call, which is why this is a switch and not a requirement.
|
|
103
|
+
${GetOptions} $R0 "/NVR_USER=" $NvrUser
|
|
104
|
+
${GetOptions} $R0 "/NVR_PASS=" $NvrPass
|
|
105
|
+
|
|
106
|
+
; "Unattended" is silent OR token-driven: an admin scripting a visible install
|
|
107
|
+
; still wants no prompts to block the run.
|
|
108
|
+
StrCpy $IsUnattended 0
|
|
109
|
+
${If} ${Silent}
|
|
110
|
+
StrCpy $IsUnattended 1
|
|
111
|
+
${ElseIf} $EnrollmentToken != ""
|
|
112
|
+
StrCpy $IsUnattended 1
|
|
113
|
+
${EndIf}
|
|
114
|
+
|
|
60
115
|
; The SFX launcher passes its absolute extraction path. Keep the environment
|
|
61
116
|
; value as an engineering and recovery fallback for the signed inner package.
|
|
62
117
|
ReadEnvStr $ModelSource "TRILLBOARDS_BUNDLED_MODEL_PATH"
|
|
@@ -70,7 +125,12 @@ Function .onInit
|
|
|
70
125
|
SetErrorLevel 2
|
|
71
126
|
Quit
|
|
72
127
|
${EndIf}
|
|
73
|
-
|
|
128
|
+
; /SD IDOK: under /S a modal has nobody to click it and the install hangs
|
|
129
|
+
; forever. The default answer dismisses the box; the Abort on the next line
|
|
130
|
+
; is what actually decides the outcome, so a silent run FAILS here rather
|
|
131
|
+
; than proceeding without a model.
|
|
132
|
+
MessageBox MB_ICONSTOP|MB_OK "This installer is missing its included local AI model. Download the complete Trillboards CCTV installer and try again." /SD IDOK
|
|
133
|
+
SetErrorLevel 2
|
|
74
134
|
Abort
|
|
75
135
|
${EndIf}
|
|
76
136
|
|
|
@@ -111,7 +171,8 @@ Section "Install"
|
|
|
111
171
|
nsExec::ExecToLog 'powershell -NoProfile -ExecutionPolicy Bypass -File "$PLUGINSDIR\install-update.ps1" -InstallDir "$INSTDIR" -StagingDir "$INSTDIR\.update-staging"'
|
|
112
172
|
Pop $0
|
|
113
173
|
${If} $0 != 0
|
|
114
|
-
MessageBox MB_ICONSTOP|MB_OK "Trillboards CCTV setup could not be updated safely. Your previous connector was restored. Please retry the installer."
|
|
174
|
+
MessageBox MB_ICONSTOP|MB_OK "Trillboards CCTV setup could not be updated safely. Your previous connector was restored. Please retry the installer." /SD IDOK
|
|
175
|
+
SetErrorLevel 3
|
|
115
176
|
Abort
|
|
116
177
|
${EndIf}
|
|
117
178
|
SetOutPath "$INSTDIR"
|
|
@@ -120,18 +181,49 @@ Section "Install"
|
|
|
120
181
|
; is synchronous and required: pairing is never offered while AI is absent or
|
|
121
182
|
; still downloading in the background.
|
|
122
183
|
${IfNot} ${FileExists} "$ModelSource"
|
|
123
|
-
MessageBox MB_ICONSTOP|MB_OK "The local AI model included with this installer could not be found. Download a fresh Trillboards CCTV installer."
|
|
184
|
+
MessageBox MB_ICONSTOP|MB_OK "The local AI model included with this installer could not be found. Download a fresh Trillboards CCTV installer." /SD IDOK
|
|
185
|
+
SetErrorLevel 2
|
|
124
186
|
Abort
|
|
125
187
|
${EndIf}
|
|
126
188
|
DetailPrint "Installing and verifying private local AI..."
|
|
127
189
|
nsExec::ExecToLog '"$WINDIR\System32\WindowsPowerShell\v1.0\powershell.exe" -NoProfile -ExecutionPolicy Bypass -File "$INSTDIR\bin\setup-litertlm.ps1" -BundledModelPath "$ModelSource" -RequireBundledModel'
|
|
128
190
|
Pop $0
|
|
129
191
|
${If} $0 != 0
|
|
130
|
-
MessageBox MB_ICONSTOP|MB_OK "Private local AI could not be installed. Camera pairing has not started. Download a fresh installer or contact Trillboards support."
|
|
192
|
+
MessageBox MB_ICONSTOP|MB_OK "Private local AI could not be installed. Camera pairing has not started. Download a fresh installer or contact Trillboards support." /SD IDOK
|
|
193
|
+
SetErrorLevel 4
|
|
131
194
|
Abort
|
|
132
195
|
${EndIf}
|
|
133
196
|
DetailPrint "Private local AI is installed and healthy."
|
|
134
197
|
|
|
198
|
+
; -- Unattended provisioning ----------------------------------------------
|
|
199
|
+
; With /ENROLLMENT_TOKEN=, the machine provisions ITSELF here - no code typed
|
|
200
|
+
; at the machine, no browser, no human. enroll-connector.ps1 writes the
|
|
201
|
+
; credential owner-only, exchanges it for this machine's own credential, and
|
|
202
|
+
; deletes it.
|
|
203
|
+
;
|
|
204
|
+
; A failed enrollment does NOT abort the install. The connector is correctly
|
|
205
|
+
; installed either way; what is missing is provisioning, which is retryable
|
|
206
|
+
; (re-run the package, or use the ordinary interactive setup). Aborting would
|
|
207
|
+
; leave the store with nothing and no path forward - strictly worse than an
|
|
208
|
+
; installed-but-unprovisioned connector that a support call can finish.
|
|
209
|
+
${If} $EnrollmentToken != ""
|
|
210
|
+
DetailPrint "Provisioning this connector..."
|
|
211
|
+
nsExec::ExecToLog '"$WINDIR\System32\WindowsPowerShell\v1.0\powershell.exe" -NoProfile -ExecutionPolicy Bypass -File "$INSTDIR\bin\enroll-connector.ps1" -InstallDir "$INSTDIR" -EnrollmentToken "$EnrollmentToken" -SiteLabel "$SiteLabel" -NvrUser "$NvrUser" -NvrPass "$NvrPass"'
|
|
212
|
+
Pop $0
|
|
213
|
+
${If} $0 == 0
|
|
214
|
+
DetailPrint "Connector provisioned and cameras registered."
|
|
215
|
+
${ElseIf} $0 == 5
|
|
216
|
+
DetailPrint "Connector provisioned, but no camera feeds were registered. Supply /NVR_USER= and /NVR_PASS=, or finish in the portal."
|
|
217
|
+
SetErrorLevel 5
|
|
218
|
+
${ElseIf} $0 == 1
|
|
219
|
+
DetailPrint "Enrollment credential was rejected (expired, revoked, or fully used). Issue a new one in the portal."
|
|
220
|
+
SetErrorLevel 5
|
|
221
|
+
${Else}
|
|
222
|
+
DetailPrint "Enrollment could not reach Trillboards; it will be retried. The credential was not used."
|
|
223
|
+
SetErrorLevel 6
|
|
224
|
+
${EndIf}
|
|
225
|
+
${EndIf}
|
|
226
|
+
|
|
135
227
|
; Start Menu shortcuts.
|
|
136
228
|
CreateDirectory "$SMPROGRAMS\Trillboards"
|
|
137
229
|
CreateShortcut "$SMPROGRAMS\Trillboards\Trillboards CCTV Setup.lnk" "$WINDIR\System32\wscript.exe" '$\"$INSTDIR\bin\trillboards-setup.vbs$\"'
|
|
@@ -154,6 +246,10 @@ Section "Uninstall"
|
|
|
154
246
|
nsExec::ExecToLog 'schtasks /Delete /F /TN "${TASK_NAME}"'
|
|
155
247
|
nsExec::ExecToLog 'schtasks /End /TN "${LITERT_TASK_NAME}"'
|
|
156
248
|
nsExec::ExecToLog 'schtasks /Delete /F /TN "${LITERT_TASK_NAME}"'
|
|
249
|
+
; Explicit, ahead of RMDir /r: a fleet enrollment credential must never
|
|
250
|
+
; survive an uninstall, and relying on the recursive delete makes that a
|
|
251
|
+
; property of statement ORDER rather than of intent.
|
|
252
|
+
Delete "$INSTDIR\trillboards.enrollment"
|
|
157
253
|
Delete "$SMPROGRAMS\Trillboards\Pair a camera.lnk"
|
|
158
254
|
Delete "$SMPROGRAMS\Trillboards\Trillboards CCTV Setup.lnk"
|
|
159
255
|
Delete "$SMPROGRAMS\Trillboards\Uninstall Trillboards Edge.lnk"
|
|
@@ -30,6 +30,36 @@ if ((Test-Path $logPath) -and (Get-Item $logPath).Length -ge $maxLogBytes) {
|
|
|
30
30
|
Move-ConnectorLogs
|
|
31
31
|
}
|
|
32
32
|
|
|
33
|
+
# ---------------------------------------------------------------------------
|
|
34
|
+
# Unattended-provisioning retry, at every logon.
|
|
35
|
+
#
|
|
36
|
+
# THE FAILURE THIS EXISTS FOR: enrollment runs once, inside the installer. If the
|
|
37
|
+
# store's link is down at that moment - a DSL blip, a captive portal, a firewall
|
|
38
|
+
# rule not yet pushed - the credential is unspent and the machine is installed
|
|
39
|
+
# but unprovisioned, with nothing scheduled to try again. Across a 200-store push
|
|
40
|
+
# that is a handful of stores permanently dark for a reason nobody can see.
|
|
41
|
+
#
|
|
42
|
+
# The scheduled task already runs this supervisor at every logon, so the retry
|
|
43
|
+
# belongs here rather than in a second task nobody would remember to register.
|
|
44
|
+
#
|
|
45
|
+
# It fires ONLY when the enrollment file still exists, and enroll-connector.ps1
|
|
46
|
+
# leaves it there only for retryable outcomes - a spent or rejected credential is
|
|
47
|
+
# deleted, so this cannot become a loop hammering a dead token.
|
|
48
|
+
$enrollmentFile = Join-Path $InstallDir "trillboards.enrollment"
|
|
49
|
+
$enrollScript = Join-Path $InstallDir "bin\enroll-connector.ps1"
|
|
50
|
+
if ((Test-Path $enrollmentFile) -and (Test-Path $enrollScript)) {
|
|
51
|
+
try {
|
|
52
|
+
$pendingToken = (Get-Content -Raw -Path $enrollmentFile).Trim()
|
|
53
|
+
if ($pendingToken) {
|
|
54
|
+
& $enrollScript -InstallDir $InstallDir -EnrollmentToken $pendingToken | Out-Null
|
|
55
|
+
}
|
|
56
|
+
} catch {
|
|
57
|
+
# Never let a provisioning retry stop the connector from starting: a machine
|
|
58
|
+
# that is already provisioned and simply has a stale file must still sense.
|
|
59
|
+
# The detail lands in enroll.log, which is where a support call looks.
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
|
|
33
63
|
$writer = $null
|
|
34
64
|
$process = $null
|
|
35
65
|
try {
|
|
@@ -288,6 +288,45 @@ if ((Test-ServeHealthy) -and ($installedLitertLmVersion -ne $LitertLmVersion)) {
|
|
|
288
288
|
Log "serve is healthy but litert-lm is $(if ($installedLitertLmVersion) { $installedLitertLmVersion } else { 'unknown' }) not pinned $LitertLmVersion; reinstalling and restarting the serve"
|
|
289
289
|
}
|
|
290
290
|
|
|
291
|
+
# --- Enterprise TLS + proxy for uv -------------------------------------------
|
|
292
|
+
# uv does NOT use Schannel and does NOT auto-discover a Windows proxy. It ships
|
|
293
|
+
# bundled Mozilla roots and reads proxy settings only from environment
|
|
294
|
+
# variables. Behind a TLS-inspecting proxy that made this the step that failed:
|
|
295
|
+
# PowerShell fetched the uv installer fine over Schannel, then `uv tool install`
|
|
296
|
+
# died on the private root, and the installer aborted with "Private local AI
|
|
297
|
+
# could not be installed" -- a message naming the wrong cause.
|
|
298
|
+
#
|
|
299
|
+
# Two env vars, both fail-safe:
|
|
300
|
+
# UV_SYSTEM_CERTS -- current name; use the platform's native certificate store
|
|
301
|
+
# UV_NATIVE_TLS -- the deprecated-but-still-read older name for the same
|
|
302
|
+
# thing, set because `uv tool install` is UNPINNED here and
|
|
303
|
+
# the version that lands is whatever is current that day
|
|
304
|
+
# An unknown environment variable is ignored, so setting both is safe across
|
|
305
|
+
# every uv version; a CLI flag would fail outright on the version that lacks it.
|
|
306
|
+
$env:UV_SYSTEM_CERTS = "1"
|
|
307
|
+
$env:UV_NATIVE_TLS = "1"
|
|
308
|
+
|
|
309
|
+
# The proxy half. WinINET/WinHTTP are invisible to uv, so hand it the resolved
|
|
310
|
+
# proxy explicitly -- but only when the operator has not already set the
|
|
311
|
+
# variables, so an explicit HTTPS_PROXY always wins.
|
|
312
|
+
function Set-UvProxyEnvironment {
|
|
313
|
+
if ($env:HTTPS_PROXY -or $env:https_proxy -or $env:ALL_PROXY) { return }
|
|
314
|
+
try {
|
|
315
|
+
$probe = [Uri]"https://api.trillboards.com"
|
|
316
|
+
$systemProxy = [System.Net.WebRequest]::GetSystemWebProxy()
|
|
317
|
+
if ($null -eq $systemProxy) { return }
|
|
318
|
+
if ($systemProxy.IsBypassed($probe)) { return }
|
|
319
|
+
$resolved = $systemProxy.GetProxy($probe)
|
|
320
|
+
if ($null -eq $resolved -or $resolved.AbsoluteUri -eq $probe.AbsoluteUri) { return }
|
|
321
|
+
$env:HTTPS_PROXY = $resolved.AbsoluteUri.TrimEnd("/")
|
|
322
|
+
$env:HTTP_PROXY = $env:HTTPS_PROXY
|
|
323
|
+
Log ("using this machine's configured proxy for local AI downloads: {0}" -f $env:HTTPS_PROXY)
|
|
324
|
+
} catch {
|
|
325
|
+
Log "WARN: could not read this machine's proxy settings: $_"
|
|
326
|
+
}
|
|
327
|
+
}
|
|
328
|
+
Set-UvProxyEnvironment
|
|
329
|
+
|
|
291
330
|
$env:Path = "$LocalBin;$env:Path"
|
|
292
331
|
if (-not (Get-Command uv -ErrorAction SilentlyContinue)) {
|
|
293
332
|
Log "uv not found; installing the local package runtime (no admin required)"
|
|
@@ -321,7 +360,16 @@ if ((Test-LitertLmCli) -and ($installedLitertLmVersion -eq $LitertLmVersion)) {
|
|
|
321
360
|
$litertlmPath = if ($litertlmCmd) { $litertlmCmd.Source } else { Join-Path $LocalBin "litert-lm.exe" }
|
|
322
361
|
if (-not (Test-LitertLmCli)) {
|
|
323
362
|
Log "litert-lm remains unhealthy after repair"
|
|
324
|
-
|
|
363
|
+
# Name the cause the log can actually distinguish. This step is the one that
|
|
364
|
+
# fails first on a TLS-inspecting network -- everything before it went over
|
|
365
|
+
# Schannel and worked -- so "check the internet connection" sent operators
|
|
366
|
+
# to look at a connection that was fine.
|
|
367
|
+
$tlsHint = ""
|
|
368
|
+
if ((Test-Path -LiteralPath $LogPath) -and
|
|
369
|
+
(Select-String -LiteralPath $LogPath -Pattern "certificate|CERTIFICATE_VERIFY|self.signed|SSL" -Quiet)) {
|
|
370
|
+
$tlsHint = " This machine appears to inspect TLS traffic: ask IT to install the inspection root into the Trusted Root Certification Authorities store, then retry."
|
|
371
|
+
}
|
|
372
|
+
Fail-LocalAi ("The local AI engine could not be installed. Check the internet connection, then retry Local AI." + $tlsHint)
|
|
325
373
|
Stop-SetupLock
|
|
326
374
|
exit 1
|
|
327
375
|
}
|
|
@@ -77,7 +77,24 @@ export interface AudienceAnalyzeResponse {
|
|
|
77
77
|
rawBody: string;
|
|
78
78
|
}
|
|
79
79
|
export type CameraHealthState = 'never_started' | 'starting' | 'open' | 'failed' | 'closed';
|
|
80
|
-
export type CameraHealthFailureClass = 'rtsp_auth' | 'rtsp_unreachable' | 'rtsp_timeout' | 'nvr_busy' | 'no_frames' | 'decode_error'
|
|
80
|
+
export type CameraHealthFailureClass = 'rtsp_auth' | 'rtsp_unreachable' | 'rtsp_timeout' | 'nvr_busy' | 'no_frames' | 'decode_error'
|
|
81
|
+
/**
|
|
82
|
+
* macOS is refusing this process access to the local network, so every LAN
|
|
83
|
+
* camera is unreachable at once.
|
|
84
|
+
*
|
|
85
|
+
* Deliberately NOT `rtsp_unreachable`. At the ffmpeg layer the two are the
|
|
86
|
+
* same string — "no route to host" — but they send the operator to opposite
|
|
87
|
+
* places: `rtsp_unreachable` means go look at the recorder, this means a
|
|
88
|
+
* human has to tick a box in System Settings › Privacy & Security › Local
|
|
89
|
+
* Network. It is only ever set when `probeLocalNetworkAccess()` has
|
|
90
|
+
* affirmatively proved the denial (see `localNetworkAccess.ts`); an
|
|
91
|
+
* ambiguous probe leaves the class as `rtsp_unreachable`, because inventing
|
|
92
|
+
* a permission problem misdirects just as badly as missing one.
|
|
93
|
+
*
|
|
94
|
+
* Like every other class it clears through the ordinary `state: 'open'`
|
|
95
|
+
* report, which carries no `lastFailureClass` and so nulls the column.
|
|
96
|
+
*/
|
|
97
|
+
| 'local_network_denied';
|
|
81
98
|
export type CameraSensingState = 'idle' | 'analyzing' | 'active' | 'waiting_for_capacity' | 'unavailable';
|
|
82
99
|
export interface CameraHealthReport {
|
|
83
100
|
state: CameraHealthState;
|
|
@@ -175,6 +192,20 @@ export declare class AudienceAnalyzeClient {
|
|
|
175
192
|
/**
|
|
176
193
|
* Default transport using Node's built-in http/https. No third-party deps so it
|
|
177
194
|
* survives bundling into a single self-contained binary.
|
|
195
|
+
*
|
|
196
|
+
* This is the SHARED transport for every cloud call the connector makes —
|
|
197
|
+
* `AudienceAnalyzeClient`, `PairClient`, `SetupSessionClient`,
|
|
198
|
+
* `DiscoveryReportClient` and `SensingProfileClient` all default to it — so the
|
|
199
|
+
* enterprise trust store and the machine's proxy are wired in here once and
|
|
200
|
+
* pairing gets them for free. Under TLS inspection pairing failed exactly the
|
|
201
|
+
* same way sensing did.
|
|
202
|
+
*
|
|
203
|
+
* The two changes here, and nothing else:
|
|
204
|
+
* - an agent carrying the platform trust anchors, and a CONNECT tunnel when
|
|
205
|
+
* the machine is configured to use a proxy (`getEnterpriseAgent`);
|
|
206
|
+
* - `req.on('error')` now rejects with a `TransportFailure` that NAMES the
|
|
207
|
+
* cause instead of an OpenSSL constant. Timeouts, retries and the request
|
|
208
|
+
* shape are untouched.
|
|
178
209
|
*/
|
|
179
210
|
export declare const defaultHttpPoster: HttpPoster;
|
|
180
211
|
//# sourceMappingURL=AudienceAnalyzeClient.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AudienceAnalyzeClient.d.ts","sourceRoot":"","sources":["../src/AudienceAnalyzeClient.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"AudienceAnalyzeClient.d.ts","sourceRoot":"","sources":["../src/AudienceAnalyzeClient.ts"],"names":[],"mappings":"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"}
|
|
@@ -38,6 +38,7 @@ const http = __importStar(require("http"));
|
|
|
38
38
|
const https = __importStar(require("https"));
|
|
39
39
|
const url_1 = require("url");
|
|
40
40
|
const crypto_1 = require("crypto");
|
|
41
|
+
const enterpriseNetwork_1 = require("./enterpriseNetwork");
|
|
41
42
|
class AudienceAnalyzeClient {
|
|
42
43
|
constructor(options, poster) {
|
|
43
44
|
if (!options.apiBaseUrl) {
|
|
@@ -235,6 +236,20 @@ function parseAnalyzeResponse(result) {
|
|
|
235
236
|
/**
|
|
236
237
|
* Default transport using Node's built-in http/https. No third-party deps so it
|
|
237
238
|
* survives bundling into a single self-contained binary.
|
|
239
|
+
*
|
|
240
|
+
* This is the SHARED transport for every cloud call the connector makes —
|
|
241
|
+
* `AudienceAnalyzeClient`, `PairClient`, `SetupSessionClient`,
|
|
242
|
+
* `DiscoveryReportClient` and `SensingProfileClient` all default to it — so the
|
|
243
|
+
* enterprise trust store and the machine's proxy are wired in here once and
|
|
244
|
+
* pairing gets them for free. Under TLS inspection pairing failed exactly the
|
|
245
|
+
* same way sensing did.
|
|
246
|
+
*
|
|
247
|
+
* The two changes here, and nothing else:
|
|
248
|
+
* - an agent carrying the platform trust anchors, and a CONNECT tunnel when
|
|
249
|
+
* the machine is configured to use a proxy (`getEnterpriseAgent`);
|
|
250
|
+
* - `req.on('error')` now rejects with a `TransportFailure` that NAMES the
|
|
251
|
+
* cause instead of an OpenSSL constant. Timeouts, retries and the request
|
|
252
|
+
* shape are untouched.
|
|
238
253
|
*/
|
|
239
254
|
const defaultHttpPoster = (url, options, body) => {
|
|
240
255
|
return new Promise((resolve, reject) => {
|
|
@@ -246,16 +261,24 @@ const defaultHttpPoster = (url, options, body) => {
|
|
|
246
261
|
reject(new Error(`Invalid audience-analyze URL: ${err.message}`));
|
|
247
262
|
return;
|
|
248
263
|
}
|
|
249
|
-
const
|
|
264
|
+
const isHttps = parsed.protocol === 'https:';
|
|
265
|
+
const mod = isHttps ? https : http;
|
|
250
266
|
const bodyBuffer = Buffer.from(body, 'utf-8');
|
|
251
|
-
const
|
|
267
|
+
const baseOptions = {
|
|
252
268
|
method: options.method,
|
|
253
269
|
headers: {
|
|
254
270
|
...options.headers,
|
|
255
271
|
'Content-Length': String(bodyBuffer.length),
|
|
256
272
|
},
|
|
257
273
|
timeout: options.timeoutMs,
|
|
258
|
-
|
|
274
|
+
// https tunnels through the agent (CONNECT); plain http is rewritten to
|
|
275
|
+
// absolute-form below, which is how a forward proxy expects it.
|
|
276
|
+
...(isHttps ? { agent: (0, enterpriseNetwork_1.getEnterpriseAgent)() } : {}),
|
|
277
|
+
};
|
|
278
|
+
const proxied = isHttps
|
|
279
|
+
? { options: baseOptions, proxyUrl: null }
|
|
280
|
+
: (0, enterpriseNetwork_1.applyHttpProxy)(url, baseOptions);
|
|
281
|
+
const onResponse = (res) => {
|
|
259
282
|
const chunks = [];
|
|
260
283
|
res.on('data', (chunk) => chunks.push(chunk));
|
|
261
284
|
res.on('end', () => {
|
|
@@ -264,8 +287,14 @@ const defaultHttpPoster = (url, options, body) => {
|
|
|
264
287
|
body: Buffer.concat(chunks).toString('utf-8'),
|
|
265
288
|
});
|
|
266
289
|
});
|
|
267
|
-
}
|
|
268
|
-
|
|
290
|
+
};
|
|
291
|
+
// With a plain-http proxy in play the target moves into `path` as an
|
|
292
|
+
// absolute URL and `host` becomes the proxy, so the URL must NOT also be
|
|
293
|
+
// passed positionally — Node would overwrite both from it.
|
|
294
|
+
const req = proxied.proxyUrl
|
|
295
|
+
? mod.request(proxied.options, onResponse)
|
|
296
|
+
: mod.request(url, baseOptions, onResponse);
|
|
297
|
+
req.on('error', (err) => reject((0, enterpriseNetwork_1.diagnoseTransportError)(err, url)));
|
|
269
298
|
req.on('timeout', () => {
|
|
270
299
|
req.destroy(new Error('audience-analyze request timed out'));
|
|
271
300
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AudienceAnalyzeClient.js","sourceRoot":"","sources":["../src/AudienceAnalyzeClient.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,2CAA6B;AAC7B,6CAA+B;AAC/B,6BAA0B;AAC1B,mCAAoC;
|
|
1
|
+
{"version":3,"file":"AudienceAnalyzeClient.js","sourceRoot":"","sources":["../src/AudienceAnalyzeClient.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,2CAA6B;AAC7B,6CAA+B;AAC/B,6BAA0B;AAC1B,mCAAoC;AAEpC,2DAAiG;AA0JjG,MAAa,qBAAqB;IAUhC,YAAY,OAAqC,EAAE,MAAmB;QACpE,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC;YACxB,MAAM,IAAI,KAAK,CAAC,kDAAkD,CAAC,CAAC;QACtE,CAAC;QACD,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC;YACzB,MAAM,IAAI,KAAK,CAAC,mDAAmD,CAAC,CAAC;QACvE,CAAC;QACD,MAAM,IAAI,GAAG,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;QACpD,IAAI,CAAC,QAAQ,GAAG,GAAG,IAAI,6BAA6B,CAAC;QACrD,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC;QACvC,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;QACjC,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC;QACvC,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,KAAM,CAAC;QAC7C,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC;QACrC,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC;QACvC,IAAI,CAAC,MAAM,GAAG,MAAM,IAAI,yBAAiB,CAAC;IAC5C,CAAC;IAED,gEAAgE;IAChE,WAAW;QACT,OAAO,IAAI,CAAC,QAAQ,CAAC;IACvB,CAAC;IAED;;;;;OAKG;IACK,sBAAsB,CAAC,IAAqB;QAClD,OAAO;YACL,UAAU,EAAE,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,UAAU;YAC9C,WAAW,EAAE,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,WAAW;SAClD,CAAC;IACJ,CAAC;IAEO,WAAW;QACjB,OAAO;YACL,cAAc,EAAE,kBAAkB;YAClC,MAAM,EAAE,kBAAkB;YAC1B,4EAA4E;YAC5E,gBAAgB,EAAE,IAAI,CAAC,WAAW;YAClC,2BAA2B,EAAE,IAAI,CAAC,WAAW;YAC7C,oBAAoB,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;YACxC,gBAAgB,EAAE,IAAA,mBAAU,GAAE;SAC/B,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,OAAO,CAAC,OAA+B;QAC3C,IAAI,CAAC,OAAO,EAAE,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAChD,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC,CAAC;QAChE,CAAC;QAED,MAAM,UAAU,GAAG,OAAO,CAAC,UAAU,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC;QACpD,MAAM,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;QACpD,uEAAuE;QACvE,6EAA6E;QAC7E,qEAAqE;QACrE,MAAM,EAAE,UAAU,EAAE,WAAW,EAAE,GAAG,IAAI,CAAC,sBAAsB,CAAC,OAAO,CAAC,CAAC;QAEzE,MAAM,OAAO,GAA4B;YACvC,WAAW;YACX,UAAU;YACV,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACrD,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC9D,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACrC,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACvC,GAAG,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACpE,wEAAwE;YACxE,yEAAyE;YACzE,yEAAyE;YACzE,uEAAuE;YACvE,uCAAuC;YACvC,GAAG,CAAC,OAAO,CAAC,KAAK,IAAI,EAAE,CAAC;SACzB,CAAC;QAEF,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;QAErC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAC9B,IAAI,CAAC,QAAQ,EACb,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,CAAC,WAAW,EAAE,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,EAC1E,IAAI,CACL,CAAC;QAEF,IAAI,MAAM,GAAmC,IAAI,CAAC;QAClD,IAAI,CAAC;YACH,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAA6B,CAAC,CAAC,CAAC,IAAI,CAAC;QACrF,CAAC;QAAC,MAAM,CAAC;YACP,MAAM,GAAG,IAAI,CAAC;QAChB,CAAC;QAED,OAAO;YACL,UAAU,EAAE,MAAM,CAAC,UAAU;YAC7B,EAAE,EAAE,MAAM,CAAC,UAAU,IAAI,GAAG,IAAI,MAAM,CAAC,UAAU,GAAG,GAAG;YACvD,IAAI,EAAE,MAAM;YACZ,OAAO,EAAE,MAAM,CAAC,IAAI;SACrB,CAAC;IACJ,CAAC;IAED;;;;;;;;;;;;;;;;OAgBG;IACH,KAAK,CAAC,kBAAkB,CACtB,WAAoC,EACpC,UAQI,EAAE;QAEN,IAAI,CAAC,WAAW,IAAI,OAAO,WAAW,KAAK,QAAQ,EAAE,CAAC;YACpD,MAAM,IAAI,KAAK,CAAC,0DAA0D,CAAC,CAAC;QAC9E,CAAC;QAED,MAAM,UAAU,GAAG,OAAO,CAAC,UAAU,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC;QACpD,wEAAwE;QACxE,wEAAwE;QACxE,2EAA2E;QAC3E,+CAA+C;QAC/C,IAAI,WAA+B,CAAC;QACpC,IAAI,OAAO,CAAC,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC5C,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;QAChD,CAAC;aAAM,IAAI,OAAO,OAAO,CAAC,WAAW,KAAK,QAAQ,IAAI,OAAO,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACrF,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC;QACpC,CAAC;QACD,0EAA0E;QAC1E,4EAA4E;QAC5E,yEAAyE;QACzE,6EAA6E;QAC7E,sEAAsE;QACtE,iBAAiB;QACjB,MAAM,EAAE,UAAU,EAAE,WAAW,EAAE,GAAG,IAAI,CAAC,sBAAsB,CAAC,OAAO,CAAC,CAAC;QACzE,MAAM,OAAO,GAA4B;YACvC,WAAW;YACX,UAAU;YACV,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACvC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACrD,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC9D,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACrC,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACvC,GAAG,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACpE,wEAAwE;YACxE,GAAG,CAAC,OAAO,CAAC,KAAK,IAAI,EAAE,CAAC;SACzB,CAAC;QAEF,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAC9B,IAAI,CAAC,QAAQ,EACb,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,CAAC,WAAW,EAAE,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,EAC1E,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CACxB,CAAC;QAEF,IAAI,MAAM,GAAmC,IAAI,CAAC;QAClD,IAAI,CAAC;YACH,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAA6B,CAAC,CAAC,CAAC,IAAI,CAAC;QACrF,CAAC;QAAC,MAAM,CAAC;YACP,MAAM,GAAG,IAAI,CAAC;QAChB,CAAC;QAED,OAAO;YACL,UAAU,EAAE,MAAM,CAAC,UAAU;YAC7B,EAAE,EAAE,MAAM,CAAC,UAAU,IAAI,GAAG,IAAI,MAAM,CAAC,UAAU,GAAG,GAAG;YACvD,IAAI,EAAE,MAAM;YACZ,OAAO,EAAE,MAAM,CAAC,IAAI;SACrB,CAAC;IACJ,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,kBAAkB,CAAC,YAAgC;QACvD,IAAI,CAAC,YAAY,IAAI,OAAO,YAAY,KAAK,QAAQ,EAAE,CAAC;YACtD,MAAM,IAAI,KAAK,CAAC,qDAAqD,CAAC,CAAC;QACzE,CAAC;QAED,MAAM,OAAO,GAA4B;YACvC,YAAY;YACZ,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACrD,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAC/D,CAAC;QAEF,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAC9B,IAAI,CAAC,QAAQ,EACb;YACE,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,IAAI,CAAC,WAAW,EAAE;YAC3B,SAAS,EAAE,IAAI,CAAC,SAAS;SAC1B,EACD,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CACxB,CAAC;QAEF,OAAO,oBAAoB,CAAC,MAAM,CAAC,CAAC;IACtC,CAAC;CACF;AAjOD,sDAiOC;AAED,SAAS,oBAAoB,CAAC,MAA4C;IACxE,IAAI,MAAM,GAAmC,IAAI,CAAC;IAClD,IAAI,CAAC;QACH,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAA6B,CAAC,CAAC,CAAC,IAAI,CAAC;IACrF,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,GAAG,IAAI,CAAC;IAChB,CAAC;IAED,OAAO;QACL,UAAU,EAAE,MAAM,CAAC,UAAU;QAC7B,EAAE,EAAE,MAAM,CAAC,UAAU,IAAI,GAAG,IAAI,MAAM,CAAC,UAAU,GAAG,GAAG;QACvD,IAAI,EAAE,MAAM;QACZ,OAAO,EAAE,MAAM,CAAC,IAAI;KACrB,CAAC;AACJ,CAAC;AAED;;;;;;;;;;;;;;;;;GAiBG;AACI,MAAM,iBAAiB,GAAe,CAAC,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE;IAClE,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,IAAI,MAAW,CAAC;QAChB,IAAI,CAAC;YACH,MAAM,GAAG,IAAI,SAAG,CAAC,GAAG,CAAC,CAAC;QACxB,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,CAAC,IAAI,KAAK,CAAC,iCAAkC,GAAa,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;YAC7E,OAAO;QACT,CAAC;QAED,MAAM,OAAO,GAAG,MAAM,CAAC,QAAQ,KAAK,QAAQ,CAAC;QAC7C,MAAM,GAAG,GAAG,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;QACnC,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QAE9C,MAAM,WAAW,GAAwB;YACvC,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,OAAO,EAAE;gBACP,GAAG,OAAO,CAAC,OAAO;gBAClB,gBAAgB,EAAE,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC;aAC5C;YACD,OAAO,EAAE,OAAO,CAAC,SAAS;YAC1B,wEAAwE;YACxE,gEAAgE;YAChE,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,IAAA,sCAAkB,GAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SACpD,CAAC;QACF,MAAM,OAAO,GAAG,OAAO;YACrB,CAAC,CAAC,EAAE,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,IAAqB,EAAE;YAC3D,CAAC,CAAC,IAAA,kCAAc,EAAC,GAAG,EAAE,WAAW,CAAC,CAAC;QAErC,MAAM,UAAU,GAAG,CAAC,GAAyB,EAAQ,EAAE;YACrD,MAAM,MAAM,GAAa,EAAE,CAAC;YAC5B,GAAG,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAa,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;YACtD,GAAG,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE;gBACjB,OAAO,CAAC;oBACN,UAAU,EAAE,GAAG,CAAC,UAAU,IAAI,CAAC;oBAC/B,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC;iBAC9C,CAAC,CAAC;YACL,CAAC,CAAC,CAAC;QACL,CAAC,CAAC;QAEF,qEAAqE;QACrE,yEAAyE;QACzE,2DAA2D;QAC3D,MAAM,GAAG,GAAG,OAAO,CAAC,QAAQ;YAC1B,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,EAAE,UAAU,CAAC;YAC1C,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,EAAE,WAAW,EAAE,UAAU,CAAC,CAAC;QAE9C,GAAG,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,MAAM,CAAC,IAAA,0CAAsB,EAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;QACnE,GAAG,CAAC,EAAE,CAAC,SAAS,EAAE,GAAG,EAAE;YACrB,GAAG,CAAC,OAAO,CAAC,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAC,CAAC;QAC/D,CAAC,CAAC,CAAC;QAEH,GAAG,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;QACtB,GAAG,CAAC,GAAG,EAAE,CAAC;IACZ,CAAC,CAAC,CAAC;AACL,CAAC,CAAC;AAvDW,QAAA,iBAAiB,qBAuD5B"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { EventEmitter } from 'events';
|
|
2
2
|
import type { CameraProvider } from '@trillboards/edge-core';
|
|
3
3
|
import { AudienceAnalyzeClient, type AudienceAnalyzeResponse, type CameraHealthFailureClass, type CameraHealthReport, type FrameDimensions, type HttpPoster } from './AudienceAnalyzeClient';
|
|
4
|
+
import { type LocalNetworkVerdict } from './localNetworkAccess';
|
|
4
5
|
import { SharedFrameSource } from './MosaicSource';
|
|
5
6
|
import type { EdgeAgentConfig, MosaicTile, RecorderIdentity } from './config';
|
|
6
7
|
import { type VlmAdmissionStats } from './VlmAdmissionGate';
|
|
@@ -157,6 +158,13 @@ export interface CloudSensingManagerOptions {
|
|
|
157
158
|
* camera health. Auth failures still report immediately. Default: 3.
|
|
158
159
|
*/
|
|
159
160
|
cameraHealthFailureGraceCount?: number;
|
|
161
|
+
/**
|
|
162
|
+
* Ask whether macOS is blocking this process from the local network.
|
|
163
|
+
*
|
|
164
|
+
* Injectable so tests can drive the verdict without sockets. Defaults to the
|
|
165
|
+
* real probe, which is a no-op returning `not_applicable` off darwin.
|
|
166
|
+
*/
|
|
167
|
+
localNetworkProbe?: () => Promise<LocalNetworkVerdict>;
|
|
160
168
|
/**
|
|
161
169
|
* Decode-only camera probe cadence while every inference slot is busy.
|
|
162
170
|
* This keeps video liveness independent from AI throughput without opening
|
|
@@ -296,6 +304,18 @@ export declare class CloudSensingManager extends EventEmitter {
|
|
|
296
304
|
private readonly feedStaggerMs;
|
|
297
305
|
private readonly maxFeedStaggerMs;
|
|
298
306
|
private readonly cameraHealthFailureGraceCount;
|
|
307
|
+
private readonly localNetworkProbe;
|
|
308
|
+
/**
|
|
309
|
+
* Last local-network verdict, or null when never probed.
|
|
310
|
+
*
|
|
311
|
+
* MUST be able to return to a non-denied value, or this becomes the tombstone
|
|
312
|
+
* the ember camera-health taxonomy documents — 2,000 devices showing owners a
|
|
313
|
+
* stale reason their camera was "broken". Two independent paths clear it: any
|
|
314
|
+
* successful camera open (proof the LAN works) resets it to `granted`, and
|
|
315
|
+
* every later probe overwrites it outright.
|
|
316
|
+
*/
|
|
317
|
+
private localNetworkVerdict;
|
|
318
|
+
private localNetworkProbeInFlight;
|
|
299
319
|
private readonly cameraHealthProbeIntervalMs;
|
|
300
320
|
private readonly cameraHealthHeartbeatIntervalMs;
|
|
301
321
|
private readonly admissionGate;
|
|
@@ -616,6 +636,16 @@ export declare class CloudSensingManager extends EventEmitter {
|
|
|
616
636
|
private enterReconnect;
|
|
617
637
|
private emitLoopError;
|
|
618
638
|
private reportCameraFailure;
|
|
639
|
+
/**
|
|
640
|
+
* Refresh the cached local-network verdict, at most one probe at a time.
|
|
641
|
+
*
|
|
642
|
+
* Fire-and-forget on purpose: the caller is a synchronous health-report path,
|
|
643
|
+
* and the first failure of an outage should not block on a socket sweep. The
|
|
644
|
+
* verdict lands well inside the reconnect backoff (the blocked path answers in
|
|
645
|
+
* ~1 ms — it never leaves the host), so the report that an operator actually
|
|
646
|
+
* sees carries the right class.
|
|
647
|
+
*/
|
|
648
|
+
private refreshLocalNetworkVerdict;
|
|
619
649
|
private reportCameraHealth;
|
|
620
650
|
/**
|
|
621
651
|
* Report this feed as `open`, carrying the proof we ACTUALLY have.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CloudSensingManager.d.ts","sourceRoot":"","sources":["../src/CloudSensingManager.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"CloudSensingManager.d.ts","sourceRoot":"","sources":["../src/CloudSensingManager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AACtC,OAAO,KAAK,EAAE,cAAc,EAAiB,MAAM,wBAAwB,CAAC;AAC5E,OAAO,EACL,qBAAqB,EACrB,KAAK,uBAAuB,EAC5B,KAAK,wBAAwB,EAC7B,KAAK,kBAAkB,EAEvB,KAAK,eAAe,EACpB,KAAK,UAAU,EAChB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAA2B,KAAK,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AACzF,OAAO,EAAE,iBAAiB,EAAoB,MAAM,gBAAgB,CAAC;AAErE,OAAO,KAAK,EAAoB,eAAe,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAEhG,OAAO,EAEL,KAAK,iBAAiB,EAEvB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAGL,KAAK,iBAAiB,EACtB,KAAK,gBAAgB,EACtB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAGL,KAAK,yBAAyB,EAC9B,KAAK,uBAAuB,EAC7B,MAAM,sBAAsB,CAAC;AAC9B,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACzD,OAAO,KAAK,EAAE,iBAAiB,EAAE,uBAAuB,EAAE,MAAM,qBAAqB,CAAC;AAsLtF,wBAAgB,wBAAwB,CAAC,GAAG,EAAE,OAAO,GAAG,wBAAwB,CAS/E;AAqBD;;;;;GAKG;AACH,MAAM,WAAW,aAAa;IAC5B;;;;;OAKG;IACH,OAAO,CACL,OAAO,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,eAAe,GAChE,OAAO,CAAC,uBAAuB,CAAC,CAAC;IACpC,kBAAkB,CAAC,CAAC,YAAY,EAAE,kBAAkB,GAAG,OAAO,CAAC,uBAAuB,CAAC,CAAC;IACxF,WAAW,IAAI,MAAM,CAAC;IACtB;;;;;OAKG;IACH,kBAAkB,CAAC,IAAI;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC;IAC/D;;;;;;;;;;;;OAYG;IACH,sBAAsB,CAAC,IAAI;QAAE,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC;IACjD;;;;;;;;;;OAUG;IACH,oBAAoB,CAAC,IAAI,uBAAuB,CAAC;CAClD;AAED;;;;;;;;;;GAUG;AACH,MAAM,WAAW,wBAAwB;IACvC;;;OAGG;IACH,KAAK,EAAE,MAAM,CAAC;IACd,kGAAkG;IAClG,MAAM,EAAE,iBAAiB,GAAG,IAAI,CAAC;IACjC;;;OAGG;IACH,QAAQ,EAAE,KAAK,GAAG,KAAK,GAAG,OAAO,GAAG,IAAI,CAAC;IACzC;;;;;;OAMG;IACH,iBAAiB,EAAE,OAAO,CAAC;IAC3B;;;;;;OAMG;IACH,aAAa,EAAE,OAAO,GAAG,IAAI,CAAC;IAC9B,+EAA+E;IAC/E,UAAU,EAAE,OAAO,CAAC;IACpB,8FAA8F;IAC9F,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,mFAAmF;IACnF,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AAED,sEAAsE;AACtE,MAAM,WAAW,eAAe;IAC9B,oEAAoE;IACpE,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,cAAc,CAAC;IACvB,MAAM,EAAE,aAAa,CAAC;CACvB;AAED,MAAM,WAAW,0BAA0B;IACzC,8BAA8B;IAC9B,KAAK,EAAE,eAAe,EAAE,CAAC;IACzB,4DAA4D;IAC5D,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,qEAAqE;IACrE,uBAAuB,CAAC,EAAE,MAAM,CAAC;IACjC,sDAAsD;IACtD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,gFAAgF;IAChF,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,mDAAmD;IACnD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,oDAAoD;IACpD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;;;;OAKG;IACH,uBAAuB,CAAC,EAAE,MAAM,CAAC;IACjC,sEAAsE;IACtE,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B;;;OAGG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,kEAAkE;IAClE,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B;;;OAGG;IACH,6BAA6B,CAAC,EAAE,MAAM,CAAC;IACvC;;;;;OAKG;IACH,iBAAiB,CAAC,EAAE,MAAM,OAAO,CAAC,mBAAmB,CAAC,CAAC;IACvD;;;;OAIG;IACH,2BAA2B,CAAC,EAAE,MAAM,CAAC;IACrC,4EAA4E;IAC5E,+BAA+B,CAAC,EAAE,MAAM,CAAC;IACzC;;;;;;OAMG;IACH,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B;;;;OAIG;IACH,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B;;;;OAIG;IACH,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B;;;;;;OAMG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC,iBAAiB,CAAC,GAAG;QACxC,OAAO,CAAC,EAAE,OAAO,CAAC;QAClB;;;;;;WAMG;QACH,cAAc,CAAC,EAAE,MAAM,CAAC;QACxB;;;;;;WAMG;QACH,iBAAiB,CAAC,EAAE,MAAM,CAAC;KAC5B,CAAC;IACF;;;;;;;;;;;;;;;;;;;OAmBG;IACH,eAAe,CAAC,EAAE,yBAAyB,GAAG;QAC5C,uDAAuD;QACvD,OAAO,CAAC,EAAE,OAAO,CAAC;QAClB;;;;;WAKG;QACH,cAAc,CAAC,EAAE,MAAM,CAAC;KACzB,CAAC;IACF;;;;OAIG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B;;;;;OAKG;IACH,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,0EAA0E;IAC1E,wBAAwB,CAAC,EAAE,MAAM,CAAC;IAClC,qDAAqD;IACrD,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;CACpB;AAED;;;;;;GAMG;AACH,MAAM,WAAW,aAAa;IAC5B,OAAO,IAAI,OAAO,CAAC,eAAe,GAAG,IAAI,CAAC,CAAC;CAC5C;AAiED,qBAAa,mBAAoB,SAAQ,YAAY;IACnD,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAc;IACpC;;;;;;;OAOG;IACH,OAAO,CAAC,kBAAkB,CAAS;IACnC,wEAAwE;IACxE,OAAO,CAAC,OAAO,CAAgC;IAC/C,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAgB;IAC/C,OAAO,CAAC,QAAQ,CAAC,wBAAwB,CAAS;IAClD,OAAO,CAAC,YAAY,CAA+C;IACnE,OAAO,CAAC,QAAQ,CAAC,uBAAuB,CAAS;IACjD,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAS;IACrC,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAU;IAC9C,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAS;IAChC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,uBAAuB,CAAS;IACjD,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAS;IAC7C,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAS;IACvC,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAS;IAC1C,OAAO,CAAC,QAAQ,CAAC,6BAA6B,CAAS;IACvD,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAqC;IACvE;;;;;;;;OAQG;IACH,OAAO,CAAC,mBAAmB,CAAoC;IAC/D,OAAO,CAAC,yBAAyB,CAAS;IAC1C,OAAO,CAAC,QAAQ,CAAC,2BAA2B,CAAS;IACrD,OAAO,CAAC,QAAQ,CAAC,+BAA+B,CAAS;IACzD,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAmB;IACjD,OAAO,CAAC,QAAQ,CAAC,qBAAqB,CAAS;IAC/C;;;OAGG;IACH,OAAO,CAAC,QAAQ,CAAC,UAAU,CAA4B;IACvD,OAAO,CAAC,QAAQ,CAAC,uBAAuB,CAAS;IACjD,OAAO,CAAC,kBAAkB,CAA8C;IACxE,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAU;IAC9C,2EAA2E;IAC3E,OAAO,CAAC,iBAAiB,CAET;IAChB,6EAA6E;IAC7E,OAAO,CAAC,oBAAoB,CAAuB;IACnD,6EAA6E;IAC7E,OAAO,CAAC,qBAAqB,CAAuB;IACpD,OAAO,CAAC,iBAAiB,CAAuC;IAChE,OAAO,CAAC,iBAAiB,CAAS;IAClC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAe;IACnC,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,eAAe,CAAK;IAC5B,OAAO,CAAC,cAAc,CAAuB;IAC7C,wEAAwE;IACxE,OAAO,CAAC,qBAAqB,CAAS;gBAE1B,OAAO,EAAE,0BAA0B;IAmJ/C;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA4BG;IACH,qBAAqB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO;IAoBlD,kDAAkD;IAClD,qBAAqB,IAAI,MAAM;IAI/B;;;;;OAKG;IACG,sBAAsB,IAAI,OAAO,CAAC,eAAe,GAAG,IAAI,CAAC;IAsB/D,uEAAuE;IACvE,YAAY,IAAI,MAAM;IAItB,sEAAsE;IACtE,QAAQ,IAAI,KAAK,CAAC;QAChB,IAAI,EAAE,MAAM,CAAC;QACb,YAAY,EAAE,MAAM,CAAC;QACrB,SAAS,EAAE,MAAM,CAAC;QAClB;sFAC8E;QAC9E,YAAY,EAAE,MAAM,CAAC;QACrB,YAAY,EAAE,OAAO,CAAC;QACtB,iBAAiB,EAAE,MAAM,CAAC;QAC1B,oBAAoB,EAAE,MAAM,CAAC;QAC7B,eAAe,EAAE,MAAM,CAAC;KACzB,CAAC;IAaF,2EAA2E;IAC3E,iBAAiB,IAAI,iBAAiB;IAItC;;;;;;;;OAQG;IACH,gBAAgB,IAAI;QAClB,KAAK,EAAE,MAAM,CAAC;QACd,qBAAqB,EAAE,MAAM,CAAC;QAC9B,QAAQ,EAAE,MAAM,CAAC;QACjB,QAAQ,EAAE,MAAM,CAAC;QACjB,QAAQ,EAAE,MAAM,CAAC;QACjB;;;;;;WAMG;QACH,eAAe,EAAE,MAAM,CAAC;QACxB,iBAAiB,EAAE,MAAM,CAAC;QAC1B,yBAAyB,EAAE,MAAM,GAAG,IAAI,CAAC;QACzC,mFAAmF;QACnF,kBAAkB,EAAE,MAAM,CAAC;QAC3B;;;;;;WAMG;QACH,eAAe,EAAE,eAAe,GAAG,IAAI,CAAC;QACxC,eAAe,EAAE,MAAM,CAAC;QACxB,aAAa,EAAE,MAAM,CAAC;QACtB;;;;;WAKG;QACH,OAAO,EAAE;YACP,OAAO,EAAE,OAAO,CAAC;YACjB,wEAAwE;YACxE,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;YAC9B,mDAAmD;YACnD,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;YAC/B,WAAW,EAAE,MAAM,CAAC;YACpB,8EAA8E;YAC9E,WAAW,EAAE,OAAO,CAAC;YACrB,gEAAgE;YAChE,SAAS,EAAE,MAAM,CAAC;YAClB,QAAQ,EAAE,MAAM,CAAC;YACjB,OAAO,EAAE,MAAM,CAAC;YAChB,QAAQ,EAAE,MAAM,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAC;SAC5C,CAAC;QACF;;;;;;;WAOG;QACH,eAAe,EAAE;YACf,OAAO,EAAE,OAAO,CAAC;YACjB,sBAAsB;YACtB,QAAQ,EAAE,MAAM,CAAC;YACjB,KAAK,EAAE,MAAM,CAAC;YACd,SAAS,EAAE,MAAM,CAAC;YAClB,UAAU,EAAE,MAAM,CAAC;YACnB,QAAQ,EAAE,MAAM,CAAC;YACjB,KAAK,EAAE,MAAM,CAAC;YACd,QAAQ,EAAE,MAAM,CAAC;YACjB,MAAM,EAAE,MAAM,CAAC;YACf,OAAO,EAAE,MAAM,CAAC;YAChB,OAAO,EAAE,MAAM,CAAC;YAChB,8DAA8D;YAC9D,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;YAC3B,OAAO,EAAE,uBAAuB,CAAC,SAAS,CAAC,CAAC;SAC7C,CAAC;QACF;;;;WAIG;QACH,cAAc,EAAE,MAAM,CAAC;QACvB,sBAAsB,EAAE,OAAO,CAAC;QAChC;;;;;;;;;;;WAWG;QACH,WAAW,EAAE,wBAAwB,CAAC;QACtC,OAAO,EAAE,KAAK,CAAC;YACb,IAAI,EAAE,MAAM,CAAC;YACb,QAAQ,EAAE,MAAM,CAAC;YACjB,QAAQ,EAAE,MAAM,CAAC;YACjB,eAAe,EAAE,MAAM,CAAC;YACxB,aAAa,EAAE,MAAM,CAAC;YACtB;;;;;eAKG;YACH,QAAQ,EAAE,MAAM,CAAC;YACjB,yEAAyE;YACzE,qBAAqB,EAAE,MAAM,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAC;YACxD,0EAA0E;YAC1E,kBAAkB,EAAE,MAAM,CAAC;YAC3B,sEAAsE;YACtE,gBAAgB,EAAE,MAAM,CAAC;YACzB,cAAc,EAAE,MAAM,CAAC;YACvB,YAAY,EAAE,OAAO,CAAC;YACtB,iBAAiB,EAAE,MAAM,CAAC;SAC3B,CAAC,CAAC;KACJ;IAiGD,SAAS,IAAI,OAAO;IAIpB,oGAAoG;IAC9F,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAoC5B,wCAAwC;IAClC,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAqC3B;;;OAGG;IACH,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,GAAG,IAAI;IAuB1D;;;;;OAKG;IACH,OAAO,CAAC,kBAAkB;IAU1B;;;;;;;OAOG;IACG,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,uBAAuB,GAAG,IAAI,CAAC;IAQ3E,OAAO,CAAC,cAAc;YAIR,SAAS;YAwET,kBAAkB;IAUhC;;;;;;;;OAQG;IACH,OAAO,CAAC,WAAW;IAKnB;;;;;;;;;;OAUG;IACH,OAAO,CAAC,aAAa;IAOrB,OAAO,CAAC,UAAU;IAKlB;;;;;;;;;;;;;OAaG;IACH,OAAO,CAAC,YAAY;IAUpB;;;;;;;;;;;;;;OAcG;IACH,OAAO,CAAC,YAAY;IAepB;;;;;;;;;;OAUG;YACW,gBAAgB;IA6B9B;;;;;OAKG;YACW,SAAS;IA6BvB;;;;OAIG;IACH,OAAO,CAAC,cAAc;IAWtB,OAAO,CAAC,aAAa;IAKrB,OAAO,CAAC,mBAAmB;IA8B3B;;;;;;;;OAQG;IACH,OAAO,CAAC,0BAA0B;IAiBlC,OAAO,CAAC,kBAAkB;IAY1B;;;;;;;;;;;;;;;OAeG;IACH,OAAO,CAAC,gBAAgB;IA2CxB,OAAO,CAAC,cAAc;IAOtB;;;OAGG;YACW,kBAAkB;IAoBhC;;;;;;;;;;;;OAYG;IACH,OAAO,CAAC,cAAc;IAYtB;;;;;;;OAOG;YACW,aAAa;IAwG3B;;;;;;;OAOG;YACW,aAAa;IA8F3B;;;;;;;;;;;;OAYG;IACH,OAAO,CAAC,cAAc;IAoEtB;;;;;;;;;OASG;IACH,OAAO,CAAC,qBAAqB;IAc7B;;;;;;;;OAQG;IACH,OAAO,CAAC,cAAc;IA0CtB,uEAAuE;YACzD,cAAc;IAqC5B;;;;;;;;;;;;;OAaG;YACW,MAAM;CAiCrB;AA8ID;;;;;;;;;;GAUG;AACH,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,eAAe,EACvB,IAAI,CAAC,EAAE;IACL,mBAAmB,CAAC,EAAE,CAAC,IAAI,EAAE,YAAY,KAAK,cAAc,CAAC;IAC7D,iBAAiB,CAAC,EAAE,CAClB,IAAI,EAAE,YAAY,EAClB,UAAU,EAAE,MAAM,EAClB,KAAK,EAAE,KAAK,KACT,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IAC5B,aAAa,CAAC,EAAE,CAAC,IAAI,EAAE,YAAY,KAAK,qBAAqB,CAAC;IAC9D,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,gFAAgF;IAChF,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B;mFAC+E;IAC/E,aAAa,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC;CAChD,GACA,eAAe,EAAE,CAmEnB;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,YAAY,EAAE,EACrB,WAAW,EAAE,CAAC,IAAI,EAAE,YAAY,KAAK,cAAc,EACnD,IAAI,CAAC,EAAE;IACL,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B;;;;;;OAMG;IACH,aAAa,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC;IAC/C;;;;;OAKG;IACH,gBAAgB,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;CACrC,GACA,KAAK,CAAC;IAAE,IAAI,EAAE,YAAY,CAAC;IAAC,MAAM,EAAE,cAAc,CAAA;CAAE,CAAC,CA+EvD;AAED,kEAAkE;AAClE,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,6EAA6E;IAC7E,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,UAAU,GAAG,YAAY,CAAC;IACvC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,gBAAgB,CAAC;IAC5B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,KAAK,GAAG,KAAK,CAAC;IAC1B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;;;;OAKG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB;;;;OAIG;IACH,YAAY,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;IAChC,qDAAqD;IACrD,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,eAAe,GAAG,YAAY,EAAE,CA4EpE"}
|