@camstack/addon-pipeline 1.2.12 → 1.2.14

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 (31) hide show
  1. package/dist/audio-analyzer/index.js +1 -1
  2. package/dist/audio-analyzer/index.mjs +1 -1
  3. package/dist/detection-pipeline/index.js +2 -2
  4. package/dist/detection-pipeline/index.mjs +2 -2
  5. package/dist/{dist-B89zyHyl.js → dist-DDTAur0R.js} +109 -30
  6. package/dist/{dist-DMiEnBkk.mjs → dist-OjOsoSZG.mjs} +110 -31
  7. package/dist/{fmp4-keyframes-BzTPoPVn.js → fmp4-keyframes-5s8T9Mng.js} +42 -7
  8. package/dist/{fmp4-keyframes-qOgJBjMO.mjs → fmp4-keyframes-CV0X1mGy.mjs} +37 -12
  9. package/dist/motion-wasm/index.js +1 -1
  10. package/dist/motion-wasm/index.mjs +1 -1
  11. package/dist/pipeline-runner/index.js +2 -2
  12. package/dist/pipeline-runner/index.mjs +2 -2
  13. package/dist/recorder/index.js +36 -8
  14. package/dist/recorder/index.mjs +36 -8
  15. package/dist/{step-definitions-NeFJ6mFi.mjs → step-definitions-B9vyUNYR.mjs} +1 -1
  16. package/dist/{step-definitions-DLgHGq8f.js → step-definitions-DGCuoeCj.js} +1 -1
  17. package/dist/stream-broker/_stub.js +2 -2
  18. package/dist/stream-broker/{_virtual_mf-localSharedImportMap___mfe_internal__addon_stream_broker_widgets-CAvWbzaf.mjs → _virtual_mf-localSharedImportMap___mfe_internal__addon_stream_broker_widgets-S2nRs43G.mjs} +2 -2
  19. package/dist/stream-broker/{_virtual_mf___mfe_internal__addon_stream_broker_widgets__loadShare___mf_0_camstack_mf_1_types__loadShare__.js-DbC3MMjB.mjs → _virtual_mf___mfe_internal__addon_stream_broker_widgets__loadShare___mf_0_camstack_mf_1_types__loadShare__.js-BDeEvhV5.mjs} +1 -1
  20. package/dist/stream-broker/{_virtual_mf___mfe_internal__addon_stream_broker_widgets__loadShare___mf_0_camstack_mf_1_ui_mf_2_library__loadShare__.js--zEZtV2N.mjs → _virtual_mf___mfe_internal__addon_stream_broker_widgets__loadShare___mf_0_camstack_mf_1_ui_mf_2_library__loadShare__.js-BGtpZkgz.mjs} +1 -1
  21. package/dist/stream-broker/{hostInit-Do62nL9c.mjs → hostInit-p_rpDGqr.mjs} +2 -2
  22. package/dist/stream-broker/index.js +1186 -337
  23. package/dist/stream-broker/index.mjs +1187 -338
  24. package/dist/stream-broker/remoteEntry.js +1 -1
  25. package/embed-dist/assets/{MaskShapeCanvas-DI4BY7W2-CNyCTsIC.js → MaskShapeCanvas-DI4BY7W2-CaRFwVIZ.js} +1 -1
  26. package/embed-dist/assets/{MotionZonesSettings-NcxxQN8r-DOdX9Yp1.js → MotionZonesSettings-NcxxQN8r-o7HcwAxC.js} +1 -1
  27. package/embed-dist/assets/{PrivacyMaskSettings-APgPLF7p-9huXsgpT.js → PrivacyMaskSettings-APgPLF7p-B2TnFjvh.js} +1 -1
  28. package/embed-dist/assets/index-D4RNu5XI.js +116 -0
  29. package/embed-dist/index.html +1 -1
  30. package/package.json +1 -1
  31. package/embed-dist/assets/index-BxOCtm8E.js +0 -116
@@ -3,10 +3,10 @@ Object.defineProperties(exports, {
3
3
  [Symbol.toStringTag]: { value: "Module" }
4
4
  });
5
5
  const require_chunk = require("../chunk-emK7D4bc.js");
6
- const require_dist = require("../dist-B89zyHyl.js");
6
+ const require_dist = require("../dist-DDTAur0R.js");
7
7
  const require_remote_restream = require("../remote-restream-CO36Sr30.js");
8
8
  const require_model_download_service_Cp9f4dk6 = require("../model-download-service-Cp9f4dk6-fsdDExML.js");
9
- const require_fmp4_keyframes = require("../fmp4-keyframes-BzTPoPVn.js");
9
+ const require_fmp4_keyframes = require("../fmp4-keyframes-5s8T9Mng.js");
10
10
  let node_child_process = require("node:child_process");
11
11
  let node_url = require("node:url");
12
12
  let node_fs = require("node:fs");
@@ -2435,6 +2435,30 @@ function logBannerArgs(level) {
2435
2435
  level
2436
2436
  ];
2437
2437
  }
2438
+ /** PCMU: 8 kHz µ-law, 160 samples (20 ms), static PT 0. */
2439
+ var AUDIO_CLOCK_PCMU = {
2440
+ codec: "pcmu",
2441
+ rateHz: 8e3,
2442
+ frameSamples: 160,
2443
+ payloadType: 0
2444
+ };
2445
+ /** Opus: 48 kHz, 960 samples (20 ms), dynamic PT 111. */
2446
+ var AUDIO_CLOCK_OPUS = {
2447
+ codec: "opus",
2448
+ rateHz: 48e3,
2449
+ frameSamples: 960,
2450
+ payloadType: 111
2451
+ };
2452
+ /**
2453
+ * Select the audio clock for a negotiated sender mime type
2454
+ * (`audio/opus`, `audio/PCMU`, …). Anything not recognised as Opus falls back
2455
+ * to PCMU — the always-offered baseline codec — so an unexpected/absent mime
2456
+ * can never silently pick the wrong (48 kHz) clock for an 8 kHz track.
2457
+ */
2458
+ function selectAudioClock(mimeType) {
2459
+ if (mimeType && /opus/i.test(mimeType)) return AUDIO_CLOCK_OPUS;
2460
+ return AUDIO_CLOCK_PCMU;
2461
+ }
2438
2462
  //#endregion
2439
2463
  //#region src/stream-broker/webrtc/session.ts
2440
2464
  var _werift;
@@ -2873,6 +2897,8 @@ var AdaptiveSession = class AdaptiveSession {
2873
2897
  */
2874
2898
  recordedAudioRebasePending = false;
2875
2899
  recordedAudioTsOffset = 0;
2900
+ negotiatedAudioClock = null;
2901
+ opusSilenceFrame = null;
2876
2902
  /** Client-created control data channel (recorded-playback protocol). */
2877
2903
  controlChannel = null;
2878
2904
  onControlMessageCb = null;
@@ -3231,6 +3257,12 @@ var AdaptiveSession = class AdaptiveSession {
3231
3257
  codecs: {
3232
3258
  video: this.sourceCodec === "H265" ? [h265Codec, h264Codec] : [h264Codec],
3233
3259
  audio: [new werift.RTCRtpCodecParameters({
3260
+ mimeType: "audio/opus",
3261
+ clockRate: 48e3,
3262
+ payloadType: 111,
3263
+ channels: 2,
3264
+ parameters: "minptime=10;useinbandfec=1"
3265
+ }), new werift.RTCRtpCodecParameters({
3234
3266
  mimeType: "audio/PCMU",
3235
3267
  clockRate: 8e3,
3236
3268
  payloadType: 0,
@@ -4208,7 +4240,7 @@ var AdaptiveSession = class AdaptiveSession {
4208
4240
  } else if (mediaFrame.type === "audio") {
4209
4241
  const frame = mediaFrame.frame;
4210
4242
  if (!this.audioSender) continue;
4211
- const rtpTs = Math.floor(frame.timestampMicros * AdaptiveSession.PCMU_RTP_CLOCK_HZ / 1e6) >>> 0;
4243
+ const rtpTs = Math.floor(frame.timestampMicros * this.audioClock().rateHz / 1e6) >>> 0;
4212
4244
  this.recordAudioSourceLatency(frame.timestampMicros);
4213
4245
  this.writeAudio(frame.data, rtpTs, frame.codec);
4214
4246
  }
@@ -4327,7 +4359,7 @@ var AdaptiveSession = class AdaptiveSession {
4327
4359
  if (signal.aborted || this.closed) break;
4328
4360
  if (mediaFrame.type === "audio") {
4329
4361
  const frame = mediaFrame.frame;
4330
- const rtpTs = Math.floor(frame.timestampMicros * AdaptiveSession.PCMU_RTP_CLOCK_HZ / 1e6) >>> 0;
4362
+ const rtpTs = Math.floor(frame.timestampMicros * this.audioClock().rateHz / 1e6) >>> 0;
4331
4363
  this.recordAudioSourceLatency(frame.timestampMicros);
4332
4364
  this.writeAudio(frame.data, rtpTs, frame.codec);
4333
4365
  }
@@ -4483,6 +4515,41 @@ var AdaptiveSession = class AdaptiveSession {
4483
4515
  }
4484
4516
  }
4485
4517
  /**
4518
+ * Send one recorded Opus (48 kHz) audio frame on the shared audio sender.
4519
+ * The Opus sibling of `writeRecordedAudio` — active ONLY while the live feed
4520
+ * is gated and the session negotiated Opus. Stored Opus AUs (post-A1 fMP4
4521
+ * fragments) are forwarded with NO transcode. Timestamp is software-rebased
4522
+ * to continue monotonically from the last sent audio packet across the
4523
+ * live→recorded switch, at the 48 kHz Opus clock (one 20 ms frame = 960
4524
+ * samples).
4525
+ */
4526
+ writeRecordedAudioOpus(opus, rtpTs48k) {
4527
+ if (!this.audioSender || !_werift) return;
4528
+ if (!this.liveFeedGated) return;
4529
+ const werift = _werift;
4530
+ if (this.recordedAudioRebasePending) {
4531
+ this.recordedAudioRebasePending = false;
4532
+ this.recordedAudioTsOffset = (this.lastAudioRtpTs ?? 0) + AUDIO_CLOCK_OPUS.frameSamples - rtpTs48k | 0;
4533
+ }
4534
+ const outTs = rtpTs48k + this.recordedAudioTsOffset >>> 0;
4535
+ const pt = this.audioSender.codec?.payloadType ?? AUDIO_CLOCK_OPUS.payloadType;
4536
+ try {
4537
+ const header = new werift.RtpHeader();
4538
+ header.payloadType = pt;
4539
+ header.timestamp = outTs;
4540
+ header.marker = true;
4541
+ header.sequenceNumber = this.audioSeqNum = this.audioSeqNum + 1 & 65535;
4542
+ this.audioSender.sendRtp(new werift.RtpPacket(header, opus));
4543
+ this.lastAudioRtpTs = outTs;
4544
+ } catch (err) {
4545
+ this.logger.debug("recorded opus audio write error", { meta: {
4546
+ phase: "session",
4547
+ sessionId: this.sessionId,
4548
+ error: require_dist.errMsg(err)
4549
+ } });
4550
+ }
4551
+ }
4552
+ /**
4486
4553
  * On a source switch, remap werift's sender offsets so the new source's first
4487
4554
  * packet (seq/ts) continues seamlessly from the last sent packet. One-shot per
4488
4555
  * switch (cleared after firing). No-op until a packet has actually been sent
@@ -4694,6 +4761,32 @@ var AdaptiveSession = class AdaptiveSession {
4694
4761
  }
4695
4762
  }
4696
4763
  }
4764
+ /**
4765
+ * The negotiated audio RTP clock (PCMU 8 kHz or Opus 48 kHz), resolved once
4766
+ * from the werift sender's bound codec and cached. Returns the PCMU baseline
4767
+ * (uncached) until the sender codec is bound, so an early call can't lock in
4768
+ * the wrong clock.
4769
+ */
4770
+ audioClock() {
4771
+ if (this.negotiatedAudioClock) return this.negotiatedAudioClock;
4772
+ const mime = this.audioSender?.codec?.mimeType;
4773
+ if (!mime) return AUDIO_CLOCK_PCMU;
4774
+ const clock = selectAudioClock(mime);
4775
+ this.negotiatedAudioClock = clock;
4776
+ return clock;
4777
+ }
4778
+ /** True once the session has negotiated the Opus audio codec. */
4779
+ get isOpusAudio() {
4780
+ return this.audioClock().codec === "opus";
4781
+ }
4782
+ /**
4783
+ * Inject the canonical 20 ms Opus silence packet used for prestream A/V-sync
4784
+ * padding. Broker-provided (encoded via the audio-codec cap) because Opus has
4785
+ * no fixed silence byte the way PCMU does (0xFF).
4786
+ */
4787
+ setOpusSilenceFrame(frame) {
4788
+ this.opusSilenceFrame = frame;
4789
+ }
4697
4790
  writeAudio(data, rtpTs, codec) {
4698
4791
  if (!this.audioSender || !_werift) return;
4699
4792
  if (this.liveFeedGated) return;
@@ -4746,17 +4839,19 @@ var AdaptiveSession = class AdaptiveSession {
4746
4839
  if (!this.audioSender || !_werift) return;
4747
4840
  const werift = _werift;
4748
4841
  const nowMs = Date.now();
4842
+ const clock = this.audioClock();
4843
+ const silencePayload = clock.codec === "opus" ? this.opusSilenceFrame : Buffer.alloc(AdaptiveSession.PCMU_FRAME_SAMPLES, AdaptiveSession.PCMU_SILENCE_BYTE);
4844
+ if (!silencePayload) return;
4749
4845
  const plan = planAudioSilencePadPackets({
4750
4846
  nowMs,
4751
4847
  firstVideoSendWallMs: this.firstVideoSendWallMs,
4752
- framesizeSamples: AdaptiveSession.PCMU_FRAME_SAMPLES,
4753
- rateHz: AdaptiveSession.PCMU_RTP_CLOCK_HZ,
4848
+ framesizeSamples: clock.frameSamples,
4849
+ rateHz: clock.rateHz,
4754
4850
  maxPadMs: AdaptiveSession.AUDIO_SILENCE_MAX_PAD_MS,
4755
4851
  realRtpTs,
4756
4852
  audioSeqNum: this.audioSeqNum
4757
4853
  });
4758
4854
  if (plan.packets.length === 0) return;
4759
- const silencePayload = Buffer.alloc(AdaptiveSession.PCMU_FRAME_SAMPLES, AdaptiveSession.PCMU_SILENCE_BYTE);
4760
4855
  for (let i = 0; i < plan.packets.length; i++) {
4761
4856
  const planned = plan.packets[i];
4762
4857
  try {
@@ -4791,7 +4886,7 @@ var AdaptiveSession = class AdaptiveSession {
4791
4886
  gapMs: this.firstVideoSendWallMs === null ? null : nowMs - this.firstVideoSendWallMs,
4792
4887
  firstSilenceRtpTs: plan.packets[0]?.rtpTs ?? null,
4793
4888
  realRtpTs,
4794
- frameSize: AdaptiveSession.PCMU_FRAME_SAMPLES
4889
+ frameSize: clock.frameSamples
4795
4890
  } });
4796
4891
  }
4797
4892
  startStatsCollection() {
@@ -4838,10 +4933,9 @@ var AdaptiveSession = class AdaptiveSession {
4838
4933
  });
4839
4934
  this.emitAvSyncDiag();
4840
4935
  }
4841
- /** Negotiated audio RTP clock rate in Hz (PCMU is always 8 kHz here; falls
4842
- * back to the sender's clockRate if werift reports one). Video is 90 kHz. */
4936
+ /** Video RTP clock rate in Hz (audio rate now comes from `audioClock()`,
4937
+ * which follows the negotiated codec PCMU 8 kHz / Opus 48 kHz). */
4843
4938
  static VIDEO_RTP_CLOCK_HZ = 9e4;
4844
- static PCMU_RTP_CLOCK_HZ = 8e3;
4845
4939
  /**
4846
4940
  * Emit the periodic "av-sync diag" log (debug only, ~every 3s) to gather the
4847
4941
  * evidence for the steady "audio plays ~0.5s behind video" lag — WITHOUT
@@ -4857,7 +4951,7 @@ var AdaptiveSession = class AdaptiveSession {
4857
4951
  emitAvSyncDiag() {
4858
4952
  if (!this.debug) return;
4859
4953
  const elapsedMs = Date.now() - this.createdAt;
4860
- const audioRate = AdaptiveSession.PCMU_RTP_CLOCK_HZ;
4954
+ const audioRate = this.audioClock().rateHz;
4861
4955
  const skew = computeAvSyncSkew({
4862
4956
  video: this.lastVideoRtpTs === null || this.firstVideoRtpTs === null ? null : {
4863
4957
  rtpTs: this.lastVideoRtpTs - this.firstVideoRtpTs >>> 0,
@@ -5825,6 +5919,21 @@ function appendAudioMediaBlock(videoSdp, audioBlock) {
5825
5919
  */
5826
5920
  var LIVE_EDGE_MAX_SPAN_MS = 500;
5827
5921
  /**
5922
+ * Defensive hard bound on the per-keyframe RTP/NAL cache (both the passthrough
5923
+ * `lastKeyframeRtpPackets` and the Annex-B `lastKeyframeNals`). A single
5924
+ * keyframe GOP is at most a few large NALs — well under a megabyte or two even
5925
+ * for 4K/8MP IDRs. Anything past this cap means the collection latch never
5926
+ * closed (an all-intra stream, or a stall right after an IDR before the first
5927
+ * P-frame), so the cache would otherwise grow without bound. That is the exact
5928
+ * structure that reached ~1.5 GB and OOM-killed the hub stream-broker runner
5929
+ * (heap snapshot: 1567 MB retained by `RtspRestreamer.lastKeyframeRtpPackets`).
5930
+ * On overflow we drop the partial cache and stop collecting until the next
5931
+ * clean GOP boundary; the live edge is unaffected — only the late-joiner
5932
+ * keyframe burst is skipped meanwhile.
5933
+ */
5934
+ var MAX_KEYFRAME_CACHE_BYTES = 16 * 1024 * 1024;
5935
+ var CACHE_CAP_WARN_INTERVAL_MS = 3e4;
5936
+ /**
5828
5937
  * Per-broker RTSP restreamer.
5829
5938
  *
5830
5939
  * Operates in two modes:
@@ -5857,6 +5966,7 @@ var RtspRestreamer = class {
5857
5966
  egressAudioBlock = null;
5858
5967
  /** Cached last keyframe NALs (SPS/PPS + IDR) for late-joining clients. */
5859
5968
  lastKeyframeNals = [];
5969
+ lastKeyframeNalBytes = 0;
5860
5970
  lastKeyframeTimestamp = 0;
5861
5971
  /** True if we're currently accumulating a keyframe's NALs. */
5862
5972
  collectingKeyframe = false;
@@ -5864,6 +5974,9 @@ var RtspRestreamer = class {
5864
5974
  currentTimestamp = 0;
5865
5975
  /** RTP passthrough: cached last keyframe RTP packets for late-joining clients. */
5866
5976
  lastKeyframeRtpPackets = [];
5977
+ lastKeyframeRtpBytes = 0;
5978
+ /** Throttle for the defensive keyframe-cache overflow warning. */
5979
+ cacheCapWarnMs = 0;
5867
5980
  /** True when in RTP passthrough mode (setCameraSdp was called). */
5868
5981
  _rtpPassthroughMode = false;
5869
5982
  /** Accumulating keyframe RTP packets in passthrough mode. */
@@ -5904,6 +6017,7 @@ var RtspRestreamer = class {
5904
6017
  */
5905
6018
  resetStreamState() {
5906
6019
  this.lastKeyframeNals = [];
6020
+ this.lastKeyframeNalBytes = 0;
5907
6021
  this.lastKeyframeTimestamp = 0;
5908
6022
  this.collectingKeyframe = false;
5909
6023
  this.currentTimestamp = 0;
@@ -5914,11 +6028,29 @@ var RtspRestreamer = class {
5914
6028
  this.deframer = null;
5915
6029
  this.detectedCodec = null;
5916
6030
  this.lastKeyframeRtpPackets = [];
6031
+ this.lastKeyframeRtpBytes = 0;
5917
6032
  this._rtpPassthroughMode = false;
5918
6033
  this.collectingKeyframeRtp = false;
5919
6034
  this.egressAudioBlock = null;
5920
6035
  }
5921
6036
  /**
6037
+ * Enforce the defensive per-keyframe cache byte cap. Returns true when the
6038
+ * cap was exceeded (caller must have already reset the cache + collecting
6039
+ * flag). Warns at most once per {@link CACHE_CAP_WARN_INTERVAL_MS}.
6040
+ */
6041
+ warnCacheCapExceeded(kind, bytes, packets) {
6042
+ const now = Date.now();
6043
+ if (now - this.cacheCapWarnMs < CACHE_CAP_WARN_INTERVAL_MS) return;
6044
+ this.cacheCapWarnMs = now;
6045
+ this.logger?.warn("keyframe cache exceeded defensive cap — dropping partial GOP", { meta: {
6046
+ streamName: this.streamName,
6047
+ kind,
6048
+ bytes,
6049
+ packets,
6050
+ capBytes: MAX_KEYFRAME_CACHE_BYTES
6051
+ } });
6052
+ }
6053
+ /**
5922
6054
  * Graft (or clear) a transcode-egress audio track onto the push-mode SDP.
5923
6055
  * Safe to call before or after the video codec params are detected — the SDP
5924
6056
  * is recomposed whenever both are available.
@@ -5999,7 +6131,6 @@ var RtspRestreamer = class {
5999
6131
  * @param isParameterSet True if this packet contains SPS/PPS/VPS
6000
6132
  */
6001
6133
  pushRtpPassthrough(rtpData, isKeyframe, isParameterSet) {
6002
- if (this.sessions.size === 0 && !isKeyframe && !isParameterSet) return;
6003
6134
  const rtpPacket = {
6004
6135
  data: rtpData,
6005
6136
  marker: (rtpData[1] & 128) !== 0
@@ -6009,6 +6140,7 @@ var RtspRestreamer = class {
6009
6140
  if (!this.collectingKeyframeRtp) {
6010
6141
  this.collectingKeyframeRtp = true;
6011
6142
  this.lastKeyframeRtpPackets = [];
6143
+ this.lastKeyframeRtpBytes = 0;
6012
6144
  }
6013
6145
  }
6014
6146
  if (this.collectingKeyframeRtp) {
@@ -6016,7 +6148,14 @@ var RtspRestreamer = class {
6016
6148
  data: Buffer.from(rtpData),
6017
6149
  marker: rtpPacket.marker
6018
6150
  });
6151
+ this.lastKeyframeRtpBytes += rtpData.length;
6019
6152
  if (!isKeyframe && !isParameterSet) this.collectingKeyframeRtp = false;
6153
+ else if (this.lastKeyframeRtpBytes > MAX_KEYFRAME_CACHE_BYTES) {
6154
+ this.warnCacheCapExceeded("rtp", this.lastKeyframeRtpBytes, this.lastKeyframeRtpPackets.length);
6155
+ this.lastKeyframeRtpPackets = [];
6156
+ this.lastKeyframeRtpBytes = 0;
6157
+ this.collectingKeyframeRtp = false;
6158
+ }
6020
6159
  }
6021
6160
  if (this.sessions.size === 0) return;
6022
6161
  this.servePendingSessionsRtp();
@@ -6129,12 +6268,20 @@ var RtspRestreamer = class {
6129
6268
  if (!this.collectingKeyframe) {
6130
6269
  this.collectingKeyframe = true;
6131
6270
  this.lastKeyframeNals = [];
6271
+ this.lastKeyframeNalBytes = 0;
6132
6272
  this.lastKeyframeTimestamp = this.currentTimestamp;
6133
6273
  }
6134
6274
  }
6135
6275
  if (this.collectingKeyframe) {
6136
6276
  this.lastKeyframeNals.push(Buffer.from(nal));
6277
+ this.lastKeyframeNalBytes += nal.length;
6137
6278
  if (!isKeyframe && !this.isParameterSetNal(nal)) this.collectingKeyframe = false;
6279
+ else if (this.lastKeyframeNalBytes > MAX_KEYFRAME_CACHE_BYTES) {
6280
+ this.warnCacheCapExceeded("nal", this.lastKeyframeNalBytes, this.lastKeyframeNals.length);
6281
+ this.lastKeyframeNals = [];
6282
+ this.lastKeyframeNalBytes = 0;
6283
+ this.collectingKeyframe = false;
6284
+ }
6138
6285
  }
6139
6286
  if (this.sessions.size === 0) return;
6140
6287
  if (!this.packetizer) return;
@@ -8893,13 +9040,13 @@ var AudioChunkPlane = class {
8893
9040
  };
8894
9041
  //#endregion
8895
9042
  //#region src/stream-broker/stream-broker/audio-codec-session.ts
8896
- var POLL_INTERVAL_MS = 40;
9043
+ var POLL_INTERVAL_MS$1 = 40;
8897
9044
  var MAX_PCM_PER_POLL = 16;
8898
9045
  var RTP_HEADER_LENGTH = 12;
8899
- var WARN_THROTTLE_MS = 5e3;
8900
- var SESSION_NOT_FOUND_RE = /decode session\b.*\bnot found\b/;
8901
- function isSessionGone(err) {
8902
- return SESSION_NOT_FOUND_RE.test(require_dist.errMsg(err));
9046
+ var WARN_THROTTLE_MS$1 = 5e3;
9047
+ var SESSION_NOT_FOUND_RE$1 = /decode session\b.*\bnot found\b/;
9048
+ function isSessionGone$1(err) {
9049
+ return SESSION_NOT_FOUND_RE$1.test(require_dist.errMsg(err));
8903
9050
  }
8904
9051
  var AudioCodecSession = class {
8905
9052
  api;
@@ -9078,7 +9225,7 @@ var AudioCodecSession = class {
9078
9225
  if (this.pollTimer || this.closed) return;
9079
9226
  this.pollTimer = setInterval(() => {
9080
9227
  this.pollOnce();
9081
- }, POLL_INTERVAL_MS);
9228
+ }, POLL_INTERVAL_MS$1);
9082
9229
  if (typeof this.pollTimer.unref === "function") this.pollTimer.unref();
9083
9230
  }
9084
9231
  async pollOnce() {
@@ -9093,7 +9240,7 @@ var AudioCodecSession = class {
9093
9240
  });
9094
9241
  for (const pcm of pcms) this.appendPcm(pcm);
9095
9242
  } catch (err) {
9096
- if (isSessionGone(err)) {
9243
+ if (isSessionGone$1(err)) {
9097
9244
  this.handleSessionGone(sid);
9098
9245
  return;
9099
9246
  }
@@ -9139,7 +9286,7 @@ var AudioCodecSession = class {
9139
9286
  this.warnThrottled("audio-codec: session reaped upstream — will re-create on next packet", `staleSessionId=${staleSid}`);
9140
9287
  }
9141
9288
  handlePushError(label, sid, err) {
9142
- if (isSessionGone(err)) {
9289
+ if (isSessionGone$1(err)) {
9143
9290
  this.handleSessionGone(sid);
9144
9291
  return;
9145
9292
  }
@@ -9155,7 +9302,7 @@ var AudioCodecSession = class {
9155
9302
  const key = `${label}|${detail}`;
9156
9303
  const now = Date.now();
9157
9304
  const prev = this.warnState.get(key);
9158
- if (prev && now - prev.lastLoggedAt < WARN_THROTTLE_MS) {
9305
+ if (prev && now - prev.lastLoggedAt < WARN_THROTTLE_MS$1) {
9159
9306
  prev.suppressed++;
9160
9307
  return;
9161
9308
  }
@@ -10145,6 +10292,41 @@ function pcmToMulaw(pcm) {
10145
10292
  for (let i = 0; i < pcm.length; i++) result[i] = linearToMulaw(pcm[i]);
10146
10293
  return result;
10147
10294
  }
10295
+ /** Decode a single µ-law byte back to a 16-bit signed PCM sample (ITU-T G.711). */
10296
+ function mulawToLinear(uVal) {
10297
+ const u = ~uVal & 255;
10298
+ let t = ((u & 15) << 3) + MULAW_BIAS;
10299
+ t <<= (u & 112) >> 4;
10300
+ return (u & 128) !== 0 ? MULAW_BIAS - t : t - MULAW_BIAS;
10301
+ }
10302
+ /**
10303
+ * Decode µ-law bytes to 16-bit signed PCM. The inverse of {@link pcmToMulaw};
10304
+ * used by the WebRTC Opus egress to turn the broker's native/companded G.711
10305
+ * audio back into PCM for the Opus encoder (source→PCM→Opus).
10306
+ */
10307
+ function mulawToPcm(ulaw) {
10308
+ const out = new Int16Array(ulaw.length);
10309
+ for (let i = 0; i < ulaw.length; i++) out[i] = mulawToLinear(ulaw[i]);
10310
+ return out;
10311
+ }
10312
+ function alawToLinear(aVal) {
10313
+ let a = aVal ^ 85;
10314
+ let t = (a & 15) << 4;
10315
+ const seg = (a & 112) >> 4;
10316
+ if (seg === 0) t += 8;
10317
+ else if (seg === 1) t += 264;
10318
+ else {
10319
+ t += 264;
10320
+ t <<= seg - 1;
10321
+ }
10322
+ return (a & 128) !== 0 ? t : -t;
10323
+ }
10324
+ /** Decode A-law (PCMA) bytes to 16-bit signed PCM. */
10325
+ function alawToPcm(alaw) {
10326
+ const out = new Int16Array(alaw.length);
10327
+ for (let i = 0; i < alaw.length; i++) out[i] = alawToLinear(alaw[i]);
10328
+ return out;
10329
+ }
10148
10330
  /**
10149
10331
  * Downsample µ-law by picking every Nth sample. Used when source
10150
10332
  * sample rate exceeds 8kHz (e.g. AAC at 16kHz → G.711 at 8kHz).
@@ -10157,138 +10339,429 @@ function downsampleUlaw(data, ratio) {
10157
10339
  return result;
10158
10340
  }
10159
10341
  //#endregion
10160
- //#region src/stream-broker/stream-broker/placeholder-frames.ts
10161
- var FRAME_B64 = {
10162
- h264: {
10163
- reconnecting: "AAAAAWdCwB/aAUAW7ARAAAADAEAAAAMAg8YMqAAAAAFozg/IAAABZYiEOiYoAAjgycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJyddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddcdgARwAaAfgvaKICMwoLAOgADxEIjArGFj0HzJsgAA2AHATLIAAMgBQE3ACIwbKGUWeUI9Xg4ABsAOAmWHAANgBwEyywADYAAgMGRwADYAAgMGQ4ABkAKAm4QAAYAHAq4HAAMgBQE3A4ABgAcCrn4/ABwjgGMCXnxbX/yxvWnTbBwke+QAqCJtK/C/ANHYwBiaibAhFAwNAYBETMKEp/DdMAAVluoAAgKyf8BWwZFmQC+raGBG1IAwEgPQdQ7AEAYHCVS5MuqyLBIm21NwPwEdMjMJ8h2KQPTQfEi5poyZEw/1NvqAA8ZCKyiNLHIZ6XyAADIAQDbgYAro/YCAZstAw/vNEAqAAIBiyrw4ABkAIBtzDgAGQAgG3B/4BjvB/2xbteXFxm4BcTAgkL5YdfLwCIgyByUFDRzz1eDr5YdfLLAANgACAwZHAANgACAwZyAACgAgCrmHAAKACAKufvZY7AA7AACAQAQPJEWx8kFDGRyZ/eABHf9E/EeMqpJFVe/gAeJVOoQrZdIPEev4AH8J5YVwwpkr3+37/+/wGgClGk1MvAN9VJ6BIUWVMODsABAPgACACEiJKqGeGhQqwRGuD0AAYoXqu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RLHYAEH1zdzf/gBMRiKyHMpRkqWH47AARBqhDjKTaFvcon/4AD5EY1QhM4voRkAAGgA4CJYAQtDIw6J8ppDx2AAiMyIBjO3ee9zH/+GBI/NvyAADQAcBEsADBYIweqs4k4sfgAIADAgkqwysyUKlCrRIqQ/wACEUSqy5aKeEb/0JWYE4gmijPjBpr7TQ78AAkQAAQEhUmDIwVtWD8meJumEurCowj2gJxHrWF5hvElDlMS7OasJqgA2Y5AHeoAAgKVzv/oNWfEBRXSABffbEAAE1AAEBS4wAAQAAEA24AE0TAihBEW1YKjTLkAAGgA4HS8fgAIGHBQoVzpjA7v1bsT4PxEgrgFIFpyZIAPcgPZk4xdCozhgB6De+qQEPg0EOzwYwJxxFVGfMGQfJFhwG0eU+Q8DSdo86EALwQR/bIyIDJXBFlFl4E3kNhenCVOaDsBQAIBAkmNOyGGSSVsAjkDV3wI6MjMEXMOhrAxpjMxp4ijbpzzSk+A87YQeoiABfu/sQpLw2zMgCE+/pUAntEGlsl0IgB+UAQBdCsHAQuUFDsqfjw6ZYdNVslPB2AAgYAfhIwvZMuvFIEKDvPyBwAKeiEp3qDIWsbh9ENEH5R+FmHPA0cqMNUxNgC/mp4bj7pbSXp9DEAiQUaWx2rYrlD3E2AIS++5yZmgmAw7d8BLALbDw8skKUFK/v1qEQbDgUp5QNIQAAbACAfcXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXeG+/367w3+/33+/37777799d99/v994b77799/v9dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddeA=",
10164
- sleeping: "AAAAAWdCwB/aAUAW7ARAAAADAEAAAAMAg8YMqAAAAAFozg/IAAABZYiEOiYoAAjgycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJyddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddcdgAIBgAEPwDIl6AJKw3fccBLCZwAHKurzmDTjrCx0AC1cGKrrkpgC3X4FFZAP0Uaf7/6gZgeKmof6pKQDFucb/wYp75WNKMZMNLhTAUAVnFsltEAGDB64A7LxPeqngCF4/AEAgcCPCbK0wt32oU2+7FSzAg1zwoGYY6J5NiACWYMvJ4xAAWoI254HCYUE/1doEB1DA/VNnAlhlGCkobZhpf/euUyMgit1MDgPz//6ewJdgXXJoQEX0DzktM5h4U0h2AkYAK8DY5OrsAFl7Vq4BIA2V6cjTQdhKNqXYkqw0Ut8ACnIZCjJ8wppIEyAEBACbgYAH5v2DCCkY/LAsAA2AAIDBmjkDKJTBzRBfXvDgICAE3PDgICAE3B34bu7nOdwABBIAAEAze9gASAiIAANgBwEywAnMzGqlKMc30jsgAAoAwIuB/hwACgDAi5hwACgDAi5+uOwAGBRTAPA9QGwrbYCgnAuAAUaIZHGW0Qlv50gAA2AHATLIAAIgGAbcw4ABsAOAmWHAANgBwEywCIgbApKijwCmPV4sAA2AAIDBkOAARAMA25hwACIBgG3MgAAwAIBFzDgAGABAIub8dgAIAs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iKqL+gYHiILNZcsFvCN/7TQOklXDjIuln8BV+nTmgMEwFLygbIkJCH35eOw8AAiD7JgAcORoP8BzLgiAWU+vfhmNvSMEUAwAPN5nmcCBboVnqVIQUTiFiZzyAACoBQbcxDgGAB4jM8SgBBakVng6AwrALSNMvToZltGEAAFQCg25gp2jAGB/jQ8e8dgAoAAIEIAAgCAERjADRCK2tqF/+B1ncwFQADVtoAQDoi4gAA0AGARLH4ACAEGLASmcBNaIPDDzUpHKT//+ACWBDkZTThJEXIDgBDiLmoAAbELBYzxmDgAGwA4CZa6666666666666666666666666666666666666666666666666666666666647AAYAGHWAELGCgIvxicO8WuFYAJSiqBLnAC954PAZRlkFw48wBjdNbJpgAGcthxDGwsUX4QK6KKdCKCxy/3/1B31BhNY1iYGYYYAFC2ILP5UGFgJYAAvPYYiPuTXAIdfsbiMBS0wDgZ3fD8ABAAwDCoFzPz1a4pq2Y//wAKbIkxlVhMSvMoIDpiNGax3lAABAPADGCdsQasEP2eEAAEQIFywDKAAh1THGcvPUQswHTI3ppv9SpZikOQXjfYXAIcuYlKByRh2AEggQPVOkjRH9A4nMhK2/+AHJSIAGAXqwEjy0AEtVZVTO8VKyZas51kkk4/kTLs4fFtoEbODpKFTEWkYbgxSiAiM8BYToQcwwVQgABYAAQCYfgAVpjKQZEeW0hw7AAQBBCQMRYRZFGrUswC1NJn/AB+YSgzkvKANT9XiAADQAcBEsSAAaBR5sYU5iwADQAAgMmQcAA0AAIDJkgAA0AHARLDgAGgA4CJY/AAQ2YAF9alAw4dH63z5///ABzDTiIaSwr1eLAANgACAwZAhshJylENViRhAABsAMAmWOwAGhxDANI9WqgHIDEWqH/gBFIxlYZVJLW5hAABoAOAiWAD8wTghCyTgC1/V4sAA0AAIDJkSAAaAoabGGOYgAA0AHARLfHYAFgYwPTqkREPiuR6WOrf4OAAaAAEBkyAD4gNkBWGC1WvV4DgAGgA4CJYCxGIrIKwwchnhj4YAFeYihnJjixpTw7AAQBBCQORQZRFm7dtwCXuZP8AHYS4X2OaT6vFgAGgABAZMqAAGgoo2MI8xAABoAOAiWDgAGgABAZMg4ABoAAQGTIcAA0AHARLDgAGgA4CJY/AAiA/REZ5Ef/+ADmawkKKhnq9AhtEszCH7PMHYACIzIgGM7dx73Mf//D4HAANABwESwCMhiMNwUq0nu0u+OwAEYGiiY7W07Hu0n/wAQXkrekEAAGgA4CJeAFU8EYPFSITYTDHYACYD3Gp1vplPdb//wAMwpgASLMoA4FU+uOBDFzECF3kwx+AAhOAwe+XLfLD74RzmJ7dP4ALJXJiAtpYEDu37tFrI5i6oBGY0+cykFxS7tZgTiiKqL+nhgeIgt1lywW8I3/vjvwzgOkbjQnaYGUzWh46wSG9hcMNk2S6/jjNXFAA91AAEAgPyAgcAq5gBJIpYUQVuRu/xTQgAA0AHARLwAhNNIybF0UMfgKcAqAQLCQh7WF+Rdn0fvgMIJ7NygR8kAeB1f9ABOwXNNMoUZFwyBrAT30yAj4NAYPw7WIXGiLrreAU7MEWEAqjzF8XO4M3MBUHHw8GZJBpXARoxvrlyMTifGkLawCM2RobdCoz2wo1BNm8AEK/fD8AFAACoD4AAbWtAFsNT9/zfAkF+gkFgO1QGJqIoc6gYNQ5ZwABAKfk8x8oBLaIkXvvNCQEAAIAdzwcGUAAIFgtp+A4coBHVIY7/74tIBAACAPFh2IEQ/AHR3g7AAYAAIA6DgQoPIwhiOjamwn6R8ADGUsz0LKujNEL01cCoErP/f+oMo92eSJTz3cXyTAl+AAEBK2sFwtxqwBCH32v2QQkWYIScAg7ALfYHfrssBHC8gAEMJua6666666666666666666666666666666666666666666666666666666666677/f7994a79+++uu/313hvv9/rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrw",
10165
- offline: "AAAAAWdCwB/aAUAW7ARAAAADAEAAAAMAg8YMqAAAAAFozg/IAAABZYiEOiYoAAjgycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJydddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddcdgAIAQcsOSSTTLlyxZIuXLf/wANhc8uVQgps2//QWgElpnArSQHn3h2AA4ADBMADxxeJWO1OLfdS9Bs/QADCh193AxANb38ABYlU8UMVsskHiLn+/7YELICKS04HAb9fDqNXOPveYDnMTLoBSwIaP2fQPHkQGAM13p+//nbhoKtUCn5CaBgpIA2DKJLlxxnYqkpEkg/Dj8AQjAAGAQTCxyPvtmpwKevTsuUcA0IZIYc1H2mrLxnjMgBArJmNE66YDDcB4PVTiQCUnBCAVG3DyiSs+w2ogYtWIF/9++5cjIADMXOEB4ds/8CMzI0GTsLyk4MwuSpRR03i/4GBtiexCgh8GAnuHYCwAwAOaLf0Ksjw9oPzoJL+EIuLJSAFwLKft8ACmkaZGGN26bIABBBdzGuxC807SzIA/GTxFRjoUgdpAK8JbPkkAQ4GHABBBdzw4AIILuD/wGK0P66UdLhIiO/gyLGwgAEFHyw4AIKPl4BoAQqZQFiSKq8HABBR8sOACCj5ZYABsAAQGDI4ABsAAQGDOQgCAAEAy5h0AQAAgGXPx+ADzQAX3wKYaZJZhv4AJIGQLltPIMA4oagCR64Bgkl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uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuv",
10166
- disabled: "AAAAAWdCwB/aAUAW7ARAAAADAEAAAAMAg8YMqAAAAAFozg/IAAABZYiEOiYoAAjgycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJyddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddcdgAIDBmgatGsRz4EOeLeNIaoAK4IoTYYcSaB6SIAgABANuEAAGwA4CZYcAA2AHATLwCkaABlQgoArnq9DwBAACAbch4AgABANuZAAQQVcw4AQQVcH4AOBDut5h5lXWn9tfoTCAFpcXTwIwAIBExOCkcZ4QItHXzzA41AEvZgwSXTL//x2AIYE8HHbnwLhNOR539HJQyAaKcqPtQcwCVj94YAFoaXVQUzrsCRB/9/AAuDkyBD/rKBQuBgU/dzrBAEZpphAvPAATjMf9dAh8ixQOxhpLUMArHgIH/vHYADQK0aHw4EAACAXBfepAdQAXECCkdJJgsmJpZAALgACATcAjNpgAaoQfw0RyDIACHEXOVAALgACATclQAC4AAgE3A4AQ4i5hwAhxFzHYACAMBDQCUih84AUyPVKvkE44cACXIlmH2MhSgAmhOL88YwskgR0Ag0TPvANTbaJLsZ+cD+JbfaIzlkCygK0c0/73QAGSw1BulYBuWZgRLcAAICP4GC1SAiBDKIFC8EHLUFQ4unmAPwBAQApVh7gt9NLRK0nnlCdgi2nDBGTfEAAFABAOl19AzyMAMr9zyoABgAAQAFidgO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rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrw=",
10167
- waking: "AAAAAWdCwB/aAUAW7ARAAAADAEAAAAMAg8YMqAAAAAFozg/IAAABZYiEOiYoAAjgycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJydddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddcd/oH/47AAQBAGUBlZdJh5G9sxrA8HYAFbAAfbqQAFAm44CYXpxTUasssNGECENJJxx+tDI/9Ry8wBAOpYOO/f+DrFIcycwAAgIr3685zLaHgXN8IKM/o2feDBzo0Q4rHPBfP8AgCJWBh+7x2AAmAARwOv3gOBaB+1Tygfhc4CPXtgAOYUMFKd57jwafCAADYAcBMuQG07ivlZJgD8arZJMnA+ncYBgI5oNv/QcO3CKiGgDV78HQZJtQYpggXN/A67gggv/Cx97Fb6IAwEawG3/h2ADhnHDfssxKgIDDnB5vz8AE5hocrnuDCcsiQdcAAI0SyeaAI/r3/LDKKw0hoqq94YAWDbTjCEekj3v47AARgDA2nC+phF+FKPPlmgcoAHJCwOib+QsZpcAFQynCiPbJ1XgwJmExQr5/xbrIweDoOyFYDIYAQfe8NgAGmwTlgCXl4Z9/R2DQADTcH9YBry9ay7IAgHawHZ/qSoJjCQhxzw47AARgACAQFBfephQaQk9Bxxz+ErwAJTrkOCI6TmhoyQAAbADgJl0jlorTTSR594D0BpKKxXazT0AAy7yynAxBIE3/oSgKWDFpJANX9sGD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AAmkO4APxvh2AAiAAEA9IAARQDmQGaxcQU2GTKnhAMD1edgIvAo/E5vnsGpeH1KyYZ5QKaFqv/GAAF7QABAWXIkAAgPCSwDkEOQGTscjUFkQoWA0+AHmzIgOml+Awh37sN111111111111111111111111111111111111111111111111111111111111111133++/f77/ffvvrvDff7/XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXg="
10168
- },
10169
- h265: {
10170
- reconnecting: "AAAAAUABDAH//wQIAAADAJ+oAAADAABdugJAAAAAAUIBAQQIAAADAJ+oAAADAABdoAKAgC0WW6SkwvAWgIAAAAMAgAAAAwCEAAAAAUQBwHGDEgAAAU4BBf///////////wQsot4JtRdH27tVpP5/wvxOeDI2NSAoYnVpbGQgMjE1KSAtIDQuMSsxLTFkMTE3YmU6W01hYyBPUyBYXVtjbGFuZyAxNi4wLjBdWzY0IGJpdF0gOGJpdCsxMGJpdCsxMmJpdCAtIEguMjY1L0hFVkMgY29kZWMgLSBDb3B5cmlnaHQgMjAxMy0yMDE4IChjKSBNdWx0aWNvcmV3YXJlLCBJbmMgLSBodHRwOi8veDI2NS5vcmcgLSBvcHRpb25zOiBjcHVpZD05OCBmcmFtZS10aHJlYWRzPTMgd3BwIG5vLXBtb2RlIG5vLXBtZSBuby1wc25yIG5vLXNzaW0gbG9nLWxldmVsPTIgYml0ZGVwdGg9OCBpbnB1dC1jc3A9MSBmcHM9MS8xIGlucHV0LXJlcz0xMjgweDcyMCBpbnRlcmxhY2U9MCB0b3RhbC1mcmFtZXM9MCBsZXZlbC1pZGM9MCBoaWdoLXRpZXI9MSB1aGQtYmQ9MCByZWY9MSBuby1hbGxvdy1ub24tY29uZm9ybWFuY2UgcmVwZWF0LWhlYWRlcnMgYW5uZXhiIG5vLWF1ZCBuby1lb2Igbm8tZW9zIG5vLWhyZCBpbmZvIGhhc2g9MCB0ZW1wb3JhbC1sYXllcnM9MCBuby1vcGVuLWdvcCBtaW4ta2V5aW50PTEga2V5aW50PTEgZ29wLWxvb2thaGVhZD0wIGJmcmFtZXM9MCBiLWFkYXB0PTAgbm8tYi1weXJhbWlkIGJmcmFtZS1iaWFzPTAgcmMtbG9va2FoZWFkPTAgbG9va2FoZWFkLXNsaWNlcz00IHNjZW5lY3V0PTAgbm8taGlzdC1zY2VuZWN1dCByYWRsPTAgbm8tc3BsaWNlIG5vLWludHJhLXJlZnJlc2ggY3R1PTMyIG1pbi1jdS1zaXplPTE2IG5vLXJlY3Qgbm8tYW1wIG1heC10dS1zaXplPTMyIHR1LWludGVyLWRlcHRoPTEgdHUtaW50cmEtZGVwdGg9MSBsaW1pdC10dT0wIHJkb3EtbGV2ZWw9MCBkeW5hbWljLXJkPTAuMDAgbm8tc3NpbS1yZCBuby1zaWduaGlkZSBuby10c2tpcCBuci1pbnRyYT0wIG5yLWludGVyPTAgbm8tY29uc3RyYWluZWQtaW50cmEgc3Ryb25nLWludHJhLXNtb290aGluZyBtYXgtbWVyZ2U9MiBsaW1pdC1yZWZzPTAgbm8tbGltaXQtbW9kZXMgbWU9MCBzdWJtZT0wIG1lcmFuZ2U9NTcgdGVtcG9yYWwtbXZwIG5vLWZyYW1lLWR1cCBuby1obWUgbm8td2VpZ2h0cCBuby13ZWlnaHRiIG5vLWFuYWx5emUtc3JjLXBpY3MgZGVibG9jaz0wOjAgbm8tc2FvIG5vLXNhby1ub24tZGVibG9jayByZD0yIHNlbGVjdGl2ZS1zYW89MCBlYXJseS1za2lwIHJza2lwIGZhc3QtaW50cmEgbm8tdHNraXAtZmFzdCBuby1jdS1sb3NzbGVzcyBuby1iLWludHJhIG5vLXNwbGl0cmQtc2tpcCByZHBlbmFsdHk9MCBwc3ktcmQ9Mi4wMCBwc3ktcmRvcT0wLjAwIG5vLXJkLXJlZmluZSBuby1sb3NzbGVzcyBjYnFwb2Zmcz0wIGNycXBvZmZzPTAgcmM9Y3JmIGNyZj0yOC4wIHFjb21wPTAuNjAgcXBzdGVwPTQgc3RhdHMtd3JpdGU9MCBzdGF0cy1yZWFkPTAgaXByYXRpbz0xLjQwIGFxLW1vZGU9MCBhcS1zdHJlbmd0aD0wLjAwIG5vLWN1dHJlZSB6b25lLWNvdW50PTAgbm8tc3RyaWN0LWNiciBxZy1zaXplPTMyIG5vLXJjLWdyYWluIHFwbWF4PTY5IHFwbWluPTAgbm8tY29uc3QtdmJ2IHNhcj0xIG92ZXJzY2FuPTAgdmlkZW9mb3JtYXQ9NSByYW5nZT0wIGNvbG9ycHJpbT0yIHRyYW5zZmVyPTIgY29sb3JtYXRyaXg9MiBjaHJvbWFsb2M9MCBkaXNwbGF5LXdpbmRvdz0wIGNsbD0wLDAgbWluLWx1bWE9MCBtYXgtbHVtYT0yNTUgbG9nMi1tYXgtcG9jLWxzYj04IHZ1aS10aW1pbmctaW5mbyB2dWktaHJkLWluZm8gc2xpY2VzPTEgbm8tb3B0LXFwLXBwcyBuby1vcHQtcmVmLWxpc3QtbGVuZ3RoLXBwcyBuby1tdWx0aS1wYXNzLW9wdC1ycHMgc2NlbmVjdXQtYmlhcz0wLjA1IG5vLW9wdC1jdS1kZWx0YS1xcCBuby1hcS1tb3Rpb24gbm8taGRyMTAgbm8taGRyMTAtb3B0IG5vLWRoZHIxMC1vcHQgbm8taWRyLXJlY292ZXJ5LXNlaSBhbmFseXNpcy1yZXVzZS1sZXZlbD0wIGFuYWx5c2lzLXNhdmUtcmV1c2UtbGV2ZWw9MCBhbmFseXNpcy1sb2FkLXJldXNlLWxldmVsPTAgc2NhbGUtZmFjdG9yPTAgcmVmaW5lLWludHJhPTAgcmVmaW5lLWludGVyPTAgcmVmaW5lLW12PTEgcmVmaW5lLWN0dS1kaXN0b3J0aW9uPTAgbm8tbGltaXQtc2FvIGN0dS1pbmZvPTAgbm8tbG93cGFzcy1kY3QgcmVmaW5lLWFuYWx5c2lzLXR5cGU9MCBjb3B5LXBpYz0xIG1heC1hdXNpemUtZmFjdG9yPTEuMCBuby1keW5hbWljLXJlZmluZSBuby1zaW5nbGUtc2VpIG5vLWhldmMtYXEgbm8tc3Z0IG5vLWZpZWxkIHFwLWFkYXB0YXRpb24tcmFuZ2U9MS4wMCBzY2VuZWN1dC1hd2FyZS1xcD0wY29uZm9ybWFuY2Utd2luZG93LW9mZnNldHMgcmlnaHQ9MCBib3R0b209MCBkZWNvZGVyLW1heC1yYXRlPTAgbm8tdmJ2LWxpdmUtbXVsdGktcGFzcyBuby1tY3N0ZiBuby1zYnJjIG5vLWZyYW1lLXJjgAAAASgBrcLjAFwEgEQEADwDgDgDgDQDJdd4QDwCwCwCgCgCQCQCQCQCYNEX/8/CcyLuuu2nGKAAAAMAAAMAAAMCEgdwaCTacYoAAAMAAAMAAAMABEQI1dtOMUAAAAMAAAMAAAMAElAMJyWgAAADAAADAAADAAAqYA5IgAAAAwAAAwAAAwAAGTARgAAAAwAAAwAAAwAAB9QAAAMAAAMAAAMAAAMAAQsAAAMAAAMAAAMAAAMAGBAAAAMAAAMAAAMAAAMBkQAAAwAAAwAAAwAADTgAAAMAV0oBlPeTVLjjiybt/79hr8egLGkfgRr4BMQkiA4Kvw8jeWLF+WRCVyWx9qYu5G9T5CK0jQtgcXtpIjS8fOF3Fs7TooZzWpZ8ReTWIvMHVoz1Khj/MspUENldBCyT8am2SvF0ODUrVIDRf6nQo2S7JadxlbCTlotNQq+hoKRRpfUfWMJmvuh1JQQ53qCMdtbzzujg03ARtryGryC21x+/3HlsDdJjIo2bsBqcJDGhtutOY09UKR2fB4qo0gcO4YaWz8+LdoSQytzg8i7YAgrr++G2P+ciO8uBIRmUDS3dtHY2qm5ES/5WKQRfGoCYlXSFktimmNXaNVi6B/F8WTM6qww3C8/HRnP19lFBhwjM+so5wYr/a/dEoNHlt3zo+DYqXCzrM89XtWZ+VEiEGHThWZz4ueu9hRf4kAsDnSm/K+EKgxVzC/x5RkkoP8gg1uFv4OZXv6v6KgwUUFg/coPxInxbWw9F/Em349gUCz1BftvEUsr1DSslq5wmBHSQnaZ4NEC5uQ7E+IJkO5r5l6deZqifhgY72K8BvaeifJXZz9C7VWOQC49uyADmfqmA4QOBnjvlaVjMljLHauN0OBCnR/ehSff3ux90YSUWX2rBSERUDJ+yZhj0SgEfXbjmW4YuMYX4/97H46RZnNCBX9OYbLbrBFzgnHD6njGyfAdcBZh2f7mjH0QJBJ8VmQS0B0bAfj6avyTuVGltkpP5Dzzs+gjJ0md5RwCvg1V8rV+2K2YdUNNdVjwHGk5KYz7o8mnWuj1D96sE5UIELAcjJ5b9vqIkAsXM3Vnx08ySHbPcRPvHypZc7irWXbQZFIGvaSJaFPgPfzut47l2K7f9PNWh5RQzvRryfmocEduA73fOehHOSh6GDB93aZZIC6QlT54zV5fxdeulJJhr76lPm6TPWqydI1W/qztOgkF8uUTfVwt+vT6TlPdWxK1rXl4RbzjtzV7SMAALHytwvzDfSm+958O8Cr5eqkkCllpWRgAqvNbAK54kh1ApOCBDkGEFsTLVRQAgUdw58gie9hHM8u36TEEKqpQVAorSyValMe8g85gYdkOY+0wB+0iHrxgYruhqpzWE/1uOkRFUFP2u6pE3uudGUR0IH1V9O5pKVT21Typx2BQJR4YlZaCIEWe1050WXbGNg9/iw+rICd036Z8OuiwWGbinPZLfr+rIAhXldbFQYq2G94iPJLh9j2SHCV4F1Aiii9jfSgYXo0PBsJ7lJkmr0LrHeZS94G0bI7OfVGGKTAFOqUdABWQAaqoyZKJHE3vb3N/jVzQxnO968s6FOcEljAwlHET9NwSytW2ltw/KkBMSefHyKhLX/0NgBvoBNpannebIPuQuDyVugvZzGrgdUEoDQKyjiQsSxinE/HfAqdLE9U2PgXxXD44oIoidTBs0pHMtZEUgQeJmulJz4zufU3tla2hHg5afwGT1778P8mURVtY9WYYsA0ov+06wmR7ZyAA94Ane5bG1e+HcdkJfwjDB5ECH3BiF0Luicv7PLXi6Ci4ozoX7d5fn0zYMXFVF3N2rnh/WmSzDD7Q/Yx0ttU/siyEirAQqrQnEav6JK+uaQwUdK77oi4laVukHGWP2V2X1yuHVV8AlW0z1wpmPtUnu1MmeHIavzUFAZgWXD5++r6Ot/hOgJp0ZxPZZUCgbmvknx5guU/EmHwrKCjOjqIsvFYuC2yd0FpCAz1B6OI6V7WfG1P56Ln5aI06Mf46GEEjh8gK4KRznRdB/xXyJUnbQh3VRu022hXqpI439/25/8EyU+o6TjhSMpV2XnR83rGflzCfxYBa0eqm/oCDk5lpViQusu+1v7g6+/B8A3JkM78sO064c9DJHwBKcssLoncxh1rOZHqYmH7dyJcKvKl56c4yjMAPGoTu/dQ7DqUl+/1ZTfXnScfhvxLshgyc0P9fbDvKJngtx+FL7pEI3N0am5b7qNTDhVZT3KgbCynYRYKvL/yEzW67K2BJ5ZFl9CGtKA/Wuue66P7sZTogpNLy5bCzs0EBpxAz15JdP6o8IKrx8g4YPCirXwWayjOcdVY5Yzoh3EIABoL7JyIPJ+cOqOQRVbaNRSK3uqK0cDclgP7JNT6itDaY+eNuGZnsLka93Ojqnx0/OvvcM/VMOV3XNoBzjMCwBK62jL3BJ6Sjkzv9zgFSVmuyQ1AhGowTYPI7lEOqJeg9acM47dS50fO57M1ipbHahZzkNA7cArH+mpK6pofOUpxsEuAjwx0/oJZX7WPb+2nYRSd8bSa6KvwWZKrxcxDGUDRuPXs1qUL0bx5/nt4Rpdh+r541w9HBywK/EqnlL5DYgjOp4GzorITU/9i2NsPaK/Z6yc4RvPkpFu+lTXX15KedvWxUH8IMgm4DaPS9pdw0J6iZtJSap+C6kyRPgZtqZ9JVAU0V5i8gQY+L0jFX3PnWHcMOAzHQwFGZWBOtMq8pkyJ93N3kgst1DWGj6egLEMVuSRONH/3vN8qXpifVRo9g/NcuIYc8l/zYlWqIIB/WlttCvqZ/NE9cN6m6xU2WDfO+5QIHQBMGSHWZCN16hw86A0bJeS6SRsmWbN0LJO0V/YXTr2EiAtBYVawrglXrSVtdH8nEGXJVznoRPgYu5p4Llm0e3e6GvZnJYWJ97lrbWXcLvpXP54XUDyIEPuXlZTRmMUWoHFTl8OIgUPhTIKMoG/Ib89C5uyCXO415fSc6Ppq8MEiTT76ZAqXjfG7Dl5ACmBTbvX450/CB1Vi9xB8IIFFT7xD+OAmwewOGLaXBBO4pkl5r7Upopbpeoi/FAHZ0bMCdmOQgDTKnioiPzQYcq0KWVAoG5r5J8jULlPxJh8Kyxozo6iLLxWLfvItk+Dk1uOEUQG0sxnSpTCtftlKRmLEP1+zyJErrDz9yres+EgsDhno7sW7bOYXOuph4PB+Ra87C7UpcF7QoQ4Rq7+QtOobzeYS5V2OR5dJxNkiYFzyiARK0HojeNvZPsDPukDb/rr8DQ14H4kMoXqBt5PD6qjJfl4JKPpPL4SRx2PfF7oETuqmVkkm6si4m2Yxa551yCAs2KFO04guWSpDFtgl80mCDMLqMoSphaJF3HEX71YqU7ZLyY8Zdk8ruJMIrvZvlE8/RxyFAjlGSVYrv6wO2FPVx0houMsMwB5IpBY4ki9hC5edchcPQZNwM878Wt/o+bYxR+wIqJgK1nMqybFzcZEapW0k0SBbKXlHosilK/N6AAACngAAADAbwcg0sfHQt65f6mnxtP2r+08fGJCSWncC9bRMWkwVBgpQR9hbHN4iZZRH0Z8rW+xzoBFYLNKy3xIereHgLNTMOv62N2JOpDqN++sH7wAcc3e9Fo2nP31QA4zC527jTsgdwKgJaisVqq83vKsLGD+mX0effufZ3T8Mg5/QoFOcWvVE4u51cXJYr+7QsOOiBhz1wGGb7n5Riy+uIE70aDf4chPltnlwTlOPeaZba/RfYvXb3LTvBBXvXF2/vt/uNbdw73//djuXVcc2u778jWxY8yXBlDP1Lh7gFkKU9LsFJc+gnHXU7W3jI8fFwuxeJKAfRlWNwTZmYANsBtJlzM4qbyhxXYGOOzWlDyICJTKcnkQssORsQVM5bsaHBXPm4piT9sxg19wlCBp6K5MigVX+HFnevX/Y55tonjRrEoHmGCV9kKRV6ZUIESRziBozfic6j2ftv4oLu5bI/fQtkvAnj3rtJ1XWbfdQsBxRBf6dZjWewdrMtZy7s2Wqf9d6W9GrHRKH44rS+gtFLk8h0FJLn6zQLoVdsrtdTnOdG+3OB2nJ8Ll1ZrqsyrSK0KBWtBthMS90/8GbrLJyds6h7ctDw791GN2aqDJ4h42RhTazZhiZ2XJjw6PtucSfsCR0iPYPlOm9W7uSVsQwgcfzevIWBhU/4K4IxYJohDWirZbT7QciZuXwTC574DOGso6Ddu3iRhYFYzPOcWvgxxKvDr8UBw//4Jnc4JfKbvTGbc3k50ML5IZCuQJxyj+K22xRf2fBinLjfiXt1ncXjhKC7lzlgYXWi7dNZL917wYytylf0nvn0ABCs9XijfD8jvNVUhzn7FyKsLJbgHr24rz1hCw/YBipkxDP39vYAiBmNX2uG5IuVVnJZ5fGHEdy09nClEnyPYgLxuQs9UBSwoUcd1awDoeG0l/+NyE4HnszKMX3+4VyQwKWqek0dspBqT2meYK0sbomqG3nRKxUANy0l4iqNX/xwPjuCyd/7Xdxz93mT5yVFNbci5YUea9g6jhB/KT8HdwnvDe/DMilt1HPZpgB0wgXCNAaIqLjVB+8kxgLrHmYXtvo2wbzl5+7FVN78Rm8uMHl/AobG9C2ph/tMv6LoCfkq6pRm4x5IMB0kModAdXa3qjA92hYeX2AAkTYfvAGU0jYpUtcE6IUmjyt8t79IA3do96y3l/Yrpo5p67dN3Xmp+3lkuj8pcIfCqZBUyQlrrXNgaj3zli2u4StYzLJgLhQ3OKrP/sQZ14caam0hWYDNJkEgN3Ydj6InQ1Ymx0Aedt/SUXSbw1w5oiZahKrkub8bHe3MAMed981rnNunKdC18+ckf3z1FaLECw0A5R3vJEfVyRPkyBxckOY59j+suEa5MpVNZalf+UxyzmlqUbgmkaXgHe9PbtWLkdHWXn5HRQeWABU0ky7jrKktuGVmiHhjtyjzPBq4ZEZxfciWLnJRfLzzue4v+azInxca0i8DzyTb2eWXtl9yVEz2yxJ1mX7tdQej9o0nYsHpN4EBE5SHK5o32tCjxpYdr2cufCrq9sl0bHxRDKZceNwgKGCTSPXYIwC04S5qBjOrxDVexlbFVvOpSrh6KxSamB9ZGgkKGqP2RKVci7zuI9wEMNLjkO7elLpXa4KU8NIwAHNp7SJoIpMYxBaD/iK4ZDq2AP3G0kIWJRKvZl2whIMguF9R7pDDFNn9WoFJ021BWo8DMFyrxvNQCoZlopDA7/sgJ16VBsGKOXDltXigk5APGWqSjaeezweoevWhT+M8th4+2yF862EsNo36UF0xB16BSZOaMSB8vTsH0u3+Lc6Czm0A7UiUvNlkwJ5z0lLwIxmI/+LSWEmzHIsjeXWQHde30gUHvTvOMIhWqHvjiSvLjw17T6tijkO47h8RI9bWzmG9DNEn9a8bmlJrHh/tGMgAwGu4DUUotoHfaHegkYIrWzkfVH13yHTTGrcY82KdmS6lT5E8uXIcyGoQ6LJYmDZu3WX2GS66RN8oehSzHcH58HgYoTpYKIDweSZcEiWYz/tZAWMYZgWXnWQZPfaABFbbCns0twaNs0Sn41f8gkjAc3lm4pqFMTAj9xaMBcmLefXcrkWTHw691m21Xnc9pQdMbWmlorU8Boq5AbDnckloxu0Z74DJi9j6A0n9LVh6dlzvodocp71Er/hGdNJRi+Vcl+kHo1ic3iIOHsS2Yqhs0RNFjo/fjbxeaOBgWRLxNRkx/AIkiJVHNV0XAv98N3FxA1oWE28krbjksU0KMrB6rkKwUfNcfbACNDAtzuKkSRpw07CcY+Zpnp00QTqET6boRpUMsnfaZdk21i1g0aIOiDRr2dpZ5PoUh+x3t9oWEgAsb4tJ+WL2NgGdhlL9ArpbJCkoYxz1XC143XWlkVey9DkztysoGKuHxs1kS/741nQt+prrl/yhEsVDmZ/Z5MMAj9O3hJyAkT44zRhjJLh3tWJoeFlbIzQq1uS5d0BE3kG6Qr6QNycPBhMCmaPgehdmJY+pOPHDi7GKK5rgDhTTxTtxWHyLLtfZ0uvhCyP2f/vgdf//AW22MA3F7+0FcPd/9PQKUGX/d4OreG7Oo6JiAmP2IarCYG1AQh9D8GlhytEMDqFqrMb+m0c0dcyEfdriIIgDPTFNJ50aGVMu1lYMBAeTw5jwhtYMuiogKIPkiwBbuxxmY24CzXbT4fPEXiuSTi3xI+QpK6pQKD303zumZnAWYRe3RoU+5hh2mqFB4XpO7X67q4pTDvY2iIBJgNeVaNgkLRA5AgiUAq9OnZZ6DW/qsT3aLY1XqDqoX0OQqltPj2HGVs3TjfcD74AvF6ESnvX9RzOG9LDlya+1j7GxfQB8dY96fBq7EdJtwBRND9wTMC7kswFAClGZNPZ5FhthY9JGLV3GPjO2Pa1kZwp9IvZZMROq0ELt2ZAfv+Ue5IoQO7pEUCsjOnNStt3pWwP6Vpi5XsQVkGI+NARaVSl7Nudb0UnrG5gbENDRtcZIXAxGdIgwOt6e8vysvL+b5Yi8IRqaaQ89puymmtR6vrVec2CcaYWm5nZdP6HLbqgFDHujcz0NOqV71H1GCiaNrWy/t35pRVfq640VGg52Hqg8tTaaqsXG2uuThvW3MRANtcHJMvdaV8I9d+Vb28UNf47VvosuDkJxZYexaYsVvpxtvlHsbGPbfsUm+ucN6qbHw/4nWSJgPd9K2t+LpU6dW01zs7bZUA0ZWBh8KbVP8neck5aIq4IsoFGxGdJRugUY2kc1o6QKsSFpzqsUO8DxRZ9uWp/d88Uhl33NB99BZD64HBGT5R6s3X/NwvIehHtrdWJ1CQexCTVFv3Eb0CuuWaglxVhyrp+p3xVxoVlxqBIRw1ct155Gf4rLGzRWhi/lD/h6eJ6I6Gh3DZ/waZwb/4jhIjHRYemhw12YoNzyTqV340QHjgBALKzT6EYu0BCp3k05aopnwZDqqCC6uc4H2//2hUxaKOv36N7VdYluXSj1nq4fr5Xn+mvFRheiMKxalcBxAPkgiRIO3V2M8WZp05C0d7dovQabSceQ7zzX5Kis3fOr4IQvGA1dsmQYeHClVm749yGxVPhITPaIxhFGdKsnqp/N5oBrOs08kkmO4KsIQ4YVjQp3SDyekaMbdh42ZKxmzF7CDszcChDbzxKi/47kzTL+XxnDI6npJCUA/lvh6P/3ooqWRAZ+ohyjnqz/83aeJjC0d2toQFL4EIajAiRul9hQypMhS0XnmHZ15XbBiLRGpbDdZQ6bWbe/6+fbakKDMUP5Ewz8DK0PijXVkvCQYaBrVQqwKhquutLM69iT5h9cVApJCw+Nllb0UHOiobf4oGg8lIC3H/FN62IA/vHZcetduokSAeNxWOKvrPx6q4aEXZEqEJU/5RxL2EPUidxh1T7aRM3MGJM8f3SkvCq+bq1EmJthptURTAgWP/WpjVjvdcYz2L9qxOe83/8Gw8//0js8i4pOvGOcmCVLlb4Im0GZJQfCQD3bdwBFnTf0blZtn+4pOOyWKF5kvPUqsNLRIYwRaZxrtVx11WJI938QDTMzbi1RAh3yZRRfc5+zf1Gr2LTnThAaUv17gs5KGGbGfd0Uuc/Ky7Cdjbnj6KmLHSCCrFDBzQAMHtbNdI/mGg9ut9ZcCsKZngnEFCvoQaLf66strIWjhDB7bqnxq8cqq4mATh7t98ES8NnEOWXT9z0zhDfRMZ8e7CQOk3nc3+p5zyNXA0TXCtjAP6sE0ShNfMQ/tTguB5Zj1E+zUb7sOjZANfmHFtjJlzY34YLRBGUg5o5sR+nCG+kaOtdxHUSq8C3YtzqQT+e5sxuLeme3xCkLSaC9OUO8cmIzNmtFnYk353mnh8Wgg4UdK5SI1oF2vRRsjcGL571LepYc8lwkS/WmcdAhR379sIjgQT14ysZ8k9eLssO9UjB/7q2tG1AL0KYlwjlCuqjR6pAdrjmOpq2kVVY045O/7L+Jhpn7PqvQDgFhsWOrMEOm1EoTFMgRuPtoWHTeizXe9lcCYVsCt/5rG6LxIPBz4ZVFBF0Cj8Or6q2yftONDIY/UXBy0KnWmbHRu4he3qt7vWLVh7/3NxyGNNxn9X1b9D50txYJA15Itn3rsHOBNYb94xeX3niF0VIWMbgv+9wCqYqRlwoGtH0CFyNFo4+2qOJpXAoXM937ry/eSK+Z8c40wn9AIPg8C1T5qscDGAvYolWSVJqa0imWz+UnlYPGjnQCMII4mY9IWqUOKRC2N8NKHvw/EwFYAAAMCqTu4+23fGyAAABLQAAADAAADAAADACtgAAADAAADAAADAH+AAAADAAADAAADAWMAAAMAAAMAAAMDsgAAAwAAAwAABuQAAAMAAAMAAA4YAAADAAADAAAY0AAAAwAAAwAAKSAAAAMAAAMAADzghwAAAwAAAwAAAwAAAwAAAwAAAwFp",
10171
- sleeping: "AAAAAUABDAH//wQIAAADAJ+oAAADAABdugJAAAAAAUIBAQQIAAADAJ+oAAADAABdoAKAgC0WW6SkwvAWgIAAAAMAgAAAAwCEAAAAAUQBwHGDEgAAAU4BBf///////////wQsot4JtRdH27tVpP5/wvxOeDI2NSAoYnVpbGQgMjE1KSAtIDQuMSsxLTFkMTE3YmU6W01hYyBPUyBYXVtjbGFuZyAxNi4wLjBdWzY0IGJpdF0gOGJpdCsxMGJpdCsxMmJpdCAtIEguMjY1L0hFVkMgY29kZWMgLSBDb3B5cmlnaHQgMjAxMy0yMDE4IChjKSBNdWx0aWNvcmV3YXJlLCBJbmMgLSBodHRwOi8veDI2NS5vcmcgLSBvcHRpb25zOiBjcHVpZD05OCBmcmFtZS10aHJlYWRzPTMgd3BwIG5vLXBtb2RlIG5vLXBtZSBuby1wc25yIG5vLXNzaW0gbG9nLWxldmVsPTIgYml0ZGVwdGg9OCBpbnB1dC1jc3A9MSBmcHM9MS8xIGlucHV0LXJlcz0xMjgweDcyMCBpbnRlcmxhY2U9MCB0b3RhbC1mcmFtZXM9MCBsZXZlbC1pZGM9MCBoaWdoLXRpZXI9MSB1aGQtYmQ9MCByZWY9MSBuby1hbGxvdy1ub24tY29uZm9ybWFuY2UgcmVwZWF0LWhlYWRlcnMgYW5uZXhiIG5vLWF1ZCBuby1lb2Igbm8tZW9zIG5vLWhyZCBpbmZvIGhhc2g9MCB0ZW1wb3JhbC1sYXllcnM9MCBuby1vcGVuLWdvcCBtaW4ta2V5aW50PTEga2V5aW50PTEgZ29wLWxvb2thaGVhZD0wIGJmcmFtZXM9MCBiLWFkYXB0PTAgbm8tYi1weXJhbWlkIGJmcmFtZS1iaWFzPTAgcmMtbG9va2FoZWFkPTAgbG9va2FoZWFkLXNsaWNlcz00IHNjZW5lY3V0PTAgbm8taGlzdC1zY2VuZWN1dCByYWRsPTAgbm8tc3BsaWNlIG5vLWludHJhLXJlZnJlc2ggY3R1PTMyIG1pbi1jdS1zaXplPTE2IG5vLXJlY3Qgbm8tYW1wIG1heC10dS1zaXplPTMyIHR1LWludGVyLWRlcHRoPTEgdHUtaW50cmEtZGVwdGg9MSBsaW1pdC10dT0wIHJkb3EtbGV2ZWw9MCBkeW5hbWljLXJkPTAuMDAgbm8tc3NpbS1yZCBuby1zaWduaGlkZSBuby10c2tpcCBuci1pbnRyYT0wIG5yLWludGVyPTAgbm8tY29uc3RyYWluZWQtaW50cmEgc3Ryb25nLWludHJhLXNtb290aGluZyBtYXgtbWVyZ2U9MiBsaW1pdC1yZWZzPTAgbm8tbGltaXQtbW9kZXMgbWU9MCBzdWJtZT0wIG1lcmFuZ2U9NTcgdGVtcG9yYWwtbXZwIG5vLWZyYW1lLWR1cCBuby1obWUgbm8td2VpZ2h0cCBuby13ZWlnaHRiIG5vLWFuYWx5emUtc3JjLXBpY3MgZGVibG9jaz0wOjAgbm8tc2FvIG5vLXNhby1ub24tZGVibG9jayByZD0yIHNlbGVjdGl2ZS1zYW89MCBlYXJseS1za2lwIHJza2lwIGZhc3QtaW50cmEgbm8tdHNraXAtZmFzdCBuby1jdS1sb3NzbGVzcyBuby1iLWludHJhIG5vLXNwbGl0cmQtc2tpcCByZHBlbmFsdHk9MCBwc3ktcmQ9Mi4wMCBwc3ktcmRvcT0wLjAwIG5vLXJkLXJlZmluZSBuby1sb3NzbGVzcyBjYnFwb2Zmcz0wIGNycXBvZmZzPTAgcmM9Y3JmIGNyZj0yOC4wIHFjb21wPTAuNjAgcXBzdGVwPTQgc3RhdHMtd3JpdGU9MCBzdGF0cy1yZWFkPTAgaXByYXRpbz0xLjQwIGFxLW1vZGU9MCBhcS1zdHJlbmd0aD0wLjAwIG5vLWN1dHJlZSB6b25lLWNvdW50PTAgbm8tc3RyaWN0LWNiciBxZy1zaXplPTMyIG5vLXJjLWdyYWluIHFwbWF4PTY5IHFwbWluPTAgbm8tY29uc3QtdmJ2IHNhcj0xIG92ZXJzY2FuPTAgdmlkZW9mb3JtYXQ9NSByYW5nZT0wIGNvbG9ycHJpbT0yIHRyYW5zZmVyPTIgY29sb3JtYXRyaXg9MiBjaHJvbWFsb2M9MCBkaXNwbGF5LXdpbmRvdz0wIGNsbD0wLDAgbWluLWx1bWE9MCBtYXgtbHVtYT0yNTUgbG9nMi1tYXgtcG9jLWxzYj04IHZ1aS10aW1pbmctaW5mbyB2dWktaHJkLWluZm8gc2xpY2VzPTEgbm8tb3B0LXFwLXBwcyBuby1vcHQtcmVmLWxpc3QtbGVuZ3RoLXBwcyBuby1tdWx0aS1wYXNzLW9wdC1ycHMgc2NlbmVjdXQtYmlhcz0wLjA1IG5vLW9wdC1jdS1kZWx0YS1xcCBuby1hcS1tb3Rpb24gbm8taGRyMTAgbm8taGRyMTAtb3B0IG5vLWRoZHIxMC1vcHQgbm8taWRyLXJlY292ZXJ5LXNlaSBhbmFseXNpcy1yZXVzZS1sZXZlbD0wIGFuYWx5c2lzLXNhdmUtcmV1c2UtbGV2ZWw9MCBhbmFseXNpcy1sb2FkLXJldXNlLWxldmVsPTAgc2NhbGUtZmFjdG9yPTAgcmVmaW5lLWludHJhPTAgcmVmaW5lLWludGVyPTAgcmVmaW5lLW12PTEgcmVmaW5lLWN0dS1kaXN0b3J0aW9uPTAgbm8tbGltaXQtc2FvIGN0dS1pbmZvPTAgbm8tbG93cGFzcy1kY3QgcmVmaW5lLWFuYWx5c2lzLXR5cGU9MCBjb3B5LXBpYz0xIG1heC1hdXNpemUtZmFjdG9yPTEuMCBuby1keW5hbWljLXJlZmluZSBuby1zaW5nbGUtc2VpIG5vLWhldmMtYXEgbm8tc3Z0IG5vLWZpZWxkIHFwLWFkYXB0YXRpb24tcmFuZ2U9MS4wMCBzY2VuZWN1dC1hd2FyZS1xcD0wY29uZm9ybWFuY2Utd2luZG93LW9mZnNldHMgcmlnaHQ9MCBib3R0b209MCBkZWNvZGVyLW1heC1yYXRlPTAgbm8tdmJ2LWxpdmUtbXVsdGktcGFzcyBuby1tY3N0ZiBuby1zYnJjIG5vLWZyYW1lLXJjgAAAASgBrcLjAFwEgEQEADwDgDgDgDQDFjo4wDgCwCwCgCgCQCQCQCQCYNEX/8/CcyLuuu2nGKAAAAMAAAMAAAMCEgdwaCTacYoAAAMAAAMAAAMABEQI1dtOMUAAAAMAAAMAAAMAElAMJyWgAAADAAADAAADAAAqYA5IgAAAAwAAAwAAAwAAGTARgAAAAwAAAwAAAwAAB9QAAAMAAAMAAAMAAAMAAQsAAAMAAAMAAAMAAAMAGBAAAAMAAAMAAAMAAAMBkQAAAwAAAwAAAwAADTgAAAMAAnJVW/5yV+komUy56aphjzFvh52pfB2PTfCwCh7ggQKBSBYFGbEzvodhyojZdGeFaSykK9Ax2TQRMp4vmNtSZ21tm+X8AAJbdd/W7GfmdQAeYoPMrNuiQvN/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",
10172
- offline: "AAAAAUABDAH//wQIAAADAJ+oAAADAABdugJAAAAAAUIBAQQIAAADAJ+oAAADAABdoAKAgC0WW6SkwvAWgIAAAAMAgAAAAwCEAAAAAUQBwHGDEgAAAU4BBf///////////wQsot4JtRdH27tVpP5/wvxOeDI2NSAoYnVpbGQgMjE1KSAtIDQuMSsxLTFkMTE3YmU6W01hYyBPUyBYXVtjbGFuZyAxNi4wLjBdWzY0IGJpdF0gOGJpdCsxMGJpdCsxMmJpdCAtIEguMjY1L0hFVkMgY29kZWMgLSBDb3B5cmlnaHQgMjAxMy0yMDE4IChjKSBNdWx0aWNvcmV3YXJlLCBJbmMgLSBodHRwOi8veDI2NS5vcmcgLSBvcHRpb25zOiBjcHVpZD05OCBmcmFtZS10aHJlYWRzPTMgd3BwIG5vLXBtb2RlIG5vLXBtZSBuby1wc25yIG5vLXNzaW0gbG9nLWxldmVsPTIgYml0ZGVwdGg9OCBpbnB1dC1jc3A9MSBmcHM9MS8xIGlucHV0LXJlcz0xMjgweDcyMCBpbnRlcmxhY2U9MCB0b3RhbC1mcmFtZXM9MCBsZXZlbC1pZGM9MCBoaWdoLXRpZXI9MSB1aGQtYmQ9MCByZWY9MSBuby1hbGxvdy1ub24tY29uZm9ybWFuY2UgcmVwZWF0LWhlYWRlcnMgYW5uZXhiIG5vLWF1ZCBuby1lb2Igbm8tZW9zIG5vLWhyZCBpbmZvIGhhc2g9MCB0ZW1wb3JhbC1sYXllcnM9MCBuby1vcGVuLWdvcCBtaW4ta2V5aW50PTEga2V5aW50PTEgZ29wLWxvb2thaGVhZD0wIGJmcmFtZXM9MCBiLWFkYXB0PTAgbm8tYi1weXJhbWlkIGJmcmFtZS1iaWFzPTAgcmMtbG9va2FoZWFkPTAgbG9va2FoZWFkLXNsaWNlcz00IHNjZW5lY3V0PTAgbm8taGlzdC1zY2VuZWN1dCByYWRsPTAgbm8tc3BsaWNlIG5vLWludHJhLXJlZnJlc2ggY3R1PTMyIG1pbi1jdS1zaXplPTE2IG5vLXJlY3Qgbm8tYW1wIG1heC10dS1zaXplPTMyIHR1LWludGVyLWRlcHRoPTEgdHUtaW50cmEtZGVwdGg9MSBsaW1pdC10dT0wIHJkb3EtbGV2ZWw9MCBkeW5hbWljLXJkPTAuMDAgbm8tc3NpbS1yZCBuby1zaWduaGlkZSBuby10c2tpcCBuci1pbnRyYT0wIG5yLWludGVyPTAgbm8tY29uc3RyYWluZWQtaW50cmEgc3Ryb25nLWludHJhLXNtb290aGluZyBtYXgtbWVyZ2U9MiBsaW1pdC1yZWZzPTAgbm8tbGltaXQtbW9kZXMgbWU9MCBzdWJtZT0wIG1lcmFuZ2U9NTcgdGVtcG9yYWwtbXZwIG5vLWZyYW1lLWR1cCBuby1obWUgbm8td2VpZ2h0cCBuby13ZWlnaHRiIG5vLWFuYWx5emUtc3JjLXBpY3MgZGVibG9jaz0wOjAgbm8tc2FvIG5vLXNhby1ub24tZGVibG9jayByZD0yIHNlbGVjdGl2ZS1zYW89MCBlYXJseS1za2lwIHJza2lwIGZhc3QtaW50cmEgbm8tdHNraXAtZmFzdCBuby1jdS1sb3NzbGVzcyBuby1iLWludHJhIG5vLXNwbGl0cmQtc2tpcCByZHBlbmFsdHk9MCBwc3ktcmQ9Mi4wMCBwc3ktcmRvcT0wLjAwIG5vLXJkLXJlZmluZSBuby1sb3NzbGVzcyBjYnFwb2Zmcz0wIGNycXBvZmZzPTAgcmM9Y3JmIGNyZj0yOC4wIHFjb21wPTAuNjAgcXBzdGVwPTQgc3RhdHMtd3JpdGU9MCBzdGF0cy1yZWFkPTAgaXByYXRpbz0xLjQwIGFxLW1vZGU9MCBhcS1zdHJlbmd0aD0wLjAwIG5vLWN1dHJlZSB6b25lLWNvdW50PTAgbm8tc3RyaWN0LWNiciBxZy1zaXplPTMyIG5vLXJjLWdyYWluIHFwbWF4PTY5IHFwbWluPTAgbm8tY29uc3QtdmJ2IHNhcj0xIG92ZXJzY2FuPTAgdmlkZW9mb3JtYXQ9NSByYW5nZT0wIGNvbG9ycHJpbT0yIHRyYW5zZmVyPTIgY29sb3JtYXRyaXg9MiBjaHJvbWFsb2M9MCBkaXNwbGF5LXdpbmRvdz0wIGNsbD0wLDAgbWluLWx1bWE9MCBtYXgtbHVtYT0yNTUgbG9nMi1tYXgtcG9jLWxzYj04IHZ1aS10aW1pbmctaW5mbyB2dWktaHJkLWluZm8gc2xpY2VzPTEgbm8tb3B0LXFwLXBwcyBuby1vcHQtcmVmLWxpc3QtbGVuZ3RoLXBwcyBuby1tdWx0aS1wYXNzLW9wdC1ycHMgc2NlbmVjdXQtYmlhcz0wLjA1IG5vLW9wdC1jdS1kZWx0YS1xcCBuby1hcS1tb3Rpb24gbm8taGRyMTAgbm8taGRyMTAtb3B0IG5vLWRoZHIxMC1vcHQgbm8taWRyLXJlY292ZXJ5LXNlaSBhbmFseXNpcy1yZXVzZS1sZXZlbD0wIGFuYWx5c2lzLXNhdmUtcmV1c2UtbGV2ZWw9MCBhbmFseXNpcy1sb2FkLXJldXNlLWxldmVsPTAgc2NhbGUtZmFjdG9yPTAgcmVmaW5lLWludHJhPTAgcmVmaW5lLWludGVyPTAgcmVmaW5lLW12PTEgcmVmaW5lLWN0dS1kaXN0b3J0aW9uPTAgbm8tbGltaXQtc2FvIGN0dS1pbmZvPTAgbm8tbG93cGFzcy1kY3QgcmVmaW5lLWFuYWx5c2lzLXR5cGU9MCBjb3B5LXBpYz0xIG1heC1hdXNpemUtZmFjdG9yPTEuMCBuby1keW5hbWljLXJlZmluZSBuby1zaW5nbGUtc2VpIG5vLWhldmMtYXEgbm8tc3Z0IG5vLWZpZWxkIHFwLWFkYXB0YXRpb24tcmFuZ2U9MS4wMCBzY2VuZWN1dC1hd2FyZS1xcD0wY29uZm9ybWFuY2Utd2luZG93LW9mZnNldHMgcmlnaHQ9MCBib3R0b209MCBkZWNvZGVyLW1heC1yYXRlPTAgbm8tdmJ2LWxpdmUtbXVsdGktcGFzcyBuby1tY3N0ZiBuby1zYnJjIG5vLWZyYW1lLXJjgAAAASgBrcLiwLgSAiBAB4DgHAOAaAyPGfQGALAWAoBQCQEgJASAmNEX/8/CcyLuuu2nGKAAAAMAAAMAAAMCEgdwaCTacYoAAAMAAAMAAAMABEQI1dtOMUAAAAMAAAMAAAMAElAMJyWgAAADAAADAAADAAAqYA5IgAAAAwAAAwAAAwAAGTARgAAAAwAAAwAAAwAAB9QAAAMAAAMAAAMAAAMAAQsAAAMAAAMAAAMAAAMAGBAAAAMAAAMAAAMAAAMBkQAAAwAAAwAAAwAADTgAAAMAAnIRJY7mt6jxDg1ZAEbP7/LhpeVRCRSHYPE9hJm0I9bQrAjX0yu6L7lrKwJuj+U+EieuvMXkRVod2huH5MMqkgjezPIXhMMMbzPxp9/3NjL4R6GTuXhhGpNVRUat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",
10173
- disabled: "AAAAAUABDAH//wQIAAADAJ+oAAADAABdugJAAAAAAUIBAQQIAAADAJ+oAAADAABdoAKAgC0WW6SkwvAWgIAAAAMAgAAAAwCEAAAAAUQBwHGDEgAAAU4BBf///////////wQsot4JtRdH27tVpP5/wvxOeDI2NSAoYnVpbGQgMjE1KSAtIDQuMSsxLTFkMTE3YmU6W01hYyBPUyBYXVtjbGFuZyAxNi4wLjBdWzY0IGJpdF0gOGJpdCsxMGJpdCsxMmJpdCAtIEguMjY1L0hFVkMgY29kZWMgLSBDb3B5cmlnaHQgMjAxMy0yMDE4IChjKSBNdWx0aWNvcmV3YXJlLCBJbmMgLSBodHRwOi8veDI2NS5vcmcgLSBvcHRpb25zOiBjcHVpZD05OCBmcmFtZS10aHJlYWRzPTMgd3BwIG5vLXBtb2RlIG5vLXBtZSBuby1wc25yIG5vLXNzaW0gbG9nLWxldmVsPTIgYml0ZGVwdGg9OCBpbnB1dC1jc3A9MSBmcHM9MS8xIGlucHV0LXJlcz0xMjgweDcyMCBpbnRlcmxhY2U9MCB0b3RhbC1mcmFtZXM9MCBsZXZlbC1pZGM9MCBoaWdoLXRpZXI9MSB1aGQtYmQ9MCByZWY9MSBuby1hbGxvdy1ub24tY29uZm9ybWFuY2UgcmVwZWF0LWhlYWRlcnMgYW5uZXhiIG5vLWF1ZCBuby1lb2Igbm8tZW9zIG5vLWhyZCBpbmZvIGhhc2g9MCB0ZW1wb3JhbC1sYXllcnM9MCBuby1vcGVuLWdvcCBtaW4ta2V5aW50PTEga2V5aW50PTEgZ29wLWxvb2thaGVhZD0wIGJmcmFtZXM9MCBiLWFkYXB0PTAgbm8tYi1weXJhbWlkIGJmcmFtZS1iaWFzPTAgcmMtbG9va2FoZWFkPTAgbG9va2FoZWFkLXNsaWNlcz00IHNjZW5lY3V0PTAgbm8taGlzdC1zY2VuZWN1dCByYWRsPTAgbm8tc3BsaWNlIG5vLWludHJhLXJlZnJlc2ggY3R1PTMyIG1pbi1jdS1zaXplPTE2IG5vLXJlY3Qgbm8tYW1wIG1heC10dS1zaXplPTMyIHR1LWludGVyLWRlcHRoPTEgdHUtaW50cmEtZGVwdGg9MSBsaW1pdC10dT0wIHJkb3EtbGV2ZWw9MCBkeW5hbWljLXJkPTAuMDAgbm8tc3NpbS1yZCBuby1zaWduaGlkZSBuby10c2tpcCBuci1pbnRyYT0wIG5yLWludGVyPTAgbm8tY29uc3RyYWluZWQtaW50cmEgc3Ryb25nLWludHJhLXNtb290aGluZyBtYXgtbWVyZ2U9MiBsaW1pdC1yZWZzPTAgbm8tbGltaXQtbW9kZXMgbWU9MCBzdWJtZT0wIG1lcmFuZ2U9NTcgdGVtcG9yYWwtbXZwIG5vLWZyYW1lLWR1cCBuby1obWUgbm8td2VpZ2h0cCBuby13ZWlnaHRiIG5vLWFuYWx5emUtc3JjLXBpY3MgZGVibG9jaz0wOjAgbm8tc2FvIG5vLXNhby1ub24tZGVibG9jayByZD0yIHNlbGVjdGl2ZS1zYW89MCBlYXJseS1za2lwIHJza2lwIGZhc3QtaW50cmEgbm8tdHNraXAtZmFzdCBuby1jdS1sb3NzbGVzcyBuby1iLWludHJhIG5vLXNwbGl0cmQtc2tpcCByZHBlbmFsdHk9MCBwc3ktcmQ9Mi4wMCBwc3ktcmRvcT0wLjAwIG5vLXJkLXJlZmluZSBuby1sb3NzbGVzcyBjYnFwb2Zmcz0wIGNycXBvZmZzPTAgcmM9Y3JmIGNyZj0yOC4wIHFjb21wPTAuNjAgcXBzdGVwPTQgc3RhdHMtd3JpdGU9MCBzdGF0cy1yZWFkPTAgaXByYXRpbz0xLjQwIGFxLW1vZGU9MCBhcS1zdHJlbmd0aD0wLjAwIG5vLWN1dHJlZSB6b25lLWNvdW50PTAgbm8tc3RyaWN0LWNiciBxZy1zaXplPTMyIG5vLXJjLWdyYWluIHFwbWF4PTY5IHFwbWluPTAgbm8tY29uc3QtdmJ2IHNhcj0xIG92ZXJzY2FuPTAgdmlkZW9mb3JtYXQ9NSByYW5nZT0wIGNvbG9ycHJpbT0yIHRyYW5zZmVyPTIgY29sb3JtYXRyaXg9MiBjaHJvbWFsb2M9MCBkaXNwbGF5LXdpbmRvdz0wIGNsbD0wLDAgbWluLWx1bWE9MCBtYXgtbHVtYT0yNTUgbG9nMi1tYXgtcG9jLWxzYj04IHZ1aS10aW1pbmctaW5mbyB2dWktaHJkLWluZm8gc2xpY2VzPTEgbm8tb3B0LXFwLXBwcyBuby1vcHQtcmVmLWxpc3QtbGVuZ3RoLXBwcyBuby1tdWx0aS1wYXNzLW9wdC1ycHMgc2NlbmVjdXQtYmlhcz0wLjA1IG5vLW9wdC1jdS1kZWx0YS1xcCBuby1hcS1tb3Rpb24gbm8taGRyMTAgbm8taGRyMTAtb3B0IG5vLWRoZHIxMC1vcHQgbm8taWRyLXJlY292ZXJ5LXNlaSBhbmFseXNpcy1yZXVzZS1sZXZlbD0wIGFuYWx5c2lzLXNhdmUtcmV1c2UtbGV2ZWw9MCBhbmFseXNpcy1sb2FkLXJldXNlLWxldmVsPTAgc2NhbGUtZmFjdG9yPTAgcmVmaW5lLWludHJhPTAgcmVmaW5lLWludGVyPTAgcmVmaW5lLW12PTEgcmVmaW5lLWN0dS1kaXN0b3J0aW9uPTAgbm8tbGltaXQtc2FvIGN0dS1pbmZvPTAgbm8tbG93cGFzcy1kY3QgcmVmaW5lLWFuYWx5c2lzLXR5cGU9MCBjb3B5LXBpYz0xIG1heC1hdXNpemUtZmFjdG9yPTEuMCBuby1keW5hbWljLXJlZmluZSBuby1zaW5nbGUtc2VpIG5vLWhldmMtYXEgbm8tc3Z0IG5vLWZpZWxkIHFwLWFkYXB0YXRpb24tcmFuZ2U9MS4wMCBzY2VuZWN1dC1hd2FyZS1xcD0wY29uZm9ybWFuY2Utd2luZG93LW9mZnNldHMgcmlnaHQ9MCBib3R0b209MCBkZWNvZGVyLW1heC1yYXRlPTAgbm8tdmJ2LWxpdmUtbXVsdGktcGFzcyBuby1tY3N0ZiBuby1zYnJjIG5vLWZyYW1lLXJjgAAAASgBrcLjAFwEgEQEADwDgDgDgDQDFlYmgDACwCwCgCgCQCQCQCQCYNEX/8/CcyLuuu2nGKAAAAMAAAMAAAMCEgdwaCTacYoAAAMAAAMAAAMABEQI1dtOMUAAAAMAAAMAAAMAElAMJyWgAAADAAADAAADAAAqYA5IgAAAAwAAAwAAAwAAGTARgAAAAwAAAwAAAwAAB9QAAAMAAAMAAAMAAAMAAQsAAAMAAAMAAAMAAAMAGBAAAAMAAAMAAAMAAAMBkQAAAwAAAwAAAwAADTgAAAMAAnJXh0f6dh91ZYSfYA2WZGi8L4B4Km93Ubr5/EFPTj6FOBGEL/s1k6y5ZvJx9Rlg/VUGc79Ok5oWDJetrtsLEUH4QjulhGTw2WWHi1fKx08W4ltGWipQDk4q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",
10174
- waking: "AAAAAUABDAH//wQIAAADAJ+oAAADAABdugJAAAAAAUIBAQQIAAADAJ+oAAADAABdoAKAgC0WW6SkwvAWgIAAAAMAgAAAAwCEAAAAAUQBwHGDEgAAAU4BBf///////////wQsot4JtRdH27tVpP5/wvxOeDI2NSAoYnVpbGQgMjE1KSAtIDQuMSsxLTFkMTE3YmU6W01hYyBPUyBYXVtjbGFuZyAxNi4wLjBdWzY0IGJpdF0gOGJpdCsxMGJpdCsxMmJpdCAtIEguMjY1L0hFVkMgY29kZWMgLSBDb3B5cmlnaHQgMjAxMy0yMDE4IChjKSBNdWx0aWNvcmV3YXJlLCBJbmMgLSBodHRwOi8veDI2NS5vcmcgLSBvcHRpb25zOiBjcHVpZD05OCBmcmFtZS10aHJlYWRzPTMgd3BwIG5vLXBtb2RlIG5vLXBtZSBuby1wc25yIG5vLXNzaW0gbG9nLWxldmVsPTIgYml0ZGVwdGg9OCBpbnB1dC1jc3A9MSBmcHM9MS8xIGlucHV0LXJlcz0xMjgweDcyMCBpbnRlcmxhY2U9MCB0b3RhbC1mcmFtZXM9MCBsZXZlbC1pZGM9MCBoaWdoLXRpZXI9MSB1aGQtYmQ9MCByZWY9MSBuby1hbGxvdy1ub24tY29uZm9ybWFuY2UgcmVwZWF0LWhlYWRlcnMgYW5uZXhiIG5vLWF1ZCBuby1lb2Igbm8tZW9zIG5vLWhyZCBpbmZvIGhhc2g9MCB0ZW1wb3JhbC1sYXllcnM9MCBuby1vcGVuLWdvcCBtaW4ta2V5aW50PTEga2V5aW50PTEgZ29wLWxvb2thaGVhZD0wIGJmcmFtZXM9MCBiLWFkYXB0PTAgbm8tYi1weXJhbWlkIGJmcmFtZS1iaWFzPTAgcmMtbG9va2FoZWFkPTAgbG9va2FoZWFkLXNsaWNlcz00IHNjZW5lY3V0PTAgbm8taGlzdC1zY2VuZWN1dCByYWRsPTAgbm8tc3BsaWNlIG5vLWludHJhLXJlZnJlc2ggY3R1PTMyIG1pbi1jdS1zaXplPTE2IG5vLXJlY3Qgbm8tYW1wIG1heC10dS1zaXplPTMyIHR1LWludGVyLWRlcHRoPTEgdHUtaW50cmEtZGVwdGg9MSBsaW1pdC10dT0wIHJkb3EtbGV2ZWw9MCBkeW5hbWljLXJkPTAuMDAgbm8tc3NpbS1yZCBuby1zaWduaGlkZSBuby10c2tpcCBuci1pbnRyYT0wIG5yLWludGVyPTAgbm8tY29uc3RyYWluZWQtaW50cmEgc3Ryb25nLWludHJhLXNtb290aGluZyBtYXgtbWVyZ2U9MiBsaW1pdC1yZWZzPTAgbm8tbGltaXQtbW9kZXMgbWU9MCBzdWJtZT0wIG1lcmFuZ2U9NTcgdGVtcG9yYWwtbXZwIG5vLWZyYW1lLWR1cCBuby1obWUgbm8td2VpZ2h0cCBuby13ZWlnaHRiIG5vLWFuYWx5emUtc3JjLXBpY3MgZGVibG9jaz0wOjAgbm8tc2FvIG5vLXNhby1ub24tZGVibG9jayByZD0yIHNlbGVjdGl2ZS1zYW89MCBlYXJseS1za2lwIHJza2lwIGZhc3QtaW50cmEgbm8tdHNraXAtZmFzdCBuby1jdS1sb3NzbGVzcyBuby1iLWludHJhIG5vLXNwbGl0cmQtc2tpcCByZHBlbmFsdHk9MCBwc3ktcmQ9Mi4wMCBwc3ktcmRvcT0wLjAwIG5vLXJkLXJlZmluZSBuby1sb3NzbGVzcyBjYnFwb2Zmcz0wIGNycXBvZmZzPTAgcmM9Y3JmIGNyZj0yOC4wIHFjb21wPTAuNjAgcXBzdGVwPTQgc3RhdHMtd3JpdGU9MCBzdGF0cy1yZWFkPTAgaXByYXRpbz0xLjQwIGFxLW1vZGU9MCBhcS1zdHJlbmd0aD0wLjAwIG5vLWN1dHJlZSB6b25lLWNvdW50PTAgbm8tc3RyaWN0LWNiciBxZy1zaXplPTMyIG5vLXJjLWdyYWluIHFwbWF4PTY5IHFwbWluPTAgbm8tY29uc3QtdmJ2IHNhcj0xIG92ZXJzY2FuPTAgdmlkZW9mb3JtYXQ9NSByYW5nZT0wIGNvbG9ycHJpbT0yIHRyYW5zZmVyPTIgY29sb3JtYXRyaXg9MiBjaHJvbWFsb2M9MCBkaXNwbGF5LXdpbmRvdz0wIGNsbD0wLDAgbWluLWx1bWE9MCBtYXgtbHVtYT0yNTUgbG9nMi1tYXgtcG9jLWxzYj04IHZ1aS10aW1pbmctaW5mbyB2dWktaHJkLWluZm8gc2xpY2VzPTEgbm8tb3B0LXFwLXBwcyBuby1vcHQtcmVmLWxpc3QtbGVuZ3RoLXBwcyBuby1tdWx0aS1wYXNzLW9wdC1ycHMgc2NlbmVjdXQtYmlhcz0wLjA1IG5vLW9wdC1jdS1kZWx0YS1xcCBuby1hcS1tb3Rpb24gbm8taGRyMTAgbm8taGRyMTAtb3B0IG5vLWRoZHIxMC1vcHQgbm8taWRyLXJlY292ZXJ5LXNlaSBhbmFseXNpcy1yZXVzZS1sZXZlbD0wIGFuYWx5c2lzLXNhdmUtcmV1c2UtbGV2ZWw9MCBhbmFseXNpcy1sb2FkLXJldXNlLWxldmVsPTAgc2NhbGUtZmFjdG9yPTAgcmVmaW5lLWludHJhPTAgcmVmaW5lLWludGVyPTAgcmVmaW5lLW12PTEgcmVmaW5lLWN0dS1kaXN0b3J0aW9uPTAgbm8tbGltaXQtc2FvIGN0dS1pbmZvPTAgbm8tbG93cGFzcy1kY3QgcmVmaW5lLWFuYWx5c2lzLXR5cGU9MCBjb3B5LXBpYz0xIG1heC1hdXNpemUtZmFjdG9yPTEuMCBuby1keW5hbWljLXJlZmluZSBuby1zaW5nbGUtc2VpIG5vLWhldmMtYXEgbm8tc3Z0IG5vLWZpZWxkIHFwLWFkYXB0YXRpb24tcmFuZ2U9MS4wMCBzY2VuZWN1dC1hd2FyZS1xcD0wY29uZm9ybWFuY2Utd2luZG93LW9mZnNldHMgcmlnaHQ9MCBib3R0b209MCBkZWNvZGVyLW1heC1yYXRlPTAgbm8tdmJ2LWxpdmUtbXVsdGktcGFzcyBuby1tY3N0ZiBuby1zYnJjIG5vLWZyYW1lLXJjgAAAASgBrcLiwLgSAiBAB4DgHAOAaAyfX/AGgLAWAoBQCQEgJASAmNEX/8/CcyLuuu2nGKAAAAMAAAMAAAMCEgdwaCTacYoAAAMAAAMAAAMABEQI1dtOMUAAAAMAAAMAAAMAElAMJyWgAAADAAADAAADAAAqYA5IgAAAAwAAAwAAAwAAGTARgAAAAwAAAwAAAwAAB9QAAAMAAAMAAAMAAAMAAQsAAAMAAAMAAAMAAAMAGBAAAAMAAAMAAAMAAAMBkQAAAwAAAwAAAwAADTgAAAMAAMsbsDkcoZgDIVg0QtuHSsRxkPs93x2tkl6E1gXx0vsrK+j+vQJ0cELr/DHTvsNk9haL5Nc9sUfbRjjmhBTJTjTszXpCeksgb575CVY08mk/BPfZmrL7JLcxTIpD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"
10175
- }
10176
- };
10177
- var cache = {};
10178
- /**
10179
- * Get the pre-encoded placeholder frame for `(kind, codec)`. Buffer
10180
- * is created once on first use per (codec, kind) pair and cached
10181
- * permanently — safe to call from hot paths (~5-9KB per pair, ~60KB
10182
- * worst-case across both codecs and all five states).
10183
- */
10184
- function getPlaceholderFrame(kind, codec) {
10185
- const codecCache = cache[codec] ?? (cache[codec] = {});
10186
- const cached = codecCache[kind];
10187
- if (cached) return cached;
10188
- const buf = Buffer.from(FRAME_B64[codec][kind], "base64");
10189
- codecCache[kind] = buf;
10190
- return buf;
10342
+ //#region src/stream-broker/stream-broker/opus-encode-session.ts
10343
+ var POLL_INTERVAL_MS = 40;
10344
+ var MAX_ENCODED_PER_POLL = 16;
10345
+ var WARN_THROTTLE_MS = 5e3;
10346
+ var OPUS_CODEC = "opus";
10347
+ var SESSION_NOT_FOUND_RE = /encode session\b.*\bnot found\b/;
10348
+ function isSessionGone(err) {
10349
+ return SESSION_NOT_FOUND_RE.test(require_dist.errMsg(err));
10191
10350
  }
10192
- //#endregion
10193
- //#region src/stream-broker/stream-broker/stream-pipe-server.ts
10194
- /**
10195
- * A lightweight TCP server that broadcasts raw encoded video bytes
10196
- * (H.264/H.265 Annex-B) to all connected clients.
10197
- *
10198
- * Each StreamBroker owns one StreamPipeServer. Restreamers (e.g. go2rtc)
10199
- * connect via `tcp://127.0.0.1:{port}` and receive the same byte stream
10200
- * that the broker reads from the camera, eliminating duplicate RTSP
10201
- * connections.
10202
- */
10203
- /** Max bytes queued in a client's write buffer before we consider it too slow */
10204
- var MAX_WRITE_BUFFER_BYTES = 2 * 1024 * 1024;
10205
- var StreamPipeServer = class {
10206
- server;
10207
- clients = /* @__PURE__ */ new Set();
10208
- port = 0;
10209
- started = false;
10351
+ var OpusEncodeSession = class {
10352
+ api;
10353
+ cfg;
10354
+ emit;
10210
10355
  logger;
10211
- _onClientCountChanged = null;
10212
- /** Register a callback invoked when pipe client count changes. */
10213
- onClientCountChanged(cb) {
10214
- this._onClientCountChanged = cb;
10215
- }
10216
- constructor(logger) {
10356
+ sessionId = null;
10357
+ sessionNodeId = null;
10358
+ creating = null;
10359
+ pollTimer = null;
10360
+ closed = false;
10361
+ chunksIn = 0;
10362
+ chunksDropped = 0;
10363
+ warnState = /* @__PURE__ */ new Map();
10364
+ constructor(api, cfg, emit, logger) {
10365
+ this.api = api;
10366
+ this.cfg = cfg;
10367
+ this.emit = emit;
10217
10368
  this.logger = logger;
10218
- this.server = node_net.default.createServer((socket) => {
10219
- this.handleConnection(socket);
10220
- });
10221
- this.server.on("error", (err) => {
10222
- this.logger?.error("StreamPipeServer error", { meta: { error: err.message } });
10223
- });
10224
10369
  }
10225
- async start() {
10226
- if (this.started) return;
10227
- await new Promise((resolve, reject) => {
10228
- this.server.once("error", reject);
10229
- this.server.listen(0, "127.0.0.1", () => {
10230
- this.server.removeListener("error", reject);
10231
- const address = this.server.address();
10232
- this.port = address.port;
10233
- this.started = true;
10234
- this.logger?.debug("StreamPipeServer listening", { meta: { port: this.port } });
10235
- resolve();
10370
+ /**
10371
+ * Push one decoded PCM chunk. The session is created lazily on the first
10372
+ * push; the poll loop then drains Opus frames back out via `emit`.
10373
+ * `pts` is source-relative ms (falls back to the chunk timestamp).
10374
+ */
10375
+ pushPcm(chunk) {
10376
+ if (this.closed) return;
10377
+ if (chunk.data.byteLength === 0) return;
10378
+ this.chunksIn++;
10379
+ const data = Uint8Array.from(chunk.data);
10380
+ const pts = chunk.timestamp;
10381
+ this.ensureSession().then((sid) => {
10382
+ if (!sid || this.closed) return;
10383
+ const nodeId = this.sessionNodeId ?? void 0;
10384
+ this.api.pushPcm({
10385
+ sessionId: sid,
10386
+ ...nodeId ? { nodeId } : {},
10387
+ data,
10388
+ pts
10389
+ }).catch((err) => {
10390
+ this.chunksDropped++;
10391
+ this.handlePushError("opus-encode: pushPcm failed", sid, err);
10236
10392
  });
10237
10393
  });
10238
10394
  }
10395
+ getStats() {
10396
+ return {
10397
+ chunksIn: this.chunksIn,
10398
+ chunksDropped: this.chunksDropped,
10399
+ sessionId: this.sessionId
10400
+ };
10401
+ }
10239
10402
  /**
10240
- * Broadcast raw encoded bytes to all connected clients.
10241
- * Silently drops data for clients that are slow or disconnected.
10403
+ * Release the upstream encode session + poll loop WITHOUT closing the handle
10404
+ * (demand-gate: no Opus consumer the encoder is pure waste). Reusable — the
10405
+ * next `pushPcm` re-creates the session. Mirrors the decode client's `idle`.
10242
10406
  */
10243
- broadcast(data) {
10244
- for (const client of this.clients) {
10245
- if (client.destroyed) {
10246
- this.clients.delete(client);
10247
- continue;
10248
- }
10249
- if (client.writableLength > MAX_WRITE_BUFFER_BYTES) {
10250
- this.logger?.warn("StreamPipeServer client buffer overflow — dropping client", { meta: { bufferMB: Number((client.writableLength / 1024 / 1024).toFixed(1)) } });
10251
- this.removeClient(client);
10252
- continue;
10253
- }
10254
- client.write(data, (err) => {
10255
- if (err) {
10256
- this.logger?.debug("StreamPipeServer write error, removing client", { meta: { error: err.message } });
10257
- this.removeClient(client);
10258
- }
10407
+ async idle() {
10408
+ if (this.closed) return;
10409
+ if (this.creating) await this.creating;
10410
+ if (this.closed) return;
10411
+ if (this.pollTimer) {
10412
+ clearInterval(this.pollTimer);
10413
+ this.pollTimer = null;
10414
+ }
10415
+ if (!this.sessionId) return;
10416
+ const sid = this.sessionId;
10417
+ const nodeId = this.sessionNodeId ?? void 0;
10418
+ this.sessionId = null;
10419
+ this.sessionNodeId = null;
10420
+ try {
10421
+ await this.api.closeSession({
10422
+ sessionId: sid,
10423
+ ...nodeId ? { nodeId } : {}
10259
10424
  });
10425
+ } catch (err) {
10426
+ this.logger?.warn("opus-encode: idle closeSession failed", { meta: { error: require_dist.errMsg(err) } });
10260
10427
  }
10428
+ this.logger?.info("opus-encode: encode session idled (no opus consumer)", { meta: { sessionId: sid } });
10261
10429
  }
10262
- getPort() {
10263
- return this.port;
10264
- }
10265
- getUrl() {
10266
- return `tcp://127.0.0.1:${this.port}`;
10267
- }
10268
- getClientCount() {
10269
- return this.clients.size;
10270
- }
10271
- isStarted() {
10272
- return this.started;
10273
- }
10274
- async stop() {
10275
- if (!this.started) return;
10276
- this.started = false;
10277
- this._onClientCountChanged = null;
10278
- for (const client of this.clients) client.destroy();
10279
- this.clients.clear();
10280
- await new Promise((resolve) => {
10281
- this.server.close(() => {
10282
- this.logger?.debug("StreamPipeServer stopped");
10283
- resolve();
10430
+ async close() {
10431
+ if (this.closed) return;
10432
+ this.closed = true;
10433
+ if (this.pollTimer) {
10434
+ clearInterval(this.pollTimer);
10435
+ this.pollTimer = null;
10436
+ }
10437
+ if (!this.sessionId) return;
10438
+ const sid = this.sessionId;
10439
+ const nodeId = this.sessionNodeId ?? void 0;
10440
+ try {
10441
+ const tail = await this.api.flushEncode({
10442
+ sessionId: sid,
10443
+ ...nodeId ? { nodeId } : {}
10284
10444
  });
10285
- });
10445
+ for (const enc of tail) this.emitEncoded(enc);
10446
+ } catch (err) {
10447
+ if (!isSessionGone(err)) this.warnThrottled("opus-encode: flushEncode failed", require_dist.errMsg(err));
10448
+ }
10449
+ try {
10450
+ await this.api.closeSession({
10451
+ sessionId: sid,
10452
+ ...nodeId ? { nodeId } : {}
10453
+ });
10454
+ } catch (err) {
10455
+ this.logger?.warn("opus-encode: closeSession failed", { meta: { error: require_dist.errMsg(err) } });
10456
+ }
10457
+ this.sessionId = null;
10458
+ this.sessionNodeId = null;
10286
10459
  }
10287
- handleConnection(socket) {
10288
- this.clients.add(socket);
10289
- this.logger?.debug("StreamPipeServer client connected", { meta: { total: this.clients.size } });
10290
- this._onClientCountChanged?.();
10291
- socket.on("close", () => {
10460
+ async ensureSession() {
10461
+ if (this.sessionId) return this.sessionId;
10462
+ if (this.creating) return this.creating;
10463
+ this.creating = (async () => {
10464
+ try {
10465
+ const res = await this.api.createEncodeSession({
10466
+ codec: OPUS_CODEC,
10467
+ sourceSampleRate: this.cfg.sourceSampleRate,
10468
+ sourceChannels: this.cfg.sourceChannels,
10469
+ ...this.cfg.sourceFormat ? { sourceFormat: this.cfg.sourceFormat } : {},
10470
+ targetSampleRate: this.cfg.targetSampleRate,
10471
+ targetChannels: this.cfg.targetChannels,
10472
+ ...this.cfg.bitrateKbps ? { bitrateKbps: this.cfg.bitrateKbps } : {},
10473
+ ...this.cfg.tag ? { tag: this.cfg.tag } : {}
10474
+ });
10475
+ if (this.closed) {
10476
+ try {
10477
+ await this.api.closeSession({
10478
+ sessionId: res.sessionId,
10479
+ ...res.nodeId ? { nodeId: res.nodeId } : {}
10480
+ });
10481
+ } catch (err) {
10482
+ this.logger?.warn("opus-encode: closeSession (closed mid-create) failed", { meta: { error: require_dist.errMsg(err) } });
10483
+ }
10484
+ return null;
10485
+ }
10486
+ this.sessionId = res.sessionId;
10487
+ this.sessionNodeId = res.nodeId;
10488
+ this.startPollLoop();
10489
+ this.logger?.info("opus-encode: encode session ready", { meta: {
10490
+ sessionId: res.sessionId,
10491
+ nodeId: res.nodeId,
10492
+ source: `${this.cfg.sourceSampleRate}Hz×${this.cfg.sourceChannels}`,
10493
+ target: `${this.cfg.targetSampleRate}Hz×${this.cfg.targetChannels} opus`
10494
+ } });
10495
+ return res.sessionId;
10496
+ } catch (err) {
10497
+ this.logger?.error("opus-encode: createEncodeSession failed", { meta: { error: require_dist.errMsg(err) } });
10498
+ return null;
10499
+ } finally {
10500
+ this.creating = null;
10501
+ }
10502
+ })();
10503
+ return this.creating;
10504
+ }
10505
+ startPollLoop() {
10506
+ if (this.pollTimer || this.closed) return;
10507
+ this.pollTimer = setInterval(() => {
10508
+ this.pollOnce();
10509
+ }, POLL_INTERVAL_MS);
10510
+ if (typeof this.pollTimer.unref === "function") this.pollTimer.unref();
10511
+ }
10512
+ async pollOnce() {
10513
+ const sid = this.sessionId;
10514
+ if (!sid || this.closed) return;
10515
+ const nodeId = this.sessionNodeId ?? void 0;
10516
+ try {
10517
+ const encoded = await this.api.pullEncoded({
10518
+ sessionId: sid,
10519
+ ...nodeId ? { nodeId } : {},
10520
+ maxCount: MAX_ENCODED_PER_POLL
10521
+ });
10522
+ for (const enc of encoded) this.emitEncoded(enc);
10523
+ } catch (err) {
10524
+ if (isSessionGone(err)) {
10525
+ this.handleSessionGone(sid);
10526
+ return;
10527
+ }
10528
+ this.warnThrottled("opus-encode: pullEncoded failed", require_dist.errMsg(err));
10529
+ }
10530
+ }
10531
+ emitEncoded(enc) {
10532
+ if (enc.data.byteLength === 0) return;
10533
+ this.emit({
10534
+ data: Buffer.from(enc.data),
10535
+ ptsMs: enc.pts
10536
+ });
10537
+ }
10538
+ handleSessionGone(staleSid) {
10539
+ if (this.sessionId !== staleSid) return;
10540
+ this.sessionId = null;
10541
+ this.sessionNodeId = null;
10542
+ if (this.pollTimer) {
10543
+ clearInterval(this.pollTimer);
10544
+ this.pollTimer = null;
10545
+ }
10546
+ this.warnThrottled("opus-encode: session reaped upstream — will re-create on next chunk", `staleSessionId=${staleSid}`);
10547
+ }
10548
+ handlePushError(label, sid, err) {
10549
+ if (isSessionGone(err)) {
10550
+ this.handleSessionGone(sid);
10551
+ return;
10552
+ }
10553
+ this.warnThrottled(label, require_dist.errMsg(err));
10554
+ }
10555
+ warnThrottled(label, detail) {
10556
+ const key = `${label}|${detail}`;
10557
+ const now = Date.now();
10558
+ const prev = this.warnState.get(key);
10559
+ if (prev && now - prev.lastLoggedAt < WARN_THROTTLE_MS) {
10560
+ prev.suppressed++;
10561
+ return;
10562
+ }
10563
+ const suppressed = prev?.suppressed ?? 0;
10564
+ this.warnState.set(key, {
10565
+ lastLoggedAt: now,
10566
+ suppressed: 0
10567
+ });
10568
+ this.logger?.warn(label, { meta: {
10569
+ error: detail,
10570
+ ...suppressed > 0 ? { suppressedSinceLastLog: suppressed } : {}
10571
+ } });
10572
+ }
10573
+ };
10574
+ var OPUS_SILENCE_RATE_HZ = 48e3;
10575
+ var OPUS_SILENCE_FRAME_SAMPLES = 960;
10576
+ var OPUS_SILENCE_PRIME_FRAMES = 6;
10577
+ /**
10578
+ * Produce ONE canonical 20 ms Opus silence packet by encoding PCM zeros through
10579
+ * the audio-codec cap, for the WebRTC session's prestream A/V-sync padding
10580
+ * (Opus has no fixed "silence byte" like PCMU's 0xFF — silence must be encoded).
10581
+ * A short-lived encode session is created, primed with a few zero frames, and
10582
+ * flushed; the LAST steady-state frame is returned. Returns `null` when the cap
10583
+ * is unavailable or yields nothing so the caller can skip prestream padding.
10584
+ */
10585
+ async function encodeOpusSilenceFrame(api, cfg) {
10586
+ let sessionId = null;
10587
+ let nodeId;
10588
+ try {
10589
+ const res = await api.createEncodeSession({
10590
+ codec: OPUS_CODEC,
10591
+ sourceSampleRate: OPUS_SILENCE_RATE_HZ,
10592
+ sourceChannels: cfg.channels,
10593
+ sourceFormat: "f32le",
10594
+ targetSampleRate: OPUS_SILENCE_RATE_HZ,
10595
+ targetChannels: cfg.channels,
10596
+ ...cfg.bitrateKbps ? { bitrateKbps: cfg.bitrateKbps } : {},
10597
+ tag: "opus-silence"
10598
+ });
10599
+ sessionId = res.sessionId;
10600
+ nodeId = res.nodeId;
10601
+ const zeros = Buffer.alloc(OPUS_SILENCE_FRAME_SAMPLES * cfg.channels * 4);
10602
+ const collected = [];
10603
+ for (let i = 0; i < OPUS_SILENCE_PRIME_FRAMES; i++) {
10604
+ await api.pushPcm({
10605
+ sessionId,
10606
+ ...nodeId ? { nodeId } : {},
10607
+ data: zeros,
10608
+ pts: i * 20
10609
+ });
10610
+ const out = await api.pullEncoded({
10611
+ sessionId,
10612
+ ...nodeId ? { nodeId } : {},
10613
+ maxCount: 8
10614
+ });
10615
+ for (const e of out) if (e.data.byteLength > 0) collected.push(Buffer.from(e.data));
10616
+ }
10617
+ const tail = await api.flushEncode({
10618
+ sessionId,
10619
+ ...nodeId ? { nodeId } : {}
10620
+ });
10621
+ for (const e of tail) if (e.data.byteLength > 0) collected.push(Buffer.from(e.data));
10622
+ return collected.length > 0 ? collected[collected.length - 1] : null;
10623
+ } catch {
10624
+ return null;
10625
+ } finally {
10626
+ if (sessionId) await api.closeSession({
10627
+ sessionId,
10628
+ ...nodeId ? { nodeId } : {}
10629
+ }).catch(() => {});
10630
+ }
10631
+ }
10632
+ //#endregion
10633
+ //#region src/stream-broker/stream-broker/placeholder-frames.ts
10634
+ var FRAME_B64 = {
10635
+ h264: {
10636
+ reconnecting: "AAAAAWdCwB/aAUAW7ARAAAADAEAAAAMAg8YMqAAAAAFozg/IAAABZYiEOiYoAAjgycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJyddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddcdgARwAaAfgvaKICMwoLAOgADxEIjArGFj0HzJsgAA2AHATLIAAMgBQE3ACIwbKGUWeUI9Xg4ABsAOAmWHAANgBwEyywADYAAgMGRwADYAAgMGQ4ABkAKAm4QAAYAHAq4HAAMgBQE3A4ABgAcCrn4/ABwjgGMCXnxbX/yxvWnTbBwke+QAqCJtK/C/ANHYwBiaibAhFAwNAYBETMKEp/DdMAAVluoAAgKyf8BWwZFmQC+raGBG1IAwEgPQdQ7AEAYHCVS5MuqyLBIm21NwPwEdMjMJ8h2KQPTQfEi5poyZEw/1NvqAA8ZCKyiNLHIZ6XyAADIAQDbgYAro/YCAZstAw/vNEAqAAIBiyrw4ABkAIBtzDgAGQAgG3B/4BjvB/2xbteXFxm4BcTAgkL5YdfLwCIgyByUFDRzz1eDr5YdfLLAANgACAwZHAANgACAwZyAACgAgCrmHAAKACAKufvZY7AA7AACAQAQPJEWx8kFDGRyZ/eABHf9E/EeMqpJFVe/gAeJVOoQrZdIPEev4AH8J5YVwwpkr3+37/+/wGgClGk1MvAN9VJ6BIUWVMODsABAPgACACEiJKqGeGhQqwRGuD0AAYoXqu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RLHYAEH1zdzf/gBMRiKyHMpRkqWH47AARBqhDjKTaFvcon/4AD5EY1QhM4voRkAAGgA4CJYAQtDIw6J8ppDx2AAiMyIBjO3ee9zH/+GBI/NvyAADQAcBEsADBYIweqs4k4sfgAIADAgkqwysyUKlCrRIqQ/wACEUSqy5aKeEb/0JWYE4gmijPjBpr7TQ78AAkQAAQEhUmDIwVtWD8meJumEurCowj2gJxHrWF5hvElDlMS7OasJqgA2Y5AHeoAAgKVzv/oNWfEBRXSABffbEAAE1AAEBS4wAAQAAEA24AE0TAihBEW1YKjTLkAAGgA4HS8fgAIGHBQoVzpjA7v1bsT4PxEgrgFIFpyZIAPcgPZk4xdCozhgB6De+qQEPg0EOzwYwJxxFVGfMGQfJFhwG0eU+Q8DSdo86EALwQR/bIyIDJXBFlFl4E3kNhenCVOaDsBQAIBAkmNOyGGSSVsAjkDV3wI6MjMEXMOhrAxpjMxp4ijbpzzSk+A87YQeoiABfu/sQpLw2zMgCE+/pUAntEGlsl0IgB+UAQBdCsHAQuUFDsqfjw6ZYdNVslPB2AAgYAfhIwvZMuvFIEKDvPyBwAKeiEp3qDIWsbh9ENEH5R+FmHPA0cqMNUxNgC/mp4bj7pbSXp9DEAiQUaWx2rYrlD3E2AIS++5yZmgmAw7d8BLALbDw8skKUFK/v1qEQbDgUp5QNIQAAbACAfcXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXeG+/367w3+/33+/37777799d99/v994b77799/v9dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddeA=",
10637
+ sleeping: "AAAAAWdCwB/aAUAW7ARAAAADAEAAAAMAg8YMqAAAAAFozg/IAAABZYiEOiYoAAjgycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJyddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddcdgAIBgAEPwDIl6AJKw3fccBLCZwAHKurzmDTjrCx0AC1cGKrrkpgC3X4FFZAP0Uaf7/6gZgeKmof6pKQDFucb/wYp75WNKMZMNLhTAUAVnFsltEAGDB64A7LxPeqngCF4/AEAgcCPCbK0wt32oU2+7FSzAg1zwoGYY6J5NiACWYMvJ4xAAWoI254HCYUE/1doEB1DA/VNnAlhlGCkobZhpf/euUyMgit1MDgPz//6ewJdgXXJoQEX0DzktM5h4U0h2AkYAK8DY5OrsAFl7Vq4BIA2V6cjTQdhKNqXYkqw0Ut8ACnIZCjJ8wppIEyAEBACbgYAH5v2DCCkY/LAsAA2AAIDBmjkDKJTBzRBfXvDgICAE3PDgICAE3B34bu7nOdwABBIAAEAze9gASAiIAANgBwEywAnMzGqlKMc30jsgAAoAwIuB/hwACgDAi5hwACgDAi5+uOwAGBRTAPA9QGwrbYCgnAuAAUaIZHGW0Qlv50gAA2AHATLIAAIgGAbcw4ABsAOAmWHAANgBwEywCIgbApKijwCmPV4sAA2AAIDBkOAARAMA25hwACIBgG3MgAAwAIBFzDgAGABAIub8dgAIAs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iKqL+gYHiILNZcsFvCN/7TQOklXDjIuln8BV+nTmgMEwFLygbIkJCH35eOw8AAiD7JgAcORoP8BzLgiAWU+vfhmNvSMEUAwAPN5nmcCBboVnqVIQUTiFiZzyAACoBQbcxDgGAB4jM8SgBBakVng6AwrALSNMvToZltGEAAFQCg25gp2jAGB/jQ8e8dgAoAAIEIAAgCAERjADRCK2tqF/+B1ncwFQADVtoAQDoi4gAA0AGARLH4ACAEGLASmcBNaIPDDzUpHKT//+ACWBDkZTThJEXIDgBDiLmoAAbELBYzxmDgAGwA4CZa6666666666666666666666666666666666666666666666666666666666647AAYAGHWAELGCgIvxicO8WuFYAJSiqBLnAC954PAZRlkFw48wBjdNbJpgAGcthxDGwsUX4QK6KKdCKCxy/3/1B31BhNY1iYGYYYAFC2ILP5UGFgJYAAvPYYiPuTXAIdfsbiMBS0wDgZ3fD8ABAAwDCoFzPz1a4pq2Y//wAKbIkxlVhMSvMoIDpiNGax3lAABAPADGCdsQasEP2eEAAEQIFywDKAAh1THGcvPUQswHTI3ppv9SpZikOQXjfYXAIcuYlKByRh2AEggQPVOkjRH9A4nMhK2/+AHJSIAGAXqwEjy0AEtVZVTO8VKyZas51kkk4/kTLs4fFtoEbODpKFTEWkYbgxSiAiM8BYToQcwwVQgABYAAQCYfgAVpjKQZEeW0hw7AAQBBCQMRYRZFGrUswC1NJn/AB+YSgzkvKANT9XiAADQAcBEsSAAaBR5sYU5iwADQAAgMmQcAA0AAIDJkgAA0AHARLDgAGgA4CJY/AAQ2YAF9alAw4dH63z5///ABzDTiIaSwr1eLAANgACAwZAhshJylENViRhAABsAMAmWOwAGhxDANI9WqgHIDEWqH/gBFIxlYZVJLW5hAABoAOAiWAD8wTghCyTgC1/V4sAA0AAIDJkSAAaAoabGGOYgAA0AHARLfHYAFgYwPTqkREPiuR6WOrf4OAAaAAEBkyAD4gNkBWGC1WvV4DgAGgA4CJYCxGIrIKwwchnhj4YAFeYihnJjixpTw7AAQBBCQORQZRFm7dtwCXuZP8AHYS4X2OaT6vFgAGgABAZMqAAGgoo2MI8xAABoAOAiWDgAGgABAZMg4ABoAAQGTIcAA0AHARLDgAGgA4CJY/AAiA/REZ5Ef/+ADmawkKKhnq9AhtEszCH7PMHYACIzIgGM7dx73Mf//D4HAANABwESwCMhiMNwUq0nu0u+OwAEYGiiY7W07Hu0n/wAQXkrekEAAGgA4CJeAFU8EYPFSITYTDHYACYD3Gp1vplPdb//wAMwpgASLMoA4FU+uOBDFzECF3kwx+AAhOAwe+XLfLD74RzmJ7dP4ALJXJiAtpYEDu37tFrI5i6oBGY0+cykFxS7tZgTiiKqL+nhgeIgt1lywW8I3/vjvwzgOkbjQnaYGUzWh46wSG9hcMNk2S6/jjNXFAA91AAEAgPyAgcAq5gBJIpYUQVuRu/xTQgAA0AHARLwAhNNIybF0UMfgKcAqAQLCQh7WF+Rdn0fvgMIJ7NygR8kAeB1f9ABOwXNNMoUZFwyBrAT30yAj4NAYPw7WIXGiLrreAU7MEWEAqjzF8XO4M3MBUHHw8GZJBpXARoxvrlyMTifGkLawCM2RobdCoz2wo1BNm8AEK/fD8AFAACoD4AAbWtAFsNT9/zfAkF+gkFgO1QGJqIoc6gYNQ5ZwABAKfk8x8oBLaIkXvvNCQEAAIAdzwcGUAAIFgtp+A4coBHVIY7/74tIBAACAPFh2IEQ/AHR3g7AAYAAIA6DgQoPIwhiOjamwn6R8ADGUsz0LKujNEL01cCoErP/f+oMo92eSJTz3cXyTAl+AAEBK2sFwtxqwBCH32v2QQkWYIScAg7ALfYHfrssBHC8gAEMJua6666666666666666666666666666666666666666666666666666666666677/f7994a79+++uu/313hvv9/rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrw",
10638
+ offline: "AAAAAWdCwB/aAUAW7ARAAAADAEAAAAMAg8YMqAAAAAFozg/IAAABZYiEOiYoAAjgycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJydddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddcdgAIAQcsOSSTTLlyxZIuXLf/wANhc8uVQgps2//QWgElpnArSQHn3h2AA4ADBMADxxeJWO1OLfdS9Bs/QADCh193AxANb38ABYlU8UMVsskHiLn+/7YELICKS04HAb9fDqNXOPveYDnMTLoBSwIaP2fQPHkQGAM13p+//nbhoKtUCn5CaBgpIA2DKJLlxxnYqkpEkg/Dj8AQjAAGAQTCxyPvtmpwKevTsuUcA0IZIYc1H2mrLxnjMgBArJmNE66YDDcB4PVTiQCUnBCAVG3DyiSs+w2ogYtWIF/9++5cjIADMXOEB4ds/8CMzI0GTsLyk4MwuSpRR03i/4GBtiexCgh8GAnuHYCwAwAOaLf0Ksjw9oPzoJL+EIuLJSAFwLKft8ACmkaZGGN26bIABBBdzGuxC807SzIA/GTxFRjoUgdpAK8JbPkkAQ4GHABBBdzw4AIILuD/wGK0P66UdLhIiO/gyLGwgAEFHyw4AIKPl4BoAQqZQFiSKq8HABBR8sOACCj5ZYABsAAQGDI4ABsAAQGDOQgCAAEAy5h0AQAAgGXPx+ADzQAX3wKYaZJZhv4AJIGQLltPIMA4oagCR64BgklVe/+OwJBgjQLUqNfB7li3DaGr68AH5gihNcY80DU+8sAAoAAIBcCAADYAcBMsOAAbADgJl4BSHgdfKeAI96vQcAAoAAIBcIOAAUAAEAuEgACDDrkOABBh1wfklr+hMLYTC/8fgAWBDApYqs0DYIFLKW+dO0AD/MMIT9FGiigkUHsGEVChwugqvEAAGgAwCJYATEQiMgjCxvscLlgAGgABAZMoAAGgKCQVa5n+HAAMgBQNuQ4ABkAKBtwd+G7u7u7gACB8AAIAV73AaHXGRjI4K1hg9F8yYDIAANABwEXPw4ABoAOAi5hwADQAcBFz9cdgAIiIiAY78AHgjffeA2HoAH5jEaYUKVbH92iAADYAcBMssAAwAAIDLH1g4ABgAAQGWIOAAYAAEBlitY7AAQAlABwDB6RHs3Iw1/dV2kBmAAvowijfpRjSwJCAADYAcBMsgQAEAAIA9zAFjVB98lVCalxTfvAdhLux0KNq2ZBysLzD+LM2DiAAgABAHuYcQAEAAIA9z7NqNbJkeljKJV7kNEERJ/+wOchcQLwz5An9+DHYACAY7nue9z3Oe57nf/+AB53ELyhqQ8JGvv3+OwAsABHexj3vAAEHgAAQAAYAB4iERgVSixviJsrztiKHehB5Y0qeIAAMgDgXcIAIDgEXA/DgAGQBwLuBwCA4BFwOAAZAHAu4HAIDgEXPx2ABHABoB+C9ppgJzCgsA6AAPEQiEDsYSPQfMmyAADYAcBMsgAAyAFATcAIjBsoRRZ5B3q8HAANgBwEyw4ABsAOAmWWAAbAAEBgyOAAbAAEBgyHAAMgBQE3CAACwAoEXA4ABkAKAm4HAALACgRc/fjsABERAAEiIgCDHHKOOOAASRQMcuG6JXfGg6gzj39hhwt6vf//11111111111111111111111111111111111111111111111111111111111111x2ANgIKYkLJIOr4eOMY5Pjs+AKgm1HzxAABQAgMueTAIlwTniAACgBAZcq/6BVdiGORPDh4d2ChCQA4fDEDJlyZAMKBStQY8vAyNwABAPACQOazpeaAACAeAGkc1nSrgADSAKZiTv690vfHYA8AAoCAHhuaQc8ADzQQprEC+fVY5WAY/Ev3zxOAAXAHiAE55pAAEAQFqQ3Pf/JAAC4A8yAnPEwAAgCAtwH54Kj4Y57Uj6r1yKWOAQ/UP3vf+OwAERAACAEoBHCw1KhQ3hfaSyd4AKQIKRkNOEkRdMgAA2AHATLDgAGwA4CZcNACFTCQsSR1XvlgAGwABAYMjgAGwABAYM4/AAQ2AC8CO6Cc6hTYRVkRH/AAfIxkdBWFDf44WIAANABgES/oyBOgdhYhNj1eLAANAACAyZ+OwAEEUAGSD8ZPYOnMn8HTn/AApJEgAbMcKgNEd/0oeB1+t4Aj/q98fhnLYMJhbCYXQmFsJhY7AARmAA0A+6Lo01RujTWAC4hCtLJkSq6Pa7/g+DFbK5DjRhde//r11x2ADgAwIJJsMsMkgFBvjsYjEYfkAAQUZcAD0IokVmy0QQE3/4OABBR1zJORxPYfhRu3hwAIKOuBhwAIKOuY78EABAQJQfcmoeIJtWLOPMZOmEu7HQw2rA/IOVheYfhZ23RiXZzOYbVABeyZRIvchogiJP/3/4HOQuIFsI+QAI/fgywACwAAgEwAAuhFEqs2WiCAm//AAedxC8oakPCRr79/TCXdjoUbVsyDlYXmH4Wdsti47ABQKmDHgARHe0wGdhC8fAAeMhFZTHCivZ2VyAADYAcBMsOAAbADgJl6IwbKEWQeQf6vfLAANgACAwZHAANgACAwZ3x2AIEzIjIkHVgAV222ZhDfelB/TybCQhiCer3/9dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddcfgAIAYYsNSTSTKFShVIoVKfguANJBdPYQASfegbYRbIzhBbBfv9/8d8AAIH4AMHlglYFllLnlP7nT9IBsHtRkvBZgDYU8jkPKm6aaAYGqaANMBdiRQpmMgFi3fg/wQGii4QWaMRPAK/n7dNd67CAAEBgC7mocpYi/gcgEMv/AaKYxemgEJAlo/AwoFyyKBADcd6hxANiUwFAcir1LieUgpHg8PwAEDOAAYDyYXNgg9Wam8n6tOz4AF8KPK5QQ6DQ1/AAU2REwy9hOSnCILEvpwHsJL/RKyWM8BFABAjJjDVtbxzaPMiESHHKR9rCSTBC3YsV+377nJmYAEYmccGhqzWuAuHuJ3wHJOvwFBMw4xxWfDvjAGABjRj2hTCw8oPg/McQEhrlsh4snQi0UIOUH4wjrN0oIG6IiUIiAIzEAL+HwzHz2MGCKEhL8EAAKAACAXAgJDXBwACgAAgFw4AFZM2iKMaog7AAREZGAhn5uue5rf/IAANABwESwCmCIFyziTCU+/rjsABEBqgnu5us97sf/8AHxgyBMs15hCfZAABoAOAiWAEJo0ht1IrOuOwAENmd3ZmZ3dmf//gAPmQyOCMbiHhJrg7AAQCGeBH/N/EF69h0Cveav8AH5AToCtMFKt+rxYABoAAQGTKgABoDgo2MOcxAABoAOAiWDgAGgABAZMg4ABoAAQGTIcAA0AHARLDgAGgA4CJY/AATSAD4VxBhhoAf8FjY3//gBoAR0ygLEkVV4sAA2AAIDBkFMEOTksOEExZCAADYAYBMsdgAIzIyAQz9qnPc9//gERiFYZotVpTdogAA0AHARL+OwAEY0VhHN/OY9zX//AA+swyDdprSnH+IAANABwES8ACS1GWxdFDH4ACIBgAGYAWRNJKjK47pEhjNkEpyOJ7D8KN2/0Yl2cylG1TdkyiRe5DRBESf/sDnIXEC2h4QN/fg/8AC6EUSqzZaIICb/9BQ5HE9h+FG2HYA7BqchAPpx3C7Yx8ADOLeZgBAG29BgfkAAGABgKud+QAKAwZAyMMO8BD0IgZ6Z4oaU/hx2ABBADQDeF63sBKYUubR/wAfkCdAqyDiT/V4AB8yGQoZjcQSPMcUAANA4YbGGOYsAA0AAIDJkHAANAACAyZIAANABwESw4ABoAOAiW+OwAEN2AD9/8CzRo3Y2aNf4APjDQGch5YBqnq94CxmQkBkpcewLOPB+uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu/fv36767799/v99/vDXeGuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuv",
10639
+ disabled: "AAAAAWdCwB/aAUAW7ARAAAADAEAAAAMAg8YMqAAAAAFozg/IAAABZYiEOiYoAAjgycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJyddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddcdgAIDBmgatGsRz4EOeLeNIaoAK4IoTYYcSaB6SIAgABANuEAAGwA4CZYcAA2AHATLwCkaABlQgoArnq9DwBAACAbch4AgABANuZAAQQVcw4AQQVcH4AOBDut5h5lXWn9tfoTCAFpcXTwIwAIBExOCkcZ4QItHXzzA41AEvZgwSXTL//x2AIYE8HHbnwLhNOR539HJQyAaKcqPtQcwCVj94YAFoaXVQUzrsCRB/9/AAuDkyBD/rKBQuBgU/dzrBAEZpphAvPAATjMf9dAh8ixQOxhpLUMArHgIH/vHYADQK0aHw4EAACAXBfepAdQAXECCkdJJgsmJpZAALgACATcAjNpgAaoQfw0RyDIACHEXOVAALgACATclQAC4AAgE3A4AQ4i5hwAhxFzHYACAMBDQCUih84AUyPVKvkE44cACXIlmH2MhSgAmhOL88YwskgR0Ag0TPvANTbaJLsZ+cD+JbfaIzlkCygK0c0/73QAGSw1BulYBuWZgRLcAAICP4GC1SAiBDKIFC8EHLUFQ4unmAPwBAQApVh7gt9NLRK0nnlCdgi2nDBGTfEAAFABAOl19AzyMAMr9zyoABgAAQAFidgO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rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrw=",
10640
+ waking: "AAAAAWdCwB/aAUAW7ARAAAADAEAAAAMAg8YMqAAAAAFozg/IAAABZYiEOiYoAAjgycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJydddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddcd/oH/47AAQBAGUBlZdJh5G9sxrA8HYAFbAAfbqQAFAm44CYXpxTUasssNGECENJJxx+tDI/9Ry8wBAOpYOO/f+DrFIcycwAAgIr3685zLaHgXN8IKM/o2feDBzo0Q4rHPBfP8AgCJWBh+7x2AAmAARwOv3gOBaB+1Tygfhc4CPXtgAOYUMFKd57jwafCAADYAcBMuQG07ivlZJgD8arZJMnA+ncYBgI5oNv/QcO3CKiGgDV78HQZJtQYpggXN/A67gggv/Cx97Fb6IAwEawG3/h2ADhnHDfssxKgIDDnB5vz8AE5hocrnuDCcsiQdcAAI0SyeaAI/r3/LDKKw0hoqq94YAWDbTjCEekj3v47AARgDA2nC+phF+FKPPlmgcoAHJCwOib+QsZpcAFQynCiPbJ1XgwJmExQr5/xbrIweDoOyFYDIYAQfe8NgAGmwTlgCXl4Z9/R2DQADTcH9YBry9ay7IAgHawHZ/qSoJjCQhxzw47AARgACAQFBfephQaQk9Bxxz+ErwAJTrkOCI6TmhoyQAAbADgJl0jlorTTSR594D0BpKKxXazT0AAy7yynAxBIE3/oSgKWDFpJANX9sGD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AAmkO4APxvh2AAiAAEA9IAARQDmQGaxcQU2GTKnhAMD1edgIvAo/E5vnsGpeH1KyYZ5QKaFqv/GAAF7QABAWXIkAAgPCSwDkEOQGTscjUFkQoWA0+AHmzIgOml+Awh37sN111111111111111111111111111111111111111111111111111111111111111133++/f77/ffvvrvDff7/XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXg="
10641
+ },
10642
+ h265: {
10643
+ reconnecting: "AAAAAUABDAH//wQIAAADAJ+oAAADAABdugJAAAAAAUIBAQQIAAADAJ+oAAADAABdoAKAgC0WW6SkwvAWgIAAAAMAgAAAAwCEAAAAAUQBwHGDEgAAAU4BBf///////////wQsot4JtRdH27tVpP5/wvxOeDI2NSAoYnVpbGQgMjE1KSAtIDQuMSsxLTFkMTE3YmU6W01hYyBPUyBYXVtjbGFuZyAxNi4wLjBdWzY0IGJpdF0gOGJpdCsxMGJpdCsxMmJpdCAtIEguMjY1L0hFVkMgY29kZWMgLSBDb3B5cmlnaHQgMjAxMy0yMDE4IChjKSBNdWx0aWNvcmV3YXJlLCBJbmMgLSBodHRwOi8veDI2NS5vcmcgLSBvcHRpb25zOiBjcHVpZD05OCBmcmFtZS10aHJlYWRzPTMgd3BwIG5vLXBtb2RlIG5vLXBtZSBuby1wc25yIG5vLXNzaW0gbG9nLWxldmVsPTIgYml0ZGVwdGg9OCBpbnB1dC1jc3A9MSBmcHM9MS8xIGlucHV0LXJlcz0xMjgweDcyMCBpbnRlcmxhY2U9MCB0b3RhbC1mcmFtZXM9MCBsZXZlbC1pZGM9MCBoaWdoLXRpZXI9MSB1aGQtYmQ9MCByZWY9MSBuby1hbGxvdy1ub24tY29uZm9ybWFuY2UgcmVwZWF0LWhlYWRlcnMgYW5uZXhiIG5vLWF1ZCBuby1lb2Igbm8tZW9zIG5vLWhyZCBpbmZvIGhhc2g9MCB0ZW1wb3JhbC1sYXllcnM9MCBuby1vcGVuLWdvcCBtaW4ta2V5aW50PTEga2V5aW50PTEgZ29wLWxvb2thaGVhZD0wIGJmcmFtZXM9MCBiLWFkYXB0PTAgbm8tYi1weXJhbWlkIGJmcmFtZS1iaWFzPTAgcmMtbG9va2FoZWFkPTAgbG9va2FoZWFkLXNsaWNlcz00IHNjZW5lY3V0PTAgbm8taGlzdC1zY2VuZWN1dCByYWRsPTAgbm8tc3BsaWNlIG5vLWludHJhLXJlZnJlc2ggY3R1PTMyIG1pbi1jdS1zaXplPTE2IG5vLXJlY3Qgbm8tYW1wIG1heC10dS1zaXplPTMyIHR1LWludGVyLWRlcHRoPTEgdHUtaW50cmEtZGVwdGg9MSBsaW1pdC10dT0wIHJkb3EtbGV2ZWw9MCBkeW5hbWljLXJkPTAuMDAgbm8tc3NpbS1yZCBuby1zaWduaGlkZSBuby10c2tpcCBuci1pbnRyYT0wIG5yLWludGVyPTAgbm8tY29uc3RyYWluZWQtaW50cmEgc3Ryb25nLWludHJhLXNtb290aGluZyBtYXgtbWVyZ2U9MiBsaW1pdC1yZWZzPTAgbm8tbGltaXQtbW9kZXMgbWU9MCBzdWJtZT0wIG1lcmFuZ2U9NTcgdGVtcG9yYWwtbXZwIG5vLWZyYW1lLWR1cCBuby1obWUgbm8td2VpZ2h0cCBuby13ZWlnaHRiIG5vLWFuYWx5emUtc3JjLXBpY3MgZGVibG9jaz0wOjAgbm8tc2FvIG5vLXNhby1ub24tZGVibG9jayByZD0yIHNlbGVjdGl2ZS1zYW89MCBlYXJseS1za2lwIHJza2lwIGZhc3QtaW50cmEgbm8tdHNraXAtZmFzdCBuby1jdS1sb3NzbGVzcyBuby1iLWludHJhIG5vLXNwbGl0cmQtc2tpcCByZHBlbmFsdHk9MCBwc3ktcmQ9Mi4wMCBwc3ktcmRvcT0wLjAwIG5vLXJkLXJlZmluZSBuby1sb3NzbGVzcyBjYnFwb2Zmcz0wIGNycXBvZmZzPTAgcmM9Y3JmIGNyZj0yOC4wIHFjb21wPTAuNjAgcXBzdGVwPTQgc3RhdHMtd3JpdGU9MCBzdGF0cy1yZWFkPTAgaXByYXRpbz0xLjQwIGFxLW1vZGU9MCBhcS1zdHJlbmd0aD0wLjAwIG5vLWN1dHJlZSB6b25lLWNvdW50PTAgbm8tc3RyaWN0LWNiciBxZy1zaXplPTMyIG5vLXJjLWdyYWluIHFwbWF4PTY5IHFwbWluPTAgbm8tY29uc3QtdmJ2IHNhcj0xIG92ZXJzY2FuPTAgdmlkZW9mb3JtYXQ9NSByYW5nZT0wIGNvbG9ycHJpbT0yIHRyYW5zZmVyPTIgY29sb3JtYXRyaXg9MiBjaHJvbWFsb2M9MCBkaXNwbGF5LXdpbmRvdz0wIGNsbD0wLDAgbWluLWx1bWE9MCBtYXgtbHVtYT0yNTUgbG9nMi1tYXgtcG9jLWxzYj04IHZ1aS10aW1pbmctaW5mbyB2dWktaHJkLWluZm8gc2xpY2VzPTEgbm8tb3B0LXFwLXBwcyBuby1vcHQtcmVmLWxpc3QtbGVuZ3RoLXBwcyBuby1tdWx0aS1wYXNzLW9wdC1ycHMgc2NlbmVjdXQtYmlhcz0wLjA1IG5vLW9wdC1jdS1kZWx0YS1xcCBuby1hcS1tb3Rpb24gbm8taGRyMTAgbm8taGRyMTAtb3B0IG5vLWRoZHIxMC1vcHQgbm8taWRyLXJlY292ZXJ5LXNlaSBhbmFseXNpcy1yZXVzZS1sZXZlbD0wIGFuYWx5c2lzLXNhdmUtcmV1c2UtbGV2ZWw9MCBhbmFseXNpcy1sb2FkLXJldXNlLWxldmVsPTAgc2NhbGUtZmFjdG9yPTAgcmVmaW5lLWludHJhPTAgcmVmaW5lLWludGVyPTAgcmVmaW5lLW12PTEgcmVmaW5lLWN0dS1kaXN0b3J0aW9uPTAgbm8tbGltaXQtc2FvIGN0dS1pbmZvPTAgbm8tbG93cGFzcy1kY3QgcmVmaW5lLWFuYWx5c2lzLXR5cGU9MCBjb3B5LXBpYz0xIG1heC1hdXNpemUtZmFjdG9yPTEuMCBuby1keW5hbWljLXJlZmluZSBuby1zaW5nbGUtc2VpIG5vLWhldmMtYXEgbm8tc3Z0IG5vLWZpZWxkIHFwLWFkYXB0YXRpb24tcmFuZ2U9MS4wMCBzY2VuZWN1dC1hd2FyZS1xcD0wY29uZm9ybWFuY2Utd2luZG93LW9mZnNldHMgcmlnaHQ9MCBib3R0b209MCBkZWNvZGVyLW1heC1yYXRlPTAgbm8tdmJ2LWxpdmUtbXVsdGktcGFzcyBuby1tY3N0ZiBuby1zYnJjIG5vLWZyYW1lLXJjgAAAASgBrcLjAFwEgEQEADwDgDgDgDQDJdd4QDwCwCwCgCgCQCQCQCQCYNEX/8/CcyLuuu2nGKAAAAMAAAMAAAMCEgdwaCTacYoAAAMAAAMAAAMABEQI1dtOMUAAAAMAAAMAAAMAElAMJyWgAAADAAADAAADAAAqYA5IgAAAAwAAAwAAAwAAGTARgAAAAwAAAwAAAwAAB9QAAAMAAAMAAAMAAAMAAQsAAAMAAAMAAAMAAAMAGBAAAAMAAAMAAAMAAAMBkQAAAwAAAwAAAwAADTgAAAMAV0oBlPeTVLjjiybt/79hr8egLGkfgRr4BMQkiA4Kvw8jeWLF+WRCVyWx9qYu5G9T5CK0jQtgcXtpIjS8fOF3Fs7TooZzWpZ8ReTWIvMHVoz1Khj/MspUENld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",
10644
+ sleeping: "AAAAAUABDAH//wQIAAADAJ+oAAADAABdugJAAAAAAUIBAQQIAAADAJ+oAAADAABdoAKAgC0WW6SkwvAWgIAAAAMAgAAAAwCEAAAAAUQBwHGDEgAAAU4BBf///////////wQsot4JtRdH27tVpP5/wvxOeDI2NSAoYnVpbGQgMjE1KSAtIDQuMSsxLTFkMTE3YmU6W01hYyBPUyBYXVtjbGFuZyAxNi4wLjBdWzY0IGJpdF0gOGJpdCsxMGJpdCsxMmJpdCAtIEguMjY1L0hFVkMgY29kZWMgLSBDb3B5cmlnaHQgMjAxMy0yMDE4IChjKSBNdWx0aWNvcmV3YXJlLCBJbmMgLSBodHRwOi8veDI2NS5vcmcgLSBvcHRpb25zOiBjcHVpZD05OCBmcmFtZS10aHJlYWRzPTMgd3BwIG5vLXBtb2RlIG5vLXBtZSBuby1wc25yIG5vLXNzaW0gbG9nLWxldmVsPTIgYml0ZGVwdGg9OCBpbnB1dC1jc3A9MSBmcHM9MS8xIGlucHV0LXJlcz0xMjgweDcyMCBpbnRlcmxhY2U9MCB0b3RhbC1mcmFtZXM9MCBsZXZlbC1pZGM9MCBoaWdoLXRpZXI9MSB1aGQtYmQ9MCByZWY9MSBuby1hbGxvdy1ub24tY29uZm9ybWFuY2UgcmVwZWF0LWhlYWRlcnMgYW5uZXhiIG5vLWF1ZCBuby1lb2Igbm8tZW9zIG5vLWhyZCBpbmZvIGhhc2g9MCB0ZW1wb3JhbC1sYXllcnM9MCBuby1vcGVuLWdvcCBtaW4ta2V5aW50PTEga2V5aW50PTEgZ29wLWxvb2thaGVhZD0wIGJmcmFtZXM9MCBiLWFkYXB0PTAgbm8tYi1weXJhbWlkIGJmcmFtZS1iaWFzPTAgcmMtbG9va2FoZWFkPTAgbG9va2FoZWFkLXNsaWNlcz00IHNjZW5lY3V0PTAgbm8taGlzdC1zY2VuZWN1dCByYWRsPTAgbm8tc3BsaWNlIG5vLWludHJhLXJlZnJlc2ggY3R1PTMyIG1pbi1jdS1zaXplPTE2IG5vLXJlY3Qgbm8tYW1wIG1heC10dS1zaXplPTMyIHR1LWludGVyLWRlcHRoPTEgdHUtaW50cmEtZGVwdGg9MSBsaW1pdC10dT0wIHJkb3EtbGV2ZWw9MCBkeW5hbWljLXJkPTAuMDAgbm8tc3NpbS1yZCBuby1zaWduaGlkZSBuby10c2tpcCBuci1pbnRyYT0wIG5yLWludGVyPTAgbm8tY29uc3RyYWluZWQtaW50cmEgc3Ryb25nLWludHJhLXNtb290aGluZyBtYXgtbWVyZ2U9MiBsaW1pdC1yZWZzPTAgbm8tbGltaXQtbW9kZXMgbWU9MCBzdWJtZT0wIG1lcmFuZ2U9NTcgdGVtcG9yYWwtbXZwIG5vLWZyYW1lLWR1cCBuby1obWUgbm8td2VpZ2h0cCBuby13ZWlnaHRiIG5vLWFuYWx5emUtc3JjLXBpY3MgZGVibG9jaz0wOjAgbm8tc2FvIG5vLXNhby1ub24tZGVibG9jayByZD0yIHNlbGVjdGl2ZS1zYW89MCBlYXJseS1za2lwIHJza2lwIGZhc3QtaW50cmEgbm8tdHNraXAtZmFzdCBuby1jdS1sb3NzbGVzcyBuby1iLWludHJhIG5vLXNwbGl0cmQtc2tpcCByZHBlbmFsdHk9MCBwc3ktcmQ9Mi4wMCBwc3ktcmRvcT0wLjAwIG5vLXJkLXJlZmluZSBuby1sb3NzbGVzcyBjYnFwb2Zmcz0wIGNycXBvZmZzPTAgcmM9Y3JmIGNyZj0yOC4wIHFjb21wPTAuNjAgcXBzdGVwPTQgc3RhdHMtd3JpdGU9MCBzdGF0cy1yZWFkPTAgaXByYXRpbz0xLjQwIGFxLW1vZGU9MCBhcS1zdHJlbmd0aD0wLjAwIG5vLWN1dHJlZSB6b25lLWNvdW50PTAgbm8tc3RyaWN0LWNiciBxZy1zaXplPTMyIG5vLXJjLWdyYWluIHFwbWF4PTY5IHFwbWluPTAgbm8tY29uc3QtdmJ2IHNhcj0xIG92ZXJzY2FuPTAgdmlkZW9mb3JtYXQ9NSByYW5nZT0wIGNvbG9ycHJpbT0yIHRyYW5zZmVyPTIgY29sb3JtYXRyaXg9MiBjaHJvbWFsb2M9MCBkaXNwbGF5LXdpbmRvdz0wIGNsbD0wLDAgbWluLWx1bWE9MCBtYXgtbHVtYT0yNTUgbG9nMi1tYXgtcG9jLWxzYj04IHZ1aS10aW1pbmctaW5mbyB2dWktaHJkLWluZm8gc2xpY2VzPTEgbm8tb3B0LXFwLXBwcyBuby1vcHQtcmVmLWxpc3QtbGVuZ3RoLXBwcyBuby1tdWx0aS1wYXNzLW9wdC1ycHMgc2NlbmVjdXQtYmlhcz0wLjA1IG5vLW9wdC1jdS1kZWx0YS1xcCBuby1hcS1tb3Rpb24gbm8taGRyMTAgbm8taGRyMTAtb3B0IG5vLWRoZHIxMC1vcHQgbm8taWRyLXJlY292ZXJ5LXNlaSBhbmFseXNpcy1yZXVzZS1sZXZlbD0wIGFuYWx5c2lzLXNhdmUtcmV1c2UtbGV2ZWw9MCBhbmFseXNpcy1sb2FkLXJldXNlLWxldmVsPTAgc2NhbGUtZmFjdG9yPTAgcmVmaW5lLWludHJhPTAgcmVmaW5lLWludGVyPTAgcmVmaW5lLW12PTEgcmVmaW5lLWN0dS1kaXN0b3J0aW9uPTAgbm8tbGltaXQtc2FvIGN0dS1pbmZvPTAgbm8tbG93cGFzcy1kY3QgcmVmaW5lLWFuYWx5c2lzLXR5cGU9MCBjb3B5LXBpYz0xIG1heC1hdXNpemUtZmFjdG9yPTEuMCBuby1keW5hbWljLXJlZmluZSBuby1zaW5nbGUtc2VpIG5vLWhldmMtYXEgbm8tc3Z0IG5vLWZpZWxkIHFwLWFkYXB0YXRpb24tcmFuZ2U9MS4wMCBzY2VuZWN1dC1hd2FyZS1xcD0wY29uZm9ybWFuY2Utd2luZG93LW9mZnNldHMgcmlnaHQ9MCBib3R0b209MCBkZWNvZGVyLW1heC1yYXRlPTAgbm8tdmJ2LWxpdmUtbXVsdGktcGFzcyBuby1tY3N0ZiBuby1zYnJjIG5vLWZyYW1lLXJjgAAAASgBrcLjAFwEgEQEADwDgDgDgDQDFjo4wDgCwCwCgCgCQCQCQCQCYNEX/8/CcyLuuu2nGKAAAAMAAAMAAAMCEgdwaCTacYoAAAMAAAMAAAMABEQI1dtOMUAAAAMAAAMAAAMAElAMJyWgAAADAAADAAADAAAqYA5IgAAAAwAAAwAAAwAAGTARgAAAAwAAAwAAAwAAB9QAAAMAAAMAAAMAAAMAAQsAAAMAAAMAAAMAAAMAGBAAAAMAAAMAAAMAAAMBkQAAAwAAAwAAAwAADTgAAAMAAnJVW/5yV+komUy56aphjzFvh52pfB2PTfCwCh7ggQKBSBYFGbEzvodhyojZdGeFaSykK9Ax2TQRMp4vmNtSZ21tm+X8AAJbdd/W7GfmdQAeYoPMrNuiQvN/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",
10645
+ offline: "AAAAAUABDAH//wQIAAADAJ+oAAADAABdugJAAAAAAUIBAQQIAAADAJ+oAAADAABdoAKAgC0WW6SkwvAWgIAAAAMAgAAAAwCEAAAAAUQBwHGDEgAAAU4BBf///////////wQsot4JtRdH27tVpP5/wvxOeDI2NSAoYnVpbGQgMjE1KSAtIDQuMSsxLTFkMTE3YmU6W01hYyBPUyBYXVtjbGFuZyAxNi4wLjBdWzY0IGJpdF0gOGJpdCsxMGJpdCsxMmJpdCAtIEguMjY1L0hFVkMgY29kZWMgLSBDb3B5cmlnaHQgMjAxMy0yMDE4IChjKSBNdWx0aWNvcmV3YXJlLCBJbmMgLSBodHRwOi8veDI2NS5vcmcgLSBvcHRpb25zOiBjcHVpZD05OCBmcmFtZS10aHJlYWRzPTMgd3BwIG5vLXBtb2RlIG5vLXBtZSBuby1wc25yIG5vLXNzaW0gbG9nLWxldmVsPTIgYml0ZGVwdGg9OCBpbnB1dC1jc3A9MSBmcHM9MS8xIGlucHV0LXJlcz0xMjgweDcyMCBpbnRlcmxhY2U9MCB0b3RhbC1mcmFtZXM9MCBsZXZlbC1pZGM9MCBoaWdoLXRpZXI9MSB1aGQtYmQ9MCByZWY9MSBuby1hbGxvdy1ub24tY29uZm9ybWFuY2UgcmVwZWF0LWhlYWRlcnMgYW5uZXhiIG5vLWF1ZCBuby1lb2Igbm8tZW9zIG5vLWhyZCBpbmZvIGhhc2g9MCB0ZW1wb3JhbC1sYXllcnM9MCBuby1vcGVuLWdvcCBtaW4ta2V5aW50PTEga2V5aW50PTEgZ29wLWxvb2thaGVhZD0wIGJmcmFtZXM9MCBiLWFkYXB0PTAgbm8tYi1weXJhbWlkIGJmcmFtZS1iaWFzPTAgcmMtbG9va2FoZWFkPTAgbG9va2FoZWFkLXNsaWNlcz00IHNjZW5lY3V0PTAgbm8taGlzdC1zY2VuZWN1dCByYWRsPTAgbm8tc3BsaWNlIG5vLWludHJhLXJlZnJlc2ggY3R1PTMyIG1pbi1jdS1zaXplPTE2IG5vLXJlY3Qgbm8tYW1wIG1heC10dS1zaXplPTMyIHR1LWludGVyLWRlcHRoPTEgdHUtaW50cmEtZGVwdGg9MSBsaW1pdC10dT0wIHJkb3EtbGV2ZWw9MCBkeW5hbWljLXJkPTAuMDAgbm8tc3NpbS1yZCBuby1zaWduaGlkZSBuby10c2tpcCBuci1pbnRyYT0wIG5yLWludGVyPTAgbm8tY29uc3RyYWluZWQtaW50cmEgc3Ryb25nLWludHJhLXNtb290aGluZyBtYXgtbWVyZ2U9MiBsaW1pdC1yZWZzPTAgbm8tbGltaXQtbW9kZXMgbWU9MCBzdWJtZT0wIG1lcmFuZ2U9NTcgdGVtcG9yYWwtbXZwIG5vLWZyYW1lLWR1cCBuby1obWUgbm8td2VpZ2h0cCBuby13ZWlnaHRiIG5vLWFuYWx5emUtc3JjLXBpY3MgZGVibG9jaz0wOjAgbm8tc2FvIG5vLXNhby1ub24tZGVibG9jayByZD0yIHNlbGVjdGl2ZS1zYW89MCBlYXJseS1za2lwIHJza2lwIGZhc3QtaW50cmEgbm8tdHNraXAtZmFzdCBuby1jdS1sb3NzbGVzcyBuby1iLWludHJhIG5vLXNwbGl0cmQtc2tpcCByZHBlbmFsdHk9MCBwc3ktcmQ9Mi4wMCBwc3ktcmRvcT0wLjAwIG5vLXJkLXJlZmluZSBuby1sb3NzbGVzcyBjYnFwb2Zmcz0wIGNycXBvZmZzPTAgcmM9Y3JmIGNyZj0yOC4wIHFjb21wPTAuNjAgcXBzdGVwPTQgc3RhdHMtd3JpdGU9MCBzdGF0cy1yZWFkPTAgaXByYXRpbz0xLjQwIGFxLW1vZGU9MCBhcS1zdHJlbmd0aD0wLjAwIG5vLWN1dHJlZSB6b25lLWNvdW50PTAgbm8tc3RyaWN0LWNiciBxZy1zaXplPTMyIG5vLXJjLWdyYWluIHFwbWF4PTY5IHFwbWluPTAgbm8tY29uc3QtdmJ2IHNhcj0xIG92ZXJzY2FuPTAgdmlkZW9mb3JtYXQ9NSByYW5nZT0wIGNvbG9ycHJpbT0yIHRyYW5zZmVyPTIgY29sb3JtYXRyaXg9MiBjaHJvbWFsb2M9MCBkaXNwbGF5LXdpbmRvdz0wIGNsbD0wLDAgbWluLWx1bWE9MCBtYXgtbHVtYT0yNTUgbG9nMi1tYXgtcG9jLWxzYj04IHZ1aS10aW1pbmctaW5mbyB2dWktaHJkLWluZm8gc2xpY2VzPTEgbm8tb3B0LXFwLXBwcyBuby1vcHQtcmVmLWxpc3QtbGVuZ3RoLXBwcyBuby1tdWx0aS1wYXNzLW9wdC1ycHMgc2NlbmVjdXQtYmlhcz0wLjA1IG5vLW9wdC1jdS1kZWx0YS1xcCBuby1hcS1tb3Rpb24gbm8taGRyMTAgbm8taGRyMTAtb3B0IG5vLWRoZHIxMC1vcHQgbm8taWRyLXJlY292ZXJ5LXNlaSBhbmFseXNpcy1yZXVzZS1sZXZlbD0wIGFuYWx5c2lzLXNhdmUtcmV1c2UtbGV2ZWw9MCBhbmFseXNpcy1sb2FkLXJldXNlLWxldmVsPTAgc2NhbGUtZmFjdG9yPTAgcmVmaW5lLWludHJhPTAgcmVmaW5lLWludGVyPTAgcmVmaW5lLW12PTEgcmVmaW5lLWN0dS1kaXN0b3J0aW9uPTAgbm8tbGltaXQtc2FvIGN0dS1pbmZvPTAgbm8tbG93cGFzcy1kY3QgcmVmaW5lLWFuYWx5c2lzLXR5cGU9MCBjb3B5LXBpYz0xIG1heC1hdXNpemUtZmFjdG9yPTEuMCBuby1keW5hbWljLXJlZmluZSBuby1zaW5nbGUtc2VpIG5vLWhldmMtYXEgbm8tc3Z0IG5vLWZpZWxkIHFwLWFkYXB0YXRpb24tcmFuZ2U9MS4wMCBzY2VuZWN1dC1hd2FyZS1xcD0wY29uZm9ybWFuY2Utd2luZG93LW9mZnNldHMgcmlnaHQ9MCBib3R0b209MCBkZWNvZGVyLW1heC1yYXRlPTAgbm8tdmJ2LWxpdmUtbXVsdGktcGFzcyBuby1tY3N0ZiBuby1zYnJjIG5vLWZyYW1lLXJjgAAAASgBrcLiwLgSAiBAB4DgHAOAaAyPGfQGALAWAoBQCQEgJASAmNEX/8/CcyLuuu2nGKAAAAMAAAMAAAMCEgdwaCTacYoAAAMAAAMAAAMABEQI1dtOMUAAAAMAAAMAAAMAElAMJyWgAAADAAADAAADAAAqYA5IgAAAAwAAAwAAAwAAGTARgAAAAwAAAwAAAwAAB9QAAAMAAAMAAAMAAAMAAQsAAAMAAAMAAAMAAAMAGBAAAAMAAAMAAAMAAAMBkQAAAwAAAwAAAwAADTgAAAMAAnIRJY7mt6jxDg1ZAEbP7/LhpeVRCRSHYPE9hJm0I9bQrAjX0yu6L7lrKwJuj+U+EieuvMXkRVod2huH5MMqkgjezPIXhMMMbzPxp9/3NjL4R6GTuXhhGpNVRUat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",
10646
+ disabled: "AAAAAUABDAH//wQIAAADAJ+oAAADAABdugJAAAAAAUIBAQQIAAADAJ+oAAADAABdoAKAgC0WW6SkwvAWgIAAAAMAgAAAAwCEAAAAAUQBwHGDEgAAAU4BBf///////////wQsot4JtRdH27tVpP5/wvxOeDI2NSAoYnVpbGQgMjE1KSAtIDQuMSsxLTFkMTE3YmU6W01hYyBPUyBYXVtjbGFuZyAxNi4wLjBdWzY0IGJpdF0gOGJpdCsxMGJpdCsxMmJpdCAtIEguMjY1L0hFVkMgY29kZWMgLSBDb3B5cmlnaHQgMjAxMy0yMDE4IChjKSBNdWx0aWNvcmV3YXJlLCBJbmMgLSBodHRwOi8veDI2NS5vcmcgLSBvcHRpb25zOiBjcHVpZD05OCBmcmFtZS10aHJlYWRzPTMgd3BwIG5vLXBtb2RlIG5vLXBtZSBuby1wc25yIG5vLXNzaW0gbG9nLWxldmVsPTIgYml0ZGVwdGg9OCBpbnB1dC1jc3A9MSBmcHM9MS8xIGlucHV0LXJlcz0xMjgweDcyMCBpbnRlcmxhY2U9MCB0b3RhbC1mcmFtZXM9MCBsZXZlbC1pZGM9MCBoaWdoLXRpZXI9MSB1aGQtYmQ9MCByZWY9MSBuby1hbGxvdy1ub24tY29uZm9ybWFuY2UgcmVwZWF0LWhlYWRlcnMgYW5uZXhiIG5vLWF1ZCBuby1lb2Igbm8tZW9zIG5vLWhyZCBpbmZvIGhhc2g9MCB0ZW1wb3JhbC1sYXllcnM9MCBuby1vcGVuLWdvcCBtaW4ta2V5aW50PTEga2V5aW50PTEgZ29wLWxvb2thaGVhZD0wIGJmcmFtZXM9MCBiLWFkYXB0PTAgbm8tYi1weXJhbWlkIGJmcmFtZS1iaWFzPTAgcmMtbG9va2FoZWFkPTAgbG9va2FoZWFkLXNsaWNlcz00IHNjZW5lY3V0PTAgbm8taGlzdC1zY2VuZWN1dCByYWRsPTAgbm8tc3BsaWNlIG5vLWludHJhLXJlZnJlc2ggY3R1PTMyIG1pbi1jdS1zaXplPTE2IG5vLXJlY3Qgbm8tYW1wIG1heC10dS1zaXplPTMyIHR1LWludGVyLWRlcHRoPTEgdHUtaW50cmEtZGVwdGg9MSBsaW1pdC10dT0wIHJkb3EtbGV2ZWw9MCBkeW5hbWljLXJkPTAuMDAgbm8tc3NpbS1yZCBuby1zaWduaGlkZSBuby10c2tpcCBuci1pbnRyYT0wIG5yLWludGVyPTAgbm8tY29uc3RyYWluZWQtaW50cmEgc3Ryb25nLWludHJhLXNtb290aGluZyBtYXgtbWVyZ2U9MiBsaW1pdC1yZWZzPTAgbm8tbGltaXQtbW9kZXMgbWU9MCBzdWJtZT0wIG1lcmFuZ2U9NTcgdGVtcG9yYWwtbXZwIG5vLWZyYW1lLWR1cCBuby1obWUgbm8td2VpZ2h0cCBuby13ZWlnaHRiIG5vLWFuYWx5emUtc3JjLXBpY3MgZGVibG9jaz0wOjAgbm8tc2FvIG5vLXNhby1ub24tZGVibG9jayByZD0yIHNlbGVjdGl2ZS1zYW89MCBlYXJseS1za2lwIHJza2lwIGZhc3QtaW50cmEgbm8tdHNraXAtZmFzdCBuby1jdS1sb3NzbGVzcyBuby1iLWludHJhIG5vLXNwbGl0cmQtc2tpcCByZHBlbmFsdHk9MCBwc3ktcmQ9Mi4wMCBwc3ktcmRvcT0wLjAwIG5vLXJkLXJlZmluZSBuby1sb3NzbGVzcyBjYnFwb2Zmcz0wIGNycXBvZmZzPTAgcmM9Y3JmIGNyZj0yOC4wIHFjb21wPTAuNjAgcXBzdGVwPTQgc3RhdHMtd3JpdGU9MCBzdGF0cy1yZWFkPTAgaXByYXRpbz0xLjQwIGFxLW1vZGU9MCBhcS1zdHJlbmd0aD0wLjAwIG5vLWN1dHJlZSB6b25lLWNvdW50PTAgbm8tc3RyaWN0LWNiciBxZy1zaXplPTMyIG5vLXJjLWdyYWluIHFwbWF4PTY5IHFwbWluPTAgbm8tY29uc3QtdmJ2IHNhcj0xIG92ZXJzY2FuPTAgdmlkZW9mb3JtYXQ9NSByYW5nZT0wIGNvbG9ycHJpbT0yIHRyYW5zZmVyPTIgY29sb3JtYXRyaXg9MiBjaHJvbWFsb2M9MCBkaXNwbGF5LXdpbmRvdz0wIGNsbD0wLDAgbWluLWx1bWE9MCBtYXgtbHVtYT0yNTUgbG9nMi1tYXgtcG9jLWxzYj04IHZ1aS10aW1pbmctaW5mbyB2dWktaHJkLWluZm8gc2xpY2VzPTEgbm8tb3B0LXFwLXBwcyBuby1vcHQtcmVmLWxpc3QtbGVuZ3RoLXBwcyBuby1tdWx0aS1wYXNzLW9wdC1ycHMgc2NlbmVjdXQtYmlhcz0wLjA1IG5vLW9wdC1jdS1kZWx0YS1xcCBuby1hcS1tb3Rpb24gbm8taGRyMTAgbm8taGRyMTAtb3B0IG5vLWRoZHIxMC1vcHQgbm8taWRyLXJlY292ZXJ5LXNlaSBhbmFseXNpcy1yZXVzZS1sZXZlbD0wIGFuYWx5c2lzLXNhdmUtcmV1c2UtbGV2ZWw9MCBhbmFseXNpcy1sb2FkLXJldXNlLWxldmVsPTAgc2NhbGUtZmFjdG9yPTAgcmVmaW5lLWludHJhPTAgcmVmaW5lLWludGVyPTAgcmVmaW5lLW12PTEgcmVmaW5lLWN0dS1kaXN0b3J0aW9uPTAgbm8tbGltaXQtc2FvIGN0dS1pbmZvPTAgbm8tbG93cGFzcy1kY3QgcmVmaW5lLWFuYWx5c2lzLXR5cGU9MCBjb3B5LXBpYz0xIG1heC1hdXNpemUtZmFjdG9yPTEuMCBuby1keW5hbWljLXJlZmluZSBuby1zaW5nbGUtc2VpIG5vLWhldmMtYXEgbm8tc3Z0IG5vLWZpZWxkIHFwLWFkYXB0YXRpb24tcmFuZ2U9MS4wMCBzY2VuZWN1dC1hd2FyZS1xcD0wY29uZm9ybWFuY2Utd2luZG93LW9mZnNldHMgcmlnaHQ9MCBib3R0b209MCBkZWNvZGVyLW1heC1yYXRlPTAgbm8tdmJ2LWxpdmUtbXVsdGktcGFzcyBuby1tY3N0ZiBuby1zYnJjIG5vLWZyYW1lLXJjgAAAASgBrcLjAFwEgEQEADwDgDgDgDQDFlYmgDACwCwCgCgCQCQCQCQCYNEX/8/CcyLuuu2nGKAAAAMAAAMAAAMCEgdwaCTacYoAAAMAAAMAAAMABEQI1dtOMUAAAAMAAAMAAAMAElAMJyWgAAADAAADAAADAAAqYA5IgAAAAwAAAwAAAwAAGTARgAAAAwAAAwAAAwAAB9QAAAMAAAMAAAMAAAMAAQsAAAMAAAMAAAMAAAMAGBAAAAMAAAMAAAMAAAMBkQAAAwAAAwAAAwAADTgAAAMAAnJXh0f6dh91ZYSfYA2WZGi8L4B4Km93Ubr5/EFPTj6FOBGEL/s1k6y5ZvJx9Rlg/VUGc79Ok5oWDJetrtsLEUH4QjulhGTw2WWHi1fKx08W4ltGWipQDk4q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",
10647
+ waking: "AAAAAUABDAH//wQIAAADAJ+oAAADAABdugJAAAAAAUIBAQQIAAADAJ+oAAADAABdoAKAgC0WW6SkwvAWgIAAAAMAgAAAAwCEAAAAAUQBwHGDEgAAAU4BBf///////////wQsot4JtRdH27tVpP5/wvxOeDI2NSAoYnVpbGQgMjE1KSAtIDQuMSsxLTFkMTE3YmU6W01hYyBPUyBYXVtjbGFuZyAxNi4wLjBdWzY0IGJpdF0gOGJpdCsxMGJpdCsxMmJpdCAtIEguMjY1L0hFVkMgY29kZWMgLSBDb3B5cmlnaHQgMjAxMy0yMDE4IChjKSBNdWx0aWNvcmV3YXJlLCBJbmMgLSBodHRwOi8veDI2NS5vcmcgLSBvcHRpb25zOiBjcHVpZD05OCBmcmFtZS10aHJlYWRzPTMgd3BwIG5vLXBtb2RlIG5vLXBtZSBuby1wc25yIG5vLXNzaW0gbG9nLWxldmVsPTIgYml0ZGVwdGg9OCBpbnB1dC1jc3A9MSBmcHM9MS8xIGlucHV0LXJlcz0xMjgweDcyMCBpbnRlcmxhY2U9MCB0b3RhbC1mcmFtZXM9MCBsZXZlbC1pZGM9MCBoaWdoLXRpZXI9MSB1aGQtYmQ9MCByZWY9MSBuby1hbGxvdy1ub24tY29uZm9ybWFuY2UgcmVwZWF0LWhlYWRlcnMgYW5uZXhiIG5vLWF1ZCBuby1lb2Igbm8tZW9zIG5vLWhyZCBpbmZvIGhhc2g9MCB0ZW1wb3JhbC1sYXllcnM9MCBuby1vcGVuLWdvcCBtaW4ta2V5aW50PTEga2V5aW50PTEgZ29wLWxvb2thaGVhZD0wIGJmcmFtZXM9MCBiLWFkYXB0PTAgbm8tYi1weXJhbWlkIGJmcmFtZS1iaWFzPTAgcmMtbG9va2FoZWFkPTAgbG9va2FoZWFkLXNsaWNlcz00IHNjZW5lY3V0PTAgbm8taGlzdC1zY2VuZWN1dCByYWRsPTAgbm8tc3BsaWNlIG5vLWludHJhLXJlZnJlc2ggY3R1PTMyIG1pbi1jdS1zaXplPTE2IG5vLXJlY3Qgbm8tYW1wIG1heC10dS1zaXplPTMyIHR1LWludGVyLWRlcHRoPTEgdHUtaW50cmEtZGVwdGg9MSBsaW1pdC10dT0wIHJkb3EtbGV2ZWw9MCBkeW5hbWljLXJkPTAuMDAgbm8tc3NpbS1yZCBuby1zaWduaGlkZSBuby10c2tpcCBuci1pbnRyYT0wIG5yLWludGVyPTAgbm8tY29uc3RyYWluZWQtaW50cmEgc3Ryb25nLWludHJhLXNtb290aGluZyBtYXgtbWVyZ2U9MiBsaW1pdC1yZWZzPTAgbm8tbGltaXQtbW9kZXMgbWU9MCBzdWJtZT0wIG1lcmFuZ2U9NTcgdGVtcG9yYWwtbXZwIG5vLWZyYW1lLWR1cCBuby1obWUgbm8td2VpZ2h0cCBuby13ZWlnaHRiIG5vLWFuYWx5emUtc3JjLXBpY3MgZGVibG9jaz0wOjAgbm8tc2FvIG5vLXNhby1ub24tZGVibG9jayByZD0yIHNlbGVjdGl2ZS1zYW89MCBlYXJseS1za2lwIHJza2lwIGZhc3QtaW50cmEgbm8tdHNraXAtZmFzdCBuby1jdS1sb3NzbGVzcyBuby1iLWludHJhIG5vLXNwbGl0cmQtc2tpcCByZHBlbmFsdHk9MCBwc3ktcmQ9Mi4wMCBwc3ktcmRvcT0wLjAwIG5vLXJkLXJlZmluZSBuby1sb3NzbGVzcyBjYnFwb2Zmcz0wIGNycXBvZmZzPTAgcmM9Y3JmIGNyZj0yOC4wIHFjb21wPTAuNjAgcXBzdGVwPTQgc3RhdHMtd3JpdGU9MCBzdGF0cy1yZWFkPTAgaXByYXRpbz0xLjQwIGFxLW1vZGU9MCBhcS1zdHJlbmd0aD0wLjAwIG5vLWN1dHJlZSB6b25lLWNvdW50PTAgbm8tc3RyaWN0LWNiciBxZy1zaXplPTMyIG5vLXJjLWdyYWluIHFwbWF4PTY5IHFwbWluPTAgbm8tY29uc3QtdmJ2IHNhcj0xIG92ZXJzY2FuPTAgdmlkZW9mb3JtYXQ9NSByYW5nZT0wIGNvbG9ycHJpbT0yIHRyYW5zZmVyPTIgY29sb3JtYXRyaXg9MiBjaHJvbWFsb2M9MCBkaXNwbGF5LXdpbmRvdz0wIGNsbD0wLDAgbWluLWx1bWE9MCBtYXgtbHVtYT0yNTUgbG9nMi1tYXgtcG9jLWxzYj04IHZ1aS10aW1pbmctaW5mbyB2dWktaHJkLWluZm8gc2xpY2VzPTEgbm8tb3B0LXFwLXBwcyBuby1vcHQtcmVmLWxpc3QtbGVuZ3RoLXBwcyBuby1tdWx0aS1wYXNzLW9wdC1ycHMgc2NlbmVjdXQtYmlhcz0wLjA1IG5vLW9wdC1jdS1kZWx0YS1xcCBuby1hcS1tb3Rpb24gbm8taGRyMTAgbm8taGRyMTAtb3B0IG5vLWRoZHIxMC1vcHQgbm8taWRyLXJlY292ZXJ5LXNlaSBhbmFseXNpcy1yZXVzZS1sZXZlbD0wIGFuYWx5c2lzLXNhdmUtcmV1c2UtbGV2ZWw9MCBhbmFseXNpcy1sb2FkLXJldXNlLWxldmVsPTAgc2NhbGUtZmFjdG9yPTAgcmVmaW5lLWludHJhPTAgcmVmaW5lLWludGVyPTAgcmVmaW5lLW12PTEgcmVmaW5lLWN0dS1kaXN0b3J0aW9uPTAgbm8tbGltaXQtc2FvIGN0dS1pbmZvPTAgbm8tbG93cGFzcy1kY3QgcmVmaW5lLWFuYWx5c2lzLXR5cGU9MCBjb3B5LXBpYz0xIG1heC1hdXNpemUtZmFjdG9yPTEuMCBuby1keW5hbWljLXJlZmluZSBuby1zaW5nbGUtc2VpIG5vLWhldmMtYXEgbm8tc3Z0IG5vLWZpZWxkIHFwLWFkYXB0YXRpb24tcmFuZ2U9MS4wMCBzY2VuZWN1dC1hd2FyZS1xcD0wY29uZm9ybWFuY2Utd2luZG93LW9mZnNldHMgcmlnaHQ9MCBib3R0b209MCBkZWNvZGVyLW1heC1yYXRlPTAgbm8tdmJ2LWxpdmUtbXVsdGktcGFzcyBuby1tY3N0ZiBuby1zYnJjIG5vLWZyYW1lLXJjgAAAASgBrcLiwLgSAiBAB4DgHAOAaAyfX/AGgLAWAoBQCQEgJASAmNEX/8/CcyLuuu2nGKAAAAMAAAMAAAMCEgdwaCTacYoAAAMAAAMAAAMABEQI1dtOMUAAAAMAAAMAAAMAElAMJyWgAAADAAADAAADAAAqYA5IgAAAAwAAAwAAAwAAGTARgAAAAwAAAwAAAwAAB9QAAAMAAAMAAAMAAAMAAQsAAAMAAAMAAAMAAAMAGBAAAAMAAAMAAAMAAAMBkQAAAwAAAwAAAwAADTgAAAMAAMsbsDkcoZgDIVg0QtuHSsRxkPs93x2tkl6E1gXx0vsrK+j+vQJ0cELr/DHTvsNk9haL5Nc9sUfbRjjmhBTJTjTszXpCeksgb575CVY08mk/BPfZmrL7JLcxTIpDTbIxA7r4+5r9qR6eGrPxop9e0P6i7wLtGazw5dnVUIDwp0foiNPFnCo46E/tHMJcNWZUN+NJ8E9rF7lrLtliTlqiQGinT7BvzCoM8Mk+ELBjySIOD6F0coboBs8jyJrikJyuBivEdikXt/KhTCx//YYLJ7hxR9xZxVy9/ur3Fc++xOECBLycmeXf4r/+K5XugarTvHbUXPuWYSB2TAZeRPARsJVcX/WBXHktQ5oiTqDCzVuCGEcDSEn97GSsMMU/hxzj5k6x6hv6jTjPHvBLKVDnHYQf9VPbtkkq1X6ntJeSDHrBw9irvDkLIVLgQodfa+Er0HVNLMHuSkzZxe9jPwmy8YFlPqO2GFz0JS+6axBJuFqixn0hV2Awr130pQDCVaIHv2SLA5my46N9CgYlSThMpGzZYGrwoFAVl2OE96powBtEDXPRk9egDfFd5uN7JSlRBwXgK/eeD+bCrDWrGtNtyRCXjw24dB2e8uF1StvGqrz2agIOl3BPLjEuwfn97PVri3uuL7i9ZC6ZFvylvOYbNdZYRIt9KrRSQA/hjgvDnYI62YJ24WyWUch32pVVgbImG+mlk7Banilr8nqbEodGNcVb5ClWqTuxPb57lQIeIDXsqTR3mZNFaTO0SwiU4FM+qb7UmLnhNPPwsMovt5XIcQjRMJWj5vwVfLTDypgNui7VSNv6Qp4agriRmDIK2ymemTQDz3FHYsqkcaQ6Am5w+4iyEZ878wt9J/eiWu9299r6CtWfBSJ+qfp3cLtqQ8SZ5AC/xIlDoL2Ezfbv4sTjlTZ/OpANcfiBQCSTY7bxP07Z1PdqbXuf/MzXveaEcW2XAronSqJBdVHNAP3B8I8eErA7xT2/OBv7tFcmbcot7ScKHBTGRZ6D0sVcNyb7jDDNNN1o+Pp6b7KC/bAZpvIRhOWRcYL2qeLBVS4njupG2eQPU7EwOQLme45aAwmyvMedb9OThlAzFxDFgTCaSND5gSQrUshQS3YsE6UX5rxP1qgVFwSIMqrQQzrKUByEIOW0WhWNmZPp0nfpiN3XG5E+TUrwRBIiHcCDcZRPQ9Vta3A84su2iCiaYMonrY7ErYdUxD9mdxHQOtKVcJYA5sVuO8gBI7hOGMnFo1EYBrMg743WyZvZ2UDyzMwJNrsGUfTQCOMDEJzrpshaX/eii8LeKqK3zv4Rp8/2bcB9siroRgpudcqBCxQtzL4c5DjTd232sjeuwipYCkUGN14nHQn+Q1yttlIgjDIg0r8h8HQM0H/m1SCN8Vy3ZnyaXZLq/VpH8xPiK3xyzBa46QTtdVcEo6aYW1EaPMDEK8xj2F3qEkEjaSF+tuDFv1NugxnFsv1PS7sFwg03pbc0fJsWCGrGQNQJ8DAYZUSJt9eFCT2rPlVmNIk8YGD5W0sNYGiDo/lomqLGWtTl5DCBsGrgX8zIXdxztDR+A0Tp9PyB7rioFnirsdooHfqxwSztwtOG2dzW7xQGQ4KfZ40upQexRK3Y04Uc9Hqwjfx7CLuLeMaglNnk+VDO5crl/IzvyXCIfoSbAcA2w9dWY+amZyr7yF2MuogAAAMAMSAAAAMABLyn4jHVTV4C9m65M58fLF/C9Xg2b1eiJRgan5Vf+kYz2iaxZSlaKcjlxT/Celn8V0jeacfMddGrADewQE1VKdHa+B4cEyX2NZuCmN2k8MAUiXiljQcAeUiISy9yAY3BAO+gl4IEac5/7UO4L2X+voIRT0SGzNkkJF4EDn/1qe4fHvDrCmErRN+sMIZ1yo04msI+v/MO4SLqAOee9k3kfig3Vzbk7lzM7bQE0700ZLJMhMl7xsLvRtJ2FKynDrnm7VPDGC+VAuQ/CEgyC55eZ0pqUvdc0HEVRIr5LTgkama/jH2VIHW2Ef2l4DFg3ulaUwPQtytqNG84/IyOeLLdU2LVkUwvXSnelBqvQkSB3Hmdd+MYq9hd4s5ph/Y939V/U1uoqYIbBiabBIxOO+K39bZH5G1Um43tOLHorEo8XoAbCppgjSojunpZ4yQE/xIAUci4Tc+/JXDY+ZCnCccHP6LjZtD0cn1Il+eTyOIGbth0cnfqfv2o8/gg723Vt5RsxxJqp8Jbb8fQdFH6h1z378Iv+RQN7ZsQMBJwlsg3TpQXGA50JuA3eK1PN9jpaw1f99p2SWK+e03RdGYWv1tPO789fmy/4LgJ5yjUEKWPS22+JfOej1jNqU791sbvEfpz4a5aPjWTcrx2wclGWEwW5bfg+aXIjLdxYQOEDZLJ9r+0srXwNyNsw+a0mYY9ZDWFPH1JAvSOr83IPAAJ0mVTKlRgpGsHQdtIHg2wfcLhiIZjL74sri8iYhVnjCrBdL1je2rtXoY6bLllVPManimEmLuwxMoMNH2ba/i7H9gIwKMwkX/w5WZLNOyKIFn9Qb0Xbf/aEXlqBvtpsxNuaJx2E2vperCLoquOOYSn+by70G800l9vwzEo4ITGcYOQGeO3P0jyyxv3SGbMGHNw5lDJTf6I6gI2GcplYY6NjH9ynT52Pkt5olIQFyUoI/cfpgdqJvDonrNSacH8haAzWUDjOhX1BD7SRFu8xZ48ePQIvQOyBWwYEF9nnD4iQp0YhbrZgUWZZGRdSsKghNjEZ6vTiQtZF2//n+WPhxQIfBeSo4/BlU7mn3DQ3j7qkgFPaBq354oL35UPOH/fWQ1jK8K6PZde6HCcmF3SifQkPoIsa3h8+E00MHDUvGTWNEQ9aNipct3S/2EtCfDF+K45vLn59m7/fdwvwo9SieoPLxWpzQ3KqoXq1Pj5Wfc3ibH6//d169HFWNB2n96yefMd5LK4cSzm/pwF6PPqblEeAc6YqS+TyjtXMSCOFi184xQm6XZq7cdaQbs600BijnDlk5tzuLtK6GDFQhDh5zZxLgRDJ+d63nVQBdXo7yANj5Ij5DaHkL4O6xKt039eCRmjKMBwq2IaEEEjnrKZszOJmmjGupvzIo+gcuq1M/49IdbiBaDrmqehU0Y182DPheuMzsZy88Mg/EBhv7L9gy6GReIZ/BWdU76G302t3sqOfdsg6a8KIO2kE1lijCmYuHyd8QB0HNf7Ms4HzCPDXRxXLiiOCZJ4KR3krjkcA5+TE6YR0twMWciWZr7QqCqEAZY+j42sv9qGskSEvLoA38n6JN0pjmdLD3qKoTf7XrRivX6hW8I9GIsx0hqEkeDCnnX+QxElUKjukydEGdxiNH0dUf2gBIzpxwPKY+WHqM41Gf02j1wi+rjcpiI5yOggrPqbcyTxTtdSC5GHGv2fyAA7b+IzRSjAiiE/HojdyPIgFOh3UOE4GgN8yP6U3igjHSW564FqyFPsxcN9Pdqfs0YcXvlirR/ImfnMvMKmnZgtey9wyX7vmi2FtOrhJaIafd/qvK4+f/xbuyhgJSkWxLsanzfgpAELQ/oRHH599W6m0RPe8u0BecY7JSO7GCGWhPI7g7rLe9fXZ+/vskgSPGlBPu0/Yj37mPmgrN3z+1U/mznVXoAg66zuwDHaHXSXYiUbYN4YHlF3nocbIDkslwZ/xkp6HM4Xq9mVRszFm4a8Y56KAY+wOXQLd4zfhj78m/jYbf02+JQFGW2NLsX0RC1ptjpFaS2GYkV/7cZKKNczQsWkYwu31XHtX0HHrD/sMOrjRiccQAA6cohGgHUmC14b7tqrQlipt+ZCz2yfysY6bJmE2oRtO+a9RM4TJMh6shUXKbIaSb0Q2V+IQbiiK2zIebRLeocfr31upuo6+TnV1BuWQr4F394y1Ah1cYGon6saVZm1iBisxcKksvpVVZQRjTPP1v3A3Q7PiT73kovMuCDx+SpmggFOc9yf+VA6jgWN0Wq9RlYx1CWMedmYOOfv0Re8eEZD+68Qj0y7TuCsdEijeGsbsRmZbGs+9T8zbAwJDYqO3RhcTT1zXBHqzS4OUqzka3eAYH+nak3czehwpG8vblVxUUlQ0n1jl9tu/7t2mpJnen1JJsd8g83oF97Nu4KpGDoVqhdqoy2rES30CCD5Rownu/2zSrNUX5i52ezlxPFDZStQ0/FaXlyKue9a4EHGxbvnSxJaI8KtpFKel7Zsb75k81GH0ItYxeEVmLD5CZbWvD9BzIBIaonrBAHduS//NfQJFCXgEB+x3l15kqXC4guCAbS4vkvO6QjYz0q9/YrHBQz/Ikkw2R09XZAC8Hkgmd1pW3WStA7hOHL77ZzmlfsMub5Fr2Tdq7/AwgeD7X2g2/Xdd6rw3KrH+2ov5QrsrOubhYvDM0eWI1Wu9qPScMRCjCP5fc31X+0IFsbdzhRn1n/u75nMy0BnQAAAAwAQSYOqpexiAAaEAAADAAADAAADACtgAAADAAADAAADAH+AAAADAAADAAADAWMAAAMAAAMAAAMDsgAAAwAAAwAABuQAAAMAAAMAAA4YAAADAAADAAAY0AAAAwAAAwAAKSAAAAMAAAMAADzghwAAAwAAAwAAAwAAAwAAAwAAAwFp"
10648
+ }
10649
+ };
10650
+ var cache = {};
10651
+ /**
10652
+ * Get the pre-encoded placeholder frame for `(kind, codec)`. Buffer
10653
+ * is created once on first use per (codec, kind) pair and cached
10654
+ * permanently — safe to call from hot paths (~5-9KB per pair, ~60KB
10655
+ * worst-case across both codecs and all five states).
10656
+ */
10657
+ function getPlaceholderFrame(kind, codec) {
10658
+ const codecCache = cache[codec] ?? (cache[codec] = {});
10659
+ const cached = codecCache[kind];
10660
+ if (cached) return cached;
10661
+ const buf = Buffer.from(FRAME_B64[codec][kind], "base64");
10662
+ codecCache[kind] = buf;
10663
+ return buf;
10664
+ }
10665
+ //#endregion
10666
+ //#region src/stream-broker/stream-broker/stream-pipe-server.ts
10667
+ /**
10668
+ * A lightweight TCP server that broadcasts raw encoded video bytes
10669
+ * (H.264/H.265 Annex-B) to all connected clients.
10670
+ *
10671
+ * Each StreamBroker owns one StreamPipeServer. Restreamers (e.g. go2rtc)
10672
+ * connect via `tcp://127.0.0.1:{port}` and receive the same byte stream
10673
+ * that the broker reads from the camera, eliminating duplicate RTSP
10674
+ * connections.
10675
+ */
10676
+ /** Max bytes queued in a client's write buffer before we consider it too slow */
10677
+ var MAX_WRITE_BUFFER_BYTES = 2 * 1024 * 1024;
10678
+ var StreamPipeServer = class {
10679
+ server;
10680
+ clients = /* @__PURE__ */ new Set();
10681
+ port = 0;
10682
+ started = false;
10683
+ logger;
10684
+ _onClientCountChanged = null;
10685
+ /** Register a callback invoked when pipe client count changes. */
10686
+ onClientCountChanged(cb) {
10687
+ this._onClientCountChanged = cb;
10688
+ }
10689
+ constructor(logger) {
10690
+ this.logger = logger;
10691
+ this.server = node_net.default.createServer((socket) => {
10692
+ this.handleConnection(socket);
10693
+ });
10694
+ this.server.on("error", (err) => {
10695
+ this.logger?.error("StreamPipeServer error", { meta: { error: err.message } });
10696
+ });
10697
+ }
10698
+ async start() {
10699
+ if (this.started) return;
10700
+ await new Promise((resolve, reject) => {
10701
+ this.server.once("error", reject);
10702
+ this.server.listen(0, "127.0.0.1", () => {
10703
+ this.server.removeListener("error", reject);
10704
+ const address = this.server.address();
10705
+ this.port = address.port;
10706
+ this.started = true;
10707
+ this.logger?.debug("StreamPipeServer listening", { meta: { port: this.port } });
10708
+ resolve();
10709
+ });
10710
+ });
10711
+ }
10712
+ /**
10713
+ * Broadcast raw encoded bytes to all connected clients.
10714
+ * Silently drops data for clients that are slow or disconnected.
10715
+ */
10716
+ broadcast(data) {
10717
+ for (const client of this.clients) {
10718
+ if (client.destroyed) {
10719
+ this.clients.delete(client);
10720
+ continue;
10721
+ }
10722
+ if (client.writableLength > MAX_WRITE_BUFFER_BYTES) {
10723
+ this.logger?.warn("StreamPipeServer client buffer overflow — dropping client", { meta: { bufferMB: Number((client.writableLength / 1024 / 1024).toFixed(1)) } });
10724
+ this.removeClient(client);
10725
+ continue;
10726
+ }
10727
+ client.write(data, (err) => {
10728
+ if (err) {
10729
+ this.logger?.debug("StreamPipeServer write error, removing client", { meta: { error: err.message } });
10730
+ this.removeClient(client);
10731
+ }
10732
+ });
10733
+ }
10734
+ }
10735
+ getPort() {
10736
+ return this.port;
10737
+ }
10738
+ getUrl() {
10739
+ return `tcp://127.0.0.1:${this.port}`;
10740
+ }
10741
+ getClientCount() {
10742
+ return this.clients.size;
10743
+ }
10744
+ isStarted() {
10745
+ return this.started;
10746
+ }
10747
+ async stop() {
10748
+ if (!this.started) return;
10749
+ this.started = false;
10750
+ this._onClientCountChanged = null;
10751
+ for (const client of this.clients) client.destroy();
10752
+ this.clients.clear();
10753
+ await new Promise((resolve) => {
10754
+ this.server.close(() => {
10755
+ this.logger?.debug("StreamPipeServer stopped");
10756
+ resolve();
10757
+ });
10758
+ });
10759
+ }
10760
+ handleConnection(socket) {
10761
+ this.clients.add(socket);
10762
+ this.logger?.debug("StreamPipeServer client connected", { meta: { total: this.clients.size } });
10763
+ this._onClientCountChanged?.();
10764
+ socket.on("close", () => {
10292
10765
  this.removeClient(socket);
10293
10766
  });
10294
10767
  socket.on("error", () => {
@@ -10394,6 +10867,18 @@ var StreamBroker = class StreamBroker {
10394
10867
  audioRtpDecoder = null;
10395
10868
  audioCodecSession = null;
10396
10869
  /**
10870
+ * Live Opus egress encoder — lazily created when a WebRTC session negotiates
10871
+ * Opus (`opusConsumerCount > 0`). Encodes the SAME decoded PCM that feeds the
10872
+ * PCMU path into 48 kHz Opus access units, emitted as `codec:'opus'`
10873
+ * EncodedPackets ALONGSIDE the untouched PCMU packets (strictly additive — the
10874
+ * PCMU fan-out stays byte-identical for fallback sessions). Idled when the
10875
+ * last Opus consumer detaches. In-process (audio-codec cap / node-av), no
10876
+ * ffmpeg. See {@link feedOpusEncoder}.
10877
+ */
10878
+ opusEncodeSession = null;
10879
+ /** Number of attached WebRTC sessions that negotiated Opus (demand gate). */
10880
+ opusConsumerCount = 0;
10881
+ /**
10397
10882
  * Pending occupancy-linger teardown of {@link audioCodecSession} after
10398
10883
  * the last audio consumer detached. Cancelled when a consumer returns
10399
10884
  * within {@link AUDIO_CONSUMER_LINGER_MS}. See {@link reconcileAudioConsumer}.
@@ -10894,6 +11379,73 @@ var StreamBroker = class StreamBroker {
10894
11379
  return this.encodedCallbacks.size > 0 || this.audioChunkPlane.subscriberCount > 0;
10895
11380
  }
10896
11381
  /**
11382
+ * Register a WebRTC session that negotiated Opus. Turns on the live Opus
11383
+ * egress encoder (lazily, on the first decoded PCM chunk). Additive — the
11384
+ * PCMU fan-out is untouched, so PCMU-fallback sessions are unaffected.
11385
+ */
11386
+ acquireOpusEgress() {
11387
+ this.opusConsumerCount++;
11388
+ }
11389
+ /**
11390
+ * Deregister an Opus session. Idles (but keeps) the encoder when the last
11391
+ * Opus consumer detaches — the next {@link acquireOpusEgress} + PCM push
11392
+ * re-creates the upstream encode session, exactly like the decode client.
11393
+ */
11394
+ releaseOpusEgress() {
11395
+ if (this.opusConsumerCount > 0) this.opusConsumerCount--;
11396
+ if (this.opusConsumerCount === 0 && this.opusEncodeSession) this.opusEncodeSession.idle().catch((err) => {
11397
+ this.logger?.warn("opus-egress: idle failed", { meta: { error: require_dist.errMsg(err) } });
11398
+ });
11399
+ }
11400
+ /**
11401
+ * Encode ONE canonical 20 ms Opus silence packet for a session's prestream
11402
+ * A/V-sync padding (Opus has no fixed silence byte). Returns `null` when the
11403
+ * audio-codec cap is unavailable. See {@link encodeOpusSilenceFrame}.
11404
+ */
11405
+ async makeOpusSilenceFrame(channels) {
11406
+ if (!this.audioCodecApi) return null;
11407
+ return encodeOpusSilenceFrame(this.audioCodecApi, { channels });
11408
+ }
11409
+ /**
11410
+ * Feed one decoded PCM chunk (f32le, the decode contract) into the live Opus
11411
+ * egress encoder when an Opus consumer is attached. Lazily creates the encode
11412
+ * session sized to the chunk. No-op without Opus demand or the cap.
11413
+ */
11414
+ feedOpusEncoder(chunk) {
11415
+ if (this.opusConsumerCount === 0) return;
11416
+ const api = this.audioCodecApi;
11417
+ if (!api) return;
11418
+ if (!this.opusEncodeSession) {
11419
+ const targetChannels = Math.min(2, Math.max(1, chunk.channels));
11420
+ this.opusEncodeSession = new OpusEncodeSession(api, {
11421
+ sourceSampleRate: chunk.sampleRate,
11422
+ sourceChannels: chunk.channels,
11423
+ sourceFormat: "f32le",
11424
+ targetSampleRate: 48e3,
11425
+ targetChannels,
11426
+ bitrateKbps: targetChannels >= 2 ? 64 : 48,
11427
+ tag: `broker:${this.deviceId}:opus-egress`
11428
+ }, (frame) => this.emitOpusEncoded(frame), this.logger ?? void 0);
11429
+ }
11430
+ this.opusEncodeSession.pushPcm(chunk);
11431
+ }
11432
+ /** Fan out one encoded Opus access unit as a `codec:'opus'` EncodedPacket. */
11433
+ emitOpusEncoded(frame) {
11434
+ if (this.encodedCallbacks.size === 0) return;
11435
+ const packet = {
11436
+ type: "audio",
11437
+ data: frame.data,
11438
+ pts: frame.ptsMs,
11439
+ dts: frame.ptsMs,
11440
+ keyframe: false,
11441
+ codec: "opus"
11442
+ };
11443
+ for (const [cb, entry] of this.encodedCallbacks) {
11444
+ cb(packet);
11445
+ entry.packetsDelivered += 1;
11446
+ }
11447
+ }
11448
+ /**
10897
11449
  * Demand-gate the audio-codec decode session lifecycle. Called from
10898
11450
  * every consumer add/remove edge (via {@link checkDemand}). While an
10899
11451
  * audio consumer exists, cancel any pending linger-close. When
@@ -11994,6 +12546,17 @@ var StreamBroker = class StreamBroker {
11994
12546
  cb(packet);
11995
12547
  entry.packetsDelivered += 1;
11996
12548
  }
12549
+ if (this.opusConsumerCount > 0 && this.audioCodecApi) {
12550
+ const pcm16 = this.audioCodec === "PCMA" ? alawToPcm(payload) : mulawToPcm(payload);
12551
+ const f32 = new Float32Array(pcm16.length);
12552
+ for (let i = 0; i < pcm16.length; i++) f32[i] = pcm16[i] / 32768;
12553
+ this.feedOpusEncoder({
12554
+ data: Buffer.from(f32.buffer, f32.byteOffset, f32.byteLength),
12555
+ sampleRate: 8e3,
12556
+ channels: 1,
12557
+ timestamp: pts
12558
+ });
12559
+ }
11997
12560
  }
11998
12561
  }
11999
12562
  this.rtspRestreamer.pushAudioRtpPassthrough(rtpData);
@@ -12467,6 +13030,13 @@ var StreamBroker = class StreamBroker {
12467
13030
  this.logger?.warn("audio-codec: session close failed", { meta: { error: require_dist.errMsg(err) } });
12468
13031
  });
12469
13032
  }
13033
+ if (this.opusEncodeSession) {
13034
+ const opus = this.opusEncodeSession;
13035
+ this.opusEncodeSession = null;
13036
+ opus.close().catch((err) => {
13037
+ this.logger?.warn("opus-egress: session close failed", { meta: { error: require_dist.errMsg(err) } });
13038
+ });
13039
+ }
12470
13040
  }
12471
13041
  /**
12472
13042
  * Map an SDP audio track to an `AudioCodecSession` config the
@@ -12515,6 +13085,7 @@ var StreamBroker = class StreamBroker {
12515
13085
  offsetBytes = end;
12516
13086
  chunkOffsetMs += 20;
12517
13087
  }
13088
+ this.feedOpusEncoder(chunk);
12518
13089
  }
12519
13090
  };
12520
13091
  }
@@ -17128,8 +17699,8 @@ var SCRUB_PREFETCH_DIR_THRESHOLD = 2;
17128
17699
  var RecordedFeeder = class {
17129
17700
  deps;
17130
17701
  clock = new MonotonicClock();
17131
- /** Separate 8 kHz clock for PCMU audio; re-anchored together with video. */
17132
- audioClock = new MonotonicClock(8e3);
17702
+ /** Audio clock (PCMU 8 kHz / Opus 48 kHz); re-anchored together with video. */
17703
+ audioClock;
17133
17704
  clockHasAdvanced = false;
17134
17705
  /** Playback rate: 0 (paused) or a continuous factor in [0.25, 4]. */
17135
17706
  rate = 1;
@@ -17212,6 +17783,18 @@ var RecordedFeeder = class {
17212
17783
  scrubPrefetchInFlight = false;
17213
17784
  constructor(deps) {
17214
17785
  this.deps = deps;
17786
+ this.audioClock = new MonotonicClock(deps.audioClockRateHz ?? 8e3);
17787
+ }
17788
+ /**
17789
+ * The negotiated audio sink push fn (Opus preferred, else PCMU), or undefined
17790
+ * for a video-only sink. A feeder is wired with exactly ONE of the two.
17791
+ */
17792
+ resolveAudioPush() {
17793
+ const sink = this.deps.sink;
17794
+ const opus = sink.pushAudioOpus;
17795
+ if (typeof opus === "function") return (data, rtpTs) => opus.call(sink, data, rtpTs);
17796
+ const pcmu = sink.pushAudioPcmu;
17797
+ if (typeof pcmu === "function") return (data, rtpTs) => pcmu.call(sink, data, rtpTs);
17215
17798
  }
17216
17799
  /**
17217
17800
  * Seek to an epoch and (if rate > 0) begin forward playback. Resolves after
@@ -17731,7 +18314,8 @@ var RecordedFeeder = class {
17731
18314
  */
17732
18315
  async paceSegment(prepared, gen, resumeAfterPtsMs = null) {
17733
18316
  const rate = this.rate;
17734
- const hasAudioSink = typeof this.deps.sink.pushAudioPcmu === "function" && rate === 1;
18317
+ const audioPush = this.resolveAudioPush();
18318
+ const hasAudioSink = audioPush !== void 0 && rate === 1;
17735
18319
  const schedule = [];
17736
18320
  for (const au of prepared.aus) if (resumeAfterPtsMs === null || au.ptsMs > resumeAfterPtsMs) schedule.push({
17737
18321
  ptsMs: au.ptsMs,
@@ -17775,8 +18359,7 @@ var RecordedFeeder = class {
17775
18359
  this.lastFedVideoIdx = videoIdx++;
17776
18360
  this.cursorMs = prepared.startMs + (item.video.ptsMs - firstVideoPtsMs);
17777
18361
  } else if (item.audio) {
17778
- const pushAudio = this.deps.sink.pushAudioPcmu;
17779
- if (pushAudio) pushAudio.call(this.deps.sink, item.audio.data, this.audioClock.stamp(item.audio.ptsMs));
18362
+ if (audioPush) audioPush(item.audio.data, this.audioClock.stamp(item.audio.ptsMs));
17780
18363
  }
17781
18364
  }
17782
18365
  if (pushedVideo) this.clockHasAdvanced = true;
@@ -17858,7 +18441,7 @@ var RecordedFeeder = class {
17858
18441
  const video = await this.withTimeout(demux(bytes));
17859
18442
  if (this.disposed || token !== this.seekToken) return null;
17860
18443
  let audio = [];
17861
- if (wantAudio && this.deps.demuxAudio && this.deps.sink.pushAudioPcmu) {
18444
+ if (wantAudio && this.deps.demuxAudio && this.resolveAudioPush() !== void 0) {
17862
18445
  try {
17863
18446
  audio = await this.withTimeout(this.deps.demuxAudio(bytes));
17864
18447
  } catch {
@@ -18003,7 +18586,154 @@ var TimelineSession = class {
18003
18586
  this.feeder?.dispose();
18004
18587
  this.feeder = null;
18005
18588
  }
18006
- };
18589
+ };
18590
+ //#endregion
18591
+ //#region src/stream-broker/recorded/avcc-annexb.ts
18592
+ /**
18593
+ * avcc-annexb — pure byte helpers to turn an ISO-BMFF (mp4) length-prefixed
18594
+ * video sample plus its `avcC`/`hvcC` decoder config into an Annex-B access
18595
+ * unit with the parameter sets prepended (SPS/PPS for H.264, VPS/SPS/PPS for
18596
+ * H.265).
18597
+ *
18598
+ * mp4 stores VCL NALs length-prefixed (AVCC/HVCC: a 1–4 byte big-endian length
18599
+ * field, `lengthSizeMinusOne+1`, before each NAL) and keeps the parameter sets
18600
+ * OUT of the samples, inside the `avcC`/`hvcC` box. A raw decoder / RTP
18601
+ * packetizer needs Annex-B start codes (`00 00 00 01`) AND the parameter sets
18602
+ * fused onto every IDR. These helpers do exactly that in JS — no ffmpeg, no
18603
+ * decode, byte copies only — so the feeder-scrub keyframe path can skip the
18604
+ * per-fragment ffmpeg spawn.
18605
+ *
18606
+ * All functions are pure and total for well-formed input; malformed config /
18607
+ * sample bytes throw a `RangeError` (the caller treats a throw as "fall back to
18608
+ * ffmpeg"). The `description` bytes are the box payload WITH the 8-byte box
18609
+ * header already stripped (i.e. starting at `configurationVersion`), matching
18610
+ * `mp4box`'s `avcC`/`hvcC` DataStream output minus header — see
18611
+ * `recorder/scrub/fmp4-keyframes.ts` `extractDescription`.
18612
+ */
18613
+ /** Annex-B 4-byte start code prepended before every emitted NAL. */
18614
+ var START_CODE = Uint8Array.of(0, 0, 0, 1);
18615
+ /** Big-endian unsigned read of `size` (1..4) bytes at `off`. */
18616
+ function readUint(bytes, off, size) {
18617
+ if (off + size > bytes.length) throw new RangeError(`readUint out of range: off=${off} size=${size} len=${bytes.length}`);
18618
+ let v = 0;
18619
+ for (let i = 0; i < size; i++) v = v * 256 + bytes[off + i];
18620
+ return v;
18621
+ }
18622
+ /**
18623
+ * NAL length-prefix size in bytes (`lengthSizeMinusOne + 1`, 1..4) read from the
18624
+ * decoder config. `avcC` carries it at byte 4 (low 2 bits); `hvcC` at byte 21
18625
+ * (low 2 bits).
18626
+ */
18627
+ function parseNalLengthSize(description, isHevc) {
18628
+ const idx = isHevc ? 21 : 4;
18629
+ if (description.length <= idx) throw new RangeError(`config too short for lengthSizeMinusOne (len=${description.length})`);
18630
+ return (description[idx] & 3) + 1;
18631
+ }
18632
+ /** Concatenate byte chunks into one Uint8Array. */
18633
+ function concat$1(chunks) {
18634
+ let total = 0;
18635
+ for (const c of chunks) total += c.length;
18636
+ const out = new Uint8Array(total);
18637
+ let off = 0;
18638
+ for (const c of chunks) {
18639
+ out.set(c, off);
18640
+ off += c.length;
18641
+ }
18642
+ return out;
18643
+ }
18644
+ /** Push one Annex-B NAL (start code + payload) onto `chunks`. */
18645
+ function pushNal(chunks, payload) {
18646
+ chunks.push(START_CODE, payload);
18647
+ }
18648
+ /**
18649
+ * Parse the `avcC` parameter sets (SPS then PPS), emitting each as an Annex-B
18650
+ * NAL. Layout after the 4-byte profile/level prefix: byte 4 low-2 = length
18651
+ * size; byte 5 low-5 = numSPS; then `[u16 len][SPS]…`; then `[u8 numPPS]`; then
18652
+ * `[u16 len][PPS]…`.
18653
+ */
18654
+ function extractAvcParameterSets(desc) {
18655
+ const chunks = [];
18656
+ const numSps = desc[5] & 31;
18657
+ let p = 6;
18658
+ for (let i = 0; i < numSps; i++) {
18659
+ const len = readUint(desc, p, 2);
18660
+ p += 2;
18661
+ if (p + len > desc.length) throw new RangeError("avcC SPS length overruns config");
18662
+ pushNal(chunks, desc.subarray(p, p + len));
18663
+ p += len;
18664
+ }
18665
+ const numPps = readUint(desc, p, 1);
18666
+ p += 1;
18667
+ for (let i = 0; i < numPps; i++) {
18668
+ const len = readUint(desc, p, 2);
18669
+ p += 2;
18670
+ if (p + len > desc.length) throw new RangeError("avcC PPS length overruns config");
18671
+ pushNal(chunks, desc.subarray(p, p + len));
18672
+ p += len;
18673
+ }
18674
+ return chunks;
18675
+ }
18676
+ /**
18677
+ * Parse the `hvcC` parameter-set arrays (typically VPS, SPS, PPS in order),
18678
+ * emitting each contained NAL as Annex-B. Layout: byte 22 = numOfArrays; then
18679
+ * per array `[u8 flags+NALtype][u16 numNalus]` followed by `numNalus` ×
18680
+ * `[u16 len][NAL]`.
18681
+ */
18682
+ function extractHevcParameterSets(desc) {
18683
+ const chunks = [];
18684
+ const numArrays = readUint(desc, 22, 1);
18685
+ let p = 23;
18686
+ for (let a = 0; a < numArrays; a++) {
18687
+ p += 1;
18688
+ const numNalus = readUint(desc, p, 2);
18689
+ p += 2;
18690
+ for (let n = 0; n < numNalus; n++) {
18691
+ const len = readUint(desc, p, 2);
18692
+ p += 2;
18693
+ if (p + len > desc.length) throw new RangeError("hvcC NAL length overruns config");
18694
+ pushNal(chunks, desc.subarray(p, p + len));
18695
+ p += len;
18696
+ }
18697
+ }
18698
+ return chunks;
18699
+ }
18700
+ /**
18701
+ * Parameter sets from the decoder config as one Annex-B blob (each NAL led by a
18702
+ * `00 00 00 01` start code): SPS+PPS for H.264, VPS+SPS+PPS (+ any hvcC arrays)
18703
+ * for H.265. Throws on a malformed config.
18704
+ */
18705
+ function extractParameterSetsAnnexB(description, isHevc) {
18706
+ return concat$1(isHevc ? extractHevcParameterSets(description) : extractAvcParameterSets(description));
18707
+ }
18708
+ /**
18709
+ * Convert one length-prefixed (AVCC/HVCC) sample into Annex-B: walk each
18710
+ * `nalLengthSize`-byte length field, replacing it with a `00 00 00 01` start
18711
+ * code. Handles multi-NAL samples (multiple slices / SEI + VCL). Throws if a
18712
+ * length field overruns the sample.
18713
+ */
18714
+ function avccSampleToAnnexB(sample, nalLengthSize) {
18715
+ const chunks = [];
18716
+ let p = 0;
18717
+ while (p + nalLengthSize <= sample.length) {
18718
+ const len = readUint(sample, p, nalLengthSize);
18719
+ p += nalLengthSize;
18720
+ if (len === 0) continue;
18721
+ if (p + len > sample.length) throw new RangeError("AVCC NAL length overruns sample");
18722
+ pushNal(chunks, sample.subarray(p, p + len));
18723
+ p += len;
18724
+ }
18725
+ if (chunks.length === 0) throw new RangeError("AVCC sample yielded no NALs");
18726
+ return concat$1(chunks);
18727
+ }
18728
+ /**
18729
+ * Build a standalone-decodable Annex-B keyframe access unit: the config's
18730
+ * parameter sets, then the sample's NALs, all Annex-B framed. Throws on
18731
+ * malformed input (caller falls back to the ffmpeg demux).
18732
+ */
18733
+ function buildKeyframeAnnexB(sample, description, isHevc) {
18734
+ const nalLengthSize = parseNalLengthSize(description, isHevc);
18735
+ return concat$1([extractParameterSetsAnnexB(description, isHevc), avccSampleToAnnexB(sample, nalLengthSize)]);
18736
+ }
18007
18737
  //#endregion
18008
18738
  //#region src/stream-broker/recorded/ffmpeg-run-once.ts
18009
18739
  /**
@@ -18272,7 +19002,7 @@ function demuxMpegTsToAnnexB(ts) {
18272
19002
  let current = null;
18273
19003
  const finalize = () => {
18274
19004
  if (current === null) return;
18275
- const pes = current.length === 1 ? current[0] : concat$1(current);
19005
+ const pes = current.length === 1 ? current[0] : concat(current);
18276
19006
  current = null;
18277
19007
  const split = splitPes(pes);
18278
19008
  if (split === null || split.es.length === 0) return;
@@ -18303,7 +19033,7 @@ function demuxMpegTsToAnnexB(ts) {
18303
19033
  };
18304
19034
  }
18305
19035
  /** Concatenate TS payload fragments into one contiguous PES buffer. */
18306
- function concat$1(parts) {
19036
+ function concat(parts) {
18307
19037
  let total = 0;
18308
19038
  for (const p of parts) total += p.length;
18309
19039
  const out = new Uint8Array(total);
@@ -18449,156 +19179,15 @@ async function demuxSegmentKeyframesToAnnexB(bytes, ffmpegPath = "ffmpeg") {
18449
19179
  return keyframes.length > 0 ? keyframes : mapped.slice(0, 1);
18450
19180
  }
18451
19181
  //#endregion
18452
- //#region src/stream-broker/recorded/avcc-annexb.ts
18453
- /**
18454
- * avcc-annexb — pure byte helpers to turn an ISO-BMFF (mp4) length-prefixed
18455
- * video sample plus its `avcC`/`hvcC` decoder config into an Annex-B access
18456
- * unit with the parameter sets prepended (SPS/PPS for H.264, VPS/SPS/PPS for
18457
- * H.265).
18458
- *
18459
- * mp4 stores VCL NALs length-prefixed (AVCC/HVCC: a 1–4 byte big-endian length
18460
- * field, `lengthSizeMinusOne+1`, before each NAL) and keeps the parameter sets
18461
- * OUT of the samples, inside the `avcC`/`hvcC` box. A raw decoder / RTP
18462
- * packetizer needs Annex-B start codes (`00 00 00 01`) AND the parameter sets
18463
- * fused onto every IDR. These helpers do exactly that in JS — no ffmpeg, no
18464
- * decode, byte copies only — so the feeder-scrub keyframe path can skip the
18465
- * per-fragment ffmpeg spawn.
18466
- *
18467
- * All functions are pure and total for well-formed input; malformed config /
18468
- * sample bytes throw a `RangeError` (the caller treats a throw as "fall back to
18469
- * ffmpeg"). The `description` bytes are the box payload WITH the 8-byte box
18470
- * header already stripped (i.e. starting at `configurationVersion`), matching
18471
- * `mp4box`'s `avcC`/`hvcC` DataStream output minus header — see
18472
- * `recorder/scrub/fmp4-keyframes.ts` `extractDescription`.
18473
- */
18474
- /** Annex-B 4-byte start code prepended before every emitted NAL. */
18475
- var START_CODE = Uint8Array.of(0, 0, 0, 1);
18476
- /** Big-endian unsigned read of `size` (1..4) bytes at `off`. */
18477
- function readUint(bytes, off, size) {
18478
- if (off + size > bytes.length) throw new RangeError(`readUint out of range: off=${off} size=${size} len=${bytes.length}`);
18479
- let v = 0;
18480
- for (let i = 0; i < size; i++) v = v * 256 + bytes[off + i];
18481
- return v;
18482
- }
18483
- /**
18484
- * NAL length-prefix size in bytes (`lengthSizeMinusOne + 1`, 1..4) read from the
18485
- * decoder config. `avcC` carries it at byte 4 (low 2 bits); `hvcC` at byte 21
18486
- * (low 2 bits).
18487
- */
18488
- function parseNalLengthSize(description, isHevc) {
18489
- const idx = isHevc ? 21 : 4;
18490
- if (description.length <= idx) throw new RangeError(`config too short for lengthSizeMinusOne (len=${description.length})`);
18491
- return (description[idx] & 3) + 1;
18492
- }
18493
- /** Concatenate byte chunks into one Uint8Array. */
18494
- function concat(chunks) {
18495
- let total = 0;
18496
- for (const c of chunks) total += c.length;
18497
- const out = new Uint8Array(total);
18498
- let off = 0;
18499
- for (const c of chunks) {
18500
- out.set(c, off);
18501
- off += c.length;
18502
- }
18503
- return out;
18504
- }
18505
- /** Push one Annex-B NAL (start code + payload) onto `chunks`. */
18506
- function pushNal(chunks, payload) {
18507
- chunks.push(START_CODE, payload);
18508
- }
18509
- /**
18510
- * Parse the `avcC` parameter sets (SPS then PPS), emitting each as an Annex-B
18511
- * NAL. Layout after the 4-byte profile/level prefix: byte 4 low-2 = length
18512
- * size; byte 5 low-5 = numSPS; then `[u16 len][SPS]…`; then `[u8 numPPS]`; then
18513
- * `[u16 len][PPS]…`.
18514
- */
18515
- function extractAvcParameterSets(desc) {
18516
- const chunks = [];
18517
- const numSps = desc[5] & 31;
18518
- let p = 6;
18519
- for (let i = 0; i < numSps; i++) {
18520
- const len = readUint(desc, p, 2);
18521
- p += 2;
18522
- if (p + len > desc.length) throw new RangeError("avcC SPS length overruns config");
18523
- pushNal(chunks, desc.subarray(p, p + len));
18524
- p += len;
18525
- }
18526
- const numPps = readUint(desc, p, 1);
18527
- p += 1;
18528
- for (let i = 0; i < numPps; i++) {
18529
- const len = readUint(desc, p, 2);
18530
- p += 2;
18531
- if (p + len > desc.length) throw new RangeError("avcC PPS length overruns config");
18532
- pushNal(chunks, desc.subarray(p, p + len));
18533
- p += len;
18534
- }
18535
- return chunks;
18536
- }
18537
- /**
18538
- * Parse the `hvcC` parameter-set arrays (typically VPS, SPS, PPS in order),
18539
- * emitting each contained NAL as Annex-B. Layout: byte 22 = numOfArrays; then
18540
- * per array `[u8 flags+NALtype][u16 numNalus]` followed by `numNalus` ×
18541
- * `[u16 len][NAL]`.
18542
- */
18543
- function extractHevcParameterSets(desc) {
18544
- const chunks = [];
18545
- const numArrays = readUint(desc, 22, 1);
18546
- let p = 23;
18547
- for (let a = 0; a < numArrays; a++) {
18548
- p += 1;
18549
- const numNalus = readUint(desc, p, 2);
18550
- p += 2;
18551
- for (let n = 0; n < numNalus; n++) {
18552
- const len = readUint(desc, p, 2);
18553
- p += 2;
18554
- if (p + len > desc.length) throw new RangeError("hvcC NAL length overruns config");
18555
- pushNal(chunks, desc.subarray(p, p + len));
18556
- p += len;
18557
- }
18558
- }
18559
- return chunks;
18560
- }
18561
- /**
18562
- * Parameter sets from the decoder config as one Annex-B blob (each NAL led by a
18563
- * `00 00 00 01` start code): SPS+PPS for H.264, VPS+SPS+PPS (+ any hvcC arrays)
18564
- * for H.265. Throws on a malformed config.
18565
- */
18566
- function extractParameterSetsAnnexB(description, isHevc) {
18567
- return concat(isHevc ? extractHevcParameterSets(description) : extractAvcParameterSets(description));
18568
- }
18569
- /**
18570
- * Convert one length-prefixed (AVCC/HVCC) sample into Annex-B: walk each
18571
- * `nalLengthSize`-byte length field, replacing it with a `00 00 00 01` start
18572
- * code. Handles multi-NAL samples (multiple slices / SEI + VCL). Throws if a
18573
- * length field overruns the sample.
18574
- */
18575
- function avccSampleToAnnexB(sample, nalLengthSize) {
18576
- const chunks = [];
18577
- let p = 0;
18578
- while (p + nalLengthSize <= sample.length) {
18579
- const len = readUint(sample, p, nalLengthSize);
18580
- p += nalLengthSize;
18581
- if (len === 0) continue;
18582
- if (p + len > sample.length) throw new RangeError("AVCC NAL length overruns sample");
18583
- pushNal(chunks, sample.subarray(p, p + len));
18584
- p += len;
18585
- }
18586
- if (chunks.length === 0) throw new RangeError("AVCC sample yielded no NALs");
18587
- return concat(chunks);
18588
- }
18589
- /**
18590
- * Build a standalone-decodable Annex-B keyframe access unit: the config's
18591
- * parameter sets, then the sample's NALs, all Annex-B framed. Throws on
18592
- * malformed input (caller falls back to the ffmpeg demux).
18593
- */
18594
- function buildKeyframeAnnexB(sample, description, isHevc) {
18595
- const nalLengthSize = parseNalLengthSize(description, isHevc);
18596
- return concat([extractParameterSetsAnnexB(description, isHevc), avccSampleToAnnexB(sample, nalLengthSize)]);
18597
- }
18598
- //#endregion
18599
19182
  //#region src/stream-broker/recorded/segment-demux-js.ts
18600
19183
  /**
18601
- * segment-demux-js — PURE-JS keyframe demux for the feeder-scrub sub-mode.
19184
+ * segment-demux-js — PURE-JS in-process demux for recorded playback.
19185
+ *
19186
+ * Two flavours, both replacing a per-fragment ffmpeg spawn with an mp4box parse:
19187
+ * - {@link demuxSegmentKeyframesJs} / {@link demuxSegmentKeyframesPreferJs} —
19188
+ * KEYFRAME-only, for the feeder-scrub sub-mode.
19189
+ * - {@link demuxSegmentFullJs} / {@link demuxSegmentPreferJs} — FULL playback
19190
+ * (every access unit, sync + delta), the drop-in for `RecordedFeederDeps.demux`.
18602
19191
  *
18603
19192
  * Replaces the per-fragment ffmpeg spawn ({@link demuxSegmentKeyframesToAnnexB},
18604
19193
  * a ~140 ms subprocess floor) with an in-process mp4box parse. A recorded `.m4s`
@@ -18659,6 +19248,52 @@ async function demuxSegmentKeyframesPreferJs(bytes, opts = {}) {
18659
19248
  }
18660
19249
  return demuxSegmentKeyframesToAnnexB(bytes, opts.ffmpegPath);
18661
19250
  }
19251
+ /**
19252
+ * Pure-JS FULL-playback demux of one self-contained `.m4s` fragment: return
19253
+ * EVERY access unit (sync + delta) as params-fused Annex-B with segment-relative
19254
+ * `ptsMs`, matching the {@link AccessUnit} contract of {@link demuxSegmentToAnnexB}
19255
+ * (the ffmpeg mpegts path). Returns `null` if mp4box found no video / no
19256
+ * decodable sample (caller falls back to ffmpeg).
19257
+ *
19258
+ * Each sync sample is emitted through {@link buildKeyframeAnnexB} (parameter sets
19259
+ * fused ahead of the IDR — SPS/PPS for H.264, VPS/SPS/PPS for H.265); each delta
19260
+ * sample is emitted through {@link avccSampleToAnnexB} (its VCL NALs converted
19261
+ * from length-prefixed AVCC/HVCC to Annex-B, no parameter sets). `ptsMs` is the
19262
+ * sample composition time anchored to 0 at the first sample — the same
19263
+ * segment-relative timeline the ffmpeg PES-PTS path produces.
19264
+ *
19265
+ * Throws only on a genuinely malformed decoder config / sample; the wrapper
19266
+ * ({@link demuxSegmentPreferJs}) turns that into an ffmpeg fallback.
19267
+ */
19268
+ async function demuxSegmentFullJs(bytes) {
19269
+ const extracted = await require_fmp4_keyframes.extractSamples(bytes, 0);
19270
+ if (!extracted || extracted.samples.length === 0) return null;
19271
+ const isHevc = isHevcCodec(extracted.codec);
19272
+ const codec = isHevc ? "H265" : "H264";
19273
+ const nalLengthSize = parseNalLengthSize(extracted.description, isHevc);
19274
+ return extracted.samples.map((s) => ({
19275
+ data: s.isSync ? buildKeyframeAnnexB(s.data, extracted.description, isHevc) : avccSampleToAnnexB(s.data, nalLengthSize),
19276
+ ptsMs: s.ts,
19277
+ keyframe: s.isSync,
19278
+ codec
19279
+ }));
19280
+ }
19281
+ /**
19282
+ * Feeder FULL-playback demux: try the pure-JS extractor first, fall back to the
19283
+ * ffmpeg spawn ({@link demuxSegmentToAnnexB}) if the JS parse yields no access
19284
+ * unit or throws on malformed bytes. Preserves the exact {@link AccessUnit}
19285
+ * contract either way, so it is a drop-in for `RecordedFeederDeps.demux`.
19286
+ */
19287
+ async function demuxSegmentPreferJs(bytes, opts = {}) {
19288
+ try {
19289
+ const js = await demuxSegmentFullJs(bytes);
19290
+ if (js && js.length > 0) return js;
19291
+ opts.onJsFallback?.("mp4box parse found no access units");
19292
+ } catch (err) {
19293
+ opts.onJsFallback?.(`mp4box parse threw: ${String(err)}`);
19294
+ }
19295
+ return demuxSegmentToAnnexB(bytes, opts.ffmpegPath);
19296
+ }
18662
19297
  //#endregion
18663
19298
  //#region src/stream-broker/recorded/segment-audio.ts
18664
19299
  /**
@@ -18743,6 +19378,147 @@ async function demuxSegmentToPcmu(bytes, ffmpegPath = "ffmpeg") {
18743
19378
  return sliceMuLawToPcmuFrames(mulaw);
18744
19379
  }
18745
19380
  //#endregion
19381
+ //#region src/stream-broker/recorded/segment-audio-js.ts
19382
+ var import_mp4box_all = /* @__PURE__ */ require_chunk.__toESM(require_fmp4_keyframes.require_mp4box_all());
19383
+ /** True for an mp4box audio codec string that is Opus (`Opus`/`opus`). */
19384
+ function isOpusCodec(codec) {
19385
+ return /^opus$/i.test(codec);
19386
+ }
19387
+ /**
19388
+ * Phase 1: append the whole segment, flush, resolve the FIRST audio track when
19389
+ * `onReady` fires. Resolves null on any failure (no audio track, error, or
19390
+ * garbage bytes that never trigger a callback — a short timer settles those).
19391
+ * Mirrors `fmp4-keyframes.ts` `readTrack` but for the audio track.
19392
+ */
19393
+ function readAudioTrack(file, segment) {
19394
+ return new Promise((resolve) => {
19395
+ let settled = false;
19396
+ const done = (v) => {
19397
+ if (settled) return;
19398
+ settled = true;
19399
+ clearTimeout(timer);
19400
+ resolve(v);
19401
+ };
19402
+ const timer = setTimeout(() => done(null), 250);
19403
+ file.onError = () => done(null);
19404
+ file.onReady = (info) => {
19405
+ const audio = info.audioTracks?.[0];
19406
+ if (!audio) return done(null);
19407
+ done({ audio });
19408
+ };
19409
+ const copy = segment.buffer.slice(segment.byteOffset, segment.byteOffset + segment.byteLength);
19410
+ copy.fileStart = 0;
19411
+ try {
19412
+ file.appendBuffer(copy);
19413
+ file.flush();
19414
+ } catch {
19415
+ done(null);
19416
+ }
19417
+ });
19418
+ }
19419
+ /**
19420
+ * Demux a recorded `.m4s` fragment's audio track and return its codec + all
19421
+ * access units, or null if the fragment carries no audio / no decodable sample.
19422
+ * Codec-agnostic: the caller decides what to do with a non-Opus codec.
19423
+ * No decode, no ffmpeg — byte copies only.
19424
+ */
19425
+ async function extractAudioSamples(bytes) {
19426
+ const file = import_mp4box_all.createFile();
19427
+ const ready = await readAudioTrack(file, bytes);
19428
+ if (!ready) return null;
19429
+ const { audio } = ready;
19430
+ const collected = [];
19431
+ let firstCts = null;
19432
+ file.onSamples = (_id, _user, samples) => {
19433
+ for (const s of samples) {
19434
+ if (firstCts === null) firstCts = s.cts;
19435
+ const ptsMs = Math.round((s.cts - firstCts) / s.timescale * 1e3);
19436
+ collected.push({
19437
+ data: new Uint8Array(s.data),
19438
+ ptsMs
19439
+ });
19440
+ }
19441
+ };
19442
+ file.setExtractionOptions(audio.id, null, { nbSamples: 1e5 });
19443
+ try {
19444
+ file.start();
19445
+ } catch {
19446
+ return null;
19447
+ }
19448
+ if (collected.length === 0) return null;
19449
+ return {
19450
+ codec: audio.codec,
19451
+ sampleRate: audio.audio?.sample_rate ?? 0,
19452
+ channels: audio.audio?.channel_count ?? 0,
19453
+ accessUnits: collected
19454
+ };
19455
+ }
19456
+ /**
19457
+ * Pure-JS Opus audio demux of one fragment: return the fragment's Opus access
19458
+ * units, or `null` when the audio track is absent or NOT Opus (a legacy AAC
19459
+ * fragment → caller falls back to the ffmpeg AAC→Opus path). Throws only on a
19460
+ * genuinely malformed parse; the wrapper turns that into a fallback.
19461
+ */
19462
+ async function demuxSegmentAudioOpusJs(bytes) {
19463
+ const extracted = await extractAudioSamples(bytes);
19464
+ if (!extracted || !isOpusCodec(extracted.codec)) return null;
19465
+ return extracted.accessUnits;
19466
+ }
19467
+ /**
19468
+ * ffmpeg args to transcode a fragment's audio (stdin) into a self-contained
19469
+ * fragmented-mp4 with an Opus track on stdout — the SAME container the recorder
19470
+ * writes (`ffmpeg-args.ts`), so {@link demuxSegmentAudioOpusJs} reads the result
19471
+ * back with no extra code. Used ONLY as the legacy-AAC fallback for Opus
19472
+ * sessions. `-vn` drops video; `-map 0:a:0` picks the audio track.
19473
+ */
19474
+ var SEGMENT_AUDIO_OPUS_FFMPEG_ARGS = [
19475
+ "-hide_banner",
19476
+ "-loglevel",
19477
+ "error",
19478
+ "-i",
19479
+ "pipe:0",
19480
+ "-vn",
19481
+ "-map",
19482
+ "0:a:0",
19483
+ "-c:a",
19484
+ "libopus",
19485
+ "-b:a",
19486
+ "48k",
19487
+ "-f",
19488
+ "mp4",
19489
+ "-movflags",
19490
+ "+frag_keyframe+empty_moov+default_base_moof",
19491
+ "pipe:1"
19492
+ ];
19493
+ /**
19494
+ * Opus-preferred recorded audio demux for Opus-negotiated sessions:
19495
+ * 1. Try the in-process Opus extraction (post-A1 fragments — NO ffmpeg).
19496
+ * 2. On a miss (legacy pre-A1 AAC fragment), transcode the fragment's audio
19497
+ * to an Opus fragmented-mp4 via ffmpeg and read THAT back in-process.
19498
+ * Returns `[]` (never throws) when there is no usable audio — recorded audio is
19499
+ * best-effort and must never block recorded video. Mirrors the video-side
19500
+ * `demuxSegmentPreferJs`.
19501
+ */
19502
+ async function demuxSegmentAudioOpusPreferJs(bytes, opts = {}) {
19503
+ try {
19504
+ const direct = await demuxSegmentAudioOpusJs(bytes);
19505
+ if (direct) return direct;
19506
+ } catch {}
19507
+ opts.onFfmpegFallback?.("audio track is not Opus (legacy fragment)");
19508
+ try {
19509
+ const opusFmp4 = await runFfmpegOnce({
19510
+ ffmpegPath: opts.ffmpegPath ?? "ffmpeg",
19511
+ args: SEGMENT_AUDIO_OPUS_FFMPEG_ARGS,
19512
+ input: bytes,
19513
+ tolerateNonZeroExit: true
19514
+ });
19515
+ if (opusFmp4.length === 0) return [];
19516
+ return await demuxSegmentAudioOpusJs(opusFmp4) ?? [];
19517
+ } catch {
19518
+ return [];
19519
+ }
19520
+ }
19521
+ //#endregion
18746
19522
  //#region src/stream-broker/webrtc/broker-webrtc-server.ts
18747
19523
  /**
18748
19524
  * Broker-integrated WebRTC server.
@@ -18766,6 +19542,14 @@ var ADAPTIVE_CONFIG = {
18766
19542
  minTimeBetweenChangesMs: 6e4
18767
19543
  };
18768
19544
  /**
19545
+ * True when `broker` is an in-process StreamBroker exposing the Opus egress
19546
+ * controls. Uses `in` narrowing + `typeof` checks (no cast) so the returned
19547
+ * type predicate is sound.
19548
+ */
19549
+ function supportsOpusEgress(broker) {
19550
+ return "acquireOpusEgress" in broker && typeof broker.acquireOpusEgress === "function" && "releaseOpusEgress" in broker && typeof broker.releaseOpusEgress === "function" && "makeOpusSilenceFrame" in broker && typeof broker.makeOpusSilenceFrame === "function";
19551
+ }
19552
+ /**
18769
19553
  * Whether a WebRTC session for this broker must re-encode the source to
18770
19554
  * Constrained Baseline H.264 so iOS (WebKit) can decode it. True only for
18771
19555
  * an H.264 source whose profile-level-id is known AND non-Baseline
@@ -19352,16 +20136,34 @@ var BrokerWebrtcServer = class {
19352
20136
  timestampMicros: packet.pts * 1e3
19353
20137
  }
19354
20138
  });
19355
- } else if (packet.type === "audio") pushFrame({
19356
- type: "audio",
19357
- frame: {
19358
- data: packet.data,
19359
- codec: packet.codec?.toLowerCase() === "pcma" ? "Pcma" : "Pcmu",
19360
- sampleRate: 8e3,
19361
- channels: 1,
19362
- timestampMicros: packet.pts * 1e3
20139
+ } else if (packet.type === "audio") {
20140
+ const pktCodec = packet.codec?.toLowerCase();
20141
+ if (session?.isOpusAudio === true) {
20142
+ if (pktCodec !== "opus") return;
20143
+ pushFrame({
20144
+ type: "audio",
20145
+ frame: {
20146
+ data: packet.data,
20147
+ codec: "Opus",
20148
+ sampleRate: 48e3,
20149
+ channels: 2,
20150
+ timestampMicros: packet.pts * 1e3
20151
+ }
20152
+ });
20153
+ } else {
20154
+ if (pktCodec === "opus") return;
20155
+ pushFrame({
20156
+ type: "audio",
20157
+ frame: {
20158
+ data: packet.data,
20159
+ codec: pktCodec === "pcma" ? "Pcma" : "Pcmu",
20160
+ sampleRate: 8e3,
20161
+ channels: 1,
20162
+ timestampMicros: packet.pts * 1e3
20163
+ }
20164
+ });
19363
20165
  }
19364
- });
20166
+ }
19365
20167
  }, annexbAttribution);
19366
20168
  warmUpUnsubscribe?.();
19367
20169
  const preBuffer = broker.getPreBuffer();
@@ -19534,46 +20336,84 @@ var BrokerWebrtcServer = class {
19534
20336
  const readRecorded = this.readRecordedSegmentBytes;
19535
20337
  const resolveFfmpeg = this.resolveFfmpegPath;
19536
20338
  let scrubJsFallbackLogged = false;
20339
+ let fullJsFallbackLogged = false;
20340
+ let audioOpusFallbackLogged = false;
19537
20341
  if (locateRecorded && readRecorded) {
19538
20342
  let timeline;
19539
20343
  timeline = new TimelineSession({
19540
20344
  session,
19541
20345
  deviceId,
19542
- makeFeeder: (profile) => new RecordedFeeder({
19543
- deviceId,
19544
- profile,
19545
- locate: locateRecorded,
19546
- readBytes: readRecorded,
19547
- demux: (b) => demuxSegmentToAnnexB(b, resolveFfmpeg?.()),
19548
- demuxScrub: (b) => demuxSegmentKeyframesPreferJs(b, {
19549
- ffmpegPath: resolveFfmpeg?.(),
19550
- onFfmpegFallback: (reason) => {
19551
- if (scrubJsFallbackLogged) return;
19552
- scrubJsFallbackLogged = true;
19553
- sessionLogger.warn("recorded scrub: JS keyframe demux failed — ffmpeg fallback (once/session)", { meta: {
20346
+ makeFeeder: (profile) => {
20347
+ const opusSession = session.isOpusAudio;
20348
+ return new RecordedFeeder({
20349
+ deviceId,
20350
+ profile,
20351
+ locate: locateRecorded,
20352
+ readBytes: readRecorded,
20353
+ demux: (b) => demuxSegmentPreferJs(b, {
20354
+ ffmpegPath: resolveFfmpeg?.(),
20355
+ onJsFallback: (reason) => {
20356
+ if (fullJsFallbackLogged) return;
20357
+ fullJsFallbackLogged = true;
20358
+ sessionLogger.warn("recorded playback: JS full demux failed — ffmpeg fallback (once/session)", { meta: {
20359
+ sessionId,
20360
+ deviceId,
20361
+ profile,
20362
+ reason
20363
+ } });
20364
+ }
20365
+ }),
20366
+ demuxScrub: (b) => demuxSegmentKeyframesPreferJs(b, {
20367
+ ffmpegPath: resolveFfmpeg?.(),
20368
+ onFfmpegFallback: (reason) => {
20369
+ if (scrubJsFallbackLogged) return;
20370
+ scrubJsFallbackLogged = true;
20371
+ sessionLogger.warn("recorded scrub: JS keyframe demux failed — ffmpeg fallback (once/session)", { meta: {
20372
+ sessionId,
20373
+ deviceId,
20374
+ profile,
20375
+ reason
20376
+ } });
20377
+ }
20378
+ }),
20379
+ demuxAudio: opusSession ? async (b) => {
20380
+ return (await demuxSegmentAudioOpusPreferJs(b, {
20381
+ ffmpegPath: resolveFfmpeg?.(),
20382
+ onFfmpegFallback: (reason) => {
20383
+ if (audioOpusFallbackLogged) return;
20384
+ audioOpusFallbackLogged = true;
20385
+ sessionLogger.warn("recorded audio: JS Opus demux missed — ffmpeg AAC→Opus fallback (once/session)", { meta: {
20386
+ sessionId,
20387
+ deviceId,
20388
+ profile,
20389
+ reason
20390
+ } });
20391
+ }
20392
+ })).map((au) => ({
20393
+ data: au.data,
20394
+ ptsMs: au.ptsMs
20395
+ }));
20396
+ } : (b) => demuxSegmentToPcmu(b, resolveFfmpeg?.()),
20397
+ audioClockRateHz: opusSession ? 48e3 : 8e3,
20398
+ sink: opusSession ? {
20399
+ pushAccessUnit: (data, ts, codec) => session.pushRecordedAccessUnit(data, ts, codec),
20400
+ pushAudioOpus: (opus, ts) => session.writeRecordedAudioOpus(Buffer.from(opus), ts)
20401
+ } : {
20402
+ pushAccessUnit: (data, ts, codec) => session.pushRecordedAccessUnit(data, ts, codec),
20403
+ pushAudioPcmu: (pcmu, ts) => session.writeRecordedAudio(Buffer.from(pcmu), ts)
20404
+ },
20405
+ onState: (s) => {
20406
+ sessionLogger.info("recorded: feeder state", { meta: {
19554
20407
  sessionId,
19555
20408
  deviceId,
19556
20409
  profile,
19557
- reason
20410
+ state: s
19558
20411
  } });
19559
- }
19560
- }),
19561
- demuxAudio: (b) => demuxSegmentToPcmu(b, resolveFfmpeg?.()),
19562
- sink: {
19563
- pushAccessUnit: (data, ts, codec) => session.pushRecordedAccessUnit(data, ts, codec),
19564
- pushAudioPcmu: (pcmu, ts) => session.writeRecordedAudio(Buffer.from(pcmu), ts)
19565
- },
19566
- onState: (s) => {
19567
- sessionLogger.info("recorded: feeder state", { meta: {
19568
- sessionId,
19569
- deviceId,
19570
- profile,
19571
- state: s
19572
- } });
19573
- timeline._emitState(s);
19574
- },
19575
- onPosition: (epochMs) => timeline._emitPosition(epochMs)
19576
- })
20412
+ timeline._emitState(s);
20413
+ },
20414
+ onPosition: (epochMs) => timeline._emitPosition(epochMs)
20415
+ });
20416
+ }
19577
20417
  });
19578
20418
  sessionLogger.info("recorded: TimelineSession wired (control accessors present)", { meta: {
19579
20419
  sessionId,
@@ -19597,6 +20437,13 @@ var BrokerWebrtcServer = class {
19597
20437
  };
19598
20438
  }
19599
20439
  session.onConnected = () => {
20440
+ if (!entry.releaseOpusEgress && session.isOpusAudio && supportsOpusEgress(broker)) {
20441
+ broker.acquireOpusEgress();
20442
+ entry.releaseOpusEgress = () => broker.releaseOpusEgress();
20443
+ broker.makeOpusSilenceFrame(2).then((frame) => {
20444
+ if (frame) session.setOpusSilenceFrame(frame);
20445
+ }).catch(() => {});
20446
+ }
19600
20447
  if (entry.attributionTagged) return;
19601
20448
  let attempt = 0;
19602
20449
  const tag = () => {
@@ -19795,6 +20642,8 @@ var BrokerWebrtcServer = class {
19795
20642
  entry.unsubBroker();
19796
20643
  entry.unsubRtp?.();
19797
20644
  entry.unsubSdpParams?.();
20645
+ entry.releaseOpusEgress?.();
20646
+ entry.releaseOpusEgress = void 0;
19798
20647
  entry.closeSource();
19799
20648
  }
19800
20649
  resolveBrokerId(streamId, hints = {}) {