From 63164a661eec9dee8825da8a372d06f7c7b6a6ca Mon Sep 17 00:00:00 2001 From: Claude Date: Thu, 13 Aug 2026 23:18:12 +0000 Subject: [PATCH 1/6] Audit the 91 Processor docstrings against their code, fix 62 findings Five parallel reviewers read every docstring against its forward() -- equations re-derived, Axes lines checked against the batch registers, parameter lists against the dataclass fields, doctests executed. Four findings were code bugs the prose exposed. Resampler resampled axis 0, scipy's default, while promising the last axis. SelectiveMIMOChannel validated its input against N_r instead of N_t and rejected every non-square channel's correct frames. BlindCFOCompensator's history stored 16 times the frequency offset; it now stores the omega_0 iterates it documents, renamed history_ (D23). Laser drew its "random" initial phase from a Gaussian of std 2 pi instead of uniformly. The rest is prose catching up with code. Equations straightened: BWFilter's mask was off by 2 against its own parameters section, AmplitudeDemapper decides on |Re y| per quadrature lane rather than |y|, the Rice path of TappedDelayLineChannel now carries the gamma_0 scaling the code applies, and the optical alpha_dB conversion is typeset unambiguously. Stale claims deleted: seven phantom pre-D46 parameters on FiberLink and DBP replaced by one fiber: FiberSpec entry, the inert norm field of FrequencyDomainEqualizer removed, 1-D-only Axes lines on broadcasting blocks rewritten, "multiplied" for a division, a "time" method that never existed. The MIMO detectors' stored decisions are S_ (D23), the CMA equalizer is written W since H is the channel everywhere else, BPS gained the Attributes section phase_ deserved, and PtsPaprReductor validates its (T, F) layout in prepare() instead of dying on a bare IndexError. The batch registers were corrected on the way: DelayRemover and BlindPhaseTracker verified BROADCAST, Normalizer moved to EXEMPT with its pooling documented. Co-Authored-By: Claude Opus 5 --- CHANGELOG.md | 33 +++++++++++ CONVENTIONS.md | 2 +- .../simple/one_shot_cfo_iq_compensation.py | 2 +- src/comnumpy/core/channels.py | 14 ++++- src/comnumpy/core/compensators.py | 55 +++++++++++------- src/comnumpy/core/filters.py | 19 +++---- src/comnumpy/core/impairments.py | 4 ++ src/comnumpy/core/mappers.py | 7 +++ src/comnumpy/core/processors.py | 57 ++++++++++++------- src/comnumpy/core/shaping.py | 24 +++++--- src/comnumpy/fec/convolutional.py | 2 +- src/comnumpy/mimo/channels.py | 4 +- src/comnumpy/mimo/coding.py | 7 ++- src/comnumpy/mimo/compensators.py | 23 +++++--- src/comnumpy/mimo/detectors.py | 26 ++++++--- src/comnumpy/ofdm/compensators.py | 11 ++-- src/comnumpy/ofdm/predistorders.py | 36 +++++++----- src/comnumpy/ofdm/processors.py | 4 +- src/comnumpy/optical/channels.py | 12 ++-- src/comnumpy/optical/dbp.py | 30 +++------- src/comnumpy/optical/devices.py | 21 ++++--- src/comnumpy/optical/links.py | 36 +++++------- src/comnumpy/optical/utils.py | 6 +- tests/test_batch_contract.py | 38 ++++++++----- 24 files changed, 291 insertions(+), 182 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 4cdfa83..2b03431 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -45,6 +45,39 @@ one release; there is no compatibility layer. | `core.metrics.calculate_acpr` | `compute_acpr` — it was the only `calculate_*` in the library, against 17 `compute_*` | | `core.metrics.compute_effective_SNR`, `ofdm.metrics.compute_PAPR` | `compute_effective_snr`, `compute_papr` — the two capitalized outliers among functions otherwise all lowercase (`compute_ser`, `compute_ber`, `compute_evm`, `compute_ccdf`, `compute_mi`) | +### Changed — the 91 docstrings audited against their code + +Five parallel reviewers read every `Processor` docstring against its +`forward()` -- equations, Axes lines, parameter lists, doctests -- and +62 findings were fixed. Four were **code** bugs the prose exposed: +`Resampler` resampled axis 0 (scipy's default) while promising the last +axis; `SelectiveMIMOChannel` validated its input against `N_r` instead +of `N_t`, rejecting every non-square channel's correct frames; +`BlindCFOCompensator.history` stored 16 times the offset (renamed +`history_`, D23, and fixed to store the omega_0 iterates it documents); +and `Laser` drew its "random" initial phase from a Gaussian of std 2 pi +instead of uniformly on [-pi, pi). + +The rest is the docstrings catching up with the code. Wrong equations +straightened: `BWFilter`'s mask (off by 2 vs its own parameters), +`AmplitudeDemapper`'s decision (on |Re y|, per quadrature lane, not +|y|), the Rice path of `TappedDelayLineChannel` (the gamma_0 scaling +the code applies), the ambiguous alpha_dB conversion in the optical +helpers. Stale claims deleted: seven phantom pre-D46 parameters on +`FiberLink` and `DBP` (now one `fiber: FiberSpec` entry), the unusable +`norm` field of `FrequencyDomainEqualizer` (removed -- it never reached +the FFT), 1-D-only Axes lines on blocks that broadcast (CD, Kerr, +EDFA, BlindPhaseTracker), "multiplied" for a division, `"time"` as a +method that never existed. The MIMO detectors' stored decisions are +`S_` (D23), the CMA equalizer is written W -- H is the channel +everywhere else -- and `BlindPhaseSearchCompensator` gained the +Attributes section its `phase_` deserved. The batch registers were +corrected on the way: `DelayRemover` and `BlindPhaseTracker` are +verified BROADCAST, `Normalizer` moved to EXEMPT -- its gain is one +scalar over the whole array by documented design, and its docstring now +warns that a batch is pooled. `PtsPaprReductor` validates its (T, F) +layout in `prepare()` instead of dying on a bare IndexError. + ### Added — the batch promise is a ratchet over the catalogue A convention over 91 blocks is only worth the sweep that checks it. diff --git a/CONVENTIONS.md b/CONVENTIONS.md index fb1ef1f..b40c502 100644 --- a/CONVENTIONS.md +++ b/CONVENTIONS.md @@ -41,7 +41,7 @@ Every block belongs to exactly one category, stated in its docstring ("Axes:" line): 1. **Element-wise** — operates pointwise, shape-agnostic - (`AWGN`, `SymbolMapper`, `HardClipper`). + (`AWGN`, `SymbolMapper`, `Clipper`). 2. **Axis -1** — hardcodes `axis=-1` and broadcasts over everything else (filters, `FFTProcessor`, `IFFTProcessor`, `CyclicPrefixer`). 3. **Declared axis** — requires a specific axis and validates it in diff --git a/examples/simple/one_shot_cfo_iq_compensation.py b/examples/simple/one_shot_cfo_iq_compensation.py index eea7c85..7f7f36f 100644 --- a/examples/simple/one_shot_cfo_iq_compensation.py +++ b/examples/simple/one_shot_cfo_iq_compensation.py @@ -55,7 +55,7 @@ plot_iq(chain.tap(tap), title=name) # show evolution of the angular frequency estimate -w0_history = chain["cfo_comp"].history +w0_history = chain["cfo_comp"].history_ plt.figure() plt.plot(w0_history) plt.xlabel("number of iteration") diff --git a/src/comnumpy/core/channels.py b/src/comnumpy/core/channels.py index b31c4a0..562d594 100644 --- a/src/comnumpy/core/channels.py +++ b/src/comnumpy/core/channels.py @@ -32,7 +32,11 @@ class AWGN(Processor): For real-valued inputs, a real Gaussian noise of variance :math:`\sigma^2` is applied instead of a circular complex one. - Axes: *element-wise* -- applied pointwise, shape-agnostic. + Axes: *element-wise* -- applied pointwise, shape-agnostic. One + caveat under a batch (D51): with ``snr_dB=`` the signal power is + measured over the **whole** input, batch rows included, so rows of + unequal power share one variance rather than each receiving the + requested SNR; ``sigma2=`` is batch-neutral. Parameters ---------- @@ -236,8 +240,12 @@ class TappedDelayLineChannel(Processor): .. math:: - a_0[n] = \sqrt{\frac{K}{K+1}} \, e^{j \phi} - + \sqrt{\frac{1}{K+1}} \, g[n] + a_0[n] = \sqrt{\gamma_0}\left(\sqrt{\frac{K}{K+1}} \, + e^{j \phi} + \sqrt{\frac{1}{K+1}} \, g[n]\right) + + where :math:`g[n]` is the unit-power Rayleigh process of the first + path, so that :math:`\mathbb{E}[|a_0[n]|^2] = \gamma_0` still + holds. The output keeps the input length: the delayed copies are zero-padded at the start, i.e. the channel is causal and the transient is kept. diff --git a/src/comnumpy/core/compensators.py b/src/comnumpy/core/compensators.py index f7f9527..e987df3 100644 --- a/src/comnumpy/core/compensators.py +++ b/src/comnumpy/core/compensators.py @@ -237,7 +237,9 @@ class Normalizer(Amplifier): Axes: *element-wise* -- the gain :math:`\alpha` is a single scalar measured over the whole array in ``prepare()``, then applied - pointwise. + pointwise. On a batched input the rows are therefore **pooled into + one estimate** -- normalize per trial by looping when each row must + reach the target on its own. Unlike ``Amplifier``, the gain is *not* a parameter here: it is measured, so it is exposed as ``gain_`` (decision D23) and the @@ -409,11 +411,11 @@ class BlindIQCompensator(Processor): Attributes ---------- - alpha_ : complex + alpha_ : complex or np.ndarray Estimated coefficient :math:`\alpha` applied to the in-phase component (data-dependent, hence the trailing underscore, decision D23; initialized to 1). - beta_ : complex + beta_ : complex or np.ndarray Estimated coefficient :math:`\beta` applied to the quadrature component (data-dependent, hence the trailing underscore, decision D23; initialized to 0). @@ -527,12 +529,15 @@ class BlindCFOCompensator(Processor): Newton step uses the exact first and second derivatives of the periodogram with respect to :math:`\omega`. - Axes: *declared axis* -- accepts ``(N,)`` or ``(..., P, N)``; the - correction :math:`e^{-j\widehat{\omega}_0 n}` uses the sample index - :math:`n` along the last axis. The estimand is **shared** (D49): a - frequency offset is one laser beating against one local oscillator, - so the periodogram is accumulated over every path and a single - :math:`\widehat{\omega}_0` is applied to all of them. That is not + Axes: *declared axis* -- accepts ``(N,)`` or one polarization pair + ``(2, N)``; the correction :math:`e^{-j\widehat{\omega}_0 n}` uses + the sample index :math:`n` along the last axis. The estimand is + **shared** (D49): a frequency offset is one laser beating against + one local oscillator, so the periodogram is accumulated over the + pair and a single :math:`\widehat{\omega}_0` is applied to both + rows. A wider batch is refused with ``ShapeError`` -- one scalar + estimate cannot serve independent trials (D51); loop over them, one + compensator each. That is not only tidier than one estimate per path -- it is the better estimator, since it sees all the data. @@ -552,7 +557,7 @@ class BlindCFOCompensator(Processor): refinement. save_history : bool, optional, keyword-only If True, every intermediate value of :math:`\omega_0` is appended - to ``history``. Default is False. + to ``history_``. Default is False. method : {"grad", "newton"}, optional, keyword-only Local optimizer. Default is ``"newton"``. step_size : float, optional, keyword-only @@ -570,7 +575,7 @@ class BlindCFOCompensator(Processor): Estimated frequency offset :math:`\widehat{\omega}_0` in rad/sample (data-dependent, hence the trailing underscore, decision D23; None before the first ``fit``). - history : list + history_ : list Successive iterates of :math:`\omega_0` when ``save_history=True``. @@ -616,13 +621,13 @@ class BlindCFOCompensator(Processor): name: str = field(default="cfo_compensator", kw_only=True) # internal state (declared for slots, D40a) grid_search_array: np.ndarray = field(init=False, repr=False) - history: list[float] = field(init=False, repr=False, default_factory=list) + history_: list[float] = field(init=False, repr=False, default_factory=list) # estimated quantity (D23), declared for slots (D40a) w0_: Optional[float] = field(init=False, repr=False, default_factory=lambda: None) def __post_init__(self): self.grid_search_array = np.arange(self.grid_search_tuple[0], self.grid_search_tuple[1], self.grid_search_tuple[2]) - self.history = [] + self.history_ = [] def prepare(self, x: np.ndarray) -> None: from comnumpy.exceptions import ShapeError # local import (D36) @@ -653,7 +658,7 @@ def compute_dtft(self, x: np.ndarray, w: float) -> complex: def callback(self, intermediate_result: float) -> None: if self.save_history: - self.history.append(intermediate_result) + self.history_.append(intermediate_result) def fit(self, x: np.ndarray, w0: float) -> None: w = 4*w0 @@ -671,7 +676,7 @@ def fit(self, x: np.ndarray, w0: float) -> None: index_max = np.argmax(cost_vect) w = w_vect[index_max] - self.callback(4*w) + self.callback(float(np.real(w) / 4)) for _ in range(self.N_iter): @@ -695,7 +700,7 @@ def fit(self, x: np.ndarray, w0: float) -> None: f"{self.method!r}, expected 'grad' or 'newton'.") w = w + h - self.callback(4*w) + self.callback(float(np.real(w) / 4)) self.w0_ = float(np.real(w)/4) @@ -768,7 +773,7 @@ class BlindPhaseCompensation(Processor): Attributes ---------- - theta_ : float + theta_ : float or np.ndarray Estimated phase :math:`\widehat{\theta}` in radians (data-dependent, hence the trailing underscore, decision D23). @@ -1099,7 +1104,7 @@ class DataAidedPhaseCompensator(DataAidedMixin, Processor): Attributes ---------- - theta_ : float + theta_ : float or np.ndarray Estimated phase :math:`\widehat{\theta}` in radians (data-dependent, hence the trailing underscore, decision D23). Re-estimated at every call (per-block regime, D22). @@ -1221,7 +1226,7 @@ class DataAidedComplexGainCompensator(DataAidedMixin, Processor): Attributes ---------- - gain_ : complex + gain_ : complex or np.ndarray Estimated complex gain :math:`\widehat{g}` (data-dependent, hence the trailing underscore, decision D23). @@ -1534,7 +1539,7 @@ class DataAidedFineSynchronizer(DataAidedMixin, Processor): ``Sequential(wiring={"synchronizer.reference": "source"})`` instead of freezing an array. scale_correction : bool, optional - If True (default), the output is multiplied by the complex peak + If True (default), the output is divided by the complex peak :math:`\widehat{a}`; otherwise only the delay is corrected. up_factor : int, optional, keyword-only Interpolation factor :math:`U` applied before the correlation; @@ -1556,7 +1561,8 @@ class DataAidedFineSynchronizer(DataAidedMixin, Processor): delay_ : int Estimated delay :math:`\widehat{m}_0`, expressed in *upsampled* samples (data-dependent, hence the trailing underscore, decision - D23; divide by ``up_factor`` to get it in symbol periods). + D23; divide by ``up_factor`` to get it in input sample + periods). scale_ : complex Compensation gain :math:`1/\widehat{a}` actually applied, or 1 when ``scale_correction`` is False. @@ -1738,6 +1744,13 @@ class BlindPhaseSearchCompensator(Processor): name : str, optional, keyword-only Block name. Default ``"bps"``. + Attributes + ---------- + phase_ : np.ndarray + Estimated unwrapped phase trajectory of the last call, of the + same shape as the input -- one trajectory per leading-axis row + (data-dependent, hence the trailing underscore, D23). + References ---------- T. Pfau, S. Hoffmann, R. Noe, "Hardware-Efficient Coherent Digital diff --git a/src/comnumpy/core/filters.py b/src/comnumpy/core/filters.py index 428f542..44f7d52 100644 --- a/src/comnumpy/core/filters.py +++ b/src/comnumpy/core/filters.py @@ -84,17 +84,16 @@ class SRRCFilter(Processor): If True, normalize the taps to unit energy :math:`\sum_m h^2[m] = 1`. Default is True. scale : float, optional, keyword-only - Amplitude scaling factor applied to the output. Default is 1.0. - Only the ``"fft"`` method applies it. - method : {"lfilter", "time", "fft"}, optional, keyword-only + Amplitude scaling factor applied to the output. Default is + 1.0, applied by both methods. + method : {"lfilter", "fft"}, optional, keyword-only Filtering method: ``"lfilter"`` for the causal FIR convolution (``scipy.signal.lfilter``), ``"fft"`` for the circular frequency-domain product with the delay-compensated response - returned by :meth:`H`. Default is ``"lfilter"``. The ``"time"`` - value is declared in the type but not implemented. + returned by :meth:`H`. Default is ``"lfilter"``. axis : int, optional, keyword-only - Declared filtering axis. Default is -1; the implementation always - filters along the last axis. + Filtering axis. Default is -1. The ``"lfilter"`` method honours + it; the ``"fft"`` method always filters along the last axis. name : str, optional, keyword-only Name of the filter instance. Default is ``"SRRCFilter"``. @@ -231,8 +230,8 @@ class BWFilter(Processor): H[k] = \begin{cases} - 1 & \text{if } |f[k]| \leq w_n \\ - 0 & \text{if } |f[k]| > w_n + 1 & \text{if } |f[k]| \leq w_n / 2 \\ + 0 & \text{if } |f[k]| > w_n / 2 \end{cases} where :math:`f[k]` is the frequency of bin :math:`k` in cycles per @@ -259,8 +258,6 @@ class BWFilter(Processor): ------ ValueError If ``wn`` is outside :math:`(0, 1]`. - NotImplementedError - If the input has more than one dimension. References ---------- diff --git a/src/comnumpy/core/impairments.py b/src/comnumpy/core/impairments.py index 94afa37..55a2337 100644 --- a/src/comnumpy/core/impairments.py +++ b/src/comnumpy/core/impairments.py @@ -119,6 +119,10 @@ class Delay(Processor): Axes: *axis -1* -- samples are dropped along the last axis; leading axes are batch. + The name is historical: the block models the receiver-side *removal* + of a known delay -- it advances the signal -- which is why its model + reads :math:`y[n] = x[n + \tau]`. + Parameters ---------- tau : int diff --git a/src/comnumpy/core/mappers.py b/src/comnumpy/core/mappers.py index d38a1aa..99637df 100644 --- a/src/comnumpy/core/mappers.py +++ b/src/comnumpy/core/mappers.py @@ -114,6 +114,13 @@ class SymbolDemapper(Processor): name : str, optional, keyword-only Name of the symbol demapper instance. Default is ``"Symbol Demapper"``. + Raises + ------ + ValueError + If the alphabet size is not a power of two -- the bit table + behind the LLRs is built at construction, in hard mode too, so + the constraint applies regardless of ``soft``. + References ---------- J. G. Proakis, M. Salehi, *Digital Communications*, 5th ed., diff --git a/src/comnumpy/core/processors.py b/src/comnumpy/core/processors.py index fc60a49..d6304e2 100644 --- a/src/comnumpy/core/processors.py +++ b/src/comnumpy/core/processors.py @@ -68,15 +68,17 @@ class Upsampler(Processor): Axes: *declared axis* -- the zero stuffing runs along ``axis`` (default -1, the sample axis of the Serial layout ``(..., N)``) and - the remaining axes are left untouched. + the remaining axes are left untouched. The anti-imaging filter of + ``use_filter=True`` always acts along the **last** axis, whatever + ``axis`` says. Parameters ---------- L : int Upsampling factor :math:`L`. Must be a positive integer. phase : int, optional, keyword-only - Phase offset :math:`\tau \in \mathbb{N}` of the retained samples. - Default is 0. + Phase offset :math:`\tau` of the retained samples, with + :math:`0 \le \tau < L`. Default is 0. scale : float, optional, keyword-only Output scaling factor :math:`\alpha`. Default is 1.0. axis : int, optional, keyword-only @@ -168,7 +170,9 @@ class Downsampler(Processor): Axes: *declared axis* -- the decimation runs along ``axis`` (default -1, the sample axis of the Serial layout ``(..., N)``) and the - remaining axes are left untouched. + remaining axes are left untouched. The anti-aliasing filter of + ``use_filter=True`` always acts along the **last** axis, whatever + ``axis`` says. Parameters ---------- @@ -183,9 +187,8 @@ class Downsampler(Processor): Axis along which the downsampling is performed. Default is -1. use_filter : bool, optional, keyword-only If True, apply the anti-aliasing lowpass filter of normalized - cutoff :math:`1/L` before the decimation. Default is False. - The filter is a :class:`comnumpy.core.filters.BWFilter`, which - only accepts a 1D input. + cutoff :math:`1/L` (a :class:`comnumpy.core.filters.BWFilter`) + before the decimation. Default is False. name : str, optional, keyword-only Name of the processor instance. Default is ``"downsampler"``. @@ -261,7 +264,11 @@ class Serial2Parallel(Processor): .. math:: y[t, f] = x\!\left[t F + f\right], \qquad - 0 \le t < T, \quad 0 \le f < F, \quad T = \left\lceil \frac{N}{F} \right\rceil + 0 \le t < T, \quad 0 \le f < F, \quad + T = \left\lceil \frac{N}{F} \right\rceil + \; \text{(zero-padding)}, \qquad + T = \left\lfloor \frac{N}{F} \right\rfloor + \; \text{(truncate)} Equivalently, :math:`t = \lfloor n / F \rfloor` and :math:`f = n \bmod F`: the **serial index runs fastest on the last @@ -800,8 +807,9 @@ class SampleRemover(Processor): and :math:`y[n]` has length :math:`N - D`. It is the exact inverse of :class:`DataAdder` when the same :math:`n_0` is used. - Axes: *declared axis* -- operates on a 1D serial signal ``(N,)``; the - splice uses flat indexing and does not broadcast. + Axes: *1D only* -- operates on a serial signal ``(N,)``; the + splice uses flat indexing and a batch is refused with + ``ShapeError``. Parameters ---------- @@ -924,8 +932,9 @@ class DataAdder(Processor): :math:`N + D`. Applying :class:`SampleRemover` with the same :math:`n_0` and :math:`D` restores :math:`x[n]`. - Axes: *declared axis* -- operates on a 1D serial signal ``(N,)``; the - splice is a concatenation along the first axis. + Axes: *1D only* -- operates on a serial signal ``(N,)``; the + splice is a concatenation, and a batch is refused with + ``ShapeError``. Parameters ---------- @@ -1041,7 +1050,7 @@ def forward(self, x: np.ndarray) -> np.ndarray: if self.selector is None: return x - # transformer un tuple en slice si c'est un tuple simple + # turn a plain tuple into the slice it describes if isinstance(self.selector, tuple): self.selector = slice(*self.selector) @@ -1076,8 +1085,9 @@ class Resampler(Processor): a polyphase implementation (``scipy.signal.resample_poly``), which never computes the discarded samples. - Axes: *declared axis* -- the resampling runs along the last axis, the - sample axis of the Serial layout ``(..., N)``. + Axes: *axis -1* -- the resampling runs along the last axis, the + sample axis of the Serial layout ``(..., N)``; leading axes are + batch, every row resampled by the same factors. Parameters ---------- @@ -1121,7 +1131,9 @@ def __post_init__(self): def forward(self, x: np.ndarray) -> np.ndarray: from scipy import signal # local import (D36) - y = signal.resample_poly(x, self.up, self.down) + # axis=-1 explicitly: scipy's default is axis 0, which on a + # batched (..., N) input would resample the batch axis (D51) + y = signal.resample_poly(x, self.up, self.down, axis=-1) return y @@ -1237,10 +1249,11 @@ class BlindPhaseTracker(Processor): phases give mathematically identical costs and which one wins is arbitrary. That is a property of the criterion, not of the search. - Axes: *declared axis* -- operates on a 1D serial signal ``(N,)``; the - decision of a sample under a test phase does not depend on any other - sample, so the whole search is a table of decision errors plus a - moving sum over it, and nothing is done in order. + Axes: *axis -1* -- one independent trajectory per leading-axis row + (D49): a ``(..., P, N)`` signal gets one phase estimate per path. + The decision of a sample under a test phase does not depend on any + other sample, so the whole search is a table of decision errors plus + a moving sum over it, and nothing is done in order. Parameters ---------- @@ -1262,8 +1275,8 @@ class BlindPhaseTracker(Processor): underscore). theta_ : np.ndarray The estimated phase trajectory :math:`\hat{\theta}[n]` of the last - call, of length :math:`N` (data-derived, hence the trailing - underscore, D23). A block never draws (D25, D42): plot it from the + call, of the same shape as the input (data-derived, hence the + trailing underscore, D23). A block never draws (D25, D42): plot it from the caller, for instance with ``matplotlib.pyplot.plot(tracker.theta_)``. References diff --git a/src/comnumpy/core/shaping.py b/src/comnumpy/core/shaping.py index 2e860a3..506bcf5 100644 --- a/src/comnumpy/core/shaping.py +++ b/src/comnumpy/core/shaping.py @@ -1153,8 +1153,10 @@ class DistributionMatcher(Processor): Its output is what ``SymbolMapper`` consumes, so a shaped transmitter is a chain like any other. - Axes: *element-wise* -- the bit stream is read along the last axis, - and leading axes are carried through unchanged. + Axes: *axis -1* -- the bit stream is read in blocks of ``n_bits`` + along the last axis, whose length changes (:math:`k` bits in, + :math:`n` amplitudes out); leading axes are carried through + unchanged. Parameters ---------- @@ -1214,7 +1216,9 @@ class DistributionDematcher(Processor): identity on any sequence the matcher produced -- and an error on any other, which is the honest answer after a detection mistake. - Axes: *element-wise* -- indices are read along the last axis. + Axes: *axis -1* -- indices are read in blocks of ``length`` along + the last axis, whose length changes (:math:`n` amplitudes in, + :math:`k` bits out); leading axes are carried through unchanged. Parameters ---------- @@ -1354,13 +1358,15 @@ class AmplitudeDemapper(Processor): .. math:: - \hat{x}[n] = \arg\min_i \left| \left|y[n]\right| - a_i \right| + \hat{x}[n] = \arg\min_i + \left| \left|\Re e\, y[n]\right| - a_i \right| - Taking the magnitude first is not a shortcut, it is the maximum - likelihood decision: on a constellation symmetric about the origin, - the nearest point to :math:`y` always has the amplitude nearest to - :math:`|y|`, so deciding on :math:`|y|` and deciding on :math:`y` - give the same amplitude. The sign is dropped because in PAS it + The real part is taken first because the amplitudes live on one + quadrature lane of the constellation -- each lane of a QAM symbol + is demapped on its own. On that lane, deciding on the magnitude is + not a shortcut but the maximum likelihood decision: the ASK points + are symmetric about the origin, so the nearest point always has the + amplitude nearest to :math:`|\Re e\, y|`. The sign is dropped because in PAS it carries parity, not data -- a real receiver feeds it to the FEC decoder instead. diff --git a/src/comnumpy/fec/convolutional.py b/src/comnumpy/fec/convolutional.py index 9c96962..fe2c9fa 100644 --- a/src/comnumpy/fec/convolutional.py +++ b/src/comnumpy/fec/convolutional.py @@ -48,7 +48,7 @@ class ConvolutionalEncoder(Processor): Signal Model ------------ With input bits :math:`x[m]` and generator polynomials - :math:`g_1, \dots, g_n` of constraint length :math:`K`, the coded + :math:`g_0, \dots, g_{n-1}` of constraint length :math:`K`, the coded stream interleaves the :math:`n` parity outputs: .. math:: diff --git a/src/comnumpy/mimo/channels.py b/src/comnumpy/mimo/channels.py index 9a5d462..dc78a8d 100644 --- a/src/comnumpy/mimo/channels.py +++ b/src/comnumpy/mimo/channels.py @@ -198,7 +198,9 @@ class SelectiveMIMOChannel(BaseMIMOChannel): def forward(self, X: np.ndarray) -> np.ndarray: assert self.H is not None # validate_input rejects a None channel - validate_input(X, self.H.shape[1]) + # shape[2] is N_t of the (L, N_r, N_t) stack: validating against + # shape[1] rejected every non-square channel's correct input + validate_input(X, self.H.shape[2]) L, N_r, N_t = self.H.shape N = X.shape[1] diff --git a/src/comnumpy/mimo/coding.py b/src/comnumpy/mimo/coding.py index 835bbbd..119d2bc 100644 --- a/src/comnumpy/mimo/coding.py +++ b/src/comnumpy/mimo/coding.py @@ -130,7 +130,9 @@ class SpaceTimeCode: \in \mathbb{C}^{N_t \times T} and the receiver observes - :math:`\mathbf{Y} = \mathbf{H}\mathbf{G}(\mathbf{s}) + \mathbf{B}`. + :math:`\mathbf{Y} = \mathbf{H}\mathbf{G}(\mathbf{s}) + \mathbf{V}`, + with :math:`\mathbf{V}` the noise (:math:`\mathbf{B}_k` being taken + by the conjugate dispersion matrices above). The **rate** is :math:`K/T` symbols per channel use, the **diversity order** is the minimum rank of :math:`\mathbf{G}(\mathbf{s}) - \mathbf{G}(\mathbf{s}')` over @@ -777,6 +779,9 @@ class SpaceTimeDecoder(Processor): ------ ValueError If the code is not orthogonal, or if ``H`` was not set. + ShapeError + If the number of received samples is not a multiple of the + code's ``n_slots``. References ---------- diff --git a/src/comnumpy/mimo/compensators.py b/src/comnumpy/mimo/compensators.py index ce7de2a..14b435e 100644 --- a/src/comnumpy/mimo/compensators.py +++ b/src/comnumpy/mimo/compensators.py @@ -14,20 +14,24 @@ class BlindDualMIMOCompensator(Processor): Signal Model ------------ At each step :math:`n`, the two output polarizations are computed - from the estimated equalizer matrix :math:`\mathbf{H}` of size - :math:`2 \times 2(2L+1)`: + from the estimated equalizer matrix :math:`\mathbf{W}` of size + :math:`2 \times 2(2L+1)` -- written :math:`\mathbf{W}`, not + :math:`\mathbf{H}`, because everywhere else in this package + :math:`\mathbf{H}` is the channel; the attribute is ``H_`` for + historical reasons, the trailing underscore marking it as estimated + (D23): .. math:: - y_i[n] = \mathbf{h}_i^H \tilde{\mathbf{x}}[n], \qquad + y_i[n] = \mathbf{w}_i^H \tilde{\mathbf{x}}[n], \qquad \tilde{\mathbf{x}}[n] = \begin{bmatrix} x_0[n] & \cdots & x_0[n-2L] & x_1[n] & \cdots & x_1[n-2L] \end{bmatrix}^T - where :math:`\mathbf{h}_i^T` is the :math:`i`-th row of - :math:`\mathbf{H}` and :math:`x_0`, :math:`x_1` are the two received + where :math:`\mathbf{w}_i^T` is the :math:`i`-th row of + :math:`\mathbf{W}` and :math:`x_0`, :math:`x_1` are the two received polarizations. The equalizer is updated by stochastic gradient - descent, :math:`\mathbf{H} \leftarrow \mathbf{H} + \mu \mathbf{g}[n]`, + descent, :math:`\mathbf{W} \leftarrow \mathbf{W} + \mu \mathbf{g}[n]`, minimizing one of the following blind losses: * Constant Modulus Algorithm (CMA): @@ -136,8 +140,11 @@ class BlindDualMIMOCompensator(Processor): Raises ------ - ValueError - If the input is not a dual-polarization signal of shape ``(2, N)``. + ShapeError + If the input does not carry a polarization pair ``(..., 2, N)``, + or if ``H_`` carries the batch shape of a previous pass and the + new input carries a different one -- call :meth:`initialize_H` + to restart from the identity equalizer. References ---------- diff --git a/src/comnumpy/mimo/detectors.py b/src/comnumpy/mimo/detectors.py index 98349a4..9760886 100644 --- a/src/comnumpy/mimo/detectors.py +++ b/src/comnumpy/mimo/detectors.py @@ -100,7 +100,7 @@ class MaximumLikelihoodDetector(Processor): and the detector returns the integer indices of :math:`\widehat{\mathbf{x}}[n]` in the alphabet - (:math:`\widehat{\mathbf{x}}[n]` = ``alphabet[S[:, n]]``). + (:math:`\widehat{\mathbf{x}}[n]` = ``alphabet[S_[:, n]]``). .. WARNING:: @@ -123,6 +123,12 @@ class MaximumLikelihoodDetector(Processor): name : str, optional, keyword-only Name of the detector. Default is ``"ML Detector"``. + Attributes + ---------- + S_ : np.ndarray + Decisions of the last call, as alphabet indices + (data-dependent, hence the trailing underscore, D23). + Raises ------ ValueError @@ -148,8 +154,8 @@ class MaximumLikelihoodDetector(Processor): alphabet: np.ndarray H: Optional[np.ndarray] = field(default=None, kw_only=True) name: str = field(default="ML Detector", kw_only=True) - # internal state (declared for slots, D40a) - S: Optional[np.ndarray] = field(init=False, repr=False, default_factory=lambda: None) + # estimated state (D23), declared for slots (D40a) + S_: Optional[np.ndarray] = field(init=False, repr=False, default_factory=lambda: None) def __post_init__(self): # accept anything array-like, a Constellation included @@ -180,10 +186,10 @@ def forward(self, Y: np.ndarray) -> np.ndarray: H = _required_channel(self.H, type(self).__name__) if H.ndim > 2: S = _detect_stacked(self._detect, H, Y) - self.S = S + self.S_ = S return S S = self._detect(H, Y) - self.S = S + self.S_ = S return S def _detect(self, H: np.ndarray, Y: np.ndarray) -> np.ndarray: @@ -306,6 +312,8 @@ class SphereDecoder(Processor): Average number of tree nodes visited per detected vector in the last call -- data-dependent, hence the trailing underscore (D23). Compare it with :math:`|\mathcal{M}|^{N_t}`. + S_ : np.ndarray + Decisions of the last call, as alphabet indices (D23). Raises ------ @@ -360,8 +368,8 @@ class SphereDecoder(Processor): H: Optional[np.ndarray] = field(default=None, kw_only=True) name: str = field(default="Sphere Decoder", kw_only=True) # internal state (declared for slots, D40a) - S: Optional[np.ndarray] = field(init=False, repr=False, - default_factory=lambda: None) + S_: Optional[np.ndarray] = field(init=False, repr=False, + default_factory=lambda: None) nodes_: float = field(init=False, repr=False, default=0.0) # running counters behind nodes_, declared for slots (D40a) _visited: int = field(init=False, repr=False, default=0) @@ -434,12 +442,12 @@ def forward(self, Y: np.ndarray) -> np.ndarray: self._visited, self._samples = 0, 0 S = _detect_stacked(self._detect, H, Y) self.nodes_ = self._visited / max(1, self._samples) - self.S = S + self.S_ = S return S self._visited, self._samples = 0, 0 S = self._detect(H, Y) self.nodes_ = self._visited / max(1, self._samples) - self.S = S + self.S_ = S return S def _detect(self, H: np.ndarray, Y: np.ndarray) -> np.ndarray: diff --git a/src/comnumpy/ofdm/compensators.py b/src/comnumpy/ofdm/compensators.py index 49bc4b9..53c6fe9 100644 --- a/src/comnumpy/ofdm/compensators.py +++ b/src/comnumpy/ofdm/compensators.py @@ -1,5 +1,5 @@ import numpy as np -from typing import Literal, Optional +from typing import Optional from dataclasses import dataclass, field from comnumpy._backend import fft, fftshift # cupy-compatible (D3) from comnumpy.core.processors import WeightAmplifier @@ -43,13 +43,13 @@ class FrequencyDomainEqualizer(WeightAmplifier): The impulse response :math:`h[l]` of the channel to be equalized. Required (a ValueError is raised when it is missing). axis : int, optional, keyword-only - The axis along which to compute the DFT and apply the weights. - Default is -1. + The axis along which the weights are applied. Default is -1, + the only value currently supported: the channel DFT is computed + on the 1-D ``h`` along its own axis, so any other value raises + at ``prepare``. shift : bool, optional, keyword-only If True, applies an fftshift to the weights, for inputs whose zero-frequency subcarrier is centered. Default is False. - norm : {"ortho", "backward", "forward"}, optional, keyword-only - FFT normalization mode. Default is "ortho". name : str, optional, keyword-only Name of the equalizer instance. Default is ``"frequency domain equalizer"``. @@ -70,7 +70,6 @@ class FrequencyDomainEqualizer(WeightAmplifier): h: Optional[np.ndarray] = None axis: int = field(default=-1, kw_only=True) shift: bool = field(default=False, kw_only=True) - norm: Literal["ortho", "backward", "forward"] = field(default="ortho", kw_only=True) name: str = field(default="frequency domain equalizer", kw_only=True) # the base class takes its weight at construction; here it is # computed from h in prepare(), so it is init=False and starts empty diff --git a/src/comnumpy/ofdm/predistorders.py b/src/comnumpy/ofdm/predistorders.py index 6fc2123..99b3314 100644 --- a/src/comnumpy/ofdm/predistorders.py +++ b/src/comnumpy/ofdm/predistorders.py @@ -35,7 +35,7 @@ class HardClipper(Processor): For real-valued inputs, :math:`T_m \, \mathrm{sign}(x[n])` replaces the polar form. - Axes: *element-wise* -- the clipping is applied pointwise; the + Axes: *axis -1* -- the clipping is applied pointwise, but the threshold :math:`T_m` is computed from the mean power **along the last axis**, so each row of a batch is clipped against its own power -- one transmitter per trial (D51). @@ -91,7 +91,7 @@ class IctPaprReductor(Processor): ------------ The frequency-domain input is iteratively transformed to the time domain, clipped, transformed back and filtered. Starting from - :math:`X^{(0)}[k] = x[k]`, each iteration :math:`i = 1, \dots, N_{it}` + :math:`X^{(0)}[k] = X[k]`, each iteration :math:`i = 1, \dots, N_{it}` computes: .. math:: @@ -107,7 +107,7 @@ class IctPaprReductor(Processor): and where: - * :math:`x[k]` is the frequency-domain input at subcarrier :math:`k`, + * :math:`X[k]` is the frequency-domain input at subcarrier :math:`k`, * :math:`P_s` is the mean power of the current time-domain block :math:`s^{(i)}[n]`, * :math:`\mathrm{PAPR_{max}}` is the target maximum PAPR in dB, * :math:`w` is the filtering weight applied in the frequency domain. @@ -190,14 +190,14 @@ class PtsPaprReductor(Processor): Signal Model ------------ - Each frequency-domain block :math:`x[k]` of length :math:`N` is + Each frequency-domain block :math:`X[k]` of length :math:`N` is partitioned into :math:`M` disjoint adjacent sub-blocks - :math:`x_m[k]` (each keeping its :math:`N/M` contiguous subcarriers + :math:`X_m[k]` (each keeping its :math:`N/M` contiguous subcarriers and zeros elsewhere). The transmitted time-domain block is the phase-rotated combination: .. math:: - y[n] = \sum_{m=1}^{M} \hat{b}_m \, \mathrm{IDFT}\{x_m\}[n] + y[n] = \sum_{m=1}^{M} \hat{b}_m \, \mathrm{IDFT}\{X_m\}[n] where the phase factors are selected by exhaustive search over the phase alphabet :math:`\mathcal{B}` to minimize the PAPR: @@ -205,24 +205,24 @@ class PtsPaprReductor(Processor): .. math:: (\hat{b}_1, \dots, \hat{b}_M) = \arg\min_{b_m \in \mathcal{B}} - \mathrm{PAPR}\left(\sum_{m=1}^{M} b_m \, \mathrm{IDFT}\{x_m\}\right) + \mathrm{PAPR}\left(\sum_{m=1}^{M} b_m \, \mathrm{IDFT}\{X_m\}\right) and where: - * :math:`x[k]` is the frequency-domain input at subcarrier :math:`k`, + * :math:`X[k]` is the frequency-domain input at subcarrier :math:`k`, * :math:`M` is the number of sub-blocks, * :math:`\mathcal{B}` is the phase factor alphabet, * :math:`y[n]` is the time-domain output block. - Axes: *declared axis* -- expects the Block layout ``(T, F)``; one - phase combination is optimized per block and the IDFT runs along the - block content axis. + Axes: *declared axis* -- expects the 2-D Block layout ``(T, F)``, + validated in ``prepare()``; one phase combination is optimized per + block and the IDFT runs along the block content axis. Parameters ---------- - phase_alphabet : list - Phase factor alphabet :math:`\mathcal{B}` used in the PTS method - (e.g. ``[1, -1]``). + phase_alphabet : list, optional + Phase factor alphabet :math:`\mathcal{B}` used in the PTS + method. Default is ``[1, -1]``. N_sub : int, optional, keyword-only Number of sub-blocks :math:`M` the OFDM signal is divided into. Default is 16. name : str, optional, keyword-only @@ -259,6 +259,14 @@ def __post_init__(self) -> None: self.combinations = np.array( list(itertools.product(self.phase_alphabet, repeat=self.N_sub))) + def prepare(self, X: np.ndarray) -> None: + from comnumpy.exceptions import ShapeError # local import (D36) + if np.ndim(X) != 2: + raise ShapeError( + f"PtsPaprReductor expects the 2-D Block layout (T, F), " + f"got shape {np.shape(X)} -- reshape with " + f"Serial2Parallel first.") + def get_subblocks(self, X: np.ndarray) -> np.ndarray: # Adjacent partition: blocks consist of a contiguous set of subcarriers and are of equal size N = len(X) diff --git a/src/comnumpy/ofdm/processors.py b/src/comnumpy/ofdm/processors.py index da7450c..af9331b 100644 --- a/src/comnumpy/ofdm/processors.py +++ b/src/comnumpy/ofdm/processors.py @@ -424,8 +424,8 @@ class CarrierAllocator(Processor): array is taken as an FFT-order mask. pilots : np.ndarray or scalar, optional, keyword-only Pilot values :math:`p[j]`, one per PILOT subcarrier of an OFDM - symbol (or a scalar broadcast to all of them). Default is an - empty array. + symbol (or a scalar broadcast to all of them). Default is + None, treated as no pilots. name : str, optional, keyword-only Name of the processor instance. Default is ``"carrier allocator"``. diff --git a/src/comnumpy/optical/channels.py b/src/comnumpy/optical/channels.py index 9e8f81f..1f1cefb 100644 --- a/src/comnumpy/optical/channels.py +++ b/src/comnumpy/optical/channels.py @@ -143,7 +143,10 @@ class ChromaticDispersion(Processor): With ``direction=-1`` the phase shift and the attenuation are both inverted (backward propagation, used for CD compensation). - Axes: *declared axis* -- requires a full-field 1D signal (N,). + Axes: *axis -1* -- the transfer function is applied along the last + axis; leading axes are batch, every row through the same fibre. + :math:`\beta_2` is given in ps^2/km and converted internally to + s^2/km (factor :math:`10^{-24}`), so the exponent is dimensionless. Parameters ---------- @@ -228,9 +231,10 @@ class KerrNonLinearity(Processor): an optional amplitude gain. With ``direction=-1`` the phase rotation is conjugated (backward propagation, used in DBP). - Axes: *declared axis* -- requires a full-field 1D signal (N,). A - pointwise Kerr step applied to separate channels would model SPM only - (no XPM, no FWM). + Axes: *element-wise* -- the rotation is pointwise, leading axes + are batch, and the shape is not validated. The signal must be the + **full field**: a pointwise Kerr step applied to separate channels + would model SPM only (no XPM, no FWM). Parameters ---------- diff --git a/src/comnumpy/optical/dbp.py b/src/comnumpy/optical/dbp.py index e2d1511..5b98c82 100644 --- a/src/comnumpy/optical/dbp.py +++ b/src/comnumpy/optical/dbp.py @@ -51,13 +51,15 @@ class DBP(Processor): which is 1.8x faster than the same ``B`` calls at 12288 samples and 3.1x at 1024 -- the split-step loop, the per-span amplifier and the parameter precomputation are paid once instead of ``B`` times. A - batch of single-polarization fields is ``(B, 1, N)``; ``(B, N)`` - reads ``B`` as polarizations and is refused. + batch of single-polarization fields is ``(B, 1, N)``; a bare + ``(B, N)`` reads ``B`` as polarizations -- refused for + :math:`B \ge 3`, while ``(2, N)`` is read as one polarization pair + by convention. Parameters ---------- N_spans : int - Number of spans to back-propagate. + Number of spans to back-propagate. Default is 1. L_span : float, keyword-only Span length :math:`L_{\mathrm{span}}` in km. Default is 80. StPS : int, keyword-only @@ -71,24 +73,10 @@ class DBP(Processor): use_only_linear : bool, keyword-only If True, only the linear effects (CD and attenuation) are compensated, in a single exact step per span. Default is False. - c : float, keyword-only - Speed of light :math:`c` in m/s. Default is ``SPEED_OF_LIGHT``. - h : float, keyword-only - Planck constant :math:`h` in J.s (kept for symmetry with - :class:`FiberLink`; unused by the deterministic inverse). - gamma : float, keyword-only - Kerr coefficient :math:`\gamma` in rad/W/km. Default is - ``KERR_COEFFICIENT``. - lamb : float, keyword-only - Wavelength :math:`\lambda` in nm. Default is ``WAVELENGTH``. - alpha_dB : float, keyword-only - Fiber loss :math:`\alpha_{dB}` in dB/km. Default is ``FIBER_LOSS``. - cd_coefficient : float, keyword-only - Dispersion coefficient :math:`D` in ps/nm/km. Default is - ``CD_COEFFICIENT``. - nu : float, keyword-only - Optical carrier frequency :math:`\nu` in Hz (kept for symmetry - with :class:`FiberLink`; unused by the deterministic inverse). + fiber : FiberSpec, keyword-only + The physical fibre to invert (D46) -- the same object handed to + :class:`FiberLink`, so the two cannot disagree. Default is a + standard single-mode fibre, ``FiberSpec()``. step_log_factor : float, keyword-only Adjustment factor of the logarithmic step-size distribution. Default is 0.4. diff --git a/src/comnumpy/optical/devices.py b/src/comnumpy/optical/devices.py index bc3b4f5..d5b48fe 100644 --- a/src/comnumpy/optical/devices.py +++ b/src/comnumpy/optical/devices.py @@ -42,7 +42,8 @@ class Laser(Processor): Laser linewidth :math:`\Delta\nu` in Hz. Default is 0 (no phase noise). theta0 : float, optional, keyword-only - Initial phase :math:`\theta_0` in rad. Drawn at random when None. + Initial phase :math:`\theta_0` in rad. When None, drawn + uniformly on :math:`[-\pi, \pi)` from the local generator. seed : int, optional, keyword-only Local RNG seed (for :math:`\theta_0` and the phase noise). fs : float, keyword-only @@ -85,7 +86,9 @@ def forward(self, nb_samples: object) -> np.ndarray: assert isinstance(nb_samples, int) assert self.rng is not None # set in __post_init__ if not isinstance(self.theta0, (float, int)): - theta_0 = 2*np.pi*self.rng.standard_normal() - np.pi + # an optical phase with no prior is uniform on [-pi, pi); + # the Gaussian this replaced had std 2*pi and no wrapping + theta_0 = float(self.rng.uniform(-np.pi, np.pi)) else: theta_0 = self.theta0 @@ -121,8 +124,8 @@ class Optical90HybridCircuit(Processor): where :math:`E_{lo}[n]` is generated by ``laser_in`` (unit amplitude when no laser is provided). - Axes: *element-wise* -- applied pointwise; the local-oscillator - realization is drawn per sample of a 1D signal (N,). + Axes: *element-wise* -- applied pointwise; one local-oscillator + draw per array element, whatever the shape. Parameters ---------- @@ -241,8 +244,10 @@ class ErbiumDopedFiberAmplifier(Processor): :math:`N_{\mathrm{ase}}` the variance of the circular amplified spontaneous emission (ASE) noise, per state of polarization. - Axes: *element-wise* -- pointwise gain plus additive noise; the ASE - realization is drawn per sample of a 1D signal (N,). + Axes: *element-wise* -- pointwise gain plus additive noise; one + independent complex ASE draw per array element, whatever the shape + -- a polarization pair ``(..., 2, N)`` gets independent noise per + polarization. Parameters ---------- @@ -329,8 +334,8 @@ class MachZehnderModulator(Processor): amplitude when no laser is provided). Axes: *element-wise* -- applied pointwise; the normalization - :math:`m` is estimated from the whole array and the laser realization - is drawn per sample of a 1D signal (N,). + :math:`m` is estimated from the whole array (batch rows pooled) and + one laser draw is made per array element. Parameters ---------- diff --git a/src/comnumpy/optical/links.py b/src/comnumpy/optical/links.py index afe623e..3f6ca89 100644 --- a/src/comnumpy/optical/links.py +++ b/src/comnumpy/optical/links.py @@ -80,13 +80,15 @@ class FiberLink(Processor): which is 1.8x faster than the same ``B`` calls at 12288 samples and 3.1x at 1024 -- the split-step loop, the per-span amplifier and the parameter precomputation are paid once instead of ``B`` times. A - batch of single-polarization fields is ``(B, 1, N)``; ``(B, N)`` - reads ``B`` as polarizations and is refused. + batch of single-polarization fields is ``(B, 1, N)``; a bare + ``(B, N)`` reads ``B`` as polarizations -- refused for + :math:`B \ge 3`, while ``(2, N)`` is read as one polarization pair + by convention. Parameters ---------- N_spans : int - Number of spans in the fiber link. + Number of spans in the fiber link. Default is 1. L_span : float, keyword-only Span length :math:`L_{\mathrm{span}}` in km. Default is 80. StPS : int, keyword-only @@ -105,23 +107,11 @@ class FiberLink(Processor): use_only_linear : bool, keyword-only If True, only the linear effects (CD and attenuation) are simulated, in a single exact step per span. Default is False. - c : float, keyword-only - Speed of light :math:`c` in m/s. Default is ``SPEED_OF_LIGHT``. - h : float, keyword-only - Planck constant :math:`h` in J.s. Default is ``PLANCK_CONSTANT``. - gamma : float, keyword-only - Kerr coefficient :math:`\gamma` in rad/W/km. Default is - ``KERR_COEFFICIENT``. - lamb : float, keyword-only - Wavelength :math:`\lambda` in nm. Default is ``WAVELENGTH``. - alpha_dB : float, keyword-only - Fiber loss :math:`\alpha_{dB}` in dB/km. Default is ``FIBER_LOSS``. - cd_coefficient : float, keyword-only - Dispersion coefficient :math:`D` in ps/nm/km. Default is - ``CD_COEFFICIENT``. - nu : float, keyword-only - Optical carrier frequency :math:`\nu` in Hz. Default is - ``OPTICAL_CARRIER_FREQUENCY``. + fiber : FiberSpec, keyword-only + The physical fibre (D46): loss :math:`\alpha_{dB}`, Kerr + coefficient :math:`\gamma`, dispersion :math:`D` and the + wavelength the carrier frequency is derived from. Default is a + standard single-mode fibre, ``FiberSpec()``. step_log_factor : float, keyword-only Adjustment factor of the logarithmic step-size distribution. Default is 0.4. @@ -339,13 +329,15 @@ def budget(self, bandwidth_Hz: float, *, .. math:: - P_{\mathrm{ASE}} = P \, N_s \, N_{\mathrm{ASE}} \, B, + P_{\mathrm{ASE}} = n_{\mathrm{pol}} \, N_s \, + N_{\mathrm{ASE}} \, B, \qquad N_{\mathrm{ASE}} = (G - 1) h \nu \, n_{sp}, \qquad n_{sp} = \frac{\mathrm{NF}/2}{1 - 1/G} - with :math:`P` the number of polarizations. That factor is the + with :math:`n_{\mathrm{pol}}` the number of polarizations + (:math:`P` denotes power everywhere else in this module). That factor is the whole reason this method exists. :math:`N_{\mathrm{ASE}}` is a density **per polarization**, and a dual-polarization link carries two independent copies of it; quoting a channel power diff --git a/src/comnumpy/optical/utils.py b/src/comnumpy/optical/utils.py index ea62349..2d17548 100644 --- a/src/comnumpy/optical/utils.py +++ b/src/comnumpy/optical/utils.py @@ -110,11 +110,11 @@ def apply_chromatic_dispersion(x: np.ndarray, z: float, beta2: float, x: numpy array Complex signal z : float - Step length in meters (km). + Step length in km. beta2: float coefficient in ps**2/km alpha_dB: float, optional - gain in dB / km (defaut: None) + attenuation in dB/km (default: None) fs : float, optional Sampling frequency in hertz (Hz). direction : int, optional @@ -455,7 +455,7 @@ def compute_erbium_doped_fiber_N_ase(alpha_dB: float, L_span: float, .. math :: - \alpha =\alpha_{dB}/10 \log_{10}(e) + \alpha = \frac{\alpha_{dB}}{10 \log_{10} e} = \frac{\ln 10}{10}\,\alpha_{dB} References ---------- diff --git a/tests/test_batch_contract.py b/tests/test_batch_contract.py index 9778f92..e080794 100644 --- a/tests/test_batch_contract.py +++ b/tests/test_batch_contract.py @@ -40,6 +40,9 @@ BITS = RNG.integers(0, 2, (3, N)) QPSK = Constellation("PSK", 4) PAIR = RNG.standard_normal((3, 2, N)) + 1j * RNG.standard_normal((3, 2, N)) +# a rotated QPSK frame set, for the blind trackers +QPSK_POINTS = np.asarray(QPSK.alphabet) +ROTATED_QPSK = QPSK_POINTS[RNG.integers(0, 4, (3, 200))] * np.exp(1j * 0.3) def _fs(): @@ -59,8 +62,6 @@ def _fs(): np.array([1.0, 0.4])), SERIAL), "core.compensators.BlindIQCompensator": (lambda: _cls("core.compensators", "BlindIQCompensator")(), SERIAL), - "core.compensators.Normalizer": - (lambda: _cls("core.compensators", "Normalizer")("max"), SERIAL), "core.compensators.DCCorrector": (lambda: _cls("core.compensators", "DCCorrector")(), SERIAL), "core.devices.RappAmplifier": @@ -91,6 +92,11 @@ def _fs(): (lambda: _cls("core.processors", "Downsampler")(2), SERIAL), "core.processors.Upsampler": (lambda: _cls("core.processors", "Upsampler")(2), SERIAL), + "core.processors.DelayRemover": + (lambda: _cls("core.processors", "DelayRemover")(3), SERIAL), + "core.processors.BlindPhaseTracker": + (lambda: _cls("core.processors", "BlindPhaseTracker")( + 16, QPSK_POINTS), ROTATED_QPSK), "core.processors.Serial2Parallel": (lambda: _cls("core.processors", "Serial2Parallel")(8), SERIAL), "core.processors.Parallel2Serial": @@ -173,23 +179,26 @@ def _fs(): EXEMPT = { # abstract bases and containers "mimo.channels.BaseMIMOChannel": "abstract base, forward raises", + "core.compensators.Normalizer": "the gain is ONE scalar measured " + "over the whole array -- a documented estimand, batch rows " + "pooled by design; the docstring says so", # generic event = the whole 1-D stream by declared design; a batch # has no meaning the docstring does not already refuse "core.compensators.DataAidedFineSynchronizer": "estimates one delay against one 1-D reference", "core.compensators.DataAidedSimpleSynchronizer": "estimates one delay against one 1-D reference", - "core.frames.Framer": "frames one 1-D stream against a FrameStructure", - "core.frames.Deframer": "deframes one 1-D stream", - "core.processors.AutoConcatenator": "concatenates along the last axis " - "with internal history: one stream per instance", - "core.processors.BlindPhaseTracker": "sequential per-sample tracker, " - "one trajectory per instance (superseded by " - "BlindPhaseSearchCompensator for pairs)", + "core.frames.Framer": "frames (..., T, N) against a " + "FrameStructure; needs one, not generically constructible here", + "core.frames.Deframer": "same FrameStructure dependency", + "core.processors.AutoConcatenator": "its masks are configured by a " + "companion block (HermitianPrefixer); not generically " + "constructible", + "core.processors.DataAdder": "adds a stored companion signal of the " "un-batched shape", "core.processors.DataExtractor": "extracts against stored 1-D markers", - "core.processors.DelayRemover": "drops a scalar delay from one stream", + "core.processors.SampleRemover": "drops N samples of one stream", "core.processors.Resampler": "scipy.signal.resample along a declared " "axis; not swept here because its output length depends on the " @@ -202,10 +211,11 @@ def _fs(): "amplitude stream", "core.shaping.AmplitudeDemapper": "shaping operates on one 1-D " "amplitude stream", - "core.shaping.DistributionMatcher": "arithmetic-coding state over one " - "1-D bit stream", - "core.shaping.DistributionDematcher": "arithmetic-coding state over " - "one 1-D bit stream", + "core.shaping.DistributionMatcher": "blocks of n_bits along the " + "last axis, leading axes carried through; not swept for want of " + "a canonical probe distribution", + "core.shaping.DistributionDematcher": "blocks of `length` along the " + "last axis, leading axes carried through; same", "core.channels.TappedDelayLineChannel": "frozen-realization channel: " "one seeded draw is the configuration (D51), sounded via " "impulse_response", From 5aaf14dce572490292f9f371304877d1e78ace15 Mon Sep 17 00:00:00 2001 From: Claude Date: Fri, 14 Aug 2026 00:02:57 +0000 Subject: [PATCH 2/6] Rewrite the Alamouti and MIMO tutorials on the batch, one chain per technique Both pages carried simulation scaffolding that drowned the reader: a factory building chains behind a kind flag, draw counts that grew with the SNR, zipped channel sweeps, an interpolation coda reading numbers off a closed form, mermaid dumps at the end of the scripts. They are rewritten on one doctrine, now encoded in the tutorial skill. The page opens on ONE chain, one channel draw, no batch: the problem shown plainly. The simulation then draws a FIXED stack of channels once -- rayleigh_channel(size=K), the same K draws at every SNR point, so the reader compares curves rather than draw counts -- builds one Sequential per technique, written out in full with the stack on the channel block and on the detector, and runs one monte_carlo per technique sweeping the noise variance, zipped into the detector when it weights by it (MMSE, OSIC). No simulation loop at all. On the MIMO page each technique is one unit, interleaved: its idea and equations, then its chain and its sweep quoted together. To make it possible SpaceTimeDecoder accepts a stacked H -- channel k decodes frame k, locked in tests/mimo/test_stacked_channel.py -- and both Alamouti blocks join the BROADCAST register of the batch contract. The Alamouti script drops from 210 to 164 lines and runs in 4.2 s; the MIMO script from 190 to 216 lines but with every technique contiguous, in 8.9 s; both pages re-paste their runs. Co-Authored-By: Claude Opus 5 --- .claude/skills/comnumpy-tutorial/SKILL.md | 68 +++--- CHANGELOG.md | 20 ++ docs/tutorials/alamouti.rst | 140 +++++------ docs/tutorials/img/monte_carlo_mimo_fig3.png | Bin 93368 -> 94381 bytes docs/tutorials/img/monte_carlo_mimo_fig4.png | Bin 64379 -> 58196 bytes docs/tutorials/img/one_shot_alamouti_fig3.png | Bin 122577 -> 113935 bytes docs/tutorials/mermaid/alamouti.mmd | 20 -- docs/tutorials/mermaid/mimo_zf.mmd | 12 - docs/tutorials/mermaid/mrc.mmd | 12 - docs/tutorials/mimo.rst | 166 ++++++------- examples/mimo/one_shot_alamouti.py | 220 +++++++---------- examples/mimo/one_shot_mimo.py | 230 ++++++++++-------- src/comnumpy/mimo/coding.py | 26 +- tests/mimo/test_stacked_channel.py | 15 ++ tests/test_batch_contract.py | 27 +- 15 files changed, 481 insertions(+), 475 deletions(-) delete mode 100644 docs/tutorials/mermaid/alamouti.mmd delete mode 100644 docs/tutorials/mermaid/mimo_zf.mmd delete mode 100644 docs/tutorials/mermaid/mrc.mmd diff --git a/.claude/skills/comnumpy-tutorial/SKILL.md b/.claude/skills/comnumpy-tutorial/SKILL.md index e9b6121..2caf715 100644 --- a/.claude/skills/comnumpy-tutorial/SKILL.md +++ b/.claude/skills/comnumpy-tutorial/SKILL.md @@ -59,9 +59,22 @@ then learns the wrong lesson -- they came to see how the library is used. of **one** chain are not a Python loop: grow the stimulus a leading batch axis -- `(n_trials, N)` -- and every block broadcasts over it, stochastic blocks draw independently per trial, and the pooled metric - is exactly the mean of the per-trial rates (D51; the exception is a - channel whose realization is frozen at construction -- a new draw per - trial is a new instance, and that loop stays visible). When the study + is exactly the mean of the per-trial rates (D51). + **Averaging over a random channel (fading, MIMO)** is the same idea + with the draws stacked into the configuration: draw a **fixed** set + of channels once -- `rayleigh_channel(size=K)`, one draw = one batch + row, the SAME K draws at every sweep point, never a draw count that + grows with the SNR (the reader compares curves, not draw counts) -- + hand the stack to the channel block AND to its detector at + construction, and sweep the noise variance with `monte_carlo`: no + simulation loop at all. A detector that weights by the noise + (`MMSE`, `OSIC`) receives the swept variance too, by zipping two + dotted paths: `monte_carlo(chain, ("noise.sigma2", + "detector.sigma2"), list(zip(values, values)), ...)`. + **On the page, interleave**: one technique is one unit -- its idea + and equations, then its `Sequential` and its `monte_carlo` call + quoted together as one `literalinclude` block. The reader meets each + method whole: theory, chain, sweep. When the study is *around* a chain -- several detectors on one frame, several receivers on one propagation -- write the loop out, on **one storage convention**: declare the methods and the metrics first; pre-allocate @@ -115,34 +128,23 @@ then learns the wrong lesson -- they came to see how the library is used. ### Naming the chain -Three rules, and they are about where the reader looks and what the -signature promises. - -1. **A function only when the chain is built more than once** -- several - values of a parameter, several variants, a Monte-Carlo. A chain built - once and used once is written inline: wrapping four blocks in a - function called once, with no argument, is ceremony, and it puts an - indirection between the reader and their first chain. -2. **Always `get_()`**, one prefix, the noun saying what comes - back. Which noun follows from how the page is organized: - - | the page… | names | - |---|---| - | has one chain | `get_chain(...)` | - | cuts one chain in two | `get_channel()` and `get_receiver()` | - | compares two structurally different chains | `get_uncoded_chain()`, `get_coded_chain(soft)` | - | builds a sub-assembly, not a whole chain | the part: `get_transmitter()` | - - Two chains that differ by a block or two are **one** function with a - parameter, not two functions. Two chains that differ in structure -- - four blocks against six -- are two functions, because merging them - would hide behind a flag exactly what the page is comparing. -3. **What varies is a parameter, never a module global.** Constants of - the page (the fibre, the constellation, the roll-off) may stay - global; anything the page *varies* goes through the signature. A - function whose signature announces three arguments and silently reads - eleven more is a closure wearing a `def`, and the reader cannot tell - from the call site what changed. +**Default: no function. One `Sequential` per technique, written out in +full, before the sweep.** A page that compares SISO, Alamouti and MRC +writes three `Sequential([...])` blocks -- even if they share most of +their blocks -- because the reader must see each chain whole; a factory +with a `kind` flag hides behind the flag exactly what the page is +comparing, and a factory called once with no argument is ceremony. The +batch contract (D51) is what makes this possible: the channel draws are +stacked into the chain at construction (see the Monte-Carlo bullet), so +nothing needs rebuilding inside a loop -- there is no loop. + +A `def` remains legitimate in exactly one case: the chain is genuinely +rebuilt with different *structure* along the page (a DBP receiver with +a varying step count, a coded chain against an uncoded one built in +several places). Then it is `get_()`, the noun saying what comes +back (`get_chain`, `get_receiver`, `get_transmitter`), and what varies +is a parameter of the signature, never a module global read silently +from inside. ### The rest of the script @@ -171,6 +173,10 @@ signature promises. one and 9.1 ms in the other. - State the estimator's floor when a curve hits one (an SER of 1e-4 from 8192 symbols is the estimator, not the link). +- **No analysis codas.** No `np.interp` readings of a closed form, no + diversity-order polyfits, no measured/theory ratio tables, no mermaid + dumps at the end of a script: they drown the reader. What a figure + shows is said in one sentence of prose next to the figure. ## Register diff --git a/CHANGELOG.md b/CHANGELOG.md index 2b03431..b83c396 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -45,6 +45,26 @@ one release; there is no compatibility layer. | `core.metrics.calculate_acpr` | `compute_acpr` — it was the only `calculate_*` in the library, against 17 `compute_*` | | `core.metrics.compute_effective_SNR`, `ofdm.metrics.compute_PAPR` | `compute_effective_snr`, `compute_papr` — the two capitalized outliers among functions otherwise all lowercase (`compute_ser`, `compute_ber`, `compute_evm`, `compute_ccdf`, `compute_mi`) | +### Changed — the Alamouti and MIMO tutorials rewritten on the batch + +Both pages carried simulation scaffolding that drowned the reader: a +factory building five chains behind a `kind` flag, per-SNR draw counts, +zipped channel sweeps, interpolation codas reading numbers off closed +forms, mermaid dumps. They are rewritten on one doctrine, now in the +tutorial skill. The page opens on **one** chain, one channel draw, no +batch -- the problem shown plainly. The simulation then draws a +**fixed** stack of channels once (`rayleigh_channel(size=K)`, the same +K draws at every SNR point: the reader compares curves, not draw +counts), builds **one `Sequential` per technique** -- written out in +full, no factory -- with the stack on the channel block and on the +detector, and runs **one `monte_carlo` per technique** sweeping the +noise variance, zipped into the detector when it weights by it (MMSE, +OSIC): no simulation loop at all. On the MIMO page each technique is +one unit -- equations, chain, sweep -- interleaved. To make it +possible, `SpaceTimeDecoder` accepts a stacked H (channel k decodes +frame k, locked in `tests/mimo/test_stacked_channel.py`) and both +Alamouti blocks join the BROADCAST register of the batch contract. + ### Changed — the 91 docstrings audited against their code Five parallel reviewers read every `Processor` docstring against its diff --git a/docs/tutorials/alamouti.rst b/docs/tutorials/alamouti.rst index db028b9..bdc6cc2 100644 --- a/docs/tutorials/alamouti.rst +++ b/docs/tutorials/alamouti.rst @@ -53,14 +53,14 @@ We start with the imports and the parameters, QPSK over a Rayleigh channel: .. literalinclude:: ../../examples/mimo/one_shot_alamouti.py :language: python - :lines: 1-31 + :lines: 1-29 Let us check the law on draws from :func:`~comnumpy.mimo.utils.rayleigh_channel`: .. literalinclude:: ../../examples/mimo/one_shot_alamouti.py :language: python - :lines: 37-55 + :lines: 31-53 .. image:: img/one_shot_alamouti_fig1.png :width: 100% @@ -175,45 +175,29 @@ diversity costs no bandwidth**, and no feedback. Implementation ^^^^^^^^^^^^^^ -The three schemes differ by what is put on the antennas and what is done with -what comes back, so one function builds them all: +One channel draw, one chain, transmitter to decision. The scaling by +:math:`1/\sqrt{N_t}` matters for the comparison that follows: two antennas +each transmitting :math:`|s|^2` would spend twice the power of a single +antenna, a 3 dB advantage that has nothing to do with coding. Splitting the +power keeps the comparison about diversity alone. .. literalinclude:: ../../examples/mimo/one_shot_alamouti.py :language: python - :lines: 60-91 - -The scaling by :math:`1/\sqrt{N_t}` matters for the comparison that follows. -Two antennas each transmitting :math:`|s|^2` would spend twice the power of a -single antenna, which is a 3 dB advantage that has nothing to do with coding. -Splitting the power keeps the comparison about diversity alone. - -.. mermaid:: mermaid/alamouti.mmd - -The diagram is not drawn by hand. It is what the chain says about itself -- -``chain.to_mermaid()`` (decision D33c) -- exported by the script, so the -block names are the ones the code uses and a dashed outline marks a tapped -block. - -One-shot simulation -""""""""""""""""""" - -.. literalinclude:: ../../examples/mimo/one_shot_alamouti.py - :language: python - :lines: 94-107 + :lines: 55-84 .. code:: one-shot SER: 0.0600 # block id output shape dtype time ms - 0 SymbolGenerator tx (1000,) int64 0.04 + 0 SymbolGenerator tx (1000,) int64 0.03 1 SymbolMapper symbol_mapper (1000,) complex128 0.00 2 Amplifier signal_amplifier (1000,) complex128 0.01 - 3 SpaceTimeEncoder space_time_encoder (2, 1000) complex128 0.10 + 3 SpaceTimeEncoder space_time_encoder (2, 1000) complex128 0.06 4 FlatMIMOChannel channel (1, 1000) complex128 0.01 - 5 AWGN noise (1, 1000) complex128 0.06 - 6 SpaceTimeDecoder detector (1000,) complex128 0.12 - 7 Amplifier signal_amplifier_2 (1000,) complex128 0.01 - 8 SymbolDemapper symbol_demapper (1000,) int64 0.08 + 5 AWGN noise (1, 1000) complex128 0.05 + 6 SpaceTimeDecoder detector (1000,) complex128 0.08 + 7 Amplifier signal_amplifier_2 (1000,) complex128 0.00 + 8 SymbolDemapper symbol_demapper (1000,) int64 0.06 The shape column is the code at work: 1000 symbols enter, the encoder spreads them over ``(2, 1000)`` -- two antennas, one thousand channel uses, so rate 1 @@ -233,63 +217,67 @@ the equations above. Monte Carlo Evaluation ^^^^^^^^^^^^^^^^^^^^^^ -Averaging over fading means running the chain once per channel realization, -which is a sweep whose parameter is the channel. :func:`~comnumpy.monte_carlo.sweep` -takes several dotted parameter names at once and zips them, so one sweep point -sets the channel the signal goes through **and** the channel the detector -inverts: +Averaging over fading takes many channel draws, and the draws are a +**batch**: the *same* 5000 realizations serve every SNR point, one draw per +row. Each scheme is one chain, built once with its stack of channels -- the +channel block propagates draw :math:`k` on frame :math:`k`, and the detector +holds the same stack: .. literalinclude:: ../../examples/mimo/one_shot_alamouti.py :language: python - :lines: 112-169 - -The three curves are three readings of one closed form, -:func:`~comnumpy.core.metrics.compute_ser_rayleigh_psk`: :math:`L` branches -evaluated at the per-branch SNR, with a transmit scheme dividing that SNR by -:math:`N_t` because it splits its power over the antennas. ``plot_error_rate`` -draws measurements as hollow markers and their references as lines of the same -colour, so a pair reads as one statement: + :lines: 86-126 -.. image:: img/one_shot_alamouti_fig3.png - :width: 100% - :align: center +From there the sweep needs no simulation loop at all: +:func:`~comnumpy.monte_carlo.monte_carlo` moves the noise variance, and +everything else -- the channels, the chains -- is frozen: -The two statements this tutorial is about -- the slope and the 3 dB -- are -exact, so they are read off the closed form rather than fitted to the points; -the simulation is what confronts them: +.. literalinclude:: ../../examples/mimo/one_shot_alamouti.py + :language: python + :lines: 128-143 .. literalinclude:: ../../examples/mimo/one_shot_alamouti.py :language: python - :lines: 171-210 + :lines: 145-164 .. code:: - 1 Tx, 1 Rx (no diversity) measured / closed form 0.99 0.97 0.94 0.90 0.83 0.86 - Alamouti, 2 Tx, 1 Rx measured / closed form 0.98 0.92 0.88 0.77 0.84 0.65 - MRC, 1 Tx, 2 Rx measured / closed form 0.98 0.91 0.82 0.72 0.73 0.28 - 1 Tx, 1 Rx (no diversity) diversity order 1.00 - Alamouti, 2 Tx, 1 Rx diversity order 2.00 - MRC, 1 Tx, 2 Rx diversity order 2.00 - SNR for SER = 0.001: MRC 15.6 dB, Alamouti 18.6 dB, gap 3.01 dB (10log10(N_t) = 3.01 dB) - -**The slope.** The single-antenna scheme has diversity order 1, the two -others 2: the error rate falls twice as fast, which is the whole reason a -space-time code exists. - -**The 3 dB.** Reaching a symbol error rate of :math:`10^{-3}` costs 15.6 dB -with two receive antennas and 18.6 dB with Alamouti, a gap of **3.01 dB** -against :math:`10\log_{10} N_t = 3.01` dB. That is the price of transmitting -*blind*: the receiver knows the channel and weights its branches by -:math:`h_i^{*}`, the transmitter cannot and splits its power evenly. Alamouti -buys the full diversity order anyway; it pays only in array gain, not in -slope. - -**The ratios.** The measurement tracks the closed form to a few percent at low -SNR and drifts below it as the SNR grows, down to 0.28 for the steepest curve: -6000 channel draws no longer sample the deep fades that dominate the average -there. Nothing is wrong with either side -- -``validation/mimo_diversity_ber.py`` runs the same three schemes with up to -80 000 draws and lands within 4.4 % of the same curves. + SER + snr_dB 1 Tx, 1 Rx (no diversity) Alamouti, 2 Tx, 1 Rx MRC, 1 Tx, 2 Rx + ------------------------------------------------------------------------ + 4 0.22261 1.778e-01 8.162e-02 + 8 0.11186 6.430e-02 2.155e-02 + 12 0.04976 1.675e-02 4.200e-03 + 16 0.02082 3.373e-03 5.700e-04 + 20 0.00843 5.525e-04 8.000e-05 + 24 0.00312 6.250e-05 2.500e-06 + +.. image:: img/one_shot_alamouti_fig3.png + :width: 100% + :align: center + +The three curves are three readings of one closed form, +:func:`~comnumpy.core.metrics.compute_ser_rayleigh_psk`: :math:`L` branches +evaluated at the per-branch SNR, with a transmit scheme dividing that SNR by +:math:`N_t` because it splits its power over the antennas. +``plot_error_rate`` draws measurements as hollow markers and their references +as lines of the same colour, so a pair reads as one statement -- and the two +statements this tutorial is about are on the figure: + +**The slope.** The single-antenna curve loses one decade of error rate per +10 dB; the two others fall twice as fast. That is diversity order 2, the +whole reason a space-time code exists. + +**The 3 dB.** The Alamouti and MRC curves are parallel, separated +horizontally by :math:`10\log_{10} N_t = 3` dB. That is the price of +transmitting *blind*: the receiver knows the channel and weights its +branches by :math:`h_i^{*}`; the transmitter cannot, and splits its power +evenly. Alamouti buys the full diversity order anyway -- it pays only in +array gain, never in slope. + +The last MRC point sits on the estimator's floor: 2.5e-6 out of 400 000 +symbols is one error, not a rate. ``validation/mimo_diversity_ber.py`` runs +the same three schemes with up to 80 000 draws and lands within 4.4 % of the +closed forms. Beyond two antennas diff --git a/docs/tutorials/img/monte_carlo_mimo_fig3.png b/docs/tutorials/img/monte_carlo_mimo_fig3.png index 643dd82d9257af638e4fe2d17f001a2912d45ba8..ac5adfcb6eb2f30578b938117ac4da4fac7a1b42 100644 GIT binary patch literal 94381 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 literal 93368 zcmb5W1z42p`!za>f{1`30+JggRYar&2@4RUk#3NX?hX}|1|_8hq`SLIKtMW%?rw${ z;@q>{`}dviAJ=t`*EK2(%)IaO+_CPp)-&GHk|Ow*$uA=i2z=3(FJuu2tXu@*{L4$& z@Es+*OXuMqUK=4L8#!}*8+&alJ%og|jfIK1jmcY`zwGp^tlyfOvEOH7yU%v-FGCv} z3u|6hR@49d#C>xs16HdMtOIxzT#J{=)(8YC5$18uAg)IiaSnkHeev|QL-gvHy~Aty zquQ;FzTMa_C#L2OI6sH_^X07 z806MB0>7})2FHG(a1iWjNG#ircJ8X$_(iu7ZQa$)7Spn!3(OrjQMf+okbG5_c#9ep>CF!=kNaWQVFVGE-3u{nwMx_ zl>CL8`OoiqnLQ;^`sa7Aj(zz5`v!{@<>#Jxu`krV$D-u1`sn9(#ZUNlmD8Ti?9Z=c zS3XPf#I?TB8O&Dy@#DvrxVXT;K*Hyq1WAfH8m0pC&Kp%CdV2H-_|Dw%PM3LMW|Pj; zTFHd43^9U1GWzFaod*@Q`O)su?ow}xT$gQmbTlQG>BtK+v-?g}vA=&yH~Zc6sHkub z-s6?Ev*Vg@*}+HD)zzul_RE{{N{%_pw;OUyZ)|jZp?&V<>ua3vrmTE3iraktU~5Jx zOX1nGXI@@jT9dW!4T}P5j7{&@6$J$cD;JyGMBw7$`q2nh<0~p^id1IXZ;W@Wk5#Zm zh&MJjKQtSCw0jhGB4#EvhDuLQpB}THxHwsjUVnUhVKqR*d5sgXUcPcaIy#zn_M718 z!R@rPv|r!Y64m44r$>9bbA&Sb+oH^?aclYaM|baYJdwD{djTt$}TNVK4Kb_!@1X=&qI^LG9Rgfj-iVRY*nT8yZ*!#_f9Ct8J2Yvn8J$uO8mK3gGB)I?c>usb< zboqW;ca7ytGjnTeEB>;)ygc*SL5m=gy=5ymNZaYE4#90f1yT2C6cm)hF29@zM| zxVXYk-`~GFQsk>%VaMiv>JoNey{#wd)y;=*UPd9u zqBpA10da0exaQ{OK0ZFM&%MbK1^b`F!ov&9Cj^MDUstYiLTBJpz%Bu!gYmW1E@|4K?I=Z?P1x|M5JaZDb`z@)L<3*O0Cq* zWxdcTKi?UX@%r^^o1a?{VX5zTYcE?8l%5`~P?_0VThG91yxE#=3JDJnj*b?8_Ut^u zCt>pxy&)M%%1Kki))5_%So{9<}SPjKJx^j9t;hSM)|r z9Mr!sR?W_VEY-)y2e#^NhjYIoIep{YPb2y>6rnOG<(+?b?Y1z-2zp~-p#`6N^!K#& z$3`;U`G3wV_~wypT;We3+y*E+S=Q_y}bUSrF}m+IjO(0K9uJH&**YREg?%-A?HlD z`ArLkhpL>pTLP$Vb90l@(9j6`k;!b7FI(-7n!f59jxA3qafB!7=;>u-WS$xtVv30X z{OK5rRd^*OWiVE58xk6N?dHwaM(^uUE_Qi&#-kDn3#7XQnJS$tDIQPsZJ-a>T(^aD{K|wlaTzf-# zx_hXqy#dwB-w)8}yAcr)_{$oObD^m5#(~}AO!bNZx6Zb+;z85le7!bUaN;M2 z(EP|lD7ej{&oe!?UwR_eY$&r4}&agpTk>GVmVx-C8fKr~$ zr}IpM>h>`SOg`Jc*t=|u2s0Cy+7bf=(h*_~4yCS02*n&kn_js30PTWWsYSdF2l0Vs)tDpX;~LiCzx z4qQsUUVBI^zcW|r!t`{)@rve|tO=K@2XB#{N-vgikxD2Ijf-@*QPE!K%*IB}J(a@L zZt9`(L5G7)Z8X!D5%;1lkrLE+REIwL<>y|(Gj6j{!yM;U`f!fYFbcEMr{_WjHJr1? zQ3i3Y3YK}2Fr zr#m<~aitCx7)a@LL~;_WJaS?w-gDi8F2n0`(s!y_>0lYW|HLcc7Qm&2Qb<9~_mQGL zlqXx#j~gA@LYVhZ?gvwzm%lqWIx;g#MjQ6?2p&vgU6ih`uU8oxFBhHLpKyn@m*5_I zo%754IwP^aaN-rR2Tx>(lb#a|p<*-aE*YAbnD}P1v$OY}iqw6$h^O*8g&ra!BsG<( zsjI6imMqTu0%|!UM**P+Pz7ZQasT5y)A;y!mK%PITW3!7ky!W2-sSJVVjhnn5D6Pun&M6FbA#86Yp`SlthOtrlYJ?~tn7d?li! z%zSd9{lWHZ)8E%uu23cGp?3X+xniW5T(VT0ncx64@X1Y=uV26V6ciLZv|Cl08!^t2 zH>+6V((CyligLOw5@52ar{vr@JdSeP>EK3bpFx7RtqvE2BF!qY#%YeB9Ggn#u;7}k z8Cb3@Y*E>d#{Y`tSGBaaSM(E3BqAptF*#3h{dyvF6uptcw{3ur65*Z{c^o#iqBc$d z0^WFX2b_pKu)45|LYZyq$v}jkXR5H@C^kngCI+tBViQtljylZvw`raoDeA!% z`P9_ZoM+N6C==RGU*{AN5xJ|9r2xG(-3pS1xi>|sq{XDs>l#7ea9C;au7JHl)Y)E+ z`|!&CQm@D%1Z(=Q2=*4Y4YVpKxTC2^; zr)cp^fUgo6Bhu>XS-Tq(n&(0oV;vIu2c@~wGSky#E32w*5E2GDb?x_|GzN-GZeyZn z1wgYR0<#mQTSWt>*A5P50!vCItub8>(Z(3(qBAitjJrDD5w*sjXg_M{>58uNz`5a3 z_Z{Jrl9FPDUMsn)>3&jV1z24nW(PV!;aOe(*Zp+PNN05@0b>wVk(?Rbx|RFm&IC2H zhEik6Z{ECNx_|#ZJQK@bQFpIHzd%_zSL?mb!-!Sn^6AtHq%a)=!$5}Ie%U-04gtrb z1wegk57Lk|?lnYYWT}WYNC{1IO^B4(avmNY6!p(=4X3oHRwd8?n*ghl`wI_4K32JA zNoeh_j~Tm59t)lw!q)(E#Kgt@PQFRd=W1wZv;ktFj7?HBGtQcwK79eXH-ZV)6rCNM>dx!%CJ~nQXTqhfkfBG?&?EDjgji)9+mFe0qpo zYUds`HMP;@BimpxA(;@Qc}-Ovjct|lz5?W3P;6{AlUNH~?i#=1M78UUCytZvaa3Hg z8axSMt5HaEbIX`ylaWGEsF?WG@*6)d*mXwp{E0Nc9c=|&0vT%79h|6G8E$UwIe;j8 z%dnI7KAxT;9)n4c3|4cYig((>SJR4T(t<}SM9ZfMhs(q?6IVFZs2oR2o`k>;N-9ou?r?{_qY86ejQ1oqd}I}$Wof$MY99`QnGFoQM7S#bTpuloQ*bTkLjp^$E z_!|n}_EHW+@i{&u=>?%@9cPo4*+6}m8t*Rj+OGX)(=LS6#h*W z{I*oeFbpAJh|{g|R#Gv-G{2Jl<$hmNWbxOyxCz5C2)Gf(nzZa}?8(ik1_ULqO{!ey z@JKlTs;HAQO_*doZK2qo8!9o^Ok6PamWbjy$HA*T41jzjVJ`cA)ozb|SAV3lpv|H* zA3r~j)$FCErKOLbK4E5taqq;sAHoA~pSlm$*j5Ti2fKR}fw1UB! z&3@Vd?My~X^STGiZ?8E@;daaaorw>1o3H5q`lfwWmXPovCDzGDQN!^QW^Dli!oW{C z;0g(NFc+>lRO2ql8xxRIb4m{5E=e4^gL`5YGQGK}=@X1<>^6(P?KBB%VI1`G_SSCl zxiLFGKQgFmYBE2U&8xU}B?^X876DD5BBa@`n>$0dvIbDQg+bG#q=VB=`UMds6K=?< z>XG5QE9n&knJ{s7bp^&h_k3tM-6(8;1vC6iyeIWEJnD^#tR`#EDdcE$02ZpPc10_d zTF?gaqsVe9w|yFp2>CV<&im_gFt5ydGsf0xJ=olAAS^i`MetxQV02Yf%CDpaHwFycpN=p%(?ESH3{ps?f)?NG(3~4aeP&suL4@gKz zT$}`Cvj7kC-O}GSQL4At*{^@^j`+q&jt@;7=HQIhnZC|PD=$^ot0Yr&SBLWMsh5Xv z8V^{U>@Fl2YhkfDY$j+%VhplyElWAfNvg(NO8QbFf;_bub@gZUF-!Wc)_1wM}Cg zFa=%75>Z3NrmDW3w%fC!0W^YUIY?@tNRB7YPH12jUfesvt|BO^5*!{LM!7fRI&6%5Li)~14X9T+^kM(?ESr)|EIV|i4TD1sF^~Yo~39ANX*!te>bPH{&pbWhdM2bq3VFX$U$3ELRS?Pl|((G>utTxJ4m?_W>{UrvD9}c7%*_y z^?w12F$1F>&^f?a)%Ew^@E3lrug?I@Tiw&|(c&c_HQoV*!db!b(zu$~>V*vPJBDzV zhh$ees9WH|r%`EEkgxVRA%7#3#feqU*z7##jvK!^R zx3c}m7Q&27qg1z#QpZxl_5-iRhyv@_X-V$?8Rqu__cJ$`-R5(}fesv0v&Lr#_J%n& zSFfF9y>drVIFMT6#fulgE$)CU%P>1>Wu-G!|4BUJVNyfR6qICx@k&R&ligmJ9oY;z zqZRgE#CTgv#PUTD3Lbv}<_CC|{?*Mg2pA$EncvVkKTj8hHRyP!QNl3{o9DM2e;K0_kL*>#(IG_Uct@XQx?V31YJ5?1YuX_Y>4r4@ejqV2mbC zQ6-XZRgEr8d%K+2!o!qh2`!<9DqI1k1P|q9~NmE77018 zyN+qsLl{C0eF(@Ht&&!RyBf)9yt%!7-pEOl3g6M*(sBw~!vZ`+WQYkUAJx`>!gGX1 z<2dz+^d3W>CE zDO|e2%dS~*nfCP>3{p>Kp384QjKlog1z%#QE=6_Q8$v=tYW8EcC=E)HafccF^{Rah zSW3a;O)P-e8zCs@)NDq5Oy~z~on!)|fUO6K< zs5mTD;u!^++iBPE`#fRAi0SF+DXKiD3KiMlZt$V?P5zntn)FC=C3M44fHsKZlMVNc zkOf!dc6luH9BhyGZEa$}7KCG?rDFM7A)e2XQ|9p7Mp*$FgSFYOs5yLQxGrAQr95uc z&VoDd_HJ+Bt8GSFL$-Mh};A zB^Q}ev*}zw;E~+3P-5lhkC|{ktI`!f{CL&ig_Tvl>*vwlVG}O2 zpWnNDpl7l5NbakpB78D3GF;PQ>g%7;-@5heT!`b&JP#j=!n`sbfq|KBaCZb1vAqV^ z*+njgR(k8BWo?j>eOk&N10p|_RxPLiPCwDmv~0RTV8F!ha*+GbV)DsFqp&c`!XLi? zaD*yqy2>9yXQ5a%_GQl_$h@suY$5}BIk0#N%oAEx$`y?=-QqFjigIl>^cSAl6e!xG zE?%&81zzdSJ0J>JlfHlduHkHKKu$nNs0i#hZ=snk0Tu5XP3LXsb5^AvTQTng`GM}T zHDERUl~ppHZeipdR1Q5m{z=Ek*Ay7J^QLEKe;~x5s;{gWckv+Q_5q)uZWeA-Y*Y(} zI{-ci1TtI3Ty>2{l^1Ud23+kN>!b3nq@<)az`Lp(c$T^&P8-Jk**MfUZ>AyIfIL}V z+nA`SnVz55*9`9K&Nsn;oQC0SxD~5my>RAtR?s83obYX9s(*AWy{e)Va8cUY+mlDk zMHs}s&COx4G;MWV&*WlcU>I4c-syb2hl=RX|9gf$&%_Ubx_NVQv1llE{}aq}Fj~P# zYPV*zG>6w6|K?KORfDn{cNHGkud6i&P`v_FkBf)bV8{VbzZ39>QQYqt=s(5#js0yu ze@?>8jWrpns1a{IQH^kLcHV)m|G;wk1%T$3+1B8d{u5v*F-7owr1?T1Y>r{zm_PTp zA&t)fHSo~JHY9Ta0|V9_KsiHzY<0Px21B~W0zt?QN`lkg@~2@FeSnYmREw_!w|7y)nHe)Q-YRDWp&g=WAp zN`;2kpb$YP)o_^lL_(vO*u4pbOb5!Fpt}HopT|yB)#Jb7Ov^miT-5~uAl=ifjs~rV z4O6!^cj#Y*efjpyOE_@~SW)XoNGkv?$p&4qeDITeM~jJ=!TFwY{zvGMWbW?nJv}`@ zyRoa5m?ae!77BG~axFl+HdyLOs)YRj^y&qfg5g*p!Z55js3=*HvzY~ebG9bVPQ%Nr z7q($i&U@2J1Qa)5=u1$tV4B5nfdtfiKY_qS^5I_V`*qd5UtVzwm^drUzW@s#=rmq} z?$8P|!*dlC^6Kj9XgIHhkr#!oI zTP#!IF7WoZ?%eT#Z^9U?{B)jca54l`xwfKDQ`-@k-S;y6!t}F zm~^)xu!r`G=BVu&SDavs0*%1NV>>%Ly90$?l42%@88Mpx*-qJFV4Oydva^$!36!3R zr8B^f<}_>ZVbnt^pxz`wgB>-@#K9-;``(ggr}@fR>xPgFOdzZLUv1BB`U}s&W-8n- zo&3PHUt7F4J~)!6>sfUS)Gqnz89@G3bWZv59nY51<@AhI{;B{sLV!KaEY*s(IgY^M zfaoFZp^I7>?3%h1rjq4vEP|>nPQnl$Wec&+t1DFlCktz9SuRIQDFiD#Kp^hB=DqD@ z@LaKH)u=4BpZ}1{eB31Nr#>(>EU^bEc8(EYF?b<*qow#Wbsa~JuJ_7@IFw+5D0TYukPmw+K+xi^_jMT9MWMs zsNMpx`ch1+{>{T{po{^C#VBl5`M@uAjC(N4B~Pxek86q2`U^K;z%o#Vb&#dZ_wF@L zOvJJ2Hb2n+MJ5^js17FlwJsm~Mrai!0~m=#^K_dO=1q(qz;x$M{or6Yh{b>+*DR7p zMy!jIxqrcw2YutKKLvNb)1DFVtsn(YLgq2>@lnFty*q~mDxiHvPF~i2^#H&e$IUvN zJf(YnRF8}6PGPe~kPo1mdbVID2gp`ESWrrSC!l`rjgF2k!iWl}Cujecfw3Po|A>Ij z49Me9C_i7hSr2q#6eZ8^k<#K>jN-88#BW};M?xrY@E7F3ZB9<0=bk`|h+xyj29o#R zh{9l}07{;EP(2^nt&)X?hBEo|EN(w}X2ap15dA)a0#tsRZv)zL`s>-KC{!c>|DdYb+R6dsfbtUXB_^gL#(tdHTalub zpBVfD<*cGwkLzF_eWIoHmj@1EGfc0K*Gn6!EsC!`D+E2{BH-k?_c+vx%gHvXR)pY1 z@LGTM`Ko;`P>P{=td(DYxv&6I$YS>AwNAk^m+Z26a*PC$Z5E5M9=s?Spz@rtYvIC+ zR|u-L%LTOw#FW2lBN7;(Uvg6XLK+&>>+9?4L%bM&g4cQ$)Ky?b&wuYu%Ir&iT&#Sl zDCj~lmU5N?D4~wi-i*r~BjvU$3ZOaFnb({&14Jv&{q(OF!ZpUaeUX@$IM=BE4r&eQ znZPs(^blkOr*eyaK^~}$cB@10n{?u(;siih#3v;UcbbE=NlQ;RvZx%1larHsjMDkX zO)*Vr)k&8NrC%Q=4;YBCK%bZpu%7?LaD50M{Qa6^t77vB4RdEDB{Jx*EI_o!x~i`E zH3%o>X$+4PmAnzw`Nwo&SYfSCGTjlyU0{mj0-iSlq!Jh%SUNPu8yc`uBc}4Rx3{;Q(El1j3debZYdazP;bnuv!&^XC z0MXgJxKo72^@Xe~(bUw`>UdQYOsz3z#|wg(|HI@KmymD^V1@zf#>NK5sUZ?bon;?A z66XvPLmnypKexW{#hT$g6(HH$!hTOOOb_YZfdxQdSSY9xBPEY{c(x#s&Tm4F_p8qA z0VDFJHHdyM`K4y10~=_;SEzUktHS?voGfHo&)*yx$R9Q_87sf>?k2lF$B>}a?91bm zlh&>-MjoCB7@ZNDeR5K4E(aFCY`3f1k2Qs{s5$_9?FbL3PAt6k02Zmtq$DKtrW?I6 z5|Y2-zn41}PM7Qd^VhE*`T0bk4BfhQi+pv^kYg99u;XJFAPbD7w9vat4M%$`5!~j~ zKt?meMY;fKsph;^v}P7OY{CFnvAer#N0X5Vz7Zc^->vO!Bg+r>J1M;b%SB!KB&HKJ zh$w7>4^pEVMaDXl4me7P#C7T3o4ybg#YF&D?H>l3ahhT=cuvlPq;IlQ7912rX_m7V zfq(h3(N5mu$R?e0e?53`wMs)n(&+Y<4ELWGex;LWMnv=Hg;N}@6i4FMt@sRrMl^o$ z#t>9#W8fn)lKHaAh8ykxthBh7bB`rH4A;C%S-vF_p7G0sZ zMnv?%*B1|p3Al5v-nb!eUX#ECNb1tN($Z2%V-XpdulzDxQ5}XwD(K(mIdhfn!R^Zz zi5`ni|9f5GjlyGe0+{zLv1S%9UDFP`P<%}#D-23XK4cV3VWhx$#5$otwtEQ%255J? z;HBvu*#a!Kwc9I&bVu#&(La7%(c3wwQbZVuWpLs#KlT;Y@z2Y$di(#g#AXY!E^mlZ zBrRatz`S;>`>7+4kg~wLo=Z(lorF$~J=u0QXSHu@2|yAJ_n6Ifgj|Xw#&JU@nb7p- z^xIE|8h@ zHz(_k0r%HI0}=8iu{=Joba8cc1eS}pXbkE#0Cp^`2V@AKp9=&2r<)*(OO9c;2ZAmJ zz(aN&3go=T(=!lfM5-<*3iUeG69=YBZiQhAf=+}04#015&9ofS6OGo1uj0m zXoFbC?lj8&*Xq?9&5mmV_#WQ$ zP1Ldx2RVjn0E&~hRK6ov*-Oaz<=?>!E3+3g^mj1BqS@VV649p>c-4BZF@gVoTExfU z)3*z*#wEQW(dnlCU&4{mUT6;UyvG0XeDc~d_CMydk5^fM!Tbr+$&bErzD^yayu?GO(iKKuqI8mB61@MU~Aad3D91$%w7*zTgT@WMU% z_C+t$mp?fRw?&`#ch<%DZ?)d#-r1`@Pt@Da#I0({zDP#3-r0Y0a>;_-M!5p`lqZnU z1#?cji`r*sfxCBoVFx%>iZe6C<;$Kp7uw#W@=stA!zmH6`CiVSThzXY@oX7W$a^;F z&@wWLBp)d-|JSmC943wvD+ooCQcV`DEq%+vmm~L(Z18{H;9#qu8I5lspe!XR*=)ka zUG5H3J%&DC$*IApun2%ZPr+T}9T;eEdVGk#3@Sr+fkBs~@lFICf35*DX0gKm>td~$ zcu6G9mQ6s#L|TpjEFDlq!so}ZSKLB3e}fsHD!H}fZ#QhNV}i#P6}S6-@hS`dMJ zcP6}F1tVFeW=$+$`)|0{8HP#*o57wGdT?+cX{Np3=c-xsr`dX0_l(A&^41N{#dbPX z*JzW;IpOpn-4`5XGQ~S*e7cG;Pwk%+2JY(Cj9kQ>i`GBv(-3@xeDvx^s_eN*F>bSWZIHnQ63u(0p(<*ake&S9F@C0 zuhhq)%|xC4HAku^w3*BqJ{8JXt}J1`SRk)$k;_P{(MhKl&ZWZD*dFn;j(WBA&fMVy zfi*hyr$PzaKv&W8*m!=&ZMp*ej$3qeAI+-|lUqd#FP2;LpC&7Kji{;?SOp7e5alSiEt6aghid}!*}Cue^JDhy_{>*Qf3Gg)crTIjQw zE|Tv8Knnae_{HI&p+y-~23Vq6@{$AZZ>-V&Tgvl@9E`2=#$x8Ra>`HdVoj3Hr zD}$Mj7Z(?W0~IT(@|3-z(vf37?=`}<<0$+OIbyoi+Lg1q%)oIMbS0BEq}mzG){`Kv z(RA_cTscASn{S&RLR0+CP__eTA-ATmFr=ra*;Cw}(NrBrfk-J77#MUZ=rr#H2j4^M zS{@PZmqFwI9?lIL8h-h2NlpEyDI^ykIG~k>ZQUDQWHHm2NY1SJGhexknk>kOic>x~ z%CRrtt_Z2|_ns}jHkDm2)D9mqrs9>JJX9Co`!qF6NL?+f&EI?Bx-2wmY@T>#&Ww;h zefo5DtfHi8Zf1IVbx$E%P4vy1mB9>t#s4^h7wy!p@Qz3Ee{<|bZ+6eW9-!_>>3h@E zAlmX#$=!_Vrlqha{$SGJ%FPGg_o}MFa4X=&< zaQ39k=tAomMvwB&Doy_izMwD%#1YK0=RxpE>^EA&qqOHVb|e?Nd;f`Xk?dN*<;sML za?xoH65op%{ppc|eyLJ_r{lkUyxiEuglb5`x9Nkz;NhSq6d;z8(eqDUza|C-vb@1+ zWiV#}BW)nS4Rj6jAn{F-*aNCt2RuH-PH1~@+=7gN5qSaKd3jv|Yg+3kQVp+eLz|)T z=4kiRL%!YL&sj>3=8J4&RR8OqzOu8kBQ0JGNf$3f8YHHP3t^ zGD=9Kusf&(Tz&}0rA5dXCcrYYB7ZQ7P_I=Z^FpKiM345sZY~L9UHg<8jn`+t%Wd~MDciNvT9fRjB3iHV4M=E`2~JNCyW!jQRzLSciB zj4<6W+qi_eGewDJ1v@_?^+#v-4p@b5$RD?$Y0tL@SXwn*-2Ij(8KiUr1})G$&Gud` ztKIs$H~ovF$Jhk8R^m+iSN055hf$~jbKem(1u^l9H*e@LW`{2ReYL9C4cMj21;f7} z?CQa}gVErodq<9n_CQ0tPz!WHEk^SC?g~!Ny-qo_CRo%k%%x=MZK~&C-Pc(3S)^{e z4`0YkYI&JPpd;H;qimtn<#WaUKJV@oM)9Z8ZqXhSaUw$9-q~jVz}<8UKoY@Uzt#cC zv}_s&oHSTelYn5R(wH#e!s6`8;+>wE@c>_p@%`sFAh%g$qbf(*0xau^8#M#?Mc%w* z9WT!mr0MjT--@{IkbT4=`R&7|d=Jm=3|Sk!_a8X^0V1m>QG^g&y1MA%#>N*Qi%qOH zikfB#!nleUcUoZq@sKKPDWJTo^qi&e(60e(LPyp1UZ&$L{UHkL)Qj=g+!$_)rlsrKgj{;EM$&xWf?&4cEKriQTUwf^Namj!~#&B)U zo=H?oi2o27__f%u;=~}U8gZ8ExaeP|l{Z8SGE-csa zfULLm(2V$S>8w$It03I}8)wKn841GRKRDl@W_dJ`(pl$8#&WcS(~Ao5p&YSwtu^pu zx>t1KT41%m2t(57m}+sgsqqSia)4oJ2RwNNV3olb@G;&O5b60g zYq9ts?G20eaOOxzNI)^DdBisl65!Z2-a1`St&h{OXVaG|JHh#&Htg1wC2vDr6B5Dg z-m|wkD>PhP8iSK_A0~3Yv0KppQ^-YtX}AgG$Ie1mOK)#5s1hXjG-gt+iQPY8mD}Lq z12Z&GfuVO5w}A)Q24@rWn+|XQs^v)5xSbq;A~Un;0CGKxnYjUY8Tu0YS1v{V4)ja9 zd&$cIJ4S%im_B6fPQ9ViZ;j3${g%VI6hCd#9XBgH(?a5k-9F3YjkJf%F*!7PjMIm| z^D_AP%GGCbORjra?;!W@)qJ!+>ax=@3j8X@Y?}ZPkK)wqdf^Jz05vsAOG``fIDwdN z-^j*+{=&x13=EV?eD2l%gh;9Tos=e4KRWhlN>`oA+_R-lF=9E+NM1d+D}IdqP5$50 zb%^nQlsjzdN=s$8j+(M2zJ9tSxk)ztp_2!vX47COo91av{pI>9brAmXrSAV7q@6b* z8XNgaa)zynmoKA#Po%n=zU^htHO(?#y@pJ;=9~lMJ_R)5U!0sp-9-wI3*54RtOe~D zirJ7!F?NGjzc`VSOkfe8f4w~E_ud7qwDqS?mnYc1#m=W`3+5d=T+C7LiQ{Q_e()u6iE{J z_>?yG3c=PJX^RebG>+rst>DMFm|h&sUMRdk!mnw>9*R7h;3=e0VJuOINvYa<>=PbN znxT+24Qiab zw{K&JHRSjK0UQ%UNWRkG*V&A!Cebs%U3#^zV_6eIG5!2-A<~9O4)0OEE+Zn4uo}S_ z6MNO(;Pj^ZxqY+4h$}O+;}wRK?1H18eMx>%ha+;kZwJv>X-rqudalstMa(0dDNHU? z{$!qcB6)LSwXM*6-Z)-2Gs!BAFT{v(Ez({JO79sX02cku@kns^-qnY0BoSWTj zfAH!*Tvt{_bBjVsRsUQQ^wZPw=Uyx%cq-}(nl%{AaOPEkDJn_}CNM~OU_J8k^57_#Q%e@VrW`o+9TQQM;RsD*x_@oxvl~t)Edl^6arH6xukn)a zw(Q^I_`hjW2*j(XUX0+sX?kg{=MlG`Fligx_WG9kkBSYPg0DMm4BPrbxMH7fK8O6^ z+vSQJ@tl)-Y|uYx&hvVz{j^eyU{=xUubiM0$53Jg=_(c87uR$l6s&Nap7~wmim+k5$S^FrDg2 zDd4s`&T(`rzj~VV2|q2#hoa=$#xrHBXS)oHJ@}$muM72eejKgveEhi} zvqT}KH-2zs?zwc*|Gm49n?<@EdlpXe33$Sq7t@zTI?HukI_b*pF8n2Oohv4`avFO97qzFv*V}6ui)<&o68Y@+D%B8!!^z0 zPvei)l$67oEqEpIhH+ub*ecdFN+u=A{fl$Q51BeBUTF~=ZCxEhK9BGH-T!!lgcF}8 z_Grji>H}94sW-snG9BDR75aWujm+<9+F|pZ`foG2mBDNjjJjNA8pe+29ymJ&YX|68 z5Oq3}kc#b})P0wj_$nR!l$9Hc+VxfUVy%99ty=WhoAWE+ouD0U`D8&us*l1eG|x#b z&dn(<;VSsZpW>)h^FJ%htT&8S-8!x;U|0LE6wxr%Pk8Y@3gd@7UPsZK9FW+nB`93H!LF zd(wo8iLuwN3HW(!=3$mJq+ZNfw&HQYH-66c$*)P#gBZ@eNrcJ%LbV!`^r zzf51`@qvHKGW6f8<@KP;T}TaM$m=JkqInVULnT8x>^IgK%cnP4$iRtQveAUklf+zJ ztE&{amoF#qqM4W{Dg&R^5LT@`_4~}h5&2oy!M0rNgRSU=xFcnmC%X90Xeinj@}91y z6<<>blBjPsf2oAJ%%9%g?TAVh)rY8{tyW$~?hE-Fw@1F6f-QtJQOrkb%|E`Z}dU<&)S>H_GHtiLQ9F+FGGQ#xXm4(le8RG^le+R_JMFP6_ z{GLU0-Y2vU2p&o5k7Z5|b&oC((5MBJmG+F|sVXX$hxr6IusH-IE~xk3M33=x-j$du z_rbd0tf=#w`dQ-JM=pwq=gb#~o4?ePJ+bVTUMFw6c4nv$T#FrrXQt;!H*4_4!iIvs zeWyGAd&XLt|8YUez$DFZvgh_#%&uR+ww_H$j%!p$vc>Tmp{gHt_WHOjQVJZ7nSJ$Q zvUqou^Uu0y2eO5!us-k^5sk>Tu6@5M#TSF0WtQ;=tuNdW)#|d8pwDB-_(XV1)Z zrsBHnI*Tz-?Qe(BDqO&c=zZ>fK`IS%2;Z9~d!m2^~QJyN{HNgdfty%9sne zx#W1NJWDtYo)-a?-Yc6(&I@@TRas`{dT z5+WrUjYz%hgm2?U<|81iS>2<7TKQ7PhctfpJo-i$xto#Gm~xbV`fgPS)lukjw4n5z zlEguS!qhdcsOyLQ-E_*g4XzvbGZkAPe3Nx4Uws8bL=Snf1M`Bh8GFecGc zXZ4z=Ffy;;GO2u|)GH(3;c$7e(53;Gx!%U3vRE;rGqq{Pw!x&<7o$3PU{#QSgUFfm z$7Y5oS9}zu~$5Kfk7@l zYezQin2PWI#VVT6byCFl?!$N`DOvTh_shI`tiL4mwPz9II=EbNmcc8XMnx)Wx3Oo) z*@mh+Lc*Ud)y;i-IH-FU=_BdfIF+lLHShu$;@!!=uAdX?mPzpaYxs81p0?{j$^c%D z&v_yrc5l{Jy6Q*QH$05f9+jfHbRRiSQYtg1`IGywr81IdWq0iNA)9JTl?0oc1~#(z zqZRcxlEz|`>tlZr_4sB)@(pxmI&wyEX}h)~ZDwMGCy7B| zG`hY#@nT41ro*G9Z&z2kvTonLv}>`vx%2lVQ`jfsS+W^uT7#I(=C-n*U{fEx)vXMN zr74zH!9jI{zC~2!QOJX&FV}rY6)or^90u;PS1`SEpA`zq$`Qu8pyGF|`Q-A1^Fse! z(r3661@D+7*p|p?jx>v@6uTC=N;=f+f_hGBWJ8Myj4f~Rq7u6!RqfRK>nICe6nIO! z_25XG++mC_)E}~Rv1E`5{S-YOo@Q&;!hEZGd{bA~V#AKU$e)=h=hPZ|R<6}l){Z$@ z0X1O6@w;~-iy;EvhH-Sb?ZEBY3v@-v+aVj!tw37Bs6oF5KGTq5$9#_R^xQd0!m{A9 zIdhRZZua4dXd;HK!zso=5ser(HnB zV7YIqO{bt5du51>3*Rbzd-&zatB%MNo+G3C{-eIi=!Nz)vuzb;KSq&>Ms?TDmE2+# ziO>)#l~>>`%#9xXI8ct0m7OVMo5523Ltdmn0@om|8VA|UmWtvT2@*dFpPw|beqfy6 zePhAPK`p^^#NesjjHEv3KReWQLPC^*GDsn z3vA-JzfyboEray(7a5sf$i(|{@~oL)0)=xq7`6~>X~2UufX6n1<1LYJVzM$@kn5T<7nQXJj0oP53m!! zffG3G_Q2&}v$OJ;fF9R`+bWr8=#KBr44nprSmDF;G$y^4?oyE%F2{=_ywBb7xM^-1 zyzMB+J4Z^;X#P6dRa4j2mYk*Ys8f}SEeEdU3sm9|688dXkt7E{l_q%s)$ivKp<`!(Ut*XLCg$Gl@C-QD{2i-S(kPsQ5B zykmpjbq}Wv^Qy-`-1#dBCtNP3s#;%%N!`eIdDsM7QbD9(f}~DG;sGAM09i)6H)|(d zJe|kKX>px)yx&s?EI-&D%@7Ox6gVE@F}lZHK4%*ig23r|vS^o6Ls1CpPj{S7Y(-VU$SY zu<(C;GRR?)xbmtTk!*)6?}j!sr6pKbx98d;IE_hQ#)tEF7+=Q+4-YuIJq0Irz<-1J zXbvgClSUy@^*4cCaAYKc%aj~}IR^&Ej~yHwKrE{VNp-l`lmZ;WdO({$>BU_I>p#Xv z2d7Ek;1Ncw6BoY%$MJq7CFMEqn_+lDFbYHb3(V}N7Gc)3{MP$V$=7>&1uyi6Rr1QJ ze-mALubC#M>6>MO$J?RJ5!pOwk(IS+>B&m({o1B+%szB-9Do>f|y&(p)p3_&@#?134GT z4c9DJ@inMlsR^WDLGS}w4~$@?;4N_go6PcvJ+#$$g8mL*6+ifkY}qSB_&?*9OlYh+`5g*sP|Flauq_Pt+ePvnKSZ8%!M;n zpJ$jpdi^|6X46JY?^4>8bL$uHbiDsj`l4W%K7{bu%y5EzyuD+!>rcyPme{n(vS>Eq zSDf-KB{H@y$T*yVn-&BVO6!%5ERQ*~(fA-(KGw!W^BjqyRyR zXQOiG01WAa-|>s4r>7~+6mJ8Y?#mI@IQ=@9SQ(T74Nm2~){NV{ic&70PcO#ByPvDo z&rV+5#J&@dRj-zNElZD7Mcuoh{QhUkBQmQ+tkFx~STx>{=?qPgcILm!<1^c>oluc* z(Y}K#wA2{>rl;Z_;qw^Iw|S9iV#816+X#FHTrJXNoT8uOM3XzY7#&z1{8cC%PEe-L zSQT&}%{u+OY86Q=M9aQG*F=a$mb{Iwy?xF`QY-61P7KdIt}*q3oU56*lPf`WzsF`4 zi>@a}ygUD>^k%{Yb8}P2&aNCD25T0ohBp1eb5_9GJeb5=-pl7*+T{~4B-*FDKYPfZ zQC2kg^ZwE&^*o)62zNAcf?R?U&KiR6pOAvfWD;D7MU1&{m};_x#(frueFJbk`wy67 z4oi%fP?S^rAA;|@KI&nX0`Pkl`lIai%w##O8B8k5!Kw4CQSVwB=akxam`7}=innI~ z;%-J(UT$J8T^SkHAZN+0YMvP}=0k7+bnR1rO{wh7V}3hwnQGBym>`3Ex9P=_JyDb7 zeVj}#gY8VVRog(Vqy??<|A(!&46CYZ*S}E&6a|!S3{tvb0SguBlJ1i3?ozrzT2fkK z(Vfx_BHi8H4ewaq_p|@c-pBh<5Abk~IY(XBdHzn0kk$gQspkbWJNt`Liy2ypQfkHy zySTw{^JE=mVrrj`dCHeb=C|ViDa!WeU`bnRTJ#=*)Nr`a{O!w5Eh#^$-lQpPK&$A^ z7neLzt;LFl^vg@IPn+~Qk&iH9ot?ZDYV&2P$svn!y&7gLHt)Si>Q^Nq1GNLU|B`{^ z6&QrYrkL3`ScdJt&Pb1cXXxm6=~K$XpD}m0*r;=2$ky#1)|##Lcx{7(sr*9hy0#>#DhH7u<~TTkId(9bl>0MKsElrm_%bH?o@WX}y0ok0(IU^1xT_`4yWH-c$^sjp z?Ba^FPclSIA#b7ax0Az|am3bPHRhT>XMM}g-ulD*OL*e9<2QWxc#F*wk1-z3KrA`7 z_R=X1UuX#b&lZ+AwG^eU_-jQn)zO|cq1@!;^u*!Z)V=}u79(O}+JVA&6S(IxR^iSO zARq^SKmm5DlFppWOdq%_5j1H>5}Uc0m?D5>{)=f*!&oCd5R-vl2S+C>51>C)tV*K= z^5lwKpcHtkRE6RI^i81O3;yNtiqLd}E~}xQ?uj0gISJJ&qxzh?F>^mOM>bn)2K{c@ zTq!Mom>Dgk|2-eXNi-bz; z7)$cOkD<@c_Ppiv9(EKrN4tJ}!RGW@$kEatD8+~=bi1Xl2UXo4-02+uCbBJ&KYz)8 zn>s-!>1o8Nw2oBvjm+#6YYeEVBsNzESGYVoK3*q9ZFj2D;o8{PfX?;K8J2NUC@Adx z+Y`^Fhl&bvw=sHDr`k>i+cK~xXwZ7hus$o&A62Xkdz*9e z%ThkOpjo#33Cx^P)x4EmkDU<7Q5WJJy7>%w@1cZ&r)>X_*{cwWy{|WhzqOc5?Av&_ zncL()xXtNYk%_lerT@0p#U>j4ew{logW>k%*OO3W-A|TD8Ga+*A87WANpz&}vv-uQTVci}C6BE;EGb^qdz>7?$obn2UGIEuQJn!#-y&dlC zM+P>VEz?hLHsQx56N2RI_@HngF&F+c@?62~ab8US=j`C~9M?bJkZFm!a?QFk&SeadcUuSQXUh)vJ#LZ1Q@XY!37a z!@?}>iFEmHtj4PDhH?g>*CF7f^lh%ewG8-Pl9Gw;_~bM+`T=DMjQwXI&;;g>oXHEI zc2U>RC{cyUD=7gn50Qq@I$Veclq)$}O&(_Rjk7v`ce%P3?3BeO*Uxtt04hv@Ks1`- zUd(;~`RCMEskph8TB#MKzo&W2gqI#{SD${4E}PpKWcrh}7Ds%FexF)SVkB)QoNF<0 z>1nETpXchQR53Zdx79k3uG1HQaNvUcoJc1RhT3sl7MaGy$lCp%zzyX zK=yz?9f_?G9S|gSetmfWM{VzH7oE8ytEuKmoFUa4 zZ={*}0f``)$HiATP5}6iLFXHv)!-QrSb?uRDmGRK*iHa5qd>i;RE@m&58`yF z2*yrLJE$F%BGTqcXn0pRvBGOd9P?^VKFN^uS&OqJK3=49N8mYO_%ZZ+ajoC^!M6}Q z>o;jf^NRZO(4fp}u%PSn902kQt-2z7_ zupfnj0gnRBdGzX~0eB7N^^={Nev`b+o!^kRVMQ%AEH7a8oT?hfgHaFV)!amj!VHLX zZqlEwaC-B+PmuK(aT9(dh)v`zvU&UVn+EbJqH!Fh*LGWHKFAd?NM4rM!2ROoL8-Ym!EUW4=9u2 z^j9e-WSEkGklV8>_h0lX-9$vIt-Nwza~*C7by5hCBC>TE0r-G3|*yI~KjX zshtFwLevD**$8J`Z?9vC1F7ts-iQv#2fe>VccLBN^^pxw$C*ogHl+z_xl3YEBwsH* z`UEu%Uz0Po;F_ssXi#kZDUvGJQ1;;2)8h|C!yGE>5|QVBEkplmy0^m)H-D~_(YorW zYg%x@i?o+%M{z;Ac?06tnc|x|6<;l6)%Y;&CtH|;h-pib2;9Vf&%2i-C;>Q zogzmHwVt4jLzi*~Av~p2QYS;P%U^CB4x;SdM5kn6d{7lPB*>`T|K>PDo{*-Cg3a^i!_od?!$5 zC;X>P@mo9Bu`i)J{oVRQqk3!U3xxB#xb)2*mi))P5;qQ9sWJXXD%R9-<>`3_+ie#$ zQ&ipwBg15tajZNu%Kv9px93>wn+nUCGMYICODjdxy>3(K+raW_ykC8UG#lCxEqM3G zdZI`A%NSNLJ0{EqA6BW8o-;&^pDg`++s&&9(G%ruKc5J5XR+^ds5H&;RfyiqiO`iZ zN@QFjm*r5rzP3x0T=b7URNWn-5U;=fqb)haa9%fvv& zLF2@QzXQRFh9VM47o9qwiSgw^QT|(8AW*vubQw&W>KlzFxl9hq$Y;Vc`)E2DsJQO5 zriCZK;Qp-Ub`P#z5fmMf>HxU^jy-)mbsFT#lT>p;081kp{|zpzON7zb>p> zIVB=NQ_eVE#twTtZLBM8hDx4|9T_j%#Y&5@yqIbDp&<44a#Hhwg%Mk+dN}x;tSM*z z*goRyK--Si-DW!yw09(j6B(Ic%>jnBxcmN<~}jx~;g)Yg?Dl*XjF@9v0p3_xXO0-oK40 zb?5gop!sb@T}I z2{KV6<7S`X;tpS?q9q)mVOLSE=l5^FwnYdyu-56xU3FpD*bGliEa~5U0p85VUasxY zx`Zzqgh$W7+CB)M2t;I|H2ISh=4RP8=yQ7mSH9oFlGtW`HsHWQIyx1N>=T#B!}m|05N&;Qc(65M3jIR4T&N5K0 zO?w!$sNVDcm>bEV{ZWr9iGXaed~EZuBsPcrd)pM)P-|Ly8+ivh{iRq$SS#+@BnC9` zTLi4oyM*^woF+*HhrTJYM=)*?rdLr>uxy{~3% zQhivYES{)|E~0DIQgQAygQB54%tJI&*Xnn!TEJ16g*Tm=IvXt;aC&mskz>uig-^Du zbbMpBPkQpy&Qiv8?(PoZi~~1ECMs(joEs#aey%OUWlx*o+pe zb6r01hwz2y=a(**?v&4EGBKszrF`sz1B#@RkHm&qsfcdgNJ~Dle^uyCm1cWrw4Qt| zCmQp;LKs!q`X^-?U$oMkS@Lsf!|anIL$M+R%5&70zgrK>>i^H~Ndx65iy4qoU?W6R z71$P*v5(!uPAz=>_cTyo1nXEDR>s^mN;{a5^cPjDC-IJZib$FicsBA$C9%DyF)mJ< zA(!0FMY?>nNycSKPW|+n$UIzO=-75tFNOK!wXo8$gm{5JneAtPD~-PAE-pxH1#+4q z&VTX}<|g@iOR)7h+=n21g?ybUE)HiOl3Gw4Hde%GsA!d)sl(xGsXbSC6waE#Hc(H3 zxy;JZffpy&M7{dI-a)OLn++C5RHcz?PRg6lW1k)ho$id-mJ2xsNdu18KOd5!+@W=J zTVq^84`1NZZCI!QtJ>uGe8R_yJ%6`dMjY=P@K|}GW|E3emD~=g$K!Sl%7@WUuA}$*1ous3{=;BQ`oSp z&Vy^l=mQmjO_}w?UPttsX7G>%i+amctKv-S>D264WZbg)=nLUnujydqnUI1mEaUxi|iO#kR5DFIGp}y|x7?2SdGUBm7y=95= zJ?%u@={*HKF4M}eru>xdhKKQUR1q`{4<8@e>=mB{oP8VQ{Lj>=RdX|GVj6el8ur}t zHJbWv_7;~`w1}})RyC`3PHDsAa1%&Y|9vP?w=K#N@ZIm(H2RLl@drnp4Qf3HAEvHl z!7o`^!39C@2VIx?oG#LapVy>d=lxmT2Ks-(rH`8O!UO+cXB-DK>z-6$@2iGzZ_}RC zzCoW(qb9VGbiWwlh!{`$K+R|GA??ko^bzf|)Xwt`l=dIydi@-NGCv2PAHl(ey`cU++`H zLwvkt|HP>JqS_$0#@v4e0%NmFa#eVhZ!o2n4=StBV$1{yZ7lm$P$5Y{B0yfR^X_oKb*9x3yn!SR;BTY!4e758}-4W-7iz&aNvY$!UyX~k#?JG?a1t@k)E|^Z zvj%xTUOPANrNIWEBYMtkgrF=mCV|Xu1z{+8GqeHOV>d6O0ZPG=^8pJk56q~n&FrU?z0p^yk;QwPb70X>P{09>J_gXTRd+ufO`aOt`-nMV@exSDRp~i0WlkY>mupz;swl`7L#=X?S{;)9 zO%oVeNUx?z((~5#A>){e8t%(EPM>XEe;Y}Ohs}j4=-Xoo$*v)#4NbC@h6Jl9iW%_< zDU!Z=l#Plo&l+Pisp`{2AGIdYN1CUv*P=E(&ju)A zZHg*?euUAOV`P`}Vbi(4fR*uB+%j;T?(EowJdmMp9P4=G!eu@Co2ih9&@Y`DtcSXS zHVm{Ft7T_K(3my9)=-Sq7+dP1q^divubTNf@|n{8Hhc|;__%Ann&Z}3@^HB4JNgni z_d_c4>j0U=dv$H?2=Fi9{MKvEx7TOv^L1~0R5xZ?4ig*4Qrd9oQnjT;Dv(LuFJFz( z&QBzinx~DL91^l27QJUJmdCcW8TOBtg$fkS$`vKO*XpCbB@`<0doA}&9OmuZjsG6~ zV6-IJ&EAaaD+8%I7Rg}JMB1~%r{*^F%HEdv&}GYZ!y6biE^ACD$9SJvy&-`D4G&>- zl|qb6?XsbmQiB$-8{$u%Rr;aV>E`vg7aa26w+1ekg8Kdrt?J@7b!0 zgC4f+)dWGX;XvRGsmQaZCk55*)Ed6VoU z0#4V*zP)(l!ZzOv*FM^j!!(6~A~2JFN@}e3_5v-~*qX7R|1*WFc|YW|dHLGDyG^oc z#^x#D2;u>z5c#WD&5gIq;rx^g3}FCIavxHa`*&FN_4J;Dgn&Ygx@us7o2)QZQsNX1 zP&9oT2+MyHH9owl(Xe6N?ETAIK65YIX#2hx=k|+KoECWH!_0-N_)60u#4zGMH%We| z?a`Z@(&+Is%Y}+tqK)lQZ|)L-8U~K9B98NvgZV>5R=e!DRbHhH zy)^UJv}2`S$o6?&Ju%D)^w@}qPy1>(uWIwxA}0nUG^N)GneoR197|N@GM(1L zqe(8FC+m|C!X`C^@?qII+lncMwD&C6$HJ%2?@R-9bDDh-+iQ4BbP1$)lsl?_;jgu! zF9!X5f5FAh|0Hsb_W3^Z_%h#`3wB~m-tzP={3tyAQ0z9XA*d$k2tH&&!4+* zO-??w-sS=G*0pZmzo`xjTx@N?{Wd7win?fKj;C(T2&zwM>J8~ced}Z?hq`Yr_CEhB zkPU;+P)O)X`?ql}n_A6*cR#RGM`ebGohU_J9yBe@dzWSI!DE|2?Yb;Qp zj}jdac;G-=i_&Yk{G*8O{ke}#Pin8kSGWj{zUwJBf7GXN&Yq(yM_W?J(H1Lr8CxgT zbsu29i>;0T$2?{#2Wr-qD{ZspNNz$Hdfdc|>b9_#3x7O6)6o9lHOA3*HNjLAw|4M` ztko}L7v7Qi=HH`05DOaytEkFrf6eVSQh|~UaQ|%1wk9{Fl7&v1ykXAz-Kah|R{q*7 z2aU6mCL&%|Z-;7tvsG&JL6jT#nzRVoUB% z^RM=p>IrI+vV?uafp_5JUEICb9tFk@DoO~qm|W@S^bCmrq>4^S>8tvEelR9Fg)Q)*!OqB{uLUQ7}fcYm^&p#E-bYrxEBrww2yTjuxRhx_5<4aQx@@)}ThxB%`g%G}!C zezpFXu+WyKZF1>^9Czc-%BkHRU+2P{twjG+san&IBaz*yQcv{#(apE`D_1C%hbZ^C z=sFb?U*ph*h{t%W|HwDjbtgJ;I%6@DdZ^^+IN4zk(3U%~EtMAqmcCTDH7qr-w-(i^PbM$`Pk#o_tinx3I9 zGJ1bN;7ZWa9OiMQ4j=VDrYS6C`x&LA*e|Rmdub&8mJsb3+VSVJAI}R#A5#Fs13-Y_ z6D;6_*AV(wv@W23~@0TV# zoW>2Xt|Uo0+1TVUm959}6Wbo2DhH_~%)^R3$%THZCWorC<0yo9|?B{#NM1-`0KSQ(;gb)sL9L!Y%cN17Zh) zlvV}-8SFe(j3hCGIJs~2=z<_n`u*^^+3(dvo$OAyV+JKQE5r86Jra*3H~jY( zx*RG>GT?S9aM}q+BjT_E%%sn3m7W@xwvttn+LpDOe>vDUH#Z0u09u(SsSO}#<}9qN zaN#+KVC!hlGRO@E$snPC=6Vdgu}qe8yts7A+C{d&-wXHnI?VY#9ts_yEUCCJGLU*O z^k~q9AaPevEJ|^tfL^VF7*_d56R^}U_e%Z!CtBTcr5)rk79}+pJy=~3iYfR*=`W3E zs`OtB3%J6^*Ff;3Q*hr2c^;&p5hi`OUc{clXxhZkW{r{a(5BC-i<2#NrK$A7LfcXn zx1pK4;BF`4M+rq<-&o8^Nlp$E?|aM^T3|g*=#m^O^9>pjbfPoatPaGF&Tg{A?UYZ! z>C&3Is9w`q@TQ)S0;goa9kczZD&3I&7wJ`vyqN|!80)<{fYL`#`S^&;tHj+2-D zrubW1XlbUc6^trAug2q)ktXrj0c&y~7X=WqK!6g2XB!n-NL7uPV@<53*xIiE{0ibi zNhfI;Rne#8&Q&KLSR95rlO8m)Z&6lj0-)_2KR}X5isxlwmFA2v> zx%p|<`H2S=_s&E@n4U!z9D|@y^k@L9J4!IyGRO=7Mf%w$}-e*!b6gDs6OQhQ; zx>}BB$D@#%#TTA07!b2{>K2&Y*!AUiwG_(a2fvO|kH(zRQllz#R(`TKdwR(~D6qZe zef=f38Y3xe`j;_&z4x@8CAQ%E+(Ku{F=?&PU|GS;x)$>&-Gy{~S!u2GcxQ;Gcv z8JDM2-lbj-M0#Pbw^D=Sxw#Uy{d}3B9T>1m_g-Z9iM)S^(C$&_zVOtN-*(HG#yPvu zhw*~zsb~NwELK=$WnqCw2axO$@wu=8Rp@4bfjtpeFwN-!asXrxA;j}K+j!sJUY))H zKp!yGK|dKD3piy*3b^Z26{Zim1_rVLUJwXN9>DcC_4Nt&ez`#PfL=ug%-j>1LxxluA4)^fRAo{3Df>x!prVcQ4i1q^S!d#EgR^C#n>z{WgO_ z_%%>|M?>ne5l7yTBZ+=UQB$OQ&5~yFh8{s`(c6lIi=^touvH*QXtpn38!)Q~@0}qp zv`>YSwKj*})3IKSG_5^jrC-Q^8T+_Etbs6NoZN?rYa(OTbiskb`TjqM9tV#0P9CV& zjy?N!%bEqZ*L{F8!ci45OyzuZ7-|0^fT3<|>iBKYA2XtYu>^_(fM4ZK0&+rxe zmC{9T2{TF;%PaKz+iJ{~2`UexCsRY$Uey-(n}+)ji9VQNaLcJ_*HZ>;YP>NmUB zkpJXtrgzh<9J;tT^FO?`CcS^zk^YR%f9x}NJ#O#NeDjFaEktgLRKnPmTK(!ZS4~DZ zNpR!(qmu^8AE)T%CpYl^2~9>@8|`-ZanIHA$&u|^DHN(c)fvY$xOW~B4(j9ocJg?p zmzH_C@Q?j;^r(n5+H2=S_k&4f*kxL;#v(^E%IDO68>*_K-6<6sF5CkY&`1qRi4H zR3vUuuI`~ghC79P6eLI8p2HWM_r5jrhjL-4=t61011Ee!taH zUWRe2|3aJJ$u6I2F+Xgaxm4>9h}~S||E4&3VYS69165Ca-h$)pbzr|s+FkI!MpBnm zjr-!trjH`VXFvksB~YF{OJO*vv8>(l!{A&u3zn7x?iGTHd8SFTN}=8nhvEF&_VmiL zO*_bmOT*R_g^7rps?tbp@@R{E zl9r8}F5W`kUM-fB!WZ<{k3FYvu;PT!wWa!=XZxLf*wiq5bI^~wCMd7|# zJz5aV%jjJdp~*&^iJqrK^0@<$clKisP?hTaIySu2<^!uS>Yty#A08Tab{N}OYtL5- zThK0ndvql3c>}=?GQ&j|@)CopR9w=nls&XRSMW>9q4n3B`Bg-&Lp90U)^O>is%X^4 znUrQ}(MfrEwe5=Ka4g>&>-30g+}-sSC||XO2tM99Mw{Sj6o2>if5b~wWpAM_4Yw*2 zH~bu59xh0M%Qk*;-8y8|P{9q-%x$X#w**rIey%}TnmyB@*lt2;1wcZsGn`k;RCk89 z7;wl`uReW??&&23Qhv-;V3m<~44wzbo(E*MkMsMV)awN-MKor|mHjbU+t%f|yqb`5 z;i|K>x8nsxccwo6dVv%)b|;i&zB8fv&bffkWwOp@`R=omdCO|1*=U6VxrLc#=dwKx zj7aauo}14bvc@bgZFZD4g{?HEo-uox5(4lXdG?5O5E=yS-`lQsxx(mVp}x@kJA)In z%s#!vb@xfPnm67!{zt`Q-*3Ck6qKW*ThlX%d6Q0V^gl6;qdn38oWu|Lej^Hw(?k~- z!LJ-!A@%hs2tVT256Ezb+hLf=t4RbOo-M4d3IaYSfXDp+C%n@$6*^p?CZM6GhleJe z?Bs^oqXqxNT+;q;;bq>kI^o)H5>YouEKm$B(eHomzs7A~7}X&V9Ew!q3t%*JckZQm z9F@Hor{BPbSj_=Rp?!nABx|u3eW5IV3=YTe`*5y^YG4I<)g~(Z4%Z2vP+(rkY>>86 zO|vLF7JQM7!oi>-S=PO&c6P%5O3FTOG*040d@l6@P$-c7`{`Lrv>kD^_WSh2Rjs{m zE4=uUs%@;8#?ha=detU}^S{3dW+(vsNHGv#tjTRR615yA*Az~}k`N3H-3W)rws~?e zCji6-PDVKZ(J+SqEHpk{Wj4tI#8~gGte6N02=XqLpDX~$Iwx>ol;0X^X=y3&A*%7b z_!1X4uEPA{7ch1Vb7Lo>nf6d}-Qghj_PCh#j_FsplvcUm7a8fQ=%3grQ#LoCDEXWj zDq30Aqa~NQ#ewTquUOvq$6LP%3ygVw8JL%bbL!|C7qzqm7li6$W62NGUJaaFwh3a9DAX*htC3Q`$keS8v78bIn1 z0lx>YKRU_MkTBUQz+7=fNm@n%xdPxt+CfeA2?W)kX^>UhlPQwWSX$1`gM5mV^=CSI zn}iIux+7chFQ)vrKVw!im19WN4g|+lqz8a|B+Yb#&!5m#P8G%FM;mt4XZ6nqhsGCi z`G=t|dLxk@-51Dem=G=B*ARidEb0dmps{>3i_M>a!dFS?MB5=`wYxujOaaNFP46fkHRTd=RLiABsxD0SaN1@;~KeYy7Ab3?P z(iOc|VDm{nwJhBeS+X@y&?Ej~bgVXk+9aG~%d4kULeN$EY#Gs18p>5sxwGjO!k|vT z7Y_<*+(p9Vswk}yJYN0s1I^Q>u{TdHdTr&2l_i~zT#Co&C^D@dh9~S_QqMjKdQx7f z>4csdI_^BaO#J=bQ8GJUulpRMsr5s(xONlW({FB#6DiFt?kdsWiO-*HR}f~OqA%3G z(otu5`CLhNy(tB>AOB~FFyTW4%>3H)e0~FOkefD5cLPo2u1EIF0;LVNDxa8r{`@*a zINYMN4~`ZGhif%UHDhBMc=-`9tnC{J0y{&AI>B`s#J-+v`pcjJqlT%dTdiNeNtV;N zboBl`0?ZkW5VlMzRMwu#H};J;Rv0jAA=V02g@Q-lIa1+6EpLNCi!nO zZhjH=oVoe;pRlXy_V4VB_3%ecsJb*+(IFY1ZdC~jR`?2va>LiRRTSHj3F3Pf8`iCA zGwtW#x@P@e+ViA#K=k0hAMtr=Ecwq__CP+OrQu0%$yEbnH^4|wq{G6)>nzr3CEn`= zm^2V$qD+Sir?rEOCP>D25;1s(2Q#(MkfD2dCHws6zy)f<*}II@p1xZZp@;WlS292C ziSu>tbkxasqVqGBHy8gLd>sSncZdZ zi$fLt{m6>6)}Dyra-d%?;^@|*#mbh?r$Qpko&&3W^yH>@Kxy+ID%$x)IVJOMn5da! z_~7^7;F4qO%Zo@mC9ssiu-aKATf3}5t>z=8v{D?>zxE;4oXv7LO1j));pMAg<8leK z&F+e!Cw-{<{`rmOgMJVfzlxgmKx|%`*{o*OiLQ_q2p_l^kMc6|I8mx*h$l`djvq$h zxRudH6*=hHFcsAg+3?+J)KEfwOff$M99wExGId=G_x}S?uG%9e6K={#5Eq%2&7rkl zzbGH$K7Y1T^TFU1E}YCs)o#|}vVqs7{6!`zKxp}*X3#|Zu`7Nn)}ylV<~C^r3kV|K zS-|qqLSxc8kzXOsU@u3!;Dn-HYPXDa;18BNQ|LgxbL{yTDIehSNcKb5A4_O@X1JWc zEkIFZ^LR*w@eGlnCBllkw(FY_aY558A;_#{tcvtSkv_7uc?DAUgnBzrYHU;hByDe1 z;7j7N>p1cMJJpYwFUuKLE-DT(&7{;CDp!R{6D1u3LN5%2ApgaJg5#lzzoRbi8DixP z(uO?^dM`~-EQ{&GUbI%{k*yELH4_j!HB6)fbos9*7}ByQ?etUW=5gV z{^VU??%RIF*qy<}-rY?)zWCtDt&7HLLVNW;`~lno0zh((Ai(;+_T@d?)G)WO3Lajp z>Di@W0HE6y0uVYF1wd(cEa}4DuInvz%9Gq^E z&BV+V3vZ}8ue{51$b_TV+?y1&zIaaXo^+_wjq-I#-&1h}Yenr^6iQtbq*bFNWnP32 zf-58%XkG}RXSM>3R(*$hxNu7Wy0hk)o*?`D?!Zbf34s}xL+OysorO?g5XNHdt29vV zu;#jq`ma|5L=Pc8W%-d4AUMDZl-0o702bD^_ICE_dq5Kh0CqTi2^=;-ST z3-nnBS9K8M>$;INYHB0_0=Q#~uwEViU_qk%Dq-CL7zOoRW97;ZZF?LTK9q22%8G0+ z1+E{^9uV4s!_|Q0`Ee-%kgZ&}7$R%!biJghD<869_9#^6B#++q^BJo1uXC^auZLqe z-0b^!EJ0ZU>QrkWtxgZDo~M=9*Vncn4~7}kslX}mfrzv;74M8S50K`7V4UR?*S$qQ zB8!dRD(7{;p7#HqkNvPj1s1)dDKU9>J|tfxly6@gi>6(1^=+TcH(VY0K+5<92MWLv zU?UwkrSW(y9y8(Fn8tQa>bDu>UFuiAbb8L%A^Ea6FWPq+in#D+kuzd@rI|mhK*wQB z6QNuRmGp3QL;aV@6LQ8=nic~I3czdWG^b@u*V}f)zC9#}@%OMiQAP83;S|=04)4%l z|EcP}{(}jY6Tl&2tTH?p9eBnPlut;{!`2rJM#IMb1NDPK7qFH@yH)1GarU(WZUY~^ zoGAyaH-5hY-VmTk{?*?f`bxlWVR7-jm>8-*23a}`RNQTWq_(@88$9}vFcd_s zegqiH>$BaA^z?^c;D=1m%=^q#ZXVgPCk1H2QKCs7;mC0q?64#n_fz?$Kp%lt+W4+z zxq5~DOMgB}R_SqXG>Xf!-4~UzW0SZ`dR=b@w|X^5t5_(u+zP{pMFN6RZetq-h4g7G zpVdV0ESY%ZHoEE&**em_8EN-MWWDo?D$H&e3$hFHNJfvfD~Nq}!*EUFtt4MIu06mb zCAy>(ZFYreJFqC!%Pol3ZhKqWc&0ZH2;omr?Tm~J0uD2L;CB3pmztON_OBBcguMe+Bs}F53G_@x|>i(DnFw`idp` zrV_M}UNC58D&k^otaOm+T6T!49rw2Dl`);2OLuX^9GayD&fr7w5!y|bSH^n}Pu)=) zn5#y6v8aQ**xm8glKHhK>mFwT`_g+Dy8GZ0{3S-=c}G-2f$P*bSm}haZM_eCH<~`g z%p>}K(=D2#BUXSHcYdhv7LC$jKbrWQyY&Ad`_EH z3>Q4R6RRD22YqT?BHcFMaBZHfSaOSXL?&}N$Gv!d%L{Cx=6ASiCGv8O`$}RQ9-^0f z6x6t#t(g@JDb*Ma#Dhb&R+~T8^`FxA-BdFs7C9P}-d%_iUiWWon=Ayqf3J>3*5dpP zYE-el$10*B`tReLgi0$h*bb|#dw|A`Gq4Lg0c=9evF*C7tt{lY!5E zPU*MI@#&2g4R;}1=~U(r^&?~goc4OYEtb6oTDRK07 z%eHUP&5g>{h4~quMrg{buwD+I*`4XJLoekr!-L(Aay;I%u&#V3Pc{D=DN)fbTq3X2 zbDO+0Z`q;vEo_YaSy9RHP|c&%AqQpJGD36jxi`3>ji=#}z<3iC5dn|i1iVf?5I_LZ zKH$YI$c_fg9oYfs{{M!yUfe8`-7kO|)(Qx3#t7#<63L$)orU8#;F_Dik4-`bl$g#( zkRZo9JeaX@M(?3AY%e~#n^)}d{5Bz3!ge;NjpjRY+A?&kt*!Rh1KMuY(z3a})?{WH zA^SP&AWjd_!;ZmRpsX_DUjLcq6k0=CBr|T;bzBNMixt;lWh}4+O9#Vms>+i_lNZmW z!4b8CUEssxQdaZdrAU4+ex`G5CRPn72jQ-#Znf-r4jO|)Px%I^m`N4DHYmXp^PlE@$loI`jYOHHx- zibA`aM_sWGmz?{Qd!{wvg~KW(7BVZ7`~IOk`&vh&%GoF@mbs&_v!gx@tLPT=9P-gsBIHQsS? z3x_clW>k|7)6+bnJ8)Yxk_FoU#~ZNs+|2A!>CzR%N3>V6COZi@rbHaw*Z5Vc>!S=*r60y0;8{7GGYPOVSX zl$mkYB}jR#Y=N}Er{7++rPq>^ndkR{Dn|6UNkwGcEvJ-4{MXd!gyTZ`L^8Io>uys= z!-2QeD)w|-W8WT^@f7)xEQd#!?U{`FcS6u9rq=t+0`N@IE=te!*CWf;Oi|BaKZ}!J zam9Wa-tQHv%0H=B=%%WgXuBbyx-<}H0snn@u1mQeaYV~JoQoY6L(j}`Uq|tCi#AS| zOCAkzz*aL7f|=JzAp1N&?O~;+<0m8&$1(~yjEszS5E8&_-mt5Ei}p%NQZfsK4r1fr zz%4zh}()$SuTIU8CtJfekedyS0hMsaMC#I6-- z_E+=fQo)e*zGuo?#sQE2T-gHUOdpX}Bo> zy}}AQLwBHHq*^n0^}6gi=O++GVCA=xVQwEQ%|2G1m|UK0c*d}Lc7uNxM;N%YEcN@b z<%qYf7402X1GIM!UrzK{4Z-+PsWjI-Qc~&ke&MjKq#e&*@V;m{!+lH9rtoBwnVMXs z?i2^v@R`=9r@Qu4OKkUQm?U3~Rh%f4{7I!d z{fISN^0|!1-e|3mF6FdS=yPVGSy{QWwofy6 z&VqdVs?HQUL6v#*Pq_2kH*A$1D!QOyoP(T2L$7{gJU7XvvRnf!q&nQlItO$lHBXq6 zyNWcwTU|K4npWkhHl1Sr@a50Eo+(|S#%Twy)XJPl73IS=DQ`@#8t{gd97D*vrajWB zt^M4pj1$4jDU2BO-3V-WJ`N9q0SpNUWz_Qi9bm|?g2ViW4?UEUyt9a|(0}88*evJj z756KkA{b_GUhe-2+KO~5hZP>@?vRX}pBJpn+4Ey9ll*G7mX0i2d@R~zUa5kM^2?+o zqUK0I486feGu6Z~8B364V#*9tyx!~L?tnvHKD|qyfgiJ|cM<==&BTfR-nKRU6EH*F z(o|4w2kIH?9G!i4pEWaIoHnNXiN$*{>ud#E(JfWJG}MCFa!?)j7Di!zCzgJ@TBuZA zZqCK&5WIHe@WQFqxY$24rQ0#FQWQG1_V#jQl@}GyBn=(Yh|x zQx1<;$3sLR9M|#+{(}6GUMYi2wDv@tq@J-(He7kgOkt*6U-?~a`^cG#aan@ej|tZ3B;EOtMd>MsrsAvc3v>=L; zjr+Kf#SX6II<;q_XN9HNN}c31*a&PZ+)T!b)9-_m z{N*_Fj~LiP^~Fovc^vb@QU_IE8)|B+Fmn#zcVKNwin2zttTlc2*QL+uqn6B!TYrn) zes)W$faGSG`D5O;-bIh748x)&eG2`%f*qvLaxBIW68=L{+eyRy#6+f_@(Anxm0>^U ziuond=*j})lTWU#K$TXa)@)`!uKAt$#r~D-KND>C!@BJm#(tUqS&C^rb4cfK zVk~16Vsz2A8)w6d2ma)Krq~>SP08|OB6=* z9Sr_{RaQib)}cfPVgiz_Zk17oW7zAq9P2(kx__6^{Iz9?2U~C3X{#-uc#+t}3?EUI zWi%qgD@TQ)v0mgXcZ6Q-_e_v^gNqR50Gj~}>-_GPMaN#hr^4!E1YgSeD|HXf$rr!M zthNUAPUDfw6gy#?+`W+J9nzUMH7@a4B0Z<}ZLnAz)u6q&`6VQw7%WLd0_kXXT$vnr zvx)DfgImO(T6SDQD3^EASYS9@_~<0@Q~rK$0-Yl6zO>;$EVhRfuc%ILyABU$Ls+ny zzpdOkexVWBS0%)hoBwR!N&`8RzCUSkiWa6W)v0BFnIzF=yh(a>X{6@9Di@Q5$TCJo zz8Y>`eHjM}b~!tO#3bh*TzDLDLIdAVnmC%5QJ@bhN=HrWJhR->Y+gs?#b} z{v}7^Kg3@rW!Z{>)5MrBcVNMfdEdynG=18m>Z(=wW2CRB zPU>)X42upD@ioh9GWCY{BxLh>H=0H|{#3e26o1xg%)w;`xgznv>!LQVRR5IbC$DCv zSp6RJhpX1yPrd%nJ6V@YUbSRsljW}HA3e@RR}sqjngEt}aK)y*w*_sh=_<>jPM*@N z%l2X-?r!1fE%sC~TuY^XMV2+Q7S&H2b_$2qR43V_8z*8h18J(T`1AYFyN&H?f}QaQ z_U~%Cl1^SH)pPZpc3AUSzk-PWGifT3ze!W@x8}_Vc@utwDqv$_ z$z?3Vk5rpqaRws5-qZ;8CarAg^OlDW4MhsKO6K|PUe^6o(WD+o4R=1X9%WNco92ol ziH5&(I?}I4A#T%D#_vvPkPgS@@Sx=gi}ZU;jDEB~D#2chXmbAl_F(}kQ3`^z2+|=SA}uT$7Tqlki|%d~4c}buz3+Fw&-32j4~N4s zU^uVqI_H_kc^o2DR;zDHcZGn{l~^3R@Vva3`6MM5q**iOPjcI9QG2#Of=?8D5>gqF)eHWm5aFV1?ijCJF;9K6TOJsH#T?C!Rj=JU8uCO61%O7@ zyTXEo(NVmej$*y%hV?zV;n({ zn@gFus@^178}XYrh8I6>|9Xa-AaNUOA~aL$P&+Q_2q&^=)T{v4?2u7Q&lQW`>RL;W z=Okt^P~dhNF73T7-dpuMMsI|?l4}n+O+&xZVQ?YC$(f*XC!2%N8UBm@@fSa^E!)0s z)9&y8y2%ekWN~dQx>T;aJP{TwnVAh9>4MUdgNRv>zU;KqPuE})s%GwfHhlZvM^_S2 zVU)9SqHiBeem+Pn63n_w=DeCuZB^#^?XW)K*IPCN=aYqkmgSyFXd)`~N{N#;Q*$4j z9s85HYUTxB+GLLucT&e}*{9?Yz32*)#xt^}q^j34W`CY!NQilIzN-I97{hWm?VAF7J_;*i;GwMGyl6 z<3S8eLy2S2O*dFkhW{(7$XlHy7riLRGr1e0K>5U})95K({kNfsLOiRo(+s@&pkGn_ zQ8=|wtJ_>B`855;qRg)9(L|Se;OHUNwiQJ`Hl9(*zGd|wTQ$%=cb3c^D?f$X@uIFK#HGEYs#uFaOUZE}I(GM0N?Oo+ElBI2 zKu-{4m0>X3;=a``)f=XhH_Dn`t}P@W$Z;=uG2fO(Vb!V?YwpV~e|>9H?7JV~2puS& zR1b6dPl6rYZe;t;+d0;F;InabcluTPA5PuiI?A=y)<6h{+=^P%HI2ty^qO8zNWJl%K+xV@!U zoX-M{)skFDsN@GN5j0mJ8z}xIs2s+zh{PJ>v<$8 zLBHM(&hh%S@`x-t47Y!XW;jU@qtwK(Nc~cHI`@V;<@>Uk)N2t<2JqsRl==UC!#qWf zuSB9oEa|L9+6k!KAHYOffot2A)}Q6wv*L=M8Zf|?LCQpc^ zDsmjD^FDepOH?h{BuDkn%mM9j$J7joO#DO8R5vQm?W5 zok{z$RGu1_#YQqR1=qUFMuUPbi{aUIklaap#OVnz&D~A*S02WZqvowEy|A{(p zi117lOK7VY;0FOTmTSjl&?*0)!hbAdBr}#ke?|!Zq?YaN5yGk?c7siP>{$BfB?m#g z?3sWE0~G~aPBO^D8RZEe`ZR_FaSHDAw^j-s53RDCsU1xR$^o;G|F-!vT>*rOqVfH!u+Bp-=Dwcd#+ zEuroa&h$Fff5%rlg8z$6U(t$at&v4XjAWJ-T{N=#3^HWN^N%re|L`(2G_-V1Ciq3l zApENdc@d>WxRn#5B@y-g8Qp3A3dK5Ps%6!g=QFSO_J|#@?q&~YcS&809gY?*eZCTg|9m9C@N>6A@UN;X+ACQ(+4WPHFO?MI*~C0)iOl$uCaG&G zPd3qz9(s|Piij~+R=TpMV>{X@9}@Sh;~r>_lp1+ZZ(5$Iha7akpBD|Dm?(z&y0Xl$ zoX6bovlIpNk5ZXUq+=h*FrRv?kqipOz#;7q=2vfx*NMYd7QG1Ys0I&YPThevnYvTV zuy#9?SZ|6xtP?HK!C`YxlSFsRa^gA9pSKDwz&iy@bz+*^`9E2Kfjvo^d~5H_q`^el zs(&?Ro7Vd917u4)0M{G6wKv5O8mxFyv^tU^E6vzbY&9#w{=rNz(pcMz;a%Q{$svac zU7Cg-Pu4;j31x8#aA@!S>Uigf2vpWRC2dtZ_l@6?c#4>#p~w z2DxHUiW2*EnfoJ&UU(-5)ZiI!Ci zp1rOJx+j89jp26!4vpIlun({qs-hUz`2t8Jq%4?!?RvmrnqseZ7?6Jt8%;F?@G}c&Qfjg zvq>ON^M_{7lFdcRl3ROfMM~c^*^TbvJxUIeBGYLbgi4v8@b)|1dujQiZ5Mfw4m1_x z21#!Vnks$uxmYcfkLOztwt&0($KxwMv!el<%!vdb%fk@V^rLoFEtL7xvkonR)H5Ddq}-7C(|g07Xlgb42RE@z`TV2xeFVqBkyF|1}mP* zdt$*vhLBmTx1|4nHNTz!f*LPAM^xk6EV)1g( z$7i$FY57f)IenIRcIWWj>ipDHt>BL5Sm%zHxStBB{7zj<)Vw77a@mRn)LrlLvau8L z3)NK*9?G5?Pdm)$ImN_~w>O7Mm18bnzrUwFNKbyH(Hy!w@yDx!{5jg|8H4yIp!f9L z9r%Sr?R^1*McnlBnfI11Y_r)z8o%SNSuQW) zd(R@4%p6uX(#*MUxJ4#wV!x2$7LPnkQ3x^{Vtt;#4$_?`_zqX_%8zYu9?ldEGsI~a z$I|X)P~x?qdwdawVz_x{RCdteV(&D`0P}cZZ^jjg_WtbNf?F(A)6?cq(98cF{eOQ* zMd?X{!8oBnrCOAfJ_KxZ$f^UV`-L1$iP6x~{$|7!rJU}=f)f=ptj0{A8G567WGue1 zwHqPB!#U|tb$duZVo7bcX=lumtS~>bj0>-nDx-5>xT`Qw6lXR`%Ck2e}v@UEx-Tex6akzYkTKKNQPgrZe*v9zsm>v{?d{afI=ntNs zDtwTd3e|d@tbCG?s@IeaaPZd~nNQT%Yu)vesqk=YIteKVD)1~?8{ zyIsdHE2`FSaC2~|;5O(o7dl=gmINc@uq{_J!545W+G+LlZM~~8N_0OvbZ<|e8mY$9 zC4FX`!l>Ubth-AUK{r;%ODYlRdy;pT@)$*zFN7+NLudzN1%1cD6aH=he^FdU7R;Hyfm$iL{_xMYz-=04ENakf`cGKXv#^8% zJyVa4=db_7E{J3KwcLEfD*M{Wws)F zyb7wG@2aqUo=W(3{Xjn5ZSq=%`+fm#N|x^$D1F$gw@yhc2zE}Rw_3Rv`O8}kAd#m# z=;85Udj0!r$(NUKg{6a;4I^Y#-HIDX45?YK%7GA^Agp9+FiqKri2vzdhcl)n`iL;< zbK3$OGN6Vlxa=ml^X4^cd6oHc1>OFl#>rQEVs}lYd&5uAsx4*U^(qvEDNitDu>_ z=;DFVa_%TQ#xD6B>+^i;@r%EE7;Q0%a&mIZ;pCrDRTlvY4LJ)!CUY{OSo~FMI8#s& z``W;K+o!j#^ja_KxsB8FKVLDKP_b>P_xzB%Sl}IQ4hovYS=t%(-gi3uIdtK+v_+|I zR^|?1(f(Fle1Q(@7)$x5*jDMkcOIoQqSeogJ$UZO2|}=ymko46PG&=z$9UsZU*{oH zq_LniG1XG5@KvItY~-U4wI=TSAOG$uX&H4%{ksVP(u0&f2Ihgtt*jz_{^Qg|ZsX~q z$Hu2g?h@sERyAF-jF5zKn+Kaik?<73@#dr;INnNK`PIJLN&aEKBf>i;>tmTCYf6n9 z=rL-_VzL*WhvZ9eJ(Ztc{T1$(L>-|0{PrwsT&8mFShxKS6ngavmrIS(q%YPOxXI~b zIe-RVy47n=#n>FWnfPy0{!iN!#N=|PLyqMi(RF(k!&60XVjd=y=Z@fv>`FFC!a^V~ zS`xN%yE5=EkjJ!ApeU=6{9HqfS5DP(wSDLQ+>Xi^)%pkJ0#(e1#9ylH1#S!8IE=Tk zFu$LRioQqgOyrNeF7S2G@t?B(nZ0CvB((|Jkvk(py6^$>RpDo}-C7j!zrpr*LgcAmB zA1hDd&N+iISO4x%s8M!#%|EHaDxBqJL@`N6sk+fUye+#UajsH zl{o*Vjv6?b>%o2ClUhomgSH|L-42)DyQ0Mp`rL1%oGH6_|GY`*vpnKJu~YLozLV+~ zZ?qKL*}gb@p^aN!lQ>R%a#aHTeG&LoJ=!h-c07WVx?9UX?1y}tLj`$qH1U4%iJsXG zAx-~(#^6jFm0kwBUCgje%H{^o8gC+50!o%tdgF#CF;1q@+71Wzhss$Dr8i#IEM86t z#ZS4S;FVFm`eb$-TkSvyD%P3U+s4;iDH&*a6y^J$)?e&(VBB4EqwUfV&$l|*GA4>S zm^fdobxWOZ71s)2_jti2*}Z3&-SOA-=zoS1FnqQZX=B0afFlU*m_%MxF|+J%AEDlw zZqIxg(p#ruA?5A^ry)uiw{uG_YV?P|5sUM<{`U@#3eJLlS7y*Ab!hVWCm)OYwHjCG z?UIQN3`nEn)L>N1nP;a`KwG=)YPti7*@V~J-5rL$mCU!g9YxKz{%0)vzfFn$3~=U_ zjQPBrpIPNt+cu-((W-ekaKU{Ek1T~(Aco(j&X#|wSKcz)KIW-(P)za>nl!jOuZ!bG zq!Z2Yb&HPbGi*tm*<&4nb9Cnt62YK<>b>ON&VRMFCD&^*noH{i<4>T8UYu{`b!8&c zonn*;Bv$+S-^>S4!WSpX8#6eeKX1k&}y?cVR9T zSpQzlShmK9*W}6mWx2#3}^{^I?NS~N>%yTTVLDwrp%3|8~l2j$nO zxIQKv=o0us3nHjNQ^AeAEjgPS`OoUN1vhICc z|11s6wQN?5y1JRQ#CcX_+pRjzXI_kVsM+IL8oF(b_7EVy*X?%vZG;E#{u8;pk#6KN zVT#|BPky>&W#dMdxf8V!rWvqwmBEXgPH4XE%A-emqV&fj6!h3QxZ^bPA`eD>JPB$J z6~?*2VWWJcxcW2jBJ%G4j|H(FFiML`o-ee&30dV=7at{~J7sN>ly9B;rse_}y{9`~ z{>h`=b#mKD?PzKymsru6Tr%12P55rnxb?!&_TjBcX!nTwTG`2LR@T$Ve8RM-vwrOS z1SxRWEJQ!dy;a`ZcD^UjS~Xuc@iEJ*jyf0|(f)b&{@%jNdyP|~zev=|BV*=U!F3z` zQ{esI73UwU2WGVEm$Iz~1cx-v0&uEkBH8=4Z}IN)EZj@tHdcfueC-N_6CV!!ruaEd zx%p$Q3Lqjo28V4T;^2Dfg+d%jT4INHl(@<|!+`Rh=X^A-qhj_VOON z7e*uPPP1^&SwD2sm=dZ=F`w7lNf4{Kg@BL}fZ1X%h>mLyr%wZkyZ@UPtNDEPsNz~| zW;C1qDFUA-fu(nUeGm1$a8ViZv_<=X%}=k#O{&~bcvY%eH{0GRbVq2~g0J^VoT;`h z>v3>%J)*H<3B9wrgt~*nlIM)_?UOLwpc#hIPDS;aXI*W{aqk@_7>rp`KTfzeUB5{A zpjW|k52UCw1sLf=>&exTTTM!J}ZT8UFWoEI^ev zB7>-&AlOL=eCgYB?USFfzk4iji$aoL$j4VffXzm)hc~E#kJ;GHawZ%($1wo~kcjNd zha|o@jfuYTnU*LQ)!y%Ob4w>Y$@Z(s31-p7*ff6R(3F>0zk>!(g*$=p<)0zGNs-#j zRfyG?N!d_;;_`GSRbje+eZCd+0}LE)H-{Rb3RPwM3c2xo0EPGTkN-!X6-2TPCaS!N zS8WGwjKb#vo>z<)7lSx7=5u7H^hb{FmyJ`{x-yED4lMc{|wvv&!J_?EvgJjP5zt6m@*~r z)M!`^FFL_vFkhQS$Ge~kYtui9fqni29 zsX0nJ9-v*PQkR{>8Wdf9zmO+Vd_TlsbzI8+#%?`XDKr6Bv_4ofrbn!3c8^i`{X)`< zfxT8&iF}1@aR+Fcd2S(Jba>hK&&g#@$oKw*pj}iErit^|c$na_S|_-#Gb?~u^=myM zbz%BzkVfe&@N{c_;2Cze@TJtz9_i+PHIw4|Pb2GpwwBH7DM|KrH$R-6<|jhS5L8NamEJb3E{C~prnslzl8c9pu z$A8#q8aP&Pwl%@W&mm$WnMF>YH8U5EOG6@5yr%BKaxki~_|VJCp~c4JjiozSGQ2k^ zS-620)gJSsHbOhzcH&ekUg@b?hV$(@30_q!DMtK&TJR|BV1AUFxT81RMhN#{uU$w*Y8qhJ$v+JoeuQ^AtJ582eJO&IQ)ku1&a z%C!qh`M0Hh#nZkPy=InYrF3`+(M#VcL5`7YHn2)=yz!jc-Uiv!3hK%YeCl+spjtoT z6jIIWn!OlIC_8@?`YayCH#zGs?Y&qDQ)8ZI<*ZfT>{l=Xa1Rk19M z9dgxw2TFG<4VP_hC>L-2@I0OO`+F_sc_Y=sd4TGv*f9fL1TNM({InfC#i-Wuc%0+C z`K%q{!^`s4?*uD*x@pC7A)$-IAFlOfnhYZz8(s=bp)RluWMAz%jX3b+j(}(}3rs$x z3D!+f?ht7yyVr4XZ%g!6YjgX$)sB3(5xBHHGcm7xg0J=r-C#|}I+^i8-${xZh*pIKtX4c^pCfX<pr$Vw1w(rGePQ2BcaCSvDRozhKh&Q zlONXv>%T3-+wYMH;)wfgYZi}wu;#q+Nyt;6!WC0EuqoomaeT3`_uPVir9;h zf}Rdw^}8F*Gwnf+dN=M~!qyDV{83sxP~Tlz#K%^-OIxO-FJXV37xS<4 z2DT*!&m3V0q=e)iwp$8wodNNS1>#@Hvr{4q2R6HJ6TdF(5o9h-LLpn3LL(M@wl_G` zb)390013>1lQk7{%!VOH8K6Do9-@xY+UpOnTIM`1wEK!hO+~AG0~6N*DqhC;3?iuw z?}HM*Tz6x|J1O$J^p4Kg_0;ClGWLfXx5Xn$vCF(y%ZCk@^W-~^lIy=rK6urS6X znz$F=&oKBRovi&yZs7?MhlZ?YwYjNeUn*%(C%8R=>7h~+vo&jDlZ2+dP&=g+NSXKn z8`%hd=q#8{n?1j>>0U4dYf~2bwPHr8zA6zgk)qZV!NJB(!7I^EOL6DW_)wML3KG@J zeJoP!f*>i2mA7c)03IcB%Op*o<@x0HSe3{9fz>-7q=fyEyjI?g>ZBaa7@x&lU$Sz;dcAmJ^*&k>B zKgP$%2jZZTYTcapxRg9Hix0h`(Dbw^)e;}Iy!T>u$)_n$GADOhK(XyJVrP#qh`3l-g^?9)olUYA;l@z1t0X<-z>G z{fUr7$K1u6n3D8jRp`eSUSELYY`IRop3>J|*rT)!37Z?aJb8;5F>3K3@7VfX-q#N; zAB|a)6&m||$;%zEWFNaP8KYuM2hMcQu3N1TCB?%y5PYugb6_HLKIf4e@AK)(S9ljD4 zp`>l=Dash&M(O%ElX1PTy)^6K6CsSwNs$+XiQpU-W4ylhMCaFFB#4*cEA|onF-3!Y zts6$l{rNSUD9S@Gf18M_6=PB~EH>&fm~^HG!{~#Qj5+waVWP+ZZ?E2j{J^i9bf*d( zqV^b{_)L2ylWYHKrM*T+OXPbR9;QCG#_69zog(xg%qR~4? znqIRASJvnWskwey+VR=Xhxwvl?QZx3q|kB@XF|#2-#HMlQC$7_c0ORP|K0Fay{Gna zwz`NR^x*E511X!wR%U4>w_r5o;z-lIrMR|n^2HylbXK}*w%1!Cu9wgUe#F9vhv$pW z6^NE^y|FCYbEtO+@Jvp4_p`;4KJWW|KQZXKn3s_J;U`Pk=-}NUOHa=EvAPKAaRe1n ze(RYri)WmFWW~a%U}op+aglQO-qVnXP|h%K}5UtK9k+zdTgIuB-`sf9kIl^0KH2t>%J)Mcz=zulHHB=su~x) zj83D!P|!a~U)(f>R@pWyeZdNIIX}~RKf~~8K$a?NIVmW(YL}r_6H#IFEqBT8B7CtZ za&C_+r9&6NI66p^T{ywn6Sr<8@cCfsHLIQ3EUi_^PXHVe+a<|c<1(U~wUci&F6Jz8 zc?4TT<aA{F0V2pi4=pFs1LVa(!{T#HL z?{&>=A8}M3`szq>W?g+dpz}zc51HUoayG`-z%u&`y~g-8exkbREq<3&Ao!cX$s7^+ z_Hdb`cWJD|1%P*mrZ#JQysSDQi10xR!`)i~6XD8rLdr86URte>CH6|QmO6RqOG9t| zY8({KcD}EkvO*fm{d=^GDQ2hum7(p7 z--a(FmyacQnZI$0@hx6P83$&tXHEGl!hHJ$?}lz*?M>Uf>N zx;lASkFw2@(F$T)WVc4wU72;Lj?g)NR8hKS-~`iYdmease2cf}G@|roCX;ZEXgpvq zFEtxv7Qxk5PC|V;OrwVMZqsh$9(BA@sk;EaMD-@`%%?a_N~7P+(v|~-Ma%OvE)}m3}tyD#eyRhtEnkECO_cN|XG;bkE7l72P2H;_nmPUv^ zb#iocKj>tzm?)u3^F|~n;}d{~yPsh=!e}TCc`~=M`;jsGQ;&R5cZHd?fZSVG*%GeV z#(c!H*}@?W>I)mCx*aKlgL6zXQQVV*#nAU-#Rr3s^+&@kD~WnklX9D9MI2Tq&zMy& z(tE?dF6>CpebbV5_hFJxQxDOr-~a%(QbvK&h?tY2#Rl5mj?*iZp0fnPR7DjPFriYH z#e77x`Y}$k$88fY#ts@wFqg?RpPD+ql`t4O%TT)d1)ZvP*f8m)U_7aXj;bj0imdz8 zzV|IAc|I>l0*Pe`YSAthLfH<$9*FY0cRUk*K=?E_uW%u+sICbPPeL-L22uIMhlODu zc?u)ReE%%HPF9`plal@G{&5F*<(AaqHsq9Hygs+#vc0A2?0)L#ci^IDB<03XYKCgz zD-@ABrV!R*NdGUQWn`KFc`$H7|0hk5gCu#6enCad0NVJI-?U3oAu`#`INqp+z%Stk$tp-JGI$WjGmO%qMu-D!fj=})#F?6F9~9^vt|xs8)+TPtUt^8 zXWmo>G2HiPhL?IVBy=RrvKYY17EAek zqWi{idMru9jk)H)A6Q>3-!vM$P)87Kg*1<->GguW(}?;%WQ;3dRr86kFa?;D7ZtJT zc^?x3{y__yX}8QL|G_Mj7ElA6cVzg zNkLMt#IjDHr!77^Iu~3QPD3{3LGJE{nvva=WhROQI;}TtGoMRxSOL_{w>=Hayiuwb7U)V2d5Y<0a|3UOTPc?C^S94)L)ve1n!G_(bF=)QP{uRqrTx;#$4C1; zNHDT7)iZy;e)H!39sl>k!|wnye)kCsP)H+ryHS{Rs$;-bJD)c+Jmv3gk-w0!${G)> zxHVpThIzmxL{L4P+B}!p&2BMV0btnLN^cH{ zRc7iT-h9U06IciNP;gyWrZ@w87$oalyca|GNgIdWlMJgT!P z=60}GF~_~=)@!vF0MD-lY2!4K!!1e_ny$ziI1muVu$b{{)D%ZX%dmxFl)A_K0ZGF`gk$zHoSs?gQK|X;#Kc!yuU$Q z0FV6>pnn-gElcbzw|!8WF3O&<>G!*ZG4iHFV-+^*>livwK+A;FiTj(Ga$UaeY*sAR zRQg__My$Z=6iL>X+qHy?=FS5O*RGSID$-3CnMbT?+!nPpVlitxSRb;>EH<+%6+7)LM(Q>6Xl=6%5);xb&Lu5aj)Wtie`opIrxu%uG| zU|rlA$KKn>8Rt9(p+VEBE>#^F_P&+B!nM@OS|Dub6%AWUB1(TH5^3qeG;90DHR@Om zk8{jRBkQ7?rck)1O{9w}MQW}vdHqUIBc?r^sm|ndma3#ZUKPt14JWQ|PV&XR4>xO)g~m;Zm}i1!f|f?M{?qgZ+tidNOg;X-a{~+8|^NNpIsqz!^}x6$5zt3 z*R>BiJtymn!|;qrD5(RYEweCqXlOnF1^e+WSy@>lprnXv6AB>CV8AIYT`Y`i-g z`0d_TN&MP@Qo{v-*V8K-U;sNJb4v>!$HjafP=Wr^EU3NMsc~K#cn_p`*?lhEZ7b*R zh@8%$W%sfC0}TXLh5ZLpZoBW9$S9grdYktf?~M&~+S)>*<7bt7yXyAI9Tk-Xh%<&V z&t+4v82nh#2!`ff-ul9JeRy`=m)y3akM)ICuaE?CUJD$cbjac?ZLJm_jXScj8ZMc= zW~JSb>f?G;_tLA5@#Bdq6&-g)OJR!cZwHrldO4Eeu)6(5?#q~rYSL!6BqjiwT77p5 zve0rb)%W_0l!6QhIRZ9qtsz;fQ6Oi56oR+*`6hC<6fKt~k^&U;jyx}Xl0 zgiedwAu&z>bj2=&Ge`z0@A7;jt3dhK>UYf}HJ|sIhN8Ek`)!bT9Bkd zF51Cr$B%&1O10z65KD8pS)0Pwz?F6r|Dul$2D+F475ynU7r74n>C-2fNH`3_3sjvO zt$9G2Lk0-8bVOe;~Wx#E5- zwa(y#B)aQTQ9=TIK@~!(06(KnXbHZp7r+?=Zk@9NEgFqM3l0%XijuoQd7VV zhY&mad)FwRRaolJ)HcNQiY4-mt26+0)DkF^;}JHX3sqf@|L_5Iv`{A$WCGsjM>*?R z8s*j`cCcfj?pPLDQPFy@3&57!519d(54~J`!>lj7E@>!T9HS0|(F24ehuI(yd(Ki5_{LVX5RnMpj#Qt9ULwbX@`2KYoqMu(Ej;+^aXS0qv z7N5#Eoblw1pjDiz-J{~k@?3q^u^h#Xbqa9W&&uoD05q6(2%;mMZ>P^PRc4j9Bbbkb zKaA>iUanGvAc`Ev+h_~9s55^gyOE@B2nnia1e(3eV@K}6NE9@ikfdr3JgSFl2P5+V zUCwc+86J?oK@xnMBKguEvFoD%=}qV~hg1Z)0T7;_a%iXM(@ty+B|ZdF^vX&~O@RMD z@7)Wn0##({2lQgXBO~#U3Jl=axWF{y2|Ych#DWn&m08t<=LKbj3g0L0^8{#4q1Myu3`*G5q*p+2CK^A)VK8AEE7pYVFq8ly6 zy@S1#tny}cr*+s7b{VYytlf2RWp&Kmrv0G|ONq9u%Ni2ape+H-RvWb5kOVQwZ0yI< zDT1qe?^1}+DZ)vXOa(mn$BUt=qamD9h<6TiGi|`nBo}=wOiXo{CpWO+oX{aOcIUM> zK4;6sfT$Y~wMcvo#OY7q3M#W2dq_&!1s1`PY}4_8ED^BG0?}C3?>~MV49c=ikRJk( z6QITIHFLwi@gN1P;UPtZpl1EZ%rd{MA1VGZOb1i6E+8(-K5KEK+xS7DE>u(o`?1ce zRKNM^y3u7sKriz1qfuR+1iTAf`Og;#%j%fD^r_>Q3_3m@NhUcMV2Oc@tjJXOQ}xx* zfhbcQHO~c0Rd$CudpH_iYt%t!0Ra_!W%!stqTOVhM%~#>&sBsoUJ&TkSp2%;cG2^^ zbDsXO0bLP_=9U_^2k)CmJ& zY@p#v=4V%bMHJe)FbsnM24A6@%R?_fQZZ%UjH8eui>zB;A5qSSZteGx zZ=wo2A&tqJN2IEGSCi?W`g$8b{DbYH&?i|-3sE{z!LUjoesleqEUusWI62Fml*~%{ zW%#w5W~kc9;L@n#-luZ!5gG2dFVGEHT+y+wnMK%icHL}0Rabo?HwIeL6bskoK-T2G z{)OlH{>iTiJ7&)P^Fi?^wY33O^^-l5nHrU+F|1;rEX|*z<*BHcY)_VeAl*+v!@wN?EJdU`t3!&S%Sbkp?TXnIqzHB8X-|y^B_*Xw;?s?(6MIEL=e7I2 zNxVfzDN|UT);vbV>d##i7yceBMSE?i>ZfTjMr_L?7OXhdPEfxo%M^bXdfCN$^N{D9 z47)C3?2b!}{O88#$P4Y>mVh0(nO}Y>6Aaxa-Vk@DdWLON%hk7+MJ`m>GQDx7PIRNt zYafJSq1X3GkN&L6c>tgHx={RX-~TWybS6u`J&nf(z*REscR8`sd*65}d^=jWXyE&GXyVmX^V84{KH`@DLG{Dc#4-@jz|HB9C$)?viSTDD4%%1MK20APa|_8C;5BzmOlIUj9Fh6fkpg)FfSqr{-He8uhyx- zAq(XZXztdBRG0S7kTZmi$GUdaK8CH$Z~wR&T`_a+(F_;v+}wxzb;YWESxzVAH&=|D z4+RkIN_%(snMB)9cOmi6FMV5Vote(Z*)fG@lL%jP;u7^(B10Q^!{stoOzB(DFpK3Z}wFpo2!?x)^O!uKXLSIWK7$-nzs~15BqG3C%VkYzMNW%KLo8qWD!i<%_+3}hejanFz;*q zR}i*!fzsQ7Xm(Z>|CA4+4y$*p!kVIVYAS@mfp7XyGbK13cY+t z3-7`VE%V+$XfUS$>=sz^*x%uajS2Tnx4w$4m3NxYUk(e2v{`Opz~?_+TtvsI5BioK z&3+n`wwk}Xx@j<%3KnCgD;Rxu1zV2@0mMMG`3Dk`&pes-GLM~#@=<(4udw0X@#m%& zch$0#Q{u~6I5?t!!uIIeIJl$HV0~>!7H%>00|yY$836})v_8~sTMzjA+uMV_e0lgK zIyyKaqTC9fghX0XlN9ic4fRwPNM-`%v%3v|aQzKImg>z+vI$R;w5)8j0WK+Wl?*K3#CmUeNs% zwO{j#)VtY<{)j}#m*gxeL+$H(qaT=S$_4x}e7p-8%v+3w3p*wIHq5Xp+fI4m1F7C95`*&>96TFy97t;KT^{z2t&Oj(nS(~vM56Abg2`>> z7l3O~y~dRV^d3nnrd^YI>sYkP2Vf94KwQ|_)6+6N4IAC*B>^HRCcw=t`{Lr_nu2$< z%D>PgaFyZl;>8Pp-``V&eD+#J-BxDn9Id0r!TvGiJnwkL?a4#fuocqeJdGYApmBX$tMxbi*K+5XZ zqTH@$oLpvRcc2v}pH=ls>Qix9Egp1iPdBa2v}FHYVgYE!(fEU$^(P7ngugVEzM{Ie zg^|c5aDD`S2x>7zkBWx&zU1Z&Yt0tt_1P*FNJih(>E;uG2EZRip1)SR^tqFyZ#LgL zx1Dqa5umB}P`f*y1$<*w8$O+qFvTyTV_go{>1Gr*+a7%Rpx3=(?9n8KK*gn;k#n6H z$igw*Sm+`9H3U1C@cDh)d6v864pd-oIm7*2z*{uSl|1>lj5ER1rItgNhk5MRIEoB_78Ct%kA*&RJSbw?3!UTXklXBV7+m>8Kr z<5CE`^70ZwCXu?jx;-g^aUkR_E-p3$V+N!>XSc7Pt2lWQErggd7UE^c9S4VnS?}Q` zAXhX0tY%4Rg=zWH`F7i^9VZ~o@+Gk|)dRKK@P${3t?!ea>5KFlL>Vuv%gLNEkpOTf z9m$2wmH_c^d6l%3FZhrSfWB)RfxeXu-9j+U+(O5#_MdxjGEYggd*q!1$aXR(e2)_!MBRP-Z)-o1W(7fB09E2Zk|_z6qm|CFbo?o+f-#k8o8 zXl@VybyAt&d|ZDsZT^Z?L0)cGt&w1S$+emirVV7>uof+T=0c{>ad90cH|%QFDMbP#sT1m!)ZlsvfQQ{b~0lHW#i`l`hZsQ7vv-%_#q%U1zdi1j|5%w zx#E_=^VEWWuG(+`BDg{rLbGO@j*jjUP)1o#l-vfJ2%Dn?B!aHiX9B-80maT=`-aG% zQrc-*Y=02RKz(TAT+P+&!xH=0OThQlo5+2I6w%ptO^0xz{k}rNcoq0PKh_Z2-kupF zbCUZj!`!6Ri6Vlz6R&nwz;hhpN(7AxS}#uIV}SZ+Zq`aj!2j^@D?v>BnWYowklHwF zvr~Cs`M)17JJmBpP1ob&m@Xu|of6VxI*XL-+O5A)FgJgSV&Q-mBT7AmCjMNdm(dr0sPn zOIerKFnLmLvIn$J;x%^9ArGHB>FyeWThLr-PVbSl+Q`4lfVPH~c%N^}7ag|_AEx&c zS`jvqTVn5f2h8@nGSEnH;iZ_z^E21-RaKBuS+-^*C>rS|D%|ve2k)MNLHOPGzV+5* z0`m3@iBKZYqbddhSu`{>9X&nY0nb0Vko#wF$D+YC98Zwt#pJ{){+GXS5g-%wCz-Cs z*n6WovBg#f_PePv@Cwg98$Kmd6%ut}W201;mb6Ikt>a_!O|=t_nK$T7u9g&km((9I z;{IXq7|J-!hY><9*I>NYP|!V6c~XPp{mLr4&}FhNjHYfpwr^@$BSwA8R~~UP;N%^2 z-*)|>WLQ0qYQaz3zcW%;kC-)Q!rsvl@Y5+xO=3xI4}n^z@J`LHNUG1dg)ZQTJlGz} zR$Ohwpjz64NoH8;#Tllnhv!pQy6v55(=V-Q=(5(IJ6HRCsE?RMxYp4|Jv;X@wfGFg|wM<~3$Z3|?On0Vpnb z_+xv}p?9wQsTw=q`Sj^B6i2$Ye&rE^qb%?j0*~O-Upmni*2kU?n9M}R?(*1J$(;=! z9r7Pn09wBfpx;kV-?o!JU21`k;*Wt>J~30}WQGDla7vYPCeVpdubYZY(wcZfS8&yy zKeh>)5s5WyZzcaimH-nI5KN+vgT0uUd9ajUM+p-lM3G1f^|*O8s1!SB+!ORvp@)Xt za&Hmlqviz3o4K^x7UD5}@^$xu&Vm<9k$kR-mDc0u)#It-gIUbsMyS!<$IdOV0PG8@ zGr=2bt9fUz|1$ZUaS9gSG#%;?X)Uq$6XPy9`-9fz?6$ZtZ1%mQj!_|=d^)F!?1R3L zW@|al*xia;cDq&Sm2DyE$Z?b(*mC+_t54(91Ev1J;rT_gQ`wUo&!izuM#b(X*(aGbCSR?_FU&D$4H19ev>hxTTI(1U(L(paA|jhZW@b zIp99e)TP*`x^=3fw`}Q}{c^vI-yl9;DJpWR`EDF>6Qney6kPn;&26uOnXn~!L!1;i zF4H0_4bI4wu$)rrV);Y?r2p0Q`2&_&X&SGo?nkILaTcXSq@9YyxyJP<2qj-&k+XMk_Qp&N}(cKVEKszO$#Q+3y>^UZbk-%I;tI zQ|C_o8?hqyFR^wM)aN_=?mU|Y@CJYeYmOxMPNxF%W%0hr-8a2`;pkyl2P7A^t) z^te0>w}DvCs}bl-bo8>2(LcCh-SFMp_dUP!p7R}tf8lWO%@`_8NjMxTKXBg@WlFK zOUt8zil;-4BqFuh_O#{qIMOtWa(;XZFN1(jN1Tzvpt7cBKiFrLs~3X~C4sf|74teM z5uA2s0&{a|NO&FcLVt0(j67g~6SMwupF53HCA9-Wi<%e7qZ^EA`?^qak7K;`CJ*zS z+t?KT&Kn{xJ=sCJq#fa1?Z(Ly{asTimRRmhf|>cd;GwW8?z9;WP$j$I=Dg~`vUGLE z7Xv=-gI$&a<=D=?m$WOR?_w7SMg_mX7gaJchql;-VST~H5YVw`I&BR?$pm{6gzc%S z!qmOxry$}CBzydS`@sgY#8BW>8GBfh!JJ^?E-1w>{KmVLD_!NGgtAV4S3h5a^8WRy z7RwJj@O4e%9mCjBX7Pwx<6hwvK>3lq!1jk4|e+) z*em^pGRlQWR<_KTf{T$;jY?r_ChSHx%-0?>PRHL+Nr0q24zEG${Rc*DN%ckgAsO2d znF`#&=O#N`c`vR=<(p(#KEK(eaOrHSeFzy8;w<8e9RL+#LIWjEu#aR);<>wxY>Uf_ z6U%q;*0aE(6yrh2@c-G9z+Kd;ij>wHkzvCN>-aurT{){?>l?soZ*%mlAXJ0#%w&WV zzHeD*e4n(Vmnzr@Jwkr*YR{|fYs3VHin~*P-G(9aO~AJITt~9~Nb~26o|ZM2FU*Nw zoR45tb^}@46fh0XZ{ZLU%7$JqaYHnpcIjDt7u^r+yqx*7JO-MKY2D&ru<#F>++X#U zilvbO9o_Qs7e2Y5=Bin%KyuxA=kqGU`R(EcO8|`PQY2QrR!8=O-!qrjLxBtn}`P0wZDcG?9vq#~B)GN8;3s7AY5?!vZJtn%q z4w7%!qay7e&^@eAyWs0`s@89k(R~fv}zn*kuK1&cG+yciU3VlQ~9tXlG~^-HZYTDe7N)#*aR(|M5x| z+WzNWO$iT*ox4lvzQBQh++bOn{giS$$eQ(>r$u=k3X~ecBTS^Qb0SGU9?q+b#%tHY zwG~Yg$S}1(4p){5ko_SpMVeTX?QRcAo`OOxg*@(lB0brqHL$Q58z4aFX6|7wFXUZ`q)QrBZarJKh z)j&Daic>=WBRk3)kDbOlmuivVKmvcr(Lp&Qn0agv;S=`+TYioDfFj_5C;!I7X)MYE zH1skI2TbzRdWfr8e-M6kzndQBB2#6!+mFyPT%ArK@Te2;iM}}9>!atbt#y4~RmnS{V>V zbG_6ROWfhD+6_vTm_l1UKz*~%Sqr&z+!A>MUkUuaka$Nmt!o9HGTBdd3ls=^2DYr0 zy-?a+Z5f?Wpttj0lQb^k{n?#G>~C2wc4dF}$)(%bOn!ll|D!9lM>A_6&_(wBWPULT zi6$R-Q&(m36vNAreW^UJ`Rny{GRQvqH}~zYvfYuqf=-4{^pXrT*eoOj5*!}{;@>>j zb!34?6%=@Yt}&YRb?A=_{v^+XX5q$Z_ophIRi!6e6V=^^+t_4tw{vX#_8$haovu!r z$q}EWi2mMpw?zpmh%r|NbIGhUq_fi+t*^Pgh6|s8*rM)_*aH9GS_}SJLZ|RF2Gf^A z;q3oqzv+``U{d5%t_+NBk@=jA2573+^@ioX3lMY8dnC;H(OawEa1Ul;z2mE#IVSAA z0LXDVm7uAV3dUS3Q=&ygI9+KlC`swQAz{eqN+unt0!>y93!sjtGvWszU9FCh19AewK%J*!R$D= zi41Km65RPbzidr24FgZ7q8v;+h_~#7&?uc?^8i>&VsD-R)w0)Y_ZS%6vn!M8?d4ws zOl!kNg0~bJlNpv(+)#$+M#z;JR$Z4deBLgx#K-5Uld(#;b)-O2b%*H>-}Z_=z#O|V zYcHAksF&iG$pT%2e1&J_K)^TD^J0+71=t+PY2fuug3O(dX!ENkX z#JbvAp31ny=0dxV^gauEq+xow%m!xWpY2~L)AN=kE~_o^oU5X+-MOJieICv?zjVQe z%XAw^N!oRsPggT0^iZd95?{`o*;4?YJ$Y%T)3e3M;*NNCd$pl`Jfi5gzZh&cQ+@Ny zYopX@vVx0H+ujQ6o+g_1aPLJYDz?;c-~g^-_Y z^?gg`pC9AE5$ox)Y`?fF5!`ljcpQDn+4X%AcL<3cxz<~l;((daXtTo5DJRu+$jxwz z#jWR|enp-~^=+-f8HK1;^nJKy8a)FUyD9aBO0$o1jZT@W$gi5M6E$qBmY}h;y$-W# zZ?bYuUzf{$+dH6EwqVop$+SGZu`wjFTx}Vg4*bQc#;7D{0zg7rd~t`DgW2Cy`(wzS z7YqpSf9@rkOJ6xQq_A>9swp$(yc&WNz0SZ==V5iI?@e z8q|H{b823_RonREYfP&R0+iN@Hv}?TIsx@Sko$iO(!Y09 zAIXzOwy_LvZ3P}pOu~|?7~0~lKlSkVy|b)PE%vDOCKC+p5?e26 zFzK|82y#eTK6N#(X|G{@(I`!_+2gp^C6qC>)}jX!Rwf-tBEGL|C0Z;gl#RnFN2H~B8lf8(Aaf#r*cMKL{Tt!^_XkY<*9+^R z7Ho_70BvvMCpb#u0Kp?Zxw4m0TL;-ViA(!yYwHZ(+J4?mZT!8WziRN9qkkq942`!N<+(WGz#lW>oF14s_0{G_E6tm5boVUu1GO595pR0bv&p6IS0y+k@ zBp-40ft5f2-0i)^NtmKP$Cq0`Z}yQK;bUFb4=+zTVKh_;AAVOj~qn6|9jbvSDx&G zkz$t<@I&3>z=A6{q8V%Jnl$P#l)rWXZFW2KgVm}K$QzTKJB`RTs$uErTVE9@RI z@fj7uz*@5i{KQTOehFA!@j0TY5A-Mj>f!>-$nf?C^P--59`8wndH?O3f&wCHeP71`jL1>KV)@5 z^a*GRd)`>L0-X*pi6gkU_FyJN)~13OSC1)F>fJV-kGGqGUnFG2*A@&$yT93f`>{v5 z*y>ZBoXqYw^5adF7g?ItXhLMM$dK00*hWnDG)wNm?`IRg7h|a3Uzw0eu%VdWT#6`) zx&i+8zx8LJAZgGfCsOd@{3xUo4m%7VaH`D4Ap0@Yp4vISZt$(OASP7@L{zXB)b#(r?N~*ECmBS7XY_MMHGB)Y|mE7MO}HO z=;e3DO-mjhD4%qy#Wp@Sh zf+J8VOtow_T52@K0op_D^$>i^R(;DYg_aW?qa#{YiU)8Zw!kYzam|k~P2LOo;fLmh z^hr^6@lAArd(}A+O6x8I2FzT3g}j`4`r)cytDcIL_M$IsMy&l8E$+|$xFlBkw(Z1_ zxdqn;R=w80$Qt&-pha|VL!m9Q3XEJ{6es+mxq?jZm@lpjHF%aR2Th(Z;#+j7>mZ2mon!0VfEXs@rt8Q4kE8x3 zJ+V2&LgMxq=rA4>sL#q}tT1*)ilv>dO8~JmXo~KzC$6Pt`_U=k}E#X+vCnC zm}H-cIJD)!Ir*-RTmi3{yWw4rnB{%dn%)V-}F`Ph`bDF z8@Y+~ON-N`bP_PyHe<|0Rh8{e3f2DE13#z@Q?2bR(Fw zgL^|u(e33wttOSO2-(QC1*1J~RljW8k>I0*Myq>5#8Bf(f#0*i&TgT``oW|zr`?=C zJTxVZDjyf(vUi6baaZjNy!2O2J=3%eXKK&A**80BR=E%?rvHU%#OAJmdE}HO|6%hy zWd;a?OLj23I!RfNKN2d^oMmtvUMtGHu*LlI`bogbNdoFWGAQpQSypc`qDWq)Q@XmV zjIB3P44sxTr@5Y2$2JjHmt#}u(Upf zckiH5{tvAWH*QaQp9?}(Nr%4#nCs-O@b!t#-7vx|A5B-$Ny;oQb45cz=o5`#LrO*m zk-31g4%!1O_wI^i?;GyRV;k+-S`J2$9e<`hS>}0oWBzWW<>{R+BM_-jw1~#KnT7nl zwEYg4Z|1`CfExEtpsq|i1U=!fB&5?p%Y3z_7&E9415*JglLT)x@}oU+)Zj_lGz8eT zD-QyIS#jA*cg@sY(lDu?Kj}HFEI7IFJ*BlG1x)VLbDFqei>Vj>mSZC#Aq;|Ry+5>x zFIsj%n+{(}PP=$cYE;)cl>iz9jN?Wpo;P)cvc&gNtM7IS=wI^0w{`ASWAHeV*Lc*# zWFxVcsjrYJ5~BQld0%xhR8S9NaRS&Gdk?_N!-EtZ&@i3bf_a?zuqA#GZs{@cYGO5kpLxKXDa* zHy90mzHnbc!`_Ye%@8_5%_!KEYbT|?9*H9!l-JZ}9rf5{$Wq*g>0{URuShI9@(?RM zK=^rg$6c}jvO9^w4p4QK)5_uDDGl~$p%#NC4@%M#blztElrSGm?aT+x9skP5Y1XkC z=92fWXe1C!UVNq(Z1&kU0!6^3c~MuGyH-=;*$dNNDxgvgUR<~y;lqJDgF$?VvGqHO z1H&$X)|*A2ctD^vuNTEwUs0Dj>^=GqUiM#v!;xfS6*|4aOe!0^?4}xYL-FQ3~biMcjN3-erYGa;~O_U z9FD3)Q8h{73oZwpc>pAjZrY{{3g;#@D{?_XpS&}^@BhA?J;$?n#-FmFpn`+iADR?( z;UtAj@DQ*#T=B8H9RdvX!|}zdkvqOaZs$k4Pj8g5{sWc!XY&)vN(4wbQ`TsigeK{u zDHr1d`cK+wuJ90@>M}eu%AvkpZ4uh$!k7<(CDK>Pgx98@reUDSdFV6DI&(J3fLw@) z%oEw4g1eeGSdtILlQ*2u37y_KJ0iE6guduM8WSO)F$v6o@bT{+`$~f+e*FgXah(gnr9JXk!4Do4 ztB(`Tg5oO%98@0vq70<5X|qVzq+hTXT*h zkwqsQd3xNx`}#&%>34PoH>ZI{qU+rtkUGnN^Mm6N9-dktHiR%v9 z<|l~HbTsw!)MKi7Q&77Gsz2PGb>7=my`hvismue=l@P6?EApX4&d(`k`GXW_(M z!6bi^1zS$&|27{?eXAieS}1fg4h-PwInh&6lJJ^PMYj8jPI#nW6$BZjr`MmoZZc(G z(Z}{#O8W5%E_^Hi#ar(l}0d<0*M7pl)#p*71A7G-YI#M;XJMFZ4!tttH4xul2zwg549J5$G zTgH!%B<~g4{@?x??$nup9>jY8k2p(g1EVMPKA3 zq+{g5eLtjN{wWTv;AgKZ$Mv9a15Swu+iNwC%aitoH_=C=#^tJS2Y${kh0J;+G^SK~ z4I$8cW7%d5vqnis5hR;Du3pQi}>?y_tyOkP874 z_E;8cS==Kh6I*_Wt!?qT?(1Z-rKyMZwnwiUXEtwJpxwtexc{9I^Or!Zfr`joxiF^R zZzwaTf;Wj;h;taX>LobScy<08eu;+=0 z(;LlkfBQ7;ltjY+doST^TwdL!hZh(WW_bQ$Wx9&LE=Fn9ueQ!o*xzt?a?fY4Gk2+L z{aZcbVv%ypxI`sTAR!+)kU$@Mt(TvW=A3GHnnQ(4*84q!o{qdTDXF2y#y(s%(a#04DPT%X#`w>i ziNEG!Q5M8}?gYd*%nsPlZ7z*z47*{?#>{Eui{#u1lII(c0T;v-EZ8>A%ZnK1as@d- zb6Jv=Y9*lxuC;H{S0!!39<2N7yhsqw&lEq-uJe=`9tNU-R};f^+Ur4~59tT7a2?1n z;O2vhQ8Ydyo5rb!V#WgV-%XWok!30=XFJx)V{))?@7TH zD$H@Hl(tB(zV=i)9{cdaY-xY0buiZ$Xa8P;Y`mYnM9U8Q`Yq^@bS~|=Q+@m-l2^`( zM$cn7vuB@YPh6dG+444F$y&R!tw%lTpvN2zml4!s4199D7`VU)y_rOZi&5M!yRep5 zj3HKC3ootiZ22%0?iK)vLiGnTNwCr-(pJ zuv3~>_f(n+$egyf?%183*ou$IA+HiK1*{dl-n}$Op`(wd!BZy4~4eoapRbmZsp)=ww7h&_2f1r4 zSMj%9599=GJZ#G@sN$KCy$Xou;?0R#bbM&{QV5Tc@2U`yf}xKH;h6<`5XW z@*x0u8{+V$Zm24z{jY0nR4_th#-Z`nf3jxBjL1@ zRlRydDM?7T0zFu-954aRTPH$W?Gp)&9pFy|@@UAz=P;AqTBSB(SC7FJURdN@sNEnr zqpUXr@oS)24evbG#us3hewaWZ;>jXG;E|j?Agd*=%!Vf1yu(BAG@CP?TXN}%x4w13D>W`9PCrNYg)|hfTJmR``*Ongb!5vvV zdEl#giSO3JlEhh%@0-jqXLFqWnb@nI5)gd!=~yN%njC`;X|kfeA|P1cONt6Bt`!gO zNP0OTw#>nT4^oomy<|SCo0YR!OVDQu&AshE3U=9#6Rpl(9=mAb5dC|)R2xx%Tbk>4 z`nGjo4n;u*qbs3JbheBn_)0a2^KvAO=fKhgIn3gP!Kfa%`n3;TFh(fT+m9xUF}6y$ zSgN+fEE*T@)hBZhl`AQ^TCU00-(I3_$&eHd*NJs3{Z+hWuJB2U-tF-1ybBedk)iF=-@z7JkhE_K$_q9rV?!MyU-WgkKPr^ zL-(Ioe1Spg$Ec|ipQ-S-qG&N!s}VU_57J%U@dU%YjgiOQL3e*jx4JM;x{X}N2q5Yl zKL?(Gw!BzeJumU*ya<=Ams*c~XS*#7VWw0K#;;{eKq ziN=Tb`HwZHIf69YIkKHK=O4PqL6rXg;jJX6QGrHhs=E89thsF(;|hSPygag85B4tm zXkGn^+H@c7yn0=$*c@UkXk6&Wg%x+?t#Ow==C&H=2~d^RT%Y3VwL-#^{1qUk7NF^( zko+Th8$O9yH7^pYL!EYcaZF*lPIcc6UWD1V?J~A>_BWE`!|Q?(ADp4o8Tx*IP!S~j z7Wg{(ycBtwoOK`EAUZ;}j5NgTa zXIbcF=y_?Iv@>uca&FPe@ifdrn*s9iDdEx)Txn`@gJ#Hl5wS=K25@qK{JQSVF8qcD z=${t8z~+FLwHfy3Q%BrSYcnaH>jUSHPf~sb{pPlw%)@PX&WpnhYb@DMs=pEg;TnS` zXJQPmk}EW!|8dlz#hcjWI4A9?+EzX4E+O-iYPEGFWldifFe$qGg@;#E+=}ae_UKm~ z0>L$Z<%x9zhyI@BXt;{I=GW5WZsmeq9kel8wi08>!#?JCW^5u;;t=Qb8b_Zr) zn}jflPR4e+fK1JPGjHJ3W$wA)miM!c40T??4+w|X$;Na)sZDljKwl&x zYH6CJdiV+vi$#|Le#wWkP9D~kj$R=8`W~#oo`Q-T&;WAFls}YnJUd)mC1stNp^U{% zhvx*r5dpDe^hB{UaCyR6Kzd*cO@3V$c!2ur4WI~50lpec-MfEv1*!h8Gbt~?Enhor zzfaYyraaaiwkvb)EoQlz$V>-gClE`scE9h*l5S8vzX};!@YD?Oc&W?)LfRJd2fXDB z%Tr=pR5v0nSL$L z#dA}SHQp*tHOiRrz&65hr?VtFu>5PF{JxwT$9FO8eCU6|W|RU(=@x-i?wCFkrR zQ@BAB(72(+pD_ikVwhQ45*cyt&4VP2 zO#>a#Ql7+t0!pJHBZ#SYzcPby@J$pyI1kpdRZ;{166sr+_#X4OM&NVaJB-3wXbFnD z9n=be!hf>#YLj%{$G_#q-No&f$cWdvC=7<vh^Z|@b-NJ*+HV-MJbOwSha-L0OB|?z6JHEU!zr9c zJ;qReaF)yDW@@~D&fe|te5Ee(Wo;D=NcUUJsnIbuxk!J>bmQ;tGDbsvEC*mLJmnSDRyQvnmsMbP&74jOKUDu=0V^?VCKpqBIt7GTGp%)rU0I&aj#O^r_!#-KG4%>Sa0$*!Z2z*7ed;q5k;Cpc?qQD_ zM*`;fF8$##fxv(FUTABgH+~n0mclUVaeLJeu>flQrut9NZzQ%eCq)oj%&x(x8KtEep!DEmT@+&J%CKJyO>F0K3KXw zKi$L~uUEDV_?Nz71}adNDIN-*0!%Edt+Sj#{XdpMN(u@Q?tK;5t_Je=lQBct>zFFjm;(}pHeI&sWgu%O`ZqAira{sQgreYJobglnsv zPoVU9XGd=8Zpkg^mAZqP92gn;)NY?#zzfK(=E#hm+@lpl)H;+sC(7S+Yu-Mi2_D*N zb`fj0Jg@g^Un|c}*Lb*Fl?PI)i8+KF)_k1vo*?9;TG?+GD|XRWJ+hZoS<6DI#)vR- z5QQgH{w)=Wl0H!~3QQ@0yNVWnyve$=<#^QPPri`PxdToBCyFvu0|H!6otbVoAO791?ejJphy;>me1Lw_a z-ww{fWqY=o_*y(XgNnSDjfLSI)DAN6C0dTGv_ra-aswJEdhV(?sca6~+gnGWHN^dmi zu-2^40xsa%=()Dt zk#(v>TQ%Rmyrh_?v~zVdy)`%uWUpZhmJ23O9grqu#F_&r@phm=CBC+bpnx7#Dv z*4pU?K=92)F20J#S7`iZS*W`q15nh8wSEf3zfD3MNbm@HkIQsnDDVr-=>Bhz>RI89|fLqP%C+CJ{CPR*xn`-uP&yt%-$%Mj|BU!`9%wbJ;7@KVh< zBWre?L5K9M@S+IlXgzWU2^>Avze$$QIdTKB_9E~SUcOh0=miQq7PW0Dfqx4z;~2Ds zk-^3L52Kt^g)Iy!_VNQm*Vf1EuCAu#}t=OQkN6H@|aX5cxVMz2B&t;*YR-Mxnw%`=r_plEKuyKO3gOCDUPkL^@7L8j28dmIqF zDI|p-$!Y2u?_PQn{PDDiXxik`I28;4sLDMpaV$<_BI7EP3(l0m`)byahbIW{D&@^? z634SgH)@&E8Q?If+H)DsD_mmPtl1&!{gbwVD&FBR^beed+~3ctI)%!8S4(%P&lml{ z#hLyAOrpJNC)5%^Tez@RA9b>aq#9($z-_PuJZMZnZSyC^_Frp6Xmv_b__#j#&Y8rA zN|;z~Wo%8Qs>uG%DbHsu3CPmy)a6F6)2XnY>rGV2XdAWRr0*BY8 zaaBL?moCZP>Kv2C8h`>}*!3K+f4^2}L(i=^1JR@@6xe+51EMT0=w8*`u=8WNLBTMvBJfA)p1{%CvS*z%_ID2C;pqh?FKpS?IU{eS@G5HhOM4nB9l>j}o13Y4Z4ur zA-YP%IK+&iJ0tEF7@)&6kUA$aN)yXtVZhk?0=WH91)#A2s6uWsd!{N)jdv=(74Way zr(KIAitc%2=a4Q7MWs`&j=DAHs^Gc-XK2FE+mXbKq}@YCX+?8c6zF(3Ks{6GBuIIC z8_?mJ0G_Cf^5G2!7wY5-iI{z`pQNmB(rN$HrZLnn5e7 zeT&)Lbla{UNIO>oA)=ddWu#f14INih4|g`*8kwx#CcJuFQ}ZK5(PX3Vjf3X?3wGzy zD441o^B4bF>2@i;KyNpYqHQIzwyIYtWHZlrVsG%Tt@2~JJ&=s_l1RRYNE1k`6^2(l zMSnsBfTsS>nY7LZ%OYuZ%w_IUP0*BixTixqZ?^DQj!V&a;*;dOxo8O)0SnT(@K#jz zGBI{kA)xlwa)wf4Vb%?uRL*ki>eS5d?+Ye^HS?f7FtrR(>)bxCAl;)u7%IHFH`}Xz zrzHSOX$sEJh~{3!cu}=$Q0XZ)rN_(Y5)49@TlHhWc?dmi1`%l2&j)m7rTUj$Pdxdm z#Q)mqKTanAmOR&uSJ#(J-TEKxj2i^wq6D~X7IUXLIIA1Pd^7W_lv<6D% zg~Uh-hB@@1iCVS;$Nr$G`>7r$l@R*Hyb`^|GIo2ShIn}xIgX|==;031>wA7B0<=7j zW>1USY2w0#GjT%k$vH%)z9g%ACJ-u(H=qNO6$U|^Wzucge&d%cE!j78q!U#rbwn6< z_AJTb+n-|MJdD+h`_nx>^xSH@gyD^m9St~D!6bCqqpz5uqFr1g)DLPmz%8AK} zj$@rL*AzILA#mR}*VXYjc&JE^1OC2bWE=+Iw3nK-=m`l4-KZdmF`zdq-!ie){!*B> zNzgBgW3;N!w!RZ!|msUn37S?gSzgX;Nap?aC76c8~4A?l}WLgZ~e@BG7E4E2(Q7_N?Ce^9V+hA z*(qAv(C{XE@l*2*i_l^BbuZBorA~inqd>v6;T*UBakQ*(e#p2vM4kWHndDabtD2%3 zd&mUTeb{C9m{U~n6@x981oJhwE`2?>+l2emMz7`KoQp`RC-QnF!h^*um0v{C^V}pT zmmU{=2G7mx{yB>IZ zp3Puq&=HEQ)^%CS+0%7!*PWC?>i?nOL#>Mt>8-np!9iCCEjEXENW}Y4k@QcxR+bUW z3bfkyaLdAd6VwhEnW!l%;SYwQGd+X5i%;*Nx7Jz7>gJv6KTXo* zmlW<;x%pOgO!xNZ6U0KZy8Pq9zOOYiVU0D@P~=Rxa5ttPsjJs z-vI*-mR}-*Gm@Aotd0}|E)J7ER>esv_=eqa;X0Du&t7bkIQ;d|dD#3;#f57b9hsX@ zO7UwSZkfqoavMNtJX29oIlsCx03h3Vb`w-9Sfkp8EwGZtvl$^La#@E-M!(Se`HgOU zEFTM`v)C+kKlAB=G`ia7jhi{_!AJmHL$%H>yY2D?{H^tzXujR|SVa~+L2Pm|YU8A` z*!+?lFV+2|2y^uvPV6bZ-}myP;rua+&Wx1Fa3l1RJ;47RbFE8 zS7q~ba}_#kiW^fMDkLv(=jbOophS4xjIBso{=!OTuQ(|Lp4>xf?$*FVeXgTm2)}V1 zhA5N33Js>W(r@3r69HHUe*OaOH|79E!EL*UNK8x&zo~!*rrQ%n5)c$50$4B@SXe%? zLN|(g@xVU)_~POs#w&)4p-evCH#?i!?Rfn&nb-L}IXSt>8tb$+Z6Wwt5i_)M@X!YT z8t+v`X^AxY;rGB>q0Sp#0)6dRj7)~K1bM%%S@GvCGxr@B!O%iEY9AVdwO;LvGYAXj z)cz#OrU$Mj!0zn#vk$d)b!AWWSWK4PL)br^w%&@(x`%*=hgYOtg^W;UyCiN}r9R6k zj9x(eS&2R-CRHVq&dcjF11|h11PCVv8anJRjRIC>*Q*#%oXHm;Oucm^`dPj7knuj0 zwI0S+iCJ+GM*i~A$k5&!QVD~64D(mPLXuIwEw`5_2rRaXoov(oPYLex z@$penQ!jLf5}ATaSUh+H@YnkN@vQ69HOv;4mbNQDar)DQ$Y3xSxYrID_5E3F|Hh-X-%~{y9p3iCM zdNYP)ZM~;X0x?CNJU(_n_~hgB05ScVFPDUb~_sLns>r}HiwgY7j^NsG@p-oKeZTJT_H^?rE5Rje?5D~P?FjywR6>`Nmoi7 z=}}5n#{!j1Hv8F~b6y=$R1{>A@~gie5n*y_N-!!OEGz-*!}g^6_Y;Fd;o;y2qa&&bjLpWAzTy(=4{v1s^X0{}r?k$AB4bArs+DQ@wCu?&oNzaPz?{8` zzH7Dnc=|R;Z7}(0_Jfqfh1^M&&Nbuqj+sZ4mL3sw#`7BX=HLhVj_cr%H}pGI zgtHT7P85)mJM#(Qph`p}q@`$C!M5eTXvZ2HsVHCPIZr$UIKEg_RTZE8y+CQ>A+qsM z>N5mVI^emR@1| z$}VEX-k(pV%GBpho6p}_1daU6JG1=Bg_;Ye1D^4@Q_pZiR}D_fs1a?Vn+t{Hhs9zU zpM#%%p6Ax@A8T(2`ev4~=|zDj#<*hdot+&UDlzx>tL9~993)iY*M^2v2;TuAWqmX^ z+$s%lVhP{`da(K|?CpgENIhw6Z0uyUC6Nq3ncLgjd+fI%g`fHskvgu&H`_$@qyY{ld>?;jhXI4XCd9#)SyXOP>3cqq#) z;ulYjXz8dVqe4hTEtC12WlFgjhk}`#0{|d+y-KUj?%`5*Xh#a4^YPTq_V)hKkdVRk z`N5;`@el7}hx1JnNDOGz;wAvz2QT62Ur+tt`%Mnt>lvXl_CtzQ;SYlG*9s#A>Bk;; zOdWH@4oWBnqwmygZ#9rk>MJi@lHyBk&o@nPAUVRBJ}F0Dpe z+hZ#~B5XfVn0tS!Wov8OR-{%*KbzZlzXnL%z^mU1U>6vKgvem?3$U*GAXnVR-oCKZ zCJ_8vuPFDU{@2<^2wB9*Ph-$gzn{nITP`96+^tZ}&{+CRP4xB3#mato?9x}tEbe-x z*GaZz!$_%CW7!dka!z?m7+X!?o3Oj<(kyNLvcZG+ppHP545w30mF>w3zWdXv-%|Z* zmkB2K_idIQDFumV3d_r5?v2LL{qs$#`TC8_QjR?8Y{;MD3W*jQO^_`(gRkg;*JsP= z&*C8^b{F~>*G{Fc!MfA`5C{3kW#yD0^aqym8DV$|>q5M@7g}S{wvFYYNLV|e+M9Z> zf_Ak4BHBTb_l|AgsxE-Wtk%0f4p4J zID{Vd)!5$s#?JF)X>tl(WaSQ@1qk0lP!<-x9{awtyAm)o&znePadN-q3M6NCLm8#{61pd_sFns$Vf8nCj zTMv4{6`+r$)gYhXyM2@yQF})MHfEIKs{EJr+lRIYt$bQPOZGPPjQlyYx^;WL6YT$} zV6eX~Y`d~yqPvvyeW%FqQWyTf1(OObM)vO%CIX#Kq8YHWfF_+>8v0$6pXa#T71u!z2FpZq8iuLaxXcc5|Q(VWSdR^NJ_2)0yPtj;hAqnBxap4Q2 z`&jj-8fy9YPA-hb)!Uy}1jIY~W-cQe!@7%DwS=lXyW=X+f6Xj*1^;@PiG_=++=mga z+^0BqdV2cItH4^J^FN+z)uYUT_r4CNM)7pa>s5F`0w5Jy=dqL3iQDb{;zu{KcfOrp zEIhW)xQ&&|h-H*6)V!9SHaB}Vzi)`1!X&$V*6vcn`GFSOs5)BjRnC_Guk}|SG{yZl zzx>Ao$GRrL5cHPk7&qb+2RjHUnkO&=>t#c+zvmk3iPJ9lPy}DBowd%6;OZ^iKC@51 zKGUW&v)O|Q)YjK;8q+Wpzb+JxYbuP0PkU%D9C*Jtug3F799i?O0EToi$>x&LE4R>% z%LO*xXV`JW>Gk^mT-nWkT*&3m^Vs5ybbNh&)owu>lMjD&aUSYLM-sD>SuF{2oilbl z%y^XMhjbqS^QdCJ+A>i1((zS|hzgA?aZp2!IUhb5FbI~kSCD4z%eFLsKu(tL`AxWU zq9A=82rtAb*q-|{87%N#u)T6&=_nORe>kE->1BX`EU*96tvM>e|Jja}Hg30DO;7CS zq4x21aY$-0UF-Gt*>&%I4PPSLZX>f~)d?(kNkR~>h9&DVz#r<41pCTqM2#J^s9~!V zgz^?PiZe0WED^mM{miapP5rDLEa>A?Dw!CO4$M!iN~}KQ7mz+trbkrG8^d26e^iRJ z*AWi!ahx8co)bQ6Dm+lm?J3Xu^_$*A-~}6ESSu#{myJIVMxPhlWmmo0^QRS5%@NOk z|3-T<`t2kSn!2=H%8)_2e22QF_5d@xD&2UQa*~p{H;U2$rA64P@_G8*|10jTqq1DT zcF`B4LqI@EQWOM~kd#JRkdQ`NLXa@%loF8;6tHNJE~UFcL}}?(K)O5je9-m%zV+?B z&l%^h<5**@FmiH+B^L@CGdN= zY*y0_H$}nvjP6gHtrxjnxjFfbD-TQG>i6%7gvywedzGGjaHh%8IOEzM%m-M5b4GUT zP5k_ow$f*>k2)kS#rE3tTM0Kj{AthSyamk14{a|yi&WFGG6TVAmz#N`hPF>T+(Mck z=eS8Fs!}d`5NiIn$L9Wz$7W`H5Siqg7F<3$W-L_rnxIM+ZkXx+RbIT8G@7=*wqU0R zOFZulDZaTHj|Lm3-%Oer#wQcYgkvwYDUlr>5uEdKryEL=@{3hze=f5h zkw`4{QKJ1hpH9ssGCWL+qUGnUU+~uo?FFiASxD^@H{zmn&N~sv=ygrZer)#pBPkIi zgZqU3!*{e3NCM}J*dKXG9CnDljB%;@K1=-AG-CgN!RoWUWCVrZ=Ea)}sX>@1?OXbX zHymzk6L~@b$=UL4bTvPj#Ag#V&V1ilT6({hWla7x?)UCl>$A9sx>NeL$h|DIHmFd< zX*oJ0>TojBQM6o<;zIt}PBMQj;NBqF(4u~m?UqI(dM#!AcF>#68^?XQ;$$wXhYP<7 zE9M?g*c=L55q)}rH@|e)%T@4)$&Ew<9paxd7}yp+tLDLVGb^E8O7f>tqy2kATSENm z?xw8n9~5UB!lZ_$1#tMQi9gTR1QluOPh|N#7rZ`m(pguh+@Bl8oL%jPN9*hzHa^X? z08d~2OY}yP4D%mN@^A4-|H7$qVst(;<-Hs@vRjkY*U`|F)zd1$n&XMWR}mx-#!FpF zzG8~TP+LSL)p9~Z??{7teX?$y%lT6e*L>@a%l6Ma`R^UM{gmk@6TMpCs;FX5T@^!C zKqyU*>DP}z|J`1P?r{?Y1YEtFw%l|?%AOc%L=d1V^7fVDF3tU#9jV*zHLbcWodQ~7 zlm=41U8}Yo@S0PTpP?&1gn#AJyA|&04rJ@g3-P9xrWb8zl=L&BT(YJals505N|(`2 zlH)M{C|=XbT7=GT@v|L;b3;}!BcO^ZwwAgxH}ZK(T-HpHxv%9b5X8g$H;cxgO}>v! z(aI$MR#7t-)5A+R+J=FOmbX7;gvvPe+z69ykr%AZ$ebQ(n0aXG(p zDY&(@-M=c<;Gq}WptfA1kCgcUjX+VPztMD_@!(cZYxi77p-5*2Rdf+e$j9hyEYY+p zR!aThB_+;%!cl&h+3ituPiar%A_*6l(uaO*Nayl{;QyhA`-xw^Nvx0Qs@^{f-juwk z`Doz8Fa04V3MW%T(4F&X+aeurK(73AcY3|hJE@-9jv@U6b`HyZ-K(5y^~Yv4^TJ)k*sm@tPz0cxQXip1unCWJZ>K=fl1oIL;b z>&=I~dG0OM5?!&*3^+uWA9n|9$*Z`L1ngb4xmy{Xo*tw*te-S(W5$?1@6799xk=tG zTtfQXRo87vG}bdecbx3W!_91{dkN@Q>D$dcW%%FX^fTr$&HgYe^`25lf9;Gy`NBN3 zxU2;7tBkB03?H|eQ))Izr3(PCxUf0 zZ)b`eby;A=zm6^^f3@B#`vqQi5q4T*z4wZBW!HV;u>~H2Xg0@7RjOv4F3r=YxQ`lT zW9023_82qC&DXFZq1}%;!?jL$CTLu$OZ_e9 zV6`)cCyV{~R`!wr=F?Hi{ErI%oS@7eiFF-k_#jhyAcaqS$5 zdsb=`@4wr5Jylbo%mE+sH-BsEE~Vmoxsuz94ICQQ9wTOCQq48Kao_h#q`c|L{heTt zr27*}!B~~)2J~nI5Vtl42^BO2nE$xSYU?>EB6cBQO0dfFb%5~8RU3+*BWE+T;`Ks< z8f&KpeMYee{CmS3`Y<<^$f85~{iso6FxFWyD86PB0zY5X;QiR$aO*hN*B zJ{)=`7H&W7k)Nh0P?W4?r=`2u*eJl&os~0IEXqw{RbnG_Oyi2Br*P0}mMjX*}+(s#R>0KXSYZ-(_}e7q^)<|+-?AsgoculkpT}z z9ok$f8I{y!#Som7ZJLDrKUMhROe51#t19Agz%v|mCckVK-5j%dma7~=IdI`h!HdbC z6{It5qvf`3Nus4Y`p#sIyI9n-iEf^0A8K?(_N^^(4|0{aHY}IX4ie=eyza3!p4vkk za0K&svvNxr7O~s|IhPEH2E&z0uFVgflv9M}x>wf@$I`XbpY=2T$XlhJhCq3PSuMu3 zFP6Icl`h<3hpRV7cf!KLaPaZ3n@aCXt4YhsVl6H$C2IUQp*GRD{;y!NT}AYZiVral zW^g5?e6(`n(i)BNr0#NV*`#yC)~qtl4~zU2H~bj|dI@5>_96EBeXPRs)RpW}FkXS+B9RCA9z|iQA`K>)OPMVy z+KC2Nzo?AlVs>@&lcV14ExtwPR5S+%2ZRttN#tCMb5*tzZ&yq`#}=jN^iYla-;lB; zpNx&1>_mTFGm-U}BRzYuN;6|ZEML@gCtzYML;i_}Ek|}-RZ!z7r$p<4jJ>vGt6!M| z#>|);L-2NKi4DdB;dWo!mIz}1Pd&eS1*7F^4O8ngeV)5~GTX%$RPa#pLG_zUJTlp`8;}q7yx5&(YGH%shWrdlwd|Q?} zTf%-GpWhP8?0lM4vj9q(uq@H+`A@i3wa9`hzTou zH}W2qQBgW?Vk_YvVk+?6rHJ|Y?61DH_Z0?__bQeWanL=ibYEvHq$WWbk0!D7hI8jzabj(X*^CFbmmn#D$ zm#=OW+g5qvE;(Im3GeUlQ&D?&?N6Fn`f|cYnZ<_W{8U_DpZbyLR{0N453Vej{4k-B z-g2=j`eDAWcE!vmJ3irCI9PSYOj*fS2KQF`E#-5T3>-Xu-rB7mClh=lszV`=!$s5) zI~Hj2tbfYFBADc2%FsWSo5@*XU$iKk$r z^-(1t2}l0mdvPiKcWo5x>`)xMsI-72Q7aHoxR%4=L_ zXG!P^Cf}5J)cDud`uC;;laAO`dD?mysX*9WW5T&$!p9-TBjk@))x}q9Tg6SX7L(0=pwHCaNk|RE4AdJ>=*6 ztMiCY)2A7ib^gR>Z{N(HFZdN&ub6ax=QsodRZ3)SwERiP^fm{NiZTXohU(CM(wCqO zqzXWG7&9`Zb67i(II*6}YMDc#`@BG--G#8;>*A6et=A9n^ZanX-I$tB5kMkXwkiQ}HJ2;!&s7&!bq4lQS{n~S(5BrEl^ zWw)$&*zoXXOA<(iUkhmw<0W*{Nt*OtU_PD-E>$LtIREL4UZ_ai+oJ2AYfC&YPxsEb zu6}mzD|!)mKK@y}blNEULte(VAQE-We_k>j8Z1)fOjeGlo_}~bwe%~rTFWxy!mS-G z2l@kCkGLAF3duyDBatA}L8|AN=KQZ^++TYCQeb}IaP#oT?^XiwB>m`?H~SSuwW+vy zQ+~M(3Fql5u}eOwb1$yywF?ztX6y+;!kexBpBvOn3+fB4x0sQ9e@6%2&i03Ek=+;} z-K*-SvmdMmHup&N76yrBVm@)R^)UQA3jToK5V4vpaL%dHXOTwI(R7_TWbOt+_o56@6CL7vMx3L+VsyLUIT?xz9y!+Rq`VF34UKSL!psU7x zgFzEjmMbbGj;#_u;{Q<2TSCd{UDwn_PrT>e>Mx5R^_7yAb_NwlM1NM2n3#^vZX`jm z%ZeAWxW4b-(`c|o6*MG1`&YpNw|MiVe>u8_{N!>e4SnXRvA3-E%q?VqCq1c`GP7>QHQV|h*8(??hua$7FE5fR@ zcXxNzD09pFi_`xiaLl~!F^Ho{wUV)}n=<*w)AAr z-HihoSpC;ooFbVqg9}F!9O2?n{BJbCMI!Rh%;@joNfUNep_N)PucCrC@x_x_mjzfK zqT$KxkqRs5@kukHX1=A>SGPQ2y=qIR;DK_eVW7ajdDgh$8*!CWQ9@(=*)wZSX?0xM z)Z3Po;4m*dwZ(v?9w-z5IIc&`L{_}iFb=66wyo3|-TR-hSVZ`GoJ~}_DC`r&p%`Ym zcY#)K!P1a0gMsh-{n`HHx#hFz{=wMRg?hK-EzX$qS>L$ert~y{KhMGF=8b3vTF$t^ zu=lzdZcAR17$8p8lkTQ5t4?4PlEjR;_G;y&5P?$3{pGt1$#O9e8X%R zy94F1z{D;!uj$~{eN09o#cwODK_8x0&=`=E>?x!ejo|07{;=`5DWX5U-q@d?Kh3~O zPSlpx8sbjru&Q6_VS&wq$L>`eL-67+8+2yNf#f})A^(?GIxW5?yLi4yO`{iS_C6aw zYhS-yU@TwEDMcpQw#dSIJ&|MJX=OgH{O%XpwP6cJ_Vs&JIovj>JPnqjElfyZfb)9y zaPiELZsB+ldc{iXEO$*{$Uk4BRUXu5G49L6iRBx57~KC%_h7$a<2m2z2U6?>L%GBv zkMl`$8W!TIJeX3;viIU?{Qc?QGn&kb{FHw7m}8|nSurVix0=&x8AC>>vYlZJ(mY5`&ETJvvf@yOI?K zUkjFpgsf8csR->B{~Ad?bVVC_B+9o9A6NPa=a!&RpLihcBL10lxns=Fb(oMisv)s2 zI<`|GwG!=$qfqzRBAG=ZgO{5J=g7vw1#~!|5^UFO7k_}unEJxEoF_|E0edc!?M?*8 zo`gv}k%UfSY|VcRWO{_E-a+s1jlA%8-6QA1JT2H~3B~>EXL#;IjZrDVJM8$uv0+|*muvU-7MM!T=P_wEX5WSP4@=sUm5W6bnDWKaCb6NmmHn@hM^d2v!L zqw&)_rL8xra^C^L^`ig8mf`PZtNB^}>cOQWt?}>J=*nMmrjFctOf1vSb8scy5n zLWC%Py_W5E!S{zLwRBfvyO-iGQC1+}ei$8* zR8$KsFUN(C46yf!g+p16bH!Pi0snrk+MIx~V&xL4F1y)BhmWpfL^AhnU5ZjuuME~L zVXzpr=91y~d(YOdF(iFF(;`;i6;s7se`VbDkX?F9(5gtwd|UI%3hKAf#c3VO#^cVj z&kraP8GdUOeV?A42(DG*G*gaeF-|M)EJ{27)3iDMJvY!;rLj@g`Td&ZE}BF8Quh~z z|J%#V;aXqkUGv5p>)EOIbmM8)%kz_^BmmTBVH8D-d&Qheov2u9Fb2?cfG3l6O+ilLq<6inNPmONAdaq_OZunz+fbSl^ zlZY7pa&&R|_FZL?F&rVEwb>G;MK7tGscR7W>K#bjU+VeK3rUl!4hz;huClMb^*sNb zbXmf|2tBm;F{VxXF{bjS2ea+Nnz?S-6)Hu-&hBn-kqVTX<@`6Y9`&_lhJv!MwA^Si2LnkN8NEUVVif2Gq->p}0-6zW}lWcNY#dlaF>wj^uR74l{FU^>--a6jdk z!F;2C1 zcD$YI3imQ-P0TD`#FN$+95z$^4BjuHC30SCQqQ=qQD@>{w@;#x$^2hj>ip8dtr2pL z=li6nRmt})T%#4Qj-PLkCJ?;GlJO$or4~qOti)cZt}^cHYT&Y$y7d1DuOQ{}5Df53 z*ZVB%c87S0ti--AjV7xD-fgRvsrcUPn0?qkLVZF}Nb`&|X>AF@&E?vKM8(R?bo)m{gsiVsY=o zj3^-}vJ?~)M4@`E`Fw_0Dymtd6w@`>2AgD>{!IrV6+0mkslJcnsU+g5h&MjHJYR|H zT2dl$CGM$IC%p;Z9Rp1DT&C#>7A`rW2b*twUmcsRcCbH{ztZ}Yg=ekGiKaJ`zzWYG z;@u|QNcQ{avR}>(TMS6u&Tt#uIiKATf(NDKzTU+PX(jQ-qhuLtD-B~NBpMb9t#}vI zEU?UkCOH~U=>h5RpziMT-@~gg;&q=oxbn~`u5=_s95O2Gr@oa+3{WH?;I?Dj#|*Cx zs3#pTjSh<)2%HHf7>QUUaoxEZL{&UcdVs={30)rWP$m&8^SFRoy&c2olD1)ts{Qn} zMNQRO93}tXI7pg3&Vs)bV^AwjuhTUL+HzvC$G(%i%ls4T*MfPM+7{D@gN+04xMW+2 zzGLH2P2p=<_O08k%XJCWjrsa}uE-rJ*u+9**LczWCo4a>$6qyRZXOOVo*j<7zg)!t5N;$TSM{n^#Y<39N|cEjq~NwtB-4S`Krqg$^Y|Cf=Lw`lw@ zFjddJaQ=01wF5Od&a>s7Nj^tX5z9+;Nj*+M^SGVC{N`arJQXkMet1t9-M42jGh_KM zzRt9M&VF9jWX0Ta>igPP)TSIf*5*Htm2D%-Bf4sHF}>HSdm7h8Wt?!waz%2~T6F!> zfn*jRXHQJd9_{YWyr#j1mEW=^Ecb3SaA^CtJ z);HF58LU@j$1s`MFj;x_8_Gvz1yw?1DvzX6$aWdi(yx{~xm-ZKbmYeRE@RD{fwv|* z7QnMmAFb6VpU?d_J;oII_8nQlLb5M$Y<$?L-EWjn1xuck`2yaFLVV)jhZhds{FFY& z<#`n&-6Ze{`rLTV5*4BId8ohGgh@B^HiLJ~vgW6@3kGV-pTS$FdkqhQutVZ%hOH*cXKONEMTF~dmhi(m?#_k}2 z`Fh{{ER8`(%89JQXNNGsGSLAU=a!uR=o(US|3{@i!NftJw6|if-2_^pZg9M$os}a& ze1Cp%C9CGz;)$%uFT+ao{}R@`N~Z08c6Z0*Jjh*QqKJFjc#`vp!mFdR5A;4=dvF)( z&YrEn4idb74u}Vrh@ybD;TTQj9u$+@5)r{WSOrEWQcXwYUQ$Eqthv#Do~|UTK=R&p z8Q1;_VTJ#aOIsh6kPK#do`}`NKn)>^fpL{>8A}$0x`16M8JE&E?40=?-wAhk@@gt$ z%gCJ{P3)-j%&`C@BM}tzQ_5`e>3tXKaryCNp>E=$G>W*!JMuoUcJ$YC&?_`zC!%!^ zJtH%TJ(;{E)Ly3yw~)Ra2(z`yZIvjz7k<*vBWN~>_AA*-lCPHJ4=cq)`Uy&V68CCf zx!`q0ioRp#$)_Ejc&;=m7U1h2|8Atu^Tg~`1?xGsYliWScW}PR1uWFJVaoj}846Nr zg=!!ZEp~5|55Fbjqp-7b8;ip@1wwcWiQW>s<5z2km`LtR3ZS9HF+y5YPTp54yeEC} zA-RFk+)~1%2c7oW@zeAZ+GLGZ_mEeAqkst90@Vz9kLgZ4t>oMD7R29$`KRh0XIs~9 zuibWQ2?o3^%8#zTZ9Awkph4#v(@!V?wTwy0$!e;q#*3<_hm?+%X%##0>}~yxJWUfc z{czaL=ckpUmk65(OI_BI3K|#@LM{m_6L=&>G7#DUw~Gqrpgc1a*27T>lbzCa))+7f zk46!>@f?9HtsE(+kUM`>@7_P(5y6@lWXsybUaRn7z6seszccPl58LV|Kj)oF;HEsp zu$KbZeX!Ij(FqfLl$Dj6pu(Gkj_#~N{Nxi zFN1@D0yFlj#%89bT(0Z)VEHHb3U_xi=rVvp`8-2+*s;sQ!^0LTlcUw}^(#JVwM&kk zk&llY_Q>b_zIFQIOgwKQnTmgo6F!A*4@pT$q#fb{EiL!GR^kidUKcVlGNS12XlVGu z%Rr3|x}BZf8<^V6!NHMl*+F-=!imtVIi&8_*O>V= zr@{Pd^kl_K^-Z`qSUwm5fnhaLtj-#M_wDc)6xDG+_g`5IFYZP-{i~;7E0&SJ={P-nn0+nH2D&FNvFgvcKHn~ znIyHZ-m@q&ZTtQ`FeZiqIjc*zqEV>zjSV!^$>FRx(&u4N;nX+t>$G-Z0KZB87iEu(tab&G~tsoV(5b-_eI^(%)_HTd{p`?B7?%gOc6K?ysK zUu;cvR0!64_4ZKQ{|y}@Wj~rWychHP)ZB#V{s>rPjO?A-p}|2k6v!fjf_m8jFsutp zrxkm z6&ORIM7DbGsAf=q8`1jXIWFI1)ZCOvZ*OX9GWqt7uY9FHTNin1dz>f@)YPMV46EEs zppv-U6N&^5kB*>>0*i%(MP#j!G{3MAxsZnk+qQx?ZcMHJ`da=c#~vgvrc~@B>b!gb zbotJ2G3fe8GK|1St*xyg4O8FaM6>$Gl4S57jFywbx>sJ8>_5MYhVy0p+UAy)Y1rGB z{Un}F)XlgzUCn&xl0yC4>z2g-sT~ISfnxu^wZqV^6b4^++7QW<)SRlO{3i`2E&cH? zVMs#q7ULgJdGFjmE;m9!l}Z>D8K0fafi$Y<>grnk$fhcHTEYvEVtjv0{W&Ftd8G8= z8HmuVx>In=9T%{$v7b@zkkZqKgVt%5RzcSnCAXM21{0H$YQtPKsh|iKMBNJ8j`WHj=q{P}-i{XwEiEm@D}kS(wH+$V za0&@kR#GDP9xqM=h0<}N?nz)jH0elbXkM^u=SoB}7lQs>)hkTDLlC%}$B0WrBquG6 z!K_dpL~^k+Md20RP82h4iQTBwlPA19*RN0h{{1``dV)trDw}5s2?=F1G&BN+j}8wz zi){L-cZOdEB?WEFc1(Yd6-N2M{!Oi2*Lg6i^0#m2=I4od?kDJew%`ks%<5y}DH9(sHb^Q69Vn-zh%taO9 z=9nBRQZFak;`@gysUJW7NUs6A74ddW2ET23n1Cz#!aU6^t-j#}Zp{+=@#vY3 zcur_G`(34daWt?6u@;@+@KoVw-V;sAGs>&A@Rk&dpeLOkr(dbrE=TAas1{!K} zaga1FE)E9|PfA0B46-?4@Vh60*vc;Caf9Wi0$Vh(ynGf`EQ9z>AhHS-`tYBJd+X-V zG}z~Ib^1q+ezN<{viZ<^0eicIR+<=)#`^yL5+!$KIU{KGLVV;1G!gRi^Sdk-w7iUu z4;McJYiFJ>aB>^ zuQ9+KAxl1EIE`|joWNtWcHMs;9~}rj`iX;p4QM;0Zc5b3;&xsC`KY9C#!giCx)Y}I zy2H`Fqe7~>0$8M>O4rZ1q5=Zi)L=d^B&hixyy@DvS%lZR91s{7eSf^{aaxLc1~aM~ z>7iUYR+KfK{r29nm5U}PvgTv1e#v)+BQP8C&LvX6)e>J&a4I@EIh{k@hu6gt(l&#& zqh)L->V|QVBm=>+Y3bQ;CGuI?dC|FsRcs28%rHQysEuU6ap8voirLcA@(K@+dOsa4 z?bW^AU3pYWhuA^(5I1FcP2jzq<g+5d=bU@ z^NRMBYk?RN>a1kyN=iyaW~@|CM~iHSE;^arc+BD z&4>@HZn7$_uE0up^I}f@VkPIV7yG__5PEFw_>~iXpgij~n*KW4A%LQ*pO;|wd=yIF z%gd`zEG_ZCrZtnzm^~TRPjhl|;`$VNpB!7$x1blhg{ajYAMK2vLwy+<(ku5q@p`)i zYpJ7A^6}osuCX2F^YiMp!Aa>AG8G?74*84GqdyZv5kQCd35L%jd(qYPbtwr66d3y7 zJ!zrc^qTG8z7a|+*%4h~V?(@SK5QJvz`|m>e!Zu*i|-mV_QEPJFUBG(;%}XR8+dZrTMn{=rxrRRcrhD$R(D%IL$3A zroeU%RJjWPVr7qg6PW3=vuv<9UPBM9zBgT5TynhZUweF{;k8mN3s-)9Xvj7gZVg;U zLr_?lEWGFqr$wDCv0S5?FhB?s6Lo&2o(IKGFTN%cJ97(_@P02Z3IC&6OPHYJyhiGE zj31WX8r7hTivtB`@B+{Qwq>rZA!vN4$i{IztIt~GVDU4wV4J62S5e$fV@X~ zIxCo3k?!MkQvhmEeB~Dtqn%@66whZ9J%-d{xomtBSOar^lUQ(B{SIu~?K`Ljf3UmR zqrx6bGhx!Vr=;yBo*BDReQ*|KeI(3$@nUj2!LF#=W-W+dD0u5$Au*xJ6ATQLyow68 z51x2yRAJ2GPWnOedewRxdnusbN^SBrudc?Qkjb>F|A#l^)%LOMv+Kd6mJU0OiNiV&SvD~#2@Fm ztqXCS$I({*uVa#2Ht-E~Z@A6493~_Lg@h)-LY|&UJw9je%|^oadO5P-&5=IC&EGxP zaI_#R&4u@SR=)|1YgEvCea!L(h&fQ>Ee<`>Hk&O0-C#Z@prsGODa1yrvPI$G;?}_{ zLZdbA8My~{IgD{pPfDsaH~YUu8c9JtAM25tF2D-3AAo`xZw5|4hh2JC0h|O50f97x z9ALWxZ$3La3D=Cs_B-DDz5vUNf3-zzk-0WpH?BqbKYKO}A(WuYDnl5(c-X*zj>lG? zHbghb=V5ArK~6Os9?DSM(Q&4o3O?P?-%kMs(Hbp&7&g-^mg`m~`T!RKUH`s3< z1YgYoKMDG<(4RMJCdUVWLzR=L~VkY&Mdr)b{k;$@?}o zMh8?yy${+MhF~UmyyZ(B8upt;*p<2S+7=dRf{B={+8JxWruR^t7DHS%c+B}C zT|GThkot1-++FvK{W!o{g2KWJMMA>D(|}6l!0f$@iFwxWj7U3+6U53WiFFG89$WRG z!Z!}AH2}2VMMc(qcz|wwV6KMUNa@qn)zupfMj@d}dokG64>ug~B-R=xn&-lU$4jo<`DhG`#2XP;9&j+2;D!C- z(|(G>5kg<|C}rQ~(S!b6+U%ShAUhC>if1_df)ILwOLxe-uu9T=lLoAxv$Mzx?}x6*|K8RRnNIveXI zM3l$gkoo&Scm3^h<8#tq--`{`-Ji$*woc1^C7>xA$=uk|a>mNIKb*UNm2pqdZ8IH1 z;?w8P?4K=kzLdWLm3CVi931QhT}=hf;8qgrk23L09Se((o4eEDw@@jTajqY`i^dfj zo0}B@0Y^i2QNv;w!X`Em6$uF+42gH#X0oxqpF>ANdl@tWiLvfLv2?%mk+2Sg5Vu`k{Xgl>q@H0*i7D z$YkzAd<@VIAe~za0Q5Tuc6_oqr{=fWucK*6i}b;M0R;l^)%}joCbQ4p!6CoUb;IHc zFRw`<0vQu{E#x1uz3T111C&lTmyGd(XI@%50z?Xq9(^b56tH-9sb>m}7msOkS$Dh|rqN1W+Ba;>0C_R;mr0yiG z(qKVc)^k!8h+V?=Hf9^Zi6JooKz{~>bNseL{%~uuCEgJH>J?g{CAh2yK9f6RGejSy z0u{utRE?35(W)<#9BQB&9FytdXtZw7qG?ynf5&HY0#CtUz|$>(y2^QZSdENH)Y9zl)Z^>HMLxsW#mpaGm*9dcSA0U`9_ zbl?FqTAU@T0oOW~Xd3~o3DHzwNr?d5M&ht#V-U%&Ybv{NLet6NVr)B~Ya4(qR#jE? zfsZA@)62JG4Bc?y6&k>5O)f0p1Dyt@$_!`~oU>=KR7J`rl4M>GtXiAbmu_AE@&%wk z3S8pC@h9!|OE|uT;O}`3ApX}cQ2~N37QkK9v5k$n5!`*J@N&txSJrBt4}j+Ee0uO7 zzu`;5XPWp>U>~A9JUrMu#48*ZE`#5W60!pq2zCO5^4E3+NDu@jvM98D{hGCYk`HuXjL>p# z#+}H|pC7;VTv}R6MPi&mZ!imBql{|2el@H098(@+30^OnrUgD|Xy*+m+P3#(MfBuwLvtprvVw}2I&}G34&)cuI?U|s zuA#kz!BOe`)uv5&3OQOa?uJo{m#PkyE8LtP^I`BACA^^KfGI%86s6hkvAZx;AtE+5 z6qqg3KhvJ>ygkav$#JyNj1q{1_e%G$E-Kfv@fAIsr~&2wcsmx4o<5%E0Qdqr6B838 z+_xLA4qaS)fB?4s)0N$_#R z_<0>|Y5NBRNJcUPI735d<&lw*w#D&J=C_o96;K+p9yT(YoSITM_fixepIcfofVFpk z*MWf>)-1PK zGt%pUCuJLWE`X@DPC}mNjtR zX7&EKQP|ROosU=9*znF^5%|Q$8kDi$6j{tji<5#|c^feTHk9`9 zOnV)Kx(KiZe+y@p0GIOyFe=bO*4w^HD0{}!>0L}ruR2{$?n?co&;NEP|KBKP<3FuW z($bfo{>}LPU%2T1j~~?B2RD+S%KF5JEh+Bv;8a~)T@kD7a&okT@P1WC(^FGVWZtHwu{?VG`0LV6 zPRSUIk*kHlYkHGwmy94C1&|x;Q8Ppk5imr|KCk3*+Y8Op{7S>{Fb%lSI^ZHgXfKnH ze8EAo<4JDN9>rxhB8cP@fIz!xZOs-O9Q^X-OCQAffQ3ZZ@t1LNhRbVUp_(!^v*s^6 zV^%<>=74`+n|W`KIKQH6rW9B8FcczzL7cy!Ed#j-pzsR7W)VQs9OsjI77d)V37*ce2lby*QZ77v+T1(DQjM|=yY3c=br!lWnJk<5(3!Za`z zhVsS}R>*A{dTwdT!ze(m=RxvVr+J3HS1{xZ#acbO15wCLaCav6@8iNSxlNEv`Q~_D4p?{yke;LT_*HL*NNe z!E#A=?%WBzKn|yk_UE)Ab~uAV07_1n_d-s|#M~S*AZ7xBBdq5@@83rGgoF_IZEC+` z4b~~LCP!+=0lt@3RG5Lgl$V!J*Yv)0v4<@R59Zupg}e?5QX>EJ;O-oK0aUH`@dk7O zG61JG9qT+MX=1{NB#B?XL0$u81?daPeRf;$CoT~3J_P7TMn;C{GL3+pG-LuJK76>l z@tiy{Txmxd|Eeg;)Bql^AHNq83K6vn;Xn(in zfBO!0$3-yHoC$b4L2*UFZFoXYZe zO*r^P31W;xz+&Wd?_a%27QinkD&j+?%fS?;%C%-1oeHNMNi#?$^)w+>j_GlrBaD#y z0G9-YgBA(tVa(tJ*jiZteB2Q5gFVw6dRA5@1j$x(NOptBY8{NEzK{ay7(B%kT)ZEA zNA=ze4FMHTN-n30%9j*Xgh~Myb(Wr<9!cO$w}iKV^GwuWvl*EMzxHr@QP*!&Oc|0` zr=5*zqK_OMo96qnfKB!XUe*-iiZ|lkVu0TRd(u?QYJJd7sW4B3=$acTyB#cDA>3os58AL!daKfe=tKh>Fr0d2U4| zO2OHao)(cqwU{*@U<7PbpIfmbWCAI9t%yO=QuGZ!mIJ2h{A{Um2sjHN*t|}ToDUB- zI*NiTn1I-3<>1J6_%;N5o8Hzi#JH&1D0XdYS{i6lxNuqp6T%G1e2F!y`;LFo+WWjN~FF>DZf&I7`f;f{{wJH$e6-lM+u40#p}Gd&;2Lhyv|;`cCBw&ju->7 z%ZL*|Vg!fP3CVPg!}r1@BxrbFI(vwrib2h9<11&4F_6~Cokd?WuwHa{a{2a$AcQ$y z9Q=%fgTv({2;)dQ1ksVKd*3#w|4kT$;V8{};|4WYb@&HRJ-6NkY3a?mzY`h2&)4b) zo%W0ewK6;WtvCx(LPzWr@`nfapL(iR=6~v>;Aj5UM*sit!POHsq6N{ZNZUaa{85m( LEuAZ6?EAj}*H2-T diff --git a/docs/tutorials/img/monte_carlo_mimo_fig4.png b/docs/tutorials/img/monte_carlo_mimo_fig4.png index aa506e07e34724ef2ed41c1e5ade7d26db105174..e189b73ff9e595b96103239dc4ac730eb148f342 100644 GIT binary patch literal 58196 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

d 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 diff --git a/docs/tutorials/img/one_shot_alamouti_fig3.png b/docs/tutorials/img/one_shot_alamouti_fig3.png index 86facc6333b69f38e6d38ac4109d960659ab26ef..adbf8cca148579cf36967890b26618ef21d46dc6 100644 GIT binary patch literal 113935 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

x5b?+{XwDc=@8Ima|EvfBTX&%@q*jBs+Vy>T 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

cd}bhNC+2KTKf9l&zrMZ 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 z%0D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 opTu1Md#CRI`Y}HL2P=QlIS;b%7 literal 122577 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%0ArzYW_~5`q_YwOd6A*YT!JCy94? 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 diff --git a/docs/tutorials/mermaid/alamouti.mmd b/docs/tutorials/mermaid/alamouti.mmd deleted file mode 100644 index 2626bed..0000000 --- a/docs/tutorials/mermaid/alamouti.mmd +++ /dev/null @@ -1,20 +0,0 @@ -flowchart LR - tx["SymbolGenerator"] - symbol_mapper["SymbolMapper"] - signal_amplifier["Amplifier"] - space_time_encoder["SpaceTimeEncoder"] - channel["FlatMIMOChannel"] - noise["AWGN"] - detector["SpaceTimeDecoder"] - signal_amplifier_2["Amplifier"] - symbol_demapper["SymbolDemapper"] - tx --> symbol_mapper - symbol_mapper --> signal_amplifier - signal_amplifier --> space_time_encoder - space_time_encoder --> channel - channel --> noise - noise --> detector - detector --> signal_amplifier_2 - signal_amplifier_2 --> symbol_demapper - classDef tapped stroke-dasharray: 4 2 - class tx,noise,detector tapped \ No newline at end of file diff --git a/docs/tutorials/mermaid/mimo_zf.mmd b/docs/tutorials/mermaid/mimo_zf.mmd deleted file mode 100644 index 1d5078d..0000000 --- a/docs/tutorials/mermaid/mimo_zf.mmd +++ /dev/null @@ -1,12 +0,0 @@ -flowchart LR - tx["SymbolGenerator"] - symbol_mapper["SymbolMapper"] - channel["FlatMIMOChannel"] - noise["AWGN"] - detector["LinearDetector"] - tx --> symbol_mapper - symbol_mapper --> channel - channel --> noise - noise --> detector - classDef tapped stroke-dasharray: 4 2 - class tx,noise tapped \ No newline at end of file diff --git a/docs/tutorials/mermaid/mrc.mmd b/docs/tutorials/mermaid/mrc.mmd deleted file mode 100644 index 007d021..0000000 --- a/docs/tutorials/mermaid/mrc.mmd +++ /dev/null @@ -1,12 +0,0 @@ -flowchart LR - tx["SymbolGenerator"] - symbol_mapper["SymbolMapper"] - channel["FlatMIMOChannel"] - noise["AWGN"] - detector["LinearDetector"] - tx --> symbol_mapper - symbol_mapper --> channel - channel --> noise - noise --> detector - classDef tapped stroke-dasharray: 4 2 - class tx tapped \ No newline at end of file diff --git a/docs/tutorials/mimo.rst b/docs/tutorials/mimo.rst index d9c13ed..1e40645 100644 --- a/docs/tutorials/mimo.rst +++ b/docs/tutorials/mimo.rst @@ -7,9 +7,10 @@ compare on it. .. note:: - **Before you start.** :doc:`awgn` introduced ``monte_carlo``, which is used - here to average over channel realizations rather than over noise. The - chain is the same object; only the number of antennas changes. + **Before you start.** :doc:`awgn` introduced ``monte_carlo``. Here the + averaging over fading is a *batch*: a fixed stack of channel draws is + built into each chain, and the sweep only moves the noise. The chain + is the same object; only the number of antennas changes. **What you'll learn:** @@ -45,42 +46,24 @@ problem, and it is what the rest of this tutorial is about. Implementation """""""""""""" -We start with the imports: +We start with the imports and the parameters: .. literalinclude:: ../../examples/mimo/one_shot_mimo.py :language: python - :lines: 1-21 + :lines: 1-32 -The channel is drawn once, with a seed: the first half of the tutorial is -about **one** realization, so it must be the same one on every run. The link -is a single ``Sequential`` closed by a detector, so comparing five detectors -means comparing five chains that differ by their last block alone: +The channel is drawn once, with a seed: this first half of the tutorial is +about **one** realization, so it must be the same one on every run. One +chain, transmitter to decision, closed by the most direct detector -- zero +forcing: .. literalinclude:: ../../examples/mimo/one_shot_mimo.py :language: python - :lines: 23-63 - -.. mermaid:: mermaid/mimo_zf.mmd - -The diagram is not drawn by hand. It is what the chain says about itself -- -``chain.to_mermaid()`` (decision D33c) -- exported by the script, so the -block names are the ones the code uses and a dashed outline marks a tapped -block: - -.. literalinclude:: ../../examples/mimo/one_shot_mimo.py - :language: python - :lines: 185-188 - -Each chain is given the same seed before running, so the five numbers below -differ by the detector alone -- same symbols, same noise, same channel: + :lines: 34-47 .. code:: - * detector ZF : ser=0.0025 - * detector MMSE : ser=0.0025 - * detector OSIC : ser=0.0010 - * detector ML : ser=0.0005 - * detector SD : ser=0.0005 + ZF, one channel draw: SER = 0.0025 Received Constellations """"""""""""""""""""""" @@ -89,21 +72,18 @@ Let us look at what each receive antenna sees, read from the ``"noise"`` tap: .. literalinclude:: ../../examples/mimo/one_shot_mimo.py :language: python - :lines: 65-72 + :lines: 49-56 .. image:: img/monte_carlo_mimo_fig1.png :width: 100% :align: center -No constellation is visible on any antenna: each one receives a noisy -superposition of the two transmitted streams. This is the problem the -detector has to solve. - -Applying the pseudo-inverse of the channel matrix separates the streams: +No constellation is visible on any antenna: each one observes a mixture of +the two streams. The ZF estimator inverts that mixture: .. literalinclude:: ../../examples/mimo/one_shot_mimo.py :language: python - :lines: 74-81 + :lines: 58-65 .. image:: img/monte_carlo_mimo_fig2.png :width: 100% @@ -119,7 +99,19 @@ Detection Strategies ^^^^^^^^^^^^^^^^^^^^ The five detectors are five answers to one question: what to do with the -interference that the other streams put on top of the one being read. +interference that the other streams put on top of the one being read. One +channel realization proves nothing about them -- over fading, the error rate +is an *average*, dominated by the rare draws where the matrix is nearly +singular -- so each answer is judged over the **same** 200 channel draws, +stacked into a batch: one draw is one row (D51), the channel block +propagates draw :math:`k` on frame :math:`k`, and each detector holds the +same stack. The draws and the sweep are set up once: + +.. literalinclude:: ../../examples/mimo/one_shot_mimo.py + :language: python + :lines: 67-81 + +Each technique is then three things -- an idea, one chain, one sweep. Zero forcing (ZF) """"""""""""""""" @@ -141,6 +133,10 @@ enhancement**. It also costs diversity: each stream spends :math:`N_t-1` of its :math:`N_r` degrees of freedom cancelling the others, leaving a diversity order of :math:`N_r - N_t + 1` instead of :math:`N_r`. +.. literalinclude:: ../../examples/mimo/one_shot_mimo.py + :language: python + :lines: 83-94 + Minimum mean square error (MMSE) """""""""""""""""""""""""""""""" @@ -159,7 +155,13 @@ conditioned. As :math:`\sigma^2 \to 0` it *is* zero forcing; as :math:`\sigma^2 \to \infty` it becomes the matched filter :math:`\mathbf{H}^H`. In between it accepts a little residual interference in exchange for much less amplified noise. It does not buy diversity, which is -why the ZF and MMSE curves run parallel. +why the ZF and MMSE curves run parallel. Because the detector *weights by* +:math:`\sigma^2`, the sweep zips the noise variance into it, one pair of +dotted parameters per point: + +.. literalinclude:: ../../examples/mimo/one_shot_mimo.py + :language: python + :lines: 96-107 Ordered successive interference cancellation (OSIC) """"""""""""""""""""""""""""""""""""""""""""""""""" @@ -173,6 +175,10 @@ is why the ordering matters and why ``osic_type="sinr"`` sorts by post-detection SNR (the V-BLAST rule). The price is error propagation: a wrong decision is subtracted as if it were right. +.. literalinclude:: ../../examples/mimo/one_shot_mimo.py + :language: python + :lines: 109-121 + Maximum likelihood (ML) """"""""""""""""""""""" @@ -187,7 +193,12 @@ refuses that split and scores the candidate vectors jointly: Nothing is inverted, so nothing is amplified, and every receive antenna contributes to every stream: the diversity order is :math:`N_r`. The cost is that the minimum is taken over :math:`|\mathcal{M}|^{N_t}` vectors -- 16 here, -but 65 536 for 16-QAM on four streams. +but 65 536 for 16-QAM on four streams. ML compares distances and never needs +:math:`\sigma^2`, so its sweep moves the noise alone: + +.. literalinclude:: ../../examples/mimo/one_shot_mimo.py + :language: python + :lines: 123-133 Sphere decoding (SD) """""""""""""""""""" @@ -211,66 +222,57 @@ can be discarded**: it cannot contain the minimum. Only the lattice points inside a shrinking ball are ever visited, and nothing is approximated, so the decision is exactly the ML one. +.. literalinclude:: ../../examples/mimo/one_shot_mimo.py + :language: python + :lines: 135-145 + .. note :: Diversity orders are claims about a limit, and the SNR range simulated - below stops at 18 dB, which is not the asymptotic regime. They are + here stops at 18 dB, which is not the asymptotic regime. They are checked where a limit can be reached: ``validation/mimo_zf_ml_ber.py`` confirms diversity 1 for zero forcing and 2 for maximum likelihood on a 2x2 channel, against the closed forms of :mod:`comnumpy.core.metrics` (decision D7). -Monte Carlo Evaluation -^^^^^^^^^^^^^^^^^^^^^^ +Results +^^^^^^^ -A single channel realization proves nothing: over fading, the error rate is -an *average*, dominated by the rare draws where the matrix is nearly -singular. Averaging means one independent draw per frame, and the draws are -a **stack**: ``rayleigh_channel(size=n_channels)`` returns ``(200, 3, 2)``, -the channel block propagates frame :math:`k` through matrix :math:`k`, and -the detector -- handed the *same* stack -- decides frame :math:`k` against -matrix :math:`k`. The chain runs once per SNR point instead of once per -draw, and the pooled SER over equal-size frames is exactly the mean of the -per-draw rates: +The five curves come from the same dictionary, shown twice: .. literalinclude:: ../../examples/mimo/one_shot_mimo.py :language: python - :lines: 83-132 + :lines: 147-157 .. code:: SER - snr_dB ZF MMSE OSIC ML SD - --------------------------------------------------------- - 0 0.33086 0.28510 2.822e-01 2.791e-01 2.791e-01 - 3 0.20976 0.17386 1.595e-01 1.545e-01 1.545e-01 - 6 0.10669 0.08601 6.488e-02 5.980e-02 5.980e-02 - 9 0.04389 0.03476 1.890e-02 1.584e-02 1.584e-02 - 12 0.01510 0.01174 4.163e-03 2.488e-03 2.488e-03 - 15 0.00507 0.00394 8.000e-04 3.875e-04 3.875e-04 - 18 0.00201 0.00144 1.625e-04 1.625e-04 1.625e-04 + snr_dB ZF MMSE OSIC ML SD + ------------------------------------------------------- + 0 0.33427 0.28820 0.28735 2.851e-01 2.868e-01 + 3 0.21634 0.17955 0.16855 1.613e-01 1.620e-01 + 6 0.11209 0.09271 0.07311 6.785e-02 6.871e-02 + 9 0.04911 0.04034 0.02546 2.057e-02 2.095e-02 + 12 0.01876 0.01570 0.00779 4.700e-03 4.950e-03 + 15 0.00719 0.00583 0.00243 8.125e-04 6.875e-04 + 18 0.00286 0.00196 0.00100 1.000e-04 2.500e-05 .. image:: img/monte_carlo_mimo_fig3.png :width: 100% :align: center The ordering is the textbook one and it holds at every SNR: ML is the best, -OSIC follows closely, MMSE beats ZF everywhere, and the gap widens with the -SNR -- at 18 dB, ML is an order of magnitude below ZF. The reason is the -slope: with :math:`N_r = 3` receive antennas and :math:`N_t = 2` streams, ML -enjoys the full receive diversity while a linear detector spends part of it -cancelling the other stream. - -The sphere decoder's row is **the ML row, digit for digit**, which is the -claim it has to make: a pruning that changed a single decision would not be -maximum likelihood any more. The two curves therefore lie on top of each -other in the figure, and only their markers tell them apart. +OSIC follows, MMSE beats ZF everywhere, and the gap widens with the SNR -- +at 18 dB, ML is an order of magnitude below ZF. The reason is the slope: +with :math:`N_r = 3` receive antennas and :math:`N_t = 2` streams, ML enjoys +the full receive diversity while a linear detector spends part of it +cancelling the other stream. The ML and SD rows differ only by their noise +draws (each sweep reseeds its own chain): where they share a seed they are +digit for digit the same decision, which is the sphere decoder's claim. -Note which detectors are told the noise variance and which are not: MMSE and -OSIC weight by :math:`\sigma^2`, ZF ignores the noise by construction, and ML -only compares distances -- so neither of the last two has that parameter at -all, and ``set_params`` says so if you try. +The last rows sit near the estimator's floor: 2.5e-05 out of 40 000 symbols +per point is one error, not a rate. Computational Cost @@ -284,16 +286,16 @@ where that product no longer fits. We therefore time both detectors on .. literalinclude:: ../../examples/mimo/one_shot_mimo.py :language: python - :lines: 134-183 + :lines: 159-216 .. code:: - ML 0 dB 142.0 ms 65536 nodes SER 0.7900 - ML 9 dB 123.5 ms 65536 nodes SER 0.5044 - ML 18 dB 140.8 ms 65536 nodes SER 0.0112 - SD 0 dB 197.5 ms 91.8 nodes SER 0.7900 - SD 9 dB 36.3 ms 19.2 nodes SER 0.5044 - SD 18 dB 11.8 ms 5.8 nodes SER 0.0112 + ML 0 dB 176.7 ms 65536 nodes SER 0.7900 + ML 9 dB 113.7 ms 65536 nodes SER 0.5044 + ML 18 dB 119.0 ms 65536 nodes SER 0.0112 + SD 0 dB 163.4 ms 91.8 nodes SER 0.7900 + SD 9 dB 33.3 ms 19.2 nodes SER 0.5044 + SD 18 dB 10.8 ms 5.8 nodes SER 0.0112 .. image:: img/monte_carlo_mimo_fig4.png :width: 100% diff --git a/examples/mimo/one_shot_alamouti.py b/examples/mimo/one_shot_alamouti.py index 43af67f..12d6a10 100644 --- a/examples/mimo/one_shot_alamouti.py +++ b/examples/mimo/one_shot_alamouti.py @@ -1,12 +1,12 @@ """Rayleigh fading, receive diversity, and the Alamouti space-time code. -Run from this directory: it writes the tutorial's figures and diagrams -into ../../docs/tutorials/. +Run from this directory: it writes the tutorial's figures into +../../docs/tutorials/. """ import matplotlib.pyplot as plt import numpy as np -from comnumpy import monte_carlo, style +from comnumpy import monte_carlo, print_data, style from comnumpy.core import Sequential from comnumpy.core.generators import SymbolGenerator from comnumpy.core.mappers import SymbolDemapper, SymbolMapper @@ -22,13 +22,11 @@ style.use() img_dir = "../../docs/tutorials/img/" -mermaid_dir = "../../docs/tutorials/mermaid/" constellation = Constellation("PSK", 4) M = constellation.order code = get_code("alamouti") power = 1 / np.sqrt(code.n_tx) # split the power over the antennas -sigma2 = 0.2 # --- the fading channel ---------------------------------------------- # One Rayleigh coefficient is a complex Gaussian, so its squared modulus @@ -54,50 +52,29 @@ print(f"P[|h|^2 < {threshold:g}] = {np.mean(gain < threshold):.4f} " f"(1 - exp(-{threshold:g}) = {1 - np.exp(-threshold):.4f})") -# --- the three links -------------------------------------------------- - - -def get_chain(kind, H, sigma2=sigma2): - """Build the chain of one scheme, on a given channel realization. - - The three schemes differ by two blocks -- what is put on the - antennas, and what is done with what comes back -- so they are one - function and not three scripts. - """ - source = [SymbolGenerator(constellation.order, name="tx"), - SymbolMapper(constellation)] - channel = [FlatMIMOChannel(H, name="channel"), - AWGN(sigma2=sigma2, name="noise")] - match kind: - case "alamouti": - return Sequential([ - *source, Amplifier(power), SpaceTimeEncoder(code), *channel, - SpaceTimeDecoder(code, H=H, name="detector"), - Amplifier(1 / power), SymbolDemapper(constellation), - ], taps=["tx", "noise", "detector"], name="Alamouti 2x1") - case "linear": - # zero forcing on an (N_r, 1) channel *is* maximum ratio - # combining: the pseudo-inverse of a column is h^H / ||h||^2 - return Sequential([ - *source, *channel, - LinearDetector(constellation, H=H, name="detector"), - ], taps=["tx"], name=f"{H.shape[0]} Rx, {H.shape[1]} Tx") - case _: - raise ValueError(f"unknown link {kind!r}") - - -alamouti = get_chain("alamouti", rayleigh_channel(1, 2, seed=42)) -siso = get_chain("linear", rayleigh_channel(1, 1, seed=1)) -mrc = get_chain("linear", rayleigh_channel(2, 1, seed=2)) - # --- one shot --------------------------------------------------------- -alamouti.seed(7) # every stochastic block, reproducibly -s_rx = alamouti(500 * code.n_symbols) -print(f"\none-shot SER: {compute_ser(alamouti.tap('tx'), s_rx):.4f}") -alamouti.summary(500 * code.n_symbols) - -received = alamouti.tap("noise")[0] -combined = alamouti.tap("detector") / power +# One channel draw, one chain, transmitter to decision: what Alamouti +# combining does to a single receive antenna. +H_one = rayleigh_channel(1, 2, seed=42) +one_shot = Sequential([ + SymbolGenerator(M, name="tx"), + SymbolMapper(constellation), + Amplifier(power), + SpaceTimeEncoder(code), + FlatMIMOChannel(H_one, name="channel"), + AWGN(sigma2=0.2, name="noise"), + SpaceTimeDecoder(code, H=H_one, name="detector"), + Amplifier(1 / power), + SymbolDemapper(constellation), +], taps=["tx", "noise", "detector"], name="Alamouti 2x1") + +one_shot.seed(7) # every stochastic block, reproducibly +s_rx = one_shot(500 * code.n_symbols) +print(f"\none-shot SER: {compute_ser(one_shot.tap('tx'), s_rx):.4f}") +one_shot.summary(500 * code.n_symbols) + +received = one_shot.tap("noise")[0] +combined = one_shot.tap("detector") / power fig2, (ax_left, ax_right) = plt.subplots(nrows=1, ncols=2, figsize=(9, 4.2)) plot_iq(received, marker=".", ax=ax_left) ax_left.set_title("tap('noise'): the single receive antenna") @@ -107,51 +84,68 @@ def get_chain(kind, H, sigma2=sigma2): plt.savefig(f"{img_dir}/one_shot_alamouti_fig2.png") # --- averaging over fading -------------------------------------------- - - -def average_ser(chain, n_rx, n_tx, snr_dB, stimulus, n_channels, seed=0): - """Average one chain over independent quasi-static fading draws. - - The chain is built once. ``monte_carlo`` takes several dotted parameters - at once and zips them, so one sweep point sets the channel the - signal goes through *and* the channel the detector inverts -- which - is exactly what a fading realization is. - """ - rng = np.random.default_rng(seed) - draws = [] - for _ in range(n_channels): - H = rayleigh_channel(n_rx, n_tx, rng=rng) - draws.append((H, H)) - chain.set_params(noise__sigma2=10 ** (-snr_dB / 10)) - results = monte_carlo(chain, ("channel.H", "detector.H"), draws, - {"ser": compute_ser}, stimulus=stimulus, - reference="tx", seed=seed) - return float(np.mean(results["ser"])) - - -# The accuracy of an average over fading is set by the number of channel -# draws, not by the symbol count, so the draw count grows with the SNR. -snr_dB_list = np.arange(4, 25, 4) -draws = [1500, 2000, 2500, 3500, 5000, 6000] +# The SAME K channel draws serve every SNR point: one draw is one row +# of the batch (D51), each chain is built once with its stack -- the +# channel block propagates draw k on frame k, the detector holds the +# same stack -- and only the noise moves along the sweep. +K = 5000 n_symbols = 80 -links = { - "1 Tx, 1 Rx (no diversity)": (siso, 1, 1, (1, n_symbols)), - "Alamouti, 2 Tx, 1 Rx": (alamouti, 1, 2, n_symbols), - "MRC, 1 Tx, 2 Rx": (mrc, 2, 1, (1, n_symbols)), -} -# --- metrics, pre-allocated ------------------------------------------ -curves = {} -for name in links: - curves[name] = np.zeros(len(snr_dB_list)) - -# --- simulation loop ------------------------------------------------- -for name, (chain, n_rx, n_tx, stimulus) in links.items(): - for index, (snr_dB, count) in enumerate(zip(snr_dB_list, draws, - strict=True)): - curves[name][index] = average_ser(chain, n_rx, n_tx, snr_dB, - stimulus, count) +rng = np.random.default_rng(3) +H_siso = rayleigh_channel(1, 1, rng=rng, size=K) +H_alamouti = rayleigh_channel(1, 2, rng=rng, size=K) +H_mrc = rayleigh_channel(2, 1, rng=rng, size=K) + +siso = Sequential([ + SymbolGenerator(M, name="tx"), + SymbolMapper(constellation), + FlatMIMOChannel(H_siso, name="channel"), + AWGN(sigma2=1.0, name="noise"), + # zero forcing on an (N_r, 1) channel *is* maximum ratio combining: + # the pseudo-inverse of a column is h^H / ||h||^2 + LinearDetector(constellation, H=H_siso, name="detector"), +], taps=["tx"], name="1 Tx, 1 Rx") + +alamouti = Sequential([ + SymbolGenerator(M, name="tx"), + SymbolMapper(constellation), + Amplifier(power), + SpaceTimeEncoder(code), + FlatMIMOChannel(H_alamouti, name="channel"), + AWGN(sigma2=1.0, name="noise"), + SpaceTimeDecoder(code, H=H_alamouti, name="detector"), + Amplifier(1 / power), + SymbolDemapper(constellation), +], taps=["tx"], name="Alamouti 2x1") + +mrc = Sequential([ + SymbolGenerator(M, name="tx"), + SymbolMapper(constellation), + FlatMIMOChannel(H_mrc, name="channel"), + AWGN(sigma2=1.0, name="noise"), + LinearDetector(constellation, H=H_mrc, name="detector"), +], taps=["tx"], name="MRC 1x2") + +# --- the sweep: no simulation loop ----------------------------------- +# monte_carlo moves the noise variance; everything else is frozen in +# the chains above. +snr_dB_list = np.arange(4, 25, 4) +sigma2_list = 10.0 ** (-snr_dB_list / 10) -# --- results: figure against the closed forms ------------------------ +curves = {} +curves["1 Tx, 1 Rx (no diversity)"] = monte_carlo( + siso, "noise.sigma2", sigma2_list, {"ser": compute_ser}, + (K, 1, n_symbols), reference="tx", seed=1)["ser"] +curves["Alamouti, 2 Tx, 1 Rx"] = monte_carlo( + alamouti, "noise.sigma2", sigma2_list, {"ser": compute_ser}, + (K, n_symbols), reference="tx", seed=2)["ser"] +curves["MRC, 1 Tx, 2 Rx"] = monte_carlo( + mrc, "noise.sigma2", sigma2_list, {"ser": compute_ser}, + (K, 1, n_symbols), reference="tx", seed=3)["ser"] + +# --- results: table and figure against the closed forms -------------- +print() +print_data({"x": snr_dB_list, "curves": curves}, + xlabel="snr_dB", ylabel="SER") fine = np.linspace(snr_dB_list[0], snr_dB_list[-1], 100) per_bit = 10 ** (fine / 10) / np.log2(M) @@ -163,48 +157,8 @@ def average_ser(chain, n_rx, n_tx, snr_dB, stimulus, n_channels, seed=0): } ax = plot_error_rate(snr_dB_list, curves, theory=theory, x_theory=fine, ylabel="symbol error rate", - title=f"{M}-PSK over Rayleigh, equal transmit power") + title=f"{M}-PSK over Rayleigh, {K} channel draws, " + f"equal transmit power") ax.set_ylim(1e-5, 1) plt.tight_layout() plt.savefig(f"{img_dir}/one_shot_alamouti_fig3.png") - -# --- the two claims, read off the closed form ------------------------- -def closed_form(name, snr_dB): - """The Rayleigh SER this curve should follow, at equal transmit power.""" - power_split = code.n_tx if "Alamouti" in name else 1 - diversity = 1 if "no diversity" in name else 2 - return compute_ser_rayleigh_psk( - M, 10 ** (snr_dB / 10) / np.log2(M) / power_split, - diversity=diversity) - - -for name, values in curves.items(): - ratio = np.array(values) / closed_form(name, snr_dB_list) - line = f"{name:28s} measured / closed form " - for value in ratio: - line += f"{value:.2f} " - print(line) - -high = np.array([30.0, 40.0]) -for name in curves: - reference = closed_form(name, high) - slope = np.polyfit(high / 10, np.log10(reference), 1)[0] - print(f"{name:28s} diversity order {-slope:.2f}") - -grid_dB = np.linspace(0, 30, 601) -alamouti_snr = 10 ** (grid_dB / 10) / np.log2(M) -target = 1e-3 -of = {"MRC": compute_ser_rayleigh_psk(M, alamouti_snr, diversity=2), - "Alamouti": compute_ser_rayleigh_psk(M, alamouti_snr / code.n_tx, - diversity=2)} -needed = {} -for name, values in of.items(): - needed[name] = np.interp(np.log10(target), np.log10(values)[::-1], - grid_dB[::-1]) -print(f"SNR for SER = {target:g}: MRC {needed['MRC']:.1f} dB, Alamouti " - f"{needed['Alamouti']:.1f} dB, gap {needed['Alamouti'] - needed['MRC']:.2f} dB " - f"(10log10(N_t) = {10 * np.log10(code.n_tx):.2f} dB)") - -for diagram_name, diagram_chain in [("alamouti", alamouti), ("mrc", mrc)]: - with open(f"{mermaid_dir}/{diagram_name}.mmd", "w") as stream: - stream.write(diagram_chain.to_mermaid()) diff --git a/examples/mimo/one_shot_mimo.py b/examples/mimo/one_shot_mimo.py index 2bd1b81..1b5cd72 100644 --- a/examples/mimo/one_shot_mimo.py +++ b/examples/mimo/one_shot_mimo.py @@ -1,9 +1,14 @@ +"""MIMO detection: one spatial mixture, five ways to undo it. + +Run from this directory: it writes the tutorial's figures into +../../docs/tutorials/. +""" import time import numpy as np import matplotlib.pyplot as plt -from comnumpy import print_data, style +from comnumpy import monte_carlo, print_data, style from comnumpy.core import Sequential from comnumpy.core.generators import SymbolGenerator from comnumpy.core.mappers import SymbolMapper @@ -23,46 +28,25 @@ N = 1000 N_r, N_t = 3, 2 constellation = Constellation("PSK", 4) +M = constellation.order sigma2 = 0.1 -H = rayleigh_channel(N_r, N_t, seed=0) - -def get_chain(detector): - """The same link, closed by one detector or another. - - Only the last block changes, which is the point: a detector is a - chain block like any other, and the comparison further down is four - chains that differ by that block alone. - """ - return Sequential([ - SymbolGenerator(constellation.order, name="tx"), - SymbolMapper(constellation), - FlatMIMOChannel(H, name="channel"), - AWGN(sigma2=sigma2, name="noise"), - detector, - ], taps=["tx", "noise"], name=f"{N_r}x{N_t} MIMO, {detector.name}") - - -detectors = { - "ZF": LinearDetector(constellation, H=H, method="zf", name="detector"), - "MMSE": LinearDetector(constellation, H=H, sigma2=sigma2, method="mmse", - name="detector"), - "OSIC": OrderedSuccessiveInterferenceCancellationDetector( - constellation, osic_type="sinr", H=H, sigma2=sigma2, - name="detector"), - "ML": MaximumLikelihoodDetector(constellation, H=H, name="detector"), - "SD": SphereDecoder(constellation, H=H, name="detector"), -} -chains = {} -for name, detector in detectors.items(): - chains[name] = get_chain(detector) - -for name, chain in chains.items(): - chain.seed(0) - detected = chain((N_t, N)) - print(f"* detector {name:5s}: ser={compute_ser(chain.tap('tx'), detected):.4f}") - -Y = chains["ZF"].tap("noise") +# --- the problem: one channel draw, one chain, zero forcing ----------- +H = rayleigh_channel(N_r, N_t, seed=0) +chain = Sequential([ + SymbolGenerator(M, name="tx"), + SymbolMapper(constellation), + FlatMIMOChannel(H, name="channel"), + AWGN(sigma2=sigma2, name="noise"), + LinearDetector(constellation, H=H, method="zf", name="detector"), +], taps=["tx", "noise"], name=f"{N_r}x{N_t} MIMO, ZF") + +chain.seed(0) +detected = chain((N_t, N)) +print(f"ZF, one channel draw: SER = " + f"{compute_ser(chain.tap('tx'), detected):.4f}") + +Y = chain.tap("noise") fig1, axes1 = plt.subplots(nrows=1, ncols=N_r, figsize=(4 * N_r, 4)) for index in range(N_r): plot_iq(Y[index, :], ax=axes1[index]) @@ -71,7 +55,7 @@ def get_chain(detector): axes1[index].set_ylim([-2, 2]) plt.savefig(f"{img_dir}/monte_carlo_mimo_fig1.png") -Z = detectors["ZF"].linear_estimator(Y) +Z = chain["detector"].linear_estimator(Y) fig2, axes2 = plt.subplots(nrows=1, ncols=N_t, figsize=(4 * N_t, 4)) for index in range(N_t): plot_iq(Z[index, :], reference=constellation, ax=axes2[index]) @@ -80,82 +64,130 @@ def get_chain(detector): axes2[index].set_ylim([-2, 2]) plt.savefig(f"{img_dir}/monte_carlo_mimo_fig2.png") -snr_dB_list = np.arange(0, 20, 3) -n_channels = 200 +# --- the detectors, averaged over fading ------------------------------ +# The SAME K channel draws serve every SNR point: one draw is one row +# of the batch (D51). Each technique below is one chain built with the +# stack -- on the channel block and on the detector -- followed by its +# own Monte-Carlo sweep: monte_carlo moves the noise variance, and the +# detectors that weight by sigma2 receive it too, through the zip of +# two parameter paths. No simulation loop. +K = 200 n_symbols = 200 - - -NOISE_AWARE = {"MMSE", "OSIC"} # the two detectors that weight by sigma2 - - -def average_ser(name, chain, snr_dB, seed=0): - """Average one chain over independent Rayleigh draws at one SNR. - - The draws are a *stack* (D51): channel k propagates frame k, the - detector holds the same stack and decides frame k against channel - k, and the chain runs once instead of once per draw. Pooled over - equal-size frames, the SER is exactly the mean of the per-draw - rates. - """ - stacked = rayleigh_channel(N_r, N_t, seed=seed, size=n_channels) - noise_variance = N_t * 10 ** (-snr_dB / 10) - params = {"noise.sigma2": noise_variance, - "channel.H": stacked, "detector.H": stacked} - if name in NOISE_AWARE: - params["detector.sigma2"] = noise_variance - chain.set_params(**params) - chain.seed(seed) - detected = chain((n_channels, N_t, n_symbols)) - return float(compute_ser(chain.tap("tx"), detected)) - - -# --- metrics, pre-allocated ------------------------------------------ +snr_dB_list = np.arange(0, 20, 3) +sigma2_list = N_t * 10.0 ** (-snr_dB_list / 10) +both = list(zip(sigma2_list, sigma2_list, strict=True)) +stimulus = (K, N_t, n_symbols) +H_stack = rayleigh_channel(N_r, N_t, seed=1, size=K) curves = {} -for name in chains: - curves[name] = np.zeros(len(snr_dB_list)) -# --- simulation loop ------------------------------------------------- -for name, chain in chains.items(): - for index, snr_dB in enumerate(snr_dB_list): - curves[name][index] = average_ser(name, chain, snr_dB) +# --- zero forcing ---------------------------------------------------- +zf = Sequential([ + SymbolGenerator(M, name="tx"), + SymbolMapper(constellation), + FlatMIMOChannel(H_stack, name="channel"), + AWGN(sigma2=1.0, name="noise"), + LinearDetector(constellation, H=H_stack, method="zf", + name="detector"), +], taps=["tx"], name="ZF") +curves["ZF"] = monte_carlo( + zf, "noise.sigma2", sigma2_list, {"ser": compute_ser}, + stimulus, reference="tx", seed=1)["ser"] + +# --- MMSE ------------------------------------------------------------ +mmse = Sequential([ + SymbolGenerator(M, name="tx"), + SymbolMapper(constellation), + FlatMIMOChannel(H_stack, name="channel"), + AWGN(sigma2=1.0, name="noise"), + LinearDetector(constellation, H=H_stack, method="mmse", sigma2=1.0, + name="detector"), +], taps=["tx"], name="MMSE") +curves["MMSE"] = monte_carlo( + mmse, ("noise.sigma2", "detector.sigma2"), both, {"ser": compute_ser}, + stimulus, reference="tx", seed=2)["ser"] + +# --- OSIC ------------------------------------------------------------ +osic = Sequential([ + SymbolGenerator(M, name="tx"), + SymbolMapper(constellation), + FlatMIMOChannel(H_stack, name="channel"), + AWGN(sigma2=1.0, name="noise"), + OrderedSuccessiveInterferenceCancellationDetector( + constellation, osic_type="sinr", H=H_stack, sigma2=1.0, + name="detector"), +], taps=["tx"], name="OSIC") +curves["OSIC"] = monte_carlo( + osic, ("noise.sigma2", "detector.sigma2"), both, {"ser": compute_ser}, + stimulus, reference="tx", seed=3)["ser"] + +# --- maximum likelihood ---------------------------------------------- +ml = Sequential([ + SymbolGenerator(M, name="tx"), + SymbolMapper(constellation), + FlatMIMOChannel(H_stack, name="channel"), + AWGN(sigma2=1.0, name="noise"), + MaximumLikelihoodDetector(constellation, H=H_stack, name="detector"), +], taps=["tx"], name="ML") +curves["ML"] = monte_carlo( + ml, "noise.sigma2", sigma2_list, {"ser": compute_ser}, + stimulus, reference="tx", seed=4)["ser"] + +# --- sphere decoder -------------------------------------------------- +sd = Sequential([ + SymbolGenerator(M, name="tx"), + SymbolMapper(constellation), + FlatMIMOChannel(H_stack, name="channel"), + AWGN(sigma2=1.0, name="noise"), + SphereDecoder(constellation, H=H_stack, name="detector"), +], taps=["tx"], name="SD") +curves["SD"] = monte_carlo( + sd, "noise.sigma2", sigma2_list, {"ser": compute_ser}, + stimulus, reference="tx", seed=5)["ser"] # --- results: table and figure --------------------------------------- +print() print_data({"x": snr_dB_list, "curves": curves}, xlabel="snr_dB", ylabel="SER") ax = plot_error_rate(snr_dB_list, curves, ylabel="SER", - title=f"{N_r}x{N_t} MIMO, {constellation.order}-" - f"{constellation.family}, " - f"{n_channels} channel draws per point") + title=f"{N_r}x{N_t} MIMO, {M}-PSK, " + f"{K} channel draws per point") ax.set_ylim(1e-4, 1) plt.tight_layout() plt.savefig(f"{img_dir}/monte_carlo_mimo_fig3.png") # --- what the pruning is worth, in seconds --------------------------- # 16-QAM on four streams: 65 536 candidates per vector, which is where -# the two detectors stop costing the same. +# the exhaustive search and the sphere decoder stop costing the same. print("\n16-QAM, 4x4: same decision, what it costs") big_constellation = Constellation("QAM", 16) big_H = rayleigh_channel(4, 4, seed=2) -big_decoder = SphereDecoder(big_constellation, H=big_H, name="detector") -big_detectors = { - "ML": MaximumLikelihoodDetector(big_constellation, H=big_H, name="detector"), - "SD": big_decoder, -} + +ml_16 = Sequential([ + SymbolGenerator(big_constellation.order, name="tx"), + SymbolMapper(big_constellation), + FlatMIMOChannel(big_H, name="channel"), + AWGN(sigma2=1.0, name="noise"), + MaximumLikelihoodDetector(big_constellation, H=big_H, + name="detector"), +], taps=["tx"], name="4x4 MIMO, ML") + +sd_16 = Sequential([ + SymbolGenerator(big_constellation.order, name="tx"), + SymbolMapper(big_constellation), + FlatMIMOChannel(big_H, name="channel"), + AWGN(sigma2=1.0, name="noise"), + SphereDecoder(big_constellation, H=big_H, name="detector"), +], taps=["tx"], name="4x4 MIMO, SD") + # --- metrics, pre-allocated ------------------------------------------ elapsed = {} -for name in big_detectors: +for name in ("ML", "SD"): elapsed[name] = np.zeros(len(snr_dB_list)) # --- simulation loop ------------------------------------------------- -for name, detector in big_detectors.items(): - big_chain = Sequential([ - SymbolGenerator(big_constellation.order, name="tx"), - SymbolMapper(big_constellation), - FlatMIMOChannel(big_H, name="channel"), - AWGN(sigma2=1.0, name="noise"), - detector, - ], taps=["tx"], name=f"4x4 MIMO, {name}") +# A wall time is measured per point, so this one stays a loop. +for name, big_chain in (("ML", ml_16), ("SD", sd_16)): for index, snr_dB in enumerate(snr_dB_list): big_chain.seed(4) big_chain.set_params(noise__sigma2=4 * 10 ** (-snr_dB / 10)) @@ -163,11 +195,12 @@ def average_ser(name, chain, snr_dB, seed=0): detected = big_chain((4, 400)) elapsed[name][index] = (time.perf_counter() - start) * 1e3 errors = compute_ser(big_chain.tap("tx"), detected) - nodes = (f"{big_decoder.nodes_:7.1f} nodes" if name == "SD" - else f"{16 ** 4:7d} nodes") + nodes = (f"{big_chain['detector'].nodes_:7.1f} nodes" + if name == "SD" else f"{16 ** 4:7d} nodes") print(f" {name:2s} {snr_dB:2d} dB {elapsed[name][index]:8.1f} ms " f"{nodes} SER {errors:.4f}") +# --- results: figure ------------------------------------------------- # A runtime is not an error rate, so it does not go through # plot_error_rate and there is no style kind for it either: what this # figure needs is a log ordinate and a grid, which is what it says. @@ -181,10 +214,3 @@ def average_ser(name, chain, snr_dB, seed=0): ax.legend() plt.tight_layout() plt.savefig(f"{img_dir}/monte_carlo_mimo_fig4.png") - -mermaid_dir = "../../docs/tutorials/mermaid/" -for diagram_name, diagram_chain in [("mimo_zf", chains["ZF"])]: - with open(f"{mermaid_dir}/{diagram_name}.mmd", "w") as stream: - stream.write(diagram_chain.to_mermaid()) - -plt.show() diff --git a/src/comnumpy/mimo/coding.py b/src/comnumpy/mimo/coding.py index 119d2bc..c711546 100644 --- a/src/comnumpy/mimo/coding.py +++ b/src/comnumpy/mimo/coding.py @@ -825,9 +825,29 @@ def forward(self, X: np.ndarray) -> np.ndarray: f"{code.name!r} spans {code.n_slots} channel uses per " f"codeword and got {received.shape[-1]} samples, which " f"is not a multiple of it.") - matrix = code.equivalent_channel(self.H) - energy = (code.orthogonality_gain - * float(np.sum(np.abs(np.asarray(self.H)) ** 2))) + H = np.asarray(self.H) + if H.ndim > 2: + # stacked channel (D51): one equivalent matrix and one + # energy per draw -- channel k decodes frame k + if received.shape[:-2] != H.shape[:-2]: + raise ShapeError( + f"a stacked channel with leading shape " + f"{H.shape[:-2]} decodes one frame per draw and " + f"needs observations (..., n_rx, N) with the same " + f"leading shape, got {received.shape}.") + flat_H = H.reshape((-1,) + H.shape[-2:]) + matrices = [] + for k in range(flat_H.shape[0]): + matrices.append(code.equivalent_channel(flat_H[k])) + matrix = np.stack(matrices).reshape( + H.shape[:-2] + matrices[0].shape) + energy = (code.orthogonality_gain + * np.sum(np.abs(H) ** 2, + axis=(-2, -1)))[..., None, None] + else: + matrix = code.equivalent_channel(H) + energy = (code.orthogonality_gain + * float(np.sum(np.abs(H) ** 2))) n_words = received.shape[-1] // code.n_slots blocks = received.reshape(received.shape[:-1] + (n_words, code.n_slots)) diff --git a/tests/mimo/test_stacked_channel.py b/tests/mimo/test_stacked_channel.py index d9da437..ce2eb42 100644 --- a/tests/mimo/test_stacked_channel.py +++ b/tests/mimo/test_stacked_channel.py @@ -85,6 +85,21 @@ def test_a_mismatched_batch_is_refused(self): with self.assertRaises(ShapeError): detector(np.ones((K + 1, N_R, N), dtype=complex)) + def test_the_alamouti_decoder_decodes_frame_k_against_channel_k(self): + from comnumpy.mimo.coding import (SpaceTimeDecoder, + SpaceTimeEncoder, get_code) + code = get_code("alamouti") + rng = np.random.default_rng(2) + s = (rng.standard_normal((K, 40)) + + 1j * rng.standard_normal((K, 40))) + stacked = rayleigh_channel(1, 2, seed=6, size=K) + received = FlatMIMOChannel(stacked)(SpaceTimeEncoder(code)(s)) + decoded = SpaceTimeDecoder(code, H=stacked)(received) + single = SpaceTimeDecoder(code, H=stacked[2])(received[2]) + np.testing.assert_allclose(decoded[2], single) + # the orthogonal design is lossless without noise + np.testing.assert_allclose(decoded, s) + def test_the_sphere_decoder_still_counts_its_nodes(self): decoder = SphereDecoder(CONSTELLATION, H=self.H) decoder(self.Y) diff --git a/tests/test_batch_contract.py b/tests/test_batch_contract.py index e080794..0dcfd41 100644 --- a/tests/test_batch_contract.py +++ b/tests/test_batch_contract.py @@ -40,6 +40,22 @@ BITS = RNG.integers(0, 2, (3, N)) QPSK = Constellation("PSK", 4) PAIR = RNG.standard_normal((3, 2, N)) + 1j * RNG.standard_normal((3, 2, N)) + + +def _alamouti_pieces(): + # ONE 2-D channel broadcast over the batch: the row-equality check + # runs the same factory on the batch and on one row, so the config + # must not carry the batch itself (the stacked-H path is locked in + # tests/mimo/test_stacked_channel.py) + from comnumpy.mimo.channels import FlatMIMOChannel + from comnumpy.mimo.coding import SpaceTimeEncoder, get_code + from comnumpy.mimo.utils import rayleigh_channel + channel = rayleigh_channel(1, 2, seed=3) + encoded = SpaceTimeEncoder(get_code("alamouti"))(SERIAL) + return channel, FlatMIMOChannel(channel)(encoded) + + +ALAMOUTI_H, ALAMOUTI_RX = _alamouti_pieces() # a rotated QPSK frame set, for the blind trackers QPSK_POINTS = np.asarray(QPSK.alphabet) ROTATED_QPSK = QPSK_POINTS[RNG.integers(0, 4, (3, 200))] * np.exp(1j * 0.3) @@ -107,6 +123,13 @@ def _fs(): "mimo.channels.FlatMIMOChannel": (lambda: _cls("mimo.channels", "FlatMIMOChannel")( _rayleigh(2, 2, seed=1)), PAIR), + "mimo.coding.SpaceTimeEncoder": + (lambda: _cls("mimo.coding", "SpaceTimeEncoder")( + _cls("mimo.coding", "get_code")("alamouti")), SERIAL), + "mimo.coding.SpaceTimeDecoder": + (lambda: _cls("mimo.coding", "SpaceTimeDecoder")( + _cls("mimo.coding", "get_code")("alamouti"), H=ALAMOUTI_H), + ALAMOUTI_RX), "mimo.detectors.LinearDetector": (lambda: _cls("mimo.detectors", "LinearDetector")( QPSK, H=_rayleigh(2, 2, seed=1), method="zf"), PAIR), @@ -228,10 +251,6 @@ def _fs(): "in tests/fec", "mimo.channels.SelectiveMIMOChannel": "builds an (L N_t, N) stacked " "convolution matrix for one frame", - "mimo.coding.SpaceTimeEncoder": "Alamouti layout (N_t, N) per code " - "block, one frame per call", - "mimo.coding.SpaceTimeDecoder": "Alamouti layout per code block, one " - "frame per call", "mimo.compensators.BlindDualMIMOCompensator": "adaptive per pair; its " "batch (one butterfly per pair) is locked in " "tests/core/test_batch_axes.py", From 94829f91f308028c966cbab9ee86154618cd359e Mon Sep 17 00:00:00 2001 From: Claude Date: Fri, 14 Aug 2026 00:14:40 +0000 Subject: [PATCH 3/6] Strip the PAPR and OFDM tutorials of their scaffolding loops The PAPR page loses its transmitter factory: one Sequential for the illustration, a second for the other subcarrier count -- two chains, written out. The 20-batch accumulation loop becomes one call, because Serial2Parallel already stacks the OFDM symbols on the leading axis: 20000 symbols are one batch, and compute_papr(axis=-1) reads one value per row. The models-against-measurement coda is deleted and the level-crossing model shrinks to one sentence; the page keeps the one number an amplifier is sized on. one_shot_ofdm drops its two-iteration loops. The SER sweep is two explicit monte_carlo calls, one per chain, same seeds so the pasted table is unchanged; the runtime study is one loop over the swept lengths with both chains timed explicitly in the body, and its volatile numbers are re-pasted from a single fresh run. The tutorial skill now states the rule: a loop earns its place at ten iterations, not at two -- no loop over the techniques, dict literals for two curves, one call per chain. Co-Authored-By: Claude Opus 5 --- .claude/skills/comnumpy-tutorial/SKILL.md | 10 ++- docs/tutorials/img/one_shot_ofdm_fig5.png | Bin 52375 -> 52193 bytes docs/tutorials/ofdm.rst | 16 ++-- docs/tutorials/ofdm_papr.rst | 51 +++--------- examples/ofdm/monte_carlo_ofdm_papr.py | 94 ++++++++++------------ examples/ofdm/one_shot_ofdm.py | 33 ++++---- 6 files changed, 87 insertions(+), 117 deletions(-) diff --git a/.claude/skills/comnumpy-tutorial/SKILL.md b/.claude/skills/comnumpy-tutorial/SKILL.md index 2caf715..152f6bc 100644 --- a/.claude/skills/comnumpy-tutorial/SKILL.md +++ b/.claude/skills/comnumpy-tutorial/SKILL.md @@ -74,7 +74,15 @@ then learns the wrong lesson -- they came to see how the library is used. **On the page, interleave**: one technique is one unit -- its idea and equations, then its `Sequential` and its `monte_carlo` call quoted together as one `literalinclude` block. The reader meets each - method whole: theory, chain, sweep. When the study + method whole: theory, chain, sweep. + **Never a loop over the techniques.** A `for name, chain in (...)` + around two or three `monte_carlo` calls is over-engineering: write + the calls out, one explicit statement per chain, filling + `curves[name]` by name. A loop earns its place at ten iterations, + not at two. The same goes for storage: two curves are a dict literal + of two `np.zeros`, not an init loop; and a runtime sweep is ONE loop + over the swept variable with each chain timed explicitly in the + body, never a nested loop over the techniques. When the study is *around* a chain -- several detectors on one frame, several receivers on one propagation -- write the loop out, on **one storage convention**: declare the methods and the metrics first; pre-allocate diff --git a/docs/tutorials/img/one_shot_ofdm_fig5.png b/docs/tutorials/img/one_shot_ofdm_fig5.png index 6309ce4e8b3c8f551cecd58b3added55bf0d92c7..7b99b1ae13e4ccb8e435dbed54b9e5905812d3af 100644 GIT binary patch literal 52193 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 literal 52375 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 diff --git a/docs/tutorials/ofdm.rst b/docs/tutorials/ofdm.rst index 410a5e8..7cfe675 100644 --- a/docs/tutorials/ofdm.rst +++ b/docs/tutorials/ofdm.rst @@ -146,7 +146,7 @@ Results .. code:: - single carrier: SER 0.0117, 3669 ms + single carrier: SER 0.0117, 3713 ms .. image:: img/one_shot_ofdm_fig2.png :width: 100% @@ -202,7 +202,7 @@ Results .. code:: - OFDM : SER 0.0406, 1.00 ms (3670 times faster) + OFDM : SER 0.0406, 1.06 ms (3494 times faster) .. image:: img/one_shot_ofdm_fig3.png :width: 100% @@ -221,7 +221,7 @@ range of SNR values: .. literalinclude:: ../../examples/ofdm/one_shot_ofdm.py :language: python - :lines: 101-128 + :lines: 101-130 .. code:: @@ -268,17 +268,17 @@ block length grows: .. literalinclude:: ../../examples/ofdm/one_shot_ofdm.py :language: python - :lines: 129-165 + :lines: 131-166 .. code:: receiver runtime [ms], and their ratio block length N single carrier OFDM ratio --------------------------------------------- - 128 7.34 0.568 12.9 - 256 34.91 0.567 61.6 - 512 188.09 0.793 237.1 - 1024 1377.50 0.862 1598.3 + 128 8.16 0.805 10.1 + 256 33.58 0.733 45.8 + 512 219.69 0.890 246.8 + 1024 1491.35 0.945 1577.4 .. image:: img/one_shot_ofdm_fig5.png :width: 100% diff --git a/docs/tutorials/ofdm_papr.rst b/docs/tutorials/ofdm_papr.rst index f2dd948..4dc2ea3 100644 --- a/docs/tutorials/ofdm_papr.rst +++ b/docs/tutorials/ofdm_papr.rst @@ -45,14 +45,14 @@ are simply not seen. .. literalinclude:: ../../examples/ofdm/monte_carlo_ofdm_papr.py :language: python - :lines: 1-44 + :lines: 1-41 Let us generate four OFDM symbols and look at the instantaneous power, normalized by its own mean: .. literalinclude:: ../../examples/ofdm/monte_carlo_ofdm_papr.py :language: python - :lines: 47-63 + :lines: 43-57 .. image:: img/monte_carlo_ofdm_papr_fig1.png :width: 100% @@ -81,7 +81,7 @@ non-zero probability. .. literalinclude:: ../../examples/ofdm/monte_carlo_ofdm_papr.py :language: python - :lines: 69-95 + :lines: 59-89 .. image:: img/monte_carlo_ofdm_papr_fig2.png :width: 100% @@ -109,7 +109,7 @@ with those values, which saves reducing them by hand: .. literalinclude:: ../../examples/ofdm/monte_carlo_ofdm_papr.py :language: python - :lines: 98-104 + :lines: 91-98 .. code:: @@ -150,20 +150,10 @@ the oversampling rather than the effective count: the fit belongs to the library, with its domain of validity, rather than to each script that draws the curve. -The fitted constant can be avoided. Counting how often a Gaussian process -crosses a level gives an effective count that grows with the threshold -instead, - -.. math:: - - \mathrm{CCDF}(\gamma) \simeq 1 - \exp\left(-N_{sc} - \sqrt{\frac{\pi}{3}}\, \sqrt{\gamma}\, e^{-\gamma}\right) - -which the same function returns with ``method="level_crossing"``. It has no -fitted constant, but it describes the peak of the **continuous-time** -waveform, which a sampled one can only underestimate -- so it reads high on -sampled data, and it is a large-threshold approximation. The two are -compared against the measurement at the end of this page. +A fit-free alternative based on level-crossing counts exists -- the same +function returns it with ``method="level_crossing"`` -- but it describes the +peak of the **continuous-time** waveform, which sampled data can only +underestimate, so it reads high here. Implementation """""""""""""" @@ -172,7 +162,7 @@ We estimate the CCDF over 20 000 OFDM symbols, for 256 and 1024 subcarriers: .. literalinclude:: ../../examples/ofdm/monte_carlo_ofdm_papr.py :language: python - :lines: 109-145 + :lines: 100-151 Results """"""" @@ -184,34 +174,13 @@ Results .. literalinclude:: ../../examples/ofdm/monte_carlo_ofdm_papr.py :language: python - :lines: 146-150 + :lines: 153-157 .. code:: N_sc = 256: PAPR exceeded once in a thousand symbols above 11.30 dB N_sc = 1024: PAPR exceeded once in a thousand symbols above 11.72 dB -Which of the two models to believe is a question the measurement answers: - -.. literalinclude:: ../../examples/ofdm/monte_carlo_ofdm_papr.py - :language: python - :lines: 152-166 - -.. code:: - - N_sc level threshold effective level crossing - 256 1e-02 10.43 dB 1.2e-02 1.4e-02 - 256 1e-03 11.28 dB 1.1e-03 1.4e-03 - 1024 1e-02 11.00 dB 9.6e-03 1.2e-02 - 1024 1e-03 11.69 dB 1.1e-03 1.6e-03 - -The effective-count model is within 20 % of the measurement, the -level-crossing one 20 to 60 % above it -- consistently above, which is the -direction it must err in, since it is the continuous-time waveform that is -being modelled and the simulation only sees four samples per Nyquist -interval. Take the first to size an amplifier from sampled data, and the -second when the question is the analogue waveform itself. - The measured points sit on the closed form over the whole range. As expected, the probability of a large PAPR grows with the number of subcarriers -- but slowly: four times as many subcarriers cost only 0.4 dB, because the number diff --git a/examples/ofdm/monte_carlo_ofdm_papr.py b/examples/ofdm/monte_carlo_ofdm_papr.py index 7f3d36e..f6bd541 100644 --- a/examples/ofdm/monte_carlo_ofdm_papr.py +++ b/examples/ofdm/monte_carlo_ofdm_papr.py @@ -26,28 +26,22 @@ constellation = Constellation("PSK", 4) -def get_transmitter(n_sub, oversampling=os, name="ofdm"): - """The OFDM transmitter, up to the IFFT. - - Oversampling is zero padding: the data occupy ``n_sub`` of the - ``oversampling * n_sub`` bins, so the IFFT interpolates between the - Nyquist samples and the peaks stop hiding between them. - """ - carrier_type = np.zeros(oversampling * n_sub) - carrier_type[:n_sub] = 1 - return Sequential([ - SymbolGenerator(constellation.order, name="tx"), - SymbolMapper(constellation), - Serial2Parallel(n_sub, name="s2p"), - CarrierAllocator(carrier_type=carrier_type, name="carrier_allocator"), - IFFTProcessor(), - ], name=name) - - # --- what the transmitter puts out ----------------------------------- -chain = get_transmitter(N_sc) -chain.seed(0) -blocks = chain(4 * N_sc) # four OFDM symbols +# One transmitter, up to the IFFT. Oversampling is zero padding: the +# data occupy N_sc of the os * N_sc bins, so the IFFT interpolates +# between the Nyquist samples and the peaks stop hiding between them. +carrier_1024 = np.zeros(os * N_sc) +carrier_1024[:N_sc] = 1 +ofdm_1024 = Sequential([ + SymbolGenerator(constellation.order, name="tx"), + SymbolMapper(constellation), + Serial2Parallel(N_sc, name="s2p"), + CarrierAllocator(carrier_type=carrier_1024, name="carrier_allocator"), + IFFTProcessor(), +], name="ofdm 1024") + +ofdm_1024.seed(0) +blocks = ofdm_1024(4 * N_sc) # four OFDM symbols signal = np.ravel(blocks) # C-order flatten of the (T, F) blocks power = np.abs(signal) ** 2 / np.mean(np.abs(signal) ** 2) @@ -66,7 +60,7 @@ def get_transmitter(n_sub, oversampling=os, name="ofdm"): # Each sample is a sum of N_sc independent terms, so the central limit # theorem applies: the samples are complex Gaussian, and their power is # exponential. Nothing about OFDM is needed beyond that. -long_run = np.ravel(chain(200 * N_sc)) +long_run = np.ravel(ofdm_1024(200 * N_sc)) normalized = long_run / np.std(long_run) gain = np.abs(long_run) ** 2 / np.mean(np.abs(long_run) ** 2) @@ -104,21 +98,34 @@ def get_transmitter(n_sub, oversampling=os, name="ofdm"): f"{compute_papr(blocks, unit='dB', axis=-1, reduction='mean'):.2f} dB") # --- the distribution ------------------------------------------------- -# The CCDF is estimated over many symbols, in batches, because 20 000 -# OFDM symbols at 4096 samples do not have to exist at the same time. +# Two subcarrier counts, so two chains -- the 1024 one already exists. +# The batch needs no loop: Serial2Parallel stacks the OFDM symbols on +# the leading axis, so 20 000 symbols are one call and compute_papr +# reads one value per row. +n_symbols = 20000 threshold_dB = np.arange(4, 14, 0.1) -n_batches, batch = 20, 1000 -measured, reference = {}, {} -for n_sub in (256, 1024): - transmitter = get_transmitter(n_sub) - transmitter.seed(1) - values = np.concatenate([ - compute_papr(transmitter(batch * n_sub), unit="dB", axis=-1) - for _ in range(n_batches)]) - sorted_dB, ccdf = compute_ccdf(values) - measured[f"$N_{{sc}}$ = {n_sub}"] = (sorted_dB, ccdf) - reference[f"$N_{{sc}}$ = {n_sub}"] = compute_papr_ccdf_theo( - threshold_dB, n_sub, oversampling=os, unit="dB") + +carrier_256 = np.zeros(os * 256) +carrier_256[:256] = 1 +ofdm_256 = Sequential([ + SymbolGenerator(constellation.order, name="tx"), + SymbolMapper(constellation), + Serial2Parallel(256, name="s2p"), + CarrierAllocator(carrier_type=carrier_256, name="carrier_allocator"), + IFFTProcessor(), +], name="ofdm 256") + +ofdm_256.seed(1) +papr_256 = compute_papr(ofdm_256(n_symbols * 256), unit="dB", axis=-1) +ofdm_1024.seed(1) +papr_1024 = compute_papr(ofdm_1024(n_symbols * N_sc), unit="dB", axis=-1) + +measured = {"$N_{sc}$ = 256": compute_ccdf(papr_256), + "$N_{sc}$ = 1024": compute_ccdf(papr_1024)} +reference = {} +for name, n_sub in (("$N_{sc}$ = 256", 256), ("$N_{sc}$ = 1024", 1024)): + reference[name] = compute_papr_ccdf_theo(threshold_dB, n_sub, + oversampling=os, unit="dB") # Markers are placed on a logarithmic grid of the ordinate: spacing them # evenly in index would crowd the top of the curve and leave the tail -- @@ -149,18 +156,3 @@ def get_transmitter(n_sub, oversampling=os, name="ofdm"): print(f"N_sc = {n_sub:4d}: PAPR exceeded once in a thousand symbols above " f"{solved:.2f} dB") -# --- the two models, against the measurement ------------------------- -# "effective" replaces the sample count by a fitted multiple of N_sc; -# "level_crossing" replaces the fitted constant by a term that grows -# with the threshold, at the price of describing the *continuous* -# waveform, whose peak a sampled one can only underestimate. -print("\nCCDF models against the measurement") -print("N_sc level threshold effective level crossing") -for name, (sorted_dB, ccdf) in measured.items(): - n_sub = int(name.split("= ")[1].rstrip("$")) - for level in (1e-2, 1e-3): - index = int(np.clip(ccdf.size * (1 - level), 0, ccdf.size - 1)) - at = sorted_dB[index] - print(f"{n_sub:5d} {ccdf[index]:6.0e} {at:8.2f} dB " - f"{compute_papr_ccdf_theo(at, n_sub, oversampling=os, unit='dB'):11.1e}" - f"{compute_papr_ccdf_theo(at, n_sub, unit='dB', method='level_crossing'):16.1e}") diff --git a/examples/ofdm/one_shot_ofdm.py b/examples/ofdm/one_shot_ofdm.py index 81c0c58..348cd40 100644 --- a/examples/ofdm/one_shot_ofdm.py +++ b/examples/ofdm/one_shot_ofdm.py @@ -109,12 +109,14 @@ snr_list = np.arange(6, 22, 2) n_trials = 2 -# --- simulation loop ------------------------------------------------- +# --- the sweep: no simulation loop ----------------------------------- measured = {} -for name, chain in (("single carrier", sc_chain), ("OFDM", ofdm_chain)): - measured[name] = monte_carlo(chain, "data_rx.snr_dB", snr_list, - {"ser": compute_ser}, (n_trials, N), - reference="data_tx", seed=1)["ser"] +measured["single carrier"] = monte_carlo( + sc_chain, "data_rx.snr_dB", snr_list, {"ser": compute_ser}, + (n_trials, N), reference="data_tx", seed=1)["ser"] +measured["OFDM"] = monte_carlo( + ofdm_chain, "data_rx.snr_dB", snr_list, {"ser": compute_ser}, + (n_trials, N), reference="data_tx", seed=1)["ser"] # --- results: table and figure --------------------------------------- @@ -128,20 +130,19 @@ # --- what it costs --------------------------------------------------- # A chain records the wall time of its last pass in `elapsed_`, so the -# run is also the measurement. +# run is also the measurement. One loop, over the swept lengths; the +# two chains are timed explicitly inside it. lengths = np.array([128, 256, 512, 1024]) +runtime = {"single carrier": np.zeros(len(lengths)), + "OFDM": np.zeros(len(lengths))} -# --- metrics, pre-allocated ------------------------------------------ -runtime = {} -for name in ("single carrier", "OFDM"): - runtime[name] = np.zeros(len(lengths)) - -# --- simulation loop ------------------------------------------------- for index, length in enumerate(lengths): - for name, chain in (("single carrier", sc_chain), ("OFDM", ofdm_chain)): - chain.seed(1) - chain(int(length)) - runtime[name][index] = 1e3 * chain.elapsed_ + sc_chain.seed(1) + sc_chain(int(length)) + runtime["single carrier"][index] = 1e3 * sc_chain.elapsed_ + ofdm_chain.seed(1) + ofdm_chain(int(length)) + runtime["OFDM"][index] = 1e3 * ofdm_chain.elapsed_ # --- results: table and figure --------------------------------------- From 30f78fcdd73dc2d5defbb25b338c88fc614a7a24 Mon Sep 17 00:00:00 2001 From: Claude Date: Fri, 14 Aug 2026 04:18:50 +0000 Subject: [PATCH 4/6] Strip the coding tutorial of its factories, and vary n_iter by set_params Three chains, written out -- uncoded, hard, soft -- and three explicit monte_carlo calls in place of a factory pair and a three-iteration loop; the per-curve timing prints and the hand-rolled aligned lines become two print_data tables, the second confronting the soft measurement with the union bound where the page discusses it. The LDPC study builds ONE chain and reconfigures its decoder between the two sweeps with set_params(decoder__n_iter=25) instead of rebuilding the Sequential inside a loop. The mermaid dump and the stray plt.show are gone, the page re-pastes its tables from one run, and the measured values are unchanged -- same seeds, same draws. Co-Authored-By: Claude Opus 5 --- docs/tutorials/coding.rst | 71 +++++++++----- examples/simple/channel_coding.py | 152 ++++++++++++++++-------------- 2 files changed, 129 insertions(+), 94 deletions(-) diff --git a/docs/tutorials/coding.rst b/docs/tutorials/coding.rst index 23424fb..83931dc 100644 --- a/docs/tutorials/coding.rst +++ b/docs/tutorials/coding.rst @@ -61,7 +61,7 @@ simple -- and the codes below all have rate 1/2. .. literalinclude:: ../../examples/simple/channel_coding.py :language: python - :lines: 22-31 + :lines: 21-29 That helper deserves a line of its own, because it is where most coded simulations go wrong. The channel sees *symbols*, so it is parameterized by @@ -106,23 +106,29 @@ a path in a **trellis**. That trellis is the object the decoder searches. .. literalinclude:: ../../examples/simple/channel_coding.py :language: python - :lines: 33-55 + :lines: 32-46 .. code:: generators ('0o133', '0o171') K = 7 states = 64 rate = 0.5 4 bits in -> [1 1 0 1 0 0 0 1 1 0 1 0 0 0 1 0 0 1 1 1] (with the tail) free distance d_free = 10 - d 10 11 12 13 14 15 - a_d 11 0 38 0 193 0 - beta_d 36 0 211 0 1404 0 + distance spectrum + d a_d beta_d + --------------- + 10 11 36 + 11 0 0 + 12 38 211 + 13 0 0 + 14 193 1404 + 15 0 0 Four input bits produced twenty output bits rather than eight: the encoder is **terminated**, so :math:`K - 1 = 6` zero bits are appended to flush the register and bring it back to the all-zero state. On a short block that overhead is visible; on a realistic one it is not. -The last three lines are the code's **distance spectrum**, and they are worth +The table is the code's **distance spectrum**, and they are worth more than they look. :math:`d_{\mathrm{free}} = 10` is the smallest Hamming distance between two distinct code sequences; :math:`a_d` counts the error events at distance :math:`d`, and :math:`\beta_d` counts the *information* @@ -168,17 +174,21 @@ wrong side. The information thrown away by deciding too early is worth about .. literalinclude:: ../../examples/simple/channel_coding.py :language: python - :lines: 57-89 - -The chain, as the chain itself describes it: - -.. mermaid:: mermaid/channel_coding.mmd + :lines: 49-90 .. code:: - uncoded 7.86e-02 5.68e-02 3.79e-02 2.28e-02 1.31e-02 6.45e-03 2.80e-03 7.75e-04 (0.0 s) - hard-decision Viterbi 3.71e-01 2.43e-01 1.14e-01 3.15e-02 7.52e-03 9.75e-04 0.00e+00 0.00e+00 (8.1 s) - soft-decision Viterbi 1.40e-01 4.32e-02 3.63e-03 3.50e-04 0.00e+00 0.00e+00 0.00e+00 0.00e+00 (8.9 s) + BER + Eb/N0 [dB] uncoded hard-decision Viterbi soft-decision Viterbi + ------------------------------------------------------------------- + 0 7.865e-02 3.708e-01 1.401e-01 + 1 5.680e-02 2.434e-01 4.320e-02 + 2 3.787e-02 1.143e-01 3.625e-03 + 3 2.278e-02 3.150e-02 3.500e-04 + 4 1.305e-02 7.525e-03 0.000e+00 + 5 6.450e-03 9.750e-04 0.000e+00 + 6 2.800e-03 0.000e+00 0.000e+00 + 7 7.750e-04 0.000e+00 0.000e+00 Three readings, and the first one is a warning. @@ -195,7 +205,7 @@ needs 5 dB and soft decoding a little under 3 -- the classic figure for this code. Nothing was added to the receiver except *not throwing information away*: the same trellis, the same recursion, a different branch metric. -**And the last two columns are not results.** Zero errors in 40 000 bits does +**And the zero entries are not results.** Zero errors in 40 000 bits does not mean the BER is zero; it means it is somewhere below roughly :math:`1/40000 = 2.5 \times 10^{-5}` and this simulation cannot see it. The figure drops those points rather than drawing them at zero on a logarithmic @@ -224,11 +234,21 @@ closed form: no simulation, no random draw, and no floor at .. literalinclude:: ../../examples/simple/channel_coding.py :language: python - :lines: 91-101 + :lines: 92-106 .. code:: - union bound 1.82e+01 9.32e-01 2.85e-02 6.81e-04 1.87e-05 4.43e-07 5.61e-09 2.70e-11 + BER + Eb/N0 [dB] soft-decision Viterbi union bound + ---------------------------------------------- + 0 1.401e-01 1.817e+01 + 1 4.320e-02 9.323e-01 + 2 3.625e-03 2.846e-02 + 3 3.500e-04 6.814e-04 + 4 0.000e+00 1.869e-05 + 5 0.000e+00 4.427e-07 + 6 0.000e+00 5.609e-09 + 7 0.000e+00 2.702e-11 .. image:: img/channel_coding_fig1.png :width: 100% @@ -279,17 +299,26 @@ by construction, there is no hard-decision variant of it. .. literalinclude:: ../../examples/simple/channel_coding.py :language: python - :lines: 103-128 + :lines: 108-139 .. code:: LDPC: H is 1020 x 2040, k = 1022 information bits, rate = 0.501, column weight 3, row weight 6 - LDPC 5 iterations 1.70e-01 1.09e-01 3.31e-02 2.30e-03 0.00e+00 0.00e+00 0.00e+00 0.00e+00 - LDPC 25 iterations 1.70e-01 1.14e-01 8.78e-03 0.00e+00 0.00e+00 0.00e+00 0.00e+00 0.00e+00 + BER + Eb/N0 [dB] LDPC (2040, 1022), 5 iterations LDPC (2040, 1022), 25 iterations + ----------------------------------------------------------------------------- + 0 0.17021 0.16955 + 1 0.10908 0.11424 + 2 0.03312 0.00878 + 3 0.00230 0.00000 + 4 0.00000 0.00000 + 5 0.00000 0.00000 + 6 0.00000 0.00000 + 7 0.00000 0.00000 .. literalinclude:: ../../examples/simple/channel_coding.py :language: python - :lines: 130-143 + :lines: 141-148 .. image:: img/channel_coding_fig2.png :width: 100% diff --git a/examples/simple/channel_coding.py b/examples/simple/channel_coding.py index 274d1ab..6675770 100644 --- a/examples/simple/channel_coding.py +++ b/examples/simple/channel_coding.py @@ -1,9 +1,7 @@ -import time - import numpy as np import matplotlib.pyplot as plt -from comnumpy import monte_carlo +from comnumpy import monte_carlo, print_data from comnumpy.core import Sequential from comnumpy.core.channels import AWGN from comnumpy.core.generators import SymbolGenerator @@ -42,57 +40,63 @@ def snr_dB(ebn0, code_rate): spectrum = distance_spectrum((0o133, 0o171), n_terms=4) print(f"free distance d_free = {spectrum.d_free}") -def row(label, values): - """One line of the distance spectrum, six terms wide.""" - line = label - for value in values[:6]: - line += f"{value:7d}" - return line - - -print(row("d ", spectrum.distances)) -print(row("a_d ", spectrum.a_d)) -print(row("beta_d ", spectrum.beta_d)) - - -def get_uncoded_chain(): - return Sequential([ - SymbolGenerator(2, name="tx"), - SymbolMapper(BPSK), - AWGN(snr_dB=0.0, name="noise"), - SymbolDemapper(BPSK), - ], taps=["tx"], name="uncoded BPSK") - - -def get_coded_chain(soft): - return Sequential([ - SymbolGenerator(2, name="tx"), - ConvolutionalEncoder((0o133, 0o171)), - SymbolMapper(BPSK), - AWGN(snr_dB=0.0, name="noise"), - SymbolDemapper(BPSK, soft=soft), - ViterbiDecoder((0o133, 0o171), soft=soft), - ], taps=["tx"], name=f"K=7 convolutional, {'soft' if soft else 'hard'}") - +print_data({"x": spectrum.distances[:6], + "curves": {"a_d": spectrum.a_d[:6], + "beta_d": spectrum.beta_d[:6]}}, + xlabel="d", ylabel="distance spectrum") + + +# --- three chains, three sweeps -------------------------------------- +# One Sequential per scheme, written out; monte_carlo moves the noise. +uncoded = Sequential([ + SymbolGenerator(2, name="tx"), + SymbolMapper(BPSK), + AWGN(snr_dB=0.0, name="noise"), + SymbolDemapper(BPSK), +], taps=["tx"], name="uncoded BPSK") + +hard = Sequential([ + SymbolGenerator(2, name="tx"), + ConvolutionalEncoder((0o133, 0o171)), + SymbolMapper(BPSK), + AWGN(snr_dB=0.0, name="noise"), + SymbolDemapper(BPSK), + ViterbiDecoder((0o133, 0o171)), +], taps=["tx"], name="K=7 convolutional, hard") + +soft = Sequential([ + SymbolGenerator(2, name="tx"), + ConvolutionalEncoder((0o133, 0o171)), + SymbolMapper(BPSK), + AWGN(snr_dB=0.0, name="noise"), + SymbolDemapper(BPSK, soft=True), + ViterbiDecoder((0o133, 0o171), soft=True), +], taps=["tx"], name="K=7 convolutional, soft") curves = {} -for label, chain, code_rate in (("uncoded", get_uncoded_chain(), 1.0), - ("hard-decision Viterbi", get_coded_chain(False), rate), - ("soft-decision Viterbi", get_coded_chain(True), rate)): - start = time.perf_counter() - results = monte_carlo(chain, "noise.snr_dB", snr_dB(ebn0_dB, code_rate), - {"ber": compute_ser}, n_bits, reference="tx", seed=4) - curves[label] = results["ber"] - line = f"{label:24s} " - for value in results["ber"]: - line += f"{value:.2e} " - print(line + f" ({time.perf_counter() - start:.1f} s)") - +curves["uncoded"] = monte_carlo( + uncoded, "noise.snr_dB", snr_dB(ebn0_dB, 1.0), {"ber": compute_ser}, + n_bits, reference="tx", seed=4)["ber"] +curves["hard-decision Viterbi"] = monte_carlo( + hard, "noise.snr_dB", snr_dB(ebn0_dB, rate), {"ber": compute_ser}, + n_bits, reference="tx", seed=4)["ber"] +curves["soft-decision Viterbi"] = monte_carlo( + soft, "noise.snr_dB", snr_dB(ebn0_dB, rate), {"ber": compute_ser}, + n_bits, reference="tx", seed=4)["ber"] + +# --- results: table --------------------------------------------------- +print() +print_data({"x": ebn0_dB, "curves": curves}, + xlabel="Eb/N0 [dB]", ylabel="BER") + +# --- the union bound, against the soft measurement ------------------- bound = union_bound_ber(distance_spectrum((0o133, 0o171), n_terms=8), ebn0_dB) -line = "union bound " -for value in bound: - line += f"{value:.2e} " -print(line) +print() +print_data({"x": ebn0_dB, + "curves": {"soft-decision Viterbi": curves[ + "soft-decision Viterbi"], + "union bound": bound}}, + xlabel="Eb/N0 [dB]", ylabel="BER") ax = plot_error_rate(ebn0_dB, curves, theory={"soft-decision Viterbi": bound}, x_theory=ebn0_dB, xlabel="Eb/N0 [dB]", ylabel="BER", @@ -107,25 +111,32 @@ def get_coded_chain(soft): f"information bits, rate = {ldpc_encoder.rate:.3f}, " f"column weight {H.sum(axis=0)[0]}, row weight {H.sum(axis=1)[0]}") +# One chain; the iteration count is a parameter, so the second sweep +# reconfigures the decoder with set_params instead of rebuilding. n_frames = 40 +ldpc = Sequential([ + SymbolGenerator(2, name="tx"), + LDPCEncoder(H), + SymbolMapper(BPSK), + AWGN(snr_dB=0.0, name="noise"), + SymbolDemapper(BPSK, soft=True), + LDPCDecoder(H, n_iter=5, name="decoder"), +], taps=["tx"], name="LDPC") + ldpc_curves = {} -for n_iter in (5, 25): - link = Sequential([ - SymbolGenerator(2, name="tx"), - LDPCEncoder(H), - SymbolMapper(BPSK), - AWGN(snr_dB=0.0, name="noise"), - SymbolDemapper(BPSK, soft=True), - LDPCDecoder(H, n_iter=n_iter), - ], taps=["tx"], name=f"LDPC, {n_iter} iterations") - results = monte_carlo(link, "noise.snr_dB", snr_dB(ebn0_dB, ldpc_encoder.rate), - {"ber": compute_ser}, (n_frames, ldpc_encoder.k), - reference="tx", seed=6) - ldpc_curves[f"LDPC (2040, {ldpc_encoder.k}), {n_iter} iterations"] = results["ber"] - line = f"LDPC {n_iter:2d} iterations " - for value in results["ber"]: - line += f"{value:.2e} " - print(line) +ldpc_curves[f"LDPC (2040, {ldpc_encoder.k}), 5 iterations"] = monte_carlo( + ldpc, "noise.snr_dB", snr_dB(ebn0_dB, ldpc_encoder.rate), + {"ber": compute_ser}, (n_frames, ldpc_encoder.k), + reference="tx", seed=6)["ber"] +ldpc.set_params(decoder__n_iter=25) +ldpc_curves[f"LDPC (2040, {ldpc_encoder.k}), 25 iterations"] = monte_carlo( + ldpc, "noise.snr_dB", snr_dB(ebn0_dB, ldpc_encoder.rate), + {"ber": compute_ser}, (n_frames, ldpc_encoder.k), + reference="tx", seed=6)["ber"] + +print() +print_data({"x": ebn0_dB, "curves": ldpc_curves}, + xlabel="Eb/N0 [dB]", ylabel="BER") comparison = {"uncoded": curves["uncoded"], "soft-decision Viterbi": curves["soft-decision Viterbi"]} @@ -136,9 +147,4 @@ def get_coded_chain(soft): plt.tight_layout() plt.savefig(f"{img_dir}/channel_coding_fig2.png") -mermaid_dir = "../../docs/tutorials/mermaid/" -for diagram_name, diagram_chain in [("channel_coding", get_coded_chain(True))]: - with open(f"{mermaid_dir}/{diagram_name}.mmd", "w") as stream: - stream.write(diagram_chain.to_mermaid()) -plt.show() From b46d461aa23d8f2fe41391ab80b16bae861313ed Mon Sep 17 00:00:00 2001 From: Claude Date: Fri, 14 Aug 2026 04:24:13 +0000 Subject: [PATCH 5/6] Sweep the tutorials onto the conventions: awgn, mimo cost, papr, shaping The conventions sweep over every page-backed script. monte_carlo_awgn loses its chain factory -- one Sequential written inline, and the constellation-order study reconfigures it with set_params instead of rebuilding -- and its mermaid export; the awgn page drops the diagram section, whose feature demo lives in the getting-started page. The one_shot_mimo cost study unrolls its two-technique loop into one sweep loop timing both chains explicitly, and its metric dict is a literal. The PAPR page's theory references become a dict literal. The shaping script keeps its interpolation -- it reads the page's own computed capacity curves, not a closed form -- and loses only the mermaid dump. All four pages remapped and range-checked. Co-Authored-By: Claude Opus 5 --- docs/tutorials/awgn.rst | 29 +++++------------ docs/tutorials/mermaid/awgn_chain.mmd | 10 ------ docs/tutorials/mermaid/shaping_pas.mmd | 6 ---- docs/tutorials/mimo.rst | 2 +- docs/tutorials/ofdm_papr.rst | 4 +-- docs/tutorials/shaping.rst | 18 +++++------ examples/mimo/one_shot_mimo.py | 41 ++++++++++++++---------- examples/ofdm/monte_carlo_ofdm_papr.py | 9 +++--- examples/simple/monte_carlo_awgn.py | 40 ++++++++--------------- examples/simple/probabilistic_shaping.py | 3 -- 10 files changed, 62 insertions(+), 100 deletions(-) delete mode 100644 docs/tutorials/mermaid/awgn_chain.mmd delete mode 100644 docs/tutorials/mermaid/shaping_pas.mmd diff --git a/docs/tutorials/awgn.rst b/docs/tutorials/awgn.rst index 6d416c2..0ffebb5 100644 --- a/docs/tutorials/awgn.rst +++ b/docs/tutorials/awgn.rst @@ -81,7 +81,7 @@ this page builds one per constellation order. .. literalinclude:: ../../examples/simple/monte_carlo_awgn.py :language: python - :lines: 25-42 + :lines: 25-33 The processors are: @@ -99,19 +99,6 @@ The processors are: - ``SymbolDemapper`` Maps received noisy constellation points back to integers. -The chain, as the chain itself describes it: - -.. mermaid:: mermaid/awgn_chain.mmd - -The diagram above is not drawn by hand. It is what the chain says about -itself -- ``chain.to_mermaid()`` (decision D33c) -- exported by the -script, so the block names are the ones the code uses and a dashed -outline marks a tapped block: - -.. literalinclude:: ../../examples/simple/monte_carlo_awgn.py - :language: python - :lines: 129-135 - Monte Carlo Simulation """""""""""""""""""""" @@ -122,7 +109,7 @@ against the transmitted symbols. .. literalinclude:: ../../examples/simple/monte_carlo_awgn.py :language: python - :lines: 44-53 + :lines: 35-44 Three chain services appear there, and they are the ones every study is made of. @@ -141,7 +128,7 @@ at every point: .. literalinclude:: ../../examples/simple/monte_carlo_awgn.py :language: python - :lines: 55-66 + :lines: 46-58 .. code:: @@ -209,7 +196,7 @@ two expressions above transcribe line for line: .. literalinclude:: ../../examples/simple/monte_carlo_awgn.py :language: python - :lines: 69-82 + :lines: 60-73 From the constellation """""""""""""""""""""" @@ -222,7 +209,7 @@ by :math:`k` above happens inside. .. literalinclude:: ../../examples/simple/monte_carlo_awgn.py :language: python - :lines: 84-89 + :lines: 75-81 .. code:: @@ -244,7 +231,7 @@ share a colour, so a pair reads as one statement. .. literalinclude:: ../../examples/simple/monte_carlo_awgn.py :language: python - :lines: 91-97 + :lines: 83-89 .. image:: img/monte_carlo_awgn.png :width: 100% @@ -272,7 +259,7 @@ not guess (decision D41), so it happens at the call site: .. literalinclude:: ../../examples/simple/monte_carlo_awgn.py :language: python - :lines: 99-120 + :lines: 91-114 The metric changes with the axis. Against :math:`E_b/N_0` the natural quantity is the bit error rate, and ``compute_ber`` needs the symbol width, which @@ -291,7 +278,7 @@ disagreeing with theory. .. literalinclude:: ../../examples/simple/monte_carlo_awgn.py :language: python - :lines: 120-127 + :lines: 116-123 .. image:: img/monte_carlo_awgn_orders.png :width: 100% diff --git a/docs/tutorials/mermaid/awgn_chain.mmd b/docs/tutorials/mermaid/awgn_chain.mmd deleted file mode 100644 index df05c43..0000000 --- a/docs/tutorials/mermaid/awgn_chain.mmd +++ /dev/null @@ -1,10 +0,0 @@ -flowchart LR - tx["SymbolGenerator"] - symbol_mapper["SymbolMapper"] - awgn_channel["AWGN"] - symbol_demapper["SymbolDemapper"] - tx --> symbol_mapper - symbol_mapper --> awgn_channel - awgn_channel --> symbol_demapper - classDef tapped stroke-dasharray: 4 2 - class tx tapped \ No newline at end of file diff --git a/docs/tutorials/mermaid/shaping_pas.mmd b/docs/tutorials/mermaid/shaping_pas.mmd deleted file mode 100644 index 4d39eb9..0000000 --- a/docs/tutorials/mermaid/shaping_pas.mmd +++ /dev/null @@ -1,6 +0,0 @@ -flowchart LR - bits["SymbolGenerator"] - dm["DistributionMatcher"] - signs["AmplitudeMapper"] - bits --> dm - dm --> signs \ No newline at end of file diff --git a/docs/tutorials/mimo.rst b/docs/tutorials/mimo.rst index 1e40645..6507eef 100644 --- a/docs/tutorials/mimo.rst +++ b/docs/tutorials/mimo.rst @@ -286,7 +286,7 @@ where that product no longer fits. We therefore time both detectors on .. literalinclude:: ../../examples/mimo/one_shot_mimo.py :language: python - :lines: 159-216 + :lines: 159-223 .. code:: diff --git a/docs/tutorials/ofdm_papr.rst b/docs/tutorials/ofdm_papr.rst index 4dc2ea3..cc12d84 100644 --- a/docs/tutorials/ofdm_papr.rst +++ b/docs/tutorials/ofdm_papr.rst @@ -162,7 +162,7 @@ We estimate the CCDF over 20 000 OFDM symbols, for 256 and 1024 subcarriers: .. literalinclude:: ../../examples/ofdm/monte_carlo_ofdm_papr.py :language: python - :lines: 100-151 + :lines: 100-152 Results """"""" @@ -174,7 +174,7 @@ Results .. literalinclude:: ../../examples/ofdm/monte_carlo_ofdm_papr.py :language: python - :lines: 153-157 + :lines: 154-158 .. code:: diff --git a/docs/tutorials/shaping.rst b/docs/tutorials/shaping.rst index ba8e07a..335755d 100644 --- a/docs/tutorials/shaping.rst +++ b/docs/tutorials/shaping.rst @@ -46,7 +46,7 @@ variance -- and the Gaussian is the maximum-entropy law at fixed variance. .. literalinclude:: ../../examples/simple/probabilistic_shaping.py :language: python - :lines: 1-32 + :lines: 1-31 Why a Uniform QAM Is Not Optimal @@ -59,7 +59,7 @@ then the mutual information :math:`I(X;Y)` of that discrete input, which .. literalinclude:: ../../examples/simple/probabilistic_shaping.py :language: python - :lines: 34-62 + :lines: 33-61 .. image:: img/probabilistic_shaping_fig1.png :width: 100% @@ -117,7 +117,7 @@ transmit power**, which is the only comparison that means anything. .. literalinclude:: ../../examples/simple/probabilistic_shaping.py :language: python - :lines: 64-119 + :lines: 63-118 .. image:: img/probabilistic_shaping_fig2.png :width: 100% @@ -156,7 +156,7 @@ that lives there: .. literalinclude:: ../../examples/simple/probabilistic_shaping.py :language: python - :lines: 121-133 + :lines: 120-132 .. code:: @@ -189,7 +189,7 @@ the rate is :math:`k/n`. As :math:`n` grows, :math:`k/n \to H(X)`; at finite .. literalinclude:: ../../examples/simple/probabilistic_shaping.py :language: python - :lines: 135-148 + :lines: 134-147 .. code:: @@ -218,9 +218,7 @@ compose instead of fighting. .. literalinclude:: ../../examples/simple/probabilistic_shaping.py :language: python - :lines: 150-162 - -.. mermaid:: mermaid/shaping_pas.mmd + :lines: 149-159 Uniform bits go in, shaped symbols come out, so the check is to run it and count what comes out. The signs are equiprobable, so the law the signed @@ -235,7 +233,7 @@ which is the Maxwell-Boltzmann law on the full constellation at the same .. literalinclude:: ../../examples/simple/probabilistic_shaping.py :language: python - :lines: 164-191 + :lines: 161-188 .. image:: img/probabilistic_shaping_fig3.png :width: 100% @@ -263,7 +261,7 @@ the generalized mutual information, .. literalinclude:: ../../examples/simple/probabilistic_shaping.py :language: python - :lines: 193-205 + :lines: 190-202 .. code:: diff --git a/examples/mimo/one_shot_mimo.py b/examples/mimo/one_shot_mimo.py index 1b5cd72..9167e70 100644 --- a/examples/mimo/one_shot_mimo.py +++ b/examples/mimo/one_shot_mimo.py @@ -180,25 +180,32 @@ SphereDecoder(big_constellation, H=big_H, name="detector"), ], taps=["tx"], name="4x4 MIMO, SD") -# --- metrics, pre-allocated ------------------------------------------ -elapsed = {} -for name in ("ML", "SD"): - elapsed[name] = np.zeros(len(snr_dB_list)) +elapsed = {"ML": np.zeros(len(snr_dB_list)), + "SD": np.zeros(len(snr_dB_list))} # --- simulation loop ------------------------------------------------- -# A wall time is measured per point, so this one stays a loop. -for name, big_chain in (("ML", ml_16), ("SD", sd_16)): - for index, snr_dB in enumerate(snr_dB_list): - big_chain.seed(4) - big_chain.set_params(noise__sigma2=4 * 10 ** (-snr_dB / 10)) - start = time.perf_counter() - detected = big_chain((4, 400)) - elapsed[name][index] = (time.perf_counter() - start) * 1e3 - errors = compute_ser(big_chain.tap("tx"), detected) - nodes = (f"{big_chain['detector'].nodes_:7.1f} nodes" - if name == "SD" else f"{16 ** 4:7d} nodes") - print(f" {name:2s} {snr_dB:2d} dB {elapsed[name][index]:8.1f} ms " - f"{nodes} SER {errors:.4f}") +# A wall time is measured per point, so the sweep stays a loop -- one +# loop, over the SNR, with both chains timed explicitly in the body. +for index, snr_dB in enumerate(snr_dB_list): + sigma2_point = 4 * 10 ** (-snr_dB / 10) + + ml_16.seed(4) + ml_16.set_params(noise__sigma2=sigma2_point) + start = time.perf_counter() + detected = ml_16((4, 400)) + elapsed["ML"][index] = (time.perf_counter() - start) * 1e3 + errors = compute_ser(ml_16.tap("tx"), detected) + print(f" ML {snr_dB:2d} dB {elapsed['ML'][index]:8.1f} ms " + f"{16 ** 4:7d} nodes SER {errors:.4f}") + + sd_16.seed(4) + sd_16.set_params(noise__sigma2=sigma2_point) + start = time.perf_counter() + detected = sd_16((4, 400)) + elapsed["SD"][index] = (time.perf_counter() - start) * 1e3 + errors = compute_ser(sd_16.tap("tx"), detected) + print(f" SD {snr_dB:2d} dB {elapsed['SD'][index]:8.1f} ms " + f"{sd_16['detector'].nodes_:7.1f} nodes SER {errors:.4f}") # --- results: figure ------------------------------------------------- # A runtime is not an error rate, so it does not go through diff --git a/examples/ofdm/monte_carlo_ofdm_papr.py b/examples/ofdm/monte_carlo_ofdm_papr.py index f6bd541..17b0845 100644 --- a/examples/ofdm/monte_carlo_ofdm_papr.py +++ b/examples/ofdm/monte_carlo_ofdm_papr.py @@ -122,10 +122,11 @@ measured = {"$N_{sc}$ = 256": compute_ccdf(papr_256), "$N_{sc}$ = 1024": compute_ccdf(papr_1024)} -reference = {} -for name, n_sub in (("$N_{sc}$ = 256", 256), ("$N_{sc}$ = 1024", 1024)): - reference[name] = compute_papr_ccdf_theo(threshold_dB, n_sub, - oversampling=os, unit="dB") +reference = { + "$N_{sc}$ = 256": compute_papr_ccdf_theo(threshold_dB, 256, + oversampling=os, unit="dB"), + "$N_{sc}$ = 1024": compute_papr_ccdf_theo(threshold_dB, 1024, + oversampling=os, unit="dB")} # Markers are placed on a logarithmic grid of the ordinate: spacing them # evenly in index would crowd the top of the curve and leave the tail -- diff --git a/examples/simple/monte_carlo_awgn.py b/examples/simple/monte_carlo_awgn.py index 13445c2..89e8e1f 100644 --- a/examples/simple/monte_carlo_awgn.py +++ b/examples/simple/monte_carlo_awgn.py @@ -22,24 +22,15 @@ snr_dB_list = np.arange(0, 22) -def get_chain(constellation): - """Symbols in, decided symbols out, over an AWGN channel. - - The last section of this page runs one of these per constellation - order, so the constellation is an argument rather than a global. The - transmitter is named because a sweep has to compare against what it - produced, and the channel is named because a sweep has to reconfigure - it. - """ - return Sequential([ - SymbolGenerator(constellation.order, name="tx"), - SymbolMapper(constellation), - AWGN(snr_dB=0, name="awgn_channel"), - SymbolDemapper(constellation), - ], taps=["tx"]) - - -chain = get_chain(constellation) +# One chain, transmitter to decision. Every block that a sweep must +# reconfigure is named: the channel for the SNR, the generator, mapper +# and demapper for the constellation the last section changes. +chain = Sequential([ + SymbolGenerator(constellation.order, name="tx"), + SymbolMapper(constellation, name="mapper"), + AWGN(snr_dB=0, name="awgn_channel"), + SymbolDemapper(constellation, name="demapper"), +], taps=["tx"]) # A Monte Carlo simulation is three parts, always in this order: the # metric pre-allocated, the loop that fills it, the display at the end. @@ -110,7 +101,11 @@ def qfunc(x): other = Constellation("QAM", int(order)) bits = int(bits_per_symbol[index]) snr_dB_values = ebn0_to_snr_dB(ebn0_dB_list, bits_per_symbol=bits) - collected = monte_carlo(get_chain(other), "awgn_channel.snr_dB", + # the same chain, reconfigured (D50): set_params re-runs the + # coercions a bare assignment would skip + chain.set_params(tx__M=other.order, mapper__alphabet=other, + demapper__alphabet=other) + collected = monte_carlo(chain, "awgn_channel.snr_dB", snr_dB_values, {"ber": partial(compute_ber, width=bits)}, N_compare, reference="tx", seed=1) @@ -126,10 +121,3 @@ def qfunc(x): ax.set_ylim(1e-6, 1) plt.savefig(f"{img_dir}/monte_carlo_awgn_orders.png") -# The chain diagrams this tutorial shows are exported from the chains -# themselves (D33c), so the picture cannot drift from the code -- the -# smoke test compares what a run writes with what the page displays. -mermaid_dir = "../../docs/tutorials/mermaid/" -for diagram_name, diagram_chain in [("awgn_chain", chain)]: - with open(f"{mermaid_dir}/{diagram_name}.mmd", "w") as stream: - stream.write(diagram_chain.to_mermaid()) diff --git a/examples/simple/probabilistic_shaping.py b/examples/simple/probabilistic_shaping.py index 4e78f4e..b6de16f 100644 --- a/examples/simple/probabilistic_shaping.py +++ b/examples/simple/probabilistic_shaping.py @@ -20,7 +20,6 @@ style.use() img_dir = "../../docs/tutorials/img/" -mermaid_dir = "../../docs/tutorials/mermaid/" snr_dB = np.arange(0, 27, 2) snr = 10 ** (snr_dB / 10) @@ -158,8 +157,6 @@ def shaped_rate(lam, value): AmplitudeMapper(amplitudes, name="signs"), ], name="probabilistic amplitude shaping") chain.seed(42) -with open(f"{mermaid_dir}/shaping_pas.mmd", "w") as stream: - stream.write(chain.to_mermaid()) # Run it and count. The signs are equiprobable, so the law carried by the # signed 8-PAM is P(+/- a_i) = P_A(a_i) / 2, which is Maxwell-Boltzmann From 837b99504b8a032d8e43b478d3b9850e92000165 Mon Sep 17 00:00:00 2001 From: Claude Date: Fri, 14 Aug 2026 04:31:35 +0000 Subject: [PATCH 6/6] Close the conventions sweep: gn_model, profiling, and the changelog The GN-model script drops its mermaid dump and plt.show, and its page drops the diagram and the include that quoted the dump; the factory stays, because its source genuinely changes structure -- a Gaussian stimulus against a mapped constellation. The profiling script keeps its mermaid export -- the getting-started page it backs presents chain introspection as the content -- and loses only the trailing plt.show. The two DBP scripts keep their factories: that is the one sanctioned chain split, for the Monte-Carlo cost of re-propagating the fibre. The CHANGELOG now records the whole doctrine sweep, including the entry the container rollback ate. Co-Authored-By: Claude Opus 5 --- CHANGELOG.md | 19 +++++++++++++++++++ docs/tutorials/gn_model.rst | 7 ------- docs/tutorials/mermaid/gn_model.mmd | 20 -------------------- examples/optical/gn_model.py | 6 ------ examples/simple/profiling_awgn_ofdm.py | 2 -- 5 files changed, 19 insertions(+), 35 deletions(-) delete mode 100644 docs/tutorials/mermaid/gn_model.mmd diff --git a/CHANGELOG.md b/CHANGELOG.md index b83c396..03bd35d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -45,6 +45,25 @@ one release; there is no compatibility layer. | `core.metrics.calculate_acpr` | `compute_acpr` — it was the only `calculate_*` in the library, against 17 `compute_*` | | `core.metrics.compute_effective_SNR`, `ofdm.metrics.compute_PAPR` | `compute_effective_snr`, `compute_papr` — the two capitalized outliers among functions otherwise all lowercase (`compute_ser`, `compute_ber`, `compute_evm`, `compute_ccdf`, `compute_mi`) | +### Changed — every tutorial script held to the writing doctrine + +The conventions sweep closed over the whole tutorial set. The coding +page: three chains written out in place of a factory pair, the LDPC +iteration count varied by `set_params(decoder__n_iter=)` on one chain +instead of rebuilding it in a loop, two `print_data` tables in place of +hand-rolled aligned prints. The AWGN page: the chain inline, the +constellation-order study reconfiguring it with `set_params`, the +diagram section gone (its feature demo lives in the getting-started +page). The OFDM page: two explicit `monte_carlo` calls and a runtime +loop over the swept lengths only. The MIMO cost study and the PAPR +references: unrolled. The shaping and GN-model scripts lose their +mermaid dumps and stray `plt.show`; the GN-model factory stays -- its +source genuinely changes structure (a Gaussian stimulus against a +mapped one) -- and so do the two DBP scripts' factories, the one +sanctioned chain split, for the Monte-Carlo cost of re-propagating the +fibre. The interpolation the shaping page keeps reads its own computed +capacity curves, not a closed form. + ### Changed — the Alamouti and MIMO tutorials rewritten on the batch Both pages carried simulation scaffolding that drowned the reader: a diff --git a/docs/tutorials/gn_model.rst b/docs/tutorials/gn_model.rst index 6c7d73c..8071586 100644 --- a/docs/tutorials/gn_model.rst +++ b/docs/tutorials/gn_model.rst @@ -252,8 +252,6 @@ Everything above is a prediction. Now we propagate samples and find out. :language: python :lines: 117-152 -.. mermaid:: mermaid/gn_model.mmd - ``launch_amplitude(power_W, polarizations=2)`` is the factor of two of the warning above, named rather than written: :math:`\sqrt{P/2}` of field per polarization for a channel power :math:`P`. @@ -402,11 +400,6 @@ enhanced GN model exists to recover that gap; this library does not implement it, and the table above is the honest statement of what that costs -- about a decibel for 16QAM, less as the format grows. -.. literalinclude:: ../../examples/optical/gn_model.py - :language: python - :lines: 205-209 - - Going further ^^^^^^^^^^^^^ diff --git a/docs/tutorials/mermaid/gn_model.mmd b/docs/tutorials/mermaid/gn_model.mmd deleted file mode 100644 index e5f15b2..0000000 --- a/docs/tutorials/mermaid/gn_model.mmd +++ /dev/null @@ -1,20 +0,0 @@ -flowchart LR - source["SymbolGenerator"] - tx["SymbolMapper"] - launch["Amplifier"] - upsampler["Upsampler"] - srrcfilter["SRRCFilter"] - fibre["FiberLink"] - dbp["DBP"] - srrcfilter_2["SRRCFilter"] - downsampler["Downsampler"] - source --> tx - tx --> launch - launch --> upsampler - upsampler --> srrcfilter - srrcfilter --> fibre - fibre --> dbp - dbp --> srrcfilter_2 - srrcfilter_2 --> downsampler - classDef tapped stroke-dasharray: 4 2 - class tx tapped \ No newline at end of file diff --git a/examples/optical/gn_model.py b/examples/optical/gn_model.py index 1ca5c27..c0d70e8 100644 --- a/examples/optical/gn_model.py +++ b/examples/optical/gn_model.py @@ -201,9 +201,3 @@ def measure(chain, powers_W, seed=3): noiseless.set_params(fibre__noise_scaling=0.0) value = measure(noiseless, [1e-3])[0] print(f"{label:12s} {value:10.2f} dB {value - nli_only_dB:+10.2f} dB") - -mermaid_dir = "../../docs/tutorials/mermaid/" -with open(f"{mermaid_dir}/gn_model.mmd", "w") as stream: - stream.write(get_chain().to_mermaid()) - -plt.show() diff --git a/examples/simple/profiling_awgn_ofdm.py b/examples/simple/profiling_awgn_ofdm.py index acafa31..e1bb0b7 100644 --- a/examples/simple/profiling_awgn_ofdm.py +++ b/examples/simple/profiling_awgn_ofdm.py @@ -60,5 +60,3 @@ for diagram_name, diagram_chain in [("profiling_chain", chain)]: with open(f"{mermaid_dir}/{diagram_name}.mmd", "w") as stream: stream.write(diagram_chain.to_mermaid()) - -plt.show()