From 23d04c9b91b4533dd18618c92adfcad657fc9e85 Mon Sep 17 00:00:00 2001 From: Michal Dengusiak Date: Mon, 19 Oct 2026 23:46:28 +0200 Subject: [PATCH 1/3] docs: S05 licensed GUI acceptance preflight (rehearsal, not acceptance) Acceptance matrix for the nine S05 cases, the real-ribbon rehearsal of cases 1, 3, 4, 5 and 7 on a local S03+S04 integration build, and the blockers that remain before formal S05. Co-Authored-By: Claude Opus 5.5 --- .../S05-LicensedAcceptance-Preflight.md | 67 ++ .../c1-tas-run-simulation/04-message-box.png | Bin 0 -> 3806 bytes .../c1-tas-run-simulation/box.tas-run.json | 702 ++++++++++++++++++ .../c1-tas-run-simulation/message-box.txt | 3 + .../06-compare-tab-Provenance.png | Bin 0 -> 97867 bytes .../diagnostics.txt | 28 + .../engine-comparison-run.json | 231 ++++++ .../diagnostics.txt | 28 + .../engine-comparison-run.json | 231 ++++++ .../c4-both-embedded/diagnostics.txt | 28 + .../engine-comparison-run.json | 232 ++++++ .../04-message-box.png | Bin 0 -> 1786 bytes .../box.tas-run.json | 702 ++++++++++++++++++ .../message-box.txt | 12 + 14 files changed, 2264 insertions(+) create mode 100644 documentation/S05-LicensedAcceptance-Preflight.md create mode 100644 documentation/evidence/s05-preflight-20261019/c1-tas-run-simulation/04-message-box.png create mode 100644 documentation/evidence/s05-preflight-20261019/c1-tas-run-simulation/box.tas-run.json create mode 100644 documentation/evidence/s05-preflight-20261019/c1-tas-run-simulation/message-box.txt create mode 100644 documentation/evidence/s05-preflight-20261019/c3a-both-explicit-session1/06-compare-tab-Provenance.png create mode 100644 documentation/evidence/s05-preflight-20261019/c3a-both-explicit-session1/diagnostics.txt create mode 100644 documentation/evidence/s05-preflight-20261019/c3a-both-explicit-session1/engine-comparison-run.json create mode 100644 documentation/evidence/s05-preflight-20261019/c3b-both-explicit-session2/diagnostics.txt create mode 100644 documentation/evidence/s05-preflight-20261019/c3b-both-explicit-session2/engine-comparison-run.json create mode 100644 documentation/evidence/s05-preflight-20261019/c4-both-embedded/diagnostics.txt create mode 100644 documentation/evidence/s05-preflight-20261019/c4-both-embedded/engine-comparison-run.json create mode 100644 documentation/evidence/s05-preflight-20261019/c7-tas-refusal-energy-simulation/04-message-box.png create mode 100644 documentation/evidence/s05-preflight-20261019/c7-tas-refusal-energy-simulation/box.tas-run.json create mode 100644 documentation/evidence/s05-preflight-20261019/c7-tas-refusal-energy-simulation/message-box.txt diff --git a/documentation/S05-LicensedAcceptance-Preflight.md b/documentation/S05-LicensedAcceptance-Preflight.md new file mode 100644 index 00000000..648014ba --- /dev/null +++ b/documentation/S05-LicensedAcceptance-Preflight.md @@ -0,0 +1,67 @@ +# S05 - Licensed Phase A GUI acceptance - PREFLIGHT (not acceptance) + +Roadmap: SAM `documentation/SIMULATION_ROADMAP_Q4_2026.md`, task S05. + +**This is a preflight and rehearsal, not the S05 acceptance record.** Formal S05 acceptance needs S01-S04 merged with green +final-head CI, then every case run from the real UI on that merged content. When this was written, S03 (SAM_UI#242) and +S04 (SAM_UI#243) were open and unmerged. **No case below is an S05 PASS.** + +Status values: **PASS**, **FAIL**, **NOT RUN**, **BLOCKED**. Rehearsal results are labelled "rehearsal" and never count as +acceptance results. + +## Rehearsal build (2026-10-19) +- **Tree:** local integration merge `8aafcb06` (not pushed): `sow/2026-Q4` `4d7f5bd8` + S04 head `b19b80ab` + S03 head + `2724f0c5`. The one textual conflict, both PRs appending to `OpenStudioSimulationTests.RealRun_…`, was resolved by keeping + both blocks. +- **Full `SAM.Analytical.UI.WPF.Tests` on that tree:** **2926/2926 PASS** (2860 + 52 S03 + 14 S04). +- **App:** `Application\SAM Analytical\SAM Analytical.csproj` built with MSBuild (VS 18) `-restore -t:Build -p:Configuration=Release` + into `C:\TasOut\s05pre\app-int\`. `APPDATA`/`USERPROFILE` were redirected to `C:\TasOut\s05pre\sandbox`, so the installed + SAM and `%APPDATA%\SAM` were not touched. Exit 0, 495 files. Machine-local. +- **TAS:** 9.5.7 (licensed). Its `TBD.Document` COM server is `C:\Program Files\Environmental Design Solutions Ltd\Tas\TBD.exe`. +- **Producers:** developer builds `SAM_Tas\build\benchmark-tas.exe` and `SAM_OpenStudio\benchmark\...\benchmark-openstudio.exe`. + They ran with `SAM_COMMIT` set by hand (S03 finding: without it they refuse) and with OpenStudio 3.10.0 `bin` first on + `PATH`. +- **Fixtures** (machine-local, `C:\TasOut\s01b\inputs`): `box-aperture.json` (sha256 `99ba2ab9…`) and `Budapest.epw` (`472ffb4e…`). +- **Drivers:** the S01b UI Automation drivers in `documentation/evidence/s01b-20261019/tools/` were used unchanged. + `drive-tas.ps1` covers Energy Simulation and Run Simulation > Tas, with `-BlockTsd` refusal injection. `drive-both.ps1` + covers Run Simulation > Both. +- **Evidence:** `documentation/evidence/s05-preflight-20261019/`, which holds each case's driver log, message-box text or + diagnostics, and manifest, plus three screenshots. + +## Acceptance matrix + +Every case runs `SAM Analytical.exe` through the ribbon, on the licensed laptop, built isolated from the merged content. +Engine numbers are recorded, not judged: numerical agreement is not a criterion. + +| # | Case | Steps | Observable status (must match what the engines did) | Expected artifacts | Failure message | Proof | Rehearsal result (integration build, real ribbon) | +|---|---|---|---|---|---|---|---| +| 1 | Tas only | Run Simulation > Tas on the box; dialog defaults (model weather), Full Year ticked | success box; model replaced by the TAS result | `box.tbd/.tsd/.json`; **`box.tas-run.json`** `status: Succeeded`, TAS `9.5.7.0` + TBD.exe hash, weather source, the `WorkflowSettings` that ran | none | driver log, message box, `tas-run.json`; for acceptance also persisted values vs baseline (`compare-persisted.ps1`) | **Rehearsal PASS.** Message "Model successfuly converted"; `status: Succeeded`; weather `Embedded`; `T3DRoute: GbXML`, `SimulateTo: 365` (`c1-tas-run-simulation/`) | +| 2 | OpenStudio only | Run Simulation > OpenStudio on the box, explicit EPW | Succeeded summary; open model unchanged | run folder: `openstudio-run.json` `Succeeded`, OSM/OSW/SQL, result model with view state; CLI hash, E+ version from `eplusout.err` | none | manifest, result model, screenshot | **NOT RUN** from the ribbon: no driver. Code path ran with real OpenStudio (S03 evidence `openstudio-*`; S04 `RealRun_…`). | +| 3 | Both | Run Simulation > Both on the box, explicit EPW, **in two separate app sessions** | `Compared`; comparison window opens | `engine-comparison-run.json`, two B1a, comparison csv/md/summary; S03 provenance per producer; S04 identical snapshot and canonical hash across sessions | none | manifests, B1a, comparison window | **Rehearsal PASS** with manual `SAM_COMMIT`. Both sessions `Compared`, snapshot `0c30db14…`, both producers `canonicalModelHash` `05c1e334…` (`c3a-…`, `c3b-…`). Gate "Fail" is engine agreement, not a criterion. **Without `SAM_COMMIT`: FAIL** (developer producers refuse, S03 evidence) - owner decision / S06 | +| 4 | Box, embedded post-F1 weather | as 3 with no EPW chosen | as 3; weather `Embedded` | as 3; `provenance.weather.source: Embedded`, exported EPW hash | none | as 3 | **Rehearsal PASS** with manual `SAM_COMMIT`: `Compared`, weather `Embedded`, same snapshot and canonical hash as 3 (`c4-both-embedded/`). Tas-only embedded is case 1. | +| 5 | Box, explicit EPW | as 3 with `Budapest.epw` | as 3 | as 3; `weather.source: File`, EPW hash `472ffb4e…` | none | as 3 | **Rehearsal PASS** (same runs as 3). | +| 6 | One multizone model | as 3 on a multizone fixture | as 3 | as 3 | none | as 3 | **BLOCKED**: no committed multizone fixture with cleared provenance. HungaryHouse is machine-local and unconfirmed (owner decision 3). | +| 7 | Injected Tas refusal | Energy Simulation with `-BlockTsd` (a directory at `box.tsd`) | "Simulation failed" box: TAS return code 0, error log, TAS-SIM-001; model not replaced | `box.tas-run.json` `status: Failed` with the same failure text | "Simulation failed: the TAS simulation did not complete ..." | driver log, message box, `tas-run.json` | **Rehearsal PASS.** Box title "Simulation failed", return code 0, TAS-SIM-001 lines; `tas-run.json` `Failed` with the same text (`c7-…`). The driver's close step timed out with the app open (as in S01b case E3); the app was closed by hand. TAS opened its error log in Notepad (TAS behaviour). | +| 8 | Cancellation | Start Both / OpenStudio, press Cancel while a producer runs | `Cancelled`; producer tree killed; no comparison | manifest `status: Cancelled` with provenance | none | manifest, process list | **NOT RUN**: no driver. Unit level: `SimulationRunProvenanceTests`, `TasRunManifestTests`. | +| 9 | Concurrent-start refusal | While Both runs, try every other entry point | each refused: "... is already running for this model, so nothing was started." | first run's artifacts only | the S02 text | screenshots, folder listing | **NOT RUN**: no driver. Unit level: S02 `SimulationConcurrencyGuardTests`. | + +## Remaining blockers before formal S05 +1. S03 (#242) and S04 (#243) merged with green final-head CI. Whichever merges second needs the RealRun conflict resolved. +2. Both prerequisite: an owner decision on `SAM_COMMIT` for developer-built producers, or wait for S06's stamped producers. +3. A multizone fixture with cleared provenance (owner decision 3). +4. New UI Automation drivers: + - Run Simulation > OpenStudio; + - Cancel during Both and during OpenStudio; + - a concurrent start, which needs a long first run (for example the S01b blocking wrapper). +5. The OpenStudio CLI/SDK mismatch on `PATH` (S03 finding) should be settled, ideally in S06, before acceptance evidence is + archived. + +## Formal acceptance procedure (after merge) +1. Fetch `sow/2026-Q4` with S01-S04 merged. +2. Build the app isolated, as above. +3. Run cases 1-9 with the drivers. +4. Collect manifests, driver logs and screenshots in `documentation/evidence/s05-/`. +5. Record PASS/FAIL/NOT RUN/BLOCKED per case in the S05 record, and report GitHub CI separately. + +Recommended for the S05 session: new session, Claude Opus 5.5, effort High, Build mode. It is a separate, licensed, +GUI-driven task on merged content, and it needs the three new drivers. diff --git a/documentation/evidence/s05-preflight-20261019/c1-tas-run-simulation/04-message-box.png b/documentation/evidence/s05-preflight-20261019/c1-tas-run-simulation/04-message-box.png new file mode 100644 index 0000000000000000000000000000000000000000..2d2d89076594791c26ce69d8ab17f153bf6293ef GIT binary patch literal 3806 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 V1dr6&fp1bi)ALrCQe(I1{{f#oFD(E7 literal 0 HcmV?d00001 diff --git a/documentation/evidence/s05-preflight-20261019/c1-tas-run-simulation/box.tas-run.json b/documentation/evidence/s05-preflight-20261019/c1-tas-run-simulation/box.tas-run.json new file mode 100644 index 00000000..fc2821b5 --- /dev/null +++ b/documentation/evidence/s05-preflight-20261019/c1-tas-run-simulation/box.tas-run.json @@ -0,0 +1,702 @@ +{ + "schema": "sam-ui.tas-run/1", + "id": "b6920aaa", + "status": "Succeeded", + "startedUtc": "2026-10-19T21:39:50.0326982Z", + "finishedUtc": "2026-10-19T21:40:07.8120464Z", + "durationSeconds": 17.779, + "sourcePath": "C:\\TasOut\\s05pre\\runs\\c1-tas-run-simulation\\box-aperture.json", + "projectName": "box", + "model": { + "name": "000000_SAM_AnalyticalModel", + "guid": "1988f7b93ec047d0b87bf9cb345d9eab" + }, + "outputs": { + "directory": "C:\\TasOut\\s05pre\\runs\\c1-tas-run-simulation\\out", + "tbd": "C:\\TasOut\\s05pre\\runs\\c1-tas-run-simulation\\out\\box.tbd", + "tsd": "C:\\TasOut\\s05pre\\runs\\c1-tas-run-simulation\\out\\box.tsd" + }, + "refusal": null, + "failure": null, + "notes": [], + "error": null, + "provenance": { + "schema": "sam-ui.run-provenance/1", + "route": "Tas", + "application": { + "entryAssembly": { + "name": "SAM Analytical", + "version": "1.0.0.0", + "informationalVersion": "1.0.0", + "path": "C:\\TasOut\\s05pre\\app-int\\SAM Analytical.dll", + "sha256": "sha256:5fab33710523275b11cdee257b34c2cbf6b258456de4d538936baa5de4f4c4f4" + }, + "sourceRevision": "unknown", + "sourceRevisionOf": "the \u002Bbuild metadata of SAM.Analytical.UI.WPF\u0027s InformationalVersion; SAM_Deploy installers stamp their SAM_Deploy commit, which pins every repository", + "components": [ + { + "name": "SAM.Core", + "version": "1.0.0.0", + "informationalVersion": "1.0.0", + "path": "C:\\TasOut\\s05pre\\app-int\\SAM.Core.dll", + "sha256": "sha256:7a3c7b15908467342c60cde31b565dc026b47f8a0cd1e3160c14bf163559d8a9" + }, + { + "name": "SAM.Analytical", + "version": "1.0.0.0", + "informationalVersion": "1.0.0", + "path": "C:\\TasOut\\s05pre\\app-int\\SAM.Analytical.dll", + "sha256": "sha256:9576dcd158e3545d73f6b29706b73af7d20c09325193257927bc46ee31119970" + }, + { + "name": "SAM.Analytical.UI.WPF", + "version": "1.0.0.0", + "informationalVersion": "1.0.0", + "path": "C:\\TasOut\\s05pre\\app-int\\SAM.Analytical.UI.WPF.dll", + "sha256": "sha256:181d310ed607579fa39a49506437e60d8188b7486cc45d8a261c59167788426c" + }, + { + "name": "SAM.Analytical.Tas", + "version": "1.0.0.0", + "informationalVersion": "unknown", + "path": "C:\\TasOut\\s05pre\\app-int\\SAM.Analytical.Tas.dll", + "sha256": "sha256:84fb3e619305760131318c4a2dbaede84133abbe4d21fd08f9ab8a4fb4d91300" + } + ] + }, + "engine": { + "comServer": "TBD.Document", + "executable": { + "path": "C:\\Program Files\\Environmental Design Solutions Ltd\\Tas\\TBD.exe", + "sha256": "sha256:aa658fcdeec8f5e3acbd64523376b5a7362c499beecc280715edca64851e49ae", + "fileVersion": "2, 0, 0, 1", + "productVersion": "9.5.7.0" + }, + "version": "9.5.7.0" + }, + "weather": { + "source": "Embedded", + "name": "HUN_CEN_Budapest.Met.Center, 128400, SRC-TMYx", + "contentSha256": "sha256:7666c3a7e89324372b595aa685aeac965588eb39a8096f02cb2fa7c3ca33a65b", + "contentHashOf": "the SAM WeatherData JSON given to TAS without its own Guid, canonical JSON v1 (SAM_Validation)", + "file": "unknown" + }, + "designDays": { + "source": "DerivedFromWeather", + "heating": [ + "Budapest.Met.Center ANN HTG 100% CONDS DB" + ], + "cooling": [ + "Budapest.Met.Center ANN CLG 0% CONDS DB=\u003EGRad" + ], + "usedForSizing": true + }, + "settings": { + "inputs": { + "simulate": true, + "fullYearSimulation": true, + "fullYearSimulationFrom": 1, + "fullYearSimulationTo": 365, + "sizing": true, + "unmetHours": false, + "useWidths": false, + "solarCalculationMethod": "TAS", + "directT3D": false, + "updateConstructionLayersByPanelType": true, + "createTM59": false, + "createSAP": false, + "createTPD": false, + "createPartL": false, + "printRoomDataSheets": false, + "zoneCategory": "(none)" + }, + "workflow": { + "_type": "SAM.Analytical.Tas.WorkflowSettings,SAM.Analytical.Tas", + "Path_TBD": "C:\\TasOut\\s05pre\\runs\\c1-tas-run-simulation\\out\\box.tbd", + "Path_gbXML": "C:\\TasOut\\s05pre\\runs\\c1-tas-run-simulation\\out\\box.xml", + "T3DRoute": "GbXML", + "WeatherData": { + "name": "HUN_CEN_Budapest.Met.Center, 128400, SRC-TMYx", + "contentSha256": "sha256:7666c3a7e89324372b595aa685aeac965588eb39a8096f02cb2fa7c3ca33a65b" + }, + "DesignDays_Heating": [ + { + "_type": "SAM.Analytical.DesignDay,SAM.Analytical", + "Data": [ + { + "Name": "DryBulbTemperature", + "Values": [ + -10.9, + -10.9, + -10.9, + -10.9, + -10.9, + -10.9, + -10.9, + -10.9, + -10.9, + -10.9, + -10.9, + -10.9, + -10.9, + -10.9, + -10.9, + -10.9, + -10.9, + -10.9, + -10.9, + -10.9, + -10.9, + -10.9, + -10.9, + -10.9 + ] + }, + { + "Name": "WetBulbTemperature", + "Values": [ + -16.3, + -16.5, + -16.6, + -16.3, + -15.4, + -15.2, + -16.1, + -16.2, + -15.9, + -14.5, + -15.2, + -13.5, + -14.4, + -14.5, + -14.5, + -15, + -15.8, + -15.1, + -14.1, + -13.8, + -13.8, + -13, + -12.8, + -14.6 + ] + }, + { + "Name": "RelativeHumidity", + "Values": [ + 65, + 65, + 65, + 65, + 65, + 65, + 65, + 65, + 65, + 65, + 65, + 65, + 65, + 65, + 65, + 65, + 65, + 65, + 65, + 65, + 65, + 65, + 65, + 65 + ] + }, + { + "Name": "AtmosphericPressure", + "Values": [ + 100310, + 100310, + 100310, + 100310, + 100310, + 100310, + 100310, + 100310, + 100310, + 100310, + 100310, + 100310, + 100310, + 100310, + 100310, + 100310, + 100310, + 100310, + 100310, + 100310, + 100310, + 100310, + 100310, + 100310 + ] + }, + { + "Name": "GlobalSolarRadiation", + "Values": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ] + }, + { + "Name": "DiffuseSolarRadiation", + "Values": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ] + }, + { + "Name": "WindDirection", + "Values": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ] + }, + { + "Name": "WindSpeed", + "Values": [ + 2.4, + 2.4, + 2.4, + 2.4, + 2.4, + 2.4, + 2.4, + 2.4, + 2.4, + 2.4, + 2.4, + 2.4, + 2.4, + 2.4, + 2.4, + 2.4, + 2.4, + 2.4, + 2.4, + 2.4, + 2.4, + 2.4, + 2.4, + 2.4 + ] + }, + { + "Name": "CloudCover", + "Values": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ] + } + ], + "Name": "Budapest.Met.Center ANN HTG 100% CONDS DB", + "Description": "Heating Design Day automated :) \n *calculated from weather data as day with min temp - single value and its wind speed all remaining values are zero", + "Year": 2018, + "Month": 2, + "Day": 8 + } + ], + "DesignDays_Cooling": [ + { + "_type": "SAM.Analytical.DesignDay,SAM.Analytical", + "Data": [ + { + "Name": "DryBulbTemperature", + "Values": [ + 21.1, + 21.7, + 22.4, + 22.6, + 23.1, + 23.8, + 22.1, + 23.9, + 25.6, + 27.2, + 28.9, + 30.6, + 32.2, + 33.9, + 33.2, + 32.6, + 32, + 31.3, + 24.4, + 23.3, + 22.8, + 22.9, + 23, + 23.1 + ] + }, + { + "Name": "WetBulbTemperature", + "Values": [ + 19.1, + 19.6, + 20, + 20.7, + 20.4, + 20.1, + 21.9, + 19.4, + 18.9, + 18.3, + 17.8, + 17.2, + 16.6, + 16.1, + 15.7, + 15.1, + 14.6, + 14, + 24.2, + 23.2, + 21.7, + 20.7, + 19.5, + 18.7 + ] + }, + { + "Name": "RelativeHumidity", + "Values": [ + 89, + 88, + 86, + 89, + 85, + 80, + 100, + 76, + 66, + 58, + 51, + 45, + 39, + 35, + 35, + 35, + 35, + 35, + 99, + 99, + 93, + 87, + 80, + 76 + ] + }, + { + "Name": "AtmosphericPressure", + "Values": [ + 99788, + 99758, + 99718, + 99733, + 99677, + 99631, + 99825, + 99544, + 99514, + 99484, + 99455, + 99425, + 99395, + 99365, + 99333, + 99300, + 99267, + 99235, + 99709, + 99788, + 99829, + 99830, + 99830, + 99831 + ] + }, + { + "Name": "GlobalSolarRadiation", + "Values": [ + 0, + 0, + 0, + 22, + 101, + 141, + 251, + 523, + 739, + 851, + 903, + 896, + 835, + 680, + 501, + 357, + 208, + 71, + 4, + 0, + 0, + 0, + 0, + 0 + ] + }, + { + "Name": "DiffuseSolarRadiation", + "Values": [ + 0, + 0, + 0, + 22, + 83, + 123, + 200, + 259, + 205, + 154, + 177, + 211, + 193, + 230, + 243, + 179, + 120, + 49, + 4, + 0, + 0, + 0, + 0, + 0 + ] + }, + { + "Name": "WindDirection", + "Values": [ + 140, + 138, + 159, + 198, + 177, + 195, + 168, + 84, + 263, + 204, + 23, + 77, + 315, + 164, + 277, + 95, + 27, + 292, + 97, + 160, + 79, + 147, + 74, + 40 + ] + }, + { + "Name": "WindSpeed", + "Values": [ + 1, + 1, + 1, + 1, + 0.8, + 0.5, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0.8, + 1.5, + 2.3, + 3.1, + 3.8, + 4.6, + 4.6, + 4.6, + 4.6, + 4.6 + ] + }, + { + "Name": "CloudCover", + "Values": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ] + } + ], + "Name": "Budapest.Met.Center ANN CLG 0% CONDS DB=\u003EGRad", + "Description": "Cooling Design Day automated :) \n *calculated from weather data as day with max temp and then radation replaced from max global radation day and cloud cover removed", + "Year": 2018, + "Month": 7, + "Day": 1 + } + ], + "SurfaceOutputSpecs": [ + { + "_type": "SAM.Core.Tas.SurfaceOutputSpec,SAM.Core.Tas", + "Name": "Tas.Simulate", + "Guid": "7b153648-6933-4daf-9a4c-9e6801ef9af4", + "ApertureData": true, + "Condensation": false, + "Convection": false, + "SolarGain": true, + "Conduction": true, + "LongWave": false, + "Temperature": true + } + ], + "UnmetHours": false, + "Simulate": true, + "Sizing": true, + "UpdateZones": true, + "UseWidths": false, + "AddIZAMs": true, + "RemoveIZAMs": false, + "RemoveMechanicalVentilationGains": false, + "SimulateFrom": 1, + "SimulateTo": 365, + "RemoveExistingTBD": false, + "UpdateWindowPositionType": false + } + }, + "unknown": { + "application.sourceRevision": "this build\u0027s InformationalVersion \u00271.0.0\u0027 has no source revision after \u0027\u002B\u0027 (a local developer build); the component SHA-256 values identify the binaries", + "application.components[SAM.Analytical.Tas].informationalVersion": "the assembly carries no InformationalVersion", + "weather.file": "the weather is the model\u0027s embedded WeatherData, not a file; contentSha256 identifies it" + } + } +} \ No newline at end of file diff --git a/documentation/evidence/s05-preflight-20261019/c1-tas-run-simulation/message-box.txt b/documentation/evidence/s05-preflight-20261019/c1-tas-run-simulation/message-box.txt new file mode 100644 index 00000000..cabf72cd --- /dev/null +++ b/documentation/evidence/s05-preflight-20261019/c1-tas-run-simulation/message-box.txt @@ -0,0 +1,3 @@ +Title: +Model successfuly converted. + Time elapsed: 0min18sec diff --git a/documentation/evidence/s05-preflight-20261019/c3a-both-explicit-session1/06-compare-tab-Provenance.png b/documentation/evidence/s05-preflight-20261019/c3a-both-explicit-session1/06-compare-tab-Provenance.png new file mode 100644 index 0000000000000000000000000000000000000000..9a87fbb7d06de8abc35e141c4680bffda2c78d0e GIT binary patch literal 97867 zcmeFZcT|(x)-Q|-TLcx5rc^~B^e9q77X$%;AiZ}{klv*$g3^)R0!WQWFD7)P6A+PJ z0)!rFkWc~y$QSoHdmqoa@3`MLzH#pz?;rOW1Cpn#xz?J`T63=ToAZ~5r(or46igH( zBqY~VRTQ;JNJt?hB$uv||3SRMu+vOK{J7wut*k&&{+(r=ctZL@UPGRQq$-Z`)QXIF ze#KSA$b*FBddIK73q3BMo{^9c3RM;5bzhlpo%vU~^ys0YgyMy-^XVa!7FYrCy73B-?Fscym;ern{-gqTSvN(sp@FB zE#eS(lLZiDiC}T2IkLBHmiKO6 z{X<8+MZC>Y%HDmB9NEZykjA_Eg}vf}uVAl(f;lsmDSjfd$$5FeLB&WDJFPvQF7~do zsFD2@i0&vJDZAk8hYNPkIgOHnP0*hf0zhu z5?dDKsGzrtZ447RM$V@iY1z}%qYt3Gph%gI!<+;uL>cmL4y zU)8aK_l)BwqMN*zMLGFEwnN3_VA-}3Z6n8qy=)zf+0MD<+u#^X#9;97*>MD8Bf+mH zwVwE|TScm4HfT`^vpX1A%1iZ|Ziuai`3yKHnLofzYcXUs6)74>I0YOIpmx5WOzg~C zk2F&?3}%B?=G;aaGZhMbtJd%OoC7fiLm?gkDJEpUPV1cWmMU|3k%$$Cy zmi~{<&WTmr^4(U61P6UdWXuwiO(cU}W^>QP<#_wdp~;{+mP`bK z6@eWCYb5Mo%0~#(XUEN`RZPIo;m4LQx1)>x2iY*WhV_(>tiIO}4yxul*y-U}0J}E; zEVD=)A)hAqr~LCKJ$q)ULcdi%v^NKx)C{!lU_id{_&xvg9AfLu*JM4gE0{+)GHNtw z#)&KcuJ7%XvmaDvAMn*cyfD0~DmO!OZ=yG#(aC~vZO}&?WxWZK-Db`v#0(tk4LCeD zm%=h7Oe7Sn)iSi%^KByR5myP9D!!wBvNZ~@a(_6AACpC$NizWpwTQzuP0wL0~To)n9^O~1C&n){RY8b z_#_X8^}n#vLS(&Aa^7)4=W;1!o;flHmoVAy333al9Esz>nPNZ?uVd~WT2uC%GM^Lx z6nYi^CL5nhz*>k+Yy%=Bq6HAgH%%YrBFlKdmAal%AW z6Kq+OyF#=~!?ghyKT+3uz5{K4SrnH8>XF&)@~M9>hik;dCZd>0q3>mVvi#?(9A-Ll z@G`gw!qWc7`DLZ_+%a|Y`5&+-+c$Ti_+T`>oM(x_Tsu;@nADC(pi>W4K|}7#Pk8*)HwRW$&a2D! zin=cR_KquySJ7#BBUfxnSkd;4%%<(M`DKFfEMNz(j9G7O8Ik!pNf?wlD{Sm&Wj~)W z37OxY(n+l&?26|QCkj94K#>%v_`?&p{7g%Q_N{vcP&|sm=x6-J52gLg^il<1<@b&p z3f2?`j2Du^(&j{mOX-zbSW^s@!=!U^PBO@N2reZWBCzwx9B9j`Clfnw^Z_X#CzT>( zf3iUc8WVBrH+_45$8x;6lX&bs(j-R>dFRwa3LVirhv830*gXMkCtA28#@I%aos)N! z&6r}S+#1Gz`3oiym$k!ocFJBCH*<`eLFb$UiGxs0WS3hil|oGB&0BM58EGE>%i1xC zYUlbV_G{1MtrIGMXhhJ8o^o^9GZ`&a2LmxCX5Q1~G~6_&4S!tC@kud>-N9v<@zZgA zkp0B97{=cXPIp=k0rR45{i{>4$=EaBsiw*wn-9~u4HgV9_S|ekSS;=7TzFJojzE7A z_IpeQXpjs)NfwOK(uL%%?342H=Wx$2*EW4Fo#4J@;;TMzqxe~~u1Z2){A$Ij#i7{= z$zP_JXecJ>kb@zK-1qF!<5qZmSL|xnW#0B@^6iw@buE9Q_uMq+KZMZIKX0;&AF;cI zm6WJFb<;e}WgZ(82gKOp&XoVO`Q7y z4gIv8WAhLQEy4@3KR*^3u=u^FMU$z4Q>pd8tir&tqtBf0i@L|zD5uRUYR$EJPD%5+ zokjkd^lj_0jTj%7VDx~-o8f}jB1D}GSGy)?L|#3XrWYyT8K#9a9m)6SPONwwGpV`u zwTG`piSXTCDf5ufJnScAjtlnxbQ)3Qv9Apn09vq@sZl&OHos-!r{0fEsmQJR#-C(| zw{t8Wl+`d<;OyTQ<7WHaUR;}^BAQS#`H1fl#m6GSG2h^shhe~gw!n_P)+&CU1Lf8m1Ju^L;O|IA{0HB!6 z;qv=TtoQJ3ki2Wi@3O^aVP^k+<&U?lLT~5)!}Xh#T%!QvAOVxJfdqS>i9o7`0Z!1Y z?_vS|n;EWAF62L-r(G4jTfrJAb_M*Wvx*=(LUV`z;i=4L)R6yJk~oO|M`tW6zc7&k zejg9S5ovtw-wY&ChGQAbw(SaW$@=AZqUJv={ZdEsK?>DBMfo9v z8^(Og?3WOL9M3qp^E&^ns-BtrIN1$0-(?!y&km}_5vXP(t_dwuE&VS+uD!b%@e{FZ zervfOxqLMc4r-dxyPw3_OI(CBx$7o zuASSU3xD5y{pI5CiY%ok2mgJK#Io$6>&1VaIuISzzs?N#f3N+k@tb+lf88AKW21$L z&0512#Kb-iq+&C+tt3#cHC;u7)Xc;a@#mE2!N{oD?(P|U{P1Vlxf|R2t*l)r!CA@5r=T+_N3TSa-8BXY zji!V=20?=&`-y@FdvBaxU1+d%U1gvYn%VFBnP;d<>03b6{OV}0z*%1m)txpQ!Jm}k z#CBteWpEsBTFxN#cN zamM$L^PaO_6A~`1_{P@FAhb^qV3N39b|Ld$Vn*@wZwik|{3VEJ3-Rh>o=wk_4)RL@ zzD~TG>hGV2{Wghzq<>z&TJB1;)qfXpts`Fhw|Q??^iuNox&AP7Cgq3i=b}r$ zn-R}HMNFe-T$eO{cbwZMHAhwK`1_OBCk_7;dMMGH`FC?B`}bFC&96$hEs{Di6K(#z z_1VAe+gI}&-m1=r~yq7zg16aU)_RHm*E*xvy;waU9* zJKSfc?v8V0O zXYCXa?}^}v$Gn^S2dKhS{OILbhZbJByFy+)?4MO-HCtQ^=SC(Pclwq#dx3QsH_ir^ zFxuvm`_dGn0Q2jrF5i0$rSZc{<$^Nf70@dRrSAe+x+f$u4P#w8UV6zLv`y3*Ia{n< z&W8xr#*JAmY&xHC%lBLs-SnfC%?3HPvke`cZWVJK z0x>D5{thJHPWlIKB+9p?^BETvE2Xf8dk-)nXNR#)JmYR z)10{s-xKDXhF!ect;{*NDaMffk>e{iRJYMmB5pQ(M{?IG;QQu`w*l?$natg#_C+h7 zJ$j4TePnm{-fW57&*N7JRu^~ROx;&AfQ2+$%aqyfSl_`x$kRhIjmIR{FKPTuE1|Y_n%@Mmgo#eZIql zF)}FNd|7$cvBgu%dYU<8L?qiAZYJu%$eNk$0i;$+zw0au;7F95LUX(uOa;VSaimp1 z6V1ggtX{k|z`oI+*rkW%xtG(v+io_<qxdU-0)cGZ5TRpCZ*cHqKHbI7rioW(b3h5cu~beN;FFg(z=9Mc6w zw@R`CXwVWK;^L(7Jblz{>&2NfArYDq+q`g7ZMX1c)%I^jz|6+}7ai8%(me@hSwav8 zNVO;&WOViJgnv#rP*X5f>C^536{S(tw=E0A-M$$0T`$Tl)wYQFutLgmhdEKqs}Y~Z z)WKHdfce=41Fk};nM`vPr6Q@B9iW{giKP!I6xZlrezKzIP}h5Q$coMAuxbqz@W8M07RCnW}?**#>woK1>8Bcs#1ido)Efx zOz-E-(cfA}H5e8P(uVR~CxxC7!KXUQ1wc9@Hu;7&2@mb8cQvH{WoVf8yByQuuAUSQ?N_~Hap7CC&L5&z9KSQqGr4Wv%!*tB?m~G{Oe3||#zjeu%C}t7 z%d?mhd)h0Q(rw##ZOA#yrG2Le>kLJemQmNuU)y(b=tWm)^{cG$M_kQr7&1GTq4W`S zvKdU(YL5xOh1eU7NsUUoxoak#e`?O?jmrEKGQx_{K%KqBy%_)rMYSY#+t+-$Lh^J{ zrfr=Cmw|J9w}i9U)5fhZp1~UP>oN04Z%QygGyCc<+^4B%zxQq&Y0Q<75!sJ(kV_`b zy?xwjhKuN9{l*5f7?&x^5X~23y7XZM!N-Qki=W8#JR1!S$DWz$VEcvdR>ia~&FKwC zXx<@c)`e;I^FuTI9`Qb&<=lZPsb?I~viJ7ggVEnZPb_BY*N8gtAZmfzuWC8l?2k<_ z$dLmJ9mRr=eD&;s&a8|z1?ohguD<^C8qkodZN03g@1T^03`oa{u$9JL`@Z8&i5_mv z@*iexJleWVuB5dtiThp>TOhd!1JxH|>TO#gj7iu7=G`Wgws>PNs}y3y{p^}&3HfY7 zp7Z4hehT+=PcKbb#^5L*pg6!^?Mx%M0doRpWUtjD(XRZEXya=NNZwu+w(xJHlgEa- z)@0pWJt<_j!F~#zoHi*4c{Q5(6nKExI&evKd-`+2{N~;h_NCqGL;B*khxgg3s&X>v zS?s&MEux>v4gsc*@@?Wei|HXjZGvM}Zq5Eu%)tRO*lj0IM>e+#vmZA%mYQj3bvtD& zYgHQupS9|$Y^mTgg*ytJ>K#ve#R`Mw5BS^?ofvyOAuPVzAuh#tZ6v~9a%U$30qu?@=eON1B%f?`8hEjirVh1%UetVxEBJ`?esc}O@o|BRylhsPTe?kI9 z>r3a@hQJ>RYs;d(!`l>7w6_7 zXt!WWeW}TnOkpKv?dJYky$>n$WDUVP&QIJZ4&FPxtGep2X}$a4V0Ll3?qti0JvT%r zlJG-ckqBQcXnkca5QpL;DD zj4w-IbZHi!4L_XidhsT@>A!294ju2Xk;iwI=RXV>C538=?qW;eb^(hw^Q{f(d!8Ay zl)&s>USVYtmdjn9C?ERHYp?p$Ixv0b?&kTxqA@t%*ZPiXKz<;{X}lBT*`rn)x^CKL zxQ-lR(^$?it&%q|zJ)tOT7O13@>PMH#Y={CW!e6`uj8^vV~lI-8k~1`MI+Zq`}Sx4 z@U3Klf$gL@2M(Hldt!-@~vw|AA@j1L8 zN}jW|frBqn>&Mdu@+xkrw}=Kg8~2) zE_9JBo?sDfL(uVi);bw$gRD!OsvjokkKdDj6vkHry)VU?;^R zwRx|#*kmK}gXfM*eN-nO7oYH#5ZYO7lH z6$)Lq10B$?7kx8G2NZQz5I80>GX7a}6x3l{3*OC>m?& z)ELq_`$B*&U76JsJjW%PHJiV?Z64x1Kp^K|0HZmhi3j zk-)o70H=UY2kE$-hXh6ii;*497+T1hj8Pu~M|SMvkyZML>+o_^)P5mvPwz;$W8m(m z=8AWFojUs+%ak||`%XE{X9Mt0XMlK+xn zh)$!e;IVpl!C+5U-krAM8=-96CqH-1TgLV;wuG#aDU$B>0Bzcn?yOyDeap403~OaE zX;Hfq%d%$}E=#{sMQ>(Q@Ny&C_Surx+6FB0fg%sUB(Pw?KOx71h zU@hj#KSj#g@qb>sPvW05OAF~0hkTk(?BwEp7$`v#`KfYQDZhz+kWw8D(INdLVC|;G zcWYpR+(62K8uBS^ISxTp{h_wr^+9VhnmS0UX%6C9_>G)yD1_pU<4PO{=GlGjQSl9C zunrlNN4Pjx3wVWB*o;CVEOzn%C#ZOZ%kWG%JIltXTv`aZVi!~$QdVys);T(%(FwRE z{{1>Rm?B^^volJ`gbtEcskn9p%9y?)Tq8 zg1ushr6(0}UTvzk_8e#-SLMb)k$4+zwk4*i=jqN_`MtuN8)A|a^opH_BGwyE?ojdu zyp>-7HW3NO<3UK{8CDW$rSd4eC z&WLcX;O9?%dCo`eyUV-kzd7XMRdGC<;|2_@XG{n<2F9%vCaWub?L$Q;491w9yrUz9 z3V@D-2N{I=pY;3A$udrvcA`Q>qq45w+giO^VtAxq0t_SudNiL6y}6?9p2@%{+{B}$ zf1m7v;#9j*-&Ot(lYNj{H#eo5}paX_eeIodLQZ&k;=u zq4~j8niP+*pcOm)(qujRm%#yuK)+*Xz?jiX03%ht-2@|K1D+0p6*@P~)4@8k%E%R( z1-+I}76iR^nKev^R)e?wAvJdrf=Ma!VX;D-sqI4m$~})a?yfd@#F4{ZPe&l@iAAV& zq7NVB9!(hKMUh}TXv2!jGq$jiiNP>Xa-SBUtd>nyBDTaP+J%MplN)DCpQjkx6aPH9 zn97?TpV+rxq|lq1^@XuG+qG5<1r(x8fYIT^$8N($-B6$G_z2pjE$X-M*RX6qkk2fD z`ZwMgMwD4%Gac&H)Ac_rK9LF9cq@lC=RZ;3w(+JaxSwWyC#?Fz;~iEG7Vwldx&mkN z*yI&q=)?e_1B}Pzo&{9xJ$-e~AQvB0UscUZ#F6NQz(13vLZK<;r}2^w{RVf9_v1s< zB&Wg!O*!xD8z96ee|Pjo`T8fH%HIaq=y!*h^oH&?0f3vt2XOgZkO;!8!xYl{8PS{2`FJ` zxZ27|2dq%2O_o~&)}kt}NFzCUUl9FmZ}yae14~DrLdoGfrlaHYZZ+_5W+39DHdZVz zt->cUa6co389v>$r>CgOpPRJ#hv(hI;M4r~@RjE_Hpj_rEq3?qfrWQ?z=i|zOmf0fJoH4YB?r0r6}D$(qDx|+>B78&%;XaF^#r- zN(_)tEwdd%WY7sLyD3uKNq_wM>2y3GZKgG&)!8?fwwKfLhqv<`&9^jEYWF@TTHm>O z-%gDC3Ty@*M1d0pxt9-GLnwA1?IqSmfgWf$M> zM;*r8WG@9SD|aZ#@~!oXiMg`xiw)KF?RJhVPsYd|wGQ{#7`Qv&Tps+fR>hjHtuLvZ zb4z*E;|3+hV<&%MtNwv&>rV%zQab|8(C5teFg@A^k=@>a7S0T5k!+bN#8NA=Gw@o8 z%A^mZn-Y8`_0*4Qw(oDcmhBL|nx)R?cXrsDKL2)EqM*9v3+uP$xLoR&gG zxr;4TTCEiY6yQ4+Eh(i5*68H8caK~z;?tgk)h6$^6~o($;f3GX{pB}SQtQ;r8OaK6 zb7y(P`b!uMC6$qDSdHm?jx*CSP}kFX5^1wZjF>1qi=>*a&qULM9W%`s(ytfKi(ENd zTJWbhcEbpAbY%evBjrddlA{mGek-9qbEvue`&$8`61`U z_nC7LZ+|iX_8Q>iz6&qNH=q580lCCD)~A*S-q{6o__OP8PgLO?PBPpv)7OKlJF)`lQLM;TOQE%cpcdvo_gA_H}t|J zPfPW*Nmy?9c}#E9LM*3<@rT5@fh)$hL9ADAgWjB}&$NrwdXbmL5X)U4xlXc^H#}kuKDb*AcA}zh}%KE1oZOQBNKs{{cJx zRf2@%|0|aHTNvaYaOj}~*2dxAuuVYC2X^>7r??m*8v1~T=sAvPiO{um;-F{0AiNjb zpzd}3>PVx+U$K|h&FU`T&8`o$0Pt7X5KPAv`zzSf^e%}EP$6hbjNpv0L47>_uGc?( z4#E&Ja>z^yuq3{Uf0IH4R6fA4 zrWQD)%OI=zAO9@WG+i=R=>zSxZ_Wl{^W>Z4mNtvLhEEEBO#>!Y8Nnu9a2qkPSc`!7 zjn63080#m_#^HlA6|-D}nk!du069sIy%if_E2QrUtYl^@&jwTAfkD_XHr9-^>SebK zn0YPNW3Iswp;^nkxVDLaL@6v~PQn#_S0ch?##~rBG7+3=j?rQFtT-+@jjkJI4gSP^ zEPdQ!<*RA2)50HDakq8;<&%B6xJET!tC2mPr#Y`AIGZKdZFaZR;u>N5hOOD$6EFx(Zc?`81e(44DsH)PTSM$M^z(Y90a6tDQSA4kl`4NKE9EdEbS@KD}rEcRS9ab zn4b%HQXuD*k3Ww=*G&W}LU5;J+n5&?t||Cz!mD7(-K54{yaO^vNBAtc@$7}g)9*P4 zGK8TOmh{$!vlp|J-%r>KA~$Yq7O(92`5%1ZaSGVz-T~S=`k~zGZ33@WE%*j7zlhPC z^SRry*$Lm3sPI6VX>{Un(a}*>Y%RwWxUqtrY{CXr-C%#zIHE(mk-tT90vCYWpmO{I zdp|p1@J(Cd9A&XBRQEl=_~~gyw}+HQ#}a%FI2r9M_4ar{Vk-0jVaYn#&ZxC*(AI4^(HU zN#CHqQLFygUe$w2S95@x z936`HEHnYlju*d?31`TSrUIf$mbENp!8*qV!VQ=s_}i_M&^RUIQeAo?e+d-d&r=cG~duQ1eRxJ7f*?^ zz;aGRX$}T^NrE}Pd#pM;lXGY#-3b}d5w9ns&2gXBajq{|q(&r$rq`H@`J@iM>w*}f zJ!S&V&lFt~)M?zRZ$2)^$YT%T;_lBZ%DV0TYRsuSlN_DEN1ZE)->S}P6%X6t?okDz|GIl?YSXzaqI**oy6I&wi zNNzSA$t1)%6}}nZi>8X=s%{=75RFD8%|Usu3SqqKiBtM*UANnyZG$%64l+tPMAL_g zqz@M#rmw*gS4{Qq3M2`iE+>>HeX=c0P_}vcde^$IuxGZY6gbvFT9-h~3>@wn3=8lp zOJ|W=-{adyrr&bhQ7M?;H&b49o~vz(a!+mO8f>=y0gNe%6J36#bBmEVru=sG^$W^v z&bW>3Nw(k!IgR7-v?8a<@;klmw!!_L+cRm>3_)W(0+irekEnMS5&h?y@OxooCZ0bp zs^4WOwvLW5eym`j`t0Xu3pW7AW?7DxehTkt^qY`tLxaXK zs(d?}z2$8_#o->SKc&IF9^&4XO+3@SQ+0RSrSEDgY^8elE;8xl%|uD32F#3Q#La#A z3uQ}TZ1l?Q&&jW@l0S?V`=bDN%`JNQ$`av=^APg<^U>#DXqO-r?X^b%%CM0N*M|9l z*qzTKr11hgj^3eUf)?li&1J1hGQbY9U*$MJ3iSuASv9Z|&_EwsKG!Fq*lfjbspH+) zUc77{nxl&wcG-+tsifEamcs-$T&;HIa_pmXQaKPB(U&*Yr&~L3ZshIa9c72z>J~07 zi|QI2^@(y=+NhZb45a|`o{#G*wkCfwL@XOfbUE1vDGifh8dfsx)#s*zPweYWhK6&Uc&C zTKUwA-aP6jqGsSG0uyf7!+dG3hPOiM$QwikU70ccvp&vN4tq?>`Skw7rMwTCgH#QC zC!MF9Wuvt4CWPNHOcoeY=+{rbn08ci-y&SlOEJJ2iR;yGjQz>Q`+tGh|6@Sxt^e&n z>_>Rsry?%-Vsb@KH3;>a-i^Xa!HRI8JF^)Wy-1IP-UX4-L?kgP<^`ye0(`R;l@aXI z(2As&FxFugS*|yHltwLP$n$Fgm1ttHXv8EgdqwDETguw_Mvi&#l#y3SmK<)y3zJ=O zz@Pu!cffzPy7G9@ z#PB%drgEWU*u0b=fZX~EtJZu&PxEo`S>wu#?aryoMoI$*=Pcd?!%_7lB2v95bO}|$3Zj`{uKM6Oq2zHWb-e!QsK9ur2^+fKWVfjF;*;|Y+IDa2x)-ES z^)!;bh~j3y64?7Fax5e)`m$V#Y|RqKheCWA4H2&KUx}r0&ZE}tHorlt+ol?M4-2V? z3s0;%nz3*)zWcore|r{Cgrbv3IS_M;2Xf$Z7yDI^s?6*!16R+aeh|WbOzcakE)n4m z%@lWRp#1r)DPZ$y#97-SN1%P*eXIzFiG}pbostFVUAnV-$L(jPOb(f?#=#3d-O0PkML9ar@L}Y z*?;y$I5F8_RZT1q3 z3hAeIuTFlU;5IA=s|EbFk3WVp=#pFU2h+I$qVDImXrWv)_&`eWs%KGtsw(m8+P%D< zo!NKVR0V-;8>zcnEdA~)Zc{?adx`Xp0|$JZMJ>)8vWPl2?}x71^Cl=xbAjo+`OZ)- z1x;6BMB;*5yHd7_D6ND>_#}5*gofBkXN~&#G}hfngIVpCyD$QP)!B>Ag=vQ0m|9Nx zG`V)PV|zNM0~x{L1#$5Lay|Op^(_1)qSi8HH)#S8gw&PJ{0nacx?f*0duFT74;l*w zMtzV!d#O~I{q)ln-)rto#ZTF{#FP^1ltRC>xqw7vJ-hAYVXABfeu1Tw;J!4A%=u?W z#obyn?1|W$6TM>no|`O6DR;EsLt3A1bHJc9ItCO*D!Uyc;S7NV^9kP@n1PJ8;q;ON z`XbL$UMmzkjRtXW#)II&pjEZ&l z4BqrcY2HVf#08c35A2*r`>*#me^~Ah_7wn@J>$EmfBrlvpnPXoyx=-?UWAC;Yah{s zBvw69p-{)xJ?y*55Bicf1ik|HrKd!_JSfyW&BI3sNZxy+>O8Wj@Q#tIkFV(VYaWw2 zm2@kz8z$+A`kVKLBFU}WCR*kTf+5Ho+9$|w?#=EiRJ7yIqSN9iM&;5C!d>@)hpKHV zY*3bg$S>7=8ryNedQBi9sX|h1dwJ1{Zu=xe=S*y595x!m2x(8LtD%?w1TTy=m1`;# z3d*-HG1=fzx=G$1Dr}T*N6VwP7GH98ZP^4YvhoYQqX~98e^poUh!FME5ep8Z<<4`J zf4xeztqVVm`Ihf`a#BwX)t1;ONFMJ1^tgFN@5bCE6OHXONdMmb$X;_FO2c4t{ow6v z$~@f?FMM>ja_B{dSZ)a>fKc z-wiITY;6wEn~h=+wFoE!itCHn8p{{7cU@_5fB$oII9X2nh12m%#VA>AS5*LWRag{f z_Xgk8<2&SIt(86fl!S3uW>~VSwO(3Xd3k4o?6D0;K=a45Slzn58;}faADIaQWbzQS zVKU+qpvFpQ(N!}X>NtOrb=s{>M~u93!bjIpN(mQrB!Z5f<8?Go67&J5eEfQ@kwLoRr!a|z zLU7QaDh*`3<^KZ9|1E)KcC+UwHzpwH0G<}%p`oQ+yLOk1QM0kSmzFHe5J%ke&#gL4 z_Xg0EG%ziM!|Ed+1#G6@XyrKSY-qNqXIage)K9emAO~ZOnvRt_;2fYT_d&n(Op7@p z51}XQ#-)pd+pt5epOiBJ<|woDubl9)_%i#?^GWAsc#VKdd`Wun?_*SN2WKIrudHQp zvP|Iqk1Zu3IyaC>pfp*vH>zxJAE`coa&4u}kD4ruBDK+R&9@J*YBO9FQ5UtT6TeIJ zG($@5`t(DKDmQq?ddiFWi$3#kbyXcq=h8!@Pv6c?E4QJYvs>zyV~8;?6SF5GWKaS3 zWa&lbr~54Udq6{s@a1bO{7b;Q>UV*V!F;7>2izLye`D1P$BrAnrp=HsVV zT=2no7bS#~SCu+BSc(sH@T&|v5g@KDHFLe#c##x(Dclf2r*5KEOauv^oOn+|3%6w z3_y$|{+X}8uy~p6)z{g8y@Bc`A)TyC9sgA(D-zs>aCnSE1qc85(3Fy-1Rw|FNrOGw zf8$QTEC$-6?o@8WtBBdX|CY`#q$A4udkX)@KQoE{PO&8+SrgV9`L|U4hW|Ap4om0v zZR8GZ?oCcRlKaXy5+^^i2VSUB?puYPRGUr{3*+BQ-$^AS!BCJ%TfXO%T|AvL5Z$Q|Bjut-54_Lgy zE+anJ?~sFcJSyZ~bT~QcHZBWdGxW*?rKTk?2Rn%q&Nb*2G-o~bT;6{m2zKA?FTO(`QTd6)?0icioz%zx%QPZO z3kiQs)0v<)W0J86vvaBMbTY-J9G;4qP-lMkZT4rEz@?~(!G;)l$(y^HWv`h22@(z| zOWE0QPb79D-_Ss0w}SR^vX{yOkbqnwU}Z?pJ|!T#$=;?0OfTT+14@9ma&eX@KMH`3btLF73TJg@Ga$W^=;gSPX~A&QaIhz<=xOMHdnZ&rE8(esu$F?Xx;0XZPIzAC1q7 z+B6L8R>SrIT7@@Qa0xl}-Rw#HX}72-K(p%Yfjxoj9RV&Gi2S8*1O zc}q-p)ecuNPPY!zsf!KjM?|R~r;&qYa_o`rS3?Ge38GVec(I7bM$7gBks5j*B9S|b zZqt!~&W{0QjM>#7`c^8vt^(K6vd?)XWeUF9uRr_dg^LCuQU5V!9uldC4+>seg>%e` zbQR1i8vIO3me4-cQZHRwIKI5Wx!T1JYga8Gvr;)yA**jt;LDJXW$0=W5RPGh%(+KU z_dR1bnm|axoc|ognRNakvx`C40Jm5(pC~-Sg)@+vlnFQm`DhF$5w2z3M7GesZ{+~Pv}~8VP6t%@Z~H3Tz9wp}gQNQfE z1AMlk2UaD>C0qT+SSFzWYZt8l*&VxjYf;_1?bYXl1MXS_SLNGxk~ z85ny!M@fRuHikug*RZ6V=cSGQDj|^JN2Z#jhqm0O>8|LX+UUVu7DwW0~rq1z&1g^7RlcRAVTGtfJ|X^-};$o5#dfEsM|d+J3zCKNQKA z?Fkz_-fXRo6!BDJLV1f<7RHVtlmuX`U~~Ss^uZFR;+g>GzRFWTj~6o=?nQK2v&#sq z{=}(>=d=kU94uY?E3;*PU^!DwZyCE1Rp#AI0j=wb4Zz#y#Y8awbCf?VvXjid#0R>v z`_`GiaXI0j)b$C6rU34S&lMVn4Q~mvHKVSh%Z)32#cOcf9jHS|*)ww;*Bk7zPNw~@Eb@+8=+P{cZAJvCErKus; zL*-pJetYU~_6V*&|Ep%+oI1tWS>rMB^OS ze@$0f{&KhCj_*Hsm{=y_?<@Si#$j>)|H()CJC;sD@+*crf}z*XQqlqvSfurA@dNMQUWTGXBkVA|d(O_Qzju z^q1)WIo0w%xUavf>i>n^d6fcuE@$K_>9wI-_wyXTy#Ep7k}f?|DxrxBMonZe(T+@+mEOI+h02*hV}4YFikPn;96VK zKHJ-UUM4W)>=*QqpV-XM5;o%{+`>N_3G!yM~gEt8;S(C zmN6iQ22*671*soo=WfX4X2c=AW%mGStuF=}$7h8GE81XR;?4#Kov_Hv9fz_wJgl!~ z)dQ1nkb`cq*;U0IT_d#1EJ-n75(h+y)K2l!C`pFFfHA>7QQECtczy70^p0!mi7MAX z^X3{j2@iFzEbP3-lW0}9ni%;JMd(Bd}|K_%OPC04>)DTIklc%S;?T^MljE= z1f!8Nz+eSc6GUFcAf#1I6=~#;?e2%-caM=XgM_!9z;aQc%Lt5*_}Ncij0J0}f$H7E zVheX5?_QFN7XdSv>~Q!Ya3j@xQLN6Qh@zi963pD-dN{1NOFfAs- zvh+6SKEWX8p$nWyDv|ct|Fo7^b*{-K)$EqvB|&M7Jw2Q}x?)A7zcX9(ycF9wm;5MJ zw!MURZ9FNZNOPLj%^W}U%JklGj&pL5Qa+P5oYiMmUh1*`Ld1IS*oTJi9T5lGf?x2~ zo^(fGPsOUuq?I@ja+>9Wx5ZrvZt{K;p2leM9a&U8@lunBi3S&CwyI^L#mro>EBf+r zU4ep!yf`)Blv;cL=ksW42&NTr_H!bkdZ!g(=0BSQpV%f-YoCO($!wTcXN4rjA$$pa zzupu-OeZ9<0=-k8de;4-{~*{UtG!RR&7M+hW;~+16UYYjnk1fbQCg39%&fS`X${U+ zxuWXbV*QtTk~SwSwW%AHaOE)$v= zYzq~bugR)H*%yKC^p$qAi-SDb#iWOoWGdrSrehU$Sw^aTn}iN7k)R#3NS zK%E7j(*sXkZ=7H5YI^Z~wh_BKy;Sx2YmFJ~v)oZs)mBUsdK#H4 zT6P^fp41vBHaQ+Ko`g1#D$|Na2DR~)iwti}%3kQ1@MUAHtCn{)&Yu^tUets;CynuY zB8`o@5)6_RM=Uk5bOJyn7UW)HF4chls6Hg4bAyUjY4$ZDPKmc6h_2P z2BmF&bc+n?^AiZJ=G`7XQC4?8dinn5rJSNelk6r_X5{={R~?%HQtny64e{aN@rnCI z4HdQ0g;axpV&Ebc4%ib42rOS2@6Am^~%`Rg-N#2m?Ty40cjf~hP z`NUz*Ehi{fd+|~eEoHg^yPUWGG^p3xogL}VA6MpJ)0_()LU}^Ca`wIZ+|;9IHy8gO z*4{I&sjc1Hb*U^sT+&4pL25uiq)0E)1f&T_Z$hX-q)8{Bp!6Pki_&}OoggitNbkKD z=>!ObP~N%rTF>*Wz26V#x6e7>0x5HhF~=O^F8^`eB1_!I>GXNI1KI4Yk+!tw!aO=1 zqcx95r>(7L6u9W8XjX6u=&5R3*Ols8^-b9mTxo}@I8X6a&qM^m&Yl5=&Ak#a@mai- z!3&A2muy(^2V&~C_`L%;S861sR{2Z#*V~(=ea0^iuxEelnXVpLU)i~Hlc&i{CnKC| z&$x9Nny1r+>N@*Ps87yjnmk-*o4Fw^M=}XKM`>?_^r_csM{`8mTPhtqQ;jDj6K7(! zFdO~Kzc{WBYcENBRS()p%r~-+1{@chb|2Xp57YalHdb|P)9%ew`oVz}1v+2bDAe41 zZZe#$Z|Sq-bXud_($xSnnme0X`b$rz+GxhU^B}{3uzdWm3}-{ zsJ?ci%GyV4D&y>n_e{Ui4M-oaaiTkmp!ah8$Mt7jXI1?HX~Oy|*pbS1qD@ zdzL2(ha1-o*r2(I4;Pm#>x1IBS(@2Pq02I{eN*F&`HObb)ZscCs+z#H^J`yfVRNM2 zoEa^X|aJx`4MsjePOvh);!&<7XC({Q)_9AxinBl4!|G9-`!0#5d zRNGdn(LL(mGi)6k>GtxAtz2B>VCUBClOkxWqHEI!DNb8`#|GmM@%%b>H9kMZxm|40 zum>UEt!z+&4wD^-=gjY@LC$`78hH3$ z!U(!k*aU{#^+Xg2bzrV8u-*R@VL3pghG9)ZF4`>SW{qRy5F3YE$aJSj^bc1nZ{xzrRO=uDev0Nw+V8O3VF6p zniksRl+GnHFH;T=`NyyOJ=cqv-gHUo_Rqlh&EK1LTopn#%7ZCYDBStnrl2usVOs_V z7?ouewgwG(EK`WxvDNQuuq(lR=$<>? zere*Mftn%38J7gciTT5{Tdc(A$1C$7@OgzEmy!?;2I~u7hKZn`lg$Vsw&Qx0m9g+` zTi1wC-d*Oyqc14^b2fOvd(Q+Z0eVzjHQd(uCk&Z&8nmWB=8(}!z{bIYQJ^7OB2u zA{-GvW#Va)`<2j33y=0_<@4)BeegD#w9<}D=CLh;#IndHt_!(q9!vAL0z8803b(m< zSfF3M*ZO`Ls>siVX1=A$T5hRa(Dy0aUG&$YX4=%@W;9p)u9y;w1ZExS7hzZ@O+%qV z0%I@8a&nj1A7)^3POp96JT^aW2K)gGE{c-78vzNdiOSrufZYbQZ@dAK*XR{Da)xHV zWG-bb0%s;Mbx<=E4(^i;RV77@^K6m%D^ul1HhKr>$#lS<&o9xQgmWOfKCGBV%cdxR68n`iwR#q_XK zTstXr`3_}ab_8{r%;no}hn5>FEX%9THr~Mql^-#XZzpeBLxSZc{Se%Jp)5HnM-Mwu zchscqGcOfp7Hnn7)jE0@I65p={6}1ho>O(u$?I*Eurt|eyeY&L+!zlPvpvzAOrZJ7 zoD4Eb9ZvRmF{n0$G%%rp8^BjxLm8MMT;8u7E7-2CER$5@LSM4zJ{SzSMIC#Ww>zyk zr(3zdNTuU<(A~b?2JJ+N?n4wPIn(%~`471O@)H5{aGZ1a6^CTt*gfAh87_B~mTsl0 z@FMX&+7`E_>psshU5+<4yz3kFQf^I_cSA{sb(iyg%0{VbWY^cI7P)o__}Wh}&ge(Y zAmb)yC=zJ$_!>U2jBp^W-uKorH;yQ9G*9s&wAL?JL|w?jP**ebebw zuz})r>HF8$R!rJYL8YM-3n8&UoGHfZWm0B&w z_+-+Q8DAJGckDF;SF*@#(>P{k(A6kBpEO*0EC1b@ONT;UOD@7b)P}iN2Lbbk#S6+i zGT9oXeJ@JcY#DjaQd6O5PfW)pdVg6a`XT9BlX!xll4B<1DSCb(xh^B&I|<_u z)!~=o;E?+xVPvDLCz)ODVHmr5H>Af;9RkZE^X@#~?#q3y1weiEGc)N`CoS8>bH?1z zx2^s^z@yeE#bDV8sX%~&(m}{be>nLbVsj+W_UbvuMKt)Faob*cu?{e~Tb!gV-n^sb z6rS^{#xKZ;RNL485k;r`8^@UCxup>T-=muFYsCN@cR_yh%|MDT@9jK8#MOdalbk6n zWU)|OtcP3qwXW6<^kJ1{M`@Shl?y;VT4zyx2)@ZNJ0n)?Xj8jus6)MFl&JK{ku5$I<3 zb`#U2O*%9j-IM{k>Z(fsTdMTfJ!2sVrMg!AW@PuH>~ZUL~lh zoyql1j{i{c)Tg18-ings9qtK6v623C*N01XcUyj`Az@@uxrcEz_ir68_DTVFCJmVT zbM;E@=Zkp>7(coYL4@8;_l3b8ifF{3CG1KcZ%akg|Ki-;@P*sKs!W=yc^MFinUSnd z55XDZ=LREd(BW~7;kGmW4icRpdyvTe)0Z~xAU2<6?(LBkF7yqFni*zui%{zE=CS!& z)kaG(vC~TX0IMca&z4O{9Mno`!$zVVdEl&f`AVchgD2 zfvDubx_nXMM?eE%2>61z#cG+B0B-aQ+rSOnbVgy<-c2GkvoL!6UaXa~x6unNNAsC& z9|J$-^k;4z+ET_#vJYmgtN{Dn5Y?tr>XS~T=4Rk%jss%M=~yE2$UN;z{7YNY=O&;q zG2pwQo;nMf3L|HQPu`oc#-0g|Ome$Qv~ql))Vd&Pi)f1UwSL`w1i1bRA^Q>x+in7; z36oEgra6w@UY|TTw9E917-WTT`@`mbPtKc)r7mU`elas+Lw|0ZO>Vd)m$4YeR9NNO z!|e*bou_vtF9j{Ze-4Wib(R3;jvQTEVXlsx-ECIe?|mZhaBiNw#+-heTQo+Q9?rY! zP{gx?VwOLH))$D;ZU-)$^RL>d%^HDZRF5_QWS!-fI)TX@92OO8Udr6P;~U4fTvI4QJWcBMYWC({I=eYRCrFeB(spi6xs$6Br48Yg{;E zsY?$o56PSka+^20`gYB=o`9%=?@CVi1hcISM4Wejk>d-rt>^o&BdoHANpgV3n}2o4 z(jhEbAPKFatGqX*=BqMe3l&J4Pz9BFapiZPRe~!em|o@T#UNOr@_US0jO-mHUUycjl3*7X%II$|b%wRUT4 zIcw<{F{&8sBduiw+u$b(Dx*_A0zO|BNAKu{@&I%83xY>%E0WF6UpQ`HWM75$ z=7VM=XtrSHQ~<8pTEM&)ecTOX5e{2F>}D-)&`CUO0mKxzC$(d&-+QRix=vGL#{|bK zdhW1d%nq^?l*E$;nxg_o`11E}@sbNBNPvV}-NrFG!k)hBQ@axlS<|;61IcMb?J6*s z&16P3^f3I><992DYxFHkn~OE|msU>7W}K0a?|U=ZFZ6O|)R+Tdq^O5C3GJJ)s}Xzo zRHN7!+qNO!3h5=nnpc0i%x`J5-A1!-RMP-n*qnyt+OS$G)i<{ux1#xG3oxLE$nU#; z<-JeBa#g#wekVu5YDox>dQGbL0{Qe_jXT6oocSH$#F=TD_w1Y_Zm>2Dn~ED#TV7cS z>TY`vx)gf@`!l#mJ&om_oCaPYY-%rdnE|QPBS?=>l3RP=)$r_x$&xqtDX$KUm*v|rGhubG&laM$Cu z&!Jq2Xx0U#xq&$EOZS{!c{~}DX|9|>lZzQprA1=|4_#YTm0AV?U7EAyr#{bC; z{8+m2|5H?-@3kWa1Yql^DfS!pkxatPN9p@=>TaZ#v3<#1ju;)^}ly^J9UdJy0JgpP~uXTBT|p; zc`j$7SO<1>J-6ww5xWhN~ z_*3-Pyvx~%8OVPc68@Y22$2}O|A^~^F{tqt`_2Y({sVBw{=WLVyNyi361Y_uzNcc5 zWniBsK=Jv#mgar{ChgVu2l!v~&mRw-2uG9!FbSI}8#4gvI274^;3(wZzwwE8Cv@?+ zgHnBmv)3Oc-eSrXc6&Ub0ljd_ytgeVIQyys0bTQRj_MA(M~<&Y)Xw}TdGes0o+9mo ztJHPoAGJ=M5wE8y_fVWWRmi!`(#g8ExyiJ=^=;o6JkD?pXA|H*;(bkesx4nuKWXgO z;@tOaI$Cj&AWxq>ncjULAA@k=!JRa&SrXF!*}#L4pz9*?jCOoa4*v+(z z`7y1DCdk8{mA$MT?S3G6HR$K$;4viS+;V>Cv&VR9I)A|ZVMSkRd7c$9cgt<-)O0W7 zgn9pczr)x+$EcJ@ElL8LWbU_K>NylPOM0~!HXBxo<4?d^Pc(I1F1`SGdY6lTyhbuM zG7_l?32YQ}HXv~Po{|Rl(^hfs_OFOfwP~6==Qs!U8GD(e9RTx0cy7h_hymHr?7LJu z3oY?p^TX(#x$I&a%eePhTlRVy^3e+$z82WmG!Zkv8Y;^U)6j`HRRO|F^TuMj>>&Ay4d ztA4?MP7v*X&OdK8$A8%nJreQPfN|*d8 z`*gRa0EG2qcejV7(>TSsTk)8USlhPlWOEn&-V z)t*{vE^$yDrtUGY{l;-eT7$P@s!=5zZM9e0wR|qe*Fipm&aQ00kKy< z-;~BWfCGY+nx6U1hpFc5S$o01K1cPumbBZjxce%c^E%j~K* zf(4By+e1vk-A7}Rd%nB={OuN(nYFW8{R&H)Os5InTZb|5b1nDR>*__>d!EM{r-!DE zKhl%0jEAMJ?DqU!{CX~badU~LT!lU~+aEn3rT4W^@%dTO5Yc0}^toF)i-wi&?Sc#WMsnnU=6!~G6! zU5}@GUm@zEB+frIUcse$o443#uLmh@U{`5%=0H*wV7@r49a0qLg zDT>j2&16z!?PbzVbqi<|Csxz&p;!(o&O5XVUyS1}b?eF0GFo~|!2XO*JLc&mx!*io zY~pehp0T`EG4=*?&Og$U!!uT)_}op|*fM4D?Nv#7mL~<^As?-3t3*WSkf?b*T0L2L zgKq#%h_Vp9ka5Jwko`hDS!cI=`#mUBMlym<%CWhTCD@>8{>ewyp&mqF=C9mE3!=Bk zCWk4Tuk5z}Si8-1Z|5n{d&-rQHWm#?Oc-C9VfMkgjV?S=_eY{UTRE=q?Yi*oXHuvm zh9m!x^7HEyH!dPIv?kI8adq%=uEercDMNQRfx+GM1nS@hqWA2W!>pLDA@}=0@2Ane zeU~to>j*py#^BO|RqrphUAy4kL$_?DF9s%5{9O2 zo?&SBkodiL0+6Yr9Ybj5K+y7GP-$dQ%rks@+*MFweMIk7*_HPS-)WG@eo(2~#yS}8 zwl}sX%fX!>J8UDF^#O>U$8H47U99X?Z0|io*K%Klh#lceUEHNE${KO#mL5p9A6~%E zXLX@z0H~GH_vgR`{OzXCX4R2NWt8&}=@voR?BwyB9z9aG>{}`?yD6mz{zMPzPc77O6N{6)S=l zhg&NpRwI?V2-@RgqT_81A<`VG(>o4I)OK2#Ekd{@lE;K>^!g_hryA-ydYuW@o`F8v z8Bs<0q|ihm_bYn0+=Q7}2x2(Wr7)L?^$ub}8!Kz_pP$|_{Ag%QUAk4j&)k-Hya0w2 z+@h;Sz=Y+{_h>8up|yOj$K2FjMQ`w@75VQ*DE9=1m&?^AQ(IR% zL~#;2OeF^*&t><|UI5$oYVWLi!k_T>uK5!%FyT)d8dHwMAY{ZS=|4B(4^a|}SI2n+ zt_wJ22JK;NuGzom(SuvJ^T^%a+y>bxKMo$`cI6A4F+W9iURGKIMJRHjp4xhk{*SHs z>Xrt+`%mMEbV}94@qDgt{X)&~J~1Xilt+9w#}5xNN^U;b*FN`3o7=xybzLy3Erq1* zmih!WSvdfliGQu~;7FCE_`-EH|pXrXiJz!~ZE98_jv z^MG7$;YtF^KnotmOJsU_2gE>IpHE991M;1VBTupIuz{$8rN6trLx(qVETnvR{b)bJ zRpsZ8bGCZpj?m12w*K^|4=Zt35m-7-GHSB~be zC;=rynQL>dAcBTuPrx2%_!PMMR>7@M0#P>P^DjiC${@Z!Mx>R$aAvv^+G9^+B0;HhIb za|ZP~)Xprbd(CJ4ewZkmJwsKJU9dIb|Aasq|bnC0WPweCe}k?zu)3)gejC}Mx#R*8EROBU3F-OkYz1%6@_}{B^_n`%3H2EmzEdg z@Q$s7SBr0nU>_M^Px#K9osFH-x_CL3U!x5sg0#V1hfYLeaZXh-bgK{I&>`#=(cX2( z$(vH5$e$bS9;-*66IG$l&)ejVxgoWf@Se4)Q~6i41M5fMPs1ygpar9eyl55%KX6C( zJU`7}k4jmied^-J^W$HRj(`aKiSV5Fe)C>O2<2XB#r{UC@m{oT>Xa<3^N@&k<>I^B?}Y{q58|j&SIz0dz1*p;l}w zDkJ<*`1a>lYR>VK_i$vOK!{{|WZlvVyLslg9o7Z0%UwgHx#VxwoKaH`5J=x+%F8hD4 zp>9F4Y{EGq%D56=F~%{_xNSvJgsOOVwY{bsCYzK>w>6VLnFLm8Km+f358MpPA?=%< zV=wdD{XXi)(X9M9x{E6lY~@gYEh}-j()rO@eFluOu3{)yun@Q0u@R+}Jp|8}mzFM$ zo_(lpHYZUl@%uPzydAWvEjoHg%;=J4Kedfge(!jt`}bL2hT6<8)%=FPNI9|j$NcD*0;!0?%G zH*Z0BbNNlWzoyUqUbdEKE%=GVKVg9g* zr2p6fH*V0G|MRc^2Sw=r-RQ-|inPXvhi0lVXDbx6Z#D}RA8$5d#)R4 ze-dThk$q;w?z&LiC=>FWo;wd@{;=YyTR&q#apRq7r2|1;U*}JVy**K?aJdl)upu)` z{=ENT^Rl;P&~E=|N#3-^R?bsGFWDgH;g!5*!35f;rfr6Gmovq*#y!45!K}(!LBBhQ z{fWw+6bTQqSTk^`@kOLNg=o!N({T=ATBk{|VlBtQffptji1ttr^nU2s*QBihfoV+GYJ29m?21f88okSUm(|dibY#`M%sI)M;5) zNK~!$aN22M3!(s-Oz17R80I)2KV;oCJ>3+vC)iIN##XO?E8g`+OS0V#bG>wO2GLAPFzf}N(?eC|->nrRa^=s|pmSLKo z#?~q^k6!w5`4{Kc_L&IGSEWv$WYdOvFXXLl_@?X!gQJ^`5nLOnu+DoGFBm*_be4fr z3CWKSJA>O>+ts5l^~TU?ex+S5^b3S*I107^Pl}}8UZqu>l_Z1Q+_9*RAYuaBYPIS4 zXm5tq&x-I6DyR-IXu$bMVx~4{UI44L&upc~T^QQZ)X_kwuld)EWG~oegj;5Z?VP{7 zFM^c$9oW{gV_?oTR3P@V`*&^gms9V3Q$MQ5`N2Gr2ZBDDCiI?pC(XOR@Pq9U{BAH1 zR{2uvdbjhwn7RtXIJ=Lh{<~ny4ZeUR3QqI2`+_ukosV3E;3HlMdp*t&DxJ3sn)8#{ z7Y=@xljV~k0Y7T964gQ=8I7LI4Iewcg;RrmJJpSA1O#Bz{*+6^?mJ8zPd$B-Y3hm+ z(6c!-3@#!kAz+&N%5L5pH$3j;FOKTdw)t|7BVT@{Nz4@wXeEwdRm2@(Nwr*W%K6=5 zzqGQgH_C~`#6BCI#9@UV9urpJh6~Q0Ak;5o)sid;q(4ae6!6}oZ0?k~?(^Lj$_SjK z@X?F*!9C>t9&&=pI>>Cy-(BPR?nU=HWjO#8F81qIi@)l0<4P;jsQU7IRAeOMa-t0) zJpFt*_lGZu`ikld`E=sNW_XZ_SVI2(?unPTt<)fL8~t6`T0Gw=n0TE(6!C8H^s5{6 z6Yixsxg6<=$sMAhytHvPyiA9pYhaW4EcyZ3u5Tm2`Fiba$h-VlwXSAGmhi;Wu!~8I zM=a{H{uC_Yezc}Y4hmnZfi@!-p`{nI(Uvcy63^rs6IfC7kKJF3A6v)O38gqO;)PEa z+WNHU*27rwp4k(Wnr8#9N$}Neb0W2QG)bv*ErIFw)7<#mpnV}) zkk3~bq9wPyLLWIz--6ll*X7x|!(E(o^WB8VH-E|?WYyhfk3gD&&zL)pe`7Q!R=aGv zB#sV3vOI0mbcqnRCRRi7%BxoTJlSZsU?YA}0P(@d`lwRE&#&}W$W5&}J9y~WdHOM| z(uXmpwFimKRR@Xh&Tndg+`S%COEk|cSWrxQciZ6&K8FeyJhohx1>JLQE5v&4N%56G z+`eVY>3zs^!oD){fRq-G95-j4p80kPqb7WmMW+tBH!|I3i|O(GeoF9&R6FiTa=Z(9 zb;jEdn{a^`?8K-y2#^|4AJWAR05|k`zyIO`#M-G3g#>i&F~j*=#;p2;V!2F6WD)1Z z7M-cW2jvzA@p*(^;Dbj2(3nBgH|NL`b(rMy$T+y_v_zgX97Zdm<9s*4MQSLtr~~t! zT3@}HM^42iRSs`KOaH6=!DOXUz?faf+Yn0$8nkhN?0jmvaGU_vM zGzYU*;G5D>)x@e#R3mlpR5eNI}Xuw5K*6Qmz~YX+Nc)J z=MCogRiAs7V6!|}72hG7JX&*#5Kn}4)GSh^vU<9$VV0X$bjw#OI$RXJC9|(5LdO-r;^r z7sI4YK@slFWVG~^QdK0@A4bOcu{FeDz^+T?p|VLWpi)7vywNStlvXsf%uc7gt-)^6 z-m)84{8VaLRR7srLXvvO6%V>XVpUR04sp(JOkRC6Grc~e;(aiQyuL?>|DD6ncht7t z(_@TtUfEMD7`?~X`Ts$a{8odVL|qknt4k0F%?|T;8Xxe7s?5Sm>_NA06o=j75bmal z#>y8Uv$v#fzseky_`1Fpp5|bBR)E0Bzeu-)&0sCdkQaY6RrP>FFvE#UlB-}wIU7&g z^a@`JYfdW(_*2MiRXI7CL#SxS{WdnZe6X zcvsSiU_P_r0|Z|8g3fS`#CrDI8pC8X?P-EnHc)SKv>WQ>9M)91T8&)Kug6M3|hlE;1a0ap>^>Oh$l0gSFC zl(fQOr7&6a&_Smw+s=Cc`Dji)t9IBD zpiAMu)jj2s=MD3<@gXbvL(}7ZDUd$;VY0q>M-BItxp}pg$AAN&IB4Q!zf6*U70>}Q zksRxhI1g*_DTt*6ov?CBo1S@yyv_c$#>%kP+oa)}4IRoZOH{iLK5SDXa>|3gy7~~s)4lJ9aVi!`k20)fFkJSgZ+;bn? z8tBQL%N+2yd8lyh$&QW}&)wL8>yKI=^4oPl3&up`@M*L|G$96X3>T;60p7oQ&POuX z$?CXS0jocg;h0dxfi>+PIUBjy(LpsG7@ogt-E#=V`E*HgT$V~4eIZrlO8P;jTdsKd zit_25^@M_iCqHcds%~K!Nzb1F8a=G~sR1GEHbKrd0 zIby`Myz+TtXl5ayRgSHqC$zF~QLd#=?yAs`xy>SYlj2J%N2V6Q?cq!*oNNzSFf|7_ z8IdaFJ@&E`4VcqRfMC<0O$OwWy`z99GM*;y_|fY5`N- zvGgiu7cmHe;3L<*h*YYkzppiJVj^Wn*}`kja5rT#2Xo;$g+9c!OF5@&#<@^2inF}_ z*@s+&SPr}wp|{{#m5_h40?Htr4}?z~`{2`7*W^vlT$s%xC7jJpL?D&sFfn9Fsi4xS z*axd`;+6pIKPL9TOKj^{~<3l>*q0Av?i8Zx_P?jFBuQG#x#g6FO z*j4m^jswdx)KRVw{qj?gKB?5e(crFjO47Gz&WU^SR#3=Qa5a-SNE01 zbsWTu`Mf()wy;RUNzS{Su(}$rPMKKc(nh#cX+(_DRUSJsP?2b^!-zBauF?XufC#^O z2q%%6G_0H94=J%ygA^uVOJEWTC1fvVBMdN-@eXP+lP?&^;OxSOq}fM4K6Z>WaKLFU ztDU^|AMsVV5d3hxXnIza81&+$NoMUW2vhmU4gmx9j~Q|LA6xm$!jq4P$Vqlypu&!C ze1cfLv!tD*ogUM=@hRZOZBW_iryn=iACSINwkcwaEzys*)qP_zBW=cr*!v*?E^}G= zKCncdhV6jpr^eRQ{_B>)#=f8#f#k0r?IQ(SrKqkb~9^zo=gy@eVI` z^)&6?K&{^2pL)j?1Qc8F>vw+)>o`#rT!DkeuUDPmNK!lUv{5PJ*(=X&Xg5%r)_In7 zrgV|kkD?*yB7gh9bZ|tnN$gqR@qjz&gzV52U*<`QC!=x zX?-*2+9&DG_0e{P)ZdqU;!H%4Cn{|aMplXHPJ?&#SyhVS9!u04!AaX~V7|}qORd*% zeK;ms)_+W5rV^1qfUmALG+TXO(WXM>jT)apmBLIflsw!Ju&VMyTG{Od!RP16FKMTQ zz>^$if7b>r+ZP%2hoy;^FU-P@eE3X24$j)aMoO(cTGpLu!Z>39cdUBv*Q#dmWWLKr zBSpXgActTu~QU;otglNZ8t!u}et zPrFNRNYv~xh!AyK>?mBZd&Q^0*o;>I*9~*KzK$MC`cdQB1OA-mqx?B!oOvtTDR|SL zGGN@ghLKmp@jaetBZ9Jz4!kb3ZP@2W9_9E{&Hq=2L?Q(L{O6+ZyTgZ@x_|IS1}qMS z`T3JjQf|}jf*x}+LzN)kqGaBPCj3KvJIuLJk;KJAct zrm3s@z0z1xG?|&Fsa9*Wm$2%SP$G~mlHeHklK8v%>FYohJ_~bIHp4!-uPQrUlm%Gf zbZwpccU8X>k~&rQ=TiCWdA3VZrF089ATDZ;XVU5@Q+!y}sr++Q>LAYgqxp++Ti+li z+Kv=$hQA(-1euM7xRa~K#(N!kJT^rJMKmaQeZ__V(>xjuOUggpxHAx>ouLu$WhkGA#f(Dj|8CJATxtj4phz;Wojx>${og0G4-26L2k?{IxPJ)|DcXd;$gdVhUxVsZ_&>Pw&9=*|7G{W_={B{k6u_SMNV=4+`fk z;LJ>T!K=3Jp;l zvgZ;!y7V0kPuD`pt3MB2dHZYMxtVOH;iFvGU1~{v37Kd{TLVK~6q(YfaJc+@o|*97tK57w>fksZja~EuS3m_3I7_`chg}+Gq z2t}?+@X2RCW|-l||C-dR(Zp)+_IZ6-+Y1FapNyAP+}ima`q@tRS7d?2&c76L_LO94 zKlXTS*UuH|P# z(SE46y#7#Z)Lhb_cgVQxeqzB&*N-M4=01gxHGIgB{EGafhZoJ0@e08sKG%{)^j|&xfd!1bf2F5@^8{KL|B-GO z=(KK8Ahq5zg_dgrhz%N25`^`4$b%haUfh#f;-F*{)Zg%PmQd+%hT6B0gFf(vTp1dH zzT7ZC><0XCq+s@IrNyX@wjQ;S+_zq!sw{MRDe!)I^}j-!M(F~j9fR4WX3J-jOhzoh zP+FA7-UeA?$d!t{%S!tb^9uruu+DHtNBuYm!CIcUQdv(5o&W3&N418B9JDs6%}Nyw z)(hF5H%&08(mk~@T04@4nC9`Yj0QzY{l+~@^-WEi6rss-Fp*mKAVFyX$eY-%a(*KG-2#_pKW|V(uvd` z?P^YM^d{jjamdF;1kAm$GQTI=peIR+0*V@!Bi6WowR2jmT8Lp6n8G0d9J}12E!0F^ zafwqmV;9)udPBK?OyKT5NkENUD`&`Q3*wzGR9x-cU*%Qw~j zIF}SMjS+834XF5F`FK{cjk2lY-HR=Wg@tl;@QkH|t5I0epr9?xe5vTzjHu*se2t$+ zx-FmjGj>W0Dn#@Up`>{?`WKE*)uwnt8(#4wrqpiFj%ju1b%*e`fd||uT#ARmY${XK z6od0l$cA?Jgs0@B(-U+>2~{5<1%e{T(c~C5JZ>d!Gq9LMX0C%uZ;Bj6&t;tk4hIT)j8)S-z&#uN||wZ zk45Cz%(fJVxQC*r=S6f!2(adNIk#oUoq<5#D@a47ESyt;I1e|nOE7kY>B$4ww%*S; zr*E@%;X01XOyuNhm3}$tyP*QY?`)!i zRtZ&mC0)-mhmZbZ4Sm{O1AzWt#J}6J34#egP&X}Fm%b-T#T;wVA%-d8quHW3z--v^ zCUn#M!es(wHaRSJl+D%L3NUq?lY65n1$T`OKp|dc z-fZ%bG}8R^q7V{jFJ3*;RHXF-L77)XlUwm3%XXZ=+Py&@7Z0Pc3pt+QcRO`55DGQO{DnWBaI7$n&gBKe20$ORPt>l*3Du=Ml4cAH77d+~q(!=y)qm-Y@U zLKtsO33|5NrIg?=O02jMgrS)H@`ae(M@Hi^!F42r1U?!VQY;$sy`_F1_x!%531#9A zOmJzu-)S1j>O}53=5}yJQVxT?5h>uzyF_n{{23+yXWG_o@@Krf2)P8I5o!57V6SJ# zE=t)@WoYEal*fZj>yrLwuT+>r-$>Q*7aHwvP6x z85jJ5e2Y%bN7MZ&1(>4wve*0C?Fi)jP zwKb$R{)5xfp@up6uq%A@%oQz5;b}qdCh2>i_qeDvlc!|z<$(Ul8~BKz3SXq2ch`Fo zz#Oc)qCn;d<_*c9(vzCPe3y;oE)!tBvW~Gb)MDyBT3`@b;KVSu`>cBT=NsdOcbVaz zOOrHu&2hyWKwzH_5=T0I#Q$BQvT;QkRXy5`Z}URVfc3-!0;di7N1R^at4q)iNweS@ zJsyJ@m47|qJ5)ih9dEva0Dh}V2ZbA8G_+FS{(5VY5va+;&7^bh?ga|US;hIjV)vV4 zj4sbRrdro0)4!FeKHxn2`;*fDtIYB=x2WIR-T(S33wBfJT9Afk{=0+dv$=R{`#PNW z8t$aB33Io$oRWH1u$Oa=Ht2ggAnEF*dkrW#eY_GSiyH)6L#_&T)9rh^qK1d1<|MF| zLmT=VB(sst`H|rv9p{wCeS}k;9^Y}VP+?aguIC%WYlKtiD~^*ihn*9Qdi{)~jg!jZ zgQ;<%i0@Z<>-GD`UY&$F2pj#TsLkf7bJZC;RMZ@axp)_^gq8T9xAd_*1aUg!D_D-b z&#Bl!^l!D0pb(zjLiYY$Jc6RY>2lFk@&_MUmpBXch-_xZ?F8gjm zH7HIF%Vg-PoJ`qmU;Er;@LFlj-jMwUl|1l@dtg}wCud&iu!WZW5@$&91?}#3w(f-W zLx+GTvky8{@1U<@>y5^f5$(o8rXLlnI!+ta(InQ{GIfap%F*#zefiz+MXDKo2$y|B zXINg;_rVM*!znJf)zt-{YAd^cFMW~9ByRlBxoksEV@EGJyj6-Rkpd?eN=J zUiwIXl$T`K;kVVH4AN#SZwf~A^d(_mPBX@Z1a1dJ4ELXa*3p-C^1 z-bJdE1f)st9qAqET@->SgrD?_F^|6W(L|)NT8CR!o~&Eg$JF za?~O*81N18Vm9dbEW12=X7Ez4A0|(w#mt7Wlz?v}kfEjL4m&nn(5Iul1>?Jv(iu;0 zTKrJLF@Xm>iu-L#`6qLY&Rx$GExGy`uR8M4JcLA~Ub&rLr+!Bdw5k!(tcwfXG{wPi^T0OPw`3GU}ENI6qZd1c*Wc23s@d7Ci zab9K)gn<0!!rArvxJ`up{3SCJ!1ns|65U{=y`Bmz)23QyJDqO*Za0K=fax}toYSr| zqrW2FUn}#NeN$=NxV8X|{oI?Xnc{M}ELgT_#3K(wjP+?%NcP0uXk$yV! zLqYc09+fS}pVqwkBU8W+*(w3gI;VmdMOILM$uQI)*e|qdmTpdq{WuCKiI08`5T5xc z`N^Zu-|pTKyy(cmD<5341!u0EHt5&v3_?6@WEY_TS3vozitcP28`guQY?d%5_n8nW zyyW8C+Rg8g1*sRc78ONN8e1LV$9+#@eCDIg{gPMWOR*d;?W!xHbkdY_b0yqj=Sg~^ zd!^lN%)dRxk|+889Wr#Ks6&$p%h^#PUPc$21(FK=3LReUt%o z>%4~d($sGR|C&Z85$db#8$i4%3k!ERt$VlJ_(VkmgJ_Hh@|Z-Ar>SXrZ?beMOR;U- zsWc_pS->ulY)4)p8>CWaQmuEP4$$~?ykNv{zXkpyTInpfR(q-Bz?h@Oq8sq_#1?J{ zKdN3)%rhlS&c?F>ni4S{TI_I+1@**DskLIej*r>oZ3qd_`H*oX_L)z4uhd}OW#ie# zELSK;#Ie$2)m4wT3F@c0Y5kZp%N>k|>|AeA=>VbT33_`oE^_hm{MJzDoAH z7y4(^M1|bh?4J^wyPn6N$f?!{(oLPoIV%5I+7)HjtDKBjH3kX%$b6nWjW8DgX&$Jw z^77N&oTJ*!Rlvq~zH&2obvM9^)k{mYx9CiqmkMv!{9JODQ7{F%;-XUilbg?ZJW?v! zaY6By$4?uzj0zg`m;Mj)eBzgDSv3uVhO$MO)uXH5(*n~W0jtBfeZNuSOo~J6mcM_- zzBLDKl-q3oLC}!ju#Mtw_jJ8p{tl(TW@Tdvrq$!SIEu3NqUpzXFR3FB+@e#RI%Y^B zOT_tt3J$7Ew^3$ejM8rUaWEUF)DB9Mvd!^JBjH6(c_IChsDZ1G4n7d#oX@vUMwtOh zsKM)m4(@{6o}PJ|=igHLhi1p-?`)nvJde9S@S&l!NGi(9@ZMirO8vkdCg2Jahsb@m zXCn7Wdp}fSDCPqNb03{?P6_1iNz1z{xdn2WyJr5pV|ZiiIntJ0b5!yAF-NWgsJ2Nsl=##N^NU_n9M)lVHubM! z+KSx|mHF9CiZeL;t12`4vDG3qu$Qul3dn-E-S*JB_ibO#U6&Tr*JOW-w*=Y|@ym_b znMOY>3GE(nmVD?V>(r9Coa%WXIAQQNZ~XVzmzvb5d~>w`%PLIkafuAutl0gwsW`#v zOh`+-5kjjS{Wh!NYUFg%+7scD3l*EBc<_bAD{hF5$B(=>juILSk~c@#k( z8RbeTw>&vv?*7B!95#UvK=IG@%K?e=jf@}bwnbcqQ3dy8)oT{T37iEk3od={M6k^1 zjb~ZQ?}QW*!{X}S%uE1ZlWsG!+Z4CRWq!}^Q$j~uA6CsVe#cGjha8G5>oKatq&SfF z2)HjhbKh#4dJxT_x3LigeE+khQ*T$Ew}vEmgXu0c(X$o)K`ElyjV9N$XyEI7eXmrM z>k2DQ?Pk#Yqd!+|q!ej<8y*rch2IDZ=B-YVP@|4RiT7<)pU`91cC7Pu8lC65{x>ZL4CY&5i#r?NQ< zEfoZDFbIKN6-#?deP7@c;oXX7yYY~3EdjDH*1_YKF4ju$%+v(EV6&{P$T%h3JGYc_ zJTUR}4S-qt^kKgeJPM!L2k8!NsUT!6*7M0e5Pt;0r@we$$!n^;@ z@YYP&rDPzR=Vb;yc%f6X&MjZyIx3&cn@@k*$-IXIjF-2RiGCbqN#z!HqkoT|`_rFe zA=7xGlV7VhFuY#9eb{+87W4JQ;SO%$P@!#x3A*xF{t!Izd-IJSc=ovb2ctl%e}-~^ z4JTCehyZ9bp1MOQ7AgBuYNlNrFn^V!!O+^^D_-rHK; zglsOT@FWiOw~rXmaK~^8{C#P&Dy>beqoBPzuk?)^_`Eb+qs>-e91R&O2h;HkfXQ~x%>T>Jdn>x6_4TM>4= z0Ihg0bTOA-@2D~UgOrk+GR`37jW+-Mw$n2zhfiIetD&S zs2kKQU!Na$L9tzBGlc-z$^dR)l`aSU%HnQbO{|~l$x)r7KB*03>4Ft4&f2dVvVJ_~ zwQJZlQ(!)hV+Dx5eH$b(4sMyRPPmvR6I1QVdU$m*+YYBb-I#42Nqn;O?z`9%oRWg>7$^921`kTH9(#$1;cf5|4l7_Ns9rYo@5gsO|w*;rIJX@6z=F zeOO}=Nj~&Qc|I0J_{!3qS(}umVt^r(yps52_WXYQk8S7;(aaxmkue?+GQ}$rd$yo@ zl%gISIJngsj9XBFGgovMO$XrV{Kc4RB7T8J($MS2XA3qmNk@!JkxiI z1ja`Y>!$Z>G@~Lfw0SpXN1wt~Snl(NjR9S1T0{;SqGL9;nFw2S?)B8UGVmhp#jR33 z$cI`idwq4Ic^?_g-sIIdpq16jocUOVFHw$7^kN)JVo4*4=fY@~c|#oO{x9g22*DVZQcHqQru#e=F)vuOnYKg7oo%~Z6) zV`#r@Vjhgj2|Z9TyiLxfLh+cY$<zVnG2H&)WzNq@e~*`z4e{zxn}T~9 zF0?r~(2%ml8CO4LqJg7(mMaE!52_Ko-}sr7RsNUpqz8w!d4KD^#UA#U@PyCGC#p|4lkm`kd~qjF%~>R?J}_4z%jAwj#qmsIAB` zCb|LjcG95ax50cW&^6dapqSn;gkOF^)&fX^4{9PP#_C4rVRLtu|8=98t&dVbvSrm> zp-+ZMF+8<--!Pdngfe|Z3q!AMdtRD%!_Y1M)X2DR?Zp6JR%hARbV^*WPDZ_EY1>KD zJ3fD{s5A;?A8k!n7T|&H=Y647K012SZjrGU+{=^E-)6I@fh$s$?^B-%T%WX&CPsR) ziIoEAlfwaxMOfe~dYOqrbU~yjU7jX3z`bW8?>+NV~wi4s;-}j5W~@VxL3!hY|52 zmX$b*9rZUUNrjs^Hd@N0Gp^qfcr9v}9Wt`2ux2(!CPu}Pz)jVJ@Y5sL=JXXjD^2FR z<&)oYQMF5*dV!2Q9A9pU;9U89@cN9Ki;vp-%XpfD!a=Dzn+sj`)3Nf|(9{*lceY4^ z3S=ns^txJnUu|ZIbts|Cfa*e!J^6Qvxqi zF|e4W#42qY_MP<{c6rH9XbzgKR1rFlbd;5UE^5<*pD)gj&atb>ol*%E8MEe~y!dW> zj{|7V>EHEPkcqClf zyqz0FF{(MKQrNjnT<23)7xo07X zN*HhtCFIXw^%HL7u~NDGS&4iKCcDPq)iaP4zCHCE^RROtBYqb8^q^Jabb;}kV$P(b zkGlM%qyy=Zs3oLr!D(ao(^E9)VgmLv^(n?qx_x5auxE>=5qBAt>FE_(!HH()6)%Oi z-22rB#!vv2_j(@?tP@g=*`uprRf(WOt(ri8W%;QFUsxfcS)8_{B|Z^i?Q9ke@XRgk zq!oCWg$~K+hnY>0&F}4Y@n1aSQ#avEtcjI;pU;O_fOGWQYE_^iwSuEysOpT$gbbad zDO-VK%%u)mxc_xTp9L~)js7@0cjtZR#0%DW4|eoKno}GF?sPOdY?npr-KR2GJ_}eJ z%jLf+HJsilnEsgsv$M)JA z;{D;9H=O7QYbj4{5Xo)j!rtbt69>2cV;f;+Yw#xs$@1~R-ISS>&hk}KzIu^ei~rcP z{qsO^ef;=6|m zIgSdJF}q6LakH2vhPQZ+zmxC#aT&dr@jU+o_lsBSp3V4n0siI3SW9iXzJj<+?DSda z)u0zofkCEE{>3J~$e6O}%KjblhY_qMj%b=wM7}g=0yP0z5lO*q`KL3nO6n76u?`Dq zRUxp=?^yCHY3q2hF+(0zXDEKgJwcMAnu;Kb?%MTIzT+_e;K8<|jh2Z6g)9G7 z&J~lAQ(aIQx(FvEu@}3(bFe zE!hAbieKSlTR4%U^%cBOxK*)HztKLAZN|)jhg2IVC%Sc7b%N~D-8XMw;z<1<7}D>M zpaeFz+8LKPgzY=|PpVu){uLM**Vwf|Pv;7ZXLwn)@kHm&q-qIzTYGl$%G zxZyAs`fyJR`>n)nuh&W_4F1oa?P2nt>kMi;w0l_U(!E)-9=%U(c{%8RWY(uMQ+#=p z)Rkr0jg6yQBRv)7@sjNHOMpjDDzg)P&pjvc6;TS}rVRLZ+Bsh|TH~~XI4qNv?mxuQnnJX&p@H-VLkdi|_fF0$YkY5h*I6dO%}iitup1 zIm_+)nJi_rB~NbIk$KunFY4AKjS7&W$)R)#%<=sBP|}LJYFo!=^vvQ{*K>bcasoeL>ubZfE-K_R2R>}aMdkwz z9Bv(dy$g5?2wh{YP9Xcsr9bMDDv8MnmE?^&T+yjdM~94q1OFKvwheL6=WfMX`a4Zp zu1-pVPE+_3aZb`>4|(soj^BZL4{Mab2J^Y4P6K)={RQgRZ>S-9B|vjnSC|4{Dz(cO z4L+ciqS-tjADjN>sw6>?9c{r*_iGU$+DPq@E4)~&Iawy}6v}nKUZin>oe;vw_r`l% zpHCC!nI4Y}*ZQp*b*;9t@bp1H0u$y7FP%>19S*uKuxB88IX)OdbThk+l0qlQXj6Zx zy%#eVB)KKA6#JaPORX3Lndkrlvj)St~G=wNe&|9H+2uvoF&fgym8u2Vn!m-%Z zDl>p2eprKJhjH*9r&r|wAM0c-i1Wg0yrye76OdNp_vNK7eL4uDzX z)p$g`Y}N6Ved@3X+=`r`rc2<*A;(3qQZ{E~<)r7oJ z)+Koc9&dz()C$;f7ou= zk8;ZzH=t;f)|y}8fP>E-fz^60(a= zwwyO42YnyXkkP77rSi0(W0dX~XLoZy0316U8RX=4R)V7_WVD;Ct53Q4YKcM7z)iCn zeZfe&`SOHj%OzjhyL>sl-J&8y7oEcAkEnSWOlf1+TgqE)fL#*vcsN_6`m8hheQ$W1 z&CjKpfe)kH0_4h9{?eYZNq0&h22n#En}-oQH@s>j?Ml5&zvW20P1U-R6sHSfjx>E6 zrzB@-B|Ax1o+yGa%{dgYUb+`|Oz!bkhX;JDrAKk|pY8FR+E?Vn+_;Z}-8!e~ z@HR*ul~ct)`P>W1c%97c#jz}zIREu3-WbW!+AuKSvO^ZE68Y)IFu zHc;o;s=|rZ!jgZ;y#R^?YfV13d$W|?bBvvPrB7%R0;wcY=|mWE+5i;B^Q&V_P%9z+ zbvj?yRuSGUw{u7oMGBaK({mg-1{>hFNu6SuzCzcVTnb(J1t;!0;ABGPCH}dAg&{zGed`BV znD03lWAqhCUI8Jj>7R7I7kF3HdG1RQRFSElJ#)x`*g)d2ff75UX_#Te&F=KJnGe&M zc4l{?dp|gXw(d5%yU4+Vw_wFb_ZD6%pLH5Pv)N4sVVz;mR)}PL$iRfjxZ2ceY2_fp zC^Ab(yPOZUU>vCOtuH*5pf=2kzJV%PvJnZH>YHEOqztrHStvb>SPRRJY^xGWNXJ&S zRd~72+l(J6fcN}9DF;)l*@E42AE8k@l%LqdsOC>r!k`@viq~1{%dXM`<;n*|oKEuE zMyIg0@nj{Jp}x?8^&FvQxV>$SNDo1KDRUDx-)8V-z}mL8s;ghKJNtto2c~fk>Vy31 z2(-Rkl{tLr(?V42SlUJr>Cm;T_bpLfc`9+*M9-y46gERa|ea&BuU&16B zqJpV%dWX-OH~;;rYsO@e#K3UQi8bps@R*ZY$WL)nkkog3F(Yx_{|e*$+~!$Hop(^~k;3*09vg6Q>L(}s znB0}?KIP0K3{g(!tgCpfBoq>JT72?!MHpUz$cF10y^nW%_IXAG`rrpKhwMVojT3Q- z!$pjBcY=`rA@d>rv#bnM9Y2+onceXEdbH==)dQtPHBtw~ssf2O&D3iK?vs8R;jJ03 z8ZtJ6zKs!Zm1jFpoyoYVVU>~@zrw~}9JT=TD*2}T}x=qMd2-__NsJ63@_p=fcE zN|!7?_yMSFU-Un}lWRQ!vHUQDL}QOsqlK)Sk(}d1?K6ibb-`>5FaugA{=Pqc&)`SZ zOa%SojH|TH0JRwYakBfJx5y#y3+*XiXa#<31eTv<+az7Mz_`Ey#YT5>VP+BTS~dSZ z!<(<)IT&-_Q;T=TRPo8ST5DQzq^eLLZlf4-y=_kwpQbEaj}Asy=$d6~-%%;u=Z4Q( z_BatIggO^-3(T2BPHPMOi+{h@wEd*s&WFYDWL&ye8{K86a`Ub}lISNU8(37*_5D_s5e!u9stPp6BsdW@;}dk`bC#3v(U0?_~5~Q%lg!=fk|nSPr3nwcp8&igLtoy>N82N*obpV zS6%+Q!bwlNtK2!`w@syezeK(y9Nd3zTl%CLq_?santG@AsrkFaw=ALh6MOcAf1lvZ z*FS?HU+M>*+*US5;nBW$`hWlG+GpSEJx-rq2s(7`wrr#t{n}Vo{}28J@g=hl{`)=h zzd}UV5y!d2Oj~wx$nm0=_S411MWN7%h2=|Mll;K|(h9BitlhQ9PP%uLlFhI}Aj^92 z+5McOd5m;sSo1_M03M@`+NnFVioGCj;zZHTrB!OFyVe;<1O`8kI z5c5or`dH7%v(WOH_i^h=xPHp{GtqO9i*G*Q@2?&kg$Z*UK)rY02{mwrIY)F)LGw@{ zmchrTzY&{zxI1%KU?`?sz5=#@F&@M^URpcTZCeI_sB)2HTixUJb1}hMflg+T$gkpt zK*31TG3_DaXjHLJ--zGa2ySWKbeyfuzJnv1(m_53@A|;fd}KmI6Xn%Sgc687HNhQc z$i5`XT z(%R5WE$aq}=q*VX%x1$y7_Pny^Xf_aHiCbsE%U<1r4k^l%2$u*p4@mKvGe!t?5|#t zM($$;SxK*EZ)-1+*Engdb{!=A3oGD8s6GgZWy@*?gNTN7`D9C|_{BZy-OUr{n=Ca; zBet7lG91J-B?pnjUU*9X?1Z{qNZ4&adSeKsLW>l?ke|J)Gwicf>8>s5! zHa)WW5ZK#XIWB;5UEcT03O{snJqOSnbQSwQh#!;I+1W}?9N3w~8J@Y4sJ(qkOIm51FZ3== z&{_}I8%&rbD|$*-{P)5D{J9G2^;)xv_-;dctk&k9v)3aM!clc z0h!{tR@ITU-1URvVQAb+Z0ng~AFP!ZY~u)BQX>?OLrPaQ-d`Lza19Tvw|LedUeLiz zj8)Ysi5R#!(79pL(q;QY;UiS#%)tulzF~84>NGaU^l4qg7xq1 zS?^f?JEf(-+oGxr&KCIgiVl+Mf*YE)I@U#+Io}Wu33?fBnxkpB#zbe}LBPVgl0Pqh zck*r@$D&#p8#CFayb3O)_j_Elue;}RZ2g+wQ!FRyG9Y_bjP8E=r9pqdzLoBU%fae! zntFEtVEV%&e{#11r`@eSB6_K={a)mw!QZGT5jNtLE2UiayP86;N$2!GGfP&8TL@j$ zZgGV#D${g<^-n$x5~W;j)*?l2Wgac?4cdI&4q1*by3ltY&l`6%2&e25rS3<5n{n!H zh2cl5;x3*0ji`v2mK7D<2d>GbTub8C86Nk9m)EWE`{}yxDRTgp)FOL)n1Gl87DIUh zo~o8A8pFHGtsevwv))pB=X_-Hbv+#t4$?9zbtd8a_1ZM=`9W;D+oaKbgo)b=r!IPR z%ZDhFwvX;yyH=B}BrMgK`K|7!vSse7 zyXr*iF1Iu5WaQbGbj!DlXTy^3o<5?px*)5A5JV-W$?l!%-G{E)WKRRk@`wiSwrqCg zNkk#s9`XP$YO*|xJ0Q&)LrUaZrqN4p7h+8`UkP9Fw90i!c+3ypSKE!HQaRT-uN6!j zSmo;Xlm?)^e}e|TJdfOHf0SJMBSx<_`^@W7JD);0?1Xo?R0A zK5K-$3Cuw<@e*fN{R%qg)TtA;U%^R7_pe9zxJw*A`@#lL^nQT~lG${Rh^D1{p{AbJ)8(OvFoAlyvF$EW*xvUh758`zA%IuGeb;HQhBq`wxLTGCNrIJtKcj6y-1W(>p^i z&-L?D4?4IL?LO(tZ8cJd%m>x3+uaMuwf(f+xTzHMyBS;GH*&yL+Ca=j^Og1Pe{+&; zK*&BasZqPvUoy6mq4({WEIIP1VNh? zfa z{b3fLJk5wE4uP~qZG_ZLWkY(T_~~X8azq|I$#2oDtsu*L;+V<_&Fog4mM-q{OcBCW z64l+kHGIp#PUp|MF{=(6m&N!YnKErs40GWm*Pe=hjU3P#x*wKoHd zx)~bX!c=3?-p%Y<8 z{LC{20kaR&Fz_wH^pTJ1upr8VCaqQdsMYhTk6sk!^Q?KE=S8fzZ~n+ox{y$^!L!AK z_6+gl>N2dAN>4PrfTX5MX_B;BfeN1_dpb|<-lK6T#fz_0jcT3>fc5mKS;6KkxS zZ{O1n^Ut__;a8f}M1Nw-m*`4WyI2eA`pQD?Zafk9f32a5)v`yRGjd>gt&A~?TW=M} zc0_5ToL6{64YDK7Tm&pLFr~HZmialE)oeAveIiTua$Ot}Z2{9?MirQxi&|#Lsmhr` zy;nxDA%vP1>CsI_yn`hR3tRBb?u-l9r0e<-raxz-vTV z7VfK}r#h!sVcD+(a}2*1b0?YheRtE2fd7S)05baA-aJ0QGy5Rljf9WwQ<54D%Ty4K zKd5ng^S)q!8!dG!cp|*&NcyW0UxfPu3_V0s_E~Up0_>JFiJrQMsl5b9fE;%O==eJ^5<4$Oi!3(xl*r7zI7_j_N195K<+u4pAd znU*!}myz4ayxpe$t%*(8%*YP!IJRYyqwm})|Byo3PBwY7v!j0X9 zBaBAD(`f9&_b4-9j%yWAt+guJ;>hA1bs1qc7^rG^pVyh;jA<{9Y_lLMDjm1RWW<|U zT*p)qf+##)EsaU%I;advJ}OVAZ2Y){3n_0!sehNuFUOk^GHwxvaI{(>>)fR`m$NkX{HiUxG4wp0}E1pb6_9~ zSk?fB0}a2a`(qzlAW9Dwhh*W{=FY0Nb`FO_P7cm!}fNR$R@9J0nGnTnVj1?jI{2(=WA}Fc1JZzTt z+Gi{F`tdQtsekI%Hv<1F?bUy3u86w4|A(dczbJG6kX)}Wjz19*u9CT(+jXB7^Ik78 zKR}=p9{=}uAvTmarTlmK|M8ms3x)b;4f^--GwJ_sQPKZbJBT=2ul@h`xpoyK7{%H} z%syyk6Z=@KM7OuA%^E{0+jR}e<=I!bGTH89lM!OnX^=PT4)eYjU7XDonD4J^k=cLh zLy1LP-A66nni0DGMHLo@PqB%4X#&@3(l3Oigx84~id=JxZp#EEn1X;$qa=MnTg1nU zUcFB4y~$XwtW~Y3f@7ERZ*Ri7#lc*|+dV_9_b5w1X-tWs383+Ht-$u(?^BMbgr*q4 zAMhjAgy$&DfPgyqalGAzpL-fwILR#ULZ2HawZlPVIbzoD1{8dl4E}$jt`3gMgb7=nn1BUP=&Hk zzsP}Q3z7L4oWE`3dcWpda!?IPU?!c7Yb8RM?Gv4Ix^)8BScvFR+CZFQ&sJUq{Z`gWehv&~UqUktYxI-)0aBRyekt4;*FxRBp*R>pQWD9sCrsyD#BiHR;Lo5%}9L4eJ&l zo%>kXcF2#fD@3?pEqlWW(>-15_S+;q7%AOYG}f4 zW@<7hi9t}iyj|5VIoEt|{ClAPd8`!(F7yl2jPyRYo%|h(fvxni$ANw;1@$;VU$g_D zGnM7;TxR$Xi_@L4A#Dk#8W{q*ye z{mf|)wS2SZuX4b>zw_I%2zrz&Fw6u|AW0lJy~fRbXr#$68jg5(TSg+I3f%;fs=ep$ z{&s!z+jk9l)DPGeD!s}r1044zzFPS6a@9)K^Sy#v&fjHk>4{`VM8S;4YrAOeJ2p*8 z)V)!~_fJ}6A)SS3D%t!G43<|s1XU+-mabNA6f3Iq{*D2clE-D=(G&f>{m}mT%!S{5 zcdp!ZU-GmqFAH|o8nW_>`l_0Orzu!?CF$}>~cJDr;ms{A=REpxldy%zA{rBC-Uex~qXCCo{cE-Jp?km2u z&*@5=ST;`0RJj@#gYtL#w?Z$cmifmiNCsEyYa=Jgwt&*hn%sVDo2b&|=dsa=Z+V_# zeaR;&h~5oYh|&Dyv@UdfL24Rj4-MCd&oul>21bm#uj((%H)cksep11z#DN6A-%aH% zs1ZIZjQ0>JD%$=1gHiPl_EAamu4y#y9?_1_;ApMZ-w_1$?pKPU=$J9+rVpjQkLx|_ z_?&b>L_WreKB(Rs!mARIkNZ~3(MpL+emZDs+AQ}Swj%#kxYcPNj0sm$R~eexDS0rr zmYo8lL4%P}XIApSGyxw#%YFX(Se0DrnYiR@)*QsF-9c(&ixZdk^L;E z8+MSQ=o?Ch%x2$t`fo5I{F0kkBZNjVHf}0uceKv$r!|9oeQ07HoG6Fb{95wUyo zAfLapH(($pgWWP&wkF?rEqMp39*ge|NS^TY$DYH2bYY2bjhGsnDgl-svMqKP z+z(Iv?$TRWUlvVCJ#&SfD++Zcz5WaP$s+mrIag!g%4}JgFu1lRtBHiKQ6|1!y+%jF ztv*s*bxJ+}K~pq)U$C#>Z^ZRDyb4>ObbNdy-ET=tQ+VK}dv4`=_nyH^>{(`cOTAb9 z8M=+EsJExk|u=%&Cs0-a#zYJN|LmLrhcP)XC66WBcjyqvm!1lh* zL#GeQlS+G(Y;^PX7!zT5IyjEFv0-Yl6fA$XoaW`Uh>=s z-?R{D8TaeeZAPwg%Ddh?30IOoo?-f9c`NtnwRF8rKKL`ptQzZ_zYkS2wQ6;YV4sr^ z@FOYGs;XAgx0juZQ7V0)|D4u?JW1HGDJM&|HTYJ6m|i%Yj#YGq5=yK`lo>Cws=vfM zY#bfYfDqukL6_j1V=hNmj|#nE!BZB+YQk@2_P%%Mz3RpgH}?K1{nqWPg!L|VoI1$# zq_g0gb>f?w!s>-q_;Oj5S2u$asP)6&d`0mT@esJspOwpFV;b&|WU-QQh|+tgI+aYT zIYVuORXSVgA>XA102uq@j7u}BKYz826Yd8#LrIOXMb&y=86(lrbDoLg9l znO4_rJIlWt!QyqjG8es@;gQ^b-A*I^w^CiCX23hJ03+=$wQ22y+Vd_E^?I7T+62@a z(da?{T9LVEB?YY24pUqz9#$mBHgrM%Elab(hS_~n{~eq5!aod3D^(WxtvU8YGwA(4 z1j@p~VcKA zum(6XZC&Z?N>8)pLcXLRNJTf{M&4%@a2)3`7qGtUg4;6Zi8UBS@m($j5C9*OU07wB zM3(v4H!<-alaw)wO|O8!qYg;{vDH4&86k>NSbipLD@XS z=$_W5WW)~T3rh$9h zUApGiJ~MfA3^m0x_Chkjy*A^hXA64Q1@zOj(Tj%y9jcE}NuU!Ybn3|y!qDAR5@xcL z@smP~5l1777~5UjxMz>&FLx3XVF6N9w2zl4&N7N>mWx^k=;jDN!S`IV1yS(Nw2XR33DHr3B>%7Qh(!YU3&dyt4dWrH#s*_j-QlIOB2hxLR5ezyS0tnwnFyA zWbaQn)K;g3r+ccAL!4mYLiRfsr3Ej&QkK1+8Bt&rZnE-N&{>HRGgqSB1qSIMZ-a|+ zjX;Ym3AfzJhWSG^unKfW)*ZfPcC2X!V%9#%JBi-DiIfm#0a;?5W@fW|6XJQmVA*s4 zAU_IKv^<&XCS4-}w-J>onZkd=ovi6@2f%Zf27n*F$2RYO!g91O2ZXph#lH`U3eVKu zG*Upk;$4lkJ`$Ws<$dMc+JaJ+?#WD3gCYha+49XFQ0ETQQG}-Gi-)^j_L|U1alFZQ@Cd1rlB45Y2c}nYSG}lHj$Gcmri088r zhY!uJV^V19lbg==tV|z+wOCaP`xVT7aMx)q8>h_p-7OMLn>ibP;W552b5m3A%}{3R z@>SJ!vhQ5OT;3#nAOE3S_I7_4_l?k}`K}rR0c&3jdq3ZxUAajgC1W;543rnO^r`0f z^vu;qR&V8VopyDPZNa0^)LA_~IR6)2v>K8&*EVNX@Aw4xiTKR;p-0w3aX8lUMdMOETMwv^6 z1u>ymEaL(}H|Ap-&a9uV^slgQugiO*V>{vm5|u9gzNtl2#wtR+iRG1@$g*)@pK+1X zkZmP9!2@{{2Z z+?+fJ33hP|RJmx;TJe8z_JW@jwLgo%NeAyUROG4i zYGcG*NpE90$j#m_`?9$`f@qc_Hc|Z~$40&Fv|Nq1AvXcps_dM0tzSr@Z_rEJ>Jb2D%Bl<)tGrsd zj4;r!F_OZ>+@dMxsUJ!9czRtsnuamK*eo89+1$n#TyyXNc&@Z74UE0fbxF)~;Hkut6S1U18vWp|DMZQ_t$@G z*<7pnA59t=lJM?tO?`toC*xpCp&d$ZvTXE8j$y@ zz1n<9STY8Pt9r8zu797Mor0n3jz>T8CSV?3s>Jmc_6h1phJW?VoQOk;Dv07VSMOn8zQ9TJcUOsOy8N-! zX#D95IzG>D?G$t$)o+~-9;iOd88E~FANX3k){Zm`G+ta12oeP9-e^%@qf-~i610GC z$=#;ED)C0QWPh7UH6P&#O67~#d+vP)#obtg`Q65CyVdou@saeE&-s$3vMpW{ z9`n}xqZ59k^tFf~x3r-rC{TOEE2J3m0<#tKVl^T!U2;VQ3|Y%~DWZ|eEt5?h+$O^~ zgAb`=E5u8NCeSi6li6A8^A%`F77*3ICtvvD16W~sUhV8oJXP4l+)OuNx@R0hQG@Ty zv&WG2c^jr^4xYEO2^-U2R;31HOS=wbkFC-X8&;GO!>2@kWvlk=5Otep#Hu#>DPFtA zchJp-Gc+;|5ajOs<;_Yr6HBdQ-*y4XCv8J|OIcGhp|nQ%>DL&?{ZL)Fi{jx%{K6yf$k=)%vrSw<+f&ZOL(gLfs)nAJU#WU!-oFUwL{JS@S&> zt~xD{Nc!EjN-TuhCqqiyZqySUt`uL!94XE*j%I^rmn2 ziuX9BOEplmK6ujN_6y!~PUL%xLEgG}C?*LZ?!$ZPxWJ4BeuS)LYt35x!v-242`dB;1(9pl^&cYR>2!CElanrqHy zKJzKRr=5EYaj{w0Tfn*C%B42aqR*|J8;u=p1D$#rTPGEt!|qdj^CV(@9}brN_XqpqpK&Rpw#E6|H`+$d_8MU znd{^H`kV9@d4Spd1=zc_tG90o>r8TaB&;YI<=sL>hK2hGIATKsMdGs7zn&%fhc>-r z*-I;KVIw#%X_|}Fw;WokA-t%3d$+hI6E<=5waCyn?|836z7%P%;ZeK9Ov;ebzJOZA z1|7%!JHWJ89v8Wpa@-tq@62#PUzZ%t-b~v*WRH$ew5?_1)BgR&BQtzv_Azh1y6(eT zyUzM&ojLUxk;5YZi^p%n1G|>iUSE9Ad)*Eqpk{!t(gHr`i?tZL!+!g#&sU1wE2nR5 zI%hNG-ABt+$eqX!D>2CxNmRW57kB;ncmEoreGy7LRG^ymPPnyb96oz47Y*^ul>4;) z(*M>Szp!}B3Zht-jczPlBcqN|X+OhtoyE$$^`eO67H9lW{>n3(Tby&hg5FqzZL=o( zh@Aj|>#S#;LlY^>9SR!vzMjXsbak2C+sBG*(z!Q1l5*w`3Kt!g z(MqAhlb?jMC668a8hN7N)Jx1YlA)S?2F1Ehri?ZT4>RIV&w{M(YV`75LNXF>bg>4| zfKJ9(YKvmKq>5Bo*()?_)Y=%R{-Mre+A;K!OwJgY6A$}(E5YOCeVKpe_`QqQ%jOcm zi^G^2Oro zzI^9){3%tr(wW=9ax>CJO~)um*ve0*Weq&zm;Sr&N^E|6G_ zxqmZsDBpzts&&AP7v4rrzsz6kDTF=D(dpDI3rMgTe|7Iym2P2<^$1M7GjIZ6u^jF> z|1jbzC1pX!d~O&Kr<+Oq8m%H}9p$y~PJDff=cG7WCP`E^;9ptW+(8v_^AV0|GTo0( zkMiU)5CTjC7eQy8Z%P%-7NWdb7jNI#GDmQkP?Jx+KbQ!&>TuB&^B)o1Yh=~tdbqe) zeC|QAR3?P_i2hfy_$FJ?KNOGQLOr=pJCY|Sii8dS?XC=Uxy z*-(m^2$gDD!s@I%@-B$|aP=M({$5x?OQfD5VPX@npF4~5^q==)zRjM({hmLDGDLgM zWm{{Iz9Z`6miDJ(1R{5C%nv#KXfLJ!wf}_5s=}7GgjC&b*mD{}BAS!xVaN-noVbORIL( z{9h>S$E#FsHVqZjln{{PsHr%qQuT#+pH9%_(uLVUPJOM9VnG5grJ`=U4=?h(zAgK& zQ29Rb@xM!lQyZS>MP1c8nD#_8k}`bnw)WUGY;^*yyt)3*e6f8%5v`VqD3!;57(sR7 zXi{k=CKlW8sp`x>PyXk}N2Na=B##^GLM5#4e^1{(hYDBPH+Z9U9x`(d14}Zv} zx-epA51q=|$yKD$2U{!#p1JaJ6OSY+2fEX;gPNeduQgUyAb8V&uT#? z`7JYdsZIknYM7Pt27%z0n;tpopt01fyn2&eQG7@H4@0$n;FyIQZ+ZB$%UWQ>OK$g< z>7EKERAD%->k0Tn^yT zi+0xKX;gc@gXSH6soQ|4)~n+Z$DfcIpRktG6wZqwM(l8>A$d`u(|MU@tt)?3n-DI; zHxPFitOlpd>zzbhqA;TH0bO{a!v@7}ti7k!ej~B3UdqlWJWI{^NBdTVO5KYa6p_fS zDa-?p+b1d5#m-QL_CvaP=i=P(aMu!T6LoW;E*n>Na?^zaxu_tP+dqT6)9V7>X1O|! z?0T2Ur%LGc*Y%Qu@MtaYivkALfb;JgB-wo2j?I3P>|_>JcMjt2q;)1DV|sq45mvlj zQL;xOZ~psbJz{@6k_hhUYZF*JeKbwSq7E`JYZ0>%+BVM%JdSGdkjv3b-u9NP5FQRt zXZy^!&^6oMWk1eHcls&0VCap4->n2ZYw7yoP?nH{KzwX_-*tZ>CLLy@!D&B97Z(yC zuNsp?P4?i0N!QV;CO!(jCNdmd0eE{^-?IbQXE+k7-`(BgvDTu(Oh6AFnfH8RY|e;n z(}#o|7LwGdwOUNOlSOi!9#E@G?qtaxnR6+(?~gr{++t(XEjI2Usf2?E`T8n8@i!a$ zfR|1zXW@GiF-pzy?`IDWwW$`O%hK1I(V17+w?!pmT;q_-zUygTG%J`btabzy3!?LZ zeHFw1tOwiUk7Sk?n#Y_M8(jB#g3w7v^SEvPSKvD;Nr_wHD7<&^tfe_1qDHWOgEF)j z0lxNPI6mVZa3tt&9;Y_$0OeobNzAn8mmVlWE(kxnFY)C1#o`dxn1{IPZ_Cq?vq=efP#K#1_bAP*yvvU@Ir8K%Q;>9dH;@ zT_QlOF|cd0v^j<>Tt{U{l}2e>!kaWJD#r2U^ksk8t#0YwqC&U&f!m#74O?Y8Z?Bba zJxbwzI^i~+&+%g3ZJ>!sF{8LW^1@N%mY>l`F2UL%Rc89M+yWz0w&)i`QkrG>MNOah zg}Z+&MtLwJellNO!@@8lDxso`7$6Sj-`=y^nZLKZTV&^Wu+z46;3vz>Kr1bN85Z}1 z_>W>a7dEBVs&>lQ2pNKF{%$I-Js*gB<_1y`^X7Z9rh!^$!|8D~{@`V*XJMr7?2QLb zgJsWV2^x7W9b9>bW~M(xdTC0?uNU;;MtrgSH`8`QUhN^PQgrvC$rxIOzjRDkm?U?JhT}h z>1?4S%HCfi|CUT_MHQM;2qt}$Hii!}M<*lEHU6@dvw5aib_U#a7JbOwT@@?Ke<0i6 z&FbNS@tF|Y)Tn{itv$2TdWpHXmrVAHF72HHj;bH@rv36YHELi?PUd$h`d$yVvA2O$ z>{6h$XVdLWf4vMbubsXxfPK0Ess~n;&OHPrQ945r8ilHOq&&Z&j+NC=W?Go<|3+ZFW z4h#Zhb{DPh{JoCVcOBmfwfOPpb$3smEYYP*3_c=0mj)i8)BiN%UA7u}<9@{b_9yr^|mYi7|3Z39wru8Q*je<0?n+-vM{aT5RQ z=oHm-zUG0B;-{HcdX3O&7h<+}jWg$}gZVso<2i_5C1LU~4?7R7YxYe=IR=9@jB8jM z&ayYxxW*h-770K5NIM4_yr{_V{ONp*+oy8wJp^luN6v?`g=Q?qHFwR>&b6Ve^GBlp z{>r_PExWdxk0183!6&Y8j%=u|EjhMF%w;|SHQLb}TzFhsfgE9F2&(6`qx>NA&VD66 z7$g}Z7%DYU*QFUCeyRhZAWi8q`h3LK658omAHf&J)4{`{-ExNZKyz>dv43oo`qwsk zwL%wv)c=ESb$WLrtsmS49~I^`N6-5GT@$7oZ~{7jw?uC8NPN}QeB3u5@18Oc42l0H z?=bcq)R__s~;;Vt<-|Fri zncAMcStl9GxUNN=gHZrmqlH+Ar8*y|+qc;#ci>1&LpWN`x7{uxgPyQO?!zV$(w;{! zds^=}kkvfnstFEc>A-l#Z(}es_^PyYe%>@_kX*)SgBo9;;~HdU{>)Ot|F!JEkNL2* zQ=l^I;JDulv-Z=g+&_JF3^weGKIkgj5_W(5vk_>@KPe%Nk>blJg!kD z%;VhUY}del?+g2%0G99H{&(lbj9dB*ctqzvz27Q!5*L0MStd0S6K13lgZ>p~x5Mij z025?`b?kNvKW_LS$d+#648UJK=hSh}$capzY+<|o>GyV@P?tudp4*jHwKF`9@#G8U zL*Qu8^6t!=YO9}R_d7f`4vX9$U{dMoas>1Mi~X;y&}1sTt>Q_K2y=U%x93e!6_+j*l6Y3c&h8#8hKed zKPmFEB!FtJ-KS}!V7SI-a5U0yYlO&hcMr3UIV`WE>P5g&I}~Y~f`z@~_&$LJD0_VP z5ZaQ0WuV)6T2!J4O;qO$SYZG(7;esx1W&xyZPAw8$dbx;Nx?T&ZKj6Qk94mGS z`D(&?h0*<9D{qZWZN+a>DcJai1rLgwG6CXicb5zpa0Ag2WEs1F={cSOI1JkBF= z3A&7@({j$L?))`}uRvle#HA-l0!zLHn)|eCuMhID!`vwmn#K|xTZN#l^zD6vkC)~9 z{WT*3>MLdjRKx?Xylz zySBaa+q3E;g>`PEoh*-&rZ1fPC{}L~s2dPebVklsDXhcFl?2qRo{C}kvp3T-CR!e+ z4!k}SdP)|W-{DXnCkmixfIxMlT!+P$_6$|uZvrc2Z6C}&_&r>WpnE~`&oUTd=%)K+ zslPf|%C47YoPc;sST~nm+#zR&Zcy=dui4WEPvfmtWQ@T)@_Ur(#yL!`+?cm}21FYz zELbMWrCwZnGz(%oAEfzQH-Ac_=M)$fs@2%w|HO)$y;p7ueRVzJmd~i=`UucM^zE8g z`Y1p49E~10tilE+8BgH-LwUu0_gt)*WW!M@ugbXrH9Wb;_!`1sl79fsqrfIZH2Qqh zwDp=dv~tglqBvaZJBAS{g%9p0NiTN!+xA|OaILrh;Uwdh5wD4Wqc>#O@1CiLz|6Y7 zgvB9!Eid>8li)!?a<43W@Q2`i-vgXB#;Q*Ct28!!~v65a#PGx7raEeT-_+51$?dZ?7wiHvIJ zHHb)dfUEy-t@~dec8*X?_*0w+TRTm0`fXf@weBNGt%ZI5guVFSc)$huFyXr=H&uEQ z-cpcz-chx#uXeMjV1CT9PhY1lgi3iG_PT+NNLtj3B4kW4JWl^zbT`x^hwXQUN{u6Y z{t`uo(f9ox@KC?7Y;#@AWl~XfQ z_s9y1HSW8lU;<(Qb`<$-MYKC3A2$>LLr;^9Ml+F9m&!^j+_Ly%MAO% zMf;RP+w~jQRMp9P-i}lIqXQEz>`3@a_kGTq-{u`abqgh*uO&0L6m^)KUrsrc6|CQv zxGJAC$*e7YAwXGKI_DYV>HVcJ^#_Cd52(p3ozu6{);cFm#lO15y`B^^Z^c5G$2?%l=Sj5oxXt*Y(__JjW1bla9G1#2>S zWf*`;-+mu$A@F{%5FTY}Z(lX%*{QgvUn=@MU(=&Tdz`x~Rvf!WgvKI z^;g948J#e9)7HYz0qTdlIM1x@|MIGPdd+%NEayc4E9r_@^xRV^VNPwnywi6|P7TRy z(9UMLILkjw*DswRpc6=h-C4o9KqH+NK=IxhB`0>BDe#LuVl+VO94+jQX{D4W8hFKSVi!?x0v_ny*(u&0F0KTI~qE&T6TFTS_%{;p{8suB8t4 z;59Xa_Q}r;f$`G?2EY-nY-ofsMInaOFyr}l1RK!-@#4(0%Tfi38li773gvP%%P4Xg zwE$oUT|uOzQugi6S4oq%O?$PX^9YyDPyr|r z<*oS@lRs?qEM~ulw0dFp)6#Sh>ialT@yXy;o5W_1&gjYf_U@2%OaaR(fU#zPVbP>4 zI;`5vG{!8P-Y)VA`vA08E|uL!JvWp8}A%TxEypZlIl6>~ktX*Of# z+Cs;^5qBEPbt9~*K0*QZGl9J0gj6KJ=Cm!~sI3Ce#blH|@N6ox;|f%%sf?)vB@kk* zApe~|yJo0zfI-Z`L=UnWQTJ@xJb=NfX!(Lp*)7jsbvHrDmnvh}fLZh~vs@x@A#~C@uIpB3|@DMVp_;5|67( z6#=k7Eg6>4!YD15L)$Dj;i{{0=wE&+w&c@EbjUxrRxam^H|c$g`2{7ajVzBkfS+PU zqv^9__W0b@a+7z~9!Pwhti5|xsrf@v2epRlwRQ%5rv|UFb@@ld%D(f=c#hqtAZF+1 zv^JOjAY6Ge@tcPdpCOAGm0h&{Ce$)9@6xFe6PLER98UQx4R*UJmwo$rfSyM+YUE@#N8A^?3N*p3)0R0&E2B`i4KRQZX18QWx6R-Ps3whLpN z{K5YuD5iP4)BoKFfMdqs)9$NN9Uw;+cg=+&*b0TOc=|ziREoa#vl!0CjSVOycim%D zcyg9$5pQ-fbZlkV?tOxUp*unXr~RnWpWzNL-3@WnB|XEEv&b9q%Y%T?+G(GDKPtiX zcm;ufIJun|9r|I`x*^uW#g3|nbb}1eZ2wXk@zq+PNJ45b?I|`Y^|O1P7NNGf{&^xP zPwvKZ2(~=dTV17OO#+nUcQ0Nf;XVX6xwNDTZW;o8{okENzV`5hmanfz3hl_syJUE~ zN||RcoYdnsBkmDo)Nkbo>wMvdsnTaK1XaxL{m2w**x?wd$e~2ur99h%5_MZNEndS) zihMn~De99h26M@M-@d5mJN3>QKP3qt?H0Mdxu}-?Vqf7l9Z(rml)JB<3GB#5q=mj=1|F!yx z2WBkMI;lvQMod^R%XEd8Yp^G~Ey4oFk7t!gOuU?IZVN&B(?p}cUwjs4@w;TepyxV)L%p}~?B z(SBEVM-ERz?ApK>*zaOm7|7;=nA#F-#twG#YfuU#0fx0NlioK3HptyQQpO>>{AX$6wWFJ7PA*~V zaWWTVq-FMNvPJ=4Oym90Qm1m?oBs4e?38dTFaO8pjsyA!{92v{2~4UHhpcsmfukMO zDX?^qR^FB7*va;&E-m-GOJ`}1unqR?MKV5-F>3}7CB9br%B!buIxUT^>B+f*-!Jipx zN-AWHFV(*1JLL=^w@rvu9ZTYFtctph4zb67k%dxC+Y0!h0IgCPp+B!l#Y>#u)9;-* zKS5|un`i-jQ^`MG&HGk+mNffd!`$dJc*OAC!S=d?((VsCXgs7S;MezXU7*prw7q$M zt*M#pZTxZ#FY2tC+yi+#Ekh$oLxx|K1j)F7dqPqNOe>M%Z{M?D8dL4qb>D{7sMSth z(F#KU7I$#hwG*GBR(BYE1KzL*+Vb28un#rV@-%W^?6|KTAakb^lkPF9KLV$`Os+g1 z=XYHK8oflNwx+VdzcK8bAD4W&Svt{~5rXzz7t%DwGQov_;Fi*zdCXm$v$GIA_q#O+bYZl{vy*@q(-kcQ}# zM9O`fDJss0TF-A9iO!-Y*O!srmCYFCcPAZ-_-Hxs{;?O#eYvOMM4qTci@}J%+2l*e z*rmKAlg}w0g|^16YW&A*i^BYEYn`*k)x8~tGxGy+BBixGYXYa2v6?ThfwUXD)9pY? zzF1R0dyY&c+B)Y|H#$DTG2TJ^kDl+qgiY6cG5K~nsaeyuCqT+^tVGtM$rjwP-#PHM zN4(s9gF%+5`r~cTJ*2x4Gy9}7bZwhFQ9p^`q#5mOkko)bw%gPKg`IvzSkMKUb#{1bNJ7D*T(3pV4Ux0V5uvyV2ZLspiylqx$2Wd2TIe2 zj^2}J$pyKZsMW3N6s-=4GTlN_XdFF93FC8LVrzfgQ__h0Y{;54i9yj25uY!lj^3Km z7^@T=v@tZb4ayos`h&gXQel(cTG6CGSy0~>aQaTPc0nF@p5~VME%52+`W*f?8%qwH zaD!e#D&iiZ=!PU)n_k$9yISc?g5B^ctC6@h6#UCy%_5wGi&>^S>vmN8@i@XY`F3Jd zmcT6Tg|SP8A;>!_B8^^I3^edg!;7cEgFQ+Q7TdaMrt|Nh_JY&-cJ>0P zjQAA9pJ|^oKS-+;*J`fmuuoA`cN|{kPovA8N?-oU!UAD~ps8Yl{D7=;*gBEqaQA1= zp@TMDrZ*&OL$q49hSj=i78?sV(KLM6$?*6rQ=8V~!UJ)BO>bG{jHVu4=q(^GE&)wl zp-Mn0c4(}o!L_XKD#QoQEI>Sc9^)H4$hY54^%MnN%6DJ$0A=l=nM9ih9B{uu9KB6{ z?XNs77;ve7M6%czoew*89e9-i|FIPtzGr}7X~C1qn*|U2D$&0?;C4z<@)J~B69C<=3FdW83Mn#^MzO>FGmK2i$DT;yqm3L!on{3+pVXO$k#DF zZMF_fsTGnuj+RRN&#ScqtdC%3us3D3^4vB)|A1aiwKq_6cL08;91?yguLlVPXkj=&!snZ{wXseTk(CSWjI?$O0a<-5ye>w)o&3dUjY{ownn9lkZK z6Wm?T7@CEj0F4_fTwpmTLy5JS2t8S!d)=Udfmr-nGTL?x1)Iw5>>Sz3T)|;z-jtcW4iaD;JG_#d2@Lv7cq z;Y;1$8D`ugwqOSavi@@Y*N!tGZ`RbvUne7W`N%#Ex{Wq=zX4m#_wr8aB{w&eQ2YL$E%2~BWsFOlo2)lxOr)I zfTlUzjj1m$y?OGno@}RQD_a%Mro(TeV)p(J)oN`Nr{J1v#$oW%g;_?!2I50Tp5qUI zJv)WjL!X4MU0wIp?=*IepKr_cmTmQDYCwz1TchLCCe1H}YKT++jD*vN#4`bI{ zhh|p=**5xumi$J_e7@~M%Zcw6R{KeJ-t1JPuT;CbK6LZwQl6w4=GseF=hDJ);Zwm` zqvr4=o4$Yai@Jx@E#`laLmz{J{>NEg6!`z~+y!}&dy^a0?AvJO|K0};_1`8Z&YkxA zVJ=Sw%Tg3i+z#fD-B4T(;sSe|zZBt2Z68%SgE0coYz=5T*UE2Af9VsIXP?O{v{3Uq zG1$y+wDe)I^B0*R6ISU?;z?R)6XRye3Uadc2>)tr6J>{M8nLjdryl`Kcv4n&k)OC6)U_)^=vqMnnZS%^E;-nldmnZ|5*!Y?@Of5G|mTB zbE4LGU5q@BFZp#*->#Yb%N*Yyv043HNX3g-a075GJ^2;dRGR_{qAxAhk0!iB;&^tU zyP)A2SW^P`9IFBwzq;b7EK39 za^B!849;6Z8$~UTI~%lC!3^VV)dv7fwV51aK%U-WXE13*C71hrkFP9HDq!oW+zW-o zN9z;t{JH|vDKFhG-7S5h75!=sq#Ay^MJNFpL|<#vRNJP|x>Ns-7N1 zoeYHNYn2{UleHJV0*|egsIXQrf+U0q31p0eoEq7nl%U_oL+tfJpVbs@o}uaUGh}FT z)b_nCj**|DrRpMMtd7#_?OwsL0-&(4{PmS1u0AS@JgWOu)ip9l;v)nnE~HZnd5tgQ z4g_vfeU>U&+^KEa+LVl7&1-7)a`G#7#@pKACxmom31dw|2(u9evNz9q>GJ&HheZzy zFqJul7m`nEuLDL>wT*pIRl+ckx;S1N5S?J98r!2Uov_}N+s=64Js5fXY81b9-wr|D zC{b6yg=ktW_bhRtyUoFAjoXzG%D%=9geX;;(JYXrU6!=a-E|IM?pEG03#NHjZ%*J- zkDCPk%F*fSX8?HYOo+aN+^-N12gJ13TJQaUTA^zbv!dplMtE^Y{z&%CbS>nL>NGxH zTq1vaCEgzhk$jaJSnx3P}N0lm8)HJu`JlK_?fde?qnjdzib0R8AM-}J{_;Z;GrayY;XTm z8COaw>ct1xx9c{=Snqa1Co3poXqb2>q zw0De49rAi{2%ij6nYe-J!m#9=JLfN?rmUbBqNwe(9b8sf$Z+-+-uDPLe3M_#*VS(_ zVb4=1y@u2*-0HqeKg_;QF4&#tITMwpX5wwGpazm$(hwH)v{LK99 z45H&LaBZ=prWG>eu7|13(DWF6Kl1SG9pQDliDW7k)*s(;|~UPNSN;Im3_l0{cg*z(vitxktf z5V{;T#JZ}~kC7PYQDm!3i*i)VCoCgaH;**yK0|=@=mEg}| z)`bleVjuaDDdnB=Q%opU%Nc`zN{kAX{D#lmQ3pe}_PRql*`bZ=HI!lpyeZUW(c0f* z%(su6ZKuS5)c(_Zfk-S837|#(Oy@=*|1-)tJ zonh}9(KjTwrEliTq~zNNZMjdq!@F2~nvD_erDeEefk~{Fv>?3aH2QmxFGqUcxTR)k zYjQI}LaToYvR-jwd3&n2A>$o26u_lhZi%B`NV8O3SNJ!pvy zM0;9$46R!R43|SFMeD9tM0icgyUq_%E$6YM#_X66ZQpL_ zllH}(P6N@?2H0>Ja`m#K-*W3_e+qL}=jznippmw-hla=6U>OzUItFA&C)+f6n^E(k z`u9_GmZGjs2Y8q)QjTg$a8bR_n?W_M#rCzg^dDx+?49TbZIxqbR*@zFR25KBD^Hwl zjag*hb1^vGLO4MqU4~P>{hg=GuHTe>M zR&WZme{odw#Qfi&_;cSi{||P?+e`nGl<|L^+tDAo*#BvOdVEZ2d?bNGjCxQBtqjqE z65jF%df5?-0$qT60EqS9d(KVFZCuq-wDfWEag-fiF1RnTu6QGDW4cj%;O_0f|1_>p zKN_fe%V9$kxu7ajIG^rMyS&m<;OiQ4d33qirG@e1NY7p0?8oys4Wzbnd``8)izze&V<_{DhWenKld(ivm2ssep$2syA3^5 znp*<#xT8}1+Y%~KJXc*KZYV(3^}_mbuvdjcndTo4iq`HJtS8wPSBB z41190FW~fsLLC{%eE{~$tLk_6D?HQ*8fg-{(5U z``LLtcltnXCdmEsX{q0~hw2iI4r7w6EO&m?rtC|m{rAGTx!C&>thDYfT%Rl=6N1r+dq-L6@uMc7H_(b!xDahe9FV#ty~*y>D`QUSB*%wHswV zVr=EL)%fZ3-=q56ch>*6d9)BsjX}vD_0>O8nMt{f9Bs~^-|p+&!%Qs*{dLfC<+ydZ zS#nkuxcnNH_3f$~lzI5<%l7XGSR*c5D>7>KQvAhUx~Qh3wo2m0{*3c6)r=; zZocX@#%oe`JMb@ncM+rtWFt>?MSjE);PjV;qsgKFm6OTn*-vQ!52}}s(M$bwVjE=t zFoioy7&?2nF8DzLA3gsb|E`UpK9VhIP!tkDUsz@-+ZmD<)FRGStbNg^c)u%lUH*(^ z{H)`Zp*CFncBdv0xyIn$LR{53{?0(#MPnDho9(^0ml5wV2w`E6Hd{?w48$CH0S=Z1*I}?U2o%2sLR^ zG_X#-&WrxcV3VB?6s?ZgzIK^hk^;`~_u{}?;IEUR*=B#|3^UdSqS^gwHyC8C1PYYR zNu-n-mWeu;%fh1?tdsRH@b#*=_9xwvIk${l`A?M}hj^+1JMW6G_SbZSkZGOjSdg8v;E zDY>{iz82)Xz<7?_9a5p~jjpp9Au!W(cw7@A$9`4-M& zdcxoPM3|{PuLX3n3s^~a3^+w-9h{!J#(#+loZFrB_qo;c^uek08O3g=WlG8E{Kp&@ z#Z{kv#7_^8jX@Ba7OJMg7+X@R(N6O}vQlO_gHt5vp$q7;wTIxJ0+hXqtz z>qPSfyP;}5>Fek!T}@m?Fk@O>U954XfxRtEx+`p8?sO??{mV9_!D^jHP9Q)`6deVO zv)a47=$PA5EN?#ixe09_N7t89DS#MXba7L(>I z&&&`vC|YFRJN4E?;j8qA&@;awr0upH2dCVj`9~S=hwa&|S5sczNS^np=JsM%#92Eu zfGppeafb^cchp!3Wh}f)xxfvzELFW*>o1&wK&*g$H{y-7&>tU#VuUcIHqbYPO4D{}|kJUFcW>=i}SB3D-%2kxtfv0lxU!FTlySpC+Q&rzqzotI@iDFe;@JAT6CRB=&2X$N};cP;_nNVu#li= z3Tddn=Y2W0J=Ro<8pNK8xcd@kabbL8RTZ0;HEWbGNm_DUAyOvk1Es$aGq%+W%BsW% zv{t7i#k8}kX^(zJ@S#N!EF)QRvf@ol)-a9H?z*XkVAnvo&_Av-mB&AGPF*X7ZVX7E zhlwpQ$7_O<8_94Yq-B2?aoOBxqsD)Ts8ECHAGOw?nn!FAC*+i*ZgVamDNn z#8#QjwRbugMg!9W$wE5<_evaP-zN=XRiSV7! zIy8N!yuq5?@j^I^RX(@Cy!J+R`@wWZ|-Xu}vQrhXXCuf$<)T zWYP=T|LoPw2E>{&1!y{ZxJu9Rd5@?z)Y?L*CZ1)&fDyx}s^gFK-41g|KmpI{jukwp zB)Ox74Z*p;93c|&w%kw$vRtjStLyEa?a&>liN@H3?3imMD390QC&=%=pTQ6vb--Rb ziX3a*u8Q-Y%3Vfu+g_U&X~**U$HACJz2xwJO*;PFJi(BE7JLTvwS+f-+$xC0Cab5F%e4EF z2DXz7hFw9d7S}htUI>@65-}T(FroZcjFa`N`xjeorlrQK-h!-;!(qJ@ji;%fMDlZlh(4ExRo3;$@C)O_#+M-kVlj> zsvm#ua7v+7?Fz5UR^?=%bHGTOMv?`)oYfn|EZq&2_$*`8PHv_yXxuyzHBVRlNnn zVZP76b#j@FQWiAgW-^V{80bK`kO_C4z{STFo?L%iI;W>Bw4e{ZQn~jzSp{ZhM@DxR z#G8m{HV>L77vvb4Sg3o`mokQ;XtfmIy#(K(;@91NT|GDVd&;<#SBBvGe7fqzPodXq zzo5A6=VnaZq92^CK~BS5j;&Cp@t}_P5ml!5aOI4R-^JHV4cCB^iC>y#3h8K9{d z-CZF3>&EJ8yFHNLoD=4881WP86|poQ>P}W18M9jKbqL$CqF7}V&8Utx+OP~n%+!Gv zJYWeRvk8)LCz*Si6+KJhSg}iNJv-c8(YZQB* zWv^DZ%y7_Drl5i(b6a#J#d2-Wk6Pw)S2VMSxLb&l#x0^S4r`4Fz}4D+r6j}w|8UdS z<6tpcl&t}A^>N9a7Z5ON$7$7dWR5IQK1pu%<9cx>y)NViUCKVWae|GkVkU-7Yt8n* zI}>DP7;r`BrHivj=M!!6C$ES5zxC|Oy5)I%TcG5{95O;!1j>2G{nIT@P=QEqk$=fg zV<0WHrUD54sw2T`ym~f^^4{QCBC;d5!lURp(?Esv;q|pqb+NmBMKHa<+P|3(p9y%e zHfnm$SR3Lpf4O&B9biUKIwCKV>PJw< z`zoiGo;#KXqXrJvCA1V$TXKbtNl6w#{gXRC+DN%I3S9?er5W)uT1OVXJUPrJTj{Kb zONM}7d5v(*7^bdvz`%%l!9>M*D$>k=#<&(u;hp=Sq-0s|NhW|#0&xF6nTK698 zZK$wG#<2RIbcc4)v(GTJwD0HmBI-OM|GKfZ9NP9kuIQ0(fXOEhoWF=YNY{ZnPixeZ z``jTUIYU$J$E&|xiLJ{;?RWJEY`+AnxSG9o8C8w&#!j@L_T4{8CTjBNm%Bk*F_2NK zHEsUFzTKmovLP7TwxgXJ(SF!u`ner?azrryxvSLbrfn!OR0p9Ah|wzJah_N-jsFHb zH@D#wbP3rX2a=eyxIK!*9U6y>11jvYywXoRZLq!{uRk{!7oRYcZ zy94Rrx(7mKA~CfdE6_?kV-ba8b!VvV=Pve%g8sY=~c5UsV7&rEC9}>NiFUPBzNmd5JklYvV zgq9L^J>$FqZwmpunWr6&tSwgwC@_CsNW~(cbuK43L@9iI(kyVZP zIraifIJEJ951|=}W0=8;*{HitJV>Q4H=2rR1Uh1tEOOj z<^5eErKN1LjE;y?YfH2w_v&1tD&i!d**1(ep&#(QRVq>{git0(Ay$`(3(+TxF3HH& zb|5L6@$`zbRG}`*L)rH7-NwKXnoDZpMyI zd?Vb@8#7-8aLRkV|E=aJgMoLDKxwj}vYJzk##)CsYFtH2rXa82bCSL?J>>~J4L23^ zfMkACu7I#0jD5u5Wfk$YfWBYB@Z!~5q!ED_kUL0x_kkO_9suHl@BW*`0~g}A+vT)4moT8p!>6pUFSFEm5kpYb$?<^BGdUG5}GH#(#lO!3M0tV z5?9s&I8m-_A5aa>*+8BUGEM@VRvtjAyloY8B`2po0Y~juNy_|oE$)#xZe^ZQDUvVY z#D1>5b8LpE;@SY?qy{NL267EVS@K$vw?ZSq))mT%u5ANgMVj>R6wN4)0IJxTgfSs2 zNWRQl$Bf8=dq69m5nx9eD z*Jb}l?aq*#3X`7Hjs6eQ<3^;(kURMp(p%Ttrg#YbnFi8?XSkxRJWI9O=lNT zLW;D4{Ay2#1nVA~EF5xL*Za0#I(HoKpn8z}I9U<1W#)G(FTdorw!BaH98z)0IOj)L z4XJkwBe?`m7Q{|pI2wLdNKqPajX8Lo45&3PZM7Ig|7?_pw<4UuxP6nn_{c(&Z>YmFuy1sOpErTI*-09GTPBHEIPIjIpex_Hx!{CPw4cXmQ)GI@@s2m$0kMq@9NOgTAfxYky!O z*8@Dd-hDS{FNSeEKeUOHJDWt$bj16}n=F2He9hRS+RueY0T=};0z`WS-fvT$Op3^( z!X)ZiG;U^6SB`MajvmLK(e(-?|tqefZW*u!%|bc^*3pMZRRIdG(Rux=CY~uu9vl zfL~M-a9Z2VSMpZ4B}|N;(qX#16ZeraPjbS1I>(+umJ=MtjHR$a}SWf=Hr+gQo$qpRepDaO)Ua^qX7wO}o9hvpIb z^GI^d3nVsKc?_wFFBjt3II4gEu}M6|~6cgS;zXx8NY_ z=#9yPMVf(x#P2^C^(fXd_dJwlZE%+qOeVQ;?eD3-vaXIrbo&QWIr%L%MJ$9e8zE`; zpizqAYFC>e@UqxQ^pIlXd2>%x$c-~IceZeK8km$)-$>i;S* z`WH8P=3DMxrWpVH`SaC(J#KoL4-9G)n^t3i#yO(>X@;5;cjCzl1G2GGQe|hazE*V= zfB>+%hbLbMXQqGCo$=42#UXX7HNiimq+9raGL5hqBPib?8NyKBWbGsCX|h@HdzX~j?|D}kC4ShT(MLpaEGqzEltX3mS{_E-chRj?&m-$M~@l# zs7PPgfBIW_mpe+^Bycs-+k%`@Sam z+WM-1T$!%pU;vM&Y)X&YY1OKEpKqOuJkB5DCzHM&5H9u`zxx!g1Y|T^znpUvc-OCV z10Soay(B$17K(+PG|IraO+@8*a}*`zx`xk~y}JguvsIJOqTLy(mw!YQ?~+`H-z{ll9IqDe3x>*H6hEOQ;(XEVdL|{Ssfeb`KLh(6UUh1`CAX zz{ZM4c2GaptM{sD(g8X5uJsvU`1aPO+}-d?ZB43#U(i36F^T=P(Vlxp_m+56zK{>W zgH>;Yp$zlxL$fwy0%ktvtZ~ zN3bQ&@m?6@O6LCJJqtLsx@D^6s_GYw9}f-eYau^GX+i`a&U%}tMV(W7(U%6TW{z7v5&Y$*(^E1&I! zIFIUal`jgAtDhGOw+jLnF9y4|EjuPxy=iZ`s?5*fCFutrDFaKN=i$QEsgd8H(;vtr zZ`I)@9@sy_SCOQb;7i)1U}f1>$Kmt>6(q!ihOhJN2V$==UtE$#>n{E7f4X56IgTWU zWKjwavW@0Mtuj;@e2;H#fZWH@%P=bvGCyAq^;oGUqsmArpbbpSiFAoJ1X5y6lJPbg z`YGx?bUR95%Hjs=lPGcqH(j)#I9+0H?W>dKvieA*W)zp{)#5q5C~0%F-}i)%nj!Je z%)dMmUflVF>#TkKK<>9N=#?My_U&wB^3?@JQ72kLNr!ap6EjMS=fjnl%p%s|GiTP% z)th**eT{BvsEiTzR33Y@d_R?yo8X}K!2OT>R&yC|zrne2fsMKtb^ZB|TjWk9$z+nc zo_O|NXjP2|mk+g)ZuRRUQztWkYo}$yf$XS|Y5J5r7u6ModASdgj zLGs|Syj3Q<9*X5pv zw!<|AM1;KHK-h|5g?mdduLI#N%m#?{rx8_*MC6FQR%Y2{*htuR&*}vP|14>$22WNS z5_LHnH!U*h`G!!9U|<2lOF|=*e;bh$N@s>a&|ER4aj&QN8+PMD?Y%u8lxG!2h2RBv z=3L9)+wDY$9?v%s0GF`cadIej6y>pY_DlogKeypLY>jI7`H=%IN{^MA4W0xihvYKd z^RGF>Jg@s^{7g#o_QNQPsl2XW$2Vh>j~*}vtI?*WtKwIM2(u#PyoI!x_8mVt#$vpl zZz_*4|B^>e3T(5qHFlGrvKh8zUL+e=oa|U5pCh^5wy_sp-CkIDfAg_FyCIG5*lcA- zTNHqzK%j1&IG5F(<=E)o(r=x|Iqeg!HxJyv6fK2GN6r=Qs(%ngy6Vzus>ZOYmcr;F z+y1+ixo8`n{L>4z_a~$BCb~kZD})K&Zjym8E%T9y%ScJN-*$xBk8Z$S*Sp|xewxf@ z-;%DQ(){p1fZiT*k=U3_r>N*g#*DomM`k)A-4C-L*qSL%gUm0tIy&BnvC2|LDt`s@ zbgxDZc)#5&UB@t1=%@V#bN#%$XeeDCRG}5;q<3CI?svY`Q|-VO!@Jk1*Nqi)h4s!z z1k_24*kkJsH1c}aLk;_c!1o!|`qstSv{b(*>Hbzs_FGGet*ry|zC;VGi!!D_E+7A3_p%O{~TI9oB7Wn1f(ja4h?NyzF zPVTZ2=BbvM?d`pyh2FM?{HF$u{HWIkk{^O(maBaN>vSmZL_(6=eqay6+>&ag@VB|p zBV~TM<&?+n78Jkc+rXudVn~P+SBs@j)>r;;|t>%pj3*N!1z}5cjs^)s<>fPg+U9{egO|<*{$wud%d6+#}Ffzj&Sx%2y z#Z(PC3@BZ2RnE}`xm(4;m`6~@3*WS9^d^Nn1CK7Tp%G zF##oU(6!X{!lN2gjVa=5MJp1&u;aAoa0d48L zR0eQME&G$+T5Fccn{PBf(9#v21pHe0;#ZTFxWZXl9+je+N7GvxVQh>z775-0K6962 z(5sIs0G#`+XP_5(?}@eVcdZhRc!`h6*k?G`9EkJb`mHk!1X?ZhKUGC(Tl6bT{{yb% z|9dXuUsc7~(&%Vz<43DFxim+%I^XqBYl zfB#+czeXMZT{QB4?s@s5ncdCbou(c^TV31;ZmWR5Mcn^^9}*9srw3o&bJXU47NrN# zvLgSs-t)iuZ>s9dYtH{mj#FsK>A+Jm4sn5*PX|a{F+rpOA=m!hPiNvi{(+gQJq{uk zq&fVR2CC+w{_iNW;miL_=i!5yujIcKAI|*yJDnN*@A6^)PdmTxIn=OWYor3=`&Ww=Nh}=Io!P$g{rl^bEtr~>9OWZb0M4Tx}Xv%n4O+CMW}kxB>Q;bru*tNXEc?z(O6Qy zc~k>RUDHlfiR}gL%YglyK9yDV8PwnSa{s4afznjS7R4O%Fs)k_ANjRE`fN#C{T`Oh zF6;Y_(~m(45a$d(MPH}Jh&C5+}Xu&^yVRH-UD=;<4;}Q z9j-XZXjKO9d~wf#92Ns}@K+n|1c80U4(FB-2&;opqAk=(NV1b(AEUb0MC{FULlbpV0W_ zX2lPKFCl>)xYnwm7Yh6Dw`kg(`}Peg+cwRQ^ta$QW`gsH9*vp$*Aen>sfc8ZKs9NlP+oz3mLCdggJ*ri=s(w%np3SWs0RDQOO%%tljN3x07M{@|?t^tPS> z?amnip)>if=WD2qW~}Giow>`KPFB(9-gR?kThSVPb`rb9r=qItyS-lgR+h0(@wWDg zrbiP8gPt^l9xif@QIDB)Yl1=VDEYbkiYac+dB=wj*v7&$aML>4M0En!(9tm!{Pccmd(TQWsCOMd{dv;N23oSW$+IsX+Cl4{1lKsHX-=z5?RAWii67O?ImNv?T= zQj*qFhW#w_qPk1~++g*|o&M+hn(>cm0gkr#{4&->;qI9S!xOOf_ZZh*{ecZ0Xm7sF zWsW(o6N-2CHC+G2JIdvc+wlD;)Ox}z0?@0)2VBh!vo?Tp!>FVF@_9r@t>BgNkE`${ z@Uows`$W`{Ew-7;D|F-ZTDW_YEie_Uq^Q%nE^GC1#`x| zC18J@JZ?>vf%4(K*r0M?axXu-%A`(KJ=lgkZ8O1$rA!;GpC0c1-|U2;|x&%CtX$X=oa3eie$|WW!Mdnczp2@wLuknQcSGVhtsAA zR0c#YwQk;5KJiwRt~UYN&=2UkoiQ5RKXA!JX2WIr;Uw)^i?o0}jA;Ev7C#KKc-+`H zk-QGnYcrlrvBbN#FGbAMA3-+ZVsd*_Sa>uA+YEWo(`zz^IvOOFsb+7ep3r)&Gw?e@ z#c)o@W*1SaZ`HSeZ{uO}i^bjx2q2~4)A|-MOzM4hv^B4{rA6`VOLQX`zuRot^OINwq)`0+X z%^I4AR>bfs6AEUMv9Ad+{oL?$YA$|im51mUoO233nfm3Qdr~Q1Q6Y?+eLmj8U91kg zpjJ3vR?z_xlir!VPzb+$5@g8sKK~p0DfMKBm{al9UUtv)rIr-|$_VV2S$MFtadAQA zo~dDy@&SVR_{jj}dk;dsH}$@z%m|t5@HyFer*Qm0>j`;xck7cX<*s9ij5{oS3OYrr ztt8Lvvg?P0G@Z83;sAvSr-`xUC-Dox*Y(`6T|LwC38w%bfhM@^wZI!WZGi5A-BIqw z*q0|U2^cU-cju{n9|Ltyb6vRy37AsN5zAdEAcoa2hfTM3Zw#a`=mpVqeGm;Eb&Pfy znwMS$p0(Ou?0;ms_V%UrOJ!hKmPeE3mZbY|`{qV4(E+b; zCooKsoVRbd9gQ=xx7|vqZO3DO0>n7R9>n)Ek_q<6u43=P)3x-aCr9We%S$&S&_rUqu&Wi|nw|5`y(N&>IEMOlB-m8FyY{{i%J-sO) zr>w$gFDg0m23>|q2n@$4@gtYFKOMe!l6-T5_f{Q;k zpdXM7iI1VO!$oW2&x&gsc}-_B>0vhqevrdwW+B`o$m8;j4*_%6#bz~BuGnCsS>_Z- z34wTu5W%&{04l4`A-v{)ZNWwCd4Nsa)A{Jx4=gT0vvF+3rJGw#cRqjL_M+yN?o*Pv zvKijuKR>;t|19&VU?N7_1Zxa^o&|!DK(|kk75iG-2Zo$&eH-7Z!93{I-LkoZM$}D* zXRHM@jK}m%SGQ*9=HMlHty1R=^LDKdx7DlzbLvL$Gf|3o6+r*0f;vXrgH!RbdG!qY z&Z{j%G|#y3Dq#g0_Kcr;kMV_;k=8;X)a2~lX#I76Tl@BcC`C2v=N-CSS>bYq$5Q$E zZ1-Y9wHW)rJZuhX+NrGJ6{c6&Jge6;Ku0lWL{@LWJlH(F`4@c#xfc|obk#$|z{{MC zLMFm;yqOic%+7YZozcniekQpAnsU7+I8|myGhBW_evPlS-l>r)Y$;TI-eTyUG%6??tBgF7 z9#Sn9>S+Qrbk&af1zSdeO+s3YJgz6anp6>U8VfYr?3oL&1)-}?YH^$*lDi@79x!=M z!?q0Bpi+*(e2~dX=SfXp>S`T2UOQMqu!%|%bS0*WQUa}A4z7)ly{V9X`T3*zhl9XD ztFJir^TxaB1jn8aMV+Y|Hr<<{M}*W>T=5dDPTCgMDf%^OD)_{1OYBr67Yg>HyVW&%E1LnZrF3KpqZTG1w)s`Nimu*tcH5YqRWE+oTOVRI& zuIBi3cW(&;U)k2E81BWIsNb#W_z}Vz9&0Fp8mo=CBe%dVzfG6WbxCf=_eb#CaCXsZ zAG)+>JhB8~{nO;ndS_E~jAweq2c|#B_L;0C8*xpPN*SquOT;3KAACZfg^>_n(zp%w z$76|6m_x@8lHO8igmbaQ9*f0C`l`!MF2Oj|q3Ko;0`_>Oqd_H^Qw`Qo=i(g|}qyMk$WjY=s_ zN{>H4y}q|F=U%8@>lI(r;~c-YPtrq$y6LuVN4?hKke+)ZISsq@7HtIsS`p;DKNT~$ zB1v&q?Rz|3rd2F*Xd+aVjt9&Vaw$RCKI@^XZ)AZokZ#FeIW0$S&Alrl)1Vk2uw!S# zdT!S3&JCVd$LTOy)MM1L)2b(`24oqFOgud|xql^ui{VJU@vk}e=CO!A!|fn2Trg#3 zzG;g5(~9x!HJX>jD!23>!?%Xxxd9tf>D3du-aT!8H6*fwHk3f_SNa7Z#RzFd5mmps zl1C+l98zYkTz0{wqF9hm6kG2rVt(EzrUSG|mGbU44RKnzw!XcbsiG7$Gkki(nE<}l zUOdOM^RpPdRy(~D$Lp__obY@AAk-Bf zK}*fa?HlPxWNqYP)Pu<_GQ3v)OR7ds9Yk}e(t_O@_!Y(X^j9S!;`u}sJpdD5s0_L$ zKiF}6zP&eF{rY$zJ)nm#tS;9didrAP{{wqTSi=J^SVvt~zR zD+~%AfHBBfXwk+Cy$uxqrP=7KUngqDv3l^Y5tc!*Auw>u2x1EOVR;een4j|kX zO;!{DnU{@!Y^|?8$njD>+r#RwZc6@+dB~dmWD0eP?iI#w{NC2y_5UJd2QF>u3JfV zf6~N*TArxvQ3AtQzrz$qa4>i4U45Rb6((?wiq6IpZSbQWb2gEn+->kIvQI15T^f z?BokQDw4_f>EixUrEp!!a?nPqwspNFo3j7g2Xc!lyjZaJN-bWOy9X#pZ6TV>p%3%t zU&_RyL5p7O{O$uJ^NDG`I7^LhHFG$X3kz4PJ*7wEgQ%OwrGX9wUS8cp&NoEdAo%H}90p1488!{?7$3Cl=KhraMt*Y_$4(9`!4tCl zKXFf~wiXA{OM;<>oT*P@*|N(|QWPX4wbbl$mxrQM&&dw3f@Vo+2uJ>ky<(H!uJZc| z2I#tq;gS9Nis7SB!_|8AkOIBo$>0J#gm&ndaeFW7eSy`%5G}yV7fSb`M;IO0TNPtx z69Wp?BMC`r_foL?8p4EoZM2GqH_j@1DSGb;44(?|qkYcLUMwAzvLrMiFK^R%=C*`# zR#prbn^Y_PT(!Cfy`#@4dK9j&B2e(;jw$BZVI?ka!sygb?HQwN5_{+P)5}(rWGY8)w&x1>-F<64p9{bA!x8&{`LkQ4g$Pck${{fIq+nn{G3>;B0Z}n2? zzJeRgXm&qWhL}Vohxf`RYvp*@YL?T^4TW4+Kgn*YpTY2mZwS8=*BrkE;)6H`nC&8J zbEKH`xhIkNHnj;8OlEz~R$)I*cwFze@`-dm@V%bN^uA6jwM;ev)wZ8s)fs!%zIlz^ zy{6^DXj@4<5;oTM#v(PqwwY^ELGVM1jO}Y=ee$aw9SPYGHLxy$|Ld168&KN~uK_}p z5ev`MR81%OEozcdz1i{l>Zdv5{lW1JmW=RcFJ;#XCHeyfw_1GF$$!wE)oP6>O4~1PCGbC zD$jPTgy`jDuLHp#Z8}UT(#)2s9W>C-g?)M29OBAF`?^1BQRPvvx;Bf}y^X;P6WPMoWCs43$ zW#f|nUc_+O8IEY4o$N(j{cf4zjeBhQAChkW+JWTFxtS4^@W|hd(i#b z5mtXYMYvqnfMjrosAW2?_HENsnTPg=CmSgv+}S#CiNhfeeUIuBKB#lRRf0$v3*1%p zs}zH5MQgDXvD^kzeH{OTgQ8ITG?nt*$IqBv=oOMW(frDq3id@-j__Tn)H(xTnyl{tHP8ldazyEtEtl20!)(Q!7}?1?Aw z3``SNq<*EF;N1YfhZDWo824vV8T3|s>sMpIOm50QzxvB&(&jgKB_NKChHGD`f8w!% zy5B%U%Fnpe%-!;CcoTuH`C8=V>UTp5P2canqtw(+9b7irPK?C)d;vc!QQWo%eWb zqN4c-MU$}Nyw8%I%J_gmFVU7!ucw@uO_8k3;G`)0PdCE`R*Q_82W+5Y8*V z4%xG>Z>jM%*q;+mX}?7@uWrFvn^rw!}-Os`IxNU zrkDCWzkOO)wKzo~UHvf5&x_PNPQ6Rr0|Ayp3w{_+q8Xlh_XyW2z4P(XSB1jlX)@XB;)#&80f4Pb9cF;vR3qMS z&u>w!wpG@@{wJ-}h8OV#l1f^M11zvB8vnB&xZS1!$lu@VyIny$l*;Q`%YbJU@^Qhk zLVf8;*O*qqqq#2bzJDEMCttf@rbv1}&hW_Zv9nB#ue4=fZRjWEqt67lF688e(q~&)Qd!bY`^0NW3@$(pEWP8o`ek9N=53ySL6lf$mfi+kh24g zU2{GY81o(nLm2DvKgW#QZ4-c8v)^URgDSx(R7jk(8uNns8DQ+ z+AAK1w&QA3;A4-K{db(qbis^zG^dhje?7?Sdv8!kQq7jFM(Fd(vTkRn6tb%@hyH4h z!@D{cn#V*!wVzbBcMLrMsxmI~A^jGHt-V+RQ^*9-XAk+hW34Xwjq5r&hfOZ8kZstCa)uw=aNOG&PZLo5`radb24&+jxs`1|2EpcX;2>)}pxMP5y zD8&OP@7fV@-0q@@tqvSfZ742d7(#cU;ndGHSpwjnUzH{g&ZxJ&$04S&KzTD)KND`) zVgM{RZ~G<(3fB&tDm0@(uCkfR?ZtHj!l6j>K)7<<6Ro+MTl?>`lyu=PX zhj_A#7o?a%Giq-%FIW{#v-6Q@uJaF4pJ($z<&9g7{Tt=$jXbKUSO~xIjqV;;tv^#UMWY1jr71*^FWMlQP<&6#B zKW_V``=7YK|Hq8oU(DQI1ytFJCR7g0u%Z#v>B}*|vQsJ3NxXaB?Bs)+uRIMke7$&Ik(4eZ(Q}g50c4pHFxT~ zWd%$rc45K$43VPH-pkuOcBhj;D_1Y)?(I;CKY8Honp4zg0R3EP*&gbRKBX*!^39E@ zi8NyBr;wTS+U%KxoJ&Q%@q|_`b6A=SmN-Y~-iJs^;W6mGAvrDd_U{BqI;&m$L<~w_Wer$Y$hxi4N=Utno<(AE{np4MQVriVy z(WqvjY@~1BYO7a#FI)!>CNo{w-hpPX!*g`>q5G$mtg^63ewB==W9{kcdd}0WlX0Kz zT}MQY*(v{qz9T?if6$&;Rf!h)rxkiiq()*R^{14WbZG|Q5baDIC&$;?ZEtXXr32iB zjwf5TSjv^H@#72d^eMk>6p`iWMjtoqs0XVkS-v0U&CjC_>zO(zaL!^po$X@Q0k~6_ z<86a3pr{$d998l<(R=>{*dhm>nJ>d?G8=EX-O%;$l9eJnIV**!TE;ubbecHNeYg?S z8A5BCCThJZ$|-1%t~uX*1D@p$A;yg)6u6UEZH3)hesM5&u#j9dodK7;kdtgvc*~YriK%< z+j64&z22O3i9#WT@hPcU067VJQwnnzJY=7Ecmz4bvu2kU%+zu?qd6-RHmkV(Ej&KB zCj3( z8CbbgmzZ;W1~nbA8Lj+irK|yrW@yq}LYay?{HzLk=;0nPm6skdkK5gti*-jZGxtga zBI8VNA-{L^V&J;&RkKE~YpKUI*dqc>aZsuJ&vTX*P?8WIDQW4>>st*p>9;@V5a_TO zpMWc(A-7p*;wDWK0knvVrE5{t)pdLI5zkR({|wzb)My1qzwf-s`yr}5&sbxu_s(-m z@dvFA4-oQ6erS^jJn}m-@_v_?el@C5A`lB{Ye70%DP{tf7~i-R0TJ7)FBop0v`8I0 zJ*l%gay)pdn4eIftJRWDXc&Xt>O@H&Tv>2Ms|1q}qk^^{mly6an+uz$fE`I|d@Nd6Ju2!c&IX_`dIK2UCbLvo z|4$XMSFt-=srMe#IK{rDH18l}Z~4Jizf`#pI9Ir7)8*$r5S}FjzM4eMLi>U_wJIV~ zyq0jCv#SmT-cn7=^S9rFR&IVOeo|FWK8C*2I9C#vxC0N{$BQH5VtHxc7_3TNOSF|@$Lx_feO1ka+a&}3V93IVD6eoBtvz*f=95WPAq zPzR8=BhINnc*CYv#X{eU`|O|6i`Jh+n^Cx?jZ+Dw^})v1T}ki zx`~sypDh-fDOkyrW)qw%4Xt&ekWVI$A%kGo`b0glNG*w$Y+01{jTMYho_xw z)d;t+bUaqF(@+=Rf!#6lY1y2}23ZHy{gw5qR~~(*C?Gm#6~5C4S>8($7fP1E8@bA= z>mT}y*0eaJ&2H%P2YNU05B&9eIzw^wgsK^5><}G^eok02Z766xU^`iABQVsD?}j} z47U8*g5vDtss8omNy5iM)YP5_d6Qt6{c{y{!udU`agz3oPhT!^BX+Ez#fF6v2bT>z zE_Dp8E>(XWOQJ&nGgRa$8jNb?{WMfh*L?-riCw}17sz7tzuMM7P$`LLly zh!s(cP`CtbEN5&b?>5~VNpWoefn0*^x;rza&Lcvj{Cz)`fS-M_o?^` zko#!@-?MLW^&_KNOrJEJX80om3)|AIveD#3V%ZXgi5`(~Y*r~Yvh}5aMa-Zdmn+c) z>)#a;yJWA)nLYeRq5t&`H?QqBl7p$c+k!@!8(qCyI=v_Rt+i+#yoSdI?l5+}TY9xG zQ)t4R_>Z!E1!aSh#Ds3gR)sQPcfM|sO4aWVB1q`>TMufrE?o(d7N1KcjC|m*>6ARa zx2F1ZDqKtrkj7824G}GW1s~s1q;&1}$k@qOL4-0JeC0TD+iOkxdCaFm%0Q9;e-AxOo)l(MNRH~ax~oP*f3$y&Vhe1)$H+{?Q&2*pH@dcCZyM~R zvn#*c{TTWbZGn7Fi6FMRi>hY`$ptQ$odry~J}t2co|6_DeYWMGf&W4^sPdI$$<_&8 z^a8;^KfGLdf_$UaL`~gWmXRhD^EXSvQS8RMQR>gxyhDEo(O>M%22LBzCUYdrw%MEJ z!UA}|CnSjvSN7khsKL<^a|?zPcm<%hT|h(8%7J#hUN2Rq6Y}f#)jNPN1du<=;i%L zR&9=%xz)uJIkdQ}Dq@|JzW>~_DEanKif;kOXDcB(#drQ4#UHdf>PPkSl+8R=Vx-kP zKB*hE?9&N~p0gJyVR$lq@>6kXyR%K!`$SwNaDl#^2#B!UQeZTp$xB&H9JA|rbr#9K zS$q;c@u$BGXivet*610JMDxWP0>Fgm*8Syfm!EPL{brzHtIA=#_aStT9TzZiuY{z!%dTaVBWHR z75ZKmngoQoK@SfIajg$Qb38q5ohTNSJH)0?Lnj;|?zJ4wu}jIjOpk^0tgX15^VtQ* zei!RkPMKJh%Ltjz)hEuYSJ?~o*hk0#69;QckKQ&kG(BK$3VHB%5^W++9sTlYHAXZUp})N z;aFIoE>%>%myz^h5nqPBBr2_EYRNw=^IidV2@vjumr~l{0@8U!og3|qX33hh^u7NT zfAY%`^At{7TERv%^`_v^J6195Z@qumz?6RvvpeBUR_uZT&77q{5aG6SIL>f&GPH2D z+L>`c%vY`SgJ5dEH-!#Sy>*dCM8e@`R&M++TiM4{ru>2^5yH@Ax)@73MEuQPlQ+y= zukH8(5_G3O%BFQbD1*8vrtRtX3F6Wq!$h_VU0=sh{4c{KfdPqMyMxjL@T|7B4Ts$$_V)X-c% zZZ&~E%bhj|2l>DFg&fT_<501@UkHmq-q5?Uv?h86=)0<9`*mi1T(DBGD}?eZG)ZY( zaKl`!L-g?wgS^BLYIkEZ$dc7dAvEa+4_EMtkuevfsbaYQXti!XG2Z1is2UMHVF*Oi z12$?0W8WqTN9%f1?0IR1rlmsC9NF1bS4C~YICx{v2#nuJpMS8Q(qu`Gke}R8QOt=T zS1<203ntWcSpjyVbGl)su`5y1y5x5sYu?Yyr$Tw@5IS6vyJEf~Q>^mUH`#_BR+M)6 zkS_AS0(MWC(A2CCIjUbQW~&bYD%Xg7`Zuf9(M&Y7KKf3Mn{T^l6vtxiP-dths~Y6= zL`tXaaQsv#M!ao$u{Y0z^4yZmb&>o>sJ0l}kr5><=j38BQe0H-2(m@1wsF@tn-p&s zEx)J$2pr|gZt|6%jqO(iGKaiyJuGt^*d~6t`G9JigeVPD+H&N|9xfJl(QH3_^|bD< zPBW(Ev6B6(sbwbld*RVTSy2{WdI5xF7SaPpj|gNp^hdls&mo%*`5-!04fEJKixuhA1ol9t0nAiQ$!^#_;u|t@ zmYVA9ncI7>VIQ}Pet&pUE3B5wdOh#Vy?_F@DjKxPH5(x=6?5g}B7oO1(U%Znm1$I= z6e!J=O@pb2Gr`t0V;((ZYj4|>*#D~S+oPdgqrW@n&~d5UQ%RC)P|}r&m{6Qth9XKd zDWaH2A-9>+M8t84L<}Mfxr{rR%rt|_okp%{j9ePGaTzn1+wbX|oORxJt#_^W{p0=T zyL_$hJkQ?y*?WJV@3Z&*Y`=%`OaQE2QPZ|?myGlBheNl^XiuD{758Mg+SXz^pC8Rd zJnx~iZ0n!Tmggi|xw{+lp5Rfd5OlTV{wH(OfunUob7#wxS-nEzRyq0$N9vU;Gk(Ov zt5u#;2Mg)~i#-xWUbBOrI?`{hn5SFmQ=hAdzCBr7#rTM^Jso+_`Kj7f^M~1QW0RNx za44fTs_NBMh*3e=c^A=yFj?~Gxq?{;cE%I4AfKdma~1*}U)+fAnN@?{N~`2snE)wT#4bAlwCe>}z4_%ps>8Gdjugk)+rG1a4^Spu=KcXgWjiZgrW;(=i zdmWK7UOD^)LhS9Jfh`x~ZY3g_mS&r#@^r6f2IZER;bQ*)tu?2mn11CvW~d0{vgw)= z!iUnFV{vyeNe|&O)jJ+}Ovn5B%%e*kw(it{%c1E^Ef;JMBvo(J>ef9+CHb_$Ah)1p zWed^iR}W^N*jM9=XiZgGwxyunB5`~yAt?9I*fIPd(t!T#%&WDvuhk%k$T4nqm>MJ9 zdr|e*-C)p650j`CpR@UtBTY%=dF>nQ9bt;6TO#k1 z5A9HRTOsOfd(>}>L0#ym?mXw3szBvqQ6{F5@+dsSBTN}|xn1q(sGPrktk!RvWvX2m z(%nexs(;aoL?fWIx0-AjkLHak&-!S(wISsZJH9GQR>LfVoiiIF$=fs!ZhO^H%V^L1 zGquLe>9Wu}eY)D312&Ow79ym4&w$wJ(kvU^C)U}szdI~C$-IAS?;s+LNI93U zJ>XAr$ghXvvcN~=?ry}^j8BfLHwhy-vq9hVJMthCa`xGG%)mV1HerRk`y;uFk`$|x zEf6+09jhmozBpOC4`W+JQux4@#`Y9?E=Ru!-eVS9gozBvJrHv9$^9iySGIx6% zikT$D_k!b7fPi1C2Hj_b8wX*>W2uFV@x;in{2$WB-*!Q_4OAe6x%B(*xKjF zEt4+){W<*en>24V44P$tn3%$lUD}MN?`UhC^N=3HiqE!apv|TCPW8H!C@pln9dsid z50N6D3pF)h_uOZ1eOmICG7ipX1M6EA@@D+-B~2LHHogF!W4v2nEoFQXC6(zQmufXP?is5fv6}s2l|)xrT&d1@~)j8kD*$b zkgB1=PfB3)cg`Eh49EYQ#%kpkeSY+od@Ba(spMtV{wgD$@VwTy)Sx4MAgQI5eM*EQk~W%ABBIPDubF_NfBIq z*z+V&T*M@`xp}p+VtexG=mXp}x_?>PNaYvzVbni?xec|syP;b0n?c~NMrOTI=}$js z_K3XBcScp&wh842Uu!cno4AZ>_|R|>%{uV9I>xG2H(Ivxx5nAS2}0ywG}~ zc%D4lkKs?_X6_PthqzJeX%pdt5zd?^Kq3u9&0{8;18v z6KM!ptm`8>+O@beCIlI%553{%F;_I9 zm&u#|k-|ux?w6MJj?;+aJZ?8O9@Dyjz={0?5rL z9B*)Mgp!-5NjhCD~(5<*`JlN0C6>MKhO^Y>mv-m}|mlmmAen;y}KFjo=1?2LW=amfTwXm3!4!P5g z-DHV<=l_(}&C!maJXO0X|9ExGuO@WIf!>eP*MvK9ElNY4tv=!Sycjm?#dfta6u&Nw zX_1*>GwA(lwv!B%YpXse|1(avp+wG14$Jbibf;c+|MoR+89|rWOE)83&()p3(60$G z8}qd5&`8>e_Vw?LJbe!fat@XT2M(V4$gS7jECqlYrWmQcDkk)NnHwUPH`pR}7($Ns z{ZPM4uSzECFtfm|II;V`RwF6DUznd3hv!*G(_9f5=|~v8CpN9o$$!U#bR7xd_*(F{ zwhD#yqOCi7fCBy$(uR>k0Ig{K=Kr~;;{T}!V|n5TYq3?^`hO`$+i-uiE5h)&AWLY9to&KR3Q$|M((u#UOqGmzsQTYR z11cJvzmv`@Y5hCJoz{tIy~o{;rAY|pY1;6NkK&qlkE!I(#DtycL*=V=vH$<3XAg#i z3Jj>Ql{o-JzpI&!=QS|+q{$q@H!$ayW+q8c&G6>$qchC}b1aqxT#s_wrHUv?4_{(* zGiCT3XBae{U!6F&KfIIwg%$9;a$gSjtFC2cDW|5%`DoD~TJ=eJ;VJO3<4934tCX;QDwM>N!n9S~F|Rd%f21{s3}md6i)x93kL> zVM|I@UnXfwQh5%7297nUZ|sfeFXVz4LX^*$;9dq{H|XQZs`p+wBgdhvf-WrRd9StE z{hd}~0q1Fjk9WH}6lNGbHKvzvOhaA%7a9ZWDton_@=iUCTEWay?Vx$Rfjon?-iT6jMmPD1wA2m);$hRlWRQ=skr{f zp42Lcn1@DO+1V%NN0|Xuum_7l`=A9!TS7faeWs8iDw>u;Txg;)ekXEIP_+lRCp|!E z4C4l#JMDKcI)w4eE?5|igB`{RTlFOzUg^p0BFb_Ph&KMWq1L|nE>Z8{XFcYuH8xi`{o&x_(4F2KeE776?< zxIO)C#yu5OsZcW+r}96KMeAKiF&7Gmx+vc@$3yy&dgFS$D^H9{x^j`J;p%BRV%IL8 ziW=YXi{|IRlfen`ZegWK6wOdb6V}K{_Sx$c*^=n^#KwGIV{`1m7Fw3wsB1=E2D5;% zBdutJWng;7*LpWY4t^wEz8QlY9~ASfh_`FRg&?g%+GnfT+M5bl2sQPptoM+zb5W*7 zmgao|jRI)|QBv~>=vGV=Hq*SOzK8$U;rI`PY_^7qo}c)AOdN7o)?=$zTS4~D>yCGg zH7CmYtS;|K*U)})*0}9<3$Kl}!cqFAS?nf}4=4Qok3+C;lcD#~*fn{i9Qf{WIbem3 zR=Ux!PB@IEYjrYv#`N9xo}tEYJujGRSw3QJeC8ZdXgJ)PM9~Y?h0^82o{_Yyq2fkv zTOYD+Wy@Z7y>dk5OBHrd*c@3!3=ZZd8onm_CEU*DOogODUO6lnKD_t=Qr zUn>XPUHQ~ZwY7RtW9Fl2+*$SGyCV1mtJS$7W6}JpUr6qqfdFU>=)4iI@AAXutGaGl zwY!=Md^rHaYoR!>xOCZ;_W154oUjE?t->XmU)m3CE^j&DN67Rj|KBH8ZInB^<}iin zXAMs%=yB8knDRRTj%+AT>kpBmU<(TROND_)`uisQgLCIh#o!lekAS@2z8-LUhwzU2 zM6wUv3EB&c{BWh=Deg|(7Bd_s-IEIB&M#(omV0e8f)rWMa6htQW#cW(qarc?3`RRj9NpCw;y zro&Nj*JDGL_lxN>qY)HmkryjLFIGOy3s*m*j}dPxezGu{RH8q#U0s}$o=Lu6$UO5J z@qIYNAptU)(l_RyLYg3)hUk$JM?j#oXDd|+E zX(HUTUw>zXutf8(L64t^5TM^nWV<59 zRszUIm6!1=hPs2E5*jg5iGtn~I$zxO-~EPknzjf|-c*TVvSJ`Af;&Mu!rel?#rJ6w z5MCd?{c63qJ+=cm5aRsd@SyZ4XIl9?Ax(MCSQzu)8L#Ld`i}gi6Sl$+`h9KgW(1)N z{a)XCLsL?Tr!Sh}5lwb1jAT?)56!#J?nk2ElVcf9c zpwY2%2o_U4M!cZdlmF5@ywNCkEm^pTfTP*&=$ozUJIFuv&AXy7H$iRv{AbJYFshAD z0t74gOj>iGstD*RgTCv)A0x4{mDw-1gP`SnMSzrwp&bO>mA z5~=6AVlj{HuHqyS1MU_3elSDv-evSKGbcNBe+!V|H{yCR(t{5b(LxA?vf$-r&9W=9%_HnIg9Bs@%U1 z8i>PEk|WT(Zz^%w)Jy>*b1-QA*^%dRa2-*ky2lx#0|~e^%yT=qt_Dc1zWYE1+k*eh zPeU(x=XHim9HZXrG*Dy;BZTuRdERL5Q1zYlA!_%D%tAa)8%au}+H^feF*zu2!(ms_ z;kR$$oMP|L1LE-U=mv0pG9G5DJ|l@(p|A!zQT}T^IKvbCMQ!0Ci!6om38I0W9e-3? zFv^l7%}eS>xMu|3tn%^o&8B>dgBkKy;y?|swV)aHWPusV3>HroV+M8x$8P<~p9@gg z_jcNuS(ijd@S@R1{l`x6S=2BkS-~nyI2ooSEui7o@Hk;#z3{eP@Hg}c{*tb9<~)oq zrP0r=(GbaukY0PomV8)xyx(2hrRG}S_ONksiMKdGlt9vRE#2h8X<2}hf*FpQ4;@$8q1&3%j(ah%V~TU)Udbk2ypd_g=^-EKS>YwQBtjQUCd zniGJdt)|nSDDWq|1vf(imd5SAFpxpYgBoIc>Z8F=JSy)+lzKp>=h}7 zco>rSLnP%BFJFp^TB&=Ou>JH_CH=d;(oAyO7=ivOHs3qR|##+!tx9N-qy){52j zMAazzA%u-XDJP75#;o~0)=jo>5HasJ*?8czvgW1p->XHq()xC#QWJnAmwQSW=WRQW z_BU+-tD^W05Z5k24~ihMGxv2fUcpvBvdTQA1w()HrV}>uZGB@|k zt0H6#-VWz3Oba7#4>XBtwJ6!p%E(g(ZA9hC&B4VT8NL!pB5nulwrL*1Vf{B(AMp&+ zB`(CA_bTTU*9CmM_Ir00M&Tux)D`AhDph78%DqO^BBM%`HT%QKNHPEOK&Xn*5u5y7 ztatA`_RPvxCLN=`xbOk51IGVKVyLd@tPDuVTVQ5&f2F68QFoM&_IG{*WOqRAN`Gwu zBZLNnWf21m@;|FS8rI$QgNZE6XW2UzKbWwA>x%wskgJ0IfpzClF2I}xBT|BEL3?>- zM0*GL$)vuiw@hEn?8H-yO3%`mH(n0_WQBZF-h4-8Oht#GYpMBY7AAcgAhTTMXn#aM zQjGm5ru0f_bo`L?%=HBw5kePuNJ$Jx_zpW(K`@18M=|gycUd#T1zQJ2K`+PPD8Ggl zue<39~ht;PvyW7GGIEE4e4vt$O1Pe3bbj{&#x%=V+x)nZ8r`@kxA2H=QV zLe`lmr{mCTxNpfuLtNEM?tlZM`}x-(?^PeA&qQou@9oRNgkAzv++ z>UL1pU()|KquP_I*mvUDRERaOpz+MB&SKfNVr)UeJRUW*76yRY&>PE|CFBSqL)Kx_ zpwDnTkW1zVAS#fCjxjiQFaKI!4Y(Udfo1yFjAFolU?KU}IGl)0_BHGJwkx=<85Ll= z>Zcc6_xIaA3S)b6d@rJ~0*A$56eOx~*p@=SA2!n(wp%Cs8Z%is7NdONA9i*F!%%4h z{4`7e@g1(+Og{7)=z!#ii6|i-A{~?!2{(GX+GCBdT44%WMY=0cRo4(L#GCGMY0&}-l%)`5F4jwOg8FA zZc&(N1e_=Gfujmp1(8=>()&$GjJ`1_=7nG zf_U=ORv`Ac%d$};c2{#H|8d`TVC1@UM7UyQp73|qNssvOV{I>fyw=X0g`X)gzJ~c9 D1bbG1 literal 0 HcmV?d00001 diff --git a/documentation/evidence/s05-preflight-20261019/c3a-both-explicit-session1/diagnostics.txt b/documentation/evidence/s05-preflight-20261019/c3a-both-explicit-session1/diagnostics.txt new file mode 100644 index 00000000..80b394bc --- /dev/null +++ b/documentation/evidence/s05-preflight-20261019/c3a-both-explicit-session1/diagnostics.txt @@ -0,0 +1,28 @@ +Banner: Gate Fail: 6 match, 0 warn, 10 fail (4 contributing to numerical status, 6 informational and excluded); 2 missing on one engine, 0 unit mismatch, 0 not reported. Spaces: 1 matched, 0 only in Tas, 0 only in OpenStudio. + +Overall gate: Fail (numerical Fail, coverage Warn, provenance Pass, reconciliation Pass) +Metrics: 6 match, 0 warn, 10 fail, 2 N/A; 16 of 18 required metrics comparable. Tolerance profile 'default'. A band is a tolerance band, not an engineering verdict (SAM_UI#232/#233). + +Spaces: Tas 1, OpenStudio 1; matched by GUID 1, by name 0. + +Model total vs sum of spaces: + TAS floorArea: model 50, sum of 1 spaces 50 m2 -> Match + TAS volume: model 150, sum of 1 spaces 150 m3 -> Match + OpenStudio floorArea: model 50, sum of 1 spaces 50 m2 -> Match + OpenStudio volume: model 150, sum of 1 spaces 150 m3 -> Match + +Tas run: Success + Note: Shared gbXML was exported from the source model (no --gbxml supplied). + Result sources: SAM.Analytical.Tas + +OpenStudio run: Success + Warning: [SAM-OS-IC-001] Warning: Pollutant generation is not converted (EnergyPlus generic contaminant modelling is out of scope) (SAM InternalCondition 9e54af09-65fb-4f64-98d7-200db3be2457) → SAM_InternalCondition_S39_OfficeOpen_30b69a1f + Note: [SAM-OS-RUN-002] Information: Annual weather source: explicit EPW (weather.epw) + Note: [SAM-OS-RUN-002] Information: Ground temperatures taken from the SAM model WeatherData (depth 0.5 m set, 12 monthly values) + Note: [SAM-OS-RUN-002] Information: No design-day source supplied; sizing-period runs stay disabled unless OpenStudioConversionOptions.RunSizingPeriods overrides + Result sources: SAM.Analytical.OpenStudio + +Run: Compared - C:\TasOut\s05pre\runs\c3a-both-explicit-session1\000000_SAM_AnalyticalModel_TasOpenStudio_20261019-214231_17a4f3e8 +Tas producer: completed, C:\Users\michal\Documents\GitHub\SAM-BIM\SAM_Tas\build\benchmark-tas.exe, exit code 0, 21.2 s, log C:\TasOut\s05pre\runs\c3a-both-explicit-session1\000000_SAM_AnalyticalModel_TasOpenStudio_20261019-214231_17a4f3e8\benchmark-tas.log +OpenStudio producer: completed, C:\Users\michal\Documents\GitHub\SAM-BIM\SAM_OpenStudio\benchmark\SAM.Analytical.OpenStudio.Benchmark\bin\x64\Release\net8.0\benchmark-openstudio.exe, exit code 0, 7 s, log C:\TasOut\s05pre\runs\c3a-both-explicit-session1\000000_SAM_AnalyticalModel_TasOpenStudio_20261019-214231_17a4f3e8\benchmark-openstudio.log +Run record: C:\TasOut\s05pre\runs\c3a-both-explicit-session1\000000_SAM_AnalyticalModel_TasOpenStudio_20261019-214231_17a4f3e8\engine-comparison-run.json diff --git a/documentation/evidence/s05-preflight-20261019/c3a-both-explicit-session1/engine-comparison-run.json b/documentation/evidence/s05-preflight-20261019/c3a-both-explicit-session1/engine-comparison-run.json new file mode 100644 index 00000000..3ebe9d09 --- /dev/null +++ b/documentation/evidence/s05-preflight-20261019/c3a-both-explicit-session1/engine-comparison-run.json @@ -0,0 +1,231 @@ +{ + "schema": "sam-ui.engine-comparison-run/1", + "id": "17a4f3e8", + "status": "Compared", + "startedUtc": "2026-10-19T21:42:31.3711916Z", + "finishedUtc": "2026-10-19T21:43:00.0315148Z", + "sourcePath": "C:\\TasOut\\s05pre\\runs\\c3a-both-explicit-session1\\box-aperture.json", + "modelName": "000000_SAM_AnalyticalModel", + "snapshot": { + "path": "C:\\TasOut\\s05pre\\runs\\c3a-both-explicit-session1\\000000_SAM_AnalyticalModel_TasOpenStudio_20261019-214231_17a4f3e8\\snapshot.json", + "sha256": "sha256:0c30db14a9b10f5e651248e70c942bf875ca93dcee9436998b9960e47c0a6d05" + }, + "weather": { + "source": "File", + "path": "C:\\TasOut\\s05pre\\runs\\c3a-both-explicit-session1\\000000_SAM_AnalyticalModel_TasOpenStudio_20261019-214231_17a4f3e8\\weather.epw", + "sha256": "sha256:472ffb4e2f10867600949a392ce46891fc1bd05f2fc8d8917a99bca7d26209c3" + }, + "producers": [ + { + "engine": "Tas", + "executable": "C:\\Users\\michal\\Documents\\GitHub\\SAM-BIM\\SAM_Tas\\build\\benchmark-tas.exe", + "arguments": [ + "--model", + "C:\\TasOut\\s05pre\\runs\\c3a-both-explicit-session1\\000000_SAM_AnalyticalModel_TasOpenStudio_20261019-214231_17a4f3e8\\snapshot.json", + "--weather", + "C:\\TasOut\\s05pre\\runs\\c3a-both-explicit-session1\\000000_SAM_AnalyticalModel_TasOpenStudio_20261019-214231_17a4f3e8\\weather.epw", + "--tbd", + "C:\\TasOut\\s05pre\\runs\\c3a-both-explicit-session1\\000000_SAM_AnalyticalModel_TasOpenStudio_20261019-214231_17a4f3e8\\tas\\000000_SAM_AnalyticalModel.tbd", + "--out", + "C:\\TasOut\\s05pre\\runs\\c3a-both-explicit-session1\\000000_SAM_AnalyticalModel_TasOpenStudio_20261019-214231_17a4f3e8\\benchmark-TAS.json" + ], + "exitCode": 0, + "durationSeconds": 21.168, + "log": "C:\\TasOut\\s05pre\\runs\\c3a-both-explicit-session1\\000000_SAM_AnalyticalModel_TasOpenStudio_20261019-214231_17a4f3e8\\benchmark-tas.log", + "benchmark": "C:\\TasOut\\s05pre\\runs\\c3a-both-explicit-session1\\000000_SAM_AnalyticalModel_TasOpenStudio_20261019-214231_17a4f3e8\\benchmark-TAS.json", + "error": null, + "succeeded": true + }, + { + "engine": "OpenStudio", + "executable": "C:\\Users\\michal\\Documents\\GitHub\\SAM-BIM\\SAM_OpenStudio\\benchmark\\SAM.Analytical.OpenStudio.Benchmark\\bin\\x64\\Release\\net8.0\\benchmark-openstudio.exe", + "arguments": [ + "--model", + "C:\\TasOut\\s05pre\\runs\\c3a-both-explicit-session1\\000000_SAM_AnalyticalModel_TasOpenStudio_20261019-214231_17a4f3e8\\snapshot.json", + "--weather", + "C:\\TasOut\\s05pre\\runs\\c3a-both-explicit-session1\\000000_SAM_AnalyticalModel_TasOpenStudio_20261019-214231_17a4f3e8\\weather.epw", + "--out", + "C:\\TasOut\\s05pre\\runs\\c3a-both-explicit-session1\\000000_SAM_AnalyticalModel_TasOpenStudio_20261019-214231_17a4f3e8\\benchmark-OpenStudio.json", + "--work", + "C:\\TasOut\\s05pre\\runs\\c3a-both-explicit-session1\\000000_SAM_AnalyticalModel_TasOpenStudio_20261019-214231_17a4f3e8\\openstudio" + ], + "exitCode": 0, + "durationSeconds": 7.041, + "log": "C:\\TasOut\\s05pre\\runs\\c3a-both-explicit-session1\\000000_SAM_AnalyticalModel_TasOpenStudio_20261019-214231_17a4f3e8\\benchmark-openstudio.log", + "benchmark": "C:\\TasOut\\s05pre\\runs\\c3a-both-explicit-session1\\000000_SAM_AnalyticalModel_TasOpenStudio_20261019-214231_17a4f3e8\\benchmark-OpenStudio.json", + "error": null, + "succeeded": true + } + ], + "gate": "Fail", + "reports": [ + "C:\\TasOut\\s05pre\\runs\\c3a-both-explicit-session1\\000000_SAM_AnalyticalModel_TasOpenStudio_20261019-214231_17a4f3e8\\comparison.md", + "C:\\TasOut\\s05pre\\runs\\c3a-both-explicit-session1\\000000_SAM_AnalyticalModel_TasOpenStudio_20261019-214231_17a4f3e8\\comparison.csv", + "C:\\TasOut\\s05pre\\runs\\c3a-both-explicit-session1\\000000_SAM_AnalyticalModel_TasOpenStudio_20261019-214231_17a4f3e8\\comparison-summary.json" + ], + "diagnostics": [], + "error": null, + "provenance": { + "schema": "sam-ui.run-provenance/1", + "route": "Both", + "application": { + "entryAssembly": { + "name": "SAM Analytical", + "version": "1.0.0.0", + "informationalVersion": "1.0.0", + "path": "C:\\TasOut\\s05pre\\app-int\\SAM Analytical.dll", + "sha256": "sha256:5fab33710523275b11cdee257b34c2cbf6b258456de4d538936baa5de4f4c4f4" + }, + "sourceRevision": "unknown", + "sourceRevisionOf": "the \u002Bbuild metadata of SAM.Analytical.UI.WPF\u0027s InformationalVersion; SAM_Deploy installers stamp their SAM_Deploy commit, which pins every repository", + "components": [ + { + "name": "SAM.Core", + "version": "1.0.0.0", + "informationalVersion": "1.0.0", + "path": "C:\\TasOut\\s05pre\\app-int\\SAM.Core.dll", + "sha256": "sha256:7a3c7b15908467342c60cde31b565dc026b47f8a0cd1e3160c14bf163559d8a9" + }, + { + "name": "SAM.Analytical", + "version": "1.0.0.0", + "informationalVersion": "1.0.0", + "path": "C:\\TasOut\\s05pre\\app-int\\SAM.Analytical.dll", + "sha256": "sha256:9576dcd158e3545d73f6b29706b73af7d20c09325193257927bc46ee31119970" + }, + { + "name": "SAM.Analytical.UI.WPF", + "version": "1.0.0.0", + "informationalVersion": "1.0.0", + "path": "C:\\TasOut\\s05pre\\app-int\\SAM.Analytical.UI.WPF.dll", + "sha256": "sha256:181d310ed607579fa39a49506437e60d8188b7486cc45d8a261c59167788426c" + }, + { + "name": "SAM.Analytical.Benchmark", + "version": "1.0.0.0", + "informationalVersion": "1.0.0", + "path": "C:\\TasOut\\s05pre\\app-int\\SAM.Analytical.Benchmark.dll", + "sha256": "sha256:5242c29fc8f21dab17129ef7f83a0c890b5fcd65012765c122913685af8d4f83" + }, + { + "name": "SAM.Analytical.Benchmark.Compare", + "version": "1.0.0.0", + "informationalVersion": "1.0.0", + "path": "C:\\TasOut\\s05pre\\app-int\\SAM.Analytical.Benchmark.Compare.dll", + "sha256": "sha256:e387fc07802de71731825f0e77f37d9ed2f70301cba8096e82684872291170a9" + } + ] + }, + "producers": { + "Tas": { + "executable": { + "path": "C:\\Users\\michal\\Documents\\GitHub\\SAM-BIM\\SAM_Tas\\build\\benchmark-tas.exe", + "sha256": "sha256:07ab3e45b107bdd28a7d6b3622d05014b1edb95e015f86e5dc3e9c7a9ab3fbd2", + "fileVersion": "1.0.0.0", + "productVersion": "1.0.0", + "assembly": { + "path": "C:\\Users\\michal\\Documents\\GitHub\\SAM-BIM\\SAM_Tas\\build\\benchmark-tas.dll", + "sha256": "sha256:7a70ba2d29f4cf49da2f7074fff7aabe356c98ddd3bd4b95fb54cba47ca3c412", + "fileVersion": "1.0.0.0", + "productVersion": "1.0.0" + } + }, + "arguments": [ + "--model", + "C:\\TasOut\\s05pre\\runs\\c3a-both-explicit-session1\\000000_SAM_AnalyticalModel_TasOpenStudio_20261019-214231_17a4f3e8\\snapshot.json", + "--weather", + "C:\\TasOut\\s05pre\\runs\\c3a-both-explicit-session1\\000000_SAM_AnalyticalModel_TasOpenStudio_20261019-214231_17a4f3e8\\weather.epw", + "--tbd", + "C:\\TasOut\\s05pre\\runs\\c3a-both-explicit-session1\\000000_SAM_AnalyticalModel_TasOpenStudio_20261019-214231_17a4f3e8\\tas\\000000_SAM_AnalyticalModel.tbd", + "--out", + "C:\\TasOut\\s05pre\\runs\\c3a-both-explicit-session1\\000000_SAM_AnalyticalModel_TasOpenStudio_20261019-214231_17a4f3e8\\benchmark-TAS.json" + ], + "succeeded": true, + "reported": { + "samCommit": "62b5415697d1a5af143c6b581b7d42fbd6551ca8", + "runnerCommit": "e84aeff687033354e3f17891635fdf10d42ad68f", + "engine": { + "kind": "TAS", + "name": "Tas", + "version": "9.5.7.0", + "sdkVersion": "unknown" + }, + "route": "Native-TAS", + "weather": { + "identity": "weather", + "hash": "sha256:472ffb4e2f10867600949a392ce46891fc1bd05f2fc8d8917a99bca7d26209c3" + }, + "designDaySource": "None", + "sourceFileHash": "sha256:0c30db14a9b10f5e651248e70c942bf875ca93dcee9436998b9960e47c0a6d05", + "canonicalModelHash": "sha256:05c1e334af00f339d36d5b97828692d3d7d27269d2168a945dfc4a35919c9500", + "canonicalizationVersion": "1.0.0", + "state": "Success" + } + }, + "OpenStudio": { + "executable": { + "path": "C:\\Users\\michal\\Documents\\GitHub\\SAM-BIM\\SAM_OpenStudio\\benchmark\\SAM.Analytical.OpenStudio.Benchmark\\bin\\x64\\Release\\net8.0\\benchmark-openstudio.exe", + "sha256": "sha256:644059197b0638bdbfcf7d41b3a7c375b40198a7f53336d907c3e727619a5e06", + "fileVersion": "1.0.0.0", + "productVersion": "1.0.0", + "assembly": { + "path": "C:\\Users\\michal\\Documents\\GitHub\\SAM-BIM\\SAM_OpenStudio\\benchmark\\SAM.Analytical.OpenStudio.Benchmark\\bin\\x64\\Release\\net8.0\\benchmark-openstudio.dll", + "sha256": "sha256:dfc912b3192ec93c23f165761feaa6bea44732e958c359c6f52dea22a173c060", + "fileVersion": "1.0.0.0", + "productVersion": "1.0.0" + } + }, + "arguments": [ + "--model", + "C:\\TasOut\\s05pre\\runs\\c3a-both-explicit-session1\\000000_SAM_AnalyticalModel_TasOpenStudio_20261019-214231_17a4f3e8\\snapshot.json", + "--weather", + "C:\\TasOut\\s05pre\\runs\\c3a-both-explicit-session1\\000000_SAM_AnalyticalModel_TasOpenStudio_20261019-214231_17a4f3e8\\weather.epw", + "--out", + "C:\\TasOut\\s05pre\\runs\\c3a-both-explicit-session1\\000000_SAM_AnalyticalModel_TasOpenStudio_20261019-214231_17a4f3e8\\benchmark-OpenStudio.json", + "--work", + "C:\\TasOut\\s05pre\\runs\\c3a-both-explicit-session1\\000000_SAM_AnalyticalModel_TasOpenStudio_20261019-214231_17a4f3e8\\openstudio" + ], + "succeeded": true, + "reported": { + "samCommit": "62b5415697d1a5af143c6b581b7d42fbd6551ca8", + "runnerCommit": "d4216f3525c01ca762c1b3e9b6d099733d037f54", + "engine": { + "kind": "OpenStudio", + "name": "EnergyPlus", + "version": "25.1.0", + "sdkVersion": "3.10.0" + }, + "route": "Native-OpenStudio", + "weather": { + "identity": "weather", + "hash": "sha256:472ffb4e2f10867600949a392ce46891fc1bd05f2fc8d8917a99bca7d26209c3" + }, + "designDaySource": "None", + "sourceFileHash": "sha256:0c30db14a9b10f5e651248e70c942bf875ca93dcee9436998b9960e47c0a6d05", + "canonicalModelHash": "sha256:05c1e334af00f339d36d5b97828692d3d7d27269d2168a945dfc4a35919c9500", + "canonicalizationVersion": "1.0.0", + "state": "Success" + } + } + }, + "environment": { + "SAM_COMMIT": "62b5415697d1a5af143c6b581b7d42fbd6551ca8", + "RUNNER_COMMIT": "not set" + }, + "weather": { + "source": "File", + "sha256": "sha256:472ffb4e2f10867600949a392ce46891fc1bd05f2fc8d8917a99bca7d26209c3", + "originalPath": "C:\\TasOut\\s01b\\inputs\\Budapest.epw" + }, + "designDays": { + "source": "chosen by each producer from the snapshot (SAM_UI passes none): see producers.\u003Cengine\u003E.reported.designDaySource" + }, + "settings": { + "producers": "each producer\u0027s arguments (producers.\u003Cengine\u003E.arguments) and its built-in workflow settings, which its executable SHA-256 pins" + }, + "unknown": { + "application.sourceRevision": "this build\u0027s InformationalVersion \u00271.0.0\u0027 has no source revision after \u0027\u002B\u0027 (a local developer build); the component SHA-256 values identify the binaries", + "producers.Tas.reported.engine.sdkVersion": "the producer reported none (null in its B1a document; its warnings and notes say why)" + } + } +} \ No newline at end of file diff --git a/documentation/evidence/s05-preflight-20261019/c3b-both-explicit-session2/diagnostics.txt b/documentation/evidence/s05-preflight-20261019/c3b-both-explicit-session2/diagnostics.txt new file mode 100644 index 00000000..ec7752da --- /dev/null +++ b/documentation/evidence/s05-preflight-20261019/c3b-both-explicit-session2/diagnostics.txt @@ -0,0 +1,28 @@ +Banner: Gate Fail: 6 match, 0 warn, 10 fail (4 contributing to numerical status, 6 informational and excluded); 2 missing on one engine, 0 unit mismatch, 0 not reported. Spaces: 1 matched, 0 only in Tas, 0 only in OpenStudio. + +Overall gate: Fail (numerical Fail, coverage Warn, provenance Pass, reconciliation Pass) +Metrics: 6 match, 0 warn, 10 fail, 2 N/A; 16 of 18 required metrics comparable. Tolerance profile 'default'. A band is a tolerance band, not an engineering verdict (SAM_UI#232/#233). + +Spaces: Tas 1, OpenStudio 1; matched by GUID 1, by name 0. + +Model total vs sum of spaces: + TAS floorArea: model 50, sum of 1 spaces 50 m2 -> Match + TAS volume: model 150, sum of 1 spaces 150 m3 -> Match + OpenStudio floorArea: model 50, sum of 1 spaces 50 m2 -> Match + OpenStudio volume: model 150, sum of 1 spaces 150 m3 -> Match + +Tas run: Success + Note: Shared gbXML was exported from the source model (no --gbxml supplied). + Result sources: SAM.Analytical.Tas + +OpenStudio run: Success + Warning: [SAM-OS-IC-001] Warning: Pollutant generation is not converted (EnergyPlus generic contaminant modelling is out of scope) (SAM InternalCondition 9e54af09-65fb-4f64-98d7-200db3be2457) → SAM_InternalCondition_S39_OfficeOpen_30b69a1f + Note: [SAM-OS-RUN-002] Information: Annual weather source: explicit EPW (weather.epw) + Note: [SAM-OS-RUN-002] Information: Ground temperatures taken from the SAM model WeatherData (depth 0.5 m set, 12 monthly values) + Note: [SAM-OS-RUN-002] Information: No design-day source supplied; sizing-period runs stay disabled unless OpenStudioConversionOptions.RunSizingPeriods overrides + Result sources: SAM.Analytical.OpenStudio + +Run: Compared - C:\TasOut\s05pre\runs\c3b-both-explicit-session2\000000_SAM_AnalyticalModel_TasOpenStudio_20261019-214326_46369df8 +Tas producer: completed, C:\Users\michal\Documents\GitHub\SAM-BIM\SAM_Tas\build\benchmark-tas.exe, exit code 0, 20.6 s, log C:\TasOut\s05pre\runs\c3b-both-explicit-session2\000000_SAM_AnalyticalModel_TasOpenStudio_20261019-214326_46369df8\benchmark-tas.log +OpenStudio producer: completed, C:\Users\michal\Documents\GitHub\SAM-BIM\SAM_OpenStudio\benchmark\SAM.Analytical.OpenStudio.Benchmark\bin\x64\Release\net8.0\benchmark-openstudio.exe, exit code 0, 7.6 s, log C:\TasOut\s05pre\runs\c3b-both-explicit-session2\000000_SAM_AnalyticalModel_TasOpenStudio_20261019-214326_46369df8\benchmark-openstudio.log +Run record: C:\TasOut\s05pre\runs\c3b-both-explicit-session2\000000_SAM_AnalyticalModel_TasOpenStudio_20261019-214326_46369df8\engine-comparison-run.json diff --git a/documentation/evidence/s05-preflight-20261019/c3b-both-explicit-session2/engine-comparison-run.json b/documentation/evidence/s05-preflight-20261019/c3b-both-explicit-session2/engine-comparison-run.json new file mode 100644 index 00000000..bcfa2313 --- /dev/null +++ b/documentation/evidence/s05-preflight-20261019/c3b-both-explicit-session2/engine-comparison-run.json @@ -0,0 +1,231 @@ +{ + "schema": "sam-ui.engine-comparison-run/1", + "id": "46369df8", + "status": "Compared", + "startedUtc": "2026-10-19T21:43:26.4232231Z", + "finishedUtc": "2026-10-19T21:43:54.9529839Z", + "sourcePath": "C:\\TasOut\\s05pre\\runs\\c3b-both-explicit-session2\\box-aperture.json", + "modelName": "000000_SAM_AnalyticalModel", + "snapshot": { + "path": "C:\\TasOut\\s05pre\\runs\\c3b-both-explicit-session2\\000000_SAM_AnalyticalModel_TasOpenStudio_20261019-214326_46369df8\\snapshot.json", + "sha256": "sha256:0c30db14a9b10f5e651248e70c942bf875ca93dcee9436998b9960e47c0a6d05" + }, + "weather": { + "source": "File", + "path": "C:\\TasOut\\s05pre\\runs\\c3b-both-explicit-session2\\000000_SAM_AnalyticalModel_TasOpenStudio_20261019-214326_46369df8\\weather.epw", + "sha256": "sha256:472ffb4e2f10867600949a392ce46891fc1bd05f2fc8d8917a99bca7d26209c3" + }, + "producers": [ + { + "engine": "Tas", + "executable": "C:\\Users\\michal\\Documents\\GitHub\\SAM-BIM\\SAM_Tas\\build\\benchmark-tas.exe", + "arguments": [ + "--model", + "C:\\TasOut\\s05pre\\runs\\c3b-both-explicit-session2\\000000_SAM_AnalyticalModel_TasOpenStudio_20261019-214326_46369df8\\snapshot.json", + "--weather", + "C:\\TasOut\\s05pre\\runs\\c3b-both-explicit-session2\\000000_SAM_AnalyticalModel_TasOpenStudio_20261019-214326_46369df8\\weather.epw", + "--tbd", + "C:\\TasOut\\s05pre\\runs\\c3b-both-explicit-session2\\000000_SAM_AnalyticalModel_TasOpenStudio_20261019-214326_46369df8\\tas\\000000_SAM_AnalyticalModel.tbd", + "--out", + "C:\\TasOut\\s05pre\\runs\\c3b-both-explicit-session2\\000000_SAM_AnalyticalModel_TasOpenStudio_20261019-214326_46369df8\\benchmark-TAS.json" + ], + "exitCode": 0, + "durationSeconds": 20.562, + "log": "C:\\TasOut\\s05pre\\runs\\c3b-both-explicit-session2\\000000_SAM_AnalyticalModel_TasOpenStudio_20261019-214326_46369df8\\benchmark-tas.log", + "benchmark": "C:\\TasOut\\s05pre\\runs\\c3b-both-explicit-session2\\000000_SAM_AnalyticalModel_TasOpenStudio_20261019-214326_46369df8\\benchmark-TAS.json", + "error": null, + "succeeded": true + }, + { + "engine": "OpenStudio", + "executable": "C:\\Users\\michal\\Documents\\GitHub\\SAM-BIM\\SAM_OpenStudio\\benchmark\\SAM.Analytical.OpenStudio.Benchmark\\bin\\x64\\Release\\net8.0\\benchmark-openstudio.exe", + "arguments": [ + "--model", + "C:\\TasOut\\s05pre\\runs\\c3b-both-explicit-session2\\000000_SAM_AnalyticalModel_TasOpenStudio_20261019-214326_46369df8\\snapshot.json", + "--weather", + "C:\\TasOut\\s05pre\\runs\\c3b-both-explicit-session2\\000000_SAM_AnalyticalModel_TasOpenStudio_20261019-214326_46369df8\\weather.epw", + "--out", + "C:\\TasOut\\s05pre\\runs\\c3b-both-explicit-session2\\000000_SAM_AnalyticalModel_TasOpenStudio_20261019-214326_46369df8\\benchmark-OpenStudio.json", + "--work", + "C:\\TasOut\\s05pre\\runs\\c3b-both-explicit-session2\\000000_SAM_AnalyticalModel_TasOpenStudio_20261019-214326_46369df8\\openstudio" + ], + "exitCode": 0, + "durationSeconds": 7.611, + "log": "C:\\TasOut\\s05pre\\runs\\c3b-both-explicit-session2\\000000_SAM_AnalyticalModel_TasOpenStudio_20261019-214326_46369df8\\benchmark-openstudio.log", + "benchmark": "C:\\TasOut\\s05pre\\runs\\c3b-both-explicit-session2\\000000_SAM_AnalyticalModel_TasOpenStudio_20261019-214326_46369df8\\benchmark-OpenStudio.json", + "error": null, + "succeeded": true + } + ], + "gate": "Fail", + "reports": [ + "C:\\TasOut\\s05pre\\runs\\c3b-both-explicit-session2\\000000_SAM_AnalyticalModel_TasOpenStudio_20261019-214326_46369df8\\comparison.md", + "C:\\TasOut\\s05pre\\runs\\c3b-both-explicit-session2\\000000_SAM_AnalyticalModel_TasOpenStudio_20261019-214326_46369df8\\comparison.csv", + "C:\\TasOut\\s05pre\\runs\\c3b-both-explicit-session2\\000000_SAM_AnalyticalModel_TasOpenStudio_20261019-214326_46369df8\\comparison-summary.json" + ], + "diagnostics": [], + "error": null, + "provenance": { + "schema": "sam-ui.run-provenance/1", + "route": "Both", + "application": { + "entryAssembly": { + "name": "SAM Analytical", + "version": "1.0.0.0", + "informationalVersion": "1.0.0", + "path": "C:\\TasOut\\s05pre\\app-int\\SAM Analytical.dll", + "sha256": "sha256:5fab33710523275b11cdee257b34c2cbf6b258456de4d538936baa5de4f4c4f4" + }, + "sourceRevision": "unknown", + "sourceRevisionOf": "the \u002Bbuild metadata of SAM.Analytical.UI.WPF\u0027s InformationalVersion; SAM_Deploy installers stamp their SAM_Deploy commit, which pins every repository", + "components": [ + { + "name": "SAM.Core", + "version": "1.0.0.0", + "informationalVersion": "1.0.0", + "path": "C:\\TasOut\\s05pre\\app-int\\SAM.Core.dll", + "sha256": "sha256:7a3c7b15908467342c60cde31b565dc026b47f8a0cd1e3160c14bf163559d8a9" + }, + { + "name": "SAM.Analytical", + "version": "1.0.0.0", + "informationalVersion": "1.0.0", + "path": "C:\\TasOut\\s05pre\\app-int\\SAM.Analytical.dll", + "sha256": "sha256:9576dcd158e3545d73f6b29706b73af7d20c09325193257927bc46ee31119970" + }, + { + "name": "SAM.Analytical.UI.WPF", + "version": "1.0.0.0", + "informationalVersion": "1.0.0", + "path": "C:\\TasOut\\s05pre\\app-int\\SAM.Analytical.UI.WPF.dll", + "sha256": "sha256:181d310ed607579fa39a49506437e60d8188b7486cc45d8a261c59167788426c" + }, + { + "name": "SAM.Analytical.Benchmark", + "version": "1.0.0.0", + "informationalVersion": "1.0.0", + "path": "C:\\TasOut\\s05pre\\app-int\\SAM.Analytical.Benchmark.dll", + "sha256": "sha256:5242c29fc8f21dab17129ef7f83a0c890b5fcd65012765c122913685af8d4f83" + }, + { + "name": "SAM.Analytical.Benchmark.Compare", + "version": "1.0.0.0", + "informationalVersion": "1.0.0", + "path": "C:\\TasOut\\s05pre\\app-int\\SAM.Analytical.Benchmark.Compare.dll", + "sha256": "sha256:e387fc07802de71731825f0e77f37d9ed2f70301cba8096e82684872291170a9" + } + ] + }, + "producers": { + "Tas": { + "executable": { + "path": "C:\\Users\\michal\\Documents\\GitHub\\SAM-BIM\\SAM_Tas\\build\\benchmark-tas.exe", + "sha256": "sha256:07ab3e45b107bdd28a7d6b3622d05014b1edb95e015f86e5dc3e9c7a9ab3fbd2", + "fileVersion": "1.0.0.0", + "productVersion": "1.0.0", + "assembly": { + "path": "C:\\Users\\michal\\Documents\\GitHub\\SAM-BIM\\SAM_Tas\\build\\benchmark-tas.dll", + "sha256": "sha256:7a70ba2d29f4cf49da2f7074fff7aabe356c98ddd3bd4b95fb54cba47ca3c412", + "fileVersion": "1.0.0.0", + "productVersion": "1.0.0" + } + }, + "arguments": [ + "--model", + "C:\\TasOut\\s05pre\\runs\\c3b-both-explicit-session2\\000000_SAM_AnalyticalModel_TasOpenStudio_20261019-214326_46369df8\\snapshot.json", + "--weather", + "C:\\TasOut\\s05pre\\runs\\c3b-both-explicit-session2\\000000_SAM_AnalyticalModel_TasOpenStudio_20261019-214326_46369df8\\weather.epw", + "--tbd", + "C:\\TasOut\\s05pre\\runs\\c3b-both-explicit-session2\\000000_SAM_AnalyticalModel_TasOpenStudio_20261019-214326_46369df8\\tas\\000000_SAM_AnalyticalModel.tbd", + "--out", + "C:\\TasOut\\s05pre\\runs\\c3b-both-explicit-session2\\000000_SAM_AnalyticalModel_TasOpenStudio_20261019-214326_46369df8\\benchmark-TAS.json" + ], + "succeeded": true, + "reported": { + "samCommit": "62b5415697d1a5af143c6b581b7d42fbd6551ca8", + "runnerCommit": "e84aeff687033354e3f17891635fdf10d42ad68f", + "engine": { + "kind": "TAS", + "name": "Tas", + "version": "9.5.7.0", + "sdkVersion": "unknown" + }, + "route": "Native-TAS", + "weather": { + "identity": "weather", + "hash": "sha256:472ffb4e2f10867600949a392ce46891fc1bd05f2fc8d8917a99bca7d26209c3" + }, + "designDaySource": "None", + "sourceFileHash": "sha256:0c30db14a9b10f5e651248e70c942bf875ca93dcee9436998b9960e47c0a6d05", + "canonicalModelHash": "sha256:05c1e334af00f339d36d5b97828692d3d7d27269d2168a945dfc4a35919c9500", + "canonicalizationVersion": "1.0.0", + "state": "Success" + } + }, + "OpenStudio": { + "executable": { + "path": "C:\\Users\\michal\\Documents\\GitHub\\SAM-BIM\\SAM_OpenStudio\\benchmark\\SAM.Analytical.OpenStudio.Benchmark\\bin\\x64\\Release\\net8.0\\benchmark-openstudio.exe", + "sha256": "sha256:644059197b0638bdbfcf7d41b3a7c375b40198a7f53336d907c3e727619a5e06", + "fileVersion": "1.0.0.0", + "productVersion": "1.0.0", + "assembly": { + "path": "C:\\Users\\michal\\Documents\\GitHub\\SAM-BIM\\SAM_OpenStudio\\benchmark\\SAM.Analytical.OpenStudio.Benchmark\\bin\\x64\\Release\\net8.0\\benchmark-openstudio.dll", + "sha256": "sha256:dfc912b3192ec93c23f165761feaa6bea44732e958c359c6f52dea22a173c060", + "fileVersion": "1.0.0.0", + "productVersion": "1.0.0" + } + }, + "arguments": [ + "--model", + "C:\\TasOut\\s05pre\\runs\\c3b-both-explicit-session2\\000000_SAM_AnalyticalModel_TasOpenStudio_20261019-214326_46369df8\\snapshot.json", + "--weather", + "C:\\TasOut\\s05pre\\runs\\c3b-both-explicit-session2\\000000_SAM_AnalyticalModel_TasOpenStudio_20261019-214326_46369df8\\weather.epw", + "--out", + "C:\\TasOut\\s05pre\\runs\\c3b-both-explicit-session2\\000000_SAM_AnalyticalModel_TasOpenStudio_20261019-214326_46369df8\\benchmark-OpenStudio.json", + "--work", + "C:\\TasOut\\s05pre\\runs\\c3b-both-explicit-session2\\000000_SAM_AnalyticalModel_TasOpenStudio_20261019-214326_46369df8\\openstudio" + ], + "succeeded": true, + "reported": { + "samCommit": "62b5415697d1a5af143c6b581b7d42fbd6551ca8", + "runnerCommit": "d4216f3525c01ca762c1b3e9b6d099733d037f54", + "engine": { + "kind": "OpenStudio", + "name": "EnergyPlus", + "version": "25.1.0", + "sdkVersion": "3.10.0" + }, + "route": "Native-OpenStudio", + "weather": { + "identity": "weather", + "hash": "sha256:472ffb4e2f10867600949a392ce46891fc1bd05f2fc8d8917a99bca7d26209c3" + }, + "designDaySource": "None", + "sourceFileHash": "sha256:0c30db14a9b10f5e651248e70c942bf875ca93dcee9436998b9960e47c0a6d05", + "canonicalModelHash": "sha256:05c1e334af00f339d36d5b97828692d3d7d27269d2168a945dfc4a35919c9500", + "canonicalizationVersion": "1.0.0", + "state": "Success" + } + } + }, + "environment": { + "SAM_COMMIT": "62b5415697d1a5af143c6b581b7d42fbd6551ca8", + "RUNNER_COMMIT": "not set" + }, + "weather": { + "source": "File", + "sha256": "sha256:472ffb4e2f10867600949a392ce46891fc1bd05f2fc8d8917a99bca7d26209c3", + "originalPath": "C:\\TasOut\\s01b\\inputs\\Budapest.epw" + }, + "designDays": { + "source": "chosen by each producer from the snapshot (SAM_UI passes none): see producers.\u003Cengine\u003E.reported.designDaySource" + }, + "settings": { + "producers": "each producer\u0027s arguments (producers.\u003Cengine\u003E.arguments) and its built-in workflow settings, which its executable SHA-256 pins" + }, + "unknown": { + "application.sourceRevision": "this build\u0027s InformationalVersion \u00271.0.0\u0027 has no source revision after \u0027\u002B\u0027 (a local developer build); the component SHA-256 values identify the binaries", + "producers.Tas.reported.engine.sdkVersion": "the producer reported none (null in its B1a document; its warnings and notes say why)" + } + } +} \ No newline at end of file diff --git a/documentation/evidence/s05-preflight-20261019/c4-both-embedded/diagnostics.txt b/documentation/evidence/s05-preflight-20261019/c4-both-embedded/diagnostics.txt new file mode 100644 index 00000000..dacebedc --- /dev/null +++ b/documentation/evidence/s05-preflight-20261019/c4-both-embedded/diagnostics.txt @@ -0,0 +1,28 @@ +Banner: Gate Fail: 6 match, 0 warn, 10 fail (4 contributing to numerical status, 6 informational and excluded); 2 missing on one engine, 0 unit mismatch, 0 not reported. Spaces: 1 matched, 0 only in Tas, 0 only in OpenStudio. + +Overall gate: Fail (numerical Fail, coverage Warn, provenance Pass, reconciliation Pass) +Metrics: 6 match, 0 warn, 10 fail, 2 N/A; 16 of 18 required metrics comparable. Tolerance profile 'default'. A band is a tolerance band, not an engineering verdict (SAM_UI#232/#233). + +Spaces: Tas 1, OpenStudio 1; matched by GUID 1, by name 0. + +Model total vs sum of spaces: + TAS floorArea: model 50, sum of 1 spaces 50 m2 -> Match + TAS volume: model 150, sum of 1 spaces 150 m3 -> Match + OpenStudio floorArea: model 50, sum of 1 spaces 50 m2 -> Match + OpenStudio volume: model 150, sum of 1 spaces 150 m3 -> Match + +Tas run: Success + Note: Shared gbXML was exported from the source model (no --gbxml supplied). + Result sources: SAM.Analytical.Tas + +OpenStudio run: Success + Warning: [SAM-OS-IC-001] Warning: Pollutant generation is not converted (EnergyPlus generic contaminant modelling is out of scope) (SAM InternalCondition 9e54af09-65fb-4f64-98d7-200db3be2457) → SAM_InternalCondition_S39_OfficeOpen_30b69a1f + Note: [SAM-OS-RUN-002] Information: Annual weather source: explicit EPW (weather.epw) + Note: [SAM-OS-RUN-002] Information: Ground temperatures taken from the SAM model WeatherData (depth 0.5 m set, 12 monthly values) + Note: [SAM-OS-RUN-002] Information: No design-day source supplied; sizing-period runs stay disabled unless OpenStudioConversionOptions.RunSizingPeriods overrides + Result sources: SAM.Analytical.OpenStudio + +Run: Compared - C:\TasOut\s05pre\runs\c4-both-embedded\000000_SAM_AnalyticalModel_TasOpenStudio_20261019-214418_b1daab08 +Tas producer: completed, C:\Users\michal\Documents\GitHub\SAM-BIM\SAM_Tas\build\benchmark-tas.exe, exit code 0, 20.1 s, log C:\TasOut\s05pre\runs\c4-both-embedded\000000_SAM_AnalyticalModel_TasOpenStudio_20261019-214418_b1daab08\benchmark-tas.log +OpenStudio producer: completed, C:\Users\michal\Documents\GitHub\SAM-BIM\SAM_OpenStudio\benchmark\SAM.Analytical.OpenStudio.Benchmark\bin\x64\Release\net8.0\benchmark-openstudio.exe, exit code 0, 6.9 s, log C:\TasOut\s05pre\runs\c4-both-embedded\000000_SAM_AnalyticalModel_TasOpenStudio_20261019-214418_b1daab08\benchmark-openstudio.log +Run record: C:\TasOut\s05pre\runs\c4-both-embedded\000000_SAM_AnalyticalModel_TasOpenStudio_20261019-214418_b1daab08\engine-comparison-run.json diff --git a/documentation/evidence/s05-preflight-20261019/c4-both-embedded/engine-comparison-run.json b/documentation/evidence/s05-preflight-20261019/c4-both-embedded/engine-comparison-run.json new file mode 100644 index 00000000..72aebfca --- /dev/null +++ b/documentation/evidence/s05-preflight-20261019/c4-both-embedded/engine-comparison-run.json @@ -0,0 +1,232 @@ +{ + "schema": "sam-ui.engine-comparison-run/1", + "id": "b1daab08", + "status": "Compared", + "startedUtc": "2026-10-19T21:44:18.8134799Z", + "finishedUtc": "2026-10-19T21:44:46.4376217Z", + "sourcePath": "C:\\TasOut\\s05pre\\runs\\c4-both-embedded\\box-aperture.json", + "modelName": "000000_SAM_AnalyticalModel", + "snapshot": { + "path": "C:\\TasOut\\s05pre\\runs\\c4-both-embedded\\000000_SAM_AnalyticalModel_TasOpenStudio_20261019-214418_b1daab08\\snapshot.json", + "sha256": "sha256:0c30db14a9b10f5e651248e70c942bf875ca93dcee9436998b9960e47c0a6d05" + }, + "weather": { + "source": "Embedded", + "path": "C:\\TasOut\\s05pre\\runs\\c4-both-embedded\\000000_SAM_AnalyticalModel_TasOpenStudio_20261019-214418_b1daab08\\weather.epw", + "sha256": "sha256:e1353bd2600a401f76262d52a8e16176a15dc45a4967e58d9107c374704abf7c" + }, + "producers": [ + { + "engine": "Tas", + "executable": "C:\\Users\\michal\\Documents\\GitHub\\SAM-BIM\\SAM_Tas\\build\\benchmark-tas.exe", + "arguments": [ + "--model", + "C:\\TasOut\\s05pre\\runs\\c4-both-embedded\\000000_SAM_AnalyticalModel_TasOpenStudio_20261019-214418_b1daab08\\snapshot.json", + "--weather", + "C:\\TasOut\\s05pre\\runs\\c4-both-embedded\\000000_SAM_AnalyticalModel_TasOpenStudio_20261019-214418_b1daab08\\weather.epw", + "--tbd", + "C:\\TasOut\\s05pre\\runs\\c4-both-embedded\\000000_SAM_AnalyticalModel_TasOpenStudio_20261019-214418_b1daab08\\tas\\000000_SAM_AnalyticalModel.tbd", + "--out", + "C:\\TasOut\\s05pre\\runs\\c4-both-embedded\\000000_SAM_AnalyticalModel_TasOpenStudio_20261019-214418_b1daab08\\benchmark-TAS.json" + ], + "exitCode": 0, + "durationSeconds": 20.109, + "log": "C:\\TasOut\\s05pre\\runs\\c4-both-embedded\\000000_SAM_AnalyticalModel_TasOpenStudio_20261019-214418_b1daab08\\benchmark-tas.log", + "benchmark": "C:\\TasOut\\s05pre\\runs\\c4-both-embedded\\000000_SAM_AnalyticalModel_TasOpenStudio_20261019-214418_b1daab08\\benchmark-TAS.json", + "error": null, + "succeeded": true + }, + { + "engine": "OpenStudio", + "executable": "C:\\Users\\michal\\Documents\\GitHub\\SAM-BIM\\SAM_OpenStudio\\benchmark\\SAM.Analytical.OpenStudio.Benchmark\\bin\\x64\\Release\\net8.0\\benchmark-openstudio.exe", + "arguments": [ + "--model", + "C:\\TasOut\\s05pre\\runs\\c4-both-embedded\\000000_SAM_AnalyticalModel_TasOpenStudio_20261019-214418_b1daab08\\snapshot.json", + "--weather", + "C:\\TasOut\\s05pre\\runs\\c4-both-embedded\\000000_SAM_AnalyticalModel_TasOpenStudio_20261019-214418_b1daab08\\weather.epw", + "--out", + "C:\\TasOut\\s05pre\\runs\\c4-both-embedded\\000000_SAM_AnalyticalModel_TasOpenStudio_20261019-214418_b1daab08\\benchmark-OpenStudio.json", + "--work", + "C:\\TasOut\\s05pre\\runs\\c4-both-embedded\\000000_SAM_AnalyticalModel_TasOpenStudio_20261019-214418_b1daab08\\openstudio" + ], + "exitCode": 0, + "durationSeconds": 6.915, + "log": "C:\\TasOut\\s05pre\\runs\\c4-both-embedded\\000000_SAM_AnalyticalModel_TasOpenStudio_20261019-214418_b1daab08\\benchmark-openstudio.log", + "benchmark": "C:\\TasOut\\s05pre\\runs\\c4-both-embedded\\000000_SAM_AnalyticalModel_TasOpenStudio_20261019-214418_b1daab08\\benchmark-OpenStudio.json", + "error": null, + "succeeded": true + } + ], + "gate": "Fail", + "reports": [ + "C:\\TasOut\\s05pre\\runs\\c4-both-embedded\\000000_SAM_AnalyticalModel_TasOpenStudio_20261019-214418_b1daab08\\comparison.md", + "C:\\TasOut\\s05pre\\runs\\c4-both-embedded\\000000_SAM_AnalyticalModel_TasOpenStudio_20261019-214418_b1daab08\\comparison.csv", + "C:\\TasOut\\s05pre\\runs\\c4-both-embedded\\000000_SAM_AnalyticalModel_TasOpenStudio_20261019-214418_b1daab08\\comparison-summary.json" + ], + "diagnostics": [], + "error": null, + "provenance": { + "schema": "sam-ui.run-provenance/1", + "route": "Both", + "application": { + "entryAssembly": { + "name": "SAM Analytical", + "version": "1.0.0.0", + "informationalVersion": "1.0.0", + "path": "C:\\TasOut\\s05pre\\app-int\\SAM Analytical.dll", + "sha256": "sha256:5fab33710523275b11cdee257b34c2cbf6b258456de4d538936baa5de4f4c4f4" + }, + "sourceRevision": "unknown", + "sourceRevisionOf": "the \u002Bbuild metadata of SAM.Analytical.UI.WPF\u0027s InformationalVersion; SAM_Deploy installers stamp their SAM_Deploy commit, which pins every repository", + "components": [ + { + "name": "SAM.Core", + "version": "1.0.0.0", + "informationalVersion": "1.0.0", + "path": "C:\\TasOut\\s05pre\\app-int\\SAM.Core.dll", + "sha256": "sha256:7a3c7b15908467342c60cde31b565dc026b47f8a0cd1e3160c14bf163559d8a9" + }, + { + "name": "SAM.Analytical", + "version": "1.0.0.0", + "informationalVersion": "1.0.0", + "path": "C:\\TasOut\\s05pre\\app-int\\SAM.Analytical.dll", + "sha256": "sha256:9576dcd158e3545d73f6b29706b73af7d20c09325193257927bc46ee31119970" + }, + { + "name": "SAM.Analytical.UI.WPF", + "version": "1.0.0.0", + "informationalVersion": "1.0.0", + "path": "C:\\TasOut\\s05pre\\app-int\\SAM.Analytical.UI.WPF.dll", + "sha256": "sha256:181d310ed607579fa39a49506437e60d8188b7486cc45d8a261c59167788426c" + }, + { + "name": "SAM.Analytical.Benchmark", + "version": "1.0.0.0", + "informationalVersion": "1.0.0", + "path": "C:\\TasOut\\s05pre\\app-int\\SAM.Analytical.Benchmark.dll", + "sha256": "sha256:5242c29fc8f21dab17129ef7f83a0c890b5fcd65012765c122913685af8d4f83" + }, + { + "name": "SAM.Analytical.Benchmark.Compare", + "version": "1.0.0.0", + "informationalVersion": "1.0.0", + "path": "C:\\TasOut\\s05pre\\app-int\\SAM.Analytical.Benchmark.Compare.dll", + "sha256": "sha256:e387fc07802de71731825f0e77f37d9ed2f70301cba8096e82684872291170a9" + } + ] + }, + "producers": { + "Tas": { + "executable": { + "path": "C:\\Users\\michal\\Documents\\GitHub\\SAM-BIM\\SAM_Tas\\build\\benchmark-tas.exe", + "sha256": "sha256:07ab3e45b107bdd28a7d6b3622d05014b1edb95e015f86e5dc3e9c7a9ab3fbd2", + "fileVersion": "1.0.0.0", + "productVersion": "1.0.0", + "assembly": { + "path": "C:\\Users\\michal\\Documents\\GitHub\\SAM-BIM\\SAM_Tas\\build\\benchmark-tas.dll", + "sha256": "sha256:7a70ba2d29f4cf49da2f7074fff7aabe356c98ddd3bd4b95fb54cba47ca3c412", + "fileVersion": "1.0.0.0", + "productVersion": "1.0.0" + } + }, + "arguments": [ + "--model", + "C:\\TasOut\\s05pre\\runs\\c4-both-embedded\\000000_SAM_AnalyticalModel_TasOpenStudio_20261019-214418_b1daab08\\snapshot.json", + "--weather", + "C:\\TasOut\\s05pre\\runs\\c4-both-embedded\\000000_SAM_AnalyticalModel_TasOpenStudio_20261019-214418_b1daab08\\weather.epw", + "--tbd", + "C:\\TasOut\\s05pre\\runs\\c4-both-embedded\\000000_SAM_AnalyticalModel_TasOpenStudio_20261019-214418_b1daab08\\tas\\000000_SAM_AnalyticalModel.tbd", + "--out", + "C:\\TasOut\\s05pre\\runs\\c4-both-embedded\\000000_SAM_AnalyticalModel_TasOpenStudio_20261019-214418_b1daab08\\benchmark-TAS.json" + ], + "succeeded": true, + "reported": { + "samCommit": "62b5415697d1a5af143c6b581b7d42fbd6551ca8", + "runnerCommit": "e84aeff687033354e3f17891635fdf10d42ad68f", + "engine": { + "kind": "TAS", + "name": "Tas", + "version": "9.5.7.0", + "sdkVersion": "unknown" + }, + "route": "Native-TAS", + "weather": { + "identity": "weather", + "hash": "sha256:e1353bd2600a401f76262d52a8e16176a15dc45a4967e58d9107c374704abf7c" + }, + "designDaySource": "None", + "sourceFileHash": "sha256:0c30db14a9b10f5e651248e70c942bf875ca93dcee9436998b9960e47c0a6d05", + "canonicalModelHash": "sha256:05c1e334af00f339d36d5b97828692d3d7d27269d2168a945dfc4a35919c9500", + "canonicalizationVersion": "1.0.0", + "state": "Success" + } + }, + "OpenStudio": { + "executable": { + "path": "C:\\Users\\michal\\Documents\\GitHub\\SAM-BIM\\SAM_OpenStudio\\benchmark\\SAM.Analytical.OpenStudio.Benchmark\\bin\\x64\\Release\\net8.0\\benchmark-openstudio.exe", + "sha256": "sha256:644059197b0638bdbfcf7d41b3a7c375b40198a7f53336d907c3e727619a5e06", + "fileVersion": "1.0.0.0", + "productVersion": "1.0.0", + "assembly": { + "path": "C:\\Users\\michal\\Documents\\GitHub\\SAM-BIM\\SAM_OpenStudio\\benchmark\\SAM.Analytical.OpenStudio.Benchmark\\bin\\x64\\Release\\net8.0\\benchmark-openstudio.dll", + "sha256": "sha256:dfc912b3192ec93c23f165761feaa6bea44732e958c359c6f52dea22a173c060", + "fileVersion": "1.0.0.0", + "productVersion": "1.0.0" + } + }, + "arguments": [ + "--model", + "C:\\TasOut\\s05pre\\runs\\c4-both-embedded\\000000_SAM_AnalyticalModel_TasOpenStudio_20261019-214418_b1daab08\\snapshot.json", + "--weather", + "C:\\TasOut\\s05pre\\runs\\c4-both-embedded\\000000_SAM_AnalyticalModel_TasOpenStudio_20261019-214418_b1daab08\\weather.epw", + "--out", + "C:\\TasOut\\s05pre\\runs\\c4-both-embedded\\000000_SAM_AnalyticalModel_TasOpenStudio_20261019-214418_b1daab08\\benchmark-OpenStudio.json", + "--work", + "C:\\TasOut\\s05pre\\runs\\c4-both-embedded\\000000_SAM_AnalyticalModel_TasOpenStudio_20261019-214418_b1daab08\\openstudio" + ], + "succeeded": true, + "reported": { + "samCommit": "62b5415697d1a5af143c6b581b7d42fbd6551ca8", + "runnerCommit": "d4216f3525c01ca762c1b3e9b6d099733d037f54", + "engine": { + "kind": "OpenStudio", + "name": "EnergyPlus", + "version": "25.1.0", + "sdkVersion": "3.10.0" + }, + "route": "Native-OpenStudio", + "weather": { + "identity": "weather", + "hash": "sha256:e1353bd2600a401f76262d52a8e16176a15dc45a4967e58d9107c374704abf7c" + }, + "designDaySource": "None", + "sourceFileHash": "sha256:0c30db14a9b10f5e651248e70c942bf875ca93dcee9436998b9960e47c0a6d05", + "canonicalModelHash": "sha256:05c1e334af00f339d36d5b97828692d3d7d27269d2168a945dfc4a35919c9500", + "canonicalizationVersion": "1.0.0", + "state": "Success" + } + } + }, + "environment": { + "SAM_COMMIT": "62b5415697d1a5af143c6b581b7d42fbd6551ca8", + "RUNNER_COMMIT": "not set" + }, + "weather": { + "source": "Embedded", + "sha256": "sha256:e1353bd2600a401f76262d52a8e16176a15dc45a4967e58d9107c374704abf7c", + "originalPath": "unknown" + }, + "designDays": { + "source": "chosen by each producer from the snapshot (SAM_UI passes none): see producers.\u003Cengine\u003E.reported.designDaySource" + }, + "settings": { + "producers": "each producer\u0027s arguments (producers.\u003Cengine\u003E.arguments) and its built-in workflow settings, which its executable SHA-256 pins" + }, + "unknown": { + "application.sourceRevision": "this build\u0027s InformationalVersion \u00271.0.0\u0027 has no source revision after \u0027\u002B\u0027 (a local developer build); the component SHA-256 values identify the binaries", + "weather.originalPath": "the weather is the model\u0027s embedded WeatherData, exported to EPW once for both producers; sha256 identifies the exported file", + "producers.Tas.reported.engine.sdkVersion": "the producer reported none (null in its B1a document; its warnings and notes say why)" + } + } +} \ No newline at end of file diff --git a/documentation/evidence/s05-preflight-20261019/c7-tas-refusal-energy-simulation/04-message-box.png b/documentation/evidence/s05-preflight-20261019/c7-tas-refusal-energy-simulation/04-message-box.png new file mode 100644 index 0000000000000000000000000000000000000000..fdffd8026f994aaaf5b4c22ed528731967140806 GIT binary patch literal 1786 zcmeAS@N?(olHy`uVBq!ia0y~yU|a>n+d0^PB2SMCZU$0}#X;^)4C~IxyaaMs(j9#r z85lP9bN@+X1@buyJR*x382Ao@Fyrz36)6l1Z2g`tjv*CsZ?7sc9&q3}aA23_%KB=1 zJ61;az9SB4 Date: Mon, 19 Oct 2026 23:48:19 +0200 Subject: [PATCH 2/3] docs: S05 preflight - results unchanged by S03/S04 Co-Authored-By: Claude Opus 5.5 --- documentation/S05-LicensedAcceptance-Preflight.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/documentation/S05-LicensedAcceptance-Preflight.md b/documentation/S05-LicensedAcceptance-Preflight.md index 648014ba..3d8dce7b 100644 --- a/documentation/S05-LicensedAcceptance-Preflight.md +++ b/documentation/S05-LicensedAcceptance-Preflight.md @@ -25,6 +25,9 @@ acceptance results. - **Drivers:** the S01b UI Automation drivers in `documentation/evidence/s01b-20261019/tools/` were used unchanged. `drive-tas.ps1` covers Energy Simulation and Run Simulation > Tas, with `-BlockTsd` refusal injection. `drive-both.ps1` covers Run Simulation > Both. +- **Results unchanged by S03/S04:** case 3's `comparison.csv` has the same content as the committed pre-S03/S04 S01b run B2 + (`documentation/evidence/s01b-20261019/cases/B2-cand-both-success/`, same model and EPW). Only line endings differ, from + the Git checkout. Both engines' B1a model metrics are bit-identical. - **Evidence:** `documentation/evidence/s05-preflight-20261019/`, which holds each case's driver log, message-box text or diagnostics, and manifest, plus three screenshots. From c9ac5ccecae40f44b722db6403a9c4c70b4e4b6b Mon Sep 17 00:00:00 2001 From: Michal Dengusiak Date: Tue, 20 Oct 2026 07:06:44 +0200 Subject: [PATCH 3/3] docs: S05 preflight - validated against merged S03/S04; case 4 was pre-F1 Co-Authored-By: Claude Opus 5.5 --- .../S05-LicensedAcceptance-Preflight.md | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/documentation/S05-LicensedAcceptance-Preflight.md b/documentation/S05-LicensedAcceptance-Preflight.md index 3d8dce7b..5b5d5cf7 100644 --- a/documentation/S05-LicensedAcceptance-Preflight.md +++ b/documentation/S05-LicensedAcceptance-Preflight.md @@ -9,6 +9,20 @@ S04 (SAM_UI#243) were open and unmerged. **No case below is an S05 PASS.** Status values: **PASS**, **FAIL**, **NOT RUN**, **BLOCKED**. Rehearsal results are labelled "rehearsal" and never count as acceptance results. +## Status update (2026-10-20): validated against the merged S03/S04 +- S03 merged as SAM_UI#242 `1e460bbe`, S04 as SAM_UI#243 `307cb0e3`, both with green final-head CI. The SAM_UI code tree of + `307cb0e3` equals the rehearsal tree `8aafcb06`: `git diff 8aafcb06 307cb0e3` touches only `PROJECT_PROGRESS.md` and the + S04 record. The rehearsal therefore exercised exactly the merged SAM_UI code. +- **Correction, case 4 is not post-F1 evidence.** The rehearsal app and the developer-built producers took + `SAM.Weather.dll` from this laptop's `SAM\build`, built 2026-10-17, before SAM#212 (F1, 2026-10-19). The F1 code is absent + from that binary (sha256 `f99f827f…`, the same in `app-int`, `SAM_Tas\build` and the OpenStudio producer folder). So case 4 + ran with the pre-F1 EPW writer. Explicit-EPW cases (3, 5) and the Tas-only case 1 do not use the EPW writer and are not + affected. +- Owner decision (2026-10-20): `SAM_COMMIT` is accepted as a temporary requirement for developer-built producers in Both + runs until S06. The value must be the SAM commit the producers were built from; it does not prove packaged-app provenance. +- Formal acceptance is a separate record on a fresh build of the dependency stack at the `sow/2026-Q4` tips: + `documentation/S05-LicensedAcceptance.md`. **No result in this preflight record is an acceptance result.** + ## Rehearsal build (2026-10-19) - **Tree:** local integration merge `8aafcb06` (not pushed): `sow/2026-Q4` `4d7f5bd8` + S04 head `b19b80ab` + S03 head `2724f0c5`. The one textual conflict, both PRs appending to `OpenStudioSimulationTests.RealRun_…`, was resolved by keeping @@ -41,7 +55,7 @@ Engine numbers are recorded, not judged: numerical agreement is not a criterion. | 1 | Tas only | Run Simulation > Tas on the box; dialog defaults (model weather), Full Year ticked | success box; model replaced by the TAS result | `box.tbd/.tsd/.json`; **`box.tas-run.json`** `status: Succeeded`, TAS `9.5.7.0` + TBD.exe hash, weather source, the `WorkflowSettings` that ran | none | driver log, message box, `tas-run.json`; for acceptance also persisted values vs baseline (`compare-persisted.ps1`) | **Rehearsal PASS.** Message "Model successfuly converted"; `status: Succeeded`; weather `Embedded`; `T3DRoute: GbXML`, `SimulateTo: 365` (`c1-tas-run-simulation/`) | | 2 | OpenStudio only | Run Simulation > OpenStudio on the box, explicit EPW | Succeeded summary; open model unchanged | run folder: `openstudio-run.json` `Succeeded`, OSM/OSW/SQL, result model with view state; CLI hash, E+ version from `eplusout.err` | none | manifest, result model, screenshot | **NOT RUN** from the ribbon: no driver. Code path ran with real OpenStudio (S03 evidence `openstudio-*`; S04 `RealRun_…`). | | 3 | Both | Run Simulation > Both on the box, explicit EPW, **in two separate app sessions** | `Compared`; comparison window opens | `engine-comparison-run.json`, two B1a, comparison csv/md/summary; S03 provenance per producer; S04 identical snapshot and canonical hash across sessions | none | manifests, B1a, comparison window | **Rehearsal PASS** with manual `SAM_COMMIT`. Both sessions `Compared`, snapshot `0c30db14…`, both producers `canonicalModelHash` `05c1e334…` (`c3a-…`, `c3b-…`). Gate "Fail" is engine agreement, not a criterion. **Without `SAM_COMMIT`: FAIL** (developer producers refuse, S03 evidence) - owner decision / S06 | -| 4 | Box, embedded post-F1 weather | as 3 with no EPW chosen | as 3; weather `Embedded` | as 3; `provenance.weather.source: Embedded`, exported EPW hash | none | as 3 | **Rehearsal PASS** with manual `SAM_COMMIT`: `Compared`, weather `Embedded`, same snapshot and canonical hash as 3 (`c4-both-embedded/`). Tas-only embedded is case 1. | +| 4 | Box, embedded post-F1 weather | as 3 with no EPW chosen | as 3; weather `Embedded` | as 3; `provenance.weather.source: Embedded`, exported EPW hash | none | as 3 | **Rehearsal PASS** with manual `SAM_COMMIT`: `Compared`, weather `Embedded`, same snapshot and canonical hash as 3 (`c4-both-embedded/`). Tas-only embedded is case 1. **Not post-F1** (pre-F1 `SAM.Weather.dll`, see the 2026-10-20 status update). | | 5 | Box, explicit EPW | as 3 with `Budapest.epw` | as 3 | as 3; `weather.source: File`, EPW hash `472ffb4e…` | none | as 3 | **Rehearsal PASS** (same runs as 3). | | 6 | One multizone model | as 3 on a multizone fixture | as 3 | as 3 | none | as 3 | **BLOCKED**: no committed multizone fixture with cleared provenance. HungaryHouse is machine-local and unconfirmed (owner decision 3). | | 7 | Injected Tas refusal | Energy Simulation with `-BlockTsd` (a directory at `box.tsd`) | "Simulation failed" box: TAS return code 0, error log, TAS-SIM-001; model not replaced | `box.tas-run.json` `status: Failed` with the same failure text | "Simulation failed: the TAS simulation did not complete ..." | driver log, message box, `tas-run.json` | **Rehearsal PASS.** Box title "Simulation failed", return code 0, TAS-SIM-001 lines; `tas-run.json` `Failed` with the same text (`c7-…`). The driver's close step timed out with the app open (as in S01b case E3); the app was closed by hand. TAS opened its error log in Notepad (TAS behaviour). |